From 4d95a7b8fe8580b36b865b920bb5ce35d61b4117 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 13 Nov 2015 16:06:58 -0500 Subject: [PATCH 001/820] add datastore v1beta3 snippets --- .../nodejs-datastore/samples/concepts.js | 1311 +++++++++++++++++ .../nodejs-datastore/samples/package.json | 11 + 2 files changed, 1322 insertions(+) create mode 100644 handwritten/nodejs-datastore/samples/concepts.js create mode 100644 handwritten/nodejs-datastore/samples/package.json diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js new file mode 100644 index 00000000000..2ba3c25d282 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -0,0 +1,1311 @@ +// Copyright 2015, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var asyncUtil = require('async'); +var gcloud = require('gcloud'); + +module.exports = { + Entity: Entity, + Index: Index, + Metadata: Metadata, + Query: Query, + Transaction: Transaction +}; + +// This mock is used in the documentation snippets. +var datastore = { + delete: function() {}, + get: function() {}, + insert: function() {}, + key: function() {}, + update: function() {}, + upsert: function() {}, + runQuery: function() {}, + save: function() {} +}; + +function Entity(projectId) { + this.datastore = gcloud.datastore({ + projectId: projectId + }); + + // To create the keys, we have to use this instance of Datastore. + datastore.key = this.datastore.key; + + this.incompleteKey = this.getIncompleteKey(); + this.namedKey = this.getNamedKey(); + this.keyWithParent = this.getKeyWithParent(); + this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent(); +} + +Entity.prototype.getIncompleteKey = function() { + // [START incomplete_key] + var taskKey = datastore.key('Task'); + // [END incomplete_key] + + return taskKey; +}; + +Entity.prototype.getNamedKey = function() { + // [START named_key] + var taskKey = datastore.key([ + 'Task', + 'sampletask' + ]); + // [END named_key] + + return taskKey; +}; + +Entity.prototype.getKeyWithParent = function() { + // [START key_with_parent] + var taskKey = datastore.key([ + 'TaskList', + 'default', + 'Task', + 'sampleTask' + ]); + // [END key_with_parent] + + return taskKey; +}; + +Entity.prototype.getKeyWithMultiLevelParent = function() { + // [START key_with_multilevel_parent] + var taskKey = datastore.key([ + 'User', + 'alice', + 'TaskList', + 'default', + 'Task', + 'sampleTask' + ]); + // [END key_with_multilevel_parent] + + return taskKey; +}; + +Entity.prototype.getTask = function() { + // [START basic_entity] + var task = { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + }; + // [END basic_entity] + + return task; +}; + +Entity.prototype.testIncompleteKey = function(callback) { + this.datastore.save({ + key: this.incompleteKey, + data: {} + }, callback); +}; + +Entity.prototype.testNamedKey = function(callback) { + this.datastore.save({ + key: this.namedKey, + data: {} + }, callback); +}; + +Entity.prototype.testKeyWithParent = function(callback) { + this.datastore.save({ + key: this.keyWithParent, + data: {} + }, callback); +}; + +Entity.prototype.testKeyWithMultiLevelParent = function(callback) { + this.datastore.save({ + key: this.keyWithMultiLevelParent, + data: {} + }, callback); +}; + +Entity.prototype.testEntityWithParent = function(callback) { + var taskKey = this.keyWithParent; + + // [START entity_with_parent] + var task = { + key: taskKey, + data: { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + } + }; + // [END entity_with_parent] + + this.datastore.save(task, callback); +}; + +Entity.prototype.testProperties = function(callback) { + // jshint camelcase:false + // [START properties] + var task = { + type: 'Personal', + created: new Date(), + done: false, + priority: 4, + percent_complete: 10.0, + description: 'Learn Cloud Datastore' + }; + // [END properties] + + this.datastore.save({ + key: this.incompleteKey, + data: task + }, callback); +}; + +Entity.prototype.testArrayValue = function(callback) { + // [START array_value] + var task = { + tags: [ + 'fun', + 'programming' + ], + collaborators: [ + 'alice', + 'bob' + ] + }; + // [END array_value] + + this.datastore.save({ + key: this.incompleteKey, + data: task + }, callback); +}; + +Entity.prototype.testBasicEntity = function(callback) { + this.datastore.save({ + key: this.getIncompleteKey(), + data: this.getTask() + }, callback); +}; + +Entity.prototype.testUpsert = function(callback) { + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START upsert] + datastore.upsert({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task inserted successfully. + } + }); + // [END upsert] + + this.datastore.upsert({ + key: taskKey, + data: task + }, callback); +}; + +Entity.prototype.testInsert = function(callback) { + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START insert] + datastore.insert({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task inserted successfully. + } + }); + // [END insert] + + this.datastore.insert({ + key: taskKey, + data: task + }, callback); +}; + +Entity.prototype.testLookup = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + + // jshint unused:false + // [START lookup] + datastore.get(taskKey, function(err, entity) { + if (!err) { + // Task found. + + // entity.data = { + // type: 'Personal', + // done: false, + // priority: 4, + // description: 'Learn Cloud Datastore' + // }; + } + }); + // [End lookup] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.get(taskKey, callback); + }); +}; + +Entity.prototype.testUpdate = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START update] + datastore.update({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task updated successfully. + } + }); + // [END update] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.update({ + key: taskKey, + data: task + }, callback); + }); +}; + +Entity.prototype.testDelete = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + + // [START delete] + datastore.delete(taskKey, function(err) { + if (!err) { + // Task deleted successfully. + } + }); + // [END delete] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.delete(taskKey, callback); + }); +}; + +Entity.prototype.testBatchUpsert = function(callback) { + datastore.key = this.datastore.key; + + // [START batch_upsert] + var taskKey1 = datastore.key(['Task', 1]); + var taskKey2 = datastore.key(['Task', 2]); + + var task1 = { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + }; + + var task2 = { + type: 'Work', + done: false, + priority: 8, + description: 'Integrate Cloud Datastore' + }; + + datastore.upsert([ + { + key: taskKey1, + data: task1 + }, + { + key: taskKey2, + data: task2 + } + ], function(err) { + if (!err) { + // Tasks inserted successfully. + } + }); + // [END batch_upsert] + + this.datastore.upsert([ + { + key: taskKey1, + data: task1 + }, + { + key: taskKey2, + data: task2 + } + ], callback); +}; + +Entity.prototype.testBatchLookup = function(callback) { + var taskKey1 = this.datastore.key(['Task', 1]); + var taskKey2 = this.datastore.key(['Task', 2]); + + // jshint unused:false + // [START batch_lookup] + datastore.get([ + taskKey1, + taskKey2 + ], function(err, entities) { + if (!err) { + // entities[0].data = { + // type: 'Personal', + // done: false, + // priority: 4, + // description: 'Learn Cloud Datastore' + // }; + + // entities[1].data = { + // type: 'Work', + // // ... + // }; + } + }); + // [END batch_lookup] + + this.datastore.get([ + taskKey1, + taskKey2 + ], callback); +}; + +Entity.prototype.testBatchDelete = function(callback) { + var taskKey1 = this.datastore.key(['Task', 1]); + var taskKey2 = this.datastore.key(['Task', 2]); + + // [START batch_delete] + datastore.delete([ + taskKey1, + taskKey2 + ], function(err) { + if (!err) { + // Tasks deleted successfully. + } + }); + // [END batch_delete] + + this.datastore.delete([ + taskKey1, + taskKey2 + ], callback); +}; + +function Index(projectId) { + this.datastore = gcloud.datastore({ + projectId: projectId + }); +} + +Index.prototype.testUnindexedPropertyQuery = function(callback) { + var datastore = this.datastore; + + // [START unindexed_property_query] + var query = datastore.createQuery('Task') + .filter('description =', 'A task description.'); + // [END unindexed_property_query] + + this.datastore.runQuery(query, callback); +}; + +Index.prototype.testExplodingProperties = function(callback) { + datastore.key = this.datastore.key; + + // [START exploding_properties] + var task = { + key: datastore.key('Task'), + data: { + tags: [ + 'fun', + 'programming', + 'learn' + ], + collaborators: [ + 'alice', + 'bob', + 'charlie' + ], + created: new Date() + } + }; + // [END exploding_properties] + + delete datastore.key; + + this.datastore.insert(task, callback); +}; + +function Metadata(projectId) { + this.datastore = gcloud.datastore({ + projectId: projectId + }); +} + +Metadata.prototype.testNamespaceRunQuery = function(callback) { + var self = this; + + datastore.createQuery = this.datastore.createQuery; + datastore.key = this.datastore.key; + + var startNamespace = 'Animals'; + var endNamespace = 'Zoos'; + + this.datastore.save([ + { + key: datastore.key({ + namespace: 'Animals', + path: ['Ant', 1] + }), + data: {} + } + ], function(err) { + if (err) { + callback(err); + return; + } + + // jshint unused:false + // [START namespace_run_query] + var query = datastore.createQuery('__namespace__') + .select('__key__') + .filter('__key__ >=', datastore.key(['__namespace__', startNamespace])) + .filter('__key__ <', datastore.key(['__namespace__', endNamespace])); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var namespaces = entities.map(function(entity) { + return entity.key.path.pop(); + }); + }); + // [END namespace_run_query] + + self.datastore.runQuery(query, callback); + }); +}; + +Metadata.prototype.testKindRunQuery = function(callback) { + datastore.createQuery = this.datastore.createQuery; + + // jshint unused:false + // [START kind_run_query] + var query = datastore.createQuery('__kind__') + .select('__key__'); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var kinds = entities.map(function(entity) { + return entity.key.path.pop(); + }); + }); + // [END kind_run_query] + + this.datastore.runQuery(query, callback); +}; + +Metadata.prototype.testPropertyRunQuery = function(callback) { + datastore.createQuery = this.datastore.createQuery; + + // [START property_run_query] + var query = datastore.createQuery('__property__') + .select('__key__'); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var propertiesByKind = {}; + + entities.forEach(function(entity) { + var kind = entity.key.path[1]; + var propertyName = entity.key.path[3]; + + propertiesByKind[kind] = propertiesByKind[kind] || []; + propertiesByKind[kind].push(propertyName); + }); + }); + // [END property_run_query] + + this.datastore.runQuery(query, callback); +}; + +Metadata.prototype.testPropertyByKindRunQuery = function(callback) { + var datastore = this.datastore; + + // jshint camelcase:false + // [START property_by_kind_run_query] + var ancestorKey = datastore.key(['__kind__', 'Task']); + + var query = datastore.createQuery('__property__') + .hasAncestor(ancestorKey); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var representationsByProperty = {}; + + entities.forEach(function(entity) { + var propertyName = entity.key.path.pop(); + var propertyType = entity.data.property_representation; + + representationsByProperty[propertyName] = propertyType; + }); + }); + // [END property_by_kind_run_query] + + this.datastore.runQuery(query, callback); +}; + +function Query(projectId) { + this.datastore = gcloud.datastore({ + projectId: projectId + }); + + this.basicQuery = this.getBasicQuery(); + this.projectionQuery = this.getProjectionQuery(); + this.ancestorQuery = this.getAncestorQuery(); +} + +Query.prototype.getBasicQuery = function() { + var datastore = this.datastore; + + // [START basic_query] + var query = datastore.createQuery('Task') + .filter('done =', false) + .filter('priority >=', 4) + .order('-priority'); + // [END basic_query] + + return query; +}; + +Query.prototype.getProjectionQuery = function() { + var datastore = this.datastore; + + // [START projection_query] + var query = datastore.createQuery('Task') + .select('priority') + .select('percent_complete'); + // [END projection_query] + + return query; +}; + +Query.prototype.getAncestorQuery = function() { + var datastore = this.datastore; + + // [START anscestor_query] + var ancestorKey = datastore.key(['TaskList', 'default']); + + var query = datastore.createQuery('Task') + .hasAncestor(ancestorKey); + // [END anscestor_query] + + return query; +}; + +Query.prototype.testRunQuery = function(callback) { + var query = this.basicQuery; + + // jshint unused:false + // [START run_query] + datastore.runQuery(query, function(err, tasks) { + if (!err) { + // Task entities found. + } + }); + // [END run_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testPropertyFilter = function(callback) { + var datastore = this.datastore; + + // [START property_filter] + var query = datastore.createQuery('Task') + .filter('done =', false); + // [END property_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testCompositeFilter = function(callback) { + var datastore = this.datastore; + + // [START composite_filter] + var query = datastore.createQuery('Task') + .filter('done =', false) + .filter('priority =', 4); + // [END composite_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testKeyFilter = function(callback) { + var datastore = this.datastore; + + // [START key_filter] + var query = datastore.createQuery('Task') + .filter('__key__ >', datastore.key(['Task', 'someTask'])); + // [END key_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testAscendingSort = function(callback) { + var datastore = this.datastore; + + // [START ascending_sort] + var query = datastore.createQuery('Task') + .order('created'); + // [END ascending_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDescendingSort = function(callback) { + var datastore = this.datastore; + + // [START descending_sort] + var query = datastore.createQuery('Task') + .order('-created'); + // [END descending_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testMultiSort = function(callback) { + var datastore = this.datastore; + + // [START multi_sort] + var query = datastore.createQuery('Task') + .order('-priority') + .order('created'); + // [END multi_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testKindlessQuery = function(callback) { + var datastore = this.datastore; + var lastSeenKey = this.datastore.key(['Task', Date.now()]); + + // [START kindless_query] + var query = datastore.createQuery() + .filter('__key__ >', lastSeenKey); + // [END kindless_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testRunQueryProjection = function(callback) { + var self = this; + var query = this.projectionQuery; + + // Overwrite the mock to actually run the query. + datastore.runQuery = function(query, queryCallback) { + // Restore the mock. + datastore.runQuery = function() {}; + + self.datastore.runQuery(query, function(err) { + if (err) { + callback(err); + return; + } + + queryCallback.apply(null, arguments); + + if (priorities.length === 0 || percentCompletes.length === 0) { + callback(new Error('Projection lists did not build up.')); + } else { + callback(); + } + }); + }; + + // jshint unused:false, camelcase:false + // [START run_query_projection] + var priorities = []; + var percentCompletes = []; + + datastore.runQuery(query, function(err, tasks) { + if (err) { + // An error occurred while running the query. + return; + } + + tasks.forEach(function(task) { + priorities.push(task.data.priority); + percentCompletes.push(task.data.percent_complete); + }); + }); + // [END run_query_projection] +}; + +Query.prototype.testKeysOnlyQuery = function(callback) { + var datastore = this.datastore; + + // [START keys_only_query] + var query = datastore.createQuery() + .select('__key__'); + // [END keys_only_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDistinctQuery = function(callback) { + var datastore = this.datastore; + + // [START distinct_query] + var query = datastore.createQuery('Task') + .groupBy(['type', 'priority']) + .order('type') + .order('priority'); + // [END distinct_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDistinctOnQuery = function(callback) { + var datastore = this.datastore; + + // [START distinct_on_query] + var query = datastore.createQuery('Task') + .groupBy('type') + .order('type') + .order('priority'); + // [END distinct_on_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testArrayValueInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START array_value_inequality_range] + var query = datastore.createQuery('Task') + .filter('tag >', 'learn') + .filter('tag <', 'math'); + // [END array_value_inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testArrayValueEquality = function(callback) { + var datastore = this.datastore; + + // [START array_value_equality_range] + var query = datastore.createQuery('Task') + .filter('tag =', 'fun') + .filter('tag =', 'programming'); + // [END array_value_equality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START inequality_range] + var query = datastore.createQuery('Task') + .filter('created >', new Date('1990-01-01T00:00:00z')) + .filter('created <', new Date('2000-12-31T23:59:59z')); + // [END inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalityInvalid = function(callback) { + var datastore = this.datastore; + + // [START inequality_invalid] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .filter('created >', new Date('1990-01-01T00:00:00z')); + // [END inequality_invalid] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testEqualAndInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START equal_and_inequality_range] + var query = datastore.createQuery('Task') + .filter('priority =', 4) + .filter('done =', false) + .filter('created >', new Date('1990-01-01T00:00:00z')) + .filter('created <', new Date('2000-12-31T23:59:59z')); + // [END equal_and_inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySort = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('priority') + .order('created'); + // [END inequality_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySortInvalidNotSame = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort_invalid_not_same] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('created'); + // [END inequality_sort_invalid_not_same] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort_invalid_not_first] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('created') + .order('priority'); + // [END inequality_sort_invalid_not_first] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testLimit = function(callback) { + var datastore = this.datastore; + + // [START limit] + var query = datastore.createQuery('Task') + .limit(5); + // [END limit] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testCursorPaging = function(callback) { + var pageSize = 1; + var pageCursor = ''; + + datastore.createQuery = this.datastore.createQuery; + + // [START cursor_paging] + // By default, gcloud-node will paginate through all of the results that match + // a query, push them into an array, then return them to your callback after + // they have all been retrieved. You must execute `.autoPaginate(false)` on + // your query to disable this behavior. + var query = datastore.createQuery('Task') + .autoPaginate(false) + .limit(pageSize) + .start(pageCursor); + + datastore.runQuery(query, function(err, results, nextQuery) { + if (err) { + // An error occurred while running the query. + return; + } + + var nextPageCursor; + + if (nextQuery) { + // If there are more results to retrieve, the start cursor is + // automatically set on `nextQuery`. To get this value directly, access + // the `startVal` property. + nextPageCursor = nextQuery.startVal; + } else { + // No more results exist. + } + }); + // [END cursor_paging] + + delete datastore.createQuery; + this.datastore.runQuery(query, function(err, results, nextQuery) { + if (err) { + callback(err); + return; + } + + if (!nextQuery || !nextQuery.startVal) { + callback(new Error('A nextQuery with a startVal is not present.')); + } else { + callback(); + } + }); +}; + +Query.prototype.testEventualConsistentQuery = function() { + // [START eventual_consistent_query] + // Read consistency cannot be specified in gcloud-node. + // [END eventual_consistent_query] +}; + +// [START transactional_update] +function transferFunds(fromKey, toKey, amount, callback) { + var error; + + datastore.runInTransaction(function(transaction, done) { + transaction.get([ + fromKey, + toKey + ], function(err, accounts) { + if (err) { + // An error occurred while getting the values. + error = err; + transaction.rollback(done); + return; + } + + accounts[0].data.balance -= amount; + accounts[1].data.balance += amount; + + transaction.save(accounts); + + done(); + }); + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(); + } + }); +} +// [END transactional_update] + +function Transaction(projectId) { + this.datastore = gcloud.datastore({ + projectId: projectId + }); + + this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); + this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); + + this.originalBalance = 100; + this.amountToTransfer = 10; +} + +Transaction.prototype.restoreBankAccountBalances = function(config, callback) { + var saveArray = config.keys.map(function(key) { + return { + key: key, + data: { + balance: config.balance + } + }; + }); + + this.datastore.save(saveArray, callback); +}; + +Transaction.prototype.testTransactionalUpdate = function(callback) { + var self = this; + + var fromKey = this.fromKey; + var toKey = this.toKey; + var originalBalance = this.originalBalance; + var amountToTransfer = this.amountToTransfer; + + this.restoreBankAccountBalances({ + keys: [fromKey, toKey], + balance: originalBalance + }, function(err) { + if (err) { + callback(err); + return; + } + + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = self.datastore; + + transferFunds(fromKey, toKey, amountToTransfer, function(err) { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + + if (err) { + callback(err); + return; + } + + self.datastore.get([ + fromKey, + toKey + ], function(err, accounts) { + if (err) { + callback(err); + return; + } + + var transactionWasSuccessful = + accounts[0].data.balance === originalBalance - amountToTransfer && + accounts[1].data.balance === originalBalance + amountToTransfer; + + if (!transactionWasSuccessful) { + callback(new Error('Accounts were not updated successfully.')); + } else { + callback(); + } + }); + }); + }); +}; + +Transaction.prototype.testTransactionalRetry = function(callback) { + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + var fromKey = this.fromKey; + var toKey = this.toKey; + + this.restoreBankAccountBalances({ + keys: [fromKey, toKey], + balance: this.originalBalance + }, function(err) { + if (err) { + callback(err); + return; + } + + // [START transactional_retry] + var async = require('async'); + + function attemptTransfer(callback) { + transferFunds(fromKey, toKey, 10, callback); + } + + async.retry(5, attemptTransfer, callback); + // [END transactional_retry] + }); +}; + +Transaction.prototype.testTransactionalGetOrCreate = function(callback) { + var taskKey = this.datastore.key(['Task', Date.now()]); + + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + // [START transactional_get_or_create] + function getOrCreate(taskKey, taskData, callback) { + var error; + + var taskEntity = { + key: taskKey, + data: taskData + }; + + datastore.runInTransaction(function(transaction, done) { + transaction.get(taskKey, function(err, task) { + if (err) { + // An error occurred while getting the values. + error = err; + transaction.rollback(done); + return; + } + + if (task) { + // The task entity already exists. + transaction.rollback(done); + } else { + // Create the task entity. + transaction.save(taskEntity); + done(); + } + }); + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(null, taskEntity); + } + }); + } + // [END transactional_get_or_create] + + asyncUtil.series([ + // Create: + testWithCreateBehavior, + // Then try to get it: + testWithGetBehavior + ], callback); + + function testWithCreateBehavior(callback) { + getOrCreate(taskKey, {}, function(err, task) { + if (err) { + callback(err); + return; + } + + if (!task) { + callback(new Error('Entity was not created successfully.')); + } else { + callback(); + } + }); + } + + function testWithGetBehavior(callback) { + getOrCreate(taskKey, {}, function(err, task) { + if (err) { + callback(err); + return; + } + + if (!task) { + callback(new Error('Entity was not retrieved successfully.')); + } else { + callback(); + } + }); + } +}; + +Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + // [START transactional_single_entity_group_read_only] + function getTaskListEntities(callback) { + var error; + var taskListEntities; + + datastore.runInTransaction(function(transaction, done) { + var taskListKey = datastore.key(['TaskList', 'default']); + + datastore.get(taskListKey, function(err) { + if (err) { + error = err; + transaction.rollback(done); + return; + } + + var query = datastore.createQuery('Task') + .hasAncestor(taskListKey); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + error = err; + transaction.rollback(done); + return; + } + + taskListEntities = entities; + done(); + }); + }); + + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(null, taskListEntities); + } + }); + } + // [END transactional_single_entity_group_read_only] + + getTaskListEntities(function(err, entities) { + if (err) { + callback(err); + return; + } + + if (!entities) { + callback(new Error('Entities were not retrieved successfully.')); + } else { + callback(); + } + }); +}; diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json new file mode 100644 index 00000000000..ab1e49e884b --- /dev/null +++ b/handwritten/nodejs-datastore/samples/package.json @@ -0,0 +1,11 @@ +{ + "name": "nodejs-docs-samples-datastore", + "description": "Node.js samples for Google Cloud Datastore.", + "version": "0.0.1", + "private": true, + "license": "Apache Version 2.0", + "dependencies": { + "async": "^1.5.0", + "gcloud": "stephenplusplus/gcloud-node#spp--datastore-v1beta3" + } +} From b56937098dbc2d3a76d63e45b015bf048e2bdd18 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Mon, 16 Nov 2015 12:01:16 -0500 Subject: [PATCH 002/820] add task list example application --- .../nodejs-datastore/samples/package.json | 3 + handwritten/nodejs-datastore/samples/tasks.js | 234 ++++++++++++++++++ 2 files changed, 237 insertions(+) create mode 100755 handwritten/nodejs-datastore/samples/tasks.js diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ab1e49e884b..852e0be4146 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -4,6 +4,9 @@ "version": "0.0.1", "private": true, "license": "Apache Version 2.0", + "scripts": { + "tasks": "node tasks.js" + }, "dependencies": { "async": "^1.5.0", "gcloud": "stephenplusplus/gcloud-node#spp--datastore-v1beta3" diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js new file mode 100755 index 00000000000..9e0436fc44c --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -0,0 +1,234 @@ +// Copyright 2015, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var gcloud = require('gcloud'); +var input = process.argv.splice(2); +var command = input.shift(); + +var projectId = process.env.DATASTORE_PROJECT_ID || process.env.TEST_PROJECT_ID; +if (!projectId) { + throw new Error('TEST_PROJECT_ID environment variable required.'); +} + +var datastore = gcloud.datastore({ + projectId: projectId +}); + +/* +// [START build_service] +1. Download the TaskList sample application from [here] +(https://github.com/GoogleCloudPlatform/nodejs-docs-samples/archive/master.zip). + +2. Unzip the download: +```sh +unzip nodejs-docs-samples-master.zip +``` + +3. Change directories to the TaskList application: +```sh +cd nodejs-docs-samples-master/datastore +``` + +4. Install the dependencies and link the application: +```sh +npm install +``` + +5. With the gcloud SDK, be sure you are authenticated: +```sh +gcloud auth login +``` + +6. At a command prompt, run the following, where `` is the ID of +your Google Cloud Platform project. +```sh +export DATASTORE_PROJECT_ID= +``` + +7. Run the application! +```sh +npm run tasks +``` +// [END build_service] +*/ + +// [START add_entity] +function addTask(description, callback) { + var taskKey = datastore.key('Task'); + + datastore.save({ + key: taskKey, + data: { + created: new Date().toJSON(), + description: description, + done: false + } + }, function(err) { + if (err) { + callback(err); + return; + } + + callback(null, taskKey); + }); +} +// [END add_entity] + +// [START update_entity] +function markDone(taskId, callback) { + var error; + + datastore.runInTransaction(function(transaction, done) { + var taskKey = datastore.key([ + 'Task', + taskId + ]); + + transaction.get(taskKey, function(err, task) { + if (err) { + // An error occurred while getting the values. + error = err; + transaction.rollback(done); + return; + } + + task.data.done = false; + + transaction.save(task); + + done(); + }); + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(); + } + }); +} +// [END update_entity] + +// [START retrieve_entities] +function listTasks(callback) { + var query = datastore.createQuery('Task') + .order('created'); + + datastore.runQuery(query, callback); +} +// [END retrieve_entities] + +// [START delete_task] +function deleteTask(taskId, callback) { + var taskKey = datastore.key([ + 'Task', + taskId + ]); + + datastore.delete(taskKey, callback); +} +// [END delete_task] + +// [START format_results] +function formatTasks(tasks) { + return tasks + .map(function(task) { + var taskKey = task.key.path.pop(); + var status; + + if (task.data.done) { + status = 'done'; + } else { + status = 'created ' + new Date(task.data.created); + } + + return taskKey + ' : ' + task.data.description + ' (' + status + ')'; + }) + .join('\n'); +} +// [END format_results] + +switch (command) { + case 'new': { + addTask(input, function(err, taskKey) { + if (err) { + throw err; + } + + var taskId = taskKey.path.pop(); + + console.log('Task %d created successfully.', taskId); + }); + + break; + } + + case 'done': { + var taskId = parseInt(input, 10); + + markDone(taskId, function(err) { + if (err) { + throw err; + } + + console.log('Task %d updated successfully.', taskId); + }); + + break; + } + + case 'list': { + listTasks(function(err, tasks) { + if (err) { + throw err; + } + + console.log(formatTasks(tasks)); + }); + + break; + } + + case 'delete': { + var taskId = parseInt(input, 10); + + deleteTask(taskId, function(err) { + if (err) { + throw err; + } + + console.log('Task %d deleted successfully.', taskId); + }); + + break; + } + + default: { + console.log([ + 'Usage:', + '', + ' new Adds a task with a description ', + ' done Marks a task as done', + ' list Lists all tasks by creation time', + ' delete Deletes a task' + ].join('\n')); + } +} + +module.exports.addEntity = addTask; +module.exports.updateEntity = markDone; +module.exports.retrieveEntities = listTasks; +module.exports.deleteEntity = deleteTask; +module.exports.formatResults = formatTasks; From a2deac4bacfe1b0bb2c309cd5c7f45fbdf035763 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 16 Nov 2015 13:39:47 -0800 Subject: [PATCH 003/820] Added readme for datastore samples --- .../nodejs-datastore/samples/README.md | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 handwritten/nodejs-datastore/samples/README.md diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md new file mode 100644 index 00000000000..eca0dabc719 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/README.md @@ -0,0 +1,27 @@ +## Datastore Samples + +## Run a sample + +Install dependencies: + +``` +$ npm install +``` + +To print available commands: + +``` +$ npm run +``` + +Execute a sample: + +``` +$ npm run -- [arg_1] [arg_2] [arg_n] +``` + +Example: + +``` +$ npm run tasks -- list +``` \ No newline at end of file From 0254f8e06e3ffe064872a0304bd79e5ad3546bad Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 16 Nov 2015 16:24:37 -0800 Subject: [PATCH 004/820] Getting datastore tests running on CI. --- .../nodejs-datastore/samples/concepts.js | 48 +++++++++++++++---- handwritten/nodejs-datastore/samples/tasks.js | 33 ++++++++----- 2 files changed, 60 insertions(+), 21 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 2ba3c25d282..773ba06d13b 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -36,10 +36,18 @@ var datastore = { save: function() {} }; +var keyFile = process.env.DATASTORE_KEYFILE || + process.env.GOOGLE_APPLICATION_CREDENTIALS; + function Entity(projectId) { - this.datastore = gcloud.datastore({ + var options = { projectId: projectId - }); + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; @@ -437,9 +445,14 @@ Entity.prototype.testBatchDelete = function(callback) { }; function Index(projectId) { - this.datastore = gcloud.datastore({ + var options = { projectId: projectId - }); + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); } Index.prototype.testUnindexedPropertyQuery = function(callback) { @@ -481,9 +494,14 @@ Index.prototype.testExplodingProperties = function(callback) { }; function Metadata(projectId) { - this.datastore = gcloud.datastore({ + var options = { projectId: projectId - }); + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); } Metadata.prototype.testNamespaceRunQuery = function(callback) { @@ -614,9 +632,14 @@ Metadata.prototype.testPropertyByKindRunQuery = function(callback) { }; function Query(projectId) { - this.datastore = gcloud.datastore({ + var options = { projectId: projectId - }); + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); this.basicQuery = this.getBasicQuery(); this.projectionQuery = this.getProjectionQuery(); @@ -1039,9 +1062,14 @@ function transferFunds(fromKey, toKey, amount, callback) { // [END transactional_update] function Transaction(projectId) { - this.datastore = gcloud.datastore({ + var options = { projectId: projectId - }); + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 9e0436fc44c..fc583d5568c 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -21,10 +21,18 @@ var projectId = process.env.DATASTORE_PROJECT_ID || process.env.TEST_PROJECT_ID; if (!projectId) { throw new Error('TEST_PROJECT_ID environment variable required.'); } +var keyFile = process.env.DATASTORE_KEYFILE || + process.env.GOOGLE_APPLICATION_CREDENTIALS; -var datastore = gcloud.datastore({ +var options = { projectId: projectId -}); +}; + +if (keyFile) { + options.keyFilename = keyFile; +} + +var datastore = gcloud.datastore(options); /* // [START build_service] @@ -216,14 +224,17 @@ switch (command) { } default: { - console.log([ - 'Usage:', - '', - ' new Adds a task with a description ', - ' done Marks a task as done', - ' list Lists all tasks by creation time', - ' delete Deletes a task' - ].join('\n')); + // Only print usage if this file is being executed directly + if (module === require.main) { + console.log([ + 'Usage:', + '', + ' new Adds a task with a description ', + ' done Marks a task as done', + ' list Lists all tasks by creation time', + ' delete Deletes a task' + ].join('\n')); + } } } @@ -231,4 +242,4 @@ module.exports.addEntity = addTask; module.exports.updateEntity = markDone; module.exports.retrieveEntities = listTasks; module.exports.deleteEntity = deleteTask; -module.exports.formatResults = formatTasks; +module.exports.formatTasks = formatTasks; From c661ea2da0aaba4c4d47e40e0dd56ed757162764 Mon Sep 17 00:00:00 2001 From: Patrick Costello Date: Mon, 16 Nov 2015 14:11:38 -0800 Subject: [PATCH 005/820] Fixes for Datastore gcloud-node snippets. - Correct typo in snippet region. - Installation instructions should not be in build_service snippet. - Batch ops included too much extra info. --- .../nodejs-datastore/samples/concepts.js | 26 ++++++------------- handwritten/nodejs-datastore/samples/tasks.js | 12 +++++---- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 2ba3c25d282..0f2c6e16337 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -262,7 +262,7 @@ Entity.prototype.testLookup = function(callback) { // }; } }); - // [End lookup] + // [END lookup] this.datastore.insert({ key: taskKey, @@ -337,7 +337,6 @@ Entity.prototype.testDelete = function(callback) { Entity.prototype.testBatchUpsert = function(callback) { datastore.key = this.datastore.key; - // [START batch_upsert] var taskKey1 = datastore.key(['Task', 1]); var taskKey2 = datastore.key(['Task', 2]); @@ -355,6 +354,7 @@ Entity.prototype.testBatchUpsert = function(callback) { description: 'Integrate Cloud Datastore' }; + // [START batch_upsert] datastore.upsert([ { key: taskKey1, @@ -392,19 +392,9 @@ Entity.prototype.testBatchLookup = function(callback) { datastore.get([ taskKey1, taskKey2 - ], function(err, entities) { + ], function(err, tasks) { if (!err) { - // entities[0].data = { - // type: 'Personal', - // done: false, - // priority: 4, - // description: 'Learn Cloud Datastore' - // }; - - // entities[1].data = { - // type: 'Work', - // // ... - // }; + // Tasks retrieved successfully. } }); // [END batch_lookup] @@ -651,12 +641,12 @@ Query.prototype.getProjectionQuery = function() { Query.prototype.getAncestorQuery = function() { var datastore = this.datastore; - // [START anscestor_query] + // [START ancestor_query] var ancestorKey = datastore.key(['TaskList', 'default']); var query = datastore.createQuery('Task') .hasAncestor(ancestorKey); - // [END anscestor_query] + // [END ancestor_query] return query; }; @@ -852,11 +842,11 @@ Query.prototype.testArrayValueInequalityRange = function(callback) { Query.prototype.testArrayValueEquality = function(callback) { var datastore = this.datastore; - // [START array_value_equality_range] + // [START array_value_equality] var query = datastore.createQuery('Task') .filter('tag =', 'fun') .filter('tag =', 'programming'); - // [END array_value_equality_range] + // [END array_value_equality] this.datastore.runQuery(query, callback); }; diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 9e0436fc44c..3ee860badb6 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -13,7 +13,6 @@ 'use strict'; -var gcloud = require('gcloud'); var input = process.argv.splice(2); var command = input.shift(); @@ -22,12 +21,16 @@ if (!projectId) { throw new Error('TEST_PROJECT_ID environment variable required.'); } +// [START build_service] +var gcloud = require('gcloud'); + var datastore = gcloud.datastore({ projectId: projectId }); +// [END build_service] /* -// [START build_service] +Installation and setup instructions. 1. Download the TaskList sample application from [here] (https://github.com/GoogleCloudPlatform/nodejs-docs-samples/archive/master.zip). @@ -61,7 +64,6 @@ export DATASTORE_PROJECT_ID= ```sh npm run tasks ``` -// [END build_service] */ // [START add_entity] @@ -130,7 +132,7 @@ function listTasks(callback) { } // [END retrieve_entities] -// [START delete_task] +// [START delete_entity] function deleteTask(taskId, callback) { var taskKey = datastore.key([ 'Task', @@ -139,7 +141,7 @@ function deleteTask(taskId, callback) { datastore.delete(taskKey, callback); } -// [END delete_task] +// [END delete_entity] // [START format_results] function formatTasks(tasks) { From 842f84b7479348b35864b0c2000056dcc3604803 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 19 Nov 2015 09:41:14 -0800 Subject: [PATCH 006/820] Remove datastore v1beta3 samples from master. --- .../nodejs-datastore/samples/concepts.js | 1329 ----------------- .../nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/samples/tasks.js | 106 +- 3 files changed, 55 insertions(+), 1382 deletions(-) delete mode 100644 handwritten/nodejs-datastore/samples/concepts.js diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js deleted file mode 100644 index bf14a15df27..00000000000 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ /dev/null @@ -1,1329 +0,0 @@ -// Copyright 2015, Google, Inc. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -var asyncUtil = require('async'); -var gcloud = require('gcloud'); - -module.exports = { - Entity: Entity, - Index: Index, - Metadata: Metadata, - Query: Query, - Transaction: Transaction -}; - -// This mock is used in the documentation snippets. -var datastore = { - delete: function() {}, - get: function() {}, - insert: function() {}, - key: function() {}, - update: function() {}, - upsert: function() {}, - runQuery: function() {}, - save: function() {} -}; - -var keyFile = process.env.DATASTORE_KEYFILE || - process.env.GOOGLE_APPLICATION_CREDENTIALS; - -function Entity(projectId) { - var options = { - projectId: projectId - }; - - if (keyFile) { - options.keyFilename = keyFile; - } - this.datastore = gcloud.datastore(options); - - // To create the keys, we have to use this instance of Datastore. - datastore.key = this.datastore.key; - - this.incompleteKey = this.getIncompleteKey(); - this.namedKey = this.getNamedKey(); - this.keyWithParent = this.getKeyWithParent(); - this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent(); -} - -Entity.prototype.getIncompleteKey = function() { - // [START incomplete_key] - var taskKey = datastore.key('Task'); - // [END incomplete_key] - - return taskKey; -}; - -Entity.prototype.getNamedKey = function() { - // [START named_key] - var taskKey = datastore.key([ - 'Task', - 'sampletask' - ]); - // [END named_key] - - return taskKey; -}; - -Entity.prototype.getKeyWithParent = function() { - // [START key_with_parent] - var taskKey = datastore.key([ - 'TaskList', - 'default', - 'Task', - 'sampleTask' - ]); - // [END key_with_parent] - - return taskKey; -}; - -Entity.prototype.getKeyWithMultiLevelParent = function() { - // [START key_with_multilevel_parent] - var taskKey = datastore.key([ - 'User', - 'alice', - 'TaskList', - 'default', - 'Task', - 'sampleTask' - ]); - // [END key_with_multilevel_parent] - - return taskKey; -}; - -Entity.prototype.getTask = function() { - // [START basic_entity] - var task = { - type: 'Personal', - done: false, - priority: 4, - description: 'Learn Cloud Datastore' - }; - // [END basic_entity] - - return task; -}; - -Entity.prototype.testIncompleteKey = function(callback) { - this.datastore.save({ - key: this.incompleteKey, - data: {} - }, callback); -}; - -Entity.prototype.testNamedKey = function(callback) { - this.datastore.save({ - key: this.namedKey, - data: {} - }, callback); -}; - -Entity.prototype.testKeyWithParent = function(callback) { - this.datastore.save({ - key: this.keyWithParent, - data: {} - }, callback); -}; - -Entity.prototype.testKeyWithMultiLevelParent = function(callback) { - this.datastore.save({ - key: this.keyWithMultiLevelParent, - data: {} - }, callback); -}; - -Entity.prototype.testEntityWithParent = function(callback) { - var taskKey = this.keyWithParent; - - // [START entity_with_parent] - var task = { - key: taskKey, - data: { - type: 'Personal', - done: false, - priority: 4, - description: 'Learn Cloud Datastore' - } - }; - // [END entity_with_parent] - - this.datastore.save(task, callback); -}; - -Entity.prototype.testProperties = function(callback) { - // jshint camelcase:false - // [START properties] - var task = { - type: 'Personal', - created: new Date(), - done: false, - priority: 4, - percent_complete: 10.0, - description: 'Learn Cloud Datastore' - }; - // [END properties] - - this.datastore.save({ - key: this.incompleteKey, - data: task - }, callback); -}; - -Entity.prototype.testArrayValue = function(callback) { - // [START array_value] - var task = { - tags: [ - 'fun', - 'programming' - ], - collaborators: [ - 'alice', - 'bob' - ] - }; - // [END array_value] - - this.datastore.save({ - key: this.incompleteKey, - data: task - }, callback); -}; - -Entity.prototype.testBasicEntity = function(callback) { - this.datastore.save({ - key: this.getIncompleteKey(), - data: this.getTask() - }, callback); -}; - -Entity.prototype.testUpsert = function(callback) { - var taskKey = this.getIncompleteKey(); - var task = this.getTask(); - - // [START upsert] - datastore.upsert({ - key: taskKey, - data: task - }, function(err) { - if (!err) { - // Task inserted successfully. - } - }); - // [END upsert] - - this.datastore.upsert({ - key: taskKey, - data: task - }, callback); -}; - -Entity.prototype.testInsert = function(callback) { - var taskKey = this.getIncompleteKey(); - var task = this.getTask(); - - // [START insert] - datastore.insert({ - key: taskKey, - data: task - }, function(err) { - if (!err) { - // Task inserted successfully. - } - }); - // [END insert] - - this.datastore.insert({ - key: taskKey, - data: task - }, callback); -}; - -Entity.prototype.testLookup = function(callback) { - var self = this; - var taskKey = this.getIncompleteKey(); - - // jshint unused:false - // [START lookup] - datastore.get(taskKey, function(err, entity) { - if (!err) { - // Task found. - - // entity.data = { - // type: 'Personal', - // done: false, - // priority: 4, - // description: 'Learn Cloud Datastore' - // }; - } - }); - // [END lookup] - - this.datastore.insert({ - key: taskKey, - data: {} - }, function(err) { - if (err) { - callback(err); - return; - } - - self.datastore.get(taskKey, callback); - }); -}; - -Entity.prototype.testUpdate = function(callback) { - var self = this; - var taskKey = this.getIncompleteKey(); - var task = this.getTask(); - - // [START update] - datastore.update({ - key: taskKey, - data: task - }, function(err) { - if (!err) { - // Task updated successfully. - } - }); - // [END update] - - this.datastore.insert({ - key: taskKey, - data: {} - }, function(err) { - if (err) { - callback(err); - return; - } - - self.datastore.update({ - key: taskKey, - data: task - }, callback); - }); -}; - -Entity.prototype.testDelete = function(callback) { - var self = this; - var taskKey = this.getIncompleteKey(); - - // [START delete] - datastore.delete(taskKey, function(err) { - if (!err) { - // Task deleted successfully. - } - }); - // [END delete] - - this.datastore.insert({ - key: taskKey, - data: {} - }, function(err) { - if (err) { - callback(err); - return; - } - - self.datastore.delete(taskKey, callback); - }); -}; - -Entity.prototype.testBatchUpsert = function(callback) { - datastore.key = this.datastore.key; - - var taskKey1 = datastore.key(['Task', 1]); - var taskKey2 = datastore.key(['Task', 2]); - - var task1 = { - type: 'Personal', - done: false, - priority: 4, - description: 'Learn Cloud Datastore' - }; - - var task2 = { - type: 'Work', - done: false, - priority: 8, - description: 'Integrate Cloud Datastore' - }; - - // [START batch_upsert] - datastore.upsert([ - { - key: taskKey1, - data: task1 - }, - { - key: taskKey2, - data: task2 - } - ], function(err) { - if (!err) { - // Tasks inserted successfully. - } - }); - // [END batch_upsert] - - this.datastore.upsert([ - { - key: taskKey1, - data: task1 - }, - { - key: taskKey2, - data: task2 - } - ], callback); -}; - -Entity.prototype.testBatchLookup = function(callback) { - var taskKey1 = this.datastore.key(['Task', 1]); - var taskKey2 = this.datastore.key(['Task', 2]); - - // jshint unused:false - // [START batch_lookup] - datastore.get([ - taskKey1, - taskKey2 - ], function(err, tasks) { - if (!err) { - // Tasks retrieved successfully. - } - }); - // [END batch_lookup] - - this.datastore.get([ - taskKey1, - taskKey2 - ], callback); -}; - -Entity.prototype.testBatchDelete = function(callback) { - var taskKey1 = this.datastore.key(['Task', 1]); - var taskKey2 = this.datastore.key(['Task', 2]); - - // [START batch_delete] - datastore.delete([ - taskKey1, - taskKey2 - ], function(err) { - if (!err) { - // Tasks deleted successfully. - } - }); - // [END batch_delete] - - this.datastore.delete([ - taskKey1, - taskKey2 - ], callback); -}; - -function Index(projectId) { - var options = { - projectId: projectId - }; - - if (keyFile) { - options.keyFilename = keyFile; - } - this.datastore = gcloud.datastore(options); -} - -Index.prototype.testUnindexedPropertyQuery = function(callback) { - var datastore = this.datastore; - - // [START unindexed_property_query] - var query = datastore.createQuery('Task') - .filter('description =', 'A task description.'); - // [END unindexed_property_query] - - this.datastore.runQuery(query, callback); -}; - -Index.prototype.testExplodingProperties = function(callback) { - datastore.key = this.datastore.key; - - // [START exploding_properties] - var task = { - key: datastore.key('Task'), - data: { - tags: [ - 'fun', - 'programming', - 'learn' - ], - collaborators: [ - 'alice', - 'bob', - 'charlie' - ], - created: new Date() - } - }; - // [END exploding_properties] - - delete datastore.key; - - this.datastore.insert(task, callback); -}; - -function Metadata(projectId) { - var options = { - projectId: projectId - }; - - if (keyFile) { - options.keyFilename = keyFile; - } - this.datastore = gcloud.datastore(options); -} - -Metadata.prototype.testNamespaceRunQuery = function(callback) { - var self = this; - - datastore.createQuery = this.datastore.createQuery; - datastore.key = this.datastore.key; - - var startNamespace = 'Animals'; - var endNamespace = 'Zoos'; - - this.datastore.save([ - { - key: datastore.key({ - namespace: 'Animals', - path: ['Ant', 1] - }), - data: {} - } - ], function(err) { - if (err) { - callback(err); - return; - } - - // jshint unused:false - // [START namespace_run_query] - var query = datastore.createQuery('__namespace__') - .select('__key__') - .filter('__key__ >=', datastore.key(['__namespace__', startNamespace])) - .filter('__key__ <', datastore.key(['__namespace__', endNamespace])); - - datastore.runQuery(query, function(err, entities) { - if (err) { - // An error occurred while running the query. - return; - } - - var namespaces = entities.map(function(entity) { - return entity.key.path.pop(); - }); - }); - // [END namespace_run_query] - - self.datastore.runQuery(query, callback); - }); -}; - -Metadata.prototype.testKindRunQuery = function(callback) { - datastore.createQuery = this.datastore.createQuery; - - // jshint unused:false - // [START kind_run_query] - var query = datastore.createQuery('__kind__') - .select('__key__'); - - datastore.runQuery(query, function(err, entities) { - if (err) { - // An error occurred while running the query. - return; - } - - var kinds = entities.map(function(entity) { - return entity.key.path.pop(); - }); - }); - // [END kind_run_query] - - this.datastore.runQuery(query, callback); -}; - -Metadata.prototype.testPropertyRunQuery = function(callback) { - datastore.createQuery = this.datastore.createQuery; - - // [START property_run_query] - var query = datastore.createQuery('__property__') - .select('__key__'); - - datastore.runQuery(query, function(err, entities) { - if (err) { - // An error occurred while running the query. - return; - } - - var propertiesByKind = {}; - - entities.forEach(function(entity) { - var kind = entity.key.path[1]; - var propertyName = entity.key.path[3]; - - propertiesByKind[kind] = propertiesByKind[kind] || []; - propertiesByKind[kind].push(propertyName); - }); - }); - // [END property_run_query] - - this.datastore.runQuery(query, callback); -}; - -Metadata.prototype.testPropertyByKindRunQuery = function(callback) { - var datastore = this.datastore; - - // jshint camelcase:false - // [START property_by_kind_run_query] - var ancestorKey = datastore.key(['__kind__', 'Task']); - - var query = datastore.createQuery('__property__') - .hasAncestor(ancestorKey); - - datastore.runQuery(query, function(err, entities) { - if (err) { - // An error occurred while running the query. - return; - } - - var representationsByProperty = {}; - - entities.forEach(function(entity) { - var propertyName = entity.key.path.pop(); - var propertyType = entity.data.property_representation; - - representationsByProperty[propertyName] = propertyType; - }); - }); - // [END property_by_kind_run_query] - - this.datastore.runQuery(query, callback); -}; - -function Query(projectId) { - var options = { - projectId: projectId - }; - - if (keyFile) { - options.keyFilename = keyFile; - } - this.datastore = gcloud.datastore(options); - - this.basicQuery = this.getBasicQuery(); - this.projectionQuery = this.getProjectionQuery(); - this.ancestorQuery = this.getAncestorQuery(); -} - -Query.prototype.getBasicQuery = function() { - var datastore = this.datastore; - - // [START basic_query] - var query = datastore.createQuery('Task') - .filter('done =', false) - .filter('priority >=', 4) - .order('-priority'); - // [END basic_query] - - return query; -}; - -Query.prototype.getProjectionQuery = function() { - var datastore = this.datastore; - - // [START projection_query] - var query = datastore.createQuery('Task') - .select('priority') - .select('percent_complete'); - // [END projection_query] - - return query; -}; - -Query.prototype.getAncestorQuery = function() { - var datastore = this.datastore; - - // [START ancestor_query] - var ancestorKey = datastore.key(['TaskList', 'default']); - - var query = datastore.createQuery('Task') - .hasAncestor(ancestorKey); - // [END ancestor_query] - - return query; -}; - -Query.prototype.testRunQuery = function(callback) { - var query = this.basicQuery; - - // jshint unused:false - // [START run_query] - datastore.runQuery(query, function(err, tasks) { - if (!err) { - // Task entities found. - } - }); - // [END run_query] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testPropertyFilter = function(callback) { - var datastore = this.datastore; - - // [START property_filter] - var query = datastore.createQuery('Task') - .filter('done =', false); - // [END property_filter] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testCompositeFilter = function(callback) { - var datastore = this.datastore; - - // [START composite_filter] - var query = datastore.createQuery('Task') - .filter('done =', false) - .filter('priority =', 4); - // [END composite_filter] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testKeyFilter = function(callback) { - var datastore = this.datastore; - - // [START key_filter] - var query = datastore.createQuery('Task') - .filter('__key__ >', datastore.key(['Task', 'someTask'])); - // [END key_filter] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testAscendingSort = function(callback) { - var datastore = this.datastore; - - // [START ascending_sort] - var query = datastore.createQuery('Task') - .order('created'); - // [END ascending_sort] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testDescendingSort = function(callback) { - var datastore = this.datastore; - - // [START descending_sort] - var query = datastore.createQuery('Task') - .order('-created'); - // [END descending_sort] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testMultiSort = function(callback) { - var datastore = this.datastore; - - // [START multi_sort] - var query = datastore.createQuery('Task') - .order('-priority') - .order('created'); - // [END multi_sort] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testKindlessQuery = function(callback) { - var datastore = this.datastore; - var lastSeenKey = this.datastore.key(['Task', Date.now()]); - - // [START kindless_query] - var query = datastore.createQuery() - .filter('__key__ >', lastSeenKey); - // [END kindless_query] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testRunQueryProjection = function(callback) { - var self = this; - var query = this.projectionQuery; - - // Overwrite the mock to actually run the query. - datastore.runQuery = function(query, queryCallback) { - // Restore the mock. - datastore.runQuery = function() {}; - - self.datastore.runQuery(query, function(err) { - if (err) { - callback(err); - return; - } - - queryCallback.apply(null, arguments); - - if (priorities.length === 0 || percentCompletes.length === 0) { - callback(new Error('Projection lists did not build up.')); - } else { - callback(); - } - }); - }; - - // jshint unused:false, camelcase:false - // [START run_query_projection] - var priorities = []; - var percentCompletes = []; - - datastore.runQuery(query, function(err, tasks) { - if (err) { - // An error occurred while running the query. - return; - } - - tasks.forEach(function(task) { - priorities.push(task.data.priority); - percentCompletes.push(task.data.percent_complete); - }); - }); - // [END run_query_projection] -}; - -Query.prototype.testKeysOnlyQuery = function(callback) { - var datastore = this.datastore; - - // [START keys_only_query] - var query = datastore.createQuery() - .select('__key__'); - // [END keys_only_query] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testDistinctQuery = function(callback) { - var datastore = this.datastore; - - // [START distinct_query] - var query = datastore.createQuery('Task') - .groupBy(['type', 'priority']) - .order('type') - .order('priority'); - // [END distinct_query] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testDistinctOnQuery = function(callback) { - var datastore = this.datastore; - - // [START distinct_on_query] - var query = datastore.createQuery('Task') - .groupBy('type') - .order('type') - .order('priority'); - // [END distinct_on_query] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testArrayValueInequalityRange = function(callback) { - var datastore = this.datastore; - - // [START array_value_inequality_range] - var query = datastore.createQuery('Task') - .filter('tag >', 'learn') - .filter('tag <', 'math'); - // [END array_value_inequality_range] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testArrayValueEquality = function(callback) { - var datastore = this.datastore; - - // [START array_value_equality] - var query = datastore.createQuery('Task') - .filter('tag =', 'fun') - .filter('tag =', 'programming'); - // [END array_value_equality] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testInequalityRange = function(callback) { - var datastore = this.datastore; - - // [START inequality_range] - var query = datastore.createQuery('Task') - .filter('created >', new Date('1990-01-01T00:00:00z')) - .filter('created <', new Date('2000-12-31T23:59:59z')); - // [END inequality_range] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testInequalityInvalid = function(callback) { - var datastore = this.datastore; - - // [START inequality_invalid] - var query = datastore.createQuery('Task') - .filter('priority >', 3) - .filter('created >', new Date('1990-01-01T00:00:00z')); - // [END inequality_invalid] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testEqualAndInequalityRange = function(callback) { - var datastore = this.datastore; - - // [START equal_and_inequality_range] - var query = datastore.createQuery('Task') - .filter('priority =', 4) - .filter('done =', false) - .filter('created >', new Date('1990-01-01T00:00:00z')) - .filter('created <', new Date('2000-12-31T23:59:59z')); - // [END equal_and_inequality_range] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testInequalitySort = function(callback) { - var datastore = this.datastore; - - // [START inequality_sort] - var query = datastore.createQuery('Task') - .filter('priority >', 3) - .order('priority') - .order('created'); - // [END inequality_sort] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testInequalitySortInvalidNotSame = function(callback) { - var datastore = this.datastore; - - // [START inequality_sort_invalid_not_same] - var query = datastore.createQuery('Task') - .filter('priority >', 3) - .order('created'); - // [END inequality_sort_invalid_not_same] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { - var datastore = this.datastore; - - // [START inequality_sort_invalid_not_first] - var query = datastore.createQuery('Task') - .filter('priority >', 3) - .order('created') - .order('priority'); - // [END inequality_sort_invalid_not_first] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testLimit = function(callback) { - var datastore = this.datastore; - - // [START limit] - var query = datastore.createQuery('Task') - .limit(5); - // [END limit] - - this.datastore.runQuery(query, callback); -}; - -Query.prototype.testCursorPaging = function(callback) { - var pageSize = 1; - var pageCursor = ''; - - datastore.createQuery = this.datastore.createQuery; - - // [START cursor_paging] - // By default, gcloud-node will paginate through all of the results that match - // a query, push them into an array, then return them to your callback after - // they have all been retrieved. You must execute `.autoPaginate(false)` on - // your query to disable this behavior. - var query = datastore.createQuery('Task') - .autoPaginate(false) - .limit(pageSize) - .start(pageCursor); - - datastore.runQuery(query, function(err, results, nextQuery) { - if (err) { - // An error occurred while running the query. - return; - } - - var nextPageCursor; - - if (nextQuery) { - // If there are more results to retrieve, the start cursor is - // automatically set on `nextQuery`. To get this value directly, access - // the `startVal` property. - nextPageCursor = nextQuery.startVal; - } else { - // No more results exist. - } - }); - // [END cursor_paging] - - delete datastore.createQuery; - this.datastore.runQuery(query, function(err, results, nextQuery) { - if (err) { - callback(err); - return; - } - - if (!nextQuery || !nextQuery.startVal) { - callback(new Error('A nextQuery with a startVal is not present.')); - } else { - callback(); - } - }); -}; - -Query.prototype.testEventualConsistentQuery = function() { - // [START eventual_consistent_query] - // Read consistency cannot be specified in gcloud-node. - // [END eventual_consistent_query] -}; - -// [START transactional_update] -function transferFunds(fromKey, toKey, amount, callback) { - var error; - - datastore.runInTransaction(function(transaction, done) { - transaction.get([ - fromKey, - toKey - ], function(err, accounts) { - if (err) { - // An error occurred while getting the values. - error = err; - transaction.rollback(done); - return; - } - - accounts[0].data.balance -= amount; - accounts[1].data.balance += amount; - - transaction.save(accounts); - - done(); - }); - }, function(transactionError) { - if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(); - } - }); -} -// [END transactional_update] - -function Transaction(projectId) { - var options = { - projectId: projectId - }; - - if (keyFile) { - options.keyFilename = keyFile; - } - this.datastore = gcloud.datastore(options); - - this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); - this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); - - this.originalBalance = 100; - this.amountToTransfer = 10; -} - -Transaction.prototype.restoreBankAccountBalances = function(config, callback) { - var saveArray = config.keys.map(function(key) { - return { - key: key, - data: { - balance: config.balance - } - }; - }); - - this.datastore.save(saveArray, callback); -}; - -Transaction.prototype.testTransactionalUpdate = function(callback) { - var self = this; - - var fromKey = this.fromKey; - var toKey = this.toKey; - var originalBalance = this.originalBalance; - var amountToTransfer = this.amountToTransfer; - - this.restoreBankAccountBalances({ - keys: [fromKey, toKey], - balance: originalBalance - }, function(err) { - if (err) { - callback(err); - return; - } - - // Overwrite so the real Datastore instance is used in `transferFunds`. - var datastoreMock = datastore; - datastore = self.datastore; - - transferFunds(fromKey, toKey, amountToTransfer, function(err) { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - - if (err) { - callback(err); - return; - } - - self.datastore.get([ - fromKey, - toKey - ], function(err, accounts) { - if (err) { - callback(err); - return; - } - - var transactionWasSuccessful = - accounts[0].data.balance === originalBalance - amountToTransfer && - accounts[1].data.balance === originalBalance + amountToTransfer; - - if (!transactionWasSuccessful) { - callback(new Error('Accounts were not updated successfully.')); - } else { - callback(); - } - }); - }); - }); -}; - -Transaction.prototype.testTransactionalRetry = function(callback) { - // Overwrite so the real Datastore instance is used in `transferFunds`. - var datastoreMock = datastore; - datastore = this.datastore; - - var originalCallback = callback; - callback = function() { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - originalCallback.apply(null, arguments); - }; - - var fromKey = this.fromKey; - var toKey = this.toKey; - - this.restoreBankAccountBalances({ - keys: [fromKey, toKey], - balance: this.originalBalance - }, function(err) { - if (err) { - callback(err); - return; - } - - // [START transactional_retry] - var async = require('async'); - - function attemptTransfer(callback) { - transferFunds(fromKey, toKey, 10, callback); - } - - async.retry(5, attemptTransfer, callback); - // [END transactional_retry] - }); -}; - -Transaction.prototype.testTransactionalGetOrCreate = function(callback) { - var taskKey = this.datastore.key(['Task', Date.now()]); - - // Overwrite so the real Datastore instance is used in `transferFunds`. - var datastoreMock = datastore; - datastore = this.datastore; - - var originalCallback = callback; - callback = function() { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - originalCallback.apply(null, arguments); - }; - - // [START transactional_get_or_create] - function getOrCreate(taskKey, taskData, callback) { - var error; - - var taskEntity = { - key: taskKey, - data: taskData - }; - - datastore.runInTransaction(function(transaction, done) { - transaction.get(taskKey, function(err, task) { - if (err) { - // An error occurred while getting the values. - error = err; - transaction.rollback(done); - return; - } - - if (task) { - // The task entity already exists. - transaction.rollback(done); - } else { - // Create the task entity. - transaction.save(taskEntity); - done(); - } - }); - }, function(transactionError) { - if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(null, taskEntity); - } - }); - } - // [END transactional_get_or_create] - - asyncUtil.series([ - // Create: - testWithCreateBehavior, - // Then try to get it: - testWithGetBehavior - ], callback); - - function testWithCreateBehavior(callback) { - getOrCreate(taskKey, {}, function(err, task) { - if (err) { - callback(err); - return; - } - - if (!task) { - callback(new Error('Entity was not created successfully.')); - } else { - callback(); - } - }); - } - - function testWithGetBehavior(callback) { - getOrCreate(taskKey, {}, function(err, task) { - if (err) { - callback(err); - return; - } - - if (!task) { - callback(new Error('Entity was not retrieved successfully.')); - } else { - callback(); - } - }); - } -}; - -Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { - // Overwrite so the real Datastore instance is used in `transferFunds`. - var datastoreMock = datastore; - datastore = this.datastore; - - var originalCallback = callback; - callback = function() { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - originalCallback.apply(null, arguments); - }; - - // [START transactional_single_entity_group_read_only] - function getTaskListEntities(callback) { - var error; - var taskListEntities; - - datastore.runInTransaction(function(transaction, done) { - var taskListKey = datastore.key(['TaskList', 'default']); - - datastore.get(taskListKey, function(err) { - if (err) { - error = err; - transaction.rollback(done); - return; - } - - var query = datastore.createQuery('Task') - .hasAncestor(taskListKey); - - datastore.runQuery(query, function(err, entities) { - if (err) { - // An error occurred while running the query. - error = err; - transaction.rollback(done); - return; - } - - taskListEntities = entities; - done(); - }); - }); - - }, function(transactionError) { - if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(null, taskListEntities); - } - }); - } - // [END transactional_single_entity_group_read_only] - - getTaskListEntities(function(err, entities) { - if (err) { - callback(err); - return; - } - - if (!entities) { - callback(new Error('Entities were not retrieved successfully.')); - } else { - callback(); - } - }); -}; diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 852e0be4146..07b39f758ea 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,6 +9,6 @@ }, "dependencies": { "async": "^1.5.0", - "gcloud": "stephenplusplus/gcloud-node#spp--datastore-v1beta3" + "gcloud": "^0.25.0" } } diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 6b59213563b..7d2c6f713c4 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -33,7 +33,7 @@ if (keyFile) { options.keyFilename = keyFile; } -var datastore = gcloud.datastore(options); +var datastore = gcloud.datastore.dataset(options); // [END build_service] /* @@ -169,72 +169,74 @@ function formatTasks(tasks) { } // [END format_results] -switch (command) { - case 'new': { - addTask(input, function(err, taskKey) { - if (err) { - throw err; - } +if (module === require.main) { + switch (command) { + case 'new': { + addTask(input, function(err, taskKey) { + if (err) { + throw err; + } - var taskId = taskKey.path.pop(); + var taskId = taskKey.path.pop(); - console.log('Task %d created successfully.', taskId); - }); + console.log('Task %d created successfully.', taskId); + }); - break; - } + break; + } - case 'done': { - var taskId = parseInt(input, 10); + case 'done': { + var taskId = parseInt(input, 10); - markDone(taskId, function(err) { - if (err) { - throw err; - } + markDone(taskId, function(err) { + if (err) { + throw err; + } - console.log('Task %d updated successfully.', taskId); - }); + console.log('Task %d updated successfully.', taskId); + }); - break; - } + break; + } - case 'list': { - listTasks(function(err, tasks) { - if (err) { - throw err; - } + case 'list': { + listTasks(function(err, tasks) { + if (err) { + throw err; + } - console.log(formatTasks(tasks)); - }); + console.log(formatTasks(tasks)); + }); - break; - } + break; + } - case 'delete': { - var taskId = parseInt(input, 10); + case 'delete': { + var taskId = parseInt(input, 10); - deleteTask(taskId, function(err) { - if (err) { - throw err; - } + deleteTask(taskId, function(err) { + if (err) { + throw err; + } - console.log('Task %d deleted successfully.', taskId); - }); + console.log('Task %d deleted successfully.', taskId); + }); - break; - } + break; + } - default: { - // Only print usage if this file is being executed directly - if (module === require.main) { - console.log([ - 'Usage:', - '', - ' new Adds a task with a description ', - ' done Marks a task as done', - ' list Lists all tasks by creation time', - ' delete Deletes a task' - ].join('\n')); + default: { + // Only print usage if this file is being executed directly + if (module === require.main) { + console.log([ + 'Usage:', + '', + ' new Adds a task with a description ', + ' done Marks a task as done', + ' list Lists all tasks by creation time', + ' delete Deletes a task' + ].join('\n')); + } } } } From 3bbd84e44296ccfe7a72ec92c8fc3f7d52cd4962 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 14 Jan 2016 13:42:31 -0800 Subject: [PATCH 007/820] Add Logging examples. --- handwritten/nodejs-datastore/samples/README.md | 6 ++++++ handwritten/nodejs-datastore/samples/package.json | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index eca0dabc719..48370161be2 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -1,5 +1,11 @@ ## Datastore Samples +These samples require two environment variables to be set: + +- `GOOGLE_APPLICATION_CREDENTIALS` - Path to a service account file. You can +download one from your Google project's "permissions" page. +- `TEST_PROJECT_ID` - Id of your Google project. + ## Run a sample Install dependencies: diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 07b39f758ea..05a3dc762a5 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -4,11 +4,14 @@ "version": "0.0.1", "private": true, "license": "Apache Version 2.0", + "engines": { + "node": ">=0.10.x" + }, "scripts": { "tasks": "node tasks.js" }, "dependencies": { - "async": "^1.5.0", - "gcloud": "^0.25.0" + "async": "^1.5.2", + "gcloud": "^0.27.0" } } From 6a03b2c403c20a979d194d63c7d8ba4454cf75f8 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 19 Jan 2016 14:49:34 -0800 Subject: [PATCH 008/820] Added 14 Google App Engine samples. --- handwritten/nodejs-datastore/samples/package.json | 1 + handwritten/nodejs-datastore/samples/tasks.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 05a3dc762a5..1c99ffb7837 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -4,6 +4,7 @@ "version": "0.0.1", "private": true, "license": "Apache Version 2.0", + "author": "Google Inc.", "engines": { "node": ">=0.10.x" }, diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 7d2c6f713c4..6981c0f6781 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -1,4 +1,4 @@ -// Copyright 2015, Google, Inc. +// Copyright 2015-2016, Google, Inc. // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at From 778ce45b50c5e0256d7a80c3a5417c1f636dbfa7 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 26 Jan 2016 11:51:53 -0800 Subject: [PATCH 009/820] Added Pub/Sub samples. --- handwritten/nodejs-datastore/samples/README.md | 2 +- handwritten/nodejs-datastore/samples/tasks.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 48370161be2..fa9124b7022 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -4,7 +4,7 @@ These samples require two environment variables to be set: - `GOOGLE_APPLICATION_CREDENTIALS` - Path to a service account file. You can download one from your Google project's "permissions" page. -- `TEST_PROJECT_ID` - Id of your Google project. +- `GCLOUD_PROJECT` - Id of your Google project. ## Run a sample diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 6981c0f6781..fb21b9c5755 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -16,9 +16,9 @@ var input = process.argv.splice(2); var command = input.shift(); -var projectId = process.env.DATASTORE_PROJECT_ID || process.env.TEST_PROJECT_ID; +var projectId = process.env.DATASTORE_PROJECT_ID || process.env.GCLOUD_PROJECT; if (!projectId) { - throw new Error('TEST_PROJECT_ID environment variable required.'); + throw new Error('GCLOUD_PROJECT environment variable required.'); } var keyFile = process.env.DATASTORE_KEYFILE || process.env.GOOGLE_APPLICATION_CREDENTIALS; From a890d87d306c7042a728544ecc62a9a71799ce53 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 11 Feb 2016 15:02:35 -0800 Subject: [PATCH 010/820] Added Datastore error sample. --- handwritten/nodejs-datastore/samples/error.js | 55 +++++++++++++++++++ .../nodejs-datastore/samples/package.json | 1 + 2 files changed, 56 insertions(+) create mode 100644 handwritten/nodejs-datastore/samples/error.js diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js new file mode 100644 index 00000000000..b03621c457f --- /dev/null +++ b/handwritten/nodejs-datastore/samples/error.js @@ -0,0 +1,55 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var gcloud = require('gcloud'); + +var dataset = gcloud.datastore.dataset({ + projectId: process.env.GCLOUD_PROJECT +}); + +// [START error] +function runQuery(cb) { + var query = dataset.createQuery(['foo']).start('badrequest'); + + dataset.runQuery(query, function (err, entities) { + // Check for an error + if (err) { + console.log(err.errors); // [...] + console.log(err.code); // 400 + console.log(err.message); // "Bad Request" + console.log(err.response); // {...} + + // Process error + + // For example, treat permission error like no entities were found + if (err.code === 403) { + return cb(null, []); + } + + // Forward the error to the caller + return cb(err); + } + + // We're good + return cb(null, entities); + }); +} +// [END error] + +exports.runQuery = runQuery; + +if (module === require.main) { + runQuery(function () {}); +} diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 1c99ffb7837..8a0a7958a74 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,6 +9,7 @@ "node": ">=0.10.x" }, "scripts": { + "error": "node error.js", "tasks": "node tasks.js" }, "dependencies": { From 6c672194c9ed189d47ce422f4b17b9d905afb27b Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 12 Feb 2016 09:17:51 -0800 Subject: [PATCH 011/820] Switch foo to Company. --- handwritten/nodejs-datastore/samples/error.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index b03621c457f..025249a5be1 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -21,7 +21,7 @@ var dataset = gcloud.datastore.dataset({ // [START error] function runQuery(cb) { - var query = dataset.createQuery(['foo']).start('badrequest'); + var query = dataset.createQuery(['Company']).start('badrequest'); dataset.runQuery(query, function (err, entities) { // Check for an error From ff87b407dbaf3803f41fb0db77854e1cb4dac71a Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 19 Nov 2015 09:46:46 -0800 Subject: [PATCH 012/820] Added back datastore v1beta3 samples. --- .../nodejs-datastore/samples/concepts.js | 1329 +++++++++++++++++ .../nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 3 files changed, 1331 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/concepts.js diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js new file mode 100644 index 00000000000..3d0223625a6 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -0,0 +1,1329 @@ +// Copyright 2015, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var asyncUtil = require('async'); +var gcloud = require('gcloud'); + +module.exports = { + Entity: Entity, + Index: Index, + Metadata: Metadata, + Query: Query, + Transaction: Transaction +}; + +// This mock is used in the documentation snippets. +var datastore = { + delete: function() {}, + get: function() {}, + insert: function() {}, + key: function() {}, + update: function() {}, + upsert: function() {}, + runQuery: function() {}, + save: function() {} +}; + +var keyFile = process.env.DATASTORE_KEYFILE || + process.env.GOOGLE_APPLICATION_CREDENTIALS; + +function Entity(projectId) { + var options = { + projectId: projectId + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); + + // To create the keys, we have to use this instance of Datastore. + datastore.key = this.datastore.key; + + this.incompleteKey = this.getIncompleteKey(); + this.namedKey = this.getNamedKey(); + this.keyWithParent = this.getKeyWithParent(); + this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent(); +} + +Entity.prototype.getIncompleteKey = function() { + // [START incomplete_key] + var taskKey = datastore.key('Task'); + // [END incomplete_key] + + return taskKey; +}; + +Entity.prototype.getNamedKey = function() { + // [START named_key] + var taskKey = datastore.key([ + 'Task', + 'sampletask' + ]); + // [END named_key] + + return taskKey; +}; + +Entity.prototype.getKeyWithParent = function() { + // [START key_with_parent] + var taskKey = datastore.key([ + 'TaskList', + 'default', + 'Task', + 'sampleTask' + ]); + // [END key_with_parent] + + return taskKey; +}; + +Entity.prototype.getKeyWithMultiLevelParent = function() { + // [START key_with_multilevel_parent] + var taskKey = datastore.key([ + 'User', + 'alice', + 'TaskList', + 'default', + 'Task', + 'sampleTask' + ]); + // [END key_with_multilevel_parent] + + return taskKey; +}; + +Entity.prototype.getTask = function() { + // [START basic_entity] + var task = { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + }; + // [END basic_entity] + + return task; +}; + +Entity.prototype.testIncompleteKey = function(callback) { + this.datastore.save({ + key: this.incompleteKey, + data: {} + }, callback); +}; + +Entity.prototype.testNamedKey = function(callback) { + this.datastore.save({ + key: this.namedKey, + data: {} + }, callback); +}; + +Entity.prototype.testKeyWithParent = function(callback) { + this.datastore.save({ + key: this.keyWithParent, + data: {} + }, callback); +}; + +Entity.prototype.testKeyWithMultiLevelParent = function(callback) { + this.datastore.save({ + key: this.keyWithMultiLevelParent, + data: {} + }, callback); +}; + +Entity.prototype.testEntityWithParent = function(callback) { + var taskKey = this.keyWithParent; + + // [START entity_with_parent] + var task = { + key: taskKey, + data: { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + } + }; + // [END entity_with_parent] + + this.datastore.save(task, callback); +}; + +Entity.prototype.testProperties = function(callback) { + // jshint camelcase:false + // [START properties] + var task = { + type: 'Personal', + created: new Date(), + done: false, + priority: 4, + percent_complete: 10.0, + description: 'Learn Cloud Datastore' + }; + // [END properties] + + this.datastore.save({ + key: this.incompleteKey, + data: task + }, callback); +}; + +Entity.prototype.testArrayValue = function(callback) { + // [START array_value] + var task = { + tags: [ + 'fun', + 'programming' + ], + collaborators: [ + 'alice', + 'bob' + ] + }; + // [END array_value] + + this.datastore.save({ + key: this.incompleteKey, + data: task + }, callback); +}; + +Entity.prototype.testBasicEntity = function(callback) { + this.datastore.save({ + key: this.getIncompleteKey(), + data: this.getTask() + }, callback); +}; + +Entity.prototype.testUpsert = function(callback) { + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START upsert] + datastore.upsert({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task inserted successfully. + } + }); + // [END upsert] + + this.datastore.upsert({ + key: taskKey, + data: task + }, callback); +}; + +Entity.prototype.testInsert = function(callback) { + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START insert] + datastore.insert({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task inserted successfully. + } + }); + // [END insert] + + this.datastore.insert({ + key: taskKey, + data: task + }, callback); +}; + +Entity.prototype.testLookup = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + + // jshint unused:false + // [START lookup] + datastore.get(taskKey, function(err, entity) { + if (!err) { + // Task found. + + // entity.data = { + // type: 'Personal', + // done: false, + // priority: 4, + // description: 'Learn Cloud Datastore' + // }; + } + }); + // [END lookup] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.get(taskKey, callback); + }); +}; + +Entity.prototype.testUpdate = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START update] + datastore.update({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task updated successfully. + } + }); + // [END update] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.update({ + key: taskKey, + data: task + }, callback); + }); +}; + +Entity.prototype.testDelete = function(callback) { + var self = this; + var taskKey = this.getIncompleteKey(); + + // [START delete] + datastore.delete(taskKey, function(err) { + if (!err) { + // Task deleted successfully. + } + }); + // [END delete] + + this.datastore.insert({ + key: taskKey, + data: {} + }, function(err) { + if (err) { + callback(err); + return; + } + + self.datastore.delete(taskKey, callback); + }); +}; + +Entity.prototype.testBatchUpsert = function(callback) { + datastore.key = this.datastore.key; + + var taskKey1 = datastore.key(['Task', 1]); + var taskKey2 = datastore.key(['Task', 2]); + + var task1 = { + type: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore' + }; + + var task2 = { + type: 'Work', + done: false, + priority: 8, + description: 'Integrate Cloud Datastore' + }; + + // [START batch_upsert] + datastore.upsert([ + { + key: taskKey1, + data: task1 + }, + { + key: taskKey2, + data: task2 + } + ], function(err) { + if (!err) { + // Tasks inserted successfully. + } + }); + // [END batch_upsert] + + this.datastore.upsert([ + { + key: taskKey1, + data: task1 + }, + { + key: taskKey2, + data: task2 + } + ], callback); +}; + +Entity.prototype.testBatchLookup = function(callback) { + var taskKey1 = this.datastore.key(['Task', 1]); + var taskKey2 = this.datastore.key(['Task', 2]); + + // jshint unused:false + // [START batch_lookup] + datastore.get([ + taskKey1, + taskKey2 + ], function(err, tasks) { + if (!err) { + // Tasks retrieved successfully. + } + }); + // [END batch_lookup] + + this.datastore.get([ + taskKey1, + taskKey2 + ], callback); +}; + +Entity.prototype.testBatchDelete = function(callback) { + var taskKey1 = this.datastore.key(['Task', 1]); + var taskKey2 = this.datastore.key(['Task', 2]); + + // [START batch_delete] + datastore.delete([ + taskKey1, + taskKey2 + ], function(err) { + if (!err) { + // Tasks deleted successfully. + } + }); + // [END batch_delete] + + this.datastore.delete([ + taskKey1, + taskKey2 + ], callback); +}; + +function Index(projectId) { + var options = { + projectId: projectId + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); +} + +Index.prototype.testUnindexedPropertyQuery = function(callback) { + var datastore = this.datastore; + + // [START unindexed_property_query] + var query = datastore.createQuery('Task') + .filter('description =', 'A task description.'); + // [END unindexed_property_query] + + this.datastore.runQuery(query, callback); +}; + +Index.prototype.testExplodingProperties = function(callback) { + datastore.key = this.datastore.key; + + // [START exploding_properties] + var task = { + key: datastore.key('Task'), + data: { + tags: [ + 'fun', + 'programming', + 'learn' + ], + collaborators: [ + 'alice', + 'bob', + 'charlie' + ], + created: new Date() + } + }; + // [END exploding_properties] + + delete datastore.key; + + this.datastore.insert(task, callback); +}; + +function Metadata(projectId) { + var options = { + projectId: projectId + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); +} + +Metadata.prototype.testNamespaceRunQuery = function(callback) { + var self = this; + + datastore.createQuery = this.datastore.createQuery; + datastore.key = this.datastore.key; + + var startNamespace = 'Animals'; + var endNamespace = 'Zoos'; + + this.datastore.save([ + { + key: datastore.key({ + namespace: 'Animals', + path: ['Ant', 1] + }), + data: {} + } + ], function(err) { + if (err) { + callback(err); + return; + } + + // jshint unused:false + // [START namespace_run_query] + var query = datastore.createQuery('__namespace__') + .select('__key__') + .filter('__key__ >=', datastore.key(['__namespace__', startNamespace])) + .filter('__key__ <', datastore.key(['__namespace__', endNamespace])); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var namespaces = entities.map(function(entity) { + return entity.key.path.pop(); + }); + }); + // [END namespace_run_query] + + self.datastore.runQuery(query, callback); + }); +}; + +Metadata.prototype.testKindRunQuery = function(callback) { + datastore.createQuery = this.datastore.createQuery; + + // jshint unused:false + // [START kind_run_query] + var query = datastore.createQuery('__kind__') + .select('__key__'); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var kinds = entities.map(function(entity) { + return entity.key.path.pop(); + }); + }); + // [END kind_run_query] + + this.datastore.runQuery(query, callback); +}; + +Metadata.prototype.testPropertyRunQuery = function(callback) { + datastore.createQuery = this.datastore.createQuery; + + // [START property_run_query] + var query = datastore.createQuery('__property__') + .select('__key__'); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var propertiesByKind = {}; + + entities.forEach(function(entity) { + var kind = entity.key.path[1]; + var propertyName = entity.key.path[3]; + + propertiesByKind[kind] = propertiesByKind[kind] || []; + propertiesByKind[kind].push(propertyName); + }); + }); + // [END property_run_query] + + this.datastore.runQuery(query, callback); +}; + +Metadata.prototype.testPropertyByKindRunQuery = function(callback) { + var datastore = this.datastore; + + // jshint camelcase:false + // [START property_by_kind_run_query] + var ancestorKey = datastore.key(['__kind__', 'Task']); + + var query = datastore.createQuery('__property__') + .hasAncestor(ancestorKey); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + return; + } + + var representationsByProperty = {}; + + entities.forEach(function(entity) { + var propertyName = entity.key.path.pop(); + var propertyType = entity.data.property_representation; + + representationsByProperty[propertyName] = propertyType; + }); + }); + // [END property_by_kind_run_query] + + this.datastore.runQuery(query, callback); +}; + +function Query(projectId) { + var options = { + projectId: projectId + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); + + this.basicQuery = this.getBasicQuery(); + this.projectionQuery = this.getProjectionQuery(); + this.ancestorQuery = this.getAncestorQuery(); +} + +Query.prototype.getBasicQuery = function() { + var datastore = this.datastore; + + // [START basic_query] + var query = datastore.createQuery('Task') + .filter('done =', false) + .filter('priority >=', 4) + .order('-priority'); + // [END basic_query] + + return query; +}; + +Query.prototype.getProjectionQuery = function() { + var datastore = this.datastore; + + // [START projection_query] + var query = datastore.createQuery('Task') + .select('priority') + .select('percent_complete'); + // [END projection_query] + + return query; +}; + +Query.prototype.getAncestorQuery = function() { + var datastore = this.datastore; + + // [START ancestor_query] + var ancestorKey = datastore.key(['TaskList', 'default']); + + var query = datastore.createQuery('Task') + .hasAncestor(ancestorKey); + // [END ancestor_query] + + return query; +}; + +Query.prototype.testRunQuery = function(callback) { + var query = this.basicQuery; + + // jshint unused:false + // [START run_query] + datastore.runQuery(query, function(err, tasks) { + if (!err) { + // Task entities found. + } + }); + // [END run_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testPropertyFilter = function(callback) { + var datastore = this.datastore; + + // [START property_filter] + var query = datastore.createQuery('Task') + .filter('done =', false); + // [END property_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testCompositeFilter = function(callback) { + var datastore = this.datastore; + + // [START composite_filter] + var query = datastore.createQuery('Task') + .filter('done =', false) + .filter('priority =', 4); + // [END composite_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testKeyFilter = function(callback) { + var datastore = this.datastore; + + // [START key_filter] + var query = datastore.createQuery('Task') + .filter('__key__ >', datastore.key(['Task', 'someTask'])); + // [END key_filter] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testAscendingSort = function(callback) { + var datastore = this.datastore; + + // [START ascending_sort] + var query = datastore.createQuery('Task') + .order('created'); + // [END ascending_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDescendingSort = function(callback) { + var datastore = this.datastore; + + // [START descending_sort] + var query = datastore.createQuery('Task') + .order('-created'); + // [END descending_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testMultiSort = function(callback) { + var datastore = this.datastore; + + // [START multi_sort] + var query = datastore.createQuery('Task') + .order('-priority') + .order('created'); + // [END multi_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testKindlessQuery = function(callback) { + var datastore = this.datastore; + var lastSeenKey = this.datastore.key(['Task', Date.now()]); + + // [START kindless_query] + var query = datastore.createQuery() + .filter('__key__ >', lastSeenKey); + // [END kindless_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testRunQueryProjection = function(callback) { + var self = this; + var query = this.projectionQuery; + + // Overwrite the mock to actually run the query. + datastore.runQuery = function(query, queryCallback) { + // Restore the mock. + datastore.runQuery = function() {}; + + self.datastore.runQuery(query, function(err) { + if (err) { + callback(err); + return; + } + + queryCallback.apply(null, arguments); + + if (priorities.length === 0 || percentCompletes.length === 0) { + callback(new Error('Projection lists did not build up.')); + } else { + callback(); + } + }); + }; + + // jshint unused:false, camelcase:false + // [START run_query_projection] + var priorities = []; + var percentCompletes = []; + + datastore.runQuery(query, function(err, tasks) { + if (err) { + // An error occurred while running the query. + return; + } + + tasks.forEach(function(task) { + priorities.push(task.data.priority); + percentCompletes.push(task.data.percent_complete); + }); + }); + // [END run_query_projection] +}; + +Query.prototype.testKeysOnlyQuery = function(callback) { + var datastore = this.datastore; + + // [START keys_only_query] + var query = datastore.createQuery() + .select('__key__'); + // [END keys_only_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDistinctQuery = function(callback) { + var datastore = this.datastore; + + // [START distinct_query] + var query = datastore.createQuery('Task') + .groupBy(['type', 'priority']) + .order('type') + .order('priority'); + // [END distinct_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testDistinctOnQuery = function(callback) { + var datastore = this.datastore; + + // [START distinct_on_query] + var query = datastore.createQuery('Task') + .groupBy('type') + .order('type') + .order('priority'); + // [END distinct_on_query] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testArrayValueInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START array_value_inequality_range] + var query = datastore.createQuery('Task') + .filter('tag >', 'learn') + .filter('tag <', 'math'); + // [END array_value_inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testArrayValueEquality = function(callback) { + var datastore = this.datastore; + + // [START array_value_equality] + var query = datastore.createQuery('Task') + .filter('tag =', 'fun') + .filter('tag =', 'programming'); + // [END array_value_equality] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START inequality_range] + var query = datastore.createQuery('Task') + .filter('created >', new Date('1990-01-01T00:00:00z')) + .filter('created <', new Date('2000-12-31T23:59:59z')); + // [END inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalityInvalid = function(callback) { + var datastore = this.datastore; + + // [START inequality_invalid] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .filter('created >', new Date('1990-01-01T00:00:00z')); + // [END inequality_invalid] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testEqualAndInequalityRange = function(callback) { + var datastore = this.datastore; + + // [START equal_and_inequality_range] + var query = datastore.createQuery('Task') + .filter('priority =', 4) + .filter('done =', false) + .filter('created >', new Date('1990-01-01T00:00:00z')) + .filter('created <', new Date('2000-12-31T23:59:59z')); + // [END equal_and_inequality_range] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySort = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('priority') + .order('created'); + // [END inequality_sort] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySortInvalidNotSame = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort_invalid_not_same] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('created'); + // [END inequality_sort_invalid_not_same] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { + var datastore = this.datastore; + + // [START inequality_sort_invalid_not_first] + var query = datastore.createQuery('Task') + .filter('priority >', 3) + .order('created') + .order('priority'); + // [END inequality_sort_invalid_not_first] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testLimit = function(callback) { + var datastore = this.datastore; + + // [START limit] + var query = datastore.createQuery('Task') + .limit(5); + // [END limit] + + this.datastore.runQuery(query, callback); +}; + +Query.prototype.testCursorPaging = function(callback) { + var pageSize = 1; + var pageCursor = ''; + + datastore.createQuery = this.datastore.createQuery; + + // [START cursor_paging] + // By default, gcloud-node will paginate through all of the results that match + // a query, push them into an array, then return them to your callback after + // they have all been retrieved. You must execute `.autoPaginate(false)` on + // your query to disable this behavior. + var query = datastore.createQuery('Task') + .autoPaginate(false) + .limit(pageSize) + .start(pageCursor); + + datastore.runQuery(query, function(err, results, nextQuery) { + if (err) { + // An error occurred while running the query. + return; + } + + var nextPageCursor; + + if (nextQuery) { + // If there are more results to retrieve, the start cursor is + // automatically set on `nextQuery`. To get this value directly, access + // the `startVal` property. + nextPageCursor = nextQuery.startVal; + } else { + // No more results exist. + } + }); + // [END cursor_paging] + + delete datastore.createQuery; + this.datastore.runQuery(query, function(err, results, nextQuery) { + if (err) { + callback(err); + return; + } + + if (!nextQuery || !nextQuery.startVal) { + callback(new Error('A nextQuery with a startVal is not present.')); + } else { + callback(); + } + }); +}; + +Query.prototype.testEventualConsistentQuery = function() { + // [START eventual_consistent_query] + // Read consistency cannot be specified in gcloud-node. + // [END eventual_consistent_query] +}; + +// [START transactional_update] +function transferFunds(fromKey, toKey, amount, callback) { + var error; + + datastore.runInTransaction(function(transaction, done) { + transaction.get([ + fromKey, + toKey + ], function(err, accounts) { + if (err) { + // An error occurred while getting the values. + error = err; + transaction.rollback(done); + return; + } + + accounts[0].data.balance -= amount; + accounts[1].data.balance += amount; + + transaction.save(accounts); + + done(); + }); + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(); + } + }); +} +// [END transactional_update] + +function Transaction(projectId) { + var options = { + projectId: projectId + }; + + if (keyFile) { + options.keyFilename = keyFile; + } + this.datastore = gcloud.datastore(options); + + this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); + this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); + + this.originalBalance = 100; + this.amountToTransfer = 10; +} + +Transaction.prototype.restoreBankAccountBalances = function(config, callback) { + var saveArray = config.keys.map(function(key) { + return { + key: key, + data: { + balance: config.balance + } + }; + }); + + this.datastore.save(saveArray, callback); +}; + +Transaction.prototype.testTransactionalUpdate = function(callback) { + var self = this; + + var fromKey = this.fromKey; + var toKey = this.toKey; + var originalBalance = this.originalBalance; + var amountToTransfer = this.amountToTransfer; + + this.restoreBankAccountBalances({ + keys: [fromKey, toKey], + balance: originalBalance + }, function(err) { + if (err) { + callback(err); + return; + } + + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = self.datastore; + + transferFunds(fromKey, toKey, amountToTransfer, function(err) { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + + if (err) { + callback(err); + return; + } + + self.datastore.get([ + fromKey, + toKey + ], function(err, accounts) { + if (err) { + callback(err); + return; + } + + var transactionWasSuccessful = + accounts[0].data.balance === originalBalance - amountToTransfer && + accounts[1].data.balance === originalBalance + amountToTransfer; + + if (!transactionWasSuccessful) { + callback(new Error('Accounts were not updated successfully.')); + } else { + callback(); + } + }); + }); + }); +}; + +Transaction.prototype.testTransactionalRetry = function(callback) { + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + var fromKey = this.fromKey; + var toKey = this.toKey; + + this.restoreBankAccountBalances({ + keys: [fromKey, toKey], + balance: this.originalBalance + }, function(err) { + if (err) { + callback(err); + return; + } + + // [START transactional_retry] + var async = require('async'); + + function attemptTransfer(callback) { + transferFunds(fromKey, toKey, 10, callback); + } + + async.retry(5, attemptTransfer, callback); + // [END transactional_retry] + }); +}; + +Transaction.prototype.testTransactionalGetOrCreate = function(callback) { + var taskKey = this.datastore.key(['Task', Date.now()]); + + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + // [START transactional_get_or_create] + function getOrCreate(taskKey, taskData, callback) { + var error; + + var taskEntity = { + key: taskKey, + data: taskData + }; + + datastore.runInTransaction(function(transaction, done) { + transaction.get(taskKey, function(err, task) { + if (err) { + // An error occurred while getting the values. + error = err; + transaction.rollback(done); + return; + } + + if (task) { + // The task entity already exists. + transaction.rollback(done); + } else { + // Create the task entity. + transaction.save(taskEntity); + done(); + } + }); + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(null, taskEntity); + } + }); + } + // [END transactional_get_or_create] + + asyncUtil.series([ + // Create: + testWithCreateBehavior, + // Then try to get it: + testWithGetBehavior + ], callback); + + function testWithCreateBehavior(callback) { + getOrCreate(taskKey, {}, function(err, task) { + if (err) { + callback(err); + return; + } + + if (!task) { + callback(new Error('Entity was not created successfully.')); + } else { + callback(); + } + }); + } + + function testWithGetBehavior(callback) { + getOrCreate(taskKey, {}, function(err, task) { + if (err) { + callback(err); + return; + } + + if (!task) { + callback(new Error('Entity was not retrieved successfully.')); + } else { + callback(); + } + }); + } +}; + +Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { + // Overwrite so the real Datastore instance is used in `transferFunds`. + var datastoreMock = datastore; + datastore = this.datastore; + + var originalCallback = callback; + callback = function() { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + originalCallback.apply(null, arguments); + }; + + // [START transactional_single_entity_group_read_only] + function getTaskListEntities(callback) { + var error; + var taskListEntities; + + datastore.runInTransaction(function(transaction, done) { + var taskListKey = datastore.key(['TaskList', 'default']); + + datastore.get(taskListKey, function(err) { + if (err) { + error = err; + transaction.rollback(done); + return; + } + + var query = datastore.createQuery('Task') + .hasAncestor(taskListKey); + + datastore.runQuery(query, function(err, entities) { + if (err) { + // An error occurred while running the query. + error = err; + transaction.rollback(done); + return; + } + + taskListEntities = entities; + done(); + }); + }); + + }, function(transactionError) { + if (transactionError || error) { + callback(transactionError || error); + } else { + // The transaction completed successfully. + callback(null, taskListEntities); + } + }); + } + // [END transactional_single_entity_group_read_only] + + getTaskListEntities(function(err, entities) { + if (err) { + callback(err); + return; + } + + if (!entities) { + callback(new Error('Entities were not retrieved successfully.')); + } else { + callback(); + } + }); +}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8a0a7958a74..2124e5cd5a6 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,6 +14,6 @@ }, "dependencies": { "async": "^1.5.2", - "gcloud": "^0.27.0" + "gcloud": "^0.28.0" } } diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index fb21b9c5755..b7d85e84e93 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -33,7 +33,7 @@ if (keyFile) { options.keyFilename = keyFile; } -var datastore = gcloud.datastore.dataset(options); +var datastore = gcloud.datastore(options); // [END build_service] /* From 1e199e89e5ea30ad9506c463e2de21bfa3cdd578 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 19 Nov 2015 14:26:09 -0500 Subject: [PATCH 013/820] Delete all created Task entities after tests run --- handwritten/nodejs-datastore/samples/concepts.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 3d0223625a6..eaf4bd913da 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -343,10 +343,8 @@ Entity.prototype.testDelete = function(callback) { }; Entity.prototype.testBatchUpsert = function(callback) { - datastore.key = this.datastore.key; - - var taskKey1 = datastore.key(['Task', 1]); - var taskKey2 = datastore.key(['Task', 2]); + var taskKey1 = this.datastore.key(['Task', 1]); + var taskKey2 = this.datastore.key(['Task', 2]); var task1 = { type: 'Personal', @@ -654,8 +652,7 @@ Query.prototype.getProjectionQuery = function() { // [START projection_query] var query = datastore.createQuery('Task') - .select('priority') - .select('percent_complete'); + .select(['priority', 'percent_complete']); // [END projection_query] return query; From 72f8f46dd5c35355320e21bc98412444ea5adc1a Mon Sep 17 00:00:00 2001 From: Geoffrey Gowan Date: Mon, 7 Dec 2015 18:54:01 -0800 Subject: [PATCH 014/820] Update concepts.js Making this code snippet consistent with the corresponding docs and all the rest of the instances of 'sampleTask' in this file. --- handwritten/nodejs-datastore/samples/concepts.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index eaf4bd913da..9dfc0a1fad3 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -70,7 +70,7 @@ Entity.prototype.getNamedKey = function() { // [START named_key] var taskKey = datastore.key([ 'Task', - 'sampletask' + 'sampleTask' ]); // [END named_key] @@ -1323,4 +1323,4 @@ Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { callback(); } }); -}; \ No newline at end of file +}; From c95acc50377fa41f56577d5776b1f195207fd388 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 25 Feb 2016 13:29:38 -0800 Subject: [PATCH 015/820] Code updated for v2. --- .../nodejs-datastore/samples/concepts.js | 108 ++++++++---------- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 2 files changed, 50 insertions(+), 60 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 9dfc0a1fad3..b12588e40da 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -47,7 +47,7 @@ function Entity(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore(options); + this.datastore = gcloud.datastore.dataset(options); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; @@ -210,27 +210,6 @@ Entity.prototype.testBasicEntity = function(callback) { }, callback); }; -Entity.prototype.testUpsert = function(callback) { - var taskKey = this.getIncompleteKey(); - var task = this.getTask(); - - // [START upsert] - datastore.upsert({ - key: taskKey, - data: task - }, function(err) { - if (!err) { - // Task inserted successfully. - } - }); - // [END upsert] - - this.datastore.upsert({ - key: taskKey, - data: task - }, callback); -}; - Entity.prototype.testInsert = function(callback) { var taskKey = this.getIncompleteKey(); var task = this.getTask(); @@ -246,7 +225,8 @@ Entity.prototype.testInsert = function(callback) { }); // [END insert] - this.datastore.insert({ + this.datastore.save({ + method: 'insert_auto_id', key: taskKey, data: task }, callback); @@ -272,7 +252,8 @@ Entity.prototype.testLookup = function(callback) { }); // [END lookup] - this.datastore.insert({ + this.datastore.save({ + method: 'insert_auto_id', key: taskKey, data: {} }, function(err) { @@ -301,7 +282,8 @@ Entity.prototype.testUpdate = function(callback) { }); // [END update] - this.datastore.insert({ + this.datastore.save({ + method: 'insert_auto_id', key: taskKey, data: {} }, function(err) { @@ -329,7 +311,8 @@ Entity.prototype.testDelete = function(callback) { }); // [END delete] - this.datastore.insert({ + this.datastore.save({ + method: 'insert_auto_id', key: taskKey, data: {} }, function(err) { @@ -440,7 +423,7 @@ function Index(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore(options); + this.datastore = gcloud.datastore.dataset(options); } Index.prototype.testUnindexedPropertyQuery = function(callback) { @@ -448,7 +431,7 @@ Index.prototype.testUnindexedPropertyQuery = function(callback) { // [START unindexed_property_query] var query = datastore.createQuery('Task') - .filter('description =', 'A task description.'); + .filter('description', '=', 'A task description.'); // [END unindexed_property_query] this.datastore.runQuery(query, callback); @@ -459,6 +442,7 @@ Index.prototype.testExplodingProperties = function(callback) { // [START exploding_properties] var task = { + method: 'insert_auto_id', key: datastore.key('Task'), data: { tags: [ @@ -478,7 +462,7 @@ Index.prototype.testExplodingProperties = function(callback) { delete datastore.key; - this.datastore.insert(task, callback); + this.datastore.save(task, callback); }; function Metadata(projectId) { @@ -489,7 +473,7 @@ function Metadata(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore(options); + this.datastore = gcloud.datastore.dataset(options); } Metadata.prototype.testNamespaceRunQuery = function(callback) { @@ -519,8 +503,8 @@ Metadata.prototype.testNamespaceRunQuery = function(callback) { // [START namespace_run_query] var query = datastore.createQuery('__namespace__') .select('__key__') - .filter('__key__ >=', datastore.key(['__namespace__', startNamespace])) - .filter('__key__ <', datastore.key(['__namespace__', endNamespace])); + .filter('__key__', '>=', datastore.key(['__namespace__', startNamespace])) + .filter('__key__', '<', datastore.key(['__namespace__', endNamespace])); datastore.runQuery(query, function(err, entities) { if (err) { @@ -627,7 +611,7 @@ function Query(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore(options); + this.datastore = gcloud.datastore.dataset(options); this.basicQuery = this.getBasicQuery(); this.projectionQuery = this.getProjectionQuery(); @@ -639,9 +623,11 @@ Query.prototype.getBasicQuery = function() { // [START basic_query] var query = datastore.createQuery('Task') - .filter('done =', false) - .filter('priority >=', 4) - .order('-priority'); + .filter('done', '=', false) + .filter('priority', '>=', 4) + .order('priority', { + descending: true + }); // [END basic_query] return query; @@ -691,7 +677,7 @@ Query.prototype.testPropertyFilter = function(callback) { // [START property_filter] var query = datastore.createQuery('Task') - .filter('done =', false); + .filter('done', '=', false); // [END property_filter] this.datastore.runQuery(query, callback); @@ -702,8 +688,8 @@ Query.prototype.testCompositeFilter = function(callback) { // [START composite_filter] var query = datastore.createQuery('Task') - .filter('done =', false) - .filter('priority =', 4); + .filter('done', '=', false) + .filter('priority', '=', 4); // [END composite_filter] this.datastore.runQuery(query, callback); @@ -714,7 +700,7 @@ Query.prototype.testKeyFilter = function(callback) { // [START key_filter] var query = datastore.createQuery('Task') - .filter('__key__ >', datastore.key(['Task', 'someTask'])); + .filter('__key__', '>', datastore.key(['Task', 'someTask'])); // [END key_filter] this.datastore.runQuery(query, callback); @@ -736,7 +722,9 @@ Query.prototype.testDescendingSort = function(callback) { // [START descending_sort] var query = datastore.createQuery('Task') - .order('-created'); + .order('created', { + descending: true + }); // [END descending_sort] this.datastore.runQuery(query, callback); @@ -747,7 +735,9 @@ Query.prototype.testMultiSort = function(callback) { // [START multi_sort] var query = datastore.createQuery('Task') - .order('-priority') + .order('priority', { + descending: true + }) .order('created'); // [END multi_sort] @@ -760,7 +750,7 @@ Query.prototype.testKindlessQuery = function(callback) { // [START kindless_query] var query = datastore.createQuery() - .filter('__key__ >', lastSeenKey); + .filter('__key__', '>', lastSeenKey); // [END kindless_query] this.datastore.runQuery(query, callback); @@ -852,8 +842,8 @@ Query.prototype.testArrayValueInequalityRange = function(callback) { // [START array_value_inequality_range] var query = datastore.createQuery('Task') - .filter('tag >', 'learn') - .filter('tag <', 'math'); + .filter('tag', '>', 'learn') + .filter('tag', '<', 'math'); // [END array_value_inequality_range] this.datastore.runQuery(query, callback); @@ -864,8 +854,8 @@ Query.prototype.testArrayValueEquality = function(callback) { // [START array_value_equality] var query = datastore.createQuery('Task') - .filter('tag =', 'fun') - .filter('tag =', 'programming'); + .filter('tag', '=', 'fun') + .filter('tag', '=', 'programming'); // [END array_value_equality] this.datastore.runQuery(query, callback); @@ -876,8 +866,8 @@ Query.prototype.testInequalityRange = function(callback) { // [START inequality_range] var query = datastore.createQuery('Task') - .filter('created >', new Date('1990-01-01T00:00:00z')) - .filter('created <', new Date('2000-12-31T23:59:59z')); + .filter('created', '>', new Date('1990-01-01T00:00:00z')) + .filter('created', '<', new Date('2000-12-31T23:59:59z')); // [END inequality_range] this.datastore.runQuery(query, callback); @@ -888,8 +878,8 @@ Query.prototype.testInequalityInvalid = function(callback) { // [START inequality_invalid] var query = datastore.createQuery('Task') - .filter('priority >', 3) - .filter('created >', new Date('1990-01-01T00:00:00z')); + .filter('priority', '>', 3) + .filter('created', '>', new Date('1990-01-01T00:00:00z')); // [END inequality_invalid] this.datastore.runQuery(query, callback); @@ -900,10 +890,10 @@ Query.prototype.testEqualAndInequalityRange = function(callback) { // [START equal_and_inequality_range] var query = datastore.createQuery('Task') - .filter('priority =', 4) - .filter('done =', false) - .filter('created >', new Date('1990-01-01T00:00:00z')) - .filter('created <', new Date('2000-12-31T23:59:59z')); + .filter('priority', '=', 4) + .filter('done', '=', false) + .filter('created', '>', new Date('1990-01-01T00:00:00z')) + .filter('created', '<', new Date('2000-12-31T23:59:59z')); // [END equal_and_inequality_range] this.datastore.runQuery(query, callback); @@ -914,7 +904,7 @@ Query.prototype.testInequalitySort = function(callback) { // [START inequality_sort] var query = datastore.createQuery('Task') - .filter('priority >', 3) + .filter('priority', '>', 3) .order('priority') .order('created'); // [END inequality_sort] @@ -927,7 +917,7 @@ Query.prototype.testInequalitySortInvalidNotSame = function(callback) { // [START inequality_sort_invalid_not_same] var query = datastore.createQuery('Task') - .filter('priority >', 3) + .filter('priority', '>', 3) .order('created'); // [END inequality_sort_invalid_not_same] @@ -939,7 +929,7 @@ Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { // [START inequality_sort_invalid_not_first] var query = datastore.createQuery('Task') - .filter('priority >', 3) + .filter('priority', '>', 3) .order('created') .order('priority'); // [END inequality_sort_invalid_not_first] @@ -1056,7 +1046,7 @@ function Transaction(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore(options); + this.datastore = gcloud.datastore.dataset(options); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index b7d85e84e93..fb21b9c5755 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -33,7 +33,7 @@ if (keyFile) { options.keyFilename = keyFile; } -var datastore = gcloud.datastore(options); +var datastore = gcloud.datastore.dataset(options); // [END build_service] /* From 13a5793b8d5ac9bc49a69fedcabeb56b305eb874 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 1 Mar 2016 10:37:29 -0800 Subject: [PATCH 016/820] Re-add upsert. --- .../nodejs-datastore/samples/concepts.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index b12588e40da..8f13744c7da 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -210,6 +210,27 @@ Entity.prototype.testBasicEntity = function(callback) { }, callback); }; +Entity.prototype.testUpsert = function(callback) { + var taskKey = this.getIncompleteKey(); + var task = this.getTask(); + + // [START upsert] + datastore.upsert({ + key: taskKey, + data: task + }, function(err) { + if (!err) { + // Task inserted successfully. + } + }); + // [END upsert] + + this.datastore.upsert({ + key: this.datastore.key(['Task', 1]), + data: task + }, callback); +}; + Entity.prototype.testInsert = function(callback) { var taskKey = this.getIncompleteKey(); var task = this.getTask(); From 3c49646dc37b78c553485a54e6938e018eed5d12 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 4 Mar 2016 16:17:07 -0800 Subject: [PATCH 017/820] Fixed typo --- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index fb21b9c5755..1578a5a5f72 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -113,7 +113,7 @@ function markDone(taskId, callback) { return; } - task.data.done = false; + task.data.done = true; transaction.save(task); From a4df7d2dd4278fff863e405a2e2da71dabced68b Mon Sep 17 00:00:00 2001 From: Walter Poupore Date: Fri, 4 Mar 2016 16:33:45 -0800 Subject: [PATCH 018/820] Provided comment about done() --- handwritten/nodejs-datastore/samples/tasks.js | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 1578a5a5f72..b460c13c250 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -117,6 +117,7 @@ function markDone(taskId, callback) { transaction.save(task); + // Commit the transaction. done(); }); }, function(transactionError) { From d08cceb5d3d274db6ca6274869c1d1f3a8d95919 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 28 Mar 2016 16:14:37 -0700 Subject: [PATCH 019/820] Refactor for completely parallel tests. --- handwritten/nodejs-datastore/samples/concepts.js | 3 +-- handwritten/nodejs-datastore/samples/error.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 8f13744c7da..74508bc5a10 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -788,8 +788,7 @@ Query.prototype.testRunQueryProjection = function(callback) { self.datastore.runQuery(query, function(err) { if (err) { - callback(err); - return; + return callback(err); } queryCallback.apply(null, arguments); diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index 025249a5be1..5a215c069bd 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -51,5 +51,5 @@ function runQuery(cb) { exports.runQuery = runQuery; if (module === require.main) { - runQuery(function () {}); + runQuery(console.log); } From 799b2bcb26cb6120be44c6caaaa059333b481e46 Mon Sep 17 00:00:00 2001 From: Patrick Costello Date: Wed, 13 Apr 2016 09:21:34 -0700 Subject: [PATCH 020/820] Bump gcloud requirement to version based on Datastore v1beta3. --- handwritten/nodejs-datastore/samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 2124e5cd5a6..3cd49d3874d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,6 +14,6 @@ }, "dependencies": { "async": "^1.5.2", - "gcloud": "^0.28.0" + "gcloud": "^0.30.3" } } From 4f5aa4ee8fa5582b5dd5e85a0b200af5b974250b Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 13 Apr 2016 10:07:03 -0700 Subject: [PATCH 021/820] Upgraded dependencies, no longer testing on Node v0.10, switched to Codecov --- .../nodejs-datastore/samples/concepts.js | 29 ++++++++++--------- handwritten/nodejs-datastore/samples/error.js | 2 +- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 74508bc5a10..6ca55280cc6 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -47,7 +47,7 @@ function Entity(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore.dataset(options); + this.datastore = gcloud.datastore(options); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; @@ -247,7 +247,7 @@ Entity.prototype.testInsert = function(callback) { // [END insert] this.datastore.save({ - method: 'insert_auto_id', + method: 'insert', key: taskKey, data: task }, callback); @@ -274,7 +274,7 @@ Entity.prototype.testLookup = function(callback) { // [END lookup] this.datastore.save({ - method: 'insert_auto_id', + method: 'insert', key: taskKey, data: {} }, function(err) { @@ -304,7 +304,7 @@ Entity.prototype.testUpdate = function(callback) { // [END update] this.datastore.save({ - method: 'insert_auto_id', + method: 'insert', key: taskKey, data: {} }, function(err) { @@ -333,7 +333,7 @@ Entity.prototype.testDelete = function(callback) { // [END delete] this.datastore.save({ - method: 'insert_auto_id', + method: 'insert', key: taskKey, data: {} }, function(err) { @@ -444,7 +444,7 @@ function Index(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore.dataset(options); + this.datastore = gcloud.datastore(options); } Index.prototype.testUnindexedPropertyQuery = function(callback) { @@ -459,11 +459,12 @@ Index.prototype.testUnindexedPropertyQuery = function(callback) { }; Index.prototype.testExplodingProperties = function(callback) { + var original = datastore.key; datastore.key = this.datastore.key; // [START exploding_properties] var task = { - method: 'insert_auto_id', + method: 'insert', key: datastore.key('Task'), data: { tags: [ @@ -481,7 +482,7 @@ Index.prototype.testExplodingProperties = function(callback) { }; // [END exploding_properties] - delete datastore.key; + datastore.key = original; this.datastore.save(task, callback); }; @@ -494,7 +495,7 @@ function Metadata(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore.dataset(options); + this.datastore = gcloud.datastore(options); } Metadata.prototype.testNamespaceRunQuery = function(callback) { @@ -632,7 +633,7 @@ function Query(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore.dataset(options); + this.datastore = gcloud.datastore(options); this.basicQuery = this.getBasicQuery(); this.projectionQuery = this.getProjectionQuery(); @@ -771,7 +772,8 @@ Query.prototype.testKindlessQuery = function(callback) { // [START kindless_query] var query = datastore.createQuery() - .filter('__key__', '>', lastSeenKey); + .filter('__key__', '>', lastSeenKey) + .limit(1); // [END kindless_query] this.datastore.runQuery(query, callback); @@ -825,7 +827,8 @@ Query.prototype.testKeysOnlyQuery = function(callback) { // [START keys_only_query] var query = datastore.createQuery() - .select('__key__'); + .select('__key__') + .limit(1); // [END keys_only_query] this.datastore.runQuery(query, callback); @@ -1066,7 +1069,7 @@ function Transaction(projectId) { if (keyFile) { options.keyFilename = keyFile; } - this.datastore = gcloud.datastore.dataset(options); + this.datastore = gcloud.datastore(options); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index 5a215c069bd..844cb24ec1d 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -15,7 +15,7 @@ var gcloud = require('gcloud'); -var dataset = gcloud.datastore.dataset({ +var dataset = gcloud.datastore({ projectId: process.env.GCLOUD_PROJECT }); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index b460c13c250..faf3ea9e4d8 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -33,7 +33,7 @@ if (keyFile) { options.keyFilename = keyFile; } -var datastore = gcloud.datastore.dataset(options); +var datastore = gcloud.datastore(options); // [END build_service] /* From fb7b707ab4c33d1d8234455b6ad77ab68fbbe6a3 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 23 May 2016 14:05:15 -0700 Subject: [PATCH 022/820] Switched from JSHint to Semistandard and upgraded dependencies. --- .../nodejs-datastore/samples/concepts.js | 314 +++++++++--------- handwritten/nodejs-datastore/samples/error.js | 11 +- .../nodejs-datastore/samples/package.json | 6 +- handwritten/nodejs-datastore/samples/tasks.js | 68 ++-- 4 files changed, 184 insertions(+), 215 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 6ca55280cc6..47304e88c70 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -14,6 +14,10 @@ 'use strict'; var asyncUtil = require('async'); +// By default, gcloud will authenticate using the service account file specified +// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the +// project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication var gcloud = require('gcloud'); module.exports = { @@ -26,27 +30,21 @@ module.exports = { // This mock is used in the documentation snippets. var datastore = { - delete: function() {}, - get: function() {}, - insert: function() {}, - key: function() {}, - update: function() {}, - upsert: function() {}, - runQuery: function() {}, - save: function() {} + delete: function () {}, + get: function () {}, + insert: function () {}, + key: function () {}, + update: function () {}, + upsert: function () {}, + runQuery: function () {}, + save: function () {} }; -var keyFile = process.env.DATASTORE_KEYFILE || - process.env.GOOGLE_APPLICATION_CREDENTIALS; - -function Entity(projectId) { +function Entity (projectId) { var options = { projectId: projectId }; - if (keyFile) { - options.keyFilename = keyFile; - } this.datastore = gcloud.datastore(options); // To create the keys, we have to use this instance of Datastore. @@ -58,7 +56,7 @@ function Entity(projectId) { this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent(); } -Entity.prototype.getIncompleteKey = function() { +Entity.prototype.getIncompleteKey = function () { // [START incomplete_key] var taskKey = datastore.key('Task'); // [END incomplete_key] @@ -66,7 +64,7 @@ Entity.prototype.getIncompleteKey = function() { return taskKey; }; -Entity.prototype.getNamedKey = function() { +Entity.prototype.getNamedKey = function () { // [START named_key] var taskKey = datastore.key([ 'Task', @@ -77,7 +75,7 @@ Entity.prototype.getNamedKey = function() { return taskKey; }; -Entity.prototype.getKeyWithParent = function() { +Entity.prototype.getKeyWithParent = function () { // [START key_with_parent] var taskKey = datastore.key([ 'TaskList', @@ -90,7 +88,7 @@ Entity.prototype.getKeyWithParent = function() { return taskKey; }; -Entity.prototype.getKeyWithMultiLevelParent = function() { +Entity.prototype.getKeyWithMultiLevelParent = function () { // [START key_with_multilevel_parent] var taskKey = datastore.key([ 'User', @@ -105,7 +103,7 @@ Entity.prototype.getKeyWithMultiLevelParent = function() { return taskKey; }; -Entity.prototype.getTask = function() { +Entity.prototype.getTask = function () { // [START basic_entity] var task = { type: 'Personal', @@ -118,35 +116,35 @@ Entity.prototype.getTask = function() { return task; }; -Entity.prototype.testIncompleteKey = function(callback) { +Entity.prototype.testIncompleteKey = function (callback) { this.datastore.save({ key: this.incompleteKey, data: {} }, callback); }; -Entity.prototype.testNamedKey = function(callback) { +Entity.prototype.testNamedKey = function (callback) { this.datastore.save({ key: this.namedKey, data: {} }, callback); }; -Entity.prototype.testKeyWithParent = function(callback) { +Entity.prototype.testKeyWithParent = function (callback) { this.datastore.save({ key: this.keyWithParent, data: {} }, callback); }; -Entity.prototype.testKeyWithMultiLevelParent = function(callback) { +Entity.prototype.testKeyWithMultiLevelParent = function (callback) { this.datastore.save({ key: this.keyWithMultiLevelParent, data: {} }, callback); }; -Entity.prototype.testEntityWithParent = function(callback) { +Entity.prototype.testEntityWithParent = function (callback) { var taskKey = this.keyWithParent; // [START entity_with_parent] @@ -164,7 +162,7 @@ Entity.prototype.testEntityWithParent = function(callback) { this.datastore.save(task, callback); }; -Entity.prototype.testProperties = function(callback) { +Entity.prototype.testProperties = function (callback) { // jshint camelcase:false // [START properties] var task = { @@ -183,7 +181,7 @@ Entity.prototype.testProperties = function(callback) { }, callback); }; -Entity.prototype.testArrayValue = function(callback) { +Entity.prototype.testArrayValue = function (callback) { // [START array_value] var task = { tags: [ @@ -203,14 +201,14 @@ Entity.prototype.testArrayValue = function(callback) { }, callback); }; -Entity.prototype.testBasicEntity = function(callback) { +Entity.prototype.testBasicEntity = function (callback) { this.datastore.save({ key: this.getIncompleteKey(), data: this.getTask() }, callback); }; -Entity.prototype.testUpsert = function(callback) { +Entity.prototype.testUpsert = function (callback) { var taskKey = this.getIncompleteKey(); var task = this.getTask(); @@ -218,7 +216,7 @@ Entity.prototype.testUpsert = function(callback) { datastore.upsert({ key: taskKey, data: task - }, function(err) { + }, function (err) { if (!err) { // Task inserted successfully. } @@ -231,7 +229,7 @@ Entity.prototype.testUpsert = function(callback) { }, callback); }; -Entity.prototype.testInsert = function(callback) { +Entity.prototype.testInsert = function (callback) { var taskKey = this.getIncompleteKey(); var task = this.getTask(); @@ -239,7 +237,7 @@ Entity.prototype.testInsert = function(callback) { datastore.insert({ key: taskKey, data: task - }, function(err) { + }, function (err) { if (!err) { // Task inserted successfully. } @@ -253,13 +251,13 @@ Entity.prototype.testInsert = function(callback) { }, callback); }; -Entity.prototype.testLookup = function(callback) { +Entity.prototype.testLookup = function (callback) { var self = this; var taskKey = this.getIncompleteKey(); // jshint unused:false // [START lookup] - datastore.get(taskKey, function(err, entity) { + datastore.get(taskKey, function (err, entity) { if (!err) { // Task found. @@ -277,7 +275,7 @@ Entity.prototype.testLookup = function(callback) { method: 'insert', key: taskKey, data: {} - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -287,7 +285,7 @@ Entity.prototype.testLookup = function(callback) { }); }; -Entity.prototype.testUpdate = function(callback) { +Entity.prototype.testUpdate = function (callback) { var self = this; var taskKey = this.getIncompleteKey(); var task = this.getTask(); @@ -296,7 +294,7 @@ Entity.prototype.testUpdate = function(callback) { datastore.update({ key: taskKey, data: task - }, function(err) { + }, function (err) { if (!err) { // Task updated successfully. } @@ -307,7 +305,7 @@ Entity.prototype.testUpdate = function(callback) { method: 'insert', key: taskKey, data: {} - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -320,12 +318,12 @@ Entity.prototype.testUpdate = function(callback) { }); }; -Entity.prototype.testDelete = function(callback) { +Entity.prototype.testDelete = function (callback) { var self = this; var taskKey = this.getIncompleteKey(); // [START delete] - datastore.delete(taskKey, function(err) { + datastore.delete(taskKey, function (err) { if (!err) { // Task deleted successfully. } @@ -336,7 +334,7 @@ Entity.prototype.testDelete = function(callback) { method: 'insert', key: taskKey, data: {} - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -346,7 +344,7 @@ Entity.prototype.testDelete = function(callback) { }); }; -Entity.prototype.testBatchUpsert = function(callback) { +Entity.prototype.testBatchUpsert = function (callback) { var taskKey1 = this.datastore.key(['Task', 1]); var taskKey2 = this.datastore.key(['Task', 2]); @@ -374,7 +372,7 @@ Entity.prototype.testBatchUpsert = function(callback) { key: taskKey2, data: task2 } - ], function(err) { + ], function (err) { if (!err) { // Tasks inserted successfully. } @@ -393,7 +391,7 @@ Entity.prototype.testBatchUpsert = function(callback) { ], callback); }; -Entity.prototype.testBatchLookup = function(callback) { +Entity.prototype.testBatchLookup = function (callback) { var taskKey1 = this.datastore.key(['Task', 1]); var taskKey2 = this.datastore.key(['Task', 2]); @@ -402,7 +400,7 @@ Entity.prototype.testBatchLookup = function(callback) { datastore.get([ taskKey1, taskKey2 - ], function(err, tasks) { + ], function (err, tasks) { if (!err) { // Tasks retrieved successfully. } @@ -415,7 +413,7 @@ Entity.prototype.testBatchLookup = function(callback) { ], callback); }; -Entity.prototype.testBatchDelete = function(callback) { +Entity.prototype.testBatchDelete = function (callback) { var taskKey1 = this.datastore.key(['Task', 1]); var taskKey2 = this.datastore.key(['Task', 2]); @@ -423,7 +421,7 @@ Entity.prototype.testBatchDelete = function(callback) { datastore.delete([ taskKey1, taskKey2 - ], function(err) { + ], function (err) { if (!err) { // Tasks deleted successfully. } @@ -436,18 +434,15 @@ Entity.prototype.testBatchDelete = function(callback) { ], callback); }; -function Index(projectId) { +function Index (projectId) { var options = { projectId: projectId }; - if (keyFile) { - options.keyFilename = keyFile; - } this.datastore = gcloud.datastore(options); } -Index.prototype.testUnindexedPropertyQuery = function(callback) { +Index.prototype.testUnindexedPropertyQuery = function (callback) { var datastore = this.datastore; // [START unindexed_property_query] @@ -458,7 +453,7 @@ Index.prototype.testUnindexedPropertyQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Index.prototype.testExplodingProperties = function(callback) { +Index.prototype.testExplodingProperties = function (callback) { var original = datastore.key; datastore.key = this.datastore.key; @@ -487,18 +482,15 @@ Index.prototype.testExplodingProperties = function(callback) { this.datastore.save(task, callback); }; -function Metadata(projectId) { +function Metadata (projectId) { var options = { projectId: projectId }; - if (keyFile) { - options.keyFilename = keyFile; - } this.datastore = gcloud.datastore(options); } -Metadata.prototype.testNamespaceRunQuery = function(callback) { +Metadata.prototype.testNamespaceRunQuery = function (callback) { var self = this; datastore.createQuery = this.datastore.createQuery; @@ -515,7 +507,7 @@ Metadata.prototype.testNamespaceRunQuery = function(callback) { }), data: {} } - ], function(err) { + ], function (err) { if (err) { callback(err); return; @@ -528,15 +520,16 @@ Metadata.prototype.testNamespaceRunQuery = function(callback) { .filter('__key__', '>=', datastore.key(['__namespace__', startNamespace])) .filter('__key__', '<', datastore.key(['__namespace__', endNamespace])); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. return; } - var namespaces = entities.map(function(entity) { + var namespaces = entities.map(function (entity) { return entity.key.path.pop(); }); + console.log('namespaces', namespaces); }); // [END namespace_run_query] @@ -544,7 +537,7 @@ Metadata.prototype.testNamespaceRunQuery = function(callback) { }); }; -Metadata.prototype.testKindRunQuery = function(callback) { +Metadata.prototype.testKindRunQuery = function (callback) { datastore.createQuery = this.datastore.createQuery; // jshint unused:false @@ -552,29 +545,30 @@ Metadata.prototype.testKindRunQuery = function(callback) { var query = datastore.createQuery('__kind__') .select('__key__'); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. return; } - var kinds = entities.map(function(entity) { + var kinds = entities.map(function (entity) { return entity.key.path.pop(); }); + console.log('kinds', kinds); }); // [END kind_run_query] this.datastore.runQuery(query, callback); }; -Metadata.prototype.testPropertyRunQuery = function(callback) { +Metadata.prototype.testPropertyRunQuery = function (callback) { datastore.createQuery = this.datastore.createQuery; // [START property_run_query] var query = datastore.createQuery('__property__') .select('__key__'); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. return; @@ -582,7 +576,7 @@ Metadata.prototype.testPropertyRunQuery = function(callback) { var propertiesByKind = {}; - entities.forEach(function(entity) { + entities.forEach(function (entity) { var kind = entity.key.path[1]; var propertyName = entity.key.path[3]; @@ -595,7 +589,7 @@ Metadata.prototype.testPropertyRunQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Metadata.prototype.testPropertyByKindRunQuery = function(callback) { +Metadata.prototype.testPropertyByKindRunQuery = function (callback) { var datastore = this.datastore; // jshint camelcase:false @@ -605,7 +599,7 @@ Metadata.prototype.testPropertyByKindRunQuery = function(callback) { var query = datastore.createQuery('__property__') .hasAncestor(ancestorKey); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. return; @@ -613,7 +607,7 @@ Metadata.prototype.testPropertyByKindRunQuery = function(callback) { var representationsByProperty = {}; - entities.forEach(function(entity) { + entities.forEach(function (entity) { var propertyName = entity.key.path.pop(); var propertyType = entity.data.property_representation; @@ -625,14 +619,11 @@ Metadata.prototype.testPropertyByKindRunQuery = function(callback) { this.datastore.runQuery(query, callback); }; -function Query(projectId) { +function Query (projectId) { var options = { projectId: projectId }; - if (keyFile) { - options.keyFilename = keyFile; - } this.datastore = gcloud.datastore(options); this.basicQuery = this.getBasicQuery(); @@ -640,7 +631,7 @@ function Query(projectId) { this.ancestorQuery = this.getAncestorQuery(); } -Query.prototype.getBasicQuery = function() { +Query.prototype.getBasicQuery = function () { var datastore = this.datastore; // [START basic_query] @@ -655,7 +646,7 @@ Query.prototype.getBasicQuery = function() { return query; }; -Query.prototype.getProjectionQuery = function() { +Query.prototype.getProjectionQuery = function () { var datastore = this.datastore; // [START projection_query] @@ -666,7 +657,7 @@ Query.prototype.getProjectionQuery = function() { return query; }; -Query.prototype.getAncestorQuery = function() { +Query.prototype.getAncestorQuery = function () { var datastore = this.datastore; // [START ancestor_query] @@ -679,12 +670,12 @@ Query.prototype.getAncestorQuery = function() { return query; }; -Query.prototype.testRunQuery = function(callback) { +Query.prototype.testRunQuery = function (callback) { var query = this.basicQuery; // jshint unused:false // [START run_query] - datastore.runQuery(query, function(err, tasks) { + datastore.runQuery(query, function (err, tasks) { if (!err) { // Task entities found. } @@ -694,7 +685,7 @@ Query.prototype.testRunQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testPropertyFilter = function(callback) { +Query.prototype.testPropertyFilter = function (callback) { var datastore = this.datastore; // [START property_filter] @@ -705,7 +696,7 @@ Query.prototype.testPropertyFilter = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testCompositeFilter = function(callback) { +Query.prototype.testCompositeFilter = function (callback) { var datastore = this.datastore; // [START composite_filter] @@ -717,7 +708,7 @@ Query.prototype.testCompositeFilter = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testKeyFilter = function(callback) { +Query.prototype.testKeyFilter = function (callback) { var datastore = this.datastore; // [START key_filter] @@ -728,7 +719,7 @@ Query.prototype.testKeyFilter = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testAscendingSort = function(callback) { +Query.prototype.testAscendingSort = function (callback) { var datastore = this.datastore; // [START ascending_sort] @@ -739,7 +730,7 @@ Query.prototype.testAscendingSort = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testDescendingSort = function(callback) { +Query.prototype.testDescendingSort = function (callback) { var datastore = this.datastore; // [START descending_sort] @@ -752,7 +743,7 @@ Query.prototype.testDescendingSort = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testMultiSort = function(callback) { +Query.prototype.testMultiSort = function (callback) { var datastore = this.datastore; // [START multi_sort] @@ -766,7 +757,7 @@ Query.prototype.testMultiSort = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testKindlessQuery = function(callback) { +Query.prototype.testKindlessQuery = function (callback) { var datastore = this.datastore; var lastSeenKey = this.datastore.key(['Task', Date.now()]); @@ -779,16 +770,16 @@ Query.prototype.testKindlessQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testRunQueryProjection = function(callback) { +Query.prototype.testRunQueryProjection = function (callback) { var self = this; var query = this.projectionQuery; // Overwrite the mock to actually run the query. - datastore.runQuery = function(query, queryCallback) { + datastore.runQuery = function (query, queryCallback) { // Restore the mock. - datastore.runQuery = function() {}; + datastore.runQuery = function () {}; - self.datastore.runQuery(query, function(err) { + self.datastore.runQuery(query, function (err) { if (err) { return callback(err); } @@ -808,13 +799,13 @@ Query.prototype.testRunQueryProjection = function(callback) { var priorities = []; var percentCompletes = []; - datastore.runQuery(query, function(err, tasks) { + datastore.runQuery(query, function (err, tasks) { if (err) { // An error occurred while running the query. return; } - tasks.forEach(function(task) { + tasks.forEach(function (task) { priorities.push(task.data.priority); percentCompletes.push(task.data.percent_complete); }); @@ -822,7 +813,7 @@ Query.prototype.testRunQueryProjection = function(callback) { // [END run_query_projection] }; -Query.prototype.testKeysOnlyQuery = function(callback) { +Query.prototype.testKeysOnlyQuery = function (callback) { var datastore = this.datastore; // [START keys_only_query] @@ -834,7 +825,7 @@ Query.prototype.testKeysOnlyQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testDistinctQuery = function(callback) { +Query.prototype.testDistinctQuery = function (callback) { var datastore = this.datastore; // [START distinct_query] @@ -847,7 +838,7 @@ Query.prototype.testDistinctQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testDistinctOnQuery = function(callback) { +Query.prototype.testDistinctOnQuery = function (callback) { var datastore = this.datastore; // [START distinct_on_query] @@ -860,7 +851,7 @@ Query.prototype.testDistinctOnQuery = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testArrayValueInequalityRange = function(callback) { +Query.prototype.testArrayValueInequalityRange = function (callback) { var datastore = this.datastore; // [START array_value_inequality_range] @@ -872,7 +863,7 @@ Query.prototype.testArrayValueInequalityRange = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testArrayValueEquality = function(callback) { +Query.prototype.testArrayValueEquality = function (callback) { var datastore = this.datastore; // [START array_value_equality] @@ -884,7 +875,7 @@ Query.prototype.testArrayValueEquality = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testInequalityRange = function(callback) { +Query.prototype.testInequalityRange = function (callback) { var datastore = this.datastore; // [START inequality_range] @@ -896,7 +887,7 @@ Query.prototype.testInequalityRange = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testInequalityInvalid = function(callback) { +Query.prototype.testInequalityInvalid = function (callback) { var datastore = this.datastore; // [START inequality_invalid] @@ -908,7 +899,7 @@ Query.prototype.testInequalityInvalid = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testEqualAndInequalityRange = function(callback) { +Query.prototype.testEqualAndInequalityRange = function (callback) { var datastore = this.datastore; // [START equal_and_inequality_range] @@ -922,7 +913,7 @@ Query.prototype.testEqualAndInequalityRange = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testInequalitySort = function(callback) { +Query.prototype.testInequalitySort = function (callback) { var datastore = this.datastore; // [START inequality_sort] @@ -935,7 +926,7 @@ Query.prototype.testInequalitySort = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testInequalitySortInvalidNotSame = function(callback) { +Query.prototype.testInequalitySortInvalidNotSame = function (callback) { var datastore = this.datastore; // [START inequality_sort_invalid_not_same] @@ -947,7 +938,7 @@ Query.prototype.testInequalitySortInvalidNotSame = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { +Query.prototype.testInequalitySortInvalidNotFirst = function (callback) { var datastore = this.datastore; // [START inequality_sort_invalid_not_first] @@ -960,7 +951,7 @@ Query.prototype.testInequalitySortInvalidNotFirst = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testLimit = function(callback) { +Query.prototype.testLimit = function (callback) { var datastore = this.datastore; // [START limit] @@ -971,7 +962,7 @@ Query.prototype.testLimit = function(callback) { this.datastore.runQuery(query, callback); }; -Query.prototype.testCursorPaging = function(callback) { +Query.prototype.testCursorPaging = function (callback) { var pageSize = 1; var pageCursor = ''; @@ -987,7 +978,7 @@ Query.prototype.testCursorPaging = function(callback) { .limit(pageSize) .start(pageCursor); - datastore.runQuery(query, function(err, results, nextQuery) { + datastore.runQuery(query, function (err, results, nextQuery) { if (err) { // An error occurred while running the query. return; @@ -1003,11 +994,12 @@ Query.prototype.testCursorPaging = function(callback) { } else { // No more results exist. } + console.log('nextPageCursor', nextPageCursor); }); // [END cursor_paging] delete datastore.createQuery; - this.datastore.runQuery(query, function(err, results, nextQuery) { + this.datastore.runQuery(query, function (err, results, nextQuery) { if (err) { callback(err); return; @@ -1021,21 +1013,21 @@ Query.prototype.testCursorPaging = function(callback) { }); }; -Query.prototype.testEventualConsistentQuery = function() { +Query.prototype.testEventualConsistentQuery = function () { // [START eventual_consistent_query] // Read consistency cannot be specified in gcloud-node. // [END eventual_consistent_query] }; // [START transactional_update] -function transferFunds(fromKey, toKey, amount, callback) { +function transferFunds (fromKey, toKey, amount, callback) { var error; - datastore.runInTransaction(function(transaction, done) { + datastore.runInTransaction(function (transaction, done) { transaction.get([ fromKey, toKey - ], function(err, accounts) { + ], function (err, accounts) { if (err) { // An error occurred while getting the values. error = err; @@ -1050,25 +1042,21 @@ function transferFunds(fromKey, toKey, amount, callback) { done(); }); - }, function(transactionError) { + }, function (transactionError) { if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(); + return callback(transactionError || error); } + // The transaction completed successfully. + callback(); }); } // [END transactional_update] -function Transaction(projectId) { +function Transaction (projectId) { var options = { projectId: projectId }; - if (keyFile) { - options.keyFilename = keyFile; - } this.datastore = gcloud.datastore(options); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); @@ -1078,8 +1066,8 @@ function Transaction(projectId) { this.amountToTransfer = 10; } -Transaction.prototype.restoreBankAccountBalances = function(config, callback) { - var saveArray = config.keys.map(function(key) { +Transaction.prototype.restoreBankAccountBalances = function (config, callback) { + var saveArray = config.keys.map(function (key) { return { key: key, data: { @@ -1091,7 +1079,7 @@ Transaction.prototype.restoreBankAccountBalances = function(config, callback) { this.datastore.save(saveArray, callback); }; -Transaction.prototype.testTransactionalUpdate = function(callback) { +Transaction.prototype.testTransactionalUpdate = function (callback) { var self = this; var fromKey = this.fromKey; @@ -1102,7 +1090,7 @@ Transaction.prototype.testTransactionalUpdate = function(callback) { this.restoreBankAccountBalances({ keys: [fromKey, toKey], balance: originalBalance - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -1112,7 +1100,7 @@ Transaction.prototype.testTransactionalUpdate = function(callback) { var datastoreMock = datastore; datastore = self.datastore; - transferFunds(fromKey, toKey, amountToTransfer, function(err) { + transferFunds(fromKey, toKey, amountToTransfer, function (err) { // Restore `datastore` to the mock API. datastore = datastoreMock; @@ -1124,7 +1112,7 @@ Transaction.prototype.testTransactionalUpdate = function(callback) { self.datastore.get([ fromKey, toKey - ], function(err, accounts) { + ], function (err, accounts) { if (err) { callback(err); return; @@ -1144,13 +1132,13 @@ Transaction.prototype.testTransactionalUpdate = function(callback) { }); }; -Transaction.prototype.testTransactionalRetry = function(callback) { +Transaction.prototype.testTransactionalRetry = function (callback) { // Overwrite so the real Datastore instance is used in `transferFunds`. var datastoreMock = datastore; datastore = this.datastore; var originalCallback = callback; - callback = function() { + callback = function () { // Restore `datastore` to the mock API. datastore = datastoreMock; originalCallback.apply(null, arguments); @@ -1162,7 +1150,7 @@ Transaction.prototype.testTransactionalRetry = function(callback) { this.restoreBankAccountBalances({ keys: [fromKey, toKey], balance: this.originalBalance - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -1171,7 +1159,7 @@ Transaction.prototype.testTransactionalRetry = function(callback) { // [START transactional_retry] var async = require('async'); - function attemptTransfer(callback) { + function attemptTransfer (callback) { transferFunds(fromKey, toKey, 10, callback); } @@ -1180,7 +1168,7 @@ Transaction.prototype.testTransactionalRetry = function(callback) { }); }; -Transaction.prototype.testTransactionalGetOrCreate = function(callback) { +Transaction.prototype.testTransactionalGetOrCreate = function (callback) { var taskKey = this.datastore.key(['Task', Date.now()]); // Overwrite so the real Datastore instance is used in `transferFunds`. @@ -1188,14 +1176,14 @@ Transaction.prototype.testTransactionalGetOrCreate = function(callback) { datastore = this.datastore; var originalCallback = callback; - callback = function() { + callback = function () { // Restore `datastore` to the mock API. datastore = datastoreMock; originalCallback.apply(null, arguments); }; // [START transactional_get_or_create] - function getOrCreate(taskKey, taskData, callback) { + function getOrCreate (taskKey, taskData, callback) { var error; var taskEntity = { @@ -1203,8 +1191,8 @@ Transaction.prototype.testTransactionalGetOrCreate = function(callback) { data: taskData }; - datastore.runInTransaction(function(transaction, done) { - transaction.get(taskKey, function(err, task) { + datastore.runInTransaction(function (transaction, done) { + transaction.get(taskKey, function (err, task) { if (err) { // An error occurred while getting the values. error = err; @@ -1221,13 +1209,12 @@ Transaction.prototype.testTransactionalGetOrCreate = function(callback) { done(); } }); - }, function(transactionError) { + }, function (transactionError) { if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(null, taskEntity); + return callback(transactionError || error); } + // The transaction completed successfully. + callback(null, taskEntity); }); } // [END transactional_get_or_create] @@ -1239,58 +1226,56 @@ Transaction.prototype.testTransactionalGetOrCreate = function(callback) { testWithGetBehavior ], callback); - function testWithCreateBehavior(callback) { - getOrCreate(taskKey, {}, function(err, task) { + function testWithCreateBehavior (callback) { + getOrCreate(taskKey, {}, function (err, task) { if (err) { callback(err); return; } if (!task) { - callback(new Error('Entity was not created successfully.')); - } else { - callback(); + return callback(new Error('Entity was not created successfully.')); } + callback(); }); } - function testWithGetBehavior(callback) { - getOrCreate(taskKey, {}, function(err, task) { + function testWithGetBehavior (callback) { + getOrCreate(taskKey, {}, function (err, task) { if (err) { callback(err); return; } if (!task) { - callback(new Error('Entity was not retrieved successfully.')); - } else { - callback(); + return callback(new Error('Entity was not retrieved successfully.')); } + callback(); }); } }; -Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { +Transaction.prototype.testSingleEntityGroupReadOnly = function (callback) { // Overwrite so the real Datastore instance is used in `transferFunds`. var datastoreMock = datastore; datastore = this.datastore; var originalCallback = callback; - callback = function() { + callback = function () { // Restore `datastore` to the mock API. datastore = datastoreMock; originalCallback.apply(null, arguments); }; // [START transactional_single_entity_group_read_only] - function getTaskListEntities(callback) { + function getTaskListEntities (callback) { var error; var taskListEntities; - datastore.runInTransaction(function(transaction, done) { + datastore.runInTransaction(function (transaction, done) { var taskListKey = datastore.key(['TaskList', 'default']); - datastore.get(taskListKey, function(err) { + datastore.get(taskListKey, function (err) { if (err) { error = err; transaction.rollback(done); @@ -1300,7 +1285,7 @@ Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { var query = datastore.createQuery('Task') .hasAncestor(taskListKey); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. error = err; @@ -1312,28 +1297,25 @@ Transaction.prototype.testSingleEntityGroupReadOnly = function(callback) { done(); }); }); - - }, function(transactionError) { + }, function (transactionError) { if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(null, taskListEntities); + return callback(transactionError || error); } + // The transaction completed successfully. + callback(null, taskListEntities); }); } // [END transactional_single_entity_group_read_only] - getTaskListEntities(function(err, entities) { + getTaskListEntities(function (err, entities) { if (err) { callback(err); return; } if (!entities) { - callback(new Error('Entities were not retrieved successfully.')); - } else { - callback(); + return callback(new Error('Entities were not retrieved successfully.')); } + callback(); }); }; diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index 844cb24ec1d..94ea22b319c 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -13,14 +13,15 @@ 'use strict'; +// By default, gcloud will authenticate using the service account file specified +// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the +// project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication var gcloud = require('gcloud'); - -var dataset = gcloud.datastore({ - projectId: process.env.GCLOUD_PROJECT -}); +var dataset = gcloud.datastore(); // [START error] -function runQuery(cb) { +function runQuery (cb) { var query = dataset.createQuery(['Company']).start('badrequest'); dataset.runQuery(query, function (err, entities) { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 3cd49d3874d..f6285a3520e 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -8,12 +8,8 @@ "engines": { "node": ">=0.10.x" }, - "scripts": { - "error": "node error.js", - "tasks": "node tasks.js" - }, "dependencies": { "async": "^1.5.2", - "gcloud": "^0.30.3" + "gcloud": "^0.34.0" } } diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index faf3ea9e4d8..0406e48541e 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -16,24 +16,17 @@ var input = process.argv.splice(2); var command = input.shift(); -var projectId = process.env.DATASTORE_PROJECT_ID || process.env.GCLOUD_PROJECT; -if (!projectId) { +if (!process.env.GCLOUD_PROJECT) { throw new Error('GCLOUD_PROJECT environment variable required.'); } -var keyFile = process.env.DATASTORE_KEYFILE || - process.env.GOOGLE_APPLICATION_CREDENTIALS; // [START build_service] +// By default, gcloud will authenticate using the service account file specified +// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the +// project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication var gcloud = require('gcloud'); -var options = { - projectId: projectId -}; - -if (keyFile) { - options.keyFilename = keyFile; -} - -var datastore = gcloud.datastore(options); +var datastore = gcloud.datastore(); // [END build_service] /* @@ -64,7 +57,7 @@ gcloud auth login 6. At a command prompt, run the following, where `` is the ID of your Google Cloud Platform project. ```sh -export DATASTORE_PROJECT_ID= +export GCLOUD_PROJECT= ``` 7. Run the application! @@ -74,7 +67,7 @@ npm run tasks */ // [START add_entity] -function addTask(description, callback) { +function addTask (description, callback) { var taskKey = datastore.key('Task'); datastore.save({ @@ -84,7 +77,7 @@ function addTask(description, callback) { description: description, done: false } - }, function(err) { + }, function (err) { if (err) { callback(err); return; @@ -96,16 +89,16 @@ function addTask(description, callback) { // [END add_entity] // [START update_entity] -function markDone(taskId, callback) { +function markDone (taskId, callback) { var error; - datastore.runInTransaction(function(transaction, done) { + datastore.runInTransaction(function (transaction, done) { var taskKey = datastore.key([ 'Task', taskId ]); - transaction.get(taskKey, function(err, task) { + transaction.get(taskKey, function (err, task) { if (err) { // An error occurred while getting the values. error = err; @@ -120,19 +113,18 @@ function markDone(taskId, callback) { // Commit the transaction. done(); }); - }, function(transactionError) { + }, function (transactionError) { if (transactionError || error) { - callback(transactionError || error); - } else { - // The transaction completed successfully. - callback(); + return callback(transactionError || error); } + // The transaction completed successfully. + callback(); }); } // [END update_entity] // [START retrieve_entities] -function listTasks(callback) { +function listTasks (callback) { var query = datastore.createQuery('Task') .order('created'); @@ -141,7 +133,7 @@ function listTasks(callback) { // [END retrieve_entities] // [START delete_entity] -function deleteTask(taskId, callback) { +function deleteTask (taskId, callback) { var taskKey = datastore.key([ 'Task', taskId @@ -152,9 +144,9 @@ function deleteTask(taskId, callback) { // [END delete_entity] // [START format_results] -function formatTasks(tasks) { +function formatTasks (tasks) { return tasks - .map(function(task) { + .map(function (task) { var taskKey = task.key.path.pop(); var status; @@ -171,25 +163,26 @@ function formatTasks(tasks) { // [END format_results] if (module === require.main) { + var taskId; + switch (command) { case 'new': { - addTask(input, function(err, taskKey) { + addTask(input, function (err, taskKey) { if (err) { throw err; } - var taskId = taskKey.path.pop(); + taskId = taskKey.path.pop(); console.log('Task %d created successfully.', taskId); }); break; } - case 'done': { - var taskId = parseInt(input, 10); + taskId = parseInt(input, 10); - markDone(taskId, function(err) { + markDone(taskId, function (err) { if (err) { throw err; } @@ -199,9 +192,8 @@ if (module === require.main) { break; } - case 'list': { - listTasks(function(err, tasks) { + listTasks(function (err, tasks) { if (err) { throw err; } @@ -211,11 +203,10 @@ if (module === require.main) { break; } - case 'delete': { - var taskId = parseInt(input, 10); + taskId = parseInt(input, 10); - deleteTask(taskId, function(err) { + deleteTask(taskId, function (err) { if (err) { throw err; } @@ -225,7 +216,6 @@ if (module === require.main) { break; } - default: { // Only print usage if this file is being executed directly if (module === require.main) { From f826b0fb3341860bf184ff6eb56e6086b4d2b223 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 24 May 2016 15:33:00 -0700 Subject: [PATCH 023/820] Re-organized readme files. --- .../nodejs-datastore/samples/README.md | 74 +++++++++++++------ 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index fa9124b7022..e0e5f91cff7 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -1,33 +1,65 @@ -## Datastore Samples +Google Cloud Platform logo -These samples require two environment variables to be set: +# Google Cloud Datastore Node.js Samples -- `GOOGLE_APPLICATION_CREDENTIALS` - Path to a service account file. You can -download one from your Google project's "permissions" page. -- `GCLOUD_PROJECT` - Id of your Google project. +[Cloud Datastore][datastore_docs] is a NoSQL document database built for +automatic scaling, high performance, and ease of application development. -## Run a sample +[datastore_docs]: https://cloud.google.com/datastore/docs/ -Install dependencies: +## Table of Contents -``` -$ npm install -``` +* [Setup](#setup) +* [Samples](#samples) + * [Getting started with Google Cloud Datastore API](#getting-started-with-google-cloud-datastore-api) + * [Concepts](#concepts) + * [Errors and Error Handling](#errors-and-error-handling) -To print available commands: +## Setup -``` -$ npm run -``` +1. Read [Prerequisites][prereq] and [How to run a sample][run] first. +1. Install dependencies: -Execute a sample: + npm install -``` -$ npm run -- [arg_1] [arg_2] [arg_n] -``` +[prereq]: ../README.md#prerequisities +[run]: ../README.md#how-to-run-a-sample + +## Samples + +### Getting started with Google Cloud Datastore API + +View the [documentation][tasks_1] or the [source code][tasks_2]. + +__Run the sample:__ + +Usage: `node tasks [args]...` + +Print usage: + + node tasks Example: -``` -$ npm run tasks -- list -``` \ No newline at end of file + node tasks list + +[tasks_1]: tasks.js +[tasks_2]: https://cloud.google.com/datastore/docs/datastore-api-tutorial + +### Concepts + +View the [documentation][concepts_1] or the [source code][concepts_2]. + +[concepts_1]: concepts.js +[concepts_2]: https://cloud.google.com/datastore/docs/concepts/entities + +### Errors and Error Handling + +View the [documentation][error_1] or the [source code][error_2]. + +__Run the sample:__ + + node error + +[error_1]: error.js +[error_2]: https://cloud.google.com/datastore/docs/concepts/errors From 634a71a8c67879a4509c070a8994823fc797eb9d Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 25 May 2016 11:22:40 -0700 Subject: [PATCH 024/820] Fixed mismatched links. --- handwritten/nodejs-datastore/samples/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index e0e5f91cff7..5c34edc7324 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -29,7 +29,7 @@ automatic scaling, high performance, and ease of application development. ### Getting started with Google Cloud Datastore API -View the [documentation][tasks_1] or the [source code][tasks_2]. +View the [documentation][tasks_docs] or the [source code][tasks_code]. __Run the sample:__ @@ -43,23 +43,23 @@ Example: node tasks list -[tasks_1]: tasks.js -[tasks_2]: https://cloud.google.com/datastore/docs/datastore-api-tutorial +[tasks_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial +[tasks_code]: tasks.js ### Concepts -View the [documentation][concepts_1] or the [source code][concepts_2]. +View the [documentation][concepts_docs] or the [source code][concepts_code]. -[concepts_1]: concepts.js -[concepts_2]: https://cloud.google.com/datastore/docs/concepts/entities +[concepts_docs]: https://cloud.google.com/datastore/docs/concepts/entities +[concepts_code]: concepts.js ### Errors and Error Handling -View the [documentation][error_1] or the [source code][error_2]. +View the [documentation][error_docs] or the [source code][error_code]. __Run the sample:__ node error -[error_1]: error.js -[error_2]: https://cloud.google.com/datastore/docs/concepts/errors +[error_docs]: https://cloud.google.com/datastore/docs/concepts/errors +[error_code]: error.js From b440a0522d754040f932be9e8a7c128724d184af Mon Sep 17 00:00:00 2001 From: Walter Poupore Date: Tue, 12 Jul 2016 10:48:05 -0700 Subject: [PATCH 025/820] Shows how to exclude property from index (for docs) (#147) * Exclude property from index (doc) * Excludes the description property --- handwritten/nodejs-datastore/samples/tasks.js | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 0406e48541e..c8334abbe43 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -72,11 +72,21 @@ function addTask (description, callback) { datastore.save({ key: taskKey, - data: { - created: new Date().toJSON(), - description: description, - done: false - } + data: [ + { + name: 'created', + value: new Date().toJSON() + }, + { + name: 'description', + value: description, + excludeFromIndexes: true + }, + { + name: 'done', + value: false + } + ] }, function (err) { if (err) { callback(err); From e5333629d3d5adf8cdb140e92136108564d0842d Mon Sep 17 00:00:00 2001 From: Walter Poupore Date: Wed, 13 Jul 2016 16:06:45 -0700 Subject: [PATCH 026/820] Uses 'properties' region for the excluded property snippet (#149) * Uses properties region for excluded property * Uses same capitilzation as orignal --- .../nodejs-datastore/samples/concepts.js | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 47304e88c70..790f01fd667 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -165,14 +165,33 @@ Entity.prototype.testEntityWithParent = function (callback) { Entity.prototype.testProperties = function (callback) { // jshint camelcase:false // [START properties] - var task = { - type: 'Personal', - created: new Date(), - done: false, - priority: 4, - percent_complete: 10.0, - description: 'Learn Cloud Datastore' - }; + var task = [ + { + name: 'type', + value: 'Personal' + }, + { + name: 'created', + value: new Date() + }, + { + name: 'done', + value: false + }, + { + name: 'priority', + value: 4 + }, + { + name: 'percent_complete', + value: 10.0 + }, + { + name: 'description', + value: 'Learn Cloud Datastore', + excludeFromIndexes: true + } + ]; // [END properties] this.datastore.save({ From 29ed0e64513338812d700ed8976f2e446a606100 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 15 Jul 2016 17:00:44 -0700 Subject: [PATCH 027/820] Add Cloud Functions Slack (Slash Command) sample. (#151) * Add Cloud Functions Slack Slash Command sample. * Couple of fixes. * Update Readme. * Small fixes. * Add tests for Slack sample. * Make lint happy. * Make lint happy. --- .../nodejs-datastore/samples/concepts.js | 54 +++++++++---------- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 790f01fd667..f7611d9c424 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -165,33 +165,33 @@ Entity.prototype.testEntityWithParent = function (callback) { Entity.prototype.testProperties = function (callback) { // jshint camelcase:false // [START properties] - var task = [ - { - name: 'type', - value: 'Personal' - }, - { - name: 'created', - value: new Date() - }, - { - name: 'done', - value: false - }, - { - name: 'priority', - value: 4 - }, - { - name: 'percent_complete', - value: 10.0 - }, - { - name: 'description', - value: 'Learn Cloud Datastore', - excludeFromIndexes: true - } - ]; + var task = [ + { + name: 'type', + value: 'Personal' + }, + { + name: 'created', + value: new Date() + }, + { + name: 'done', + value: false + }, + { + name: 'priority', + value: 4 + }, + { + name: 'percent_complete', + value: 10.0 + }, + { + name: 'description', + value: 'Learn Cloud Datastore', + excludeFromIndexes: true + } + ]; // [END properties] this.datastore.save({ diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index c8334abbe43..1124e7f2b33 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -72,7 +72,7 @@ function addTask (description, callback) { datastore.save({ key: taskKey, - data: [ + data: [ { name: 'created', value: new Date().toJSON() From 4308bd38482994641816536de79c51bf1575399f Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 3 Aug 2016 15:51:39 -0700 Subject: [PATCH 028/820] Refactored tests (#159) * Refactor tests. * Tweak build. * Tweak build. * More tests. * Tweak build. * Tweak build. * Fix build. * Fix build. * Speed up build. * Fix build. * Remove extra dep. * Investigate why 0.12 fails. * Scripts. * More tests. * Upgrades * Upgrades * Update readme --- .../nodejs-datastore/samples/package.json | 9 +- .../samples/system-test/concepts.test.js | 282 ++++++++++++++++++ .../samples/system-test/error.test.js | 26 ++ .../samples/system-test/index.yaml | 37 +++ .../samples/system-test/tasks.test.js | 72 +++++ .../samples/system-test/util.js | 30 ++ .../samples/test/concepts.test.js | 18 ++ .../samples/test/error.test.js | 18 ++ .../samples/test/tasks.test.js | 18 ++ 9 files changed, 507 insertions(+), 3 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/system-test/concepts.test.js create mode 100644 handwritten/nodejs-datastore/samples/system-test/error.test.js create mode 100644 handwritten/nodejs-datastore/samples/system-test/index.yaml create mode 100644 handwritten/nodejs-datastore/samples/system-test/tasks.test.js create mode 100644 handwritten/nodejs-datastore/samples/system-test/util.js create mode 100644 handwritten/nodejs-datastore/samples/test/concepts.test.js create mode 100644 handwritten/nodejs-datastore/samples/test/error.test.js create mode 100644 handwritten/nodejs-datastore/samples/test/tasks.test.js diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index f6285a3520e..934673d364c 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -1,15 +1,18 @@ { "name": "nodejs-docs-samples-datastore", - "description": "Node.js samples for Google Cloud Datastore.", "version": "0.0.1", "private": true, "license": "Apache Version 2.0", "author": "Google Inc.", - "engines": { - "node": ">=0.10.x" + "scripts": { + "test": "mocha -R spec -t 120000 --require intelli-espower-loader ../test/_setup.js test/*.test.js", + "system-test": "mocha -R spec -t 120000 --require intelli-espower-loader ../system-test/_setup.js system-test/*.test.js" }, "dependencies": { "async": "^1.5.2", "gcloud": "^0.34.0" + }, + "devDependencies": { + "mocha": "^2.5.3" } } diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js new file mode 100644 index 00000000000..d5764df7b80 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -0,0 +1,282 @@ +// Copyright 2015, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var testUtil = require('./util'); +var concepts = require('../concepts'); + +var transaction; +var metadata; +var index; +var query; +var entity; + +var Transaction = concepts.Transaction; +var Metadata = concepts.Metadata; +var Index = concepts.Index; +var Entity = concepts.Entity; +var Query = concepts.Query; + +describe('datastore:concepts', function () { + before(function () { + var projectId = process.env.GCLOUD_PROJECT || 'nodejs-docs-samples'; + transaction = new Transaction(projectId); + metadata = new Metadata(projectId); + index = new Index(projectId); + entity = new Entity(projectId); + query = new Query(projectId); + }); + + after(function (done) { + var datastore = transaction.datastore; + var query = datastore.createQuery('Task'); + + testUtil.deleteEntities(datastore, query, done); + }); + + // Transactions + + it('performs a transactional update', function (done) { + transaction.testTransactionalUpdate(done); + }); + + it('performs retries if necessary', function (done) { + transaction.testTransactionalRetry(done); + }); + + it('performs a get or create', function (done) { + transaction.testTransactionalGetOrCreate(done); + }); + + it('gets a snapshot of task list entities', function (done) { + transaction.testSingleEntityGroupReadOnly(done); + }); + + // Metadata + + it('performs a namespace query', function (done) { + metadata.testNamespaceRunQuery(done); + }); + + it('performs a kind query', function (done) { + metadata.testKindRunQuery(done); + }); + + it('performs a property query', function (done) { + metadata.testPropertyRunQuery(done); + }); + + it('performs a property by kind query', function (done) { + metadata.testPropertyByKindRunQuery(done); + }); + + // Indexes + + it( + 'performs a query with a filter on an unindexed property', + function (done) { + index.testUnindexedPropertyQuery(done); + } + ); + + it('inserts arrays of data', function (done) { + index.testExplodingProperties(done); + }); + + // Queries + + it('performs a basic query', function (done) { + query.testRunQuery(done); + }); + + it('performs a query with a property filter', function (done) { + query.testPropertyFilter(done); + }); + + it('performs a query with a composite filter', function (done) { + query.testCompositeFilter(done); + }); + + it('performs a query with a key filter', function (done) { + query.testKeyFilter(done); + }); + + it('performs a query with ascending sort', function (done) { + query.testAscendingSort(done); + }); + + it('performs a query with descending sort', function (done) { + query.testDescendingSort(done); + }); + + it('performs a query with multi sort', function (done) { + query.testMultiSort(done); + }); + + it('performs a kindless query', function (done) { + query.testKindlessQuery(done); + }); + + it('performs a projection query', function (done) { + entity.testProperties(function (err, tasks) { + console.log(err, tasks); + assert(!err); + setTimeout(function () { + query.testRunQueryProjection(done); + }, 1000); + }); + }); + + it('performs a keys only query', function (done) { + query.testKeysOnlyQuery(done); + }); + + it('performs a distinct query', function (done) { + query.testDistinctQuery(done); + }); + + it('performs a distinct on query', function (done) { + query.testDistinctOnQuery(done); + }); + + it('performs an array value inequality query', function (done) { + query.testArrayValueInequalityRange(done); + }); + + it('performs an array value equality query', function (done) { + query.testArrayValueEquality(done); + }); + + it('performs an inequality range query', function (done) { + query.testInequalityRange(done); + }); + + it('returns an error from an invalid query', function (done) { + query.testInequalityInvalid(function (err) { + assert(err); + done(); + }); + }); + + it('performs an equal and inequality range query', function (done) { + query.testEqualAndInequalityRange(done); + }); + + it('performs an equality sort query', function (done) { + query.testInequalitySort(done); + }); + + it( + 'returns an error when not sorted on filtered property', + function (done) { + query.testInequalitySortInvalidNotSame(function (err) { + assert(err); + done(); + }); + } + ); + + it( + 'returns an error when not sorted on first filter prop', + function (done) { + query.testInequalitySortInvalidNotFirst(function (err) { + assert(err); + done(); + }); + } + ); + + it('performs a query with a limit', function (done) { + query.testLimit(done); + }); + + it.skip('allows manual pagination through results', function (done) { + entity.testBatchUpsert(function (err) { + assert(!err); + setTimeout(function () { + query.testCursorPaging(done); + }, 1000); + }); + }); + + it.skip('performs an ancestor query', function (done) { + query.testEventualConsistentQuery(done); + }); + + // Entities + + it('saves with an incomplete key', function (done) { + entity.testIncompleteKey(done); + }); + + it('saves with a named key', function (done) { + entity.testNamedKey(done); + }); + + it('saves a key with a parent', function (done) { + entity.testKeyWithParent(done); + }); + + it('saves a key with multiple parents', function (done) { + entity.testKeyWithMultiLevelParent(done); + }); + + it('saves an entity with a parent', function (done) { + entity.testEntityWithParent(done); + }); + + it('saves an entity with properties', function (done) { + entity.testProperties(done); + }); + + it('saves an entity with arrays', function (done) { + entity.testArrayValue(done); + }); + + it('saves a basic entity', function (done) { + entity.testBasicEntity(done); + }); + + it('saves with an upsert', function (done) { + entity.testUpsert(done); + }); + + it('saves with an insert', function (done) { + entity.testInsert(done); + }); + + it('performs a lookup', function (done) { + entity.testLookup(done); + }); + + it('saves with an update', function (done) { + entity.testUpdate(done); + }); + + it('deletes an entity', function (done) { + entity.testDelete(done); + }); + + it('performs a batch upsert', function (done) { + entity.testBatchUpsert(done); + }); + + it('performs a batch lookup', function (done) { + entity.testBatchLookup(done); + }); + + it('performs a batch delete', function (done) { + entity.testBatchDelete(done); + }); +}); diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js new file mode 100644 index 00000000000..ef304b60864 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js @@ -0,0 +1,26 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var error = require('../error'); + +describe('datastore:error', function () { + it('should have an error', function (done) { + error.runQuery(function (err) { + assert(err); + assert.equal(err.code, 400); + done(); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/samples/system-test/index.yaml b/handwritten/nodejs-datastore/samples/system-test/index.yaml new file mode 100644 index 00000000000..e4c911fa5ef --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/index.yaml @@ -0,0 +1,37 @@ +indexes: +- kind: Task + properties: + - name: done + - name: priority + direction: desc +- kind: Task + properties: + - name: priority + - name: percent_complete +- kind: Task + properties: + - name: type + - name: priority +- kind: Task + properties: + - name: priority + - name: created +- kind: Task + properties: + - name: done + - name: created +- kind: Task + properties: + - name: type + - name: priority + direction: desc +- kind: Task + properties: + - name: type + - name: created +- kind: Task + properties: + - name: priority + direction: desc + - name: created + \ No newline at end of file diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js new file mode 100644 index 00000000000..33d660749b7 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -0,0 +1,72 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var async = require('async'); +var tasks = require('../tasks'); +var taskIds = []; + +describe('datastore:tasks', function () { + after(function (done) { + async.parallel(taskIds.map(function (taskId) { + return function (cb) { + tasks.deleteEntity(taskId, cb); + }; + }), done); + }); + + it('should add a task', function (done) { + getTaskId(done); + }); + + it('should mark a task as done', function (done) { + getTaskId(function (err, taskId) { + assert(!err); + tasks.updateEntity(taskId, done); + }); + }); + + it('should list tasks', function (done) { + tasks.retrieveEntities(done); + }); + + it('should delete a task', function (done) { + getTaskId(function (err, taskId) { + assert(!err); + tasks.deleteEntity(taskId, done); + }); + }); + + it('should format tasks', function (done) { + tasks.retrieveEntities(function (err, _tasks) { + assert(!err); + assert.doesNotThrow(function () { + tasks.formatTasks(_tasks); + }); + done(); + }); + }); + + function getTaskId (callback) { + tasks.addEntity('description', function (err, taskKey) { + if (err) { + return callback(err); + } + + var taskId = taskKey.path.pop(); + taskIds.push(taskId); + callback(null, taskId); + }); + } +}); diff --git a/handwritten/nodejs-datastore/samples/system-test/util.js b/handwritten/nodejs-datastore/samples/system-test/util.js new file mode 100644 index 00000000000..1c47393b60a --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/util.js @@ -0,0 +1,30 @@ +// Copyright 2015, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +module.exports = { + deleteEntities: function (datastore, query, callback) { + datastore.runQuery(query, function (err, entities) { + if (err) { + return callback(err); + } + + var keys = entities.map(function (entity) { + return entity.key; + }); + + datastore.delete(keys, callback); + }); + } +}; diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js new file mode 100644 index 00000000000..8deb451a29a --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -0,0 +1,18 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +describe('datastore:concepts', function () { + it('should be tested'); +}); diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js new file mode 100644 index 00000000000..6396d45d5f6 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -0,0 +1,18 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +describe('datastore:error', function () { + it('should be tested'); +}); diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js new file mode 100644 index 00000000000..2353d821f9f --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -0,0 +1,18 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +describe('datastore:tasks', function () { + it('should be tested'); +}); From 2eb09a0d33143777bc4bc97ccc8b9148afc1b967 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 3 Aug 2016 20:11:30 -0400 Subject: [PATCH 029/820] Allow individually publishable API client libraries. --- handwritten/nodejs-datastore/package.json | 81 + handwritten/nodejs-datastore/src/entity.js | 679 +++++++++ handwritten/nodejs-datastore/src/index.js | 557 +++++++ handwritten/nodejs-datastore/src/query.js | 343 +++++ handwritten/nodejs-datastore/src/request.js | 958 ++++++++++++ .../nodejs-datastore/src/transaction.js | 520 +++++++ .../nodejs-datastore/system-test/datastore.js | 814 ++++++++++ handwritten/nodejs-datastore/test/entity.js | 866 +++++++++++ handwritten/nodejs-datastore/test/index.js | 336 +++++ handwritten/nodejs-datastore/test/query.js | 308 ++++ handwritten/nodejs-datastore/test/request.js | 1312 +++++++++++++++++ .../nodejs-datastore/test/transaction.js | 479 ++++++ 12 files changed, 7253 insertions(+) create mode 100644 handwritten/nodejs-datastore/package.json create mode 100644 handwritten/nodejs-datastore/src/entity.js create mode 100644 handwritten/nodejs-datastore/src/index.js create mode 100644 handwritten/nodejs-datastore/src/query.js create mode 100644 handwritten/nodejs-datastore/src/request.js create mode 100644 handwritten/nodejs-datastore/src/transaction.js create mode 100644 handwritten/nodejs-datastore/system-test/datastore.js create mode 100644 handwritten/nodejs-datastore/test/entity.js create mode 100644 handwritten/nodejs-datastore/test/index.js create mode 100644 handwritten/nodejs-datastore/test/query.js create mode 100644 handwritten/nodejs-datastore/test/request.js create mode 100644 handwritten/nodejs-datastore/test/transaction.js diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json new file mode 100644 index 00000000000..2246f721ffa --- /dev/null +++ b/handwritten/nodejs-datastore/package.json @@ -0,0 +1,81 @@ +{ + "name": "@google-cloud/datastore", + "version": "0.0.0", + "author": "Google Inc.", + "description": "Google Cloud Datastore Client Library for Node.js", + "contributors": [ + { + "name": "Burcu Dogan", + "email": "jbd@google.com" + }, + { + "name": "Johan Euphrosine", + "email": "proppy@google.com" + }, + { + "name": "Patrick Costello", + "email": "pcostell@google.com" + }, + { + "name": "Ryan Seys", + "email": "ryan@ryanseys.com" + }, + { + "name": "Silvano Luciani", + "email": "silvano@google.com" + }, + { + "name": "Stephen Sawchuk", + "email": "sawchuk@gmail.com" + } + ], + "main": "./src/index.js", + "files": [ + "./src/*", + "AUTHORS", + "CONTRIBUTORS", + "COPYING" + ], + "repository": "googlecloudplatform/gcloud-node", + "keywords": [ + "google apis client", + "google api client", + "google apis", + "google api", + "google", + "google cloud platform", + "google cloud", + "cloud", + "google datastore", + "datastore" + ], + "dependencies": { + "arrify": "^1.0.0", + "concat-stream": "^1.5.0", + "create-error-class": "^2.0.1", + "extend": "^3.0.0", + "@google-cloud/common": "^0.1.0", + "is": "^3.0.1", + "lodash.flatten": "^4.2.0", + "modelo": "^4.2.0", + "prop-assign": "^1.0.0", + "propprop": "^0.3.0", + "split-array-stream": "^1.0.0" + }, + "devDependencies": { + "async": "^1.4.2", + "deep-strict-equal": "^0.1.0", + "mocha": "^2.1.0", + "proxyquire": "^1.7.10", + "through2": "^2.0.0" + }, + "scripts": { + "publish": "../../scripts/publish", + "test": "mocha test/*.js", + "system-test": "mocha system-test/*.js --no-timeouts --bail" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.12.0" + } +} diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js new file mode 100644 index 00000000000..57869aabd65 --- /dev/null +++ b/handwritten/nodejs-datastore/src/entity.js @@ -0,0 +1,679 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @private + * @module datastore/entity + */ + +'use strict'; + +var arrify = require('arrify'); +var createErrorClass = require('create-error-class'); +var is = require('is'); + +var entity = module.exports; + +var InvalidKeyError = createErrorClass('InvalidKey', function(opts) { + var errorMessages = { + MISSING_KIND: 'A key should contain at least a kind.', + MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.' + }; + + this.message = errorMessages[opts.code]; +}); + +/** + * Build a Datastore Double object. + * + * @constructor + * @param {number} value - The double value. + * + * @example + * var aDouble = new Double(7.3); + */ +function Double(value) { + this.value = value; +} + +entity.Double = Double; + +/** + * Build a Datastore Int object. + * + * @constructor + * @param {number} value - The integer value. + * + * @example + * var anInt = new Int(7); + */ +function Int(value) { + this.value = value; +} + +entity.Int = Int; + +/** + * Build a Datastore Geo Point object. + * + * @constructor + * @param {object} coordinates - Coordinate value. + * @param {number} coordinates.latitude - Latitudinal value. + * @param {number} coordinates.longitude - Longitudinal value. + * + * @example + * var coordinates = { + * latitude: 40.6894, + * longitude: -74.0447 + * }; + * + * var geoPoint = new GeoPoint(coordinates); + */ +function GeoPoint(coordindates) { + this.value = coordindates; +} + +entity.GeoPoint = GeoPoint; + +/** + * Build a Datastore Key object. + * + * @constructor + * @param {object} - Configuration object. + * @param {...*} options.path - Key path. + * @param {string=} options.namespace - Optional namespace. + * + * @example + * var key = new Key({ + * namespace: 'ns', + * path: ['Company', 123] + * }); + */ +function Key(options) { + this.namespace = options.namespace; + + if (options.path.length % 2 === 0) { + var identifier = options.path.pop(); + + if (is.number(identifier)) { + this.id = identifier; + } else if (is.string(identifier)) { + this.name = identifier; + } + } + + this.kind = options.path.pop(); + + if (options.path.length > 0) { + this.parent = new Key(options); + } + + // `path` is computed on demand to consider any changes that may have been + // made to the key. + Object.defineProperty(this, 'path', { + enumerable: true, + get: function() { + return arrify(this.parent && this.parent.path) + .concat([this.kind, this.name || this.id]); + } + }); +} + +entity.Key = Key; + +/** + * Convert a protobuf Value message to its native value. + * + * @param {object} valueProto - The protobuf Value message to convert. + * @return {*} + * + * @example + * decodeValueProto({ + * booleanValue: false + * }); + * // false + * + * decodeValueProto({ + * stringValue: 'Hi' + * }); + * // 'Hi' + * + * decodeValueProto({ + * blobValue: new Buffer('68656c6c6f') + * }); + * // + */ +function decodeValueProto(valueProto) { + var valueType = valueProto.value_type; + var value = valueProto[valueType]; + + switch (valueType) { + case 'arrayValue': { + return value.values.map(entity.decodeValueProto); + } + + case 'blobValue': { + return new Buffer(value, 'base64'); + } + + case 'nullValue': { + return null; + } + + case 'doubleValue': { + return parseFloat(value, 10); + } + + case 'integerValue': { + return parseInt(value, 10); + } + + case 'entityValue': { + return entity.entityFromEntityProto(value); + } + + case 'keyValue': { + return entity.keyFromKeyProto(value); + } + + case 'timestampValue': { + return new Date(parseInt(value.seconds, 10) * 1000); + } + + default: { + return value; + } + } +} + +entity.decodeValueProto = decodeValueProto; + +/** + * Convert any native value to a protobuf Value message object. + * + * @param {*} value - Native value. + * @return {object} + * + * @example + * encodeValue('Hi'); + * // { + * // stringValue: 'Hi' + * // } + */ +function encodeValue(value) { + var valueProto = {}; + + if (is.boolean(value)) { + valueProto.booleanValue = value; + return valueProto; + } + + if (is.nil(value)) { + valueProto.nullValue = 0; + return valueProto; + } + + if (is.number(value)) { + if (value % 1 === 0) { + value = new entity.Int(value); + } else { + value = new entity.Double(value); + } + } + + if (value instanceof entity.Int) { + valueProto.integerValue = value.value; + return valueProto; + } + + if (value instanceof entity.Double) { + valueProto.doubleValue = value.value; + return valueProto; + } + + if (value instanceof entity.GeoPoint) { + valueProto.geoPointValue = value.value; + return valueProto; + } + + if (value instanceof Date) { + var seconds = value.getTime() / 1000; + var secondsRounded = Math.floor(seconds); + + valueProto.timestampValue = { + seconds: secondsRounded, + nanos: Math.floor((seconds - secondsRounded) * 1e9) + }; + + return valueProto; + } + + if (is.string(value)) { + valueProto.stringValue = value; + return valueProto; + } + + if (value instanceof Buffer) { + valueProto.blobValue = value.toString('base64'); + return valueProto; + } + + if (is.array(value)) { + valueProto.arrayValue = { + values: value.map(entity.encodeValue) + }; + return valueProto; + } + + if (value instanceof entity.Key) { + valueProto.keyValue = entity.keyToKeyProto(value); + return valueProto; + } + + if (is.object(value)) { + if (!is.empty(value)) { + for (var prop in value) { + if (value.hasOwnProperty(prop)) { + value[prop] = entity.encodeValue(value[prop]); + } + } + } + + valueProto.entityValue = { + properties: value + }; + + return valueProto; + } + + throw new Error('Unsupported field value, ' + value + ', was provided.'); +} + +entity.encodeValue = encodeValue; + +/** + * Convert any entity protocol to a plain object. + * + * @todo Use registered metadata if provided. + * + * @param {object} entityProto - The protocol entity object to convert. + * @return {object} + * + * @example + * entityFromEntityProto({ + * properties: { + * map: { + * name: { + * value: { + * value_type: 'stringValue', + * stringValue: 'Stephen' + * } + * } + * } + * } + * }); + * // { + * // name: 'Stephen' + * // } + */ +function entityFromEntityProto(entityProto) { + var entityObject = {}; + + var properties = entityProto.properties || {}; + + for (var property in properties) { + var value = properties[property]; + entityObject[property] = entity.decodeValueProto(value); + } + + return entityObject; +} + +entity.entityFromEntityProto = entityFromEntityProto; + +/** + * Convert an entity object to an entity protocol object. + * + * @param {object} entityObject - The entity object to convert. + * @return {object} + * + * @example + * entityToEntityProto({ + * name: 'Burcu', + * legit: true + * }); + * // { + * // key: null, + * // properties: { + * // name: { + * // stringValue: 'Burcu' + * // }, + * // legit: { + * // booleanValue: true + * // } + * // } + * // } + */ +function entityToEntityProto(entityObject) { + return { + key: null, + + properties: Object.keys(entityObject).reduce(function(properties, key) { + properties[key] = entity.encodeValue(entityObject[key]); + return properties; + }, {}) + }; +} + +entity.entityToEntityProto = entityToEntityProto; + +/** + * Convert an API response array to a qualified Key and data object. + * + * @param {object[]} results - The response array. + * @param {object} results.entity - An entity object. + * @param {object} results.entity.key - The entity's key. + * @return {object[]} + * + * @example + * request_('runQuery', {}, function(err, response) { + * var entityObjects = formatArray(response.batch.entityResults); + * // { + * // key: {}, + * // data: { + * // fieldName: 'value' + * // } + * // } + * // + * }); + */ +function formatArray(results) { + return results.map(function(result) { + return { + key: entity.keyFromKeyProto(result.entity.key), + data: entity.entityFromEntityProto(result.entity) + }; + }); +} + +entity.formatArray = formatArray; + +/** + * Check if a key is complete. + * + * @param {Key} key - The Key object. + * @return {boolean} + * + * @example + * isKeyComplete(new Key(['Company', 'Google'])); // true + * isKeyComplete(new Key('Company')); // false + */ +function isKeyComplete(key) { + var lastPathElement = entity.keyToKeyProto(key).path.pop(); + return !!(lastPathElement.id || lastPathElement.name); +} + +entity.isKeyComplete = isKeyComplete; + +/** + * Convert a key protocol object to a Key object. + * + * @param {object} keyProto - The key protocol object to convert. + * @return {Key} + * + * @example + * var key = keyFromKeyProto({ + * partitionId: { + * projectId: 'project-id', + * namespaceId: '' + * }, + * path: [ + * { + * kind: 'Kind', + * id: '4790047639339008' + * } + * ] + * }); + */ +function keyFromKeyProto(keyProto) { + var keyOptions = { + path: [] + }; + + if (keyProto.partitionId && keyProto.partitionId.namespaceId) { + keyOptions.namespace = keyProto.partitionId.namespaceId; + } + + keyProto.path.forEach(function(path, index) { + var id = path.name || Number(path.id); + + keyOptions.path.push(path.kind); + + if (id) { + keyOptions.path.push(id); + } else if (index < keyProto.path.length - 1) { + throw new InvalidKeyError({ + code: 'MISSING_ANCESTOR_ID' + }); + } + }); + + return new entity.Key(keyOptions); +} + +entity.keyFromKeyProto = keyFromKeyProto; + +/** + * Convert a Key object to a key protocol object. + * + * @param {Key} key - The Key object to convert. + * @return {object} + * + * @example + * var keyProto = keyToKeyProto(new Key(['Company', 1])); + * // { + * // path: [ + * // { + * // kind: 'Company', + * // id: 1 + * // } + * // ] + * // } + */ +function keyToKeyProto(key) { + if (!is.string(key.path[0])) { + throw new InvalidKeyError({ + code: 'MISSING_KIND' + }); + } + + var keyProto = { + path: [] + }; + + if (key.namespace) { + keyProto.partitionId = { + namespaceId: key.namespace + }; + } + + for (var i = 0; i < key.path.length; i += 2) { + var pathElement = { + kind: key.path[i] + }; + + var value = key.path[i + 1]; + + if (value) { + if (is.number(value)) { + pathElement.id = value; + } else { + pathElement.name = value; + } + } else if (i < key.path.length - 2) { + // This isn't just an incomplete key. An ancestor key is incomplete. + throw new InvalidKeyError({ + code: 'MISSING_ANCESTOR_ID' + }); + } + + keyProto.path.push(pathElement); + } + + return keyProto; +} + +entity.keyToKeyProto = keyToKeyProto; + +/** + * Convert a query object to a query protocol object. + * + * @private + * + * @param {object} q - The query object to convert. + * @return {object} + * + * @example + * queryToQueryProto({ + * namespace: '', + * kinds: [ + * 'Kind' + * ], + * filters: [], + * orders: [], + * groupByVal: [], + * selectVal: [], + * startVal: null, + * endVal: null, + * limitVal: -1, + * offsetVal: -1 + * }); + * // { + * // projection: [], + * // kinds: [ + * // { + * // name: 'Kind' + * // } + * // ], + * // order: [], + * // groupBy: [] + * // } + */ +function queryToQueryProto(query) { + var OP_TO_OPERATOR = { + '=': 'EQUAL', + '>': 'GREATER_THAN', + '>=': 'GREATER_THAN_OR_EQUAL', + '<': 'LESS_THAN', + '<=': 'LESS_THAN_OR_EQUAL', + HAS_ANCESTOR: 'HAS_ANCESTOR' + }; + + var SIGN_TO_ORDER = { + '-': 'DESCENDING', + '+': 'ASCENDING' + }; + + var queryProto = { + distinctOn: query.groupByVal.map(function(groupBy) { + return { + name: groupBy + }; + }), + + kind: query.kinds.map(function(kind) { + return { + name: kind + }; + }), + + order: query.orders.map(function(order) { + return { + property: { + name: order.name + }, + direction: SIGN_TO_ORDER[order.sign] + }; + }), + + projection: query.selectVal.map(function(select) { + return { + property: { + name: select + } + }; + }) + }; + + if (query.endVal) { + if (is.string(query.endVal)) { + queryProto.endCursor = query.endVal; + } else { + queryProto.endCursor = query.endVal.toString('base64'); + } + } + + if (query.limitVal > 0) { + queryProto.limit = { + value: query.limitVal + }; + } + + if (query.offsetVal > 0) { + queryProto.offset = query.offsetVal; + } + + if (query.startVal) { + if (is.string(query.startVal)) { + queryProto.startCursor = query.startVal; + } else { + queryProto.startCursor = query.startVal.toString('base64'); + } + } + + if (query.filters.length > 0) { + var filters = query.filters.map(function(filter) { + var value = {}; + + if (filter.name === '__key__') { + value.keyValue = entity.keyToKeyProto(filter.val); + } else { + value = entity.encodeValue(filter.val); + } + + return { + propertyFilter: { + property: { + name: filter.name + }, + op: OP_TO_OPERATOR[filter.op], + value: value + } + }; + }); + + queryProto.filter = { + compositeFilter: { + filters: filters, + op: 'AND' + } + }; + } + + return queryProto; +} + +entity.queryToQueryProto = queryToQueryProto; diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js new file mode 100644 index 00000000000..916d464a9e2 --- /dev/null +++ b/handwritten/nodejs-datastore/src/index.js @@ -0,0 +1,557 @@ +/*! + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*! + * @module datastore + */ + +'use strict'; + +var arrify = require('arrify'); +var common = require('@google-cloud/common'); +var is = require('is'); +var modelo = require('modelo'); +var PKG = require('../package.json'); + +/** + * @type {module:datastore/request} + * @private + */ +var DatastoreRequest = require('./request.js'); + +/** + * @type {module:datastore/entity} + * @private + */ +var entity = require('./entity.js'); + +/** + * @type {module:datastore/query} + * @private + */ +var Query = require('./query.js'); + +/** + * @type {module:common/grpc-service} + * @private + */ +var GrpcService = common.GrpcService; + +/** + * @type {module:datastore/transaction} + * @private + */ +var Transaction = require('./transaction.js'); + +/** + * @type {module:common/util} + * @private + */ +var util = common.util; + +/** + * Interact with the + * [Google Cloud Datastore](https://developers.google.com/datastore/). + * + * @constructor + * @alias module:datastore + * @mixes module:datastore/request + * + * @classdesc + * The `gcloud.datastore` object allows you to interact with Google Cloud + * Datastore. + * + * To learn more about Datastore, read the + * [Google Cloud Datastore Concepts Overview](https://cloud.google.com/datastore/docs/concepts/overview) + * + * @param {object=} options - [Configuration object](#/docs). + * @param {string=} options.apiEndpoint - Override the default API endpoint used + * to reach Datastore. This is useful for connecting to your local Datastore + * server (usually "http://localhost:8080"). + * @param {string} options.namespace - Namespace to isolate transactions to. + * + * @example + * var gcloud = require('google-cloud')({ + * projectId: 'grape-spaceship-123', + * keyFilename: '/path/to/keyfile.json' + * }); + * + * var datastore = gcloud.datastore(); + * + * //- + * //

The Datastore Emulator

+ * // + * //

gcloud SDK not supported

+ * // + * // As of this release, the Datastore emulator that is part of the gcloud SDK + * // is not compatible with gcloud-node. We use + * // gRPC as our transport layer, while the gcloud + * // SDK's Datastore emulator does not support gRPC. + * // + * //

Use `gcd.sh` directly

+ * // For now, you must use the + * // + * // gcd.sh script. + * // + * // When you run `./gcd start [datastore]`, you will see the following + * // printed: + * // + * //
+ * //   If you are using a library that supports the DATASTORE_EMULATOR_HOST
+ * //   environment variable, run:
+ * //     export DATASTORE_EMULATOR_HOST=localhost:8080
+ * // 
+ * // + * // Set that environment variable and your localhost Datastore will + * // automatically be used. You can also pass this address in manually with + * // `apiEndpoint`. + * //- + * var datastore = gcloud.datastore({ + * apiEndpoint: 'http://localhost:8080' + * }); + * + * //- + * // Additionally, `DATASTORE_PROJECT_ID` is recognized. If you have this set, + * // you don't need to provide a `projectId`. + * //- + * + * //- + * //

Retrieving Records

+ * // + * // Records, called "entities" in Datastore, are retrieved by using a key. The + * // key is more than a numeric identifier, it is a complex data structure that + * // can be used to model relationships. The simplest key has a string `kind` + * // value, and either a numeric `id` value, or a string `name` value. + * // + * // A single record can be retrieved with {module:datastore/key} and + * // {module:datastore#get}. + * //- + * var key = datastore.key(['Company', 'Google']); + * + * datastore.get(key, function(err, entity) { + * // entity.data = The record. + * // entity.key = The key. + * }); + * + * //- + * //

Querying Records

+ * // + * // Create a query with {module:datastore#createQuery}. + * //- + * var query = datastore.createQuery('Company'); + * + * //- + * // Multiple records can be found that match criteria with + * // {module:datastore/query#filter}. + * //- + * query.filter('location', 'CA'); + * + * //- + * // Records can also be ordered with {module:datastore/query#order}. + * //- + * query.order('name'); + * + * //- + * // The number of records returned can be specified with + * // {module:datastore/query#limit}. + * //- + * query.limit(5); + * + * //- + * // Records' key structures can also be queried with + * // {module:datastore/query#hasAncestor}. + * //- + * var ancestorKey = datastore.key(['ParentCompany', 'Alphabet']); + * + * query.hasAncestor(ancestorKey); + * + * //- + * // Run the query with {module:datastore#runQuery}. + * //- + * datastore.runQuery(query, function(err, entities) { + * // entities = [ + * // { + * // data: The record, + * // key: The key for this record + * // }, + * // ... + * // ] + * }); + * + * //- + * //

Paginating Records

+ * // + * // Imagine building a website that allows a user to sift through hundreds of + * // their contacts. You'll likely want to only display a subset of these at + * // once, so you set a limit. + * //- + * var express = require('express'); + * var app = express(); + * + * var NUM_RESULTS_PER_PAGE = 15; + * + * app.get('/contacts', function(req, res) { + * var query = datastore.createQuery('Contacts') + * .limit(NUM_RESULTS_PER_PAGE); + * + * if (req.query.nextPageCursor) { + * query.start(req.query.nextPageCursor); + * } + * + * datastore.runQuery(query, function(err, entities, info) { + * if (err) { + * // Error handling omitted. + * return; + * } + * + * // Respond to the front end with the contacts and the cursoring token + * // from the query we just ran. + * var frontEndResponse = { + * contacts: entities + * }; + * + * // Check if more results may exist. + * if (info.moreResults !== gcloud.datastore.NO_MORE_RESULTS) { + * frontEndResponse.nextPageCursor = info.endCursor; + * } + * + * res.render('contacts', frontEndResponse); + * }); + * }); + * + * //- + * //

Creating Records

+ * // + * // New entities can be created and persisted with {module:datastore#save}. + * // The entitiy must have a key to be saved. If you don't specify an + * // identifier for the key, one is generated for you. + * // + * // We will create a key with a `name` identifier, "Google". + * //- + * var key = datastore.key(['Company', 'Google']); + * + * var data = { + * name: 'Google', + * location: 'CA' + * }; + * + * datastore.save({ + * key: key, + * data: data + * }, function(err) { + * if (!err) { + * // Record saved successfully. + * } + * }); + * + * //- + * // We can verify the data was saved by using {module:datastore#get}. + * //- + * datastore.get(key, function(err, entity) { + * // entity = { + * // key: datastore.key(['Company', 'Google']), + * // data: { + * // name: 'Google', + * // location: 'CA' + * // } + * // } + * }); + * + * //- + * // If we want to update this record, we can modify the data object and re- + * // save it. + * //- + * data.symbol = 'GOOG'; + * + * datastore.save({ + * key: key, // defined above (datastore.key(['Company', 'Google'])) + * data: data + * }, function(err, entity) { + * if (!err) { + * // Record updated successfully. + * } + * }); + * + * //- + * //

Deleting Records

+ * // + * // Entities can be removed from Datastore by passing the entity's key object + * // to {module:datastore#delete}. + * //- + * var key = datastore.key(['Company', 'Google']); + * + * datastore.delete(key, function(err) { + * if (!err) { + * // Record deleted successfully. + * } + * }); + * + * //- + * //

Transactions

+ * // + * // Complex logic can be wrapped in a transaction with + * // {module:datastore#transaction}. All queries and updates run within + * // the transaction will be applied when the `done` function is called. + * //- + * var transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * var key = datastore.key(['Company', 'Google']); + * + * transaction.get(key, function(err, data) { + * if (err) { + * // Error handling omitted. + * } + * + * data.symbol = 'GOOG'; + * + * transaction.save({ + * key: key, + * data: data + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + */ +function Datastore(options) { + if (!(this instanceof Datastore)) { + options = util.normalizeArguments(this, options, { + projectIdRequired: false + }); + return new Datastore(options); + } + + this.defaultBaseUrl_ = 'datastore.googleapis.com'; + this.determineBaseUrl_(options.apiEndpoint); + + this.namespace = options.namespace; + this.projectId = process.env.DATASTORE_PROJECT_ID || options.projectId; + + var config = { + projectIdRequired: false, + baseUrl: this.baseUrl_, + customEndpoint: this.customEndpoint_, + service: 'datastore', + apiVersion: 'v1beta3', + scopes: ['https://www.googleapis.com/auth/datastore'], + userAgent: PKG.name + '/' + PKG.version + }; + + GrpcService.call(this, config, options); +} + +modelo.inherits(Datastore, DatastoreRequest, GrpcService); + +/** + * Helper function to get a Datastore Double object. + * + * @param {number} value - The double value. + * @return {object} + * + * @example + * var threeDouble = gcloud.datastore.double(3.0); + */ +Datastore.double = function(value) { + return new entity.Double(value); +}; + +/** + * Helper function to get a Datastore Geo Point object. + * + * @param {object} coordinates - Coordinate value. + * @param {number} coordinates.latitude - Latitudinal value. + * @param {number} coordinates.longitude - Longitudinal value. + * @return {object} + * + * @example + * var coordinates = { + * latitude: 40.6894, + * longitude: -74.0447 + * }; + * + * var geoPoint = gcloud.datastore.geoPoint(coordinates); + */ +Datastore.geoPoint = function(coordindates) { + return new entity.GeoPoint(coordindates); +}; + +/** + * Helper function to get a Datastore Integer object. + * + * @param {number} value - The integer value. + * @return {object} + * + * @example + * var sevenInteger = gcloud.datastore.int(7); + */ +Datastore.int = function(value) { + return new entity.Int(value); +}; + +/** + * This is one of three values which may be returned from + * {module:datastore#runQuery}, {module:transaction#runQuery}, and + * {module:datastore/query#run} as `info.moreResults`. + * + * There *may* be more results after the specified end cursor. + * + * @type {string} + */ +Datastore.MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR'; + +/** + * This is one of three values which may be returned from + * {module:datastore#runQuery}, {module:transaction#runQuery}, and + * {module:datastore/query#run} as `info.moreResults`. + * + * There *may* be more results after the specified limit. + * + * @type {string} + */ +Datastore.MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT'; + +/** + * This is one of three values which may be returned from + * {module:datastore#runQuery}, {module:transaction#runQuery}, and + * {module:datastore/query#run} as `info.moreResults`. + * + * There are no more results left to query for. + * + * @type {string} + */ +Datastore.NO_MORE_RESULTS = 'NO_MORE_RESULTS'; + +/** + * Create a query for the specified kind. See {module:datastore/query} for all + * of the available methods. + * + * @resource [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * + * @see {module:datastore/query} + * + * @param {string=} namespace - Namespace. + * @param {string} kind - The kind to query. + * @return {module:datastore/query} + * + * @example + * var query = datastore.createQuery('Company'); + */ +Datastore.prototype.createQuery = function(namespace, kind) { + if (arguments.length === 1) { + kind = arrify(namespace); + namespace = this.namespace; + } + + return new Query(this, namespace, arrify(kind)); +}; + +/** + * Helper to create a Key object, scoped to the instance's namespace by default. + * + * You may also specify a configuration object to define a namespace and path. + * + * @param {...*=} options - Key path. To specify or override a namespace, + * you must use an object here to explicitly state it. + * @param {object=} options - Configuration object. + * @param {...*=} options.path - Key path. + * @param {string=} options.namespace - Optional namespace. + * @return {Key} A newly created Key from the options given. + * + * @example + * //- + * // Create an incomplete key with a kind value of `Company`. + * //- + * var key = datastore.key('Company'); + * + * //- + * // Create a complete key with a kind value of `Company` and id `123`. + * //- + * var key = datastore.key(['Company', 123]); + * + * //- + * // Create a complete key with a kind value of `Company` and name `Google`. + * // Note: `id` is used for numeric identifiers and `name` is used otherwise. + * //- + * var key = datastore.key(['Company', 'Google']); + * + * //- + * // Create a complete key from a provided namespace and path. + * //- + * var key = datastore.key({ + * namespace: 'My-NS', + * path: ['Company', 123] + * }); + */ +Datastore.prototype.key = function(options) { + options = is.object(options) ? options : { + namespace: this.namespace, + path: arrify(options) + }; + + return new entity.Key(options); +}; + +/** + * Create a new Transaction object. + * + * @return {module:datastore/transaction} + * @private + */ +Datastore.prototype.transaction = function() { + return new Transaction(this); +}; + +/** + * Determine the appropriate endpoint to use for API requests. If not explicitly + * defined, check for the "DATASTORE_EMULATOR_HOST" environment variable, used + * to connect to a local Datastore server. + * + * @private + * + * @param {string} customApiEndpoint - Custom API endpoint. + */ +Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { + var baseUrl = this.defaultBaseUrl_; + var leadingProtocol = new RegExp('^https*://'); + var trailingSlashes = new RegExp('/*$'); + + if (customApiEndpoint) { + baseUrl = customApiEndpoint; + this.customEndpoint_ = true; + } else if (process.env.DATASTORE_EMULATOR_HOST) { + baseUrl = process.env.DATASTORE_EMULATOR_HOST; + this.customEndpoint_ = true; + } + + this.baseUrl_ = baseUrl + .replace(leadingProtocol, '') + .replace(trailingSlashes, ''); +}; + +Datastore.DatastoreRequest = DatastoreRequest; +Datastore.Query = Query; +Datastore.Transaction = Transaction; + +module.exports = Datastore; diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js new file mode 100644 index 00000000000..af7b2faebc1 --- /dev/null +++ b/handwritten/nodejs-datastore/src/query.js @@ -0,0 +1,343 @@ +/*! + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*! + * @module datastore/query + */ + +'use strict'; + +var arrify = require('arrify'); + +/*! Developer Documentation + * + * @param {module:datastore|module:transaction} scope - The parent scope the + * query was created from. + */ +/** + * Build a Query object. + * + * **Queries are built with {module:datastore#createQuery} and + * {module:transaction#createQuery}.** + * + * @resource [Datastore Queries]{@link http://goo.gl/Cag0r6} + * + * @constructor + * @alias module:datastore/query + * + * @param {string=} namespace - Namespace to query entities from. + * @param {string} kind - Kind to query. + * + * @example + * var gcloud = require('google-cloud')({ + * keyFilename: '/path/to/keyfile.json', + * projectId: 'grape-spaceship-123' + * }); + * + * var datastore = gcloud.datastore(); + * var query = datastore.createQuery('AnimalNamespace', 'Lion'); + */ +function Query(scope, namespace, kinds) { + if (!kinds) { + kinds = namespace; + namespace = null; + } + + this.scope = scope; + + this.namespace = namespace || null; + this.kinds = kinds; + + this.filters = []; + this.orders = []; + this.groupByVal = []; + this.selectVal = []; + + // pagination + this.startVal = null; + this.endVal = null; + this.limitVal = -1; + this.offsetVal = -1; +} + +/** + * Datastore allows querying on properties. Supported comparison operators + * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are + * currently not supported. + * + * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* + * + * @resource [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Filters} + * + * @param {string} property - The field name. + * @param {string=} operator - Operator (=, <, >, <=, >=). Default: `=` + * @param {*} value - Value to compare property to. + * @return {module:datastore/query} + * + * @example + * //- + * // List all companies that are located in California. + * //- + * var caliQuery = query.filter('state', 'CA'); + * + * //- + * // List all companies named Google that have less than 400 employees. + * //- + * var companyQuery = query + * .filter('name', 'Google') + * .filter('size', '<', 400); + * + * //- + * // To filter by key, use `__key__` for the property name. Filter on keys + * // stored as properties is not currently supported. + * //- + * var key = datastore.key(['Company', 'Google']); + * var keyQuery = query.filter('__key__', key); + */ +Query.prototype.filter = function(property, operator, value) { + if (arguments.length === 2) { + value = operator; + operator = '='; + } + + // TODO: Add filter validation. + this.filters.push({ + name: property.trim(), + op: operator.trim(), + val: value + }); + return this; +}; + +/** + * Filter a query by ancestors. + * + * @resource [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Ancestor_filters} + * + * @param {Key} key - Key object to filter by. + * @return {module:datastore/query} + * + * @example + * var ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); + */ +Query.prototype.hasAncestor = function(key) { + this.filters.push({ name: '__key__', op: 'HAS_ANCESTOR', val: key }); + return this; +}; + +/** + * Sort the results by a property name in ascending or descending order. By + * default, an ascending sort order will be used. + * + * @resource [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Sort_orders} + * + * @param {string} property - The property to order by. + * @param {object=} options - Options object. + * @param {boolean} options.descending - Sort the results by a property name + * in descending order. Default: `false`. + * @return {module:datastore/query} + * + * @example + * // Sort by size ascendingly. + * var companiesAscending = companyQuery.order('size'); + * + * // Sort by size descendingly. + * var companiesDescending = companyQuery.order('size', { + * descending: true + * }); + */ +Query.prototype.order = function(property, options) { + var sign = options && options.descending ? '-' : '+'; + + this.orders.push({ name: property, sign: sign }); + return this; +}; + +/** + * Group query results by a list of properties. + * + * @param {array} properties - Properties to group by. + * @return {module:datastore/query} + * + * @example + * var groupedQuery = companyQuery.groupBy(['name', 'size']); + */ +Query.prototype.groupBy = function(fieldNames) { + this.groupByVal = arrify(fieldNames); + return this; +}; + +/** + * Retrieve only select properties from the matched entities. + * + * Queries that select a subset of properties are called Projection Queries. + * + * @resource [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} + * + * @param {string|string[]} fieldNames - Properties to return from the matched + * entities. + * @return {module:datastore/query} + * + * @example + * // Only retrieve the name property. + * var selectQuery = companyQuery.select('name'); + * + * // Only retrieve the name and size properties. + * var selectQuery = companyQuery.select(['name', 'size']); + */ +Query.prototype.select = function(fieldNames) { + this.selectVal = arrify(fieldNames); + return this; +}; + +/** + * Set a starting cursor to a query. + * + * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} + * + * @param {string} cursorToken - The starting cursor token. + * @return {module:datastore/query} + * + * @example + * var cursorToken = 'X'; + * + * // Retrieve results starting from cursorToken. + * var startQuery = companyQuery.start(cursorToken); + */ +Query.prototype.start = function(start) { + this.startVal = start; + return this; +}; + +/** + * Set an ending cursor to a query. + * + * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} + * + * @param {string} cursorToken - The ending cursor token. + * @return {module:datastore/query} + * + * @example + * var cursorToken = 'X'; + * + * // Retrieve results limited to the extent of cursorToken. + * var endQuery = companyQuery.end(cursorToken); + */ +Query.prototype.end = function(end) { + this.endVal = end; + return this; +}; + +/** + * Set a limit on a query. + * + * @resource [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Retrieving_results} + * + * @param {number} n - The number of results to limit the query to. + * @return {module:datastore/query} + * + * @example + * // Limit the results to 10 entities. + * var limitQuery = companyQuery.limit(10); + */ +Query.prototype.limit = function(n) { + this.limitVal = n; + return this; +}; + +/** + * Set an offset on a query. + * + * @resource [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Retrieving_results} + * + * @param {number} n - The offset to start from after the start cursor. + * @return {module:datastore/query} + * + * @example + * // Start from the 101st result. + * var offsetQuery = companyQuery.offset(100); + */ +Query.prototype.offset = function(n) { + this.offsetVal = n; + return this; +}; + +/** + * Run the query. + * + * @param {object=} options - Optional configuration. + * @param {string} options.consistency - Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {function=} callback - The callback function. If omitted, a readable + * stream instance is returned. + * @param {?error} callback.err - An error returned while making this request + * @param {object[]} callback.entities - A list of entities. + * @param {object} callback.info - An object useful for pagination. + * @param {?string} callback.info.endCursor - Use this in a follow-up query to + * begin from where these results ended. + * @param {string} callback.info.moreResults - Datastore responds with one of: + * + * - {module:datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * results after the specified limit. + * - {module:datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * results after the specified end cursor. + * - {module:datastore#NO_MORE_RESULTS}: There are no more results. + * + * @example + * query.run(function(err, entities, info) {}); + * + * //- + * // If you omit the callback, you will get the matching entities in a readable + * // object stream. + * //- + * query.run() + * .on('error', console.error) + * .on('data', function (entity) {}) + * .on('info', function(info) {}) + * .on('end', function() { + * // All entities retrieved. + * }); + * + * //- + * // If you anticipate many results, you can end a stream early to prevent + * // unnecessary processing and API requests. + * //- + * query.run() + * .on('data', function (entity) { + * this.end(); + * }); + * + * //- + * // A keys-only query returns just the keys of the result entities instead of + * // the entities themselves, at lower latency and cost. + * //- + * query.select('__key__'); + * + * query.run(function(err, entities) { + * // entities[].key = Key object + * // entities[].data = Empty object + * }); + */ +Query.prototype.run = function() { + var query = this; + var args = [query].concat([].slice.call(arguments)); + + return this.scope.runQuery.apply(this.scope, args); +}; + +module.exports = Query; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js new file mode 100644 index 00000000000..35df37324cd --- /dev/null +++ b/handwritten/nodejs-datastore/src/request.js @@ -0,0 +1,958 @@ +/*! + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*! + * @module datastore/request + */ + +'use strict'; + +var arrify = require('arrify'); +var common = require('@google-cloud/common'); +var concat = require('concat-stream'); +var extend = require('extend'); +var is = require('is'); +var propAssign = require('prop-assign'); +var split = require('split-array-stream'); + +/** + * @type {module:datastore/entity} + * @private + */ +var entity = require('./entity.js'); + +/** + * @type {module:datastore/query} + * @private + */ +var Query = require('./query.js'); + +/** + * @type {module:common/util} + * @private + */ +var util = common.util; + +/** + * A map of read consistency values to proto codes. + * + * @type {object} + * @private + */ +var CONSISTENCY_PROTO_CODE = { + eventual: 2, + strong: 1 +}; + +/*! Developer Documentation + * + * Handles request logic for Datastore. + * + * Creates requests to the Datastore endpoint. Designed to be inherited by + * {module:datastore} and {module:datastore/transaction} objects. + * + * @example + * // This is how to create a transaction object directly using this Transaction + * // class. The following transaction object is created for use in the examples + * // in this file below. + * var datastore = gcloud.datastore({ projectId: 'project-id' }); + * var Transaction = require('gcloud/lib/datastore/transaction'); + * var transaction = new Transaction(datastore, 'my-project-id'); + * transaction.id = '1234'; // Give the transaction an ID. + */ +/** + * Handle logic for Datastore API operations. + * + * @constructor + * @alias module:datastore/request + * @mixin + */ +function DatastoreRequest() {} + +/** + * Generate IDs without creating entities. + * + * @param {Key} incompleteKey - The key object to complete. + * @param {number} n - How many IDs to generate. + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request + * @param {array} callback.keys - The generated IDs + * @param {object} callback.apiResponse - The full API response. + * + * @example + * var incompleteKey = datastore.key(['Company']); + * + * //- + * // The following call will create 100 new IDs from the Company kind, which + * // exists under the default namespace. + * //- + * datastore.allocateIds(incompleteKey, 100, function(err, keys) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * var transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.allocateIds(incompleteKey, 100, function(err, keys) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // You may prefer to create IDs from a non-default namespace by providing an + * // incomplete key with a namespace. Similar to the previous example, the call + * // below will create 100 new IDs, but from the Company kind that exists under + * // the "ns-test" namespace. + * //- + * var incompleteKey = datastore.key({ + * namespace: 'ns-test', + * path: ['Company'] + * }); + * + * function callback(err, keys, apiResponse) {} + * + * datastore.allocateIds(incompleteKey, 100, callback); + */ +DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) { + if (entity.isKeyComplete(incompleteKey)) { + throw new Error('An incomplete key should be provided.'); + } + + var incompleteKeys = []; + for (var i = 0; i < n; i++) { + incompleteKeys.push(entity.keyToKeyProto(incompleteKey)); + } + + var protoOpts = { + service: 'Datastore', + method: 'allocateIds' + }; + + var reqOpts = { + keys: incompleteKeys + }; + + this.request_(protoOpts, reqOpts, function(err, resp) { + if (err) { + callback(err, null, resp); + return; + } + + var keys = (resp.keys || []).map(entity.keyFromKeyProto); + + callback(null, keys, resp); + }); +}; + +/** + * Delete all entities identified with the specified key(s). + * + * @param {Key|Key[]} key - Datastore key object(s). + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request + * @param {object} callback.apiResponse - The full API response. + * + * @example + * var key = datastore.key(['Company', 123]); + * datastore.delete(key, function(err, apiResp) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * var transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.delete(key); + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * + * //- + * // Delete multiple entities at once. + * //- + * datastore.delete([ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ], function(err, apiResponse) {}); + */ +DatastoreRequest.prototype.delete = function(keys, callback) { + callback = callback || util.noop; + + var protoOpts = { + service: 'Datastore', + method: 'commit' + }; + + var reqOpts = { + mutations: arrify(keys).map(function(key) { + return { + delete: entity.keyToKeyProto(key) + }; + }) + }; + + if (this.id) { + this.requests_.push(reqOpts); + return; + } + + this.request_(protoOpts, reqOpts, callback); +}; + +/** + * Retrieve the entities identified with the specified key(s) in the current + * transaction. Get operations require a valid key to retrieve the + * key-identified entity from Datastore. + * + * @throws {Error} If at least one Key object is not provided. + * + * @param {Key|Key[]} keys - Datastore key object(s). + * @param {object=} options - Optional configuration. + * @param {string} options.consistency - Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {boolean} options.maxApiCalls - Maximum API calls to make. + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request + * @param {object|object[]} callback.entity - The entity object(s) which match + * the provided keys. + * + * @example + * //- + * // Get a single entity. + * //- + * var key = datastore.key(['Company', 123]); + * + * datastore.get(key, function(err, entity) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * var transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.get(key, function(err, entity) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // Get multiple entities at once with a callback. + * //- + * var keys = [ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ]; + * + * datastore.get(keys, function(err, entities) {}); + * + * //- + * // Or, get the entities as a readable object stream. + * //- + * datastore.get(keys) + * .on('error', function(err) {}) + * .on('data', function(entity) { + * // entity is an entity object. + * }) + * .on('end', function() { + * // All entities retrieved. + * }); + * + * //- + * // Here's how you would update the value of an entity with the help of the + * // `save` method. + * //- + * datastore.get(key, function(err, entity) { + * if (err) { + * // Error handling omitted. + * } + * + * entity.data.newValue = true; + * datastore.save(entity, function(err) {}); + * }); + */ +DatastoreRequest.prototype.get = function(keys, options, callback) { + var self = this; + + if (is.fn(options)) { + callback = options; + options = {}; + } + + options = options || {}; + + if (is.fn(callback)) { + // Run this method in stream mode and send the results back to the callback. + this.get(keys, options) + .on('error', callback) + .pipe(concat(function(results) { + var isSingleLookup = !is.array(keys); + callback(null, isSingleLookup ? results[0] : results); + })); + return; + } + + keys = arrify(keys).map(entity.keyToKeyProto); + + if (keys.length === 0) { + throw new Error('At least one Key object is required.'); + } + + var limiter = util.createLimiter(makeRequest, options); + var stream = limiter.stream; + + stream.once('reading', function() { + limiter.makeRequest(keys); + }); + + function makeRequest(keys) { + var protoOpts = { + service: 'Datastore', + method: 'lookup' + }; + + var reqOpts = { + keys: keys + }; + + if (options.consistency) { + var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + + reqOpts.readOptions = { + readConsistency: code + }; + } + + self.request_(protoOpts, reqOpts, function(err, resp) { + if (err) { + stream.destroy(err); + return; + } + + var entities = entity.formatArray(resp.found); + var nextKeys = (resp.deferred || []).map(entity.keyFromKeyProto); + + split(entities, stream, function(streamEnded) { + if (streamEnded) { + return; + } + + if (nextKeys.length > 0) { + limiter.makeRequest(nextKeys); + return; + } + + stream.push(null); + }); + }); + } + + return stream; +}; + +/** + * Maps to {module:datastore#save}, forcing the method to be `insert`. + */ +DatastoreRequest.prototype.insert = function(entities, callback) { + entities = arrify(entities).map(propAssign('method', 'insert')); + this.save(entities, callback); +}; + +/** + * Datastore allows you to query entities by kind, filter them by property + * filters, and sort them by a property name. Projection and pagination are also + * supported. + * + * If you provide a callback, the query is run, and the results are returned as + * the second argument to your callback. A third argument may also exist, which + * is a query object that uses the end cursor from the previous query as the + * starting cursor for the next query. You can pass that object back to this + * method to see if more results exist. + * + * You may also omit the callback to this function to trigger streaming mode. + * + * See below for examples of both approaches. + * + * @param {module:datastore/query} q - Query object. + * @param {object=} options - Optional configuration. + * @param {string} options.consistency - Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {boolean} options.maxApiCalls - Maximum API calls to make. + * @param {function=} callback - The callback function. If omitted, a readable + * stream instance is returned. + * @param {?error} callback.err - An error returned while making this request + * @param {object[]} callback.entities - A list of entities. + * @param {object} callback.info - An object useful for pagination. + * @param {?string} callback.info.endCursor - Use this in a follow-up query to + * begin from where these results ended. + * @param {string} callback.info.moreResults - Datastore responds with one of: + * + * - {module:datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * results after the specified limit. + * - {module:datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * results after the specified end cursor. + * - {module:datastore#NO_MORE_RESULTS}: There are no more results. + * + * @example + * //- + * // Where you see `transaction`, assume this is the context that's relevant to + * // your use, whether that be a Datastore or a Transaction object. + * //- + * var query = datastore.createQuery('Lion'); + * + * datastore.runQuery(query, function(err, entities, info) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * var transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.runQuery(query, function(err, entities) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // If you omit the callback, you will get the matching entities in a readable + * // object stream. + * //- + * datastore.runQuery(query) + * .on('error', console.error) + * .on('data', function (entity) {}) + * .on('info', function(info) {}) + * .on('end', function() { + * // All entities retrieved. + * }); + * + * //- + * // If you anticipate many results, you can end a stream early to prevent + * // unnecessary processing and API requests. + * //- + * datastore.runQuery(query) + * .on('data', function (entity) { + * this.end(); + * }); + * + * //- + * // A keys-only query returns just the keys of the result entities instead of + * // the entities themselves, at lower latency and cost. + * //- + * var keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); + * + * datastore.runQuery(keysOnlyQuery, function(err, entities) { + * // entities[].key = Key object + * // entities[].data = Empty object + * }); + */ +DatastoreRequest.prototype.runQuery = function(query, options, callback) { + var self = this; + + if (is.fn(options)) { + callback = options; + options = {}; + } + + options = options || {}; + + var info; + + if (is.fn(callback)) { + // Run this method in stream mode and send the results back to the callback. + this.runQuery(query, options) + .on('error', callback) + .on('info', function(info_) { + info = info_; + }) + .pipe(concat(function(results) { + callback(null, results, info); + })); + return; + } + + var limiter = util.createLimiter(makeRequest, options); + var stream = limiter.stream; + + stream.once('reading', function() { + limiter.makeRequest(query); + }); + + function makeRequest(query) { + var protoOpts = { + service: 'Datastore', + method: 'runQuery' + }; + + var reqOpts = { + query: entity.queryToQueryProto(query) + }; + + if (options.consistency) { + var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + reqOpts.readOptions = { + readConsistency: code + }; + } + + if (query.namespace) { + reqOpts.partitionId = { + namespaceId: query.namespace + }; + } + + self.request_(protoOpts, reqOpts, onResultSet); + } + + function onResultSet(err, resp) { + if (err) { + stream.destroy(err); + return; + } + + var info = { + moreResults: resp.batch.moreResults + }; + + if (resp.batch.endCursor) { + info.endCursor = resp.batch.endCursor; + } + + var entities = []; + + if (resp.batch.entityResults) { + entities = entity.formatArray(resp.batch.entityResults); + } + + // Emit each result right away, then get the rest if necessary. + split(entities, stream, function(streamEnded) { + if (streamEnded) { + return; + } + + if (resp.batch.moreResults !== 'NOT_FINISHED') { + stream.emit('info', info); + stream.push(null); + return; + } + + // The query is "NOT_FINISHED". Get the rest of the results. + var offset = query.offsetVal === -1 ? 0 : query.offsetVal; + + var continuationQuery = extend(true, new Query(), query) + .start(info.endCursor) + .offset(offset - resp.batch.skippedResults); + + var limit = query.limitVal; + if (limit && limit > -1) { + continuationQuery.limit(limit - resp.batch.entityResults.length); + } + + limiter.makeRequest(continuationQuery); + }); + } + + return stream; +}; + +/** + * Insert or update the specified object(s). If a key is incomplete, its + * associated object is inserted and the original Key object is updated to + * contain the generated ID. + * + * This method will determine the correct Datastore method to execute (`upsert`, + * `insert`, or `update`) by using the key(s) provided. For example, if you + * provide an incomplete key (one without an ID), the request will create a new + * entity and have its ID automatically assigned. If you provide a complete key, + * the entity will be updated with the data specified. + * + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an entity's `data` property as an + * array. See below for an example. + * + * @borrows {module:datastore/transaction#save} as save + * + * @throws {Error} If an unrecognized method is provided. + * + * @param {object|object[]} entities - Datastore key object(s). + * @param {Key} entities.key - Datastore key object. + * @param {string=} entities.method - Explicit method to use, either 'insert', + * 'update', or 'upsert'. + * @param {object|object[]} entities.data - Data to save with the provided key. + * If you provide an array of objects, you must use the explicit syntax: + * `name` for the name of the property and `value` for its value. You may + * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request + * @param {object} callback.apiResponse - The full API response. + * + * @example + * //- + * // Save a single entity. + * // + * // Notice that we are providing an incomplete key. After saving, the original + * // Key object used to save will be updated to contain the path with its + * // generated ID. + * //- + * var key = datastore.key('Company'); + * + * datastore.save({ + * key: key, + * data: { + * rating: '10' + * } + * }, function(err) { + * console.log(key.path); // [ 'Company', 5669468231434240 ] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity using a provided name instead of auto-generated ID. + * // + * // Here we are providing a key with name instead of an ID. After saving, the + * // original Key object used to save will be updated to contain the path with + * // the name instead of a generated ID. + * //- + * var key = datastore.key(['Company', 'donutshack']); + * + * datastore.save({ + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }, function(err) { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity with a provided namespace. Namespaces allow for + * // multitenancy. To read more about this, see + * // [the Datastore docs on key concepts](https://goo.gl/M1LUAu). + * // + * // Here we are providing a key with namespace. + * //- + * var key = datastore.key({ + * namespace: 'my-namespace', + * path: ['Company', 'donutshack'] + * }); + * + * datastore.save({ + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }, function(err) { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // 'my-namespace' + * }); + * + * //- + * // Save different types of data, including ints, doubles, dates, booleans, + * // blobs, and lists. + * // + * // Notice that we are providing an incomplete key. After saving, the original + * // Key object used to save will be updated to contain the path with its + * // generated ID. + * //- + * var key = datastore.key('Company'); + * + * datastore.save({ + * key: key, + * data: { + * name: 'DonutShack', + * rating: gcloud.datastore.int(10), + * worth: gcloud.datastore.double(123456.78), + * location: gcloud.datastore.geoPoint({ + * latitude: 40.6894, + * longitude: -74.0447 + * }), + * numDonutsServed: 45, + * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), + * isStartup: true, + * donutEmoji: new Buffer('\uD83C\uDF69'), + * keywords: [ + * 'donut', + * 'coffee', + * 'yum' + * ] + * } + * }, function(err, apiResponse) {}); + * + * //- + * // To specify an `excludeFromIndexes` value for a Datastore entity, pass in + * // an array for the key's data. + * //- + * datastore.save({ + * key: datastore.key('Company'), + * data: [ + * { + * name: 'rating', + * value: 10, + * excludeFromIndexes: true + * } + * ] + * }, function(err, apiResponse) {}); + * + * //- + * // Save multiple entities at once. + * //- + * var companyKey = datastore.key(['Company', 123]); + * var productKey = datastore.key(['Product', 'Computer']); + * + * datastore.save([ + * { + * key: companyKey, + * data: { + * HQ: 'Dallas, TX' + * } + * }, + * { + * key: productKey, + * data: { + * vendor: 'Dell' + * } + * } + * ], function(err, apiResponse) {}); + * + * //- + * // Explicitly attempt to 'insert' a specific entity. + * //- + * var userKey = datastore.key(['User', 'chilts']); + * + * datastore.save({ + * key: userKey, + * method: 'insert', + * data: { + * fullName: 'Andrew Chilton' + * } + * }, function(err, apiResponse) {}); + */ +DatastoreRequest.prototype.save = function(entities, callback) { + entities = arrify(entities); + + var insertIndexes = {}; + var mutations = []; + var methods = { + insert: true, + update: true, + upsert: true + }; + + // Iterate over the entity objects, build a proto from all keys and values, + // then place in the correct mutation array (insert, update, etc). + entities.forEach(function(entityObject, index) { + entityObject = extend(true, {}, entityObject); + + var mutation = {}; + var entityProto = {}; + var method = 'upsert'; + + if (entityObject.method) { + if (methods[entityObject.method]) { + method = entityObject.method; + } else { + throw new Error('Method ' + entityObject.method + ' not recognized.'); + } + } + + if (!entity.isKeyComplete(entityObject.key)) { + insertIndexes[index] = true; + } + + if (is.array(entityObject.data)) { + entityProto.properties = entityObject.data.reduce(function(acc, data) { + var value = entity.encodeValue(data.value); + + if (is.boolean(data.excludeFromIndexes)) { + var excluded = data.excludeFromIndexes; + var values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map(propAssign('excludeFromIndexes', excluded)); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } + } + + acc[data.name] = value; + + return acc; + }, {}); + } else { + entityProto = entity.entityToEntityProto(entityObject.data); + } + + entityProto.key = entity.keyToKeyProto(entityObject.key); + + mutation[method] = entityProto; + mutations.push(mutation); + }); + + var protoOpts = { + service: 'Datastore', + method: 'commit' + }; + + var reqOpts = { + mutations: mutations + }; + + function onCommit(err, resp) { + if (err || !resp) { + callback(err, resp); + return; + } + + arrify(resp.mutationResults).forEach(function(result, index) { + if (!result.key) { + return; + } + + if (insertIndexes[index]) { + var id = entity.keyFromKeyProto(result.key).id; + entities[index].key.id = id; + } + }); + + callback(null, resp); + } + + if (this.id) { + this.requests_.push(reqOpts); + this.requestCallbacks_.push(onCommit); + return; + } + + this.request_(protoOpts, reqOpts, onCommit); +}; + +/** + * Maps to {module:datastore#save}, forcing the method to be `update`. + */ +DatastoreRequest.prototype.update = function(entities, callback) { + entities = arrify(entities).map(propAssign('method', 'update')); + this.save(entities, callback); +}; + +/** + * Maps to {module:datastore#save}, forcing the method to be `upsert`. + */ +DatastoreRequest.prototype.upsert = function(entities, callback) { + entities = arrify(entities).map(propAssign('method', 'upsert')); + this.save(entities, callback); +}; + +/** + * Make a request to the API endpoint. Properties to indicate a transactional or + * non-transactional operation are added automatically. + * + * @param {string} method - Datastore action (allocateIds, commit, etc.). + * @param {object=} body - Request configuration object. + * @param {function} callback - The callback function. + * + * @private + */ +DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) { + if (!callback) { + callback = reqOpts; + reqOpts = {}; + } + + callback = callback || util.noop; + + var isTransaction = is.defined(this.id); + var method = protoOpts.method; + + reqOpts.projectId = this.projectId; + + // Set properties to indicate if we're in a transaction or not. + if (method === 'commit') { + if (isTransaction) { + reqOpts.mode = 'TRANSACTIONAL'; + reqOpts.transaction = this.id; + } else { + reqOpts.mode = 'NON_TRANSACTIONAL'; + } + } + + if (method === 'rollback') { + reqOpts.transaction = this.id; + } + + if (isTransaction && (method === 'lookup' || method === 'runQuery')) { + if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { + throw new Error('Read consistency cannot be specified in a transaction.'); + } + + reqOpts.readOptions = { + transaction: this.id + }; + } + + this.request(protoOpts, reqOpts, callback); +}; + +module.exports = DatastoreRequest; diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js new file mode 100644 index 00000000000..dff6be99732 --- /dev/null +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -0,0 +1,520 @@ +/*! + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*! + * @module datastore/transaction + */ + +'use strict'; + +var arrify = require('arrify'); +var flatten = require('lodash.flatten'); +var nodeutil = require('util'); +var prop = require('propprop'); + +/** + * @type {module:datastore/request} + * @private + */ +var DatastoreRequest = require('./request.js'); + +/** + * @type {module:common/util} + * @private + */ +var util = require('@google-cloud/common').util; + +/*! Developer Documentation + * + * @param {module:datastore} datastore - A Datastore instance. + * + * @example + * // This is how to create a transaction object directly using this Transaction + * // class. The following transaction object is created for use in the examples + * // in this file below. + * var Transaction = gcloud.datastore.Transaction; + * var datastore = gcloud.datastore({ projectId: 'project-id' }); + * var transaction = new Transaction(datastore, 'my-project-id'); + * transaction.id = '1234'; // Give the transaction an ID. + */ +/** + * A transaction is a set of Datastore operations on one or more entities. Each + * transaction is guaranteed to be atomic, which means that transactions are + * never partially applied. Either all of the operations in the transaction are + * applied, or none of them are applied. + * + * @resource [Transactions Reference]{@link https://cloud.google.com/datastore/docs/concepts/transactions} + * + * @constructor + * @alias module:datastore/transaction + * @mixes module:datastore/request + * + * @example + * var gcloud = require('google-cloud'); + * var datastore = gcloud.datastore({ + * projectId: 'my-project', + * keyFilename: '/path/to/keyfile.json' + * }); + * + * var transaction = datastore.transaction(); + */ +function Transaction(datastore) { + this.datastore = datastore; + + this.projectId = datastore.projectId; + + this.request = datastore.request.bind(datastore); + + // A queue for entity modifications made during the transaction. + this.modifiedEntities_ = []; + + // Queue the callbacks that process the API responses. + this.requestCallbacks_ = []; + + // Queue the requests to make when we send the transactional commit. + this.requests_ = []; +} + +nodeutil.inherits(Transaction, DatastoreRequest); + +/*! Developer Documentation + * + * Below, we override two methods that we inherit from DatastoreRequest: + * `delete` and `save`. This is done because: + * + * A) the documentation needs to be different for a transactional save, and + * B) we build up a "modifiedEntities_" array on this object, used to build + * the final commit request with. + */ + +/** + * Commit the remote transaction and finalize the current transaction instance. + * + * If the commit request fails, we will automatically rollback the transaction. + * + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request. + * If the commit fails, we automatically try to rollback the transaction (see + * {module:datastore/transaction#rollback}). + * @param {object} callback.apiResponse - The full API response. + * + * @example + * transaction.commit(function(err, apiResponse) { + * if (err) { + * // Transaction could not be committed. + * } + * }); + */ +Transaction.prototype.commit = function(callback) { + var self = this; + + callback = callback || util.noop; + + if (this.skipCommit) { + setImmediate(callback); + return; + } + + var keys = {}; + + this.modifiedEntities_ + + // Reverse the order of the queue to respect the "last queued request wins" + // behavior. + .reverse() + + // Limit the operations we're going to send through to only the most + // recently queued operations. E.g., if a user tries to save with the same + // key they just asked to be deleted, the delete request will be ignored, + // giving preference to the save operation. + .filter(function(modifiedEntity) { + var key = JSON.stringify(modifiedEntity.entity.key); + + if (!keys[key]) { + keys[key] = true; + return true; + } + }) + + // Group entities together by method: `save` mutations, then `delete`. Note: + // `save` mutations being first is required to maintain order when assigning + // IDs to incomplete keys. + .sort(function(a, b) { + return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; + }) + + // Group arguments together so that we only make one call to each method. + // This is important for `DatastoreRequest.save`, especially, as that method + // handles assigning auto-generated IDs to the original keys passed in. When + // we eventually execute the `save` method's API callback, having all the + // keys together is necessary to maintain order. + .reduce(function(acc, entityObject) { + var lastEntityObject = acc[acc.length - 1]; + var sameMethod = lastEntityObject && + entityObject.method === lastEntityObject.method; + + if (!lastEntityObject || !sameMethod) { + acc.push(entityObject); + } else { + lastEntityObject.args = lastEntityObject.args.concat(entityObject.args); + } + + return acc; + }, []) + + // Call each of the mutational methods (DatastoreRequest[save,delete]) to + // build up a `req` array on this instance. This will also build up a + // `callbacks` array, that is the same callback that would run if we were + // using `save` and `delete` outside of a transaction, to process the + // response from the API. + .forEach(function(modifiedEntity) { + var method = modifiedEntity.method; + var args = modifiedEntity.args.reverse(); + + DatastoreRequest.prototype[method].call(self, args, util.noop); + }); + + var protoOpts = { + service: 'Datastore', + method: 'commit' + }; + + // Take the `req` array built previously, and merge them into one request to + // send as the final transactional commit. + var reqOpts = { + mutations: flatten(this.requests_.map(prop('mutations'))) + }; + + this.request_(protoOpts, reqOpts, function(err, resp) { + if (err) { + // Rollback automatically for the user. + self.rollback(function() { + // Provide the error & API response from the failed commit to the user. + // Even a failed rollback should be transparent. + // RE: https://github.com/GoogleCloudPlatform/gcloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } + + // The `callbacks` array was built previously. These are the callbacks that + // handle the API response normally when using the DatastoreRequest.save and + // .delete methods. + self.requestCallbacks_.forEach(function(cb) { + cb(null, resp); + }); + + callback(null, resp); + }); +}; + +/** + * Create a query for the specified kind. See {module:datastore/query} for all + * of the available methods. + * + * @resource [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * + * @see {module:datastore/query} + * + * @param {string=} namespace - Namespace. + * @param {string} kind - The kind to query. + * @return {module:datastore/query} + * + * @example + * // Run the query inside the transaction. + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * var query = transaction.createQuery('Company'); + * + * query.run(function(err, entities) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + */ +Transaction.prototype.createQuery = function() { + return this.datastore.createQuery.apply(this, arguments); +}; + +/** + * Delete all entities identified with the specified key(s) in the current + * transaction. + * + * @param {Key|Key[]} key - Datastore key object(s). + * + * @example + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * // Delete a single entity. + * transaction.delete(datastore.key(['Company', 123])); + * + * // Delete multiple entities at once. + * transaction.delete([ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ]); + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + */ +Transaction.prototype.delete = function(entities) { + var self = this; + + arrify(entities).forEach(function(ent) { + self.modifiedEntities_.push({ + entity: { + key: ent + }, + method: 'delete', + args: [ent] + }); + }); +}; + +/** + * Reverse a transaction remotely and finalize the current transaction instance. + * + * @param {function} callback - The callback function. + * @param {?error} callback.err - An error returned while making this request. + * @param {object} callback.apiResponse - The full API response. + * + * @example + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.rollback(function(err) { + * if (!err) { + * // Transaction rolled back successfully. + * } + * }); + * }); + */ +Transaction.prototype.rollback = function(callback) { + var self = this; + + callback = callback || util.noop; + + var protoOpts = { + service: 'Datastore', + method: 'rollback' + }; + + this.request_(protoOpts, function(err, resp) { + self.skipCommit = true; + + callback(err || null, resp); + }); +}; + +/** + * Begin a remote transaction. In the callback provided, run your transactional + * commands. + * + * @param {function} callback - The function to execute within the context of + * a transaction. + * @param {?error} callback.err - An error returned while making this request. + * @param {module:datastore/transaction} callback.transaction - This transaction + * instance. + * @param {object} callback.apiResponse - The full API response. + * + * @example + * transaction.run(function(err, transaction) { + * // Perform Datastore transactional operations. + * var key = datastore.key(['Company', 123]); + * + * transaction.get(key, function(err, data) { + * data.name = 'Google'; + * + * transaction.save({ + * key: key, + * data: data + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * }); + */ +Transaction.prototype.run = function(callback) { + var self = this; + + callback = callback || util.noop; + + var protoOpts = { + service: 'Datastore', + method: 'beginTransaction' + }; + + this.request_(protoOpts, function(err, resp) { + if (err) { + callback(err, null, resp); + return; + } + + self.id = resp.transaction; + + callback(null, self, resp); + }); +}; + +/** + * Insert or update the specified object(s) in the current transaction. If a key + * is incomplete, its associated object is inserted and the original Key object + * is updated to contain the generated ID. + * + * This method will determine the correct Datastore method to execute (`upsert`, + * `insert`, or `update`) by using the key(s) provided. For example, if you + * provide an incomplete key (one without an ID), the request will create a new + * entity and have its ID automatically assigned. If you provide a complete key, + * the entity will be updated with the data specified. + * + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an entity's `data` property as an + * array. See below for an example. + * + * @param {object|object[]} entities - Datastore key object(s). + * @param {Key} entities.key - Datastore key object. + * @param {object|object[]} entities.data - Data to save with the provided key. + * If you provide an array of objects, you must use the explicit syntax: + * `name` for the name of the property and `value` for its value. You may + * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * + * @example + * //- + * // Save a single entity. + * // + * // Notice that we are providing an incomplete key. After the transaction is + * // committed, the Key object held by the `key` variable will be populated + * // with a path containing its generated ID. + * //- + * var key = datastore.key('Company'); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save({ + * key: key, + * data: { + * rating: '10' + * } + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * + * //- + * // To specify an `excludeFromIndexes` value for a Datastore entity, pass in + * // an array for the key's data. The above example would then look like: + * //- + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save({ + * key: key, + * data: [ + * { + * name: 'rating', + * value: '10', + * excludeFromIndexes: false + * } + * ] + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * + * //- + * // Save multiple entities at once. + * //- + * var companyKey = datastore.key(['Company', 123]); + * var productKey = datastore.key(['Product', 'Computer']); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save([ + * { + * key: companyKey, + * data: { + * HQ: 'Dallas, TX' + * } + * }, + * { + * key: productKey, + * data: { + * vendor: 'Dell' + * } + * } + * ]); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + */ +Transaction.prototype.save = function(entities) { + var self = this; + + arrify(entities).forEach(function(ent) { + self.modifiedEntities_.push({ + entity: { + key: ent.key + }, + method: 'save', + args: [ent] + }); + }); +}; + +module.exports = Transaction; diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js new file mode 100644 index 00000000000..f4752e2a7a7 --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -0,0 +1,814 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var assert = require('assert'); +var async = require('async'); + +var env = require('../../../system-test/env.js'); +var Datastore = require('../'); +var entity = require('../src/entity.js'); + +describe('Datastore', function() { + var testKinds = []; + var datastore = new Datastore(env); + + // Override the Key method so we can track what keys are created during the + // tests. They are then deleted in the `after` hook. + var key = datastore.key; + datastore.key = function() { + var keyObject = key.apply(this, arguments); + testKinds.push(keyObject.kind); + return keyObject; + }; + + after(function(done) { + function deleteEntities(kind, callback) { + var query = datastore.createQuery(kind) + .select('__key__'); + + datastore.runQuery(query, function(err, entities) { + if (err) { + callback(err); + return; + } + + var keys = entities.map(function(entity) { + return entity.key; + }); + + datastore.delete(keys, callback); + }); + } + + async.each(testKinds, deleteEntities, done); + }); + + it('should allocate IDs', function(done) { + datastore.allocateIds(datastore.key('Kind'), 10, function(err, keys) { + assert.ifError(err); + assert.strictEqual(keys.length, 10); + assert.strictEqual(entity.isKeyComplete(keys[0]), true); + done(); + }); + }); + + describe('create, retrieve and delete', function() { + var post = { + title: 'How to make the perfect pizza in your grill', + tags: ['pizza', 'grill'], + publishedAt: new Date(2001, 0, 1), + author: 'Silvano', + isDraft: false, + wordCount: 400, + rating: 5.0, + likes: null, + metadata: { + views: 100 + } + }; + + it('should save/get/delete with a key name', function(done) { + var postKey = datastore.key(['Post', 'post1']); + + datastore.save({ key: postKey, data: post }, function(err) { + assert.ifError(err); + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity.data, post); + + datastore.delete(postKey, done); + }); + }); + }); + + it('should save/get/delete with a numeric key id', function(done) { + var postKey = datastore.key(['Post', 123456789]); + + datastore.save({ key: postKey, data: post }, function(err) { + assert.ifError(err); + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity.data, post); + + datastore.delete(postKey, done); + }); + }); + }); + + it('should save/get/delete a buffer', function(done) { + var postKey = datastore.key(['Post']); + var data = { + buf: new Buffer('010100000000000000000059400000000000006940', 'hex') + }; + + datastore.save({ key: postKey, data: data }, function(err) { + assert.ifError(err); + + var assignedId = postKey.id; + assert(assignedId); + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity.data, data); + + datastore.delete(datastore.key(['Post', assignedId]), done); + }); + }); + }); + + it('should save/get/delete with a generated key id', function(done) { + var postKey = datastore.key('Post'); + + datastore.save({ key: postKey, data: post }, function(err) { + assert.ifError(err); + + // The key's path should now be complete. + assert(postKey.id); + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity.data, post); + + datastore.delete(postKey, done); + }); + }); + }); + + it('should fail explicitly set second insert on save', function(done) { + var postKey = datastore.key('Post'); + + datastore.save({ key: postKey, data: post }, function(err) { + assert.ifError(err); + + // The key's path should now be complete. + assert(postKey.id); + + datastore.save({ + key: postKey, + method: 'insert', + data: post + }, function(err) { + assert.notStrictEqual(err, null); // should fail insert + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity.data, post); + + datastore.delete(postKey, done); + }); + }); + }); + }); + + it('should fail explicitly set first update on save', function(done) { + var postKey = datastore.key('Post'); + + datastore.save({ + key: postKey, + method: 'update', + data: post + }, function(err) { + assert.notStrictEqual(err, null); + done(); + }); + }); + + it('should save/get/delete multiple entities at once', function(done) { + var post2 = { + title: 'How to make the perfect homemade pasta', + tags: ['pasta', 'homemade'], + publishedAt: Date('2001-01-01T00:00:00.000Z'), + author: 'Silvano', + isDraft: false, + wordCount: 450, + rating: 4.5, + }; + + var key1 = datastore.key('Post'); + var key2 = datastore.key('Post'); + + datastore.save([ + { key: key1, data: post }, + { key: key2, data: post2 } + ], function(err) { + assert.ifError(err); + + datastore.get([key1, key2], function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, 2); + + datastore.delete([key1, key2], done); + }); + }); + }); + + it('should get multiple entities in a stream', function(done) { + var key1 = datastore.key('Post'); + var key2 = datastore.key('Post'); + + datastore.save([ + { key: key1, data: post }, + { key: key2, data: post } + ], function(err) { + assert.ifError(err); + + var numEntitiesEmitted = 0; + + datastore.get([key1, key2]) + .on('error', done) + .on('data', function() { + numEntitiesEmitted++; + }) + .on('end', function() { + assert.strictEqual(numEntitiesEmitted, 2); + + datastore.delete([key1, key2], done); + }); + }); + }); + + it('should save keys as a part of entity and query by key', function(done) { + var personKey = datastore.key(['People', 'US', 'Person', 'name']); + + datastore.save({ + key: personKey, + data: { + fullName: 'Full name', + linkedTo: personKey // himself + } + }, function(err) { + assert.ifError(err); + + var query = datastore.createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); + + datastore.runQuery(query, function(err, results) { + assert.ifError(err); + + assert.strictEqual(results[0].data.fullName, 'Full name'); + assert.deepEqual(results[0].data.linkedTo, personKey); + + datastore.delete(personKey, done); + }); + }); + }); + + describe('entity types', function() { + it('should save and decode an int', function(done) { + var integerValue = 2015; + var integerType = Datastore.int(integerValue); + + var key = datastore.key('Person'); + + datastore.save({ + key: key, + data: { + year: integerType + } + }, function(err) { + assert.ifError(err); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.data.year, integerValue); + done(); + }); + }); + }); + + it('should save and decode a double', function(done) { + var doubleValue = 99.99; + var doubleType = Datastore.double(doubleValue); + + var key = datastore.key('Person'); + + datastore.save({ + key: key, + data: { + nines: doubleType + } + }, function(err) { + assert.ifError(err); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.data.nines, doubleValue); + done(); + }); + }); + }); + + it('should save and decode a geo point', function(done) { + var geoPointValue = { + latitude: 40.6894, + longitude: -74.0447 + }; + var geoPointType = Datastore.geoPoint(geoPointValue); + + var key = datastore.key('Person'); + + datastore.save({ + key: key, + data: { + location: geoPointType + } + }, function(err) { + assert.ifError(err); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.deepEqual(entity.data.location, geoPointValue); + done(); + }); + }); + }); + }); + }); + + describe('querying the datastore', function() { + var ancestor = datastore.key(['Book', 'GoT']); + + var keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ['Catelyn'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Arya'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Sansa'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Robb'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Bran'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'] + ].map(function(path) { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); + }); + + var characters = [ + { + name: 'Rickard', + family: 'Stark', + appearances: 9, + alive: false + }, + { + name: 'Eddard', + family: 'Stark', + appearances: 9, + alive: false + }, + { + name: 'Catelyn', + family: ['Stark', 'Tully'], + appearances: 26, + alive: false + }, + { + name: 'Arya', + family: 'Stark', + appearances: 33, + alive: true + }, + { + name: 'Sansa', + family: 'Stark', + appearances: 31, + alive: true + }, + { + name: 'Robb', + family: 'Stark', + appearances: 22, + alive: false + }, + { + name: 'Bran', + family: 'Stark', + appearances: 25, + alive: true + }, + { + name: 'Jon Snow', + family: 'Stark', + appearances: 32, + alive: true + } + ]; + + before(function(done) { + var keysToSave = keys.map(function(key, index) { + return { + key: key, + data: characters[index] + }; + }); + + datastore.save(keysToSave, done); + }); + + after(function(done) { + datastore.delete(keys, done); + }); + + it('should limit queries', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .limit(5); + + datastore.runQuery(q, function(err, firstEntities, info) { + assert.ifError(err); + assert.strictEqual(firstEntities.length, 5); + + var secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .start(info.endCursor); + + datastore.runQuery(secondQ, function(err, secondEntities) { + assert.ifError(err); + assert.strictEqual(secondEntities.length, 3); + done(); + }); + }); + }); + + it('should not go over a limit', function(done) { + var limit = 3; + + var q = datastore.createQuery('Character') + .hasAncestor(ancestor).limit(limit); + + datastore.runQuery(q, function(err, results) { + assert.ifError(err); + assert.strictEqual(results.length, limit); + done(); + }); + }); + + it('should run a query as a stream', function(done) { + var q = datastore.createQuery('Character').hasAncestor(ancestor); + + var resultsReturned = 0; + + datastore.runQuery(q) + .on('error', done) + .on('data', function() { resultsReturned++; }) + .on('end', function() { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); + }); + + it('should not go over a limit with a stream', function(done) { + var limit = 3; + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); + + var resultsReturned = 0; + + datastore.runQuery(q) + .on('error', done) + .on('data', function() { resultsReturned++; }) + .on('end', function() { + assert.strictEqual(resultsReturned, limit); + done(); + }); + }); + + it('should filter queries with simple indexes', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '>=', 20); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, 6); + done(); + }); + }); + + it('should filter queries with defined indexes', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, 6); + done(); + }); + }); + + it('should filter by ancestor', function(done) { + var q = datastore.createQuery('Character').hasAncestor(ancestor); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, characters.length); + done(); + }); + }); + + it('should filter by key', function(done) { + var key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); + + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('__key__', key); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, 1); + done(); + }); + }); + + it('should order queries', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances'); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + + assert.strictEqual(entities[0].data.name, characters[0].name); + assert.strictEqual(entities[7].data.name, characters[3].name); + + done(); + }); + }); + + it('should select projections', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .select(['name', 'family']); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + + assert.deepEqual(entities[0].data, { + name: 'Arya', + family: 'Stark' + }); + + assert.deepEqual(entities[8].data, { + name: 'Sansa', + family: 'Stark' + }); + + done(); + }); + }); + + it('should paginate with offset and limit', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(3) + .order('appearances'); + + datastore.runQuery(q, function(err, entities, info) { + assert.ifError(err); + + assert.strictEqual(entities.length, 3); + assert.strictEqual(entities[0].data.name, 'Robb'); + assert.strictEqual(entities[2].data.name, 'Catelyn'); + + var secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info.endCursor); + + datastore.runQuery(secondQ, function(err, secondEntities) { + assert.ifError(err); + + assert.strictEqual(secondEntities.length, 3); + assert.strictEqual(secondEntities[0].data.name, 'Sansa'); + assert.strictEqual(secondEntities[2].data.name, 'Arya'); + + done(); + }); + }); + }); + + it('should resume from a start cursor', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(2) + .order('appearances'); + + datastore.runQuery(q, function(err, entities, info) { + assert.ifError(err); + + var secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info.endCursor); + + datastore.runQuery(secondQ, function(err, secondEntities) { + assert.ifError(err); + + assert.strictEqual(secondEntities.length, 4); + assert.strictEqual(secondEntities[0].data.name, 'Catelyn'); + assert.strictEqual(secondEntities[3].data.name, 'Arya'); + + done(); + }); + }); + }); + + it('should group queries', function(done) { + var q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .groupBy('appearances'); + + datastore.runQuery(q, function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, characters.length - 1); + done(); + }); + }); + + it('should query from the Query object', function(done) { + var q = datastore.createQuery('Character'); + + q.run(done); + }); + }); + + describe('transactions', function() { + it('should run in a transaction', function(done) { + var key = datastore.key(['Company', 'Google']); + var obj = { + url: 'www.google.com' + }; + + var transaction = datastore.transaction(); + + transaction.run(function(err) { + assert.ifError(err); + + transaction.get(key, function(err) { + assert.ifError(err); + + transaction.save({ key: key, data: obj }); + + transaction.commit(function(err) { + assert.ifError(err); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.deepEqual(entity.data, obj); + done(); + }); + }); + }); + }); + }); + + it('should commit all saves and deletes at the end', function(done) { + var deleteKey = datastore.key(['Company', 'Subway']); + var key = datastore.key(['Company', 'Google']); + var incompleteKey = datastore.key('Company'); + + datastore.save({ + key: deleteKey, + data: {} + }, function(err) { + assert.ifError(err); + + var transaction = datastore.transaction(); + + transaction.run(function(err) { + assert.ifError(err); + + transaction.delete(deleteKey); + + transaction.save([ + { + key: key, + data: { rating: 10 } + }, + { + key: incompleteKey, + data: { rating: 100 } + } + ]); + + transaction.commit(function(err) { + assert.ifError(err); + + // Incomplete key should have been given an ID. + assert.strictEqual(incompleteKey.path.length, 2); + + async.parallel([ + // The key queued for deletion should have been deleted. + function(callback) { + datastore.get(deleteKey, function(err, entity) { + assert.ifError(err); + assert.strictEqual(typeof entity, 'undefined'); + callback(); + }); + }, + + // Data should have been updated on the key. + function(callback) { + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.data.rating, 10); + callback(); + }); + } + ], done); + }); + }); + }); + }); + + it('should use the last modification to a key', function(done) { + var incompleteKey = datastore.key('Company'); + var key = datastore.key(['Company', 'Google']); + + var transaction = datastore.transaction(); + + transaction.run(function(err) { + assert.ifError(err); + + transaction.save([ + { + key: key, + data: { + rating: 10 + } + }, + { + key: incompleteKey, + data: { + rating: 100 + } + } + ]); + + transaction.delete(key); + + transaction.commit(function(err) { + assert.ifError(err); + + // Should not return a result. + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity, undefined); + + // Incomplete key should have been given an id. + assert.strictEqual(incompleteKey.path.length, 2); + done(); + }); + }); + }); + }); + + it('should query within a transaction', function(done) { + var transaction = datastore.transaction(); + + transaction.run(function(err) { + assert.ifError(err); + + var query = transaction.createQuery('Company'); + + query.run(function(err, entities) { + if (err) { + transaction.rollback(done); + return; + } + + assert(entities.length > 0); + + transaction.commit(done); + }); + }); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js new file mode 100644 index 00000000000..feea6cae641 --- /dev/null +++ b/handwritten/nodejs-datastore/test/entity.js @@ -0,0 +1,866 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var assert = require('assert'); +var deepStrictEqual = require('deep-strict-equal'); +assert.deepStrictEqual = assert.deepStrictEqual || function() { + return assert(deepStrictEqual.apply(this, arguments)); +}; + +var Datastore = require('../'); + +describe('entity', function() { + var entity; + + beforeEach(function() { + delete require.cache[require.resolve('../src/entity.js')]; + entity = require('../src/entity.js'); + }); + + describe('Double', function() { + it('should store the value', function() { + var value = 8.3; + + var double = new entity.Double(value); + assert.strictEqual(double.value, value); + }); + }); + + describe('Double', function() { + it('should store the value', function() { + var value = 8.3; + + var double = new entity.Double(value); + assert.strictEqual(double.value, value); + }); + }); + + describe('Int', function() { + it('should store the value', function() { + var value = 8; + + var int = new entity.Int(value); + assert.strictEqual(int.value, value); + }); + }); + + describe('GeoPoint', function() { + it('should store the value', function() { + var value = { + latitude: 24, + longitude: 88 + }; + + var geoPoint = new entity.GeoPoint(value); + assert.strictEqual(geoPoint.value, value); + }); + }); + + describe('Key', function() { + it('should assign the namespace', function() { + var namespace = 'NS'; + var key = new entity.Key({ namespace: namespace, path: [] }); + assert.strictEqual(key.namespace, namespace); + }); + + it('should assign the kind', function() { + var kind = 'kind'; + var key = new entity.Key({ path: [kind] }); + assert.strictEqual(key.kind, kind); + }); + + it('should assign the ID', function() { + var id = 11; + var key = new entity.Key({ path: ['Kind', id] }); + assert.strictEqual(key.id, id); + }); + + it('should assign the name', function() { + var name = 'name'; + var key = new entity.Key({ path: ['Kind', name] }); + assert.strictEqual(key.name, name); + }); + + it('should assign a parent', function() { + var key = new entity.Key({ path: ['ParentKind', 1, 'Kind', 1] }); + assert(key.parent instanceof entity.Key); + }); + + it('should always compute the correct path', function() { + var key = new entity.Key({ path: ['ParentKind', 1, 'Kind', 1] }); + assert.deepEqual(key.path, ['ParentKind', 1, 'Kind', 1]); + + key.parent.kind = 'GrandParentKind'; + key.kind = 'ParentKind'; + + assert.deepEqual(key.path, ['GrandParentKind', 1, 'ParentKind', 1]); + }); + }); + + describe('decodeValueProto', function() { + it('should decode arrays', function() { + var expectedValue = [{}]; + + var valueProto = { + value_type: 'arrayValue', + arrayValue: { + values: expectedValue + } + }; + + var run = false; + + var decodeValueProto = entity.decodeValueProto; + entity.decodeValueProto = function(valueProto) { + if (!run) { + run = true; + return decodeValueProto.apply(null, arguments); + } + + assert.strictEqual(valueProto, expectedValue[0]); + return valueProto; + }; + + assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode blobs', function() { + var expectedValue = new Buffer('Hi'); + + var valueProto = { + value_type: 'blobValue', + blobValue: expectedValue.toString('base64') + }; + + assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode null', function() { + var expectedValue = null; + + var valueProto = { + value_type: 'nullValue', + nullValue: 0 + }; + + var decodedValue = entity.decodeValueProto(valueProto); + assert.deepStrictEqual(decodedValue, expectedValue); + }); + + it('should decode doubles', function() { + var expectedValue = 8.3; + + var valueProto = { + value_type: 'doubleValue', + doubleValue: expectedValue + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode ints', function() { + var expectedValue = 8; + + var valueProto = { + value_type: 'integerValue', + integerValue: expectedValue + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode entities', function() { + var expectedValue = {}; + + var valueProto = { + value_type: 'entityValue', + entityValue: expectedValue + }; + + entity.entityFromEntityProto = function(entityProto) { + assert.strictEqual(entityProto, expectedValue); + return expectedValue; + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode keys', function() { + var expectedValue = {}; + + var valueProto = { + value_type: 'keyValue', + keyValue: expectedValue + }; + + entity.keyFromKeyProto = function(keyProto) { + assert.strictEqual(keyProto, expectedValue); + return expectedValue; + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should decode timestamps', function() { + var seconds = String(Date.now() / 1000); + var expectedValue = new Date(parseInt(seconds, 10) * 1000); + + var valueProto = { + value_type: 'timestampValue', + timestampValue: { + seconds: seconds + } + }; + + assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should return the value if no conversions are necessary', function() { + var expectedValue = false; + + var valueProto = { + value_type: 'booleanValue', + booleanValue: expectedValue + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + }); + + describe('encodeValue', function() { + it('should encode a boolean', function() { + var value = true; + + var expectedValueProto = { + booleanValue: value + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode null', function() { + var value = null; + + var expectedValueProto = { + nullValue: 0 + }; + + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode an int', function() { + var value = 8; + + var expectedValueProto = { + integerValue: value + }; + + entity.Int = function(value_) { + assert.strictEqual(value_, value); + this.value = value_; + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode an Int object', function() { + var value = new entity.Int(3); + + var expectedValueProto = { + integerValue: value.value + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a double', function() { + var value = 8.3; + + var expectedValueProto = { + doubleValue: value + }; + + entity.Double = function(value_) { + assert.strictEqual(value_, value); + this.value = value_; + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a Double object', function() { + var value = new entity.Double(3); + + var expectedValueProto = { + doubleValue: value.value + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a GeoPoint object', function() { + var value = new entity.GeoPoint(); + + var expectedValueProto = { + geoPointValue: value.value + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a date', function() { + var value = new Date(); + var seconds = value.getTime() / 1000; + var secondsRounded = Math.floor(seconds); + + var expectedValueProto = { + timestampValue: { + seconds: secondsRounded, + nanos: Math.floor((seconds - secondsRounded) * 1e9) + } + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a string', function() { + var value = 'Hi'; + + var expectedValueProto = { + stringValue: value + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a buffer', function() { + var value = new Buffer('Hi'); + + var expectedValueProto = { + blobValue: value.toString('base64') + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode an array', function() { + var value = [{}]; + + var expectedValueProto = { + arrayValue: { + values: value + } + }; + + var run = false; + + var encodeValue = entity.encodeValue; + entity.encodeValue = function(value_) { + if (!run) { + run = true; + return encodeValue.apply(null, arguments); + } + + assert.strictEqual(value_, value[0]); + return value_; + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode a Key', function() { + var value = new entity.Key({ + namespace: 'ns', + path: ['Kind', 1] + }); + + var expectedValueProto = { + keyValue: value + }; + + entity.keyToKeyProto = function(key) { + assert.strictEqual(key, value); + return value; + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode an object', function() { + var value = { + key: 'value' + }; + + var expectedValueProto = { + entityValue: { + properties: { + key: value.key + } + } + }; + + var run = false; + + var encodeValue = entity.encodeValue; + entity.encodeValue = function(value_) { + if (!run) { + run = true; + return encodeValue.apply(null, arguments); + } + + assert.strictEqual(value_, value.key); + return value_; + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should encode an empty object', function() { + var value = {}; + + var expectedValueProto = { + entityValue: { + properties: {} + } + }; + + assert.deepEqual(entity.encodeValue(value), expectedValueProto); + }); + + it('should throw if an invalid value was provided', function() { + assert.throws(function() { + entity.encodeValue(); + }, /Unsupported field value/); + }); + }); + + describe('entityFromEntityProto', function() { + it('should convert entity proto to entity', function() { + var expectedEntity = { + name: 'Stephen' + }; + + var entityProto = { + properties: { + name: { + value_type: 'stringValue', + stringValue: expectedEntity.name + } + } + }; + + assert.deepEqual( + entity.entityFromEntityProto(entityProto), + expectedEntity + ); + }); + }); + + describe('entityToEntityProto', function() { + it('should format an entity', function() { + var value = 'Stephen'; + + var entityObject = { + name: value + }; + + var expectedEntityProto = { + key: null, + properties: entityObject + }; + + entity.encodeValue = function(value_) { + assert.strictEqual(value_, value); + return value; + }; + + assert.deepEqual( + entity.entityToEntityProto(entityObject), + expectedEntityProto + ); + }); + }); + + describe('formatArray', function() { + it('should convert protos to key/data entity array', function() { + var key = {}; + + var entityProto = { + key: key + }; + + var results = [ + { + entity: entityProto + } + ]; + + var expectedResults = [ + { + key: key, + data: entityProto + } + ]; + + entity.keyFromKeyProto = function(key_) { + assert.strictEqual(key_, key); + return key; + }; + + entity.entityFromEntityProto = function(entityProto_) { + assert.strictEqual(entityProto_, entityProto); + return entityProto; + }; + + assert.deepEqual(entity.formatArray(results), expectedResults); + }); + }); + + describe('isKeyComplete', function() { + it('should convert key to key proto', function(done) { + var key = new entity.Key({ + path: ['Kind', 123] + }); + + entity.keyToKeyProto = function(key_) { + assert.strictEqual(key_, key); + setImmediate(done); + return key; + }; + + entity.isKeyComplete(key); + }); + + it('should return true if key has id', function() { + var key = new entity.Key({ + path: ['Kind', 123] + }); + + assert.strictEqual(entity.isKeyComplete(key), true); + }); + + it('should return true if key has name', function() { + var key = new entity.Key({ + path: ['Kind', 'name'] + }); + + assert.strictEqual(entity.isKeyComplete(key), true); + }); + + it('should return false if key does not have name or ID', function() { + var key = new entity.Key({ + path: ['Kind'] + }); + + assert.strictEqual(entity.isKeyComplete(key), false); + }); + }); + + describe('keyFromKeyProto', function() { + var NAMESPACE = 'Namespace'; + + var keyProto = { + partitionId: { + namespaceId: NAMESPACE, + projectId: 'project-id' + }, + path: [ + { + kind: 'Kind', + id: '111' + }, + { + kind: 'Kind2', + name: 'name' + } + ] + }; + + it('should set the namespace', function(done) { + entity.Key = function(keyOptions) { + assert.strictEqual(keyOptions.namespace, NAMESPACE); + done(); + }; + + entity.keyFromKeyProto(keyProto); + }); + + it('should create a proper Key', function(done) { + entity.Key = function(keyOptions) { + assert.deepEqual(keyOptions, { + namespace: NAMESPACE, + path: [ + 'Kind', + 111, + 'Kind2', + 'name' + ] + }); + + done(); + }; + + entity.keyFromKeyProto(keyProto); + }); + + it('should return the created Key', function() { + var expectedValue = {}; + + entity.Key = function() { + return expectedValue; + }; + + assert.strictEqual(entity.keyFromKeyProto(keyProto), expectedValue); + }); + + it('should throw if path is invalid', function(done) { + var keyProtoInvalid = { + partitionId: { + namespaceId: 'Namespace', + projectId: 'project-id' + }, + path: [ + { + kind: 'Kind' + }, + { + kind: 'Kind2' + } + ] + }; + + try { + entity.keyFromKeyProto(keyProtoInvalid); + } catch(e) { + assert.strictEqual(e.name, 'InvalidKey'); + assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); + done(); + } + }); + }); + + describe('keyToKeyProto', function() { + it('should handle hierarchical key definitions', function() { + var key = new entity.Key({ + path: ['Kind1', 1, 'Kind2', 'name'] + }); + + var keyProto = entity.keyToKeyProto(key); + + assert.strictEqual(keyProto.partitionId, undefined); + + assert.strictEqual(keyProto.path[0].kind, 'Kind1'); + assert.strictEqual(keyProto.path[0].id, 1); + assert.strictEqual(keyProto.path[0].name, undefined); + + assert.strictEqual(keyProto.path[1].kind, 'Kind2'); + assert.strictEqual(keyProto.path[1].id, undefined); + assert.strictEqual(keyProto.path[1].name, 'name'); + }); + + it('should detect the namespace of the hierarchical keys', function() { + var key = new entity.Key({ + namespace: 'Namespace', + path: ['Kind1', 1, 'Kind2', 'name'] + }); + + var keyProto = entity.keyToKeyProto(key); + + assert.strictEqual(keyProto.partitionId.namespaceId, 'Namespace'); + + assert.strictEqual(keyProto.path[0].kind, 'Kind1'); + assert.strictEqual(keyProto.path[0].id, 1); + assert.strictEqual(keyProto.path[0].name, undefined); + + assert.strictEqual(keyProto.path[1].kind, 'Kind2'); + assert.strictEqual(keyProto.path[1].id, undefined); + assert.strictEqual(keyProto.path[1].name, 'name'); + }); + + it('should handle incomplete keys with & without namespaces', function() { + var incompleteKey = new entity.Key({ + path: ['Kind'] + }); + + var incompleteKeyWithNs = new entity.Key({ + namespace: 'Namespace', + path: ['Kind'] + }); + + var keyProto = entity.keyToKeyProto(incompleteKey); + var keyProtoWithNs = entity.keyToKeyProto(incompleteKeyWithNs); + + assert.strictEqual(keyProto.partitionId, undefined); + assert.strictEqual(keyProto.path[0].kind, 'Kind'); + assert.strictEqual(keyProto.path[0].id, undefined); + assert.strictEqual(keyProto.path[0].name, undefined); + + assert.strictEqual(keyProtoWithNs.partitionId.namespaceId, 'Namespace'); + assert.strictEqual(keyProtoWithNs.path[0].kind, 'Kind'); + assert.strictEqual(keyProtoWithNs.path[0].id, undefined); + assert.strictEqual(keyProtoWithNs.path[0].name, undefined); + }); + + it('should throw if key contains 0 items', function(done) { + var key = new entity.Key({ + path: [] + }); + + try { + entity.keyToKeyProto(key); + } catch(e) { + assert.strictEqual(e.name, 'InvalidKey'); + assert.strictEqual(e.message, 'A key should contain at least a kind.'); + done(); + } + }); + + it('should throw if key path contains null ids', function(done) { + var key = new entity.Key({ + namespace: 'Namespace', + path: ['Kind1', null, 'Company'] + }); + + try { + entity.keyToKeyProto(key); + } catch(e) { + assert.strictEqual(e.name, 'InvalidKey'); + assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); + done(); + } + }); + + it('should not throw if key is incomplete', function() { + var key = new entity.Key({ + namespace: 'Namespace', + path: ['Kind1', 123, 'Company', null] + }); + + assert.doesNotThrow(function() { + entity.keyToKeyProto(key); + }); + }); + }); + + describe('queryToQueryProto', function() { + var queryProto = { + distinctOn: [ + { + name: 'name' + } + ], + kind: [ + { + name: 'Kind1' + } + ], + order: [ + { + property: { + name: 'name' + }, + direction: 'ASCENDING' + } + ], + projection: [ + { + property: { + name: 'name' + } + } + ], + endCursor: 'end', + limit: { + value: 1 + }, + offset: 1, + startCursor: 'start', + filter: { + compositeFilter: { + filters: [ + { + propertyFilter: { + property: { + name: 'name' + }, + op: 'EQUAL', + value: { + stringValue: 'John' + } + } + }, + { + propertyFilter: { + property: { + name: '__key__' + }, + op: 'HAS_ANCESTOR', + value: { + keyValue: { + path: [ + { + kind: 'Kind2', + name: 'somename' + } + ] + } + } + } + } + ], + op: 'AND' + } + } + }; + + it('should support all configurations of a query', function() { + var ancestorKey = new entity.Key({ + path: ['Kind2', 'somename'] + }); + + var ds = new Datastore({ projectId: 'project-id' }); + + var query = ds.createQuery('Kind1') + .filter('name', 'John') + .start('start') + .end('end') + .groupBy(['name']) + .order('name') + .select('name') + .limit(1) + .offset(1) + .hasAncestor(ancestorKey); + + assert.deepEqual(entity.queryToQueryProto(query), queryProto); + }); + + it('should handle buffer start and end values', function() { + var ds = new Datastore({ projectId: 'project-id' }); + var startVal = new Buffer('start'); + var endVal = new Buffer('end'); + + var query = ds.createQuery('Kind1') + .start(startVal) + .end(endVal); + + var queryProto = entity.queryToQueryProto(query); + assert.strictEqual(queryProto.endCursor, endVal.toString('base64')); + assert.strictEqual(queryProto.startCursor, startVal.toString('base64')); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js new file mode 100644 index 00000000000..b33733ed885 --- /dev/null +++ b/handwritten/nodejs-datastore/test/index.js @@ -0,0 +1,336 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var entity = { + Int: function(value) { + this.value = value; + }, + Double: function(value) { + this.value = value; + }, + GeoPoint: function(value) { + this.value = value; + }, + Key: function() { + this.calledWith_ = arguments; + } +}; + +var assert = require('assert'); +var extend = require('extend'); +var proxyquire = require('proxyquire'); + +var util = require('@google-cloud/common').util; +var PKG = require('../package.json'); + +var fakeUtil = extend({}, util); + +function FakeQuery() { + this.calledWith_ = arguments; +} + +function FakeTransaction() { + this.calledWith_ = arguments; +} + +function FakeGrpcService() { + this.calledWith_ = arguments; +} + +describe('Datastore', function() { + var Datastore; + var datastore; + + var PROJECT_ID = 'project-id'; + var NAMESPACE = 'namespace'; + + var OPTIONS = { + projectId: PROJECT_ID, + apiEndpoint: 'http://endpoint', + credentials: {}, + keyFilename: 'key/file', + email: 'email', + namespace: NAMESPACE + }; + + before(function() { + Datastore = proxyquire('../', { + '@google-cloud/common': { + GrpcService: FakeGrpcService, + util: fakeUtil + }, + './entity.js': entity, + './query.js': FakeQuery, + './transaction.js': FakeTransaction + }); + }); + + beforeEach(function() { + datastore = new Datastore({ + projectId: PROJECT_ID, + namespace: NAMESPACE + }); + }); + + describe('instantiation', function() { + it('should normalize the arguments', function() { + var normalizeArguments = fakeUtil.normalizeArguments; + var normalizeArgumentsCalled = false; + var fakeContext = {}; + + fakeUtil.normalizeArguments = function(context, options_, config) { + normalizeArgumentsCalled = true; + assert.strictEqual(context, fakeContext); + assert.strictEqual(OPTIONS, options_); + assert.strictEqual(config.projectIdRequired, false); + return options_; + }; + + Datastore.call(fakeContext, OPTIONS); + assert(normalizeArgumentsCalled); + + fakeUtil.normalizeArguments = normalizeArguments; + }); + + it('should set the default base URL', function() { + assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com'); + }); + + it('should set default API connection details', function(done) { + var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + + Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { + Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; + + assert.strictEqual(customApiEndpoint, OPTIONS.apiEndpoint); + done(); + }; + + new Datastore(OPTIONS); + }); + + it('should localize the namespace', function() { + assert.strictEqual(datastore.namespace, NAMESPACE); + }); + + it('should localize the projectId', function() { + assert.strictEqual(datastore.projectId, PROJECT_ID); + }); + + it('should use DATASTORE_PROJECT_ID', function() { + var datastoreProjectIdCached = process.env.DATASTORE_PROJECT_ID; + var projectId = 'overridden-project-id'; + + process.env.DATASTORE_PROJECT_ID = projectId; + + var datastore = new Datastore(OPTIONS); + process.env.DATASTORE_PROJECT_ID = datastoreProjectIdCached; + + assert.strictEqual(datastore.projectId, projectId); + }); + + it('should inherit from GrpcService', function() { + var datastore = new Datastore(OPTIONS); + + var calledWith = datastore.calledWith_[0]; + + assert.strictEqual(calledWith.projectIdRequired, false); + assert.strictEqual(calledWith.baseUrl, datastore.baseUrl_); + assert.strictEqual(calledWith.customEndpoint, datastore.customEndpoint_); + assert.strictEqual(calledWith.service, 'datastore'); + assert.strictEqual(calledWith.apiVersion, 'v1beta3'); + assert.deepEqual(calledWith.scopes, [ + 'https://www.googleapis.com/auth/datastore' + ]); + assert.strictEqual(calledWith.userAgent, PKG.name + '/' + PKG.version); + }); + }); + + describe('double', function() { + it('should expose Double builder', function() { + var aDouble = 7.0; + var double = Datastore.double(aDouble); + assert.strictEqual(double.value, aDouble); + }); + }); + + describe('geoPoint', function() { + it('should expose GeoPoint builder', function() { + var aGeoPoint = { latitude: 24, longitude: 88 }; + var geoPoint = Datastore.geoPoint(aGeoPoint); + assert.strictEqual(geoPoint.value, aGeoPoint); + }); + }); + + describe('int', function() { + it('should expose Int builder', function() { + var anInt = 7; + var int = Datastore.int(anInt); + assert.strictEqual(int.value, anInt); + }); + }); + + describe('MORE_RESULTS_AFTER_CURSOR', function() { + it('should expose a MORE_RESULTS_AFTER_CURSOR helper', function() { + assert.strictEqual( + Datastore.MORE_RESULTS_AFTER_CURSOR, + 'MORE_RESULTS_AFTER_CURSOR' + ); + }); + }); + + describe('MORE_RESULTS_AFTER_LIMIT', function() { + it('should expose a MORE_RESULTS_AFTER_LIMIT helper', function() { + assert.strictEqual( + Datastore.MORE_RESULTS_AFTER_LIMIT, + 'MORE_RESULTS_AFTER_LIMIT' + ); + }); + }); + + describe('NO_MORE_RESULTS', function() { + it('should expose a NO_MORE_RESULTS helper', function() { + assert.strictEqual(Datastore.NO_MORE_RESULTS, 'NO_MORE_RESULTS'); + }); + }); + + describe('createQuery', function() { + it('should return a Query object', function() { + var namespace = 'namespace'; + var kind = ['Kind']; + + var query = datastore.createQuery(namespace, kind); + assert(query instanceof FakeQuery); + + assert.strictEqual(query.calledWith_[0], datastore); + assert.strictEqual(query.calledWith_[1], namespace); + assert.deepEqual(query.calledWith_[2], kind); + }); + + it('should include the default namespace', function() { + var kind = ['Kind']; + var query = datastore.createQuery(kind); + + assert.strictEqual(query.calledWith_[0], datastore); + assert.strictEqual(query.calledWith_[1], datastore.namespace); + assert.deepEqual(query.calledWith_[2], kind); + }); + }); + + describe('key', function() { + it('should return a Key object', function() { + var options = {}; + var key = datastore.key(options); + + assert.strictEqual(key.calledWith_[0], options); + }); + + it('should use a non-object argument as the path', function() { + var options = 'path'; + var key = datastore.key(options); + + assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); + assert.deepEqual(key.calledWith_[0].path, [options]); + }); + }); + + describe('transaction', function() { + it('should return a Transaction object', function() { + var transaction = datastore.transaction(); + assert.strictEqual(transaction.calledWith_[0], datastore); + }); + }); + + describe('determineBaseUrl_', function() { + function setHost(host) { + process.env.DATASTORE_EMULATOR_HOST = host; + } + + beforeEach(function() { + delete process.env.DATASTORE_EMULATOR_HOST; + }); + + it('should default to defaultBaseUrl_', function() { + var defaultBaseUrl_ = 'defaulturl'; + datastore.defaultBaseUrl_ = defaultBaseUrl_; + + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, defaultBaseUrl_); + }); + + it('should remove slashes from the baseUrl', function() { + var expectedBaseUrl = 'localhost:8080'; + + setHost('localhost:8080/'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); + + setHost('localhost:8080//'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); + }); + + it('should remove the protocol if specified', function() { + setHost('http://localhost:8080'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, 'localhost:8080'); + + setHost('https://localhost:8080'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, 'localhost:8080'); + }); + + it('should not set customEndpoint_ when using default baseurl', function() { + var datastore = new Datastore({ projectId: PROJECT_ID }); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.customEndpoint_, undefined); + }); + + it('should set customEndpoint_ when using custom API endpoint', function() { + datastore.determineBaseUrl_('apiEndpoint'); + assert.strictEqual(datastore.customEndpoint_, true); + }); + + it('should set baseUrl when using custom API endpoint', function() { + datastore.determineBaseUrl_('apiEndpoint'); + assert.strictEqual(datastore.baseUrl_, 'apiEndpoint'); + }); + + describe('with DATASTORE_EMULATOR_HOST environment variable', function() { + var DATASTORE_EMULATOR_HOST = 'localhost:9090'; + + beforeEach(function() { + setHost(DATASTORE_EMULATOR_HOST); + }); + + after(function() { + delete process.env.DATASTORE_EMULATOR_HOST; + }); + + it('should use the DATASTORE_EMULATOR_HOST env var', function() { + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, DATASTORE_EMULATOR_HOST); + }); + + it('should set customEndpoint_', function() { + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.customEndpoint_, true); + }); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js new file mode 100644 index 00000000000..955bbaaba18 --- /dev/null +++ b/handwritten/nodejs-datastore/test/query.js @@ -0,0 +1,308 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var assert = require('assert'); + +var Query = require('../src/query.js'); + +describe('Query', function() { + var SCOPE = {}; + var NAMESPACE = 'Namespace'; + var KINDS = 'Kind'; + + var query; + + beforeEach(function() { + query = new Query(SCOPE, NAMESPACE, KINDS); + }); + + describe('instantiation', function() { + it('should localize the scope', function() { + assert.strictEqual(query.scope, SCOPE); + }); + + it('should localize the namespace', function() { + assert.strictEqual(query.namespace, NAMESPACE); + }); + + it('should localize the kind', function() { + assert.strictEqual(query.kinds, KINDS); + }); + + it('should use null for all falsy namespace values', function() { + [ + new Query(SCOPE, '', KINDS), + new Query(SCOPE, null, KINDS), + new Query(SCOPE, undefined, KINDS), + new Query(SCOPE, 0, KINDS), + new Query(SCOPE, KINDS) + ].forEach(function(query) { + assert.strictEqual(query.namespace, null); + }); + }); + }); + + describe('filter', function() { + it('should support filtering', function() { + var now = new Date(); + var query = new Query(['kind1']).filter('date', '<=', now); + var filter = query.filters[0]; + + assert.equal(filter.name, 'date'); + assert.equal(filter.op, '<='); + assert.equal(filter.val, now); + }); + + it('should recognize all the different operators', function() { + var now = new Date(); + var query = new Query(['kind1']) + .filter('date', '<=', now) + .filter('name', '=', 'Title') + .filter('count', '>', 20) + .filter('size', '<', 10) + .filter('something', '>=', 11); + + assert.equal(query.filters[0].name, 'date'); + assert.equal(query.filters[0].op, '<='); + assert.strictEqual(query.filters[0].val, now); + + assert.equal(query.filters[1].name, 'name'); + assert.equal(query.filters[1].op, '='); + assert.equal(query.filters[1].val, 'Title'); + + assert.equal(query.filters[2].name, 'count'); + assert.equal(query.filters[2].op, '>'); + assert.strictEqual(query.filters[2].val, 20); + + assert.equal(query.filters[3].name, 'size'); + assert.equal(query.filters[3].op, '<'); + assert.strictEqual(query.filters[3].val, 10); + + assert.equal(query.filters[4].name, 'something'); + assert.equal(query.filters[4].op, '>='); + assert.strictEqual(query.filters[4].val, 11); + }); + + it('should remove any whitespace surrounding the filter name', function() { + var query = new Query(['kind1']).filter(' count ', '>', 123); + + assert.equal(query.filters[0].name, 'count'); + }); + + it('should remove any whitespace surrounding the operator', function() { + var query = new Query(['kind1']).filter('count', ' < ', 123); + + assert.equal(query.filters[0].op, '<'); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.filter('count', '<', 5); + + assert.strictEqual(query, nextQuery); + }); + + it('should default the operator to "="', function() { + var query = new Query(['kind1']).filter('name', 'Stephen'); + var filter = query.filters[0]; + + assert.equal(filter.name, 'name'); + assert.equal(filter.op, '='); + assert.equal(filter.val, 'Stephen'); + }); + }); + + describe('hasAncestor', function() { + it('should support ancestor filtering', function() { + var query = new Query(['kind1']).hasAncestor(['kind2', 123]); + + assert.equal(query.filters[0].name, '__key__'); + assert.equal(query.filters[0].op, 'HAS_ANCESTOR'); + assert.deepEqual(query.filters[0].val, ['kind2', 123]); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.hasAncestor(['kind2', 123]); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('order', function() { + it('should default ordering to ascending', function() { + var query = new Query(['kind1']).order('name'); + + assert.equal(query.orders[0].name, 'name'); + assert.equal(query.orders[0].sign, '+'); + }); + + it('should support ascending order', function() { + var query = new Query(['kind1']).order('name'); + + assert.equal(query.orders[0].name, 'name'); + assert.equal(query.orders[0].sign, '+'); + }); + + it('should support descending order', function() { + var query = new Query(['kind1']).order('count', { descending: true }); + + assert.equal(query.orders[0].name, 'count'); + assert.equal(query.orders[0].sign, '-'); + }); + + it('should support both ascending and descending', function() { + var query = new Query(['kind1']) + .order('name') + .order('count', { descending: true }); + + assert.equal(query.orders[0].name, 'name'); + assert.equal(query.orders[0].sign, '+'); + assert.equal(query.orders[1].name, 'count'); + assert.equal(query.orders[1].sign, '-'); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.order('name'); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('groupBy', function() { + it('should store an array of properties to group by', function() { + var query = new Query(['kind1']).groupBy(['name', 'size']); + + assert.deepEqual(query.groupByVal, ['name', 'size']); + }); + + it('should convert a single property into an array', function() { + var query = new Query(['kind1']).groupBy('name'); + + assert.deepEqual(query.groupByVal, ['name']); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.groupBy(['name', 'size']); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('select', function() { + it('should store an array of properties to select', function() { + var query = new Query(['kind1']).select(['name', 'size']); + + assert.deepEqual(query.selectVal, ['name', 'size']); + }); + + it('should convert a single property into an array', function() { + var query = new Query(['kind1']).select('name'); + + assert.deepEqual(query.selectVal, ['name']); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.select(['name', 'size']); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('start', function() { + it('should capture the starting cursor value', function() { + var query = new Query(['kind1']).start('X'); + + assert.equal(query.startVal, 'X'); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.start('X'); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('end', function() { + it('should capture the ending cursor value', function() { + var query = new Query(['kind1']).end('Z'); + + assert.equal(query.endVal, 'Z'); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.end('Z'); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('limit', function() { + it('should capture the number of results to limit to', function() { + var query = new Query(['kind1']).limit(20); + + assert.strictEqual(query.limitVal, 20); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.limit(20); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('offset', function() { + it('should capture the number of results to offset by', function() { + var query = new Query(['kind1']).offset(100); + + assert.strictEqual(query.offsetVal, 100); + }); + + it('should return the query instance', function() { + var query = new Query(['kind1']); + var nextQuery = query.offset(100); + + assert.strictEqual(query, nextQuery); + }); + }); + + describe('run', function() { + it('should call the parent instance runQuery correctly', function() { + var args = [0, 1, 2]; + var runQueryReturnValue = {}; + + query.scope.runQuery = function() { + assert.strictEqual(this, query.scope); + assert.strictEqual(arguments[0], query); + assert.strictEqual(arguments[1], args[0]); + assert.strictEqual(arguments[2], args[1]); + assert.strictEqual(arguments[3], args[2]); + return runQueryReturnValue; + }; + + var results = query.run.apply(query, args); + assert.strictEqual(results, runQueryReturnValue); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js new file mode 100644 index 00000000000..3eb9cfa9e29 --- /dev/null +++ b/handwritten/nodejs-datastore/test/request.js @@ -0,0 +1,1312 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var assert = require('assert'); +var extend = require('extend'); +var is = require('is'); +var proxyquire = require('proxyquire'); +var stream = require('stream'); +var through = require('through2'); + +var entity = require('../src/entity.js'); +var util = require('@google-cloud/common').util; +var Query = require('../src/query.js'); + +var overrides = {}; + +function override(name, object) { + var cachedObject = extend({}, object); + overrides[name] = {}; + + Object.keys(object).forEach(function(methodName) { + if (typeof object[methodName] !== 'function') { + return; + } + + object[methodName] = function() { + var args = arguments; + + if (overrides[name][methodName]) { + return overrides[name][methodName].apply(this, args); + } + + return cachedObject[methodName].apply(this, args); + }; + }); +} + +function resetOverrides() { + overrides = Object.keys(overrides).reduce(function(acc, name) { + acc[name] = {}; + return acc; + }, {}); +} + +override('entity', entity); +override('util', util); + +function FakeQuery() { + this.calledWith_ = arguments; +} + +describe('Request', function() { + var Request; + var request; + + var key; + + before(function() { + Request = proxyquire('../src/request.js', { + '@google-cloud/common': { + util: util + }, + './entity.js': entity, + './query.js': FakeQuery + }); + }); + + after(function() { + resetOverrides(); + }); + + beforeEach(function() { + key = new entity.Key({ + namespace: 'namespace', + path: ['Company', 123] + }); + FakeQuery.prototype = new Query(); + resetOverrides(); + request = new Request(); + }); + + describe('allocateIds', function() { + var incompleteKey; + var apiResponse = { + keys: [ + { path: [{ kind: 'Kind', id: 123 }] } + ] + }; + + beforeEach(function() { + incompleteKey = new entity.Key({ namespace: null, path: ['Kind'] }); + }); + + it('should produce proper allocate IDs req protos', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'allocateIds'); + + assert.equal(reqOpts.keys.length, 1); + + callback(null, apiResponse); + }; + + request.allocateIds(incompleteKey, 1, function(err, keys) { + assert.ifError(err); + var generatedKey = keys[0]; + assert.strictEqual(generatedKey.path.pop(), 123); + done(); + }); + }); + + it('should exec callback with error & API response', function(done) { + var error = new Error('Error.'); + + request.request_ = function(protoOpts, reqOpts, callback) { + callback(error, apiResponse); + }; + + request.allocateIds(incompleteKey, 1, function(err, keys, apiResponse_) { + assert.strictEqual(err, error); + assert.strictEqual(keys, null); + assert.strictEqual(apiResponse_, apiResponse); + done(); + }); + }); + + it('should return apiResponse in callback', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, apiResponse); + }; + + request.allocateIds(incompleteKey, 1, function(err, keys, apiResponse_) { + assert.ifError(err); + assert.strictEqual(apiResponse_, apiResponse); + done(); + }); + }); + + it('should throw if trying to allocate IDs with complete keys', function() { + assert.throws(function() { + request.allocateIds(key); + }); + }); + }); + + describe('delete', function() { + it('should delete by key', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'commit'); + assert(is.object(reqOpts.mutations[0].delete)); + callback(); + }; + request.delete(key, done); + }); + + it('should return apiResponse in callback', function(done) { + var resp = { success: true }; + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, resp); + }; + request.delete(key, function(err, apiResponse) { + assert.ifError(err); + assert.deepEqual(resp, apiResponse); + done(); + }); + }); + + it('should multi delete by keys', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + assert.equal(reqOpts.mutations.length, 2); + callback(); + }; + request.delete([ key, key ], done); + }); + + describe('transactions', function() { + beforeEach(function() { + // Trigger transaction mode. + request.id = 'transaction-id'; + request.requests_ = []; + }); + + it('should queue request', function() { + request.delete(key); + + assert(is.object(request.requests_[0].mutations[0].delete)); + }); + }); + }); + + describe('get', function() { + beforeEach(function() { + request.request_ = function() {}; + + overrides.util.createLimiter = function(makeRequest) { + var transformStream = new stream.Transform({ objectMode: true }); + transformStream.destroy = through.obj().destroy.bind(transformStream); + + setImmediate(function() { + transformStream.emit('reading'); + }); + + return { + makeRequest: makeRequest, + stream: transformStream + }; + }; + }); + + it('should throw if no keys are provided', function() { + assert.throws(function() { + request.get(); + }, /At least one Key object is required/); + }); + + it('should return a stream if no callback is provided', function() { + assert(request.get(key) instanceof stream); + }); + + it('should convert key to key proto', function(done) { + overrides.entity.keyToKeyProto = function(key_) { + assert.strictEqual(key_, key); + done(); + }; + + request.get(key, assert.ifError); + }); + + it('should create a limiter', function(done) { + var options = {}; + + overrides.util.createLimiter = function(makeRequest, options_) { + assert.strictEqual(options_, options); + + setImmediate(done); + + return { + makeRequest: makeRequest, + stream: through() + }; + }; + + request.get(key, options, assert.ifError); + }); + + it('should make correct request', function(done) { + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'lookup'); + + assert.deepEqual(reqOpts.keys[0], entity.keyToKeyProto(key)); + + done(); + }; + + request.get(key, assert.ifError); + }); + + it('should allow setting strong read consistency', function(done) { + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(reqOpts.readOptions.readConsistency, 1); + done(); + }; + + request.get(key, { consistency: 'strong' }, assert.ifError); + }); + + it('should allow setting strong eventual consistency', function(done) { + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(reqOpts.readOptions.readConsistency, 2); + done(); + }; + + request.get(key, { consistency: 'eventual' }, assert.ifError); + }); + + describe('error', function() { + var error = new Error('Error.'); + var apiResponse = { a: 'b', c: 'd' }; + + beforeEach(function() { + request.request_ = function(protoOpts, reqOpts, callback) { + setImmediate(function() { + callback(error, apiResponse); + }); + }; + }); + + describe('callback mode', function() { + it('should execute callback with error', function(done) { + request.get(key, function(err) { + assert.strictEqual(err, error); + done(); + }); + }); + }); + + describe('stream mode', function() { + it('should emit error', function(done) { + request.get(key) + .on('data', util.noop) + .on('error', function(err) { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should end stream', function(done) { + var stream = request.get(key); + + stream + .on('data', util.noop) + .on('error', function() { + setImmediate(function() { + assert.strictEqual(stream._destroyed, true); + done(); + }); + }); + }); + }); + }); + + describe('success', function() { + var apiResponse = { + found: [ + { + entity: { + key: { + partitionId: { + projectId: 'grape-spaceship-123' + }, + path: [ + { + kind: 'Post', + name: 'post1' + } + ] + }, + properties: { + title: { + stringValue: 'How to make the perfect pizza in your grill' + }, + tags: { + arrayValue: { + values: [ + { + stringValue: 'pizza' + }, + { + stringValue: 'grill' + } + ] + } + }, + rating: { + integerValue: '5' + }, + author: { + stringValue: 'Silvano' + }, + wordCount: { + integerValue: '400' + }, + isDraft: { + booleanValue: false + } + } + } + } + ] + }; + + var expectedResult = entity.formatArray(apiResponse.found)[0]; + + var apiResponseWithMultiEntities = extend(true, {}, apiResponse); + var entities = apiResponseWithMultiEntities.found; + entities.push(entities[0]); + var expectedResults = entity.formatArray(entities); + + var apiResponseWithDeferred = extend(true, {}, apiResponse); + apiResponseWithDeferred.deferred = [ + apiResponseWithDeferred.found[0].entity.key + ]; + + beforeEach(function() { + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, apiResponse); + }; + }); + + it('should format the results', function(done) { + overrides.entity.formatArray = function(arr) { + assert.strictEqual(arr, apiResponse.found); + setImmediate(done); + return arr; + }; + + request.get(key, assert.ifError); + }); + + it('should continue looking for deferred results', function(done) { + var numTimesCalled = 0; + + request.request_ = function(protoOpts, reqOpts, callback) { + numTimesCalled++; + + if (numTimesCalled === 1) { + callback(null, apiResponseWithDeferred); + return; + } + + var expectedKeys = apiResponseWithDeferred.deferred + .map(entity.keyFromKeyProto); + + assert.deepEqual(reqOpts.keys, expectedKeys); + done(); + }; + + request.get(key, assert.ifError); + }); + + describe('callback mode', function() { + it('should exec callback with results', function(done) { + request.get(key, function(err, entity) { + assert.ifError(err); + assert.deepEqual(entity, expectedResult); + done(); + }); + }); + + it('should exec callback w/ array from multiple keys', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, apiResponseWithMultiEntities); + }; + + request.get([key, key], function(err, entities) { + assert.ifError(err); + + assert.strictEqual(is.array(entities), true); + assert.deepEqual(entities, expectedResults); + + done(); + }); + }); + }); + + describe('stream mode', function() { + beforeEach(function() { + overrides.util.createLimiter = function(makeRequest) { + return { + makeRequest: makeRequest, + stream: new stream.Transform({ objectMode: true }) + }; + }; + }); + + it('should push results to the stream', function(done) { + request.get(key) + .on('error', done) + .on('data', function(entity) { + assert.deepEqual(entity, expectedResult); + }) + .on('end', done) + .emit('reading'); + }); + + it('should not push more results if stream was ended', function(done) { + var entitiesEmitted = 0; + + request.request_ = function(protoOpts, reqOpts, callback) { + setImmediate(function() { + callback(null, apiResponseWithMultiEntities); + }); + }; + + request.get([key, key]) + .on('data', function() { + entitiesEmitted++; + this.end(); + }) + .on('end', function() { + assert.strictEqual(entitiesEmitted, 1); + done(); + }) + .emit('reading'); + }); + + it('should not get more results if stream was ended', function(done) { + var lookupCount = 0; + + request.request_ = function(protoOpts, reqOpts, callback) { + lookupCount++; + setImmediate(function() { + callback(null, apiResponseWithDeferred); + }); + }; + + request.get(key) + .on('error', done) + .on('data', function() { + this.end(); + }) + .on('end', function() { + assert.strictEqual(lookupCount, 1); + done(); + }) + .emit('reading'); + }); + }); + }); + }); + + describe('insert', function() { + it('should pass the correct arguments to save', function(done) { + request.save = function(entities, callback) { + assert.deepEqual(entities, [{ + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'insert' + }]); + + callback(); + }; + + var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); + request.insert({ key: key, data: {} }, done); + }); + }); + + describe('runQuery', function() { + beforeEach(function() { + overrides.entity.queryToQueryProto = util.noop; + request.request_ = util.noop; + + overrides.util.createLimiter = function(makeRequest) { + var transformStream = new stream.Transform({ objectMode: true }); + transformStream.destroy = through.obj().destroy.bind(transformStream); + + setImmediate(function() { + transformStream.emit('reading'); + }); + + return { + makeRequest: makeRequest, + stream: transformStream + }; + }; + }); + + it('should return a stream if no callback is provided', function() { + assert(request.runQuery({}) instanceof stream); + }); + + it('should create a limiter', function(done) { + var options = {}; + + overrides.util.createLimiter = function(makeRequest, options_) { + assert.strictEqual(options_, options); + + setImmediate(done); + + return { + makeRequest: makeRequest, + stream: through() + }; + }; + + request.runQuery({}, options, assert.ifError); + }); + + it('should make correct request', function(done) { + var query = { namespace: 'namespace' }; + var queryProto = {}; + + overrides.entity.queryToQueryProto = function(query_) { + assert.strictEqual(query_, query); + return queryProto; + }; + + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'runQuery'); + assert(is.empty(reqOpts.readOptions)); + assert.strictEqual(reqOpts.query, queryProto); + assert.strictEqual(reqOpts.partitionId.namespaceId, query.namespace); + + done(); + }; + + request.runQuery(query, assert.ifError); + }); + + it('should allow setting strong read consistency', function(done) { + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(reqOpts.readOptions.readConsistency, 1); + done(); + }; + + request.runQuery({}, { consistency: 'strong' }, assert.ifError); + }); + + it('should allow setting strong eventual consistency', function(done) { + request.request_ = function(protoOpts, reqOpts) { + assert.strictEqual(reqOpts.readOptions.readConsistency, 2); + done(); + }; + + request.runQuery({}, { consistency: 'eventual' }, assert.ifError); + }); + + describe('error', function() { + var error = new Error('Error.'); + + beforeEach(function() { + request.request_ = function(protoOpts, reqOpts, callback) { + callback(error); + }; + }); + + it('should execute callback with error', function(done) { + request.runQuery({}, function(err) { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should emit error on a stream', function(done) { + request.runQuery({}) + .on('error', function(err) { + assert.strictEqual(err, error); + done(); + }); + }); + }); + + describe('success', function() { + var entityResultsPerApiCall = { + 1: [{ a: true }], + 2: [{ b: true }, { c: true }] + }; + + var apiResponse = { + batch: { + entityResults: [{ a: true }, { b: true }, { c: true }], + endCursor: new Buffer('abc'), + moreResults: 'MORE_RESULTS_AFTER_LIMIT', + skippedResults: 0 + } + }; + + beforeEach(function() { + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, apiResponse); + }; + + overrides.entity.formatArray = function(array) { + return array; + }; + }); + + it('should format results', function(done) { + overrides.entity.formatArray = function(array) { + assert.strictEqual(array, apiResponse.batch.entityResults); + return array; + }; + + request.runQuery({}, function(err, entities) { + assert.ifError(err); + assert.deepEqual(entities, apiResponse.batch.entityResults); + done(); + }); + }); + + it('should re-run query if not finished', function(done) { + var continuationQuery; + var query = { + limitVal: 1, + offsetVal: 8 + }; + var queryProto = { + limit: { + value: query.limitVal + } + }; + + var timesRequestCalled = 0; + var startCalled = false; + var offsetCalled = false; + + overrides.entity.formatArray = function(array) { + assert.strictEqual( + array, + entityResultsPerApiCall[timesRequestCalled] + ); + return entityResultsPerApiCall[timesRequestCalled]; + }; + + request.request_ = function(protoOpts, reqOpts, callback) { + timesRequestCalled++; + + var resp = extend(true, {}, apiResponse); + resp.batch.entityResults = + entityResultsPerApiCall[timesRequestCalled]; + + if (timesRequestCalled === 1) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'runQuery'); + + resp.batch.moreResults = 'NOT_FINISHED'; + + callback(null, resp); + } else { + assert.strictEqual(startCalled, true); + assert.strictEqual(offsetCalled, true); + assert.strictEqual(reqOpts.query, queryProto); + + resp.batch.moreResults = 'MORE_RESULTS_AFTER_LIMIT'; + + callback(null, resp); + } + }; + + FakeQuery.prototype.start = function(endCursor) { + assert.strictEqual(endCursor, apiResponse.batch.endCursor); + startCalled = true; + return this; + }; + + FakeQuery.prototype.offset = function(offset_) { + var offset = query.offsetVal - apiResponse.batch.skippedResults; + assert.strictEqual(offset_, offset); + offsetCalled = true; + return this; + }; + + FakeQuery.prototype.limit = function(limit_) { + if (timesRequestCalled === 1) { + assert.strictEqual( + limit_, + entityResultsPerApiCall[1].length - query.limitVal + ); + } else { + // Should restore the original limit. + assert.strictEqual(limit_, query.limitVal); + } + return this; + }; + + overrides.entity.queryToQueryProto = function(query_) { + if (timesRequestCalled > 1) { + assert.strictEqual(query_, continuationQuery); + } + return queryProto; + }; + + request.runQuery(query, function(err, entities, info) { + assert.ifError(err); + + var allResults = [].slice.call(entityResultsPerApiCall[1]) + .concat(entityResultsPerApiCall[2]); + assert.deepEqual(entities, allResults); + + assert.deepEqual(info, { + endCursor: apiResponse.batch.endCursor, + moreResults: apiResponse.batch.moreResults + }); + + done(); + }); + }); + + it('should handle large limitless queries', function(done) { + var timesRequestCalled = 0; + var limitCalled = false; + + var query = { + limitVal: -1 + }; + + request.request_ = function(protoOpts, reqOpts, callback) { + var batch; + + if (++timesRequestCalled === 2) { + batch = {}; + } else { + batch = { + moreResults: 'NOT_FINISHED', + endCursor: new Buffer('abc') + }; + } + + callback(null, { batch: batch }); + }; + + overrides.entity.queryToQueryProto = function() { + return {}; + }; + + FakeQuery.prototype.limit = function() { + limitCalled = true; + return this; + }; + + request.runQuery(query, function(err) { + assert.ifError(err); + assert.strictEqual(timesRequestCalled, 2); + assert.strictEqual(limitCalled, false); + done(); + }); + }); + + it('should emit the info object on a stream', function(done) { + request.runQuery({}) + .on('error', done) + .on('info', function(info) { + assert.deepEqual(info, { + endCursor: apiResponse.batch.endCursor, + moreResults: apiResponse.batch.moreResults + }); + done(); + }); + }); + + it('should not push more results if stream was ended', function(done) { + var timesRequestCalled = 0; + var entitiesEmitted = 0; + + request.request_ = function(protoOpts, reqOpts, callback) { + timesRequestCalled++; + + var resp = extend(true, {}, apiResponse); + resp.batch.entityResults = + entityResultsPerApiCall[timesRequestCalled]; + + if (timesRequestCalled === 1) { + resp.batch.moreResults = 'NOT_FINISHED'; + callback(null, resp); + } else { + resp.batch.moreResults = 'MORE_RESULTS_AFTER_LIMIT'; + callback(null, resp); + } + }; + + request.runQuery({}) + .on('data', function() { + entitiesEmitted++; + this.end(); + }) + .on('end', function() { + assert.strictEqual(entitiesEmitted, 1); + done(); + }); + }); + + it('should not get more results if stream was ended', function(done) { + var timesRequestCalled = 0; + + request.request_ = function(protoOpts, reqOpts, callback) { + timesRequestCalled++; + callback(null, apiResponse); + }; + + request.runQuery({}) + .on('error', done) + .on('data', function() { + this.end(); + }) + .on('end', function() { + assert.strictEqual(timesRequestCalled, 1); + done(); + }); + }); + }); + }); + + describe('save', function() { + it('should save with keys', function(done) { + var expectedReq = { + mutations: [ + { + upsert: { + key: { + partitionId: { + namespaceId: 'namespace' + }, + path: [ + { + kind: 'Company', + id: 123 + } + ] + }, + properties: { + k: { + stringValue: 'v' + } + } + } + }, + { + upsert: { + key: { + partitionId: { + namespaceId: 'namespace' + }, + path: [ + { + kind: 'Company', + id: 123 + } + ] + }, + properties: { + k: { + stringValue: 'v' + } + } + } + } + ] + }; + + request.request_ = function(protoOpts, reqOpts, callback) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.strictEqual(protoOpts.method, 'commit'); + + assert.deepEqual(reqOpts, expectedReq); + + callback(); + }; + request.save([ + { key: key, data: { k: 'v' } }, + { key: key, data: { k: 'v' } } + ], done); + }); + + it('should save with specific method', function(done) { + request.request_ = function(protoOpts, reqOpts, callback) { + assert.equal(reqOpts.mutations.length, 3); + assert(is.object(reqOpts.mutations[0].insert)); + assert(is.object(reqOpts.mutations[1].update)); + assert(is.object(reqOpts.mutations[2].upsert)); + + var insert = reqOpts.mutations[0].insert; + assert.deepEqual(insert.properties.k, { stringValue: 'v' }); + + var update = reqOpts.mutations[1].update; + assert.deepEqual(update.properties.k2, { stringValue: 'v2' }); + + var upsert = reqOpts.mutations[2].upsert; + assert.deepEqual(upsert.properties.k3, { stringValue: 'v3' }); + + callback(); + }; + + request.save([ + { key: key, method: 'insert', data: { k: 'v' } }, + { key: key, method: 'update', data: { k2: 'v2' } }, + { key: key, method: 'upsert', data: { k3: 'v3' } } + ], done); + }); + + it('should throw if a given method is not recognized', function() { + assert.throws(function() { + request.save({ + key: key, + method: 'auto_insert_id', + data: { + k: 'v' + } + }, assert.ifError); + }, /Method auto_insert_id not recognized/); + }); + + it('should not alter the provided data object', function(done) { + var entities = [ + { + key: key, + method: 'insert', + indexed: false, + data: { + value: { + a: 'b', + c: [1, 2, 3] + } + } + } + ]; + var expectedEntities = extend(true, {}, entities); + + request.request_ = function() { + // By the time the request is made, the original object has already been + // transformed into a raw request. + assert.deepEqual(entities, expectedEntities); + done(); + }; + + request.save(entities, assert.ifError); + }); + + it('should return apiResponse in callback', function(done) { + var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); + var mockCommitResponse = {}; + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, mockCommitResponse); + }; + request.save({ key: key, data: {} }, function(err, apiResponse) { + assert.ifError(err); + assert.strictEqual(mockCommitResponse, apiResponse); + done(); + }); + }); + + it('should allow setting the indexed value of a property', function(done) { + request.request_ = function(protoOpts, reqOpts) { + var property = reqOpts.mutations[0].upsert.properties.name; + assert.strictEqual(property.stringValue, 'value'); + assert.strictEqual(property.excludeFromIndexes, true); + done(); + }; + + request.save({ + key: key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true + } + ] + }, assert.ifError); + }); + + it('should allow setting the indexed value on arrays', function(done) { + request.request_ = function(protoOpts, reqOpts) { + var property = reqOpts.mutations[0].upsert.properties.name; + + property.arrayValue.values.forEach(function(value) { + assert.strictEqual(value.excludeFromIndexes, true); + }); + + done(); + }; + + request.save({ + key: key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true + } + ] + }, assert.ifError); + }); + + it('should assign ID on keys without them', function(done) { + var incompleteKey = new entity.Key({ path: ['Incomplete'] }); + var incompleteKey2 = new entity.Key({ path: ['Incomplete'] }); + var completeKey = new entity.Key({ path: ['Complete', 'Key'] }); + + var keyProtos = []; + var ids = [1, 2]; + + var response = { + mutationResults: [ + { + key: {} + }, + { + key: {} + }, + {} + ] + }; + + request.request_ = function(protoOpts, reqOpts, callback) { + callback(null, response); + }; + + overrides.entity.keyFromKeyProto = function(keyProto) { + keyProtos.push(keyProto); + return { + id: ids[keyProtos.length - 1] + }; + }; + + request.save([ + { key: incompleteKey, data: {} }, + { key: incompleteKey2, data: {} }, + { key: completeKey, data: {} } + ], function(err) { + assert.ifError(err); + + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); + + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + + done(); + }); + }); + + describe('transactions', function() { + beforeEach(function() { + // Trigger transaction mode. + request.id = 'transaction-id'; + request.requestCallbacks_ = []; + request.requests_ = []; + }); + + it('should queue request & callback', function() { + request.save({ + key: key, + data: [{ name: 'name', value: 'value' }] + }); + + assert.equal(typeof request.requestCallbacks_[0], 'function'); + assert.equal(typeof request.requests_[0], 'object'); + }); + }); + }); + + describe('update', function() { + it('should pass the correct arguments to save', function(done) { + request.save = function(entities, callback) { + assert.deepEqual(entities, [{ + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'update' + }]); + + callback(); + }; + + var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); + request.update({ key: key, data: {} }, done); + }); + }); + + describe('upsert', function() { + it('should pass the correct arguments to save', function(done) { + request.save = function(entities, callback) { + assert.deepEqual(entities, [{ + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'upsert' + }]); + + callback(); + }; + + var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); + request.upsert({ key: key, data: {} }, done); + }); + }); + + describe('request_', function() { + var PROJECT_ID = 'project-id'; + var PROTO_OPTS = {}; + + beforeEach(function() { + request.projectId = PROJECT_ID; + }); + + it('should not require reqOpts', function(done) { + request.request = function(protoOpts, reqOpts, callback) { + callback(); // done() + }; + + request.request_(PROTO_OPTS, done); + }); + + it('should make the correct request', function(done) { + var reqOpts = {}; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(protoOpts, PROTO_OPTS); + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.projectId, PROJECT_ID); + done(); + }; + + request.request_(PROTO_OPTS, reqOpts, assert.ifError); + }); + + describe('commit', function() { + it('should set the mode', function(done) { + var reqOpts = {}; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.mode, 'NON_TRANSACTIONAL'); + done(); + }; + + request.request_({ method: 'commit' }, reqOpts, assert.ifError); + }); + }); + + describe('transaction', function() { + var TRANSACTION_ID = 'transaction'; + + beforeEach(function() { + request.id = TRANSACTION_ID; + }); + + it('should set the commit transaction info', function(done) { + var reqOpts = {}; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.mode, 'TRANSACTIONAL'); + assert.strictEqual(reqOpts_.transaction, request.id); + done(); + }; + + request.id = 'transaction-id'; + request.request_({ method: 'commit' }, reqOpts, assert.ifError); + }); + + it('should set the rollback transaction info', function(done) { + var reqOpts = {}; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.transaction, request.id); + done(); + }; + + request.id = 'transaction-id'; + request.request_({ method: 'rollback' }, reqOpts, assert.ifError); + }); + + it('should set the lookup transaction info', function(done) { + var reqOpts = { + readOptions: {} + }; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.readOptions, reqOpts.readOptions); + assert.strictEqual(reqOpts_.readOptions.transaction, request.id); + done(); + }; + + request.id = 'transaction-id'; + request.request_({ method: 'lookup' }, reqOpts, assert.ifError); + }); + + it('should set the lookup transaction info', function(done) { + var reqOpts = { + readOptions: {} + }; + + request.request = function(protoOpts, reqOpts_) { + assert.strictEqual(reqOpts_, reqOpts); + assert.strictEqual(reqOpts_.readOptions, reqOpts.readOptions); + assert.strictEqual(reqOpts_.readOptions.transaction, request.id); + done(); + }; + + request.id = 'transaction-id'; + request.request_({ method: 'runQuery' }, reqOpts, assert.ifError); + }); + + it('should throw if read consistency is specified', function() { + var reqOpts = { + readOptions: { + readConsistency: 1 + } + }; + + request.id = 'transaction-id'; + + assert.throws(function() { + request.request_({ method: 'runQuery' }, reqOpts, assert.ifError); + }, 'Read consistency cannot be specified in a transaction.'); + }); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js new file mode 100644 index 00000000000..30f6ea79df7 --- /dev/null +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -0,0 +1,479 @@ +/** + * Copyright 2014 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +var arrify = require('arrify'); +var assert = require('assert'); +var entity = require('../src/entity.js'); +var proxyquire = require('proxyquire'); +var util = require('@google-cloud/common').util; + +var DatastoreRequestOverride = { + delete: util.noop, + save: util.noop +}; + +var FakeDatastoreRequest = { + prototype: { + delete: function() { + var args = [].slice.apply(arguments); + var results = DatastoreRequestOverride.delete.apply(null, args); + DatastoreRequestOverride.delete = util.noop; + return results; + }, + + save: function() { + var args = [].slice.apply(arguments); + var results = DatastoreRequestOverride.save.apply(null, args); + DatastoreRequestOverride.save = util.noop; + return results; + } + } +}; + +describe('Transaction', function() { + var Transaction; + var transaction; + var TRANSACTION_ID = 'transaction-id'; + var PROJECT_ID = 'project-id'; + + var DATASTORE = { + request: function() {}, + projectId: PROJECT_ID + }; + + function key(path) { + return new entity.Key({ path: arrify(path) }); + } + + before(function() { + Transaction = proxyquire('../src/transaction.js', { + './request.js': FakeDatastoreRequest + }); + }); + + beforeEach(function() { + transaction = new Transaction(DATASTORE); + }); + + describe('instantiation', function() { + it('should localize the datastore instance', function() { + assert.strictEqual(transaction.datastore, DATASTORE); + }); + + it('should localize the project ID', function() { + assert.strictEqual(transaction.projectId, PROJECT_ID); + }); + + it('should localize request function', function(done) { + var transaction; + + var fakeDataset = { + request: { + bind: function(context) { + assert.strictEqual(context, fakeDataset); + + setImmediate(function() { + assert.strictEqual(transaction.request, fakeDataset.request); + done(); + }); + + return fakeDataset.request; + } + } + }; + + transaction = new Transaction(fakeDataset); + }); + + it('should localize default properties', function() { + assert.deepEqual(transaction.modifiedEntities_, []); + assert.deepEqual(transaction.requestCallbacks_, []); + assert.deepEqual(transaction.requests_, []); + }); + }); + + describe('commit', function() { + beforeEach(function() { + transaction.id = TRANSACTION_ID; + }); + + it('should commit', function(done) { + transaction.request_ = function(protoOpts) { + assert.equal(protoOpts.service, 'Datastore'); + assert.equal(protoOpts.method, 'commit'); + done(); + }; + transaction.commit(); + }); + + it('should skip the commit', function(done) { + transaction.skipCommit = true; + + // If called, the test will blow up. + transaction.request_ = done; + + transaction.commit(done); + }); + + describe('errors', function() { + var error = new Error('Error.'); + var apiResponse = {}; + + var rollbackError = new Error('Error.'); + var rollbackApiResponse = {}; + + beforeEach(function() { + transaction.rollback = function(callback) { + callback(rollbackError, rollbackApiResponse); + }; + + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(error, apiResponse); + }; + }); + + it('should pass the commit error to the callback', function(done) { + transaction.commit(function(err, resp) { + assert.strictEqual(err, error); + assert.strictEqual(resp, apiResponse); + done(); + }); + }); + }); + + it('should pass apiResponse to callback', function(done) { + var resp = { success: true }; + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(null, resp); + }; + transaction.commit(function(err, apiResponse) { + assert.ifError(err); + assert.deepEqual(resp, apiResponse); + done(); + }); + }); + + it('should group mutations & execute original methods', function() { + var deleteArg1 = key(['Product', 123]); + var deleteArg2 = key(['Product', 234]); + + var saveArg1 = { key: key(['Product', 345]), data: '' }; + var saveArg2 = { key: key(['Product', 456]), data: '' }; + + // Queue saves & deletes in varying order. + transaction.delete(deleteArg1); + transaction.save(saveArg1); + transaction.delete(deleteArg2); + transaction.save(saveArg2); + + var args = []; + + var deleteCalled = 0; + DatastoreRequestOverride.delete = function() { + args.push(arguments[0]); + deleteCalled++; + }; + + var saveCalled = 0; + DatastoreRequestOverride.save = function() { + args.push(arguments[0]); + saveCalled++; + }; + + transaction.request_ = util.noop; + + transaction.commit(); + + assert.equal(deleteCalled, 1); + assert.equal(saveCalled, 1); + + assert.equal(args.length, 2); + + // Save arguments must come first. + assert.deepEqual(args, [ + [saveArg1, saveArg2], + [deleteArg1, deleteArg2] + ]); + }); + + it('should honor ordering of mutations (last wins)', function() { + // The delete should be ignored. + transaction.delete(key(['Product', 123])); + transaction.save({ key: key(['Product', 123]), data: '' }); + + var deleteCalled = 0; + DatastoreRequestOverride.delete = function() { + deleteCalled++; + }; + + var saveCalled = 0; + DatastoreRequestOverride.save = function() { + saveCalled++; + }; + + transaction.request_ = util.noop; + + transaction.commit(); + assert.equal(deleteCalled, 0); + assert.equal(saveCalled, 1); + }); + + it('should send the built request object', function(done) { + transaction.requests_ = [ + { + mutations: [ + { a: 'b' }, + { c: 'd' } + ] + }, + { + mutations: [ + { e: 'f' }, + { g: 'h' } + ] + } + ]; + + transaction.request_ = function(protoOpts, reqOpts) { + assert.deepEqual(reqOpts, { + mutations: [ + { a: 'b' }, + { c: 'd' }, + { e: 'f' }, + { g: 'h' } + ] + }); + done(); + }; + + transaction.commit(); + }); + + it('should execute the queued callbacks', function() { + var cb1Called = false; + var cb2Called = false; + + transaction.requestCallbacks_ = [ + function() { cb1Called = true; }, + function() { cb2Called = true; } + ]; + + transaction.request_ = function(protoOpts, reqOpts, cb) { + cb(); + }; + + transaction.commit(); + + assert(cb1Called); + assert(cb2Called); + }); + }); + + describe('createQuery', function() { + it('should return query from datastore.createQuery', function() { + var args = [0, 1, 2, 3]; + var createQueryReturnValue = {}; + + transaction.datastore.createQuery = function() { + assert.strictEqual(this, transaction); + assert.strictEqual(arguments[0], args[0]); + assert.strictEqual(arguments[1], args[1]); + assert.strictEqual(arguments[2], args[2]); + assert.strictEqual(arguments[3], args[3]); + return createQueryReturnValue; + }; + + var query = transaction.createQuery.apply(transaction, args); + assert.strictEqual(query, createQueryReturnValue); + }); + }); + + describe('delete', function() { + it('should push entities into a queue', function() { + var keys = [ + key('Product', 123), + key('Product', 234), + key('Product', 345) + ]; + + transaction.delete(keys); + + assert.equal(transaction.modifiedEntities_.length, keys.length); + + transaction.modifiedEntities_.forEach(function(queuedEntity) { + assert.equal(queuedEntity.method, 'delete'); + assert(keys.indexOf(queuedEntity.entity.key) > -1); + assert.deepEqual(queuedEntity.args, [queuedEntity.entity.key]); + }); + }); + }); + + describe('rollback', function() { + beforeEach(function() { + transaction.id = TRANSACTION_ID; + }); + + it('should rollback', function(done) { + transaction.request_ = function(protoOpts) { + assert.strictEqual(protoOpts.service, 'Datastore'); + assert.equal(protoOpts.method, 'rollback'); + done(); + }; + transaction.rollback(); + }); + + it('should pass error to callback', function(done) { + var error = new Error('Error.'); + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(error); + }; + transaction.rollback(function(err) { + assert.deepEqual(err, error); + done(); + }); + }); + + it('should pass apiResponse to callback', function(done) { + var resp = { success: true }; + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(null, resp); + }; + transaction.rollback(function(err, apiResponse) { + assert.ifError(err); + assert.deepEqual(resp, apiResponse); + done(); + }); + }); + + it('should set skipCommit', function(done) { + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(); + }; + transaction.rollback(function() { + assert.strictEqual(transaction.skipCommit, true); + done(); + }); + }); + + it('should set skipCommit when rollback errors', function(done) { + transaction.request_ = function(protoOpts, reqOpts, callback) { + callback = callback || reqOpts; + callback(new Error('Error.')); + }; + transaction.rollback(function() { + assert.strictEqual(transaction.skipCommit, true); + done(); + }); + }); + }); + + describe('run', function() { + it('should make the correct API request', function(done) { + transaction.request_ = function(protoOpts) { + assert.deepEqual(protoOpts, { + service: 'Datastore', + method: 'beginTransaction' + }); + + done(); + }; + + transaction.run(assert.ifError); + }); + + describe('error', function() { + var error = new Error('Error.'); + var apiResponse = {}; + + beforeEach(function() { + transaction.request_ = function(protoOpts, callback) { + callback(error, apiResponse); + }; + }); + + it('should pass error & API response to callback', function(done) { + transaction.run(function(err, transaction, apiResponse_) { + assert.strictEqual(err, error); + assert.strictEqual(transaction, null); + assert.strictEqual(apiResponse_, apiResponse); + done(); + }); + }); + }); + + describe('success', function() { + var apiResponse = { + transaction: TRANSACTION_ID + }; + + beforeEach(function() { + transaction.request_ = function(protoOpts, callback) { + callback(null, apiResponse); + }; + }); + + it('should set transaction id', function(done) { + delete transaction.id; + + transaction.run(function(err) { + assert.ifError(err); + assert.equal(transaction.id, TRANSACTION_ID); + done(); + }); + }); + + it('should exec callback with Transaction & apiResponse', function(done) { + transaction.run(function(err, transaction_, apiResponse_) { + assert.ifError(err); + assert.strictEqual(transaction_, transaction); + assert.deepEqual(apiResponse_, apiResponse); + done(); + }); + }); + }); + }); + + describe('save', function() { + it('should push entities into a queue', function() { + var entities = [ + { key: key('Product', 123), data: 123 }, + { key: key('Product', 234), data: 234 }, + { key: key('Product', 345), data: 345 } + ]; + + transaction.save(entities); + + assert.equal(transaction.modifiedEntities_.length, entities.length); + + transaction.modifiedEntities_.forEach(function(queuedEntity) { + assert.equal(queuedEntity.method, 'save'); + + var match = entities.filter(function(ent) { + return ent.key === queuedEntity.entity.key; + })[0]; + + assert.deepEqual(queuedEntity.args, [match]); + }); + }); + }); +}); From 22875dc331a46d9740a1a10a7dd4a99e58f6e51a Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 3 Aug 2016 20:26:08 -0400 Subject: [PATCH 030/820] set starting version points --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2246f721ffa..45f803a7131 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.0.0", + "version": "0.1.0", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ @@ -78,4 +78,4 @@ "engines": { "node": ">=0.12.0" } -} +} \ No newline at end of file From 83e381613e30c5425c3907d7ca305087f003fb70 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 4 Aug 2016 15:21:59 -0400 Subject: [PATCH 031/820] modular code style --- handwritten/nodejs-datastore/package.json | 4 ++-- handwritten/nodejs-datastore/src/index.js | 19 ++++----------- handwritten/nodejs-datastore/src/request.js | 14 ++++------- .../nodejs-datastore/src/transaction.js | 21 +++++++--------- .../nodejs-datastore/system-test/datastore.js | 2 +- handwritten/nodejs-datastore/test/index.js | 24 +++++++++---------- handwritten/nodejs-datastore/test/request.js | 2 +- 7 files changed, 32 insertions(+), 54 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 45f803a7131..1671a3c7dac 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "devDependencies": { "async": "^1.4.2", "deep-strict-equal": "^0.1.0", - "mocha": "^2.1.0", + "mocha": "^3.0.1", "proxyquire": "^1.7.10", "through2": "^2.0.0" }, @@ -78,4 +78,4 @@ "engines": { "node": ">=0.12.0" } -} \ No newline at end of file +} diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 916d464a9e2..3986e0120d5 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -24,7 +24,6 @@ var arrify = require('arrify'); var common = require('@google-cloud/common'); var is = require('is'); var modelo = require('modelo'); -var PKG = require('../package.json'); /** * @type {module:datastore/request} @@ -44,23 +43,13 @@ var entity = require('./entity.js'); */ var Query = require('./query.js'); -/** - * @type {module:common/grpc-service} - * @private - */ -var GrpcService = common.GrpcService; - /** * @type {module:datastore/transaction} * @private */ var Transaction = require('./transaction.js'); -/** - * @type {module:common/util} - * @private - */ -var util = common.util; +var PKG = require('../package.json'); /** * Interact with the @@ -337,7 +326,7 @@ var util = common.util; */ function Datastore(options) { if (!(this instanceof Datastore)) { - options = util.normalizeArguments(this, options, { + options = common.util.normalizeArguments(this, options, { projectIdRequired: false }); return new Datastore(options); @@ -359,10 +348,10 @@ function Datastore(options) { userAgent: PKG.name + '/' + PKG.version }; - GrpcService.call(this, config, options); + common.GrpcService.call(this, config, options); } -modelo.inherits(Datastore, DatastoreRequest, GrpcService); +modelo.inherits(Datastore, DatastoreRequest, common.GrpcService); /** * Helper function to get a Datastore Double object. diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 35df37324cd..9107f8d2e2e 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -40,12 +40,6 @@ var entity = require('./entity.js'); */ var Query = require('./query.js'); -/** - * @type {module:common/util} - * @private - */ -var util = common.util; - /** * A map of read consistency values to proto codes. * @@ -210,7 +204,7 @@ DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) { * ], function(err, apiResponse) {}); */ DatastoreRequest.prototype.delete = function(keys, callback) { - callback = callback || util.noop; + callback = callback || common.util.noop; var protoOpts = { service: 'Datastore', @@ -345,7 +339,7 @@ DatastoreRequest.prototype.get = function(keys, options, callback) { throw new Error('At least one Key object is required.'); } - var limiter = util.createLimiter(makeRequest, options); + var limiter = common.util.createLimiter(makeRequest, options); var stream = limiter.stream; stream.once('reading', function() { @@ -531,7 +525,7 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { return; } - var limiter = util.createLimiter(makeRequest, options); + var limiter = common.util.createLimiter(makeRequest, options); var stream = limiter.stream; stream.once('reading', function() { @@ -921,7 +915,7 @@ DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) { reqOpts = {}; } - callback = callback || util.noop; + callback = callback || common.util.noop; var isTransaction = is.defined(this.id); var method = protoOpts.method; diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index dff6be99732..d7f8cd542ed 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -21,21 +21,16 @@ 'use strict'; var arrify = require('arrify'); +var common = require('@google-cloud/common'); var flatten = require('lodash.flatten'); -var nodeutil = require('util'); var prop = require('propprop'); +var util = require('util'); /** * @type {module:datastore/request} * @private */ -var DatastoreRequest = require('./request.js'); - -/** - * @type {module:common/util} - * @private - */ -var util = require('@google-cloud/common').util; +var Request = require('./request.js'); /*! Developer Documentation * @@ -88,7 +83,7 @@ function Transaction(datastore) { this.requests_ = []; } -nodeutil.inherits(Transaction, DatastoreRequest); +util.inherits(Transaction, Request); /*! Developer Documentation * @@ -121,7 +116,7 @@ nodeutil.inherits(Transaction, DatastoreRequest); Transaction.prototype.commit = function(callback) { var self = this; - callback = callback || util.noop; + callback = callback || common.util.noop; if (this.skipCommit) { setImmediate(callback); @@ -184,7 +179,7 @@ Transaction.prototype.commit = function(callback) { var method = modifiedEntity.method; var args = modifiedEntity.args.reverse(); - DatastoreRequest.prototype[method].call(self, args, util.noop); + Request.prototype[method].call(self, args, common.util.noop); }); var protoOpts = { @@ -324,7 +319,7 @@ Transaction.prototype.delete = function(entities) { Transaction.prototype.rollback = function(callback) { var self = this; - callback = callback || util.noop; + callback = callback || common.util.noop; var protoOpts = { service: 'Datastore', @@ -373,7 +368,7 @@ Transaction.prototype.rollback = function(callback) { Transaction.prototype.run = function(callback) { var self = this; - callback = callback || util.noop; + callback = callback || common.util.noop; var protoOpts = { service: 'Datastore', diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index f4752e2a7a7..9f1d6ca8d15 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -19,9 +19,9 @@ var assert = require('assert'); var async = require('async'); -var env = require('../../../system-test/env.js'); var Datastore = require('../'); var entity = require('../src/entity.js'); +var env = require('../../../system-test/env.js'); describe('Datastore', function() { var testKinds = []; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index b33733ed885..ee10e51c521 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -16,7 +16,14 @@ 'use strict'; -var entity = { +var assert = require('assert'); +var extend = require('extend'); +var proxyquire = require('proxyquire'); +var util = require('@google-cloud/common').util; + +var PKG = require('../package.json'); + +var fakeEntity = { Int: function(value) { this.value = value; }, @@ -31,24 +38,17 @@ var entity = { } }; -var assert = require('assert'); -var extend = require('extend'); -var proxyquire = require('proxyquire'); - -var util = require('@google-cloud/common').util; -var PKG = require('../package.json'); - var fakeUtil = extend({}, util); -function FakeQuery() { +function FakeGrpcService() { this.calledWith_ = arguments; } -function FakeTransaction() { +function FakeQuery() { this.calledWith_ = arguments; } -function FakeGrpcService() { +function FakeTransaction() { this.calledWith_ = arguments; } @@ -74,7 +74,7 @@ describe('Datastore', function() { GrpcService: FakeGrpcService, util: fakeUtil }, - './entity.js': entity, + './entity.js': fakeEntity, './query.js': FakeQuery, './transaction.js': FakeTransaction }); diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 3eb9cfa9e29..39ce7c01f2d 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -22,9 +22,9 @@ var is = require('is'); var proxyquire = require('proxyquire'); var stream = require('stream'); var through = require('through2'); +var util = require('@google-cloud/common').util; var entity = require('../src/entity.js'); -var util = require('@google-cloud/common').util; var Query = require('../src/query.js'); var overrides = {}; From a0caeea605a105b90978754d6c1535081c983c48 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 4 Aug 2016 15:46:09 -0400 Subject: [PATCH 032/820] more code style fixes --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1671a3c7dac..2c5b85981c6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -70,7 +70,7 @@ "through2": "^2.0.0" }, "scripts": { - "publish": "../../scripts/publish", + "publish": "node ../../scripts/publish.js", "test": "mocha test/*.js", "system-test": "mocha system-test/*.js --no-timeouts --bail" }, From 981396a0e19fccf8c605874a480a5e0b04186915 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 10 Aug 2016 15:14:15 -0700 Subject: [PATCH 033/820] * Refactored Pub/Sub samples into nice command-line programs, like the new Cloud Storage samples (#164) * Brought Pub/Sub samples code coverage up to 98.66% --- .../nodejs-datastore/samples/system-test/concepts.test.js | 4 ++-- .../nodejs-datastore/samples/system-test/tasks.test.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js index d5764df7b80..8bf310f674f 100644 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -131,7 +131,7 @@ describe('datastore:concepts', function () { it('performs a projection query', function (done) { entity.testProperties(function (err, tasks) { console.log(err, tasks); - assert(!err); + assert.ifError(err); setTimeout(function () { query.testRunQueryProjection(done); }, 1000); @@ -203,7 +203,7 @@ describe('datastore:concepts', function () { it.skip('allows manual pagination through results', function (done) { entity.testBatchUpsert(function (err) { - assert(!err); + assert.ifError(err); setTimeout(function () { query.testCursorPaging(done); }, 1000); diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js index 33d660749b7..f87da87449a 100644 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -32,7 +32,7 @@ describe('datastore:tasks', function () { it('should mark a task as done', function (done) { getTaskId(function (err, taskId) { - assert(!err); + assert.ifError(err); tasks.updateEntity(taskId, done); }); }); @@ -43,14 +43,14 @@ describe('datastore:tasks', function () { it('should delete a task', function (done) { getTaskId(function (err, taskId) { - assert(!err); + assert.ifError(err); tasks.deleteEntity(taskId, done); }); }); it('should format tasks', function (done) { tasks.retrieveEntities(function (err, _tasks) { - assert(!err); + assert.ifError(err); assert.doesNotThrow(function () { tasks.formatTasks(_tasks); }); From 7b083edfef64fa1ec4c1f89afded3090f738ad66 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Thu, 11 Aug 2016 15:03:40 -0400 Subject: [PATCH 034/820] docs: individual package support (#1479) docs: refactor doc scripts for modularization --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2c5b85981c6..a263e973f87 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -70,7 +70,7 @@ "through2": "^2.0.0" }, "scripts": { - "publish": "node ../../scripts/publish.js", + "publish": "node ../../scripts/publish.js datastore", "test": "mocha test/*.js", "system-test": "mocha system-test/*.js --no-timeouts --bail" }, From b8dce1a2879dbead514d29d146a6c0ff7430ad31 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 11 Aug 2016 20:32:57 -0400 Subject: [PATCH 035/820] fix publish script (#1480) --- handwritten/nodejs-datastore/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a263e973f87..fbd78365594 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.1.0", + "version": "0.1.1", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ @@ -31,7 +31,7 @@ ], "main": "./src/index.js", "files": [ - "./src/*", + "src", "AUTHORS", "CONTRIBUTORS", "COPYING" @@ -70,7 +70,7 @@ "through2": "^2.0.0" }, "scripts": { - "publish": "node ../../scripts/publish.js datastore", + "publish-module": "node ../../scripts/publish.js datastore", "test": "mocha test/*.js", "system-test": "mocha system-test/*.js --no-timeouts --bail" }, From c6abfba0deec122ee4aa2574be85ecb7872ff0cc Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Mon, 15 Aug 2016 08:21:22 -0700 Subject: [PATCH 036/820] docs: generate uniform service overviews (#1475) --- handwritten/nodejs-datastore/src/index.js | 41 ++++++------------- handwritten/nodejs-datastore/src/query.js | 6 --- handwritten/nodejs-datastore/src/request.js | 15 ++----- .../nodejs-datastore/src/transaction.js | 15 ------- handwritten/nodejs-datastore/test/index.js | 30 ++++++++++++++ 5 files changed, 45 insertions(+), 62 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 3986e0120d5..4cb854ab3c4 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -52,19 +52,11 @@ var Transaction = require('./transaction.js'); var PKG = require('../package.json'); /** - * Interact with the - * [Google Cloud Datastore](https://developers.google.com/datastore/). - * * @constructor * @alias module:datastore * @mixes module:datastore/request * - * @classdesc - * The `gcloud.datastore` object allows you to interact with Google Cloud - * Datastore. - * - * To learn more about Datastore, read the - * [Google Cloud Datastore Concepts Overview](https://cloud.google.com/datastore/docs/concepts/overview) + * @resource [Google Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview} * * @param {object=} options - [Configuration object](#/docs). * @param {string=} options.apiEndpoint - Override the default API endpoint used @@ -73,13 +65,6 @@ var PKG = require('../package.json'); * @param {string} options.namespace - Namespace to isolate transactions to. * * @example - * var gcloud = require('google-cloud')({ - * projectId: 'grape-spaceship-123', - * keyFilename: '/path/to/keyfile.json' - * }); - * - * var datastore = gcloud.datastore(); - * * //- * //

The Datastore Emulator

* // @@ -107,12 +92,7 @@ var PKG = require('../package.json'); * // Set that environment variable and your localhost Datastore will * // automatically be used. You can also pass this address in manually with * // `apiEndpoint`. - * //- - * var datastore = gcloud.datastore({ - * apiEndpoint: 'http://localhost:8080' - * }); - * - * //- + * // * // Additionally, `DATASTORE_PROJECT_ID` is recognized. If you have this set, * // you don't need to provide a `projectId`. * //- @@ -213,7 +193,7 @@ var PKG = require('../package.json'); * }; * * // Check if more results may exist. - * if (info.moreResults !== gcloud.datastore.NO_MORE_RESULTS) { + * if (info.moreResults !== datastore.NO_MORE_RESULTS) { * frontEndResponse.nextPageCursor = info.endCursor; * } * @@ -360,9 +340,9 @@ modelo.inherits(Datastore, DatastoreRequest, common.GrpcService); * @return {object} * * @example - * var threeDouble = gcloud.datastore.double(3.0); + * var threeDouble = datastore.double(3.0); */ -Datastore.double = function(value) { +Datastore.prototype.double = Datastore.double = function(value) { return new entity.Double(value); }; @@ -380,9 +360,9 @@ Datastore.double = function(value) { * longitude: -74.0447 * }; * - * var geoPoint = gcloud.datastore.geoPoint(coordinates); + * var geoPoint = datastore.geoPoint(coordinates); */ -Datastore.geoPoint = function(coordindates) { +Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordindates) { return new entity.GeoPoint(coordindates); }; @@ -393,9 +373,9 @@ Datastore.geoPoint = function(coordindates) { * @return {object} * * @example - * var sevenInteger = gcloud.datastore.int(7); + * var sevenInteger = datastore.int(7); */ -Datastore.int = function(value) { +Datastore.prototype.int = Datastore.int = function(value) { return new entity.Int(value); }; @@ -408,6 +388,7 @@ Datastore.int = function(value) { * * @type {string} */ +Datastore.prototype.MORE_RESULTS_AFTER_CURSOR = Datastore.MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR'; /** @@ -419,6 +400,7 @@ Datastore.MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR'; * * @type {string} */ +Datastore.prototype.MORE_RESULTS_AFTER_LIMIT = Datastore.MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT'; /** @@ -430,6 +412,7 @@ Datastore.MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT'; * * @type {string} */ +Datastore.prototype.NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS = 'NO_MORE_RESULTS'; /** diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index af7b2faebc1..7b3f89529e5 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -42,12 +42,6 @@ var arrify = require('arrify'); * @param {string} kind - Kind to query. * * @example - * var gcloud = require('google-cloud')({ - * keyFilename: '/path/to/keyfile.json', - * projectId: 'grape-spaceship-123' - * }); - * - * var datastore = gcloud.datastore(); * var query = datastore.createQuery('AnimalNamespace', 'Lion'); */ function Query(scope, namespace, kinds) { diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 9107f8d2e2e..95c00b794b7 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -57,15 +57,6 @@ var CONSISTENCY_PROTO_CODE = { * * Creates requests to the Datastore endpoint. Designed to be inherited by * {module:datastore} and {module:datastore/transaction} objects. - * - * @example - * // This is how to create a transaction object directly using this Transaction - * // class. The following transaction object is created for use in the examples - * // in this file below. - * var datastore = gcloud.datastore({ projectId: 'project-id' }); - * var Transaction = require('gcloud/lib/datastore/transaction'); - * var transaction = new Transaction(datastore, 'my-project-id'); - * transaction.id = '1234'; // Give the transaction an ID. */ /** * Handle logic for Datastore API operations. @@ -717,9 +708,9 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { * key: key, * data: { * name: 'DonutShack', - * rating: gcloud.datastore.int(10), - * worth: gcloud.datastore.double(123456.78), - * location: gcloud.datastore.geoPoint({ + * rating: datastore.int(10), + * worth: datastore.double(123456.78), + * location: datastore.geoPoint({ * latitude: 40.6894, * longitude: -74.0447 * }), diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index d7f8cd542ed..4b1568b8832 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -35,15 +35,6 @@ var Request = require('./request.js'); /*! Developer Documentation * * @param {module:datastore} datastore - A Datastore instance. - * - * @example - * // This is how to create a transaction object directly using this Transaction - * // class. The following transaction object is created for use in the examples - * // in this file below. - * var Transaction = gcloud.datastore.Transaction; - * var datastore = gcloud.datastore({ projectId: 'project-id' }); - * var transaction = new Transaction(datastore, 'my-project-id'); - * transaction.id = '1234'; // Give the transaction an ID. */ /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -58,12 +49,6 @@ var Request = require('./request.js'); * @mixes module:datastore/request * * @example - * var gcloud = require('google-cloud'); - * var datastore = gcloud.datastore({ - * projectId: 'my-project', - * keyFilename: '/path/to/keyfile.json' - * }); - * * var transaction = datastore.transaction(); */ function Transaction(datastore) { diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index ee10e51c521..423f350c6c7 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -167,6 +167,10 @@ describe('Datastore', function() { var double = Datastore.double(aDouble); assert.strictEqual(double.value, aDouble); }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.double, Datastore.double); + }); }); describe('geoPoint', function() { @@ -175,6 +179,10 @@ describe('Datastore', function() { var geoPoint = Datastore.geoPoint(aGeoPoint); assert.strictEqual(geoPoint.value, aGeoPoint); }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.geoPoint, Datastore.geoPoint); + }); }); describe('int', function() { @@ -183,6 +191,10 @@ describe('Datastore', function() { var int = Datastore.int(anInt); assert.strictEqual(int.value, anInt); }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.int, Datastore.int); + }); }); describe('MORE_RESULTS_AFTER_CURSOR', function() { @@ -192,6 +204,13 @@ describe('Datastore', function() { 'MORE_RESULTS_AFTER_CURSOR' ); }); + + it('should also be on the prototype', function() { + assert.strictEqual( + datastore.MORE_RESULTS_AFTER_CURSOR, + Datastore.MORE_RESULTS_AFTER_CURSOR + ); + }); }); describe('MORE_RESULTS_AFTER_LIMIT', function() { @@ -201,12 +220,23 @@ describe('Datastore', function() { 'MORE_RESULTS_AFTER_LIMIT' ); }); + + it('should also be on the prototype', function() { + assert.strictEqual( + datastore.MORE_RESULTS_AFTER_LIMIT, + Datastore.MORE_RESULTS_AFTER_LIMIT + ); + }); }); describe('NO_MORE_RESULTS', function() { it('should expose a NO_MORE_RESULTS helper', function() { assert.strictEqual(Datastore.NO_MORE_RESULTS, 'NO_MORE_RESULTS'); }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.NO_MORE_RESULTS, Datastore.NO_MORE_RESULTS); + }); }); describe('createQuery', function() { From 6f157b4487eb4f012050a837ce6918df2038abf7 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 15 Aug 2016 23:45:28 -0700 Subject: [PATCH 037/820] Switch to individual API packages. (#169) * Switch to individual API packages. * Address comments * Address comments --- .../nodejs-datastore/samples/concepts.js | 118 ++++++++++-------- handwritten/nodejs-datastore/samples/error.js | 18 +-- .../nodejs-datastore/samples/package.json | 6 +- handwritten/nodejs-datastore/samples/tasks.js | 51 ++++---- 4 files changed, 106 insertions(+), 87 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index f7611d9c424..d8251f7d48d 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -14,11 +14,11 @@ 'use strict'; var asyncUtil = require('async'); -// By default, gcloud will authenticate using the service account file specified -// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the -// project specified by the GCLOUD_PROJECT environment variable. See -// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication -var gcloud = require('gcloud'); +// By default, the client will authenticate using the service account file +// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use +// the project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication +var Datastore = require('@google-cloud/datastore'); module.exports = { Entity: Entity, @@ -45,7 +45,7 @@ function Entity (projectId) { projectId: projectId }; - this.datastore = gcloud.datastore(options); + this.datastore = Datastore(options); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; @@ -458,7 +458,7 @@ function Index (projectId) { projectId: projectId }; - this.datastore = gcloud.datastore(options); + this.datastore = Datastore(options); } Index.prototype.testUnindexedPropertyQuery = function (callback) { @@ -506,7 +506,7 @@ function Metadata (projectId) { projectId: projectId }; - this.datastore = gcloud.datastore(options); + this.datastore = Datastore(options); } Metadata.prototype.testNamespaceRunQuery = function (callback) { @@ -643,7 +643,7 @@ function Query (projectId) { projectId: projectId }; - this.datastore = gcloud.datastore(options); + this.datastore = Datastore(options); this.basicQuery = this.getBasicQuery(); this.projectionQuery = this.getProjectionQuery(); @@ -1040,18 +1040,21 @@ Query.prototype.testEventualConsistentQuery = function () { // [START transactional_update] function transferFunds (fromKey, toKey, amount, callback) { - var error; + var transaction = datastore.transaction(); + + transaction.run(function (err) { + if (err) { + return callback(err); + } - datastore.runInTransaction(function (transaction, done) { transaction.get([ fromKey, toKey ], function (err, accounts) { if (err) { - // An error occurred while getting the values. - error = err; - transaction.rollback(done); - return; + return transaction.rollback(function (_err) { + return callback(_err || err); + }); } accounts[0].data.balance -= amount; @@ -1059,14 +1062,15 @@ function transferFunds (fromKey, toKey, amount, callback) { transaction.save(accounts); - done(); + transaction.commit(function (err) { + if (err) { + return callback(err); + } + + // The transaction completed successfully. + callback(); + }); }); - }, function (transactionError) { - if (transactionError || error) { - return callback(transactionError || error); - } - // The transaction completed successfully. - callback(); }); } // [END transactional_update] @@ -1076,7 +1080,7 @@ function Transaction (projectId) { projectId: projectId }; - this.datastore = gcloud.datastore(options); + this.datastore = Datastore(options); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); @@ -1203,37 +1207,41 @@ Transaction.prototype.testTransactionalGetOrCreate = function (callback) { // [START transactional_get_or_create] function getOrCreate (taskKey, taskData, callback) { - var error; - var taskEntity = { key: taskKey, data: taskData }; - datastore.runInTransaction(function (transaction, done) { + var transaction = datastore.transaction(); + + transaction.run(function (err) { + if (err) { + return callback(err); + } + transaction.get(taskKey, function (err, task) { if (err) { // An error occurred while getting the values. - error = err; - transaction.rollback(done); - return; + return transaction.rollback(function (_err) { + return callback(_err || err); + }); } if (task) { // The task entity already exists. - transaction.rollback(done); + transaction.rollback(callback); } else { // Create the task entity. transaction.save(taskEntity); - done(); + transaction.commit(function (err) { + if (err) { + return callback(err); + } + // The transaction completed successfully. + callback(null, taskEntity); + }); } }); - }, function (transactionError) { - if (transactionError || error) { - return callback(transactionError || error); - } - // The transaction completed successfully. - callback(null, taskEntity); }); } // [END transactional_get_or_create] @@ -1288,17 +1296,22 @@ Transaction.prototype.testSingleEntityGroupReadOnly = function (callback) { // [START transactional_single_entity_group_read_only] function getTaskListEntities (callback) { - var error; var taskListEntities; - datastore.runInTransaction(function (transaction, done) { + var transaction = datastore.transaction(); + + transaction.run(function (err) { + if (err) { + return callback(err); + } + var taskListKey = datastore.key(['TaskList', 'default']); datastore.get(taskListKey, function (err) { if (err) { - error = err; - transaction.rollback(done); - return; + return transaction.rollback(function (_err) { + return callback(_err || err); + }); } var query = datastore.createQuery('Task') @@ -1307,21 +1320,22 @@ Transaction.prototype.testSingleEntityGroupReadOnly = function (callback) { datastore.runQuery(query, function (err, entities) { if (err) { // An error occurred while running the query. - error = err; - transaction.rollback(done); - return; + return transaction.rollback(function (_err) { + return callback(_err || err); + }); } taskListEntities = entities; - done(); + transaction.commit(function (err) { + if (err) { + return callback(err); + } + + // The transaction completed successfully. + callback(null, taskListEntities); + }); }); }); - }, function (transactionError) { - if (transactionError || error) { - return callback(transactionError || error); - } - // The transaction completed successfully. - callback(null, taskListEntities); }); } // [END transactional_single_entity_group_read_only] diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index 94ea22b319c..4ed1c93c94a 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -13,18 +13,20 @@ 'use strict'; -// By default, gcloud will authenticate using the service account file specified -// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the -// project specified by the GCLOUD_PROJECT environment variable. See -// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication -var gcloud = require('gcloud'); -var dataset = gcloud.datastore(); +// By default, the client will authenticate using the service account file +// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use +// the project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication +var Datastore = require('@google-cloud/datastore'); + +// Instantiate a datastore client +var datastore = Datastore(); // [START error] function runQuery (cb) { - var query = dataset.createQuery(['Company']).start('badrequest'); + var query = datastore.createQuery(['Company']).start('badrequest'); - dataset.runQuery(query, function (err, entities) { + datastore.runQuery(query, function (err, entities) { // Check for an error if (err) { console.log(err.errors); // [...] diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 934673d364c..1503dcf17e2 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,10 +9,10 @@ "system-test": "mocha -R spec -t 120000 --require intelli-espower-loader ../system-test/_setup.js system-test/*.test.js" }, "dependencies": { - "async": "^1.5.2", - "gcloud": "^0.34.0" + "@google-cloud/datastore": "^0.1.1", + "async": "^2.0.1" }, "devDependencies": { - "mocha": "^2.5.3" + "mocha": "^3.0.2" } } diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 1124e7f2b33..27bf5b8da1a 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -16,17 +16,15 @@ var input = process.argv.splice(2); var command = input.shift(); -if (!process.env.GCLOUD_PROJECT) { - throw new Error('GCLOUD_PROJECT environment variable required.'); -} - // [START build_service] -// By default, gcloud will authenticate using the service account file specified -// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the -// project specified by the GCLOUD_PROJECT environment variable. See -// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication -var gcloud = require('gcloud'); -var datastore = gcloud.datastore(); +// By default, the client will authenticate using the service account file +// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use +// the project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication +var Datastore = require('@google-cloud/datastore'); + +// Instantiate a datastore client +var datastore = Datastore(); // [END build_service] /* @@ -100,9 +98,13 @@ function addTask (description, callback) { // [START update_entity] function markDone (taskId, callback) { - var error; + var transaction = datastore.transaction(); + + transaction.run(function (err) { + if (err) { + return callback(err); + } - datastore.runInTransaction(function (transaction, done) { var taskKey = datastore.key([ 'Task', taskId @@ -110,25 +112,26 @@ function markDone (taskId, callback) { transaction.get(taskKey, function (err, task) { if (err) { - // An error occurred while getting the values. - error = err; - transaction.rollback(done); - return; + // An error occurred while getting the task + return transaction.rollback(function (_err) { + return callback(err || _err); + }); } task.data.done = true; transaction.save(task); - // Commit the transaction. - done(); + // Commit the transaction + transaction.commit(function (err) { + if (err) { + return callback(err); + } + + // The transaction completed successfully. + callback(); + }); }); - }, function (transactionError) { - if (transactionError || error) { - return callback(transactionError || error); - } - // The transaction completed successfully. - callback(); }); } // [END update_entity] From 84e0e73119609bd00e329bd19d63532268e399a6 Mon Sep 17 00:00:00 2001 From: Walter Poupore Date: Tue, 16 Aug 2016 09:30:11 -0700 Subject: [PATCH 038/820] Uses 'category' instead of 'type' as a property name (#171) --- .../nodejs-datastore/samples/concepts.js | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index d8251f7d48d..f8bacd632bf 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -106,7 +106,7 @@ Entity.prototype.getKeyWithMultiLevelParent = function () { Entity.prototype.getTask = function () { // [START basic_entity] var task = { - type: 'Personal', + category: 'Personal', done: false, priority: 4, description: 'Learn Cloud Datastore' @@ -151,7 +151,7 @@ Entity.prototype.testEntityWithParent = function (callback) { var task = { key: taskKey, data: { - type: 'Personal', + category: 'Personal', done: false, priority: 4, description: 'Learn Cloud Datastore' @@ -167,7 +167,7 @@ Entity.prototype.testProperties = function (callback) { // [START properties] var task = [ { - name: 'type', + name: 'category', value: 'Personal' }, { @@ -281,7 +281,7 @@ Entity.prototype.testLookup = function (callback) { // Task found. // entity.data = { - // type: 'Personal', + // category: 'Personal', // done: false, // priority: 4, // description: 'Learn Cloud Datastore' @@ -368,14 +368,14 @@ Entity.prototype.testBatchUpsert = function (callback) { var taskKey2 = this.datastore.key(['Task', 2]); var task1 = { - type: 'Personal', + category: 'Personal', done: false, priority: 4, description: 'Learn Cloud Datastore' }; var task2 = { - type: 'Work', + category: 'Work', done: false, priority: 8, description: 'Integrate Cloud Datastore' @@ -849,8 +849,8 @@ Query.prototype.testDistinctQuery = function (callback) { // [START distinct_query] var query = datastore.createQuery('Task') - .groupBy(['type', 'priority']) - .order('type') + .groupBy(['category', 'priority']) + .order('category') .order('priority'); // [END distinct_query] @@ -862,8 +862,8 @@ Query.prototype.testDistinctOnQuery = function (callback) { // [START distinct_on_query] var query = datastore.createQuery('Task') - .groupBy('type') - .order('type') + .groupBy('category') + .order('category') .order('priority'); // [END distinct_on_query] From 13948951f66e5f01d34740bdf029e232d4259315 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 16 Aug 2016 09:59:04 -0700 Subject: [PATCH 039/820] Minor test fixes. --- .../nodejs-datastore/samples/system-test/index.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/system-test/index.yaml b/handwritten/nodejs-datastore/samples/system-test/index.yaml index e4c911fa5ef..178a98dd504 100644 --- a/handwritten/nodejs-datastore/samples/system-test/index.yaml +++ b/handwritten/nodejs-datastore/samples/system-test/index.yaml @@ -10,7 +10,7 @@ indexes: - name: percent_complete - kind: Task properties: - - name: type + - name: category - name: priority - kind: Task properties: @@ -22,16 +22,15 @@ indexes: - name: created - kind: Task properties: - - name: type + - name: category - name: priority direction: desc - kind: Task properties: - - name: type + - name: category - name: created - kind: Task properties: - name: priority direction: desc - name: created - \ No newline at end of file From f03ff4cdb53c4443230836ec2c91a321bf802f1b Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 16 Aug 2016 13:47:46 -0400 Subject: [PATCH 040/820] tests: fix assert.throws() usage (#1468) --- handwritten/nodejs-datastore/test/request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 39ce7c01f2d..071106e8549 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -1305,7 +1305,7 @@ describe('Request', function() { assert.throws(function() { request.request_({ method: 'runQuery' }, reqOpts, assert.ifError); - }, 'Read consistency cannot be specified in a transaction.'); + }, /Read consistency cannot be specified in a transaction\./); }); }); }); From 73ddcfd5c012efe90a0563053fd5876df51cdd5b Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 18 Aug 2016 20:50:30 -0400 Subject: [PATCH 041/820] datastore: update to v1 (#1508) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/index.js | 2 +- handwritten/nodejs-datastore/test/index.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fbd78365594..52dfc0512a9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -54,7 +54,7 @@ "concat-stream": "^1.5.0", "create-error-class": "^2.0.1", "extend": "^3.0.0", - "@google-cloud/common": "^0.1.0", + "@google-cloud/common": "^0.2.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", "modelo": "^4.2.0", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 4cb854ab3c4..03edddb5013 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -323,7 +323,7 @@ function Datastore(options) { baseUrl: this.baseUrl_, customEndpoint: this.customEndpoint_, service: 'datastore', - apiVersion: 'v1beta3', + apiVersion: 'v1', scopes: ['https://www.googleapis.com/auth/datastore'], userAgent: PKG.name + '/' + PKG.version }; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 423f350c6c7..567b9e5a940 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -153,7 +153,7 @@ describe('Datastore', function() { assert.strictEqual(calledWith.baseUrl, datastore.baseUrl_); assert.strictEqual(calledWith.customEndpoint, datastore.customEndpoint_); assert.strictEqual(calledWith.service, 'datastore'); - assert.strictEqual(calledWith.apiVersion, 'v1beta3'); + assert.strictEqual(calledWith.apiVersion, 'v1'); assert.deepEqual(calledWith.scopes, [ 'https://www.googleapis.com/auth/datastore' ]); From 489cf604ac018d4cc7b58157f2701ca7e33e7460 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Mon, 22 Aug 2016 08:32:18 -0400 Subject: [PATCH 042/820] datastore: properly form deferred keys (#1498) --- handwritten/nodejs-datastore/src/request.js | 4 +++- handwritten/nodejs-datastore/test/request.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 95c00b794b7..37ce304a9f5 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -362,7 +362,9 @@ DatastoreRequest.prototype.get = function(keys, options, callback) { } var entities = entity.formatArray(resp.found); - var nextKeys = (resp.deferred || []).map(entity.keyFromKeyProto); + var nextKeys = (resp.deferred || []) + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); split(entities, stream, function(streamEnded) { if (streamEnded) { diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 071106e8549..5d27873c491 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -426,7 +426,8 @@ describe('Request', function() { } var expectedKeys = apiResponseWithDeferred.deferred - .map(entity.keyFromKeyProto); + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); assert.deepEqual(reqOpts.keys, expectedKeys); done(); From aebd14a6e1392f1c1318d087082789e2d7497af6 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 23 Aug 2016 14:38:50 -0400 Subject: [PATCH 043/820] gcloud-node -> google-cloud-node (#1521) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/index.js | 2 +- handwritten/nodejs-datastore/src/transaction.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 52dfc0512a9..90f2adeae5c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -36,7 +36,7 @@ "CONTRIBUTORS", "COPYING" ], - "repository": "googlecloudplatform/gcloud-node", + "repository": "googlecloudplatform/google-cloud-node", "keywords": [ "google apis client", "google api client", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 03edddb5013..9c56b261f14 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -71,7 +71,7 @@ var PKG = require('../package.json'); * //

gcloud SDK not supported

* // * // As of this release, the Datastore emulator that is part of the gcloud SDK - * // is not compatible with gcloud-node. We use + * // is not compatible with google-cloud-node. We use * // gRPC as our transport layer, while the gcloud * // SDK's Datastore emulator does not support gRPC. * // diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 4b1568b8832..ee76eb0ed89 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -184,7 +184,7 @@ Transaction.prototype.commit = function(callback) { self.rollback(function() { // Provide the error & API response from the failed commit to the user. // Even a failed rollback should be transparent. - // RE: https://github.com/GoogleCloudPlatform/gcloud-node/pull/1369#discussion_r66833976 + // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 callback(err, resp); }); return; From e17495eb49452ac8539fb8d176ced513443a40b1 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 26 Aug 2016 13:25:29 -0400 Subject: [PATCH 044/820] add readmes for all packages (#1495) * add bigquery readme * add all readmes * copy readme as part of release script * gcloud-node -> google-cloud-node * fix youre good to gos * add resource manager scope * exclude unecessary files --- handwritten/nodejs-datastore/README.md | 108 +++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 handwritten/nodejs-datastore/README.md diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md new file mode 100644 index 00000000000..0dc84da450b --- /dev/null +++ b/handwritten/nodejs-datastore/README.md @@ -0,0 +1,108 @@ +# @google-cloud/datastore +> Google Cloud Datastore Client Library for Node.js + +*Looking for more Google APIs than just Datastore? You might want to check out [`google-cloud`][google-cloud].* + +- [API Documentation][gcloud-datastore-docs] +- [Official Documentation][cloud-datastore-docs] + +*Follow the [activation instructions][cloud-datastore-activation] to use the Google Cloud Datastore API with your project.* + +```sh +$ npm install --save @google-cloud/datastore +``` +```js +var datastore = require('@google-cloud/datastore')({ + projectId: 'grape-spaceship-123', + keyFilename: '/path/to/keyfile.json' +}); + +var key = datastore.key(['Product', 'Computer']); + +datastore.get(key, function(err, entity) { + console.log(err || entity); +}); + +// Save data to Datastore. +var blogPostData = { + title: 'How to make the perfect homemade pasta', + author: 'Andrew Chilton', + isDraft: true +}; + +var blogPostKey = datastore.key('BlogPost'); + +datastore.save({ + key: blogPostKey, + data: blogPostData +}, function(err) { + // `blogPostKey` has been updated with an ID so you can do more operations + // with it, such as an update. + blogPostData.isDraft = false; + + datastore.save({ + key: blogPostKey, + data: blogPostData + }, function(err) { + if (!err) { + // The blog post is now published! + } + }); +}); +``` + + +## Authentication + +It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Google Cloud services. + +### On Google Compute Engine + +If you are running this client on Google Compute Engine, we handle authentication for you with no configuration. You just need to make sure that when you [set up the GCE instance][gce-how-to], you add the correct scopes for the APIs you want to access. + +``` js +// Authenticating on a global basis. +var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123' + +var datastore = require('@google-cloud/datastore')({ + projectId: projectId +}); + +// ...you're good to go! +``` + +### Elsewhere + +If you are not running this client on Google Compute Engine, you need a Google Developers service account. To create a service account: + +1. Visit the [Google Developers Console][dev-console]. +2. Create a new project or click on an existing project. +3. Navigate to **APIs & auth** > **APIs section** and turn on the following APIs (you may need to enable billing in order to use these services): + * Google Cloud Datastore API +4. Navigate to **APIs & auth** > **Credentials** and then: + * If you want to use a new service account, click on **Create new Client ID** and select **Service account**. After the account is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests. + * If you want to generate a new key for an existing service account, click on **Generate new JSON key** and download the JSON key file. + +``` js +var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123' + +var datastore = require('@google-cloud/datastore')({ + projectId: projectId, + + // The path to your key file: + keyFilename: '/path/to/keyfile.json' + + // Or the contents of the key file: + credentials: require('./path/to/keyfile.json') +}); + +// ...you're good to go! +``` + + +[google-cloud]: https://github.com/GoogleCloudPlatform/google-cloud-node +[gce-how-to]: https://cloud.google.com/compute/docs/authentication#using +[dev-console]: https://console.developers.google.com/project +[gcloud-datastore-docs]: https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore +[cloud-datastore-docs]: https://cloud.google.com/datastore/docs +[cloud-datastore-activation]: https://cloud.google.com/datastore/docs/activate From 0f1c0127bd1c919e5276e80ee5c4f2cee61f6f5c Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 26 Aug 2016 17:47:55 -0400 Subject: [PATCH 045/820] bigquery/language/logging/prediction/vision: decouple packages (#1531) * bigquery/language/logging/prediction/vision: decouple packages * tests: allow more time for docs tests to run * add vision test * resort dependencies like npm does --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 90f2adeae5c..a821c708241 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -50,11 +50,11 @@ "datastore" ], "dependencies": { + "@google-cloud/common": "^0.2.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^2.0.1", "extend": "^3.0.0", - "@google-cloud/common": "^0.2.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", "modelo": "^4.2.0", From 0b2836240972284565ae830380d3dd252eda7d57 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 30 Aug 2016 11:12:11 -0400 Subject: [PATCH 046/820] datastore @ 0.2.0 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a821c708241..825cffa0d5b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.1.1", + "version": "0.2.0", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ From 9bab2558c11b48ca6bcd3dfb9d52feb3082c27e6 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 31 Aug 2016 12:29:41 -0400 Subject: [PATCH 047/820] datastore: deep clone user objects (#1552) * datastore: deep clone user objects * add notStrictEqual test --- handwritten/nodejs-datastore/src/entity.js | 3 +++ handwritten/nodejs-datastore/test/entity.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 57869aabd65..095d574c1a1 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -23,6 +23,7 @@ var arrify = require('arrify'); var createErrorClass = require('create-error-class'); +var extend = require('extend'); var is = require('is'); var entity = module.exports; @@ -285,6 +286,8 @@ function encodeValue(value) { if (is.object(value)) { if (!is.empty(value)) { + value = extend(true, {}, value); + for (var prop in value) { if (value.hasOwnProperty(prop)) { value[prop] = entity.encodeValue(value[prop]); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index feea6cae641..bcdd69a5581 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -21,6 +21,7 @@ var deepStrictEqual = require('deep-strict-equal'); assert.deepStrictEqual = assert.deepStrictEqual || function() { return assert(deepStrictEqual.apply(this, arguments)); }; +var extend = require('extend'); var Datastore = require('../'); @@ -430,6 +431,23 @@ describe('entity', function() { assert.deepEqual(entity.encodeValue(value), expectedValueProto); }); + it('should clone an object', function() { + var value = { + a: { + b: { + obj: true + } + } + }; + + var originalValue = extend(true, {}, value); + + var encodedValue = entity.encodeValue(value); + + assert.deepEqual(value, originalValue); + assert.notStrictEqual(value, encodedValue); + }); + it('should encode an empty object', function() { var value = {}; From ec6992a7304ef11175005dcdc3366317f4b61653 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 2 Sep 2016 11:05:17 -0400 Subject: [PATCH 048/820] datastore: provide google-cloud-resource-prefix header (#1558) --- handwritten/nodejs-datastore/src/index.js | 5 ++++- handwritten/nodejs-datastore/test/index.js | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 9c56b261f14..22f1c84687b 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -325,7 +325,10 @@ function Datastore(options) { service: 'datastore', apiVersion: 'v1', scopes: ['https://www.googleapis.com/auth/datastore'], - userAgent: PKG.name + '/' + PKG.version + userAgent: PKG.name + '/' + PKG.version, + grpcMetadata: { + 'google-cloud-resource-prefix': 'projects/' + this.projectId + } }; common.GrpcService.call(this, config, options); diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 567b9e5a940..64e3e1544bb 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -158,6 +158,9 @@ describe('Datastore', function() { 'https://www.googleapis.com/auth/datastore' ]); assert.strictEqual(calledWith.userAgent, PKG.name + '/' + PKG.version); + assert.deepEqual(calledWith.grpcMetadata, { + 'google-cloud-resource-prefix': 'projects/' + datastore.projectId + }); }); }); From 2195fc25b931ddbd5e24ade639c43cdde7e74084 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 2 Sep 2016 11:08:05 -0400 Subject: [PATCH 049/820] datastore: document how to use the emulator (#1560) --- handwritten/nodejs-datastore/src/index.js | 28 +++++++++++------------ 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 22f1c84687b..b73f36d446c 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -68,25 +68,23 @@ var PKG = require('../package.json'); * //- * //

The Datastore Emulator

* // - * //

gcloud SDK not supported

+ * // Make sure you have the + * // [gcloud SDK installed](https://cloud.google.com/sdk/downloads), then run: * // - * // As of this release, the Datastore emulator that is part of the gcloud SDK - * // is not compatible with google-cloud-node. We use - * // gRPC as our transport layer, while the gcloud - * // SDK's Datastore emulator does not support gRPC. - * // - * //

Use `gcd.sh` directly

- * // For now, you must use the - * // - * // gcd.sh script. + * //
+ * //   $ gcloud beta emulators datastore start --no-legacy
+ * // 
* // - * // When you run `./gcd start [datastore]`, you will see the following - * // printed: + * // You will see the following printed: * // * //
- * //   If you are using a library that supports the DATASTORE_EMULATOR_HOST
- * //   environment variable, run:
- * //     export DATASTORE_EMULATOR_HOST=localhost:8080
+ * //   [datastore] API endpoint: http://localhost:8005
+ * //   [datastore] If you are using a library that supports the
+ * //               DATASTORE_EMULATOR_HOST environment variable, run:
+ * //   [datastore]
+ * //   [datastore]   export DATASTORE_EMULATOR_HOST=localhost:8005
+ * //   [datastore]
+ * //   [datastore] Dev App Server is now running.
  * // 
* // * // Set that environment variable and your localhost Datastore will From 05324e63d6139a2cef1d4694ab8667c4884bff2d Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 7 Sep 2016 13:06:05 -0400 Subject: [PATCH 050/820] datastore: update dependencies --- handwritten/nodejs-datastore/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 825cffa0d5b..956ecc646e6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -50,10 +50,12 @@ "datastore" ], "dependencies": { - "@google-cloud/common": "^0.2.0", + "@google-cloud/common": "^0.4.0", "arrify": "^1.0.0", + "async": "^2.0.1", "concat-stream": "^1.5.0", - "create-error-class": "^2.0.1", + "create-error-class": "^3.0.2", + "deep-strict-equal": "^0.2.0", "extend": "^3.0.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", @@ -63,8 +65,6 @@ "split-array-stream": "^1.0.0" }, "devDependencies": { - "async": "^1.4.2", - "deep-strict-equal": "^0.1.0", "mocha": "^3.0.1", "proxyquire": "^1.7.10", "through2": "^2.0.0" From 14ff504d484de5fa85665fbb0fc843cd62be9958 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 7 Sep 2016 13:06:38 -0400 Subject: [PATCH 051/820] datastore @ 0.3.0 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 956ecc646e6..1baf2118cd9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.2.0", + "version": "0.3.0", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ From 2d1201c9dcb1c684b5bd051a8b68232e02443301 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 7 Sep 2016 13:10:30 -0400 Subject: [PATCH 052/820] datastore: remove devDeps from deps --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1baf2118cd9..b09a3dd3113 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -52,10 +52,8 @@ "dependencies": { "@google-cloud/common": "^0.4.0", "arrify": "^1.0.0", - "async": "^2.0.1", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", - "deep-strict-equal": "^0.2.0", "extend": "^3.0.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", @@ -65,6 +63,8 @@ "split-array-stream": "^1.0.0" }, "devDependencies": { + "async": "^2.0.1", + "deep-strict-equal": "^0.2.0", "mocha": "^3.0.1", "proxyquire": "^1.7.10", "through2": "^2.0.0" From ea612698c05706fa695ea355cceca44216ef91c5 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 7 Sep 2016 13:11:49 -0400 Subject: [PATCH 053/820] datastore @ 0.3.1 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b09a3dd3113..eed4f3a7e56 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.3.0", + "version": "0.3.1", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ From a6eeb4f1a8c41cebdad56ed7653ad4eae194ee17 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 9 Sep 2016 15:19:15 -0400 Subject: [PATCH 054/820] all modules: ensure all User-Agents are set (#1568) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/index.js | 4 +--- handwritten/nodejs-datastore/test/index.js | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index eed4f3a7e56..2ff94495a94 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -50,7 +50,7 @@ "datastore" ], "dependencies": { - "@google-cloud/common": "^0.4.0", + "@google-cloud/common": "^0.5.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index b73f36d446c..0bef77f26a7 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -49,8 +49,6 @@ var Query = require('./query.js'); */ var Transaction = require('./transaction.js'); -var PKG = require('../package.json'); - /** * @constructor * @alias module:datastore @@ -323,7 +321,7 @@ function Datastore(options) { service: 'datastore', apiVersion: 'v1', scopes: ['https://www.googleapis.com/auth/datastore'], - userAgent: PKG.name + '/' + PKG.version, + packageJson: require('../package.json'), grpcMetadata: { 'google-cloud-resource-prefix': 'projects/' + this.projectId } diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 64e3e1544bb..ad7161ecf32 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -21,8 +21,6 @@ var extend = require('extend'); var proxyquire = require('proxyquire'); var util = require('@google-cloud/common').util; -var PKG = require('../package.json'); - var fakeEntity = { Int: function(value) { this.value = value; @@ -157,7 +155,7 @@ describe('Datastore', function() { assert.deepEqual(calledWith.scopes, [ 'https://www.googleapis.com/auth/datastore' ]); - assert.strictEqual(calledWith.userAgent, PKG.name + '/' + PKG.version); + assert.deepEqual(calledWith.packageJson, require('../package.json')); assert.deepEqual(calledWith.grpcMetadata, { 'google-cloud-resource-prefix': 'projects/' + datastore.projectId }); From e057db42297ae9e620490f9ad1489e3e25700736 Mon Sep 17 00:00:00 2001 From: Ace Nassri Date: Tue, 13 Sep 2016 11:58:52 -0500 Subject: [PATCH 055/820] Convert tasks.js to yargs (#210) Add yargs to tasks.js --- .../nodejs-datastore/samples/package.json | 3 +- handwritten/nodejs-datastore/samples/tasks.js | 160 +++++++----------- 2 files changed, 61 insertions(+), 102 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 1503dcf17e2..06c325ce0ee 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -10,7 +10,8 @@ }, "dependencies": { "@google-cloud/datastore": "^0.1.1", - "async": "^2.0.1" + "async": "^2.0.1", + "yargs": "^5.0.0" }, "devDependencies": { "mocha": "^3.0.2" diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 27bf5b8da1a..7d8230778f3 100755 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -13,9 +13,6 @@ 'use strict'; -var input = process.argv.splice(2); -var command = input.shift(); - // [START build_service] // By default, the client will authenticate using the service account file // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use @@ -60,7 +57,7 @@ export GCLOUD_PROJECT= 7. Run the application! ```sh -npm run tasks +node tasks ``` */ @@ -87,11 +84,12 @@ function addTask (description, callback) { ] }, function (err) { if (err) { - callback(err); - return; + return callback(err); } - callback(null, taskKey); + var taskId = taskKey.path.pop(); + console.log('Task %d created successfully.', taskId); + return callback(null, taskKey); }); } // [END add_entity] @@ -129,7 +127,8 @@ function markDone (taskId, callback) { } // The transaction completed successfully. - callback(); + console.log('Task %d updated successfully.', taskId); + return callback(null); }); }); }); @@ -141,7 +140,14 @@ function listTasks (callback) { var query = datastore.createQuery('Task') .order('created'); - datastore.runQuery(query, callback); + datastore.runQuery(query, function (err, tasks) { + if (err) { + return callback(err); + } + + console.log('Found %d task(s)!', tasks.length); + return callback(null, tasks); + }); } // [END retrieve_entities] @@ -152,101 +158,53 @@ function deleteTask (taskId, callback) { taskId ]); - datastore.delete(taskKey, callback); + datastore.delete(taskKey, function (err) { + if (err) { + return callback(err); + } + + console.log('Task %d deleted successfully.', taskId); + return callback(null); + }); } // [END delete_entity] -// [START format_results] -function formatTasks (tasks) { - return tasks - .map(function (task) { - var taskKey = task.key.path.pop(); - var status; - - if (task.data.done) { - status = 'done'; - } else { - status = 'created ' + new Date(task.data.created); - } - - return taskKey + ' : ' + task.data.description + ' (' + status + ')'; - }) - .join('\n'); -} -// [END format_results] +var cli = require('yargs'); +var makeHandler = require('../utils').makeHandler; + +var program = module.exports = { + addEntity: addTask, + updateEntity: markDone, + retrieveEntities: listTasks, + deleteEntity: deleteTask, + main: function (args) { + // Run the command-line program + cli.help().strict().parse(args).argv; + } +}; + +cli + .demand(1) + .command('new ', 'Adds a task with a description .', {}, function (options) { + addTask(options.description, makeHandler()); + }) + .command('done ', 'Marks the specified task as done.', {}, function (options) { + markDone(options.taskId, makeHandler()); + }) + .command('list', 'Lists all tasks ordered by creation time.', {}, function (options) { + listTasks(makeHandler()); + }) + .command('delete ', 'Deletes a task.', {}, function (options) { + deleteTask(options.taskId, makeHandler()); + }) + .example('node $0 new "Buy milk"', 'Adds a task with description "Buy milk".') + .example('node $0 done 12345', 'Marks task 12345 as Done.') + .example('node $0 list', 'Lists all tasks ordered by creation time') + .example('node $0 delete 12345', 'Deletes task 12345.') + .wrap(120) + .recommendCommands() + .epilogue('For more information, see https://cloud.google.com/datastore/docs'); if (module === require.main) { - var taskId; - - switch (command) { - case 'new': { - addTask(input, function (err, taskKey) { - if (err) { - throw err; - } - - taskId = taskKey.path.pop(); - - console.log('Task %d created successfully.', taskId); - }); - - break; - } - case 'done': { - taskId = parseInt(input, 10); - - markDone(taskId, function (err) { - if (err) { - throw err; - } - - console.log('Task %d updated successfully.', taskId); - }); - - break; - } - case 'list': { - listTasks(function (err, tasks) { - if (err) { - throw err; - } - - console.log(formatTasks(tasks)); - }); - - break; - } - case 'delete': { - taskId = parseInt(input, 10); - - deleteTask(taskId, function (err) { - if (err) { - throw err; - } - - console.log('Task %d deleted successfully.', taskId); - }); - - break; - } - default: { - // Only print usage if this file is being executed directly - if (module === require.main) { - console.log([ - 'Usage:', - '', - ' new Adds a task with a description ', - ' done Marks a task as done', - ' list Lists all tasks by creation time', - ' delete Deletes a task' - ].join('\n')); - } - } - } + program.main(process.argv.slice(2)); } - -module.exports.addEntity = addTask; -module.exports.updateEntity = markDone; -module.exports.retrieveEntities = listTasks; -module.exports.deleteEntity = deleteTask; -module.exports.formatTasks = formatTasks; From 5a63cdaa1835cfce77a9aa3153ede88740b24861 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Fri, 23 Sep 2016 15:52:31 -0400 Subject: [PATCH 056/820] datastore: use millisecond-precision with stored dates (#1611) --- handwritten/nodejs-datastore/src/entity.js | 8 ++++---- .../nodejs-datastore/system-test/datastore.js | 2 +- handwritten/nodejs-datastore/test/entity.js | 16 ++++++++++------ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 095d574c1a1..7f9d7929588 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -191,7 +191,8 @@ function decodeValueProto(valueProto) { } case 'timestampValue': { - return new Date(parseInt(value.seconds, 10) * 1000); + var milliseconds = parseInt(value.nanos, 10) / 1e6; + return new Date(parseInt(value.seconds, 10) * 1000 + milliseconds); } default: { @@ -252,11 +253,10 @@ function encodeValue(value) { if (value instanceof Date) { var seconds = value.getTime() / 1000; - var secondsRounded = Math.floor(seconds); valueProto.timestampValue = { - seconds: secondsRounded, - nanos: Math.floor((seconds - secondsRounded) * 1e9) + seconds: Math.floor(seconds), + nanos: value.getMilliseconds() * 1e6 }; return valueProto; diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 9f1d6ca8d15..cf10a910dcd 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -71,7 +71,7 @@ describe('Datastore', function() { var post = { title: 'How to make the perfect pizza in your grill', tags: ['pizza', 'grill'], - publishedAt: new Date(2001, 0, 1), + publishedAt: new Date(), author: 'Silvano', isDraft: false, wordCount: 400, diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index bcdd69a5581..4e7190b918a 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -218,13 +218,18 @@ describe('entity', function() { }); it('should decode timestamps', function() { - var seconds = String(Date.now() / 1000); - var expectedValue = new Date(parseInt(seconds, 10) * 1000); + var date = new Date(); + + var seconds = Math.floor(date.getTime() / 1000); + var ms = date.getMilliseconds(); + + var expectedValue = new Date(seconds * 1000 + ms); var valueProto = { value_type: 'timestampValue', timestampValue: { - seconds: seconds + seconds: seconds, + nanos: ms * 1e6 } }; @@ -327,12 +332,11 @@ describe('entity', function() { it('should encode a date', function() { var value = new Date(); var seconds = value.getTime() / 1000; - var secondsRounded = Math.floor(seconds); var expectedValueProto = { timestampValue: { - seconds: secondsRounded, - nanos: Math.floor((seconds - secondsRounded) * 1e9) + seconds: Math.floor(seconds), + nanos: value.getMilliseconds() * 1e6 } }; From 739057d0ecf332f1dac11d27690ca5fc27062c80 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Mon, 26 Sep 2016 18:55:38 -0400 Subject: [PATCH 057/820] all: update @google-cloud/common dependency --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2ff94495a94..5cff623334d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -50,7 +50,7 @@ "datastore" ], "dependencies": { - "@google-cloud/common": "^0.5.0", + "@google-cloud/common": "^0.6.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", From 482e37d146a860e33732c427dfc31de843ffea43 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Mon, 26 Sep 2016 18:57:02 -0400 Subject: [PATCH 058/820] datastore @ 0.4.0 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5cff623334d..370f6c81551 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "0.3.1", + "version": "0.4.0", "author": "Google Inc.", "description": "Google Cloud Datastore Client Library for Node.js", "contributors": [ From 42543f3c550879bd09d1d06e34631ac572305a8a Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 27 Sep 2016 15:22:27 -0700 Subject: [PATCH 059/820] Upgrade Pub/Sub samples. (#216) * Upgrade pubsub samples. * Address comments. * Remove extraneous datastore test that's causing things to fail. --- .../nodejs-datastore/samples/system-test/tasks.test.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js index f87da87449a..3d7e94e2a46 100644 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -48,16 +48,6 @@ describe('datastore:tasks', function () { }); }); - it('should format tasks', function (done) { - tasks.retrieveEntities(function (err, _tasks) { - assert.ifError(err); - assert.doesNotThrow(function () { - tasks.formatTasks(_tasks); - }); - done(); - }); - }); - function getTaskId (callback) { tasks.addEntity('description', function (err, taskKey) { if (err) { From 7852afcab200dc9dde357e6e4dfdbd1928fc8632 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 27 Sep 2016 22:02:05 -0700 Subject: [PATCH 060/820] Adds 6 quickstart examples (#218) * Add some simple "quickstart" samples. * Add quickstart tests (#215) * First draft of new tests * Fix failing tests * Fix comments * Add comments. * Update comments. * Add another comment. * Cleanup. * Fix region tags. * Fix comments. --- .../nodejs-datastore/samples/quickstart.js | 31 +++++++++ .../samples/system-test/quickstart.test.js | 69 +++++++++++++++++++ .../samples/test/quickstart.test.js | 39 +++++++++++ 3 files changed, 139 insertions(+) create mode 100644 handwritten/nodejs-datastore/samples/quickstart.js create mode 100644 handwritten/nodejs-datastore/samples/system-test/quickstart.test.js create mode 100644 handwritten/nodejs-datastore/samples/test/quickstart.test.js diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js new file mode 100644 index 00000000000..05feb6dc0ad --- /dev/null +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -0,0 +1,31 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// [START datastore_quickstart] +// Imports and instantiates the Google Cloud client library +// for Google Cloud Datastore +const datastore = require('@google-cloud/datastore')({ + projectId: 'YOUR_PROJECT_ID' +}); + +const taskKey = datastore.key(['Task', 1234]); + +// Retrieves an entity +datastore.get(taskKey, (err, entity) => { + if (!err) { + // The entity was retrieved successfully + } +}); +// [END datastore_quickstart] diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js new file mode 100644 index 00000000000..2eb1ac9d65c --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js @@ -0,0 +1,69 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const proxyquire = require(`proxyquire`).noPreserveCache(); +const datastore = proxyquire(`@google-cloud/datastore`, {})(); +const kind = `Task`; +const message = `Buy milk`; +const key = datastore.key(kind); + +describe(`datastore:quickstart`, () => { + let datastoreMock, DatastoreMock; + + before((done) => { + datastore.save({ + key: key, + data: { + message: message + } + }, () => { + // Datastore is eventually consistent + setTimeout(done, 5000); + }); + }); + + after((done) => { + datastore.delete(key, () => { + // Ignore any error, the entity might not have been created + done(); + }); + }); + + it(`should get a task from Datastore`, (done) => { + datastoreMock = { + key: () => { + return key; + }, + + get: (_key) => { + assert.equal(_key, key); + + datastore.get(_key, (err, entity) => { + assert.ifError(err); + assert.notEqual(entity, undefined); + assert.notEqual(entity.key, undefined); + assert.equal(entity.key.kind, kind); + assert.deepEqual(entity.data, { message: message }); + done(); + }); + } + }; + DatastoreMock = sinon.stub().returns(datastoreMock); + + proxyquire(`../quickstart`, { + '@google-cloud/datastore': DatastoreMock + }); + }); +}); diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js new file mode 100644 index 00000000000..e793399f1ba --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -0,0 +1,39 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const proxyquire = require(`proxyquire`).noPreserveCache(); + +describe(`datastore:quickstart`, () => { + let datastoreMock, DatastoreMock; + + before(() => { + datastoreMock = { + get: sinon.stub().yields(null, { key: 1234 }), + key: sinon.stub.returns(`task/1234`) + }; + DatastoreMock = sinon.stub().returns(datastoreMock); + }); + + it(`should get a task from Datastore`, () => { + proxyquire(`../quickstart`, { + '@google-cloud/datastore': DatastoreMock + }); + + assert.equal(DatastoreMock.calledOnce, true); + assert.deepEqual(DatastoreMock.firstCall.args, [{ projectId: 'YOUR_PROJECT_ID' }]); + assert.equal(datastoreMock.get.calledOnce, true); + assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [datastoreMock.key(['Task', 1234])]); + }); +}); From e441449ed460ed0f2ab5084992999eef0b7da4c1 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 28 Sep 2016 11:03:14 -0400 Subject: [PATCH 061/820] datastore: re-use query object for continuation queries (#1635) --- handwritten/nodejs-datastore/src/request.js | 8 +++++--- handwritten/nodejs-datastore/test/request.js | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 37ce304a9f5..28744cb68d1 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -518,6 +518,8 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { return; } + query = extend(true, new Query(), query); + var limiter = common.util.createLimiter(makeRequest, options); var stream = limiter.stream; @@ -586,16 +588,16 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { // The query is "NOT_FINISHED". Get the rest of the results. var offset = query.offsetVal === -1 ? 0 : query.offsetVal; - var continuationQuery = extend(true, new Query(), query) + query .start(info.endCursor) .offset(offset - resp.batch.skippedResults); var limit = query.limitVal; if (limit && limit > -1) { - continuationQuery.limit(limit - resp.batch.entityResults.length); + query.limit(limit - resp.batch.entityResults.length); } - limiter.makeRequest(continuationQuery); + limiter.makeRequest(query); }); } diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 5d27873c491..6e28f4ba95d 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -589,12 +589,25 @@ describe('Request', function() { request.runQuery({}, options, assert.ifError); }); + it('should clone the query', function(done) { + var query = new FakeQuery(); + query.namespace = 'namespace'; + query = extend(true, new FakeQuery(), query); + + overrides.entity.queryToQueryProto = function(query_) { + assert.notStrictEqual(query_, query); + assert.deepEqual(query_, query); + done(); + }; + + request.runQuery(query, assert.ifError); + }); + it('should make correct request', function(done) { var query = { namespace: 'namespace' }; var queryProto = {}; - overrides.entity.queryToQueryProto = function(query_) { - assert.strictEqual(query_, query); + overrides.entity.queryToQueryProto = function() { return queryProto; }; @@ -693,7 +706,6 @@ describe('Request', function() { }); it('should re-run query if not finished', function(done) { - var continuationQuery; var query = { limitVal: 1, offsetVal: 8 @@ -769,7 +781,7 @@ describe('Request', function() { overrides.entity.queryToQueryProto = function(query_) { if (timesRequestCalled > 1) { - assert.strictEqual(query_, continuationQuery); + assert.strictEqual(query_, query); } return queryProto; }; From f712d95050a4a730cb916ce24d119086cdc1b4a0 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 28 Sep 2016 14:39:47 -0700 Subject: [PATCH 062/820] Add message ordering samples (#220) * Initial commit. * Add unit test. * Add message ordering sample. * Rename a sample. * Address comments. --- handwritten/nodejs-datastore/samples/quickstart.js | 1 - 1 file changed, 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 05feb6dc0ad..60a2c40c043 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -15,7 +15,6 @@ // [START datastore_quickstart] // Imports and instantiates the Google Cloud client library -// for Google Cloud Datastore const datastore = require('@google-cloud/datastore')({ projectId: 'YOUR_PROJECT_ID' }); From 53dd00437b35892ae1edbb2a9c0e5b7ccca48e9e Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 29 Sep 2016 10:22:14 -0700 Subject: [PATCH 063/820] Change quickstart style. (#221) * Change quickstart style. * Fix test. --- .../nodejs-datastore/samples/quickstart.js | 23 ++++++++++++++----- .../samples/test/quickstart.test.js | 4 ++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 60a2c40c043..01a8cf25829 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -14,15 +14,26 @@ 'use strict'; // [START datastore_quickstart] -// Imports and instantiates the Google Cloud client library -const datastore = require('@google-cloud/datastore')({ - projectId: 'YOUR_PROJECT_ID' +// Imports the Google Cloud client library +const Datastore = require('@google-cloud/datastore'); + +// Your Google Cloud Platform project ID +const projectId = 'YOUR_PROJECT_ID'; + +// Instantiates a client +const datastoreClient = Datastore({ + projectId: projectId }); -const taskKey = datastore.key(['Task', 1234]); +// The kind of the entity to retrieve +const kind = 'Task'; +// The id of the entity to retrieve +const id = 1234567890; +// The Datastore key for the entity +const taskKey = datastoreClient.key([kind, id]); -// Retrieves an entity -datastore.get(taskKey, (err, entity) => { +// Retrieves the entity +datastoreClient.get(taskKey, (err, entity) => { if (!err) { // The entity was retrieved successfully } diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js index e793399f1ba..a48e12caa1e 100644 --- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -20,7 +20,7 @@ describe(`datastore:quickstart`, () => { before(() => { datastoreMock = { - get: sinon.stub().yields(null, { key: 1234 }), + get: sinon.stub().yields(null, { key: 1234567890 }), key: sinon.stub.returns(`task/1234`) }; DatastoreMock = sinon.stub().returns(datastoreMock); @@ -34,6 +34,6 @@ describe(`datastore:quickstart`, () => { assert.equal(DatastoreMock.calledOnce, true); assert.deepEqual(DatastoreMock.firstCall.args, [{ projectId: 'YOUR_PROJECT_ID' }]); assert.equal(datastoreMock.get.calledOnce, true); - assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [datastoreMock.key(['Task', 1234])]); + assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [datastoreMock.key(['Task', 1234567890])]); }); }); From 5ef81e7c91a638ac822ab79add06f252dd9368f0 Mon Sep 17 00:00:00 2001 From: Ace Nassri Date: Thu, 29 Sep 2016 13:28:43 -0700 Subject: [PATCH 064/820] Fix pagination (#222) * Fix pagination * Uncomment test --- .../nodejs-datastore/samples/concepts.js | 26 +++++++++---------- .../samples/system-test/concepts.test.js | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index f8bacd632bf..658f8cb5785 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -988,16 +988,14 @@ Query.prototype.testCursorPaging = function (callback) { datastore.createQuery = this.datastore.createQuery; // [START cursor_paging] - // By default, gcloud-node will paginate through all of the results that match - // a query, push them into an array, then return them to your callback after - // they have all been retrieved. You must execute `.autoPaginate(false)` on - // your query to disable this behavior. + // By default, gcloud-node will automatically paginate through all of the + // results that match a query. However, this sample implements manual + // pagination using limits and cursor tokens. var query = datastore.createQuery('Task') - .autoPaginate(false) .limit(pageSize) .start(pageCursor); - datastore.runQuery(query, function (err, results, nextQuery) { + this.datastore.runQuery(query, function (err, results, info) { if (err) { // An error occurred while running the query. return; @@ -1005,11 +1003,11 @@ Query.prototype.testCursorPaging = function (callback) { var nextPageCursor; - if (nextQuery) { - // If there are more results to retrieve, the start cursor is - // automatically set on `nextQuery`. To get this value directly, access - // the `startVal` property. - nextPageCursor = nextQuery.startVal; + if (info.moreResults !== Datastore.NO_MORE_RESULTS) { + // If there are more results to retrieve, the end cursor is + // automatically set on `info`. To get this value directly, access + // the `endCursor` property. + nextPageCursor = info.endCursor; } else { // No more results exist. } @@ -1018,14 +1016,14 @@ Query.prototype.testCursorPaging = function (callback) { // [END cursor_paging] delete datastore.createQuery; - this.datastore.runQuery(query, function (err, results, nextQuery) { + this.datastore.runQuery(query, function (err, results, info) { if (err) { callback(err); return; } - if (!nextQuery || !nextQuery.startVal) { - callback(new Error('A nextQuery with a startVal is not present.')); + if (!info || !info.endCursor) { + callback(new Error('An `info` with an `endCursor` is not present.')); } else { callback(); } diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js index 8bf310f674f..74bb3b143b7 100644 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -201,7 +201,7 @@ describe('datastore:concepts', function () { query.testLimit(done); }); - it.skip('allows manual pagination through results', function (done) { + it('allows manual pagination through results', function (done) { entity.testBatchUpsert(function (err) { assert.ifError(err); setTimeout(function () { From d929ff0c390397840e1dbd81f3ec3e28c01ab020 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 3 Oct 2016 14:44:10 -0700 Subject: [PATCH 065/820] New quickstarts. (#226) * New quickstarts. * Address comments. --- .../nodejs-datastore/samples/package.json | 3 ++ .../nodejs-datastore/samples/quickstart.js | 33 +++++++++------- .../samples/system-test/quickstart.test.js | 32 +++++++++------- .../samples/test/quickstart.test.js | 38 +++++++++++-------- 4 files changed, 63 insertions(+), 43 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 06c325ce0ee..009de7d1538 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,5 +15,8 @@ }, "devDependencies": { "mocha": "^3.0.2" + }, + "engines": { + "node": ">=4.3.2" } } diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 01a8cf25829..3bbae17824c 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -1,15 +1,17 @@ -// Copyright 2016, Google, Inc. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/** + * Copyright 2016, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ 'use strict'; @@ -34,8 +36,11 @@ const taskKey = datastoreClient.key([kind, id]); // Retrieves the entity datastoreClient.get(taskKey, (err, entity) => { - if (!err) { - // The entity was retrieved successfully + if (err) { + console.error(err); + return; } + + console.log(`Entity: ${entity.key.id}`); }); // [END datastore_quickstart] diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js index 2eb1ac9d65c..a7ced037e6a 100644 --- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js @@ -1,15 +1,17 @@ -// Copyright 2015-2016, Google, Inc. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/** + * Copyright 2016, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ 'use strict'; @@ -47,15 +49,19 @@ describe(`datastore:quickstart`, () => { return key; }, - get: (_key) => { + get: (_key, _callback) => { assert.equal(_key, key); + assert.equal(typeof _callback, 'function'); datastore.get(_key, (err, entity) => { + _callback(err, entity); assert.ifError(err); assert.notEqual(entity, undefined); assert.notEqual(entity.key, undefined); assert.equal(entity.key.kind, kind); assert.deepEqual(entity.data, { message: message }); + assert.equal(console.log.calledOnce, true); + assert.deepEqual(console.log.firstCall.args, [`Entity: ${entity.key.id}`]); done(); }); } diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js index a48e12caa1e..60585968172 100644 --- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -1,15 +1,17 @@ -// Copyright 2015-2016, Google, Inc. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/** + * Copyright 2016, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ 'use strict'; @@ -17,16 +19,18 @@ const proxyquire = require(`proxyquire`).noPreserveCache(); describe(`datastore:quickstart`, () => { let datastoreMock, DatastoreMock; + const error = new Error(`error`); + const mockKey = {}; before(() => { datastoreMock = { - get: sinon.stub().yields(null, { key: 1234567890 }), - key: sinon.stub.returns(`task/1234`) + get: sinon.stub().yields(error), + key: sinon.stub().returns(mockKey) }; DatastoreMock = sinon.stub().returns(datastoreMock); }); - it(`should get a task from Datastore`, () => { + it(`should handle error`, () => { proxyquire(`../quickstart`, { '@google-cloud/datastore': DatastoreMock }); @@ -34,6 +38,8 @@ describe(`datastore:quickstart`, () => { assert.equal(DatastoreMock.calledOnce, true); assert.deepEqual(DatastoreMock.firstCall.args, [{ projectId: 'YOUR_PROJECT_ID' }]); assert.equal(datastoreMock.get.calledOnce, true); - assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [datastoreMock.key(['Task', 1234567890])]); + assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [mockKey]); + assert.equal(console.error.calledOnce, true); + assert.deepEqual(console.error.firstCall.args, [error]); }); }); From 0d2393906b0d09c79ddfc020743ddda6aa00702d Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 4 Oct 2016 11:55:59 -0400 Subject: [PATCH 066/820] docs: bigtable & datastore: convert MD -> HTML links --- handwritten/nodejs-datastore/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 0bef77f26a7..4e1a66b428d 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -66,8 +66,8 @@ var Transaction = require('./transaction.js'); * //- * //

The Datastore Emulator

* // - * // Make sure you have the - * // [gcloud SDK installed](https://cloud.google.com/sdk/downloads), then run: + * // Make sure you have the + * // gcloud SDK installed, then run: * // * //
  * //   $ gcloud beta emulators datastore start --no-legacy

From 2e0b861b5d800b92993460e72df0e52413616794 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Tue, 4 Oct 2016 19:44:30 -0700
Subject: [PATCH 067/820] Tweak Datastore quickstart sample.

---
 handwritten/nodejs-datastore/samples/quickstart.js     | 10 +++++-----
 .../samples/system-test/quickstart.test.js             |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js
index 3bbae17824c..48548f17d35 100644
--- a/handwritten/nodejs-datastore/samples/quickstart.js
+++ b/handwritten/nodejs-datastore/samples/quickstart.js
@@ -28,11 +28,11 @@ const datastoreClient = Datastore({
 });
 
 // The kind of the entity to retrieve
-const kind = 'Task';
-// The id of the entity to retrieve
-const id = 1234567890;
+const kind = 'Person';
+// The name/ID of the entity to retrieve
+const name = 'Bob';
 // The Datastore key for the entity
-const taskKey = datastoreClient.key([kind, id]);
+const taskKey = datastoreClient.key([kind, name]);
 
 // Retrieves the entity
 datastoreClient.get(taskKey, (err, entity) => {
@@ -41,6 +41,6 @@ datastoreClient.get(taskKey, (err, entity) => {
     return;
   }
 
-  console.log(`Entity: ${entity.key.id}`);
+  console.log(`Fetched entity: ${entity.key.name}`);
 });
 // [END datastore_quickstart]
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index a7ced037e6a..54d024296a1 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -61,7 +61,7 @@ describe(`datastore:quickstart`, () => {
           assert.equal(entity.key.kind, kind);
           assert.deepEqual(entity.data, { message: message });
           assert.equal(console.log.calledOnce, true);
-          assert.deepEqual(console.log.firstCall.args, [`Entity: ${entity.key.id}`]);
+          assert.deepEqual(console.log.firstCall.args, [`Fetched entity: ${entity.key.name}`]);
           done();
         });
       }

From cef2feeb1d306520327a52fc273318b4384d70ab Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Wed, 5 Oct 2016 15:15:02 -0700
Subject: [PATCH 068/820] Tweak Datastore quickstart sample.

---
 handwritten/nodejs-datastore/samples/quickstart.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js
index 48548f17d35..a2d99a22760 100644
--- a/handwritten/nodejs-datastore/samples/quickstart.js
+++ b/handwritten/nodejs-datastore/samples/quickstart.js
@@ -28,19 +28,19 @@ const datastoreClient = Datastore({
 });
 
 // The kind of the entity to retrieve
-const kind = 'Person';
+const kind = 'Task';
 // The name/ID of the entity to retrieve
-const name = 'Bob';
+const name = 'sampletask1';
 // The Datastore key for the entity
 const taskKey = datastoreClient.key([kind, name]);
 
 // Retrieves the entity
-datastoreClient.get(taskKey, (err, entity) => {
+datastoreClient.get(taskKey, (err, task) => {
   if (err) {
     console.error(err);
     return;
   }
 
-  console.log(`Fetched entity: ${entity.key.name}`);
+  console.log(`Fetched task: ${task.key.name}`);
 });
 // [END datastore_quickstart]

From e5b9a8e8ddd0faf202853f7427c048bbc9a06b03 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Thu, 6 Oct 2016 15:41:23 -0700
Subject: [PATCH 069/820] Change datastore quickstart sample to create a task.

---
 .../nodejs-datastore/samples/quickstart.js    | 20 +++++++---
 .../samples/system-test/quickstart.test.js    | 38 +++++++------------
 .../samples/test/quickstart.test.js           | 11 ++++--
 3 files changed, 35 insertions(+), 34 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js
index a2d99a22760..79255083740 100644
--- a/handwritten/nodejs-datastore/samples/quickstart.js
+++ b/handwritten/nodejs-datastore/samples/quickstart.js
@@ -27,20 +27,28 @@ const datastoreClient = Datastore({
   projectId: projectId
 });
 
-// The kind of the entity to retrieve
+// The kind for the new entity
 const kind = 'Task';
-// The name/ID of the entity to retrieve
+// The name/ID for the new entity
 const name = 'sampletask1';
-// The Datastore key for the entity
+// The Cloud Datastore key for the new entity
 const taskKey = datastoreClient.key([kind, name]);
 
-// Retrieves the entity
-datastoreClient.get(taskKey, (err, task) => {
+// Prepares the new entity
+const task = {
+  key: taskKey,
+  data: {
+    description: 'Buy milk'
+  }
+};
+
+// Saves the entity
+datastoreClient.save(task, (err) => {
   if (err) {
     console.error(err);
     return;
   }
 
-  console.log(`Fetched task: ${task.key.name}`);
+  console.log(`Saved ${task.key.name}: ${task.data.description}`);
 });
 // [END datastore_quickstart]
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index 54d024296a1..b385261116e 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -18,24 +18,12 @@
 const proxyquire = require(`proxyquire`).noPreserveCache();
 const datastore = proxyquire(`@google-cloud/datastore`, {})();
 const kind = `Task`;
-const message = `Buy milk`;
-const key = datastore.key(kind);
+const name = `sampletask1`;
+const key = datastore.key(kind, name);
 
 describe(`datastore:quickstart`, () => {
   let datastoreMock, DatastoreMock;
 
-  before((done) => {
-    datastore.save({
-      key: key,
-      data: {
-        message: message
-      }
-    }, () => {
-      // Datastore is eventually consistent
-      setTimeout(done, 5000);
-    });
-  });
-
   after((done) => {
     datastore.delete(key, () => {
       // Ignore any error, the entity might not have been created
@@ -45,23 +33,23 @@ describe(`datastore:quickstart`, () => {
 
   it(`should get a task from Datastore`, (done) => {
     datastoreMock = {
-      key: () => {
-        return key;
+      key (...args) {
+        return datastore.key(...args);
       },
 
-      get: (_key, _callback) => {
-        assert.equal(_key, key);
+      save (_task, _callback) {
+        assert.equal(_task.key.kind, kind);
+        assert.equal(_task.key.name, name);
+        assert.deepEqual(_task.data, {
+          description: `Buy milk`
+        });
         assert.equal(typeof _callback, 'function');
 
-        datastore.get(_key, (err, entity) => {
-          _callback(err, entity);
+        datastore.save(_task, (err) => {
+          _callback(err);
           assert.ifError(err);
-          assert.notEqual(entity, undefined);
-          assert.notEqual(entity.key, undefined);
-          assert.equal(entity.key.kind, kind);
-          assert.deepEqual(entity.data, { message: message });
           assert.equal(console.log.calledOnce, true);
-          assert.deepEqual(console.log.firstCall.args, [`Fetched entity: ${entity.key.name}`]);
+          assert.deepEqual(console.log.firstCall.args, [`Saved ${_task.key.name}: ${_task.data.description}`]);
           done();
         });
       }
diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js
index 60585968172..1d37c240077 100644
--- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js
@@ -24,7 +24,7 @@ describe(`datastore:quickstart`, () => {
 
   before(() => {
     datastoreMock = {
-      get: sinon.stub().yields(error),
+      save: sinon.stub().yields(error),
       key: sinon.stub().returns(mockKey)
     };
     DatastoreMock = sinon.stub().returns(datastoreMock);
@@ -37,8 +37,13 @@ describe(`datastore:quickstart`, () => {
 
     assert.equal(DatastoreMock.calledOnce, true);
     assert.deepEqual(DatastoreMock.firstCall.args, [{ projectId: 'YOUR_PROJECT_ID' }]);
-    assert.equal(datastoreMock.get.calledOnce, true);
-    assert.deepEqual(datastoreMock.get.firstCall.args.slice(0, -1), [mockKey]);
+    assert.equal(datastoreMock.save.calledOnce, true);
+    assert.deepEqual(datastoreMock.save.firstCall.args.slice(0, -1), [{
+      key: mockKey,
+      data: {
+        description: 'Buy milk'
+      }
+    }]);
     assert.equal(console.error.calledOnce, true);
     assert.deepEqual(console.error.firstCall.args, [error]);
   });

From 73125efc917e7171680d3a0ddb7f9869569ab7fa Mon Sep 17 00:00:00 2001
From: tcrognon 
Date: Sat, 8 Oct 2016 15:16:57 -0500
Subject: [PATCH 070/820] docs: datastore: maxApiCalls should be number not
 boolean (#1679)

---
 handwritten/nodejs-datastore/src/request.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 28744cb68d1..27a9811dae1 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -231,7 +231,7 @@ DatastoreRequest.prototype.delete = function(keys, callback) {
  *     If not specified, default values are chosen by Datastore for the
  *     operation. Learn more about strong and eventual consistency
  *     [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore).
- * @param {boolean} options.maxApiCalls - Maximum API calls to make.
+ * @param {number} options.maxApiCalls - Maximum API calls to make.
  * @param {function} callback - The callback function.
  * @param {?error} callback.err - An error returned while making this request
  * @param {object|object[]} callback.entity - The entity object(s) which match

From bade6c40932d237ff6800e2bd067a3410732ed49 Mon Sep 17 00:00:00 2001
From: tcrognon 
Date: Sat, 8 Oct 2016 16:19:11 -0500
Subject: [PATCH 071/820] docs: datastore: maxApiCalls should be number
 (another occurrence) (#1680)

---
 handwritten/nodejs-datastore/src/request.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 27a9811dae1..2b56a0f708b 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -413,7 +413,7 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  *     If not specified, default values are chosen by Datastore for the
  *     operation. Learn more about strong and eventual consistency
  *     [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore).
- * @param {boolean} options.maxApiCalls - Maximum API calls to make.
+ * @param {number} options.maxApiCalls - Maximum API calls to make.
  * @param {function=} callback - The callback function. If omitted, a readable
  *     stream instance is returned.
  * @param {?error} callback.err - An error returned while making this request

From 7d5def069f5ed12a1409713a0167d45f6b3d1f98 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Sun, 9 Oct 2016 16:21:53 -0400
Subject: [PATCH 072/820] datastore: pass Buffers instead of base64s (#1675)

---
 handwritten/nodejs-datastore/src/entity.js  | 14 +++-----------
 handwritten/nodejs-datastore/test/entity.js |  6 +++---
 2 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js
index 7f9d7929588..2e38cb6675e 100644
--- a/handwritten/nodejs-datastore/src/entity.js
+++ b/handwritten/nodejs-datastore/src/entity.js
@@ -268,7 +268,7 @@ function encodeValue(value) {
   }
 
   if (value instanceof Buffer) {
-    valueProto.blobValue = value.toString('base64');
+    valueProto.blobValue = value;
     return valueProto;
   }
 
@@ -622,11 +622,7 @@ function queryToQueryProto(query) {
   };
 
   if (query.endVal) {
-    if (is.string(query.endVal)) {
-      queryProto.endCursor = query.endVal;
-    } else {
-      queryProto.endCursor = query.endVal.toString('base64');
-    }
+    queryProto.endCursor = query.endVal;
   }
 
   if (query.limitVal > 0) {
@@ -640,11 +636,7 @@ function queryToQueryProto(query) {
   }
 
   if (query.startVal) {
-    if (is.string(query.startVal)) {
-      queryProto.startCursor = query.startVal;
-    } else {
-      queryProto.startCursor = query.startVal.toString('base64');
-    }
+    queryProto.startCursor = query.startVal;
   }
 
   if (query.filters.length > 0) {
diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js
index 4e7190b918a..c357ba37240 100644
--- a/handwritten/nodejs-datastore/test/entity.js
+++ b/handwritten/nodejs-datastore/test/entity.js
@@ -357,7 +357,7 @@ describe('entity', function() {
       var value = new Buffer('Hi');
 
       var expectedValueProto = {
-        blobValue: value.toString('base64')
+        blobValue: value
       };
 
       assert.deepEqual(entity.encodeValue(value), expectedValueProto);
@@ -881,8 +881,8 @@ describe('entity', function() {
         .end(endVal);
 
       var queryProto = entity.queryToQueryProto(query);
-      assert.strictEqual(queryProto.endCursor, endVal.toString('base64'));
-      assert.strictEqual(queryProto.startCursor, startVal.toString('base64'));
+      assert.strictEqual(queryProto.endCursor, endVal);
+      assert.strictEqual(queryProto.startCursor, startVal);
     });
   });
 });

From d5a5d995556a1598c99c7d10a869afffdd8b4477 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 14 Oct 2016 06:41:49 -0400
Subject: [PATCH 073/820] datastore: use a Symbol to get the key from an entity
 (#1682)

---
 handwritten/nodejs-datastore/src/entity.js    | 14 ++++--
 handwritten/nodejs-datastore/src/index.js     |  7 +++
 handwritten/nodejs-datastore/src/query.js     |  7 +--
 handwritten/nodejs-datastore/src/request.js   |  7 +--
 .../nodejs-datastore/system-test/datastore.js | 47 ++++++++++---------
 handwritten/nodejs-datastore/test/entity.js   | 18 ++++---
 handwritten/nodejs-datastore/test/index.js    | 11 +++++
 7 files changed, 71 insertions(+), 40 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js
index 2e38cb6675e..ee9ae89f150 100644
--- a/handwritten/nodejs-datastore/src/entity.js
+++ b/handwritten/nodejs-datastore/src/entity.js
@@ -37,6 +37,13 @@ var InvalidKeyError = createErrorClass('InvalidKey', function(opts) {
   this.message = errorMessages[opts.code];
 });
 
+/**
+ * A symbol to access the Key object from an entity object.
+ *
+ * @type {symbol}
+ */
+entity.KEY_SYMBOL = Symbol('KEY');
+
 /**
  * Build a Datastore Double object.
  *
@@ -405,10 +412,9 @@ entity.entityToEntityProto = entityToEntityProto;
  */
 function formatArray(results) {
   return results.map(function(result) {
-    return {
-      key: entity.keyFromKeyProto(result.entity.key),
-      data: entity.entityFromEntityProto(result.entity)
-    };
+    var ent = entity.entityFromEntityProto(result.entity);
+    ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key);
+    return ent;
   });
 }
 
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 4e1a66b428d..039a705e80e 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -378,6 +378,13 @@ Datastore.prototype.int = Datastore.int = function(value) {
   return new entity.Int(value);
 };
 
+/**
+ * Access the Key from an Entity object.
+ *
+ * @type {symbol}
+ */
+Datastore.prototype.KEY = Datastore.KEY = entity.KEY_SYMBOL;
+
 /**
  * This is one of three values which may be returned from
  * {module:datastore#runQuery}, {module:transaction#runQuery}, and
diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js
index 7b3f89529e5..617b29fdb31 100644
--- a/handwritten/nodejs-datastore/src/query.js
+++ b/handwritten/nodejs-datastore/src/query.js
@@ -312,7 +312,7 @@ Query.prototype.offset = function(n) {
  * // unnecessary processing and API requests.
  * //-
  * query.run()
- *   .on('data', function (entity) {
+ *   .on('data', function(entity) {
  *     this.end();
  *   });
  *
@@ -323,8 +323,9 @@ Query.prototype.offset = function(n) {
  * query.select('__key__');
  *
  * query.run(function(err, entities) {
- *   // entities[].key = Key object
- *   // entities[].data = Empty object
+ *   var keys = entities.map(function(entity) {
+ *     return entity[datastore.KEY];
+ *   });
  * });
  */
 Query.prototype.run = function() {
diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 2b56a0f708b..e1be17484fc 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -299,7 +299,7 @@ DatastoreRequest.prototype.delete = function(keys, callback) {
  *     // Error handling omitted.
  *   }
  *
- *   entity.data.newValue = true;
+ *   entity.newValue = true;
  *   datastore.save(entity, function(err) {});
  * });
  */
@@ -489,8 +489,9 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  * var keysOnlyQuery = datastore.createQuery('Lion').select('__key__');
  *
  * datastore.runQuery(keysOnlyQuery, function(err, entities) {
- *   // entities[].key = Key object
- *   // entities[].data = Empty object
+ *   var keys = entities.map(function(entity) {
+ *     return entity[datastore.KEY];
+ *   });
  * });
  */
 DatastoreRequest.prototype.runQuery = function(query, options, callback) {
diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js
index cf10a910dcd..9e56a329679 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.js
+++ b/handwritten/nodejs-datastore/system-test/datastore.js
@@ -48,7 +48,7 @@ describe('Datastore', function() {
         }
 
         var keys = entities.map(function(entity) {
-          return entity.key;
+          return entity[datastore.KEY];
         });
 
         datastore.delete(keys, callback);
@@ -91,7 +91,8 @@ describe('Datastore', function() {
         datastore.get(postKey, function(err, entity) {
           assert.ifError(err);
 
-          assert.deepEqual(entity.data, post);
+          assert.deepEqual(entity, post);
+          assert.deepEqual(entity[datastore.KEY], postKey);
 
           datastore.delete(postKey, done);
         });
@@ -107,7 +108,7 @@ describe('Datastore', function() {
         datastore.get(postKey, function(err, entity) {
           assert.ifError(err);
 
-          assert.deepEqual(entity.data, post);
+          assert.deepEqual(entity, post);
 
           datastore.delete(postKey, done);
         });
@@ -129,7 +130,7 @@ describe('Datastore', function() {
         datastore.get(postKey, function(err, entity) {
           assert.ifError(err);
 
-          assert.deepEqual(entity.data, data);
+          assert.deepEqual(entity, data);
 
           datastore.delete(datastore.key(['Post', assignedId]), done);
         });
@@ -148,7 +149,7 @@ describe('Datastore', function() {
         datastore.get(postKey, function(err, entity) {
           assert.ifError(err);
 
-          assert.deepEqual(entity.data, post);
+          assert.deepEqual(entity, post);
 
           datastore.delete(postKey, done);
         });
@@ -174,7 +175,7 @@ describe('Datastore', function() {
           datastore.get(postKey, function(err, entity) {
             assert.ifError(err);
 
-            assert.deepEqual(entity.data, post);
+            assert.deepEqual(entity, post);
 
             datastore.delete(postKey, done);
           });
@@ -268,8 +269,8 @@ describe('Datastore', function() {
         datastore.runQuery(query, function(err, results) {
           assert.ifError(err);
 
-          assert.strictEqual(results[0].data.fullName, 'Full name');
-          assert.deepEqual(results[0].data.linkedTo, personKey);
+          assert.strictEqual(results[0].fullName, 'Full name');
+          assert.deepEqual(results[0].linkedTo, personKey);
 
           datastore.delete(personKey, done);
         });
@@ -293,7 +294,7 @@ describe('Datastore', function() {
 
           datastore.get(key, function(err, entity) {
             assert.ifError(err);
-            assert.strictEqual(entity.data.year, integerValue);
+            assert.strictEqual(entity.year, integerValue);
             done();
           });
         });
@@ -315,7 +316,7 @@ describe('Datastore', function() {
 
           datastore.get(key, function(err, entity) {
             assert.ifError(err);
-            assert.strictEqual(entity.data.nines, doubleValue);
+            assert.strictEqual(entity.nines, doubleValue);
             done();
           });
         });
@@ -340,7 +341,7 @@ describe('Datastore', function() {
 
           datastore.get(key, function(err, entity) {
             assert.ifError(err);
-            assert.deepEqual(entity.data.location, geoPointValue);
+            assert.deepEqual(entity.location, geoPointValue);
             done();
           });
         });
@@ -553,8 +554,8 @@ describe('Datastore', function() {
       datastore.runQuery(q, function(err, entities) {
         assert.ifError(err);
 
-        assert.strictEqual(entities[0].data.name, characters[0].name);
-        assert.strictEqual(entities[7].data.name, characters[3].name);
+        assert.strictEqual(entities[0].name, characters[0].name);
+        assert.strictEqual(entities[7].name, characters[3].name);
 
         done();
       });
@@ -568,12 +569,12 @@ describe('Datastore', function() {
       datastore.runQuery(q, function(err, entities) {
         assert.ifError(err);
 
-        assert.deepEqual(entities[0].data, {
+        assert.deepEqual(entities[0], {
           name: 'Arya',
           family: 'Stark'
         });
 
-        assert.deepEqual(entities[8].data, {
+        assert.deepEqual(entities[8], {
           name: 'Sansa',
           family: 'Stark'
         });
@@ -593,8 +594,8 @@ describe('Datastore', function() {
         assert.ifError(err);
 
         assert.strictEqual(entities.length, 3);
-        assert.strictEqual(entities[0].data.name, 'Robb');
-        assert.strictEqual(entities[2].data.name, 'Catelyn');
+        assert.strictEqual(entities[0].name, 'Robb');
+        assert.strictEqual(entities[2].name, 'Catelyn');
 
         var secondQ = datastore.createQuery('Character')
           .hasAncestor(ancestor)
@@ -605,8 +606,8 @@ describe('Datastore', function() {
           assert.ifError(err);
 
           assert.strictEqual(secondEntities.length, 3);
-          assert.strictEqual(secondEntities[0].data.name, 'Sansa');
-          assert.strictEqual(secondEntities[2].data.name, 'Arya');
+          assert.strictEqual(secondEntities[0].name, 'Sansa');
+          assert.strictEqual(secondEntities[2].name, 'Arya');
 
           done();
         });
@@ -632,8 +633,8 @@ describe('Datastore', function() {
           assert.ifError(err);
 
           assert.strictEqual(secondEntities.length, 4);
-          assert.strictEqual(secondEntities[0].data.name, 'Catelyn');
-          assert.strictEqual(secondEntities[3].data.name, 'Arya');
+          assert.strictEqual(secondEntities[0].name, 'Catelyn');
+          assert.strictEqual(secondEntities[3].name, 'Arya');
 
           done();
         });
@@ -681,7 +682,7 @@ describe('Datastore', function() {
 
             datastore.get(key, function(err, entity) {
               assert.ifError(err);
-              assert.deepEqual(entity.data, obj);
+              assert.deepEqual(entity, obj);
               done();
             });
           });
@@ -738,7 +739,7 @@ describe('Datastore', function() {
               function(callback) {
                 datastore.get(key, function(err, entity) {
                   assert.ifError(err);
-                  assert.strictEqual(entity.data.rating, 10);
+                  assert.strictEqual(entity.rating, 10);
                   callback();
                 });
               }
diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js
index c357ba37240..a97ace5433f 100644
--- a/handwritten/nodejs-datastore/test/entity.js
+++ b/handwritten/nodejs-datastore/test/entity.js
@@ -33,6 +33,12 @@ describe('entity', function() {
     entity = require('../src/entity.js');
   });
 
+  describe('KEY_SYMBOL', function() {
+    it('should export the symbol', function() {
+      assert.strictEqual(entity.KEY_SYMBOL.toString(), 'Symbol(KEY)');
+    });
+  });
+
   describe('Double', function() {
     it('should store the value', function() {
       var value = 8.3;
@@ -532,12 +538,7 @@ describe('entity', function() {
         }
       ];
 
-      var expectedResults = [
-        {
-          key: key,
-          data: entityProto
-        }
-      ];
+      var expectedResults = entityProto;
 
       entity.keyFromKeyProto = function(key_) {
         assert.strictEqual(key_, key);
@@ -549,7 +550,10 @@ describe('entity', function() {
         return entityProto;
       };
 
-      assert.deepEqual(entity.formatArray(results), expectedResults);
+      var ent = entity.formatArray(results)[0];
+
+      assert.deepEqual(ent, expectedResults);
+      assert.strictEqual(ent[entity.KEY_SYMBOL], key);
     });
   });
 
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index ad7161ecf32..81f74849cb2 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -22,6 +22,7 @@ var proxyquire = require('proxyquire');
 var util = require('@google-cloud/common').util;
 
 var fakeEntity = {
+  KEY_SYMBOL: Symbol('fake key symbol'),
   Int: function(value) {
     this.value = value;
   },
@@ -198,6 +199,16 @@ describe('Datastore', function() {
     });
   });
 
+  describe('KEY', function() {
+    it('should expose the KEY symbol', function() {
+      assert.strictEqual(Datastore.KEY, fakeEntity.KEY_SYMBOL);
+    });
+
+    it('should also be on the prototype', function() {
+      assert.strictEqual(datastore.KEY, Datastore.KEY);
+    });
+  });
+
   describe('MORE_RESULTS_AFTER_CURSOR', function() {
     it('should expose a MORE_RESULTS_AFTER_CURSOR helper', function() {
       assert.strictEqual(

From f8d31b6ecb816198231ddc6a04cca6ed973bf1d6 Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Mon, 17 Oct 2016 18:24:01 -0400
Subject: [PATCH 074/820] datastore: add promise support (#1704)

---
 handwritten/nodejs-datastore/README.md        |  13 +
 handwritten/nodejs-datastore/package.json     |   3 +-
 handwritten/nodejs-datastore/src/query.js     |  56 +-
 handwritten/nodejs-datastore/src/request.js   | 359 ++++++-----
 .../nodejs-datastore/src/transaction.js       |  31 +
 .../nodejs-datastore/system-test/datastore.js |   6 +-
 handwritten/nodejs-datastore/test/query.js    |  26 +-
 handwritten/nodejs-datastore/test/request.js  | 571 +++++++++++-------
 .../nodejs-datastore/test/transaction.js      |  20 +
 9 files changed, 708 insertions(+), 377 deletions(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index 0dc84da450b..76c99719649 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -49,6 +49,19 @@ datastore.save({
     }
   });
 });
+
+// Promises are also supported by omitting callbacks.
+datastore.save({
+  key: blogPostKey,
+  data: blogPostData
+}).then(function() {
+  // The blog post is not published!
+});
+
+// It's also possible to integrate with third-party Promise libraries.
+var datastore = require('@google-cloud/datastore')({
+  promise: require('bluebird')
+});
 ```
 
 
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 370f6c81551..db4a9c34ac5 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,7 +50,7 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.6.0",
+    "@google-cloud/common": "^0.7.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",
@@ -67,6 +67,7 @@
     "deep-strict-equal": "^0.2.0",
     "mocha": "^3.0.1",
     "proxyquire": "^1.7.10",
+    "sinon": "^1.17.6",
     "through2": "^2.0.0"
   },
   "scripts": {
diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js
index 617b29fdb31..55abd4638a9 100644
--- a/handwritten/nodejs-datastore/src/query.js
+++ b/handwritten/nodejs-datastore/src/query.js
@@ -296,10 +296,40 @@ Query.prototype.offset = function(n) {
  * query.run(function(err, entities, info) {});
  *
  * //-
- * // If you omit the callback, you will get the matching entities in a readable
- * // object stream.
+ * // A keys-only query returns just the keys of the result entities instead of
+ * // the entities themselves, at lower latency and cost.
+ * //-
+ * query.select('__key__');
+ *
+ * query.run(function(err, entities) {
+ *   var keys = entities.map(function(entity) {
+ *     return entity[datastore.KEY];
+ *   });
+ * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
  * //-
- * query.run()
+ * query.run().then(function(data) {
+ *   var entities = data[0];
+ * });
+ */
+Query.prototype.run = function() {
+  var query = this;
+  var args = [query].concat([].slice.call(arguments));
+
+  return this.scope.runQuery.apply(this.scope, args);
+};
+
+/**
+ * Run the query as a readable object stream.
+ *
+ * @param {object=} options - Optional configuration. See
+ *     {module:datastore/query#run} for a complete list of options.
+ * @return {stream}
+ *
+ * @example
+ * query.runStream()
  *   .on('error', console.error)
  *   .on('data', function (entity) {})
  *   .on('info', function(info) {})
@@ -311,28 +341,16 @@ Query.prototype.offset = function(n) {
  * // If you anticipate many results, you can end a stream early to prevent
  * // unnecessary processing and API requests.
  * //-
- * query.run()
- *   .on('data', function(entity) {
+ * query.runStream()
+ *   .on('data', function (entity) {
  *     this.end();
  *   });
- *
- * //-
- * // A keys-only query returns just the keys of the result entities instead of
- * // the entities themselves, at lower latency and cost.
- * //-
- * query.select('__key__');
- *
- * query.run(function(err, entities) {
- *   var keys = entities.map(function(entity) {
- *     return entity[datastore.KEY];
- *   });
- * });
  */
-Query.prototype.run = function() {
+Query.prototype.runStream = function() {
   var query = this;
   var args = [query].concat([].slice.call(arguments));
 
-  return this.scope.runQuery.apply(this.scope, args);
+  return this.scope.runQueryStream.apply(this.scope, args);
 };
 
 module.exports = Query;
diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index e1be17484fc..a1bec25fac8 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -123,6 +123,14 @@ function DatastoreRequest() {}
  * function callback(err, keys, apiResponse) {}
  *
  * datastore.allocateIds(incompleteKey, 100, callback);
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * datastore.allocateIds(incompleteKey, 100).then(function(data) {
+ *   var keys = data[0];
+ *   var apiResponse = data[1];
+ * });
  */
 DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) {
   if (entity.isKeyComplete(incompleteKey)) {
@@ -155,6 +163,95 @@ DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) {
   });
 };
 
+/**
+ * Retrieve the entities as a readable object stream.
+ *
+ * @throws {Error} If at least one Key object is not provided.
+ *
+ * @param {Key|Key[]} keys - Datastore key object(s).
+ * @param {object=} options - Optional configuration. See {module:datastore#get}
+ *     for a complete list of options.
+ *
+ * @example
+ * var keys = [
+ *   datastore.key(['Company', 123]),
+ *   datastore.key(['Product', 'Computer'])
+ * ];
+ *
+ * datastore.createReadStream(keys)
+ *   .on('error', function(err) {})
+ *   .on('data', function(entity) {
+ *     // entity is an entity object.
+ *   })
+ *   .on('end', function() {
+ *     // All entities retrieved.
+ *   });
+ */
+DatastoreRequest.prototype.createReadStream = function(keys, options) {
+  var self = this;
+
+  options = options || {};
+
+  keys = arrify(keys).map(entity.keyToKeyProto);
+
+  if (keys.length === 0) {
+    throw new Error('At least one Key object is required.');
+  }
+
+  var limiter = common.util.createLimiter(makeRequest, options);
+  var stream = limiter.stream;
+
+  stream.once('reading', function() {
+    limiter.makeRequest(keys);
+  });
+
+  function makeRequest(keys) {
+    var protoOpts = {
+      service: 'Datastore',
+      method: 'lookup'
+    };
+
+    var reqOpts = {
+      keys: keys
+    };
+
+    if (options.consistency) {
+      var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()];
+
+      reqOpts.readOptions = {
+        readConsistency: code
+      };
+    }
+
+    self.request_(protoOpts, reqOpts, function(err, resp) {
+      if (err) {
+        stream.destroy(err);
+        return;
+      }
+
+      var entities = entity.formatArray(resp.found);
+      var nextKeys = (resp.deferred || [])
+        .map(entity.keyFromKeyProto)
+        .map(entity.keyToKeyProto);
+
+      split(entities, stream, function(streamEnded) {
+        if (streamEnded) {
+          return;
+        }
+
+        if (nextKeys.length > 0) {
+          limiter.makeRequest(nextKeys);
+          return;
+        }
+
+        stream.push(null);
+      });
+    });
+  }
+
+  return stream;
+};
+
 /**
  * Delete all entities identified with the specified key(s).
  *
@@ -193,6 +290,13 @@ DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) {
  *   datastore.key(['Company', 123]),
  *   datastore.key(['Product', 'Computer'])
  * ], function(err, apiResponse) {});
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * datastore.delete().then(function(data) {
+ *   var apiResponse = data[0];
+ * });
  */
 DatastoreRequest.prototype.delete = function(keys, callback) {
   callback = callback || common.util.noop;
@@ -279,18 +383,6 @@ DatastoreRequest.prototype.delete = function(keys, callback) {
  * datastore.get(keys, function(err, entities) {});
  *
  * //-
- * // Or, get the entities as a readable object stream.
- * //-
- * datastore.get(keys)
- *   .on('error', function(err) {})
- *   .on('data', function(entity) {
- *     // entity is an entity object.
- *   })
- *   .on('end', function() {
- *     // All entities retrieved.
- *   });
- *
- * //-
  * // Here's how you would update the value of an entity with the help of the
  * // `save` method.
  * //-
@@ -302,10 +394,15 @@ DatastoreRequest.prototype.delete = function(keys, callback) {
  *   entity.newValue = true;
  *   datastore.save(entity, function(err) {});
  * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * datastore.get(keys).then(function(data) {
+ *   var entities = data[0];
+ * });
  */
 DatastoreRequest.prototype.get = function(keys, options, callback) {
-  var self = this;
-
   if (is.fn(options)) {
     callback = options;
     options = {};
@@ -313,75 +410,12 @@ DatastoreRequest.prototype.get = function(keys, options, callback) {
 
   options = options || {};
 
-  if (is.fn(callback)) {
-    // Run this method in stream mode and send the results back to the callback.
-    this.get(keys, options)
-      .on('error', callback)
-      .pipe(concat(function(results) {
-        var isSingleLookup = !is.array(keys);
-        callback(null, isSingleLookup ? results[0] : results);
-      }));
-    return;
-  }
-
-  keys = arrify(keys).map(entity.keyToKeyProto);
-
-  if (keys.length === 0) {
-    throw new Error('At least one Key object is required.');
-  }
-
-  var limiter = common.util.createLimiter(makeRequest, options);
-  var stream = limiter.stream;
-
-  stream.once('reading', function() {
-    limiter.makeRequest(keys);
-  });
-
-  function makeRequest(keys) {
-    var protoOpts = {
-      service: 'Datastore',
-      method: 'lookup'
-    };
-
-    var reqOpts = {
-      keys: keys
-    };
-
-    if (options.consistency) {
-      var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()];
-
-      reqOpts.readOptions = {
-        readConsistency: code
-      };
-    }
-
-    self.request_(protoOpts, reqOpts, function(err, resp) {
-      if (err) {
-        stream.destroy(err);
-        return;
-      }
-
-      var entities = entity.formatArray(resp.found);
-      var nextKeys = (resp.deferred || [])
-        .map(entity.keyFromKeyProto)
-        .map(entity.keyToKeyProto);
-
-      split(entities, stream, function(streamEnded) {
-        if (streamEnded) {
-          return;
-        }
-
-        if (nextKeys.length > 0) {
-          limiter.makeRequest(nextKeys);
-          return;
-        }
-
-        stream.push(null);
-      });
-    });
-  }
-
-  return stream;
+  this.createReadStream(keys, options)
+    .on('error', callback)
+    .pipe(concat(function(results) {
+      var isSingleLookup = !is.array(keys);
+      callback(null, isSingleLookup ? results[0] : results);
+    }));
 };
 
 /**
@@ -397,17 +431,13 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  * filters, and sort them by a property name. Projection and pagination are also
  * supported.
  *
- * If you provide a callback, the query is run, and the results are returned as
- * the second argument to your callback. A third argument may also exist, which
- * is a query object that uses the end cursor from the previous query as the
- * starting cursor for the next query. You can pass that object back to this
- * method to see if more results exist.
+ * The query is run, and the results are returned as the second argument to your
+ * callback. A third argument may also exist, which is a query object that uses
+ * the end cursor from the previous query as the starting cursor for the next
+ * query. You can pass that object back to this method to see if more results
+ * exist.
  *
- * You may also omit the callback to this function to trigger streaming mode.
- *
- * See below for examples of both approaches.
- *
- * @param {module:datastore/query} q - Query object.
+ * @param {module:datastore/query} query - Query object.
  * @param {object=} options - Optional configuration.
  * @param {string} options.consistency - Specify either `strong` or `eventual`.
  *     If not specified, default values are chosen by Datastore for the
@@ -462,27 +492,6 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  * });
  *
  * //-
- * // If you omit the callback, you will get the matching entities in a readable
- * // object stream.
- * //-
- * datastore.runQuery(query)
- *   .on('error', console.error)
- *   .on('data', function (entity) {})
- *   .on('info', function(info) {})
- *   .on('end', function() {
- *     // All entities retrieved.
- *   });
- *
- * //-
- * // If you anticipate many results, you can end a stream early to prevent
- * // unnecessary processing and API requests.
- * //-
- * datastore.runQuery(query)
- *   .on('data', function (entity) {
- *     this.end();
- *   });
- *
- * //-
  * // A keys-only query returns just the keys of the result entities instead of
  * // the entities themselves, at lower latency and cost.
  * //-
@@ -493,10 +502,15 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  *     return entity[datastore.KEY];
  *   });
  * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * datastore.runQuery(query).then(function(data) {
+ *   var entities = data[0];
+ * });
  */
 DatastoreRequest.prototype.runQuery = function(query, options, callback) {
-  var self = this;
-
   if (is.fn(options)) {
     callback = options;
     options = {};
@@ -506,18 +520,46 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
 
   var info;
 
-  if (is.fn(callback)) {
-    // Run this method in stream mode and send the results back to the callback.
-    this.runQuery(query, options)
-      .on('error', callback)
-      .on('info', function(info_) {
-        info = info_;
-      })
-      .pipe(concat(function(results) {
-        callback(null, results, info);
-      }));
-    return;
-  }
+  this.runQueryStream(query, options)
+    .on('error', callback)
+    .on('info', function(info_) {
+      info = info_;
+    })
+    .pipe(concat(function(results) {
+      callback(null, results, info);
+    }));
+};
+
+/**
+ * Get a list of entities as a readable object stream.
+ *
+ * See {module:datastore#runQuery} for a list of all available options.
+ *
+ * @param {module:datastore/query} query - Query object.
+ * @param {object=} options - Optional configuration.
+ *
+ * @example
+ * datastore.runQueryStream(query)
+ *   .on('error', console.error)
+ *   .on('data', function (entity) {})
+ *   .on('info', function(info) {})
+ *   .on('end', function() {
+ *     // All entities retrieved.
+ *   });
+ *
+ * //-
+ * // If you anticipate many results, you can end a stream early to prevent
+ * // unnecessary processing and API requests.
+ * //-
+ * datastore.runQueryStream(query)
+ *   .on('data', function (entity) {
+ *     this.end();
+ *   });
+ */
+DatastoreRequest.prototype.runQueryStream = function(query, options) {
+  var self = this;
+
+  options = options || {};
 
   query = extend(true, new Query(), query);
 
@@ -645,13 +687,14 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  * // generated ID.
  * //-
  * var key = datastore.key('Company');
- *
- * datastore.save({
+ * var entity = {
  *   key: key,
  *   data: {
  *     rating: '10'
  *   }
- * }, function(err) {
+ * };
+ *
+ * datastore.save(entity, function(err) {
  *   console.log(key.path); // [ 'Company', 5669468231434240 ]
  *   console.log(key.namespace); // undefined
  * });
@@ -664,14 +707,15 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  * // the name instead of a generated ID.
  * //-
  * var key = datastore.key(['Company', 'donutshack']);
- *
- * datastore.save({
+ * var entity = {
  *   key: key,
  *   data: {
  *     name: 'DonutShack',
  *     rating: 8
  *   }
- * }, function(err) {
+ * };
+ *
+ * datastore.save(entity, function(err) {
  *   console.log(key.path); // ['Company', 'donutshack']
  *   console.log(key.namespace); // undefined
  * });
@@ -688,13 +732,15 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  *   path: ['Company', 'donutshack']
  * });
  *
- * datastore.save({
+ * var entity = {
  *   key: key,
  *   data: {
  *     name: 'DonutShack',
  *     rating: 8
  *   }
- * }, function(err) {
+ * }
+ *
+ * datastore.save(entity, function(err) {
  *   console.log(key.path); // ['Company', 'donutshack']
  *   console.log(key.namespace); // 'my-namespace'
  * });
@@ -708,8 +754,7 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  * // generated ID.
  * //-
  * var key = datastore.key('Company');
- *
- * datastore.save({
+ * var entity = {
  *   key: key,
  *   data: {
  *     name: 'DonutShack',
@@ -729,13 +774,15 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  *       'yum'
  *     ]
  *   }
- * }, function(err, apiResponse) {});
+ * };
+ *
+ * datastore.save(entity, function(err, apiResponse) {});
  *
  * //-
  * // To specify an `excludeFromIndexes` value for a Datastore entity, pass in
  * // an array for the key's data.
  * //-
- * datastore.save({
+ * var entity = {
  *   key: datastore.key('Company'),
  *   data: [
  *     {
@@ -744,15 +791,16 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  *       excludeFromIndexes: true
  *     }
  *   ]
- * }, function(err, apiResponse) {});
+ * };
+ *
+ * datastore.save(entity, function(err, apiResponse) {});
  *
  * //-
  * // Save multiple entities at once.
  * //-
  * var companyKey = datastore.key(['Company', 123]);
  * var productKey = datastore.key(['Product', 'Computer']);
- *
- * datastore.save([
+ * var entities = [
  *   {
  *     key: companyKey,
  *     data: {
@@ -765,20 +813,30 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  *       vendor: 'Dell'
  *     }
  *   }
- * ], function(err, apiResponse) {});
+ * ];
+ *
+ * datastore.save(entities, function(err, apiResponse) {});
  *
  * //-
  * // Explicitly attempt to 'insert' a specific entity.
  * //-
  * var userKey = datastore.key(['User', 'chilts']);
- *
- * datastore.save({
+ * var entity = {
  *   key: userKey,
  *   method: 'insert',
  *   data: {
  *     fullName: 'Andrew Chilton'
  *   }
- * }, function(err, apiResponse) {});
+ * };
+ *
+ * datastore.save(entity, function(err, apiResponse) {});
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * datastore.save(entity).then(function(data) {
+ *   var apiResponse = data[0];
+ * });
  */
 DatastoreRequest.prototype.save = function(entities, callback) {
   entities = arrify(entities);
@@ -945,4 +1003,11 @@ DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) {
   this.request(protoOpts, reqOpts, callback);
 };
 
+/*! Developer Documentation
+ *
+ * All async methods (except for streams) will return a Promise in the event
+ * that a callback is omitted.
+ */
+common.util.promisifyAll(DatastoreRequest);
+
 module.exports = DatastoreRequest;
diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js
index ee76eb0ed89..11a1da7ad1d 100644
--- a/handwritten/nodejs-datastore/src/transaction.js
+++ b/handwritten/nodejs-datastore/src/transaction.js
@@ -97,6 +97,13 @@ util.inherits(Transaction, Request);
  *     // Transaction could not be committed.
  *   }
  * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * transaction.commit().then(function(data) {
+ *   var apiResponse = data[0];
+ * });
  */
 Transaction.prototype.commit = function(callback) {
   var self = this;
@@ -300,6 +307,13 @@ Transaction.prototype.delete = function(entities) {
  *     }
  *   });
  * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * transaction.rollback().then(function(data) {
+ *   var apiResponse = data[0];
+ * });
  */
 Transaction.prototype.rollback = function(callback) {
   var self = this;
@@ -349,6 +363,14 @@ Transaction.prototype.rollback = function(callback) {
  *     });
  *   });
  * });
+ *
+ * //-
+ * // If the callback is omitted, we'll return a Promise.
+ * //-
+ * transaction.run().then(function(data) {
+ *   var transaction = data[0];
+ *   var apiResponse = data[1];
+ * });
  */
 Transaction.prototype.run = function(callback) {
   var self = this;
@@ -497,4 +519,13 @@ Transaction.prototype.save = function(entities) {
   });
 };
 
+/*! Developer Documentation
+ *
+ * All async methods (except for streams) will return a Promise in the event
+ * that a callback is omitted.
+ */
+common.util.promisifyAll(Transaction, {
+  exclude: ['createQuery', 'delete', 'save']
+});
+
 module.exports = Transaction;
diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js
index 9e56a329679..01d68ed2878 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.js
+++ b/handwritten/nodejs-datastore/system-test/datastore.js
@@ -237,7 +237,7 @@ describe('Datastore', function() {
 
         var numEntitiesEmitted = 0;
 
-        datastore.get([key1, key2])
+        datastore.createReadStream([key1, key2])
           .on('error', done)
           .on('data', function() {
             numEntitiesEmitted++;
@@ -471,7 +471,7 @@ describe('Datastore', function() {
 
       var resultsReturned = 0;
 
-      datastore.runQuery(q)
+      datastore.runQueryStream(q)
         .on('error', done)
         .on('data', function() { resultsReturned++; })
         .on('end', function() {
@@ -488,7 +488,7 @@ describe('Datastore', function() {
 
       var resultsReturned = 0;
 
-      datastore.runQuery(q)
+      datastore.runQueryStream(q)
         .on('error', done)
         .on('data', function() { resultsReturned++; })
         .on('end', function() {
diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js
index 955bbaaba18..8c694ebf8c6 100644
--- a/handwritten/nodejs-datastore/test/query.js
+++ b/handwritten/nodejs-datastore/test/query.js
@@ -18,13 +18,12 @@
 
 var assert = require('assert');
 
-var Query = require('../src/query.js');
-
 describe('Query', function() {
   var SCOPE = {};
   var NAMESPACE = 'Namespace';
   var KINDS = 'Kind';
 
+  var Query = require('../src/query.js');
   var query;
 
   beforeEach(function() {
@@ -288,11 +287,28 @@ describe('Query', function() {
   });
 
   describe('run', function() {
-    it('should call the parent instance runQuery correctly', function() {
+    it('should call the parent instance runQuery correctly', function(done) {
       var args = [0, 1, 2];
-      var runQueryReturnValue = {};
 
       query.scope.runQuery = function() {
+        assert.strictEqual(this, query.scope);
+        assert.strictEqual(arguments[0], query);
+        assert.strictEqual(arguments[1], args[0]);
+        assert.strictEqual(arguments[2], args[1]);
+        assert.strictEqual(arguments[3], args[2]);
+        done();
+      };
+
+      query.run.apply(query, args);
+    });
+  });
+
+  describe('runStream', function() {
+    it('should call the parent instance runQueryStream correctly', function() {
+      var args = [0, 1, 2];
+      var runQueryReturnValue = {};
+
+      query.scope.runQueryStream = function() {
         assert.strictEqual(this, query.scope);
         assert.strictEqual(arguments[0], query);
         assert.strictEqual(arguments[1], args[0]);
@@ -301,7 +317,7 @@ describe('Query', function() {
         return runQueryReturnValue;
       };
 
-      var results = query.run.apply(query, args);
+      var results = query.runStream.apply(query, args);
       assert.strictEqual(results, runQueryReturnValue);
     });
   });
diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js
index 6e28f4ba95d..2b28a019ef9 100644
--- a/handwritten/nodejs-datastore/test/request.js
+++ b/handwritten/nodejs-datastore/test/request.js
@@ -20,6 +20,7 @@ var assert = require('assert');
 var extend = require('extend');
 var is = require('is');
 var proxyquire = require('proxyquire');
+var sinon = require('sinon').sandbox.create();
 var stream = require('stream');
 var through = require('through2');
 var util = require('@google-cloud/common').util;
@@ -27,6 +28,15 @@ var util = require('@google-cloud/common').util;
 var entity = require('../src/entity.js');
 var Query = require('../src/query.js');
 
+var promisified = false;
+var fakeUtil = extend({}, util, {
+  promisifyAll: function(Class) {
+    if (Class.name === 'DatastoreRequest') {
+      promisified = true;
+    }
+  }
+});
+
 var overrides = {};
 
 function override(name, object) {
@@ -58,7 +68,7 @@ function resetOverrides() {
 }
 
 override('entity', entity);
-override('util', util);
+override('util', fakeUtil);
 
 function FakeQuery() {
   this.calledWith_ = arguments;
@@ -73,7 +83,7 @@ describe('Request', function() {
   before(function() {
     Request = proxyquire('../src/request.js', {
       '@google-cloud/common': {
-        util: util
+        util: fakeUtil
       },
       './entity.js': entity,
       './query.js': FakeQuery
@@ -94,6 +104,12 @@ describe('Request', function() {
     request = new Request();
   });
 
+  describe('instantiation', function() {
+    it('should promisify all the things', function() {
+      assert(promisified);
+    });
+  });
+
   describe('allocateIds', function() {
     var incompleteKey;
     var apiResponse = {
@@ -158,53 +174,7 @@ describe('Request', function() {
     });
   });
 
-  describe('delete', function() {
-    it('should delete by key', function(done) {
-      request.request_ = function(protoOpts, reqOpts, callback) {
-        assert.strictEqual(protoOpts.service, 'Datastore');
-        assert.strictEqual(protoOpts.method, 'commit');
-        assert(is.object(reqOpts.mutations[0].delete));
-        callback();
-      };
-      request.delete(key, done);
-    });
-
-    it('should return apiResponse in callback', function(done) {
-      var resp = { success: true };
-      request.request_ = function(protoOpts, reqOpts, callback) {
-        callback(null, resp);
-      };
-      request.delete(key, function(err, apiResponse) {
-        assert.ifError(err);
-        assert.deepEqual(resp, apiResponse);
-        done();
-      });
-    });
-
-    it('should multi delete by keys', function(done) {
-      request.request_ = function(protoOpts, reqOpts, callback) {
-        assert.equal(reqOpts.mutations.length, 2);
-        callback();
-      };
-      request.delete([ key, key ], done);
-    });
-
-    describe('transactions', function() {
-      beforeEach(function() {
-        // Trigger transaction mode.
-        request.id = 'transaction-id';
-        request.requests_ = [];
-      });
-
-      it('should queue request', function() {
-        request.delete(key);
-
-        assert(is.object(request.requests_[0].mutations[0].delete));
-      });
-    });
-  });
-
-  describe('get', function() {
+  describe('createReadStream', function() {
     beforeEach(function() {
       request.request_ = function() {};
 
@@ -225,21 +195,17 @@ describe('Request', function() {
 
     it('should throw if no keys are provided', function() {
       assert.throws(function() {
-        request.get();
+        request.createReadStream();
       }, /At least one Key object is required/);
     });
 
-    it('should return a stream if no callback is provided', function() {
-      assert(request.get(key) instanceof stream);
-    });
-
     it('should convert key to key proto', function(done) {
       overrides.entity.keyToKeyProto = function(key_) {
         assert.strictEqual(key_, key);
         done();
       };
 
-      request.get(key, assert.ifError);
+      request.createReadStream(key).on('error', done);
     });
 
     it('should create a limiter', function(done) {
@@ -256,7 +222,7 @@ describe('Request', function() {
         };
       };
 
-      request.get(key, options, assert.ifError);
+      request.createReadStream(key, options).on('error', done);
     });
 
     it('should make correct request', function(done) {
@@ -269,7 +235,7 @@ describe('Request', function() {
         done();
       };
 
-      request.get(key, assert.ifError);
+      request.createReadStream(key).on('error', done);
     });
 
     it('should allow setting strong read consistency', function(done) {
@@ -278,7 +244,9 @@ describe('Request', function() {
         done();
       };
 
-      request.get(key, { consistency: 'strong' }, assert.ifError);
+      request
+        .createReadStream(key, { consistency: 'strong' })
+        .on('error', done);
     });
 
     it('should allow setting strong eventual consistency', function(done) {
@@ -287,7 +255,9 @@ describe('Request', function() {
         done();
       };
 
-      request.get(key, { consistency: 'eventual' }, assert.ifError);
+      request
+        .createReadStream(key, { consistency: 'eventual' })
+        .on('error', done);
     });
 
     describe('error', function() {
@@ -302,37 +272,26 @@ describe('Request', function() {
         };
       });
 
-      describe('callback mode', function() {
-        it('should execute callback with error', function(done) {
-          request.get(key, function(err) {
+      it('should emit error', function(done) {
+        request.createReadStream(key)
+          .on('data', util.noop)
+          .on('error', function(err) {
             assert.strictEqual(err, error);
             done();
           });
-        });
       });
 
-      describe('stream mode', function() {
-        it('should emit error', function(done) {
-          request.get(key)
-            .on('data', util.noop)
-            .on('error', function(err) {
-              assert.strictEqual(err, error);
-              done();
-            });
-        });
+      it('should end stream', function(done) {
+        var stream = request.createReadStream(key);
 
-        it('should end stream', function(done) {
-          var stream = request.get(key);
-
-          stream
-            .on('data', util.noop)
-            .on('error', function() {
-              setImmediate(function() {
-                assert.strictEqual(stream._destroyed, true);
-                done();
-              });
+        stream
+          .on('data', util.noop)
+          .on('error', function() {
+            setImmediate(function() {
+              assert.strictEqual(stream._destroyed, true);
+              done();
             });
-        });
+          });
       });
     });
 
@@ -391,7 +350,6 @@ describe('Request', function() {
       var apiResponseWithMultiEntities = extend(true, {}, apiResponse);
       var entities = apiResponseWithMultiEntities.found;
       entities.push(entities[0]);
-      var expectedResults = entity.formatArray(entities);
 
       var apiResponseWithDeferred = extend(true, {}, apiResponse);
       apiResponseWithDeferred.deferred = [
@@ -402,6 +360,13 @@ describe('Request', function() {
         request.request_ = function(protoOpts, reqOpts, callback) {
           callback(null, apiResponse);
         };
+
+        overrides.util.createLimiter = function(makeRequest) {
+          return {
+            makeRequest: makeRequest,
+            stream: new stream.Transform({ objectMode: true })
+          };
+        };
       });
 
       it('should format the results', function(done) {
@@ -411,7 +376,10 @@ describe('Request', function() {
           return arr;
         };
 
-        request.get(key, assert.ifError);
+        request
+          .createReadStream(key)
+          .on('error', done)
+          .emit('reading');
       });
 
       it('should continue looking for deferred results', function(done) {
@@ -433,95 +401,196 @@ describe('Request', function() {
           done();
         };
 
-        request.get(key, assert.ifError);
+        request
+          .createReadStream(key)
+          .on('error', done)
+          .emit('reading');
       });
 
-      describe('callback mode', function() {
-        it('should exec callback with results', function(done) {
-          request.get(key, function(err, entity) {
-            assert.ifError(err);
+      it('should push results to the stream', function(done) {
+        request.createReadStream(key)
+          .on('error', done)
+          .on('data', function(entity) {
             assert.deepEqual(entity, expectedResult);
-            done();
-          });
-        });
+          })
+          .on('end', done)
+          .emit('reading');
+      });
 
-        it('should exec callback w/ array from multiple keys', function(done) {
-          request.request_ = function(protoOpts, reqOpts, callback) {
+      it('should not push more results if stream was ended', function(done) {
+        var entitiesEmitted = 0;
+
+        request.request_ = function(protoOpts, reqOpts, callback) {
+          setImmediate(function() {
             callback(null, apiResponseWithMultiEntities);
-          };
+          });
+        };
+
+        request.createReadStream([key, key])
+          .on('data', function() {
+            entitiesEmitted++;
+            this.end();
+          })
+          .on('end', function() {
+            assert.strictEqual(entitiesEmitted, 1);
+            done();
+          })
+          .emit('reading');
+      });
 
-          request.get([key, key], function(err, entities) {
-            assert.ifError(err);
+      it('should not get more results if stream was ended', function(done) {
+        var lookupCount = 0;
 
-            assert.strictEqual(is.array(entities), true);
-            assert.deepEqual(entities, expectedResults);
+        request.request_ = function(protoOpts, reqOpts, callback) {
+          lookupCount++;
+          setImmediate(function() {
+            callback(null, apiResponseWithDeferred);
+          });
+        };
 
+        request.createReadStream(key)
+          .on('error', done)
+          .on('data', function() {
+            this.end();
+          })
+          .on('end', function() {
+            assert.strictEqual(lookupCount, 1);
             done();
+          })
+          .emit('reading');
+      });
+    });
+  });
+
+  describe('delete', function() {
+    it('should delete by key', function(done) {
+      request.request_ = function(protoOpts, reqOpts, callback) {
+        assert.strictEqual(protoOpts.service, 'Datastore');
+        assert.strictEqual(protoOpts.method, 'commit');
+        assert(is.object(reqOpts.mutations[0].delete));
+        callback();
+      };
+      request.delete(key, done);
+    });
+
+    it('should return apiResponse in callback', function(done) {
+      var resp = { success: true };
+      request.request_ = function(protoOpts, reqOpts, callback) {
+        callback(null, resp);
+      };
+      request.delete(key, function(err, apiResponse) {
+        assert.ifError(err);
+        assert.deepEqual(resp, apiResponse);
+        done();
+      });
+    });
+
+    it('should multi delete by keys', function(done) {
+      request.request_ = function(protoOpts, reqOpts, callback) {
+        assert.equal(reqOpts.mutations.length, 2);
+        callback();
+      };
+      request.delete([ key, key ], done);
+    });
+
+    describe('transactions', function() {
+      beforeEach(function() {
+        // Trigger transaction mode.
+        request.id = 'transaction-id';
+        request.requests_ = [];
+      });
+
+      it('should queue request', function() {
+        request.delete(key);
+
+        assert(is.object(request.requests_[0].mutations[0].delete));
+      });
+    });
+  });
+
+  describe('get', function() {
+    describe('success', function() {
+      var keys = [key];
+      var fakeEntities = [
+        { a: 'a' },
+        { b: 'b' }
+      ];
+
+      beforeEach(function() {
+        request.createReadStream = sinon.spy(function() {
+          var stream = through.obj();
+
+          setImmediate(function() {
+            fakeEntities.forEach(function(entity) {
+              stream.push(entity);
+            });
+
+            stream.push(null);
           });
+
+          return stream;
         });
       });
 
-      describe('stream mode', function() {
-        beforeEach(function() {
-          overrides.util.createLimiter = function(makeRequest) {
-            return {
-              makeRequest: makeRequest,
-              stream: new stream.Transform({ objectMode: true })
-            };
-          };
+      it('should return an array of entities', function(done) {
+        var options = {};
+
+        request.get(keys, options, function(err, entities) {
+          assert.ifError(err);
+          assert.deepEqual(entities, fakeEntities);
+
+          var spy = request.createReadStream.getCall(0);
+          assert.strictEqual(spy.args[0], keys);
+          assert.strictEqual(spy.args[1], options);
+          done();
         });
+      });
 
-        it('should push results to the stream', function(done) {
-          request.get(key)
-            .on('error', done)
-            .on('data', function(entity) {
-              assert.deepEqual(entity, expectedResult);
-            })
-            .on('end', done)
-            .emit('reading');
+      it('should return a single entity', function(done) {
+        request.get(key, function(err, entity) {
+          assert.ifError(err);
+          assert.strictEqual(entity, fakeEntities[0]);
+          done();
         });
+      });
 
-        it('should not push more results if stream was ended', function(done) {
-          var entitiesEmitted = 0;
+      it('should allow options to be omitted', function(done) {
+        request.get(keys, function(err) {
+          assert.ifError(err);
+          done();
+        });
+      });
 
-          request.request_ = function(protoOpts, reqOpts, callback) {
-            setImmediate(function() {
-              callback(null, apiResponseWithMultiEntities);
-            });
-          };
+      it('should default options to an object', function(done) {
+        request.get(keys, null, function(err) {
+          assert.ifError(err);
 
-          request.get([key, key])
-            .on('data', function() {
-              entitiesEmitted++;
-              this.end();
-            })
-            .on('end', function() {
-              assert.strictEqual(entitiesEmitted, 1);
-              done();
-            })
-            .emit('reading');
+          var spy = request.createReadStream.getCall(0);
+          assert.deepEqual(spy.args[1], {});
+          done();
         });
+      });
+    });
 
-        it('should not get more results if stream was ended', function(done) {
-          var lookupCount = 0;
+    describe('error', function() {
+      var error = new Error('err');
 
-          request.request_ = function(protoOpts, reqOpts, callback) {
-            lookupCount++;
-            setImmediate(function() {
-              callback(null, apiResponseWithDeferred);
-            });
-          };
+      beforeEach(function() {
+        request.createReadStream = sinon.spy(function() {
+          var stream = through.obj();
 
-          request.get(key)
-            .on('error', done)
-            .on('data', function() {
-              this.end();
-            })
-            .on('end', function() {
-              assert.strictEqual(lookupCount, 1);
-              done();
-            })
-            .emit('reading');
+          setImmediate(function() {
+            stream.emit('error', error);
+          });
+
+          return stream;
+        });
+      });
+
+      it('send an error to the callback', function(done) {
+        request.get(key, function(err) {
+          assert.strictEqual(err, error);
+          done();
         });
       });
     });
@@ -548,7 +617,7 @@ describe('Request', function() {
     });
   });
 
-  describe('runQuery', function() {
+  describe('runQueryStream', function() {
     beforeEach(function() {
       overrides.entity.queryToQueryProto = util.noop;
       request.request_ = util.noop;
@@ -568,10 +637,6 @@ describe('Request', function() {
       };
     });
 
-    it('should return a stream if no callback is provided', function() {
-      assert(request.runQuery({}) instanceof stream);
-    });
-
     it('should create a limiter', function(done) {
       var options = {};
 
@@ -586,7 +651,10 @@ describe('Request', function() {
         };
       };
 
-      request.runQuery({}, options, assert.ifError);
+      request
+        .runQueryStream({}, options)
+        .on('error', done)
+        .emit('reading');
     });
 
     it('should clone the query', function(done) {
@@ -600,7 +668,10 @@ describe('Request', function() {
         done();
       };
 
-      request.runQuery(query, assert.ifError);
+      request
+        .runQueryStream(query)
+        .on('error', done)
+        .emit('reading');
     });
 
     it('should make correct request', function(done) {
@@ -621,7 +692,10 @@ describe('Request', function() {
         done();
       };
 
-      request.runQuery(query, assert.ifError);
+      request
+        .runQueryStream(query)
+        .on('error', done)
+        .emit('reading');
     });
 
     it('should allow setting strong read consistency', function(done) {
@@ -630,7 +704,10 @@ describe('Request', function() {
         done();
       };
 
-      request.runQuery({}, { consistency: 'strong' }, assert.ifError);
+      request
+        .runQueryStream({}, { consistency: 'strong' })
+        .on('error', done)
+        .emit('reading');
     });
 
     it('should allow setting strong eventual consistency', function(done) {
@@ -639,7 +716,10 @@ describe('Request', function() {
         done();
       };
 
-      request.runQuery({}, { consistency: 'eventual' }, assert.ifError);
+      request
+        .runQueryStream({}, { consistency: 'eventual' })
+        .on('error', done)
+        .emit('reading');
     });
 
     describe('error', function() {
@@ -651,15 +731,8 @@ describe('Request', function() {
         };
       });
 
-      it('should execute callback with error', function(done) {
-        request.runQuery({}, function(err) {
-          assert.strictEqual(err, error);
-          done();
-        });
-      });
-
       it('should emit error on a stream', function(done) {
-        request.runQuery({})
+        request.runQueryStream({})
           .on('error', function(err) {
             assert.strictEqual(err, error);
             done();
@@ -698,11 +771,18 @@ describe('Request', function() {
           return array;
         };
 
-        request.runQuery({}, function(err, entities) {
-          assert.ifError(err);
-          assert.deepEqual(entities, apiResponse.batch.entityResults);
-          done();
-        });
+        var entities = [];
+
+        request
+          .runQueryStream({})
+          .on('error', done)
+          .on('data', function(entity) {
+            entities.push(entity);
+          })
+          .on('end', function() {
+            assert.deepEqual(entities, apiResponse.batch.entityResults);
+            done();
+          });
       });
 
       it('should re-run query if not finished', function(done) {
@@ -786,20 +866,31 @@ describe('Request', function() {
           return queryProto;
         };
 
-        request.runQuery(query, function(err, entities, info) {
-          assert.ifError(err);
+        var entities = [];
+        var info;
 
-          var allResults = [].slice.call(entityResultsPerApiCall[1])
-            .concat(entityResultsPerApiCall[2]);
-          assert.deepEqual(entities, allResults);
+        request
+          .runQueryStream(query)
+          .on('error', done)
+          .on('info', function(_info) {
+            info = _info;
+          })
+          .on('data', function(entity) {
+            entities.push(entity);
+          })
+          .on('end', function() {
+            var allResults = [].slice.call(entityResultsPerApiCall[1])
+              .concat(entityResultsPerApiCall[2]);
 
-          assert.deepEqual(info, {
-            endCursor: apiResponse.batch.endCursor,
-            moreResults: apiResponse.batch.moreResults
-          });
+            assert.deepEqual(entities, allResults);
 
-          done();
-        });
+            assert.deepEqual(info, {
+              endCursor: apiResponse.batch.endCursor,
+              moreResults: apiResponse.batch.moreResults
+            });
+
+            done();
+          });
       });
 
       it('should handle large limitless queries', function(done) {
@@ -834,22 +925,13 @@ describe('Request', function() {
           return this;
         };
 
-        request.runQuery(query, function(err) {
-          assert.ifError(err);
-          assert.strictEqual(timesRequestCalled, 2);
-          assert.strictEqual(limitCalled, false);
-          done();
-        });
-      });
-
-      it('should emit the info object on a stream', function(done) {
-        request.runQuery({})
+        request
+          .runQueryStream(query)
           .on('error', done)
-          .on('info', function(info) {
-            assert.deepEqual(info, {
-              endCursor: apiResponse.batch.endCursor,
-              moreResults: apiResponse.batch.moreResults
-            });
+          .on('data', function() {})
+          .on('end', function() {
+            assert.strictEqual(timesRequestCalled, 2);
+            assert.strictEqual(limitCalled, false);
             done();
           });
       });
@@ -874,7 +956,7 @@ describe('Request', function() {
           }
         };
 
-        request.runQuery({})
+        request.runQueryStream({})
           .on('data', function() {
             entitiesEmitted++;
             this.end();
@@ -893,7 +975,7 @@ describe('Request', function() {
           callback(null, apiResponse);
         };
 
-        request.runQuery({})
+        request.runQueryStream({})
           .on('error', done)
           .on('data', function() {
             this.end();
@@ -906,6 +988,91 @@ describe('Request', function() {
     });
   });
 
+  describe('runQuery', function() {
+    var query = {};
+
+    describe('success', function() {
+      var fakeInfo = {};
+      var fakeEntities = [
+        { a: 'a' },
+        { b: 'b' }
+      ];
+
+      beforeEach(function() {
+        request.runQueryStream = sinon.spy(function() {
+          var stream = through.obj();
+
+          setImmediate(function() {
+            stream.emit('info', fakeInfo);
+
+            fakeEntities.forEach(function(entity) {
+              stream.push(entity);
+            });
+
+            stream.push(null);
+          });
+
+          return stream;
+        });
+      });
+
+      it('should return an array of entities', function(done) {
+        var options = {};
+
+        request.runQuery(query, options, function(err, entities, info) {
+          assert.ifError(err);
+          assert.deepEqual(entities, fakeEntities);
+          assert.strictEqual(info, fakeInfo);
+
+          var spy = request.runQueryStream.getCall(0);
+          assert.strictEqual(spy.args[0], query);
+          assert.strictEqual(spy.args[1], options);
+          done();
+        });
+      });
+
+      it('should allow options to be omitted', function(done) {
+        request.runQuery(query, function(err) {
+          assert.ifError(err);
+          done();
+        });
+      });
+
+      it('should default options to an object', function(done) {
+        request.runQuery(query, null, function(err) {
+          assert.ifError(err);
+
+          var spy = request.runQueryStream.getCall(0);
+          assert.deepEqual(spy.args[1], {});
+          done();
+        });
+      });
+    });
+
+    describe('error', function() {
+      var error = new Error('err');
+
+      beforeEach(function() {
+        request.runQueryStream = sinon.spy(function() {
+          var stream = through.obj();
+
+          setImmediate(function() {
+            stream.emit('error', error);
+          });
+
+          return stream;
+        });
+      });
+
+      it('send an error to the callback', function(done) {
+        request.runQuery(query, function(err) {
+          assert.strictEqual(err, error);
+          done();
+        });
+      });
+    });
+  });
+
   describe('save', function() {
     it('should save with keys', function(done) {
       var expectedReq = {
diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js
index 30f6ea79df7..8f413eb002d 100644
--- a/handwritten/nodejs-datastore/test/transaction.js
+++ b/handwritten/nodejs-datastore/test/transaction.js
@@ -19,9 +19,22 @@
 var arrify = require('arrify');
 var assert = require('assert');
 var entity = require('../src/entity.js');
+var extend = require('extend');
 var proxyquire = require('proxyquire');
 var util = require('@google-cloud/common').util;
 
+var promisified = false;
+var fakeUtil = extend({}, util, {
+  promisifyAll: function(Class, options) {
+    if (Class.name !== 'Transaction') {
+      return;
+    }
+
+    promisified = true;
+    assert.deepEqual(options.exclude, ['createQuery', 'delete', 'save']);
+  }
+});
+
 var DatastoreRequestOverride = {
   delete: util.noop,
   save: util.noop
@@ -62,6 +75,9 @@ describe('Transaction', function() {
 
   before(function() {
     Transaction = proxyquire('../src/transaction.js', {
+      '@google-cloud/common': {
+        util: fakeUtil
+      },
       './request.js': FakeDatastoreRequest
     });
   });
@@ -71,6 +87,10 @@ describe('Transaction', function() {
   });
 
   describe('instantiation', function() {
+    it('should promisify all the things', function() {
+      assert(promisified);
+    });
+
     it('should localize the datastore instance', function() {
       assert.strictEqual(transaction.datastore, DATASTORE);
     });

From bb9a8a24e6ae09f4ac257cbb831345acbf0cbd28 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 17 Oct 2016 18:24:42 -0400
Subject: [PATCH 075/820] datastore @ 0.5.0 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index db4a9c34ac5..0844ed4d1de 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.4.0",
+  "version": "0.5.0",
   "author": "Google Inc.",
   "description": "Google Cloud Datastore Client Library for Node.js",
   "contributors": [

From 52dc648044c7d045995c74ddb78757b81f902dec Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 21 Oct 2016 11:49:57 -0400
Subject: [PATCH 076/820] datastore: update docs to show how to get the Key
 (#1725)

---
 handwritten/nodejs-datastore/README.md        |  2 +-
 handwritten/nodejs-datastore/src/index.js     | 28 ++++++++-----------
 handwritten/nodejs-datastore/src/query.js     | 12 ++++++--
 handwritten/nodejs-datastore/src/request.js   | 14 ++++++++--
 .../nodejs-datastore/src/transaction.js       |  6 ++--
 5 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index 76c99719649..45de4c2fe39 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -55,7 +55,7 @@ datastore.save({
   key: blogPostKey,
   data: blogPostData
 }).then(function() {
-  // The blog post is not published!
+  // The blog post is now published!
 });
 
 // It's also possible to integrate with third-party Promise libraries.
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 039a705e80e..dac99d34ded 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -107,8 +107,8 @@ var Transaction = require('./transaction.js');
  * var key = datastore.key(['Company', 'Google']);
  *
  * datastore.get(key, function(err, entity) {
- *   // entity.data = The record.
- *   // entity.key = The key.
+ *   // entity = The record.
+ *   // entity[datastore.KEY] = The key for this entity.
  * });
  *
  * //-
@@ -147,13 +147,10 @@ var Transaction = require('./transaction.js');
  * // Run the query with {module:datastore#runQuery}.
  * //-
  * datastore.runQuery(query, function(err, entities) {
- *   // entities = [
- *   //   {
- *   //     data: The record,
- *   //     key: The key for this record
- *   //   },
- *   //   ...
- *   // ]
+ *   // entities = An array of records.
+ *
+ *   // Access the Key object for an entity.
+ *   var firstEntityKey = entities[0][datastore.KEY];
  * });
  *
  * //-
@@ -227,11 +224,8 @@ var Transaction = require('./transaction.js');
  * //-
  * datastore.get(key, function(err, entity) {
  *   // entity = {
- *   //   key: datastore.key(['Company', 'Google']),
- *   //   data: {
- *   //     name: 'Google',
- *   //     location: 'CA'
- *   //   }
+ *   //   name: 'Google',
+ *   //   location: 'CA'
  *   // }
  * });
  *
@@ -280,16 +274,16 @@ var Transaction = require('./transaction.js');
  *
  *   var key = datastore.key(['Company', 'Google']);
  *
- *   transaction.get(key, function(err, data) {
+ *   transaction.get(key, function(err, entity) {
  *     if (err) {
  *       // Error handling omitted.
  *     }
  *
- *     data.symbol = 'GOOG';
+ *     entity.symbol = 'GOOG';
  *
  *     transaction.save({
  *       key: key,
- *       data: data
+ *       data: entity
  *     });
  *
  *     transaction.commit(function(err) {
diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js
index 55abd4638a9..49fc312d1c8 100644
--- a/handwritten/nodejs-datastore/src/query.js
+++ b/handwritten/nodejs-datastore/src/query.js
@@ -293,7 +293,12 @@ Query.prototype.offset = function(n) {
  *     - {module:datastore#NO_MORE_RESULTS}: There are no more results.
  *
  * @example
- * query.run(function(err, entities, info) {});
+ * query.run(function(err, entities, info) {
+ *   // entities = An array of records.
+ *
+ *   // Access the Key object for an entity.
+ *   var firstEntityKey = entities[0][datastore.KEY];
+ * });
  *
  * //-
  * // A keys-only query returns just the keys of the result entities instead of
@@ -331,7 +336,10 @@ Query.prototype.run = function() {
  * @example
  * query.runStream()
  *   .on('error', console.error)
- *   .on('data', function (entity) {})
+ *   .on('data', function (entity) {
+ *     // Access the Key object for this entity.
+ *     var key = entity[datastore.KEY];
+ *   })
  *   .on('info', function(info) {})
  *   .on('end', function() {
  *     // All entities retrieved.
diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index a1bec25fac8..1f6aedb7fbb 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -466,7 +466,12 @@ DatastoreRequest.prototype.insert = function(entities, callback) {
  * //-
  * var query = datastore.createQuery('Lion');
  *
- * datastore.runQuery(query, function(err, entities, info) {});
+ * datastore.runQuery(query, function(err, entities, info) {
+ *   // entities = An array of records.
+ *
+ *   // Access the Key object for an entity.
+ *   var firstEntityKey = entities[0][datastore.KEY];
+ * });
  *
  * //-
  * // Or, if you're using a transaction object.
@@ -541,7 +546,10 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  * @example
  * datastore.runQueryStream(query)
  *   .on('error', console.error)
- *   .on('data', function (entity) {})
+ *   .on('data', function(entity) {
+ *     // Access the Key object for this entity.
+ *     var key = entity[datastore.KEY];
+ *   })
  *   .on('info', function(info) {})
  *   .on('end', function() {
  *     // All entities retrieved.
@@ -552,7 +560,7 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) {
  * // unnecessary processing and API requests.
  * //-
  * datastore.runQueryStream(query)
- *   .on('data', function (entity) {
+ *   .on('data', function(entity) {
  *     this.end();
  *   });
  */
diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js
index 11a1da7ad1d..1cdbdbd9f73 100644
--- a/handwritten/nodejs-datastore/src/transaction.js
+++ b/handwritten/nodejs-datastore/src/transaction.js
@@ -348,12 +348,12 @@ Transaction.prototype.rollback = function(callback) {
  *   // Perform Datastore transactional operations.
  *   var key = datastore.key(['Company', 123]);
  *
- *   transaction.get(key, function(err, data) {
- *     data.name = 'Google';
+ *   transaction.get(key, function(err, entity) {
+ *     entity.name = 'Google';
  *
  *     transaction.save({
  *       key: key,
- *       data: data
+ *       data: entity
  *     });
  *
  *     transaction.commit(function(err) {

From bf8d675115ad9e7c18666d6115239a2b214e1248 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 21 Oct 2016 15:13:32 -0400
Subject: [PATCH 077/820] docs: datastore: update request#get (#1738)

---
 handwritten/nodejs-datastore/src/request.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 1f6aedb7fbb..91465b2eaa2 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -392,7 +392,11 @@ DatastoreRequest.prototype.delete = function(keys, callback) {
  *   }
  *
  *   entity.newValue = true;
- *   datastore.save(entity, function(err) {});
+ *
+ *   datastore.save({
+ *     key: key,
+ *     data: entity
+ *   }, function(err) {});
  * });
  *
  * //-

From 3b60ad47216a70110c139748de583d4f5f4d11ae Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Mon, 7 Nov 2016 17:40:13 -0500
Subject: [PATCH 078/820] docs: lint code snippets (#1772)

---
 handwritten/nodejs-datastore/src/request.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 91465b2eaa2..8e707e4d128 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -750,7 +750,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) {
  *     name: 'DonutShack',
  *     rating: 8
  *   }
- * }
+ * };
  *
  * datastore.save(entity, function(err) {
  *   console.log(key.path); // ['Company', 'donutshack']

From f091cc7b1bde8ecd4effc8327b03a6bb2ac47e0c Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 16 Nov 2016 11:16:08 -0500
Subject: [PATCH 079/820] docs: update API key generation steps (#1791)

---
 handwritten/nodejs-datastore/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index 45de4c2fe39..9e09143964b 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -93,8 +93,8 @@ If you are not running this client on Google Compute Engine, you need a Google D
 3. Navigate to  **APIs & auth** > **APIs section** and turn on the following APIs (you may need to enable billing in order to use these services):
   * Google Cloud Datastore API
 4. Navigate to **APIs & auth** >  **Credentials** and then:
-  * If you want to use a new service account, click on **Create new Client ID** and select **Service account**. After the account is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests.
-  * If you want to generate a new key for an existing service account, click on **Generate new JSON key** and download the JSON key file.
+  * If you want to use a new service account key, click on **Create credentials** and select **Service account key**. After the account key is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests.
+  * If you want to generate a new service account key for an existing service account, click on **Generate new JSON key** and download the JSON key file.
 
 ``` js
 var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123'

From 172e8395f09454e4d4829cd6fb787653cb64e0c9 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 16 Nov 2016 14:39:40 -0500
Subject: [PATCH 080/820] update dependencies

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 0844ed4d1de..9d50acf0c95 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,7 +50,7 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.7.0",
+    "@google-cloud/common": "^0.8.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From 2d934b55425c6bcc9cf36efaee94ebd9c9931644 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 16 Nov 2016 16:33:25 -0500
Subject: [PATCH 081/820] datastore @ 0.5.1 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 9d50acf0c95..28411e2cdd5 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.5.0",
+  "version": "0.5.1",
   "author": "Google Inc.",
   "description": "Google Cloud Datastore Client Library for Node.js",
   "contributors": [

From b7e52f3be7135b31d766bfd05a050040e4418fda Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Thu, 17 Nov 2016 10:51:30 -0500
Subject: [PATCH 082/820] datastore: accept entity object to mutation methods
 (#1804)

---
 handwritten/nodejs-datastore/src/index.js     |   5 +-
 handwritten/nodejs-datastore/src/request.js   | 125 ++++++++++++------
 .../nodejs-datastore/system-test/datastore.js |  27 +++-
 handwritten/nodejs-datastore/test/request.js  | 109 +++++++++++++++
 4 files changed, 221 insertions(+), 45 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index dac99d34ded..cb76d2574a8 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -281,10 +281,7 @@ var Transaction = require('./transaction.js');
  *
  *     entity.symbol = 'GOOG';
  *
- *     transaction.save({
- *       key: key,
- *       data: entity
- *     });
+ *     transaction.save(entity);
  *
  *     transaction.commit(function(err) {
  *       if (!err) {
diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 8e707e4d128..671dc4c4174 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -67,6 +67,42 @@ var CONSISTENCY_PROTO_CODE = {
  */
 function DatastoreRequest() {}
 
+/**
+ * Format a user's input to mutation methods. This will create a deep clone of
+ * the input, as well as allow users to pass an object in the format of an
+ * entity.
+ *
+ * Both of the following formats can be supplied supported:
+ *
+ *     datastore.save({
+ *       key: datastore.key('Kind'),
+ *       data: { foo: 'bar' }
+ *     }, function(err) {})
+ *
+ *     var entity = { foo: 'bar' }
+ *     entity[datastore.KEY] = datastore.key('Kind')
+ *     datastore.save(entity, function(err) {})
+ *
+ * @private
+ *
+ * @resource [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803}
+ *
+ * @param {object} obj - The user's input object.
+ */
+DatastoreRequest.prepareEntityObject_ = function(obj) {
+  var entityObject = extend(true, {}, obj);
+
+  // Entity objects are also supported.
+  if (obj[entity.KEY_SYMBOL]) {
+    return {
+      key: obj[entity.KEY_SYMBOL],
+      data: entityObject
+    };
+  }
+
+  return entityObject;
+};
+
 /**
  * Generate IDs without creating entities.
  *
@@ -426,7 +462,10 @@ DatastoreRequest.prototype.get = function(keys, options, callback) {
  * Maps to {module:datastore#save}, forcing the method to be `insert`.
  */
 DatastoreRequest.prototype.insert = function(entities, callback) {
-  entities = arrify(entities).map(propAssign('method', 'insert'));
+  entities = arrify(entities)
+    .map(DatastoreRequest.prepareEntityObject_)
+    .map(propAssign('method', 'insert'));
+
   this.save(entities, callback);
 };
 
@@ -863,53 +902,53 @@ DatastoreRequest.prototype.save = function(entities, callback) {
 
   // Iterate over the entity objects, build a proto from all keys and values,
   // then place in the correct mutation array (insert, update, etc).
-  entities.forEach(function(entityObject, index) {
-    entityObject = extend(true, {}, entityObject);
-
-    var mutation = {};
-    var entityProto = {};
-    var method = 'upsert';
-
-    if (entityObject.method) {
-      if (methods[entityObject.method]) {
-        method = entityObject.method;
-      } else {
-        throw new Error('Method ' + entityObject.method + ' not recognized.');
+  entities
+    .map(DatastoreRequest.prepareEntityObject_)
+    .forEach(function(entityObject, index) {
+      var mutation = {};
+      var entityProto = {};
+      var method = 'upsert';
+
+      if (entityObject.method) {
+        if (methods[entityObject.method]) {
+          method = entityObject.method;
+        } else {
+          throw new Error('Method ' + entityObject.method + ' not recognized.');
+        }
       }
-    }
 
-    if (!entity.isKeyComplete(entityObject.key)) {
-      insertIndexes[index] = true;
-    }
+      if (!entity.isKeyComplete(entityObject.key)) {
+        insertIndexes[index] = true;
+      }
 
-    if (is.array(entityObject.data)) {
-      entityProto.properties = entityObject.data.reduce(function(acc, data) {
-        var value = entity.encodeValue(data.value);
+      if (is.array(entityObject.data)) {
+        entityProto.properties = entityObject.data.reduce(function(acc, data) {
+          var value = entity.encodeValue(data.value);
 
-        if (is.boolean(data.excludeFromIndexes)) {
-          var excluded = data.excludeFromIndexes;
-          var values = value.arrayValue && value.arrayValue.values;
+          if (is.boolean(data.excludeFromIndexes)) {
+            var excluded = data.excludeFromIndexes;
+            var values = value.arrayValue && value.arrayValue.values;
 
-          if (values) {
-            values = values.map(propAssign('excludeFromIndexes', excluded));
-          } else {
-            value.excludeFromIndexes = data.excludeFromIndexes;
+            if (values) {
+              values = values.map(propAssign('excludeFromIndexes', excluded));
+            } else {
+              value.excludeFromIndexes = data.excludeFromIndexes;
+            }
           }
-        }
 
-        acc[data.name] = value;
+          acc[data.name] = value;
 
-        return acc;
-      }, {});
-    } else {
-      entityProto = entity.entityToEntityProto(entityObject.data);
-    }
+          return acc;
+        }, {});
+      } else {
+        entityProto = entity.entityToEntityProto(entityObject.data);
+      }
 
-    entityProto.key = entity.keyToKeyProto(entityObject.key);
+      entityProto.key = entity.keyToKeyProto(entityObject.key);
 
-    mutation[method] = entityProto;
-    mutations.push(mutation);
-  });
+      mutation[method] = entityProto;
+      mutations.push(mutation);
+    });
 
   var protoOpts = {
     service: 'Datastore',
@@ -953,7 +992,10 @@ DatastoreRequest.prototype.save = function(entities, callback) {
  * Maps to {module:datastore#save}, forcing the method to be `update`.
  */
 DatastoreRequest.prototype.update = function(entities, callback) {
-  entities = arrify(entities).map(propAssign('method', 'update'));
+  entities = arrify(entities)
+    .map(DatastoreRequest.prepareEntityObject_)
+    .map(propAssign('method', 'update'));
+
   this.save(entities, callback);
 };
 
@@ -961,7 +1003,10 @@ DatastoreRequest.prototype.update = function(entities, callback) {
  * Maps to {module:datastore#save}, forcing the method to be `upsert`.
  */
 DatastoreRequest.prototype.upsert = function(entities, callback) {
-  entities = arrify(entities).map(propAssign('method', 'upsert'));
+  entities = arrify(entities)
+    .map(DatastoreRequest.prepareEntityObject_)
+    .map(propAssign('method', 'upsert'));
+
   this.save(entities, callback);
 };
 
diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js
index 01d68ed2878..85e520e0786 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.js
+++ b/handwritten/nodejs-datastore/system-test/datastore.js
@@ -26,7 +26,6 @@ var env = require('../../../system-test/env.js');
 describe('Datastore', function() {
   var testKinds = [];
   var datastore = new Datastore(env);
-
   // Override the Key method so we can track what keys are created during the
   // tests. They are then deleted in the `after` hook.
   var key = datastore.key;
@@ -156,6 +155,32 @@ describe('Datastore', function() {
       });
     });
 
+    it('should save/get/update', function(done) {
+      var postKey = datastore.key('Post');
+
+      datastore.save({ key: postKey, data: post }, function(err) {
+        assert.ifError(err);
+
+        datastore.get(postKey, function(err, entity) {
+          assert.ifError(err);
+
+          assert.strictEqual(entity.title, post.title);
+
+          entity.title = 'Updated';
+
+          datastore.save(entity, function(err) {
+            assert.ifError(err);
+
+            datastore.get(postKey, function(err, entity) {
+              assert.ifError(err);
+              assert.strictEqual(entity.title, 'Updated');
+              datastore.delete(postKey, done);
+            });
+          });
+        });
+      });
+    });
+
     it('should fail explicitly set second insert on save', function(done) {
       var postKey = datastore.key('Post');
 
diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js
index 2b28a019ef9..9e11867f1ef 100644
--- a/handwritten/nodejs-datastore/test/request.js
+++ b/handwritten/nodejs-datastore/test/request.js
@@ -88,6 +88,8 @@ describe('Request', function() {
       './entity.js': entity,
       './query.js': FakeQuery
     });
+
+    override('Request', Request);
   });
 
   after(function() {
@@ -110,6 +112,42 @@ describe('Request', function() {
     });
   });
 
+  describe('prepareEntityObject_', function() {
+    it('should clone an object', function() {
+      var obj = {
+        data: {
+          nested: {
+            obj: true
+          }
+        },
+        method: 'insert'
+      };
+      var expectedPreparedEntityObject = extend(true, {}, obj);
+
+      var preparedEntityObject = Request.prepareEntityObject_(obj);
+
+      assert.notStrictEqual(preparedEntityObject, obj);
+
+      assert.notStrictEqual(
+        preparedEntityObject.data.nested,
+        obj.data.nested
+      );
+
+      assert.deepEqual(preparedEntityObject, expectedPreparedEntityObject);
+    });
+
+    it('should format an entity', function() {
+      var key = {};
+      var entityObject = { data: true };
+      entityObject[entity.KEY_SYMBOL] = key;
+
+      var preparedEntityObject = Request.prepareEntityObject_(entityObject);
+
+      assert.strictEqual(preparedEntityObject.key, key);
+      assert.deepEqual(preparedEntityObject.data, entityObject);
+    });
+  });
+
   describe('allocateIds', function() {
     var incompleteKey;
     var apiResponse = {
@@ -597,6 +635,26 @@ describe('Request', function() {
   });
 
   describe('insert', function() {
+    it('should prepare entity objects', function(done) {
+      var entityObject = {};
+      var preparedEntityObject = { prepared: true };
+      var expectedEntityObject = extend({}, preparedEntityObject, {
+        method: 'insert'
+      });
+
+      overrides.Request.prepareEntityObject_ = function(obj) {
+        assert.strictEqual(obj, entityObject);
+        return preparedEntityObject;
+      };
+
+      request.save = function(entities) {
+        assert.deepEqual(entities[0], expectedEntityObject);
+        done();
+      };
+
+      request.insert(entityObject, assert.ifError);
+    });
+
     it('should pass the correct arguments to save', function(done) {
       request.save = function(entities, callback) {
         assert.deepEqual(entities, [{
@@ -1134,6 +1192,17 @@ describe('Request', function() {
       ], done);
     });
 
+    it('should prepare entity objects', function(done) {
+      var entityObject = {};
+
+      overrides.Request.prepareEntityObject_ = function(obj) {
+        assert.strictEqual(obj, entityObject);
+        done();
+      };
+
+      request.save(entityObject, assert.ifError);
+    });
+
     it('should save with specific method', function(done) {
       request.request_ = function(protoOpts, reqOpts, callback) {
         assert.equal(reqOpts.mutations.length, 3);
@@ -1324,6 +1393,26 @@ describe('Request', function() {
   });
 
   describe('update', function() {
+    it('should prepare entity objects', function(done) {
+      var entityObject = {};
+      var preparedEntityObject = { prepared: true };
+      var expectedEntityObject = extend({}, preparedEntityObject, {
+        method: 'update'
+      });
+
+      overrides.Request.prepareEntityObject_ = function(obj) {
+        assert.strictEqual(obj, entityObject);
+        return preparedEntityObject;
+      };
+
+      request.save = function(entities) {
+        assert.deepEqual(entities[0], expectedEntityObject);
+        done();
+      };
+
+      request.update(entityObject, assert.ifError);
+    });
+
     it('should pass the correct arguments to save', function(done) {
       request.save = function(entities, callback) {
         assert.deepEqual(entities, [{
@@ -1345,6 +1434,26 @@ describe('Request', function() {
   });
 
   describe('upsert', function() {
+    it('should prepare entity objects', function(done) {
+      var entityObject = {};
+      var preparedEntityObject = { prepared: true };
+      var expectedEntityObject = extend({}, preparedEntityObject, {
+        method: 'upsert'
+      });
+
+      overrides.Request.prepareEntityObject_ = function(obj) {
+        assert.strictEqual(obj, entityObject);
+        return preparedEntityObject;
+      };
+
+      request.save = function(entities) {
+        assert.deepEqual(entities[0], expectedEntityObject);
+        done();
+      };
+
+      request.upsert(entityObject, assert.ifError);
+    });
+
     it('should pass the correct arguments to save', function(done) {
       request.save = function(entities, callback) {
         assert.deepEqual(entities, [{

From 471c4eb4735bcedcf1fc611a32fe816776062317 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Mon, 21 Nov 2016 15:13:07 -0800
Subject: [PATCH 083/820] Fixes #48 (#249)

Fixes #234
Fixes #250

Addressed comments.
---
 .../nodejs-datastore/samples/README.md        |   29 +-
 .../nodejs-datastore/samples/concepts.js      | 2150 ++++++++---------
 handwritten/nodejs-datastore/samples/error.js |   67 +-
 .../nodejs-datastore/samples/package.json     |   11 +-
 .../nodejs-datastore/samples/quickstart.js    |   16 +-
 .../samples/system-test/concepts.test.js      |  401 +--
 .../samples/system-test/error.test.js         |   45 +-
 .../samples/system-test/quickstart.test.js    |   51 +-
 .../samples/system-test/tasks.test.js         |  106 +-
 .../samples/system-test/util.js               |   30 -
 handwritten/nodejs-datastore/samples/tasks.js |  222 +-
 .../samples/test/concepts.test.js             |   18 -
 .../samples/test/error.test.js                |   18 -
 .../samples/test/quickstart.test.js           |   50 -
 .../samples/test/tasks.test.js                |   18 -
 15 files changed, 1423 insertions(+), 1809 deletions(-)
 delete mode 100644 handwritten/nodejs-datastore/samples/system-test/util.js
 mode change 100755 => 100644 handwritten/nodejs-datastore/samples/tasks.js
 delete mode 100644 handwritten/nodejs-datastore/samples/test/concepts.test.js
 delete mode 100644 handwritten/nodejs-datastore/samples/test/error.test.js
 delete mode 100644 handwritten/nodejs-datastore/samples/test/quickstart.test.js
 delete mode 100644 handwritten/nodejs-datastore/samples/test/tasks.test.js

diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md
index 5c34edc7324..f7500f62ee7 100644
--- a/handwritten/nodejs-datastore/samples/README.md
+++ b/handwritten/nodejs-datastore/samples/README.md
@@ -33,15 +33,26 @@ View the [documentation][tasks_docs] or the [source code][tasks_code].
 
 __Run the sample:__
 
-Usage: `node tasks  [args]...`
-
-Print usage:
-
-    node tasks
-
-Example:
-
-    node tasks list
+Usage: `node tasks.js  [args]...`
+
+```
+Commands:
+  new   Adds a task with a description .
+  done       Marks the specified task as done.
+  list               Lists all tasks ordered by creation time.
+  delete     Deletes a task.
+
+Options:
+  --help  Show help                                       [boolean]
+
+Examples:
+  node tasks.js new "Buy milk"  Adds a task with description "Buy milk".
+  node tasks.js done 12345      Marks task 12345 as Done.
+  node tasks.js list            Lists all tasks ordered by creation time
+  node tasks.js delete 12345    Deletes task 12345.
+
+For more information, see https://cloud.google.com/datastore/docs
+```
 
 [tasks_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial
 [tasks_code]: tasks.js
diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js
index 658f8cb5785..ccf1f79a067 100644
--- a/handwritten/nodejs-datastore/samples/concepts.js
+++ b/handwritten/nodejs-datastore/samples/concepts.js
@@ -1,1352 +1,1244 @@
-// Copyright 2015, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 'use strict';
 
-var asyncUtil = require('async');
+const assert = require('power-assert');
 // By default, the client will authenticate using the service account file
 // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
 // the project specified by the GCLOUD_PROJECT environment variable. See
 // https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication
-var Datastore = require('@google-cloud/datastore');
+const Datastore = require('@google-cloud/datastore');
 
-module.exports = {
-  Entity: Entity,
-  Index: Index,
-  Metadata: Metadata,
-  Query: Query,
-  Transaction: Transaction
-};
+function makeStub () {
+  return sinon.stub().returns(Promise.resolve([]));
+}
 
 // This mock is used in the documentation snippets.
-var datastore = {
-  delete: function () {},
-  get: function () {},
-  insert: function () {},
-  key: function () {},
-  update: function () {},
-  upsert: function () {},
-  runQuery: function () {},
-  save: function () {}
+let datastore = {
+  delete: makeStub(),
+  get: makeStub(),
+  insert: makeStub(),
+  key: makeStub(),
+  update: makeStub(),
+  upsert: makeStub(),
+  runQuery: sinon.stub().returns(Promise.resolve([[]])),
+  save: makeStub()
 };
 
-function Entity (projectId) {
-  var options = {
-    projectId: projectId
-  };
-
-  this.datastore = Datastore(options);
-
-  // To create the keys, we have to use this instance of Datastore.
-  datastore.key = this.datastore.key;
-
-  this.incompleteKey = this.getIncompleteKey();
-  this.namedKey = this.getNamedKey();
-  this.keyWithParent = this.getKeyWithParent();
-  this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent();
+class TestHelper {
+  constructor (projectId) {
+    const options = {
+      projectId: projectId
+    };
+    this.datastore = Datastore(options);
+  }
 }
 
-Entity.prototype.getIncompleteKey = function () {
-  // [START incomplete_key]
-  var taskKey = datastore.key('Task');
-  // [END incomplete_key]
-
-  return taskKey;
-};
-
-Entity.prototype.getNamedKey = function () {
-  // [START named_key]
-  var taskKey = datastore.key([
-    'Task',
-    'sampleTask'
-  ]);
-  // [END named_key]
-
-  return taskKey;
-};
+class Entity extends TestHelper {
+  constructor (projectId) {
+    super(projectId);
+    // To create the keys, we have to use this instance of Datastore.
+    datastore.key = this.datastore.key;
 
-Entity.prototype.getKeyWithParent = function () {
-  // [START key_with_parent]
-  var taskKey = datastore.key([
-    'TaskList',
-    'default',
-    'Task',
-    'sampleTask'
-  ]);
-  // [END key_with_parent]
-
-  return taskKey;
-};
-
-Entity.prototype.getKeyWithMultiLevelParent = function () {
-  // [START key_with_multilevel_parent]
-  var taskKey = datastore.key([
-    'User',
-    'alice',
-    'TaskList',
-    'default',
-    'Task',
-    'sampleTask'
-  ]);
-  // [END key_with_multilevel_parent]
-
-  return taskKey;
-};
+    this.incompleteKey = this.getIncompleteKey();
+    this.namedKey = this.getNamedKey();
+    this.keyWithParent = this.getKeyWithParent();
+    this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent();
+  }
 
-Entity.prototype.getTask = function () {
-  // [START basic_entity]
-  var task = {
-    category: 'Personal',
-    done: false,
-    priority: 4,
-    description: 'Learn Cloud Datastore'
-  };
-  // [END basic_entity]
-
-  return task;
-};
+  getIncompleteKey () {
+    // [START incomplete_key]
+    const taskKey = datastore.key('Task');
+    // [END incomplete_key]
 
-Entity.prototype.testIncompleteKey = function (callback) {
-  this.datastore.save({
-    key: this.incompleteKey,
-    data: {}
-  }, callback);
-};
+    return taskKey;
+  }
 
-Entity.prototype.testNamedKey = function (callback) {
-  this.datastore.save({
-    key: this.namedKey,
-    data: {}
-  }, callback);
-};
+  getNamedKey () {
+    // [START named_key]
+    const taskKey = datastore.key([
+      'Task',
+      'sampleTask'
+    ]);
+    // [END named_key]
 
-Entity.prototype.testKeyWithParent = function (callback) {
-  this.datastore.save({
-    key: this.keyWithParent,
-    data: {}
-  }, callback);
-};
+    return taskKey;
+  }
 
-Entity.prototype.testKeyWithMultiLevelParent = function (callback) {
-  this.datastore.save({
-    key: this.keyWithMultiLevelParent,
-    data: {}
-  }, callback);
-};
+  getKeyWithParent () {
+    // [START key_with_parent]
+    const taskKey = datastore.key([
+      'TaskList',
+      'default',
+      'Task',
+      'sampleTask'
+    ]);
+    // [END key_with_parent]
+
+    return taskKey;
+  }
 
-Entity.prototype.testEntityWithParent = function (callback) {
-  var taskKey = this.keyWithParent;
+  getKeyWithMultiLevelParent () {
+    // [START key_with_multilevel_parent]
+    const taskKey = datastore.key([
+      'User',
+      'alice',
+      'TaskList',
+      'default',
+      'Task',
+      'sampleTask'
+    ]);
+    // [END key_with_multilevel_parent]
+
+    return taskKey;
+  }
 
-  // [START entity_with_parent]
-  var task = {
-    key: taskKey,
-    data: {
+  getTask () {
+    // [START basic_entity]
+    const task = {
       category: 'Personal',
       done: false,
       priority: 4,
       description: 'Learn Cloud Datastore'
-    }
-  };
-  // [END entity_with_parent]
-
-  this.datastore.save(task, callback);
-};
-
-Entity.prototype.testProperties = function (callback) {
-  // jshint camelcase:false
-  // [START properties]
-  var task = [
-    {
-      name: 'category',
-      value: 'Personal'
-    },
-    {
-      name: 'created',
-      value: new Date()
-    },
-    {
-      name: 'done',
-      value: false
-    },
-    {
-      name: 'priority',
-      value: 4
-    },
-    {
-      name: 'percent_complete',
-      value: 10.0
-    },
-    {
-      name: 'description',
-      value: 'Learn Cloud Datastore',
-      excludeFromIndexes: true
-    }
-  ];
-  // [END properties]
-
-  this.datastore.save({
-    key: this.incompleteKey,
-    data: task
-  }, callback);
-};
-
-Entity.prototype.testArrayValue = function (callback) {
-  // [START array_value]
-  var task = {
-    tags: [
-      'fun',
-      'programming'
-    ],
-    collaborators: [
-      'alice',
-      'bob'
-    ]
-  };
-  // [END array_value]
-
-  this.datastore.save({
-    key: this.incompleteKey,
-    data: task
-  }, callback);
-};
-
-Entity.prototype.testBasicEntity = function (callback) {
-  this.datastore.save({
-    key: this.getIncompleteKey(),
-    data: this.getTask()
-  }, callback);
-};
+    };
+    // [END basic_entity]
 
-Entity.prototype.testUpsert = function (callback) {
-  var taskKey = this.getIncompleteKey();
-  var task = this.getTask();
-
-  // [START upsert]
-  datastore.upsert({
-    key: taskKey,
-    data: task
-  }, function (err) {
-    if (!err) {
-      // Task inserted successfully.
-    }
-  });
-  // [END upsert]
+    return task;
+  }
 
-  this.datastore.upsert({
-    key: this.datastore.key(['Task', 1]),
-    data: task
-  }, callback);
-};
+  testIncompleteKey () {
+    return this.datastore.save({
+      key: this.incompleteKey,
+      data: {}
+    });
+  }
 
-Entity.prototype.testInsert = function (callback) {
-  var taskKey = this.getIncompleteKey();
-  var task = this.getTask();
-
-  // [START insert]
-  datastore.insert({
-    key: taskKey,
-    data: task
-  }, function (err) {
-    if (!err) {
-      // Task inserted successfully.
-    }
-  });
-  // [END insert]
-
-  this.datastore.save({
-    method: 'insert',
-    key: taskKey,
-    data: task
-  }, callback);
-};
+  testNamedKey () {
+    return this.datastore.save({
+      key: this.namedKey,
+      data: {}
+    });
+  }
 
-Entity.prototype.testLookup = function (callback) {
-  var self = this;
-  var taskKey = this.getIncompleteKey();
-
-  // jshint unused:false
-  // [START lookup]
-  datastore.get(taskKey, function (err, entity) {
-    if (!err) {
-      // Task found.
-
-      // entity.data = {
-      //   category: 'Personal',
-      //   done: false,
-      //   priority: 4,
-      //   description: 'Learn Cloud Datastore'
-      // };
-    }
-  });
-  // [END lookup]
-
-  this.datastore.save({
-    method: 'insert',
-    key: taskKey,
-    data: {}
-  }, function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
+  testKeyWithParent () {
+    return this.datastore.save({
+      key: this.keyWithParent,
+      data: {}
+    });
+  }
 
-    self.datastore.get(taskKey, callback);
-  });
-};
+  testKeyWithMultiLevelParent () {
+    return this.datastore.save({
+      key: this.keyWithMultiLevelParent,
+      data: {}
+    });
+  }
 
-Entity.prototype.testUpdate = function (callback) {
-  var self = this;
-  var taskKey = this.getIncompleteKey();
-  var task = this.getTask();
-
-  // [START update]
-  datastore.update({
-    key: taskKey,
-    data: task
-  }, function (err) {
-    if (!err) {
-      // Task updated successfully.
-    }
-  });
-  // [END update]
-
-  this.datastore.save({
-    method: 'insert',
-    key: taskKey,
-    data: {}
-  }, function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
+  testEntityWithParent () {
+    const taskKey = this.keyWithParent;
 
-    self.datastore.update({
+    // [START entity_with_parent]
+    const task = {
       key: taskKey,
-      data: task
-    }, callback);
-  });
-};
-
-Entity.prototype.testDelete = function (callback) {
-  var self = this;
-  var taskKey = this.getIncompleteKey();
-
-  // [START delete]
-  datastore.delete(taskKey, function (err) {
-    if (!err) {
-      // Task deleted successfully.
-    }
-  });
-  // [END delete]
-
-  this.datastore.save({
-    method: 'insert',
-    key: taskKey,
-    data: {}
-  }, function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
-
-    self.datastore.delete(taskKey, callback);
-  });
-};
-
-Entity.prototype.testBatchUpsert = function (callback) {
-  var taskKey1 = this.datastore.key(['Task', 1]);
-  var taskKey2 = this.datastore.key(['Task', 2]);
-
-  var task1 = {
-    category: 'Personal',
-    done: false,
-    priority: 4,
-    description: 'Learn Cloud Datastore'
-  };
-
-  var task2 = {
-    category: 'Work',
-    done: false,
-    priority: 8,
-    description: 'Integrate Cloud Datastore'
-  };
-
-  // [START batch_upsert]
-  datastore.upsert([
-    {
-      key: taskKey1,
-      data: task1
-    },
-    {
-      key: taskKey2,
-      data: task2
-    }
-  ], function (err) {
-    if (!err) {
-      // Tasks inserted successfully.
-    }
-  });
-  // [END batch_upsert]
-
-  this.datastore.upsert([
-    {
-      key: taskKey1,
-      data: task1
-    },
-    {
-      key: taskKey2,
-      data: task2
-    }
-  ], callback);
-};
-
-Entity.prototype.testBatchLookup = function (callback) {
-  var taskKey1 = this.datastore.key(['Task', 1]);
-  var taskKey2 = this.datastore.key(['Task', 2]);
-
-  // jshint unused:false
-  // [START batch_lookup]
-  datastore.get([
-    taskKey1,
-    taskKey2
-  ], function (err, tasks) {
-    if (!err) {
-      // Tasks retrieved successfully.
-    }
-  });
-  // [END batch_lookup]
-
-  this.datastore.get([
-    taskKey1,
-    taskKey2
-  ], callback);
-};
-
-Entity.prototype.testBatchDelete = function (callback) {
-  var taskKey1 = this.datastore.key(['Task', 1]);
-  var taskKey2 = this.datastore.key(['Task', 2]);
-
-  // [START batch_delete]
-  datastore.delete([
-    taskKey1,
-    taskKey2
-  ], function (err) {
-    if (!err) {
-      // Tasks deleted successfully.
-    }
-  });
-  // [END batch_delete]
-
-  this.datastore.delete([
-    taskKey1,
-    taskKey2
-  ], callback);
-};
-
-function Index (projectId) {
-  var options = {
-    projectId: projectId
-  };
-
-  this.datastore = Datastore(options);
-}
-
-Index.prototype.testUnindexedPropertyQuery = function (callback) {
-  var datastore = this.datastore;
+      data: {
+        category: 'Personal',
+        done: false,
+        priority: 4,
+        description: 'Learn Cloud Datastore'
+      }
+    };
+    // [END entity_with_parent]
 
-  // [START unindexed_property_query]
-  var query = datastore.createQuery('Task')
-    .filter('description', '=', 'A task description.');
-  // [END unindexed_property_query]
+    return this.datastore.save(task);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testProperties () {
+    // [START properties]
+    const task = [
+      {
+        name: 'category',
+        value: 'Personal'
+      },
+      {
+        name: 'created',
+        value: new Date()
+      },
+      {
+        name: 'done',
+        value: false
+      },
+      {
+        name: 'priority',
+        value: 4
+      },
+      {
+        name: 'percent_complete',
+        value: 10.0
+      },
+      {
+        name: 'description',
+        value: 'Learn Cloud Datastore',
+        excludeFromIndexes: true
+      }
+    ];
+    // [END properties]
 
-Index.prototype.testExplodingProperties = function (callback) {
-  var original = datastore.key;
-  datastore.key = this.datastore.key;
+    return this.datastore.save({
+      key: this.incompleteKey,
+      data: task
+    });
+  }
 
-  // [START exploding_properties]
-  var task = {
-    method: 'insert',
-    key: datastore.key('Task'),
-    data: {
+  testArrayValue () {
+    // [START array_value]
+    const task = {
       tags: [
         'fun',
-        'programming',
-        'learn'
+        'programming'
       ],
       collaborators: [
         'alice',
-        'bob',
-        'charlie'
-      ],
-      created: new Date()
-    }
-  };
-  // [END exploding_properties]
-
-  datastore.key = original;
-
-  this.datastore.save(task, callback);
-};
+        'bob'
+      ]
+    };
+    // [END array_value]
 
-function Metadata (projectId) {
-  var options = {
-    projectId: projectId
-  };
+    return this.datastore.save({
+      key: this.incompleteKey,
+      data: task
+    });
+  }
 
-  this.datastore = Datastore(options);
-}
+  testBasicEntity () {
+    return this.datastore.save({
+      key: this.getIncompleteKey(),
+      data: this.getTask()
+    });
+  }
 
-Metadata.prototype.testNamespaceRunQuery = function (callback) {
-  var self = this;
+  testUpsert () {
+    const taskKey = this.getIncompleteKey();
+    const task = this.getTask();
 
-  datastore.createQuery = this.datastore.createQuery;
-  datastore.key = this.datastore.key;
+    // [START upsert]
+    const entity = {
+      key: taskKey,
+      data: task
+    };
 
-  var startNamespace = 'Animals';
-  var endNamespace = 'Zoos';
+    datastore.upsert(entity)
+      .then(() => {
+        // Task inserted successfully.
+      });
+    // [END upsert]
 
-  this.datastore.save([
-    {
-      key: datastore.key({
-        namespace: 'Animals',
-        path: ['Ant', 1]
-      }),
-      data: {}
-    }
-  ], function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
+    return this.datastore.upsert({
+      key: this.datastore.key(['Task', 1]),
+      data: task
+    });
+  }
 
-    // jshint unused:false
-    // [START namespace_run_query]
-    var query = datastore.createQuery('__namespace__')
-      .select('__key__')
-      .filter('__key__', '>=', datastore.key(['__namespace__', startNamespace]))
-      .filter('__key__', '<', datastore.key(['__namespace__', endNamespace]));
+  testInsert () {
+    const taskKey = this.getIncompleteKey();
+    const task = this.getTask();
 
-    datastore.runQuery(query, function (err, entities) {
-      if (err) {
-        // An error occurred while running the query.
-        return;
-      }
+    // [START insert]
+    const entity = {
+      key: taskKey,
+      data: task
+    };
 
-      var namespaces = entities.map(function (entity) {
-        return entity.key.path.pop();
+    datastore.insert(entity)
+      .then(() => {
+        // Task inserted successfully.
       });
-      console.log('namespaces', namespaces);
-    });
-    // [END namespace_run_query]
+    // [END insert]
 
-    self.datastore.runQuery(query, callback);
-  });
-};
+    return this.datastore.save({
+      method: 'insert',
+      key: taskKey,
+      data: task
+    });
+  }
 
-Metadata.prototype.testKindRunQuery = function (callback) {
-  datastore.createQuery = this.datastore.createQuery;
+  testLookup () {
+    const taskKey = this.getIncompleteKey();
+
+    // [START lookup]
+    datastore.get(taskKey)
+      .then((results) => {
+        // Task found.
+        const entity = results[0];
+
+        // entity = {
+        //   category: 'Personal',
+        //   done: false,
+        //   priority: 4,
+        //   description: 'Learn Cloud Datastore'
+        // };
+        console.log(entity);
+      });
+    // [END lookup]
 
-  // jshint unused:false
-  // [START kind_run_query]
-  var query = datastore.createQuery('__kind__')
-    .select('__key__');
+    return this.datastore.save({
+      method: 'insert',
+      key: taskKey,
+      data: {}
+    }).then(() => this.datastore.get(taskKey));
+  }
 
-  datastore.runQuery(query, function (err, entities) {
-    if (err) {
-      // An error occurred while running the query.
-      return;
-    }
+  testUpdate () {
+    const taskKey = this.getIncompleteKey();
+    const task = this.getTask();
 
-    var kinds = entities.map(function (entity) {
-      return entity.key.path.pop();
-    });
-    console.log('kinds', kinds);
-  });
-  // [END kind_run_query]
+    // [START update]
+    const entity = {
+      key: taskKey,
+      data: task
+    };
 
-  this.datastore.runQuery(query, callback);
-};
+    datastore.update(entity)
+      .then(() => {
+        // Task updated successfully.
+      });
+    // [END update]
 
-Metadata.prototype.testPropertyRunQuery = function (callback) {
-  datastore.createQuery = this.datastore.createQuery;
+    return this.datastore.save({
+      method: 'insert',
+      key: taskKey,
+      data: {}
+    }).then(() => this.datastore.update({ key: taskKey, data: task }));
+  }
 
-  // [START property_run_query]
-  var query = datastore.createQuery('__property__')
-    .select('__key__');
+  testDelete () {
+    const taskKey = this.getIncompleteKey();
 
-  datastore.runQuery(query, function (err, entities) {
-    if (err) {
-      // An error occurred while running the query.
-      return;
-    }
+    // [START delete]
+    datastore.delete(taskKey)
+      .then(() => {
+        // Task deleted successfully.
+      });
+    // [END delete]
 
-    var propertiesByKind = {};
+    return this.datastore.save({
+      method: 'insert',
+      key: taskKey,
+      data: {}
+    }).then(() => this.datastore.delete(taskKey));
+  }
 
-    entities.forEach(function (entity) {
-      var kind = entity.key.path[1];
-      var propertyName = entity.key.path[3];
+  testBatchUpsert () {
+    const taskKey1 = this.datastore.key(['Task', 1]);
+    const taskKey2 = this.datastore.key(['Task', 2]);
 
-      propertiesByKind[kind] = propertiesByKind[kind] || [];
-      propertiesByKind[kind].push(propertyName);
-    });
-  });
-  // [END property_run_query]
+    const task1 = {
+      category: 'Personal',
+      done: false,
+      priority: 4,
+      description: 'Learn Cloud Datastore'
+    };
 
-  this.datastore.runQuery(query, callback);
-};
+    const task2 = {
+      category: 'Work',
+      done: false,
+      priority: 8,
+      description: 'Integrate Cloud Datastore'
+    };
 
-Metadata.prototype.testPropertyByKindRunQuery = function (callback) {
-  var datastore = this.datastore;
+    // [START batch_upsert]
+    const entities = [
+      {
+        key: taskKey1,
+        data: task1
+      },
+      {
+        key: taskKey2,
+        data: task2
+      }
+    ];
 
-  // jshint camelcase:false
-  // [START property_by_kind_run_query]
-  var ancestorKey = datastore.key(['__kind__', 'Task']);
+    datastore.upsert(entities)
+      .then(() => {
+        // Tasks inserted successfully.
+      });
+    // [END batch_upsert]
+
+    return this.datastore.upsert([
+      {
+        key: taskKey1,
+        data: task1
+      },
+      {
+        key: taskKey2,
+        data: task2
+      }
+    ]);
+  }
 
-  var query = datastore.createQuery('__property__')
-    .hasAncestor(ancestorKey);
+  testBatchLookup () {
+    const taskKey1 = this.datastore.key(['Task', 1]);
+    const taskKey2 = this.datastore.key(['Task', 2]);
 
-  datastore.runQuery(query, function (err, entities) {
-    if (err) {
-      // An error occurred while running the query.
-      return;
-    }
+    // [START batch_lookup]
+    const keys = [taskKey1, taskKey2];
 
-    var representationsByProperty = {};
+    datastore.get(keys)
+      .then((results) => {
+        // Tasks retrieved successfully.
+        const tasks = results[0];
 
-    entities.forEach(function (entity) {
-      var propertyName = entity.key.path.pop();
-      var propertyType = entity.data.property_representation;
+        console.log(tasks);
+      });
+    // [END batch_lookup]
 
-      representationsByProperty[propertyName] = propertyType;
-    });
-  });
-  // [END property_by_kind_run_query]
+    return this.datastore.get([taskKey1, taskKey2]);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testBatchDelete () {
+    const taskKey1 = this.datastore.key(['Task', 1]);
+    const taskKey2 = this.datastore.key(['Task', 2]);
 
-function Query (projectId) {
-  var options = {
-    projectId: projectId
-  };
+    // [START batch_delete]
+    const keys = [taskKey1, taskKey2];
 
-  this.datastore = Datastore(options);
+    datastore.delete(keys)
+      .then(() => {
+        // Tasks deleted successfully.
+      });
+    // [END batch_delete]
 
-  this.basicQuery = this.getBasicQuery();
-  this.projectionQuery = this.getProjectionQuery();
-  this.ancestorQuery = this.getAncestorQuery();
+    return this.datastore.delete([taskKey1, taskKey2]);
+  }
 }
 
-Query.prototype.getBasicQuery = function () {
-  var datastore = this.datastore;
+class Index extends TestHelper {
+  testUnindexedPropertyQuery () {
+    const datastore = this.datastore;
 
-  // [START basic_query]
-  var query = datastore.createQuery('Task')
-    .filter('done', '=', false)
-    .filter('priority', '>=', 4)
-    .order('priority', {
-      descending: true
-    });
-  // [END basic_query]
+    // [START unindexed_property_query]
+    const query = datastore.createQuery('Task')
+      .filter('description', '=', 'A task description.');
+    // [END unindexed_property_query]
 
-  return query;
-};
+    return this.datastore.runQuery(query);
+  }
+
+  testExplodingProperties () {
+    const original = datastore.key;
+    datastore.key = this.datastore.key;
 
-Query.prototype.getProjectionQuery = function () {
-  var datastore = this.datastore;
+    // [START exploding_properties]
+    const task = {
+      method: 'insert',
+      key: datastore.key('Task'),
+      data: {
+        tags: [
+          'fun',
+          'programming',
+          'learn'
+        ],
+        collaborators: [
+          'alice',
+          'bob',
+          'charlie'
+        ],
+        created: new Date()
+      }
+    };
+    // [END exploding_properties]
 
-  // [START projection_query]
-  var query = datastore.createQuery('Task')
-    .select(['priority', 'percent_complete']);
-  // [END projection_query]
+    datastore.key = original;
 
-  return query;
-};
+    return this.datastore.save(task)
+      .then(() => {
+        assert(task.key);
+        assert(task.key.id);
+      });
+  }
+}
 
-Query.prototype.getAncestorQuery = function () {
-  var datastore = this.datastore;
+class Metadata extends TestHelper {
+  testNamespaceRunQuery () {
+    const datastore = this.datastore;
 
-  // [START ancestor_query]
-  var ancestorKey = datastore.key(['TaskList', 'default']);
+    const startNamespace = 'Animals';
+    const endNamespace = 'Zoos';
 
-  var query = datastore.createQuery('Task')
-    .hasAncestor(ancestorKey);
-  // [END ancestor_query]
+    return datastore.save({
+      key: datastore.key({
+        namespace: 'Animals',
+        path: ['Ant', 1]
+      }),
+      data: {}
+    })
+      .then(() => {
+        // [START namespace_run_query]
+        function runNamespaceQuery (startNamespace, endNamespace) {
+          const startKey = datastore.key(['__namespace__', startNamespace]);
+          const endKey = datastore.key(['__namespace__', endNamespace]);
+
+          const query = datastore.createQuery('__namespace__')
+            .select('__key__')
+            .filter('__key__', '>=', startKey)
+            .filter('__key__', '<', endKey);
+
+          return datastore.runQuery(query)
+            .then((results) => {
+              const entities = results[0];
+              const namespaces = entities.map((entity) => entity[datastore.KEY].name);
+
+              console.log('Namespaces:');
+              namespaces.forEach((namespace) => console.log(namespace));
+
+              return namespaces;
+            });
+        }
+        // [END namespace_run_query]
 
-  return query;
-};
+        return runNamespaceQuery(startNamespace, endNamespace);
+      })
+      .then((namespaces) => {
+        assert.deepEqual(namespaces, ['Animals']);
+      });
+  }
 
-Query.prototype.testRunQuery = function (callback) {
-  var query = this.basicQuery;
+  testKindRunQuery () {
+    const datastore = this.datastore;
 
-  // jshint unused:false
-  // [START run_query]
-  datastore.runQuery(query, function (err, tasks) {
-    if (!err) {
-      // Task entities found.
-    }
-  });
-  // [END run_query]
+    // [START kind_run_query]
+    function runKindQuery () {
+      const query = datastore.createQuery('__kind__')
+        .select('__key__');
 
-  this.datastore.runQuery(query, callback);
-};
+      return datastore.runQuery(query)
+        .then((results) => {
+          const entities = results[0];
+          const kinds = entities.map((entity) => entity[datastore.KEY].name);
 
-Query.prototype.testPropertyFilter = function (callback) {
-  var datastore = this.datastore;
+          console.log('Kinds:');
+          kinds.forEach((kind) => console.log(kind));
 
-  // [START property_filter]
-  var query = datastore.createQuery('Task')
-    .filter('done', '=', false);
-  // [END property_filter]
+          return kinds;
+        });
+    }
+    // [END kind_run_query]
 
-  this.datastore.runQuery(query, callback);
-};
+    return runKindQuery()
+      .then((kinds) => {
+        assert.equal(kinds.includes('Account'), true);
+      });
+  }
 
-Query.prototype.testCompositeFilter = function (callback) {
-  var datastore = this.datastore;
+  testPropertyRunQuery () {
+    const datastore = this.datastore;
 
-  // [START composite_filter]
-  var query = datastore.createQuery('Task')
-    .filter('done', '=', false)
-    .filter('priority', '=', 4);
-  // [END composite_filter]
+    // [START property_run_query]
+    function runPropertyQuery () {
+      const query = datastore.createQuery('__property__')
+        .select('__key__');
 
-  this.datastore.runQuery(query, callback);
-};
+      return datastore.runQuery(query)
+        .then((results) => {
+          const entities = results[0];
+          const propertiesByKind = {};
 
-Query.prototype.testKeyFilter = function (callback) {
-  var datastore = this.datastore;
+          entities.forEach((entity) => {
+            const key = entity[datastore.KEY];
+            const kind = key.path[1];
+            const property = key.path[3];
 
-  // [START key_filter]
-  var query = datastore.createQuery('Task')
-    .filter('__key__', '>', datastore.key(['Task', 'someTask']));
-  // [END key_filter]
+            propertiesByKind[kind] = propertiesByKind[kind] || [];
+            propertiesByKind[kind].push(property);
+          });
 
-  this.datastore.runQuery(query, callback);
-};
+          console.log('Properties by Kind:');
+          for (let key in propertiesByKind) {
+            console.log(key, propertiesByKind[key]);
+          }
 
-Query.prototype.testAscendingSort = function (callback) {
-  var datastore = this.datastore;
+          return propertiesByKind;
+        });
+    }
+    // [END property_run_query]
 
-  // [START ascending_sort]
-  var query = datastore.createQuery('Task')
-    .order('created');
-  // [END ascending_sort]
+    return runPropertyQuery()
+      .then((propertiesByKind) => {
+        assert.deepEqual(propertiesByKind.Account, ['balance']);
+      });
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testPropertyByKindRunQuery () {
+    const datastore = this.datastore;
 
-Query.prototype.testDescendingSort = function (callback) {
-  var datastore = this.datastore;
+    // [START property_by_kind_run_query]
+    function runPropertyByKindQuery () {
+      const ancestorKey = datastore.key(['__kind__', 'Account']);
 
-  // [START descending_sort]
-  var query = datastore.createQuery('Task')
-    .order('created', {
-      descending: true
-    });
-  // [END descending_sort]
+      const query = datastore.createQuery('__property__')
+        .hasAncestor(ancestorKey);
 
-  this.datastore.runQuery(query, callback);
-};
+      return datastore.runQuery(query)
+        .then((results) => {
+          const entities = results[0];
 
-Query.prototype.testMultiSort = function (callback) {
-  var datastore = this.datastore;
+          const representationsByProperty = {};
 
-  // [START multi_sort]
-  var query = datastore.createQuery('Task')
-    .order('priority', {
-      descending: true
-    })
-    .order('created');
-  // [END multi_sort]
+          entities.forEach((entity) => {
+            const key = entity[datastore.KEY];
+            const propertyName = key.name;
+            const propertyType = entity.property_representation;
 
-  this.datastore.runQuery(query, callback);
-};
+            representationsByProperty[propertyName] = propertyType;
+          });
 
-Query.prototype.testKindlessQuery = function (callback) {
-  var datastore = this.datastore;
-  var lastSeenKey = this.datastore.key(['Task', Date.now()]);
+          console.log('Task property representations:');
+          for (let key in representationsByProperty) {
+            console.log(key, representationsByProperty[key]);
+          }
 
-  // [START kindless_query]
-  var query = datastore.createQuery()
-    .filter('__key__', '>', lastSeenKey)
-    .limit(1);
-  // [END kindless_query]
+          return representationsByProperty;
+        });
+    }
+    // [END property_by_kind_run_query]
 
-  this.datastore.runQuery(query, callback);
-};
+    return runPropertyByKindQuery()
+      .then((propertiesByKind) => {
+        assert.deepEqual(propertiesByKind, {
+          balance: ['INT64']
+        });
+      });
+  }
+}
 
-Query.prototype.testRunQueryProjection = function (callback) {
-  var self = this;
-  var query = this.projectionQuery;
+class Query extends TestHelper {
+  constructor (projectId) {
+    super(projectId);
 
-  // Overwrite the mock to actually run the query.
-  datastore.runQuery = function (query, queryCallback) {
-    // Restore the mock.
-    datastore.runQuery = function () {};
+    this.basicQuery = this.getBasicQuery();
+    this.projectionQuery = this.getProjectionQuery();
+    this.ancestorQuery = this.getAncestorQuery();
+  }
 
-    self.datastore.runQuery(query, function (err) {
-      if (err) {
-        return callback(err);
-      }
+  getBasicQuery () {
+    const datastore = this.datastore;
 
-      queryCallback.apply(null, arguments);
+    // [START basic_query]
+    const query = datastore.createQuery('Task')
+      .filter('done', '=', false)
+      .filter('priority', '>=', 4)
+      .order('priority', {
+        descending: true
+      });
+    // [END basic_query]
 
-      if (priorities.length === 0 || percentCompletes.length === 0) {
-        callback(new Error('Projection lists did not build up.'));
-      } else {
-        callback();
-      }
-    });
-  };
+    return query;
+  }
 
-  // jshint unused:false, camelcase:false
-  // [START run_query_projection]
-  var priorities = [];
-  var percentCompletes = [];
+  getProjectionQuery () {
+    const datastore = this.datastore;
 
-  datastore.runQuery(query, function (err, tasks) {
-    if (err) {
-      // An error occurred while running the query.
-      return;
-    }
+    // [START projection_query]
+    const query = datastore.createQuery('Task')
+      .select(['priority', 'percent_complete']);
+    // [END projection_query]
 
-    tasks.forEach(function (task) {
-      priorities.push(task.data.priority);
-      percentCompletes.push(task.data.percent_complete);
-    });
-  });
-  // [END run_query_projection]
-};
+    return query;
+  }
 
-Query.prototype.testKeysOnlyQuery = function (callback) {
-  var datastore = this.datastore;
+  getAncestorQuery () {
+    const datastore = this.datastore;
 
-  // [START keys_only_query]
-  var query = datastore.createQuery()
-    .select('__key__')
-    .limit(1);
-  // [END keys_only_query]
+    // [START ancestor_query]
+    const ancestorKey = datastore.key(['TaskList', 'default']);
 
-  this.datastore.runQuery(query, callback);
-};
+    const query = datastore.createQuery('Task')
+      .hasAncestor(ancestorKey);
+    // [END ancestor_query]
 
-Query.prototype.testDistinctQuery = function (callback) {
-  var datastore = this.datastore;
+    return query;
+  }
 
-  // [START distinct_query]
-  var query = datastore.createQuery('Task')
-    .groupBy(['category', 'priority'])
-    .order('category')
-    .order('priority');
-  // [END distinct_query]
+  testRunQuery () {
+    const query = this.basicQuery;
 
-  this.datastore.runQuery(query, callback);
-};
+    // [START run_query]
+    datastore.runQuery(query)
+      .then((results) => {
+        // Task entities found.
+        const tasks = results[0];
 
-Query.prototype.testDistinctOnQuery = function (callback) {
-  var datastore = this.datastore;
+        console.log('Tasks:');
+        tasks.forEach((task) => console.log(task));
+      });
+    // [END run_query]
 
-  // [START distinct_on_query]
-  var query = datastore.createQuery('Task')
-    .groupBy('category')
-    .order('category')
-    .order('priority');
-  // [END distinct_on_query]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testPropertyFilter () {
+    const datastore = this.datastore;
 
-Query.prototype.testArrayValueInequalityRange = function (callback) {
-  var datastore = this.datastore;
+    // [START property_filter]
+    const query = datastore.createQuery('Task')
+      .filter('done', '=', false);
+    // [END property_filter]
 
-  // [START array_value_inequality_range]
-  var query = datastore.createQuery('Task')
-    .filter('tag', '>', 'learn')
-    .filter('tag', '<', 'math');
-  // [END array_value_inequality_range]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testCompositeFilter () {
+    const datastore = this.datastore;
 
-Query.prototype.testArrayValueEquality = function (callback) {
-  var datastore = this.datastore;
+    // [START composite_filter]
+    const query = datastore.createQuery('Task')
+      .filter('done', '=', false)
+      .filter('priority', '=', 4);
+    // [END composite_filter]
 
-  // [START array_value_equality]
-  var query = datastore.createQuery('Task')
-    .filter('tag', '=', 'fun')
-    .filter('tag', '=', 'programming');
-  // [END array_value_equality]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testKeyFilter () {
+    const datastore = this.datastore;
 
-Query.prototype.testInequalityRange = function (callback) {
-  var datastore = this.datastore;
+    // [START key_filter]
+    const query = datastore.createQuery('Task')
+      .filter('__key__', '>', datastore.key(['Task', 'someTask']));
+    // [END key_filter]
 
-  // [START inequality_range]
-  var query = datastore.createQuery('Task')
-    .filter('created', '>', new Date('1990-01-01T00:00:00z'))
-    .filter('created', '<', new Date('2000-12-31T23:59:59z'));
-  // [END inequality_range]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testAscendingSort () {
+    const datastore = this.datastore;
 
-Query.prototype.testInequalityInvalid = function (callback) {
-  var datastore = this.datastore;
+    // [START ascending_sort]
+    const query = datastore.createQuery('Task')
+      .order('created');
+    // [END ascending_sort]
 
-  // [START inequality_invalid]
-  var query = datastore.createQuery('Task')
-    .filter('priority', '>', 3)
-    .filter('created', '>', new Date('1990-01-01T00:00:00z'));
-  // [END inequality_invalid]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testDescendingSort () {
+    const datastore = this.datastore;
 
-Query.prototype.testEqualAndInequalityRange = function (callback) {
-  var datastore = this.datastore;
+    // [START descending_sort]
+    const query = datastore.createQuery('Task')
+      .order('created', {
+        descending: true
+      });
+    // [END descending_sort]
 
-  // [START equal_and_inequality_range]
-  var query = datastore.createQuery('Task')
-    .filter('priority', '=', 4)
-    .filter('done', '=', false)
-    .filter('created', '>', new Date('1990-01-01T00:00:00z'))
-    .filter('created', '<', new Date('2000-12-31T23:59:59z'));
-  // [END equal_and_inequality_range]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testMultiSort () {
+    const datastore = this.datastore;
 
-Query.prototype.testInequalitySort = function (callback) {
-  var datastore = this.datastore;
+    // [START multi_sort]
+    const query = datastore.createQuery('Task')
+      .order('priority', {
+        descending: true
+      })
+      .order('created');
+    // [END multi_sort]
 
-  // [START inequality_sort]
-  var query = datastore.createQuery('Task')
-    .filter('priority', '>', 3)
-    .order('priority')
-    .order('created');
-  // [END inequality_sort]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testKindlessQuery () {
+    const datastore = this.datastore;
+    const lastSeenKey = this.datastore.key(['Task', Date.now()]);
 
-Query.prototype.testInequalitySortInvalidNotSame = function (callback) {
-  var datastore = this.datastore;
+    // [START kindless_query]
+    const query = datastore.createQuery()
+      .filter('__key__', '>', lastSeenKey)
+      .limit(1);
+    // [END kindless_query]
 
-  // [START inequality_sort_invalid_not_same]
-  var query = datastore.createQuery('Task')
-    .filter('priority', '>', 3)
-    .order('created');
-  // [END inequality_sort_invalid_not_same]
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testRunQueryProjection () {
+    const datastore = this.datastore;
+    const query = this.projectionQuery;
 
-Query.prototype.testInequalitySortInvalidNotFirst = function (callback) {
-  var datastore = this.datastore;
+    // [START run_query_projection]
+    function runProjectionQuery () {
+      const priorities = [];
+      const percentCompletes = [];
 
-  // [START inequality_sort_invalid_not_first]
-  var query = datastore.createQuery('Task')
-    .filter('priority', '>', 3)
-    .order('created')
-    .order('priority');
-  // [END inequality_sort_invalid_not_first]
+      return datastore.runQuery(query)
+        .then((results) => {
+          const tasks = results[0];
 
-  this.datastore.runQuery(query, callback);
-};
+          tasks.forEach((task) => {
+            priorities.push(task.priority);
+            percentCompletes.push(task.percent_complete);
+          });
 
-Query.prototype.testLimit = function (callback) {
-  var datastore = this.datastore;
+          return {
+            priorities: priorities,
+            percentCompletes: percentCompletes
+          };
+        });
+    }
+    // [END run_query_projection]
 
-  // [START limit]
-  var query = datastore.createQuery('Task')
-    .limit(5);
-  // [END limit]
+    return runProjectionQuery();
+  }
 
-  this.datastore.runQuery(query, callback);
-};
+  testKeysOnlyQuery () {
+    const datastore = this.datastore;
 
-Query.prototype.testCursorPaging = function (callback) {
-  var pageSize = 1;
-  var pageCursor = '';
+    // [START keys_only_query]
+    const query = datastore.createQuery()
+      .select('__key__')
+      .limit(1);
+    // [END keys_only_query]
 
-  datastore.createQuery = this.datastore.createQuery;
+    return this.datastore.runQuery(query);
+  }
 
-  // [START cursor_paging]
-  // By default, gcloud-node will automatically paginate through all of the
-  // results that match a query. However, this sample implements manual
-  // pagination using limits and cursor tokens.
-  var query = datastore.createQuery('Task')
-    .limit(pageSize)
-    .start(pageCursor);
+  testDistinctQuery () {
+    const datastore = this.datastore;
 
-  this.datastore.runQuery(query, function (err, results, info) {
-    if (err) {
-      // An error occurred while running the query.
-      return;
-    }
+    // [START distinct_query]
+    const query = datastore.createQuery('Task')
+      .groupBy(['category', 'priority'])
+      .order('category')
+      .order('priority');
+    // [END distinct_query]
 
-    var nextPageCursor;
+    return this.datastore.runQuery(query);
+  }
 
-    if (info.moreResults !== Datastore.NO_MORE_RESULTS) {
-      // If there are more results to retrieve, the end cursor is
-      // automatically set on `info`. To get this value directly, access
-      // the `endCursor` property.
-      nextPageCursor = info.endCursor;
-    } else {
-      // No more results exist.
-    }
-    console.log('nextPageCursor', nextPageCursor);
-  });
-  // [END cursor_paging]
-
-  delete datastore.createQuery;
-  this.datastore.runQuery(query, function (err, results, info) {
-    if (err) {
-      callback(err);
-      return;
-    }
+  testDistinctOnQuery () {
+    const datastore = this.datastore;
 
-    if (!info || !info.endCursor) {
-      callback(new Error('An `info` with an `endCursor` is not present.'));
-    } else {
-      callback();
-    }
-  });
-};
+    // [START distinct_on_query]
+    const query = datastore.createQuery('Task')
+      .groupBy('category')
+      .order('category')
+      .order('priority');
+    // [END distinct_on_query]
 
-Query.prototype.testEventualConsistentQuery = function () {
-  // [START eventual_consistent_query]
-  // Read consistency cannot be specified in gcloud-node.
-  // [END eventual_consistent_query]
-};
+    return this.datastore.runQuery(query);
+  }
 
-// [START transactional_update]
-function transferFunds (fromKey, toKey, amount, callback) {
-  var transaction = datastore.transaction();
+  testArrayValueInequalityRange () {
+    const datastore = this.datastore;
 
-  transaction.run(function (err) {
-    if (err) {
-      return callback(err);
-    }
+    // [START array_value_inequality_range]
+    const query = datastore.createQuery('Task')
+      .filter('tag', '>', 'learn')
+      .filter('tag', '<', 'math');
+    // [END array_value_inequality_range]
 
-    transaction.get([
-      fromKey,
-      toKey
-    ], function (err, accounts) {
-      if (err) {
-        return transaction.rollback(function (_err) {
-          return callback(_err || err);
-        });
-      }
+    return this.datastore.runQuery(query);
+  }
 
-      accounts[0].data.balance -= amount;
-      accounts[1].data.balance += amount;
+  testArrayValueEquality () {
+    const datastore = this.datastore;
 
-      transaction.save(accounts);
+    // [START array_value_equality]
+    const query = datastore.createQuery('Task')
+      .filter('tag', '=', 'fun')
+      .filter('tag', '=', 'programming');
+    // [END array_value_equality]
 
-      transaction.commit(function (err) {
-        if (err) {
-          return callback(err);
-        }
+    return this.datastore.runQuery(query);
+  }
 
-        // The transaction completed successfully.
-        callback();
-      });
-    });
-  });
-}
-// [END transactional_update]
+  testInequalityRange () {
+    const datastore = this.datastore;
 
-function Transaction (projectId) {
-  var options = {
-    projectId: projectId
-  };
+    // [START inequality_range]
+    const query = datastore.createQuery('Task')
+      .filter('created', '>', new Date('1990-01-01T00:00:00z'))
+      .filter('created', '<', new Date('2000-12-31T23:59:59z'));
+    // [END inequality_range]
 
-  this.datastore = Datastore(options);
+    return this.datastore.runQuery(query);
+  }
 
-  this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]);
-  this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]);
+  testInequalityInvalid () {
+    const datastore = this.datastore;
 
-  this.originalBalance = 100;
-  this.amountToTransfer = 10;
-}
+    // [START inequality_invalid]
+    const query = datastore.createQuery('Task')
+      .filter('priority', '>', 3)
+      .filter('created', '>', new Date('1990-01-01T00:00:00z'));
+    // [END inequality_invalid]
 
-Transaction.prototype.restoreBankAccountBalances = function (config, callback) {
-  var saveArray = config.keys.map(function (key) {
-    return {
-      key: key,
-      data: {
-        balance: config.balance
-      }
-    };
-  });
+    return this.datastore.runQuery(query);
+  }
 
-  this.datastore.save(saveArray, callback);
-};
+  testEqualAndInequalityRange () {
+    const datastore = this.datastore;
 
-Transaction.prototype.testTransactionalUpdate = function (callback) {
-  var self = this;
-
-  var fromKey = this.fromKey;
-  var toKey = this.toKey;
-  var originalBalance = this.originalBalance;
-  var amountToTransfer = this.amountToTransfer;
-
-  this.restoreBankAccountBalances({
-    keys: [fromKey, toKey],
-    balance: originalBalance
-  }, function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
+    // [START equal_and_inequality_range]
+    const query = datastore.createQuery('Task')
+      .filter('priority', '=', 4)
+      .filter('done', '=', false)
+      .filter('created', '>', new Date('1990-01-01T00:00:00z'))
+      .filter('created', '<', new Date('2000-12-31T23:59:59z'));
+    // [END equal_and_inequality_range]
 
-    // Overwrite so the real Datastore instance is used in `transferFunds`.
-    var datastoreMock = datastore;
-    datastore = self.datastore;
+    return this.datastore.runQuery(query);
+  }
 
-    transferFunds(fromKey, toKey, amountToTransfer, function (err) {
-      // Restore `datastore` to the mock API.
-      datastore = datastoreMock;
+  testInequalitySort () {
+    const datastore = this.datastore;
 
-      if (err) {
-        callback(err);
-        return;
-      }
+    // [START inequality_sort]
+    const query = datastore.createQuery('Task')
+      .filter('priority', '>', 3)
+      .order('priority')
+      .order('created');
+    // [END inequality_sort]
 
-      self.datastore.get([
-        fromKey,
-        toKey
-      ], function (err, accounts) {
-        if (err) {
-          callback(err);
-          return;
-        }
+    return this.datastore.runQuery(query);
+  }
 
-        var transactionWasSuccessful =
-          accounts[0].data.balance === originalBalance - amountToTransfer &&
-          accounts[1].data.balance === originalBalance + amountToTransfer;
+  testInequalitySortInvalidNotSame () {
+    const datastore = this.datastore;
 
-        if (!transactionWasSuccessful) {
-          callback(new Error('Accounts were not updated successfully.'));
-        } else {
-          callback();
-        }
-      });
-    });
-  });
-};
+    // [START inequality_sort_invalid_not_same]
+    const query = datastore.createQuery('Task')
+      .filter('priority', '>', 3)
+      .order('created');
+    // [END inequality_sort_invalid_not_same]
 
-Transaction.prototype.testTransactionalRetry = function (callback) {
-  // Overwrite so the real Datastore instance is used in `transferFunds`.
-  var datastoreMock = datastore;
-  datastore = this.datastore;
-
-  var originalCallback = callback;
-  callback = function () {
-    // Restore `datastore` to the mock API.
-    datastore = datastoreMock;
-    originalCallback.apply(null, arguments);
-  };
-
-  var fromKey = this.fromKey;
-  var toKey = this.toKey;
-
-  this.restoreBankAccountBalances({
-    keys: [fromKey, toKey],
-    balance: this.originalBalance
-  }, function (err) {
-    if (err) {
-      callback(err);
-      return;
-    }
+    return this.datastore.runQuery(query);
+  }
 
-    // [START transactional_retry]
-    var async = require('async');
+  testInequalitySortInvalidNotFirst () {
+    const datastore = this.datastore;
 
-    function attemptTransfer (callback) {
-      transferFunds(fromKey, toKey, 10, callback);
-    }
+    // [START inequality_sort_invalid_not_first]
+    const query = datastore.createQuery('Task')
+      .filter('priority', '>', 3)
+      .order('created')
+      .order('priority');
+    // [END inequality_sort_invalid_not_first]
 
-    async.retry(5, attemptTransfer, callback);
-    // [END transactional_retry]
-  });
-};
+    return this.datastore.runQuery(query);
+  }
 
-Transaction.prototype.testTransactionalGetOrCreate = function (callback) {
-  var taskKey = this.datastore.key(['Task', Date.now()]);
+  testLimit () {
+    const datastore = this.datastore;
 
-  // Overwrite so the real Datastore instance is used in `transferFunds`.
-  var datastoreMock = datastore;
-  datastore = this.datastore;
+    // [START limit]
+    const query = datastore.createQuery('Task')
+      .limit(5);
+    // [END limit]
 
-  var originalCallback = callback;
-  callback = function () {
-    // Restore `datastore` to the mock API.
-    datastore = datastoreMock;
-    originalCallback.apply(null, arguments);
-  };
+    return this.datastore.runQuery(query);
+  }
 
-  // [START transactional_get_or_create]
-  function getOrCreate (taskKey, taskData, callback) {
-    var taskEntity = {
-      key: taskKey,
-      data: taskData
-    };
+  testCursorPaging () {
+    const datastore = this.datastore;
+    const pageSize = 1;
 
-    var transaction = datastore.transaction();
+    // [START cursor_paging]
+    // By default, google-cloud-node will automatically paginate through all of
+    // the results that match a query. However, this sample implements manual
+    // pagination using limits and cursor tokens.
+    function runPageQuery (pageCursor) {
+      let query = datastore.createQuery('Task')
+        .limit(pageSize);
 
-    transaction.run(function (err) {
-      if (err) {
-        return callback(err);
+      if (pageCursor) {
+        query = query.start(pageCursor);
       }
 
-      transaction.get(taskKey, function (err, task) {
-        if (err) {
-          // An error occurred while getting the values.
-          return transaction.rollback(function (_err) {
-            return callback(_err || err);
-          });
-        }
+      return datastore.runQuery(query)
+        .then((results) => {
+          const entities = results[0];
+          const info = results[1];
+
+          if (info.moreResults !== Datastore.NO_MORE_RESULTS) {
+            // If there are more results to retrieve, the end cursor is
+            // automatically set on `info`. To get this value directly, access
+            // the `endCursor` property.
+            return runPageQuery(info.endCursor)
+              .then((results) => {
+                // Concatenate entities
+                results[0] = entities.concat(results[0]);
+                return results;
+              });
+          }
 
-        if (task) {
-          // The task entity already exists.
-          transaction.rollback(callback);
-        } else {
-          // Create the task entity.
-          transaction.save(taskEntity);
-          transaction.commit(function (err) {
-            if (err) {
-              return callback(err);
-            }
-            // The transaction completed successfully.
-            callback(null, taskEntity);
-          });
+          return [entities, info];
+        });
+    }
+    // [END cursor_paging]
+
+    return runPageQuery()
+      .then((results) => {
+        const entities = results[0];
+        assert.equal(Array.isArray(entities), true);
+        const info = results[1];
+        if (!info || !info.endCursor) {
+          throw new Error('An `info` with an `endCursor` is not present.');
         }
       });
-    });
   }
-  // [END transactional_get_or_create]
-
-  asyncUtil.series([
-    // Create:
-    testWithCreateBehavior,
-    // Then try to get it:
-    testWithGetBehavior
-  ], callback);
-
-  function testWithCreateBehavior (callback) {
-    getOrCreate(taskKey, {}, function (err, task) {
-      if (err) {
-        callback(err);
-        return;
-      }
 
-      if (!task) {
-        return callback(new Error('Entity was not created successfully.'));
-      }
-      callback();
-    });
+  testEventualConsistentQuery () {
+    // [START eventual_consistent_query]
+    // Read consistency cannot be specified in google-cloud-node.
+    // [END eventual_consistent_query]
   }
+}
 
-  function testWithGetBehavior (callback) {
-    getOrCreate(taskKey, {}, function (err, task) {
-      if (err) {
-        callback(err);
-        return;
-      }
+// [START transactional_update]
+function transferFunds (fromKey, toKey, amount) {
+  const transaction = datastore.transaction();
+
+  return transaction.run()
+    .then(() => Promise.all([transaction.get(fromKey), transaction.get(toKey)]))
+    .then((results) => {
+      const accounts = results
+        .map((result) => result[0]);
+
+      accounts[0].balance -= amount;
+      accounts[1].balance += amount;
+
+      transaction.save([
+        {
+          key: fromKey,
+          data: accounts[0]
+        },
+        {
+          key: toKey,
+          data: accounts[1]
+        }
+      ]);
 
-      if (!task) {
-        return callback(new Error('Entity was not retrieved successfully.'));
-      }
-      callback();
+      return transaction.commit();
+    })
+    .catch(() => transaction.rollback());
+}
+// [END transactional_update]
+
+class Transaction extends TestHelper {
+  constructor (projectId) {
+    super(projectId);
+    this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]);
+    this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]);
+
+    this.originalBalance = 100;
+    this.amountToTransfer = 10;
+  }
+
+  restoreBankAccountBalances (config) {
+    const entities = config.keys.map((key) => {
+      return {
+        key: key,
+        data: {
+          balance: config.balance
+        }
+      };
     });
+
+    return this.datastore.save(entities);
   }
-};
 
-Transaction.prototype.testSingleEntityGroupReadOnly = function (callback) {
-  // Overwrite so the real Datastore instance is used in `transferFunds`.
-  var datastoreMock = datastore;
-  datastore = this.datastore;
+  testTransactionalUpdate () {
+    const fromKey = this.fromKey;
+    const toKey = this.toKey;
+    const originalBalance = this.originalBalance;
+    const amountToTransfer = this.amountToTransfer;
+    const datastoreMock = datastore;
 
-  var originalCallback = callback;
-  callback = function () {
-    // Restore `datastore` to the mock API.
-    datastore = datastoreMock;
-    originalCallback.apply(null, arguments);
-  };
+    // Overwrite so the real Datastore instance is used in `transferFunds`.
+    datastore = this.datastore;
 
-  // [START transactional_single_entity_group_read_only]
-  function getTaskListEntities (callback) {
-    var taskListEntities;
+    return this.restoreBankAccountBalances({
+      keys: [fromKey, toKey],
+      balance: originalBalance
+    })
+      .then(() => transferFunds(fromKey, toKey, amountToTransfer))
+      .then(() => Promise.all([this.datastore.get(fromKey), this.datastore.get(toKey)]))
+      .then((results) => {
+        const accounts = results.map((result) => result[0]);
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+        assert.equal(accounts[0].balance, originalBalance - amountToTransfer);
+        assert.equal(accounts[1].balance, originalBalance + amountToTransfer);
+      })
+      .catch((err) => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+        return Promise.reject(err);
+      });
+  }
 
-    var transaction = datastore.transaction();
+  testTransactionalRetry () {
+    // Overwrite so the real Datastore instance is used in `transferFunds`.
+    const datastoreMock = datastore;
+    datastore = this.datastore;
 
-    transaction.run(function (err) {
-      if (err) {
-        return callback(err);
-      }
+    const fromKey = this.fromKey;
+    const toKey = this.toKey;
 
-      var taskListKey = datastore.key(['TaskList', 'default']);
+    return this.restoreBankAccountBalances({
+      keys: [fromKey, toKey],
+      balance: this.originalBalance
+    })
+      .then(() => {
+        // [START transactional_retry]
+        function transferFundsWithRetry () {
+          const maxTries = 5;
+          let currentAttempt = 1;
+          let delay = 100;
+
+          function tryRequest () {
+            return transferFunds(fromKey, toKey, 10)
+              .catch((err) => {
+                if (currentAttempt <= maxTries) {
+                  // Use exponential backoff
+                  return new Promise((resolve, reject) => {
+                    setTimeout(() => {
+                      currentAttempt++;
+                      delay *= 2;
+                      tryRequest().then(resolve, reject);
+                    }, delay);
+                  });
+                }
+                return Promise.reject(err);
+              });
+          }
 
-      datastore.get(taskListKey, function (err) {
-        if (err) {
-          return transaction.rollback(function (_err) {
-            return callback(_err || err);
-          });
+          return tryRequest(1, 5);
         }
+        // [END transactional_retry]
+        return transferFundsWithRetry();
+      })
+      .then(() => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+      })
+      .catch(() => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+      });
+  }
 
-        var query = datastore.createQuery('Task')
-          .hasAncestor(taskListKey);
+  testTransactionalGetOrCreate () {
+    const taskKey = this.datastore.key(['Task', Date.now()]);
 
-        datastore.runQuery(query, function (err, entities) {
-          if (err) {
-            // An error occurred while running the query.
-            return transaction.rollback(function (_err) {
-              return callback(_err || err);
-            });
+    // Overwrite so the real Datastore instance is used in `transferFunds`.
+    const datastoreMock = datastore;
+    datastore = this.datastore;
+
+    // [START transactional_get_or_create]
+    function getOrCreate (taskKey, taskData) {
+      const taskEntity = {
+        key: taskKey,
+        data: taskData
+      };
+
+      const transaction = datastore.transaction();
+
+      return transaction.run()
+        .then(() => transaction.get(taskKey))
+        .then((results) => {
+          const task = results[0];
+          if (task) {
+            // The task entity already exists.
+            return transaction.rollback();
+          } else {
+            // Create the task entity.
+            transaction.save(taskEntity);
+            return transaction.commit();
           }
-
-          taskListEntities = entities;
-          transaction.commit(function (err) {
-            if (err) {
-              return callback(err);
-            }
-
-            // The transaction completed successfully.
-            callback(null, taskListEntities);
-          });
-        });
+        })
+        .then(() => taskEntity)
+        .catch(() => transaction.rollback());
+    }
+    // [END transactional_get_or_create]
+
+    return getOrCreate(taskKey, {})
+      .then((task) => {
+        assert(task, 'Should have a task.');
+        return getOrCreate(taskKey, {});
+      })
+      .then((task) => {
+        assert(task, 'Should have a task.');
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+      })
+      .catch((err) => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+        return Promise.reject(err);
       });
-    });
   }
-  // [END transactional_single_entity_group_read_only]
 
-  getTaskListEntities(function (err, entities) {
-    if (err) {
-      callback(err);
-      return;
+  testSingleEntityGroupReadOnly () {
+    // Overwrite so the real Datastore instance is used in `transferFunds`.
+    const datastoreMock = datastore;
+    datastore = this.datastore;
+
+    // [START transactional_single_entity_group_read_only]
+    function getTaskListEntities () {
+      let taskList, taskListEntities;
+
+      const transaction = datastore.transaction();
+      const taskListKey = datastore.key(['TaskList', 'default']);
+
+      return transaction.run()
+        .then(() => datastore.get(taskListKey))
+        .then((results) => {
+          taskList = results[0];
+          const query = datastore.createQuery('Task')
+            .hasAncestor(taskListKey);
+          return datastore.runQuery(query);
+        })
+        .then((results) => {
+          taskListEntities = results[0];
+          return transaction.commit();
+        })
+        .then(() => [taskList, taskListEntities])
+        .catch(() => transaction.rollback());
     }
+    // [END transactional_single_entity_group_read_only]
+
+    return getTaskListEntities()
+      .then((results) => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+        assert.equal(results.length, 2);
+        assert.equal(Array.isArray(results[1]), true);
+      }, (err) => {
+        // Restore `datastore` to the mock API.
+        datastore = datastoreMock;
+        return Promise.reject(err);
+      });
+  }
+}
 
-    if (!entities) {
-      return callback(new Error('Entities were not retrieved successfully.'));
-    }
-    callback();
-  });
+module.exports = {
+  Entity: Entity,
+  Index: Index,
+  Metadata: Metadata,
+  Query: Query,
+  Transaction: Transaction
 };
diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js
index 4ed1c93c94a..a9434e48455 100644
--- a/handwritten/nodejs-datastore/samples/error.js
+++ b/handwritten/nodejs-datastore/samples/error.js
@@ -1,34 +1,37 @@
-// Copyright 2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 'use strict';
 
-// By default, the client will authenticate using the service account file
-// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
-// the project specified by the GCLOUD_PROJECT environment variable. See
-// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication
-var Datastore = require('@google-cloud/datastore');
-
-// Instantiate a datastore client
-var datastore = Datastore();
+const Datastore = require('@google-cloud/datastore');
 
 // [START error]
-function runQuery (cb) {
-  var query = datastore.createQuery(['Company']).start('badrequest');
-
-  datastore.runQuery(query, function (err, entities) {
-    // Check for an error
-    if (err) {
+function runQuery () {
+  // Instantiates a client
+  const datastore = Datastore();
+
+  const query = datastore.createQuery(['Company']).start('badrequest');
+
+  return datastore.runQuery(query)
+    .then((results) => {
+      const entities = results[0];
+      console.log('Entities:');
+      entities.forEach((entity) => console.log(entity));
+      return entities;
+    })
+    .catch((err) => {
       console.log(err.errors); // [...]
       console.log(err.code); // 400
       console.log(err.message); // "Bad Request"
@@ -38,21 +41,17 @@ function runQuery (cb) {
 
       // For example, treat permission error like no entities were found
       if (err.code === 403) {
-        return cb(null, []);
+        return [];
       }
 
       // Forward the error to the caller
-      return cb(err);
-    }
-
-    // We're good
-    return cb(null, entities);
-  });
+      return Promise.reject(err);
+    });
 }
 // [END error]
 
 exports.runQuery = runQuery;
 
 if (module === require.main) {
-  runQuery(console.log);
+  exports.runQuery();
 }
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 009de7d1538..837c76e9a5c 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -5,16 +5,11 @@
   "license": "Apache Version 2.0",
   "author": "Google Inc.",
   "scripts": {
-    "test": "mocha -R spec -t 120000 --require intelli-espower-loader ../test/_setup.js test/*.test.js",
-    "system-test": "mocha -R spec -t 120000 --require intelli-espower-loader ../system-test/_setup.js system-test/*.test.js"
+    "test": "cd ..; npm run st -- datastore/system-test/*.test.js"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^0.1.1",
-    "async": "^2.0.1",
-    "yargs": "^5.0.0"
-  },
-  "devDependencies": {
-    "mocha": "^3.0.2"
+    "@google-cloud/datastore": "^0.5.0",
+    "yargs": "^6.4.0"
   },
   "engines": {
     "node": ">=4.3.2"
diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js
index 79255083740..2e07f62457d 100644
--- a/handwritten/nodejs-datastore/samples/quickstart.js
+++ b/handwritten/nodejs-datastore/samples/quickstart.js
@@ -23,7 +23,7 @@ const Datastore = require('@google-cloud/datastore');
 const projectId = 'YOUR_PROJECT_ID';
 
 // Instantiates a client
-const datastoreClient = Datastore({
+const datastore = Datastore({
   projectId: projectId
 });
 
@@ -32,7 +32,7 @@ const kind = 'Task';
 // The name/ID for the new entity
 const name = 'sampletask1';
 // The Cloud Datastore key for the new entity
-const taskKey = datastoreClient.key([kind, name]);
+const taskKey = datastore.key([kind, name]);
 
 // Prepares the new entity
 const task = {
@@ -43,12 +43,8 @@ const task = {
 };
 
 // Saves the entity
-datastoreClient.save(task, (err) => {
-  if (err) {
-    console.error(err);
-    return;
-  }
-
-  console.log(`Saved ${task.key.name}: ${task.data.description}`);
-});
+datastore.save(task)
+  .then(() => {
+    console.log(`Saved ${task.key.name}: ${task.data.description}`);
+  });
 // [END datastore_quickstart]
diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
index 74bb3b143b7..2365dae13cc 100644
--- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
@@ -1,36 +1,40 @@
-// Copyright 2015, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
-'use strict';
-
-var testUtil = require('./util');
-var concepts = require('../concepts');
 
-var transaction;
-var metadata;
-var index;
-var query;
-var entity;
-
-var Transaction = concepts.Transaction;
-var Metadata = concepts.Metadata;
-var Index = concepts.Index;
-var Entity = concepts.Entity;
-var Query = concepts.Query;
+'use strict';
 
-describe('datastore:concepts', function () {
-  before(function () {
-    var projectId = process.env.GCLOUD_PROJECT || 'nodejs-docs-samples';
+const assert = require(`power-assert`);
+const concepts = require(`../concepts`);
+
+let transaction;
+let metadata;
+let index;
+let query;
+let entity;
+
+const Transaction = concepts.Transaction;
+const Metadata = concepts.Metadata;
+const Index = concepts.Index;
+const Entity = concepts.Entity;
+const Query = concepts.Query;
+
+describe(`datastore:concepts`, () => {
+  before(() => {
+    const projectId = process.env.GCLOUD_PROJECT;
+    assert.equal(!!projectId, true, `You must set the GCLOUD_PROJECT env var!`);
     transaction = new Transaction(projectId);
     metadata = new Metadata(projectId);
     index = new Index(projectId);
@@ -38,245 +42,108 @@ describe('datastore:concepts', function () {
     query = new Query(projectId);
   });
 
-  after(function (done) {
-    var datastore = transaction.datastore;
-    var query = datastore.createQuery('Task');
-
-    testUtil.deleteEntities(datastore, query, done);
-  });
-
-  // Transactions
-
-  it('performs a transactional update', function (done) {
-    transaction.testTransactionalUpdate(done);
-  });
-
-  it('performs retries if necessary', function (done) {
-    transaction.testTransactionalRetry(done);
-  });
-
-  it('performs a get or create', function (done) {
-    transaction.testTransactionalGetOrCreate(done);
-  });
-
-  it('gets a snapshot of task list entities', function (done) {
-    transaction.testSingleEntityGroupReadOnly(done);
-  });
-
-  // Metadata
-
-  it('performs a namespace query', function (done) {
-    metadata.testNamespaceRunQuery(done);
-  });
-
-  it('performs a kind query', function (done) {
-    metadata.testKindRunQuery(done);
-  });
-
-  it('performs a property query', function (done) {
-    metadata.testPropertyRunQuery(done);
-  });
-
-  it('performs a property by kind query', function (done) {
-    metadata.testPropertyByKindRunQuery(done);
-  });
-
-  // Indexes
-
-  it(
-    'performs a query with a filter on an unindexed property',
-    function (done) {
-      index.testUnindexedPropertyQuery(done);
-    }
-  );
-
-  it('inserts arrays of data', function (done) {
-    index.testExplodingProperties(done);
-  });
-
-  // Queries
-
-  it('performs a basic query', function (done) {
-    query.testRunQuery(done);
-  });
-
-  it('performs a query with a property filter', function (done) {
-    query.testPropertyFilter(done);
-  });
-
-  it('performs a query with a composite filter', function (done) {
-    query.testCompositeFilter(done);
-  });
-
-  it('performs a query with a key filter', function (done) {
-    query.testKeyFilter(done);
-  });
-
-  it('performs a query with ascending sort', function (done) {
-    query.testAscendingSort(done);
-  });
-
-  it('performs a query with descending sort', function (done) {
-    query.testDescendingSort(done);
-  });
-
-  it('performs a query with multi sort', function (done) {
-    query.testMultiSort(done);
-  });
-
-  it('performs a kindless query', function (done) {
-    query.testKindlessQuery(done);
-  });
-
-  it('performs a projection query', function (done) {
-    entity.testProperties(function (err, tasks) {
-      console.log(err, tasks);
-      assert.ifError(err);
-      setTimeout(function () {
-        query.testRunQueryProjection(done);
-      }, 1000);
+  after(() => {
+    const datastore = transaction.datastore;
+    const query = datastore.createQuery(`Task`).select(`__key__`);
+    return datastore.runQuery(query)
+      .then((results) => datastore.delete(results[0].map((entity) => entity[datastore.KEY])));
+  });
+
+  describe(`Transactions`, () => {
+    it(`performs a transactional update`, () => transaction.testTransactionalUpdate());
+    it(`performs retries if necessary`, () => transaction.testTransactionalRetry());
+    it(`performs a get or create`, () => transaction.testTransactionalGetOrCreate());
+    it(`gets a snapshot of task list entities`, () => transaction.testSingleEntityGroupReadOnly());
+  });
+
+  describe(`Metadata`, () => {
+    it(`performs a namespace query`, () => metadata.testNamespaceRunQuery());
+    it(`performs a kind query`, () => metadata.testKindRunQuery());
+    it(`performs a property query`, () => metadata.testPropertyRunQuery());
+    it(`performs a property by kind query`, () => metadata.testPropertyByKindRunQuery());
+  });
+
+  describe(`Indexes`, () => {
+    it(`performs a query with a filter on an unindexed property`, () => index.testUnindexedPropertyQuery());
+    it(`inserts arrays of data`, () => index.testExplodingProperties());
+  });
+
+  describe(`Queries`, () => {
+    it(`performs a basic query`, () => query.testRunQuery());
+    it(`performs a query with a property filter`, () => query.testPropertyFilter());
+    it(`performs a query with a composite filter`, () => query.testCompositeFilter());
+    it(`performs a query with a key filter`, () => query.testKeyFilter());
+    it(`performs a query with ascending sort`, () => query.testAscendingSort());
+    it(`performs a query with descending sort`, () => query.testDescendingSort());
+    it(`performs a query with multi sort`, () => query.testMultiSort());
+    it(`performs a kindless query`, () => query.testKindlessQuery());
+    it('performs a projection query', () => {
+      return entity.testProperties()
+        .then(() => {
+          return new Promise((resolve, reject) => {
+            setTimeout(function () {
+              query.testRunQueryProjection().then(resolve, reject);
+            }, 1000);
+          });
+        })
+        .then((results) => {
+          assert.deepEqual(results, {
+            priorities: [4],
+            percentCompletes: [10]
+          });
+        });
     });
-  });
-
-  it('performs a keys only query', function (done) {
-    query.testKeysOnlyQuery(done);
-  });
-
-  it('performs a distinct query', function (done) {
-    query.testDistinctQuery(done);
-  });
-
-  it('performs a distinct on query', function (done) {
-    query.testDistinctOnQuery(done);
-  });
-
-  it('performs an array value inequality query', function (done) {
-    query.testArrayValueInequalityRange(done);
-  });
-
-  it('performs an array value equality query', function (done) {
-    query.testArrayValueEquality(done);
-  });
-
-  it('performs an inequality range query', function (done) {
-    query.testInequalityRange(done);
-  });
-
-  it('returns an error from an invalid query', function (done) {
-    query.testInequalityInvalid(function (err) {
-      assert(err);
-      done();
+    it(`performs a keys only query`, () => query.testKeysOnlyQuery());
+    it(`performs a distinct query`, () => query.testDistinctQuery());
+    it(`performs a distinct on query`, () => query.testDistinctOnQuery());
+    it(`performs an array value inequality query`, () => query.testArrayValueInequalityRange());
+    it(`performs an array value equality query`, () => query.testArrayValueEquality());
+    it(`performs an inequality range query`, () => query.testInequalityRange());
+    it(`returns an error from an invalid query`, () => {
+      return query.testInequalityInvalid()
+        .then(() => assert.fail(), (err) => assert(err));
     });
-  });
-
-  it('performs an equal and inequality range query', function (done) {
-    query.testEqualAndInequalityRange(done);
-  });
-
-  it('performs an equality sort query', function (done) {
-    query.testInequalitySort(done);
-  });
-
-  it(
-    'returns an error when not sorted on filtered property',
-    function (done) {
-      query.testInequalitySortInvalidNotSame(function (err) {
-        assert(err);
-        done();
-      });
-    }
-  );
-
-  it(
-    'returns an error when not sorted on first filter prop',
-    function (done) {
-      query.testInequalitySortInvalidNotFirst(function (err) {
-        assert(err);
-        done();
-      });
-    }
-  );
-
-  it('performs a query with a limit', function (done) {
-    query.testLimit(done);
-  });
-
-  it('allows manual pagination through results', function (done) {
-    entity.testBatchUpsert(function (err) {
-      assert.ifError(err);
-      setTimeout(function () {
-        query.testCursorPaging(done);
-      }, 1000);
+    it(`performs an equal and inequality range query`, () => query.testEqualAndInequalityRange());
+    it(`performs an equality sort query`, () => query.testInequalitySort());
+    it(`returns an error when not sorted on filtered property`, () => {
+      return query.testInequalitySortInvalidNotSame()
+        .then(() => assert.fail(), (err) => assert(err));
     });
-  });
-
-  it.skip('performs an ancestor query', function (done) {
-    query.testEventualConsistentQuery(done);
-  });
-
-  // Entities
-
-  it('saves with an incomplete key', function (done) {
-    entity.testIncompleteKey(done);
-  });
-
-  it('saves with a named key', function (done) {
-    entity.testNamedKey(done);
-  });
-
-  it('saves a key with a parent', function (done) {
-    entity.testKeyWithParent(done);
-  });
-
-  it('saves a key with multiple parents', function (done) {
-    entity.testKeyWithMultiLevelParent(done);
-  });
-
-  it('saves an entity with a parent', function (done) {
-    entity.testEntityWithParent(done);
-  });
-
-  it('saves an entity with properties', function (done) {
-    entity.testProperties(done);
-  });
-
-  it('saves an entity with arrays', function (done) {
-    entity.testArrayValue(done);
-  });
-
-  it('saves a basic entity', function (done) {
-    entity.testBasicEntity(done);
-  });
-
-  it('saves with an upsert', function (done) {
-    entity.testUpsert(done);
-  });
-
-  it('saves with an insert', function (done) {
-    entity.testInsert(done);
-  });
-
-  it('performs a lookup', function (done) {
-    entity.testLookup(done);
-  });
-
-  it('saves with an update', function (done) {
-    entity.testUpdate(done);
-  });
-
-  it('deletes an entity', function (done) {
-    entity.testDelete(done);
-  });
-
-  it('performs a batch upsert', function (done) {
-    entity.testBatchUpsert(done);
-  });
-
-  it('performs a batch lookup', function (done) {
-    entity.testBatchLookup(done);
-  });
-
-  it('performs a batch delete', function (done) {
-    entity.testBatchDelete(done);
+    it(`returns an error when not sorted on first filter prop`, () => {
+      return query.testInequalitySortInvalidNotFirst()
+        .then(() => assert.fail(), (err) => assert(err));
+    });
+    it(`performs a query with a limit`, () => query.testLimit());
+    it(`allows manual pagination through results`, () => {
+      return entity.testBatchUpsert()
+        .then(() => {
+          return new Promise((resolve, reject) => {
+            setTimeout(() => {
+              query.testCursorPaging()
+                .then(resolve, reject);
+            }, 1000);
+          });
+        });
+    });
+    it(`performs an ancestor query`, () => query.testEventualConsistentQuery());
+  });
+
+  describe(`Entities`, () => {
+    it(`saves with an incomplete key`, () => entity.testIncompleteKey());
+    it(`saves with a named key`, () => entity.testNamedKey());
+    it(`saves a key with a parent`, () => entity.testKeyWithParent());
+    it(`saves a key with multiple parents`, () => entity.testKeyWithMultiLevelParent());
+    it(`saves an entity with a parent`, () => entity.testEntityWithParent());
+    it(`saves an entity with properties`, () => entity.testProperties());
+    it(`saves an entity with arrays`, () => entity.testArrayValue());
+    it(`saves a basic entity`, () => entity.testBasicEntity());
+    it(`saves with an upsert`, () => entity.testUpsert());
+    it(`saves with an insert`, () => entity.testInsert());
+    it(`performs a lookup`, () => entity.testLookup());
+    it(`saves with an update`, () => entity.testUpdate());
+    it(`deletes an entity`, () => entity.testDelete());
+    it(`performs a batch upsert`, () => entity.testBatchUpsert());
+    it(`performs a batch lookup`, () => entity.testBatchLookup());
+    it(`performs a batch delete`, () => entity.testBatchDelete());
   });
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js
index ef304b60864..578ec64c871 100644
--- a/handwritten/nodejs-datastore/samples/system-test/error.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js
@@ -1,26 +1,31 @@
-// Copyright 2015-2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 'use strict';
 
-var error = require('../error');
+const error = require('../error');
 
-describe('datastore:error', function () {
-  it('should have an error', function (done) {
-    error.runQuery(function (err) {
-      assert(err);
-      assert.equal(err.code, 400);
-      done();
-    });
+describe(`datastore:error`, () => {
+  it(`should have an error`, () => {
+    return error.runQuery()
+      .then(() => {
+        assert.fail(`should have failed!`);
+      })
+      .catch((err) => {
+        assert(err);
+        assert.equal(err.code, 400);
+      });
   });
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index b385261116e..38522bb4ea5 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -17,47 +17,42 @@
 
 const proxyquire = require(`proxyquire`).noPreserveCache();
 const datastore = proxyquire(`@google-cloud/datastore`, {})();
+const entity = { description: `Buy milk` };
 const kind = `Task`;
 const name = `sampletask1`;
-const key = datastore.key(kind, name);
+const key = datastore.key([kind, name]);
 
 describe(`datastore:quickstart`, () => {
-  let datastoreMock, DatastoreMock;
-
-  after((done) => {
-    datastore.delete(key, () => {
-      // Ignore any error, the entity might not have been created
-      done();
-    });
-  });
+  before(() => datastore.delete(key).catch(() => {}));
+  after(() => datastore.delete(key).catch(() => {}));
 
   it(`should get a task from Datastore`, (done) => {
-    datastoreMock = {
-      key (...args) {
-        return datastore.key(...args);
-      },
+    const datastoreMock = {
+      key: (...args) => datastore.key(...args),
 
-      save (_task, _callback) {
+      save: (_task) => {
         assert.equal(_task.key.kind, kind);
         assert.equal(_task.key.name, name);
-        assert.deepEqual(_task.data, {
-          description: `Buy milk`
-        });
-        assert.equal(typeof _callback, 'function');
-
-        datastore.save(_task, (err) => {
-          _callback(err);
-          assert.ifError(err);
-          assert.equal(console.log.calledOnce, true);
-          assert.deepEqual(console.log.firstCall.args, [`Saved ${_task.key.name}: ${_task.data.description}`]);
-          done();
-        });
+        assert.deepEqual(_task.data, entity);
+
+        return datastore.save(_task)
+          .then(() => {
+            setTimeout(() => {
+              datastore.get(key)
+                .then((results) => {
+                  const task = results[0];
+                  assert.deepEqual(task, entity);
+                  assert.equal(console.log.calledWith(`Saved ${name}: ${entity.description}`), true);
+                  done();
+                })
+                .catch(done);
+            }, 200);
+          }, done);
       }
     };
-    DatastoreMock = sinon.stub().returns(datastoreMock);
 
     proxyquire(`../quickstart`, {
-      '@google-cloud/datastore': DatastoreMock
+      '@google-cloud/datastore': sinon.stub().returns(datastoreMock)
     });
   });
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
index 3d7e94e2a46..1d4913a9996 100644
--- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
@@ -1,62 +1,68 @@
-// Copyright 2015-2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 'use strict';
 
-var async = require('async');
-var tasks = require('../tasks');
-var taskIds = [];
-
-describe('datastore:tasks', function () {
-  after(function (done) {
-    async.parallel(taskIds.map(function (taskId) {
-      return function (cb) {
-        tasks.deleteEntity(taskId, cb);
-      };
-    }), done);
-  });
+const path = require(`path`);
+const datastore = require(`@google-cloud/datastore`)();
+const run = require(`../../utils`).run;
 
-  it('should add a task', function (done) {
-    getTaskId(done);
-  });
+const cmd = `node tasks.js`;
+const cwd = path.join(__dirname, `..`);
+
+describe(`datastore:tasks`, () => {
+  const description = `description`;
+  let key;
 
-  it('should mark a task as done', function (done) {
-    getTaskId(function (err, taskId) {
-      assert.ifError(err);
-      tasks.updateEntity(taskId, done);
-    });
+  after(() => datastore.delete(key).catch(() => {}));
+
+  it(`should add a task`, () => {
+    const expected = /^Task (\d+) created successfully.$/;
+    const parts = run(`${cmd} new "${description}"`, cwd).match(expected);
+    assert.equal(expected.test(parts[0]), true);
+    return datastore.get(datastore.key([`Task`, parseInt(parts[1], 10)]))
+      .then((results) => {
+        const task = results[0];
+        key = task[datastore.KEY];
+        assert.equal(task.description, description);
+      });
   });
 
-  it('should list tasks', function (done) {
-    tasks.retrieveEntities(done);
+  it(`should mark a task as done`, () => {
+    const expected = `Task ${key.id} updated successfully.`;
+    assert.equal(run(`${cmd} done ${key.id}`, cwd), expected);
+    return datastore.get(key)
+      .then((results) => {
+        assert.equal(results[0].done, true);
+      });
   });
 
-  it('should delete a task', function (done) {
-    getTaskId(function (err, taskId) {
-      assert.ifError(err);
-      tasks.deleteEntity(taskId, done);
-    });
+  it(`should list tasks`, (done) => {
+    setTimeout(() => {
+      const output = run(`${cmd} list`, cwd);
+      assert.equal(output.includes(key.id), true);
+      done();
+    }, 5000);
   });
 
-  function getTaskId (callback) {
-    tasks.addEntity('description', function (err, taskKey) {
-      if (err) {
-        return callback(err);
-      }
-
-      var taskId = taskKey.path.pop();
-      taskIds.push(taskId);
-      callback(null, taskId);
-    });
-  }
+  it(`should delete a task`, () => {
+    const expected = `Task ${key.id} deleted successfully.`;
+    assert.equal(run(`${cmd} delete ${key.id}`, cwd), expected);
+    return datastore.get(key)
+      .then((results) => {
+        assert.equal(results[0], undefined);
+      });
+  });
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/util.js b/handwritten/nodejs-datastore/samples/system-test/util.js
deleted file mode 100644
index 1c47393b60a..00000000000
--- a/handwritten/nodejs-datastore/samples/system-test/util.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2015, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-'use strict';
-
-module.exports = {
-  deleteEntities: function (datastore, query, callback) {
-    datastore.runQuery(query, function (err, entities) {
-      if (err) {
-        return callback(err);
-      }
-
-      var keys = entities.map(function (entity) {
-        return entity.key;
-      });
-
-      datastore.delete(keys, callback);
-    });
-  }
-};
diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js
old mode 100755
new mode 100644
index 7d8230778f3..d60016a94e9
--- a/handwritten/nodejs-datastore/samples/tasks.js
+++ b/handwritten/nodejs-datastore/samples/tasks.js
@@ -1,15 +1,17 @@
-// Copyright 2015-2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/**
+ * Copyright 2016, Google, Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 'use strict';
 
@@ -17,11 +19,11 @@
 // By default, the client will authenticate using the service account file
 // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
 // the project specified by the GCLOUD_PROJECT environment variable. See
-// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication
-var Datastore = require('@google-cloud/datastore');
+// https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication
+const Datastore = require('@google-cloud/datastore');
 
-// Instantiate a datastore client
-var datastore = Datastore();
+// Instantiates a client
+const datastore = Datastore();
 // [END build_service]
 
 /*
@@ -46,7 +48,7 @@ npm install
 
 5. With the gcloud SDK, be sure you are authenticated:
 ```sh
-gcloud auth login
+gcloud beta auth application-default login
 ```
 
 6. At a command prompt, run the following, where `` is the ID of
@@ -62,10 +64,9 @@ node tasks 
 */
 
 // [START add_entity]
-function addTask (description, callback) {
-  var taskKey = datastore.key('Task');
-
-  datastore.save({
+function addTask (description) {
+  const taskKey = datastore.key('Task');
+  const entity = {
     key: taskKey,
     data: [
       {
@@ -82,129 +83,110 @@ function addTask (description, callback) {
         value: false
       }
     ]
-  }, function (err) {
-    if (err) {
-      return callback(err);
-    }
-
-    var taskId = taskKey.path.pop();
-    console.log('Task %d created successfully.', taskId);
-    return callback(null, taskKey);
-  });
+  };
+
+  return datastore.save(entity)
+    .then(() => {
+      console.log(`Task ${taskKey.id} created successfully.`);
+      return taskKey;
+    });
 }
 // [END add_entity]
 
 // [START update_entity]
-function markDone (taskId, callback) {
-  var transaction = datastore.transaction();
-
-  transaction.run(function (err) {
-    if (err) {
-      return callback(err);
-    }
-
-    var taskKey = datastore.key([
-      'Task',
-      taskId
-    ]);
-
-    transaction.get(taskKey, function (err, task) {
-      if (err) {
-        // An error occurred while getting the task
-        return transaction.rollback(function (_err) {
-          return callback(err || _err);
-        });
-      }
-
-      task.data.done = true;
-
-      transaction.save(task);
-
-      // Commit the transaction
-      transaction.commit(function (err) {
-        if (err) {
-          return callback(err);
-        }
+function markDone (taskId) {
+  const transaction = datastore.transaction();
+  const taskKey = datastore.key([
+    'Task',
+    taskId
+  ]);
 
-        // The transaction completed successfully.
-        console.log('Task %d updated successfully.', taskId);
-        return callback(null);
+  return transaction.run()
+    .then(() => transaction.get(taskKey))
+    .then((results) => {
+      const task = results[0];
+      task.done = true;
+      transaction.save({
+        key: taskKey,
+        data: task
       });
-    });
-  });
+      return transaction.commit();
+    })
+    .then(() => {
+      // The transaction completed successfully.
+      console.log(`Task ${taskId} updated successfully.`);
+    })
+    .catch(() => transaction.rollback());
 }
 // [END update_entity]
 
 // [START retrieve_entities]
-function listTasks (callback) {
-  var query = datastore.createQuery('Task')
+function listTasks () {
+  const query = datastore.createQuery('Task')
     .order('created');
 
-  datastore.runQuery(query, function (err, tasks) {
-    if (err) {
-      return callback(err);
-    }
+  return datastore.runQuery(query)
+    .then((results) => {
+      const tasks = results[0];
 
-    console.log('Found %d task(s)!', tasks.length);
-    return callback(null, tasks);
-  });
+      console.log('Tasks:');
+      tasks.forEach((task) => {
+        const taskKey = task[datastore.KEY];
+        console.log(taskKey.id, task);
+      });
+
+      return tasks;
+    });
 }
 // [END retrieve_entities]
 
 // [START delete_entity]
-function deleteTask (taskId, callback) {
-  var taskKey = datastore.key([
+function deleteTask (taskId) {
+  const taskKey = datastore.key([
     'Task',
     taskId
   ]);
 
-  datastore.delete(taskKey, function (err) {
-    if (err) {
-      return callback(err);
-    }
-
-    console.log('Task %d deleted successfully.', taskId);
-    return callback(null);
-  });
+  return datastore.delete(taskKey)
+    .then(() => {
+      console.log(`Task ${taskId} deleted successfully.`);
+    });
 }
 // [END delete_entity]
 
-var cli = require('yargs');
-var makeHandler = require('../utils').makeHandler;
-
-var program = module.exports = {
-  addEntity: addTask,
-  updateEntity: markDone,
-  retrieveEntities: listTasks,
-  deleteEntity: deleteTask,
-  main: function (args) {
-    // Run the command-line program
-    cli.help().strict().parse(args).argv;
-  }
-};
-
-cli
+require(`yargs`)
   .demand(1)
-  .command('new ', 'Adds a task with a description .', {}, function (options) {
-    addTask(options.description, makeHandler());
-  })
-  .command('done ', 'Marks the specified task as done.', {}, function (options) {
-    markDone(options.taskId, makeHandler());
-  })
-  .command('list', 'Lists all tasks ordered by creation time.', {}, function (options) {
-    listTasks(makeHandler());
-  })
-  .command('delete ', 'Deletes a task.', {}, function (options) {
-    deleteTask(options.taskId, makeHandler());
-  })
-  .example('node $0 new "Buy milk"', 'Adds a task with description "Buy milk".')
-  .example('node $0 done 12345', 'Marks task 12345 as Done.')
-  .example('node $0 list', 'Lists all tasks ordered by creation time')
-  .example('node $0 delete 12345', 'Deletes task 12345.')
+  .command(
+    `new `,
+    `Adds a task with a description .`,
+    {},
+    (opts) => addTask(opts.description)
+  )
+  .command(
+    `done `,
+    `Marks the specified task as done.`,
+    {},
+    (opts) => markDone(opts.taskId)
+  )
+  .command(
+    `list`,
+    `Lists all tasks ordered by creation time.`,
+    {},
+    listTasks
+  )
+  .command(
+    `delete `,
+    `Deletes a task.`,
+    {},
+    (opts) => deleteTask(opts.taskId)
+  )
+  .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`)
+  .example(`node $0 done 12345`, `Marks task 12345 as Done.`)
+  .example(`node $0 list`, `Lists all tasks ordered by creation time`)
+  .example(`node $0 delete 12345`, `Deletes task 12345.`)
   .wrap(120)
   .recommendCommands()
-  .epilogue('For more information, see https://cloud.google.com/datastore/docs');
-
-if (module === require.main) {
-  program.main(process.argv.slice(2));
-}
+  .epilogue(`For more information, see https://cloud.google.com/datastore/docs`)
+  .help()
+  .strict()
+  .argv;
diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js
deleted file mode 100644
index 8deb451a29a..00000000000
--- a/handwritten/nodejs-datastore/samples/test/concepts.test.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-'use strict';
-
-describe('datastore:concepts', function () {
-  it('should be tested');
-});
diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js
deleted file mode 100644
index 6396d45d5f6..00000000000
--- a/handwritten/nodejs-datastore/samples/test/error.test.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-'use strict';
-
-describe('datastore:error', function () {
-  it('should be tested');
-});
diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js
deleted file mode 100644
index 1d37c240077..00000000000
--- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Copyright 2016, Google, Inc.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const proxyquire = require(`proxyquire`).noPreserveCache();
-
-describe(`datastore:quickstart`, () => {
-  let datastoreMock, DatastoreMock;
-  const error = new Error(`error`);
-  const mockKey = {};
-
-  before(() => {
-    datastoreMock = {
-      save: sinon.stub().yields(error),
-      key: sinon.stub().returns(mockKey)
-    };
-    DatastoreMock = sinon.stub().returns(datastoreMock);
-  });
-
-  it(`should handle error`, () => {
-    proxyquire(`../quickstart`, {
-      '@google-cloud/datastore': DatastoreMock
-    });
-
-    assert.equal(DatastoreMock.calledOnce, true);
-    assert.deepEqual(DatastoreMock.firstCall.args, [{ projectId: 'YOUR_PROJECT_ID' }]);
-    assert.equal(datastoreMock.save.calledOnce, true);
-    assert.deepEqual(datastoreMock.save.firstCall.args.slice(0, -1), [{
-      key: mockKey,
-      data: {
-        description: 'Buy milk'
-      }
-    }]);
-    assert.equal(console.error.calledOnce, true);
-    assert.deepEqual(console.error.firstCall.args, [error]);
-  });
-});
diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js
deleted file mode 100644
index 2353d821f9f..00000000000
--- a/handwritten/nodejs-datastore/samples/test/tasks.test.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016, Google, Inc.
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-'use strict';
-
-describe('datastore:tasks', function () {
-  it('should be tested');
-});

From a6cb5b7e3c377dc6a12d181c74b5eadd9a573720 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Tue, 29 Nov 2016 09:16:22 -0500
Subject: [PATCH 084/820] datastore: fix unit test

---
 handwritten/nodejs-datastore/test/request.js | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js
index 9e11867f1ef..ed891e86ad4 100644
--- a/handwritten/nodejs-datastore/test/request.js
+++ b/handwritten/nodejs-datastore/test/request.js
@@ -1194,9 +1194,20 @@ describe('Request', function() {
 
     it('should prepare entity objects', function(done) {
       var entityObject = {};
+      var prepared = false;
 
       overrides.Request.prepareEntityObject_ = function(obj) {
         assert.strictEqual(obj, entityObject);
+        prepared = true;
+        return {
+          key: key,
+          method: 'insert',
+          data: { k: 'v' }
+        };
+      };
+
+      request.request_ = function() {
+        assert.strictEqual(prepared, true);
         done();
       };
 

From 43a922228c4a659ba193b4345235d52b03c36a39 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Thu, 8 Dec 2016 18:34:53 -0500
Subject: [PATCH 085/820] prepare READMEs for beta release (#1864)

---
 handwritten/nodejs-datastore/README.md | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index 9e09143964b..6241d31d977 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -1,4 +1,4 @@
-# @google-cloud/datastore
+# @google-cloud/datastore ([Beta][versioning])
 > Google Cloud Datastore Client Library for Node.js
 
 *Looking for more Google APIs than just Datastore? You might want to check out [`google-cloud`][google-cloud].*
@@ -69,24 +69,18 @@ var datastore = require('@google-cloud/datastore')({
 
 It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Google Cloud services.
 
-### On Google Compute Engine
+### On Google Cloud Platform
 
-If you are running this client on Google Compute Engine, we handle authentication for you with no configuration. You just need to make sure that when you [set up the GCE instance][gce-how-to], you add the correct scopes for the APIs you want to access.
+If you are running this client on Google Cloud Platform, we handle authentication for you with no configuration. You just need to make sure that when you [set up the GCE instance][gce-how-to], you add the correct scopes for the APIs you want to access.
 
 ``` js
-// Authenticating on a global basis.
-var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123'
-
-var datastore = require('@google-cloud/datastore')({
-  projectId: projectId
-});
-
+var datastore = require('@google-cloud/datastore')();
 // ...you're good to go!
 ```
 
 ### Elsewhere
 
-If you are not running this client on Google Compute Engine, you need a Google Developers service account. To create a service account:
+If you are not running this client on Google Cloud Platform, you need a Google Developers service account. To create a service account:
 
 1. Visit the [Google Developers Console][dev-console].
 2. Create a new project or click on an existing project.
@@ -113,6 +107,7 @@ var datastore = require('@google-cloud/datastore')({
 ```
 
 
+[versioning]: https://github.com/GoogleCloudPlatform/google-cloud-node#versioning
 [google-cloud]: https://github.com/GoogleCloudPlatform/google-cloud-node
 [gce-how-to]: https://cloud.google.com/compute/docs/authentication#using
 [dev-console]: https://console.developers.google.com/project

From 6128ee3662af55e3984ceeda5ebbe6b7aa746d06 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Thu, 8 Dec 2016 19:43:39 -0500
Subject: [PATCH 086/820] all: update dependencies

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 28411e2cdd5..7d6aa249449 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,7 +50,7 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.8.0",
+    "@google-cloud/common": "^0.9.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From 22d30353d404cc2fcd35263e2abb070c8d2968e5 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Thu, 8 Dec 2016 19:46:19 -0500
Subject: [PATCH 087/820] datastore @ 0.6.0 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 7d6aa249449..0daf35c70d5 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.5.1",
+  "version": "0.6.0",
   "author": "Google Inc.",
   "description": "Google Cloud Datastore Client Library for Node.js",
   "contributors": [

From 1d56df462e7e6cf3e5f53b5d42e0e1ed7b3e6287 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Fri, 9 Dec 2016 15:16:00 -0800
Subject: [PATCH 088/820] Update storage samples. (#263)

* Update storage samples.

* Update dependencies.
---
 handwritten/nodejs-datastore/samples/package.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 837c76e9a5c..8d6ce649781 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -8,8 +8,8 @@
     "test": "cd ..; npm run st -- datastore/system-test/*.test.js"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^0.5.0",
-    "yargs": "^6.4.0"
+    "@google-cloud/datastore": "0.6.0",
+    "yargs": "6.5.0"
   },
   "engines": {
     "node": ">=4.3.2"

From f0272bcf7b20ea0c8af6b5753505c7363f6208e0 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Fri, 6 Jan 2017 15:30:36 -0800
Subject: [PATCH 089/820] Switch from Mocha to Ava for faster tests (#289)

* Switch from Mocha to Ava

* Concurrency: 5
---
 .../nodejs-datastore/samples/concepts.js      |  45 ++--
 .../samples/system-test/concepts.test.js      | 212 +++++++++---------
 .../samples/system-test/error.test.js         |  20 +-
 .../samples/system-test/quickstart.test.js    |  74 +++---
 .../samples/system-test/tasks.test.js         |  78 +++----
 5 files changed, 214 insertions(+), 215 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js
index ccf1f79a067..31d6236cac8 100644
--- a/handwritten/nodejs-datastore/samples/concepts.js
+++ b/handwritten/nodejs-datastore/samples/concepts.js
@@ -15,7 +15,6 @@
 
 'use strict';
 
-const assert = require('power-assert');
 // By default, the client will authenticate using the service account file
 // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
 // the project specified by the GCLOUD_PROJECT environment variable. See
@@ -436,7 +435,7 @@ class Index extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testExplodingProperties () {
+  testExplodingProperties (t) {
     const original = datastore.key;
     datastore.key = this.datastore.key;
 
@@ -464,14 +463,14 @@ class Index extends TestHelper {
 
     return this.datastore.save(task)
       .then(() => {
-        assert(task.key);
-        assert(task.key.id);
+        t.truthy(task.key);
+        t.truthy(task.key.id);
       });
   }
 }
 
 class Metadata extends TestHelper {
-  testNamespaceRunQuery () {
+  testNamespaceRunQuery (t) {
     const datastore = this.datastore;
 
     const startNamespace = 'Animals';
@@ -511,11 +510,11 @@ class Metadata extends TestHelper {
         return runNamespaceQuery(startNamespace, endNamespace);
       })
       .then((namespaces) => {
-        assert.deepEqual(namespaces, ['Animals']);
+        t.deepEqual(namespaces, ['Animals']);
       });
   }
 
-  testKindRunQuery () {
+  testKindRunQuery (t) {
     const datastore = this.datastore;
 
     // [START kind_run_query]
@@ -538,11 +537,11 @@ class Metadata extends TestHelper {
 
     return runKindQuery()
       .then((kinds) => {
-        assert.equal(kinds.includes('Account'), true);
+        t.true(kinds.includes('Account'));
       });
   }
 
-  testPropertyRunQuery () {
+  testPropertyRunQuery (t) {
     const datastore = this.datastore;
 
     // [START property_run_query]
@@ -576,11 +575,11 @@ class Metadata extends TestHelper {
 
     return runPropertyQuery()
       .then((propertiesByKind) => {
-        assert.deepEqual(propertiesByKind.Account, ['balance']);
+        t.deepEqual(propertiesByKind.Account, ['balance']);
       });
   }
 
-  testPropertyByKindRunQuery () {
+  testPropertyByKindRunQuery (t) {
     const datastore = this.datastore;
 
     // [START property_by_kind_run_query]
@@ -616,7 +615,7 @@ class Metadata extends TestHelper {
 
     return runPropertyByKindQuery()
       .then((propertiesByKind) => {
-        assert.deepEqual(propertiesByKind, {
+        t.deepEqual(propertiesByKind, {
           balance: ['INT64']
         });
       });
@@ -951,7 +950,7 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testCursorPaging () {
+  testCursorPaging (t) {
     const datastore = this.datastore;
     const pageSize = 1;
 
@@ -992,7 +991,7 @@ class Query extends TestHelper {
     return runPageQuery()
       .then((results) => {
         const entities = results[0];
-        assert.equal(Array.isArray(entities), true);
+        t.true(Array.isArray(entities));
         const info = results[1];
         if (!info || !info.endCursor) {
           throw new Error('An `info` with an `endCursor` is not present.');
@@ -1060,7 +1059,7 @@ class Transaction extends TestHelper {
     return this.datastore.save(entities);
   }
 
-  testTransactionalUpdate () {
+  testTransactionalUpdate (t) {
     const fromKey = this.fromKey;
     const toKey = this.toKey;
     const originalBalance = this.originalBalance;
@@ -1080,8 +1079,8 @@ class Transaction extends TestHelper {
         const accounts = results.map((result) => result[0]);
         // Restore `datastore` to the mock API.
         datastore = datastoreMock;
-        assert.equal(accounts[0].balance, originalBalance - amountToTransfer);
-        assert.equal(accounts[1].balance, originalBalance + amountToTransfer);
+        t.is(accounts[0].balance, originalBalance - amountToTransfer);
+        t.is(accounts[1].balance, originalBalance + amountToTransfer);
       })
       .catch((err) => {
         // Restore `datastore` to the mock API.
@@ -1141,7 +1140,7 @@ class Transaction extends TestHelper {
       });
   }
 
-  testTransactionalGetOrCreate () {
+  testTransactionalGetOrCreate (t) {
     const taskKey = this.datastore.key(['Task', Date.now()]);
 
     // Overwrite so the real Datastore instance is used in `transferFunds`.
@@ -1177,11 +1176,11 @@ class Transaction extends TestHelper {
 
     return getOrCreate(taskKey, {})
       .then((task) => {
-        assert(task, 'Should have a task.');
+        t.truthy(task, 'Should have a task.');
         return getOrCreate(taskKey, {});
       })
       .then((task) => {
-        assert(task, 'Should have a task.');
+        t.truthy(task, 'Should have a task.');
         // Restore `datastore` to the mock API.
         datastore = datastoreMock;
       })
@@ -1192,7 +1191,7 @@ class Transaction extends TestHelper {
       });
   }
 
-  testSingleEntityGroupReadOnly () {
+  testSingleEntityGroupReadOnly (t) {
     // Overwrite so the real Datastore instance is used in `transferFunds`.
     const datastoreMock = datastore;
     datastore = this.datastore;
@@ -1225,8 +1224,8 @@ class Transaction extends TestHelper {
       .then((results) => {
         // Restore `datastore` to the mock API.
         datastore = datastoreMock;
-        assert.equal(results.length, 2);
-        assert.equal(Array.isArray(results[1]), true);
+        t.is(results.length, 2);
+        t.true(Array.isArray(results[1]));
       }, (err) => {
         // Restore `datastore` to the mock API.
         datastore = datastoreMock;
diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
index 2365dae13cc..411c74ff564 100644
--- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
@@ -13,10 +13,10 @@
  * limitations under the License.
  */
 
-
 'use strict';
 
-const assert = require(`power-assert`);
+require(`../../system-test/_setup`);
+
 const concepts = require(`../concepts`);
 
 let transaction;
@@ -31,119 +31,111 @@ const Index = concepts.Index;
 const Entity = concepts.Entity;
 const Query = concepts.Query;
 
-describe(`datastore:concepts`, () => {
-  before(() => {
-    const projectId = process.env.GCLOUD_PROJECT;
-    assert.equal(!!projectId, true, `You must set the GCLOUD_PROJECT env var!`);
-    transaction = new Transaction(projectId);
-    metadata = new Metadata(projectId);
-    index = new Index(projectId);
-    entity = new Entity(projectId);
-    query = new Query(projectId);
-  });
+test.before((t) => {
+  const projectId = process.env.GCLOUD_PROJECT;
+  t.truthy(projectId, `You must set the GCLOUD_PROJECT env var!`);
+  transaction = new Transaction(projectId);
+  metadata = new Metadata(projectId);
+  index = new Index(projectId);
+  entity = new Entity(projectId);
+  query = new Query(projectId);
+});
 
-  after(() => {
-    const datastore = transaction.datastore;
-    const query = datastore.createQuery(`Task`).select(`__key__`);
-    return datastore.runQuery(query)
-      .then((results) => datastore.delete(results[0].map((entity) => entity[datastore.KEY])));
-  });
+test.after(async () => {
+  const datastore = transaction.datastore;
+  const query = datastore.createQuery(`Task`).select(`__key__`);
+  const [entities] = await datastore.runQuery(query);
+  await datastore.delete(entities.map((entity) => entity[datastore.KEY]));
+});
 
-  describe(`Transactions`, () => {
-    it(`performs a transactional update`, () => transaction.testTransactionalUpdate());
-    it(`performs retries if necessary`, () => transaction.testTransactionalRetry());
-    it(`performs a get or create`, () => transaction.testTransactionalGetOrCreate());
-    it(`gets a snapshot of task list entities`, () => transaction.testSingleEntityGroupReadOnly());
-  });
+test.beforeEach(stubConsole);
+test.afterEach(restoreConsole);
 
-  describe(`Metadata`, () => {
-    it(`performs a namespace query`, () => metadata.testNamespaceRunQuery());
-    it(`performs a kind query`, () => metadata.testKindRunQuery());
-    it(`performs a property query`, () => metadata.testPropertyRunQuery());
-    it(`performs a property by kind query`, () => metadata.testPropertyByKindRunQuery());
-  });
+// Transactions
+test.serial(`performs a transactional update`, (t) => transaction.testTransactionalUpdate(t));
+test.serial(`performs retries if necessary`, (t) => transaction.testTransactionalRetry(t));
+test.serial(`performs a get or create`, (t) => transaction.testTransactionalGetOrCreate(t));
+test.serial(`gets a snapshot of task list entities`, (t) => transaction.testSingleEntityGroupReadOnly(t));
 
-  describe(`Indexes`, () => {
-    it(`performs a query with a filter on an unindexed property`, () => index.testUnindexedPropertyQuery());
-    it(`inserts arrays of data`, () => index.testExplodingProperties());
-  });
+// Metadata
+test.serial(`performs a namespace query`, (t) => metadata.testNamespaceRunQuery(t));
+test.serial(`performs a kind query`, (t) => metadata.testKindRunQuery(t));
+test.serial(`performs a property query`, (t) => metadata.testPropertyRunQuery(t));
+test.serial(`performs a property by kind query`, (t) => metadata.testPropertyByKindRunQuery(t));
 
-  describe(`Queries`, () => {
-    it(`performs a basic query`, () => query.testRunQuery());
-    it(`performs a query with a property filter`, () => query.testPropertyFilter());
-    it(`performs a query with a composite filter`, () => query.testCompositeFilter());
-    it(`performs a query with a key filter`, () => query.testKeyFilter());
-    it(`performs a query with ascending sort`, () => query.testAscendingSort());
-    it(`performs a query with descending sort`, () => query.testDescendingSort());
-    it(`performs a query with multi sort`, () => query.testMultiSort());
-    it(`performs a kindless query`, () => query.testKindlessQuery());
-    it('performs a projection query', () => {
-      return entity.testProperties()
-        .then(() => {
-          return new Promise((resolve, reject) => {
-            setTimeout(function () {
-              query.testRunQueryProjection().then(resolve, reject);
-            }, 1000);
-          });
-        })
-        .then((results) => {
-          assert.deepEqual(results, {
-            priorities: [4],
-            percentCompletes: [10]
-          });
-        });
-    });
-    it(`performs a keys only query`, () => query.testKeysOnlyQuery());
-    it(`performs a distinct query`, () => query.testDistinctQuery());
-    it(`performs a distinct on query`, () => query.testDistinctOnQuery());
-    it(`performs an array value inequality query`, () => query.testArrayValueInequalityRange());
-    it(`performs an array value equality query`, () => query.testArrayValueEquality());
-    it(`performs an inequality range query`, () => query.testInequalityRange());
-    it(`returns an error from an invalid query`, () => {
-      return query.testInequalityInvalid()
-        .then(() => assert.fail(), (err) => assert(err));
-    });
-    it(`performs an equal and inequality range query`, () => query.testEqualAndInequalityRange());
-    it(`performs an equality sort query`, () => query.testInequalitySort());
-    it(`returns an error when not sorted on filtered property`, () => {
-      return query.testInequalitySortInvalidNotSame()
-        .then(() => assert.fail(), (err) => assert(err));
-    });
-    it(`returns an error when not sorted on first filter prop`, () => {
-      return query.testInequalitySortInvalidNotFirst()
-        .then(() => assert.fail(), (err) => assert(err));
+// Indexes
+test.serial(`performs a query with a filter on an unindexed property`, (t) => index.testUnindexedPropertyQuery(t));
+test.serial(`inserts arrays of data`, (t) => index.testExplodingProperties(t));
+
+// Queries
+test.serial(`performs a basic query`, (t) => query.testRunQuery(t));
+test.serial(`performs a query with a property filter`, (t) => query.testPropertyFilter(t));
+test.serial(`performs a query with a composite filter`, (t) => query.testCompositeFilter(t));
+test.serial(`performs a query with a key filter`, (t) => query.testKeyFilter(t));
+test.serial(`performs a query with ascending sort`, (t) => query.testAscendingSort(t));
+test.serial(`performs a query with descending sort`, (t) => query.testDescendingSort(t));
+test.serial(`performs a query with multi sort`, (t) => query.testMultiSort(t));
+test.serial(`performs a kindless query`, (t) => query.testKindlessQuery(t));
+test.serial('performs a projection query', (t) => {
+  return entity.testProperties(t)
+    .then(() => {
+      return new Promise((resolve, reject) => {
+        setTimeout(() => {
+          query.testRunQueryProjection(t).then(resolve, reject);
+        }, 1000);
+      });
+    })
+    .then((results) => {
+      t.deepEqual(results, {
+        priorities: [4],
+        percentCompletes: [10]
+      });
     });
-    it(`performs a query with a limit`, () => query.testLimit());
-    it(`allows manual pagination through results`, () => {
-      return entity.testBatchUpsert()
-        .then(() => {
-          return new Promise((resolve, reject) => {
-            setTimeout(() => {
-              query.testCursorPaging()
-                .then(resolve, reject);
-            }, 1000);
-          });
-        });
+});
+test.serial(`performs a keys only query`, (t) => query.testKeysOnlyQuery(t));
+test.serial(`performs a distinct query`, (t) => query.testDistinctQuery(t));
+test.serial(`performs a distinct on query`, (t) => query.testDistinctOnQuery(t));
+test.serial(`performs an array value inequality query`, (t) => query.testArrayValueInequalityRange(t));
+test.serial(`performs an array value equality query`, (t) => query.testArrayValueEquality(t));
+test.serial(`performs an inequality range query`, (t) => query.testInequalityRange(t));
+test.serial(`returns an error from an invalid query`, async (t) => {
+  await t.throws(query.testInequalityInvalid(t));
+});
+test.serial(`performs an equal and inequality range query`, (t) => query.testEqualAndInequalityRange(t));
+test.serial(`performs an equality sort query`, (t) => query.testInequalitySort(t));
+test.serial(`returns an error when not sorted on filtered property`, async (t) => {
+  await t.throws(query.testInequalitySortInvalidNotSame(t));
+});
+test.serial(`returns an error when not sorted on first filter prop`, async (t) => {
+  await t.throws(query.testInequalitySortInvalidNotFirst(t));
+});
+test.serial(`performs a query with a limit`, (t) => query.testLimit(t));
+test.serial(`allows manual pagination through results`, (t) => {
+  return entity.testBatchUpsert(t)
+    .then(() => {
+      return new Promise((resolve, reject) => {
+        setTimeout(() => {
+          query.testCursorPaging(t).then(resolve, reject);
+        }, 1000);
+      });
     });
-    it(`performs an ancestor query`, () => query.testEventualConsistentQuery());
-  });
-
-  describe(`Entities`, () => {
-    it(`saves with an incomplete key`, () => entity.testIncompleteKey());
-    it(`saves with a named key`, () => entity.testNamedKey());
-    it(`saves a key with a parent`, () => entity.testKeyWithParent());
-    it(`saves a key with multiple parents`, () => entity.testKeyWithMultiLevelParent());
-    it(`saves an entity with a parent`, () => entity.testEntityWithParent());
-    it(`saves an entity with properties`, () => entity.testProperties());
-    it(`saves an entity with arrays`, () => entity.testArrayValue());
-    it(`saves a basic entity`, () => entity.testBasicEntity());
-    it(`saves with an upsert`, () => entity.testUpsert());
-    it(`saves with an insert`, () => entity.testInsert());
-    it(`performs a lookup`, () => entity.testLookup());
-    it(`saves with an update`, () => entity.testUpdate());
-    it(`deletes an entity`, () => entity.testDelete());
-    it(`performs a batch upsert`, () => entity.testBatchUpsert());
-    it(`performs a batch lookup`, () => entity.testBatchLookup());
-    it(`performs a batch delete`, () => entity.testBatchDelete());
-  });
 });
+test.serial(`performs an ancestor query`, (t) => query.testEventualConsistentQuery(t));
+
+// Entities
+test.serial(`saves with an incomplete key`, (t) => entity.testIncompleteKey(t));
+test.serial(`saves with a named key`, (t) => entity.testNamedKey(t));
+test.serial(`saves a key with a parent`, (t) => entity.testKeyWithParent(t));
+test.serial(`saves a key with multiple parents`, (t) => entity.testKeyWithMultiLevelParent(t));
+test.serial(`saves an entity with a parent`, (t) => entity.testEntityWithParent(t));
+test.serial(`saves an entity with properties`, (t) => entity.testProperties(t));
+test.serial(`saves an entity with arrays`, (t) => entity.testArrayValue(t));
+test.serial(`saves a basic entity`, (t) => entity.testBasicEntity(t));
+test.serial(`saves with an upsert`, (t) => entity.testUpsert(t));
+test.serial(`saves with an insert`, (t) => entity.testInsert(t));
+test.serial(`performs a lookup`, (t) => entity.testLookup(t));
+test.serial(`saves with an update`, (t) => entity.testUpdate(t));
+test.serial(`deletes an entity`, (t) => entity.testDelete(t));
+test.serial(`performs a batch upsert`, (t) => entity.testBatchUpsert(t));
+test.serial(`performs a batch lookup`, (t) => entity.testBatchLookup(t));
+test.serial(`performs a batch delete`, (t) => entity.testBatchDelete(t));
diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js
index 578ec64c871..cab26d40ef8 100644
--- a/handwritten/nodejs-datastore/samples/system-test/error.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js
@@ -15,17 +15,15 @@
 
 'use strict';
 
+require(`../../system-test/_setup`);
+
 const error = require('../error');
 
-describe(`datastore:error`, () => {
-  it(`should have an error`, () => {
-    return error.runQuery()
-      .then(() => {
-        assert.fail(`should have failed!`);
-      })
-      .catch((err) => {
-        assert(err);
-        assert.equal(err.code, 400);
-      });
-  });
+test.beforeEach(stubConsole);
+test.afterEach(restoreConsole);
+
+test(`should have an error`, async (t) => {
+  const err = await t.throws(error.runQuery());
+  t.truthy(err);
+  t.is(err.code, 400);
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index 38522bb4ea5..4ad5cc9a8df 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -15,6 +15,8 @@
 
 'use strict';
 
+require(`../../system-test/_setup`);
+
 const proxyquire = require(`proxyquire`).noPreserveCache();
 const datastore = proxyquire(`@google-cloud/datastore`, {})();
 const entity = { description: `Buy milk` };
@@ -22,37 +24,45 @@ const kind = `Task`;
 const name = `sampletask1`;
 const key = datastore.key([kind, name]);
 
-describe(`datastore:quickstart`, () => {
-  before(() => datastore.delete(key).catch(() => {}));
-  after(() => datastore.delete(key).catch(() => {}));
-
-  it(`should get a task from Datastore`, (done) => {
-    const datastoreMock = {
-      key: (...args) => datastore.key(...args),
-
-      save: (_task) => {
-        assert.equal(_task.key.kind, kind);
-        assert.equal(_task.key.name, name);
-        assert.deepEqual(_task.data, entity);
-
-        return datastore.save(_task)
-          .then(() => {
-            setTimeout(() => {
-              datastore.get(key)
-                .then((results) => {
-                  const task = results[0];
-                  assert.deepEqual(task, entity);
-                  assert.equal(console.log.calledWith(`Saved ${name}: ${entity.description}`), true);
-                  done();
-                })
-                .catch(done);
-            }, 200);
-          }, done);
-      }
-    };
-
-    proxyquire(`../quickstart`, {
-      '@google-cloud/datastore': sinon.stub().returns(datastoreMock)
-    });
+test.before(async () => {
+  try {
+    await datastore.delete(key);
+  } catch (err) {} // ignore error
+});
+test.after(async () => {
+  try {
+    await datastore.delete(key);
+  } catch (err) {} // ignore error
+});
+
+test.beforeEach(stubConsole);
+test.afterEach(restoreConsole);
+
+test.cb(`should get a task from Datastore`, (t) => {
+  const datastoreMock = {
+    key: (...args) => datastore.key(...args),
+
+    save: (_task) => {
+      t.is(_task.key.kind, kind);
+      t.is(_task.key.name, name);
+      t.deepEqual(_task.data, entity);
+
+      return datastore.save(_task)
+        .then(() => {
+          setTimeout(() => {
+            datastore.get(key)
+              .then(([task]) => {
+                t.deepEqual(task, entity);
+                t.true(console.log.calledWith(`Saved ${name}: ${entity.description}`));
+                t.end();
+              })
+              .catch(t.end);
+          }, 200);
+        }, t.end);
+    }
+  };
+
+  proxyquire(`../quickstart`, {
+    '@google-cloud/datastore': sinon.stub().returns(datastoreMock)
   });
 });
diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
index 1d4913a9996..3da66a11d57 100644
--- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
@@ -15,54 +15,54 @@
 
 'use strict';
 
+require(`../../system-test/_setup`);
+
 const path = require(`path`);
 const datastore = require(`@google-cloud/datastore`)();
-const run = require(`../../utils`).run;
 
 const cmd = `node tasks.js`;
 const cwd = path.join(__dirname, `..`);
 
-describe(`datastore:tasks`, () => {
-  const description = `description`;
-  let key;
+const description = `description`;
+let key;
+
+test.after(async () => {
+  try {
+    await datastore.delete(key);
+  } catch (err) {} // ignore error
+});
 
-  after(() => datastore.delete(key).catch(() => {}));
+test.beforeEach(stubConsole);
+test.afterEach(restoreConsole);
 
-  it(`should add a task`, () => {
-    const expected = /^Task (\d+) created successfully.$/;
-    const parts = run(`${cmd} new "${description}"`, cwd).match(expected);
-    assert.equal(expected.test(parts[0]), true);
-    return datastore.get(datastore.key([`Task`, parseInt(parts[1], 10)]))
-      .then((results) => {
-        const task = results[0];
-        key = task[datastore.KEY];
-        assert.equal(task.description, description);
-      });
-  });
+test.serial(`should add a task`, async (t) => {
+  const expected = /^Task (\d+) created successfully.$/;
+  const parts = run(`${cmd} new "${description}"`, cwd).match(expected);
+  t.true(expected.test(parts[0]));
+  const [task] = await datastore.get(datastore.key([`Task`, parseInt(parts[1], 10)]));
+  key = task[datastore.KEY];
+  t.is(task.description, description);
+});
 
-  it(`should mark a task as done`, () => {
-    const expected = `Task ${key.id} updated successfully.`;
-    assert.equal(run(`${cmd} done ${key.id}`, cwd), expected);
-    return datastore.get(key)
-      .then((results) => {
-        assert.equal(results[0].done, true);
-      });
-  });
+test.serial(`should mark a task as done`, async (t) => {
+  const expected = `Task ${key.id} updated successfully.`;
+  const output = await runAsync(`${cmd} done ${key.id}`, cwd);
+  t.is(output, expected);
+  const [task] = await datastore.get(key);
+  t.true(task.done);
+});
 
-  it(`should list tasks`, (done) => {
-    setTimeout(() => {
-      const output = run(`${cmd} list`, cwd);
-      assert.equal(output.includes(key.id), true);
-      done();
-    }, 5000);
-  });
+test.serial(`should list tasks`, async (t) => {
+  await tryTest(async () => {
+    const output = await runAsync(`${cmd} list`, cwd);
+    t.true(output.includes(key.id));
+  }).start();
+});
 
-  it(`should delete a task`, () => {
-    const expected = `Task ${key.id} deleted successfully.`;
-    assert.equal(run(`${cmd} delete ${key.id}`, cwd), expected);
-    return datastore.get(key)
-      .then((results) => {
-        assert.equal(results[0], undefined);
-      });
-  });
+test.serial(`should delete a task`, async (t) => {
+  const expected = `Task ${key.id} deleted successfully.`;
+  const output = await runAsync(`${cmd} delete ${key.id}`, cwd);
+  t.is(output, expected);
+  const [task] = await datastore.get(key);
+  t.is(task, undefined);
 });

From 2b020a2c4eb9dad8397f7e8a88cc02fe7fc38ff6 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Mon, 9 Jan 2017 14:02:52 -0800
Subject: [PATCH 090/820] Switch to Yarn for CI build. (#290)

---
 .../nodejs-datastore/samples/package.json     |    4 +-
 .../nodejs-datastore/samples/yarn.lock        | 1407 +++++++++++++++++
 2 files changed, 1409 insertions(+), 2 deletions(-)
 create mode 100644 handwritten/nodejs-datastore/samples/yarn.lock

diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 8d6ce649781..0c769a73c02 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -5,11 +5,11 @@
   "license": "Apache Version 2.0",
   "author": "Google Inc.",
   "scripts": {
-    "test": "cd ..; npm run st -- datastore/system-test/*.test.js"
+    "test": "cd ..; npm run st -- --verbose datastore/system-test/*.test.js"
   },
   "dependencies": {
     "@google-cloud/datastore": "0.6.0",
-    "yargs": "6.5.0"
+    "yargs": "6.6.0"
   },
   "engines": {
     "node": ">=4.3.2"
diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock
new file mode 100644
index 00000000000..2e6ca1052f1
--- /dev/null
+++ b/handwritten/nodejs-datastore/samples/yarn.lock
@@ -0,0 +1,1407 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@google-cloud/common@^0.9.0":
+  version "0.9.1"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.9.1.tgz#c72249589046fb4dd131b8ae7dbea88bb6bcf88c"
+  dependencies:
+    array-uniq "^1.0.2"
+    arrify "^1.0.0"
+    concat-stream "^1.5.0"
+    create-error-class "^3.0.2"
+    dot-prop "^2.4.0"
+    duplexify "^3.2.0"
+    ent "^2.2.0"
+    extend "^3.0.0"
+    google-auto-auth "^0.5.0"
+    google-proto-files "^0.8.0"
+    grpc "^1.0.0"
+    is "^3.0.1"
+    methmeth "^1.0.0"
+    modelo "^4.2.0"
+    request "^2.70.0"
+    retry-request "^1.3.0"
+    split-array-stream "^1.0.0"
+    stream-events "^1.0.1"
+    string-format-obj "^1.0.0"
+    through2 "^2.0.0"
+
+"@google-cloud/datastore@0.6.0":
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-0.6.0.tgz#ffaf78ba24efb086315044beb944d818c05bd724"
+  dependencies:
+    "@google-cloud/common" "^0.9.0"
+    arrify "^1.0.0"
+    concat-stream "^1.5.0"
+    create-error-class "^3.0.2"
+    extend "^3.0.0"
+    is "^3.0.1"
+    lodash.flatten "^4.2.0"
+    modelo "^4.2.0"
+    prop-assign "^1.0.0"
+    propprop "^0.3.0"
+    split-array-stream "^1.0.0"
+
+abbrev@1:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+
+ansi-regex@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+
+ansi-styles@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+aproba@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+
+are-we-there-yet@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+  dependencies:
+    delegates "^1.0.0"
+    readable-stream "^2.0.0 || ^1.1.13"
+
+arguejs@^0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/arguejs/-/arguejs-0.2.3.tgz#b6f939f5fe0e3cd1f3f93e2aa9262424bf312af7"
+
+array-uniq@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
+arrify@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+
+ascli@~1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc"
+  dependencies:
+    colour "~0.7.1"
+    optjs "~3.2.2"
+
+asn1@~0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+
+assert-plus@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+
+assert-plus@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
+async@^1.4.0:
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@^2.0.1, async@^2.1.2:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
+  dependencies:
+    lodash "^4.14.0"
+
+async@~1.4.2:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/async/-/async-1.4.2.tgz#6c9edcb11ced4f0dd2f2d40db0d49a109c088aab"
+
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
+aws-sign2@~0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+
+aws4@^1.2.1:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+
+balanced-match@^0.4.1:
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+base64url@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
+
+base64url@~0.0.4:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/base64url/-/base64url-0.0.6.tgz#9597b36b330db1c42477322ea87ea8027499b82b"
+
+base64url@~1.0.4:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/base64url/-/base64url-1.0.6.tgz#d64d375d68a7c640d912e2358d170dca5bb54681"
+  dependencies:
+    concat-stream "~1.4.7"
+    meow "~2.0.0"
+
+bcrypt-pbkdf@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+  dependencies:
+    tweetnacl "^0.14.3"
+
+bl@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
+  dependencies:
+    readable-stream "~2.0.5"
+
+block-stream@*:
+  version "0.0.9"
+  resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+  dependencies:
+    inherits "~2.0.0"
+
+boom@2.x.x:
+  version "2.10.1"
+  resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+  dependencies:
+    hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+  dependencies:
+    balanced-match "^0.4.1"
+    concat-map "0.0.1"
+
+buffer-equal-constant-time@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+
+buffer-shims@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+
+builtin-modules@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+bytebuffer@~5:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
+  dependencies:
+    long "~3"
+
+camelcase-keys@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-1.0.0.tgz#bd1a11bf9b31a1ce493493a930de1a0baf4ad7ec"
+  dependencies:
+    camelcase "^1.0.1"
+    map-obj "^1.0.0"
+
+camelcase@^1.0.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+
+camelcase@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+
+camelcase@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+
+capture-stack-trace@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
+
+caseless@~0.11.0:
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+
+chalk@^1.1.1:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+  dependencies:
+    ansi-styles "^2.2.1"
+    escape-string-regexp "^1.0.2"
+    has-ansi "^2.0.0"
+    strip-ansi "^3.0.0"
+    supports-color "^2.0.0"
+
+cliui@^3.0.3, cliui@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+  dependencies:
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+    wrap-ansi "^2.0.0"
+
+code-point-at@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+
+colour@~0.7.1:
+  version "0.7.1"
+  resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+  dependencies:
+    delayed-stream "~1.0.0"
+
+commander@^2.9.0:
+  version "2.9.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+  dependencies:
+    graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+concat-stream@^1.5.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+  dependencies:
+    inherits "^2.0.3"
+    readable-stream "^2.2.2"
+    typedarray "^0.0.6"
+
+concat-stream@~1.4.7:
+  version "1.4.10"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36"
+  dependencies:
+    inherits "~2.0.1"
+    readable-stream "~1.1.9"
+    typedarray "~0.0.5"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+core-util-is@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+create-error-class@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+  dependencies:
+    capture-stack-trace "^1.0.0"
+
+cryptiles@2.x.x:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+  dependencies:
+    boom "2.x.x"
+
+dashdash@^1.12.0:
+  version "1.14.1"
+  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+  dependencies:
+    assert-plus "^1.0.0"
+
+debug@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+  dependencies:
+    ms "0.7.1"
+
+decamelize@^1.1.1:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+deep-extend@~0.4.0:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
+delegates@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+dot-prop@^2.4.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-2.4.0.tgz#848e28f7f1d50740c6747ab3cb07670462b6f89c"
+  dependencies:
+    is-obj "^1.0.0"
+
+duplexify@^3.2.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
+  dependencies:
+    end-of-stream "1.0.0"
+    inherits "^2.0.1"
+    readable-stream "^2.0.0"
+    stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+  dependencies:
+    jsbn "~0.1.0"
+
+ecdsa-sig-formatter@^1.0.0:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1"
+  dependencies:
+    base64url "^2.0.0"
+    safe-buffer "^5.0.1"
+
+end-of-stream@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
+  dependencies:
+    once "~1.3.0"
+
+ent@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
+
+error-ex@^1.2.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+  dependencies:
+    is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+extend@^3.0.0, extend@~3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+
+extsprintf@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+
+find-up@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+  dependencies:
+    path-exists "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+forever-agent@~0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
+form-data@~1.0.0-rc4:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c"
+  dependencies:
+    async "^2.0.1"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.11"
+
+form-data@~2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.12"
+
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+fstream-ignore@~1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+  dependencies:
+    fstream "^1.0.0"
+    inherits "2"
+    minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+  dependencies:
+    graceful-fs "^4.1.2"
+    inherits "~2.0.0"
+    mkdirp ">=0.5 0"
+    rimraf "2"
+
+gauge@~2.7.1:
+  version "2.7.2"
+  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+  dependencies:
+    aproba "^1.0.3"
+    console-control-strings "^1.0.0"
+    has-unicode "^2.0.0"
+    object-assign "^4.1.0"
+    signal-exit "^3.0.0"
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+    supports-color "^0.2.0"
+    wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+  dependencies:
+    is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+
+get-stdin@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+
+getpass@^0.1.1:
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+  dependencies:
+    assert-plus "^1.0.0"
+
+glob@^5.0.10:
+  version "5.0.15"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+  dependencies:
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "2 || 3"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+glob@^7.0.5:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.2"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+google-auth-library@^0.9.10:
+  version "0.9.10"
+  resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.9.10.tgz#4993dc07bb4834b8ca0350213a6873a32c6051b9"
+  dependencies:
+    async "~1.4.2"
+    gtoken "^1.1.0"
+    jws "~3.0.0"
+    lodash.noop "~3.0.0"
+    request "~2.74.0"
+    string-template "~0.2.0"
+
+google-auto-auth@^0.5.0:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.5.2.tgz#4c9f38574e69fb55a3c516ab0415e9fa33e67602"
+  dependencies:
+    async "^2.1.2"
+    google-auth-library "^0.9.10"
+    object-assign "^3.0.0"
+    request "^2.79.0"
+
+google-p12-pem@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.1.tgz#66ef8946ee97e8da37f1beb1d8ec5c3be2ba4539"
+  dependencies:
+    node-forge "^0.6.46"
+
+google-proto-files@^0.8.0:
+  version "0.8.6"
+  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.8.6.tgz#a7c8ddccd2179690d270b0ebfc42994d56da0ee6"
+
+graceful-fs@^4.1.2:
+  version "4.1.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+
+"graceful-readlink@>= 1.0.0":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+
+grpc@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.0.1.tgz#e965544b5e56c998058102184e2ab1f27f123afd"
+  dependencies:
+    arguejs "^0.2.3"
+    lodash "^4.15.0"
+    nan "^2.0.0"
+    node-pre-gyp "^0.6.0"
+    protobufjs "^5.0.0"
+
+gtoken@^1.1.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.1.tgz#90153a547c2fc1cd24a4d3d2ab3b5aba0a26897a"
+  dependencies:
+    google-p12-pem "^0.1.0"
+    jws "^3.0.0"
+    mime "^1.2.11"
+    request "^2.72.0"
+
+har-validator@~2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+  dependencies:
+    chalk "^1.1.1"
+    commander "^2.9.0"
+    is-my-json-valid "^2.12.4"
+    pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+has-unicode@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+
+hawk@~3.1.3:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+  dependencies:
+    boom "2.x.x"
+    cryptiles "2.x.x"
+    hoek "2.x.x"
+    sntp "1.x.x"
+
+hoek@2.x.x:
+  version "2.16.3"
+  resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+
+hosted-git-info@^2.1.4:
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+
+http-signature@~1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+  dependencies:
+    assert-plus "^0.2.0"
+    jsprim "^1.2.2"
+    sshpk "^1.7.0"
+
+indent-string@^1.1.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b"
+  dependencies:
+    get-stdin "^4.0.1"
+    minimist "^1.1.0"
+    repeating "^1.1.0"
+
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+  dependencies:
+    once "^1.3.0"
+    wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+ini@~1.3.0:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+
+invert-kv@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+
+is-arrayish@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
+is-builtin-module@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+  dependencies:
+    builtin-modules "^1.0.0"
+
+is-finite@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+  dependencies:
+    number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+  dependencies:
+    number-is-nan "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+  version "2.15.0"
+  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+  dependencies:
+    generate-function "^2.0.0"
+    generate-object-property "^1.1.0"
+    jsonpointer "^4.0.0"
+    xtend "^4.0.0"
+
+is-obj@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
+is-property@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
+is-stream-ended@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.0.tgz#40f058df6b044ee598fee4df7dc1ec2bcdd8df60"
+
+is-typedarray@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
+is-utf8@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+
+is@^3.0.1:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/is/-/is-3.2.0.tgz#a362e3daf7df3fd8b7114115d624c5b7e1cb90f7"
+
+isarray@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
+isarray@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isstream@~0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
+jodid25519@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+  dependencies:
+    jsbn "~0.1.0"
+
+jsbn@~0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+
+json-schema@0.2.3:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
+json-stringify-safe@~5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
+jsonpointer@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+
+jsprim@^1.2.2:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+  dependencies:
+    extsprintf "1.0.2"
+    json-schema "0.2.3"
+    verror "1.3.6"
+
+jwa@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.0.2.tgz#fd79609f1e772e299dce8ddb76d00659dd83511f"
+  dependencies:
+    base64url "~0.0.4"
+    buffer-equal-constant-time "^1.0.1"
+    ecdsa-sig-formatter "^1.0.0"
+
+jws@^3.0.0, jws@~3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/jws/-/jws-3.0.0.tgz#da5f267897dd4e9cf8137979db33fc54a3c05418"
+  dependencies:
+    base64url "~1.0.4"
+    jwa "~1.0.0"
+
+lcid@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+  dependencies:
+    invert-kv "^1.0.0"
+
+load-json-file@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+  dependencies:
+    graceful-fs "^4.1.2"
+    parse-json "^2.2.0"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+    strip-bom "^2.0.0"
+
+lodash.flatten@^4.2.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+
+lodash.noop@~3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c"
+
+lodash@^4.14.0, lodash@^4.15.0:
+  version "4.17.4"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+
+long@~3:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
+
+map-obj@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+
+meow@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/meow/-/meow-2.0.0.tgz#8f530a8ecf5d40d3f4b4df93c3472900fba2a8f1"
+  dependencies:
+    camelcase-keys "^1.0.0"
+    indent-string "^1.1.0"
+    minimist "^1.1.0"
+    object-assign "^1.0.0"
+
+methmeth@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/methmeth/-/methmeth-1.1.0.tgz#e80a26618e52f5c4222861bb748510bd10e29089"
+
+mime-db@~1.25.0:
+  version "1.25.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+
+mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.7:
+  version "2.1.13"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+  dependencies:
+    mime-db "~1.25.0"
+
+mime@^1.2.11:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+  dependencies:
+    brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+
+minimist@^1.1.0, minimist@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+
+"mkdirp@>=0.5 0", mkdirp@~0.5.1:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+  dependencies:
+    minimist "0.0.8"
+
+modelo@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/modelo/-/modelo-4.2.0.tgz#3b4b420023a66ca7e32bdba16e710937e14d1b0b"
+
+ms@0.7.1:
+  version "0.7.1"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+
+nan@^2.0.0:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+
+node-forge@^0.6.46:
+  version "0.6.46"
+  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.46.tgz#04a8a1c336eb72ef6f434ba7c854d608916c328d"
+
+node-pre-gyp@^0.6.0:
+  version "0.6.32"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+  dependencies:
+    mkdirp "~0.5.1"
+    nopt "~3.0.6"
+    npmlog "^4.0.1"
+    rc "~1.1.6"
+    request "^2.79.0"
+    rimraf "~2.5.4"
+    semver "~5.3.0"
+    tar "~2.2.1"
+    tar-pack "~3.3.0"
+
+node-uuid@~1.4.7:
+  version "1.4.7"
+  resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
+
+nopt@~3.0.6:
+  version "3.0.6"
+  resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+  dependencies:
+    abbrev "1"
+
+normalize-package-data@^2.3.2:
+  version "2.3.5"
+  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+  dependencies:
+    hosted-git-info "^2.1.4"
+    is-builtin-module "^1.0.0"
+    semver "2 || 3 || 4 || 5"
+    validate-npm-package-license "^3.0.1"
+
+npmlog@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+  dependencies:
+    are-we-there-yet "~1.1.2"
+    console-control-strings "~1.1.0"
+    gauge "~2.7.1"
+    set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+
+oauth-sign@~0.8.1:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+
+object-assign@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-1.0.0.tgz#e65dc8766d3b47b4b8307465c8311da030b070a6"
+
+object-assign@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
+
+object-assign@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+
+once@^1.3.0, once@~1.3.0, once@~1.3.3:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+  dependencies:
+    wrappy "1"
+
+optjs@~3.2.2:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee"
+
+os-locale@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+  dependencies:
+    lcid "^1.0.0"
+
+parse-json@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+  dependencies:
+    error-ex "^1.2.0"
+
+path-exists@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+  dependencies:
+    pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-type@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+  dependencies:
+    graceful-fs "^4.1.2"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+pify@^2.0.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pinkie-promise@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+  dependencies:
+    pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+process-nextick-args@~1.0.6:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+
+prop-assign@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/prop-assign/-/prop-assign-1.0.0.tgz#9767a1fbfd7093908647a6e846d31b4feaa70459"
+
+propprop@^0.3.0:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/propprop/-/propprop-0.3.1.tgz#a049a3568b896440067d15d8ec9f33735e570178"
+
+protobufjs@^5.0.0:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.1.tgz#589ecdda1a555fd69df4699adc142d36f133aa0b"
+  dependencies:
+    ascli "~1"
+    bytebuffer "~5"
+    glob "^5.0.10"
+    yargs "^3.10.0"
+
+punycode@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+
+qs@~6.2.0:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
+
+qs@~6.3.0:
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+
+rc@~1.1.6:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+  dependencies:
+    deep-extend "~0.4.0"
+    ini "~1.3.0"
+    minimist "^1.2.0"
+    strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+  dependencies:
+    find-up "^1.0.0"
+    read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+  dependencies:
+    load-json-file "^1.0.0"
+    normalize-package-data "^2.3.2"
+    path-type "^1.0.0"
+
+readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.1.5, readable-stream@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+  dependencies:
+    buffer-shims "^1.0.0"
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    string_decoder "~0.10.x"
+    util-deprecate "~1.0.1"
+
+readable-stream@~1.1.9:
+  version "1.1.14"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "0.0.1"
+    string_decoder "~0.10.x"
+
+readable-stream@~2.0.5:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    string_decoder "~0.10.x"
+    util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+  dependencies:
+    buffer-shims "^1.0.0"
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    string_decoder "~0.10.x"
+    util-deprecate "~1.0.1"
+
+repeating@^1.1.0:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac"
+  dependencies:
+    is-finite "^1.0.0"
+
+request@2.76.0:
+  version "2.76.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.76.0.tgz#be44505afef70360a0436955106be3945d95560e"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    caseless "~0.11.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.1.1"
+    har-validator "~2.0.6"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    node-uuid "~1.4.7"
+    oauth-sign "~0.8.1"
+    qs "~6.3.0"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "~0.4.1"
+
+request@^2.70.0, request@^2.72.0, request@^2.79.0:
+  version "2.79.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    caseless "~0.11.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.1.1"
+    har-validator "~2.0.6"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    oauth-sign "~0.8.1"
+    qs "~6.3.0"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "~0.4.1"
+    uuid "^3.0.0"
+
+request@~2.74.0:
+  version "2.74.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    bl "~1.1.2"
+    caseless "~0.11.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~1.0.0-rc4"
+    har-validator "~2.0.6"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    node-uuid "~1.4.7"
+    oauth-sign "~0.8.1"
+    qs "~6.2.0"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "~0.4.1"
+
+require-directory@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
+require-main-filename@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+
+retry-request@^1.3.0:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-1.3.2.tgz#59ad24e71f8ae3f312d5f7b4bcf467a5e5a57bd6"
+  dependencies:
+    request "2.76.0"
+    through2 "^2.0.0"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+  version "2.5.4"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+  dependencies:
+    glob "^7.0.5"
+
+safe-buffer@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
+signal-exit@^3.0.0:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+
+sntp@1.x.x:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+  dependencies:
+    hoek "2.x.x"
+
+spdx-correct@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+  dependencies:
+    spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+
+spdx-license-ids@^1.0.2:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+
+split-array-stream@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/split-array-stream/-/split-array-stream-1.0.0.tgz#d5e4ffacd306161d69ed5252ff56d57e7762eaa2"
+  dependencies:
+    async "^1.4.0"
+    is-stream-ended "^0.1.0"
+
+sshpk@^1.7.0:
+  version "1.10.1"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+  dependencies:
+    asn1 "~0.2.3"
+    assert-plus "^1.0.0"
+    dashdash "^1.12.0"
+    getpass "^0.1.1"
+  optionalDependencies:
+    bcrypt-pbkdf "^1.0.0"
+    ecc-jsbn "~0.1.1"
+    jodid25519 "^1.0.0"
+    jsbn "~0.1.0"
+    tweetnacl "~0.14.0"
+
+stream-events@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.1.tgz#4fe7b2bbfcc53e6af31087e8c540483f412ce8c6"
+  dependencies:
+    stubs "^1.1.0"
+
+stream-shift@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+
+string-format-obj@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/string-format-obj/-/string-format-obj-1.1.0.tgz#7635610b1ef397013e8478be98a170e04983d068"
+
+string-template@~0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
+
+string-width@^1.0.1, string-width@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+  dependencies:
+    code-point-at "^1.0.0"
+    is-fullwidth-code-point "^1.0.0"
+    strip-ansi "^3.0.0"
+
+string_decoder@~0.10.x:
+  version "0.10.31"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
+stringstream@~0.0.4:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+  dependencies:
+    is-utf8 "^0.2.0"
+
+strip-json-comments@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+
+stubs@^1.1.0:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/stubs/-/stubs-1.1.2.tgz#945a08975016318762f8f7060731002ab2a0960c"
+
+supports-color@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+
+supports-color@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+tar-pack@~3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+  dependencies:
+    debug "~2.2.0"
+    fstream "~1.0.10"
+    fstream-ignore "~1.0.5"
+    once "~1.3.3"
+    readable-stream "~2.1.4"
+    rimraf "~2.5.1"
+    tar "~2.2.1"
+    uid-number "~0.0.6"
+
+tar@~2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+  dependencies:
+    block-stream "*"
+    fstream "^1.0.2"
+    inherits "2"
+
+through2@^2.0.0:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+  dependencies:
+    readable-stream "^2.1.5"
+    xtend "~4.0.1"
+
+tough-cookie@~2.3.0:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+  dependencies:
+    punycode "^1.4.1"
+
+tunnel-agent@~0.4.1:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+  version "0.14.5"
+  resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+
+typedarray@^0.0.6, typedarray@~0.0.5:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+
+uid-number@~0.0.6:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+
+util-deprecate@~1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+
+uuid@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+
+validate-npm-package-license@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+  dependencies:
+    spdx-correct "~1.0.0"
+    spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+  version "1.3.6"
+  resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+  dependencies:
+    extsprintf "1.0.2"
+
+which-module@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+
+wide-align@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+  dependencies:
+    string-width "^1.0.1"
+
+window-size@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
+
+wrap-ansi@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+  dependencies:
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+
+wrappy@1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
+xtend@^4.0.0, xtend@~4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+y18n@^3.2.0, y18n@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+
+yargs-parser@^4.2.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+  dependencies:
+    camelcase "^3.0.0"
+
+yargs@6.6.0:
+  version "6.6.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+  dependencies:
+    camelcase "^3.0.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^1.4.0"
+    read-pkg-up "^1.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^1.0.2"
+    which-module "^1.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^4.2.0"
+
+yargs@^3.10.0:
+  version "3.32.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
+  dependencies:
+    camelcase "^2.0.1"
+    cliui "^3.0.3"
+    decamelize "^1.1.1"
+    os-locale "^1.4.0"
+    string-width "^1.0.1"
+    window-size "^0.1.4"
+    y18n "^3.2.0"

From 71c4418be744f7b66501d8ad8255d327813a8e42 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 9 Jan 2017 20:44:57 -0500
Subject: [PATCH 091/820] update dependencies

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 0daf35c70d5..eb9686f2113 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,7 +50,7 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.9.0",
+    "@google-cloud/common": "^0.11.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From 26b97bd1c92faeb552b345400f63ace734ecd6b1 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Mon, 9 Jan 2017 20:50:13 -0800
Subject: [PATCH 092/820] Vision snippets. (#294)

---
 .../nodejs-datastore/samples/system-test/concepts.test.js     | 4 ++--
 .../nodejs-datastore/samples/system-test/error.test.js        | 2 +-
 .../nodejs-datastore/samples/system-test/quickstart.test.js   | 4 ++--
 .../nodejs-datastore/samples/system-test/tasks.test.js        | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
index 411c74ff564..80d0f39762f 100644
--- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
@@ -41,7 +41,7 @@ test.before((t) => {
   query = new Query(projectId);
 });
 
-test.after(async () => {
+test.after.always(async () => {
   const datastore = transaction.datastore;
   const query = datastore.createQuery(`Task`).select(`__key__`);
   const [entities] = await datastore.runQuery(query);
@@ -49,7 +49,7 @@ test.after(async () => {
 });
 
 test.beforeEach(stubConsole);
-test.afterEach(restoreConsole);
+test.afterEach.always(restoreConsole);
 
 // Transactions
 test.serial(`performs a transactional update`, (t) => transaction.testTransactionalUpdate(t));
diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js
index cab26d40ef8..8499e5602ee 100644
--- a/handwritten/nodejs-datastore/samples/system-test/error.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js
@@ -20,7 +20,7 @@ require(`../../system-test/_setup`);
 const error = require('../error');
 
 test.beforeEach(stubConsole);
-test.afterEach(restoreConsole);
+test.afterEach.always(restoreConsole);
 
 test(`should have an error`, async (t) => {
   const err = await t.throws(error.runQuery());
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index 4ad5cc9a8df..e64a905a21c 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -29,14 +29,14 @@ test.before(async () => {
     await datastore.delete(key);
   } catch (err) {} // ignore error
 });
-test.after(async () => {
+test.after.always(async () => {
   try {
     await datastore.delete(key);
   } catch (err) {} // ignore error
 });
 
 test.beforeEach(stubConsole);
-test.afterEach(restoreConsole);
+test.afterEach.always(restoreConsole);
 
 test.cb(`should get a task from Datastore`, (t) => {
   const datastoreMock = {
diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
index 3da66a11d57..503d5c205f4 100644
--- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
@@ -26,14 +26,14 @@ const cwd = path.join(__dirname, `..`);
 const description = `description`;
 let key;
 
-test.after(async () => {
+test.after.always(async () => {
   try {
     await datastore.delete(key);
   } catch (err) {} // ignore error
 });
 
 test.beforeEach(stubConsole);
-test.afterEach(restoreConsole);
+test.afterEach.always(restoreConsole);
 
 test.serial(`should add a task`, async (t) => {
   const expected = /^Task (\d+) created successfully.$/;

From f7287c51dd0d9dac894a280ab33900333a53d9e0 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Tue, 31 Jan 2017 11:23:00 -0500
Subject: [PATCH 093/820] datastore: incorporate @google-cloud/common-grpc
 (#1936)

---
 handwritten/nodejs-datastore/package.json  | 3 ++-
 handwritten/nodejs-datastore/src/index.js  | 5 +++--
 handwritten/nodejs-datastore/test/index.js | 4 +++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index eb9686f2113..b1f49fab6c3 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,7 +50,8 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.11.0",
+    "@google-cloud/common": "^0.12.0",
+    "@google-cloud/common-grpc": "^0.1.1",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index cb76d2574a8..2a21195d760 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -22,6 +22,7 @@
 
 var arrify = require('arrify');
 var common = require('@google-cloud/common');
+var commonGrpc = require('@google-cloud/common-grpc');
 var is = require('is');
 var modelo = require('modelo');
 
@@ -318,10 +319,10 @@ function Datastore(options) {
     }
   };
 
-  common.GrpcService.call(this, config, options);
+  commonGrpc.Service.call(this, config, options);
 }
 
-modelo.inherits(Datastore, DatastoreRequest, common.GrpcService);
+modelo.inherits(Datastore, DatastoreRequest, commonGrpc.Service);
 
 /**
  * Helper function to get a Datastore Double object.
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index 81f74849cb2..a5801753b0c 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -70,9 +70,11 @@ describe('Datastore', function() {
   before(function() {
     Datastore = proxyquire('../', {
       '@google-cloud/common': {
-        GrpcService: FakeGrpcService,
         util: fakeUtil
       },
+      '@google-cloud/common-grpc': {
+        Service: FakeGrpcService
+      },
       './entity.js': fakeEntity,
       './query.js': FakeQuery,
       './transaction.js': FakeTransaction

From ccebc171b72bc846caadaee0ccf492549d98ff53 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Thu, 2 Feb 2017 15:41:14 -0500
Subject: [PATCH 094/820] datastore @ 0.7.0 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index b1f49fab6c3..9a2891c3c15 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.6.0",
+  "version": "0.7.0",
   "author": "Google Inc.",
   "description": "Google Cloud Datastore Client Library for Node.js",
   "contributors": [

From ccb77a1d127d2856110c41eb01bf33b3d04e79ab Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Mon, 6 Feb 2017 14:59:32 -0800
Subject: [PATCH 095/820] Update dependencies.

---
 .../nodejs-datastore/samples/package.json     |  2 +-
 .../nodejs-datastore/samples/yarn.lock        | 89 +++++++++++--------
 2 files changed, 55 insertions(+), 36 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 0c769a73c02..0c0d518f14d 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -8,7 +8,7 @@
     "test": "cd ..; npm run st -- --verbose datastore/system-test/*.test.js"
   },
   "dependencies": {
-    "@google-cloud/datastore": "0.6.0",
+    "@google-cloud/datastore": "0.7.0",
     "yargs": "6.6.0"
   },
   "engines": {
diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock
index 2e6ca1052f1..62667c2084b 100644
--- a/handwritten/nodejs-datastore/samples/yarn.lock
+++ b/handwritten/nodejs-datastore/samples/yarn.lock
@@ -2,36 +2,51 @@
 # yarn lockfile v1
 
 
-"@google-cloud/common@^0.9.0":
-  version "0.9.1"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.9.1.tgz#c72249589046fb4dd131b8ae7dbea88bb6bcf88c"
+"@google-cloud/common-grpc@^0.1.1":
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.1.3.tgz#fe692a1df214b0b8dc25ae96ba96990dc9c18b98"
   dependencies:
-    array-uniq "^1.0.2"
-    arrify "^1.0.0"
-    concat-stream "^1.5.0"
+    "@google-cloud/common" "^0.12.0"
+    dot-prop "^2.4.0"
+    duplexify "^3.5.0"
+    extend "^3.0.0"
+    google-proto-files "^0.8.6"
+    grpc "^1.1.1"
+    is "^3.2.0"
+    retry-request "^1.3.2"
+    through2 "^2.0.3"
+
+"@google-cloud/common@^0.12.0":
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.12.0.tgz#b1cb0922c70f7e5273e402b0a6ae71de2f32abc3"
+  dependencies:
+    array-uniq "^1.0.3"
+    arrify "^1.0.1"
+    concat-stream "^1.6.0"
     create-error-class "^3.0.2"
     dot-prop "^2.4.0"
-    duplexify "^3.2.0"
+    duplexify "^3.5.0"
     ent "^2.2.0"
     extend "^3.0.0"
-    google-auto-auth "^0.5.0"
-    google-proto-files "^0.8.0"
-    grpc "^1.0.0"
-    is "^3.0.1"
-    methmeth "^1.0.0"
+    google-auto-auth "^0.5.2"
+    google-proto-files "^0.8.6"
+    is "^3.2.0"
+    log-driver "^1.2.5"
+    methmeth "^1.1.0"
     modelo "^4.2.0"
-    request "^2.70.0"
-    retry-request "^1.3.0"
+    request "^2.79.0"
+    retry-request "^1.3.2"
     split-array-stream "^1.0.0"
     stream-events "^1.0.1"
-    string-format-obj "^1.0.0"
-    through2 "^2.0.0"
+    string-format-obj "^1.1.0"
+    through2 "^2.0.3"
 
-"@google-cloud/datastore@0.6.0":
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-0.6.0.tgz#ffaf78ba24efb086315044beb944d818c05bd724"
+"@google-cloud/datastore@0.7.0":
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-0.7.0.tgz#d7f7888e16cd3903bec6e8b5a2b0aefdfa82a154"
   dependencies:
-    "@google-cloud/common" "^0.9.0"
+    "@google-cloud/common" "^0.12.0"
+    "@google-cloud/common-grpc" "^0.1.1"
     arrify "^1.0.0"
     concat-stream "^1.5.0"
     create-error-class "^3.0.2"
@@ -70,11 +85,11 @@ arguejs@^0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/arguejs/-/arguejs-0.2.3.tgz#b6f939f5fe0e3cd1f3f93e2aa9262424bf312af7"
 
-array-uniq@^1.0.2:
+array-uniq@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
 
-arrify@^1.0.0:
+arrify@^1.0.0, arrify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
 
@@ -260,7 +275,7 @@ concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 
-concat-stream@^1.5.0:
+concat-stream@^1.5.0, concat-stream@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
   dependencies:
@@ -330,7 +345,7 @@ dot-prop@^2.4.0:
   dependencies:
     is-obj "^1.0.0"
 
-duplexify@^3.2.0:
+duplexify@^3.5.0:
   version "3.5.0"
   resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
   dependencies:
@@ -498,7 +513,7 @@ google-auth-library@^0.9.10:
     request "~2.74.0"
     string-template "~0.2.0"
 
-google-auto-auth@^0.5.0:
+google-auto-auth@^0.5.2:
   version "0.5.2"
   resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.5.2.tgz#4c9f38574e69fb55a3c516ab0415e9fa33e67602"
   dependencies:
@@ -513,7 +528,7 @@ google-p12-pem@^0.1.0:
   dependencies:
     node-forge "^0.6.46"
 
-google-proto-files@^0.8.0:
+google-proto-files@^0.8.6:
   version "0.8.6"
   resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.8.6.tgz#a7c8ddccd2179690d270b0ebfc42994d56da0ee6"
 
@@ -525,9 +540,9 @@ graceful-fs@^4.1.2:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
 
-grpc@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.0.1.tgz#e965544b5e56c998058102184e2ab1f27f123afd"
+grpc@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.1.1.tgz#f8fe5fc984e7d4d6ab0c19259a7d232c95e142bc"
   dependencies:
     arguejs "^0.2.3"
     lodash "^4.15.0"
@@ -666,7 +681,7 @@ is-utf8@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
 
-is@^3.0.1:
+is@^3.0.1, is@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/is/-/is-3.2.0.tgz#a362e3daf7df3fd8b7114115d624c5b7e1cb90f7"
 
@@ -755,6 +770,10 @@ lodash@^4.14.0, lodash@^4.15.0:
   version "4.17.4"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 
+log-driver@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056"
+
 long@~3:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
@@ -772,7 +791,7 @@ meow@~2.0.0:
     minimist "^1.1.0"
     object-assign "^1.0.0"
 
-methmeth@^1.0.0:
+methmeth@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/methmeth/-/methmeth-1.1.0.tgz#e80a26618e52f5c4222861bb748510bd10e29089"
 
@@ -1074,7 +1093,7 @@ request@2.76.0:
     tough-cookie "~2.3.0"
     tunnel-agent "~0.4.1"
 
-request@^2.70.0, request@^2.72.0, request@^2.79.0:
+request@^2.72.0, request@^2.79.0:
   version "2.79.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
   dependencies:
@@ -1133,7 +1152,7 @@ require-main-filename@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
 
-retry-request@^1.3.0:
+retry-request@^1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-1.3.2.tgz#59ad24e71f8ae3f312d5f7b4bcf467a5e5a57bd6"
   dependencies:
@@ -1214,7 +1233,7 @@ stream-shift@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
 
-string-format-obj@^1.0.0:
+string-format-obj@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/string-format-obj/-/string-format-obj-1.1.0.tgz#7635610b1ef397013e8478be98a170e04983d068"
 
@@ -1287,7 +1306,7 @@ tar@~2.2.1:
     fstream "^1.0.2"
     inherits "2"
 
-through2@^2.0.0:
+through2@^2.0.0, through2@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
   dependencies:

From cc67f80759d96f7d2b175c3f0f9facf68d8b4a65 Mon Sep 17 00:00:00 2001
From: Jun Mukai 
Date: Fri, 24 Feb 2017 08:22:38 -0800
Subject: [PATCH 096/820] Creates the new x-goog-api-client header. (#2020)

This will send x-goog-api-client with the following format:
gl-node/(node version) gccl/(library version) grpc/(grpc version)

We will use this information for future tracking.

The GAPIC autogen files will have a slightly different format,
and that will be addressed later. This PR only changes the
APIs using gRPC without the GAPIC.
---
 handwritten/nodejs-datastore/src/index.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 2a21195d760..ead7d506b2c 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -23,6 +23,7 @@
 var arrify = require('arrify');
 var common = require('@google-cloud/common');
 var commonGrpc = require('@google-cloud/common-grpc');
+var extend = require('extend');
 var is = require('is');
 var modelo = require('modelo');
 
@@ -300,6 +301,10 @@ function Datastore(options) {
     return new Datastore(options);
   }
 
+  options = extend({}, options, {
+    libVersion: require('../package.json').version
+  });
+
   this.defaultBaseUrl_ = 'datastore.googleapis.com';
   this.determineBaseUrl_(options.apiEndpoint);
 

From 909fb5107fcc2fa97d5f07d4622bbf2e9e6f56e9 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 24 Feb 2017 11:23:48 -0500
Subject: [PATCH 097/820] Revert "Creates the new x-goog-api-client header."
 (#2024)

---
 handwritten/nodejs-datastore/src/index.js | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index ead7d506b2c..2a21195d760 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -23,7 +23,6 @@
 var arrify = require('arrify');
 var common = require('@google-cloud/common');
 var commonGrpc = require('@google-cloud/common-grpc');
-var extend = require('extend');
 var is = require('is');
 var modelo = require('modelo');
 
@@ -301,10 +300,6 @@ function Datastore(options) {
     return new Datastore(options);
   }
 
-  options = extend({}, options, {
-    libVersion: require('../package.json').version
-  });
-
   this.defaultBaseUrl_ = 'datastore.googleapis.com';
   this.determineBaseUrl_(options.apiEndpoint);
 

From 59279eb67dd7729727e8eb3cc8e40feb3f6aa1da Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Thu, 2 Mar 2017 16:02:00 -0500
Subject: [PATCH 098/820] datastore: fix bad doc link (#2043)

---
 handwritten/nodejs-datastore/src/index.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 2a21195d760..46a7224db3e 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -102,7 +102,7 @@ var Transaction = require('./transaction.js');
  * // can be used to model relationships. The simplest key has a string `kind`
  * // value, and either a numeric `id` value, or a string `name` value.
  * //
- * // A single record can be retrieved with {module:datastore/key} and
+ * // A single record can be retrieved with {module:datastore#key} and
  * // {module:datastore#get}.
  * //-
  * var key = datastore.key(['Company', 'Google']);

From acf17e67349c806e575f5e313b791c81a9b67af1 Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Thu, 2 Mar 2017 20:27:44 -0500
Subject: [PATCH 099/820] docs: change Google Cloud to Cloud (#1995)

---
 handwritten/nodejs-datastore/README.md    | 8 ++++----
 handwritten/nodejs-datastore/package.json | 2 +-
 handwritten/nodejs-datastore/src/index.js | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index 6241d31d977..dd036f699af 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -1,12 +1,12 @@
 # @google-cloud/datastore ([Beta][versioning])
-> Google Cloud Datastore Client Library for Node.js
+> Cloud Datastore Client Library for Node.js
 
 *Looking for more Google APIs than just Datastore? You might want to check out [`google-cloud`][google-cloud].*
 
 - [API Documentation][gcloud-datastore-docs]
 - [Official Documentation][cloud-datastore-docs]
 
-*Follow the [activation instructions][cloud-datastore-activation] to use the Google Cloud Datastore API with your project.*
+*Follow the [activation instructions][cloud-datastore-activation] to use the Cloud Datastore API with your project.*
 
 ```sh
 $ npm install --save @google-cloud/datastore
@@ -67,7 +67,7 @@ var datastore = require('@google-cloud/datastore')({
 
 ## Authentication
 
-It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Google Cloud services.
+It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Cloud services.
 
 ### On Google Cloud Platform
 
@@ -85,7 +85,7 @@ If you are not running this client on Google Cloud Platform, you need a Google D
 1. Visit the [Google Developers Console][dev-console].
 2. Create a new project or click on an existing project.
 3. Navigate to  **APIs & auth** > **APIs section** and turn on the following APIs (you may need to enable billing in order to use these services):
-  * Google Cloud Datastore API
+  * Cloud Datastore API
 4. Navigate to **APIs & auth** >  **Credentials** and then:
   * If you want to use a new service account key, click on **Create credentials** and select **Service account key**. After the account key is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests.
   * If you want to generate a new service account key for an existing service account, click on **Generate new JSON key** and download the JSON key file.
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 9a2891c3c15..1e7499f79e0 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -2,7 +2,7 @@
   "name": "@google-cloud/datastore",
   "version": "0.7.0",
   "author": "Google Inc.",
-  "description": "Google Cloud Datastore Client Library for Node.js",
+  "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [
     {
       "name": "Burcu Dogan",
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 46a7224db3e..700cb686472 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -55,7 +55,7 @@ var Transaction = require('./transaction.js');
  * @alias module:datastore
  * @mixes module:datastore/request
  *
- * @resource [Google Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview}
+ * @resource [Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview}
  *
  * @param {object=} options - [Configuration object](#/docs).
  * @param {string=} options.apiEndpoint - Override the default API endpoint used

From fa928fc0e5f4f133157f22553934d81b7512f48b Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 10 Mar 2017 10:14:58 -0500
Subject: [PATCH 100/820] datastore: support long entity IDs (#1413)

---
 handwritten/nodejs-datastore/src/entity.js    | 57 +++++++++++--------
 handwritten/nodejs-datastore/src/index.js     | 20 +++++++
 .../nodejs-datastore/system-test/datastore.js | 22 +++++++
 handwritten/nodejs-datastore/test/entity.js   | 29 +++++-----
 handwritten/nodejs-datastore/test/request.js  |  4 +-
 5 files changed, 92 insertions(+), 40 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js
index ee9ae89f150..51676e67813 100644
--- a/handwritten/nodejs-datastore/src/entity.js
+++ b/handwritten/nodejs-datastore/src/entity.js
@@ -45,7 +45,7 @@ var InvalidKeyError = createErrorClass('InvalidKey', function(opts) {
 entity.KEY_SYMBOL = Symbol('KEY');
 
 /**
- * Build a Datastore Double object.
+ * Build a Datastore Double object. For long doubles, a string can be provided.
  *
  * @constructor
  * @param {number} value - The double value.
@@ -60,16 +60,16 @@ function Double(value) {
 entity.Double = Double;
 
 /**
- * Build a Datastore Int object.
+ * Build a Datastore Int object. For long integers, a string can be provided.
  *
  * @constructor
- * @param {number} value - The integer value.
+ * @param {number|string} value - The integer value.
  *
  * @example
  * var anInt = new Int(7);
  */
 function Int(value) {
-  this.value = value;
+  this.value = value.toString();
 }
 
 entity.Int = Int;
@@ -116,8 +116,8 @@ function Key(options) {
   if (options.path.length % 2 === 0) {
     var identifier = options.path.pop();
 
-    if (is.number(identifier)) {
-      this.id = identifier;
+    if (is.number(identifier) || identifier instanceof entity.Int) {
+      this.id = identifier.value || identifier;
     } else if (is.string(identifier)) {
       this.name = identifier;
     }
@@ -467,11 +467,15 @@ function keyFromKeyProto(keyProto) {
   }
 
   keyProto.path.forEach(function(path, index) {
-    var id = path.name || Number(path.id);
-
     keyOptions.path.push(path.kind);
 
-    if (id) {
+    var id = path[path.id_type];
+
+    if (path.id_type === 'id') {
+      id = new entity.Int(id);
+    }
+
+    if (is.defined(id)) {
       keyOptions.path.push(id);
     } else if (index < keyProto.path.length - 1) {
       throw new InvalidKeyError({
@@ -503,7 +507,7 @@ entity.keyFromKeyProto = keyFromKeyProto;
  * // }
  */
 function keyToKeyProto(key) {
-  if (!is.string(key.path[0])) {
+  if (is.undefined(key.kind)) {
     throw new InvalidKeyError({
       code: 'MISSING_KIND'
     });
@@ -519,28 +523,31 @@ function keyToKeyProto(key) {
     };
   }
 
-  for (var i = 0; i < key.path.length; i += 2) {
-    var pathElement = {
-      kind: key.path[i]
-    };
+  var numKeysWalked = 0;
 
-    var value = key.path[i + 1];
-
-    if (value) {
-      if (is.number(value)) {
-        pathElement.id = value;
-      } else {
-        pathElement.name = value;
-      }
-    } else if (i < key.path.length - 2) {
+  // Reverse-iterate over the Key objects.
+  do {
+    if (numKeysWalked > 0 && is.undefined(key.id) && is.undefined(key.name)) {
       // This isn't just an incomplete key. An ancestor key is incomplete.
       throw new InvalidKeyError({
         code: 'MISSING_ANCESTOR_ID'
       });
     }
 
-    keyProto.path.push(pathElement);
-  }
+    var pathElement = {
+      kind: key.kind
+    };
+
+    if (is.defined(key.id)) {
+      pathElement.id = key.id;
+    }
+
+    if (is.defined(key.name)) {
+      pathElement.name = key.name;
+    }
+
+    keyProto.path.unshift(pathElement);
+  } while ((key = key.parent) && ++numKeysWalked);
 
   return keyProto;
 }
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 700cb686472..fdf2d943ec0 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -360,11 +360,22 @@ Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordindates) {
 /**
  * Helper function to get a Datastore Integer object.
  *
+ * This is also useful when using an ID outside the bounds of a JavaScript
+ * Number object.
+ *
  * @param {number} value - The integer value.
  * @return {object}
  *
  * @example
  * var sevenInteger = datastore.int(7);
+ *
+ * //-
+ * // Create an Int to support long Key IDs.
+ * //-
+ * var key = datastore.key([
+ *   'Kind',
+ *   datastore.int('100000000000001234')
+ * ]);
  */
 Datastore.prototype.int = Datastore.int = function(value) {
   return new entity.Int(value);
@@ -461,6 +472,15 @@ Datastore.prototype.createQuery = function(namespace, kind) {
  * var key = datastore.key(['Company', 123]);
  *
  * //-
+ * // If the ID integer is outside the bounds of a JavaScript Number object,
+ * // create an Int.
+ * //-
+ * var key = datastore.key([
+ *   'Company',
+ *   datastore.int('100000000000001234')
+ * ]);
+ *
+ * //-
  * // Create a complete key with a kind value of `Company` and name `Google`.
  * // Note: `id` is used for numeric identifiers and `name` is used otherwise.
  * //-
diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js
index 85e520e0786..533f6317cc3 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.js
+++ b/handwritten/nodejs-datastore/system-test/datastore.js
@@ -181,6 +181,28 @@ describe('Datastore', function() {
       });
     });
 
+    it('should save and get with a string ID', function(done) {
+      var longIdKey = datastore.key([
+        'Post',
+        datastore.int('100000000000001234')
+      ]);
+
+      datastore.save({
+        key: longIdKey,
+        data: {
+          test: true
+        }
+      }, function(err) {
+        assert.ifError(err);
+
+        datastore.get(longIdKey, function(err, entity) {
+          assert.ifError(err);
+          assert.strictEqual(entity.test, true);
+          done();
+        });
+      });
+    });
+
     it('should fail explicitly set second insert on save', function(done) {
       var postKey = datastore.key('Post');
 
diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js
index a97ace5433f..3c50d19bf1a 100644
--- a/handwritten/nodejs-datastore/test/entity.js
+++ b/handwritten/nodejs-datastore/test/entity.js
@@ -48,21 +48,12 @@ describe('entity', function() {
     });
   });
 
-  describe('Double', function() {
-    it('should store the value', function() {
-      var value = 8.3;
-
-      var double = new entity.Double(value);
-      assert.strictEqual(double.value, value);
-    });
-  });
-
   describe('Int', function() {
-    it('should store the value', function() {
+    it('should store the stringified value', function() {
       var value = 8;
 
       var int = new entity.Int(value);
-      assert.strictEqual(int.value, value);
+      assert.strictEqual(int.value, value.toString());
     });
   });
 
@@ -97,6 +88,12 @@ describe('entity', function() {
       assert.strictEqual(key.id, id);
     });
 
+    it('should assign the ID from an Int', function() {
+      var id = new entity.Int(11);
+      var key = new entity.Key({ path: ['Kind', id] });
+      assert.strictEqual(key.id, id.value);
+    });
+
     it('should assign the name', function() {
       var name = 'name';
       var key = new entity.Key({ path: ['Kind', name] });
@@ -607,10 +604,12 @@ describe('entity', function() {
       },
       path: [
         {
+          id_type: 'id',
           kind: 'Kind',
           id: '111'
         },
         {
+          id_type: 'name',
           kind: 'Kind2',
           name: 'name'
         }
@@ -632,7 +631,7 @@ describe('entity', function() {
           namespace: NAMESPACE,
           path: [
             'Kind',
-            111,
+            new entity.Int(111),
             'Kind2',
             'name'
           ]
@@ -683,7 +682,7 @@ describe('entity', function() {
   describe('keyToKeyProto', function() {
     it('should handle hierarchical key definitions', function() {
       var key = new entity.Key({
-        path: ['Kind1', 1, 'Kind2', 'name']
+        path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)]
       });
 
       var keyProto = entity.keyToKeyProto(key);
@@ -697,6 +696,10 @@ describe('entity', function() {
       assert.strictEqual(keyProto.path[1].kind, 'Kind2');
       assert.strictEqual(keyProto.path[1].id, undefined);
       assert.strictEqual(keyProto.path[1].name, 'name');
+
+      assert.strictEqual(keyProto.path[2].kind, 'Kind3');
+      assert.strictEqual(keyProto.path[2].id, new entity.Int(3).value);
+      assert.strictEqual(keyProto.path[2].name, undefined);
     });
 
     it('should detect the namespace of the hierarchical keys', function() {
diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js
index ed891e86ad4..0e9aa38398b 100644
--- a/handwritten/nodejs-datastore/test/request.js
+++ b/handwritten/nodejs-datastore/test/request.js
@@ -152,7 +152,7 @@ describe('Request', function() {
     var incompleteKey;
     var apiResponse = {
       keys: [
-        { path: [{ kind: 'Kind', id: 123 }] }
+        { path: [{ id_type: 'id', kind: 'Kind', id: 123 }] }
       ]
     };
 
@@ -173,7 +173,7 @@ describe('Request', function() {
       request.allocateIds(incompleteKey, 1, function(err, keys) {
         assert.ifError(err);
         var generatedKey = keys[0];
-        assert.strictEqual(generatedKey.path.pop(), 123);
+        assert.strictEqual(generatedKey.path.pop(), '123');
         done();
       });
     });

From 715005754ce9722d9a6c801777debf9cd54f192f Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 13 Mar 2017 15:01:18 -0400
Subject: [PATCH 101/820] update @google-cloud/common-grpc deps

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 1e7499f79e0..52c88b3c7b5 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -51,7 +51,7 @@
   ],
   "dependencies": {
     "@google-cloud/common": "^0.12.0",
-    "@google-cloud/common-grpc": "^0.1.1",
+    "@google-cloud/common-grpc": "^0.2.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From 419f67e85cf8a815e4d6bc6aa646b5cd207d5c83 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 13 Mar 2017 19:08:25 -0400
Subject: [PATCH 102/820] update @google-cloud/common-grpc deps

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 52c88b3c7b5..4c7acc1e0a5 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -51,7 +51,7 @@
   ],
   "dependencies": {
     "@google-cloud/common": "^0.12.0",
-    "@google-cloud/common-grpc": "^0.2.0",
+    "@google-cloud/common-grpc": "^0.2.1",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From a6a9fc405c2d145ea21ae678feabf87e06d16fe0 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Tue, 14 Mar 2017 15:06:10 -0400
Subject: [PATCH 103/820] datastore @ 0.7.1 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 4c7acc1e0a5..530d3dabd3c 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.7.0",
+  "version": "0.7.1",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 3124b0056c8e779c56ddfa4fafb06d37c93322f0 Mon Sep 17 00:00:00 2001
From: Jun Mukai 
Date: Wed, 15 Mar 2017 08:30:16 -0700
Subject: [PATCH 104/820] Introduce autogenerated Datastore client. (#2082)

---
 handwritten/nodejs-datastore/package.json     |   1 +
 handwritten/nodejs-datastore/src/index.js     |   1 +
 .../src/v1/datastore_client.js                | 503 ++++++++++++++++++
 .../src/v1/datastore_client_config.json       |  58 ++
 handwritten/nodejs-datastore/src/v1/index.js  |  33 ++
 handwritten/nodejs-datastore/test/index.js    |   9 +-
 6 files changed, 604 insertions(+), 1 deletion(-)
 create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client.js
 create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client_config.json
 create mode 100644 handwritten/nodejs-datastore/src/v1/index.js

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 530d3dabd3c..2f6aae6bd93 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -56,6 +56,7 @@
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",
     "extend": "^3.0.0",
+    "google-gax": "^0.12.3",
     "is": "^3.0.1",
     "lodash.flatten": "^4.2.0",
     "modelo": "^4.2.0",
diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index fdf2d943ec0..327c5064d17 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -545,3 +545,4 @@ Datastore.Query = Query;
 Datastore.Transaction = Transaction;
 
 module.exports = Datastore;
+module.exports.v1 = require('./v1');
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js
new file mode 100644
index 00000000000..9d9408ace66
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js
@@ -0,0 +1,503 @@
+/*
+ * Copyright 2017, Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * EDITING INSTRUCTIONS
+ * This file was generated from the file
+ * https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto,
+ * and updates to that file get reflected here through a refresh process.
+ * For the short term, the refresh process will only be runnable by Google
+ * engineers.
+ *
+ * The only allowed edits are to method and file documentation. A 3-way
+ * merge preserves those additions if the generated source changes.
+ */
+/* TODO: introduce line-wrapping so that it never exceeds the limit. */
+/* jscs: disable maximumLineLength */
+'use strict';
+
+var configData = require('./datastore_client_config');
+var extend = require('extend');
+var gax = require('google-gax');
+
+var SERVICE_ADDRESS = 'datastore.googleapis.com';
+
+var DEFAULT_SERVICE_PORT = 443;
+
+var CODE_GEN_NAME_VERSION = 'gapic/0.7.1';
+
+/**
+ * The scopes needed to make gRPC calls to all of the methods defined in
+ * this service.
+ */
+var ALL_SCOPES = [
+  'https://www.googleapis.com/auth/cloud-platform',
+  'https://www.googleapis.com/auth/datastore'
+];
+
+/**
+ * Each RPC normalizes the partition IDs of the keys in its input entities,
+ * and always returns entities with keys with normalized partition IDs.
+ * This applies to all keys and entities, including those in values, except keys
+ * with both an empty path and an empty or unset partition ID. Normalization of
+ * input keys sets the project ID (if not already set) to the project ID from
+ * the request.
+ *
+ * This will be created through a builder function which can be obtained by the module.
+ * See the following example of how to initialize the module and how to access to the builder.
+ * @see {@link datastoreClient}
+ *
+ * @example
+ * var datastoreV1 = require('@google-cloud/datastore').v1({
+ *   // optional auth parameters.
+ * });
+ * var client = datastoreV1.datastoreClient();
+ *
+ * @class
+ */
+function DatastoreClient(gaxGrpc, grpcClients, opts) {
+  opts = extend({
+    servicePath: SERVICE_ADDRESS,
+    port: DEFAULT_SERVICE_PORT,
+    clientConfig: {}
+  }, opts);
+
+  var googleApiClient = [
+    'gl-node/' + process.versions.node
+  ];
+  if (opts.libName && opts.libVersion) {
+    googleApiClient.push(opts.libName + '/' + opts.libVersion);
+  }
+  googleApiClient.push(
+    CODE_GEN_NAME_VERSION,
+    'gax/' + gax.version,
+    'grpc/' + gaxGrpc.grpcVersion
+  );
+
+  var defaults = gaxGrpc.constructSettings(
+      'google.datastore.v1.Datastore',
+      configData,
+      opts.clientConfig,
+      {'x-goog-api-client': googleApiClient.join(' ')});
+
+  var self = this;
+
+  this.auth = gaxGrpc.auth;
+  var datastoreStub = gaxGrpc.createStub(
+      grpcClients.google.datastore.v1.Datastore,
+      opts);
+  var datastoreStubMethods = [
+    'lookup',
+    'runQuery',
+    'beginTransaction',
+    'commit',
+    'rollback',
+    'allocateIds'
+  ];
+  datastoreStubMethods.forEach(function(methodName) {
+    self['_' + methodName] = gax.createApiCall(
+      datastoreStub.then(function(datastoreStub) {
+        return function() {
+          var args = Array.prototype.slice.call(arguments, 0);
+          return datastoreStub[methodName].apply(datastoreStub, args);
+        };
+      }),
+      defaults[methodName],
+      null);
+  });
+}
+
+/**
+ * Get the project ID used by this class.
+ * @aram {function(Error, string)} callback - the callback to be called with
+ *   the current project Id.
+ */
+DatastoreClient.prototype.getProjectId = function(callback) {
+  return this.auth.getProjectId(callback);
+};
+
+// Service calls
+
+/**
+ * Looks up entities by key.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {Object} request.readOptions
+ *   The options for this lookup request.
+ *
+ *   This object should have the same structure as [ReadOptions]{@link ReadOptions}
+ * @param {Object[]} request.keys
+ *   Keys of entities to look up.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [LookupResponse]{@link LookupResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [LookupResponse]{@link LookupResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * var readOptions = {};
+ * var keys = [];
+ * var request = {
+ *     projectId: projectId,
+ *     readOptions: readOptions,
+ *     keys: keys
+ * };
+ * client.lookup(request).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.lookup = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._lookup(request, options, callback);
+};
+
+/**
+ * Queries for entities.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {Object} request.partitionId
+ *   Entities are partitioned into subsets, identified by a partition ID.
+ *   Queries are scoped to a single partition.
+ *   This partition ID is normalized with the standard default context
+ *   partition ID.
+ *
+ *   This object should have the same structure as [PartitionId]{@link PartitionId}
+ * @param {Object} request.readOptions
+ *   The options for this query.
+ *
+ *   This object should have the same structure as [ReadOptions]{@link ReadOptions}
+ * @param {Object=} request.query
+ *   The query to run.
+ *
+ *   This object should have the same structure as [Query]{@link Query}
+ * @param {Object=} request.gqlQuery
+ *   The GQL query to run.
+ *
+ *   This object should have the same structure as [GqlQuery]{@link GqlQuery}
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [RunQueryResponse]{@link RunQueryResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [RunQueryResponse]{@link RunQueryResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * var partitionId = {};
+ * var readOptions = {};
+ * var request = {
+ *     projectId: projectId,
+ *     partitionId: partitionId,
+ *     readOptions: readOptions
+ * };
+ * client.runQuery(request).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.runQuery = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._runQuery(request, options, callback);
+};
+
+/**
+ * Begins a new transaction.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [BeginTransactionResponse]{@link BeginTransactionResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [BeginTransactionResponse]{@link BeginTransactionResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * client.beginTransaction({projectId: projectId}).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.beginTransaction = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._beginTransaction(request, options, callback);
+};
+
+/**
+ * Commits a transaction, optionally creating, deleting or modifying some
+ * entities.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {number} request.mode
+ *   The type of commit to perform. Defaults to `TRANSACTIONAL`.
+ *
+ *   The number should be among the values of [Mode]{@link Mode}
+ * @param {Object[]} request.mutations
+ *   The mutations to perform.
+ *
+ *   When mode is `TRANSACTIONAL`, mutations affecting a single entity are
+ *   applied in order. The following sequences of mutations affecting a single
+ *   entity are not permitted in a single `Commit` request:
+ *
+ *   - `insert` followed by `insert`
+ *   - `update` followed by `insert`
+ *   - `upsert` followed by `insert`
+ *   - `delete` followed by `update`
+ *
+ *   When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single
+ *   entity.
+ *
+ *   This object should have the same structure as [Mutation]{@link Mutation}
+ * @param {string=} request.transaction
+ *   The identifier of the transaction associated with the commit. A
+ *   transaction identifier is returned by a call to
+ *   {@link Datastore.BeginTransaction}.
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [CommitResponse]{@link CommitResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [CommitResponse]{@link CommitResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * var mode = datastoreV1.CommitRequest.Mode.MODE_UNSPECIFIED;
+ * var mutations = [];
+ * var request = {
+ *     projectId: projectId,
+ *     mode: mode,
+ *     mutations: mutations
+ * };
+ * client.commit(request).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.commit = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._commit(request, options, callback);
+};
+
+/**
+ * Rolls back a transaction.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {string} request.transaction
+ *   The transaction identifier, returned by a call to
+ *   {@link Datastore.BeginTransaction}.
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [RollbackResponse]{@link RollbackResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [RollbackResponse]{@link RollbackResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * var transaction = '';
+ * var request = {
+ *     projectId: projectId,
+ *     transaction: transaction
+ * };
+ * client.rollback(request).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.rollback = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._rollback(request, options, callback);
+};
+
+/**
+ * Allocates IDs for the given keys, which is useful for referencing an entity
+ * before it is inserted.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.projectId
+ *   The ID of the project against which to make the request.
+ * @param {Object[]} request.keys
+ *   A list of keys with incomplete key paths for which to allocate IDs.
+ *   No key may be reserved/read-only.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ * @param {Object=} options
+ *   Optional parameters. You can override the default settings for this call, e.g, timeout,
+ *   retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details.
+ * @param {function(?Error, ?Object)=} callback
+ *   The function which will be called with the result of the API call.
+ *
+ *   The second parameter to the callback is an object representing [AllocateIdsResponse]{@link AllocateIdsResponse}.
+ * @return {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing [AllocateIdsResponse]{@link AllocateIdsResponse}.
+ *   The promise has a method named "cancel" which cancels the ongoing API call.
+ *
+ * @example
+ *
+ * var client = datastoreV1.datastoreClient();
+ * var projectId = '';
+ * var keys = [];
+ * var request = {
+ *     projectId: projectId,
+ *     keys: keys
+ * };
+ * client.allocateIds(request).then(function(responses) {
+ *     var response = responses[0];
+ *     // doThingsWith(response)
+ * }).catch(function(err) {
+ *     console.error(err);
+ * });
+ */
+DatastoreClient.prototype.allocateIds = function(request, options, callback) {
+  if (options instanceof Function && callback === undefined) {
+    callback = options;
+    options = {};
+  }
+  if (options === undefined) {
+    options = {};
+  }
+
+  return this._allocateIds(request, options, callback);
+};
+
+function DatastoreClientBuilder(gaxGrpc) {
+  if (!(this instanceof DatastoreClientBuilder)) {
+    return new DatastoreClientBuilder(gaxGrpc);
+  }
+
+  var datastoreClient = gaxGrpc.load([{
+    root: require('google-proto-files')('..'),
+    file: 'google/datastore/v1/datastore.proto'
+  }]);
+  extend(this, datastoreClient.google.datastore.v1);
+
+
+  /**
+   * Build a new instance of {@link DatastoreClient}.
+   *
+   * @param {Object=} opts - The optional parameters.
+   * @param {String=} opts.servicePath
+   *   The domain name of the API remote host.
+   * @param {number=} opts.port
+   *   The port on which to connect to the remote host.
+   * @param {grpc.ClientCredentials=} opts.sslCreds
+   *   A ClientCredentials for use with an SSL-enabled channel.
+   * @param {Object=} opts.clientConfig
+   *   The customized config to build the call settings. See
+   *   {@link gax.constructSettings} for the format.
+   */
+  this.datastoreClient = function(opts) {
+    return new DatastoreClient(gaxGrpc, datastoreClient, opts);
+  };
+  extend(this.datastoreClient, DatastoreClient);
+}
+module.exports = DatastoreClientBuilder;
+module.exports.SERVICE_ADDRESS = SERVICE_ADDRESS;
+module.exports.ALL_SCOPES = ALL_SCOPES;
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json
new file mode 100644
index 00000000000..b1b0ac63e94
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json
@@ -0,0 +1,58 @@
+{
+  "interfaces": {
+    "google.datastore.v1.Datastore": {
+      "retry_codes": {
+        "idempotent": [
+          "DEADLINE_EXCEEDED",
+          "UNAVAILABLE"
+        ],
+        "non_idempotent": [
+          "UNAVAILABLE"
+        ]
+      },
+      "retry_params": {
+        "default": {
+          "initial_retry_delay_millis": 100,
+          "retry_delay_multiplier": 1.3,
+          "max_retry_delay_millis": 60000,
+          "initial_rpc_timeout_millis": 60000,
+          "rpc_timeout_multiplier": 1.0,
+          "max_rpc_timeout_millis": 60000,
+          "total_timeout_millis": 600000
+        }
+      },
+      "methods": {
+        "Lookup": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "idempotent",
+          "retry_params_name": "default"
+        },
+        "RunQuery": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "idempotent",
+          "retry_params_name": "default"
+        },
+        "BeginTransaction": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "Commit": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "Rollback": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "AllocateIds": {
+          "timeout_millis": 60000,
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        }
+      }
+    }
+  }
+}
diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/src/v1/index.js
new file mode 100644
index 00000000000..47d7f45c677
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/index.js
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2016 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+'use strict';
+
+var datastoreClient = require('./datastore_client');
+var gax = require('google-gax');
+var extend = require('extend');
+
+function v1(options) {
+  options = extend({
+    scopes: v1.ALL_SCOPES
+  }, options);
+  var gaxGrpc = gax.grpc(options);
+  return datastoreClient(gaxGrpc);
+}
+
+v1.SERVICE_ADDRESS = datastoreClient.SERVICE_ADDRESS;
+v1.ALL_SCOPES = datastoreClient.ALL_SCOPES;
+
+module.exports = v1;
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index a5801753b0c..595022025d8 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -51,6 +51,8 @@ function FakeTransaction() {
   this.calledWith_ = arguments;
 }
 
+function FakeV1() {}
+
 describe('Datastore', function() {
   var Datastore;
   var datastore;
@@ -77,7 +79,8 @@ describe('Datastore', function() {
       },
       './entity.js': fakeEntity,
       './query.js': FakeQuery,
-      './transaction.js': FakeTransaction
+      './transaction.js': FakeTransaction,
+      './v1': FakeV1
     });
   });
 
@@ -88,6 +91,10 @@ describe('Datastore', function() {
     });
   });
 
+  it('should export GAX client', function() {
+    assert.strictEqual(Datastore.v1, FakeV1);
+  });
+
   describe('instantiation', function() {
     it('should normalize the arguments', function() {
       var normalizeArguments = fakeUtil.normalizeArguments;

From 20233111f880575b692579651483810e1c1231fd Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 31 Mar 2017 13:40:35 -0400
Subject: [PATCH 105/820] Docs fixes (#2170)

datastore: fix broken links
logging: fix broken links
storage: fix broken links
language: fix docs
spanner: fix formatting in docs
---
 handwritten/nodejs-datastore/src/query.js | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js
index 49fc312d1c8..e09bf934e89 100644
--- a/handwritten/nodejs-datastore/src/query.js
+++ b/handwritten/nodejs-datastore/src/query.js
@@ -74,7 +74,7 @@ function Query(scope, namespace, kinds) {
  *
  * *To filter by ancestors, see {module:datastore/query#hasAncestor}.*
  *
- * @resource [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Filters}
+ * @resource [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs}
  *
  * @param {string} property - The field name.
  * @param {string=} operator - Operator (=, <, >, <=, >=). Default: `=`
@@ -119,7 +119,7 @@ Query.prototype.filter = function(property, operator, value) {
 /**
  * Filter a query by ancestors.
  *
- * @resource [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Ancestor_filters}
+ * @resource [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs}
  *
  * @param {Key} key - Key object to filter by.
  * @return {module:datastore/query}
@@ -136,7 +136,7 @@ Query.prototype.hasAncestor = function(key) {
  * Sort the results by a property name in ascending or descending order. By
  * default, an ascending sort order will be used.
  *
- * @resource [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Sort_orders}
+ * @resource [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs}
  *
  * @param {string} property - The property to order by.
  * @param {object=} options - Options object.
@@ -200,7 +200,7 @@ Query.prototype.select = function(fieldNames) {
 /**
  * Set a starting cursor to a query.
  *
- * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors}
+ * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets}
  *
  * @param {string} cursorToken - The starting cursor token.
  * @return {module:datastore/query}
@@ -238,7 +238,7 @@ Query.prototype.end = function(end) {
 /**
  * Set a limit on a query.
  *
- * @resource [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Retrieving_results}
+ * @resource [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs}
  *
  * @param {number} n - The number of results to limit the query to.
  * @return {module:datastore/query}
@@ -255,7 +255,7 @@ Query.prototype.limit = function(n) {
 /**
  * Set an offset on a query.
  *
- * @resource [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Retrieving_results}
+ * @resource [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs}
  *
  * @param {number} n - The offset to start from after the start cursor.
  * @return {module:datastore/query}

From f4f63e7cb0578c4de50aea47673530b612dafbea Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 31 Mar 2017 13:50:44 -0400
Subject: [PATCH 106/820] drop support for 0.12 (#2171)

* all: drop support for 0.12 [ci skip]
* scripts: add more modules to blacklist for now
* update common deps for service modules
---
 handwritten/nodejs-datastore/package.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 2f6aae6bd93..9f7e29f3dc6 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -50,8 +50,8 @@
     "datastore"
   ],
   "dependencies": {
-    "@google-cloud/common": "^0.12.0",
-    "@google-cloud/common-grpc": "^0.2.1",
+    "@google-cloud/common": "^0.13.0",
+    "@google-cloud/common-grpc": "^0.3.0",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",
@@ -79,6 +79,6 @@
   },
   "license": "Apache-2.0",
   "engines": {
-    "node": ">=0.12.0"
+    "node": ">=4.0.0"
   }
 }

From 4f0984d3c80cd352c21d0f04bd1acdf8d1cb740b Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 31 Mar 2017 14:57:16 -0400
Subject: [PATCH 107/820] datastore @ 0.8.0 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 9f7e29f3dc6..7e8f07fafc1 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.7.1",
+  "version": "0.8.0",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 691f8407ad1b4761556237c27761eecbde089ebf Mon Sep 17 00:00:00 2001
From: Ace Nassri 
Date: Wed, 5 Apr 2017 15:57:12 -0500
Subject: [PATCH 108/820] Travis: fix failing tests + update dependencies
 (#335)

* Make unify script recursive + clean up dependency conflicts

* Restore travis.yml

* Delete outdated text detection sample that duplicates detect.js

* Fix failing KMS + vision tests by updating dependencies

* Fix video tests using a bad cwd

* Upgrade monitoring dependency + skip flaky monitoring tests

* Fix DLP tests having wrong cwd

* Fix failing vision test

* Fix datastore tests

* Update broken dependency

* Update possibly broken compute engine dependency

* Fix typos

* Disable Node 4 testing

* Revert deletion of outdated sample - @gguuss says we still use this.

This reverts commit b7259c820fb011369c7b5badac82fcde26be008a.

* Update dependency
---
 handwritten/nodejs-datastore/samples/concepts.js              | 2 +-
 handwritten/nodejs-datastore/samples/package.json             | 2 +-
 .../nodejs-datastore/samples/system-test/quickstart.test.js   | 4 +++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js
index 31d6236cac8..8fa33eab045 100644
--- a/handwritten/nodejs-datastore/samples/concepts.js
+++ b/handwritten/nodejs-datastore/samples/concepts.js
@@ -510,7 +510,7 @@ class Metadata extends TestHelper {
         return runNamespaceQuery(startNamespace, endNamespace);
       })
       .then((namespaces) => {
-        t.deepEqual(namespaces, ['Animals']);
+        t.true(namespaces.includes('Animals'));
       });
   }
 
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 0c0d518f14d..6819d208d3f 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -8,7 +8,7 @@
     "test": "cd ..; npm run st -- --verbose datastore/system-test/*.test.js"
   },
   "dependencies": {
-    "@google-cloud/datastore": "0.7.0",
+    "@google-cloud/datastore": "0.8.0",
     "yargs": "6.6.0"
   },
   "engines": {
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index e64a905a21c..c8deaff453b 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -23,6 +23,8 @@ const entity = { description: `Buy milk` };
 const kind = `Task`;
 const name = `sampletask1`;
 const key = datastore.key([kind, name]);
+const datastoreEntity = Object.assign({}, entity);
+datastoreEntity[datastore.KEY] = key;
 
 test.before(async () => {
   try {
@@ -52,7 +54,7 @@ test.cb(`should get a task from Datastore`, (t) => {
           setTimeout(() => {
             datastore.get(key)
               .then(([task]) => {
-                t.deepEqual(task, entity);
+                t.deepEqual(task, datastoreEntity);
                 t.true(console.log.calledWith(`Saved ${name}: ${entity.description}`));
                 t.end();
               })

From c4660f2ee1dd6fa1753e724e521cee54f5f6a6ee Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 10 Apr 2017 21:38:40 -0400
Subject: [PATCH 109/820] update deps

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 7e8f07fafc1..8a2d6795141 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -56,7 +56,7 @@
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",
     "extend": "^3.0.0",
-    "google-gax": "^0.12.3",
+    "google-gax": "^0.13.0",
     "is": "^3.0.1",
     "lodash.flatten": "^4.2.0",
     "modelo": "^4.2.0",

From 022b6f85cac7e8e52e5fee6a775221e6a6435c7d Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Fri, 14 Apr 2017 11:27:52 -0400
Subject: [PATCH 110/820] datastore | logging: promote to GA (#2187)

---
 handwritten/nodejs-datastore/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md
index dd036f699af..191ca5c7b5c 100644
--- a/handwritten/nodejs-datastore/README.md
+++ b/handwritten/nodejs-datastore/README.md
@@ -1,4 +1,4 @@
-# @google-cloud/datastore ([Beta][versioning])
+# @google-cloud/datastore ([GA][versioning])
 > Cloud Datastore Client Library for Node.js
 
 *Looking for more Google APIs than just Datastore? You might want to check out [`google-cloud`][google-cloud].*

From 6d835eb904d5b0143071ccbb1807778135e6e0b2 Mon Sep 17 00:00:00 2001
From: Eric Uldall 
Date: Fri, 14 Apr 2017 09:19:55 -0700
Subject: [PATCH 111/820] updated FQDN's to googleapis.com with a trailing dot
 (#2214)

---
 handwritten/nodejs-datastore/src/index.js               | 2 +-
 handwritten/nodejs-datastore/src/v1/datastore_client.js | 2 +-
 handwritten/nodejs-datastore/test/index.js              | 5 ++++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index 327c5064d17..a1bcb43dd47 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -300,7 +300,7 @@ function Datastore(options) {
     return new Datastore(options);
   }
 
-  this.defaultBaseUrl_ = 'datastore.googleapis.com';
+  this.defaultBaseUrl_ = 'datastore.googleapis.com.';
   this.determineBaseUrl_(options.apiEndpoint);
 
   this.namespace = options.namespace;
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js
index 9d9408ace66..19b021ce970 100644
--- a/handwritten/nodejs-datastore/src/v1/datastore_client.js
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js
@@ -500,4 +500,4 @@ function DatastoreClientBuilder(gaxGrpc) {
 }
 module.exports = DatastoreClientBuilder;
 module.exports.SERVICE_ADDRESS = SERVICE_ADDRESS;
-module.exports.ALL_SCOPES = ALL_SCOPES;
\ No newline at end of file
+module.exports.ALL_SCOPES = ALL_SCOPES;
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index 595022025d8..64e62f2d7dc 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -116,7 +116,10 @@ describe('Datastore', function() {
     });
 
     it('should set the default base URL', function() {
-      assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com');
+      assert.strictEqual(
+        datastore.defaultBaseUrl_,
+        'datastore.googleapis.com.'
+      );
     });
 
     it('should set default API connection details', function(done) {

From 16aa2e19ae37ec839c9e915f2a262df23a6cc193 Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Fri, 14 Apr 2017 12:29:32 -0400
Subject: [PATCH 112/820] datastore @ 1.0.0 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 8a2d6795141..2e42bb07533 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "0.8.0",
+  "version": "1.0.0",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 7b1a665e5bd1d38b91f38d934efc93c8fe0d6077 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Mon, 24 Apr 2017 14:40:11 -0700
Subject: [PATCH 113/820] Cleanup App Engine samples and re-work tests. (#354)

---
 .../nodejs-datastore/samples/README.md        |   26 +-
 .../nodejs-datastore/samples/concepts.js      |  112 +-
 handwritten/nodejs-datastore/samples/error.js |    2 +-
 .../nodejs-datastore/samples/package.json     |   29 +-
 .../nodejs-datastore/samples/quickstart.js    |    3 +
 .../samples/system-test/concepts.test.js      |   21 +-
 .../samples/system-test/error.test.js         |   10 +-
 .../samples/system-test/quickstart.test.js    |   13 +-
 .../samples/system-test/tasks.test.js         |   29 +-
 handwritten/nodejs-datastore/samples/tasks.js |   24 +-
 .../nodejs-datastore/samples/yarn.lock        | 3122 ++++++++++++++++-
 11 files changed, 3187 insertions(+), 204 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md
index f7500f62ee7..6fbed477d1a 100644
--- a/handwritten/nodejs-datastore/samples/README.md
+++ b/handwritten/nodejs-datastore/samples/README.md
@@ -14,14 +14,21 @@ automatic scaling, high performance, and ease of application development.
   * [Getting started with Google Cloud Datastore API](#getting-started-with-google-cloud-datastore-api)
   * [Concepts](#concepts)
   * [Errors and Error Handling](#errors-and-error-handling)
+* [Running the tests](#running-the-tests)
 
 ## Setup
 
-1. Read [Prerequisites][prereq] and [How to run a sample][run] first.
-1. Install dependencies:
+1.  Read [Prerequisites][prereq] and [How to run a sample][run] first.
+1.  Install dependencies:
+
+    With `npm`:
 
         npm install
 
+    With `yarn`:
+
+        yarn install
+
 [prereq]: ../README.md#prerequisities
 [run]: ../README.md#how-to-run-a-sample
 
@@ -74,3 +81,18 @@ __Run the sample:__
 
 [error_docs]: https://cloud.google.com/datastore/docs/concepts/errors
 [error_code]: error.js
+
+## Running the tests
+
+1.  Set the `GCLOUD_PROJECT` and `GOOGLE_APPLICATION_CREDENTIALS` environment
+    variables.
+
+1.  Run the tests:
+
+    With `npm`:
+
+        npm test
+
+    With `yarn`:
+
+        yarn test
diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js
index 8fa33eab045..277b93e5816 100644
--- a/handwritten/nodejs-datastore/samples/concepts.js
+++ b/handwritten/nodejs-datastore/samples/concepts.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-'use strict';
+const sinon = require('sinon');
 
 // By default, the client will authenticate using the service account file
 // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
@@ -118,35 +118,40 @@ class Entity extends TestHelper {
     return task;
   }
 
-  testIncompleteKey () {
+  testIncompleteKey (t) {
+    t.plan(0);
     return this.datastore.save({
       key: this.incompleteKey,
       data: {}
     });
   }
 
-  testNamedKey () {
+  testNamedKey (t) {
+    t.plan(0);
     return this.datastore.save({
       key: this.namedKey,
       data: {}
     });
   }
 
-  testKeyWithParent () {
+  testKeyWithParent (t) {
+    t.plan(0);
     return this.datastore.save({
       key: this.keyWithParent,
       data: {}
     });
   }
 
-  testKeyWithMultiLevelParent () {
+  testKeyWithMultiLevelParent (t) {
+    t.plan(0);
     return this.datastore.save({
       key: this.keyWithMultiLevelParent,
       data: {}
     });
   }
 
-  testEntityWithParent () {
+  testEntityWithParent (t) {
+    t.plan(0);
     const taskKey = this.keyWithParent;
 
     // [START entity_with_parent]
@@ -164,7 +169,7 @@ class Entity extends TestHelper {
     return this.datastore.save(task);
   }
 
-  testProperties () {
+  testProperties (t) {
     // [START properties]
     const task = [
       {
@@ -201,7 +206,8 @@ class Entity extends TestHelper {
     });
   }
 
-  testArrayValue () {
+  testArrayValue (t) {
+    t.plan(0);
     // [START array_value]
     const task = {
       tags: [
@@ -221,14 +227,16 @@ class Entity extends TestHelper {
     });
   }
 
-  testBasicEntity () {
+  testBasicEntity (t) {
+    t.plan(0);
     return this.datastore.save({
       key: this.getIncompleteKey(),
       data: this.getTask()
     });
   }
 
-  testUpsert () {
+  testUpsert (t) {
+    t.plan(0);
     const taskKey = this.getIncompleteKey();
     const task = this.getTask();
 
@@ -250,7 +258,8 @@ class Entity extends TestHelper {
     });
   }
 
-  testInsert () {
+  testInsert (t) {
+    t.plan(0);
     const taskKey = this.getIncompleteKey();
     const task = this.getTask();
 
@@ -273,7 +282,8 @@ class Entity extends TestHelper {
     });
   }
 
-  testLookup () {
+  testLookup (t) {
+    t.plan(0);
     const taskKey = this.getIncompleteKey();
 
     // [START lookup]
@@ -299,7 +309,8 @@ class Entity extends TestHelper {
     }).then(() => this.datastore.get(taskKey));
   }
 
-  testUpdate () {
+  testUpdate (t) {
+    t.plan(0);
     const taskKey = this.getIncompleteKey();
     const task = this.getTask();
 
@@ -322,7 +333,8 @@ class Entity extends TestHelper {
     }).then(() => this.datastore.update({ key: taskKey, data: task }));
   }
 
-  testDelete () {
+  testDelete (t) {
+    t.plan(0);
     const taskKey = this.getIncompleteKey();
 
     // [START delete]
@@ -339,7 +351,7 @@ class Entity extends TestHelper {
     }).then(() => this.datastore.delete(taskKey));
   }
 
-  testBatchUpsert () {
+  testBatchUpsert (t) {
     const taskKey1 = this.datastore.key(['Task', 1]);
     const taskKey2 = this.datastore.key(['Task', 2]);
 
@@ -387,7 +399,8 @@ class Entity extends TestHelper {
     ]);
   }
 
-  testBatchLookup () {
+  testBatchLookup (t) {
+    t.plan(0);
     const taskKey1 = this.datastore.key(['Task', 1]);
     const taskKey2 = this.datastore.key(['Task', 2]);
 
@@ -406,7 +419,8 @@ class Entity extends TestHelper {
     return this.datastore.get([taskKey1, taskKey2]);
   }
 
-  testBatchDelete () {
+  testBatchDelete (t) {
+    t.plan(0);
     const taskKey1 = this.datastore.key(['Task', 1]);
     const taskKey2 = this.datastore.key(['Task', 2]);
 
@@ -424,7 +438,8 @@ class Entity extends TestHelper {
 }
 
 class Index extends TestHelper {
-  testUnindexedPropertyQuery () {
+  testUnindexedPropertyQuery (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START unindexed_property_query]
@@ -670,7 +685,8 @@ class Query extends TestHelper {
     return query;
   }
 
-  testRunQuery () {
+  testRunQuery (t) {
+    t.plan(0);
     const query = this.basicQuery;
 
     // [START run_query]
@@ -687,7 +703,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testPropertyFilter () {
+  testPropertyFilter (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START property_filter]
@@ -698,7 +715,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testCompositeFilter () {
+  testCompositeFilter (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START composite_filter]
@@ -710,7 +728,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testKeyFilter () {
+  testKeyFilter (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START key_filter]
@@ -721,7 +740,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testAscendingSort () {
+  testAscendingSort (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START ascending_sort]
@@ -732,7 +752,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testDescendingSort () {
+  testDescendingSort (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START descending_sort]
@@ -745,7 +766,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testMultiSort () {
+  testMultiSort (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START multi_sort]
@@ -759,7 +781,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testKindlessQuery () {
+  testKindlessQuery (t) {
+    t.plan(0);
     const datastore = this.datastore;
     const lastSeenKey = this.datastore.key(['Task', Date.now()]);
 
@@ -801,7 +824,8 @@ class Query extends TestHelper {
     return runProjectionQuery();
   }
 
-  testKeysOnlyQuery () {
+  testKeysOnlyQuery (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START keys_only_query]
@@ -813,7 +837,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testDistinctQuery () {
+  testDistinctQuery (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START distinct_query]
@@ -826,7 +851,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testDistinctOnQuery () {
+  testDistinctOnQuery (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START distinct_on_query]
@@ -839,7 +865,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testArrayValueInequalityRange () {
+  testArrayValueInequalityRange (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START array_value_inequality_range]
@@ -851,7 +878,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testArrayValueEquality () {
+  testArrayValueEquality (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START array_value_equality]
@@ -863,7 +891,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testInequalityRange () {
+  testInequalityRange (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START inequality_range]
@@ -887,7 +916,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testEqualAndInequalityRange () {
+  testEqualAndInequalityRange (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START equal_and_inequality_range]
@@ -901,7 +931,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testInequalitySort () {
+  testInequalitySort (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START inequality_sort]
@@ -926,7 +957,7 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testInequalitySortInvalidNotFirst () {
+  testInequalitySortInvalidNotFirst (t) {
     const datastore = this.datastore;
 
     // [START inequality_sort_invalid_not_first]
@@ -939,7 +970,8 @@ class Query extends TestHelper {
     return this.datastore.runQuery(query);
   }
 
-  testLimit () {
+  testLimit (t) {
+    t.plan(0);
     const datastore = this.datastore;
 
     // [START limit]
@@ -999,7 +1031,8 @@ class Query extends TestHelper {
       });
   }
 
-  testEventualConsistentQuery () {
+  testEventualConsistentQuery (t) {
+    t.plan(0);
     // [START eventual_consistent_query]
     // Read consistency cannot be specified in google-cloud-node.
     // [END eventual_consistent_query]
@@ -1089,7 +1122,8 @@ class Transaction extends TestHelper {
       });
   }
 
-  testTransactionalRetry () {
+  testTransactionalRetry (t) {
+    t.plan(0);
     // Overwrite so the real Datastore instance is used in `transferFunds`.
     const datastoreMock = datastore;
     datastore = this.datastore;
diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js
index a9434e48455..f0d1caab1ba 100644
--- a/handwritten/nodejs-datastore/samples/error.js
+++ b/handwritten/nodejs-datastore/samples/error.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 6819d208d3f..a08c6eeb72c 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -2,16 +2,33 @@
   "name": "nodejs-docs-samples-datastore",
   "version": "0.0.1",
   "private": true,
-  "license": "Apache Version 2.0",
+  "license": "Apache-2.0",
   "author": "Google Inc.",
-  "scripts": {
-    "test": "cd ..; npm run st -- --verbose datastore/system-test/*.test.js"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
   },
-  "dependencies": {
-    "@google-cloud/datastore": "0.8.0",
-    "yargs": "6.6.0"
+  "cloud": {
+    "requiresKeyFile": true,
+    "requiresProjectId": true
   },
   "engines": {
     "node": ">=4.3.2"
+  },
+  "scripts": {
+    "lint": "samples lint",
+    "pretest": "npm run lint",
+    "system-test": "ava -T 1m --verbose system-test/*.test.js",
+    "test": "npm run system-test"
+  },
+  "dependencies": {
+    "@google-cloud/datastore": "1.0.0",
+    "yargs": "7.1.0"
+  },
+  "devDependencies": {
+    "@google-cloud/nodejs-repo-tools": "1.3.1",
+    "ava": "0.19.1",
+    "proxyquire": "1.7.11",
+    "sinon": "2.1.0"
   }
 }
diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js
index 2e07f62457d..141dd31aae9 100644
--- a/handwritten/nodejs-datastore/samples/quickstart.js
+++ b/handwritten/nodejs-datastore/samples/quickstart.js
@@ -46,5 +46,8 @@ const task = {
 datastore.save(task)
   .then(() => {
     console.log(`Saved ${task.key.name}: ${task.data.description}`);
+  })
+  .catch((err) => {
+    console.error('ERROR:', err);
   });
 // [END datastore_quickstart]
diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
index 80d0f39762f..d2da75e4ee3 100644
--- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -15,9 +15,9 @@
 
 'use strict';
 
-require(`../../system-test/_setup`);
-
 const concepts = require(`../concepts`);
+const test = require(`ava`);
+const tools = require(`@google-cloud/nodejs-repo-tools`);
 
 let transaction;
 let metadata;
@@ -31,6 +31,7 @@ const Index = concepts.Index;
 const Entity = concepts.Entity;
 const Query = concepts.Query;
 
+test.before(tools.checkCredentials);
 test.before((t) => {
   const projectId = process.env.GCLOUD_PROJECT;
   t.truthy(projectId, `You must set the GCLOUD_PROJECT env var!`);
@@ -48,8 +49,8 @@ test.after.always(async () => {
   await datastore.delete(entities.map((entity) => entity[datastore.KEY]));
 });
 
-test.beforeEach(stubConsole);
-test.afterEach.always(restoreConsole);
+test.beforeEach(tools.stubConsole);
+test.afterEach.always(tools.restoreConsole);
 
 // Transactions
 test.serial(`performs a transactional update`, (t) => transaction.testTransactionalUpdate(t));
@@ -128,7 +129,10 @@ test.serial(`saves with a named key`, (t) => entity.testNamedKey(t));
 test.serial(`saves a key with a parent`, (t) => entity.testKeyWithParent(t));
 test.serial(`saves a key with multiple parents`, (t) => entity.testKeyWithMultiLevelParent(t));
 test.serial(`saves an entity with a parent`, (t) => entity.testEntityWithParent(t));
-test.serial(`saves an entity with properties`, (t) => entity.testProperties(t));
+test.serial(`saves an entity with properties`, (t) => {
+  t.plan(0);
+  return entity.testProperties(t);
+});
 test.serial(`saves an entity with arrays`, (t) => entity.testArrayValue(t));
 test.serial(`saves a basic entity`, (t) => entity.testBasicEntity(t));
 test.serial(`saves with an upsert`, (t) => entity.testUpsert(t));
@@ -136,6 +140,9 @@ test.serial(`saves with an insert`, (t) => entity.testInsert(t));
 test.serial(`performs a lookup`, (t) => entity.testLookup(t));
 test.serial(`saves with an update`, (t) => entity.testUpdate(t));
 test.serial(`deletes an entity`, (t) => entity.testDelete(t));
-test.serial(`performs a batch upsert`, (t) => entity.testBatchUpsert(t));
+test.serial(`performs a batch upsert`, (t) => {
+  t.plan(0);
+  return entity.testBatchUpsert(t);
+});
 test.serial(`performs a batch lookup`, (t) => entity.testBatchLookup(t));
 test.serial(`performs a batch delete`, (t) => entity.testBatchDelete(t));
diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js
index 8499e5602ee..2816a134fe7 100644
--- a/handwritten/nodejs-datastore/samples/system-test/error.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -15,12 +15,12 @@
 
 'use strict';
 
-require(`../../system-test/_setup`);
-
 const error = require('../error');
+const test = require(`ava`);
+const tools = require(`@google-cloud/nodejs-repo-tools`);
 
-test.beforeEach(stubConsole);
-test.afterEach.always(restoreConsole);
+test.beforeEach(tools.stubConsole);
+test.afterEach.always(tools.restoreConsole);
 
 test(`should have an error`, async (t) => {
   const err = await t.throws(error.runQuery());
diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
index c8deaff453b..75cd8bcb119 100644
--- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -15,10 +15,13 @@
 
 'use strict';
 
-require(`../../system-test/_setup`);
-
 const proxyquire = require(`proxyquire`).noPreserveCache();
+const sinon = require(`sinon`);
+const test = require(`ava`);
+const tools = require(`@google-cloud/nodejs-repo-tools`);
+
 const datastore = proxyquire(`@google-cloud/datastore`, {})();
+
 const entity = { description: `Buy milk` };
 const kind = `Task`;
 const name = `sampletask1`;
@@ -37,8 +40,8 @@ test.after.always(async () => {
   } catch (err) {} // ignore error
 });
 
-test.beforeEach(stubConsole);
-test.afterEach.always(restoreConsole);
+test.beforeEach(tools.stubConsole);
+test.afterEach.always(tools.restoreConsole);
 
 test.cb(`should get a task from Datastore`, (t) => {
   const datastoreMock = {
diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
index 503d5c205f4..1126e9ccb87 100644
--- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
+++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -15,10 +15,10 @@
 
 'use strict';
 
-require(`../../system-test/_setup`);
-
-const path = require(`path`);
 const datastore = require(`@google-cloud/datastore`)();
+const path = require(`path`);
+const test = require(`ava`);
+const tools = require(`@google-cloud/nodejs-repo-tools`);
 
 const cmd = `node tasks.js`;
 const cwd = path.join(__dirname, `..`);
@@ -32,12 +32,14 @@ test.after.always(async () => {
   } catch (err) {} // ignore error
 });
 
-test.beforeEach(stubConsole);
-test.afterEach.always(restoreConsole);
+test.before(tools.checkCredentials);
+test.beforeEach(tools.stubConsole);
+test.afterEach.always(tools.restoreConsole);
 
 test.serial(`should add a task`, async (t) => {
+  t.plan(2);
   const expected = /^Task (\d+) created successfully.$/;
-  const parts = run(`${cmd} new "${description}"`, cwd).match(expected);
+  const parts = tools.run(`${cmd} new "${description}"`, cwd).match(expected);
   t.true(expected.test(parts[0]));
   const [task] = await datastore.get(datastore.key([`Task`, parseInt(parts[1], 10)]));
   key = task[datastore.KEY];
@@ -45,23 +47,26 @@ test.serial(`should add a task`, async (t) => {
 });
 
 test.serial(`should mark a task as done`, async (t) => {
+  t.plan(2);
   const expected = `Task ${key.id} updated successfully.`;
-  const output = await runAsync(`${cmd} done ${key.id}`, cwd);
+  const output = await tools.runAsync(`${cmd} done ${key.id}`, cwd);
   t.is(output, expected);
   const [task] = await datastore.get(key);
   t.true(task.done);
 });
 
 test.serial(`should list tasks`, async (t) => {
-  await tryTest(async () => {
-    const output = await runAsync(`${cmd} list`, cwd);
-    t.true(output.includes(key.id));
+  t.plan(0);
+  await tools.tryTest(async (assert) => {
+    const output = await tools.runAsync(`${cmd} list`, cwd);
+    assert(output.includes(key.id));
   }).start();
 });
 
 test.serial(`should delete a task`, async (t) => {
+  t.plan(2);
   const expected = `Task ${key.id} deleted successfully.`;
-  const output = await runAsync(`${cmd} delete ${key.id}`, cwd);
+  const output = await tools.runAsync(`${cmd} delete ${key.id}`, cwd);
   t.is(output, expected);
   const [task] = await datastore.get(key);
   t.is(task, undefined);
diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js
index d60016a94e9..6ab7c36d8a0 100644
--- a/handwritten/nodejs-datastore/samples/tasks.js
+++ b/handwritten/nodejs-datastore/samples/tasks.js
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016, Google, Inc.
+ * Copyright 2017, Google, Inc.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -85,10 +85,12 @@ function addTask (description) {
     ]
   };
 
-  return datastore.save(entity)
+  datastore.save(entity)
     .then(() => {
       console.log(`Task ${taskKey.id} created successfully.`);
-      return taskKey;
+    })
+    .catch((err) => {
+      console.error('ERROR:', err);
     });
 }
 // [END add_entity]
@@ -101,7 +103,7 @@ function markDone (taskId) {
     taskId
   ]);
 
-  return transaction.run()
+  transaction.run()
     .then(() => transaction.get(taskKey))
     .then((results) => {
       const task = results[0];
@@ -125,7 +127,7 @@ function listTasks () {
   const query = datastore.createQuery('Task')
     .order('created');
 
-  return datastore.runQuery(query)
+  datastore.runQuery(query)
     .then((results) => {
       const tasks = results[0];
 
@@ -134,8 +136,9 @@ function listTasks () {
         const taskKey = task[datastore.KEY];
         console.log(taskKey.id, task);
       });
-
-      return tasks;
+    })
+    .catch((err) => {
+      console.error('ERROR:', err);
     });
 }
 // [END retrieve_entities]
@@ -147,14 +150,17 @@ function deleteTask (taskId) {
     taskId
   ]);
 
-  return datastore.delete(taskKey)
+  datastore.delete(taskKey)
     .then(() => {
       console.log(`Task ${taskId} deleted successfully.`);
+    })
+    .catch((err) => {
+      console.error('ERROR:', err);
     });
 }
 // [END delete_entity]
 
-require(`yargs`)
+require(`yargs`) // eslint-disable-line
   .demand(1)
   .command(
     `new `,
diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock
index 62667c2084b..b9c76c1dd54 100644
--- a/handwritten/nodejs-datastore/samples/yarn.lock
+++ b/handwritten/nodejs-datastore/samples/yarn.lock
@@ -2,34 +2,68 @@
 # yarn lockfile v1
 
 
-"@google-cloud/common-grpc@^0.1.1":
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.1.3.tgz#fe692a1df214b0b8dc25ae96ba96990dc9c18b98"
+"@ava/babel-plugin-throws-helper@^2.0.0":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c"
+
+"@ava/babel-preset-stage-4@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.0.0.tgz#a613b5e152f529305422546b072d47facfb26291"
+  dependencies:
+    babel-plugin-check-es2015-constants "^6.8.0"
+    babel-plugin-syntax-trailing-function-commas "^6.20.0"
+    babel-plugin-transform-async-to-generator "^6.16.0"
+    babel-plugin-transform-es2015-destructuring "^6.19.0"
+    babel-plugin-transform-es2015-function-name "^6.9.0"
+    babel-plugin-transform-es2015-modules-commonjs "^6.18.0"
+    babel-plugin-transform-es2015-parameters "^6.21.0"
+    babel-plugin-transform-es2015-spread "^6.8.0"
+    babel-plugin-transform-es2015-sticky-regex "^6.8.0"
+    babel-plugin-transform-es2015-unicode-regex "^6.11.0"
+    babel-plugin-transform-exponentiation-operator "^6.8.0"
+    package-hash "^1.2.0"
+
+"@ava/babel-preset-transform-test-files@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz#cded1196a8d8d9381a509240ab92e91a5ec069f7"
+  dependencies:
+    "@ava/babel-plugin-throws-helper" "^2.0.0"
+    babel-plugin-espower "^2.3.2"
+
+"@ava/pretty-format@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@ava/pretty-format/-/pretty-format-1.1.0.tgz#d0a57d25eb9aeab9643bdd1a030642b91c123e28"
+  dependencies:
+    ansi-styles "^2.2.1"
+    esutils "^2.0.2"
+
+"@google-cloud/common-grpc@^0.3.0":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.2.tgz#b38d980539368599211102a5135225d932c65edc"
   dependencies:
-    "@google-cloud/common" "^0.12.0"
+    "@google-cloud/common" "^0.13.0"
     dot-prop "^2.4.0"
     duplexify "^3.5.0"
     extend "^3.0.0"
-    google-proto-files "^0.8.6"
-    grpc "^1.1.1"
+    google-proto-files "^0.11.0"
+    grpc "^1.2.3"
     is "^3.2.0"
+    modelo "^4.2.0"
     retry-request "^1.3.2"
     through2 "^2.0.3"
 
-"@google-cloud/common@^0.12.0":
-  version "0.12.0"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.12.0.tgz#b1cb0922c70f7e5273e402b0a6ae71de2f32abc3"
+"@google-cloud/common@^0.13.0":
+  version "0.13.1"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.1.tgz#e39aaea54e82df350f6a4114079cdd121afa3b26"
   dependencies:
     array-uniq "^1.0.3"
     arrify "^1.0.1"
     concat-stream "^1.6.0"
     create-error-class "^3.0.2"
-    dot-prop "^2.4.0"
     duplexify "^3.5.0"
     ent "^2.2.0"
     extend "^3.0.0"
-    google-auto-auth "^0.5.2"
-    google-proto-files "^0.8.6"
+    google-auto-auth "^0.6.0"
     is "^3.2.0"
     log-driver "^1.2.5"
     methmeth "^1.1.0"
@@ -41,16 +75,17 @@
     string-format-obj "^1.1.0"
     through2 "^2.0.3"
 
-"@google-cloud/datastore@0.7.0":
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-0.7.0.tgz#d7f7888e16cd3903bec6e8b5a2b0aefdfa82a154"
+"@google-cloud/datastore@1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.0.tgz#f5556bd223df30d87aa9a1fd38e7e37a0aecf1f3"
   dependencies:
-    "@google-cloud/common" "^0.12.0"
-    "@google-cloud/common-grpc" "^0.1.1"
+    "@google-cloud/common" "^0.13.0"
+    "@google-cloud/common-grpc" "^0.3.0"
     arrify "^1.0.0"
     concat-stream "^1.5.0"
     create-error-class "^3.0.2"
     extend "^3.0.0"
+    google-gax "^0.13.0"
     is "^3.0.1"
     lodash.flatten "^4.2.0"
     modelo "^4.2.0"
@@ -58,10 +93,75 @@
     propprop "^0.3.0"
     split-array-stream "^1.0.0"
 
+"@google-cloud/nodejs-repo-tools@1.3.0":
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.3.0.tgz#2872c3fcc0f0b0d840e1a71ba8f9009761b0df11"
+  dependencies:
+    async "2.3.0"
+    ava "0.19.1"
+    chalk "1.1.3"
+    colors "1.1.2"
+    fs-extra "2.1.2"
+    got "6.7.1"
+    handlebars "4.0.6"
+    proxyquire "1.7.11"
+    semistandard "11.0.0"
+    sinon "2.1.0"
+    string "3.3.3"
+    supertest "3.0.0"
+    yargs "7.1.0"
+
 abbrev@1:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
 
+acorn-jsx@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+  dependencies:
+    acorn "^3.0.4"
+
+acorn@^3.0.4:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+
+acorn@^5.0.1:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
+
+ajv-keywords@^1.0.0:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+
+ajv@^4.7.0:
+  version "4.11.7"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
+  dependencies:
+    co "^4.6.0"
+    json-stable-stringify "^1.0.1"
+
+align-text@^0.1.1, align-text@^0.1.3:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+  dependencies:
+    kind-of "^3.0.2"
+    longest "^1.0.1"
+    repeat-string "^1.5.2"
+
+amdefine@>=0.0.4:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+
+ansi-align@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
+  dependencies:
+    string-width "^1.0.1"
+
+ansi-escapes@^1.1.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+
 ansi-regex@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
@@ -70,6 +170,23 @@ ansi-styles@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
 
+ansi-styles@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1"
+  dependencies:
+    color-convert "^1.0.0"
+
+ansi-styles@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178"
+
+anymatch@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+  dependencies:
+    arrify "^1.0.0"
+    micromatch "^2.1.5"
+
 aproba@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
@@ -81,14 +198,59 @@ are-we-there-yet@~1.1.2:
     delegates "^1.0.0"
     readable-stream "^2.0.0 || ^1.1.13"
 
+argparse@^1.0.7:
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+  dependencies:
+    sprintf-js "~1.0.2"
+
 arguejs@^0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/arguejs/-/arguejs-0.2.3.tgz#b6f939f5fe0e3cd1f3f93e2aa9262424bf312af7"
 
-array-uniq@^1.0.3:
+arr-diff@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+  dependencies:
+    arr-flatten "^1.0.1"
+
+arr-exclude@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631"
+
+arr-flatten@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
+
+array-differ@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
+
+array-find-index@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+
+array-union@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+  dependencies:
+    array-uniq "^1.0.1"
+
+array-uniq@^1.0.1, array-uniq@^1.0.2, array-uniq@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
 
+array-unique@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+array.prototype.find@^2.0.1:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
+  dependencies:
+    define-properties "^1.1.2"
+    es-abstract "^1.7.0"
+
 arrify@^1.0.0, arrify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -112,6 +274,16 @@ assert-plus@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
 
+async-each@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async@2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9"
+  dependencies:
+    lodash "^4.14.0"
+
 async@^1.4.0:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -130,6 +302,103 @@ asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
 
+auto-bind@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961"
+
+ava-init@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.0.tgz#9304c8b4c357d66e3dfdae1fbff47b1199d5c55d"
+  dependencies:
+    arr-exclude "^1.0.0"
+    execa "^0.5.0"
+    has-yarn "^1.0.0"
+    read-pkg-up "^2.0.0"
+    write-pkg "^2.0.0"
+
+ava@0.19.1:
+  version "0.19.1"
+  resolved "https://registry.yarnpkg.com/ava/-/ava-0.19.1.tgz#43dd82435ad19b3980ffca2488f05daab940b273"
+  dependencies:
+    "@ava/babel-preset-stage-4" "^1.0.0"
+    "@ava/babel-preset-transform-test-files" "^3.0.0"
+    "@ava/pretty-format" "^1.1.0"
+    arr-flatten "^1.0.1"
+    array-union "^1.0.1"
+    array-uniq "^1.0.2"
+    arrify "^1.0.0"
+    auto-bind "^1.1.0"
+    ava-init "^0.2.0"
+    babel-code-frame "^6.16.0"
+    babel-core "^6.17.0"
+    bluebird "^3.0.0"
+    caching-transform "^1.0.0"
+    chalk "^1.0.0"
+    chokidar "^1.4.2"
+    clean-stack "^1.1.1"
+    clean-yaml-object "^0.1.0"
+    cli-cursor "^2.1.0"
+    cli-spinners "^1.0.0"
+    cli-truncate "^1.0.0"
+    co-with-promise "^4.6.0"
+    code-excerpt "^2.1.0"
+    common-path-prefix "^1.0.0"
+    convert-source-map "^1.2.0"
+    core-assert "^0.2.0"
+    currently-unhandled "^0.4.1"
+    debug "^2.2.0"
+    diff "^3.0.1"
+    diff-match-patch "^1.0.0"
+    dot-prop "^4.1.0"
+    empower-core "^0.6.1"
+    equal-length "^1.0.0"
+    figures "^2.0.0"
+    find-cache-dir "^0.1.1"
+    fn-name "^2.0.0"
+    get-port "^3.0.0"
+    globby "^6.0.0"
+    has-flag "^2.0.0"
+    hullabaloo-config-manager "^1.0.0"
+    ignore-by-default "^1.0.0"
+    indent-string "^3.0.0"
+    is-ci "^1.0.7"
+    is-generator-fn "^1.0.0"
+    is-obj "^1.0.0"
+    is-observable "^0.2.0"
+    is-promise "^2.1.0"
+    jest-diff "19.0.0"
+    jest-snapshot "19.0.2"
+    js-yaml "^3.8.2"
+    last-line-stream "^1.0.0"
+    lodash.debounce "^4.0.3"
+    lodash.difference "^4.3.0"
+    lodash.flatten "^4.2.0"
+    lodash.isequal "^4.5.0"
+    loud-rejection "^1.2.0"
+    matcher "^0.1.1"
+    md5-hex "^2.0.0"
+    meow "^3.7.0"
+    mkdirp "^0.5.1"
+    ms "^0.7.1"
+    multimatch "^2.1.0"
+    observable-to-promise "^0.5.0"
+    option-chain "^0.1.0"
+    package-hash "^2.0.0"
+    pkg-conf "^2.0.0"
+    plur "^2.0.0"
+    pretty-ms "^2.0.0"
+    require-precompiled "^0.1.0"
+    resolve-cwd "^1.0.0"
+    slash "^1.0.0"
+    source-map-support "^0.4.0"
+    stack-utils "^1.0.0"
+    strip-ansi "^3.0.1"
+    strip-bom-buf "^1.0.0"
+    supports-color "^3.2.3"
+    time-require "^0.1.2"
+    unique-temp-dir "^1.0.0"
+    update-notifier "^2.1.0"
+
 aws-sign2@~0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
@@ -138,11 +407,301 @@ aws4@^1.2.1:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
 
+babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+  dependencies:
+    chalk "^1.1.0"
+    esutils "^2.0.2"
+    js-tokens "^3.0.0"
+
+babel-core@^6.17.0, babel-core@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83"
+  dependencies:
+    babel-code-frame "^6.22.0"
+    babel-generator "^6.24.1"
+    babel-helpers "^6.24.1"
+    babel-messages "^6.23.0"
+    babel-register "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+    babylon "^6.11.0"
+    convert-source-map "^1.1.0"
+    debug "^2.1.1"
+    json5 "^0.5.0"
+    lodash "^4.2.0"
+    minimatch "^3.0.2"
+    path-is-absolute "^1.0.0"
+    private "^0.1.6"
+    slash "^1.0.0"
+    source-map "^0.5.0"
+
+babel-generator@^6.1.0, babel-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
+  dependencies:
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+    detect-indent "^4.0.0"
+    jsesc "^1.3.0"
+    lodash "^4.2.0"
+    source-map "^0.5.0"
+    trim-right "^1.0.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+  dependencies:
+    babel-helper-explode-assignable-expression "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-call-delegate@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+  dependencies:
+    babel-helper-hoist-variables "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-function-name@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+  dependencies:
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helper-get-function-arity@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+    lodash "^4.2.0"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-helpers@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+
+babel-messages@^6.23.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.8.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-espower@^2.3.2:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e"
+  dependencies:
+    babel-generator "^6.1.0"
+    babylon "^6.1.0"
+    call-matcher "^1.0.0"
+    core-js "^2.0.0"
+    espower-location-detector "^1.0.0"
+    espurify "^1.6.0"
+    estraverse "^4.1.1"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+  version "6.13.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-trailing-function-commas@^6.20.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-to-generator@^6.16.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+  dependencies:
+    babel-helper-remap-async-to-generator "^6.24.1"
+    babel-plugin-syntax-async-functions "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-destructuring@^6.19.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.9.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+  dependencies:
+    babel-helper-function-name "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.18.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
+  dependencies:
+    babel-plugin-transform-strict-mode "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-parameters@^6.21.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+  dependencies:
+    babel-helper-call-delegate "^6.24.1"
+    babel-helper-get-function-arity "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-template "^6.24.1"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.8.0:
+  version "6.22.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+  dependencies:
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.8.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-unicode-regex@^6.11.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+  dependencies:
+    babel-helper-regex "^6.24.1"
+    babel-runtime "^6.22.0"
+    regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.8.0:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+  dependencies:
+    babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
+    babel-plugin-syntax-exponentiation-operator "^6.8.0"
+    babel-runtime "^6.22.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+
+babel-register@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
+  dependencies:
+    babel-core "^6.24.1"
+    babel-runtime "^6.22.0"
+    core-js "^2.4.0"
+    home-or-tmp "^2.0.0"
+    lodash "^4.2.0"
+    mkdirp "^0.5.1"
+    source-map-support "^0.4.2"
+
+babel-runtime@^6.22.0:
+  version "6.23.0"
+  resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
+  dependencies:
+    core-js "^2.4.0"
+    regenerator-runtime "^0.10.0"
+
+babel-template@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
+  dependencies:
+    babel-runtime "^6.22.0"
+    babel-traverse "^6.24.1"
+    babel-types "^6.24.1"
+    babylon "^6.11.0"
+    lodash "^4.2.0"
+
+babel-traverse@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
+  dependencies:
+    babel-code-frame "^6.22.0"
+    babel-messages "^6.23.0"
+    babel-runtime "^6.22.0"
+    babel-types "^6.24.1"
+    babylon "^6.15.0"
+    debug "^2.2.0"
+    globals "^9.0.0"
+    invariant "^2.2.0"
+    lodash "^4.2.0"
+
+babel-types@^6.24.1:
+  version "6.24.1"
+  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
+  dependencies:
+    babel-runtime "^6.22.0"
+    esutils "^2.0.2"
+    lodash "^4.2.0"
+    to-fast-properties "^1.0.1"
+
+babylon@^6.1.0, babylon@^6.11.0, babylon@^6.15.0:
+  version "6.16.1"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
+
 balanced-match@^0.4.1:
   version "0.4.2"
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
 
-base64url@^2.0.0:
+base64url@2.0.0, base64url@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
 
@@ -163,6 +722,10 @@ bcrypt-pbkdf@^1.0.0:
   dependencies:
     tweetnacl "^0.14.3"
 
+binary-extensions@^1.0.0:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+
 bl@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
@@ -175,12 +738,28 @@ block-stream@*:
   dependencies:
     inherits "~2.0.0"
 
+bluebird@^3.0.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
+
 boom@2.x.x:
   version "2.10.1"
   resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
   dependencies:
     hoek "2.x.x"
 
+boxen@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.0.0.tgz#b2694baf1f605f708ff0177c12193b22f29aaaab"
+  dependencies:
+    ansi-align "^1.1.0"
+    camelcase "^4.0.0"
+    chalk "^1.1.1"
+    cli-boxes "^1.0.0"
+    string-width "^2.0.0"
+    term-size "^0.1.0"
+    widest-line "^1.0.0"
+
 brace-expansion@^1.0.0:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
@@ -188,7 +767,19 @@ brace-expansion@^1.0.0:
     balanced-match "^0.4.1"
     concat-map "0.0.1"
 
-buffer-equal-constant-time@^1.0.1:
+braces@^1.8.2:
+  version "1.8.5"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+  dependencies:
+    expand-range "^1.8.1"
+    preserve "^0.2.0"
+    repeat-element "^1.1.2"
+
+buf-compare@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a"
+
+buffer-equal-constant-time@1.0.1, buffer-equal-constant-time@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
 
@@ -196,7 +787,7 @@ buffer-shims@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
 
-builtin-modules@^1.0.0:
+builtin-modules@^1.0.0, builtin-modules@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
 
@@ -206,6 +797,37 @@ bytebuffer@~5:
   dependencies:
     long "~3"
 
+caching-transform@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
+  dependencies:
+    md5-hex "^1.2.0"
+    mkdirp "^0.5.1"
+    write-file-atomic "^1.1.4"
+
+call-matcher@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.1.tgz#5134d077984f712a54dad3cbf62de28dce416ca8"
+  dependencies:
+    core-js "^2.0.0"
+    deep-equal "^1.0.0"
+    espurify "^1.6.0"
+    estraverse "^4.0.0"
+
+call-signature@0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
+
+caller-path@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+  dependencies:
+    callsites "^0.2.0"
+
+callsites@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+
 camelcase-keys@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-1.0.0.tgz#bd1a11bf9b31a1ce493493a930de1a0baf4ad7ec"
@@ -213,11 +835,18 @@ camelcase-keys@^1.0.0:
     camelcase "^1.0.1"
     map-obj "^1.0.0"
 
-camelcase@^1.0.1:
+camelcase-keys@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+  dependencies:
+    camelcase "^2.0.0"
+    map-obj "^1.0.0"
+
+camelcase@^1.0.1, camelcase@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
 
-camelcase@^2.0.1:
+camelcase@^2.0.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
 
@@ -225,6 +854,10 @@ camelcase@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
 
+camelcase@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+
 capture-stack-trace@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
@@ -233,7 +866,14 @@ caseless@~0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
 
-chalk@^1.1.1:
+center-align@^0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+  dependencies:
+    align-text "^0.1.3"
+    lazy-cache "^1.0.3"
+
+chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
   dependencies:
@@ -243,7 +883,85 @@ chalk@^1.1.1:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-cliui@^3.0.3, cliui@^3.2.0:
+chalk@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
+  dependencies:
+    ansi-styles "~1.0.0"
+    has-color "~0.1.0"
+    strip-ansi "~0.1.0"
+
+chokidar@^1.4.2:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+  dependencies:
+    anymatch "^1.3.0"
+    async-each "^1.0.0"
+    glob-parent "^2.0.0"
+    inherits "^2.0.1"
+    is-binary-path "^1.0.0"
+    is-glob "^2.0.0"
+    path-is-absolute "^1.0.0"
+    readdirp "^2.0.0"
+  optionalDependencies:
+    fsevents "^1.0.0"
+
+ci-info@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
+
+circular-json@^0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
+
+clean-stack@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.1.1.tgz#a1b3711122df162df7c7cb9b3c0470f28cb58adb"
+
+clean-yaml-object@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68"
+
+cli-boxes@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+
+cli-cursor@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+  dependencies:
+    restore-cursor "^1.0.1"
+
+cli-cursor@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+  dependencies:
+    restore-cursor "^2.0.0"
+
+cli-spinners@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a"
+
+cli-truncate@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.0.0.tgz#21eb91f47b3f6560f004db77a769b4668d9c5518"
+  dependencies:
+    slice-ansi "0.0.4"
+    string-width "^2.0.0"
+
+cli-width@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
+
+cliui@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+  dependencies:
+    center-align "^0.1.1"
+    right-align "^0.1.1"
+    wordwrap "0.0.2"
+
+cliui@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
   dependencies:
@@ -251,10 +969,40 @@ cliui@^3.0.3, cliui@^3.2.0:
     strip-ansi "^3.0.1"
     wrap-ansi "^2.0.0"
 
+co-with-promise@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7"
+  dependencies:
+    pinkie-promise "^1.0.0"
+
+co@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
+code-excerpt@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.0.tgz#5dcc081e88f4a7e3b554e9e35d7ef232d47f8147"
+  dependencies:
+    convert-to-spaces "^1.0.1"
+
 code-point-at@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
 
+color-convert@^1.0.0:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
+  dependencies:
+    color-name "^1.1.1"
+
+color-name@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d"
+
+colors@1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
 colour@~0.7.1:
   version "0.7.1"
   resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778"
@@ -271,11 +1019,23 @@ commander@^2.9.0:
   dependencies:
     graceful-readlink ">= 1.0.0"
 
+common-path-prefix@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0"
+
+commondir@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+
+component-emitter@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 
-concat-stream@^1.5.0, concat-stream@^1.6.0:
+concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
   dependencies:
@@ -291,46 +1051,166 @@ concat-stream@~1.4.7:
     readable-stream "~1.1.9"
     typedarray "~0.0.5"
 
+configstore@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.0.0.tgz#e1b8669c1803ccc50b545e92f8e6e79aa80e0196"
+  dependencies:
+    dot-prop "^4.1.0"
+    graceful-fs "^4.1.2"
+    mkdirp "^0.5.0"
+    unique-string "^1.0.0"
+    write-file-atomic "^1.1.2"
+    xdg-basedir "^3.0.0"
+
 console-control-strings@^1.0.0, console-control-strings@~1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
 
+contains-path@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+
+convert-source-map@^1.1.0, convert-source-map@^1.2.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
+
+convert-to-spaces@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715"
+
+cookiejar@^2.0.6:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
+
+core-assert@^0.2.0:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f"
+  dependencies:
+    buf-compare "^1.0.0"
+    is-error "^2.2.0"
+
+core-js@^2.0.0, core-js@^2.4.0:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+
 core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 
-create-error-class@^3.0.2:
+create-error-class@^3.0.0, create-error-class@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
   dependencies:
     capture-stack-trace "^1.0.0"
 
+cross-spawn-async@^2.1.1:
+  version "2.2.5"
+  resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc"
+  dependencies:
+    lru-cache "^4.0.0"
+    which "^1.2.8"
+
+cross-spawn@^4.0.0:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
+  dependencies:
+    lru-cache "^4.0.1"
+    which "^1.2.9"
+
 cryptiles@2.x.x:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
   dependencies:
     boom "2.x.x"
 
+crypto-random-string@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+
+currently-unhandled@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+  dependencies:
+    array-find-index "^1.0.1"
+
+d@1:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+  dependencies:
+    es5-ext "^0.10.9"
+
 dashdash@^1.12.0:
   version "1.14.1"
   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
   dependencies:
     assert-plus "^1.0.0"
 
-debug@~2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+date-time@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07"
+
+debug-log@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
+
+debug@2.2.0, debug@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
   dependencies:
     ms "0.7.1"
 
-decamelize@^1.1.1:
+debug@^2.1.1, debug@^2.2.0:
+  version "2.6.3"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
+  dependencies:
+    ms "0.7.2"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
 
+deep-equal@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+
 deep-extend@~0.4.0:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
 
+deep-is@~0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
+define-properties@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+  dependencies:
+    foreach "^2.0.5"
+    object-keys "^1.0.8"
+
+deglob@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a"
+  dependencies:
+    find-root "^1.0.0"
+    glob "^7.0.5"
+    ignore "^3.0.9"
+    pkg-config "^1.1.0"
+    run-parallel "^1.1.2"
+    uniq "^1.0.1"
+
+del@^2.0.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+  dependencies:
+    globby "^5.0.0"
+    is-path-cwd "^1.0.0"
+    is-path-in-cwd "^1.0.0"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+    rimraf "^2.2.8"
+
 delayed-stream@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -339,12 +1219,50 @@ delegates@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
 
+detect-indent@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+  dependencies:
+    repeating "^2.0.0"
+
+diff-match-patch@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.0.tgz#1cc3c83a490d67f95d91e39f6ad1f2e086b63048"
+
+diff@^3.0.0, diff@^3.0.1, diff@^3.1.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+
+doctrine@1.5.0, doctrine@^1.2.2:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+  dependencies:
+    esutils "^2.0.2"
+    isarray "^1.0.0"
+
+doctrine@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
+  dependencies:
+    esutils "^2.0.2"
+    isarray "^1.0.0"
+
 dot-prop@^2.4.0:
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-2.4.0.tgz#848e28f7f1d50740c6747ab3cb07670462b6f89c"
   dependencies:
     is-obj "^1.0.0"
 
+dot-prop@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1"
+  dependencies:
+    is-obj "^1.0.0"
+
+duplexer3@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+
 duplexify@^3.5.0:
   version "3.5.0"
   resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
@@ -360,13 +1278,20 @@ ecc-jsbn@~0.1.1:
   dependencies:
     jsbn "~0.1.0"
 
-ecdsa-sig-formatter@^1.0.0:
+ecdsa-sig-formatter@1.0.9, ecdsa-sig-formatter@^1.0.0:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1"
   dependencies:
     base64url "^2.0.0"
     safe-buffer "^5.0.1"
 
+empower-core@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1"
+  dependencies:
+    call-signature "0.0.2"
+    core-js "^2.0.0"
+
 end-of-stream@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
@@ -377,24 +1302,380 @@ ent@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
 
+equal-length@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c"
+
 error-ex@^1.2.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
   dependencies:
     is-arrayish "^0.2.1"
 
-escape-string-regexp@^1.0.2:
+es-abstract@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
+  dependencies:
+    es-to-primitive "^1.1.1"
+    function-bind "^1.1.0"
+    is-callable "^1.1.3"
+    is-regex "^1.0.3"
+
+es-to-primitive@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+  dependencies:
+    is-callable "^1.1.1"
+    is-date-object "^1.0.1"
+    is-symbol "^1.0.1"
+
+es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
+  version "0.10.15"
+  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6"
+  dependencies:
+    es6-iterator "2"
+    es6-symbol "~3.1"
+
+es6-error@^4.0.1, es6-error@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
+
+es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
+  dependencies:
+    d "1"
+    es5-ext "^0.10.14"
+    es6-symbol "^3.1"
+
+es6-map@^0.1.3:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+    es6-iterator "~2.0.1"
+    es6-set "~0.1.5"
+    es6-symbol "~3.1.1"
+    event-emitter "~0.3.5"
+
+es6-set@~0.1.5:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+    es6-iterator "~2.0.1"
+    es6-symbol "3.1.1"
+    event-emitter "~0.3.5"
+
+es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+
+es6-weak-map@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+  dependencies:
+    d "1"
+    es5-ext "^0.10.14"
+    es6-iterator "^2.0.1"
+    es6-symbol "^3.1.1"
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
 
+escope@^3.6.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+  dependencies:
+    es6-map "^0.1.3"
+    es6-weak-map "^2.0.1"
+    esrecurse "^4.1.0"
+    estraverse "^4.1.1"
+
+eslint-config-semistandard@^11.0.0:
+  version "11.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-11.0.0.tgz#44eef7cfdfd47219e3a7b81b91b540e880bb2615"
+
+eslint-config-standard-jsx@4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642"
+
+eslint-config-standard@^10.2.1:
+  version "10.2.1"
+  resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
+
+eslint-import-resolver-node@^0.2.0:
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c"
+  dependencies:
+    debug "^2.2.0"
+    object-assign "^4.0.1"
+    resolve "^1.1.6"
+
+eslint-module-utils@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce"
+  dependencies:
+    debug "2.2.0"
+    pkg-dir "^1.0.0"
+
+eslint-plugin-import@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e"
+  dependencies:
+    builtin-modules "^1.1.1"
+    contains-path "^0.1.0"
+    debug "^2.2.0"
+    doctrine "1.5.0"
+    eslint-import-resolver-node "^0.2.0"
+    eslint-module-utils "^2.0.0"
+    has "^1.0.1"
+    lodash.cond "^4.3.0"
+    minimatch "^3.0.3"
+    pkg-up "^1.0.0"
+
+eslint-plugin-node@~4.2.2:
+  version "4.2.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363"
+  dependencies:
+    ignore "^3.0.11"
+    minimatch "^3.0.2"
+    object-assign "^4.0.1"
+    resolve "^1.1.7"
+    semver "5.3.0"
+
+eslint-plugin-promise@~3.5.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca"
+
+eslint-plugin-react@~6.10.0:
+  version "6.10.3"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
+  dependencies:
+    array.prototype.find "^2.0.1"
+    doctrine "^1.2.2"
+    has "^1.0.1"
+    jsx-ast-utils "^1.3.4"
+    object.assign "^4.0.4"
+
+eslint-plugin-standard@~3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
+
+eslint@~3.19.0:
+  version "3.19.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
+  dependencies:
+    babel-code-frame "^6.16.0"
+    chalk "^1.1.3"
+    concat-stream "^1.5.2"
+    debug "^2.1.1"
+    doctrine "^2.0.0"
+    escope "^3.6.0"
+    espree "^3.4.0"
+    esquery "^1.0.0"
+    estraverse "^4.2.0"
+    esutils "^2.0.2"
+    file-entry-cache "^2.0.0"
+    glob "^7.0.3"
+    globals "^9.14.0"
+    ignore "^3.2.0"
+    imurmurhash "^0.1.4"
+    inquirer "^0.12.0"
+    is-my-json-valid "^2.10.0"
+    is-resolvable "^1.0.0"
+    js-yaml "^3.5.1"
+    json-stable-stringify "^1.0.0"
+    levn "^0.3.0"
+    lodash "^4.0.0"
+    mkdirp "^0.5.0"
+    natural-compare "^1.4.0"
+    optionator "^0.8.2"
+    path-is-inside "^1.0.1"
+    pluralize "^1.2.1"
+    progress "^1.1.8"
+    require-uncached "^1.0.2"
+    shelljs "^0.7.5"
+    strip-bom "^3.0.0"
+    strip-json-comments "~2.0.1"
+    table "^3.7.8"
+    text-table "~0.2.0"
+    user-home "^2.0.0"
+
+espower-location-detector@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5"
+  dependencies:
+    is-url "^1.2.1"
+    path-is-absolute "^1.0.0"
+    source-map "^0.5.0"
+    xtend "^4.0.0"
+
+espree@^3.4.0:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2"
+  dependencies:
+    acorn "^5.0.1"
+    acorn-jsx "^3.0.0"
+
+esprima@^3.1.1:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+
+espurify@^1.6.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.7.0.tgz#1c5cf6cbccc32e6f639380bd4f991fab9ba9d226"
+  dependencies:
+    core-js "^2.0.0"
+
+esquery@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+  dependencies:
+    estraverse "^4.0.0"
+
+esrecurse@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
+  dependencies:
+    estraverse "~4.1.0"
+    object-assign "^4.0.1"
+
+estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+
+estraverse@~4.1.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
+
+esutils@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+event-emitter@~0.3.5:
+  version "0.3.5"
+  resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+  dependencies:
+    d "1"
+    es5-ext "~0.10.14"
+
+execa@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3"
+  dependencies:
+    cross-spawn-async "^2.1.1"
+    is-stream "^1.1.0"
+    npm-run-path "^1.0.0"
+    object-assign "^4.0.1"
+    path-key "^1.0.0"
+    strip-eof "^1.0.0"
+
+execa@^0.5.0:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36"
+  dependencies:
+    cross-spawn "^4.0.0"
+    get-stream "^2.2.0"
+    is-stream "^1.1.0"
+    npm-run-path "^2.0.0"
+    p-finally "^1.0.0"
+    signal-exit "^3.0.0"
+    strip-eof "^1.0.0"
+
+exit-hook@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+
+expand-brackets@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+  dependencies:
+    is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+  version "1.8.2"
+  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+  dependencies:
+    fill-range "^2.1.0"
+
 extend@^3.0.0, extend@~3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
 
+extglob@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+  dependencies:
+    is-extglob "^1.0.0"
+
 extsprintf@1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
 
+fast-levenshtein@~2.0.4:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
+figures@^1.3.5:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+  dependencies:
+    escape-string-regexp "^1.0.5"
+    object-assign "^4.1.0"
+
+figures@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+  dependencies:
+    escape-string-regexp "^1.0.5"
+
+file-entry-cache@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+  dependencies:
+    flat-cache "^1.2.1"
+    object-assign "^4.0.1"
+
+filename-regex@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+
+fill-keys@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20"
+  dependencies:
+    is-object "~1.0.1"
+    merge-descriptors "~1.0.0"
+
+fill-range@^2.1.0:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+  dependencies:
+    is-number "^2.1.0"
+    isobject "^2.0.0"
+    randomatic "^1.1.3"
+    repeat-element "^1.1.2"
+    repeat-string "^1.5.2"
+
+find-cache-dir@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+  dependencies:
+    commondir "^1.0.1"
+    mkdirp "^0.5.1"
+    pkg-dir "^1.0.0"
+
+find-root@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a"
+
 find-up@^1.0.0:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -402,10 +1683,51 @@ find-up@^1.0.0:
     path-exists "^2.0.0"
     pinkie-promise "^2.0.0"
 
+find-up@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+  dependencies:
+    locate-path "^2.0.0"
+
+flat-cache@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
+  dependencies:
+    circular-json "^0.3.1"
+    del "^2.0.2"
+    graceful-fs "^4.1.2"
+    write "^0.2.1"
+
+fn-name@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
+
+for-in@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
+for-own@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+  dependencies:
+    for-in "^1.0.1"
+
+foreach@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+
 forever-agent@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
 
+form-data@^2.1.1, form-data@~2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.5"
+    mime-types "^2.1.12"
+
 form-data@~1.0.0-rc4:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c"
@@ -414,18 +1736,34 @@ form-data@~1.0.0-rc4:
     combined-stream "^1.0.5"
     mime-types "^2.1.11"
 
-form-data@~2.1.1:
+formatio@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb"
+  dependencies:
+    samsam "1.x"
+
+formidable@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9"
+
+fs-extra@2.1.2:
   version "2.1.2"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35"
   dependencies:
-    asynckit "^0.4.0"
-    combined-stream "^1.0.5"
-    mime-types "^2.1.12"
+    graceful-fs "^4.1.2"
+    jsonfile "^2.1.0"
 
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 
+fsevents@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
+  dependencies:
+    nan "^2.3.0"
+    node-pre-gyp "^0.6.29"
+
 fstream-ignore@~1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
@@ -443,6 +1781,10 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
     mkdirp ">=0.5 0"
     rimraf "2"
 
+function-bind@^1.0.2, function-bind@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
+
 gauge@~2.7.1:
   version "2.7.2"
   resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
@@ -457,6 +1799,13 @@ gauge@~2.7.1:
     supports-color "^0.2.0"
     wide-align "^1.1.0"
 
+gcp-metadata@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.1.0.tgz#abe21f1ea324dd0b34a3f06ca81763fb1eee37d9"
+  dependencies:
+    extend "^3.0.0"
+    retry-request "^1.3.2"
+
 generate-function@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
@@ -471,16 +1820,48 @@ get-caller-file@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
 
+get-port@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.1.0.tgz#ef01b18a84ca6486970ff99e54446141a73ffd3e"
+
 get-stdin@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
 
+get-stdin@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+
+get-stream@^2.2.0:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
+  dependencies:
+    object-assign "^4.0.1"
+    pinkie-promise "^2.0.0"
+
+get-stream@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+
 getpass@^0.1.1:
   version "0.1.6"
   resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
   dependencies:
     assert-plus "^1.0.0"
 
+glob-base@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+  dependencies:
+    glob-parent "^2.0.0"
+    is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+  dependencies:
+    is-glob "^2.0.0"
+
 glob@^5.0.10:
   version "5.0.15"
   resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
@@ -491,7 +1872,7 @@ glob@^5.0.10:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^7.0.5:
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
   version "7.1.1"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
   dependencies:
@@ -502,6 +1883,40 @@ glob@^7.0.5:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
+globals@^9.0.0, globals@^9.14.0:
+  version "9.17.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
+
+globby@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+  dependencies:
+    array-union "^1.0.1"
+    arrify "^1.0.0"
+    glob "^7.0.3"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+globby@^6.0.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+  dependencies:
+    array-union "^1.0.1"
+    glob "^7.0.3"
+    object-assign "^4.0.1"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+google-auth-library@^0.10.0:
+  version "0.10.0"
+  resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e"
+  dependencies:
+    gtoken "^1.2.1"
+    jws "^3.1.4"
+    lodash.noop "^3.0.1"
+    request "^2.74.0"
+
 google-auth-library@^0.9.10:
   version "0.9.10"
   resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.9.10.tgz#4993dc07bb4834b8ca0350213a6873a32c6051b9"
@@ -522,17 +1937,61 @@ google-auto-auth@^0.5.2:
     object-assign "^3.0.0"
     request "^2.79.0"
 
+google-auto-auth@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.6.0.tgz#ad76656293d8d06b3c89c358becd29947d4510a8"
+  dependencies:
+    async "^2.1.2"
+    gcp-metadata "^0.1.0"
+    google-auth-library "^0.10.0"
+    object-assign "^3.0.0"
+    request "^2.79.0"
+
+google-gax@^0.13.0:
+  version "0.13.2"
+  resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-0.13.2.tgz#61a7b55fad465b17d3680f88070b2e419131e98e"
+  dependencies:
+    extend "^3.0.0"
+    google-auto-auth "^0.5.2"
+    google-proto-files "^0.9.1"
+    grpc "^1.2"
+    is-stream-ended "^0.1.0"
+    lodash "^4.17.2"
+    process-nextick-args "^1.0.7"
+    readable-stream "^2.2.2"
+    through2 "^2.0.3"
+
 google-p12-pem@^0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.1.tgz#66ef8946ee97e8da37f1beb1d8ec5c3be2ba4539"
   dependencies:
     node-forge "^0.6.46"
 
-google-proto-files@^0.8.6:
-  version "0.8.6"
-  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.8.6.tgz#a7c8ddccd2179690d270b0ebfc42994d56da0ee6"
+google-proto-files@^0.11.0:
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.11.0.tgz#3d753120718e5e8574f38def739d54cf7a057553"
+
+google-proto-files@^0.9.1:
+  version "0.9.1"
+  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.9.1.tgz#c760c79059bf62ba3ac56e1d1ba7b8d4560803be"
+
+got@6.7.1, got@^6.7.1:
+  version "6.7.1"
+  resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+  dependencies:
+    create-error-class "^3.0.0"
+    duplexer3 "^0.1.4"
+    get-stream "^3.0.0"
+    is-redirect "^1.0.0"
+    is-retry-allowed "^1.0.0"
+    is-stream "^1.0.0"
+    lowercase-keys "^1.0.0"
+    safe-buffer "^5.0.1"
+    timed-out "^4.0.0"
+    unzip-response "^2.0.1"
+    url-parse-lax "^1.0.0"
 
-graceful-fs@^4.1.2:
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
@@ -540,9 +1999,9 @@ graceful-fs@^4.1.2:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
 
-grpc@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.1.1.tgz#f8fe5fc984e7d4d6ab0c19259a7d232c95e142bc"
+grpc@^1.2, grpc@^1.2.3:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.2.4.tgz#ef0c8c708245d8fc797e39aa330dce409b3dd03c"
   dependencies:
     arguejs "^0.2.3"
     lodash "^4.15.0"
@@ -550,7 +2009,7 @@ grpc@^1.1.1:
     node-pre-gyp "^0.6.0"
     protobufjs "^5.0.0"
 
-gtoken@^1.1.0:
+gtoken@^1.1.0, gtoken@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.1.tgz#90153a547c2fc1cd24a4d3d2ab3b5aba0a26897a"
   dependencies:
@@ -559,6 +2018,16 @@ gtoken@^1.1.0:
     mime "^1.2.11"
     request "^2.72.0"
 
+handlebars@4.0.6:
+  version "4.0.6"
+  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
+  dependencies:
+    async "^1.4.0"
+    optimist "^0.6.1"
+    source-map "^0.4.4"
+  optionalDependencies:
+    uglify-js "^2.6"
+
 har-validator@~2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
@@ -574,10 +2043,32 @@ has-ansi@^2.0.0:
   dependencies:
     ansi-regex "^2.0.0"
 
+has-color@~0.1.0:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f"
+
+has-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+
+has-flag@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+
 has-unicode@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
 
+has-yarn@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7"
+
+has@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+  dependencies:
+    function-bind "^1.0.2"
+
 hawk@~3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
@@ -591,6 +2082,13 @@ hoek@2.x.x:
   version "2.16.3"
   resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
 
+home-or-tmp@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+  dependencies:
+    os-homedir "^1.0.0"
+    os-tmpdir "^1.0.1"
+
 hosted-git-info@^2.1.4:
   version "2.1.5"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
@@ -603,14 +2101,54 @@ http-signature@~1.1.0:
     jsprim "^1.2.2"
     sshpk "^1.7.0"
 
-indent-string@^1.1.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b"
+hullabaloo-config-manager@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.0.1.tgz#c72be7ba249a67c99b6ba3eb1f55837fa01acd8f"
   dependencies:
-    get-stdin "^4.0.1"
+    dot-prop "^4.1.0"
+    es6-error "^4.0.2"
+    graceful-fs "^4.1.11"
+    indent-string "^3.1.0"
+    json5 "^0.5.1"
+    lodash.clonedeep "^4.5.0"
+    lodash.clonedeepwith "^4.5.0"
+    lodash.isequal "^4.5.0"
+    lodash.merge "^4.6.0"
+    md5-hex "^2.0.0"
+    package-hash "^2.0.0"
+    pkg-dir "^1.0.0"
+    resolve-from "^2.0.0"
+
+ignore-by-default@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
+
+ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0:
+  version "3.2.7"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd"
+
+imurmurhash@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+
+indent-string@^1.1.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b"
+  dependencies:
+    get-stdin "^4.0.1"
     minimist "^1.1.0"
     repeating "^1.1.0"
 
+indent-string@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+  dependencies:
+    repeating "^2.0.0"
+
+indent-string@^3.0.0, indent-string@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d"
+
 inflight@^1.0.4:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -626,21 +2164,99 @@ ini@~1.3.0:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
 
+inquirer@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
+  dependencies:
+    ansi-escapes "^1.1.0"
+    ansi-regex "^2.0.0"
+    chalk "^1.0.0"
+    cli-cursor "^1.0.1"
+    cli-width "^2.0.0"
+    figures "^1.3.5"
+    lodash "^4.3.0"
+    readline2 "^1.0.1"
+    run-async "^0.1.0"
+    rx-lite "^3.1.2"
+    string-width "^1.0.1"
+    strip-ansi "^3.0.0"
+    through "^2.3.6"
+
+interpret@^1.0.0:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
+
+invariant@^2.2.0:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+  dependencies:
+    loose-envify "^1.0.0"
+
 invert-kv@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
 
+irregular-plurals@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac"
+
 is-arrayish@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
 
+is-binary-path@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+  dependencies:
+    binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
+
 is-builtin-module@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
   dependencies:
     builtin-modules "^1.0.0"
 
-is-finite@^1.0.0:
+is-callable@^1.1.1, is-callable@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
+is-ci@^1.0.7:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+  dependencies:
+    ci-info "^1.0.0"
+
+is-date-object@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+
+is-dotfile@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+
+is-equal-shallow@^0.1.3:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+  dependencies:
+    is-primitive "^2.0.0"
+
+is-error@^2.2.0:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c"
+
+is-extendable@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extglob@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-finite@^1.0.0, is-finite@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
   dependencies:
@@ -652,7 +2268,21 @@ is-fullwidth-code-point@^1.0.0:
   dependencies:
     number-is-nan "^1.0.0"
 
-is-my-json-valid@^2.12.4:
+is-fullwidth-code-point@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+
+is-generator-fn@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+  dependencies:
+    is-extglob "^1.0.0"
+
+is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
   version "2.15.0"
   resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
   dependencies:
@@ -661,23 +2291,107 @@ is-my-json-valid@^2.12.4:
     jsonpointer "^4.0.0"
     xtend "^4.0.0"
 
+is-npm@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+
+is-number@^2.0.2, is-number@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+  dependencies:
+    kind-of "^3.0.2"
+
 is-obj@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 
+is-object@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
+
+is-observable@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2"
+  dependencies:
+    symbol-observable "^0.2.2"
+
+is-path-cwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+  dependencies:
+    is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
+  dependencies:
+    path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+
+is-posix-bracket@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+is-promise@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+
 is-property@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
 
+is-redirect@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+
+is-regex@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+  dependencies:
+    has "^1.0.1"
+
+is-resolvable@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
+  dependencies:
+    tryit "^1.0.1"
+
+is-retry-allowed@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
+
 is-stream-ended@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.0.tgz#40f058df6b044ee598fee4df7dc1ec2bcdd8df60"
 
+is-stream@^1.0.0, is-stream@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
+is-symbol@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
 is-typedarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
 
-is-utf8@^0.2.0:
+is-url@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
+
+is-utf8@^0.2.0, is-utf8@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
 
@@ -689,32 +2403,146 @@ isarray@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
 
-isarray@~1.0.0:
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+
+isobject@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+  dependencies:
+    isarray "1.0.0"
+
 isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
 
+jest-diff@19.0.0, jest-diff@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c"
+  dependencies:
+    chalk "^1.1.3"
+    diff "^3.0.0"
+    jest-matcher-utils "^19.0.0"
+    pretty-format "^19.0.0"
+
+jest-file-exists@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8"
+
+jest-matcher-utils@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d"
+  dependencies:
+    chalk "^1.1.3"
+    pretty-format "^19.0.0"
+
+jest-message-util@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-19.0.0.tgz#721796b89c0e4d761606f9ba8cb828a3b6246416"
+  dependencies:
+    chalk "^1.1.1"
+    micromatch "^2.3.11"
+
+jest-mock@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-19.0.0.tgz#67038641e9607ab2ce08ec4a8cb83aabbc899d01"
+
+jest-snapshot@19.0.2:
+  version "19.0.2"
+  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b"
+  dependencies:
+    chalk "^1.1.3"
+    jest-diff "^19.0.0"
+    jest-file-exists "^19.0.0"
+    jest-matcher-utils "^19.0.0"
+    jest-util "^19.0.2"
+    natural-compare "^1.4.0"
+    pretty-format "^19.0.0"
+
+jest-util@^19.0.2:
+  version "19.0.2"
+  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41"
+  dependencies:
+    chalk "^1.1.1"
+    graceful-fs "^4.1.6"
+    jest-file-exists "^19.0.0"
+    jest-message-util "^19.0.0"
+    jest-mock "^19.0.0"
+    jest-validate "^19.0.2"
+    leven "^2.0.0"
+    mkdirp "^0.5.1"
+
+jest-validate@^19.0.2:
+  version "19.0.2"
+  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c"
+  dependencies:
+    chalk "^1.1.1"
+    jest-matcher-utils "^19.0.0"
+    leven "^2.0.0"
+    pretty-format "^19.0.0"
+
 jodid25519@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
   dependencies:
     jsbn "~0.1.0"
 
+js-tokens@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+
+js-yaml@^3.5.1, js-yaml@^3.8.2:
+  version "3.8.3"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^3.1.1"
+
 jsbn@~0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
 
+jsesc@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+
+jsesc@~0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
 json-schema@0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
 
+json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+  dependencies:
+    jsonify "~0.0.0"
+
 json-stringify-safe@~5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
 
+json5@^0.5.0, json5@^0.5.1:
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+
+jsonfile@^2.1.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+  version "0.0.0"
+  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+
 jsonpointer@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
@@ -727,6 +2555,19 @@ jsprim@^1.2.2:
     json-schema "0.2.3"
     verror "1.3.6"
 
+jsx-ast-utils@^1.3.4:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
+
+jwa@^1.1.4:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5"
+  dependencies:
+    base64url "2.0.0"
+    buffer-equal-constant-time "1.0.1"
+    ecdsa-sig-formatter "1.0.9"
+    safe-buffer "^5.0.1"
+
 jwa@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.0.2.tgz#fd79609f1e772e299dce8ddb76d00659dd83511f"
@@ -735,19 +2576,64 @@ jwa@~1.0.0:
     buffer-equal-constant-time "^1.0.1"
     ecdsa-sig-formatter "^1.0.0"
 
-jws@^3.0.0, jws@~3.0.0:
+jws@^3.0.0, jws@^3.1.4:
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2"
+  dependencies:
+    base64url "^2.0.0"
+    jwa "^1.1.4"
+    safe-buffer "^5.0.1"
+
+jws@~3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/jws/-/jws-3.0.0.tgz#da5f267897dd4e9cf8137979db33fc54a3c05418"
   dependencies:
     base64url "~1.0.4"
     jwa "~1.0.0"
 
+kind-of@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+  dependencies:
+    is-buffer "^1.0.2"
+
+last-line-stream@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600"
+  dependencies:
+    through2 "^2.0.0"
+
+latest-version@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+  dependencies:
+    package-json "^4.0.0"
+
+lazy-cache@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+
+lazy-req@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4"
+
 lcid@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
   dependencies:
     invert-kv "^1.0.0"
 
+leven@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+
+levn@^0.3.0, levn@~0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+  dependencies:
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+
 load-json-file@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -758,15 +2644,63 @@ load-json-file@^1.0.0:
     pinkie-promise "^2.0.0"
     strip-bom "^2.0.0"
 
+load-json-file@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+  dependencies:
+    graceful-fs "^4.1.2"
+    parse-json "^2.2.0"
+    pify "^2.0.0"
+    strip-bom "^3.0.0"
+
+locate-path@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+  dependencies:
+    p-locate "^2.0.0"
+    path-exists "^3.0.0"
+
+lodash.clonedeep@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+
+lodash.clonedeepwith@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4"
+
+lodash.cond@^4.3.0:
+  version "4.5.2"
+  resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
+
+lodash.debounce@^4.0.3:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+
+lodash.difference@^4.3.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
+
 lodash.flatten@^4.2.0:
   version "4.4.0"
   resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
 
-lodash.noop@~3.0.0:
+lodash.flattendeep@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+
+lodash.isequal@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+
+lodash.merge@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
+
+lodash.noop@^3.0.1, lodash.noop@~3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c"
 
-lodash@^4.14.0, lodash@^4.15.0:
+lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.3.0:
   version "4.17.4"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 
@@ -774,14 +2708,83 @@ log-driver@^1.2.5:
   version "1.2.5"
   resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056"
 
+lolex@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6"
+
 long@~3:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
 
-map-obj@^1.0.0:
+longest@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+
+loose-envify@^1.0.0:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+  dependencies:
+    js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0, loud-rejection@^1.2.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+  dependencies:
+    currently-unhandled "^0.4.1"
+    signal-exit "^3.0.0"
+
+lowercase-keys@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
+
+lru-cache@^4.0.0, lru-cache@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
+  dependencies:
+    pseudomap "^1.0.1"
+    yallist "^2.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
 
+matcher@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101"
+  dependencies:
+    escape-string-regexp "^1.0.4"
+
+md5-hex@^1.2.0, md5-hex@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4"
+  dependencies:
+    md5-o-matic "^0.1.1"
+
+md5-hex@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33"
+  dependencies:
+    md5-o-matic "^0.1.1"
+
+md5-o-matic@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
+
+meow@^3.7.0:
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+  dependencies:
+    camelcase-keys "^2.0.0"
+    decamelize "^1.1.2"
+    loud-rejection "^1.0.0"
+    map-obj "^1.0.1"
+    minimist "^1.1.3"
+    normalize-package-data "^2.3.4"
+    object-assign "^4.0.1"
+    read-pkg-up "^1.0.1"
+    redent "^1.0.0"
+    trim-newlines "^1.0.0"
+
 meow@~2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/meow/-/meow-2.0.0.tgz#8f530a8ecf5d40d3f4b4df93c3472900fba2a8f1"
@@ -791,10 +2794,36 @@ meow@~2.0.0:
     minimist "^1.1.0"
     object-assign "^1.0.0"
 
+merge-descriptors@~1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
 methmeth@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/methmeth/-/methmeth-1.1.0.tgz#e80a26618e52f5c4222861bb748510bd10e29089"
 
+methods@^1.1.1, methods@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+micromatch@^2.1.5, micromatch@^2.3.11:
+  version "2.3.11"
+  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+  dependencies:
+    arr-diff "^2.0.0"
+    array-unique "^0.2.1"
+    braces "^1.8.2"
+    expand-brackets "^0.1.4"
+    extglob "^0.3.1"
+    filename-regex "^2.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.1"
+    kind-of "^3.0.2"
+    normalize-path "^2.0.1"
+    object.omit "^2.0.0"
+    parse-glob "^3.0.4"
+    regex-cache "^0.4.2"
+
 mime-db@~1.25.0:
   version "1.25.0"
   resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
@@ -805,25 +2834,29 @@ mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.7:
   dependencies:
     mime-db "~1.25.0"
 
-mime@^1.2.11:
+mime@^1.2.11, mime@^1.3.4:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
 
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+mimic-fn@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
   dependencies:
     brace-expansion "^1.0.0"
 
-minimist@0.0.8:
+minimist@0.0.8, minimist@~0.0.1:
   version "0.0.8"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
 
-minimist@^1.1.0, minimist@^1.2.0:
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
-"mkdirp@>=0.5 0", mkdirp@~0.5.1:
+"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
   dependencies:
@@ -833,19 +2866,52 @@ modelo@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/modelo/-/modelo-4.2.0.tgz#3b4b420023a66ca7e32bdba16e710937e14d1b0b"
 
+module-not-found-error@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0"
+
 ms@0.7.1:
   version "0.7.1"
   resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
 
-nan@^2.0.0:
+ms@0.7.2:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
+
+ms@^0.7.1:
+  version "0.7.3"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
+
+multimatch@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
+  dependencies:
+    array-differ "^1.0.0"
+    array-union "^1.0.1"
+    arrify "^1.0.0"
+    minimatch "^3.0.0"
+
+mute-stream@0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
+
+nan@^2.0.0, nan@^2.3.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
 
+native-promise-only@^0.8.1:
+  version "0.8.1"
+  resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11"
+
+natural-compare@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+
 node-forge@^0.6.46:
   version "0.6.46"
   resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.46.tgz#04a8a1c336eb72ef6f434ba7c854d608916c328d"
 
-node-pre-gyp@^0.6.0:
+node-pre-gyp@^0.6.0, node-pre-gyp@^0.6.29:
   version "0.6.32"
   resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
   dependencies:
@@ -869,7 +2935,7 @@ nopt@~3.0.6:
   dependencies:
     abbrev "1"
 
-normalize-package-data@^2.3.2:
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
   version "2.3.5"
   resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
   dependencies:
@@ -878,6 +2944,24 @@ normalize-package-data@^2.3.2:
     semver "2 || 3 || 4 || 5"
     validate-npm-package-license "^3.0.1"
 
+normalize-path@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+  dependencies:
+    remove-trailing-separator "^1.0.1"
+
+npm-run-path@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f"
+  dependencies:
+    path-key "^1.0.0"
+
+npm-run-path@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+  dependencies:
+    path-key "^2.0.0"
+
 npmlog@^4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
@@ -903,9 +2987,35 @@ object-assign@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
 
-object-assign@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+object-assign@^4.0.1, object-assign@^4.1.0:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+
+object-keys@^1.0.10, object-keys@^1.0.8:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+
+object.assign@^4.0.4:
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+  dependencies:
+    define-properties "^1.1.2"
+    function-bind "^1.1.0"
+    object-keys "^1.0.10"
+
+object.omit@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+  dependencies:
+    for-own "^0.1.4"
+    is-extendable "^0.1.1"
+
+observable-to-promise@^0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f"
+  dependencies:
+    is-observable "^0.2.0"
+    symbol-observable "^1.0.4"
 
 once@^1.3.0, once@~1.3.0, once@~1.3.3:
   version "1.3.3"
@@ -913,58 +3023,274 @@ once@^1.3.0, once@~1.3.0, once@~1.3.3:
   dependencies:
     wrappy "1"
 
+onetime@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+
+onetime@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+  dependencies:
+    mimic-fn "^1.0.0"
+
+optimist@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+  dependencies:
+    minimist "~0.0.1"
+    wordwrap "~0.0.2"
+
+option-chain@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd"
+  dependencies:
+    object-assign "^4.0.1"
+
+optionator@^0.8.2:
+  version "0.8.2"
+  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+  dependencies:
+    deep-is "~0.1.3"
+    fast-levenshtein "~2.0.4"
+    levn "~0.3.0"
+    prelude-ls "~1.1.2"
+    type-check "~0.3.2"
+    wordwrap "~1.0.0"
+
 optjs@~3.2.2:
   version "3.2.2"
   resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee"
 
+os-homedir@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+
 os-locale@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
   dependencies:
     lcid "^1.0.0"
 
+os-tmpdir@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+
+p-finally@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
+p-limit@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+
+p-locate@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+  dependencies:
+    p-limit "^1.1.0"
+
+package-hash@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44"
+  dependencies:
+    md5-hex "^1.3.0"
+
+package-hash@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d"
+  dependencies:
+    graceful-fs "^4.1.11"
+    lodash.flattendeep "^4.4.0"
+    md5-hex "^2.0.0"
+    release-zalgo "^1.0.0"
+
+package-json@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+  dependencies:
+    got "^6.7.1"
+    registry-auth-token "^3.0.1"
+    registry-url "^3.0.3"
+    semver "^5.1.0"
+
+parse-glob@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+  dependencies:
+    glob-base "^0.3.0"
+    is-dotfile "^1.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.0"
+
 parse-json@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
   dependencies:
     error-ex "^1.2.0"
 
+parse-ms@^0.1.0:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e"
+
+parse-ms@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d"
+
 path-exists@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
   dependencies:
     pinkie-promise "^2.0.0"
 
+path-exists@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
 
-path-type@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+path-is-inside@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+
+path-key@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af"
+
+path-key@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
+path-to-regexp@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
+  dependencies:
+    isarray "0.0.1"
+
+path-type@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+  dependencies:
+    graceful-fs "^4.1.2"
+    pify "^2.0.0"
+    pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+  dependencies:
+    pify "^2.0.0"
+
+pify@^2.0.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pinkie-promise@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670"
+  dependencies:
+    pinkie "^1.0.0"
+
+pinkie-promise@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+  dependencies:
+    pinkie "^2.0.0"
+
+pinkie@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4"
+
+pinkie@^2.0.0:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+pkg-conf@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279"
+  dependencies:
+    find-up "^2.0.0"
+    load-json-file "^2.0.0"
+
+pkg-config@^1.1.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
+  dependencies:
+    debug-log "^1.0.0"
+    find-root "^1.0.0"
+    xtend "^4.0.1"
+
+pkg-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+  dependencies:
+    find-up "^1.0.0"
+
+pkg-up@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26"
+  dependencies:
+    find-up "^1.0.0"
+
+plur@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156"
+
+plur@^2.0.0:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a"
+  dependencies:
+    irregular-plurals "^1.0.0"
+
+pluralize@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
+
+prelude-ls@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
+prepend-http@^1.0.1:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+
+preserve@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+pretty-format@^19.0.0:
+  version "19.0.0"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84"
   dependencies:
-    graceful-fs "^4.1.2"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
+    ansi-styles "^3.0.0"
 
-pify@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+pretty-ms@^0.2.1:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6"
+  dependencies:
+    parse-ms "^0.1.0"
 
-pinkie-promise@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+pretty-ms@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc"
   dependencies:
-    pinkie "^2.0.0"
+    is-finite "^1.0.1"
+    parse-ms "^1.0.0"
+    plur "^1.0.0"
 
-pinkie@^2.0.0:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+private@^0.1.6:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
 
-process-nextick-args@~1.0.6:
+process-nextick-args@^1.0.7, process-nextick-args@~1.0.6:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
 
+progress@^1.1.8:
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+
 prop-assign@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/prop-assign/-/prop-assign-1.0.0.tgz#9767a1fbfd7093908647a6e846d31b4feaa70459"
@@ -982,19 +3308,38 @@ protobufjs@^5.0.0:
     glob "^5.0.10"
     yargs "^3.10.0"
 
+proxyquire@1.7.11:
+  version "1.7.11"
+  resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.7.11.tgz#13b494eb1e71fb21cc3ebe3699e637d3bec1af9e"
+  dependencies:
+    fill-keys "^1.0.2"
+    module-not-found-error "^1.0.0"
+    resolve "~1.1.7"
+
+pseudomap@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+
 punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
 
+qs@^6.1.0, qs@~6.3.0:
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+
 qs@~6.2.0:
   version "6.2.1"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
 
-qs@~6.3.0:
-  version "6.3.0"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+randomatic@^1.1.3:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+  dependencies:
+    is-number "^2.0.2"
+    kind-of "^3.0.2"
 
-rc@~1.1.6:
+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
   dependencies:
@@ -1010,6 +3355,13 @@ read-pkg-up@^1.0.1:
     find-up "^1.0.0"
     read-pkg "^1.0.0"
 
+read-pkg-up@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+  dependencies:
+    find-up "^2.0.0"
+    read-pkg "^2.0.0"
+
 read-pkg@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
@@ -1018,7 +3370,15 @@ read-pkg@^1.0.0:
     normalize-package-data "^2.3.2"
     path-type "^1.0.0"
 
-readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.1.5, readable-stream@^2.2.2:
+read-pkg@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+  dependencies:
+    load-json-file "^2.0.0"
+    normalize-package-data "^2.3.2"
+    path-type "^2.0.0"
+
+readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
   dependencies:
@@ -1062,12 +3422,111 @@ readable-stream@~2.1.4:
     string_decoder "~0.10.x"
     util-deprecate "~1.0.1"
 
+readdirp@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+  dependencies:
+    graceful-fs "^4.1.2"
+    minimatch "^3.0.2"
+    readable-stream "^2.0.2"
+    set-immediate-shim "^1.0.1"
+
+readline2@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
+  dependencies:
+    code-point-at "^1.0.0"
+    is-fullwidth-code-point "^1.0.0"
+    mute-stream "0.0.5"
+
+rechoir@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+  dependencies:
+    resolve "^1.1.6"
+
+redent@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+  dependencies:
+    indent-string "^2.1.0"
+    strip-indent "^1.0.1"
+
+regenerate@^1.2.1:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
+
+regenerator-runtime@^0.10.0:
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e"
+
+regex-cache@^0.4.2:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+  dependencies:
+    is-equal-shallow "^0.1.3"
+    is-primitive "^2.0.0"
+
+regexpu-core@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+  dependencies:
+    regenerate "^1.2.1"
+    regjsgen "^0.2.0"
+    regjsparser "^0.1.4"
+
+registry-auth-token@^3.0.1:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.2.tgz#1b9e51a185c930da34a9894b12a52ea998f1adaf"
+  dependencies:
+    rc "^1.1.6"
+
+registry-url@^3.0.3:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+  dependencies:
+    rc "^1.0.1"
+
+regjsgen@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+
+regjsparser@^0.1.4:
+  version "0.1.5"
+  resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+  dependencies:
+    jsesc "~0.5.0"
+
+release-zalgo@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
+  dependencies:
+    es6-error "^4.0.1"
+
+remove-trailing-separator@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
+
+repeat-element@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+
+repeat-string@^1.5.2:
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
 repeating@^1.1.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac"
   dependencies:
     is-finite "^1.0.0"
 
+repeating@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+  dependencies:
+    is-finite "^1.0.0"
+
 request@2.76.0:
   version "2.76.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.76.0.tgz#be44505afef70360a0436955106be3945d95560e"
@@ -1093,7 +3552,7 @@ request@2.76.0:
     tough-cookie "~2.3.0"
     tunnel-agent "~0.4.1"
 
-request@^2.72.0, request@^2.79.0:
+request@^2.72.0, request@^2.74.0, request@^2.79.0:
   version "2.79.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
   dependencies:
@@ -1152,6 +3611,49 @@ require-main-filename@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
 
+require-precompiled@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa"
+
+require-uncached@^1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+  dependencies:
+    caller-path "^0.1.0"
+    resolve-from "^1.0.0"
+
+resolve-cwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f"
+  dependencies:
+    resolve-from "^2.0.0"
+
+resolve-from@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+
+resolve-from@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
+
+resolve@^1.1.6, resolve@^1.1.7, resolve@~1.1.7:
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+
+restore-cursor@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+  dependencies:
+    exit-hook "^1.0.0"
+    onetime "^1.0.0"
+
+restore-cursor@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+  dependencies:
+    onetime "^2.0.0"
+    signal-exit "^3.0.2"
+
 retry-request@^1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-1.3.2.tgz#59ad24e71f8ae3f312d5f7b4bcf467a5e5a57bd6"
@@ -1159,17 +3661,62 @@ retry-request@^1.3.2:
     request "2.76.0"
     through2 "^2.0.0"
 
-rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+right-align@^0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+  dependencies:
+    align-text "^0.1.1"
+
+rimraf@2, rimraf@^2.2.8, rimraf@~2.5.1, rimraf@~2.5.4:
   version "2.5.4"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
   dependencies:
     glob "^7.0.5"
 
+run-async@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
+  dependencies:
+    once "^1.3.0"
+
+run-parallel@^1.1.2:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039"
+
+rx-lite@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
+
 safe-buffer@^5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
 
-"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+samsam@1.x, samsam@^1.1.3:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67"
+
+semistandard@11.0.0:
+  version "11.0.0"
+  resolved "https://registry.yarnpkg.com/semistandard/-/semistandard-11.0.0.tgz#d2d9fc8ac393de21312195e006e50c8861391c47"
+  dependencies:
+    eslint "~3.19.0"
+    eslint-config-semistandard "^11.0.0"
+    eslint-config-standard "^10.2.1"
+    eslint-config-standard-jsx "4.0.1"
+    eslint-plugin-import "~2.2.0"
+    eslint-plugin-node "~4.2.2"
+    eslint-plugin-promise "~3.5.0"
+    eslint-plugin-react "~6.10.0"
+    eslint-plugin-standard "~3.0.1"
+    standard-engine "~7.0.0"
+
+semver-diff@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+  dependencies:
+    semver "^5.0.3"
+
+"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@~5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 
@@ -1177,16 +3724,75 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
 
-signal-exit@^3.0.0:
+set-immediate-shim@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+
+shelljs@^0.7.5:
+  version "0.7.7"
+  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
+  dependencies:
+    glob "^7.0.0"
+    interpret "^1.0.0"
+    rechoir "^0.6.2"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 
+sinon@2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.1.0.tgz#e057a9d2bf1b32f5d6dd62628ca9ee3961b0cafb"
+  dependencies:
+    diff "^3.1.0"
+    formatio "1.2.0"
+    lolex "^1.6.0"
+    native-promise-only "^0.8.1"
+    path-to-regexp "^1.7.0"
+    samsam "^1.1.3"
+    text-encoding "0.6.4"
+    type-detect "^4.0.0"
+
+slash@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+
+slice-ansi@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+
+slide@^1.1.5:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+
 sntp@1.x.x:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
   dependencies:
     hoek "2.x.x"
 
+sort-keys@^1.1.1, sort-keys@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+  dependencies:
+    is-plain-obj "^1.0.0"
+
+source-map-support@^0.4.0, source-map-support@^0.4.2:
+  version "0.4.14"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef"
+  dependencies:
+    source-map "^0.5.6"
+
+source-map@^0.4.4:
+  version "0.4.4"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+  dependencies:
+    amdefine ">=0.0.4"
+
+source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1:
+  version "0.5.6"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+
 spdx-correct@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
@@ -1208,6 +3814,10 @@ split-array-stream@^1.0.0:
     async "^1.4.0"
     is-stream-ended "^0.1.0"
 
+sprintf-js@~1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
 sshpk@^1.7.0:
   version "1.10.1"
   resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
@@ -1223,6 +3833,19 @@ sshpk@^1.7.0:
     jsbn "~0.1.0"
     tweetnacl "~0.14.0"
 
+stack-utils@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83"
+
+standard-engine@~7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690"
+  dependencies:
+    deglob "^2.1.0"
+    get-stdin "^5.0.1"
+    minimist "^1.1.0"
+    pkg-conf "^2.0.0"
+
 stream-events@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.1.tgz#4fe7b2bbfcc53e6af31087e8c540483f412ce8c6"
@@ -1249,6 +3872,17 @@ string-width@^1.0.1, string-width@^1.0.2:
     is-fullwidth-code-point "^1.0.0"
     strip-ansi "^3.0.0"
 
+string-width@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e"
+  dependencies:
+    is-fullwidth-code-point "^2.0.0"
+    strip-ansi "^3.0.0"
+
+string@3.3.3:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
+
 string_decoder@~0.10.x:
   version "0.10.31"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@@ -1263,20 +3897,70 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1:
   dependencies:
     ansi-regex "^2.0.0"
 
+strip-ansi@~0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991"
+
+strip-bom-buf@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
+  dependencies:
+    is-utf8 "^0.2.1"
+
 strip-bom@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
   dependencies:
     is-utf8 "^0.2.0"
 
+strip-bom@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
+strip-eof@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
+strip-indent@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+  dependencies:
+    get-stdin "^4.0.1"
+
 strip-json-comments@~1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
 
+strip-json-comments@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
 stubs@^1.1.0:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/stubs/-/stubs-1.1.2.tgz#945a08975016318762f8f7060731002ab2a0960c"
 
+superagent@^3.0.0:
+  version "3.5.2"
+  resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.5.2.tgz#3361a3971567504c351063abeaae0faa23dbf3f8"
+  dependencies:
+    component-emitter "^1.2.0"
+    cookiejar "^2.0.6"
+    debug "^2.2.0"
+    extend "^3.0.0"
+    form-data "^2.1.1"
+    formidable "^1.1.1"
+    methods "^1.1.1"
+    mime "^1.3.4"
+    qs "^6.1.0"
+    readable-stream "^2.0.5"
+
+supertest@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.0.0.tgz#8d4bb68fd1830ee07033b1c5a5a9a4021c965296"
+  dependencies:
+    methods "~1.1.2"
+    superagent "^3.0.0"
+
 supports-color@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
@@ -1285,6 +3969,31 @@ supports-color@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
 
+supports-color@^3.2.3:
+  version "3.2.3"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+  dependencies:
+    has-flag "^1.0.0"
+
+symbol-observable@^0.2.2:
+  version "0.2.4"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40"
+
+symbol-observable@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
+
+table@^3.7.8:
+  version "3.8.3"
+  resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
+  dependencies:
+    ajv "^4.7.0"
+    ajv-keywords "^1.0.0"
+    chalk "^1.1.1"
+    lodash "^4.0.0"
+    slice-ansi "0.0.4"
+    string-width "^2.0.0"
+
 tar-pack@~3.3.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
@@ -1306,6 +4015,20 @@ tar@~2.2.1:
     fstream "^1.0.2"
     inherits "2"
 
+term-size@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca"
+  dependencies:
+    execa "^0.4.0"
+
+text-encoding@0.6.4:
+  version "0.6.4"
+  resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19"
+
+text-table@^0.2.0, text-table@~0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+
 through2@^2.0.0, through2@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@@ -1313,12 +4036,45 @@ through2@^2.0.0, through2@^2.0.3:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
+through@^2.3.6:
+  version "2.3.8"
+  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+
+time-require@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98"
+  dependencies:
+    chalk "^0.4.0"
+    date-time "^0.1.1"
+    pretty-ms "^0.2.1"
+    text-table "^0.2.0"
+
+timed-out@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+
+to-fast-properties@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+
 tough-cookie@~2.3.0:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
   dependencies:
     punycode "^1.4.1"
 
+trim-newlines@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+
+trim-right@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+
+tryit@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+
 tunnel-agent@~0.4.1:
   version "0.4.3"
   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
@@ -1327,14 +4083,88 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   version "0.14.5"
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
 
+type-check@~0.3.2:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+  dependencies:
+    prelude-ls "~1.1.2"
+
+type-detect@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea"
+
 typedarray@^0.0.6, typedarray@~0.0.5:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 
+uglify-js@^2.6:
+  version "2.8.22"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
+  dependencies:
+    source-map "~0.5.1"
+    yargs "~3.10.0"
+  optionalDependencies:
+    uglify-to-browserify "~1.0.0"
+
+uglify-to-browserify@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+
 uid-number@~0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
 
+uid2@0.0.3:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"
+
+uniq@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+
+unique-string@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+  dependencies:
+    crypto-random-string "^1.0.0"
+
+unique-temp-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385"
+  dependencies:
+    mkdirp "^0.5.1"
+    os-tmpdir "^1.0.1"
+    uid2 "0.0.3"
+
+unzip-response@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+
+update-notifier@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9"
+  dependencies:
+    boxen "^1.0.0"
+    chalk "^1.0.0"
+    configstore "^3.0.0"
+    is-npm "^1.0.0"
+    latest-version "^3.0.0"
+    lazy-req "^2.0.0"
+    semver-diff "^2.0.0"
+    xdg-basedir "^3.0.0"
+
+url-parse-lax@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+  dependencies:
+    prepend-http "^1.0.1"
+
+user-home@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
+  dependencies:
+    os-homedir "^1.0.0"
+
 util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -1360,15 +4190,35 @@ which-module@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
 
+which@^1.2.8, which@^1.2.9:
+  version "1.2.14"
+  resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
+  dependencies:
+    isexe "^2.0.0"
+
 wide-align@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
   dependencies:
     string-width "^1.0.1"
 
-window-size@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
+widest-line@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c"
+  dependencies:
+    string-width "^1.0.1"
+
+window-size@0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+
+wordwrap@0.0.2, wordwrap@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
+wordwrap@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
 
 wrap-ansi@^2.0.0:
   version "2.1.0"
@@ -1381,23 +4231,62 @@ wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 
-xtend@^4.0.0, xtend@~4.0.1:
+write-file-atomic@^1.1.2, write-file-atomic@^1.1.4:
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a"
+  dependencies:
+    graceful-fs "^4.1.11"
+    imurmurhash "^0.1.4"
+    slide "^1.1.5"
+
+write-json-file@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.0.0.tgz#0eaec981fcf9288dbc2806cbd26e06ab9bdca4ed"
+  dependencies:
+    graceful-fs "^4.1.2"
+    mkdirp "^0.5.1"
+    pify "^2.0.0"
+    sort-keys "^1.1.1"
+    write-file-atomic "^1.1.2"
+
+write-pkg@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-2.1.0.tgz#353aa44c39c48c21440f5c08ce6abd46141c9c08"
+  dependencies:
+    sort-keys "^1.1.2"
+    write-json-file "^2.0.0"
+
+write@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+  dependencies:
+    mkdirp "^0.5.1"
+
+xdg-basedir@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
 
-y18n@^3.2.0, y18n@^3.2.1:
+y18n@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
 
-yargs-parser@^4.2.0:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+yallist@^2.0.0:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+
+yargs-parser@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
   dependencies:
     camelcase "^3.0.0"
 
-yargs@6.6.0:
-  version "6.6.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+yargs@7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
   dependencies:
     camelcase "^3.0.0"
     cliui "^3.2.0"
@@ -1411,16 +4300,13 @@ yargs@6.6.0:
     string-width "^1.0.2"
     which-module "^1.0.0"
     y18n "^3.2.1"
-    yargs-parser "^4.2.0"
+    yargs-parser "^5.0.0"
 
-yargs@^3.10.0:
-  version "3.32.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
+yargs@^3.10.0, yargs@~3.10.0:
+  version "3.10.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
   dependencies:
-    camelcase "^2.0.1"
-    cliui "^3.0.3"
-    decamelize "^1.1.1"
-    os-locale "^1.4.0"
-    string-width "^1.0.1"
-    window-size "^0.1.4"
-    y18n "^3.2.0"
+    camelcase "^1.0.2"
+    cliui "^2.1.0"
+    decamelize "^1.0.0"
+    window-size "0.1.0"

From f93260da37a6dcaad28ec79b538ca15192f7817f Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Sat, 29 Apr 2017 13:41:51 -0400
Subject: [PATCH 114/820] datastore: force older version of grpc (#2261, #2268)

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 2e42bb07533..78e71f56004 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -51,7 +51,7 @@
   ],
   "dependencies": {
     "@google-cloud/common": "^0.13.0",
-    "@google-cloud/common-grpc": "^0.3.0",
+    "@google-cloud/common-grpc": "^0.3.4",
     "arrify": "^1.0.0",
     "concat-stream": "^1.5.0",
     "create-error-class": "^3.0.2",

From 4aed9cf028b574451e99047923370bafc50790b7 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Sat, 29 Apr 2017 13:42:16 -0400
Subject: [PATCH 115/820] datastore @ 1.0.1 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 78e71f56004..c3b2c8cf3ed 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.0",
+  "version": "1.0.1",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 5d7c6bfd1477015c4008c0068020511e425da499 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 1 May 2017 09:26:37 -0400
Subject: [PATCH 116/820] datastore: fix: kindless queries with namespace
 (#2263)

---
 handwritten/nodejs-datastore/src/index.js  | 4 ++--
 handwritten/nodejs-datastore/test/index.js | 8 ++++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index a1bcb43dd47..dfda7d80e3c 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -440,8 +440,8 @@ Datastore.NO_MORE_RESULTS = 'NO_MORE_RESULTS';
  * var query = datastore.createQuery('Company');
  */
 Datastore.prototype.createQuery = function(namespace, kind) {
-  if (arguments.length === 1) {
-    kind = arrify(namespace);
+  if (arguments.length < 2) {
+    kind = namespace;
     namespace = this.namespace;
   }
 
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index 64e62f2d7dc..6ddbbfc703e 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -284,6 +284,14 @@ describe('Datastore', function() {
       assert.strictEqual(query.calledWith_[1], datastore.namespace);
       assert.deepEqual(query.calledWith_[2], kind);
     });
+
+    it('should include the default namespace in a kindless query', function() {
+      var query = datastore.createQuery();
+
+      assert.strictEqual(query.calledWith_[0], datastore);
+      assert.strictEqual(query.calledWith_[1], datastore.namespace);
+      assert.deepEqual(query.calledWith_[2], []);
+    });
   });
 
   describe('key', function() {

From dfce8d74d80ce7d8ca7a9a18f7a0c5b4fdaf6009 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Tue, 2 May 2017 08:54:19 -0700
Subject: [PATCH 117/820] Upgrade to repo tools v1.4.7 (#370)

---
 .../nodejs-datastore/samples/README.md        |  37 +-
 .../nodejs-datastore/samples/package.json     |  37 +-
 .../nodejs-datastore/samples/yarn.lock        | 853 +++---------------
 3 files changed, 170 insertions(+), 757 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md
index 6fbed477d1a..62fd5d02286 100644
--- a/handwritten/nodejs-datastore/samples/README.md
+++ b/handwritten/nodejs-datastore/samples/README.md
@@ -1,17 +1,16 @@
 Google Cloud Platform logo
 
-# Google Cloud Datastore Node.js Samples
+# Datastore Node.js Samples
 
-[Cloud Datastore][datastore_docs] is a NoSQL document database built for
-automatic scaling, high performance, and ease of application development.
+[![Build](https://storage.googleapis.com/cloud-docs-samples-badges/GoogleCloudPlatform/nodejs-docs-samples/nodejs-docs-samples-datastore.svg)]()
 
-[datastore_docs]: https://cloud.google.com/datastore/docs/
+[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development.
 
 ## Table of Contents
 
 * [Setup](#setup)
 * [Samples](#samples)
-  * [Getting started with Google Cloud Datastore API](#getting-started-with-google-cloud-datastore-api)
+  * [Tasks](#tasks)
   * [Concepts](#concepts)
   * [Errors and Error Handling](#errors-and-error-handling)
 * [Running the tests](#running-the-tests)
@@ -34,13 +33,12 @@ automatic scaling, high performance, and ease of application development.
 
 ## Samples
 
-### Getting started with Google Cloud Datastore API
+### Tasks
 
-View the [documentation][tasks_docs] or the [source code][tasks_code].
 
-__Run the sample:__
+View the [documentation][tasks_0_docs] or the [source code][tasks_0_code].
 
-Usage: `node tasks.js  [args]...`
+__Usage:__ `node tasks.js --help`
 
 ```
 Commands:
@@ -50,7 +48,7 @@ Commands:
   delete     Deletes a task.
 
 Options:
-  --help  Show help                                       [boolean]
+  --help  Show help                                                                                            [boolean]
 
 Examples:
   node tasks.js new "Buy milk"  Adds a task with description "Buy milk".
@@ -61,26 +59,23 @@ Examples:
 For more information, see https://cloud.google.com/datastore/docs
 ```
 
-[tasks_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial
-[tasks_code]: tasks.js
+[tasks_0_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial
+[tasks_0_code]: tasks.js
 
 ### Concepts
 
-View the [documentation][concepts_docs] or the [source code][concepts_code].
 
-[concepts_docs]: https://cloud.google.com/datastore/docs/concepts/entities
-[concepts_code]: concepts.js
+View the [documentation][concepts_1_docs] or the [source code][concepts_1_code].[concepts_1_docs]: https://cloud.google.com/datastore/docs/concepts/entities
+[concepts_1_code]: concepts.js
 
 ### Errors and Error Handling
 
-View the [documentation][error_docs] or the [source code][error_code].
 
-__Run the sample:__
+View the [documentation][error_2_docs] or the [source code][error_2_code].
 
-    node error
-
-[error_docs]: https://cloud.google.com/datastore/docs/concepts/errors
-[error_code]: error.js
+__Usage:__ `node error.js`
+[error_2_docs]: https://cloud.google.com/datastore/docs/concepts/errors
+[error_2_code]: error.js
 
 ## Running the tests
 
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index a08c6eeb72c..06c40c5f3af 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -8,10 +8,6 @@
     "type": "git",
     "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
   },
-  "cloud": {
-    "requiresKeyFile": true,
-    "requiresProjectId": true
-  },
   "engines": {
     "node": ">=4.3.2"
   },
@@ -22,13 +18,42 @@
     "test": "npm run system-test"
   },
   "dependencies": {
-    "@google-cloud/datastore": "1.0.0",
+    "@google-cloud/datastore": "1.0.1",
     "yargs": "7.1.0"
   },
   "devDependencies": {
-    "@google-cloud/nodejs-repo-tools": "1.3.1",
+    "@google-cloud/nodejs-repo-tools": "1.4.7",
     "ava": "0.19.1",
     "proxyquire": "1.7.11",
     "sinon": "2.1.0"
+  },
+  "cloud-repo-tools": {
+    "requiresKeyFile": true,
+    "requiresProjectId": true,
+    "product": "datastore",
+    "samples": [
+      {
+        "id": "tasks",
+        "name": "Tasks",
+        "file": "tasks.js",
+        "docs_link": "https://cloud.google.com/datastore/docs/datastore-api-tutorial",
+        "usage": "node tasks.js --help"
+      },
+      {
+        "id": "concepts",
+        "name": "Concepts",
+        "file": "concepts.js",
+        "docs_link": "https://cloud.google.com/datastore/docs/concepts/entities"
+      },
+      {
+        "id": "error",
+        "name": "Errors and Error Handling",
+        "file": "error.js",
+        "docs_link": "https://cloud.google.com/datastore/docs/concepts/errors",
+        "usage": {
+          "text": "node error.js"
+        }
+      }
+    ]
   }
 }
diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock
index b9c76c1dd54..0e89546c747 100644
--- a/handwritten/nodejs-datastore/samples/yarn.lock
+++ b/handwritten/nodejs-datastore/samples/yarn.lock
@@ -37,19 +37,19 @@
     ansi-styles "^2.2.1"
     esutils "^2.0.2"
 
-"@google-cloud/common-grpc@^0.3.0":
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.2.tgz#b38d980539368599211102a5135225d932c65edc"
+"@google-cloud/common-grpc@^0.3.4":
+  version "0.3.4"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.4.tgz#b4fef3fe752954ff7b7204ab71b6ddd2bb53b5fa"
   dependencies:
     "@google-cloud/common" "^0.13.0"
     dot-prop "^2.4.0"
     duplexify "^3.5.0"
     extend "^3.0.0"
     google-proto-files "^0.11.0"
-    grpc "^1.2.3"
+    grpc "~1.2.4"
     is "^3.2.0"
     modelo "^4.2.0"
-    retry-request "^1.3.2"
+    retry-request "^2.0.0"
     through2 "^2.0.3"
 
 "@google-cloud/common@^0.13.0":
@@ -75,12 +75,12 @@
     string-format-obj "^1.1.0"
     through2 "^2.0.3"
 
-"@google-cloud/datastore@1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.0.tgz#f5556bd223df30d87aa9a1fd38e7e37a0aecf1f3"
+"@google-cloud/datastore@1.0.1":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.1.tgz#21f6d92bbc06b51701030b20b9743b5a09e2699b"
   dependencies:
     "@google-cloud/common" "^0.13.0"
-    "@google-cloud/common-grpc" "^0.3.0"
+    "@google-cloud/common-grpc" "^0.3.4"
     arrify "^1.0.0"
     concat-stream "^1.5.0"
     create-error-class "^3.0.2"
@@ -93,19 +93,17 @@
     propprop "^0.3.0"
     split-array-stream "^1.0.0"
 
-"@google-cloud/nodejs-repo-tools@1.3.0":
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.3.0.tgz#2872c3fcc0f0b0d840e1a71ba8f9009761b0df11"
+"@google-cloud/nodejs-repo-tools@1.4.7":
+  version "1.4.7"
+  resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.7.tgz#1e3838af75386d99317f892ff1288e217a4a4b11"
   dependencies:
-    async "2.3.0"
     ava "0.19.1"
-    chalk "1.1.3"
     colors "1.1.2"
-    fs-extra "2.1.2"
+    fs-extra "3.0.0"
     got "6.7.1"
     handlebars "4.0.6"
+    lodash "4.17.4"
     proxyquire "1.7.11"
-    semistandard "11.0.0"
     sinon "2.1.0"
     string "3.3.3"
     supertest "3.0.0"
@@ -115,27 +113,9 @@ abbrev@1:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
 
-acorn-jsx@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
-  dependencies:
-    acorn "^3.0.4"
-
-acorn@^3.0.4:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-
-acorn@^5.0.1:
-  version "5.0.3"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
-
-ajv-keywords@^1.0.0:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
-
-ajv@^4.7.0:
-  version "4.11.7"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
+ajv@^4.9.1:
+  version "4.11.8"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
   dependencies:
     co "^4.6.0"
     json-stable-stringify "^1.0.1"
@@ -158,10 +138,6 @@ ansi-align@^1.1.0:
   dependencies:
     string-width "^1.0.1"
 
-ansi-escapes@^1.1.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
-
 ansi-regex@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
@@ -244,13 +220,6 @@ array-unique@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 
-array.prototype.find@^2.0.1:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
-  dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.7.0"
-
 arrify@^1.0.0, arrify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -278,12 +247,6 @@ async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
 
-async@2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9"
-  dependencies:
-    lodash "^4.14.0"
-
 async@^1.4.0:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -787,7 +750,7 @@ buffer-shims@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
 
-builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+builtin-modules@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
 
@@ -818,16 +781,6 @@ call-signature@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
 
-caller-path@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
-  dependencies:
-    callsites "^0.2.0"
-
-callsites@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
-
 camelcase-keys@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-1.0.0.tgz#bd1a11bf9b31a1ce493493a930de1a0baf4ad7ec"
@@ -866,6 +819,10 @@ caseless@~0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
 
+caseless@~0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+
 center-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -873,7 +830,15 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
-chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
+chalk@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
+  dependencies:
+    ansi-styles "~1.0.0"
+    has-color "~0.1.0"
+    strip-ansi "~0.1.0"
+
+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
   dependencies:
@@ -883,14 +848,6 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-chalk@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
-  dependencies:
-    ansi-styles "~1.0.0"
-    has-color "~0.1.0"
-    strip-ansi "~0.1.0"
-
 chokidar@^1.4.2:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
@@ -910,10 +867,6 @@ ci-info@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
 
-circular-json@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
-
 clean-stack@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.1.1.tgz#a1b3711122df162df7c7cb9b3c0470f28cb58adb"
@@ -926,12 +879,6 @@ cli-boxes@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
 
-cli-cursor@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
-  dependencies:
-    restore-cursor "^1.0.1"
-
 cli-cursor@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -949,10 +896,6 @@ cli-truncate@^1.0.0:
     slice-ansi "0.0.4"
     string-width "^2.0.0"
 
-cli-width@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
-
 cliui@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
@@ -1035,7 +978,7 @@ concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 
-concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0:
+concat-stream@^1.5.0, concat-stream@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
   dependencies:
@@ -1066,10 +1009,6 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
 
-contains-path@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
-
 convert-source-map@^1.1.0, convert-source-map@^1.2.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
@@ -1133,12 +1072,6 @@ currently-unhandled@^0.4.1:
   dependencies:
     array-find-index "^1.0.1"
 
-d@1:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
-  dependencies:
-    es5-ext "^0.10.9"
-
 dashdash@^1.12.0:
   version "1.14.1"
   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@@ -1149,22 +1082,18 @@ date-time@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07"
 
-debug-log@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
-
-debug@2.2.0, debug@~2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
-  dependencies:
-    ms "0.7.1"
-
 debug@^2.1.1, debug@^2.2.0:
   version "2.6.3"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
   dependencies:
     ms "0.7.2"
 
+debug@~2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+  dependencies:
+    ms "0.7.1"
+
 decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -1177,40 +1106,6 @@ deep-extend@~0.4.0:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
 
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-define-properties@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
-  dependencies:
-    foreach "^2.0.5"
-    object-keys "^1.0.8"
-
-deglob@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a"
-  dependencies:
-    find-root "^1.0.0"
-    glob "^7.0.5"
-    ignore "^3.0.9"
-    pkg-config "^1.1.0"
-    run-parallel "^1.1.2"
-    uniq "^1.0.1"
-
-del@^2.0.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
-  dependencies:
-    globby "^5.0.0"
-    is-path-cwd "^1.0.0"
-    is-path-in-cwd "^1.0.0"
-    object-assign "^4.0.1"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
-    rimraf "^2.2.8"
-
 delayed-stream@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -1233,20 +1128,6 @@ diff@^3.0.0, diff@^3.0.1, diff@^3.1.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
 
-doctrine@1.5.0, doctrine@^1.2.2:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
-  dependencies:
-    esutils "^2.0.2"
-    isarray "^1.0.0"
-
-doctrine@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
-  dependencies:
-    esutils "^2.0.2"
-    isarray "^1.0.0"
-
 dot-prop@^2.4.0:
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-2.4.0.tgz#848e28f7f1d50740c6747ab3cb07670462b6f89c"
@@ -1312,202 +1193,14 @@ error-ex@^1.2.0:
   dependencies:
     is-arrayish "^0.2.1"
 
-es-abstract@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
-  dependencies:
-    es-to-primitive "^1.1.1"
-    function-bind "^1.1.0"
-    is-callable "^1.1.3"
-    is-regex "^1.0.3"
-
-es-to-primitive@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
-  dependencies:
-    is-callable "^1.1.1"
-    is-date-object "^1.0.1"
-    is-symbol "^1.0.1"
-
-es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
-  version "0.10.15"
-  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6"
-  dependencies:
-    es6-iterator "2"
-    es6-symbol "~3.1"
-
 es6-error@^4.0.1, es6-error@^4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
 
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
-  dependencies:
-    d "1"
-    es5-ext "^0.10.14"
-    es6-symbol "^3.1"
-
-es6-map@^0.1.3:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
-  dependencies:
-    d "1"
-    es5-ext "~0.10.14"
-    es6-iterator "~2.0.1"
-    es6-set "~0.1.5"
-    es6-symbol "~3.1.1"
-    event-emitter "~0.3.5"
-
-es6-set@~0.1.5:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
-  dependencies:
-    d "1"
-    es5-ext "~0.10.14"
-    es6-iterator "~2.0.1"
-    es6-symbol "3.1.1"
-    event-emitter "~0.3.5"
-
-es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
-  dependencies:
-    d "1"
-    es5-ext "~0.10.14"
-
-es6-weak-map@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
-  dependencies:
-    d "1"
-    es5-ext "^0.10.14"
-    es6-iterator "^2.0.1"
-    es6-symbol "^3.1.1"
-
 escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
 
-escope@^3.6.0:
-  version "3.6.0"
-  resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
-  dependencies:
-    es6-map "^0.1.3"
-    es6-weak-map "^2.0.1"
-    esrecurse "^4.1.0"
-    estraverse "^4.1.1"
-
-eslint-config-semistandard@^11.0.0:
-  version "11.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-11.0.0.tgz#44eef7cfdfd47219e3a7b81b91b540e880bb2615"
-
-eslint-config-standard-jsx@4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642"
-
-eslint-config-standard@^10.2.1:
-  version "10.2.1"
-  resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
-
-eslint-import-resolver-node@^0.2.0:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c"
-  dependencies:
-    debug "^2.2.0"
-    object-assign "^4.0.1"
-    resolve "^1.1.6"
-
-eslint-module-utils@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce"
-  dependencies:
-    debug "2.2.0"
-    pkg-dir "^1.0.0"
-
-eslint-plugin-import@~2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e"
-  dependencies:
-    builtin-modules "^1.1.1"
-    contains-path "^0.1.0"
-    debug "^2.2.0"
-    doctrine "1.5.0"
-    eslint-import-resolver-node "^0.2.0"
-    eslint-module-utils "^2.0.0"
-    has "^1.0.1"
-    lodash.cond "^4.3.0"
-    minimatch "^3.0.3"
-    pkg-up "^1.0.0"
-
-eslint-plugin-node@~4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363"
-  dependencies:
-    ignore "^3.0.11"
-    minimatch "^3.0.2"
-    object-assign "^4.0.1"
-    resolve "^1.1.7"
-    semver "5.3.0"
-
-eslint-plugin-promise@~3.5.0:
-  version "3.5.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca"
-
-eslint-plugin-react@~6.10.0:
-  version "6.10.3"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
-  dependencies:
-    array.prototype.find "^2.0.1"
-    doctrine "^1.2.2"
-    has "^1.0.1"
-    jsx-ast-utils "^1.3.4"
-    object.assign "^4.0.4"
-
-eslint-plugin-standard@~3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
-
-eslint@~3.19.0:
-  version "3.19.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
-  dependencies:
-    babel-code-frame "^6.16.0"
-    chalk "^1.1.3"
-    concat-stream "^1.5.2"
-    debug "^2.1.1"
-    doctrine "^2.0.0"
-    escope "^3.6.0"
-    espree "^3.4.0"
-    esquery "^1.0.0"
-    estraverse "^4.2.0"
-    esutils "^2.0.2"
-    file-entry-cache "^2.0.0"
-    glob "^7.0.3"
-    globals "^9.14.0"
-    ignore "^3.2.0"
-    imurmurhash "^0.1.4"
-    inquirer "^0.12.0"
-    is-my-json-valid "^2.10.0"
-    is-resolvable "^1.0.0"
-    js-yaml "^3.5.1"
-    json-stable-stringify "^1.0.0"
-    levn "^0.3.0"
-    lodash "^4.0.0"
-    mkdirp "^0.5.0"
-    natural-compare "^1.4.0"
-    optionator "^0.8.2"
-    path-is-inside "^1.0.1"
-    pluralize "^1.2.1"
-    progress "^1.1.8"
-    require-uncached "^1.0.2"
-    shelljs "^0.7.5"
-    strip-bom "^3.0.0"
-    strip-json-comments "~2.0.1"
-    table "^3.7.8"
-    text-table "~0.2.0"
-    user-home "^2.0.0"
-
 espower-location-detector@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5"
@@ -1517,13 +1210,6 @@ espower-location-detector@^1.0.0:
     source-map "^0.5.0"
     xtend "^4.0.0"
 
-espree@^3.4.0:
-  version "3.4.1"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2"
-  dependencies:
-    acorn "^5.0.1"
-    acorn-jsx "^3.0.0"
-
 esprima@^3.1.1:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -1534,38 +1220,14 @@ espurify@^1.6.0:
   dependencies:
     core-js "^2.0.0"
 
-esquery@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
-  dependencies:
-    estraverse "^4.0.0"
-
-esrecurse@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
-  dependencies:
-    estraverse "~4.1.0"
-    object-assign "^4.0.1"
-
-estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.0.0, estraverse@^4.1.1:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
 
-estraverse@~4.1.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
-
 esutils@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
 
-event-emitter@~0.3.5:
-  version "0.3.5"
-  resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
-  dependencies:
-    d "1"
-    es5-ext "~0.10.14"
-
 execa@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3"
@@ -1589,10 +1251,6 @@ execa@^0.5.0:
     signal-exit "^3.0.0"
     strip-eof "^1.0.0"
 
-exit-hook@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-
 expand-brackets@^0.1.4:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -1619,30 +1277,12 @@ extsprintf@1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
 
-fast-levenshtein@~2.0.4:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-figures@^1.3.5:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
-  dependencies:
-    escape-string-regexp "^1.0.5"
-    object-assign "^4.1.0"
-
 figures@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
   dependencies:
     escape-string-regexp "^1.0.5"
 
-file-entry-cache@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
-  dependencies:
-    flat-cache "^1.2.1"
-    object-assign "^4.0.1"
-
 filename-regex@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
@@ -1672,10 +1312,6 @@ find-cache-dir@^0.1.1:
     mkdirp "^0.5.1"
     pkg-dir "^1.0.0"
 
-find-root@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a"
-
 find-up@^1.0.0:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -1689,15 +1325,6 @@ find-up@^2.0.0:
   dependencies:
     locate-path "^2.0.0"
 
-flat-cache@^1.2.1:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
-  dependencies:
-    circular-json "^0.3.1"
-    del "^2.0.2"
-    graceful-fs "^4.1.2"
-    write "^0.2.1"
-
 fn-name@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
@@ -1712,10 +1339,6 @@ for-own@^0.1.4:
   dependencies:
     for-in "^1.0.1"
 
-foreach@^2.0.5:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
-
 forever-agent@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -1746,12 +1369,13 @@ formidable@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9"
 
-fs-extra@2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35"
+fs-extra@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.0.tgz#244e0c4b0b8818f54040ec049d8a2bddc1202861"
   dependencies:
     graceful-fs "^4.1.2"
-    jsonfile "^2.1.0"
+    jsonfile "^3.0.0"
+    universalify "^0.1.0"
 
 fs.realpath@^1.0.0:
   version "1.0.0"
@@ -1781,10 +1405,6 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
     mkdirp ">=0.5 0"
     rimraf "2"
 
-function-bind@^1.0.2, function-bind@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
-
 gauge@~2.7.1:
   version "2.7.2"
   resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
@@ -1828,10 +1448,6 @@ get-stdin@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
 
-get-stdin@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
-
 get-stream@^2.2.0:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
@@ -1872,7 +1488,7 @@ glob@^5.0.10:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
+glob@^7.0.3, glob@^7.0.5:
   version "7.1.1"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
   dependencies:
@@ -1883,21 +1499,10 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-globals@^9.0.0, globals@^9.14.0:
+globals@^9.0.0:
   version "9.17.0"
   resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
 
-globby@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
-  dependencies:
-    array-union "^1.0.1"
-    arrify "^1.0.0"
-    glob "^7.0.3"
-    object-assign "^4.0.1"
-    pify "^2.0.0"
-    pinkie-promise "^2.0.0"
-
 globby@^6.0.0:
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
@@ -1999,7 +1604,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
 
-grpc@^1.2, grpc@^1.2.3:
+grpc@^1.2, grpc@~1.2.4:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.2.4.tgz#ef0c8c708245d8fc797e39aa330dce409b3dd03c"
   dependencies:
@@ -2028,6 +1633,10 @@ handlebars@4.0.6:
   optionalDependencies:
     uglify-js "^2.6"
 
+har-schema@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+
 har-validator@~2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
@@ -2037,6 +1646,13 @@ har-validator@~2.0.6:
     is-my-json-valid "^2.12.4"
     pinkie-promise "^2.0.0"
 
+har-validator@~4.2.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
+  dependencies:
+    ajv "^4.9.1"
+    har-schema "^1.0.5"
+
 has-ansi@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -2063,12 +1679,6 @@ has-yarn@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7"
 
-has@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
-  dependencies:
-    function-bind "^1.0.2"
-
 hawk@~3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
@@ -2123,10 +1733,6 @@ ignore-by-default@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
 
-ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0:
-  version "3.2.7"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd"
-
 imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -2164,28 +1770,6 @@ ini@~1.3.0:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
 
-inquirer@^0.12.0:
-  version "0.12.0"
-  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
-  dependencies:
-    ansi-escapes "^1.1.0"
-    ansi-regex "^2.0.0"
-    chalk "^1.0.0"
-    cli-cursor "^1.0.1"
-    cli-width "^2.0.0"
-    figures "^1.3.5"
-    lodash "^4.3.0"
-    readline2 "^1.0.1"
-    run-async "^0.1.0"
-    rx-lite "^3.1.2"
-    string-width "^1.0.1"
-    strip-ansi "^3.0.0"
-    through "^2.3.6"
-
-interpret@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
-
 invariant@^2.2.0:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
@@ -2220,20 +1804,12 @@ is-builtin-module@^1.0.0:
   dependencies:
     builtin-modules "^1.0.0"
 
-is-callable@^1.1.1, is-callable@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
-
 is-ci@^1.0.7:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
   dependencies:
     ci-info "^1.0.0"
 
-is-date-object@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-
 is-dotfile@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
@@ -2282,7 +1858,7 @@ is-glob@^2.0.0, is-glob@^2.0.1:
   dependencies:
     is-extglob "^1.0.0"
 
-is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
+is-my-json-valid@^2.12.4:
   version "2.15.0"
   resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
   dependencies:
@@ -2315,22 +1891,6 @@ is-observable@^0.2.0:
   dependencies:
     symbol-observable "^0.2.2"
 
-is-path-cwd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-
-is-path-in-cwd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
-  dependencies:
-    is-path-inside "^1.0.0"
-
-is-path-inside@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
-  dependencies:
-    path-is-inside "^1.0.1"
-
 is-plain-obj@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@@ -2355,18 +1915,6 @@ is-redirect@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
 
-is-regex@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
-  dependencies:
-    has "^1.0.1"
-
-is-resolvable@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
-  dependencies:
-    tryit "^1.0.1"
-
 is-retry-allowed@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
@@ -2379,10 +1927,6 @@ is-stream@^1.0.0, is-stream@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
 
-is-symbol@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
-
 is-typedarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -2403,7 +1947,7 @@ isarray@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
 
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+isarray@1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 
@@ -2496,7 +2040,7 @@ js-tokens@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
 
-js-yaml@^3.5.1, js-yaml@^3.8.2:
+js-yaml@^3.8.2:
   version "3.8.3"
   resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
   dependencies:
@@ -2519,7 +2063,7 @@ json-schema@0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
 
-json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
+json-stable-stringify@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
   dependencies:
@@ -2533,9 +2077,9 @@ json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
 
-jsonfile@^2.1.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+jsonfile@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0"
   optionalDependencies:
     graceful-fs "^4.1.6"
 
@@ -2555,10 +2099,6 @@ jsprim@^1.2.2:
     json-schema "0.2.3"
     verror "1.3.6"
 
-jsx-ast-utils@^1.3.4:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
-
 jwa@^1.1.4:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5"
@@ -2627,13 +2167,6 @@ leven@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
 
-levn@^0.3.0, levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
 load-json-file@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -2668,10 +2201,6 @@ lodash.clonedeepwith@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4"
 
-lodash.cond@^4.3.0:
-  version "4.5.2"
-  resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
-
 lodash.debounce@^4.0.3:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -2700,7 +2229,7 @@ lodash.noop@^3.0.1, lodash.noop@~3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c"
 
-lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.3.0:
+lodash@4.17.4, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.2.0:
   version "4.17.4"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 
@@ -2842,7 +2371,7 @@ mimic-fn@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
 
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
   dependencies:
@@ -2891,10 +2420,6 @@ multimatch@^2.1.0:
     arrify "^1.0.0"
     minimatch "^3.0.0"
 
-mute-stream@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
-
 nan@^2.0.0, nan@^2.3.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
@@ -2991,18 +2516,6 @@ object-assign@^4.0.1, object-assign@^4.1.0:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
 
-object-keys@^1.0.10, object-keys@^1.0.8:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
-
-object.assign@^4.0.4:
-  version "4.0.4"
-  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
-  dependencies:
-    define-properties "^1.1.2"
-    function-bind "^1.1.0"
-    object-keys "^1.0.10"
-
 object.omit@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -3023,10 +2536,6 @@ once@^1.3.0, once@~1.3.0, once@~1.3.3:
   dependencies:
     wrappy "1"
 
-onetime@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
-
 onetime@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@@ -3046,17 +2555,6 @@ option-chain@^0.1.0:
   dependencies:
     object-assign "^4.0.1"
 
-optionator@^0.8.2:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.4"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    wordwrap "~1.0.0"
-
 optjs@~3.2.2:
   version "3.2.2"
   resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee"
@@ -3150,10 +2648,6 @@ path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
 
-path-is-inside@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-
 path-key@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af"
@@ -3182,6 +2676,10 @@ path-type@^2.0.0:
   dependencies:
     pify "^2.0.0"
 
+performance-now@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+
 pify@^2.0.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -3213,26 +2711,12 @@ pkg-conf@^2.0.0:
     find-up "^2.0.0"
     load-json-file "^2.0.0"
 
-pkg-config@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
-  dependencies:
-    debug-log "^1.0.0"
-    find-root "^1.0.0"
-    xtend "^4.0.1"
-
 pkg-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
   dependencies:
     find-up "^1.0.0"
 
-pkg-up@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26"
-  dependencies:
-    find-up "^1.0.0"
-
 plur@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156"
@@ -3243,14 +2727,6 @@ plur@^2.0.0:
   dependencies:
     irregular-plurals "^1.0.0"
 
-pluralize@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
-
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
 prepend-http@^1.0.1:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
@@ -3287,10 +2763,6 @@ process-nextick-args@^1.0.7, process-nextick-args@~1.0.6:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
 
-progress@^1.1.8:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
-
 prop-assign@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/prop-assign/-/prop-assign-1.0.0.tgz#9767a1fbfd7093908647a6e846d31b4feaa70459"
@@ -3332,6 +2804,10 @@ qs@~6.2.0:
   version "6.2.1"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
 
+qs@~6.4.0:
+  version "6.4.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+
 randomatic@^1.1.3:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
@@ -3431,20 +2907,6 @@ readdirp@^2.0.0:
     readable-stream "^2.0.2"
     set-immediate-shim "^1.0.1"
 
-readline2@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
-  dependencies:
-    code-point-at "^1.0.0"
-    is-fullwidth-code-point "^1.0.0"
-    mute-stream "0.0.5"
-
-rechoir@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
-  dependencies:
-    resolve "^1.1.6"
-
 redent@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -3577,6 +3039,33 @@ request@^2.72.0, request@^2.74.0, request@^2.79.0:
     tunnel-agent "~0.4.1"
     uuid "^3.0.0"
 
+request@^2.81.0:
+  version "2.81.0"
+  resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
+  dependencies:
+    aws-sign2 "~0.6.0"
+    aws4 "^1.2.1"
+    caseless "~0.12.0"
+    combined-stream "~1.0.5"
+    extend "~3.0.0"
+    forever-agent "~0.6.1"
+    form-data "~2.1.1"
+    har-validator "~4.2.1"
+    hawk "~3.1.3"
+    http-signature "~1.1.0"
+    is-typedarray "~1.0.0"
+    isstream "~0.1.2"
+    json-stringify-safe "~5.0.1"
+    mime-types "~2.1.7"
+    oauth-sign "~0.8.1"
+    performance-now "^0.2.0"
+    qs "~6.4.0"
+    safe-buffer "^5.0.1"
+    stringstream "~0.0.4"
+    tough-cookie "~2.3.0"
+    tunnel-agent "^0.6.0"
+    uuid "^3.0.0"
+
 request@~2.74.0:
   version "2.74.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab"
@@ -3615,38 +3104,20 @@ require-precompiled@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa"
 
-require-uncached@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
-  dependencies:
-    caller-path "^0.1.0"
-    resolve-from "^1.0.0"
-
 resolve-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f"
   dependencies:
     resolve-from "^2.0.0"
 
-resolve-from@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
-
 resolve-from@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
 
-resolve@^1.1.6, resolve@^1.1.7, resolve@~1.1.7:
+resolve@~1.1.7:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
 
-restore-cursor@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
-  dependencies:
-    exit-hook "^1.0.0"
-    onetime "^1.0.0"
-
 restore-cursor@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -3661,32 +3132,25 @@ retry-request@^1.3.2:
     request "2.76.0"
     through2 "^2.0.0"
 
+retry-request@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-2.0.0.tgz#fa6d3f91e86ded0781c7cfbe45dc6397dbe37943"
+  dependencies:
+    request "^2.81.0"
+    through2 "^2.0.0"
+
 right-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
   dependencies:
     align-text "^0.1.1"
 
-rimraf@2, rimraf@^2.2.8, rimraf@~2.5.1, rimraf@~2.5.4:
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
   version "2.5.4"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
   dependencies:
     glob "^7.0.5"
 
-run-async@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
-  dependencies:
-    once "^1.3.0"
-
-run-parallel@^1.1.2:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039"
-
-rx-lite@^3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
-
 safe-buffer@^5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
@@ -3695,28 +3159,13 @@ samsam@1.x, samsam@^1.1.3:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67"
 
-semistandard@11.0.0:
-  version "11.0.0"
-  resolved "https://registry.yarnpkg.com/semistandard/-/semistandard-11.0.0.tgz#d2d9fc8ac393de21312195e006e50c8861391c47"
-  dependencies:
-    eslint "~3.19.0"
-    eslint-config-semistandard "^11.0.0"
-    eslint-config-standard "^10.2.1"
-    eslint-config-standard-jsx "4.0.1"
-    eslint-plugin-import "~2.2.0"
-    eslint-plugin-node "~4.2.2"
-    eslint-plugin-promise "~3.5.0"
-    eslint-plugin-react "~6.10.0"
-    eslint-plugin-standard "~3.0.1"
-    standard-engine "~7.0.0"
-
 semver-diff@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
   dependencies:
     semver "^5.0.3"
 
-"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@~5.3.0:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@~5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 
@@ -3728,14 +3177,6 @@ set-immediate-shim@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
 
-shelljs@^0.7.5:
-  version "0.7.7"
-  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
-  dependencies:
-    glob "^7.0.0"
-    interpret "^1.0.0"
-    rechoir "^0.6.2"
-
 signal-exit@^3.0.0, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -3837,15 +3278,6 @@ stack-utils@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83"
 
-standard-engine@~7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690"
-  dependencies:
-    deglob "^2.1.0"
-    get-stdin "^5.0.1"
-    minimist "^1.1.0"
-    pkg-conf "^2.0.0"
-
 stream-events@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.1.tgz#4fe7b2bbfcc53e6af31087e8c540483f412ce8c6"
@@ -3931,10 +3363,6 @@ strip-json-comments@~1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
 
-strip-json-comments@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
 stubs@^1.1.0:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/stubs/-/stubs-1.1.2.tgz#945a08975016318762f8f7060731002ab2a0960c"
@@ -3983,17 +3411,6 @@ symbol-observable@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
 
-table@^3.7.8:
-  version "3.8.3"
-  resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
-  dependencies:
-    ajv "^4.7.0"
-    ajv-keywords "^1.0.0"
-    chalk "^1.1.1"
-    lodash "^4.0.0"
-    slice-ansi "0.0.4"
-    string-width "^2.0.0"
-
 tar-pack@~3.3.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
@@ -4025,7 +3442,7 @@ text-encoding@0.6.4:
   version "0.6.4"
   resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19"
 
-text-table@^0.2.0, text-table@~0.2.0:
+text-table@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
 
@@ -4036,10 +3453,6 @@ through2@^2.0.0, through2@^2.0.3:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
 
-through@^2.3.6:
-  version "2.3.8"
-  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-
 time-require@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98"
@@ -4071,9 +3484,11 @@ trim-right@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
 
-tryit@^1.0.1:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+tunnel-agent@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+  dependencies:
+    safe-buffer "^5.0.1"
 
 tunnel-agent@~0.4.1:
   version "0.4.3"
@@ -4083,12 +3498,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   version "0.14.5"
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
 
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  dependencies:
-    prelude-ls "~1.1.2"
-
 type-detect@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea"
@@ -4118,10 +3527,6 @@ uid2@0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"
 
-uniq@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-
 unique-string@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
@@ -4136,6 +3541,10 @@ unique-temp-dir@^1.0.0:
     os-tmpdir "^1.0.1"
     uid2 "0.0.3"
 
+universalify@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"
+
 unzip-response@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
@@ -4159,12 +3568,6 @@ url-parse-lax@^1.0.0:
   dependencies:
     prepend-http "^1.0.1"
 
-user-home@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
-  dependencies:
-    os-homedir "^1.0.0"
-
 util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -4216,10 +3619,6 @@ wordwrap@0.0.2, wordwrap@~0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
 
-wordwrap@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
 wrap-ansi@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -4256,17 +3655,11 @@ write-pkg@^2.0.0:
     sort-keys "^1.1.2"
     write-json-file "^2.0.0"
 
-write@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
-  dependencies:
-    mkdirp "^0.5.1"
-
 xdg-basedir@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
 
-xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
 

From e279c7d2f8d8f630dfd217c62d9aefb9c57c90db Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Tue, 9 May 2017 11:25:42 -0400
Subject: [PATCH 118/820] Revert "updated FQDN's to googleapis.com with a
 trailing dot (#2214)" (#2283)

This reverts commit 13d4ed52402bfb4394aea505b4bab8e6caace989.
---
 handwritten/nodejs-datastore/src/index.js               | 2 +-
 handwritten/nodejs-datastore/src/v1/datastore_client.js | 2 +-
 handwritten/nodejs-datastore/test/index.js              | 5 +----
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js
index dfda7d80e3c..e4a485f9eab 100644
--- a/handwritten/nodejs-datastore/src/index.js
+++ b/handwritten/nodejs-datastore/src/index.js
@@ -300,7 +300,7 @@ function Datastore(options) {
     return new Datastore(options);
   }
 
-  this.defaultBaseUrl_ = 'datastore.googleapis.com.';
+  this.defaultBaseUrl_ = 'datastore.googleapis.com';
   this.determineBaseUrl_(options.apiEndpoint);
 
   this.namespace = options.namespace;
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js
index 19b021ce970..9d9408ace66 100644
--- a/handwritten/nodejs-datastore/src/v1/datastore_client.js
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js
@@ -500,4 +500,4 @@ function DatastoreClientBuilder(gaxGrpc) {
 }
 module.exports = DatastoreClientBuilder;
 module.exports.SERVICE_ADDRESS = SERVICE_ADDRESS;
-module.exports.ALL_SCOPES = ALL_SCOPES;
+module.exports.ALL_SCOPES = ALL_SCOPES;
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js
index 6ddbbfc703e..71c2e0fc792 100644
--- a/handwritten/nodejs-datastore/test/index.js
+++ b/handwritten/nodejs-datastore/test/index.js
@@ -116,10 +116,7 @@ describe('Datastore', function() {
     });
 
     it('should set the default base URL', function() {
-      assert.strictEqual(
-        datastore.defaultBaseUrl_,
-        'datastore.googleapis.com.'
-      );
+      assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com');
     });
 
     it('should set default API connection details', function(done) {

From 3c0d890e18bf7a858eeaff388f5b102daea390d1 Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Wed, 10 May 2017 16:47:18 -0700
Subject: [PATCH 119/820] Upgrade repo tools and regenerate READMEs. (#384)

---
 handwritten/nodejs-datastore/samples/README.md | 18 +++++++-----------
 .../nodejs-datastore/samples/package.json      |  2 +-
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md
index 62fd5d02286..9b929ca195d 100644
--- a/handwritten/nodejs-datastore/samples/README.md
+++ b/handwritten/nodejs-datastore/samples/README.md
@@ -1,10 +1,10 @@
 Google Cloud Platform logo
 
-# Datastore Node.js Samples
+# Google Cloud Datastore Node.js Samples
 
 [![Build](https://storage.googleapis.com/cloud-docs-samples-badges/GoogleCloudPlatform/nodejs-docs-samples/nodejs-docs-samples-datastore.svg)]()
 
-[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development.
+[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects.
 
 ## Table of Contents
 
@@ -20,11 +20,11 @@
 1.  Read [Prerequisites][prereq] and [How to run a sample][run] first.
 1.  Install dependencies:
 
-    With `npm`:
+    With **npm**:
 
         npm install
 
-    With `yarn`:
+    With **yarn**:
 
         yarn install
 
@@ -35,7 +35,6 @@
 
 ### Tasks
 
-
 View the [documentation][tasks_0_docs] or the [source code][tasks_0_code].
 
 __Usage:__ `node tasks.js --help`
@@ -64,13 +63,11 @@ For more information, see https://cloud.google.com/datastore/docs
 
 ### Concepts
 
-
 View the [documentation][concepts_1_docs] or the [source code][concepts_1_code].[concepts_1_docs]: https://cloud.google.com/datastore/docs/concepts/entities
 [concepts_1_code]: concepts.js
 
 ### Errors and Error Handling
 
-
 View the [documentation][error_2_docs] or the [source code][error_2_code].
 
 __Usage:__ `node error.js`
@@ -79,15 +76,14 @@ __Usage:__ `node error.js`
 
 ## Running the tests
 
-1.  Set the `GCLOUD_PROJECT` and `GOOGLE_APPLICATION_CREDENTIALS` environment
-    variables.
+1.  Set the **GCLOUD_PROJECT** and **GOOGLE_APPLICATION_CREDENTIALS** environment variables.
 
 1.  Run the tests:
 
-    With `npm`:
+    With **npm**:
 
         npm test
 
-    With `yarn`:
+    With **yarn**:
 
         yarn test
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 06c40c5f3af..fcf454293b7 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -22,7 +22,7 @@
     "yargs": "7.1.0"
   },
   "devDependencies": {
-    "@google-cloud/nodejs-repo-tools": "1.4.7",
+    "@google-cloud/nodejs-repo-tools": "1.4.13",
     "ava": "0.19.1",
     "proxyquire": "1.7.11",
     "sinon": "2.1.0"

From b5218701ea73c8a3be48af7ea4470d9a9fe8fcea Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Sat, 13 May 2017 13:17:35 -0400
Subject: [PATCH 120/820] docs: contributing guide updated (#2285)

---
 .../system-test/data/index.yaml               | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 handwritten/nodejs-datastore/system-test/data/index.yaml

diff --git a/handwritten/nodejs-datastore/system-test/data/index.yaml b/handwritten/nodejs-datastore/system-test/data/index.yaml
new file mode 100644
index 00000000000..5a2d2b1a8bc
--- /dev/null
+++ b/handwritten/nodejs-datastore/system-test/data/index.yaml
@@ -0,0 +1,23 @@
+indexes:
+
+- kind: Character
+  ancestor: yes
+  properties:
+  - name: appearances
+
+- kind: Character
+  ancestor: yes
+  properties:
+  - name: alive
+
+- kind: Character
+  ancestor: yes
+  properties:
+  - name: family
+  - name: appearances
+
+- kind: Character
+  ancestor: yes
+  properties:
+  - name: name
+  - name: family

From 998d1ee296389394241cc1b82783fe105d1cfe75 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Sat, 13 May 2017 15:16:06 -0400
Subject: [PATCH 121/820] datastore @ 1.0.2 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index c3b2c8cf3ed..8c6f5f50e88 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.1",
+  "version": "1.0.2",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From a48a7f6af54e4005bfb56ac9ca7081bb0a3c88da Mon Sep 17 00:00:00 2001
From: Jason Dobry 
Date: Tue, 16 May 2017 09:33:07 -0700
Subject: [PATCH 122/820] Upgrade repo tools and regenerate READMEs.

---
 handwritten/nodejs-datastore/samples/README.md    | 2 +-
 handwritten/nodejs-datastore/samples/package.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md
index 9b929ca195d..d3475602db2 100644
--- a/handwritten/nodejs-datastore/samples/README.md
+++ b/handwritten/nodejs-datastore/samples/README.md
@@ -28,7 +28,7 @@
 
         yarn install
 
-[prereq]: ../README.md#prerequisities
+[prereq]: ../README.md#prerequisites
 [run]: ../README.md#how-to-run-a-sample
 
 ## Samples
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index fcf454293b7..b8351e06d9a 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -22,7 +22,7 @@
     "yargs": "7.1.0"
   },
   "devDependencies": {
-    "@google-cloud/nodejs-repo-tools": "1.4.13",
+    "@google-cloud/nodejs-repo-tools": "1.4.14",
     "ava": "0.19.1",
     "proxyquire": "1.7.11",
     "sinon": "2.1.0"

From f7a8ea356c2672c31d0d5267b4c734dc2baeef37 Mon Sep 17 00:00:00 2001
From: Song Wang 
Date: Thu, 15 Jun 2017 09:58:13 -0700
Subject: [PATCH 123/820] update gapic retry config (#2390)

---
 .../nodejs-datastore/src/v1/datastore_client_config.json      | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json
index b1b0ac63e94..84ac96e10dc 100644
--- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json
@@ -6,9 +6,7 @@
           "DEADLINE_EXCEEDED",
           "UNAVAILABLE"
         ],
-        "non_idempotent": [
-          "UNAVAILABLE"
-        ]
+        "non_idempotent": []
       },
       "retry_params": {
         "default": {

From 5771b85f6a5ea70bc4bf4acadf1432ae873e6f06 Mon Sep 17 00:00:00 2001
From: Ace Nassri 
Date: Mon, 19 Jun 2017 16:59:32 -0700
Subject: [PATCH 124/820] Add + run dependency updating (bash) script (#401)

* Add + run dependency updating script

* Address comments

Change-Id: I67af9d3ab9e461b579dbaee92274b6163d73c23e

* Run dependency script again

Change-Id: Icbec4acb2cc6bcfa40e0a3a705c5a1059d64efa5

* Update license

Change-Id: Ic1dd0a1bd34356e415bdbf005b81a71a8d2695c2

* Update (more) dependencies

Change-Id: Idaed95b9cfe486797fa75946b6f55e7e702217b8
---
 .../nodejs-datastore/samples/package.json     |   10 +-
 .../nodejs-datastore/samples/yarn.lock        | 1093 ++++++++---------
 2 files changed, 516 insertions(+), 587 deletions(-)

diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index b8351e06d9a..a5226594ac0 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -18,14 +18,14 @@
     "test": "npm run system-test"
   },
   "dependencies": {
-    "@google-cloud/datastore": "1.0.1",
-    "yargs": "7.1.0"
+    "@google-cloud/datastore": "1.0.2",
+    "yargs": "8.0.2"
   },
   "devDependencies": {
-    "@google-cloud/nodejs-repo-tools": "1.4.14",
+    "@google-cloud/nodejs-repo-tools": "1.4.15",
     "ava": "0.19.1",
-    "proxyquire": "1.7.11",
-    "sinon": "2.1.0"
+    "proxyquire": "1.8.0",
+    "sinon": "2.3.4"
   },
   "cloud-repo-tools": {
     "requiresKeyFile": true,
diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock
index 0e89546c747..be3aba2247c 100644
--- a/handwritten/nodejs-datastore/samples/yarn.lock
+++ b/handwritten/nodejs-datastore/samples/yarn.lock
@@ -7,8 +7,8 @@
   resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c"
 
 "@ava/babel-preset-stage-4@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.0.0.tgz#a613b5e152f529305422546b072d47facfb26291"
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz#ae60be881a0babf7d35f52aba770d1f6194f76bd"
   dependencies:
     babel-plugin-check-es2015-constants "^6.8.0"
     babel-plugin-syntax-trailing-function-commas "^6.20.0"
@@ -38,23 +38,23 @@
     esutils "^2.0.2"
 
 "@google-cloud/common-grpc@^0.3.4":
-  version "0.3.4"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.4.tgz#b4fef3fe752954ff7b7204ab71b6ddd2bb53b5fa"
+  version "0.3.6"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.6.tgz#2cda68e62212443593ed751fabe76e8c8cf2605b"
   dependencies:
     "@google-cloud/common" "^0.13.0"
     dot-prop "^2.4.0"
     duplexify "^3.5.0"
     extend "^3.0.0"
-    google-proto-files "^0.11.0"
-    grpc "~1.2.4"
+    google-proto-files "^0.12.0"
+    grpc "^1.3.1"
     is "^3.2.0"
     modelo "^4.2.0"
     retry-request "^2.0.0"
     through2 "^2.0.3"
 
 "@google-cloud/common@^0.13.0":
-  version "0.13.1"
-  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.1.tgz#e39aaea54e82df350f6a4114079cdd121afa3b26"
+  version "0.13.3"
+  resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.3.tgz#d73ee3fa511f29ffbcc44667898685709e9fec8c"
   dependencies:
     array-uniq "^1.0.3"
     arrify "^1.0.1"
@@ -69,15 +69,15 @@
     methmeth "^1.1.0"
     modelo "^4.2.0"
     request "^2.79.0"
-    retry-request "^1.3.2"
+    retry-request "^2.0.0"
     split-array-stream "^1.0.0"
     stream-events "^1.0.1"
     string-format-obj "^1.1.0"
     through2 "^2.0.3"
 
-"@google-cloud/datastore@1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.1.tgz#21f6d92bbc06b51701030b20b9743b5a09e2699b"
+"@google-cloud/datastore@1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.2.tgz#b713f3f03a713b38fcb9631aca3f8e96cda816a9"
   dependencies:
     "@google-cloud/common" "^0.13.0"
     "@google-cloud/common-grpc" "^0.3.4"
@@ -93,25 +93,25 @@
     propprop "^0.3.0"
     split-array-stream "^1.0.0"
 
-"@google-cloud/nodejs-repo-tools@1.4.7":
-  version "1.4.7"
-  resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.7.tgz#1e3838af75386d99317f892ff1288e217a4a4b11"
+"@google-cloud/nodejs-repo-tools@1.4.15":
+  version "1.4.15"
+  resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.15.tgz#b047dd70b4829a6037b71452843ef80b06c55a0f"
   dependencies:
     ava "0.19.1"
     colors "1.1.2"
-    fs-extra "3.0.0"
-    got "6.7.1"
-    handlebars "4.0.6"
+    fs-extra "3.0.1"
+    got "7.0.0"
+    handlebars "4.0.10"
     lodash "4.17.4"
-    proxyquire "1.7.11"
-    sinon "2.1.0"
+    proxyquire "1.8.0"
+    sinon "2.3.2"
     string "3.3.3"
     supertest "3.0.0"
-    yargs "7.1.0"
+    yargs "8.0.1"
 
 abbrev@1:
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
 
 ajv@^4.9.1:
   version "4.11.8"
@@ -132,23 +132,23 @@ amdefine@>=0.0.4:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 
-ansi-align@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
+ansi-align@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
   dependencies:
-    string-width "^1.0.1"
+    string-width "^2.0.0"
 
 ansi-regex@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
 
 ansi-styles@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
 
 ansi-styles@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1"
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
   dependencies:
     color-convert "^1.0.0"
 
@@ -164,15 +164,15 @@ anymatch@^1.3.0:
     micromatch "^2.1.5"
 
 aproba@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
 
 are-we-there-yet@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
   dependencies:
     delegates "^1.0.0"
-    readable-stream "^2.0.0 || ^1.1.13"
+    readable-stream "^2.0.6"
 
 argparse@^1.0.7:
   version "1.0.9"
@@ -235,14 +235,14 @@ asn1@~0.2.3:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
 
+assert-plus@1.0.0, assert-plus@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
 assert-plus@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
 
-assert-plus@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
 async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -251,16 +251,12 @@ async@^1.4.0:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 
-async@^2.0.1, async@^2.1.2:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
+async@^2.1.2, async@^2.4.0:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7"
   dependencies:
     lodash "^4.14.0"
 
-async@~1.4.2:
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/async/-/async-1.4.2.tgz#6c9edcb11ced4f0dd2f2d40db0d49a109c088aab"
-
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -367,8 +363,8 @@ aws-sign2@~0.6.0:
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
 
 aws4@^1.2.1:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
 
 babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
   version "6.22.0"
@@ -379,19 +375,19 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
     js-tokens "^3.0.0"
 
 babel-core@^6.17.0, babel-core@^6.24.1:
-  version "6.24.1"
-  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83"
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
   dependencies:
     babel-code-frame "^6.22.0"
-    babel-generator "^6.24.1"
+    babel-generator "^6.25.0"
     babel-helpers "^6.24.1"
     babel-messages "^6.23.0"
     babel-register "^6.24.1"
     babel-runtime "^6.22.0"
-    babel-template "^6.24.1"
-    babel-traverse "^6.24.1"
-    babel-types "^6.24.1"
-    babylon "^6.11.0"
+    babel-template "^6.25.0"
+    babel-traverse "^6.25.0"
+    babel-types "^6.25.0"
+    babylon "^6.17.2"
     convert-source-map "^1.1.0"
     debug "^2.1.1"
     json5 "^0.5.0"
@@ -402,13 +398,13 @@ babel-core@^6.17.0, babel-core@^6.24.1:
     slash "^1.0.0"
     source-map "^0.5.0"
 
-babel-generator@^6.1.0, babel-generator@^6.24.1:
-  version "6.24.1"
-  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
+babel-generator@^6.1.0, babel-generator@^6.25.0:
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
   dependencies:
     babel-messages "^6.23.0"
     babel-runtime "^6.22.0"
-    babel-types "^6.24.1"
+    babel-types "^6.25.0"
     detect-indent "^4.0.0"
     jsesc "^1.3.0"
     lodash "^4.2.0"
@@ -623,65 +619,54 @@ babel-runtime@^6.22.0:
     core-js "^2.4.0"
     regenerator-runtime "^0.10.0"
 
-babel-template@^6.24.1:
-  version "6.24.1"
-  resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
+babel-template@^6.24.1, babel-template@^6.25.0:
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
   dependencies:
     babel-runtime "^6.22.0"
-    babel-traverse "^6.24.1"
-    babel-types "^6.24.1"
-    babylon "^6.11.0"
+    babel-traverse "^6.25.0"
+    babel-types "^6.25.0"
+    babylon "^6.17.2"
     lodash "^4.2.0"
 
-babel-traverse@^6.24.1:
-  version "6.24.1"
-  resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
+babel-traverse@^6.24.1, babel-traverse@^6.25.0:
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
   dependencies:
     babel-code-frame "^6.22.0"
     babel-messages "^6.23.0"
     babel-runtime "^6.22.0"
-    babel-types "^6.24.1"
-    babylon "^6.15.0"
+    babel-types "^6.25.0"
+    babylon "^6.17.2"
     debug "^2.2.0"
     globals "^9.0.0"
     invariant "^2.2.0"
     lodash "^4.2.0"
 
-babel-types@^6.24.1:
-  version "6.24.1"
-  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
+babel-types@^6.24.1, babel-types@^6.25.0:
+  version "6.25.0"
+  resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
   dependencies:
     babel-runtime "^6.22.0"
     esutils "^2.0.2"
     lodash "^4.2.0"
     to-fast-properties "^1.0.1"
 
-babylon@^6.1.0, babylon@^6.11.0, babylon@^6.15.0:
-  version "6.16.1"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
+babylon@^6.1.0, babylon@^6.17.2:
+  version "6.17.3"
+  resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48"
 
-balanced-match@^0.4.1:
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+balanced-match@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
 
 base64url@2.0.0, base64url@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
 
-base64url@~0.0.4:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/base64url/-/base64url-0.0.6.tgz#9597b36b330db1c42477322ea87ea8027499b82b"
-
-base64url@~1.0.4:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/base64url/-/base64url-1.0.6.tgz#d64d375d68a7c640d912e2358d170dca5bb54681"
-  dependencies:
-    concat-stream "~1.4.7"
-    meow "~2.0.0"
-
 bcrypt-pbkdf@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
   dependencies:
     tweetnacl "^0.14.3"
 
@@ -689,12 +674,6 @@ binary-extensions@^1.0.0:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
 
-bl@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
-  dependencies:
-    readable-stream "~2.0.5"
-
 block-stream@*:
   version "0.0.9"
   resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
@@ -712,10 +691,10 @@ boom@2.x.x:
     hoek "2.x.x"
 
 boxen@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.0.0.tgz#b2694baf1f605f708ff0177c12193b22f29aaaab"
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.1.0.tgz#b1b69dd522305e807a99deee777dbd6e5167b102"
   dependencies:
-    ansi-align "^1.1.0"
+    ansi-align "^2.0.0"
     camelcase "^4.0.0"
     chalk "^1.1.1"
     cli-boxes "^1.0.0"
@@ -723,11 +702,11 @@ boxen@^1.0.0:
     term-size "^0.1.0"
     widest-line "^1.0.0"
 
-brace-expansion@^1.0.0:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+brace-expansion@^1.1.7:
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
   dependencies:
-    balanced-match "^0.4.1"
+    balanced-match "^1.0.0"
     concat-map "0.0.1"
 
 braces@^1.8.2:
@@ -742,14 +721,10 @@ buf-compare@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a"
 
-buffer-equal-constant-time@1.0.1, buffer-equal-constant-time@^1.0.1:
+buffer-equal-constant-time@1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
 
-buffer-shims@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
-
 builtin-modules@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -781,13 +756,6 @@ call-signature@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
 
-camelcase-keys@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-1.0.0.tgz#bd1a11bf9b31a1ce493493a930de1a0baf4ad7ec"
-  dependencies:
-    camelcase "^1.0.1"
-    map-obj "^1.0.0"
-
 camelcase-keys@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -795,7 +763,7 @@ camelcase-keys@^2.0.0:
     camelcase "^2.0.0"
     map-obj "^1.0.0"
 
-camelcase@^1.0.1, camelcase@^1.0.2:
+camelcase@^1.0.2:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
 
@@ -803,11 +771,7 @@ camelcase@^2.0.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
 
-camelcase@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-
-camelcase@^4.0.0:
+camelcase@^4.0.0, camelcase@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
 
@@ -849,8 +813,8 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
     supports-color "^2.0.0"
 
 chokidar@^1.4.2:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
   dependencies:
     anymatch "^1.3.0"
     async-each "^1.0.0"
@@ -868,8 +832,8 @@ ci-info@^1.0.0:
   resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
 
 clean-stack@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.1.1.tgz#a1b3711122df162df7c7cb9b3c0470f28cb58adb"
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31"
 
 clean-yaml-object@^0.1.0:
   version "0.1.0"
@@ -986,23 +950,15 @@ concat-stream@^1.5.0, concat-stream@^1.6.0:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
-concat-stream@~1.4.7:
-  version "1.4.10"
-  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36"
-  dependencies:
-    inherits "~2.0.1"
-    readable-stream "~1.1.9"
-    typedarray "~0.0.5"
-
 configstore@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.0.0.tgz#e1b8669c1803ccc50b545e92f8e6e79aa80e0196"
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.0.tgz#45df907073e26dfa1cf4b2d52f5b60545eaa11d1"
   dependencies:
     dot-prop "^4.1.0"
     graceful-fs "^4.1.2"
-    mkdirp "^0.5.0"
+    make-dir "^1.0.0"
     unique-string "^1.0.0"
-    write-file-atomic "^1.1.2"
+    write-file-atomic "^2.0.0"
     xdg-basedir "^3.0.0"
 
 console-control-strings@^1.0.0, console-control-strings@~1.1.0:
@@ -1083,28 +1039,28 @@ date-time@^0.1.1:
   resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07"
 
 debug@^2.1.1, debug@^2.2.0:
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
-  dependencies:
-    ms "0.7.2"
-
-debug@~2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+  version "2.6.8"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
   dependencies:
-    ms "0.7.1"
+    ms "2.0.0"
 
 decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
 
+decompress-response@^3.2.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+  dependencies:
+    mimic-response "^1.0.0"
+
 deep-equal@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
 
 deep-extend@~0.4.0:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
 
 delayed-stream@~1.0.0:
   version "1.0.0"
@@ -1120,6 +1076,10 @@ detect-indent@^4.0.0:
   dependencies:
     repeating "^2.0.0"
 
+detect-indent@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
+
 diff-match-patch@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.0.tgz#1cc3c83a490d67f95d91e39f6ad1f2e086b63048"
@@ -1159,7 +1119,7 @@ ecc-jsbn@~0.1.1:
   dependencies:
     jsbn "~0.1.0"
 
-ecdsa-sig-formatter@1.0.9, ecdsa-sig-formatter@^1.0.0:
+ecdsa-sig-formatter@1.0.9:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1"
   dependencies:
@@ -1167,8 +1127,8 @@ ecdsa-sig-formatter@1.0.9, ecdsa-sig-formatter@^1.0.0:
     safe-buffer "^5.0.1"
 
 empower-core@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1"
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.2.tgz#5adef566088e31fba80ba0a36df47d7094169144"
   dependencies:
     call-signature "0.0.2"
     core-js "^2.0.0"
@@ -1188,8 +1148,8 @@ equal-length@^1.0.0:
   resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c"
 
 error-ex@^1.2.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
   dependencies:
     is-arrayish "^0.2.1"
 
@@ -1264,8 +1224,8 @@ expand-range@^1.8.1:
     fill-range "^2.1.0"
 
 extend@^3.0.0, extend@~3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
 
 extglob@^0.3.1:
   version "0.3.2"
@@ -1284,8 +1244,8 @@ figures@^2.0.0:
     escape-string-regexp "^1.0.5"
 
 filename-regex@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
 
 fill-keys@^1.0.2:
   version "1.0.2"
@@ -1319,7 +1279,7 @@ find-up@^1.0.0:
     path-exists "^2.0.0"
     pinkie-promise "^2.0.0"
 
-find-up@^2.0.0:
+find-up@^2.0.0, find-up@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
   dependencies:
@@ -1343,21 +1303,21 @@ forever-agent@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
 
-form-data@^2.1.1, form-data@~2.1.1:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+form-data@^2.1.1:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.2.0.tgz#9a5e3b9295f980b2623cf64fa238b14cebca707b"
   dependencies:
     asynckit "^0.4.0"
     combined-stream "^1.0.5"
     mime-types "^2.1.12"
 
-form-data@~1.0.0-rc4:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c"
+form-data@~2.1.1:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
   dependencies:
-    async "^2.0.1"
+    asynckit "^0.4.0"
     combined-stream "^1.0.5"
-    mime-types "^2.1.11"
+    mime-types "^2.1.12"
 
 formatio@1.2.0:
   version "1.2.0"
@@ -1369,9 +1329,9 @@ formidable@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9"
 
-fs-extra@3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.0.tgz#244e0c4b0b8818f54040ec049d8a2bddc1202861"
+fs-extra@3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
   dependencies:
     graceful-fs "^4.1.2"
     jsonfile "^3.0.0"
@@ -1382,13 +1342,13 @@ fs.realpath@^1.0.0:
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 
 fsevents@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
   dependencies:
     nan "^2.3.0"
-    node-pre-gyp "^0.6.29"
+    node-pre-gyp "^0.6.36"
 
-fstream-ignore@~1.0.5:
+fstream-ignore@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
   dependencies:
@@ -1396,18 +1356,18 @@ fstream-ignore@~1.0.5:
     inherits "2"
     minimatch "^3.0.0"
 
-fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
-  version "1.0.10"
-  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
   dependencies:
     graceful-fs "^4.1.2"
     inherits "~2.0.0"
     mkdirp ">=0.5 0"
     rimraf "2"
 
-gauge@~2.7.1:
-  version "2.7.2"
-  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+gauge@~2.7.3:
+  version "2.7.4"
+  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
   dependencies:
     aproba "^1.0.3"
     console-control-strings "^1.0.0"
@@ -1416,7 +1376,6 @@ gauge@~2.7.1:
     signal-exit "^3.0.0"
     string-width "^1.0.1"
     strip-ansi "^3.0.1"
-    supports-color "^0.2.0"
     wide-align "^1.1.0"
 
 gcp-metadata@^0.1.0:
@@ -1460,8 +1419,8 @@ get-stream@^3.0.0:
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
 
 getpass@^0.1.1:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
   dependencies:
     assert-plus "^1.0.0"
 
@@ -1478,30 +1437,20 @@ glob-parent@^2.0.0:
   dependencies:
     is-glob "^2.0.0"
 
-glob@^5.0.10:
-  version "5.0.15"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
-  dependencies:
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "2 || 3"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
 glob@^7.0.3, glob@^7.0.5:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+  version "7.1.2"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
   dependencies:
     fs.realpath "^1.0.0"
     inflight "^1.0.4"
     inherits "2"
-    minimatch "^3.0.2"
+    minimatch "^3.0.4"
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
 globals@^9.0.0:
-  version "9.17.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
+  version "9.18.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
 
 globby@^6.0.0:
   version "6.1.0"
@@ -1522,29 +1471,18 @@ google-auth-library@^0.10.0:
     lodash.noop "^3.0.1"
     request "^2.74.0"
 
-google-auth-library@^0.9.10:
-  version "0.9.10"
-  resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.9.10.tgz#4993dc07bb4834b8ca0350213a6873a32c6051b9"
-  dependencies:
-    async "~1.4.2"
-    gtoken "^1.1.0"
-    jws "~3.0.0"
-    lodash.noop "~3.0.0"
-    request "~2.74.0"
-    string-template "~0.2.0"
-
 google-auto-auth@^0.5.2:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.5.2.tgz#4c9f38574e69fb55a3c516ab0415e9fa33e67602"
+  version "0.5.4"
+  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.5.4.tgz#1d86c7928d633e75a9c1ab034a527efcce4a40b1"
   dependencies:
     async "^2.1.2"
-    google-auth-library "^0.9.10"
+    google-auth-library "^0.10.0"
     object-assign "^3.0.0"
     request "^2.79.0"
 
 google-auto-auth@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.6.0.tgz#ad76656293d8d06b3c89c358becd29947d4510a8"
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.6.1.tgz#c05d820e9454739ecf28a8892eeab3d1624f2cb3"
   dependencies:
     async "^2.1.2"
     gcp-metadata "^0.1.0"
@@ -1553,8 +1491,8 @@ google-auto-auth@^0.6.0:
     request "^2.79.0"
 
 google-gax@^0.13.0:
-  version "0.13.2"
-  resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-0.13.2.tgz#61a7b55fad465b17d3680f88070b2e419131e98e"
+  version "0.13.4"
+  resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-0.13.4.tgz#462d0cf654b0abeef5ee5f059d0f7b6c0d0a6121"
   dependencies:
     extend "^3.0.0"
     google-auto-auth "^0.5.2"
@@ -1567,20 +1505,38 @@ google-gax@^0.13.0:
     through2 "^2.0.3"
 
 google-p12-pem@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.1.tgz#66ef8946ee97e8da37f1beb1d8ec5c3be2ba4539"
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177"
   dependencies:
-    node-forge "^0.6.46"
+    node-forge "^0.7.1"
 
-google-proto-files@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.11.0.tgz#3d753120718e5e8574f38def739d54cf7a057553"
+google-proto-files@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.12.0.tgz#a49075c1fcc2bd8a480186831c297605b9774b2b"
 
 google-proto-files@^0.9.1:
   version "0.9.1"
   resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.9.1.tgz#c760c79059bf62ba3ac56e1d1ba7b8d4560803be"
 
-got@6.7.1, got@^6.7.1:
+got@7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/got/-/got-7.0.0.tgz#82d439f6763cdb1c8821b7a3aae2784c88c3b8d3"
+  dependencies:
+    decompress-response "^3.2.0"
+    duplexer3 "^0.1.4"
+    get-stream "^3.0.0"
+    is-plain-obj "^1.1.0"
+    is-retry-allowed "^1.0.0"
+    is-stream "^1.0.0"
+    isurl "^1.0.0-alpha5"
+    lowercase-keys "^1.0.0"
+    p-cancelable "^0.2.0"
+    p-timeout "^1.1.1"
+    safe-buffer "^5.0.1"
+    timed-out "^4.0.0"
+    url-parse-lax "^1.0.0"
+
+got@^6.7.1:
   version "6.7.1"
   resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
   dependencies:
@@ -1604,9 +1560,9 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
 
-grpc@^1.2, grpc@~1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.2.4.tgz#ef0c8c708245d8fc797e39aa330dce409b3dd03c"
+grpc@^1.2, grpc@^1.3.1:
+  version "1.3.8"
+  resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.3.8.tgz#37d113c1ac402ad14edca7d38dcf90624c2e79e4"
   dependencies:
     arguejs "^0.2.3"
     lodash "^4.15.0"
@@ -1614,18 +1570,18 @@ grpc@^1.2, grpc@~1.2.4:
     node-pre-gyp "^0.6.0"
     protobufjs "^5.0.0"
 
-gtoken@^1.1.0, gtoken@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.1.tgz#90153a547c2fc1cd24a4d3d2ab3b5aba0a26897a"
+gtoken@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.2.tgz#172776a1a9d96ac09fc22a00f5be83cee6de8820"
   dependencies:
     google-p12-pem "^0.1.0"
     jws "^3.0.0"
     mime "^1.2.11"
     request "^2.72.0"
 
-handlebars@4.0.6:
-  version "4.0.6"
-  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
+handlebars@4.0.10:
+  version "4.0.10"
+  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
   dependencies:
     async "^1.4.0"
     optimist "^0.6.1"
@@ -1700,8 +1656,8 @@ home-or-tmp@^2.0.0:
     os-tmpdir "^1.0.1"
 
 hosted-git-info@^2.1.4:
-  version "2.1.5"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
 
 http-signature@~1.1.0:
   version "1.1.1"
@@ -1712,8 +1668,8 @@ http-signature@~1.1.0:
     sshpk "^1.7.0"
 
 hullabaloo-config-manager@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.0.1.tgz#c72be7ba249a67c99b6ba3eb1f55837fa01acd8f"
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3"
   dependencies:
     dot-prop "^4.1.0"
     es6-error "^4.0.2"
@@ -1726,25 +1682,22 @@ hullabaloo-config-manager@^1.0.0:
     lodash.merge "^4.6.0"
     md5-hex "^2.0.0"
     package-hash "^2.0.0"
-    pkg-dir "^1.0.0"
-    resolve-from "^2.0.0"
+    pkg-dir "^2.0.0"
+    resolve-from "^3.0.0"
+    safe-buffer "^5.0.1"
 
 ignore-by-default@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
 
+import-lazy@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+
 imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
 
-indent-string@^1.1.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-1.2.2.tgz#db99bcc583eb6abbb1e48dcbb1999a986041cb6b"
-  dependencies:
-    get-stdin "^4.0.1"
-    minimist "^1.1.0"
-    repeating "^1.1.0"
-
 indent-string@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
@@ -1794,7 +1747,7 @@ is-binary-path@^1.0.0:
   dependencies:
     binary-extensions "^1.0.0"
 
-is-buffer@^1.0.2:
+is-buffer@^1.1.5:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
 
@@ -1811,8 +1764,8 @@ is-ci@^1.0.7:
     ci-info "^1.0.0"
 
 is-dotfile@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
 
 is-equal-shallow@^0.1.3:
   version "0.1.3"
@@ -1859,8 +1812,8 @@ is-glob@^2.0.0, is-glob@^2.0.1:
     is-extglob "^1.0.0"
 
 is-my-json-valid@^2.12.4:
-  version "2.15.0"
-  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+  version "2.16.0"
+  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
   dependencies:
     generate-function "^2.0.0"
     generate-object-property "^1.1.0"
@@ -1871,17 +1824,23 @@ is-npm@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
 
-is-number@^2.0.2, is-number@^2.1.0:
+is-number@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
   dependencies:
     kind-of "^3.0.2"
 
+is-number@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+  dependencies:
+    kind-of "^3.0.2"
+
 is-obj@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
 
-is-object@~1.0.1:
+is-object@^1.0.1, is-object@~1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
 
@@ -1891,7 +1850,7 @@ is-observable@^0.2.0:
   dependencies:
     symbol-observable "^0.2.2"
 
-is-plain-obj@^1.0.0:
+is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
 
@@ -1920,8 +1879,8 @@ is-retry-allowed@^1.0.0:
   resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
 
 is-stream-ended@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.0.tgz#40f058df6b044ee598fee4df7dc1ec2bcdd8df60"
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.3.tgz#a0473b267c756635486beedc7e3344e549d152ac"
 
 is-stream@^1.0.0, is-stream@^1.1.0:
   version "1.1.0"
@@ -1940,8 +1899,8 @@ is-utf8@^0.2.0, is-utf8@^0.2.1:
   resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
 
 is@^3.0.1, is@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/is/-/is-3.2.0.tgz#a362e3daf7df3fd8b7114115d624c5b7e1cb90f7"
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5"
 
 isarray@0.0.1:
   version "0.0.1"
@@ -1965,6 +1924,12 @@ isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
 
+isurl@^1.0.0-alpha5:
+  version "1.0.0-alpha5"
+  resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0-alpha5.tgz#77fa122fff1f31be27b6f157661f88582ba1cd36"
+  dependencies:
+    is-object "^1.0.1"
+
 jest-diff@19.0.0, jest-diff@^19.0.0:
   version "19.0.0"
   resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c"
@@ -2030,26 +1995,20 @@ jest-validate@^19.0.2:
     leven "^2.0.0"
     pretty-format "^19.0.0"
 
-jodid25519@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
-  dependencies:
-    jsbn "~0.1.0"
-
 js-tokens@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
 
 js-yaml@^3.8.2:
-  version "3.8.3"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
+  version "3.8.4"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
   dependencies:
     argparse "^1.0.7"
     esprima "^3.1.1"
 
 jsbn@~0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
 
 jsesc@^1.3.0:
   version "1.3.0"
@@ -2092,9 +2051,10 @@ jsonpointer@^4.0.0:
   resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
 
 jsprim@^1.2.2:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
   dependencies:
+    assert-plus "1.0.0"
     extsprintf "1.0.2"
     json-schema "0.2.3"
     verror "1.3.6"
@@ -2108,14 +2068,6 @@ jwa@^1.1.4:
     ecdsa-sig-formatter "1.0.9"
     safe-buffer "^5.0.1"
 
-jwa@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.0.2.tgz#fd79609f1e772e299dce8ddb76d00659dd83511f"
-  dependencies:
-    base64url "~0.0.4"
-    buffer-equal-constant-time "^1.0.1"
-    ecdsa-sig-formatter "^1.0.0"
-
 jws@^3.0.0, jws@^3.1.4:
   version "3.1.4"
   resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2"
@@ -2124,18 +2076,17 @@ jws@^3.0.0, jws@^3.1.4:
     jwa "^1.1.4"
     safe-buffer "^5.0.1"
 
-jws@~3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/jws/-/jws-3.0.0.tgz#da5f267897dd4e9cf8137979db33fc54a3c05418"
+kind-of@^3.0.2:
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
   dependencies:
-    base64url "~1.0.4"
-    jwa "~1.0.0"
+    is-buffer "^1.1.5"
 
-kind-of@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+kind-of@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
   dependencies:
-    is-buffer "^1.0.2"
+    is-buffer "^1.1.5"
 
 last-line-stream@^1.0.0:
   version "1.0.0"
@@ -2153,10 +2104,6 @@ lazy-cache@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
 
-lazy-req@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4"
-
 lcid@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -2225,7 +2172,7 @@ lodash.merge@^4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
 
-lodash.noop@^3.0.1, lodash.noop@~3.0.0:
+lodash.noop@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c"
 
@@ -2267,11 +2214,17 @@ lowercase-keys@^1.0.0:
   resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
 
 lru-cache@^4.0.0, lru-cache@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
+  dependencies:
+    pseudomap "^1.0.2"
+    yallist "^2.1.2"
+
+make-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978"
   dependencies:
-    pseudomap "^1.0.1"
-    yallist "^2.0.0"
+    pify "^2.3.0"
 
 map-obj@^1.0.0, map-obj@^1.0.1:
   version "1.0.1"
@@ -2299,6 +2252,12 @@ md5-o-matic@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
 
+mem@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+  dependencies:
+    mimic-fn "^1.0.0"
+
 meow@^3.7.0:
   version "3.7.0"
   resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
@@ -2314,15 +2273,6 @@ meow@^3.7.0:
     redent "^1.0.0"
     trim-newlines "^1.0.0"
 
-meow@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/meow/-/meow-2.0.0.tgz#8f530a8ecf5d40d3f4b4df93c3472900fba2a8f1"
-  dependencies:
-    camelcase-keys "^1.0.0"
-    indent-string "^1.1.0"
-    minimist "^1.1.0"
-    object-assign "^1.0.0"
-
 merge-descriptors@~1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
@@ -2353,39 +2303,43 @@ micromatch@^2.1.5, micromatch@^2.3.11:
     parse-glob "^3.0.4"
     regex-cache "^0.4.2"
 
-mime-db@~1.25.0:
-  version "1.25.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+mime-db@~1.27.0:
+  version "1.27.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
 
-mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.7:
-  version "2.1.13"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+mime-types@^2.1.12, mime-types@~2.1.7:
+  version "2.1.15"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
   dependencies:
-    mime-db "~1.25.0"
+    mime-db "~1.27.0"
 
 mime@^1.2.11, mime@^1.3.4:
-  version "1.3.4"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
+  version "1.3.6"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
 
 mimic-fn@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
 
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+mimic-response@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e"
+
+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
   dependencies:
-    brace-expansion "^1.0.0"
+    brace-expansion "^1.1.7"
 
 minimist@0.0.8, minimist@~0.0.1:
   version "0.0.8"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
 
-minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
+minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+"mkdirp@>=0.5 0", mkdirp@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
   dependencies:
@@ -2399,13 +2353,9 @@ module-not-found-error@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0"
 
-ms@0.7.1:
-  version "0.7.1"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-
-ms@0.7.2:
-  version "0.7.2"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
+ms@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 
 ms@^0.7.1:
   version "0.7.3"
@@ -2421,8 +2371,8 @@ multimatch@^2.1.0:
     minimatch "^3.0.0"
 
 nan@^2.0.0, nan@^2.3.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
 
 native-promise-only@^0.8.1:
   version "0.8.1"
@@ -2432,37 +2382,38 @@ natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
 
-node-forge@^0.6.46:
-  version "0.6.46"
-  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.46.tgz#04a8a1c336eb72ef6f434ba7c854d608916c328d"
+node-forge@^0.7.1:
+  version "0.7.1"
+  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300"
 
-node-pre-gyp@^0.6.0, node-pre-gyp@^0.6.29:
-  version "0.6.32"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+node-pre-gyp@^0.6.0, node-pre-gyp@^0.6.36:
+  version "0.6.36"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786"
   dependencies:
-    mkdirp "~0.5.1"
-    nopt "~3.0.6"
-    npmlog "^4.0.1"
-    rc "~1.1.6"
-    request "^2.79.0"
-    rimraf "~2.5.4"
-    semver "~5.3.0"
-    tar "~2.2.1"
-    tar-pack "~3.3.0"
+    mkdirp "^0.5.1"
+    nopt "^4.0.1"
+    npmlog "^4.0.2"
+    rc "^1.1.7"
+    request "^2.81.0"
+    rimraf "^2.6.1"
+    semver "^5.3.0"
+    tar "^2.2.1"
+    tar-pack "^3.4.0"
 
 node-uuid@~1.4.7:
-  version "1.4.7"
-  resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
+  version "1.4.8"
+  resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
 
-nopt@~3.0.6:
-  version "3.0.6"
-  resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+nopt@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
   dependencies:
     abbrev "1"
+    osenv "^0.1.4"
 
 normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+  version "2.3.8"
+  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb"
   dependencies:
     hosted-git-info "^2.1.4"
     is-builtin-module "^1.0.0"
@@ -2487,13 +2438,13 @@ npm-run-path@^2.0.0:
   dependencies:
     path-key "^2.0.0"
 
-npmlog@^4.0.1:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+npmlog@^4.0.2:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5"
   dependencies:
     are-we-there-yet "~1.1.2"
     console-control-strings "~1.1.0"
-    gauge "~2.7.1"
+    gauge "~2.7.3"
     set-blocking "~2.0.0"
 
 number-is-nan@^1.0.0:
@@ -2504,10 +2455,6 @@ oauth-sign@~0.8.1:
   version "0.8.2"
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
 
-object-assign@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-1.0.0.tgz#e65dc8766d3b47b4b8307465c8311da030b070a6"
-
 object-assign@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
@@ -2530,7 +2477,13 @@ observable-to-promise@^0.5.0:
     is-observable "^0.2.0"
     symbol-observable "^1.0.4"
 
-once@^1.3.0, once@~1.3.0, once@~1.3.3:
+once@^1.3.0, once@^1.3.3:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+  dependencies:
+    wrappy "1"
+
+once@~1.3.0:
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
   dependencies:
@@ -2563,16 +2516,29 @@ os-homedir@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
 
-os-locale@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+os-locale@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4"
   dependencies:
+    execa "^0.5.0"
     lcid "^1.0.0"
+    mem "^1.1.0"
 
-os-tmpdir@^1.0.1:
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 
+osenv@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+  dependencies:
+    os-homedir "^1.0.0"
+    os-tmpdir "^1.0.0"
+
+p-cancelable@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.2.0.tgz#3152f4f30be7606b60ebfe8bb93b3fdf69085e46"
+
 p-finally@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -2587,6 +2553,10 @@ p-locate@^2.0.0:
   dependencies:
     p-limit "^1.1.0"
 
+p-timeout@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.1.1.tgz#d28e9fdf96e328886fbff078f886ad158c53bf6d"
+
 package-hash@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44"
@@ -2680,7 +2650,7 @@ performance-now@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
 
-pify@^2.0.0:
+pify@^2.0.0, pify@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
 
@@ -2717,6 +2687,12 @@ pkg-dir@^1.0.0:
   dependencies:
     find-up "^1.0.0"
 
+pkg-dir@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+  dependencies:
+    find-up "^2.1.0"
+
 plur@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156"
@@ -2772,23 +2748,23 @@ propprop@^0.3.0:
   resolved "https://registry.yarnpkg.com/propprop/-/propprop-0.3.1.tgz#a049a3568b896440067d15d8ec9f33735e570178"
 
 protobufjs@^5.0.0:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.1.tgz#589ecdda1a555fd69df4699adc142d36f133aa0b"
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.2.tgz#59748d7dcf03d2db22c13da9feb024e16ab80c91"
   dependencies:
     ascli "~1"
     bytebuffer "~5"
-    glob "^5.0.10"
+    glob "^7.0.5"
     yargs "^3.10.0"
 
-proxyquire@1.7.11:
-  version "1.7.11"
-  resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.7.11.tgz#13b494eb1e71fb21cc3ebe3699e637d3bec1af9e"
+proxyquire@1.8.0:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.8.0.tgz#02d514a5bed986f04cbb2093af16741535f79edc"
   dependencies:
     fill-keys "^1.0.2"
     module-not-found-error "^1.0.0"
     resolve "~1.1.7"
 
-pseudomap@^1.0.1:
+pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 
@@ -2796,33 +2772,29 @@ punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
 
-qs@^6.1.0, qs@~6.3.0:
-  version "6.3.0"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
-
-qs@~6.2.0:
-  version "6.2.1"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
-
-qs@~6.4.0:
+qs@^6.1.0, qs@~6.4.0:
   version "6.4.0"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
 
+qs@~6.3.0:
+  version "6.3.2"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
+
 randomatic@^1.1.3:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+  version "1.1.7"
+  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
   dependencies:
-    is-number "^2.0.2"
-    kind-of "^3.0.2"
+    is-number "^3.0.0"
+    kind-of "^4.0.0"
 
-rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
   dependencies:
     deep-extend "~0.4.0"
     ini "~1.3.0"
     minimist "^1.2.0"
-    strip-json-comments "~1.0.4"
+    strip-json-comments "~2.0.1"
 
 read-pkg-up@^1.0.1:
   version "1.0.1"
@@ -2854,48 +2826,16 @@ read-pkg@^2.0.0:
     normalize-package-data "^2.3.2"
     path-type "^2.0.0"
 
-readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
-  dependencies:
-    buffer-shims "^1.0.0"
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "~1.0.0"
-    process-nextick-args "~1.0.6"
-    string_decoder "~0.10.x"
-    util-deprecate "~1.0.1"
-
-readable-stream@~1.1.9:
-  version "1.1.14"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "0.0.1"
-    string_decoder "~0.10.x"
-
-readable-stream@~2.0.5:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "~1.0.0"
-    process-nextick-args "~1.0.6"
-    string_decoder "~0.10.x"
-    util-deprecate "~1.0.1"
-
-readable-stream@~2.1.4:
-  version "2.1.5"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2:
+  version "2.2.11"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72"
   dependencies:
-    buffer-shims "^1.0.0"
     core-util-is "~1.0.0"
     inherits "~2.0.1"
     isarray "~1.0.0"
     process-nextick-args "~1.0.6"
-    string_decoder "~0.10.x"
+    safe-buffer "~5.0.1"
+    string_decoder "~1.0.0"
     util-deprecate "~1.0.1"
 
 readdirp@^2.0.0:
@@ -2919,8 +2859,8 @@ regenerate@^1.2.1:
   resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
 
 regenerator-runtime@^0.10.0:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e"
+  version "0.10.5"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
 
 regex-cache@^0.4.2:
   version "0.4.3"
@@ -2938,10 +2878,11 @@ regexpu-core@^2.0.0:
     regjsparser "^0.1.4"
 
 registry-auth-token@^3.0.1:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.2.tgz#1b9e51a185c930da34a9894b12a52ea998f1adaf"
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006"
   dependencies:
     rc "^1.1.6"
+    safe-buffer "^5.0.1"
 
 registry-url@^3.0.3:
   version "3.1.0"
@@ -2966,8 +2907,8 @@ release-zalgo@^1.0.0:
     es6-error "^4.0.1"
 
 remove-trailing-separator@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
 
 repeat-element@^1.1.2:
   version "1.1.2"
@@ -2977,12 +2918,6 @@ repeat-string@^1.5.2:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
 
-repeating@^1.1.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac"
-  dependencies:
-    is-finite "^1.0.0"
-
 repeating@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
@@ -3014,32 +2949,7 @@ request@2.76.0:
     tough-cookie "~2.3.0"
     tunnel-agent "~0.4.1"
 
-request@^2.72.0, request@^2.74.0, request@^2.79.0:
-  version "2.79.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
-  dependencies:
-    aws-sign2 "~0.6.0"
-    aws4 "^1.2.1"
-    caseless "~0.11.0"
-    combined-stream "~1.0.5"
-    extend "~3.0.0"
-    forever-agent "~0.6.1"
-    form-data "~2.1.1"
-    har-validator "~2.0.6"
-    hawk "~3.1.3"
-    http-signature "~1.1.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.7"
-    oauth-sign "~0.8.1"
-    qs "~6.3.0"
-    stringstream "~0.0.4"
-    tough-cookie "~2.3.0"
-    tunnel-agent "~0.4.1"
-    uuid "^3.0.0"
-
-request@^2.81.0:
+request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0:
   version "2.81.0"
   resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
   dependencies:
@@ -3066,32 +2976,6 @@ request@^2.81.0:
     tunnel-agent "^0.6.0"
     uuid "^3.0.0"
 
-request@~2.74.0:
-  version "2.74.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab"
-  dependencies:
-    aws-sign2 "~0.6.0"
-    aws4 "^1.2.1"
-    bl "~1.1.2"
-    caseless "~0.11.0"
-    combined-stream "~1.0.5"
-    extend "~3.0.0"
-    forever-agent "~0.6.1"
-    form-data "~1.0.0-rc4"
-    har-validator "~2.0.6"
-    hawk "~3.1.3"
-    http-signature "~1.1.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.7"
-    node-uuid "~1.4.7"
-    oauth-sign "~0.8.1"
-    qs "~6.2.0"
-    stringstream "~0.0.4"
-    tough-cookie "~2.3.0"
-    tunnel-agent "~0.4.1"
-
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -3114,6 +2998,10 @@ resolve-from@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
 
+resolve-from@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+
 resolve@~1.1.7:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
@@ -3133,8 +3021,8 @@ retry-request@^1.3.2:
     through2 "^2.0.0"
 
 retry-request@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-2.0.0.tgz#fa6d3f91e86ded0781c7cfbe45dc6397dbe37943"
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-2.0.5.tgz#d089a14a15db9ed60685b8602b40f4dcc0d3fb3c"
   dependencies:
     request "^2.81.0"
     through2 "^2.0.0"
@@ -3145,13 +3033,17 @@ right-align@^0.1.1:
   dependencies:
     align-text "^0.1.1"
 
-rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
-  version "2.5.4"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
   dependencies:
     glob "^7.0.5"
 
 safe-buffer@^5.0.1:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223"
+
+safe-buffer@~5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
 
@@ -3165,7 +3057,7 @@ semver-diff@^2.0.0:
   dependencies:
     semver "^5.0.3"
 
-"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@~5.3.0:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
 
@@ -3181,9 +3073,22 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 
-sinon@2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.1.0.tgz#e057a9d2bf1b32f5d6dd62628ca9ee3961b0cafb"
+sinon@2.3.2:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.2.tgz#c43a9c570f32baac1159505cfeed19108855df89"
+  dependencies:
+    diff "^3.1.0"
+    formatio "1.2.0"
+    lolex "^1.6.0"
+    native-promise-only "^0.8.1"
+    path-to-regexp "^1.7.0"
+    samsam "^1.1.3"
+    text-encoding "0.6.4"
+    type-detect "^4.0.0"
+
+sinon@2.3.4:
+  version "2.3.4"
+  resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.4.tgz#466ad8d1bae86d6db51aa218b92e997bc3e5db88"
   dependencies:
     diff "^3.1.0"
     formatio "1.2.0"
@@ -3219,8 +3124,8 @@ sort-keys@^1.1.1, sort-keys@^1.1.2:
     is-plain-obj "^1.0.0"
 
 source-map-support@^0.4.0, source-map-support@^0.4.2:
-  version "0.4.14"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef"
+  version "0.4.15"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
   dependencies:
     source-map "^0.5.6"
 
@@ -3249,10 +3154,10 @@ spdx-license-ids@^1.0.2:
   resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
 
 split-array-stream@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/split-array-stream/-/split-array-stream-1.0.0.tgz#d5e4ffacd306161d69ed5252ff56d57e7762eaa2"
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/split-array-stream/-/split-array-stream-1.0.3.tgz#d2b75a8e5e0d824d52fdec8b8225839dc2e35dfa"
   dependencies:
-    async "^1.4.0"
+    async "^2.4.0"
     is-stream-ended "^0.1.0"
 
 sprintf-js@~1.0.2:
@@ -3260,8 +3165,8 @@ sprintf-js@~1.0.2:
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
 
 sshpk@^1.7.0:
-  version "1.10.1"
-  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
   dependencies:
     asn1 "~0.2.3"
     assert-plus "^1.0.0"
@@ -3270,19 +3175,18 @@ sshpk@^1.7.0:
   optionalDependencies:
     bcrypt-pbkdf "^1.0.0"
     ecc-jsbn "~0.1.1"
-    jodid25519 "^1.0.0"
     jsbn "~0.1.0"
     tweetnacl "~0.14.0"
 
 stack-utils@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83"
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
 
 stream-events@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.1.tgz#4fe7b2bbfcc53e6af31087e8c540483f412ce8c6"
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.2.tgz#abf39f66c0890a4eb795bc8d5e859b2615b590b2"
   dependencies:
-    stubs "^1.1.0"
+    stubs "^3.0.0"
 
 stream-shift@^1.0.0:
   version "1.0.0"
@@ -3292,10 +3196,6 @@ string-format-obj@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/string-format-obj/-/string-format-obj-1.1.0.tgz#7635610b1ef397013e8478be98a170e04983d068"
 
-string-template@~0.2.0:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
-
 string-width@^1.0.1, string-width@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -3315,9 +3215,11 @@ string@3.3.3:
   version "3.3.3"
   resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
 
-string_decoder@~0.10.x:
-  version "0.10.31"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+string_decoder@~1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179"
+  dependencies:
+    safe-buffer "~5.0.1"
 
 stringstream@~0.0.4:
   version "0.0.5"
@@ -3359,13 +3261,13 @@ strip-indent@^1.0.1:
   dependencies:
     get-stdin "^4.0.1"
 
-strip-json-comments@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+strip-json-comments@~2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
 
-stubs@^1.1.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/stubs/-/stubs-1.1.2.tgz#945a08975016318762f8f7060731002ab2a0960c"
+stubs@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b"
 
 superagent@^3.0.0:
   version "3.5.2"
@@ -3389,10 +3291,6 @@ supertest@3.0.0:
     methods "~1.1.2"
     superagent "^3.0.0"
 
-supports-color@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
-
 supports-color@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -3411,20 +3309,20 @@ symbol-observable@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
 
-tar-pack@~3.3.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
-  dependencies:
-    debug "~2.2.0"
-    fstream "~1.0.10"
-    fstream-ignore "~1.0.5"
-    once "~1.3.3"
-    readable-stream "~2.1.4"
-    rimraf "~2.5.1"
-    tar "~2.2.1"
-    uid-number "~0.0.6"
-
-tar@~2.2.1:
+tar-pack@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
+  dependencies:
+    debug "^2.2.0"
+    fstream "^1.0.10"
+    fstream-ignore "^1.0.5"
+    once "^1.3.3"
+    readable-stream "^2.1.4"
+    rimraf "^2.5.1"
+    tar "^2.2.1"
+    uid-number "^0.0.6"
+
+tar@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
   dependencies:
@@ -3467,8 +3365,8 @@ timed-out@^4.0.0:
   resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
 
 to-fast-properties@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
 
 tough-cookie@~2.3.0:
   version "2.3.2"
@@ -3502,13 +3400,13 @@ type-detect@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea"
 
-typedarray@^0.0.6, typedarray@~0.0.5:
+typedarray@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 
 uglify-js@^2.6:
-  version "2.8.22"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
+  version "2.8.29"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
   dependencies:
     source-map "~0.5.1"
     yargs "~3.10.0"
@@ -3519,7 +3417,7 @@ uglify-to-browserify@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
 
-uid-number@~0.0.6:
+uid-number@^0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
 
@@ -3550,15 +3448,15 @@ unzip-response@^2.0.1:
   resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
 
 update-notifier@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9"
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f"
   dependencies:
     boxen "^1.0.0"
     chalk "^1.0.0"
     configstore "^3.0.0"
+    import-lazy "^2.1.0"
     is-npm "^1.0.0"
     latest-version "^3.0.0"
-    lazy-req "^2.0.0"
     semver-diff "^2.0.0"
     xdg-basedir "^3.0.0"
 
@@ -3589,9 +3487,9 @@ verror@1.3.6:
   dependencies:
     extsprintf "1.0.2"
 
-which-module@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+which-module@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
 
 which@^1.2.8, which@^1.2.9:
   version "1.2.14"
@@ -3600,10 +3498,10 @@ which@^1.2.8, which@^1.2.9:
     isexe "^2.0.0"
 
 wide-align@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
   dependencies:
-    string-width "^1.0.1"
+    string-width "^1.0.2"
 
 widest-line@^1.0.0:
   version "1.0.0"
@@ -3615,10 +3513,14 @@ window-size@0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
 
-wordwrap@0.0.2, wordwrap@~0.0.2:
+wordwrap@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
 
+wordwrap@~0.0.2:
+  version "0.0.3"
+  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+
 wrap-ansi@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -3630,23 +3532,32 @@ wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 
-write-file-atomic@^1.1.2, write-file-atomic@^1.1.4:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a"
+write-file-atomic@^1.1.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
+  dependencies:
+    graceful-fs "^4.1.11"
+    imurmurhash "^0.1.4"
+    slide "^1.1.5"
+
+write-file-atomic@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.1.0.tgz#1769f4b551eedce419f0505deae2e26763542d37"
   dependencies:
     graceful-fs "^4.1.11"
     imurmurhash "^0.1.4"
     slide "^1.1.5"
 
 write-json-file@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.0.0.tgz#0eaec981fcf9288dbc2806cbd26e06ab9bdca4ed"
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.2.0.tgz#51862506bbb3b619eefab7859f1fd6c6d0530876"
   dependencies:
+    detect-indent "^5.0.0"
     graceful-fs "^4.1.2"
-    mkdirp "^0.5.1"
+    make-dir "^1.0.0"
     pify "^2.0.0"
     sort-keys "^1.1.1"
-    write-file-atomic "^1.1.2"
+    write-file-atomic "^2.0.0"
 
 write-pkg@^2.0.0:
   version "2.1.0"
@@ -3667,33 +3578,51 @@ y18n@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
 
-yallist@^2.0.0:
+yallist@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
 
-yargs-parser@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
+yargs-parser@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
   dependencies:
-    camelcase "^3.0.0"
+    camelcase "^4.1.0"
 
-yargs@7.1.0:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
+yargs@8.0.1:
+  version "8.0.1"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa"
   dependencies:
-    camelcase "^3.0.0"
+    camelcase "^4.1.0"
     cliui "^3.2.0"
     decamelize "^1.1.1"
     get-caller-file "^1.0.1"
-    os-locale "^1.4.0"
-    read-pkg-up "^1.0.1"
+    os-locale "^2.0.0"
+    read-pkg-up "^2.0.0"
     require-directory "^2.1.1"
     require-main-filename "^1.0.1"
     set-blocking "^2.0.0"
-    string-width "^1.0.2"
-    which-module "^1.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^7.0.0"
+
+yargs@8.0.2:
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+  dependencies:
+    camelcase "^4.1.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    read-pkg-up "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
     y18n "^3.2.1"
-    yargs-parser "^5.0.0"
+    yargs-parser "^7.0.0"
 
 yargs@^3.10.0, yargs@~3.10.0:
   version "3.10.0"

From e4b88404be89932489591d5aed293a304ae4326e Mon Sep 17 00:00:00 2001
From: Song Wang 
Date: Fri, 30 Jun 2017 06:34:55 -0700
Subject: [PATCH 125/820] Add dummy js files for datastore gapic/proto
 documentation (#2351)

---
 .../src/v1/doc/doc_datastore.js               | 411 +++++++++++++++
 .../nodejs-datastore/src/v1/doc/doc_entity.js | 250 +++++++++
 .../v1/doc/doc_google_protobuf_wrappers.js    | 128 +++++
 .../nodejs-datastore/src/v1/doc/doc_query.js  | 489 ++++++++++++++++++
 4 files changed, 1278 insertions(+)
 create mode 100644 handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js
 create mode 100644 handwritten/nodejs-datastore/src/v1/doc/doc_entity.js
 create mode 100644 handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js
 create mode 100644 handwritten/nodejs-datastore/src/v1/doc/doc_query.js

diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js
new file mode 100644
index 00000000000..3ff2ec875f0
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js
@@ -0,0 +1,411 @@
+/*
+ * Copyright 2017, Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Note: this file is purely for documentation. Any contents are not expected
+ * to be loaded as the JS file.
+ */
+
+/**
+ * The request for {@link Datastore.Lookup}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @property {Object} readOptions
+ *   The options for this lookup request.
+ *
+ *   This object should have the same structure as [ReadOptions]{@link ReadOptions}
+ *
+ * @property {Object[]} keys
+ *   Keys of entities to look up.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @class
+ * @see [google.datastore.v1.LookupRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var LookupRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The response for {@link Datastore.Lookup}.
+ *
+ * @property {Object[]} found
+ *   Entities found as `ResultType.FULL` entities. The order of results in this
+ *   field is undefined and has no relation to the order of the keys in the
+ *   input.
+ *
+ *   This object should have the same structure as [EntityResult]{@link EntityResult}
+ *
+ * @property {Object[]} missing
+ *   Entities not found as `ResultType.KEY_ONLY` entities. The order of results
+ *   in this field is undefined and has no relation to the order of the keys
+ *   in the input.
+ *
+ *   This object should have the same structure as [EntityResult]{@link EntityResult}
+ *
+ * @property {Object[]} deferred
+ *   A list of keys that were not looked up due to resource constraints. The
+ *   order of results in this field is undefined and has no relation to the
+ *   order of the keys in the input.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @class
+ * @see [google.datastore.v1.LookupResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var LookupResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The request for {@link Datastore.RunQuery}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @property {Object} partitionId
+ *   Entities are partitioned into subsets, identified by a partition ID.
+ *   Queries are scoped to a single partition.
+ *   This partition ID is normalized with the standard default context
+ *   partition ID.
+ *
+ *   This object should have the same structure as [PartitionId]{@link PartitionId}
+ *
+ * @property {Object} readOptions
+ *   The options for this query.
+ *
+ *   This object should have the same structure as [ReadOptions]{@link ReadOptions}
+ *
+ * @property {Object} query
+ *   The query to run.
+ *
+ *   This object should have the same structure as [Query]{@link Query}
+ *
+ * @property {Object} gqlQuery
+ *   The GQL query to run.
+ *
+ *   This object should have the same structure as [GqlQuery]{@link GqlQuery}
+ *
+ * @class
+ * @see [google.datastore.v1.RunQueryRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var RunQueryRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The response for {@link Datastore.RunQuery}.
+ *
+ * @property {Object} batch
+ *   A batch of query results (always present).
+ *
+ *   This object should have the same structure as [QueryResultBatch]{@link QueryResultBatch}
+ *
+ * @property {Object} query
+ *   The parsed form of the `GqlQuery` from the request, if it was set.
+ *
+ *   This object should have the same structure as [Query]{@link Query}
+ *
+ * @class
+ * @see [google.datastore.v1.RunQueryResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var RunQueryResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The request for {@link Datastore.BeginTransaction}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @class
+ * @see [google.datastore.v1.BeginTransactionRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var BeginTransactionRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The response for {@link Datastore.BeginTransaction}.
+ *
+ * @property {string} transaction
+ *   The transaction identifier (always present).
+ *
+ * @class
+ * @see [google.datastore.v1.BeginTransactionResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var BeginTransactionResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The request for {@link Datastore.Rollback}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @property {string} transaction
+ *   The transaction identifier, returned by a call to
+ *   {@link Datastore.BeginTransaction}.
+ *
+ * @class
+ * @see [google.datastore.v1.RollbackRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var RollbackRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The response for {@link Datastore.Rollback}.
+ * (an empty message).
+ * @class
+ * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var RollbackResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The request for {@link Datastore.Commit}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @property {number} mode
+ *   The type of commit to perform. Defaults to `TRANSACTIONAL`.
+ *
+ *   The number should be among the values of [Mode]{@link Mode}
+ *
+ * @property {string} transaction
+ *   The identifier of the transaction associated with the commit. A
+ *   transaction identifier is returned by a call to
+ *   {@link Datastore.BeginTransaction}.
+ *
+ * @property {Object[]} mutations
+ *   The mutations to perform.
+ *
+ *   When mode is `TRANSACTIONAL`, mutations affecting a single entity are
+ *   applied in order. The following sequences of mutations affecting a single
+ *   entity are not permitted in a single `Commit` request:
+ *
+ *   - `insert` followed by `insert`
+ *   - `update` followed by `insert`
+ *   - `upsert` followed by `insert`
+ *   - `delete` followed by `update`
+ *
+ *   When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single
+ *   entity.
+ *
+ *   This object should have the same structure as [Mutation]{@link Mutation}
+ *
+ * @class
+ * @see [google.datastore.v1.CommitRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var CommitRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * The modes available for commits.
+   *
+   * @enum {number}
+   */
+  Mode: {
+
+    /**
+     * Unspecified. This value must not be used.
+     */
+    MODE_UNSPECIFIED: 0,
+
+    /**
+     * Transactional: The mutations are either all applied, or none are applied.
+     * Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).
+     */
+    TRANSACTIONAL: 1,
+
+    /**
+     * Non-transactional: The mutations may not apply as all or none.
+     */
+    NON_TRANSACTIONAL: 2
+  }
+};
+
+/**
+ * The response for {@link Datastore.Commit}.
+ *
+ * @property {Object[]} mutationResults
+ *   The result of performing the mutations.
+ *   The i-th mutation result corresponds to the i-th mutation in the request.
+ *
+ *   This object should have the same structure as [MutationResult]{@link MutationResult}
+ *
+ * @property {number} indexUpdates
+ *   The number of index entries updated during the commit, or zero if none were
+ *   updated.
+ *
+ * @class
+ * @see [google.datastore.v1.CommitResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var CommitResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The request for {@link Datastore.AllocateIds}.
+ *
+ * @property {string} projectId
+ *   The ID of the project against which to make the request.
+ *
+ * @property {Object[]} keys
+ *   A list of keys with incomplete key paths for which to allocate IDs.
+ *   No key may be reserved/read-only.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @class
+ * @see [google.datastore.v1.AllocateIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var AllocateIdsRequest = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The response for {@link Datastore.AllocateIds}.
+ *
+ * @property {Object[]} keys
+ *   The keys specified in the request (in the same order), each with
+ *   its key path completed with a newly allocated ID.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @class
+ * @see [google.datastore.v1.AllocateIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var AllocateIdsResponse = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A mutation to apply to an entity.
+ *
+ * @property {Object} insert
+ *   The entity to insert. The entity must not already exist.
+ *   The entity key's final path element may be incomplete.
+ *
+ *   This object should have the same structure as [Entity]{@link Entity}
+ *
+ * @property {Object} update
+ *   The entity to update. The entity must already exist.
+ *   Must have a complete key path.
+ *
+ *   This object should have the same structure as [Entity]{@link Entity}
+ *
+ * @property {Object} upsert
+ *   The entity to upsert. The entity may or may not already exist.
+ *   The entity key's final path element may be incomplete.
+ *
+ *   This object should have the same structure as [Entity]{@link Entity}
+ *
+ * @property {Object} delete
+ *   The key of the entity to delete. The entity may or may not already exist.
+ *   Must have a complete key path and must not be reserved/read-only.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @property {number} baseVersion
+ *   The version of the entity that this mutation is being applied to. If this
+ *   does not match the current version on the server, the mutation conflicts.
+ *
+ * @class
+ * @see [google.datastore.v1.Mutation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var Mutation = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The result of applying a mutation.
+ *
+ * @property {Object} key
+ *   The automatically allocated key.
+ *   Set only when the mutation allocated a key.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @property {number} version
+ *   The version of the entity on the server after processing the mutation. If
+ *   the mutation doesn't change anything on the server, then the version will
+ *   be the version of the current entity or, if no entity is present, a version
+ *   that is strictly greater than the version of any previous entity and less
+ *   than the version of any possible future entity.
+ *
+ * @property {boolean} conflictDetected
+ *   Whether a conflict was detected for this mutation. Always false when a
+ *   conflict detection strategy field is not set in the mutation.
+ *
+ * @class
+ * @see [google.datastore.v1.MutationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var MutationResult = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The options shared by read requests.
+ *
+ * @property {number} readConsistency
+ *   The non-transactional read consistency to use.
+ *   Cannot be set to `STRONG` for global queries.
+ *
+ *   The number should be among the values of [ReadConsistency]{@link ReadConsistency}
+ *
+ * @property {string} transaction
+ *   The identifier of the transaction in which to read. A
+ *   transaction identifier is returned by a call to
+ *   {@link Datastore.BeginTransaction}.
+ *
+ * @class
+ * @see [google.datastore.v1.ReadOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto}
+ */
+var ReadOptions = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * The possible values for read consistencies.
+   *
+   * @enum {number}
+   */
+  ReadConsistency: {
+
+    /**
+     * Unspecified. This value must not be used.
+     */
+    READ_CONSISTENCY_UNSPECIFIED: 0,
+
+    /**
+     * Strong consistency.
+     */
+    STRONG: 1,
+
+    /**
+     * Eventual consistency.
+     */
+    EVENTUAL: 2
+  }
+};
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/doc_entity.js
new file mode 100644
index 00000000000..33ae665f9da
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/doc/doc_entity.js
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2017, Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Note: this file is purely for documentation. Any contents are not expected
+ * to be loaded as the JS file.
+ */
+
+/**
+ * A partition ID identifies a grouping of entities. The grouping is always
+ * by project and namespace, however the namespace ID may be empty.
+ *
+ * A partition ID contains several dimensions:
+ * project ID and namespace ID.
+ *
+ * Partition dimensions:
+ *
+ * - May be `""`.
+ * - Must be valid UTF-8 bytes.
+ * - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
+ * If the value of any dimension matches regex `__.*__`, the partition is
+ * reserved/read-only.
+ * A reserved/read-only partition ID is forbidden in certain documented
+ * contexts.
+ *
+ * Foreign partition IDs (in which the project ID does
+ * not match the context project ID ) are discouraged.
+ * Reads and writes of foreign partition IDs may fail if the project is not in an active state.
+ *
+ * @property {string} projectId
+ *   The ID of the project to which the entities belong.
+ *
+ * @property {string} namespaceId
+ *   If not empty, the ID of the namespace to which the entities belong.
+ *
+ * @class
+ * @see [google.datastore.v1.PartitionId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+ */
+var PartitionId = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A unique identifier for an entity.
+ * If a key's partition ID or any of its path kinds or names are
+ * reserved/read-only, the key is reserved/read-only.
+ * A reserved/read-only key is forbidden in certain documented contexts.
+ *
+ * @property {Object} partitionId
+ *   Entities are partitioned into subsets, currently identified by a project
+ *   ID and namespace ID.
+ *   Queries are scoped to a single partition.
+ *
+ *   This object should have the same structure as [PartitionId]{@link PartitionId}
+ *
+ * @property {Object[]} path
+ *   The entity path.
+ *   An entity path consists of one or more elements composed of a kind and a
+ *   string or numerical identifier, which identify entities. The first
+ *   element identifies a _root entity_, the second element identifies
+ *   a _child_ of the root entity, the third element identifies a child of the
+ *   second entity, and so forth. The entities identified by all prefixes of
+ *   the path are called the element's _ancestors_.
+ *
+ *   An entity path is always fully complete: *all* of the entity's ancestors
+ *   are required to be in the path along with the entity identifier itself.
+ *   The only exception is that in some documented cases, the identifier in the
+ *   last path element (for the entity) itself may be omitted. For example,
+ *   the last path element of the key of `Mutation.insert` may have no
+ *   identifier.
+ *
+ *   A path can never be empty, and a path can have at most 100 elements.
+ *
+ *   This object should have the same structure as [PathElement]{@link PathElement}
+ *
+ * @class
+ * @see [google.datastore.v1.Key definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+ */
+var Key = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * A (kind, ID/name) pair used to construct a key path.
+   *
+   * If either name or ID is set, the element is complete.
+   * If neither is set, the element is incomplete.
+   *
+   * @property {string} kind
+   *   The kind of the entity.
+   *   A kind matching regex `__.*__` is reserved/read-only.
+   *   A kind must not contain more than 1500 bytes when UTF-8 encoded.
+   *   Cannot be `""`.
+   *
+   * @property {number} id
+   *   The auto-allocated ID of the entity.
+   *   Never equal to zero. Values less than zero are discouraged and may not
+   *   be supported in the future.
+   *
+   * @property {string} name
+   *   The name of the entity.
+   *   A name matching regex `__.*__` is reserved/read-only.
+   *   A name must not be more than 1500 bytes when UTF-8 encoded.
+   *   Cannot be `""`.
+   *
+   * @class
+   * @see [google.datastore.v1.Key.PathElement definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+   */
+  PathElement: {
+    // This is for documentation. Actual contents will be loaded by gRPC.
+  }
+};
+
+/**
+ * An array value.
+ *
+ * @property {Object[]} values
+ *   Values in the array.
+ *   The order of this array may not be preserved if it contains a mix of
+ *   indexed and unindexed values.
+ *
+ *   This object should have the same structure as [Value]{@link Value}
+ *
+ * @class
+ * @see [google.datastore.v1.ArrayValue definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+ */
+var ArrayValue = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A message that can hold any of the supported value types and associated
+ * metadata.
+ *
+ * @property {number} nullValue
+ *   A null value.
+ *
+ *   The number should be among the values of [google.protobuf.NullValue]{@link external:"google.protobuf.NullValue"}
+ *
+ * @property {boolean} booleanValue
+ *   A boolean value.
+ *
+ * @property {number} integerValue
+ *   An integer value.
+ *
+ * @property {number} doubleValue
+ *   A double value.
+ *
+ * @property {Object} timestampValue
+ *   A timestamp value.
+ *   When stored in the Datastore, precise only to microseconds;
+ *   any additional precision is rounded down.
+ *
+ *   This object should have the same structure as [google.protobuf.Timestamp]{@link external:"google.protobuf.Timestamp"}
+ *
+ * @property {Object} keyValue
+ *   A key value.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @property {string} stringValue
+ *   A UTF-8 encoded string value.
+ *   When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
+ *   Otherwise, may be set to at least 1,000,000 bytes.
+ *
+ * @property {string} blobValue
+ *   A blob value.
+ *   May have at most 1,000,000 bytes.
+ *   When `exclude_from_indexes` is false, may have at most 1500 bytes.
+ *   In JSON requests, must be base64-encoded.
+ *
+ * @property {Object} geoPointValue
+ *   A geo point value representing a point on the surface of Earth.
+ *
+ *   This object should have the same structure as [google.type.LatLng]{@link external:"google.type.LatLng"}
+ *
+ * @property {Object} entityValue
+ *   An entity value.
+ *
+ *   - May have no key.
+ *   - May have a key with an incomplete key path.
+ *   - May have a reserved/read-only key.
+ *
+ *   This object should have the same structure as [Entity]{@link Entity}
+ *
+ * @property {Object} arrayValue
+ *   An array value.
+ *   Cannot contain another array value.
+ *   A `Value` instance that sets field `array_value` must not set fields
+ *   `meaning` or `exclude_from_indexes`.
+ *
+ *   This object should have the same structure as [ArrayValue]{@link ArrayValue}
+ *
+ * @property {number} meaning
+ *   The `meaning` field should only be populated for backwards compatibility.
+ *
+ * @property {boolean} excludeFromIndexes
+ *   If the value should be excluded from all indexes including those defined
+ *   explicitly.
+ *
+ * @class
+ * @see [google.datastore.v1.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+ */
+var Value = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A Datastore data object.
+ *
+ * An entity is limited to 1 megabyte when stored. That _roughly_
+ * corresponds to a limit of 1 megabyte for the serialized form of this
+ * message.
+ *
+ * @property {Object} key
+ *   The entity's key.
+ *
+ *   An entity must have a key, unless otherwise documented (for example,
+ *   an entity in `Value.entity_value` may have no key).
+ *   An entity's kind is its key path's last element's kind,
+ *   or null if it has no key.
+ *
+ *   This object should have the same structure as [Key]{@link Key}
+ *
+ * @property {Object.} properties
+ *   The entity's properties.
+ *   The map's keys are property names.
+ *   A property name matching regex `__.*__` is reserved.
+ *   A reserved property name is forbidden in certain documented contexts.
+ *   The name must not contain more than 500 characters.
+ *   The name cannot be `""`.
+ *
+ * @class
+ * @see [google.datastore.v1.Entity definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
+ */
+var Entity = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js
new file mode 100644
index 00000000000..46a5e3e2213
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2017, Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Note: this file is purely for documentation. Any contents are not expected
+ * to be loaded as the JS file.
+ */
+
+/**
+ * Wrapper message for `double`.
+ *
+ * The JSON representation for `DoubleValue` is JSON number.
+ *
+ * @external "google.protobuf.DoubleValue"
+ * @property {number} value
+ *   The double value.
+ *
+ * @see [google.protobuf.DoubleValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `float`.
+ *
+ * The JSON representation for `FloatValue` is JSON number.
+ *
+ * @external "google.protobuf.FloatValue"
+ * @property {number} value
+ *   The float value.
+ *
+ * @see [google.protobuf.FloatValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `int64`.
+ *
+ * The JSON representation for `Int64Value` is JSON string.
+ *
+ * @external "google.protobuf.Int64Value"
+ * @property {number} value
+ *   The int64 value.
+ *
+ * @see [google.protobuf.Int64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `uint64`.
+ *
+ * The JSON representation for `UInt64Value` is JSON string.
+ *
+ * @external "google.protobuf.UInt64Value"
+ * @property {number} value
+ *   The uint64 value.
+ *
+ * @see [google.protobuf.UInt64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `int32`.
+ *
+ * The JSON representation for `Int32Value` is JSON number.
+ *
+ * @external "google.protobuf.Int32Value"
+ * @property {number} value
+ *   The int32 value.
+ *
+ * @see [google.protobuf.Int32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `uint32`.
+ *
+ * The JSON representation for `UInt32Value` is JSON number.
+ *
+ * @external "google.protobuf.UInt32Value"
+ * @property {number} value
+ *   The uint32 value.
+ *
+ * @see [google.protobuf.UInt32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `bool`.
+ *
+ * The JSON representation for `BoolValue` is JSON `true` and `false`.
+ *
+ * @external "google.protobuf.BoolValue"
+ * @property {boolean} value
+ *   The bool value.
+ *
+ * @see [google.protobuf.BoolValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `string`.
+ *
+ * The JSON representation for `StringValue` is JSON string.
+ *
+ * @external "google.protobuf.StringValue"
+ * @property {string} value
+ *   The string value.
+ *
+ * @see [google.protobuf.StringValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
+
+/**
+ * Wrapper message for `bytes`.
+ *
+ * The JSON representation for `BytesValue` is JSON string.
+ *
+ * @external "google.protobuf.BytesValue"
+ * @property {string} value
+ *   The bytes value.
+ *
+ * @see [google.protobuf.BytesValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto}
+ */
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/doc_query.js
new file mode 100644
index 00000000000..90c44904ce8
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/v1/doc/doc_query.js
@@ -0,0 +1,489 @@
+/*
+ * Copyright 2017, Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Note: this file is purely for documentation. Any contents are not expected
+ * to be loaded as the JS file.
+ */
+
+/**
+ * The result of fetching an entity from Datastore.
+ *
+ * @property {Object} entity
+ *   The resulting entity.
+ *
+ *   This object should have the same structure as [Entity]{@link Entity}
+ *
+ * @property {number} version
+ *   The version of the entity, a strictly positive number that monotonically
+ *   increases with changes to the entity.
+ *
+ *   This field is set for {@link `FULL`} entity
+ *   results.
+ *
+ *   For {@link missing} entities in `LookupResponse`, this
+ *   is the version of the snapshot that was used to look up the entity, and it
+ *   is always set except for eventually consistent reads.
+ *
+ * @property {string} cursor
+ *   A cursor that points to the position after the result entity.
+ *   Set only when the `EntityResult` is part of a `QueryResultBatch` message.
+ *
+ * @class
+ * @see [google.datastore.v1.EntityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var EntityResult = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * Specifies what data the 'entity' field contains.
+   * A `ResultType` is either implied (for example, in `LookupResponse.missing`
+   * from `datastore.proto`, it is always `KEY_ONLY`) or specified by context
+   * (for example, in message `QueryResultBatch`, field `entity_result_type`
+   * specifies a `ResultType` for all the values in field `entity_results`).
+   *
+   * @enum {number}
+   */
+  ResultType: {
+
+    /**
+     * Unspecified. This value is never used.
+     */
+    RESULT_TYPE_UNSPECIFIED: 0,
+
+    /**
+     * The key and properties.
+     */
+    FULL: 1,
+
+    /**
+     * A projected subset of properties. The entity may have no key.
+     */
+    PROJECTION: 2,
+
+    /**
+     * Only the key.
+     */
+    KEY_ONLY: 3
+  }
+};
+
+/**
+ * A query for entities.
+ *
+ * @property {Object[]} projection
+ *   The projection to return. Defaults to returning all properties.
+ *
+ *   This object should have the same structure as [Projection]{@link Projection}
+ *
+ * @property {Object[]} kind
+ *   The kinds to query (if empty, returns entities of all kinds).
+ *   Currently at most 1 kind may be specified.
+ *
+ *   This object should have the same structure as [KindExpression]{@link KindExpression}
+ *
+ * @property {Object} filter
+ *   The filter to apply.
+ *
+ *   This object should have the same structure as [Filter]{@link Filter}
+ *
+ * @property {Object[]} order
+ *   The order to apply to the query results (if empty, order is unspecified).
+ *
+ *   This object should have the same structure as [PropertyOrder]{@link PropertyOrder}
+ *
+ * @property {Object[]} distinctOn
+ *   The properties to make distinct. The query results will contain the first
+ *   result for each distinct combination of values for the given properties
+ *   (if empty, all results are returned).
+ *
+ *   This object should have the same structure as [PropertyReference]{@link PropertyReference}
+ *
+ * @property {string} startCursor
+ *   A starting point for the query results. Query cursors are
+ *   returned in query result batches and
+ *   [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
+ *
+ * @property {string} endCursor
+ *   An ending point for the query results. Query cursors are
+ *   returned in query result batches and
+ *   [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
+ *
+ * @property {number} offset
+ *   The number of results to skip. Applies before limit, but after all other
+ *   constraints. Optional. Must be >= 0 if specified.
+ *
+ * @property {Object} limit
+ *   The maximum number of results to return. Applies after all other
+ *   constraints. Optional.
+ *   Unspecified is interpreted as no limit.
+ *   Must be >= 0 if specified.
+ *
+ *   This object should have the same structure as [google.protobuf.Int32Value]{@link external:"google.protobuf.Int32Value"}
+ *
+ * @class
+ * @see [google.datastore.v1.Query definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var Query = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A representation of a kind.
+ *
+ * @property {string} name
+ *   The name of the kind.
+ *
+ * @class
+ * @see [google.datastore.v1.KindExpression definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var KindExpression = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A reference to a property relative to the kind expressions.
+ *
+ * @property {string} name
+ *   The name of the property.
+ *   If name includes "."s, it may be interpreted as a property name path.
+ *
+ * @class
+ * @see [google.datastore.v1.PropertyReference definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var PropertyReference = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A representation of a property in a projection.
+ *
+ * @property {Object} property
+ *   The property to project.
+ *
+ *   This object should have the same structure as [PropertyReference]{@link PropertyReference}
+ *
+ * @class
+ * @see [google.datastore.v1.Projection definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var Projection = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * The desired order for a specific property.
+ *
+ * @property {Object} property
+ *   The property to order by.
+ *
+ *   This object should have the same structure as [PropertyReference]{@link PropertyReference}
+ *
+ * @property {number} direction
+ *   The direction to order by. Defaults to `ASCENDING`.
+ *
+ *   The number should be among the values of [Direction]{@link Direction}
+ *
+ * @class
+ * @see [google.datastore.v1.PropertyOrder definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var PropertyOrder = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * The sort direction.
+   *
+   * @enum {number}
+   */
+  Direction: {
+
+    /**
+     * Unspecified. This value must not be used.
+     */
+    DIRECTION_UNSPECIFIED: 0,
+
+    /**
+     * Ascending.
+     */
+    ASCENDING: 1,
+
+    /**
+     * Descending.
+     */
+    DESCENDING: 2
+  }
+};
+
+/**
+ * A holder for any type of filter.
+ *
+ * @property {Object} compositeFilter
+ *   A composite filter.
+ *
+ *   This object should have the same structure as [CompositeFilter]{@link CompositeFilter}
+ *
+ * @property {Object} propertyFilter
+ *   A filter on a property.
+ *
+ *   This object should have the same structure as [PropertyFilter]{@link PropertyFilter}
+ *
+ * @class
+ * @see [google.datastore.v1.Filter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var Filter = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A filter that merges multiple other filters using the given operator.
+ *
+ * @property {number} op
+ *   The operator for combining multiple filters.
+ *
+ *   The number should be among the values of [Operator]{@link Operator}
+ *
+ * @property {Object[]} filters
+ *   The list of filters to combine.
+ *   Must contain at least one filter.
+ *
+ *   This object should have the same structure as [Filter]{@link Filter}
+ *
+ * @class
+ * @see [google.datastore.v1.CompositeFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var CompositeFilter = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * A composite filter operator.
+   *
+   * @enum {number}
+   */
+  Operator: {
+
+    /**
+     * Unspecified. This value must not be used.
+     */
+    OPERATOR_UNSPECIFIED: 0,
+
+    /**
+     * The results are required to satisfy each of the combined filters.
+     */
+    AND: 1
+  }
+};
+
+/**
+ * A filter on a specific property.
+ *
+ * @property {Object} property
+ *   The property to filter by.
+ *
+ *   This object should have the same structure as [PropertyReference]{@link PropertyReference}
+ *
+ * @property {number} op
+ *   The operator to filter by.
+ *
+ *   The number should be among the values of [Operator]{@link Operator}
+ *
+ * @property {Object} value
+ *   The value to compare the property to.
+ *
+ *   This object should have the same structure as [Value]{@link Value}
+ *
+ * @class
+ * @see [google.datastore.v1.PropertyFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var PropertyFilter = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * A property filter operator.
+   *
+   * @enum {number}
+   */
+  Operator: {
+
+    /**
+     * Unspecified. This value must not be used.
+     */
+    OPERATOR_UNSPECIFIED: 0,
+
+    /**
+     * Less than.
+     */
+    LESS_THAN: 1,
+
+    /**
+     * Less than or equal.
+     */
+    LESS_THAN_OR_EQUAL: 2,
+
+    /**
+     * Greater than.
+     */
+    GREATER_THAN: 3,
+
+    /**
+     * Greater than or equal.
+     */
+    GREATER_THAN_OR_EQUAL: 4,
+
+    /**
+     * Equal.
+     */
+    EQUAL: 5,
+
+    /**
+     * Has ancestor.
+     */
+    HAS_ANCESTOR: 11
+  }
+};
+
+/**
+ * A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).
+ *
+ * @property {string} queryString
+ *   A string of the format described
+ *   [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).
+ *
+ * @property {boolean} allowLiterals
+ *   When false, the query string must not contain any literals and instead must
+ *   bind all values. For example,
+ *   `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while
+ *   `SELECT * FROM Kind WHERE a = @value` is.
+ *
+ * @property {Object.} namedBindings
+ *   For each non-reserved named binding site in the query string, there must be
+ *   a named parameter with that name, but not necessarily the inverse.
+ *
+ *   Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex
+ *   `__.*__`, and must not be `""`.
+ *
+ * @property {Object[]} positionalBindings
+ *   Numbered binding site @1 references the first numbered parameter,
+ *   effectively using 1-based indexing, rather than the usual 0.
+ *
+ *   For each binding site numbered i in `query_string`, there must be an i-th
+ *   numbered parameter. The inverse must also be true.
+ *
+ *   This object should have the same structure as [GqlQueryParameter]{@link GqlQueryParameter}
+ *
+ * @class
+ * @see [google.datastore.v1.GqlQuery definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var GqlQuery = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A binding parameter for a GQL query.
+ *
+ * @property {Object} value
+ *   A value parameter.
+ *
+ *   This object should have the same structure as [Value]{@link Value}
+ *
+ * @property {string} cursor
+ *   A query cursor. Query cursors are returned in query
+ *   result batches.
+ *
+ * @class
+ * @see [google.datastore.v1.GqlQueryParameter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var GqlQueryParameter = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+};
+
+/**
+ * A batch of results produced by a query.
+ *
+ * @property {number} skippedResults
+ *   The number of results skipped, typically because of an offset.
+ *
+ * @property {string} skippedCursor
+ *   A cursor that points to the position after the last skipped result.
+ *   Will be set when `skipped_results` != 0.
+ *
+ * @property {number} entityResultType
+ *   The result type for every entity in `entity_results`.
+ *
+ *   The number should be among the values of [ResultType]{@link ResultType}
+ *
+ * @property {Object[]} entityResults
+ *   The results for this batch.
+ *
+ *   This object should have the same structure as [EntityResult]{@link EntityResult}
+ *
+ * @property {string} endCursor
+ *   A cursor that points to the position after the last result in the batch.
+ *
+ * @property {number} moreResults
+ *   The state of the query after the current batch.
+ *
+ *   The number should be among the values of [MoreResultsType]{@link MoreResultsType}
+ *
+ * @property {number} snapshotVersion
+ *   The version number of the snapshot this batch was returned from.
+ *   This applies to the range of results from the query's `start_cursor` (or
+ *   the beginning of the query if no cursor was given) to this batch's
+ *   `end_cursor` (not the query's `end_cursor`).
+ *
+ *   In a single transaction, subsequent query result batches for the same query
+ *   can have a greater snapshot version number. Each batch's snapshot version
+ *   is valid for all preceding batches.
+ *   The value will be zero for eventually consistent queries.
+ *
+ * @class
+ * @see [google.datastore.v1.QueryResultBatch definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto}
+ */
+var QueryResultBatch = {
+  // This is for documentation. Actual contents will be loaded by gRPC.
+
+  /**
+   * The possible values for the `more_results` field.
+   *
+   * @enum {number}
+   */
+  MoreResultsType: {
+
+    /**
+     * Unspecified. This value is never used.
+     */
+    MORE_RESULTS_TYPE_UNSPECIFIED: 0,
+
+    /**
+     * There may be additional batches to fetch from this query.
+     */
+    NOT_FINISHED: 1,
+
+    /**
+     * The query is finished, but there may be more results after the limit.
+     */
+    MORE_RESULTS_AFTER_LIMIT: 2,
+
+    /**
+     * The query is finished, but there may be more results after the end
+     * cursor.
+     */
+    MORE_RESULTS_AFTER_CURSOR: 4,
+
+    /**
+     * The query has been exhausted.
+     */
+    NO_MORE_RESULTS: 3
+  }
+};
\ No newline at end of file

From 2d46181e1dc7ff67e1561073939c575780a9cef9 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 5 Jul 2017 17:05:42 -0400
Subject: [PATCH 126/820] datastore @ 1.0.3 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 8c6f5f50e88..30eb5b9f4ca 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.2",
+  "version": "1.0.3",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 70175e3a83203d3d7bea2ff3a1c5540df3762acc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?antoine=20beau=E1=B5=9B=E1=B5=83=E1=B4=B5=CB=A2=E2=81=BBla?=
 =?UTF-8?q?c=E1=B5=83=CB=A2=CB=A2=E1=B5=89?=
 
Date: Wed, 12 Jul 2017 18:03:34 -0400
Subject: [PATCH 127/820] Datastore: fix Queries created in Transaction with
 unspecified namespace (#2448)

---
 handwritten/nodejs-datastore/src/transaction.js  | 1 +
 handwritten/nodejs-datastore/test/transaction.js | 8 +++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js
index 1cdbdbd9f73..1de68bc6051 100644
--- a/handwritten/nodejs-datastore/src/transaction.js
+++ b/handwritten/nodejs-datastore/src/transaction.js
@@ -55,6 +55,7 @@ function Transaction(datastore) {
   this.datastore = datastore;
 
   this.projectId = datastore.projectId;
+  this.namespace = datastore.namespace;
 
   this.request = datastore.request.bind(datastore);
 
diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js
index 8f413eb002d..263d54132f7 100644
--- a/handwritten/nodejs-datastore/test/transaction.js
+++ b/handwritten/nodejs-datastore/test/transaction.js
@@ -63,10 +63,12 @@ describe('Transaction', function() {
   var transaction;
   var TRANSACTION_ID = 'transaction-id';
   var PROJECT_ID = 'project-id';
+  var NAMESPACE = 'a-namespace';
 
   var DATASTORE = {
     request: function() {},
-    projectId: PROJECT_ID
+    projectId: PROJECT_ID,
+    namespace: NAMESPACE
   };
 
   function key(path) {
@@ -99,6 +101,10 @@ describe('Transaction', function() {
       assert.strictEqual(transaction.projectId, PROJECT_ID);
     });
 
+    it('should localize the namespace', function() {
+      assert.strictEqual(transaction.namespace, NAMESPACE);
+    });
+
     it('should localize request function', function(done) {
       var transaction;
 

From d6cfa592a01ead8f2e2d1868b6036ded8e86c2e9 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 12 Jul 2017 18:18:29 -0400
Subject: [PATCH 128/820] datastore @ 1.0.4 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 30eb5b9f4ca..1917c32ba16 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.3",
+  "version": "1.0.4",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 2feb9e1cd8d8a106d9921230315a81dfb0d33aad Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 17 Jul 2017 13:50:11 -0400
Subject: [PATCH 129/820] datastore: add missing google-proto-files dependency

---
 handwritten/nodejs-datastore/package.json | 1 +
 1 file changed, 1 insertion(+)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 1917c32ba16..6a3ed006b2c 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -57,6 +57,7 @@
     "create-error-class": "^3.0.2",
     "extend": "^3.0.0",
     "google-gax": "^0.13.0",
+    "google-proto-files": "^0.12.0",
     "is": "^3.0.1",
     "lodash.flatten": "^4.2.0",
     "modelo": "^4.2.0",

From e5ef80bba19937032f9fcceecf2383367acfd36c Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 17 Jul 2017 13:50:31 -0400
Subject: [PATCH 130/820] datastore @ 1.0.5 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 6a3ed006b2c..4c5f71be316 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.4",
+  "version": "1.0.5",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 27c67d333bb73ada22c70a2fca33bb7465e2e789 Mon Sep 17 00:00:00 2001
From: Dave Gramlich 
Date: Mon, 17 Jul 2017 15:52:59 -0400
Subject: [PATCH 131/820] datastore docs: add param tags for mixin methods
 (#2449)

---
 handwritten/nodejs-datastore/src/request.js | 30 +++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js
index 671dc4c4174..8eeb7d43444 100644
--- a/handwritten/nodejs-datastore/src/request.js
+++ b/handwritten/nodejs-datastore/src/request.js
@@ -460,6 +460,16 @@ DatastoreRequest.prototype.get = function(keys, options, callback) {
 
 /**
  * Maps to {module:datastore#save}, forcing the method to be `insert`.
+ *
+ * @param {object|object[]} entities - Datastore key object(s).
+ * @param {Key} entities.key - Datastore key object.
+ * @param {object|object[]} entities.data - Data to save with the provided key.
+ *     If you provide an array of objects, you must use the explicit syntax:
+ *     `name` for the name of the property and `value` for its value. You may
+ *     also specify an `excludeFromIndexes` property, set to `true` or `false`.
+ * @param {function} callback - The callback function.
+ * @param {?error} callback.err - An error returned while making this request
+ * @param {object} callback.apiResponse - The full API response.
  */
 DatastoreRequest.prototype.insert = function(entities, callback) {
   entities = arrify(entities)
@@ -990,6 +1000,16 @@ DatastoreRequest.prototype.save = function(entities, callback) {
 
 /**
  * Maps to {module:datastore#save}, forcing the method to be `update`.
+ *
+ * @param {object|object[]} entities - Datastore key object(s).
+ * @param {Key} entities.key - Datastore key object.
+ * @param {object|object[]} entities.data - Data to save with the provided key.
+ *     If you provide an array of objects, you must use the explicit syntax:
+ *     `name` for the name of the property and `value` for its value. You may
+ *     also specify an `excludeFromIndexes` property, set to `true` or `false`.
+ * @param {function} callback - The callback function.
+ * @param {?error} callback.err - An error returned while making this request
+ * @param {object} callback.apiResponse - The full API response.
  */
 DatastoreRequest.prototype.update = function(entities, callback) {
   entities = arrify(entities)
@@ -1001,6 +1021,16 @@ DatastoreRequest.prototype.update = function(entities, callback) {
 
 /**
  * Maps to {module:datastore#save}, forcing the method to be `upsert`.
+ *
+ * @param {object|object[]} entities - Datastore key object(s).
+ * @param {Key} entities.key - Datastore key object.
+ * @param {object|object[]} entities.data - Data to save with the provided key.
+ *     If you provide an array of objects, you must use the explicit syntax:
+ *     `name` for the name of the property and `value` for its value. You may
+ *     also specify an `excludeFromIndexes` property, set to `true` or `false`.
+ * @param {function} callback - The callback function.
+ * @param {?error} callback.err - An error returned while making this request
+ * @param {object} callback.apiResponse - The full API response.
  */
 DatastoreRequest.prototype.upsert = function(entities, callback) {
   entities = arrify(entities)

From c258b9e655acd83dcc413f9a008537c0c427a836 Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Mon, 17 Jul 2017 16:02:34 -0400
Subject: [PATCH 132/820] datastore @ 1.0.6 tagged.

---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 4c5f71be316..5e466e79cfd 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "1.0.5",
+  "version": "1.0.6",
   "author": "Google Inc.",
   "description": "Cloud Datastore Client Library for Node.js",
   "contributors": [

From 1b935054412a48aa56344ca56d8f66061d6a025c Mon Sep 17 00:00:00 2001
From: Stephen Sawchuk 
Date: Wed, 19 Jul 2017 20:10:17 -0400
Subject: [PATCH 133/820] remove google-proto-files (#2458)

---
 handwritten/nodejs-datastore/package.json     |   1 +
 .../protos/google/api/annotations.proto       |  31 +
 .../protos/google/api/auth.proto              | 183 ++++
 .../protos/google/api/backend.proto           |  47 +
 .../protos/google/api/billing.proto           |  98 +++
 .../protos/google/api/config_change.proto     |  85 ++
 .../protos/google/api/consumer.proto          |  83 ++
 .../protos/google/api/context.proto           |  63 ++
 .../protos/google/api/control.proto           |  33 +
 .../protos/google/api/distribution.proto      | 185 ++++
 .../protos/google/api/documentation.proto     | 159 ++++
 .../protos/google/api/endpoint.proto          |  74 ++
 .../experimental/authorization_config.proto   |  40 +
 .../api/experimental/experimental.proto       |  34 +
 .../protos/google/api/http.proto              | 291 ++++++
 .../protos/google/api/httpbody.proto          |  70 ++
 .../protos/google/api/label.proto             |  49 ++
 .../protos/google/api/log.proto               |  55 ++
 .../protos/google/api/logging.proto           |  83 ++
 .../protos/google/api/metric.proto            | 196 +++++
 .../google/api/monitored_resource.proto       |  91 ++
 .../protos/google/api/monitoring.proto        |  89 ++
 .../protos/google/api/quota.proto             | 259 ++++++
 .../protos/google/api/service.proto           | 176 ++++
 .../api/servicecontrol/v1/check_error.proto   |  95 ++
 .../api/servicecontrol/v1/distribution.proto  | 159 ++++
 .../api/servicecontrol/v1/log_entry.proto     |  67 ++
 .../api/servicecontrol/v1/metric_value.proto  |  78 ++
 .../api/servicecontrol/v1/operation.proto     | 112 +++
 .../v1/service_controller.proto               | 161 ++++
 .../api/servicemanagement/v1/resources.proto  | 286 ++++++
 .../servicemanagement/v1/servicemanager.proto | 392 +++++++++
 .../protos/google/api/source_info.proto       |  32 +
 .../protos/google/api/system_parameter.proto  |  96 ++
 .../protos/google/api/usage.proto             |  85 ++
 .../google/datastore/v1/datastore.proto       | 318 +++++++
 .../protos/google/datastore/v1/entity.proto   | 203 +++++
 .../protos/google/datastore/v1/query.proto    | 309 +++++++
 .../protos/google/protobuf/any.proto          | 139 +++
 .../protos/google/protobuf/api.proto          | 202 +++++
 .../protos/google/protobuf/descriptor.proto   | 831 ++++++++++++++++++
 .../protos/google/protobuf/duration.proto     | 117 +++
 .../protos/google/protobuf/empty.proto        |  52 ++
 .../protos/google/protobuf/field_mask.proto   | 246 ++++++
 .../google/protobuf/source_context.proto      |  48 +
 .../protos/google/protobuf/struct.proto       |  96 ++
 .../protos/google/protobuf/timestamp.proto    | 133 +++
 .../protos/google/protobuf/type.proto         | 187 ++++
 .../protobuf/util/json_format_proto3.proto    | 183 ++++
 .../protos/google/protobuf/wrappers.proto     | 118 +++
 .../protos/google/type/color.proto            | 164 ++++
 .../protos/google/type/date.proto             |  45 +
 .../protos/google/type/dayofweek.proto        |  51 ++
 .../protos/google/type/latlng.proto           |  71 ++
 .../protos/google/type/money.proto            |  42 +
 .../protos/google/type/postal_address.proto   | 132 +++
 .../protos/google/type/timeofday.proto        |  43 +
 handwritten/nodejs-datastore/src/index.js     |  10 +-
 handwritten/nodejs-datastore/test/index.js    |  14 +-
 59 files changed, 7788 insertions(+), 4 deletions(-)
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/annotations.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/auth.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/backend.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/billing.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/config_change.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/consumer.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/context.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/control.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/distribution.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/documentation.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/endpoint.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/http.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/httpbody.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/label.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/log.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/logging.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/metric.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/monitoring.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/quota.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/service.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/source_info.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/system_parameter.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/api/usage.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/any.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/api.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/duration.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/empty.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/struct.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/type.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/color.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/date.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/dayofweek.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/latlng.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/money.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/postal_address.proto
 create mode 100644 handwritten/nodejs-datastore/protos/google/type/timeofday.proto

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 5e466e79cfd..8ea0f93366d 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -31,6 +31,7 @@
   ],
   "main": "./src/index.js",
   "files": [
+    "protos",
     "src",
     "AUTHORS",
     "CONTRIBUTORS",
diff --git a/handwritten/nodejs-datastore/protos/google/api/annotations.proto b/handwritten/nodejs-datastore/protos/google/api/annotations.proto
new file mode 100644
index 00000000000..85c361b47fe
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/annotations.proto
@@ -0,0 +1,31 @@
+// Copyright (c) 2015, Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/api/http.proto";
+import "google/protobuf/descriptor.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "AnnotationsProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.MethodOptions {
+  // See `HttpRule`.
+  HttpRule http = 72295728;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/auth.proto b/handwritten/nodejs-datastore/protos/google/api/auth.proto
new file mode 100644
index 00000000000..0ef63863192
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/auth.proto
@@ -0,0 +1,183 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/api/annotations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "AuthProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// `Authentication` defines the authentication configuration for an API.
+//
+// Example for an API targeted for external use:
+//
+//     name: calendar.googleapis.com
+//     authentication:
+//       providers:
+//       - id: google_calendar_auth
+//         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+//         issuer: https://securetoken.google.com
+//       rules:
+//       - selector: "*"
+//         requirements:
+//           provider_id: google_calendar_auth
+message Authentication {
+  // A list of authentication rules that apply to individual API methods.
+  //
+  // **NOTE:** All service configuration rules follow "last one wins" order.
+  repeated AuthenticationRule rules = 3;
+
+  // Defines a set of authentication providers that a service supports.
+  repeated AuthProvider providers = 4;
+}
+
+// Authentication rules for the service.
+//
+// By default, if a method has any authentication requirements, every request
+// must include a valid credential matching one of the requirements.
+// It's an error to include more than one kind of credential in a single
+// request.
+//
+// If a method doesn't have any auth requirements, request credentials will be
+// ignored.
+message AuthenticationRule {
+  // Selects the methods to which this rule applies.
+  //
+  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+  string selector = 1;
+
+  // The requirements for OAuth credentials.
+  OAuthRequirements oauth = 2;
+
+  // Whether to allow requests without a credential. The credential can be
+  // an OAuth token, Google cookies (first-party auth) or EndUserCreds.
+  //
+  // For requests without credentials, if the service control environment is
+  // specified, each incoming request **must** be associated with a service
+  // consumer. This can be done by passing an API key that belongs to a consumer
+  // project.
+  bool allow_without_credential = 5;
+
+  // Requirements for additional authentication providers.
+  repeated AuthRequirement requirements = 7;
+}
+
+// Configuration for an anthentication provider, including support for
+// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+message AuthProvider {
+  // The unique identifier of the auth provider. It will be referred to by
+  // `AuthRequirement.provider_id`.
+  //
+  // Example: "bookstore_auth".
+  string id = 1;
+
+  // Identifies the principal that issued the JWT. See
+  // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
+  // Usually a URL or an email address.
+  //
+  // Example: https://securetoken.google.com
+  // Example: 1234567-compute@developer.gserviceaccount.com
+  string issuer = 2;
+
+  // URL of the provider's public key set to validate signature of the JWT. See
+  // [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
+  // Optional if the key set document:
+  //  - can be retrieved from
+  //    [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
+  //    of the issuer.
+  //  - can be inferred from the email domain of the issuer (e.g. a Google service account).
+  //
+  // Example: https://www.googleapis.com/oauth2/v1/certs
+  string jwks_uri = 3;
+
+  // The list of JWT
+  // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+  // that are allowed to access. A JWT containing any of these audiences will
+  // be accepted. When this setting is absent, only JWTs with audience
+  // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]"
+  // will be accepted. For example, if no audiences are in the setting,
+  // LibraryService API will only accept JWTs with the following audience
+  // "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+  //
+  // Example:
+  //
+  //     audiences: bookstore_android.apps.googleusercontent.com,
+  //                bookstore_web.apps.googleusercontent.com
+  string audiences = 4;
+}
+
+// OAuth scopes are a way to define data and permissions on data. For example,
+// there are scopes defined for "Read-only access to Google Calendar" and
+// "Access to Cloud Platform". Users can consent to a scope for an application,
+// giving it permission to access that data on their behalf.
+//
+// OAuth scope specifications should be fairly coarse grained; a user will need
+// to see and understand the text description of what your scope means.
+//
+// In most cases: use one or at most two OAuth scopes for an entire family of
+// products. If your product has multiple APIs, you should probably be sharing
+// the OAuth scope across all of those APIs.
+//
+// When you need finer grained OAuth consent screens: talk with your product
+// management about how developers will use them in practice.
+//
+// Please note that even though each of the canonical scopes is enough for a
+// request to be accepted and passed to the backend, a request can still fail
+// due to the backend requiring additional scopes or permissions.
+message OAuthRequirements {
+  // The list of publicly documented OAuth scopes that are allowed access. An
+  // OAuth token containing any of these scopes will be accepted.
+  //
+  // Example:
+  //
+  //      canonical_scopes: https://www.googleapis.com/auth/calendar,
+  //                        https://www.googleapis.com/auth/calendar.read
+  string canonical_scopes = 1;
+}
+
+// User-defined authentication requirements, including support for
+// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+message AuthRequirement {
+  // [id][google.api.AuthProvider.id] from authentication provider.
+  //
+  // Example:
+  //
+  //     provider_id: bookstore_auth
+  string provider_id = 1;
+
+  // NOTE: This will be deprecated soon, once AuthProvider.audiences is
+  // implemented and accepted in all the runtime components.
+  //
+  // The list of JWT
+  // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+  // that are allowed to access. A JWT containing any of these audiences will
+  // be accepted. When this setting is absent, only JWTs with audience
+  // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]"
+  // will be accepted. For example, if no audiences are in the setting,
+  // LibraryService API will only accept JWTs with the following audience
+  // "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+  //
+  // Example:
+  //
+  //     audiences: bookstore_android.apps.googleusercontent.com,
+  //                bookstore_web.apps.googleusercontent.com
+  string audiences = 2;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/backend.proto b/handwritten/nodejs-datastore/protos/google/api/backend.proto
new file mode 100644
index 00000000000..61a72e14d19
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/backend.proto
@@ -0,0 +1,47 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "BackendProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// `Backend` defines the backend configuration for a service.
+message Backend {
+  // A list of API backend rules that apply to individual API methods.
+  //
+  // **NOTE:** All service configuration rules follow "last one wins" order.
+  repeated BackendRule rules = 1;
+}
+
+// A backend rule provides configuration for an individual API element.
+message BackendRule {
+  // Selects the methods to which this rule applies.
+  //
+  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+  string selector = 1;
+
+  // The address of the API backend.
+  string address = 2;
+
+  // The number of seconds to wait for a response from a request.  The
+  // default depends on the deployment context.
+  double deadline = 3;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/billing.proto b/handwritten/nodejs-datastore/protos/google/api/billing.proto
new file mode 100644
index 00000000000..6ecffd5451e
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/billing.proto
@@ -0,0 +1,98 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/api/annotations.proto";
+import "google/api/metric.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "BillingProto";
+option java_package = "com.google.api";
+
+
+// Billing related configuration of the service.
+//
+// The following example shows how to configure metrics for billing:
+//
+//     metrics:
+//     - name: library.googleapis.com/read_calls
+//       metric_kind: DELTA
+//       value_type: INT64
+//     - name: library.googleapis.com/write_calls
+//       metric_kind: DELTA
+//       value_type: INT64
+//     billing:
+//       metrics:
+//       - library.googleapis.com/read_calls
+//       - library.googleapis.com/write_calls
+//
+// The next example shows how to enable billing status check and customize the
+// check behavior. It makes sure billing status check is included in the `Check`
+// method of [Service Control API](https://cloud.google.com/service-control/).
+// In the example, "google.storage.Get" method can be served when the billing
+// status is either `current` or `delinquent`, while "google.storage.Write"
+// method can only be served when the billing status is `current`:
+//
+//     billing:
+//       rules:
+//       - selector: google.storage.Get
+//         allowed_statuses:
+//         - current
+//         - delinquent
+//       - selector: google.storage.Write
+//         allowed_statuses: current
+//
+// Mostly services should only allow `current` status when serving requests.
+// In addition, services can choose to allow both `current` and `delinquent`
+// statuses when serving read-only requests to resources. If there's no
+// matching selector for operation, no billing status check will be performed.
+//
+message Billing {
+  // Names of the metrics to report to billing. Each name must
+  // be defined in [Service.metrics][google.api.Service.metrics] section.
+  repeated string metrics = 1;
+
+  // A list of billing status rules for configuring billing status check.
+  repeated BillingStatusRule rules = 5;
+}
+
+// Defines the billing status requirements for operations.
+//
+// When used with
+// [Service Control API](https://cloud.google.com/service-control/), the
+// following statuses are supported:
+//
+// - **current**: the associated billing account is up to date and capable of
+//                paying for resource usages.
+// - **delinquent**: the associated billing account has a correctable problem,
+//                   such as late payment.
+//
+// Mostly services should only allow `current` status when serving requests.
+// In addition, services can choose to allow both `current` and `delinquent`
+// statuses when serving read-only requests to resources. If the list of
+// allowed_statuses is empty, it means no billing requirement.
+//
+message BillingStatusRule {
+  // Selects the operation names to which this rule applies.
+  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+  string selector = 1;
+
+  // Allowed billing statuses. The billing status check passes if the actual
+  // billing status matches any of the provided values here.
+  repeated string allowed_statuses = 2;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/config_change.proto b/handwritten/nodejs-datastore/protos/google/api/config_change.proto
new file mode 100644
index 00000000000..3c416164ec5
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/config_change.proto
@@ -0,0 +1,85 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/configchange;configchange";
+option java_multiple_files = true;
+option java_outer_classname = "ConfigChangeProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// Output generated from semantically comparing two versions of a service
+// configuration.
+//
+// Includes detailed information about a field that have changed with
+// applicable advice about potential consequences for the change, such as
+// backwards-incompatibility.
+message ConfigChange {
+  // Object hierarchy path to the change, with levels separated by a '.'
+  // character. For repeated fields, an applicable unique identifier field is
+  // used for the index (usually selector, name, or id). For maps, the term
+  // 'key' is used. If the field has no unique identifier, the numeric index
+  // is used.
+  // Examples:
+  // - visibility.rules[selector=="google.LibraryService.CreateBook"].restriction
+  // - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value
+  // - logging.producer_destinations[0]
+  string element = 1;
+
+  // Value of the changed object in the old Service configuration,
+  // in JSON format. This field will not be populated if ChangeType == ADDED.
+  string old_value = 2;
+
+  // Value of the changed object in the new Service configuration,
+  // in JSON format. This field will not be populated if ChangeType == REMOVED.
+  string new_value = 3;
+
+  // The type for this change, either ADDED, REMOVED, or MODIFIED.
+  ChangeType change_type = 4;
+
+  // Collection of advice provided for this change, useful for determining the
+  // possible impact of this change.
+  repeated Advice advices = 5;
+}
+
+// Generated advice about this change, used for providing more
+// information about how a change will affect the existing service.
+message Advice {
+  // Useful description for why this advice was applied and what actions should
+  // be taken to mitigate any implied risks.
+  string description = 2;
+}
+
+// Classifies set of possible modifications to an object in the service
+// configuration.
+enum ChangeType {
+  // No value was provided.
+  CHANGE_TYPE_UNSPECIFIED = 0;
+
+  // The changed object exists in the 'new' service configuration, but not
+  // in the 'old' service configuration.
+  ADDED = 1;
+
+  // The changed object exists in the 'old' service configuration, but not
+  // in the 'new' service configuration.
+  REMOVED = 2;
+
+  // The changed object exists in both service configurations, but its value
+  // is different.
+  MODIFIED = 3;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/consumer.proto b/handwritten/nodejs-datastore/protos/google/api/consumer.proto
new file mode 100644
index 00000000000..4e963168efc
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/consumer.proto
@@ -0,0 +1,83 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "ConsumerProto";
+option java_package = "com.google.api";
+
+
+// A descriptor for defining project properties for a service. One service may
+// have many consumer projects, and the service may want to behave differently
+// depending on some properties on the project. For example, a project may be
+// associated with a school, or a business, or a government agency, a business
+// type property on the project may affect how a service responds to the client.
+// This descriptor defines which properties are allowed to be set on a project.
+//
+// Example:
+//
+//    project_properties:
+//      properties:
+//      - name: NO_WATERMARK
+//        type: BOOL
+//        description: Allows usage of the API without watermarks.
+//      - name: EXTENDED_TILE_CACHE_PERIOD
+//        type: INT64
+message ProjectProperties {
+  // List of per consumer project-specific properties.
+  repeated Property properties = 1;
+}
+
+// Defines project properties.
+//
+// API services can define properties that can be assigned to consumer projects
+// so that backends can perform response customization without having to make
+// additional calls or maintain additional storage. For example, Maps API
+// defines properties that controls map tile cache period, or whether to embed a
+// watermark in a result.
+//
+// These values can be set via API producer console. Only API providers can
+// define and set these properties.
+message Property {
+  // Supported data type of the property values
+  enum PropertyType {
+    // The type is unspecified, and will result in an error.
+    UNSPECIFIED = 0;
+
+    // The type is `int64`.
+    INT64 = 1;
+
+    // The type is `bool`.
+    BOOL = 2;
+
+    // The type is `string`.
+    STRING = 3;
+
+    // The type is 'double'.
+    DOUBLE = 4;
+  }
+
+  // The name of the property (a.k.a key).
+  string name = 1;
+
+  // The type of this property.
+  PropertyType type = 2;
+
+  // The description of the property
+  string description = 3;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/context.proto b/handwritten/nodejs-datastore/protos/google/api/context.proto
new file mode 100644
index 00000000000..fd03fcae916
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/context.proto
@@ -0,0 +1,63 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "ContextProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// `Context` defines which contexts an API requests.
+//
+// Example:
+//
+//     context:
+//       rules:
+//       - selector: "*"
+//         requested:
+//         - google.rpc.context.ProjectContext
+//         - google.rpc.context.OriginContext
+//
+// The above specifies that all methods in the API request
+// `google.rpc.context.ProjectContext` and
+// `google.rpc.context.OriginContext`.
+//
+// Available context types are defined in package
+// `google.rpc.context`.
+message Context {
+  // A list of RPC context rules that apply to individual API methods.
+  //
+  // **NOTE:** All service configuration rules follow "last one wins" order.
+  repeated ContextRule rules = 1;
+}
+
+// A context rule provides information about the context for an individual API
+// element.
+message ContextRule {
+  // Selects the methods to which this rule applies.
+  //
+  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+  string selector = 1;
+
+  // A list of full type names of requested contexts.
+  repeated string requested = 2;
+
+  // A list of full type names of provided contexts.
+  repeated string provided = 3;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/control.proto b/handwritten/nodejs-datastore/protos/google/api/control.proto
new file mode 100644
index 00000000000..acad56cbdde
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/control.proto
@@ -0,0 +1,33 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "ControlProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// Selects and configures the service controller used by the service.  The
+// service controller handles features like abuse, quota, billing, logging,
+// monitoring, etc.
+message Control {
+  // The service control environment to use. If empty, no control plane
+  // feature (like quota and billing) will be enabled.
+  string environment = 1;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/distribution.proto b/handwritten/nodejs-datastore/protos/google/api/distribution.proto
new file mode 100644
index 00000000000..2861e9b6f3a
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/distribution.proto
@@ -0,0 +1,185 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/api/annotations.proto";
+import "google/protobuf/any.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/distribution;distribution";
+option java_multiple_files = true;
+option java_outer_classname = "DistributionProto";
+option java_package = "com.google.api";
+
+
+// Distribution contains summary statistics for a population of values and,
+// optionally, a histogram representing the distribution of those values across
+// a specified set of histogram buckets.
+//
+// The summary statistics are the count, mean, sum of the squared deviation from
+// the mean, the minimum, and the maximum of the set of population of values.
+//
+// The histogram is based on a sequence of buckets and gives a count of values
+// that fall into each bucket.  The boundaries of the buckets are given either
+// explicitly or by specifying parameters for a method of computing them
+// (buckets of fixed width or buckets of exponentially increasing width).
+//
+// Although it is not forbidden, it is generally a bad idea to include
+// non-finite values (infinities or NaNs) in the population of values, as this
+// will render the `mean` and `sum_of_squared_deviation` fields meaningless.
+message Distribution {
+  // The range of the population values.
+  message Range {
+    // The minimum of the population values.
+    double min = 1;
+
+    // The maximum of the population values.
+    double max = 2;
+  }
+
+  // A Distribution may optionally contain a histogram of the values in the
+  // population.  The histogram is given in `bucket_counts` as counts of values
+  // that fall into one of a sequence of non-overlapping buckets.  The sequence
+  // of buckets is described by `bucket_options`.
+  //
+  // A bucket specifies an inclusive lower bound and exclusive upper bound for
+  // the values that are counted for that bucket.  The upper bound of a bucket
+  // is strictly greater than the lower bound.
+  //
+  // The sequence of N buckets for a Distribution consists of an underflow
+  // bucket (number 0), zero or more finite buckets (number 1 through N - 2) and
+  // an overflow bucket (number N - 1).  The buckets are contiguous:  the lower
+  // bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1.
+  // The buckets span the whole range of finite values: lower bound of the
+  // underflow bucket is -infinity and the upper bound of the overflow bucket is
+  // +infinity.  The finite buckets are so-called because both bounds are
+  // finite.
+  //
+  // `BucketOptions` describes bucket boundaries in one of three ways.  Two
+  // describe the boundaries by giving parameters for a formula to generate
+  // boundaries and one gives the bucket boundaries explicitly.
+  //
+  // If `bucket_boundaries` is not given, then no `bucket_counts` may be given.
+  message BucketOptions {
+    // Specify a sequence of buckets that all have the same width (except
+    // overflow and underflow).  Each bucket represents a constant absolute
+    // uncertainty on the specific value in the bucket.
+    //
+    // Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for
+    // bucket `i`:
+    //
+    //    Upper bound (0 <= i < N-1):     offset + (width * i).
+    //    Lower bound (1 <= i < N):       offset + (width * (i - 1)).
+    message Linear {
+      // Must be greater than 0.
+      int32 num_finite_buckets = 1;
+
+      // Must be greater than 0.
+      double width = 2;
+
+      // Lower bound of the first bucket.
+      double offset = 3;
+    }
+
+    // Specify a sequence of buckets that have a width that is proportional to
+    // the value of the lower bound.  Each bucket represents a constant relative
+    // uncertainty on a specific value in the bucket.
+    //
+    // Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for
+    // bucket i:
+    //
+    //    Upper bound (0 <= i < N-1):     scale * (growth_factor ^ i).
+    //    Lower bound (1 <= i < N):       scale * (growth_factor ^ (i - 1)).
+    message Exponential {
+      // Must be greater than 0.
+      int32 num_finite_buckets = 1;
+
+      // Must be greater than 1.
+      double growth_factor = 2;
+
+      // Must be greater than 0.
+      double scale = 3;
+    }
+
+    // A set of buckets with arbitrary widths.
+    //
+    // Defines `size(bounds) + 1` (= N) buckets with these boundaries for
+    // bucket i:
+    //
+    //    Upper bound (0 <= i < N-1):     bounds[i]
+    //    Lower bound (1 <= i < N);       bounds[i - 1]
+    //
+    // There must be at least one element in `bounds`.  If `bounds` has only one
+    // element, there are no finite buckets, and that single element is the
+    // common boundary of the overflow and underflow buckets.
+    message Explicit {
+      // The values must be monotonically increasing.
+      repeated double bounds = 1;
+    }
+
+    // Exactly one of these three fields must be set.
+    oneof options {
+      // The linear bucket.
+      Linear linear_buckets = 1;
+
+      // The exponential buckets.
+      Exponential exponential_buckets = 2;
+
+      // The explicit buckets.
+      Explicit explicit_buckets = 3;
+    }
+  }
+
+  // The number of values in the population. Must be non-negative.
+  int64 count = 1;
+
+  // The arithmetic mean of the values in the population. If `count` is zero
+  // then this field must be zero.
+  double mean = 2;
+
+  // The sum of squared deviations from the mean of the values in the
+  // population.  For values x_i this is:
+  //
+  //     Sum[i=1..n]((x_i - mean)^2)
+  //
+  // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition
+  // describes Welford's method for accumulating this sum in one pass.
+  //
+  // If `count` is zero then this field must be zero.
+  double sum_of_squared_deviation = 3;
+
+  // If specified, contains the range of the population values. The field
+  // must not be present if the `count` is zero.
+  Range range = 4;
+
+  // Defines the histogram bucket boundaries.
+  BucketOptions bucket_options = 6;
+
+  // If `bucket_options` is given, then the sum of the values in `bucket_counts`
+  // must equal the value in `count`.  If `bucket_options` is not given, no
+  // `bucket_counts` fields may be given.
+  //
+  // Bucket counts are given in order under the numbering scheme described
+  // above (the underflow bucket has number 0; the finite buckets, if any,
+  // have numbers 1 through N-2; the overflow bucket has number N-1).
+  //
+  // The size of `bucket_counts` must be no greater than N as defined in
+  // `bucket_options`.
+  //
+  // Any suffix of trailing zero bucket_count fields may be omitted.
+  repeated int64 bucket_counts = 7;
+}
diff --git a/handwritten/nodejs-datastore/protos/google/api/documentation.proto b/handwritten/nodejs-datastore/protos/google/api/documentation.proto
new file mode 100644
index 00000000000..0b85eca51e5
--- /dev/null
+++ b/handwritten/nodejs-datastore/protos/google/api/documentation.proto
@@ -0,0 +1,159 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
+option java_multiple_files = true;
+option java_outer_classname = "DocumentationProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+
+// `Documentation` provides the information for describing a service.
+//
+// Example:
+// 
documentation:
+//   summary: >
+//     The Google Calendar API gives access
+//     to most calendar features.
+//   pages:
+//   - name: Overview
+//     content: (== include google/foo/overview.md ==)
+//   - name: Tutorial
+//     content: (== include google/foo/tutorial.md ==)
+//     subpages;
+//     - name: Java
+//       content: (== include google/foo/tutorial_java.md ==)
+//   rules:
+//   - selector: google.calendar.Calendar.Get
+//     description: >
+//       ...
+//   - selector: google.calendar.Calendar.Put
+//     description: >
+//       ...
+// 
+// Documentation is provided in markdown syntax. In addition to +// standard markdown features, definition lists, tables and fenced +// code blocks are supported. Section headers can be provided and are +// interpreted relative to the section nesting of the context where +// a documentation fragment is embedded. +// +// Documentation from the IDL is merged with documentation defined +// via the config at normalization time, where documentation provided +// by config rules overrides IDL provided. +// +// A number of constructs specific to the API platform are supported +// in documentation text. +// +// In order to reference a proto element, the following +// notation can be used: +//
[fully.qualified.proto.name][]
+// To override the display text used for the link, this can be used: +//
[display text][fully.qualified.proto.name]
+// Text can be excluded from doc using the following notation: +//
(-- internal comment --)
+// Comments can be made conditional using a visibility label. The below +// text will be only rendered if the `BETA` label is available: +//
(--BETA: comment for BETA users --)
+// A few directives are available in documentation. Note that +// directives must appear on a single line to be properly +// identified. The `include` directive includes a markdown file from +// an external source: +//
(== include path/to/file ==)
+// The `resource_for` directive marks a message to be the resource of +// a collection in REST view. If it is not specified, tools attempt +// to infer the resource from the operations in a collection: +//
(== resource_for v1.shelves.books ==)
+// The directive `suppress_warning` does not directly affect documentation +// and is documented together with service config validation. +message Documentation { + // A short summary of what the service does. Can only be provided by + // plain text. + string summary = 1; + + // The top level pages for the documentation set. + repeated Page pages = 5; + + // A list of documentation rules that apply to individual API elements. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated DocumentationRule rules = 3; + + // The URL to the root of documentation. + string documentation_root_url = 4; + + // Declares a single overview page. For example: + //
documentation:
+  //   summary: ...
+  //   overview: (== include overview.md ==)
+  // 
+ // This is a shortcut for the following declaration (using pages style): + //
documentation:
+  //   summary: ...
+  //   pages:
+  //   - name: Overview
+  //     content: (== include overview.md ==)
+  // 
+ // Note: you cannot specify both `overview` field and `pages` field. + string overview = 2; +} + +// A documentation rule provides information about individual API elements. +message DocumentationRule { + // The selector is a comma-separated list of patterns. Each pattern is a + // qualified name of the element which may end in "*", indicating a wildcard. + // Wildcards are only allowed at the end and for a whole component of the + // qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To + // specify a default for all applicable elements, the whole pattern "*" + // is used. + string selector = 1; + + // Description of the selected API(s). + string description = 2; + + // Deprecation description of the selected element(s). It can be provided if an + // element is marked as `deprecated`. + string deprecation_description = 3; +} + +// Represents a documentation page. A page can contain subpages to represent +// nested documentation set structure. +message Page { + // The name of the page. It will be used as an identity of the page to + // generate URI of the page, text of the link to this page in navigation, + // etc. The full page name (start from the root page name to this page + // concatenated with `.`) can be used as reference to the page in your + // documentation. For example: + //
pages:
+  // - name: Tutorial
+  //   content: (== include tutorial.md ==)
+  //   subpages:
+  //   - name: Java
+  //     content: (== include tutorial_java.md ==)
+  // 
+ // You can reference `Java` page using Markdown reference link syntax: + // `[Java][Tutorial.Java]`. + string name = 1; + + // The Markdown content of the page. You can use (== include {path} ==) + // to include content from a Markdown file. + string content = 2; + + // Subpages of this page. The order of subpages specified here will be + // honored in the generated docset. + repeated Page subpages = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/endpoint.proto b/handwritten/nodejs-datastore/protos/google/api/endpoint.proto new file mode 100644 index 00000000000..68655b26a08 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/endpoint.proto @@ -0,0 +1,74 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "EndpointProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// `Endpoint` describes a network endpoint that serves a set of APIs. +// A service may expose any number of endpoints, and all endpoints share the +// same service configuration, such as quota configuration and monitoring +// configuration. +// +// Example service configuration: +// +// name: library-example.googleapis.com +// endpoints: +// # Below entry makes 'google.example.library.v1.Library' +// # API be served from endpoint address library-example.googleapis.com. +// # It also allows HTTP OPTIONS calls to be passed to the backend, for +// # it to decide whether the subsequent cross-origin request is +// # allowed to proceed. +// - name: library-example.googleapis.com +// allow_cors: true +message Endpoint { + // The canonical name of this endpoint. + string name = 1; + + // DEPRECATED: This field is no longer supported. Instead of using aliases, + // please specify multiple [google.api.Endpoint][google.api.Endpoint] for each of the intented + // alias. + // + // Additional names that this endpoint will be hosted on. + repeated string aliases = 2; + + // The list of APIs served by this endpoint. + repeated string apis = 3; + + // The list of features enabled on this endpoint. + repeated string features = 4; + + // The specification of an Internet routable address of API frontend that will + // handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). + // It should be either a valid IPv4 address or a fully-qualified domain name. + // For example, "8.8.8.8" or "myservice.appspot.com". + string target = 101; + + // Allowing + // [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka + // cross-domain traffic, would allow the backends served from this endpoint to + // receive and respond to HTTP OPTIONS requests. The response will be used by + // the browser to determine whether the subsequent cross-origin request is + // allowed to proceed. + bool allow_cors = 5; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto b/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto new file mode 100644 index 00000000000..5c213c62531 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto @@ -0,0 +1,40 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option go_package = "google.golang.org/genproto/googleapis/api;api"; +option java_multiple_files = true; +option java_outer_classname = "AuthorizationConfigProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Configuration of authorization. +// +// This section determines the authorization provider, if unspecified, then no +// authorization check will be done. +// +// Example: +// +// experimental: +// authorization: +// provider: firebaserules.googleapis.com +message AuthorizationConfig { + // The name of the authorization provider, such as + // firebaserules.googleapis.com. + string provider = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto b/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto new file mode 100644 index 00000000000..b98097df54a --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto @@ -0,0 +1,34 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; +import "google/api/experimental/authorization_config.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api;api"; +option java_multiple_files = true; +option java_outer_classname = "ExperimentalProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Experimental service configuration. These configuration options can +// only be used by whitelisted users. +message Experimental { + // Authorization configuration. + AuthorizationConfig authorization = 8; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/http.proto b/handwritten/nodejs-datastore/protos/google/api/http.proto new file mode 100644 index 00000000000..5f8538a0164 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/http.proto @@ -0,0 +1,291 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Defines the HTTP configuration for a service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; +} + +// `HttpRule` defines the mapping of an RPC method to one or more HTTP +// REST APIs. The mapping determines what portions of the request +// message are populated from the path, query parameters, or body of +// the HTTP request. The mapping is typically specified as an +// `google.api.http` annotation, see "google/api/annotations.proto" +// for details. +// +// The mapping consists of a field specifying the path template and +// method kind. The path template can refer to fields in the request +// message, as in the example below which describes a REST GET +// operation on a resource collection of messages: +// +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}"; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // mapped to the URL +// SubMessage sub = 2; // `sub.subfield` is url-mapped +// } +// message Message { +// string text = 1; // content of the resource +// } +// +// The same http annotation can alternatively be expressed inside the +// `GRPC API Configuration` YAML file. +// +// http: +// rules: +// - selector: .Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// This definition enables an automatic, bidrectional mapping of HTTP +// JSON to RPC. Example: +// +// HTTP | RPC +// -----|----- +// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))` +// +// In general, not only fields but also field paths can be referenced +// from a path pattern. Fields mapped to the path pattern cannot be +// repeated and must have a primitive (non-message) type. +// +// Any fields in the request message which are not bound by the path +// pattern automatically become (optional) HTTP query +// parameters. Assume the following definition of the request message: +// +// +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // mapped to the URL +// int64 revision = 2; // becomes a parameter +// SubMessage sub = 3; // `sub.subfield` becomes a parameter +// } +// +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | RPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))` +// +// Note that fields which are mapped to HTTP parameters must have a +// primitive type or a repeated primitive type. Message types are not +// allowed. In the case of a repeated type, the parameter can be +// repeated in the URL, as in `...?param=A¶m=B`. +// +// For HTTP method kinds which allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// put: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | RPC +// -----|----- +// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// put: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | RPC +// -----|----- +// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice of +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// +// This enables the following two alternative HTTP JSON to RPC +// mappings: +// +// HTTP | RPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` +// +// # Rules for HTTP mapping +// +// The rules for mapping HTTP path, query parameters, and body fields +// to the request message are as follows: +// +// 1. The `body` field specifies either `*` or a field path, or is +// omitted. If omitted, it assumes there is no HTTP body. +// 2. Leaf fields (recursive expansion of nested messages in the +// request) can be classified into three types: +// (a) Matched in the URL template. +// (b) Covered by body (if body is `*`, everything except (a) fields; +// else everything under the body field) +// (c) All other fields. +// 3. URL query parameters found in the HTTP request are mapped to (c) fields. +// 4. Any body sent with an HTTP request can contain only (b) fields. +// +// The syntax of the path template is as follows: +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single path segment. It follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion. +// +// The syntax `**` matches zero or more path segments. It follows the semantics +// of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved +// Expansion. NOTE: it must be the last segment in the path except the Verb. +// +// The syntax `LITERAL` matches literal text in the URL path. +// +// The syntax `Variable` matches the entire path as specified by its template; +// this nested template must not contain further variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// NOTE: the field paths in variables and in the `body` must not refer to +// repeated fields or map fields. +// +// Use CustomHttpPattern to specify any HTTP method that is not included in the +// `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for +// a given URL path rule. The wild-card rule is useful for services that provide +// content to Web (HTML) clients. +message HttpRule { + // Selects methods to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Used for listing and getting information about resources. + string get = 2; + + // Used for updating a resource. + string put = 3; + + // Used for creating a resource. + string post = 4; + + // Used for deleting a resource. + string delete = 5; + + // Used for updating a resource. + string patch = 6; + + // Custom pattern is used for defining custom verbs. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP body, or + // `*` for mapping all fields not captured by the path pattern to the HTTP + // body. NOTE: the referred field must not be a repeated field and must be + // present at the top-level of request message type. + string body = 7; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/httpbody.proto b/handwritten/nodejs-datastore/protos/google/api/httpbody.proto new file mode 100644 index 00000000000..f5176634b0b --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/httpbody.proto @@ -0,0 +1,70 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; +option java_multiple_files = true; +option java_outer_classname = "HttpBodyProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Message that represents an arbitrary HTTP body. It should only be used for +// payload formats that can't be represented as JSON, such as raw binary or +// an HTML page. +// +// +// This message can be used both in streaming and non-streaming API methods in +// the request as well as the response. +// +// It can be used as a top-level request field, which is convenient if one +// wants to extract parameters from either the URL or HTTP template into the +// request fields and also want access to the raw HTTP body. +// +// Example: +// +// message GetResourceRequest { +// // A unique request id. +// string request_id = 1; +// +// // The raw HTTP body is bound to this field. +// google.api.HttpBody http_body = 2; +// } +// +// service ResourceService { +// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); +// rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); +// } +// +// Example with streaming methods: +// +// service CaldavService { +// rpc GetCalendar(stream google.api.HttpBody) +// returns (stream google.api.HttpBody); +// rpc UpdateCalendar(stream google.api.HttpBody) +// returns (stream google.api.HttpBody); +// } +// +// Use of this type only changes how the request and response bodies are +// handled, all other features will continue to work unchanged. +message HttpBody { + // The HTTP Content-Type string representing the content type of the body. + string content_type = 1; + + // HTTP body binary data. + bytes data = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/label.proto b/handwritten/nodejs-datastore/protos/google/api/label.proto new file mode 100644 index 00000000000..ec2c14f0c35 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/label.proto @@ -0,0 +1,49 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/label;label"; +option java_multiple_files = true; +option java_outer_classname = "LabelProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// A description of a label. +message LabelDescriptor { + // Value types that can be used as label values. + enum ValueType { + // A variable-length string. This is the default. + STRING = 0; + + // Boolean; true or false. + BOOL = 1; + + // A 64-bit signed integer. + INT64 = 2; + } + + // The label key. + string key = 1; + + // The type of data that can be assigned to the label. + ValueType value_type = 2; + + // A human-readable description for the label. + string description = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/log.proto b/handwritten/nodejs-datastore/protos/google/api/log.proto new file mode 100644 index 00000000000..d64f2439581 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/log.proto @@ -0,0 +1,55 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/label.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "LogProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// A description of a log type. Example in YAML format: +// +// - name: library.googleapis.com/activity_history +// description: The history of borrowing and returning library items. +// display_name: Activity +// labels: +// - key: /customer_id +// description: Identifier of a library customer +message LogDescriptor { + // The name of the log. It must be less than 512 characters long and can + // include the following characters: upper- and lower-case alphanumeric + // characters [A-Za-z0-9], and punctuation characters including + // slash, underscore, hyphen, period [/_-.]. + string name = 1; + + // The set of labels that are available to describe a specific log entry. + // Runtime requests that contain labels not specified here are + // considered invalid. + repeated LabelDescriptor labels = 2; + + // A human-readable description of this log. This information appears in + // the documentation and can contain details. + string description = 3; + + // The human-readable name for this log. This information appears on + // the user interface and should be concise. + string display_name = 4; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/logging.proto b/handwritten/nodejs-datastore/protos/google/api/logging.proto new file mode 100644 index 00000000000..15c8a996e97 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/logging.proto @@ -0,0 +1,83 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "LoggingProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Logging configuration of the service. +// +// The following example shows how to configure logs to be sent to the +// producer and consumer projects. In the example, the `activity_history` +// log is sent to both the producer and consumer projects, whereas the +// `purchase_history` log is only sent to the producer project. +// +// monitored_resources: +// - type: library.googleapis.com/branch +// labels: +// - key: /city +// description: The city where the library branch is located in. +// - key: /name +// description: The name of the branch. +// logs: +// - name: activity_history +// labels: +// - key: /customer_id +// - name: purchase_history +// logging: +// producer_destinations: +// - monitored_resource: library.googleapis.com/branch +// logs: +// - activity_history +// - purchase_history +// consumer_destinations: +// - monitored_resource: library.googleapis.com/branch +// logs: +// - activity_history +message Logging { + // Configuration of a specific logging destination (the producer project + // or the consumer project). + message LoggingDestination { + // The monitored resource type. The type must be defined in the + // [Service.monitored_resources][google.api.Service.monitored_resources] section. + string monitored_resource = 3; + + // Names of the logs to be sent to this destination. Each name must + // be defined in the [Service.logs][google.api.Service.logs] section. If the log name is + // not a domain scoped name, it will be automatically prefixed with + // the service name followed by "/". + repeated string logs = 1; + } + + // Logging configurations for sending logs to the producer project. + // There can be multiple producer destinations, each one must have a + // different monitored resource type. A log can be used in at most + // one producer destination. + repeated LoggingDestination producer_destinations = 1; + + // Logging configurations for sending logs to the consumer project. + // There can be multiple consumer destinations, each one must have a + // different monitored resource type. A log can be used in at most + // one consumer destination. + repeated LoggingDestination consumer_destinations = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/metric.proto b/handwritten/nodejs-datastore/protos/google/api/metric.proto new file mode 100644 index 00000000000..17b7263a334 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/metric.proto @@ -0,0 +1,196 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/label.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/metric;metric"; +option java_multiple_files = true; +option java_outer_classname = "MetricProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Defines a metric type and its schema. Once a metric descriptor is created, +// deleting or altering it stops data collection and makes the metric type's +// existing data unusable. +message MetricDescriptor { + // The kind of measurement. It describes how the data is reported. + enum MetricKind { + // Do not use this default value. + METRIC_KIND_UNSPECIFIED = 0; + + // An instantaneous measurement of a value. + GAUGE = 1; + + // The change in a value during a time interval. + DELTA = 2; + + // A value accumulated over a time interval. Cumulative + // measurements in a time series should have the same start time + // and increasing end times, until an event resets the cumulative + // value to zero and sets a new start time for the following + // points. + CUMULATIVE = 3; + } + + // The value type of a metric. + enum ValueType { + // Do not use this default value. + VALUE_TYPE_UNSPECIFIED = 0; + + // The value is a boolean. + // This value type can be used only if the metric kind is `GAUGE`. + BOOL = 1; + + // The value is a signed 64-bit integer. + INT64 = 2; + + // The value is a double precision floating point number. + DOUBLE = 3; + + // The value is a text string. + // This value type can be used only if the metric kind is `GAUGE`. + STRING = 4; + + // The value is a [`Distribution`][google.api.Distribution]. + DISTRIBUTION = 5; + + // The value is money. + MONEY = 6; + } + + // The resource name of the metric descriptor. Depending on the + // implementation, the name typically includes: (1) the parent resource name + // that defines the scope of the metric type or of its data; and (2) the + // metric's URL-encoded type, which also appears in the `type` field of this + // descriptor. For example, following is the resource name of a custom + // metric within the GCP project `my-project-id`: + // + // "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount" + string name = 1; + + // The metric type, including its DNS name prefix. The type is not + // URL-encoded. All user-defined custom metric types have the DNS name + // `custom.googleapis.com`. Metric types should use a natural hierarchical + // grouping. For example: + // + // "custom.googleapis.com/invoice/paid/amount" + // "appengine.googleapis.com/http/server/response_latencies" + string type = 8; + + // The set of labels that can be used to describe a specific + // instance of this metric type. For example, the + // `appengine.googleapis.com/http/server/response_latencies` metric + // type has a label for the HTTP response code, `response_code`, so + // you can look at latencies for successful responses or just + // for responses that failed. + repeated LabelDescriptor labels = 2; + + // Whether the metric records instantaneous values, changes to a value, etc. + // Some combinations of `metric_kind` and `value_type` might not be supported. + MetricKind metric_kind = 3; + + // Whether the measurement is an integer, a floating-point number, etc. + // Some combinations of `metric_kind` and `value_type` might not be supported. + ValueType value_type = 4; + + // The unit in which the metric value is reported. It is only applicable + // if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The + // supported units are a subset of [The Unified Code for Units of + // Measure](http://unitsofmeasure.org/ucum.html) standard: + // + // **Basic units (UNIT)** + // + // * `bit` bit + // * `By` byte + // * `s` second + // * `min` minute + // * `h` hour + // * `d` day + // + // **Prefixes (PREFIX)** + // + // * `k` kilo (10**3) + // * `M` mega (10**6) + // * `G` giga (10**9) + // * `T` tera (10**12) + // * `P` peta (10**15) + // * `E` exa (10**18) + // * `Z` zetta (10**21) + // * `Y` yotta (10**24) + // * `m` milli (10**-3) + // * `u` micro (10**-6) + // * `n` nano (10**-9) + // * `p` pico (10**-12) + // * `f` femto (10**-15) + // * `a` atto (10**-18) + // * `z` zepto (10**-21) + // * `y` yocto (10**-24) + // * `Ki` kibi (2**10) + // * `Mi` mebi (2**20) + // * `Gi` gibi (2**30) + // * `Ti` tebi (2**40) + // + // **Grammar** + // + // The grammar includes the dimensionless unit `1`, such as `1/s`. + // + // The grammar also includes these connectors: + // + // * `/` division (as an infix operator, e.g. `1/s`). + // * `.` multiplication (as an infix operator, e.g. `GBy.d`) + // + // The grammar for a unit is as follows: + // + // Expression = Component { "." Component } { "/" Component } ; + // + // Component = [ PREFIX ] UNIT [ Annotation ] + // | Annotation + // | "1" + // ; + // + // Annotation = "{" NAME "}" ; + // + // Notes: + // + // * `Annotation` is just a comment if it follows a `UNIT` and is + // equivalent to `1` if it is used alone. For examples, + // `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. + // * `NAME` is a sequence of non-blank printable ASCII characters not + // containing '{' or '}'. + string unit = 5; + + // A detailed description of the metric, which can be used in documentation. + string description = 6; + + // A concise name for the metric, which can be displayed in user interfaces. + // Use sentence case without an ending period, for example "Request count". + string display_name = 7; +} + +// A specific metric, identified by specifying values for all of the +// labels of a [`MetricDescriptor`][google.api.MetricDescriptor]. +message Metric { + // An existing metric type, see [google.api.MetricDescriptor][google.api.MetricDescriptor]. + // For example, `custom.googleapis.com/invoice/paid/amount`. + string type = 3; + + // The set of label values that uniquely identify this metric. All + // labels listed in the `MetricDescriptor` must be assigned values. + map labels = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto b/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto new file mode 100644 index 00000000000..612ffa18da4 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto @@ -0,0 +1,91 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/label.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/monitoredres;monitoredres"; +option java_multiple_files = true; +option java_outer_classname = "MonitoredResourceProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// An object that describes the schema of a [MonitoredResource][google.api.MonitoredResource] object using a +// type name and a set of labels. For example, the monitored resource +// descriptor for Google Compute Engine VM instances has a type of +// `"gce_instance"` and specifies the use of the labels `"instance_id"` and +// `"zone"` to identify particular VM instances. +// +// Different APIs can support different monitored resource types. APIs generally +// provide a `list` method that returns the monitored resource descriptors used +// by the API. +message MonitoredResourceDescriptor { + // Optional. The resource name of the monitored resource descriptor: + // `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where + // {type} is the value of the `type` field in this object and + // {project_id} is a project ID that provides API-specific context for + // accessing the type. APIs that do not use project information can use the + // resource name format `"monitoredResourceDescriptors/{type}"`. + string name = 5; + + // Required. The monitored resource type. For example, the type + // `"cloudsql_database"` represents databases in Google Cloud SQL. + // The maximum length of this value is 256 characters. + string type = 1; + + // Optional. A concise name for the monitored resource type that might be + // displayed in user interfaces. It should be a Title Cased Noun Phrase, + // without any article or other determiners. For example, + // `"Google Cloud SQL Database"`. + string display_name = 2; + + // Optional. A detailed description of the monitored resource type that might + // be used in documentation. + string description = 3; + + // Required. A set of labels used to describe instances of this monitored + // resource type. For example, an individual Google Cloud SQL database is + // identified by values for the labels `"database_id"` and `"zone"`. + repeated LabelDescriptor labels = 4; +} + +// An object representing a resource that can be used for monitoring, logging, +// billing, or other purposes. Examples include virtual machine instances, +// databases, and storage devices such as disks. The `type` field identifies a +// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object that describes the resource's +// schema. Information in the `labels` field identifies the actual resource and +// its attributes according to the schema. For example, a particular Compute +// Engine VM instance could be represented by the following object, because the +// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] for `"gce_instance"` has labels +// `"instance_id"` and `"zone"`: +// +// { "type": "gce_instance", +// "labels": { "instance_id": "12345678901234", +// "zone": "us-central1-a" }} +message MonitoredResource { + // Required. The monitored resource type. This field must match + // the `type` field of a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object. For + // example, the type of a Cloud SQL database is `"cloudsql_database"`. + string type = 1; + + // Required. Values for all of the labels listed in the associated monitored + // resource descriptor. For example, Cloud SQL databases use the labels + // `"database_id"` and `"zone"`. + map labels = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/monitoring.proto b/handwritten/nodejs-datastore/protos/google/api/monitoring.proto new file mode 100644 index 00000000000..f49c85f85ee --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/monitoring.proto @@ -0,0 +1,89 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "MonitoringProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Monitoring configuration of the service. +// +// The example below shows how to configure monitored resources and metrics +// for monitoring. In the example, a monitored resource and two metrics are +// defined. The `library.googleapis.com/book/returned_count` metric is sent +// to both producer and consumer projects, whereas the +// `library.googleapis.com/book/overdue_count` metric is only sent to the +// consumer project. +// +// monitored_resources: +// - type: library.googleapis.com/branch +// labels: +// - key: /city +// description: The city where the library branch is located in. +// - key: /name +// description: The name of the branch. +// metrics: +// - name: library.googleapis.com/book/returned_count +// metric_kind: DELTA +// value_type: INT64 +// labels: +// - key: /customer_id +// - name: library.googleapis.com/book/overdue_count +// metric_kind: GAUGE +// value_type: INT64 +// labels: +// - key: /customer_id +// monitoring: +// producer_destinations: +// - monitored_resource: library.googleapis.com/branch +// metrics: +// - library.googleapis.com/book/returned_count +// consumer_destinations: +// - monitored_resource: library.googleapis.com/branch +// metrics: +// - library.googleapis.com/book/returned_count +// - library.googleapis.com/book/overdue_count +message Monitoring { + // Configuration of a specific monitoring destination (the producer project + // or the consumer project). + message MonitoringDestination { + // The monitored resource type. The type must be defined in + // [Service.monitored_resources][google.api.Service.monitored_resources] section. + string monitored_resource = 1; + + // Names of the metrics to report to this monitoring destination. + // Each name must be defined in [Service.metrics][google.api.Service.metrics] section. + repeated string metrics = 2; + } + + // Monitoring configurations for sending metrics to the producer project. + // There can be multiple producer destinations, each one must have a + // different monitored resource type. A metric can be used in at most + // one producer destination. + repeated MonitoringDestination producer_destinations = 1; + + // Monitoring configurations for sending metrics to the consumer project. + // There can be multiple consumer destinations, each one must have a + // different monitored resource type. A metric can be used in at most + // one consumer destination. + repeated MonitoringDestination consumer_destinations = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/quota.proto b/handwritten/nodejs-datastore/protos/google/api/quota.proto new file mode 100644 index 00000000000..aa327a19694 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/quota.proto @@ -0,0 +1,259 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "QuotaProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Quota configuration helps to achieve fairness and budgeting in service +// usage. +// +// The quota configuration works this way: +// - The service configuration defines a set of metrics. +// - For API calls, the quota.metric_rules maps methods to metrics with +// corresponding costs. +// - The quota.limits defines limits on the metrics, which will be used for +// quota checks at runtime. +// +// An example quota configuration in yaml format: +// +// quota: +// limits: +// +// - name: apiWriteQpsPerProject +// metric: library.googleapis.com/write_calls +// unit: "1/min/{project}" # rate limit for consumer projects +// values: +// STANDARD: 10000 +// +// # The metric rules bind all methods to the read_calls metric, +// # except for the UpdateBook and DeleteBook methods. These two methods +// # are mapped to the write_calls metric, with the UpdateBook method +// # consuming at twice rate as the DeleteBook method. +// metric_rules: +// - selector: "*" +// metric_costs: +// library.googleapis.com/read_calls: 1 +// - selector: google.example.library.v1.LibraryService.UpdateBook +// metric_costs: +// library.googleapis.com/write_calls: 2 +// - selector: google.example.library.v1.LibraryService.DeleteBook +// metric_costs: +// library.googleapis.com/write_calls: 1 +// +// Corresponding Metric definition: +// +// metrics: +// - name: library.googleapis.com/read_calls +// display_name: Read requests +// metric_kind: DELTA +// value_type: INT64 +// +// - name: library.googleapis.com/write_calls +// display_name: Write requests +// metric_kind: DELTA +// value_type: INT64 +// +message Quota { + // List of `QuotaLimit` definitions for the service. + // + // Used by metric-based quotas only. + repeated QuotaLimit limits = 3; + + // List of `MetricRule` definitions, each one mapping a selected method to one + // or more metrics. + // + // Used by metric-based quotas only. + repeated MetricRule metric_rules = 4; +} + +// Bind API methods to metrics. Binding a method to a metric causes that +// metric's configured quota, billing, and monitoring behaviors to apply to the +// method call. +// +// Used by metric-based quotas only. +message MetricRule { + // Selects the methods to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. + string selector = 1; + + // Metrics to update when the selected methods are called, and the associated + // cost applied to each metric. + // + // The key of the map is the metric name, and the values are the amount + // increased for the metric against which the quota limits are defined. + // The value must not be negative. + map metric_costs = 2; +} + +// `QuotaLimit` defines a specific limit that applies over a specified duration +// for a limit type. There can be at most one limit for a duration and limit +// type combination defined within a `QuotaGroup`. +message QuotaLimit { + // Name of the quota limit. The name is used to refer to the limit when + // overriding the default limit on per-consumer basis. + // + // For group-based quota limits, the name must be unique within the quota + // group. If a name is not provided, it will be generated from the limit_by + // and duration fields. + // + // For metric-based quota limits, the name must be provided, and it must be + // unique within the service. The name can only include alphanumeric + // characters as well as '-'. + // + // The maximum length of the limit name is 64 characters. + // + // The name of a limit is used as a unique identifier for this limit. + // Therefore, once a limit has been put into use, its name should be + // immutable. You can use the display_name field to provide a user-friendly + // name for the limit. The display name can be evolved over time without + // affecting the identity of the limit. + string name = 6; + + // Optional. User-visible, extended description for this quota limit. + // Should be used only when more context is needed to understand this limit + // than provided by the limit's display name (see: `display_name`). + string description = 2; + + // Default number of tokens that can be consumed during the specified + // duration. This is the number of tokens assigned when a client + // application developer activates the service for his/her project. + // + // Specifying a value of 0 will block all requests. This can be used if you + // are provisioning quota to selected consumers and blocking others. + // Similarly, a value of -1 will indicate an unlimited quota. No other + // negative values are allowed. + // + // Used by group-based quotas only. + int64 default_limit = 3; + + // Maximum number of tokens that can be consumed during the specified + // duration. Client application developers can override the default limit up + // to this maximum. If specified, this value cannot be set to a value less + // than the default limit. If not specified, it is set to the default limit. + // + // To allow clients to apply overrides with no upper bound, set this to -1, + // indicating unlimited maximum quota. + // + // Used by group-based quotas only. + int64 max_limit = 4; + + // Free tier value displayed in the Developers Console for this limit. + // The free tier is the number of tokens that will be subtracted from the + // billed amount when billing is enabled. + // This field can only be set on a limit with duration "1d", in a billable + // group; it is invalid on any other limit. If this field is not set, it + // defaults to 0, indicating that there is no free tier for this service. + // + // Used by group-based quotas only. + int64 free_tier = 7; + + // Duration of this limit in textual notation. Example: "100s", "24h", "1d". + // For duration longer than a day, only multiple of days is supported. We + // support only "100s" and "1d" for now. Additional support will be added in + // the future. "0" indicates indefinite duration. + // + // Used by group-based quotas only. + string duration = 5; + + // The name of the metric this quota limit applies to. The quota limits with + // the same metric will be checked together during runtime. The metric must be + // defined within the service config. + // + // Used by metric-based quotas only. + string metric = 8; + + // Specify the unit of the quota limit. It uses the same syntax as + // [Metric.unit][]. The supported unit kinds are determined by the quota + // backend system. + // + // The [Google Service Control](https://cloud.google.com/service-control) + // supports the following unit components: + // * One of the time intevals: + // * "/min" for quota every minute. + // * "/d" for quota every 24 hours, starting 00:00 US Pacific Time. + // * Otherwise the quota won't be reset by time, such as storage limit. + // * One and only one of the granted containers: + // * "/{organization}" quota for an organization. + // * "/{project}" quota for a project. + // * "/{folder}" quota for a folder. + // * "/{resource}" quota for a universal resource. + // * Zero or more quota segmentation dimension. Not all combos are valid. + // * "/{region}" quota for every region. Not to be used with time intervals. + // * Otherwise the resources granted on the target is not segmented. + // * "/{zone}" quota for every zone. Not to be used with time intervals. + // * Otherwise the resources granted on the target is not segmented. + // * "/{resource}" quota for a resource associated with a project or org. + // + // Here are some examples: + // * "1/min/{project}" for quota per minute per project. + // * "1/min/{user}" for quota per minute per user. + // * "1/min/{organization}" for quota per minute per organization. + // + // Note: the order of unit components is insignificant. + // The "1" at the beginning is required to follow the metric unit syntax. + // + // Used by metric-based quotas only. + string unit = 9; + + // Tiered limit values. Also allows for regional or zone overrides for these + // values if "/{region}" or "/{zone}" is specified in the unit field. + // + // Currently supported tiers from low to high: + // VERY_LOW, LOW, STANDARD, HIGH, VERY_HIGH + // + // To apply different limit values for users according to their tiers, specify + // the values for the tiers you want to differentiate. For example: + // {LOW:100, STANDARD:500, HIGH:1000, VERY_HIGH:5000} + // + // The limit value for each tier is optional except for the tier STANDARD. + // The limit value for an unspecified tier falls to the value of its next + // tier towards tier STANDARD. For the above example, the limit value for tier + // STANDARD is 500. + // + // To apply the same limit value for all users, just specify limit value for + // tier STANDARD. For example: {STANDARD:500}. + // + // To apply a regional overide for a tier, add a map entry with key + // "/", where is a region name. Similarly, for a zone + // override, add a map entry with key "/{zone}". + // Further, a wildcard can be used at the end of a zone name in order to + // specify zone level overrides. For example: + // LOW: 10, STANDARD: 50, HIGH: 100, + // LOW/us-central1: 20, STANDARD/us-central1: 60, HIGH/us-central1: 200, + // LOW/us-central1-*: 10, STANDARD/us-central1-*: 20, HIGH/us-central1-*: 80 + // + // The regional overrides tier set for each region must be the same as + // the tier set for default limit values. Same rule applies for zone overrides + // tier as well. + // + // Used by metric-based quotas only. + map values = 10; + + // User-visible display name for this limit. + // Optional. If not set, the UI will provide a default display name based on + // the quota configuration. This field can be used to override the default + // display name generated from the configuration. + string display_name = 12; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/service.proto b/handwritten/nodejs-datastore/protos/google/api/service.proto new file mode 100644 index 00000000000..04c7fd700b1 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/service.proto @@ -0,0 +1,176 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; +import "google/api/auth.proto"; +import "google/api/backend.proto"; +import "google/api/context.proto"; +import "google/api/control.proto"; +import "google/api/documentation.proto"; +import "google/api/endpoint.proto"; +import "google/api/experimental/experimental.proto"; +import "google/api/http.proto"; +import "google/api/label.proto"; +import "google/api/log.proto"; +import "google/api/logging.proto"; +import "google/api/metric.proto"; +import "google/api/monitored_resource.proto"; +import "google/api/monitoring.proto"; +import "google/api/quota.proto"; +import "google/api/source_info.proto"; +import "google/api/system_parameter.proto"; +import "google/api/usage.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/api.proto"; +import "google/protobuf/type.proto"; +import "google/protobuf/wrappers.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "ServiceProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// `Service` is the root object of Google service configuration schema. It +// describes basic information about a service, such as the name and the +// title, and delegates other aspects to sub-sections. Each sub-section is +// either a proto message or a repeated proto message that configures a +// specific aspect, such as auth. See each proto message definition for details. +// +// Example: +// +// type: google.api.Service +// config_version: 3 +// name: calendar.googleapis.com +// title: Google Calendar API +// apis: +// - name: google.calendar.v3.Calendar +// authentication: +// providers: +// - id: google_calendar_auth +// jwks_uri: https://www.googleapis.com/oauth2/v1/certs +// issuer: https://securetoken.google.com +// rules: +// - selector: "*" +// requirements: +// provider_id: google_calendar_auth +message Service { + // The version of the service configuration. The config version may + // influence interpretation of the configuration, for example, to + // determine defaults. This is documented together with applicable + // options. The current default for the config version itself is `3`. + google.protobuf.UInt32Value config_version = 20; + + // The DNS address at which this service is available, + // e.g. `calendar.googleapis.com`. + string name = 1; + + // A unique ID for a specific instance of this message, typically assigned + // by the client for tracking purpose. If empty, the server may choose to + // generate one instead. + string id = 33; + + // The product title associated with this service. + string title = 2; + + // The id of the Google developer project that owns the service. + // Members of this project can manage the service configuration, + // manage consumption of the service, etc. + string producer_project_id = 22; + + // A list of API interfaces exported by this service. Only the `name` field + // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration + // author, as the remaining fields will be derived from the IDL during the + // normalization process. It is an error to specify an API interface here + // which cannot be resolved against the associated IDL files. + repeated google.protobuf.Api apis = 3; + + // A list of all proto message types included in this API service. + // Types referenced directly or indirectly by the `apis` are + // automatically included. Messages which are not referenced but + // shall be included, such as types used by the `google.protobuf.Any` type, + // should be listed here by name. Example: + // + // types: + // - name: google.protobuf.Int32 + repeated google.protobuf.Type types = 4; + + // A list of all enum types included in this API service. Enums + // referenced directly or indirectly by the `apis` are automatically + // included. Enums which are not referenced but shall be included + // should be listed here by name. Example: + // + // enums: + // - name: google.someapi.v1.SomeEnum + repeated google.protobuf.Enum enums = 5; + + // Additional API documentation. + Documentation documentation = 6; + + // API backend configuration. + Backend backend = 8; + + // HTTP configuration. + Http http = 9; + + // Quota configuration. + Quota quota = 10; + + // Auth configuration. + Authentication authentication = 11; + + // Context configuration. + Context context = 12; + + // Configuration controlling usage of this service. + Usage usage = 15; + + // Configuration for network endpoints. If this is empty, then an endpoint + // with the same name as the service is automatically generated to service all + // defined APIs. + repeated Endpoint endpoints = 18; + + // Configuration for the service control plane. + Control control = 21; + + // Defines the logs used by this service. + repeated LogDescriptor logs = 23; + + // Defines the metrics used by this service. + repeated MetricDescriptor metrics = 24; + + // Defines the monitored resources used by this service. This is required + // by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations. + repeated MonitoredResourceDescriptor monitored_resources = 25; + + // Logging configuration. + Logging logging = 27; + + // Monitoring configuration. + Monitoring monitoring = 28; + + // System parameter configuration. + SystemParameters system_parameters = 29; + + // Output only. The source information for this configuration if available. + SourceInfo source_info = 37; + + // Experimental configuration. + Experimental experimental = 101; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto new file mode 100644 index 00000000000..4fa31cf4c26 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto @@ -0,0 +1,95 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +import "google/api/annotations.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "CheckErrorProto"; +option java_package = "com.google.api.servicecontrol.v1"; + + +// Defines the errors to be returned in +// [google.api.servicecontrol.v1.CheckResponse.check_errors][google.api.servicecontrol.v1.CheckResponse.check_errors]. +message CheckError { + // Error codes for Check responses. + enum Code { + // This is never used in `CheckResponse`. + ERROR_CODE_UNSPECIFIED = 0; + + // The consumer's project id was not found. + // Same as [google.rpc.Code.NOT_FOUND][]. + NOT_FOUND = 5; + + // The consumer doesn't have access to the specified resource. + // Same as [google.rpc.Code.PERMISSION_DENIED][]. + PERMISSION_DENIED = 7; + + // Quota check failed. Same as [google.rpc.Code.RESOURCE_EXHAUSTED][]. + RESOURCE_EXHAUSTED = 8; + + // The consumer hasn't activated the service. + SERVICE_NOT_ACTIVATED = 104; + + // The consumer cannot access the service because billing is disabled. + BILLING_DISABLED = 107; + + // The consumer's project has been marked as deleted (soft deletion). + PROJECT_DELETED = 108; + + // The consumer's project number or id does not represent a valid project. + PROJECT_INVALID = 114; + + // The IP address of the consumer is invalid for the specific consumer + // project. + IP_ADDRESS_BLOCKED = 109; + + // The referer address of the consumer request is invalid for the specific + // consumer project. + REFERER_BLOCKED = 110; + + // The client application of the consumer request is invalid for the + // specific consumer project. + CLIENT_APP_BLOCKED = 111; + + // The consumer's API key is invalid. + API_KEY_INVALID = 105; + + // The consumer's API Key has expired. + API_KEY_EXPIRED = 112; + + // The consumer's API Key was not found in config record. + API_KEY_NOT_FOUND = 113; + + // The backend server for looking up project id/number is unavailable. + NAMESPACE_LOOKUP_UNAVAILABLE = 300; + + // The backend server for checking service status is unavailable. + SERVICE_STATUS_UNAVAILABLE = 301; + + // The backend server for checking billing status is unavailable. + BILLING_STATUS_UNAVAILABLE = 302; + } + + // The error code. + Code code = 1; + + // Free-form text providing details on the error cause of the error. + string detail = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto new file mode 100644 index 00000000000..93ec2e4d675 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto @@ -0,0 +1,159 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "DistributionProto"; +option java_package = "com.google.api.servicecontrol.v1"; + + +// Distribution represents a frequency distribution of double-valued sample +// points. It contains the size of the population of sample points plus +// additional optional information: +// +// - the arithmetic mean of the samples +// - the minimum and maximum of the samples +// - the sum-squared-deviation of the samples, used to compute variance +// - a histogram of the values of the sample points +message Distribution { + // Describing buckets with constant width. + message LinearBuckets { + // The number of finite buckets. With the underflow and overflow buckets, + // the total number of buckets is `num_finite_buckets` + 2. + // See comments on `bucket_options` for details. + int32 num_finite_buckets = 1; + + // The i'th linear bucket covers the interval + // [offset + (i-1) * width, offset + i * width) + // where i ranges from 1 to num_finite_buckets, inclusive. + // Must be strictly positive. + double width = 2; + + // The i'th linear bucket covers the interval + // [offset + (i-1) * width, offset + i * width) + // where i ranges from 1 to num_finite_buckets, inclusive. + double offset = 3; + } + + // Describing buckets with exponentially growing width. + message ExponentialBuckets { + // The number of finite buckets. With the underflow and overflow buckets, + // the total number of buckets is `num_finite_buckets` + 2. + // See comments on `bucket_options` for details. + int32 num_finite_buckets = 1; + + // The i'th exponential bucket covers the interval + // [scale * growth_factor^(i-1), scale * growth_factor^i) + // where i ranges from 1 to num_finite_buckets inclusive. + // Must be larger than 1.0. + double growth_factor = 2; + + // The i'th exponential bucket covers the interval + // [scale * growth_factor^(i-1), scale * growth_factor^i) + // where i ranges from 1 to num_finite_buckets inclusive. + // Must be > 0. + double scale = 3; + } + + // Describing buckets with arbitrary user-provided width. + message ExplicitBuckets { + // 'bound' is a list of strictly increasing boundaries between + // buckets. Note that a list of length N-1 defines N buckets because + // of fenceposting. See comments on `bucket_options` for details. + // + // The i'th finite bucket covers the interval + // [bound[i-1], bound[i]) + // where i ranges from 1 to bound_size() - 1. Note that there are no + // finite buckets at all if 'bound' only contains a single element; in + // that special case the single bound defines the boundary between the + // underflow and overflow buckets. + // + // bucket number lower bound upper bound + // i == 0 (underflow) -inf bound[i] + // 0 < i < bound_size() bound[i-1] bound[i] + // i == bound_size() (overflow) bound[i-1] +inf + repeated double bounds = 1; + } + + // The total number of samples in the distribution. Must be >= 0. + int64 count = 1; + + // The arithmetic mean of the samples in the distribution. If `count` is + // zero then this field must be zero. + double mean = 2; + + // The minimum of the population of values. Ignored if `count` is zero. + double minimum = 3; + + // The maximum of the population of values. Ignored if `count` is zero. + double maximum = 4; + + // The sum of squared deviations from the mean: + // Sum[i=1..count]((x_i - mean)^2) + // where each x_i is a sample values. If `count` is zero then this field + // must be zero, otherwise validation of the request fails. + double sum_of_squared_deviation = 5; + + // The number of samples in each histogram bucket. `bucket_counts` are + // optional. If present, they must sum to the `count` value. + // + // The buckets are defined below in `bucket_option`. There are N buckets. + // `bucket_counts[0]` is the number of samples in the underflow bucket. + // `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples + // in each of the finite buckets. And `bucket_counts[N] is the number + // of samples in the overflow bucket. See the comments of `bucket_option` + // below for more details. + // + // Any suffix of trailing zeros may be omitted. + repeated int64 bucket_counts = 6; + + // Defines the buckets in the histogram. `bucket_option` and `bucket_counts` + // must be both set, or both unset. + // + // Buckets are numbered the the range of [0, N], with a total of N+1 buckets. + // There must be at least two buckets (a single-bucket histogram gives + // no information that isn't already provided by `count`). + // + // The first bucket is the underflow bucket which has a lower bound + // of -inf. The last bucket is the overflow bucket which has an + // upper bound of +inf. All other buckets (if any) are called "finite" + // buckets because they have finite lower and upper bounds. As described + // below, there are three ways to define the finite buckets. + // + // (1) Buckets with constant width. + // (2) Buckets with exponentially growing widths. + // (3) Buckets with arbitrary user-provided widths. + // + // In all cases, the buckets cover the entire real number line (-inf, + // +inf). Bucket upper bounds are exclusive and lower bounds are + // inclusive. The upper bound of the underflow bucket is equal to the + // lower bound of the smallest finite bucket; the lower bound of the + // overflow bucket is equal to the upper bound of the largest finite + // bucket. + oneof bucket_option { + // Buckets with constant width. + LinearBuckets linear_buckets = 7; + + // Buckets with exponentially growing width. + ExponentialBuckets exponential_buckets = 8; + + // Buckets with arbitrary user-provided width. + ExplicitBuckets explicit_buckets = 9; + } +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto new file mode 100644 index 00000000000..fddb9851eca --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto @@ -0,0 +1,67 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +import "google/api/annotations.proto"; +import "google/logging/type/log_severity.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "LogEntryProto"; +option java_package = "com.google.api.servicecontrol.v1"; + + +// An individual log entry. +message LogEntry { + // Required. The log to which this log entry belongs. Examples: `"syslog"`, + // `"book_log"`. + string name = 10; + + // The time the event described by the log entry occurred. If + // omitted, defaults to operation start time. + google.protobuf.Timestamp timestamp = 11; + + // The severity of the log entry. The default value is + // `LogSeverity.DEFAULT`. + google.logging.type.LogSeverity severity = 12; + + // A unique ID for the log entry used for deduplication. If omitted, + // the implementation will generate one based on operation_id. + string insert_id = 4; + + // A set of user-defined (key, value) data that provides additional + // information about the log entry. + map labels = 13; + + // The log entry payload, which can be one of multiple types. + oneof payload { + // The log entry payload, represented as a protocol buffer that is + // expressed as a JSON object. You can only pass `protoPayload` + // values that belong to a set of approved types. + google.protobuf.Any proto_payload = 2; + + // The log entry payload, represented as a Unicode string (UTF-8). + string text_payload = 3; + + // The log entry payload, represented as a structure that + // is expressed as a JSON object. + google.protobuf.Struct struct_payload = 6; + } +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto new file mode 100644 index 00000000000..d5e5803b7a0 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto @@ -0,0 +1,78 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +import "google/api/annotations.proto"; +import "google/api/servicecontrol/v1/distribution.proto"; +import "google/protobuf/timestamp.proto"; +import "google/type/money.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "MetricValueSetProto"; +option java_package = "com.google.api.servicecontrol.v1"; + + +// Represents a single metric value. +message MetricValue { + // The labels describing the metric value. + // See comments on [google.api.servicecontrol.v1.Operation.labels][google.api.servicecontrol.v1.Operation.labels] for + // the overriding relationship. + map labels = 1; + + // The start of the time period over which this metric value's measurement + // applies. The time period has different semantics for different metric + // types (cumulative, delta, and gauge). See the metric definition + // documentation in the service configuration for details. + google.protobuf.Timestamp start_time = 2; + + // The end of the time period over which this metric value's measurement + // applies. + google.protobuf.Timestamp end_time = 3; + + // The value. The type of value used in the request must + // agree with the metric definition in the service configuration, otherwise + // the MetricValue is rejected. + oneof value { + // A boolean value. + bool bool_value = 4; + + // A signed 64-bit integer value. + int64 int64_value = 5; + + // A double precision floating point value. + double double_value = 6; + + // A text string value. + string string_value = 7; + + // A distribution value. + Distribution distribution_value = 8; + } +} + +// Represents a set of metric values in the same metric. +// Each metric value in the set should have a unique combination of start time, +// end time, and label values. +message MetricValueSet { + // The metric name defined in the service configuration. + string metric_name = 1; + + // The values in this metric. + repeated MetricValue metric_values = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto new file mode 100644 index 00000000000..568108af539 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto @@ -0,0 +1,112 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +import "google/api/annotations.proto"; +import "google/api/servicecontrol/v1/log_entry.proto"; +import "google/api/servicecontrol/v1/metric_value.proto"; +import "google/protobuf/timestamp.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "OperationProto"; +option java_package = "com.google.api.servicecontrol.v1"; + + +// Represents information regarding an operation. +message Operation { + // Defines the importance of the data contained in the operation. + enum Importance { + // The API implementation may cache and aggregate the data. + // The data may be lost when rare and unexpected system failures occur. + LOW = 0; + + // The API implementation doesn't cache and aggregate the data. + // If the method returns successfully, it's guaranteed that the data has + // been persisted in durable storage. + HIGH = 1; + } + + // Identity of the operation. This must be unique within the scope of the + // service that generated the operation. If the service calls + // Check() and Report() on the same operation, the two calls should carry + // the same id. + // + // UUID version 4 is recommended, though not required. + // In scenarios where an operation is computed from existing information + // and an idempotent id is desirable for deduplication purpose, UUID version 5 + // is recommended. See RFC 4122 for details. + string operation_id = 1; + + // Fully qualified name of the operation. Reserved for future use. + string operation_name = 2; + + // Identity of the consumer who is using the service. + // This field should be filled in for the operations initiated by a + // consumer, but not for service-initiated operations that are + // not related to a specific consumer. + // + // This can be in one of the following formats: + // project:, + // project_number:, + // api_key:. + string consumer_id = 3; + + // Required. Start time of the operation. + google.protobuf.Timestamp start_time = 4; + + // End time of the operation. + // Required when the operation is used in [ServiceController.Report][google.api.servicecontrol.v1.ServiceController.Report], + // but optional when the operation is used in [ServiceController.Check][google.api.servicecontrol.v1.ServiceController.Check]. + google.protobuf.Timestamp end_time = 5; + + // Labels describing the operation. Only the following labels are allowed: + // + // - Labels describing monitored resources as defined in + // the service configuration. + // - Default labels of metric values. When specified, labels defined in the + // metric value override these default. + // - The following labels defined by Google Cloud Platform: + // - `cloud.googleapis.com/location` describing the location where the + // operation happened, + // - `servicecontrol.googleapis.com/user_agent` describing the user agent + // of the API request, + // - `servicecontrol.googleapis.com/service_agent` describing the service + // used to handle the API request (e.g. ESP), + // - `servicecontrol.googleapis.com/platform` describing the platform + // where the API is served (e.g. GAE, GCE, GKE). + map labels = 6; + + // Represents information about this operation. Each MetricValueSet + // corresponds to a metric defined in the service configuration. + // The data type used in the MetricValueSet must agree with + // the data type specified in the metric definition. + // + // Within a single operation, it is not allowed to have more than one + // MetricValue instances that have the same metric names and identical + // label value combinations. If a request has such duplicated MetricValue + // instances, the entire request is rejected with + // an invalid argument error. + repeated MetricValueSet metric_value_sets = 7; + + // Represents information to be logged. + repeated LogEntry log_entries = 8; + + // DO NOT USE. This is an experimental field. + Importance importance = 11; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto new file mode 100644 index 00000000000..2d0ec8e9fd7 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto @@ -0,0 +1,161 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicecontrol.v1; + +import "google/api/annotations.proto"; +import "google/api/servicecontrol/v1/check_error.proto"; +import "google/api/servicecontrol/v1/operation.proto"; +import "google/rpc/status.proto"; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; +option java_multiple_files = true; +option java_outer_classname = "ServiceControllerProto"; +option java_package = "com.google.api.servicecontrol.v1"; +option objc_class_prefix = "GASC"; + + +// [Google Service Control API](/service-control/overview) +// +// Lets clients check and report operations against +// a [managed service][google.api.servicemanagement.v1.ManagedService]. +service ServiceController { + // Checks an operation with Google Service Control to decide whether + // the given operation should proceed. It should be called before the + // operation is executed. + // + // If feasible, the client should cache the check results and reuse them for + // up to 60s. In case of server errors, the client may rely on the cached + // results for longer time. + // + // This method requires the `servicemanagement.services.check` permission + // on the specified service. For more information, see + // [Google Cloud IAM](https://cloud.google.com/iam). + rpc Check(CheckRequest) returns (CheckResponse) { + option (google.api.http) = { post: "/v1/services/{service_name}:check" body: "*" }; + } + + // Reports operations to Google Service Control. It should be called + // after the operation is completed. + // + // If feasible, the client should aggregate reporting data for up to 5s to + // reduce API traffic. Limiting aggregation to 5s is to reduce data loss + // during client crashes. Clients should carefully choose the aggregation + // window to avoid data loss risk more than 0.01% for business and + // compliance reasons. + // + // This method requires the `servicemanagement.services.report` permission + // on the specified service. For more information, see + // [Google Cloud IAM](https://cloud.google.com/iam). + rpc Report(ReportRequest) returns (ReportResponse) { + option (google.api.http) = { post: "/v1/services/{service_name}:report" body: "*" }; + } +} + +// Request message for the Check method. +message CheckRequest { + // The service name as specified in its service configuration. For example, + // `"pubsub.googleapis.com"`. + // + // See [google.api.Service][google.api.Service] for the definition of a service name. + string service_name = 1; + + // The operation to be checked. + Operation operation = 2; + + // Specifies which version of service configuration should be used to process + // the request. + // + // If unspecified or no matching version can be found, the + // latest one will be used. + string service_config_id = 4; +} + +// Response message for the Check method. +message CheckResponse { + // The same operation_id value used in the CheckRequest. + // Used for logging and diagnostics purposes. + string operation_id = 1; + + // Indicate the decision of the check. + // + // If no check errors are present, the service should process the operation. + // Otherwise the service should use the list of errors to determine the + // appropriate action. + repeated CheckError check_errors = 2; + + // The actual config id used to process the request. + string service_config_id = 5; +} + +// Request message for the Report method. +message ReportRequest { + // The service name as specified in its service configuration. For example, + // `"pubsub.googleapis.com"`. + // + // See [google.api.Service][google.api.Service] for the definition of a service name. + string service_name = 1; + + // Operations to be reported. + // + // Typically the service should report one operation per request. + // Putting multiple operations into a single request is allowed, but should + // be used only when multiple operations are natually available at the time + // of the report. + // + // If multiple operations are in a single request, the total request size + // should be no larger than 1MB. See [ReportResponse.report_errors][google.api.servicecontrol.v1.ReportResponse.report_errors] for + // partial failure behavior. + repeated Operation operations = 2; + + // Specifies which version of service config should be used to process the + // request. + // + // If unspecified or no matching version can be found, the + // latest one will be used. + string service_config_id = 3; +} + +// Response message for the Report method. +message ReportResponse { + // Represents the processing error of one `Operation` in the request. + message ReportError { + // The [Operation.operation_id][google.api.servicecontrol.v1.Operation.operation_id] value from the request. + string operation_id = 1; + + // Details of the error when processing the `Operation`. + google.rpc.Status status = 2; + } + + // Partial failures, one for each `Operation` in the request that failed + // processing. There are three possible combinations of the RPC status: + // + // 1. The combination of a successful RPC status and an empty `report_errors` + // list indicates a complete success where all `Operations` in the + // request are processed successfully. + // 2. The combination of a successful RPC status and a non-empty + // `report_errors` list indicates a partial success where some + // `Operations` in the request succeeded. Each + // `Operation` that failed processing has a corresponding item + // in this list. + // 3. A failed RPC status indicates a complete failure where none of the + // `Operations` in the request succeeded. + repeated ReportError report_errors = 1; + + // The actual config id used to process the request. + string service_config_id = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto new file mode 100644 index 00000000000..0d0f34d62ef --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto @@ -0,0 +1,286 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicemanagement.v1; + +import "google/api/annotations.proto"; +import "google/api/config_change.proto"; +import "google/api/service.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; +import "google/rpc/status.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/servicemanagement/v1;servicemanagement"; +option java_multiple_files = true; +option java_outer_classname = "ResourcesProto"; +option java_package = "com.google.api.servicemanagement.v1"; +option objc_class_prefix = "GASM"; + + +// The full representation of a Service that is managed by +// Google Service Management. +message ManagedService { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. + string service_name = 2; + + // ID of the project that produces and owns this service. + string producer_project_id = 3; +} + +// The metadata associated with a long running operation resource. +message OperationMetadata { + // Represents the status of one operation step. + message Step { + // The short description of the step. + string description = 2; + + // The status code. + Status status = 4; + } + + // Code describes the status of one operation step. + enum Status { + // Unspecifed code. + STATUS_UNSPECIFIED = 0; + + // The step has completed without errors. + DONE = 1; + + // The step has not started yet. + NOT_STARTED = 2; + + // The step is in progress. + IN_PROGRESS = 3; + + // The step has completed with errors. + FAILED = 4; + + // The step has completed with cancellation. + CANCELLED = 5; + } + + // The full name of the resources that this operation is directly + // associated with. + repeated string resource_names = 1; + + // Detailed status information for each step. The order is undetermined. + repeated Step steps = 2; + + // Percentage of completion of this operation, ranging from 0 to 100. + int32 progress_percentage = 3; + + // The start time of the operation. + google.protobuf.Timestamp start_time = 4; +} + +// Represents a diagnostic message (error or warning) +message Diagnostic { + // The kind of diagnostic information possible. + enum Kind { + // Warnings and errors + WARNING = 0; + + // Only errors + ERROR = 1; + } + + // File name and line number of the error or warning. + string location = 1; + + // The kind of diagnostic information provided. + Kind kind = 2; + + // Message describing the error or warning. + string message = 3; +} + +// Represents a source file which is used to generate the service configuration +// defined by `google.api.Service`. +message ConfigSource { + // A unique ID for a specific instance of this message, typically assigned + // by the client for tracking purpose. If empty, the server may choose to + // generate one instead. + string id = 5; + + // Set of source configuration files that are used to generate a service + // configuration (`google.api.Service`). + repeated ConfigFile files = 2; +} + +// Generic specification of a source configuration file +message ConfigFile { + enum FileType { + // Unknown file type. + FILE_TYPE_UNSPECIFIED = 0; + + // YAML-specification of service. + SERVICE_CONFIG_YAML = 1; + + // OpenAPI specification, serialized in JSON. + OPEN_API_JSON = 2; + + // OpenAPI specification, serialized in YAML. + OPEN_API_YAML = 3; + + // FileDescriptorSet, generated by protoc. + // + // To generate, use protoc with imports and source info included. + // For an example test.proto file, the following command would put the value + // in a new file named out.pb. + // + // $protoc --include_imports --include_source_info test.proto -o out.pb + FILE_DESCRIPTOR_SET_PROTO = 4; + } + + // The file name of the configuration file (full or relative path). + string file_path = 1; + + // The bytes that constitute the file. + bytes file_contents = 3; + + // The type of configuration file this represents. + FileType file_type = 4; +} + +// Represents a service configuration with its name and id. +message ConfigRef { + // Resource name of a service config. It must have the following + // format: "services/{service name}/configs/{config id}". + string name = 1; +} + +// Change report associated with a particular service configuration. +// +// It contains a list of ConfigChanges based on the comparison between +// two service configurations. +message ChangeReport { + // List of changes between two service configurations. + // The changes will be alphabetically sorted based on the identifier + // of each change. + // A ConfigChange identifier is a dot separated path to the configuration. + // Example: visibility.rules[selector='LibraryService.CreateBook'].restriction + repeated google.api.ConfigChange config_changes = 1; +} + +// A rollout resource that defines how service configuration versions are pushed +// to control plane systems. Typically, you create a new version of the +// service config, and then create a Rollout to push the service config. +message Rollout { + // Strategy that specifies how Google Service Control should select + // different + // versions of service configurations based on traffic percentage. + // + // One example of how to gradually rollout a new service configuration using + // this + // strategy: + // Day 1 + // + // Rollout { + // id: "example.googleapis.com/rollout_20160206" + // traffic_percent_strategy { + // percentages: { + // "example.googleapis.com/20160201": 70.00 + // "example.googleapis.com/20160206": 30.00 + // } + // } + // } + // + // Day 2 + // + // Rollout { + // id: "example.googleapis.com/rollout_20160207" + // traffic_percent_strategy: { + // percentages: { + // "example.googleapis.com/20160206": 100.00 + // } + // } + // } + message TrafficPercentStrategy { + // Maps service configuration IDs to their corresponding traffic percentage. + // Key is the service configuration ID, Value is the traffic percentage + // which must be greater than 0.0 and the sum must equal to 100.0. + map percentages = 1; + } + + // Strategy used to delete a service. This strategy is a placeholder only + // used by the system generated rollout to delete a service. + message DeleteServiceStrategy { + + } + + // Status of a Rollout. + enum RolloutStatus { + // No status specified. + ROLLOUT_STATUS_UNSPECIFIED = 0; + + // The Rollout is in progress. + IN_PROGRESS = 1; + + // The Rollout has completed successfully. + SUCCESS = 2; + + // The Rollout has been cancelled. This can happen if you have overlapping + // Rollout pushes, and the previous ones will be cancelled. + CANCELLED = 3; + + // The Rollout has failed. It is typically caused by configuration errors. + FAILED = 4; + + // The Rollout has not started yet and is pending for execution. + PENDING = 5; + } + + // Optional unique identifier of this Rollout. Only lower case letters, digits + // and '-' are allowed. + // + // If not specified by client, the server will generate one. The generated id + // will have the form of , where "date" is the create + // date in ISO 8601 format. "revision number" is a monotonically increasing + // positive number that is reset every day for each service. + // An example of the generated rollout_id is '2016-02-16r1' + string rollout_id = 1; + + // Creation time of the rollout. Readonly. + google.protobuf.Timestamp create_time = 2; + + // The user who created the Rollout. Readonly. + string created_by = 3; + + // The status of this rollout. Readonly. In case of a failed rollout, + // the system will automatically rollback to the current Rollout + // version. Readonly. + RolloutStatus status = 4; + + // Strategy that defines which versions of service configurations should be + // pushed + // and how they should be used at runtime. + oneof strategy { + // Google Service Control selects service configurations based on + // traffic percentage. + TrafficPercentStrategy traffic_percent_strategy = 5; + + // The strategy associated with a rollout to delete a `ManagedService`. + // Readonly. + DeleteServiceStrategy delete_service_strategy = 200; + } + + // The name of the service associated with this Rollout. + string service_name = 8; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto new file mode 100644 index 00000000000..62af1893ec2 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto @@ -0,0 +1,392 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api.servicemanagement.v1; + +import "google/api/annotations.proto"; +import "google/api/service.proto"; +import "google/api/servicemanagement/v1/resources.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/struct.proto"; +import "google/rpc/status.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/servicemanagement/v1;servicemanagement"; +option java_multiple_files = true; +option java_outer_classname = "ServiceManagerProto"; +option java_package = "com.google.api.servicemanagement.v1"; +option objc_class_prefix = "GASM"; + + +// [Google Service Management API](/service-management/overview) +service ServiceManager { + // Lists all managed services. + rpc ListServices(ListServicesRequest) returns (ListServicesResponse) { + option (google.api.http) = { get: "/v1/services" }; + } + + // Gets a managed service. + rpc GetService(GetServiceRequest) returns (ManagedService) { + option (google.api.http) = { get: "/v1/services/{service_name}" }; + } + + // Creates a new managed service. + // Please note one producer project can own no more than 20 services. + // + // Operation + rpc CreateService(CreateServiceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services" body: "service" }; + } + + // Deletes a managed service. This method will change the serivce in the + // `Soft-Delete` state for 30 days. Within this period, service producers may + // call [UndeleteService][google.api.servicemanagement.v1.ServiceManager.UndeleteService] to restore the service. + // After 30 days, the service will be permanently deleted. + // + // Operation + rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { delete: "/v1/services/{service_name}" }; + } + + // Revives a previously deleted managed service. The method restores the + // service using the configuration at the time the service was deleted. + // The target service must exist and must have been deleted within the + // last 30 days. + // + // Operation + rpc UndeleteService(UndeleteServiceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services/{service_name}:undelete" body: "" }; + } + + // Lists the history of the service configuration for a managed service, + // from the newest to the oldest. + rpc ListServiceConfigs(ListServiceConfigsRequest) returns (ListServiceConfigsResponse) { + option (google.api.http) = { get: "/v1/services/{service_name}/configs" }; + } + + // Gets a service configuration (version) for a managed service. + rpc GetServiceConfig(GetServiceConfigRequest) returns (google.api.Service) { + option (google.api.http) = { get: "/v1/services/{service_name}/configs/{config_id}" }; + } + + // Creates a new service configuration (version) for a managed service. + // This method only stores the service configuration. To roll out the service + // configuration to backend systems please call + // [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. + rpc CreateServiceConfig(CreateServiceConfigRequest) returns (google.api.Service) { + option (google.api.http) = { post: "/v1/services/{service_name}/configs" body: "service_config" }; + } + + // Creates a new service configuration (version) for a managed service based + // on + // user-supplied configuration source files (for example: OpenAPI + // Specification). This method stores the source configurations as well as the + // generated service configuration. To rollout the service configuration to + // other services, + // please call [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. + // + // Operation + rpc SubmitConfigSource(SubmitConfigSourceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services/{service_name}/configs:submit" body: "*" }; + } + + // Lists the history of the service configuration rollouts for a managed + // service, from the newest to the oldest. + rpc ListServiceRollouts(ListServiceRolloutsRequest) returns (ListServiceRolloutsResponse) { + option (google.api.http) = { get: "/v1/services/{service_name}/rollouts" }; + } + + // Gets a service configuration [rollout][google.api.servicemanagement.v1.Rollout]. + rpc GetServiceRollout(GetServiceRolloutRequest) returns (Rollout) { + option (google.api.http) = { get: "/v1/services/{service_name}/rollouts/{rollout_id}" }; + } + + // Creates a new service configuration rollout. Based on rollout, the + // Google Service Management will roll out the service configurations to + // different backend services. For example, the logging configuration will be + // pushed to Google Cloud Logging. + // + // Please note that any previous pending and running Rollouts and associated + // Operations will be automatically cancelled so that the latest Rollout will + // not be blocked by previous Rollouts. + // + // Operation + rpc CreateServiceRollout(CreateServiceRolloutRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services/{service_name}/rollouts" body: "rollout" }; + } + + // Generates and returns a report (errors, warnings and changes from + // existing configurations) associated with + // GenerateConfigReportRequest.new_value + // + // If GenerateConfigReportRequest.old_value is specified, + // GenerateConfigReportRequest will contain a single ChangeReport based on the + // comparison between GenerateConfigReportRequest.new_value and + // GenerateConfigReportRequest.old_value. + // If GenerateConfigReportRequest.old_value is not specified, this method + // will compare GenerateConfigReportRequest.new_value with the last pushed + // service configuration. + rpc GenerateConfigReport(GenerateConfigReportRequest) returns (GenerateConfigReportResponse) { + option (google.api.http) = { post: "/v1/services:generateConfigReport" body: "*" }; + } + + // Enable a managed service for a project with default setting. + // + // Operation + // + // [google.rpc.Status][google.rpc.Status] errors may contain a + // [google.rpc.PreconditionFailure][] error detail. + rpc EnableService(EnableServiceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services/{service_name}:enable" body: "*" }; + } + + // Disable a managed service for a project. + // + // Operation + rpc DisableService(DisableServiceRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { post: "/v1/services/{service_name}:disable" body: "*" }; + } +} + +// Request message for `ListServices` method. +message ListServicesRequest { + // Include services produced by the specified project. + string producer_project_id = 1; + + // Requested size of the next page of data. + int32 page_size = 5; + + // Token identifying which result to start with; returned by a previous list + // call. + string page_token = 6; +} + +// Response message for `ListServices` method. +message ListServicesResponse { + // The results of the query. + repeated ManagedService services = 1; + + // Token that can be passed to `ListServices` to resume a paginated query. + string next_page_token = 2; +} + +// Request message for `GetService` method. +message GetServiceRequest { + // The name of the service. See the `ServiceManager` overview for naming + // requirements. For example: `example.googleapis.com`. + string service_name = 1; +} + +// Request message for CreateService method. +message CreateServiceRequest { + // Initial values for the service resource. + ManagedService service = 1; +} + +// Request message for DeleteService method. +message DeleteServiceRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; +} + +// Request message for UndeleteService method. +message UndeleteServiceRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; +} + +// Response message for UndeleteService method. +message UndeleteServiceResponse { + // Revived service resource. + ManagedService service = 1; +} + +// Request message for GetServiceConfig method. +message GetServiceConfigRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + string config_id = 2; +} + +// Request message for ListServiceConfigs method. +message ListServiceConfigsRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The token of the page to retrieve. + string page_token = 2; + + // The max number of items to include in the response list. + int32 page_size = 3; +} + +// Response message for ListServiceConfigs method. +message ListServiceConfigsResponse { + // The list of service configuration resources. + repeated google.api.Service service_configs = 1; + + // The token of the next page of results. + string next_page_token = 2; +} + +// Request message for CreateServiceConfig method. +message CreateServiceConfigRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The service configuration resource. + google.api.Service service_config = 2; +} + +// Request message for SubmitConfigSource method. +message SubmitConfigSourceRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The source configuration for the service. + ConfigSource config_source = 2; + + // Optional. If set, this will result in the generation of a + // `google.api.Service` configuration based on the `ConfigSource` provided, + // but the generated config and the sources will NOT be persisted. + bool validate_only = 3; +} + +// Response message for SubmitConfigSource method. +message SubmitConfigSourceResponse { + // The generated service configuration. + google.api.Service service_config = 1; +} + +// Request message for 'CreateServiceRollout' +message CreateServiceRolloutRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The rollout resource. The `service_name` field is output only. + Rollout rollout = 2; +} + +// Request message for 'ListServiceRollouts' +message ListServiceRolloutsRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The token of the page to retrieve. + string page_token = 2; + + // The max number of items to include in the response list. + int32 page_size = 3; +} + +// Response message for ListServiceRollouts method. +message ListServiceRolloutsResponse { + // The list of rollout resources. + repeated Rollout rollouts = 1; + + // The token of the next page of results. + string next_page_token = 2; +} + +// Request message for GetServiceRollout method. +message GetServiceRolloutRequest { + // The name of the service. See the [overview](/service-management/overview) + // for naming requirements. For example: `example.googleapis.com`. + string service_name = 1; + + // The id of the rollout resource. + string rollout_id = 2; +} + +// Request message for EnableService method. +message EnableServiceRequest { + // Name of the service to enable. Specifying an unknown service name will + // cause the request to fail. + string service_name = 1; + + // The identity of consumer resource which service enablement will be + // applied to. + // + // The Google Service Management implementation accepts the following + // forms: "project:", "project_number:". + // + // Note: this is made compatible with + // google.api.servicecontrol.v1.Operation.consumer_id. + string consumer_id = 2; +} + +// Request message for DisableService method. +message DisableServiceRequest { + // Name of the service to disable. Specifying an unknown service name + // will cause the request to fail. + string service_name = 1; + + // The identity of consumer resource which service disablement will be + // applied to. + // + // The Google Service Management implementation accepts the following + // forms: "project:", "project_number:". + // + // Note: this is made compatible with + // google.api.servicecontrol.v1.Operation.consumer_id. + string consumer_id = 2; +} + +// Request message for GenerateConfigReport method. +message GenerateConfigReportRequest { + // Service configuration for which we want to generate the report. + // For this version of API, the supported types are + // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], + // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], + // and [google.api.Service][google.api.Service] + google.protobuf.Any new_config = 1; + + // Service configuration against which the comparison will be done. + // For this version of API, the supported types are + // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], + // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], + // and [google.api.Service][google.api.Service] + google.protobuf.Any old_config = 2; +} + +// Response message for GenerateConfigReport method. +message GenerateConfigReportResponse { + // Name of the service this report belongs to. + string service_name = 1; + + // ID of the service configuration this report belongs to. + string id = 2; + + // list of ChangeReport, each corresponding to comparison between two + // service configurations. + repeated ChangeReport change_reports = 3; + + // Errors / Linter warnings associated with the service definition this + // report + // belongs to. + repeated Diagnostic diagnostics = 4; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/source_info.proto b/handwritten/nodejs-datastore/protos/google/api/source_info.proto new file mode 100644 index 00000000000..5d0f7bd721f --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/source_info.proto @@ -0,0 +1,32 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/any.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "SourceInfoProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Source information used to create a Service Config +message SourceInfo { + // All files used during config generation. + repeated google.protobuf.Any source_files = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto b/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto new file mode 100644 index 00000000000..ed36a3d0bce --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto @@ -0,0 +1,96 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "SystemParameterProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// ### System parameter configuration +// +// A system parameter is a special kind of parameter defined by the API +// system, not by an individual API. It is typically mapped to an HTTP header +// and/or a URL query parameter. This configuration specifies which methods +// change the names of the system parameters. +message SystemParameters { + // Define system parameters. + // + // The parameters defined here will override the default parameters + // implemented by the system. If this field is missing from the service + // config, default system parameters will be used. Default system parameters + // and names is implementation-dependent. + // + // Example: define api key for all methods + // + // system_parameters + // rules: + // - selector: "*" + // parameters: + // - name: api_key + // url_query_parameter: api_key + // + // + // Example: define 2 api key names for a specific method. + // + // system_parameters + // rules: + // - selector: "/ListShelves" + // parameters: + // - name: api_key + // http_header: Api-Key1 + // - name: api_key + // http_header: Api-Key2 + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated SystemParameterRule rules = 1; +} + +// Define a system parameter rule mapping system parameter definitions to +// methods. +message SystemParameterRule { + // Selects the methods to which this rule applies. Use '*' to indicate all + // methods in all APIs. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. + string selector = 1; + + // Define parameters. Multiple names may be defined for a parameter. + // For a given method call, only one of them should be used. If multiple + // names are used the behavior is implementation-dependent. + // If none of the specified names are present the behavior is + // parameter-dependent. + repeated SystemParameter parameters = 2; +} + +// Define a parameter's name and location. The parameter may be passed as either +// an HTTP header or a URL query parameter, and if both are passed the behavior +// is implementation-dependent. +message SystemParameter { + // Define the name of the parameter, such as "api_key" . It is case sensitive. + string name = 1; + + // Define the HTTP header name to use for the parameter. It is case + // insensitive. + string http_header = 2; + + // Define the URL query parameter name to use for the parameter. It is case + // sensitive. + string url_query_parameter = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/api/usage.proto b/handwritten/nodejs-datastore/protos/google/api/usage.proto new file mode 100644 index 00000000000..29c601382d4 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/api/usage.proto @@ -0,0 +1,85 @@ +// Copyright 2017 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/annotations.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "UsageProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + + +// Configuration controlling usage of a service. +message Usage { + // Requirements that must be satisfied before a consumer project can use the + // service. Each requirement is of the form /; + // for example 'serviceusage.googleapis.com/billing-enabled'. + repeated string requirements = 1; + + // A list of usage rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated UsageRule rules = 6; + + // The full resource name of a channel used for sending notifications to the + // service producer. + // + // Google Service Management currently only supports + // [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification + // channel. To use Google Cloud Pub/Sub as the channel, this must be the name + // of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format + // documented in https://cloud.google.com/pubsub/docs/overview. + string producer_notification_channel = 7; +} + +// Usage configuration rules for the service. +// +// NOTE: Under development. +// +// +// Use this rule to configure unregistered calls for the service. Unregistered +// calls are calls that do not contain consumer project identity. +// (Example: calls that do not contain an API key). +// By default, API methods do not allow unregistered calls, and each method call +// must be identified by a consumer project identity. Use this rule to +// allow/disallow unregistered calls. +// +// Example of an API that wants to allow unregistered calls for entire service. +// +// usage: +// rules: +// - selector: "*" +// allow_unregistered_calls: true +// +// Example of a method that wants to allow unregistered calls. +// +// usage: +// rules: +// - selector: "google.example.library.v1.LibraryService.CreateBook" +// allow_unregistered_calls: true +message UsageRule { + // Selects the methods to which this rule applies. Use '*' to indicate all + // methods in all APIs. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. + string selector = 1; + + // True, if the method allows unregistered calls; false otherwise. + bool allow_unregistered_calls = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto new file mode 100644 index 00000000000..11acab6b763 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -0,0 +1,318 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.v1; + +import "google/api/annotations.proto"; +import "google/datastore/v1/entity.proto"; +import "google/datastore/v1/query.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option java_multiple_files = true; +option java_outer_classname = "DatastoreProto"; +option java_package = "com.google.datastore.v1"; + + +// Each RPC normalizes the partition IDs of the keys in its input entities, +// and always returns entities with keys with normalized partition IDs. +// This applies to all keys and entities, including those in values, except keys +// with both an empty path and an empty or unset partition ID. Normalization of +// input keys sets the project ID (if not already set) to the project ID from +// the request. +// +service Datastore { + // Looks up entities by key. + rpc Lookup(LookupRequest) returns (LookupResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:lookup" body: "*" }; + } + + // Queries for entities. + rpc RunQuery(RunQueryRequest) returns (RunQueryResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:runQuery" body: "*" }; + } + + // Begins a new transaction. + rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:beginTransaction" body: "*" }; + } + + // Commits a transaction, optionally creating, deleting or modifying some + // entities. + rpc Commit(CommitRequest) returns (CommitResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:commit" body: "*" }; + } + + // Rolls back a transaction. + rpc Rollback(RollbackRequest) returns (RollbackResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:rollback" body: "*" }; + } + + // Allocates IDs for the given keys, which is useful for referencing an entity + // before it is inserted. + rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:allocateIds" body: "*" }; + } +} + +// The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. +message LookupRequest { + // The ID of the project against which to make the request. + string project_id = 8; + + // The options for this lookup request. + ReadOptions read_options = 1; + + // Keys of entities to look up. + repeated Key keys = 3; +} + +// The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. +message LookupResponse { + // Entities found as `ResultType.FULL` entities. The order of results in this + // field is undefined and has no relation to the order of the keys in the + // input. + repeated EntityResult found = 1; + + // Entities not found as `ResultType.KEY_ONLY` entities. The order of results + // in this field is undefined and has no relation to the order of the keys + // in the input. + repeated EntityResult missing = 2; + + // A list of keys that were not looked up due to resource constraints. The + // order of results in this field is undefined and has no relation to the + // order of the keys in the input. + repeated Key deferred = 3; +} + +// The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +message RunQueryRequest { + // The ID of the project against which to make the request. + string project_id = 8; + + // Entities are partitioned into subsets, identified by a partition ID. + // Queries are scoped to a single partition. + // This partition ID is normalized with the standard default context + // partition ID. + PartitionId partition_id = 2; + + // The options for this query. + ReadOptions read_options = 1; + + // The type of query. + oneof query_type { + // The query to run. + Query query = 3; + + // The GQL query to run. + GqlQuery gql_query = 7; + } +} + +// The response for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +message RunQueryResponse { + // A batch of query results (always present). + QueryResultBatch batch = 1; + + // The parsed form of the `GqlQuery` from the request, if it was set. + Query query = 2; +} + +// The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +message BeginTransactionRequest { + // The ID of the project against which to make the request. + string project_id = 8; +} + +// The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +message BeginTransactionResponse { + // The transaction identifier (always present). + bytes transaction = 1; +} + +// The request for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. +message RollbackRequest { + // The ID of the project against which to make the request. + string project_id = 8; + + // The transaction identifier, returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + bytes transaction = 1; +} + +// The response for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. +// (an empty message). +message RollbackResponse { + +} + +// The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. +message CommitRequest { + // The modes available for commits. + enum Mode { + // Unspecified. This value must not be used. + MODE_UNSPECIFIED = 0; + + // Transactional: The mutations are either all applied, or none are applied. + // Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions). + TRANSACTIONAL = 1; + + // Non-transactional: The mutations may not apply as all or none. + NON_TRANSACTIONAL = 2; + } + + // The ID of the project against which to make the request. + string project_id = 8; + + // The type of commit to perform. Defaults to `TRANSACTIONAL`. + Mode mode = 5; + + // Must be set when mode is `TRANSACTIONAL`. + oneof transaction_selector { + // The identifier of the transaction associated with the commit. A + // transaction identifier is returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + bytes transaction = 1; + } + + // The mutations to perform. + // + // When mode is `TRANSACTIONAL`, mutations affecting a single entity are + // applied in order. The following sequences of mutations affecting a single + // entity are not permitted in a single `Commit` request: + // + // - `insert` followed by `insert` + // - `update` followed by `insert` + // - `upsert` followed by `insert` + // - `delete` followed by `update` + // + // When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single + // entity. + repeated Mutation mutations = 6; +} + +// The response for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. +message CommitResponse { + // The result of performing the mutations. + // The i-th mutation result corresponds to the i-th mutation in the request. + repeated MutationResult mutation_results = 3; + + // The number of index entries updated during the commit, or zero if none were + // updated. + int32 index_updates = 4; +} + +// The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +message AllocateIdsRequest { + // The ID of the project against which to make the request. + string project_id = 8; + + // A list of keys with incomplete key paths for which to allocate IDs. + // No key may be reserved/read-only. + repeated Key keys = 1; +} + +// The response for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +message AllocateIdsResponse { + // The keys specified in the request (in the same order), each with + // its key path completed with a newly allocated ID. + repeated Key keys = 1; +} + +// A mutation to apply to an entity. +message Mutation { + // The mutation operation. + // + // For `insert`, `update`, and `upsert`: + // - The entity's key must not be reserved/read-only. + // - No property in the entity may have a reserved name, + // not even a property in an entity in a value. + // - No value in the entity may have meaning 18, + // not even a value in an entity in another value. + oneof operation { + // The entity to insert. The entity must not already exist. + // The entity key's final path element may be incomplete. + Entity insert = 4; + + // The entity to update. The entity must already exist. + // Must have a complete key path. + Entity update = 5; + + // The entity to upsert. The entity may or may not already exist. + // The entity key's final path element may be incomplete. + Entity upsert = 6; + + // The key of the entity to delete. The entity may or may not already exist. + // Must have a complete key path and must not be reserved/read-only. + Key delete = 7; + } + + // When set, the server will detect whether or not this mutation conflicts + // with the current version of the entity on the server. Conflicting mutations + // are not applied, and are marked as such in MutationResult. + oneof conflict_detection_strategy { + // The version of the entity that this mutation is being applied to. If this + // does not match the current version on the server, the mutation conflicts. + int64 base_version = 8; + } +} + +// The result of applying a mutation. +message MutationResult { + // The automatically allocated key. + // Set only when the mutation allocated a key. + Key key = 3; + + // The version of the entity on the server after processing the mutation. If + // the mutation doesn't change anything on the server, then the version will + // be the version of the current entity or, if no entity is present, a version + // that is strictly greater than the version of any previous entity and less + // than the version of any possible future entity. + int64 version = 4; + + // Whether a conflict was detected for this mutation. Always false when a + // conflict detection strategy field is not set in the mutation. + bool conflict_detected = 5; +} + +// The options shared by read requests. +message ReadOptions { + // The possible values for read consistencies. + enum ReadConsistency { + // Unspecified. This value must not be used. + READ_CONSISTENCY_UNSPECIFIED = 0; + + // Strong consistency. + STRONG = 1; + + // Eventual consistency. + EVENTUAL = 2; + } + + // If not specified, lookups and ancestor queries default to + // `read_consistency`=`STRONG`, global queries default to + // `read_consistency`=`EVENTUAL`. + oneof consistency_type { + // The non-transactional read consistency to use. + // Cannot be set to `STRONG` for global queries. + ReadConsistency read_consistency = 1; + + // The identifier of the transaction in which to read. A + // transaction identifier is returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + bytes transaction = 2; + } +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto new file mode 100644 index 00000000000..6df3ef2ab25 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -0,0 +1,203 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; +import "google/type/latlng.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option java_multiple_files = true; +option java_outer_classname = "EntityProto"; +option java_package = "com.google.datastore.v1"; + + +// A partition ID identifies a grouping of entities. The grouping is always +// by project and namespace, however the namespace ID may be empty. +// +// A partition ID contains several dimensions: +// project ID and namespace ID. +// +// Partition dimensions: +// +// - May be `""`. +// - Must be valid UTF-8 bytes. +// - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` +// If the value of any dimension matches regex `__.*__`, the partition is +// reserved/read-only. +// A reserved/read-only partition ID is forbidden in certain documented +// contexts. +// +// Foreign partition IDs (in which the project ID does +// not match the context project ID ) are discouraged. +// Reads and writes of foreign partition IDs may fail if the project is not in an active state. +message PartitionId { + // The ID of the project to which the entities belong. + string project_id = 2; + + // If not empty, the ID of the namespace to which the entities belong. + string namespace_id = 4; +} + +// A unique identifier for an entity. +// If a key's partition ID or any of its path kinds or names are +// reserved/read-only, the key is reserved/read-only. +// A reserved/read-only key is forbidden in certain documented contexts. +message Key { + // A (kind, ID/name) pair used to construct a key path. + // + // If either name or ID is set, the element is complete. + // If neither is set, the element is incomplete. + message PathElement { + // The kind of the entity. + // A kind matching regex `__.*__` is reserved/read-only. + // A kind must not contain more than 1500 bytes when UTF-8 encoded. + // Cannot be `""`. + string kind = 1; + + // The type of ID. + oneof id_type { + // The auto-allocated ID of the entity. + // Never equal to zero. Values less than zero are discouraged and may not + // be supported in the future. + int64 id = 2; + + // The name of the entity. + // A name matching regex `__.*__` is reserved/read-only. + // A name must not be more than 1500 bytes when UTF-8 encoded. + // Cannot be `""`. + string name = 3; + } + } + + // Entities are partitioned into subsets, currently identified by a project + // ID and namespace ID. + // Queries are scoped to a single partition. + PartitionId partition_id = 1; + + // The entity path. + // An entity path consists of one or more elements composed of a kind and a + // string or numerical identifier, which identify entities. The first + // element identifies a _root entity_, the second element identifies + // a _child_ of the root entity, the third element identifies a child of the + // second entity, and so forth. The entities identified by all prefixes of + // the path are called the element's _ancestors_. + // + // An entity path is always fully complete: *all* of the entity's ancestors + // are required to be in the path along with the entity identifier itself. + // The only exception is that in some documented cases, the identifier in the + // last path element (for the entity) itself may be omitted. For example, + // the last path element of the key of `Mutation.insert` may have no + // identifier. + // + // A path can never be empty, and a path can have at most 100 elements. + repeated PathElement path = 2; +} + +// An array value. +message ArrayValue { + // Values in the array. + // The order of this array may not be preserved if it contains a mix of + // indexed and unindexed values. + repeated Value values = 1; +} + +// A message that can hold any of the supported value types and associated +// metadata. +message Value { + // Must have a value set. + oneof value_type { + // A null value. + google.protobuf.NullValue null_value = 11; + + // A boolean value. + bool boolean_value = 1; + + // An integer value. + int64 integer_value = 2; + + // A double value. + double double_value = 3; + + // A timestamp value. + // When stored in the Datastore, precise only to microseconds; + // any additional precision is rounded down. + google.protobuf.Timestamp timestamp_value = 10; + + // A key value. + Key key_value = 5; + + // A UTF-8 encoded string value. + // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. + // Otherwise, may be set to at least 1,000,000 bytes. + string string_value = 17; + + // A blob value. + // May have at most 1,000,000 bytes. + // When `exclude_from_indexes` is false, may have at most 1500 bytes. + // In JSON requests, must be base64-encoded. + bytes blob_value = 18; + + // A geo point value representing a point on the surface of Earth. + google.type.LatLng geo_point_value = 8; + + // An entity value. + // + // - May have no key. + // - May have a key with an incomplete key path. + // - May have a reserved/read-only key. + Entity entity_value = 6; + + // An array value. + // Cannot contain another array value. + // A `Value` instance that sets field `array_value` must not set fields + // `meaning` or `exclude_from_indexes`. + ArrayValue array_value = 9; + } + + // The `meaning` field should only be populated for backwards compatibility. + int32 meaning = 14; + + // If the value should be excluded from all indexes including those defined + // explicitly. + bool exclude_from_indexes = 19; +} + +// A Datastore data object. +// +// An entity is limited to 1 megabyte when stored. That _roughly_ +// corresponds to a limit of 1 megabyte for the serialized form of this +// message. +message Entity { + // The entity's key. + // + // An entity must have a key, unless otherwise documented (for example, + // an entity in `Value.entity_value` may have no key). + // An entity's kind is its key path's last element's kind, + // or null if it has no key. + Key key = 1; + + // The entity's properties. + // The map's keys are property names. + // A property name matching regex `__.*__` is reserved. + // A reserved property name is forbidden in certain documented contexts. + // The name must not contain more than 500 characters. + // The name cannot be `""`. + map properties = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto new file mode 100644 index 00000000000..483e12565e1 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -0,0 +1,309 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.v1; + +import "google/api/annotations.proto"; +import "google/datastore/v1/entity.proto"; +import "google/protobuf/wrappers.proto"; +import "google/type/latlng.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option java_multiple_files = true; +option java_outer_classname = "QueryProto"; +option java_package = "com.google.datastore.v1"; + + +// The result of fetching an entity from Datastore. +message EntityResult { + // Specifies what data the 'entity' field contains. + // A `ResultType` is either implied (for example, in `LookupResponse.missing` + // from `datastore.proto`, it is always `KEY_ONLY`) or specified by context + // (for example, in message `QueryResultBatch`, field `entity_result_type` + // specifies a `ResultType` for all the values in field `entity_results`). + enum ResultType { + // Unspecified. This value is never used. + RESULT_TYPE_UNSPECIFIED = 0; + + // The key and properties. + FULL = 1; + + // A projected subset of properties. The entity may have no key. + PROJECTION = 2; + + // Only the key. + KEY_ONLY = 3; + } + + // The resulting entity. + Entity entity = 1; + + // The version of the entity, a strictly positive number that monotonically + // increases with changes to the entity. + // + // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity + // results. + // + // For [missing][google.datastore.v1.LookupResponse.missing] entities in `LookupResponse`, this + // is the version of the snapshot that was used to look up the entity, and it + // is always set except for eventually consistent reads. + int64 version = 4; + + // A cursor that points to the position after the result entity. + // Set only when the `EntityResult` is part of a `QueryResultBatch` message. + bytes cursor = 3; +} + +// A query for entities. +message Query { + // The projection to return. Defaults to returning all properties. + repeated Projection projection = 2; + + // The kinds to query (if empty, returns entities of all kinds). + // Currently at most 1 kind may be specified. + repeated KindExpression kind = 3; + + // The filter to apply. + Filter filter = 4; + + // The order to apply to the query results (if empty, order is unspecified). + repeated PropertyOrder order = 5; + + // The properties to make distinct. The query results will contain the first + // result for each distinct combination of values for the given properties + // (if empty, all results are returned). + repeated PropertyReference distinct_on = 6; + + // A starting point for the query results. Query cursors are + // returned in query result batches and + // [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + bytes start_cursor = 7; + + // An ending point for the query results. Query cursors are + // returned in query result batches and + // [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + bytes end_cursor = 8; + + // The number of results to skip. Applies before limit, but after all other + // constraints. Optional. Must be >= 0 if specified. + int32 offset = 10; + + // The maximum number of results to return. Applies after all other + // constraints. Optional. + // Unspecified is interpreted as no limit. + // Must be >= 0 if specified. + google.protobuf.Int32Value limit = 12; +} + +// A representation of a kind. +message KindExpression { + // The name of the kind. + string name = 1; +} + +// A reference to a property relative to the kind expressions. +message PropertyReference { + // The name of the property. + // If name includes "."s, it may be interpreted as a property name path. + string name = 2; +} + +// A representation of a property in a projection. +message Projection { + // The property to project. + PropertyReference property = 1; +} + +// The desired order for a specific property. +message PropertyOrder { + // The sort direction. + enum Direction { + // Unspecified. This value must not be used. + DIRECTION_UNSPECIFIED = 0; + + // Ascending. + ASCENDING = 1; + + // Descending. + DESCENDING = 2; + } + + // The property to order by. + PropertyReference property = 1; + + // The direction to order by. Defaults to `ASCENDING`. + Direction direction = 2; +} + +// A holder for any type of filter. +message Filter { + // The type of filter. + oneof filter_type { + // A composite filter. + CompositeFilter composite_filter = 1; + + // A filter on a property. + PropertyFilter property_filter = 2; + } +} + +// A filter that merges multiple other filters using the given operator. +message CompositeFilter { + // A composite filter operator. + enum Operator { + // Unspecified. This value must not be used. + OPERATOR_UNSPECIFIED = 0; + + // The results are required to satisfy each of the combined filters. + AND = 1; + } + + // The operator for combining multiple filters. + Operator op = 1; + + // The list of filters to combine. + // Must contain at least one filter. + repeated Filter filters = 2; +} + +// A filter on a specific property. +message PropertyFilter { + // A property filter operator. + enum Operator { + // Unspecified. This value must not be used. + OPERATOR_UNSPECIFIED = 0; + + // Less than. + LESS_THAN = 1; + + // Less than or equal. + LESS_THAN_OR_EQUAL = 2; + + // Greater than. + GREATER_THAN = 3; + + // Greater than or equal. + GREATER_THAN_OR_EQUAL = 4; + + // Equal. + EQUAL = 5; + + // Has ancestor. + HAS_ANCESTOR = 11; + } + + // The property to filter by. + PropertyReference property = 1; + + // The operator to filter by. + Operator op = 2; + + // The value to compare the property to. + Value value = 3; +} + +// A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). +message GqlQuery { + // A string of the format described + // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). + string query_string = 1; + + // When false, the query string must not contain any literals and instead must + // bind all values. For example, + // `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while + // `SELECT * FROM Kind WHERE a = @value` is. + bool allow_literals = 2; + + // For each non-reserved named binding site in the query string, there must be + // a named parameter with that name, but not necessarily the inverse. + // + // Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex + // `__.*__`, and must not be `""`. + map named_bindings = 5; + + // Numbered binding site @1 references the first numbered parameter, + // effectively using 1-based indexing, rather than the usual 0. + // + // For each binding site numbered i in `query_string`, there must be an i-th + // numbered parameter. The inverse must also be true. + repeated GqlQueryParameter positional_bindings = 4; +} + +// A binding parameter for a GQL query. +message GqlQueryParameter { + // The type of parameter. + oneof parameter_type { + // A value parameter. + Value value = 2; + + // A query cursor. Query cursors are returned in query + // result batches. + bytes cursor = 3; + } +} + +// A batch of results produced by a query. +message QueryResultBatch { + // The possible values for the `more_results` field. + enum MoreResultsType { + // Unspecified. This value is never used. + MORE_RESULTS_TYPE_UNSPECIFIED = 0; + + // There may be additional batches to fetch from this query. + NOT_FINISHED = 1; + + // The query is finished, but there may be more results after the limit. + MORE_RESULTS_AFTER_LIMIT = 2; + + // The query is finished, but there may be more results after the end + // cursor. + MORE_RESULTS_AFTER_CURSOR = 4; + + // The query has been exhausted. + NO_MORE_RESULTS = 3; + } + + // The number of results skipped, typically because of an offset. + int32 skipped_results = 6; + + // A cursor that points to the position after the last skipped result. + // Will be set when `skipped_results` != 0. + bytes skipped_cursor = 3; + + // The result type for every entity in `entity_results`. + EntityResult.ResultType entity_result_type = 1; + + // The results for this batch. + repeated EntityResult entity_results = 2; + + // A cursor that points to the position after the last result in the batch. + bytes end_cursor = 4; + + // The state of the query after the current batch. + MoreResultsType more_results = 5; + + // The version number of the snapshot this batch was returned from. + // This applies to the range of results from the query's `start_cursor` (or + // the beginning of the query if no cursor was given) to this batch's + // `end_cursor` (not the query's `end_cursor`). + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater snapshot version number. Each batch's snapshot version + // is valid for all preceding batches. + // The value will be zero for eventually consistent queries. + int64 snapshot_version = 7; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/any.proto b/handwritten/nodejs-datastore/protos/google/protobuf/any.proto new file mode 100644 index 00000000000..9bd3f50a453 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/any.proto @@ -0,0 +1,139 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "github.com/golang/protobuf/ptypes/any"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "AnyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// `Any` contains an arbitrary serialized protocol buffer message along with a +// URL that describes the type of the serialized message. +// +// Protobuf library provides support to pack/unpack Any values in the form +// of utility functions or additional generated methods of the Any type. +// +// Example 1: Pack and unpack a message in C++. +// +// Foo foo = ...; +// Any any; +// any.PackFrom(foo); +// ... +// if (any.UnpackTo(&foo)) { +// ... +// } +// +// Example 2: Pack and unpack a message in Java. +// +// Foo foo = ...; +// Any any = Any.pack(foo); +// ... +// if (any.is(Foo.class)) { +// foo = any.unpack(Foo.class); +// } +// +// Example 3: Pack and unpack a message in Python. +// +// foo = Foo(...) +// any = Any() +// any.Pack(foo) +// ... +// if any.Is(Foo.DESCRIPTOR): +// any.Unpack(foo) +// ... +// +// The pack methods provided by protobuf library will by default use +// 'type.googleapis.com/full.type.name' as the type URL and the unpack +// methods only use the fully qualified type name after the last '/' +// in the type URL, for example "foo.bar.com/x/y.z" will yield type +// name "y.z". +// +// +// JSON +// ==== +// The JSON representation of an `Any` value uses the regular +// representation of the deserialized, embedded message, with an +// additional field `@type` which contains the type URL. Example: +// +// package google.profile; +// message Person { +// string first_name = 1; +// string last_name = 2; +// } +// +// { +// "@type": "type.googleapis.com/google.profile.Person", +// "firstName": , +// "lastName": +// } +// +// If the embedded message type is well-known and has a custom JSON +// representation, that representation will be embedded adding a field +// `value` which holds the custom JSON in addition to the `@type` +// field. Example (for message [google.protobuf.Duration][]): +// +// { +// "@type": "type.googleapis.com/google.protobuf.Duration", +// "value": "1.212s" +// } +// +message Any { + // A URL/resource name whose content describes the type of the + // serialized protocol buffer message. + // + // For URLs which use the scheme `http`, `https`, or no scheme, the + // following restrictions and interpretations apply: + // + // * If no scheme is provided, `https` is assumed. + // * The last segment of the URL's path must represent the fully + // qualified name of the type (as in `path/google.protobuf.Duration`). + // The name should be in a canonical form (e.g., leading "." is + // not accepted). + // * An HTTP GET on the URL must yield a [google.protobuf.Type][] + // value in binary format, or produce an error. + // * Applications are allowed to cache lookup results based on the + // URL, or have them precompiled into a binary to avoid any + // lookup. Therefore, binary compatibility needs to be preserved + // on changes to types. (Use versioned type names to manage + // breaking changes.) + // + // Schemes other than `http`, `https` (or the empty scheme) might be + // used with implementation specific semantics. + // + string type_url = 1; + + // Must be a valid serialized protocol buffer of the above specified type. + bytes value = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/api.proto b/handwritten/nodejs-datastore/protos/google/protobuf/api.proto new file mode 100644 index 00000000000..7c30e8b7ad3 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/api.proto @@ -0,0 +1,202 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +import "google/protobuf/source_context.proto"; +import "google/protobuf/type.proto"; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "ApiProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/api;api"; + +// Api is a light-weight descriptor for a protocol buffer service. +message Api { + + // The fully qualified name of this api, including package name + // followed by the api's simple name. + string name = 1; + + // The methods of this api, in unspecified order. + repeated Method methods = 2; + + // Any metadata attached to the API. + repeated Option options = 3; + + // A version string for this api. If specified, must have the form + // `major-version.minor-version`, as in `1.10`. If the minor version + // is omitted, it defaults to zero. If the entire version field is + // empty, the major version is derived from the package name, as + // outlined below. If the field is not empty, the version in the + // package name will be verified to be consistent with what is + // provided here. + // + // The versioning schema uses [semantic + // versioning](http://semver.org) where the major version number + // indicates a breaking change and the minor version an additive, + // non-breaking change. Both version numbers are signals to users + // what to expect from different versions, and should be carefully + // chosen based on the product plan. + // + // The major version is also reflected in the package name of the + // API, which must end in `v`, as in + // `google.feature.v1`. For major versions 0 and 1, the suffix can + // be omitted. Zero major versions must only be used for + // experimental, none-GA apis. + // + // + string version = 4; + + // Source context for the protocol buffer service represented by this + // message. + SourceContext source_context = 5; + + // Included APIs. See [Mixin][]. + repeated Mixin mixins = 6; + + // The source syntax of the service. + Syntax syntax = 7; +} + +// Method represents a method of an api. +message Method { + + // The simple name of this method. + string name = 1; + + // A URL of the input message type. + string request_type_url = 2; + + // If true, the request is streamed. + bool request_streaming = 3; + + // The URL of the output message type. + string response_type_url = 4; + + // If true, the response is streamed. + bool response_streaming = 5; + + // Any metadata attached to the method. + repeated Option options = 6; + + // The source syntax of this method. + Syntax syntax = 7; +} + +// Declares an API to be included in this API. The including API must +// redeclare all the methods from the included API, but documentation +// and options are inherited as follows: +// +// - If after comment and whitespace stripping, the documentation +// string of the redeclared method is empty, it will be inherited +// from the original method. +// +// - Each annotation belonging to the service config (http, +// visibility) which is not set in the redeclared method will be +// inherited. +// +// - If an http annotation is inherited, the path pattern will be +// modified as follows. Any version prefix will be replaced by the +// version of the including API plus the [root][] path if specified. +// +// Example of a simple mixin: +// +// package google.acl.v1; +// service AccessControl { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v1/{resource=**}:getAcl"; +// } +// } +// +// package google.storage.v2; +// service Storage { +// rpc GetAcl(GetAclRequest) returns (Acl); +// +// // Get a data record. +// rpc GetData(GetDataRequest) returns (Data) { +// option (google.api.http).get = "/v2/{resource=**}"; +// } +// } +// +// Example of a mixin configuration: +// +// apis: +// - name: google.storage.v2.Storage +// mixins: +// - name: google.acl.v1.AccessControl +// +// The mixin construct implies that all methods in `AccessControl` are +// also declared with same name and request/response types in +// `Storage`. A documentation generator or annotation processor will +// see the effective `Storage.GetAcl` method after inherting +// documentation and annotations as follows: +// +// service Storage { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v2/{resource=**}:getAcl"; +// } +// ... +// } +// +// Note how the version in the path pattern changed from `v1` to `v2`. +// +// If the `root` field in the mixin is specified, it should be a +// relative path under which inherited HTTP paths are placed. Example: +// +// apis: +// - name: google.storage.v2.Storage +// mixins: +// - name: google.acl.v1.AccessControl +// root: acls +// +// This implies the following inherited HTTP annotation: +// +// service Storage { +// // Get the underlying ACL object. +// rpc GetAcl(GetAclRequest) returns (Acl) { +// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; +// } +// ... +// } +message Mixin { + // The fully qualified name of the API which is included. + string name = 1; + + // If non-empty specifies a path under which inherited HTTP paths + // are rooted. + string root = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto b/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto new file mode 100644 index 00000000000..f859c42972f --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto @@ -0,0 +1,831 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + +syntax = "proto2"; + +package google.protobuf; +option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; +option csharp_namespace = "Google.Protobuf.Reflection"; +option objc_class_prefix = "GPB"; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field without harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; + + // The syntax of the proto file. + // The supported values are "proto2" and "proto3". + optional string syntax = 12; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; + optional int32 end = 2; + } + repeated ExtensionRange extension_range = 5; + + repeated OneofDescriptorProto oneof_decl = 8; + + optional MessageOptions options = 7; + + // Range of reserved tag numbers. Reserved tag numbers may not be used by + // fields or extension ranges in the same message. Reserved ranges may + // not overlap. + message ReservedRange { + optional int32 start = 1; // Inclusive. + optional int32 end = 2; // Exclusive. + } + repeated ReservedRange reserved_range = 9; + // Reserved field names, which may not be used by fields in the same message. + // A given name may only be reserved once. + repeated string reserved_name = 10; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + }; + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + }; + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + // If set, gives the index of a oneof in the containing type's oneof_decl + // list. This field is a member of that oneof. + optional int32 oneof_index = 9; + + // JSON name of this field. The value is set by protocol compiler. If the + // user has set a "json_name" option on this field, that option's value + // will be used. Otherwise, it's deduced from the field's name by converting + // it to camelCase. + optional string json_name = 10; + + optional FieldOptions options = 8; +} + +// Describes a oneof. +message OneofDescriptorProto { + optional string name = 1; + optional OneofOptions options = 2; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; + + // Identifies if client streams multiple client messages + optional bool client_streaming = 5 [default=false]; + // Identifies if server streams multiple server messages + optional bool server_streaming = 6 [default=false]; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Objective-C plugin) and your project website (if available) -- there's no +// need to explain how you intend to use them. Usually you only need one +// extension number. You can declare multiple options with only one extension +// number by putting them in a sub-message. See the Custom Options section of +// the docs for examples: +// https://developers.google.com/protocol-buffers/docs/proto#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default=false]; + + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; + + // If set true, then the Java2 code generator will generate code that + // throws an exception whenever an attempt is made to assign a non-UTF-8 + // byte sequence to a string field. + // Message reflection will do the same. + // However, an extension field still accepts non-UTF-8 byte sequences. + // This option has no effect on when used with the lite runtime. + optional bool java_string_check_utf8 = 27 [default=false]; + + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default=SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. If omitted, the Go package will be derived from the following: + // - The basename of the package import path, if provided. + // - Otherwise, the package statement in the .proto file, if present. + // - Otherwise, the basename of the .proto file, without extension. + optional string go_package = 11; + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of google.protobuf. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default=false]; + optional bool java_generic_services = 17 [default=false]; + optional bool py_generic_services = 18 [default=false]; + + // Is this file deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for everything in the file, or it will be completely ignored; in the very + // least, this is a formalization for deprecating files. + optional bool deprecated = 23 [default=false]; + + // Enables the use of arenas for the proto messages in this file. This applies + // only to generated classes for C++. + optional bool cc_enable_arenas = 31 [default=false]; + + + // Sets the objective c class prefix which is prepended to all objective c + // generated classes from this .proto. There is no default. + optional string objc_class_prefix = 36; + + // Namespace for generated classes; defaults to the package. + optional string csharp_namespace = 37; + + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + + // Sets the php class prefix which is prepended to all php generated classes + // from this .proto. Default is empty. + optional string php_class_prefix = 40; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 38; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default=false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default=false]; + + // Is this message deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the message, or it will be completely ignored; in the very least, + // this is a formalization for deprecating messages. + optional bool deprecated = 3 [default=false]; + + // Whether the message is an automatically generated map entry type for the + // maps field. + // + // For maps fields: + // map map_field = 1; + // The parsed descriptor looks like: + // message MapFieldEntry { + // option map_entry = true; + // optional KeyType key = 1; + // optional ValueType value = 2; + // } + // repeated MapFieldEntry map_field = 1; + // + // Implementations may choose not to generate the map_entry=true message, but + // use a native map in the target language to hold the keys and values. + // The reflection APIs in such implementions still need to work as + // if the field is a repeated message field. + // + // NOTE: Do not set the option in .proto files. Always use the maps syntax + // instead. The option should only be implicitly set by the proto compiler + // parser. + optional bool map_entry = 7; + + reserved 8; // javalite_serializable + reserved 9; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. In proto3, only explicit setting it to + // false will avoid using packed encoding. + optional bool packed = 2; + + // The jstype option determines the JavaScript type used for values of the + // field. The option is permitted only for 64 bit integral and fixed types + // (int64, uint64, sint64, fixed64, sfixed64). By default these types are + // represented as JavaScript strings. This avoids loss of precision that can + // happen when a large value is converted to a floating point JavaScript + // numbers. Specifying JS_NUMBER for the jstype causes the generated + // JavaScript code to use the JavaScript "number" type instead of strings. + // This option is an enum to permit additional types to be added, + // e.g. goog.math.Integer. + optional JSType jstype = 6 [default = JS_NORMAL]; + enum JSType { + // Use the default type. + JS_NORMAL = 0; + + // Use JavaScript strings. + JS_STRING = 1; + + // Use JavaScript numbers. + JS_NUMBER = 2; + } + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outer message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default=false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default=false]; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default=false]; + + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; + + reserved 4; // removed jtype +} + +message OneofOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to true to allow mapping different tag names to the same + // value. + optional bool allow_alias = 2; + + // Is this enum deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum, or it will be completely ignored; in the very least, this + // is a formalization for deprecating enums. + optional bool deprecated = 3 [default=false]; + + reserved 5; // javanano_as_lite + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // Is this enum value deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the enum value, or it will be completely ignored; in the very least, + // this is a formalization for deprecating enum values. + optional bool deprecated = 1 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this service deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the service, or it will be completely ignored; in the very least, + // this is a formalization for deprecating services. + optional bool deprecated = 33 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // Is this method deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for the method, or it will be completely ignored; in the very least, + // this is a formalization for deprecating methods. + optional bool deprecated = 33 [default=false]; + + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = + 34 [default=IDEMPOTENCY_UNKNOWN]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendent. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed=true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed=true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // leading_detached_comments will keep paragraphs of comments that appear + // before (but not connected to) the current element. Each paragraph, + // separated by empty lines, will be one comment element in the repeated + // field. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // // Detached comment for corge. This is not leading or trailing comments + // // to qux or corge because there are blank lines separating it from + // // both. + // + // // Detached comment for corge paragraph 2. + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + // + // // ignored detached comments. + optional string leading_comments = 3; + optional string trailing_comments = 4; + repeated string leading_detached_comments = 6; + } +} + +// Describes the relationship between generated code and its original source +// file. A GeneratedCodeInfo message is associated with only one generated +// source file, but may contain references to different source .proto files. +message GeneratedCodeInfo { + // An Annotation connects some span of text in generated code to an element + // of its generating .proto file. + repeated Annotation annotation = 1; + message Annotation { + // Identifies the element in the original source .proto file. This field + // is formatted the same as SourceCodeInfo.Location.path. + repeated int32 path = 1 [packed=true]; + + // Identifies the filesystem path to the original source .proto. + optional string source_file = 2; + + // Identifies the starting offset in bytes in the generated code + // that relates to the identified object. + optional int32 begin = 3; + + // Identifies the ending offset in bytes in the generated code that + // relates to the identified offset. The end offset should be one past + // the last relevant byte (so the length of the text = end - begin). + optional int32 end = 4; + } +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto b/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto new file mode 100644 index 00000000000..975fce41aae --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto @@ -0,0 +1,117 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/duration"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DurationProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Duration represents a signed, fixed-length span of time represented +// as a count of seconds and fractions of seconds at nanosecond +// resolution. It is independent of any calendar and concepts like "day" +// or "month". It is related to Timestamp in that the difference between +// two Timestamp values is a Duration and it can be added or subtracted +// from a Timestamp. Range is approximately +-10,000 years. +// +// # Examples +// +// Example 1: Compute Duration from two Timestamps in pseudo code. +// +// Timestamp start = ...; +// Timestamp end = ...; +// Duration duration = ...; +// +// duration.seconds = end.seconds - start.seconds; +// duration.nanos = end.nanos - start.nanos; +// +// if (duration.seconds < 0 && duration.nanos > 0) { +// duration.seconds += 1; +// duration.nanos -= 1000000000; +// } else if (durations.seconds > 0 && duration.nanos < 0) { +// duration.seconds -= 1; +// duration.nanos += 1000000000; +// } +// +// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +// +// Timestamp start = ...; +// Duration duration = ...; +// Timestamp end = ...; +// +// end.seconds = start.seconds + duration.seconds; +// end.nanos = start.nanos + duration.nanos; +// +// if (end.nanos < 0) { +// end.seconds -= 1; +// end.nanos += 1000000000; +// } else if (end.nanos >= 1000000000) { +// end.seconds += 1; +// end.nanos -= 1000000000; +// } +// +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// +// # JSON Mapping +// +// In JSON format, the Duration type is encoded as a string rather than an +// object, where the string ends in the suffix "s" (indicating seconds) and +// is preceded by the number of seconds, with nanoseconds expressed as +// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +// microsecond should be expressed in JSON format as "3.000001s". +// +// +message Duration { + + // Signed seconds of the span of time. Must be from -315,576,000,000 + // to +315,576,000,000 inclusive. Note: these bounds are computed from: + // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + int64 seconds = 1; + + // Signed fractions of a second at nanosecond resolution of the span + // of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For durations + // of one second or more, a non-zero value for the `nanos` field must be + // of the same sign as the `seconds` field. Must be from -999,999,999 + // to +999,999,999 inclusive. + int32 nanos = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto b/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto new file mode 100644 index 00000000000..03cacd23308 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto @@ -0,0 +1,52 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "github.com/golang/protobuf/ptypes/empty"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "EmptyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option cc_enable_arenas = true; + +// A generic empty message that you can re-use to avoid defining duplicated +// empty messages in your APIs. A typical example is to use it as the request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +message Empty {} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto b/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto new file mode 100644 index 00000000000..c68d247c8a4 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto @@ -0,0 +1,246 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "FieldMaskProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask"; + +// `FieldMask` represents a set of symbolic field paths, for example: +// +// paths: "f.a" +// paths: "f.b.d" +// +// Here `f` represents a field in some root message, `a` and `b` +// fields in the message found in `f`, and `d` a field found in the +// message in `f.b`. +// +// Field masks are used to specify a subset of fields that should be +// returned by a get operation or modified by an update operation. +// Field masks also have a custom JSON encoding (see below). +// +// # Field Masks in Projections +// +// When used in the context of a projection, a response message or +// sub-message is filtered by the API to only contain those fields as +// specified in the mask. For example, if the mask in the previous +// example is applied to a response message as follows: +// +// f { +// a : 22 +// b { +// d : 1 +// x : 2 +// } +// y : 13 +// } +// z: 8 +// +// The result will not contain specific values for fields x,y and z +// (their value will be set to the default, and omitted in proto text +// output): +// +// +// f { +// a : 22 +// b { +// d : 1 +// } +// } +// +// A repeated field is not allowed except at the last position of a +// paths string. +// +// If a FieldMask object is not present in a get operation, the +// operation applies to all fields (as if a FieldMask of all fields +// had been specified). +// +// Note that a field mask does not necessarily apply to the +// top-level response message. In case of a REST get operation, the +// field mask applies directly to the response, but in case of a REST +// list operation, the mask instead applies to each individual message +// in the returned resource list. In case of a REST custom method, +// other definitions may be used. Where the mask applies will be +// clearly documented together with its declaration in the API. In +// any case, the effect on the returned resource/resources is required +// behavior for APIs. +// +// # Field Masks in Update Operations +// +// A field mask in update operations specifies which fields of the +// targeted resource are going to be updated. The API is required +// to only change the values of the fields as specified in the mask +// and leave the others untouched. If a resource is passed in to +// describe the updated values, the API ignores the values of all +// fields not covered by the mask. +// +// If a repeated field is specified for an update operation, the existing +// repeated values in the target resource will be overwritten by the new values. +// Note that a repeated field is only allowed in the last position of a `paths` +// string. +// +// If a sub-message is specified in the last position of the field mask for an +// update operation, then the existing sub-message in the target resource is +// overwritten. Given the target message: +// +// f { +// b { +// d : 1 +// x : 2 +// } +// c : 1 +// } +// +// And an update message: +// +// f { +// b { +// d : 10 +// } +// } +// +// then if the field mask is: +// +// paths: "f.b" +// +// then the result will be: +// +// f { +// b { +// d : 10 +// } +// c : 1 +// } +// +// However, if the update mask was: +// +// paths: "f.b.d" +// +// then the result would be: +// +// f { +// b { +// d : 10 +// x : 2 +// } +// c : 1 +// } +// +// In order to reset a field's value to the default, the field must +// be in the mask and set to the default value in the provided resource. +// Hence, in order to reset all fields of a resource, provide a default +// instance of the resource and set all fields in the mask, or do +// not provide a mask as described below. +// +// If a field mask is not present on update, the operation applies to +// all fields (as if a field mask of all fields has been specified). +// Note that in the presence of schema evolution, this may mean that +// fields the client does not know and has therefore not filled into +// the request will be reset to their default. If this is unwanted +// behavior, a specific service may require a client to always specify +// a field mask, producing an error if not. +// +// As with get operations, the location of the resource which +// describes the updated values in the request message depends on the +// operation kind. In any case, the effect of the field mask is +// required to be honored by the API. +// +// ## Considerations for HTTP REST +// +// The HTTP kind of an update operation which uses a field mask must +// be set to PATCH instead of PUT in order to satisfy HTTP semantics +// (PUT must only be used for full updates). +// +// # JSON Encoding of Field Masks +// +// In JSON, a field mask is encoded as a single string where paths are +// separated by a comma. Fields name in each path are converted +// to/from lower-camel naming conventions. +// +// As an example, consider the following message declarations: +// +// message Profile { +// User user = 1; +// Photo photo = 2; +// } +// message User { +// string display_name = 1; +// string address = 2; +// } +// +// In proto a field mask for `Profile` may look as such: +// +// mask { +// paths: "user.display_name" +// paths: "photo" +// } +// +// In JSON, the same mask is represented as below: +// +// { +// mask: "user.displayName,photo" +// } +// +// # Field Masks and Oneof Fields +// +// Field masks treat fields in oneofs just as regular fields. Consider the +// following message: +// +// message SampleMessage { +// oneof test_oneof { +// string name = 4; +// SubMessage sub_message = 9; +// } +// } +// +// The field mask can be: +// +// mask { +// paths: "name" +// } +// +// Or: +// +// mask { +// paths: "sub_message" +// } +// +// Note that oneof type names ("test_oneof" in this case) cannot be used in +// paths. +message FieldMask { + // The set of field mask paths. + repeated string paths = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto b/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto new file mode 100644 index 00000000000..f3b2c966811 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "SourceContextProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/source_context;source_context"; + +// `SourceContext` represents information about the source of a +// protobuf element, like the file in which it is defined. +message SourceContext { + // The path-qualified name of the .proto file that contained the associated + // protobuf element. For example: `"google/protobuf/source_context.proto"`. + string file_name = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto b/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto new file mode 100644 index 00000000000..7d7808e7fbb --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto @@ -0,0 +1,96 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "StructProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + + +// `Struct` represents a structured data value, consisting of fields +// which map to dynamically typed values. In some languages, `Struct` +// might be supported by a native representation. For example, in +// scripting languages like JS a struct is represented as an +// object. The details of that representation are described together +// with the proto support for the language. +// +// The JSON representation for `Struct` is JSON object. +message Struct { + // Unordered map of dynamically typed values. + map fields = 1; +} + +// `Value` represents a dynamically typed value which can be either +// null, a number, a string, a boolean, a recursive struct value, or a +// list of values. A producer of value is expected to set one of that +// variants, absence of any variant indicates an error. +// +// The JSON representation for `Value` is JSON value. +message Value { + // The kind of value. + oneof kind { + // Represents a null value. + NullValue null_value = 1; + // Represents a double value. + double number_value = 2; + // Represents a string value. + string string_value = 3; + // Represents a boolean value. + bool bool_value = 4; + // Represents a structured value. + Struct struct_value = 5; + // Represents a repeated `Value`. + ListValue list_value = 6; + } +} + +// `NullValue` is a singleton enumeration to represent the null value for the +// `Value` type union. +// +// The JSON representation for `NullValue` is JSON `null`. +enum NullValue { + // Null value. + NULL_VALUE = 0; +} + +// `ListValue` is a wrapper around a repeated field of values. +// +// The JSON representation for `ListValue` is JSON array. +message ListValue { + // Repeated field of dynamically typed values. + repeated Value values = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto b/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto new file mode 100644 index 00000000000..b7cbd17502f --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto @@ -0,0 +1,133 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/timestamp"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Timestamp represents a point in time independent of any time zone +// or calendar, represented as seconds and fractions of seconds at +// nanosecond resolution in UTC Epoch time. It is encoded using the +// Proleptic Gregorian Calendar which extends the Gregorian calendar +// backwards to year one. It is encoded assuming all minutes are 60 +// seconds long, i.e. leap seconds are "smeared" so that no leap second +// table is needed for interpretation. Range is from +// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. +// By restricting to that range, we ensure that we can convert to +// and from RFC 3339 date strings. +// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// +// Example 5: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required, though only UTC (as indicated by "Z") is presently supported. +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) +// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one +// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) +// to obtain a formatter capable of generating timestamps in this format. +// +// +message Timestamp { + + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/type.proto b/handwritten/nodejs-datastore/protos/google/protobuf/type.proto new file mode 100644 index 00000000000..624c15ee616 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/type.proto @@ -0,0 +1,187 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +import "google/protobuf/any.proto"; +import "google/protobuf/source_context.proto"; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TypeProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option go_package = "google.golang.org/genproto/protobuf/ptype;ptype"; + +// A protocol buffer message type. +message Type { + // The fully qualified message name. + string name = 1; + // The list of fields. + repeated Field fields = 2; + // The list of types appearing in `oneof` definitions in this type. + repeated string oneofs = 3; + // The protocol buffer options. + repeated Option options = 4; + // The source context. + SourceContext source_context = 5; + // The source syntax. + Syntax syntax = 6; +} + +// A single field of a message type. +message Field { + // Basic field types. + enum Kind { + // Field type unknown. + TYPE_UNKNOWN = 0; + // Field type double. + TYPE_DOUBLE = 1; + // Field type float. + TYPE_FLOAT = 2; + // Field type int64. + TYPE_INT64 = 3; + // Field type uint64. + TYPE_UINT64 = 4; + // Field type int32. + TYPE_INT32 = 5; + // Field type fixed64. + TYPE_FIXED64 = 6; + // Field type fixed32. + TYPE_FIXED32 = 7; + // Field type bool. + TYPE_BOOL = 8; + // Field type string. + TYPE_STRING = 9; + // Field type group. Proto2 syntax only, and deprecated. + TYPE_GROUP = 10; + // Field type message. + TYPE_MESSAGE = 11; + // Field type bytes. + TYPE_BYTES = 12; + // Field type uint32. + TYPE_UINT32 = 13; + // Field type enum. + TYPE_ENUM = 14; + // Field type sfixed32. + TYPE_SFIXED32 = 15; + // Field type sfixed64. + TYPE_SFIXED64 = 16; + // Field type sint32. + TYPE_SINT32 = 17; + // Field type sint64. + TYPE_SINT64 = 18; + }; + + // Whether a field is optional, required, or repeated. + enum Cardinality { + // For fields with unknown cardinality. + CARDINALITY_UNKNOWN = 0; + // For optional fields. + CARDINALITY_OPTIONAL = 1; + // For required fields. Proto2 syntax only. + CARDINALITY_REQUIRED = 2; + // For repeated fields. + CARDINALITY_REPEATED = 3; + }; + + // The field type. + Kind kind = 1; + // The field cardinality. + Cardinality cardinality = 2; + // The field number. + int32 number = 3; + // The field name. + string name = 4; + // The field type URL, without the scheme, for message or enumeration + // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. + string type_url = 6; + // The index of the field type in `Type.oneofs`, for message or enumeration + // types. The first type has index 1; zero means the type is not in the list. + int32 oneof_index = 7; + // Whether to use alternative packed wire representation. + bool packed = 8; + // The protocol buffer options. + repeated Option options = 9; + // The field JSON name. + string json_name = 10; + // The string value of the default value of this field. Proto2 syntax only. + string default_value = 11; +} + +// Enum type definition. +message Enum { + // Enum type name. + string name = 1; + // Enum value definitions. + repeated EnumValue enumvalue = 2; + // Protocol buffer options. + repeated Option options = 3; + // The source context. + SourceContext source_context = 4; + // The source syntax. + Syntax syntax = 5; +} + +// Enum value definition. +message EnumValue { + // Enum value name. + string name = 1; + // Enum value number. + int32 number = 2; + // Protocol buffer options. + repeated Option options = 3; +} + +// A protocol buffer option, which can be attached to a message, field, +// enumeration, etc. +message Option { + // The option's name. For protobuf built-in options (options defined in + // descriptor.proto), this is the short name. For example, `"map_entry"`. + // For custom options, it should be the fully-qualified name. For example, + // `"google.api.http"`. + string name = 1; + // The option's value packed in an Any message. If the value is a primitive, + // the corresponding wrapper type defined in google/protobuf/wrappers.proto + // should be used. If the value is an enum, it should be stored as an int32 + // value using the google.protobuf.Int32Value type. + Any value = 2; +} + +// The syntax in which a protocol buffer element is defined. +enum Syntax { + // Syntax `proto2`. + SYNTAX_PROTO2 = 0; + // Syntax `proto3`. + SYNTAX_PROTO3 = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto b/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto new file mode 100644 index 00000000000..8a0441c8f64 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto @@ -0,0 +1,183 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package proto3; + +option java_package = "com.google.protobuf.util"; +option java_outer_classname = "JsonFormatProto3"; + +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; +import "google/protobuf/wrappers.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/unittest.proto"; + +enum EnumType { + FOO = 0; + BAR = 1; +} + +message MessageType { + int32 value = 1; +} + +message TestMessage { + bool bool_value = 1; + int32 int32_value = 2; + int64 int64_value = 3; + uint32 uint32_value = 4; + uint64 uint64_value = 5; + float float_value = 6; + double double_value = 7; + string string_value = 8; + bytes bytes_value = 9; + EnumType enum_value = 10; + MessageType message_value = 11; + + repeated bool repeated_bool_value = 21; + repeated int32 repeated_int32_value = 22; + repeated int64 repeated_int64_value = 23; + repeated uint32 repeated_uint32_value = 24; + repeated uint64 repeated_uint64_value = 25; + repeated float repeated_float_value = 26; + repeated double repeated_double_value = 27; + repeated string repeated_string_value = 28; + repeated bytes repeated_bytes_value = 29; + repeated EnumType repeated_enum_value = 30; + repeated MessageType repeated_message_value = 31; +} + +message TestOneof { + // In JSON format oneof fields behave mostly the same as optional + // fields except that: + // 1. Oneof fields have field presence information and will be + // printed if it's set no matter whether it's the default value. + // 2. Multiple oneof fields in the same oneof cannot appear at the + // same time in the input. + oneof oneof_value { + int32 oneof_int32_value = 1; + string oneof_string_value = 2; + bytes oneof_bytes_value = 3; + EnumType oneof_enum_value = 4; + MessageType oneof_message_value = 5; + } +} + +message TestMap { + map bool_map = 1; + map int32_map = 2; + map int64_map = 3; + map uint32_map = 4; + map uint64_map = 5; + map string_map = 6; +} + +message TestNestedMap { + map bool_map = 1; + map int32_map = 2; + map int64_map = 3; + map uint32_map = 4; + map uint64_map = 5; + map string_map = 6; + map map_map = 7; +} + +message TestWrapper { + google.protobuf.BoolValue bool_value = 1; + google.protobuf.Int32Value int32_value = 2; + google.protobuf.Int64Value int64_value = 3; + google.protobuf.UInt32Value uint32_value = 4; + google.protobuf.UInt64Value uint64_value = 5; + google.protobuf.FloatValue float_value = 6; + google.protobuf.DoubleValue double_value = 7; + google.protobuf.StringValue string_value = 8; + google.protobuf.BytesValue bytes_value = 9; + + repeated google.protobuf.BoolValue repeated_bool_value = 11; + repeated google.protobuf.Int32Value repeated_int32_value = 12; + repeated google.protobuf.Int64Value repeated_int64_value = 13; + repeated google.protobuf.UInt32Value repeated_uint32_value = 14; + repeated google.protobuf.UInt64Value repeated_uint64_value = 15; + repeated google.protobuf.FloatValue repeated_float_value = 16; + repeated google.protobuf.DoubleValue repeated_double_value = 17; + repeated google.protobuf.StringValue repeated_string_value = 18; + repeated google.protobuf.BytesValue repeated_bytes_value = 19; +} + +message TestTimestamp { + google.protobuf.Timestamp value = 1; + repeated google.protobuf.Timestamp repeated_value = 2; +} + +message TestDuration { + google.protobuf.Duration value = 1; + repeated google.protobuf.Duration repeated_value = 2; +} + +message TestFieldMask { + google.protobuf.FieldMask value = 1; +} + +message TestStruct { + google.protobuf.Struct value = 1; + repeated google.protobuf.Struct repeated_value = 2; +} + +message TestAny { + google.protobuf.Any value = 1; + repeated google.protobuf.Any repeated_value = 2; +} + +message TestValue { + google.protobuf.Value value = 1; + repeated google.protobuf.Value repeated_value = 2; +} + +message TestListValue { + google.protobuf.ListValue value = 1; + repeated google.protobuf.ListValue repeated_value = 2; +} + +message TestBoolValue { + bool bool_value = 1; + map bool_map = 2; +} + +message TestCustomJsonName { + int32 value = 1 [json_name = "@value"]; +} + +message TestExtensions { + .protobuf_unittest.TestAllExtensions extensions = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto b/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto new file mode 100644 index 00000000000..01947639ac4 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto @@ -0,0 +1,118 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Wrappers for primitive (non-message) types. These types are useful +// for embedding primitives in the `google.protobuf.Any` type and for places +// where we need to distinguish between the absence of a primitive +// typed field and its default value. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/wrappers"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "WrappersProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// Wrapper message for `double`. +// +// The JSON representation for `DoubleValue` is JSON number. +message DoubleValue { + // The double value. + double value = 1; +} + +// Wrapper message for `float`. +// +// The JSON representation for `FloatValue` is JSON number. +message FloatValue { + // The float value. + float value = 1; +} + +// Wrapper message for `int64`. +// +// The JSON representation for `Int64Value` is JSON string. +message Int64Value { + // The int64 value. + int64 value = 1; +} + +// Wrapper message for `uint64`. +// +// The JSON representation for `UInt64Value` is JSON string. +message UInt64Value { + // The uint64 value. + uint64 value = 1; +} + +// Wrapper message for `int32`. +// +// The JSON representation for `Int32Value` is JSON number. +message Int32Value { + // The int32 value. + int32 value = 1; +} + +// Wrapper message for `uint32`. +// +// The JSON representation for `UInt32Value` is JSON number. +message UInt32Value { + // The uint32 value. + uint32 value = 1; +} + +// Wrapper message for `bool`. +// +// The JSON representation for `BoolValue` is JSON `true` and `false`. +message BoolValue { + // The bool value. + bool value = 1; +} + +// Wrapper message for `string`. +// +// The JSON representation for `StringValue` is JSON string. +message StringValue { + // The string value. + string value = 1; +} + +// Wrapper message for `bytes`. +// +// The JSON representation for `BytesValue` is JSON string. +message BytesValue { + // The bytes value. + bytes value = 1; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/color.proto b/handwritten/nodejs-datastore/protos/google/type/color.proto new file mode 100644 index 00000000000..2856ce91ee8 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/color.proto @@ -0,0 +1,164 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +import "google/protobuf/wrappers.proto"; + +option go_package = "google.golang.org/genproto/googleapis/type/color;color"; +option java_multiple_files = true; +option java_outer_classname = "ColorProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents a color in the RGBA color space. This representation is designed +// for simplicity of conversion to/from color representations in various +// languages over compactness; for example, the fields of this representation +// can be trivially provided to the constructor of "java.awt.Color" in Java; it +// can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" +// method in iOS; and, with just a little work, it can be easily formatted into +// a CSS "rgba()" string in JavaScript, as well. Here are some examples: +// +// Example (Java): +// +// import com.google.type.Color; +// +// // ... +// public static java.awt.Color fromProto(Color protocolor) { +// float alpha = protocolor.hasAlpha() +// ? protocolor.getAlpha().getValue() +// : 1.0; +// +// return new java.awt.Color( +// protocolor.getRed(), +// protocolor.getGreen(), +// protocolor.getBlue(), +// alpha); +// } +// +// public static Color toProto(java.awt.Color color) { +// float red = (float) color.getRed(); +// float green = (float) color.getGreen(); +// float blue = (float) color.getBlue(); +// float denominator = 255.0; +// Color.Builder resultBuilder = +// Color +// .newBuilder() +// .setRed(red / denominator) +// .setGreen(green / denominator) +// .setBlue(blue / denominator); +// int alpha = color.getAlpha(); +// if (alpha != 255) { +// result.setAlpha( +// FloatValue +// .newBuilder() +// .setValue(((float) alpha) / denominator) +// .build()); +// } +// return resultBuilder.build(); +// } +// // ... +// +// Example (iOS / Obj-C): +// +// // ... +// static UIColor* fromProto(Color* protocolor) { +// float red = [protocolor red]; +// float green = [protocolor green]; +// float blue = [protocolor blue]; +// FloatValue* alpha_wrapper = [protocolor alpha]; +// float alpha = 1.0; +// if (alpha_wrapper != nil) { +// alpha = [alpha_wrapper value]; +// } +// return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; +// } +// +// static Color* toProto(UIColor* color) { +// CGFloat red, green, blue, alpha; +// if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { +// return nil; +// } +// Color* result = [Color alloc] init]; +// [result setRed:red]; +// [result setGreen:green]; +// [result setBlue:blue]; +// if (alpha <= 0.9999) { +// [result setAlpha:floatWrapperWithValue(alpha)]; +// } +// [result autorelease]; +// return result; +// } +// // ... +// +// Example (JavaScript): +// +// // ... +// +// var protoToCssColor = function(rgb_color) { +// var redFrac = rgb_color.red || 0.0; +// var greenFrac = rgb_color.green || 0.0; +// var blueFrac = rgb_color.blue || 0.0; +// var red = Math.floor(redFrac * 255); +// var green = Math.floor(greenFrac * 255); +// var blue = Math.floor(blueFrac * 255); +// +// if (!('alpha' in rgb_color)) { +// return rgbToCssColor_(red, green, blue); +// } +// +// var alphaFrac = rgb_color.alpha.value || 0.0; +// var rgbParams = [red, green, blue].join(','); +// return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); +// }; +// +// var rgbToCssColor_ = function(red, green, blue) { +// var rgbNumber = new Number((red << 16) | (green << 8) | blue); +// var hexString = rgbNumber.toString(16); +// var missingZeros = 6 - hexString.length; +// var resultBuilder = ['#']; +// for (var i = 0; i < missingZeros; i++) { +// resultBuilder.push('0'); +// } +// resultBuilder.push(hexString); +// return resultBuilder.join(''); +// }; +// +// // ... +message Color { + // The amount of red in the color as a value in the interval [0, 1]. + float red = 1; + + // The amount of green in the color as a value in the interval [0, 1]. + float green = 2; + + // The amount of blue in the color as a value in the interval [0, 1]. + float blue = 3; + + // The fraction of this color that should be applied to the pixel. That is, + // the final pixel color is defined by the equation: + // + // pixel color = alpha * (this color) + (1.0 - alpha) * (background color) + // + // This means that a value of 1.0 corresponds to a solid color, whereas + // a value of 0.0 corresponds to a completely transparent color. This + // uses a wrapper message rather than a simple float scalar so that it is + // possible to distinguish between a default value and the value being unset. + // If omitted, this color object is to be rendered as a solid color + // (as if the alpha value had been explicitly given with a value of 1.0). + google.protobuf.FloatValue alpha = 4; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/date.proto b/handwritten/nodejs-datastore/protos/google/type/date.proto new file mode 100644 index 00000000000..d873ed462f8 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/date.proto @@ -0,0 +1,45 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/type/date;date"; +option java_multiple_files = true; +option java_outer_classname = "DateProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents a whole calendar date, e.g. date of birth. The time of day and +// time zone are either specified elsewhere or are not significant. The date +// is relative to the Proleptic Gregorian Calendar. The day may be 0 to +// represent a year and month where the day is not significant, e.g. credit card +// expiration date. The year may be 0 to represent a month and day independent +// of year, e.g. anniversary date. Related types are [google.type.TimeOfDay][google.type.TimeOfDay] +// and `google.protobuf.Timestamp`. +message Date { + // Year of date. Must be from 1 to 9999, or 0 if specifying a date without + // a year. + int32 year = 1; + + // Month of year. Must be from 1 to 12. + int32 month = 2; + + // Day of month. Must be from 1 to 31 and valid for the year and month, or 0 + // if specifying a year/month where the day is not significant. + int32 day = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto b/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto new file mode 100644 index 00000000000..4eaa9e729f7 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto @@ -0,0 +1,51 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/dayofweek;dayofweek"; +option java_multiple_files = true; +option java_outer_classname = "DayOfWeekProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents a day of week. +enum DayOfWeek { + // The unspecified day-of-week. + DAY_OF_WEEK_UNSPECIFIED = 0; + + // The day-of-week of Monday. + MONDAY = 1; + + // The day-of-week of Tuesday. + TUESDAY = 2; + + // The day-of-week of Wednesday. + WEDNESDAY = 3; + + // The day-of-week of Thursday. + THURSDAY = 4; + + // The day-of-week of Friday. + FRIDAY = 5; + + // The day-of-week of Saturday. + SATURDAY = 6; + + // The day-of-week of Sunday. + SUNDAY = 7; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/latlng.proto b/handwritten/nodejs-datastore/protos/google/type/latlng.proto new file mode 100644 index 00000000000..4e8c65d227a --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/latlng.proto @@ -0,0 +1,71 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/latlng;latlng"; +option java_multiple_files = true; +option java_outer_classname = "LatLngProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// An object representing a latitude/longitude pair. This is expressed as a pair +// of doubles representing degrees latitude and degrees longitude. Unless +// specified otherwise, this must conform to the +// WGS84 +// standard. Values must be within normalized ranges. +// +// Example of normalization code in Python: +// +// def NormalizeLongitude(longitude): +// """Wraps decimal degrees longitude to [-180.0, 180.0].""" +// q, r = divmod(longitude, 360.0) +// if r > 180.0 or (r == 180.0 and q <= -1.0): +// return r - 360.0 +// return r +// +// def NormalizeLatLng(latitude, longitude): +// """Wraps decimal degrees latitude and longitude to +// [-90.0, 90.0] and [-180.0, 180.0], respectively.""" +// r = latitude % 360.0 +// if r <= 90.0: +// return r, NormalizeLongitude(longitude) +// elif r >= 270.0: +// return r - 360, NormalizeLongitude(longitude) +// else: +// return 180 - r, NormalizeLongitude(longitude + 180.0) +// +// assert 180.0 == NormalizeLongitude(180.0) +// assert -180.0 == NormalizeLongitude(-180.0) +// assert -179.0 == NormalizeLongitude(181.0) +// assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0) +// assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0) +// assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) +// assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0) +// assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0) +// assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0) +// assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0) +// assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0) +// assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0) +// assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0) +message LatLng { + // The latitude in degrees. It must be in the range [-90.0, +90.0]. + double latitude = 1; + + // The longitude in degrees. It must be in the range [-180.0, +180.0]. + double longitude = 2; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/money.proto b/handwritten/nodejs-datastore/protos/google/type/money.proto new file mode 100644 index 00000000000..154acc9f295 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/money.proto @@ -0,0 +1,42 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/money;money"; +option java_multiple_files = true; +option java_outer_classname = "MoneyProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents an amount of money with its currency type. +message Money { + // The 3-letter currency code defined in ISO 4217. + string currency_code = 1; + + // The whole units of the amount. + // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. + int64 units = 2; + + // Number of nano (10^-9) units of the amount. + // The value must be between -999,999,999 and +999,999,999 inclusive. + // If `units` is positive, `nanos` must be positive or zero. + // If `units` is zero, `nanos` can be positive, zero, or negative. + // If `units` is negative, `nanos` must be negative or zero. + // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. + int32 nanos = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/postal_address.proto b/handwritten/nodejs-datastore/protos/google/type/postal_address.proto new file mode 100644 index 00000000000..b08b61726ac --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/postal_address.proto @@ -0,0 +1,132 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/postaladdress;postaladdress"; +option java_multiple_files = true; +option java_outer_classname = "PostalAddressProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents a postal address, e.g. for postal delivery or payments addresses. +// Given a postal address, a postal service can deliver items to a premise, P.O. +// Box or similar. +// It is not intended to model geographical locations (roads, towns, +// mountains). +// +// In typical usage an address would be created via user input or from importing +// existing data, depending on the type of process. +// +// Advice on address input / editing: +// - Use an i18n-ready address widget such as +// https://github.com/googlei18n/libaddressinput) +// - Users should not be presented with UI elements for input or editing of +// fields outside countries where that field is used. +// +// For more guidance on how to use this schema, please see: +// https://support.google.com/business/answer/6397478 +message PostalAddress { + // The schema revision of the `PostalAddress`. + // All new revisions **must** be backward compatible with old revisions. + int32 revision = 1; + + // Required. CLDR region code of the country/region of the address. This + // is never inferred and it is up to the user to ensure the value is + // correct. See http://cldr.unicode.org/ and + // http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html + // for details. Example: "CH" for Switzerland. + string region_code = 2; + + // Optional. BCP-47 language code of the contents of this address (if + // known). This is often the UI language of the input form or is expected + // to match one of the languages used in the address' country/region, or their + // transliterated equivalents. + // This can affect formatting in certain countries, but is not critical + // to the correctness of the data and will never affect any validation or + // other non-formatting related operations. + // + // If this value is not known, it should be omitted (rather than specifying a + // possibly incorrect default). + // + // Examples: "zh-Hant", "ja", "ja-Latn", "en". + string language_code = 3; + + // Optional. Postal code of the address. Not all countries use or require + // postal codes to be present, but where they are used, they may trigger + // additional validation with other parts of the address (e.g. state/zip + // validation in the U.S.A.). + string postal_code = 4; + + // Optional. Additional, country-specific, sorting code. This is not used + // in most regions. Where it is used, the value is either a string like + // "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number + // alone, representing the "sector code" (Jamaica), "delivery area indicator" + // (Malawi) or "post office indicator" (e.g. Côte d'Ivoire). + string sorting_code = 5; + + // Optional. Highest administrative subdivision which is used for postal + // addresses of a country or region. + // For example, this can be a state, a province, an oblast, or a prefecture. + // Specifically, for Spain this is the province and not the autonomous + // community (e.g. "Barcelona" and not "Catalonia"). + // Many countries don't use an administrative area in postal addresses. E.g. + // in Switzerland this should be left unpopulated. + string administrative_area = 6; + + // Optional. Generally refers to the city/town portion of the address. + // Examples: US city, IT comune, UK post town. + // In regions of the world where localities are not well defined or do not fit + // into this structure well, leave locality empty and use address_lines. + string locality = 7; + + // Optional. Sublocality of the address. + // For example, this can be neighborhoods, boroughs, districts. + string sublocality = 8; + + // Unstructured address lines describing the lower levels of an address. + // + // Because values in address_lines do not have type information and may + // sometimes contain multiple values in a single field (e.g. + // "Austin, TX"), it is important that the line order is clear. The order of + // address lines should be "envelope order" for the country/region of the + // address. In places where this can vary (e.g. Japan), address_language is + // used to make it explicit (e.g. "ja" for large-to-small ordering and + // "ja-Latn" or "en" for small-to-large). This way, the most specific line of + // an address can be selected based on the language. + // + // The minimum permitted structural representation of an address consists + // of a region_code with all remaining information placed in the + // address_lines. It would be possible to format such an address very + // approximately without geocoding, but no semantic reasoning could be + // made about any of the address components until it was at least + // partially resolved. + // + // Creating an address only containing a region_code and address_lines, and + // then geocoding is the recommended way to handle completely unstructured + // addresses (as opposed to guessing which parts of the address should be + // localities or administrative areas). + repeated string address_lines = 9; + + // Optional. The recipient at the address. + // This field may, under certain circumstances, contain multiline information. + // For example, it might contain "care of" information. + repeated string recipients = 10; + + // Optional. The name of the organization at the address. + string organization = 11; +} diff --git a/handwritten/nodejs-datastore/protos/google/type/timeofday.proto b/handwritten/nodejs-datastore/protos/google/type/timeofday.proto new file mode 100644 index 00000000000..b130256e223 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/type/timeofday.proto @@ -0,0 +1,43 @@ +// Copyright 2016 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.type; + +option go_package = "google.golang.org/genproto/googleapis/type/timeofday;timeofday"; +option java_multiple_files = true; +option java_outer_classname = "TimeOfDayProto"; +option java_package = "com.google.type"; +option objc_class_prefix = "GTP"; + + +// Represents a time of day. The date and time zone are either not significant +// or are specified elsewhere. An API may chose to allow leap seconds. Related +// types are [google.type.Date][google.type.Date] and `google.protobuf.Timestamp`. +message TimeOfDay { + // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose + // to allow the value "24:00:00" for scenarios like business closing time. + int32 hours = 1; + + // Minutes of hour of day. Must be from 0 to 59. + int32 minutes = 2; + + // Seconds of minutes of the time. Must normally be from 0 to 59. An API may + // allow the value 60 if it allows leap-seconds. + int32 seconds = 3; + + // Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. + int32 nanos = 4; +} diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index e4a485f9eab..cdc3d312171 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -25,6 +25,7 @@ var common = require('@google-cloud/common'); var commonGrpc = require('@google-cloud/common-grpc'); var is = require('is'); var modelo = require('modelo'); +var path = require('path'); /** * @type {module:datastore/request} @@ -310,8 +311,13 @@ function Datastore(options) { projectIdRequired: false, baseUrl: this.baseUrl_, customEndpoint: this.customEndpoint_, - service: 'datastore', - apiVersion: 'v1', + protosDir: path.resolve(__dirname, '../protos'), + protoServices: { + Datastore: { + path: 'google/datastore/v1/datastore.proto', + service: 'datastore.v1' + } + }, scopes: ['https://www.googleapis.com/auth/datastore'], packageJson: require('../package.json'), grpcMetadata: { diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 71c2e0fc792..6bcee3b1a71 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -18,6 +18,7 @@ var assert = require('assert'); var extend = require('extend'); +var path = require('path'); var proxyquire = require('proxyquire'); var util = require('@google-cloud/common').util; @@ -160,8 +161,17 @@ describe('Datastore', function() { assert.strictEqual(calledWith.projectIdRequired, false); assert.strictEqual(calledWith.baseUrl, datastore.baseUrl_); assert.strictEqual(calledWith.customEndpoint, datastore.customEndpoint_); - assert.strictEqual(calledWith.service, 'datastore'); - assert.strictEqual(calledWith.apiVersion, 'v1'); + + var protosDir = path.resolve(__dirname, '../protos'); + assert.strictEqual(calledWith.protosDir, protosDir); + + assert.deepStrictEqual(calledWith.protoServices, { + Datastore: { + path: 'google/datastore/v1/datastore.proto', + service: 'datastore.v1' + } + }); + assert.deepEqual(calledWith.scopes, [ 'https://www.googleapis.com/auth/datastore' ]); From afe6977da2282bf65f6db5f8347a8fd696fe387b Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 19 Jul 2017 20:14:28 -0400 Subject: [PATCH 134/820] bigtable/datastore/logging/pubsub/spanner/vision: update common-grpc --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8ea0f93366d..9fe8de7b754 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -52,7 +52,7 @@ ], "dependencies": { "@google-cloud/common": "^0.13.0", - "@google-cloud/common-grpc": "^0.3.4", + "@google-cloud/common-grpc": "^0.4.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", From 0544c64011bfa1fc3981eed33d53e3bcc60dc150 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Wed, 19 Jul 2017 20:19:04 -0400 Subject: [PATCH 135/820] datastore @ 1.0.7 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9fe8de7b754..297ab119f2e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "1.0.6", + "version": "1.0.7", "author": "Google Inc.", "description": "Cloud Datastore Client Library for Node.js", "contributors": [ From d33eb5aade723fe84502c0c9ffe5e19e44aed334 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 1 Aug 2017 13:41:16 -0400 Subject: [PATCH 136/820] datastore: allow nested unindexed properties (#2497) --- handwritten/nodejs-datastore/src/entity.js | 74 ++++++++- handwritten/nodejs-datastore/src/request.js | 72 ++++---- .../nodejs-datastore/src/transaction.js | 40 +++-- .../nodejs-datastore/system-test/datastore.js | 69 ++++++++ handwritten/nodejs-datastore/test/entity.js | 155 +++++++++++++++++- 5 files changed, 359 insertions(+), 51 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 51676e67813..728c496de10 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -362,14 +362,20 @@ entity.entityFromEntityProto = entityFromEntityProto; * * @example * entityToEntityProto({ - * name: 'Burcu', - * legit: true + * excludeFromIndexes: [ + * 'name' + * ], + * data: { + * name: 'Burcu', + * legit: true + * } * }); * // { * // key: null, * // properties: { * // name: { * // stringValue: 'Burcu' + * // excludeFromIndexes: true * // }, * // legit: { * // booleanValue: true @@ -378,14 +384,70 @@ entity.entityFromEntityProto = entityFromEntityProto; * // } */ function entityToEntityProto(entityObject) { - return { + var properties = entityObject.data; + var excludeFromIndexes = entityObject.excludeFromIndexes; + + var entityProto = { key: null, - properties: Object.keys(entityObject).reduce(function(properties, key) { - properties[key] = entity.encodeValue(entityObject[key]); - return properties; + properties: Object.keys(properties).reduce(function(encoded, key) { + encoded[key] = entity.encodeValue(properties[key]); + return encoded; }, {}) }; + + if (excludeFromIndexes && excludeFromIndexes.length > 0) { + excludeFromIndexes.forEach(function(excludePath) { + excludePathFromEntity(entityProto, excludePath); + }); + } + + return entityProto; + + function excludePathFromEntity(entity, path) { + var arrayIndex = path.indexOf('[]'); + var entityIndex = path.indexOf('.'); + + var hasArrayPath = arrayIndex > -1; + var hasEntityPath = entityIndex > -1; + + if (!hasArrayPath && !hasEntityPath) { + if (entity.properties[path]) { + // This is the property to exclude! + entity.properties[path].excludeFromIndexes = true; + } + return; + } + + var delimiterIndex; + if (hasArrayPath && hasEntityPath) { + delimiterIndex = Math.min(arrayIndex, entityIndex); + } else { + delimiterIndex = Math.max(arrayIndex, entityIndex); + } + + var firstPathPartIsArray = delimiterIndex === arrayIndex; + var firstPathPartIsEntity = delimiterIndex === entityIndex; + + var delimiter = firstPathPartIsArray ? '[]' : '.'; + var splitPath = path.split(delimiter); + var firstPathPart = splitPath.shift(); + var remainderPath = splitPath.join(delimiter).replace(/^(\.|[])/, ''); + + if (!entity.properties[firstPathPart]) { + return; + } + + if (firstPathPartIsArray) { + var array = entity.properties[firstPathPart].arrayValue; + array.values.forEach(function(arrayValue) { + excludePathFromEntity(arrayValue.entityValue, remainderPath); + }); + } else if (firstPathPartIsEntity) { + var parentEntity = entity.properties[firstPathPart].entityValue; + excludePathFromEntity(parentEntity, remainderPath); + } + } } entity.entityToEntityProto = entityToEntityProto; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 8eeb7d43444..ff8bfa60863 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -463,10 +463,11 @@ DatastoreRequest.prototype.get = function(keys, options, callback) { * * @param {object|object[]} entities - Datastore key object(s). * @param {Key} entities.key - Datastore key object. - * @param {object|object[]} entities.data - Data to save with the provided key. - * If you provide an array of objects, you must use the explicit syntax: - * `name` for the name of the property and `value` for its value. You may - * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {module:datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data - Data to save with the provided key. * @param {function} callback - The callback function. * @param {?error} callback.err - An error returned while making this request * @param {object} callback.apiResponse - The full API response. @@ -720,8 +721,8 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * the entity will be updated with the data specified. * * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an entity's `data` property as an - * array. See below for an example. + * included in *all* indexes, you must supply an `excludeFromIndexes` array. See + * below for an example. * * @borrows {module:datastore/transaction#save} as save * @@ -729,12 +730,13 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * * @param {object|object[]} entities - Datastore key object(s). * @param {Key} entities.key - Datastore key object. + * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * indexing using a simple JSON path notation. See the example below to see + * how to target properties at different levels of nesting within your + * entity. * @param {string=} entities.method - Explicit method to use, either 'insert', * 'update', or 'upsert'. - * @param {object|object[]} entities.data - Data to save with the provided key. - * If you provide an array of objects, you must use the explicit syntax: - * `name` for the name of the property and `value` for its value. You may - * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {object} entities.data - Data to save with the provided key. * @param {function} callback - The callback function. * @param {?error} callback.err - An error returned while making this request * @param {object} callback.apiResponse - The full API response. @@ -840,18 +842,27 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * datastore.save(entity, function(err, apiResponse) {}); * * //- - * // To specify an `excludeFromIndexes` value for a Datastore entity, pass in - * // an array for the key's data. + * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. + * // This will allow storing string values larger than 1500 bytes. * //- * var entity = { * key: datastore.key('Company'), - * data: [ - * { - * name: 'rating', - * value: 10, - * excludeFromIndexes: true - * } - * ] + * excludeFromIndexes: [ + * 'description', + * 'embeddedEntity.description', + * 'arrayValue[].description' + * ], + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * { + * description: 'Long string (...)' + * } + * ] + * } * }; * * datastore.save(entity, function(err, apiResponse) {}); @@ -931,6 +942,9 @@ DatastoreRequest.prototype.save = function(entities, callback) { insertIndexes[index] = true; } + // @TODO remove in @google-cloud/datastore@2.0.0 + // This was replaced with a more efficient mechanism in the top-level + // `excludeFromIndexes` option. if (is.array(entityObject.data)) { entityProto.properties = entityObject.data.reduce(function(acc, data) { var value = entity.encodeValue(data.value); @@ -951,7 +965,7 @@ DatastoreRequest.prototype.save = function(entities, callback) { return acc; }, {}); } else { - entityProto = entity.entityToEntityProto(entityObject.data); + entityProto = entity.entityToEntityProto(entityObject); } entityProto.key = entity.keyToKeyProto(entityObject.key); @@ -1003,10 +1017,11 @@ DatastoreRequest.prototype.save = function(entities, callback) { * * @param {object|object[]} entities - Datastore key object(s). * @param {Key} entities.key - Datastore key object. - * @param {object|object[]} entities.data - Data to save with the provided key. - * If you provide an array of objects, you must use the explicit syntax: - * `name` for the name of the property and `value` for its value. You may - * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {module:datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data - Data to save with the provided key. * @param {function} callback - The callback function. * @param {?error} callback.err - An error returned while making this request * @param {object} callback.apiResponse - The full API response. @@ -1024,10 +1039,11 @@ DatastoreRequest.prototype.update = function(entities, callback) { * * @param {object|object[]} entities - Datastore key object(s). * @param {Key} entities.key - Datastore key object. - * @param {object|object[]} entities.data - Data to save with the provided key. - * If you provide an array of objects, you must use the explicit syntax: - * `name` for the name of the property and `value` for its value. You may - * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {module:datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data - Data to save with the provided key. * @param {function} callback - The callback function. * @param {?error} callback.err - An error returned while making this request * @param {object} callback.apiResponse - The full API response. diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 1de68bc6051..c28bbd0f56c 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -407,15 +407,16 @@ Transaction.prototype.run = function(callback) { * the entity will be updated with the data specified. * * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an entity's `data` property as an - * array. See below for an example. + * included in *all* indexes, you must supply an `excludeFromIndexes` array. See + * below for an example. * * @param {object|object[]} entities - Datastore key object(s). * @param {Key} entities.key - Datastore key object. - * @param {object|object[]} entities.data - Data to save with the provided key. - * If you provide an array of objects, you must use the explicit syntax: - * `name` for the name of the property and `value` for its value. You may - * also specify an `excludeFromIndexes` property, set to `true` or `false`. + * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * indexing using a simple JSON path notation. See the example below to see + * how to target properties at different levels of nesting within your + * entity. + * @param {object} entities.data - Data to save with the provided key. * * @example * //- @@ -447,8 +448,8 @@ Transaction.prototype.run = function(callback) { * }); * * //- - * // To specify an `excludeFromIndexes` value for a Datastore entity, pass in - * // an array for the key's data. The above example would then look like: + * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. + * // This will allow storing string values larger than 1500 bytes. * //- * transaction.run(function(err) { * if (err) { @@ -457,13 +458,22 @@ Transaction.prototype.run = function(callback) { * * transaction.save({ * key: key, - * data: [ - * { - * name: 'rating', - * value: '10', - * excludeFromIndexes: false - * } - * ] + * excludeFromIndexes: [ + * 'description', + * 'embeddedEntity.description', + * 'arrayValue[].description' + * ], + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * { + * description: 'Long string (...)' + * } + * ] + * } * }); * * transaction.commit(function(err) { diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 533f6317cc3..eb917ecaa88 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -81,6 +81,75 @@ describe('Datastore', function() { } }; + it('should excludeFromIndexes correctly', function(done) { + var longString = Buffer.alloc(1501, '.').toString(); + var postKey = datastore.key(['Post', 'post1']); + + var data = { + longString: longString, + notMetadata: true, + metadata: { + longString: longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString: longString, + nestedLongStringArray: [ + { + longString: longString, + nestedProperty: true + }, + { + longString: longString + } + ] + } + ] + }, + longStringArray: [ + { + longString: longString, + nestedLongStringArray: [ + { + longString: longString, + nestedProperty: true + }, + { + longString: longString + } + ] + } + ] + } + }; + + datastore.save({ + key: postKey, + data: data, + excludeFromIndexes: [ + 'longString', + 'metadata.obj.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString' + ] + }, function(err) { + assert.ifError(err); + + datastore.get(postKey, function(err, entity) { + assert.ifError(err); + + assert.deepEqual(entity, data); + assert.deepEqual(entity[datastore.KEY], postKey); + + datastore.delete(postKey, done); + }); + }); + }); + it('should save/get/delete with a key name', function(done) { var postKey = datastore.key(['Post', 'post1']); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 3c50d19bf1a..048d643e547 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -501,12 +501,14 @@ describe('entity', function() { var value = 'Stephen'; var entityObject = { - name: value + data: { + name: value + } }; var expectedEntityProto = { key: null, - properties: entityObject + properties: entityObject.data }; entity.encodeValue = function(value_) { @@ -519,6 +521,155 @@ describe('entity', function() { expectedEntityProto ); }); + + it('should respect excludeFromIndexes', function() { + var value = 'Stephen'; + + var entityObject = { + excludeFromIndexes: [ + 'name', + 'entity.name', + 'array[].name', + 'array[].entity.name', + 'array[].entity.array[].name', + 'array[].array[].entity.name' + ], + + data: { + name: value, + + entity: { + name: value + }, + + array: [ + { + name: value + }, + { + entity: { + name: value, + array: [ + { + name: value + } + ] + } + }, + { + array: [ + { + entity: { + name: value + } + } + ] + } + ] + } + }; + + var expectedEntityProto = { + key: null, + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + }, + entity: { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + } + } + } + }, + array: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + } + } + } + }, + { + entityValue: { + properties: { + entity: { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + }, + array: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + } + } + } + } + ] + } + } + } + } + } + } + } + }, + { + entityValue: { + properties: { + array: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + entity: { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true + } + } + } + } + } + } + } + ] + } + } + } + } + } + ] + } + } + } + }; + + assert.deepEqual( + entity.entityToEntityProto(entityObject), + expectedEntityProto + ); + }); }); describe('formatArray', function() { From 0955c9a4cbaea0934393dcaf18dafe61499b1b72 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 1 Aug 2017 13:42:43 -0400 Subject: [PATCH 137/820] datastore @ 1.1.0 tagged. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 297ab119f2e..dc48fcc09b8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "1.0.7", + "version": "1.1.0", "author": "Google Inc.", "description": "Cloud Datastore Client Library for Node.js", "contributors": [ From 5bffb1c1c8ed37e420be6777049ad5fba9cc25b3 Mon Sep 17 00:00:00 2001 From: Ace Nassri Date: Fri, 4 Aug 2017 17:29:41 -0700 Subject: [PATCH 138/820] Update dependencies + fix a few tests (#448) * Add semistandard as a devDependency * Fix storage tests * Fix language tests * Update (some) dependencies * Fix language slackbot tests --- .../nodejs-datastore/samples/package.json | 8 +- .../nodejs-datastore/samples/yarn.lock | 935 ++++++++---------- 2 files changed, 420 insertions(+), 523 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a5226594ac0..d2e0ed39972 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -18,14 +18,14 @@ "test": "npm run system-test" }, "dependencies": { - "@google-cloud/datastore": "1.0.2", + "@google-cloud/datastore": "1.1.0", "yargs": "8.0.2" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "1.4.15", - "ava": "0.19.1", + "@google-cloud/nodejs-repo-tools": "1.4.16", + "ava": "0.21.0", "proxyquire": "1.8.0", - "sinon": "2.3.4" + "sinon": "3.0.0" }, "cloud-repo-tools": { "requiresKeyFile": true, diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock index be3aba2247c..800af005dba 100644 --- a/handwritten/nodejs-datastore/samples/yarn.lock +++ b/handwritten/nodejs-datastore/samples/yarn.lock @@ -6,7 +6,7 @@ version "2.0.0" resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" -"@ava/babel-preset-stage-4@^1.0.0": +"@ava/babel-preset-stage-4@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz#ae60be881a0babf7d35f52aba770d1f6194f76bd" dependencies: @@ -30,22 +30,28 @@ "@ava/babel-plugin-throws-helper" "^2.0.0" babel-plugin-espower "^2.3.2" -"@ava/pretty-format@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ava/pretty-format/-/pretty-format-1.1.0.tgz#d0a57d25eb9aeab9643bdd1a030642b91c123e28" +"@ava/write-file-atomic@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz#d625046f3495f1f5e372135f473909684b429247" dependencies: - ansi-styles "^2.2.1" - esutils "^2.0.2" + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" -"@google-cloud/common-grpc@^0.3.4": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.3.6.tgz#2cda68e62212443593ed751fabe76e8c8cf2605b" +"@concordance/react@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@concordance/react/-/react-1.0.0.tgz#fcf3cad020e5121bfd1c61d05bc3516aac25f734" + dependencies: + arrify "^1.0.1" + +"@google-cloud/common-grpc@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.4.0.tgz#39f3058b6c6f5f233ee7d4279e9dcb8903afbff0" dependencies: "@google-cloud/common" "^0.13.0" dot-prop "^2.4.0" duplexify "^3.5.0" extend "^3.0.0" - google-proto-files "^0.12.0" grpc "^1.3.1" is "^3.2.0" modelo "^4.2.0" @@ -53,8 +59,8 @@ through2 "^2.0.3" "@google-cloud/common@^0.13.0": - version "0.13.3" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.3.tgz#d73ee3fa511f29ffbcc44667898685709e9fec8c" + version "0.13.4" + resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.4.tgz#75bb7f60931cfc9d94da0b5d408950d0bbf0e979" dependencies: array-uniq "^1.0.3" arrify "^1.0.1" @@ -63,7 +69,7 @@ duplexify "^3.5.0" ent "^2.2.0" extend "^3.0.0" - google-auto-auth "^0.6.0" + google-auto-auth "^0.7.1" is "^3.2.0" log-driver "^1.2.5" methmeth "^1.1.0" @@ -75,17 +81,18 @@ string-format-obj "^1.1.0" through2 "^2.0.3" -"@google-cloud/datastore@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.0.2.tgz#b713f3f03a713b38fcb9631aca3f8e96cda816a9" +"@google-cloud/datastore@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.1.0.tgz#386e9c9bdc4397945c8a47983821470f47041889" dependencies: "@google-cloud/common" "^0.13.0" - "@google-cloud/common-grpc" "^0.3.4" + "@google-cloud/common-grpc" "^0.4.0" arrify "^1.0.0" concat-stream "^1.5.0" create-error-class "^3.0.2" extend "^3.0.0" google-gax "^0.13.0" + google-proto-files "^0.12.0" is "^3.0.1" lodash.flatten "^4.2.0" modelo "^4.2.0" @@ -93,21 +100,21 @@ propprop "^0.3.0" split-array-stream "^1.0.0" -"@google-cloud/nodejs-repo-tools@1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.15.tgz#b047dd70b4829a6037b71452843ef80b06c55a0f" +"@google-cloud/nodejs-repo-tools@1.4.16": + version "1.4.16" + resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.16.tgz#a87b1f9db8426494ee7ea21a3a0cf172c66fe350" dependencies: - ava "0.19.1" + ava "0.21.0" colors "1.1.2" - fs-extra "3.0.1" - got "7.0.0" + fs-extra "4.0.1" + got "7.1.0" handlebars "4.0.10" lodash "4.17.4" proxyquire "1.8.0" - sinon "2.3.2" + sinon "3.0.0" string "3.3.3" supertest "3.0.0" - yargs "8.0.1" + yargs "8.0.2" abbrev@1: version "1.1.0" @@ -138,30 +145,38 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-escapes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: - color-convert "^1.0.0" + color-convert "^1.9.0" ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" dependencies: - arrify "^1.0.0" micromatch "^2.1.5" + normalize-path "^2.0.0" aproba@^1.0.3: version "1.1.2" @@ -195,8 +210,8 @@ arr-exclude@^1.0.0: resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" array-differ@^1.0.0: version "1.0.0" @@ -251,9 +266,9 @@ async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" +async@^2.1.2, async@^2.3.0, async@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: lodash "^4.14.0" @@ -266,33 +281,35 @@ auto-bind@^1.1.0: resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" ava-init@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.0.tgz#9304c8b4c357d66e3dfdae1fbff47b1199d5c55d" + version "0.2.1" + resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.1.tgz#75ac4c8553326290d2866e63b62fa7035684bd58" dependencies: arr-exclude "^1.0.0" - execa "^0.5.0" + execa "^0.7.0" has-yarn "^1.0.0" read-pkg-up "^2.0.0" - write-pkg "^2.0.0" + write-pkg "^3.1.0" -ava@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.19.1.tgz#43dd82435ad19b3980ffca2488f05daab940b273" +ava@0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/ava/-/ava-0.21.0.tgz#cd8d8ea3546f57150dea38548b9f72f8ca583d29" dependencies: - "@ava/babel-preset-stage-4" "^1.0.0" + "@ava/babel-preset-stage-4" "^1.1.0" "@ava/babel-preset-transform-test-files" "^3.0.0" - "@ava/pretty-format" "^1.1.0" + "@ava/write-file-atomic" "^2.2.0" + "@concordance/react" "^1.0.0" + ansi-escapes "^2.0.0" + ansi-styles "^3.1.0" arr-flatten "^1.0.1" array-union "^1.0.1" array-uniq "^1.0.2" arrify "^1.0.0" auto-bind "^1.1.0" ava-init "^0.2.0" - babel-code-frame "^6.16.0" babel-core "^6.17.0" bluebird "^3.0.0" caching-transform "^1.0.0" - chalk "^1.0.0" + chalk "^2.0.1" chokidar "^1.4.2" clean-stack "^1.1.1" clean-yaml-object "^0.1.0" @@ -302,59 +319,59 @@ ava@0.19.1: co-with-promise "^4.6.0" code-excerpt "^2.1.0" common-path-prefix "^1.0.0" + concordance "^3.0.0" convert-source-map "^1.2.0" core-assert "^0.2.0" currently-unhandled "^0.4.1" debug "^2.2.0" - diff "^3.0.1" - diff-match-patch "^1.0.0" dot-prop "^4.1.0" empower-core "^0.6.1" equal-length "^1.0.0" figures "^2.0.0" - find-cache-dir "^0.1.1" + find-cache-dir "^1.0.0" fn-name "^2.0.0" get-port "^3.0.0" globby "^6.0.0" has-flag "^2.0.0" - hullabaloo-config-manager "^1.0.0" + hullabaloo-config-manager "^1.1.0" ignore-by-default "^1.0.0" + import-local "^0.1.1" indent-string "^3.0.0" is-ci "^1.0.7" is-generator-fn "^1.0.0" is-obj "^1.0.0" is-observable "^0.2.0" is-promise "^2.1.0" - jest-diff "19.0.0" - jest-snapshot "19.0.2" js-yaml "^3.8.2" last-line-stream "^1.0.0" + lodash.clonedeepwith "^4.5.0" lodash.debounce "^4.0.3" lodash.difference "^4.3.0" lodash.flatten "^4.2.0" - lodash.isequal "^4.5.0" loud-rejection "^1.2.0" - matcher "^0.1.1" + make-dir "^1.0.0" + matcher "^1.0.0" md5-hex "^2.0.0" meow "^3.7.0" - mkdirp "^0.5.1" - ms "^0.7.1" + ms "^2.0.0" multimatch "^2.1.0" observable-to-promise "^0.5.0" - option-chain "^0.1.0" + option-chain "^1.0.0" package-hash "^2.0.0" pkg-conf "^2.0.0" plur "^2.0.0" pretty-ms "^2.0.0" require-precompiled "^0.1.0" - resolve-cwd "^1.0.0" + resolve-cwd "^2.0.0" + safe-buffer "^5.1.1" slash "^1.0.0" source-map-support "^0.4.0" stack-utils "^1.0.0" - strip-ansi "^3.0.1" + strip-ansi "^4.0.0" strip-bom-buf "^1.0.0" - supports-color "^3.2.3" + supports-color "^4.0.0" time-require "^0.1.2" + trim-off-newlines "^1.0.1" unique-temp-dir "^1.0.0" update-notifier "^2.1.0" @@ -366,7 +383,7 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: +babel-code-frame@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: @@ -613,8 +630,8 @@ babel-register@^6.24.1: source-map-support "^0.4.2" babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" @@ -653,8 +670,8 @@ babel-types@^6.24.1, babel-types@^6.25.0: to-fast-properties "^1.0.1" babylon@^6.1.0, babylon@^6.17.2: - version "6.17.3" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48" + version "6.17.4" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" balanced-match@^1.0.0: version "1.0.0" @@ -671,8 +688,8 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + version "1.9.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" block-stream@*: version "0.0.9" @@ -691,15 +708,15 @@ boom@2.x.x: hoek "2.x.x" boxen@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.1.0.tgz#b1b69dd522305e807a99deee777dbd6e5167b102" + version "1.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" - chalk "^1.1.1" + chalk "^2.0.1" cli-boxes "^1.0.0" string-width "^2.0.0" - term-size "^0.1.0" + term-size "^1.2.0" widest-line "^1.0.0" brace-expansion@^1.1.7: @@ -767,7 +784,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0: +camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -779,10 +796,6 @@ capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -802,7 +815,7 @@ chalk@^0.4.0: has-color "~0.1.0" strip-ansi "~0.1.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -812,6 +825,14 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -854,10 +875,10 @@ cli-spinners@^1.0.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" cli-truncate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.0.0.tgz#21eb91f47b3f6560f004db77a769b4668d9c5518" + version "1.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" dependencies: - slice-ansi "0.0.4" + slice-ansi "^1.0.0" string-width "^2.0.0" cliui@^2.1.0: @@ -868,7 +889,7 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.2.0: +cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" dependencies: @@ -896,15 +917,15 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -color-convert@^1.0.0: +color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: color-name "^1.1.1" color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" colors@1.1.2: version "1.1.2" @@ -920,12 +941,6 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - common-path-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" @@ -950,9 +965,25 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concordance@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/concordance/-/concordance-3.0.0.tgz#b2286af54405fc995fc7345b0b106d8dd073cb29" + dependencies: + date-time "^2.1.0" + esutils "^2.0.2" + fast-diff "^1.1.1" + function-name-support "^0.2.0" + js-string-escape "^1.0.1" + lodash.clonedeep "^4.5.0" + lodash.flattendeep "^4.4.0" + lodash.merge "^4.6.0" + md5-hex "^2.0.0" + semver "^5.3.0" + well-known-symbols "^1.0.0" + configstore@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.0.tgz#45df907073e26dfa1cf4b2d52f5b60545eaa11d1" + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -988,7 +1019,7 @@ core-js@^2.0.0, core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -998,18 +1029,12 @@ create-error-class@^3.0.0, create-error-class@^3.0.2: dependencies: capture-stack-trace "^1.0.0" -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: lru-cache "^4.0.1" + shebang-command "^1.2.0" which "^1.2.9" cryptiles@2.x.x: @@ -1038,6 +1063,12 @@ date-time@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" +date-time@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" + dependencies: + time-zone "^1.0.0" + debug@^2.1.1, debug@^2.2.0: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" @@ -1080,13 +1111,9 @@ detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" -diff-match-patch@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.0.tgz#1cc3c83a490d67f95d91e39f6ad1f2e086b63048" - -diff@^3.0.0, diff@^3.0.1, diff@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" +diff@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" dot-prop@^2.4.0: version "2.4.0" @@ -1095,8 +1122,8 @@ dot-prop@^2.4.0: is-obj "^1.0.0" dot-prop@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1" + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" dependencies: is-obj "^1.0.0" @@ -1105,10 +1132,10 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" duplexify@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" dependencies: - end-of-stream "1.0.0" + end-of-stream "^1.0.0" inherits "^2.0.1" readable-stream "^2.0.0" stream-shift "^1.0.0" @@ -1133,11 +1160,11 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" dependencies: - once "~1.3.0" + once "^1.4.0" ent@^2.2.0: version "2.2.0" @@ -1170,9 +1197,9 @@ espower-location-detector@^1.0.0: source-map "^0.5.0" xtend "^4.0.0" -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" espurify@^1.6.0: version "1.7.0" @@ -1188,23 +1215,12 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -execa@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" + cross-spawn "^5.0.1" + get-stream "^3.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" @@ -1233,9 +1249,13 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fast-diff@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.1.tgz#0aea0e4e605b6a2189f0e936d4b7fbaf1b7cfd9b" figures@^2.0.0: version "2.0.0" @@ -1264,13 +1284,13 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" dependencies: commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" + make-dir "^1.0.0" + pkg-dir "^2.0.0" find-up@^1.0.0: version "1.1.2" @@ -1319,7 +1339,7 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -formatio@1.2.0: +formatio@1.2.0, formatio@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" dependencies: @@ -1329,9 +1349,9 @@ formidable@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" +fs-extra@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880" dependencies: graceful-fs "^4.1.2" jsonfile "^3.0.0" @@ -1365,6 +1385,10 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +function-name-support@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1378,22 +1402,12 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gcp-metadata@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.1.0.tgz#abe21f1ea324dd0b34a3f06ca81763fb1eee37d9" +gcp-metadata@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.2.0.tgz#62dafca65f3a631bc8ce2ec3b77661f5f9387a0a" dependencies: extend "^3.0.0" - retry-request "^1.3.2" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" + retry-request "^2.0.0" get-caller-file@^1.0.1: version "1.0.2" @@ -1407,13 +1421,6 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1480,14 +1487,13 @@ google-auto-auth@^0.5.2: object-assign "^3.0.0" request "^2.79.0" -google-auto-auth@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.6.1.tgz#c05d820e9454739ecf28a8892eeab3d1624f2cb3" +google-auto-auth@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.7.1.tgz#c8260444912dd8ceeccd838761d56f462937bd02" dependencies: - async "^2.1.2" - gcp-metadata "^0.1.0" + async "^2.3.0" + gcp-metadata "^0.2.0" google-auth-library "^0.10.0" - object-assign "^3.0.0" request "^2.79.0" google-gax@^0.13.0: @@ -1511,16 +1517,16 @@ google-p12-pem@^0.1.0: node-forge "^0.7.1" google-proto-files@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.12.0.tgz#a49075c1fcc2bd8a480186831c297605b9774b2b" + version "0.12.1" + resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.12.1.tgz#6434dc7e025a0d0c82e5f04e615c737d6a4c4387" google-proto-files@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.9.1.tgz#c760c79059bf62ba3ac56e1d1ba7b8d4560803be" -got@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.0.0.tgz#82d439f6763cdb1c8821b7a3aae2784c88c3b8d3" +got@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" dependencies: decompress-response "^3.2.0" duplexer3 "^0.1.4" @@ -1530,11 +1536,12 @@ got@7.0.0: is-stream "^1.0.0" isurl "^1.0.0-alpha5" lowercase-keys "^1.0.0" - p-cancelable "^0.2.0" + p-cancelable "^0.3.0" p-timeout "^1.1.1" safe-buffer "^5.0.1" timed-out "^4.0.0" url-parse-lax "^1.0.0" + url-to-options "^1.0.1" got@^6.7.1: version "6.7.1" @@ -1556,18 +1563,14 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - grpc@^1.2, grpc@^1.3.1: - version "1.3.8" - resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.3.8.tgz#37d113c1ac402ad14edca7d38dcf90624c2e79e4" + version "1.4.1" + resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.4.1.tgz#3ee4a8346a613f2823928c9f8f99081b6368ec7c" dependencies: arguejs "^0.2.3" lodash "^4.15.0" nan "^2.0.0" - node-pre-gyp "^0.6.0" + node-pre-gyp "^0.6.35" protobufjs "^5.0.0" gtoken@^1.2.1: @@ -1593,15 +1596,6 @@ har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" @@ -1619,14 +1613,20 @@ has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-symbol-support-x@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.0.tgz#442d89b1d0ac6cf5ff2f7b916ee539869b93a256" + +has-to-string-tag-x@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.0.tgz#49d7bcde85c2409be38ac327e3e119a451657c7b" + dependencies: + has-symbol-support-x "^1.4.0" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1656,8 +1656,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" http-signature@~1.1.0: version "1.1.1" @@ -1667,7 +1667,7 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" -hullabaloo-config-manager@^1.0.0: +hullabaloo-config-manager@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3" dependencies: @@ -1694,6 +1694,13 @@ import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +import-local@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -1705,8 +1712,8 @@ indent-string@^2.1.0: repeating "^2.0.0" indent-string@^3.0.0, indent-string@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" inflight@^1.0.4: version "1.0.6" @@ -1715,7 +1722,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1734,8 +1741,8 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" irregular-plurals@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" + version "1.3.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" is-arrayish@^0.2.1: version "0.2.1" @@ -1811,15 +1818,6 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -1866,10 +1864,6 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -1925,86 +1919,26 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" isurl@^1.0.0-alpha5: - version "1.0.0-alpha5" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0-alpha5.tgz#77fa122fff1f31be27b6f157661f88582ba1cd36" + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" dependencies: + has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -jest-diff@19.0.0, jest-diff@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c" - dependencies: - chalk "^1.1.3" - diff "^3.0.0" - jest-matcher-utils "^19.0.0" - pretty-format "^19.0.0" - -jest-file-exists@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8" - -jest-matcher-utils@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d" - dependencies: - chalk "^1.1.3" - pretty-format "^19.0.0" - -jest-message-util@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-19.0.0.tgz#721796b89c0e4d761606f9ba8cb828a3b6246416" - dependencies: - chalk "^1.1.1" - micromatch "^2.3.11" - -jest-mock@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-19.0.0.tgz#67038641e9607ab2ce08ec4a8cb83aabbc899d01" - -jest-snapshot@19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b" - dependencies: - chalk "^1.1.3" - jest-diff "^19.0.0" - jest-file-exists "^19.0.0" - jest-matcher-utils "^19.0.0" - jest-util "^19.0.2" - natural-compare "^1.4.0" - pretty-format "^19.0.0" - -jest-util@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41" - dependencies: - chalk "^1.1.1" - graceful-fs "^4.1.6" - jest-file-exists "^19.0.0" - jest-message-util "^19.0.0" - jest-mock "^19.0.0" - jest-validate "^19.0.2" - leven "^2.0.0" - mkdirp "^0.5.1" - -jest-validate@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c" - dependencies: - chalk "^1.1.1" - jest-matcher-utils "^19.0.0" - leven "^2.0.0" - pretty-format "^19.0.0" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" js-yaml@^3.8.2: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + version "3.9.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" dependencies: argparse "^1.0.7" - esprima "^3.1.1" + esprima "^4.0.0" jsbn@~0.1.0: version "0.1.1" @@ -2037,8 +1971,8 @@ json5@^0.5.0, json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" jsonfile@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" optionalDependencies: graceful-fs "^4.1.6" @@ -2046,18 +1980,18 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" dependencies: assert-plus "1.0.0" - extsprintf "1.0.2" + extsprintf "1.3.0" json-schema "0.2.3" - verror "1.3.6" + verror "1.10.0" + +just-extend@^1.1.22: + version "1.1.22" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" jwa@^1.1.4: version "1.1.5" @@ -2110,10 +2044,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -leven@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2188,6 +2118,10 @@ lolex@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" +lolex@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" + long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" @@ -2213,7 +2147,7 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" -lru-cache@^4.0.0, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" dependencies: @@ -2230,9 +2164,9 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" -matcher@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" +matcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19" dependencies: escape-string-regexp "^1.0.4" @@ -2285,7 +2219,7 @@ methods@^1.1.1, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2303,15 +2237,15 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" dependencies: - mime-db "~1.27.0" + mime-db "~1.29.0" mime@^1.2.11, mime@^1.3.4: version "1.3.6" @@ -2331,7 +2265,7 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -2339,6 +2273,10 @@ minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + "mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -2353,14 +2291,10 @@ module-not-found-error@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" -ms@2.0.0: +ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@^0.7.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" - multimatch@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" @@ -2378,15 +2312,20 @@ native-promise-only@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nise@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" + dependencies: + formatio "^1.2.0" + just-extend "^1.1.22" + lolex "^1.6.0" + path-to-regexp "^1.7.0" node-forge@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" -node-pre-gyp@^0.6.0, node-pre-gyp@^0.6.36: +node-pre-gyp@^0.6.35, node-pre-gyp@^0.6.36: version "0.6.36" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" dependencies: @@ -2400,10 +2339,6 @@ node-pre-gyp@^0.6.0, node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -2412,26 +2347,20 @@ nopt@^4.0.1: osenv "^0.1.4" normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - dependencies: - path-key "^1.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2439,8 +2368,8 @@ npm-run-path@^2.0.0: path-key "^2.0.0" npmlog@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -2477,18 +2406,12 @@ observable-to-promise@^0.5.0: is-observable "^0.2.0" symbol-observable "^1.0.4" -once@^1.3.0, once@^1.3.3: +once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -2502,11 +2425,9 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -option-chain@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" - dependencies: - object-assign "^4.0.1" +option-chain@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-1.0.0.tgz#938d73bd4e1783f948d34023644ada23669e30f2" optjs@~3.2.2: version "3.2.2" @@ -2516,11 +2437,17 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: - execa "^0.5.0" + execa "^0.7.0" lcid "^1.0.0" mem "^1.1.0" @@ -2535,9 +2462,9 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-cancelable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.2.0.tgz#3152f4f30be7606b60ebfe8bb93b3fdf69085e46" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" p-finally@^1.0.0: version "1.0.0" @@ -2554,8 +2481,10 @@ p-locate@^2.0.0: p-limit "^1.1.0" p-timeout@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.1.1.tgz#d28e9fdf96e328886fbff078f886ad158c53bf6d" + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.0.tgz#9820f99434c5817868b4f34809ee5291660d5b6c" + dependencies: + p-finally "^1.0.0" package-hash@^1.2.0: version "1.2.0" @@ -2618,10 +2547,6 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -2681,12 +2606,6 @@ pkg-conf@^2.0.0: find-up "^2.0.0" load-json-file "^2.0.0" -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -2711,12 +2630,6 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -pretty-format@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84" - dependencies: - ansi-styles "^3.0.0" - pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" @@ -2772,14 +2685,14 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -qs@^6.1.0, qs@~6.4.0: +qs@^6.1.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" + +qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -2827,15 +2740,15 @@ read-pkg@^2.0.0: path-type "^2.0.0" readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: - version "2.2.11" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72" + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: core-util-is "~1.0.0" - inherits "~2.0.1" + inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~1.0.6" - safe-buffer "~5.0.1" - string_decoder "~1.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" util-deprecate "~1.0.1" readdirp@^2.0.0: @@ -2924,31 +2837,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@2.76.0: - version "2.76.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.76.0.tgz#be44505afef70360a0436955106be3945d95560e" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -2988,15 +2876,11 @@ require-precompiled@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" -resolve-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" - dependencies: - resolve-from "^2.0.0" - -resolve-from@^2.0.0: +resolve-cwd@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" resolve-from@^3.0.0: version "3.0.0" @@ -3013,13 +2897,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -retry-request@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-1.3.2.tgz#59ad24e71f8ae3f312d5f7b4bcf467a5e5a57bd6" - dependencies: - request "2.76.0" - through2 "^2.0.0" - retry-request@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-2.0.5.tgz#d089a14a15db9ed60685b8602b40f4dcc0d3fb3c" @@ -3039,13 +2916,9 @@ rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: dependencies: glob "^7.0.5" -safe-buffer@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223" - -safe-buffer@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" samsam@1.x, samsam@^1.1.3: version "1.2.1" @@ -3058,8 +2931,8 @@ semver-diff@^2.0.0: semver "^5.0.3" "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -3069,31 +2942,29 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.2.tgz#c43a9c570f32baac1159505cfeed19108855df89" +sinon@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.0.0.tgz#f6919755c8c705e0b4ae977e8351bbcbaf6d91de" dependencies: diff "^3.1.0" formatio "1.2.0" - lolex "^1.6.0" - native-promise-only "^0.8.1" - path-to-regexp "^1.7.0" - samsam "^1.1.3" - text-encoding "0.6.4" - type-detect "^4.0.0" - -sinon@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.4.tgz#466ad8d1bae86d6db51aa218b92e997bc3e5db88" - dependencies: - diff "^3.1.0" - formatio "1.2.0" - lolex "^1.6.0" + lolex "^2.1.2" native-promise-only "^0.8.1" + nise "^1.0.1" path-to-regexp "^1.7.0" samsam "^1.1.3" text-encoding "0.6.4" @@ -3103,9 +2974,11 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +slice-ansi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" slide@^1.1.5: version "1.1.6" @@ -3117,12 +2990,18 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sort-keys@^1.1.1, sort-keys@^1.1.2: +sort-keys@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" dependencies: is-plain-obj "^1.0.0" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + source-map-support@^0.4.0, source-map-support@^0.4.2: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" @@ -3205,21 +3084,21 @@ string-width@^1.0.1, string-width@^1.0.2: strip-ansi "^3.0.0" string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" + strip-ansi "^4.0.0" string@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0" -string_decoder@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: - safe-buffer "~5.0.1" + safe-buffer "~5.1.0" stringstream@~0.0.4: version "0.0.5" @@ -3231,6 +3110,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -3295,11 +3180,11 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" +supports-color@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" dependencies: - has-flag "^1.0.0" + has-flag "^2.0.0" symbol-observable@^0.2.2: version "0.2.4" @@ -3330,11 +3215,11 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" -term-size@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca" +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" dependencies: - execa "^0.4.0" + execa "^0.7.0" text-encoding@0.6.4: version "0.6.4" @@ -3360,6 +3245,10 @@ time-require@^0.1.2: pretty-ms "^0.2.1" text-table "^0.2.0" +time-zone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -3378,6 +3267,10 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +trim-off-newlines@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -3388,10 +3281,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -3440,8 +3329,8 @@ unique-temp-dir@^1.0.0: uid2 "0.0.3" universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" unzip-response@^2.0.1: version "2.0.1" @@ -3466,13 +3355,17 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" validate-npm-package-license@^3.0.1: version "3.0.1" @@ -3481,19 +3374,25 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: - extsprintf "1.0.2" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +well-known-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-1.0.0.tgz#73c78ae81a7726a8fa598e2880801c8b16225518" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.8, which@^1.2.9: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" +which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" @@ -3513,6 +3412,10 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -3548,7 +3451,7 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" slide "^1.1.5" -write-json-file@^2.0.0: +write-json-file@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.2.0.tgz#51862506bbb3b619eefab7859f1fd6c6d0530876" dependencies: @@ -3559,12 +3462,12 @@ write-json-file@^2.0.0: sort-keys "^1.1.1" write-file-atomic "^2.0.0" -write-pkg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-2.1.0.tgz#353aa44c39c48c21440f5c08ce6abd46141c9c08" +write-pkg@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.1.0.tgz#030a9994cc9993d25b4e75a9f1a1923607291ce9" dependencies: - sort-keys "^1.1.2" - write-json-file "^2.0.0" + sort-keys "^2.0.0" + write-json-file "^2.2.0" xdg-basedir@^3.0.0: version "3.0.0" @@ -3574,7 +3477,7 @@ xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.1: +y18n@^3.2.0, y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -3588,24 +3491,6 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - yargs@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" @@ -3624,7 +3509,19 @@ yargs@8.0.2: y18n "^3.2.1" yargs-parser "^7.0.0" -yargs@^3.10.0, yargs@~3.10.0: +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" dependencies: From 347d595fb647e62a6a6f06d4c0a7f1d2de8f40b3 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 23 Aug 2017 14:19:35 -0700 Subject: [PATCH 139/820] Build updates. (#462) --- .../nodejs-datastore/samples/package.json | 3 +- .../nodejs-datastore/samples/yarn.lock | 3531 ----------------- 2 files changed, 1 insertion(+), 3533 deletions(-) delete mode 100644 handwritten/nodejs-datastore/samples/yarn.lock diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d2e0ed39972..5155eb921ec 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,8 +14,7 @@ "scripts": { "lint": "samples lint", "pretest": "npm run lint", - "system-test": "ava -T 1m --verbose system-test/*.test.js", - "test": "npm run system-test" + "test": "samples test run --cmd ava -- -T 1m --verbose system-test/*.test.js" }, "dependencies": { "@google-cloud/datastore": "1.1.0", diff --git a/handwritten/nodejs-datastore/samples/yarn.lock b/handwritten/nodejs-datastore/samples/yarn.lock deleted file mode 100644 index 800af005dba..00000000000 --- a/handwritten/nodejs-datastore/samples/yarn.lock +++ /dev/null @@ -1,3531 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ava/babel-plugin-throws-helper@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" - -"@ava/babel-preset-stage-4@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz#ae60be881a0babf7d35f52aba770d1f6194f76bd" - dependencies: - babel-plugin-check-es2015-constants "^6.8.0" - babel-plugin-syntax-trailing-function-commas "^6.20.0" - babel-plugin-transform-async-to-generator "^6.16.0" - babel-plugin-transform-es2015-destructuring "^6.19.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-parameters "^6.21.0" - babel-plugin-transform-es2015-spread "^6.8.0" - babel-plugin-transform-es2015-sticky-regex "^6.8.0" - babel-plugin-transform-es2015-unicode-regex "^6.11.0" - babel-plugin-transform-exponentiation-operator "^6.8.0" - package-hash "^1.2.0" - -"@ava/babel-preset-transform-test-files@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz#cded1196a8d8d9381a509240ab92e91a5ec069f7" - dependencies: - "@ava/babel-plugin-throws-helper" "^2.0.0" - babel-plugin-espower "^2.3.2" - -"@ava/write-file-atomic@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz#d625046f3495f1f5e372135f473909684b429247" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -"@concordance/react@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@concordance/react/-/react-1.0.0.tgz#fcf3cad020e5121bfd1c61d05bc3516aac25f734" - dependencies: - arrify "^1.0.1" - -"@google-cloud/common-grpc@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@google-cloud/common-grpc/-/common-grpc-0.4.0.tgz#39f3058b6c6f5f233ee7d4279e9dcb8903afbff0" - dependencies: - "@google-cloud/common" "^0.13.0" - dot-prop "^2.4.0" - duplexify "^3.5.0" - extend "^3.0.0" - grpc "^1.3.1" - is "^3.2.0" - modelo "^4.2.0" - retry-request "^2.0.0" - through2 "^2.0.3" - -"@google-cloud/common@^0.13.0": - version "0.13.4" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.13.4.tgz#75bb7f60931cfc9d94da0b5d408950d0bbf0e979" - dependencies: - array-uniq "^1.0.3" - arrify "^1.0.1" - concat-stream "^1.6.0" - create-error-class "^3.0.2" - duplexify "^3.5.0" - ent "^2.2.0" - extend "^3.0.0" - google-auto-auth "^0.7.1" - is "^3.2.0" - log-driver "^1.2.5" - methmeth "^1.1.0" - modelo "^4.2.0" - request "^2.79.0" - retry-request "^2.0.0" - split-array-stream "^1.0.0" - stream-events "^1.0.1" - string-format-obj "^1.1.0" - through2 "^2.0.3" - -"@google-cloud/datastore@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@google-cloud/datastore/-/datastore-1.1.0.tgz#386e9c9bdc4397945c8a47983821470f47041889" - dependencies: - "@google-cloud/common" "^0.13.0" - "@google-cloud/common-grpc" "^0.4.0" - arrify "^1.0.0" - concat-stream "^1.5.0" - create-error-class "^3.0.2" - extend "^3.0.0" - google-gax "^0.13.0" - google-proto-files "^0.12.0" - is "^3.0.1" - lodash.flatten "^4.2.0" - modelo "^4.2.0" - prop-assign "^1.0.0" - propprop "^0.3.0" - split-array-stream "^1.0.0" - -"@google-cloud/nodejs-repo-tools@1.4.16": - version "1.4.16" - resolved "https://registry.yarnpkg.com/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-1.4.16.tgz#a87b1f9db8426494ee7ea21a3a0cf172c66fe350" - dependencies: - ava "0.21.0" - colors "1.1.2" - fs-extra "4.0.1" - got "7.1.0" - handlebars "4.0.10" - lodash "4.17.4" - proxyquire "1.8.0" - sinon "3.0.0" - string "3.3.3" - supertest "3.0.0" - yargs "8.0.2" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - dependencies: - string-width "^2.0.0" - -ansi-escapes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -arguejs@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/arguejs/-/arguejs-0.2.3.tgz#b6f939f5fe0e3cd1f3f93e2aa9262424bf312af7" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-exclude@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1, array-uniq@^1.0.2, array-uniq@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -ascli@~1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" - dependencies: - colour "~0.7.1" - optjs "~3.2.2" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.2, async@^2.3.0, async@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - dependencies: - lodash "^4.14.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -auto-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" - -ava-init@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.1.tgz#75ac4c8553326290d2866e63b62fa7035684bd58" - dependencies: - arr-exclude "^1.0.0" - execa "^0.7.0" - has-yarn "^1.0.0" - read-pkg-up "^2.0.0" - write-pkg "^3.1.0" - -ava@0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.21.0.tgz#cd8d8ea3546f57150dea38548b9f72f8ca583d29" - dependencies: - "@ava/babel-preset-stage-4" "^1.1.0" - "@ava/babel-preset-transform-test-files" "^3.0.0" - "@ava/write-file-atomic" "^2.2.0" - "@concordance/react" "^1.0.0" - ansi-escapes "^2.0.0" - ansi-styles "^3.1.0" - arr-flatten "^1.0.1" - array-union "^1.0.1" - array-uniq "^1.0.2" - arrify "^1.0.0" - auto-bind "^1.1.0" - ava-init "^0.2.0" - babel-core "^6.17.0" - bluebird "^3.0.0" - caching-transform "^1.0.0" - chalk "^2.0.1" - chokidar "^1.4.2" - clean-stack "^1.1.1" - clean-yaml-object "^0.1.0" - cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - cli-truncate "^1.0.0" - co-with-promise "^4.6.0" - code-excerpt "^2.1.0" - common-path-prefix "^1.0.0" - concordance "^3.0.0" - convert-source-map "^1.2.0" - core-assert "^0.2.0" - currently-unhandled "^0.4.1" - debug "^2.2.0" - dot-prop "^4.1.0" - empower-core "^0.6.1" - equal-length "^1.0.0" - figures "^2.0.0" - find-cache-dir "^1.0.0" - fn-name "^2.0.0" - get-port "^3.0.0" - globby "^6.0.0" - has-flag "^2.0.0" - hullabaloo-config-manager "^1.1.0" - ignore-by-default "^1.0.0" - import-local "^0.1.1" - indent-string "^3.0.0" - is-ci "^1.0.7" - is-generator-fn "^1.0.0" - is-obj "^1.0.0" - is-observable "^0.2.0" - is-promise "^2.1.0" - js-yaml "^3.8.2" - last-line-stream "^1.0.0" - lodash.clonedeepwith "^4.5.0" - lodash.debounce "^4.0.3" - lodash.difference "^4.3.0" - lodash.flatten "^4.2.0" - loud-rejection "^1.2.0" - make-dir "^1.0.0" - matcher "^1.0.0" - md5-hex "^2.0.0" - meow "^3.7.0" - ms "^2.0.0" - multimatch "^2.1.0" - observable-to-promise "^0.5.0" - option-chain "^1.0.0" - package-hash "^2.0.0" - pkg-conf "^2.0.0" - plur "^2.0.0" - pretty-ms "^2.0.0" - require-precompiled "^0.1.0" - resolve-cwd "^2.0.0" - safe-buffer "^5.1.1" - slash "^1.0.0" - source-map-support "^0.4.0" - stack-utils "^1.0.0" - strip-ansi "^4.0.0" - strip-bom-buf "^1.0.0" - supports-color "^4.0.0" - time-require "^0.1.2" - trim-off-newlines "^1.0.1" - unique-temp-dir "^1.0.0" - update-notifier "^2.1.0" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@^6.17.0, babel-core@^6.24.1: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.25.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.25.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-generator@^6.1.0, babel-generator@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-espower@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e" - dependencies: - babel-generator "^6.1.0" - babylon "^6.1.0" - call-matcher "^1.0.0" - core-js "^2.0.0" - espower-location-detector "^1.0.0" - espurify "^1.6.0" - estraverse "^4.1.1" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-trailing-function-commas@^6.20.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-destructuring@^6.19.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.18.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-parameters@^6.21.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-unicode-regex@^6.11.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.22.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@^6.24.1, babel-template@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - lodash "^4.2.0" - -babel-traverse@^6.24.1, babel-traverse@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - babylon "^6.17.2" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.24.1, babel-types@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.1.0, babylon@^6.17.2: - version "6.17.4" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64url@2.0.0, base64url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -binary-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.0.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boxen@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^1.0.0" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -bytebuffer@~5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - dependencies: - long "~3" - -caching-transform@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" - -call-matcher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.1.tgz#5134d077984f712a54dad3cbf62de28dce416ca8" - dependencies: - core-js "^2.0.0" - deep-equal "^1.0.0" - espurify "^1.6.0" - estraverse "^4.0.0" - -call-signature@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0, camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -chalk@^1.0.0, chalk@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chokidar@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -ci-info@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" - -clean-stack@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" - -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" - -cli-truncate@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" - dependencies: - slice-ansi "^1.0.0" - string-width "^2.0.0" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.0.3, cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -co-with-promise@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" - dependencies: - pinkie-promise "^1.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -code-excerpt@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.0.tgz#5dcc081e88f4a7e3b554e9e35d7ef232d47f8147" - dependencies: - convert-to-spaces "^1.0.1" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -colors@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -colour@~0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -common-path-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -component-emitter@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.5.0, concat-stream@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concordance@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/concordance/-/concordance-3.0.0.tgz#b2286af54405fc995fc7345b0b106d8dd073cb29" - dependencies: - date-time "^2.1.0" - esutils "^2.0.2" - fast-diff "^1.1.1" - function-name-support "^0.2.0" - js-string-escape "^1.0.1" - lodash.clonedeep "^4.5.0" - lodash.flattendeep "^4.4.0" - lodash.merge "^4.6.0" - md5-hex "^2.0.0" - semver "^5.3.0" - well-known-symbols "^1.0.0" - -configstore@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -convert-source-map@^1.1.0, convert-source-map@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -convert-to-spaces@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" - -cookiejar@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a" - -core-assert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" - -core-js@^2.0.0, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -create-error-class@^3.0.0, create-error-class@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-time@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" - -date-time@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" - dependencies: - time-zone "^1.0.0" - -debug@^2.1.1, debug@^2.2.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decompress-response@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - dependencies: - mimic-response "^1.0.0" - -deep-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - -diff@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" - -dot-prop@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-2.4.0.tgz#848e28f7f1d50740c6747ab3cb07670462b6f89c" - dependencies: - is-obj "^1.0.0" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - -duplexify@^3.5.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ecdsa-sig-formatter@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" - dependencies: - base64url "^2.0.0" - safe-buffer "^5.0.1" - -empower-core@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.2.tgz#5adef566088e31fba80ba0a36df47d7094169144" - dependencies: - call-signature "0.0.2" - core-js "^2.0.0" - -end-of-stream@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -equal-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -es6-error@^4.0.1, es6-error@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -espower-location-detector@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" - dependencies: - is-url "^1.2.1" - path-is-absolute "^1.0.0" - source-map "^0.5.0" - xtend "^4.0.0" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -espurify@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.7.0.tgz#1c5cf6cbccc32e6f639380bd4f991fab9ba9d226" - dependencies: - core-js "^2.0.0" - -estraverse@^4.0.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -extend@^3.0.0, extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -fast-diff@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.1.tgz#0aea0e4e605b6a2189f0e936d4b7fbaf1b7cfd9b" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-keys@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" - dependencies: - is-object "~1.0.1" - merge-descriptors "~1.0.0" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -fn-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.2.0.tgz#9a5e3b9295f980b2623cf64fa238b14cebca707b" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -formatio@1.2.0, formatio@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" - dependencies: - samsam "1.x" - -formidable@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" - -fs-extra@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-name-support@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gcp-metadata@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.2.0.tgz#62dafca65f3a631bc8ce2ec3b77661f5f9387a0a" - dependencies: - extend "^3.0.0" - retry-request "^2.0.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-port@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.1.0.tgz#ef01b18a84ca6486970ff99e54446141a73ffd3e" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@^7.0.3, glob@^7.0.5: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.0.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -google-auth-library@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e" - dependencies: - gtoken "^1.2.1" - jws "^3.1.4" - lodash.noop "^3.0.1" - request "^2.74.0" - -google-auto-auth@^0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.5.4.tgz#1d86c7928d633e75a9c1ab034a527efcce4a40b1" - dependencies: - async "^2.1.2" - google-auth-library "^0.10.0" - object-assign "^3.0.0" - request "^2.79.0" - -google-auto-auth@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.7.1.tgz#c8260444912dd8ceeccd838761d56f462937bd02" - dependencies: - async "^2.3.0" - gcp-metadata "^0.2.0" - google-auth-library "^0.10.0" - request "^2.79.0" - -google-gax@^0.13.0: - version "0.13.4" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-0.13.4.tgz#462d0cf654b0abeef5ee5f059d0f7b6c0d0a6121" - dependencies: - extend "^3.0.0" - google-auto-auth "^0.5.2" - google-proto-files "^0.9.1" - grpc "^1.2" - is-stream-ended "^0.1.0" - lodash "^4.17.2" - process-nextick-args "^1.0.7" - readable-stream "^2.2.2" - through2 "^2.0.3" - -google-p12-pem@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177" - dependencies: - node-forge "^0.7.1" - -google-proto-files@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.12.1.tgz#6434dc7e025a0d0c82e5f04e615c737d6a4c4387" - -google-proto-files@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/google-proto-files/-/google-proto-files-0.9.1.tgz#c760c79059bf62ba3ac56e1d1ba7b8d4560803be" - -got@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -grpc@^1.2, grpc@^1.3.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.4.1.tgz#3ee4a8346a613f2823928c9f8f99081b6368ec7c" - dependencies: - arguejs "^0.2.3" - lodash "^4.15.0" - nan "^2.0.0" - node-pre-gyp "^0.6.35" - protobufjs "^5.0.0" - -gtoken@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-1.2.2.tgz#172776a1a9d96ac09fc22a00f5be83cee6de8820" - dependencies: - google-p12-pem "^0.1.0" - jws "^3.0.0" - mime "^1.2.11" - request "^2.72.0" - -handlebars@4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-symbol-support-x@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.0.tgz#442d89b1d0ac6cf5ff2f7b916ee539869b93a256" - -has-to-string-tag-x@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.0.tgz#49d7bcde85c2409be38ac327e3e119a451657c7b" - dependencies: - has-symbol-support-x "^1.4.0" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-yarn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -hullabaloo-config-manager@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3" - dependencies: - dot-prop "^4.1.0" - es6-error "^4.0.2" - graceful-fs "^4.1.11" - indent-string "^3.1.0" - json5 "^0.5.1" - lodash.clonedeep "^4.5.0" - lodash.clonedeepwith "^4.5.0" - lodash.isequal "^4.5.0" - lodash.merge "^4.6.0" - md5-hex "^2.0.0" - package-hash "^2.0.0" - pkg-dir "^2.0.0" - resolve-from "^3.0.0" - safe-buffer "^5.0.1" - -ignore-by-default@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - -import-local@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0, indent-string@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -irregular-plurals@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-ci@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-error@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0, is-finite@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-object@^1.0.1, is-object@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - -is-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" - dependencies: - symbol-observable "^0.2.2" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream-ended@^0.1.0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.3.tgz#a0473b267c756635486beedc7e3344e549d152ac" - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-url@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is@^3.0.1, is@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -js-string-escape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" - -js-tokens@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.8.2: - version "3.9.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -just-extend@^1.1.22: - version "1.1.22" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" - -jwa@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" - dependencies: - base64url "2.0.0" - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.9" - safe-buffer "^5.0.1" - -jws@^3.0.0, jws@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" - dependencies: - base64url "^2.0.0" - jwa "^1.1.4" - safe-buffer "^5.0.1" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -last-line-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" - dependencies: - through2 "^2.0.0" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - dependencies: - package-json "^4.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - -lodash.clonedeepwith@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" - -lodash.debounce@^4.0.3: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.difference@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - -lodash@4.17.4, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.2.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -log-driver@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" - -lolex@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" - -lolex@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" - -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.2.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" - dependencies: - pify "^2.3.0" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -matcher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19" - dependencies: - escape-string-regexp "^1.0.4" - -md5-hex@^1.2.0, md5-hex@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" - dependencies: - md5-o-matic "^0.1.1" - -md5-hex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -methmeth@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/methmeth/-/methmeth-1.1.0.tgz#e80a26618e52f5c4222861bb748510bd10e29089" - -methods@^1.1.1, methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" - -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.16" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" - dependencies: - mime-db "~1.29.0" - -mime@^1.2.11, mime@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -mimic-response@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -"mkdirp@>=0.5 0", mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -modelo@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/modelo/-/modelo-4.2.0.tgz#3b4b420023a66ca7e32bdba16e710937e14d1b0b" - -module-not-found-error@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" - -ms@2.0.0, ms@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -nan@^2.0.0, nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -native-promise-only@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - -nise@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" - dependencies: - formatio "^1.2.0" - just-extend "^1.1.22" - lolex "^1.6.0" - path-to-regexp "^1.7.0" - -node-forge@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" - -node-pre-gyp@^0.6.35, node-pre-gyp@^0.6.36: - version "0.6.36" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -observable-to-promise@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" - dependencies: - is-observable "^0.2.0" - symbol-observable "^1.0.4" - -once@^1.3.0, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -option-chain@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-1.0.0.tgz#938d73bd4e1783f948d34023644ada23669e30f2" - -optjs@~3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-timeout@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.0.tgz#9820f99434c5817868b4f34809ee5291660d5b6c" - dependencies: - p-finally "^1.0.0" - -package-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" - dependencies: - md5-hex "^1.3.0" - -package-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" - dependencies: - graceful-fs "^4.1.11" - lodash.flattendeep "^4.4.0" - md5-hex "^2.0.0" - release-zalgo "^1.0.0" - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse-ms@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" - -parse-ms@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" - dependencies: - pinkie "^1.0.0" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" - dependencies: - find-up "^2.0.0" - load-json-file "^2.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -plur@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" - -plur@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" - dependencies: - irregular-plurals "^1.0.0" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-ms@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" - dependencies: - parse-ms "^0.1.0" - -pretty-ms@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" - dependencies: - is-finite "^1.0.1" - parse-ms "^1.0.0" - plur "^1.0.0" - -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@^1.0.7, process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -prop-assign@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prop-assign/-/prop-assign-1.0.0.tgz#9767a1fbfd7093908647a6e846d31b4feaa70459" - -propprop@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/propprop/-/propprop-0.3.1.tgz#a049a3568b896440067d15d8ec9f33735e570178" - -protobufjs@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.2.tgz#59748d7dcf03d2db22c13da9feb024e16ab80c91" - dependencies: - ascli "~1" - bytebuffer "~5" - glob "^7.0.5" - yargs "^3.10.0" - -proxyquire@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.8.0.tgz#02d514a5bed986f04cbb2093af16741535f79edc" - dependencies: - fill-keys "^1.0.2" - module-not-found-error "^1.0.0" - resolve "~1.1.7" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@^6.1.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - dependencies: - es6-error "^4.0.1" - -remove-trailing-separator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-precompiled@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve@~1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -retry-request@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-2.0.5.tgz#d089a14a15db9ed60685b8602b40f4dcc0d3fb3c" - dependencies: - request "^2.81.0" - through2 "^2.0.0" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -samsam@1.x, samsam@^1.1.3: - version "1.2.1" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -sinon@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.0.0.tgz#f6919755c8c705e0b4ae977e8351bbcbaf6d91de" - dependencies: - diff "^3.1.0" - formatio "1.2.0" - lolex "^2.1.2" - native-promise-only "^0.8.1" - nise "^1.0.1" - path-to-regexp "^1.7.0" - samsam "^1.1.3" - text-encoding "0.6.4" - type-detect "^4.0.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - dependencies: - is-fullwidth-code-point "^2.0.0" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sort-keys@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - dependencies: - is-plain-obj "^1.0.0" - -source-map-support@^0.4.0, source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -split-array-stream@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/split-array-stream/-/split-array-stream-1.0.3.tgz#d2b75a8e5e0d824d52fdec8b8225839dc2e35dfa" - dependencies: - async "^2.4.0" - is-stream-ended "^0.1.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stack-utils@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" - -stream-events@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.2.tgz#abf39f66c0890a4eb795bc8d5e859b2615b590b2" - dependencies: - stubs "^3.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - -string-format-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/string-format-obj/-/string-format-obj-1.1.0.tgz#7635610b1ef397013e8478be98a170e04983d068" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - dependencies: - is-utf8 "^0.2.1" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" - -superagent@^3.0.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.5.2.tgz#3361a3971567504c351063abeaae0faa23dbf3f8" - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.0.6" - debug "^2.2.0" - extend "^3.0.0" - form-data "^2.1.1" - formidable "^1.1.1" - methods "^1.1.1" - mime "^1.3.4" - qs "^6.1.0" - readable-stream "^2.0.5" - -supertest@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.0.0.tgz#8d4bb68fd1830ee07033b1c5a5a9a4021c965296" - dependencies: - methods "~1.1.2" - superagent "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" - dependencies: - has-flag "^2.0.0" - -symbol-observable@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" - -symbol-observable@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - dependencies: - execa "^0.7.0" - -text-encoding@0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -through2@^2.0.0, through2@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -time-require@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" - dependencies: - chalk "^0.4.0" - date-time "^0.1.1" - pretty-ms "^0.2.1" - text-table "^0.2.0" - -time-zone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -to-fast-properties@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-off-newlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-detect@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -uglify-js@^2.6: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uid2@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - -unique-temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" - dependencies: - mkdirp "^0.5.1" - os-tmpdir "^1.0.1" - uid2 "0.0.3" - -universalify@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - -update-notifier@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" - dependencies: - boxen "^1.0.0" - chalk "^1.0.0" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -well-known-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-1.0.0.tgz#73c78ae81a7726a8fa598e2880801c8b16225518" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.9: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-atomic@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.1.0.tgz#1769f4b551eedce419f0505deae2e26763542d37" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-json-file@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.2.0.tgz#51862506bbb3b619eefab7859f1fd6c6d0530876" - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - pify "^2.0.0" - sort-keys "^1.1.1" - write-file-atomic "^2.0.0" - -write-pkg@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.1.0.tgz#030a9994cc9993d25b4e75a9f1a1923607291ce9" - dependencies: - sort-keys "^2.0.0" - write-json-file "^2.2.0" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.0, y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@^3.10.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" From 654a762e2ced678f3b93d828901b9a10c04842c7 Mon Sep 17 00:00:00 2001 From: Ace Nassri Date: Thu, 31 Aug 2017 15:21:55 -0700 Subject: [PATCH 140/820] Update dependencies (#468) * Fix docs-samples tests, round 1 * Fix circle.yml * Add RUN_ALL_BUILDS flag * More container builder bugfixes * Tweak env vars + remove manual proxy install * Env vars in bashrc don't evaluate dynamically, so avoid them * Add semicolons for command ordering * Add appengine/static-files test to circle.yaml * Fix failing container builder tests * Address comments --- handwritten/nodejs-datastore/samples/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5155eb921ec..42673c36980 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -21,10 +21,10 @@ "yargs": "8.0.2" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "1.4.16", + "@google-cloud/nodejs-repo-tools": "1.4.17", "ava": "0.21.0", "proxyquire": "1.8.0", - "sinon": "3.0.0" + "sinon": "3.2.0" }, "cloud-repo-tools": { "requiresKeyFile": true, From 11bf5fdd22b97cb35c3b26eaca0746f4a3c17803 Mon Sep 17 00:00:00 2001 From: Tim Swast Date: Tue, 12 Sep 2017 16:53:41 -0700 Subject: [PATCH 141/820] Rename COPYING to LICENSE. (#2605) * Rename COPYING to LICENSE. The open source team is asking that we use LICENSE for the license filename consistently across our repos. * Fix references of COPYING to LICENSE. --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index dc48fcc09b8..362b6ad07cb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -35,7 +35,7 @@ "src", "AUTHORS", "CONTRIBUTORS", - "COPYING" + "LICENSE" ], "repository": "googlecloudplatform/google-cloud-node", "keywords": [ From f57b847f8b78dd269a8656ec92188dce373bf298 Mon Sep 17 00:00:00 2001 From: Philip Irri Date: Wed, 20 Sep 2017 02:18:10 +0900 Subject: [PATCH 142/820] Added example with eventual read consistency in Node.js (#480) --- handwritten/nodejs-datastore/samples/README.md | 3 ++- .../nodejs-datastore/samples/concepts.js | 18 +++++++++++++++++- .../nodejs-datastore/samples/package.json | 8 ++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index d3475602db2..f1cbd559349 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -47,7 +47,8 @@ Commands: delete Deletes a task. Options: - --help Show help [boolean] + --version Show version number [boolean] + --help Show help [boolean] Examples: node tasks.js new "Buy milk" Adds a task with description "Buy milk". diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 277b93e5816..453457b6b77 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1033,9 +1033,25 @@ class Query extends TestHelper { testEventualConsistentQuery (t) { t.plan(0); + const datastoreMock = datastore; + datastore = this.datastore; // [START eventual_consistent_query] - // Read consistency cannot be specified in google-cloud-node. + const ancestorKey = datastore.key(['TaskList', 'default']); + const query = datastore.createQuery('Task') + .hasAncestor(ancestorKey); + + query.run({ consistency: 'eventual' }); // [END eventual_consistent_query] + return query.run({ consistency: 'eventual' }) + .then((results) => { + datastore = datastoreMock; + const entities = results[0]; + return entities; + }) + .catch((err) => { + datastore = datastoreMock; + return Promise.reject(err); + }); } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 42673c36980..ae79053edd1 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" }, "engines": { - "node": ">=4.3.2" + "node": ">=4" }, "scripts": { "lint": "samples lint", @@ -18,13 +18,13 @@ }, "dependencies": { "@google-cloud/datastore": "1.1.0", - "yargs": "8.0.2" + "yargs": "9.0.1" }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "1.4.17", - "ava": "0.21.0", + "ava": "0.22.0", "proxyquire": "1.8.0", - "sinon": "3.2.0" + "sinon": "3.3.0" }, "cloud-repo-tools": { "requiresKeyFile": true, From b32991a8398b9b0df6bebe02e60f275c3d69c5bf Mon Sep 17 00:00:00 2001 From: Stephen Date: Tue, 10 Oct 2017 17:21:34 -0400 Subject: [PATCH 143/820] datastore(transaction): do not squash key-incomplete mutations (#2657) --- .../nodejs-datastore/src/transaction.js | 18 +++++++++++++++--- .../nodejs-datastore/test/transaction.js | 14 ++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index c28bbd0f56c..3a90c1c7f11 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -26,6 +26,12 @@ var flatten = require('lodash.flatten'); var prop = require('propprop'); var util = require('util'); +/** + * @type {module:datastore/entity} + * @private + */ +var entity = require('./entity.js'); + /** * @type {module:datastore/request} * @private @@ -129,10 +135,16 @@ Transaction.prototype.commit = function(callback) { // key they just asked to be deleted, the delete request will be ignored, // giving preference to the save operation. .filter(function(modifiedEntity) { - var key = JSON.stringify(modifiedEntity.entity.key); + var key = modifiedEntity.entity.key; + + if (!entity.isKeyComplete(key)) { + return true; + } + + var stringifiedKey = JSON.stringify(modifiedEntity.entity.key); - if (!keys[key]) { - keys[key] = true; + if (!keys[stringifiedKey]) { + keys[stringifiedKey] = true; return true; } }) diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index 263d54132f7..123ee58fd8e 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -261,6 +261,20 @@ describe('Transaction', function() { assert.equal(saveCalled, 1); }); + it('should not squash key-incomplete mutations', function(done) { + transaction.save({ key: key(['Product']), data: '' }); + transaction.save({ key: key(['Product']), data: '' }); + + DatastoreRequestOverride.save = function(entities) { + assert.strictEqual(entities.length, 2); + done(); + }; + + transaction.request_ = util.noop; + + transaction.commit(); + }); + it('should send the built request object', function(done) { transaction.requests_ = [ { From 755a9586817d48f86c2e33269fd7e4d19369ca85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?antoine=20beau=E1=B5=9B=E1=B5=83=E1=B4=B5=CB=A2=E2=81=BBla?= =?UTF-8?q?c=E1=B5=83=CB=A2=CB=A2=E1=B5=89?= Date: Tue, 10 Oct 2017 18:19:18 -0400 Subject: [PATCH 144/820] datastore: Expose entity identification functions. (#2645) --- handwritten/nodejs-datastore/src/entity.js | 62 +++++++++++++++++--- handwritten/nodejs-datastore/src/index.js | 65 ++++++++++++++++++++- handwritten/nodejs-datastore/test/entity.js | 59 +++++++++++++++++++ handwritten/nodejs-datastore/test/index.js | 60 +++++++++++++++++++ 4 files changed, 237 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 728c496de10..f575fd37b9e 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -59,6 +59,18 @@ function Double(value) { entity.Double = Double; +/** + * Check if something is a Datastore Double object. + * + * @param {*} value + * @return {boolean} + */ +function isDsDouble(value) { + return value instanceof entity.Double; +} + +entity.isDsDouble = isDsDouble; + /** * Build a Datastore Int object. For long integers, a string can be provided. * @@ -74,6 +86,18 @@ function Int(value) { entity.Int = Int; +/** + * Check if something is a Datastore Int object. + * + * @param {*} value + * @return {boolean} + */ +function isDsInt(value) { + return value instanceof entity.Int; +} + +entity.isDsInt = isDsInt; + /** * Build a Datastore Geo Point object. * @@ -90,12 +114,24 @@ entity.Int = Int; * * var geoPoint = new GeoPoint(coordinates); */ -function GeoPoint(coordindates) { - this.value = coordindates; +function GeoPoint(coordinates) { + this.value = coordinates; } entity.GeoPoint = GeoPoint; +/** + * Check if something is a Datastore Geo Point object. + * + * @param {*} value + * @return {boolean} + */ +function isDsGeoPoint(value) { + return value instanceof entity.GeoPoint; +} + +entity.isDsGeoPoint = isDsGeoPoint; + /** * Build a Datastore Key object. * @@ -116,7 +152,7 @@ function Key(options) { if (options.path.length % 2 === 0) { var identifier = options.path.pop(); - if (is.number(identifier) || identifier instanceof entity.Int) { + if (is.number(identifier) || isDsInt(identifier)) { this.id = identifier.value || identifier; } else if (is.string(identifier)) { this.name = identifier; @@ -142,6 +178,18 @@ function Key(options) { entity.Key = Key; +/** + * Check if something is a Datastore Key object. + * + * @param {*} value + * @return {boolean} + */ +function isDsKey(value) { + return value instanceof entity.Key; +} + +entity.isDsKey = isDsKey; + /** * Convert a protobuf Value message to its native value. * @@ -243,17 +291,17 @@ function encodeValue(value) { } } - if (value instanceof entity.Int) { + if (isDsInt(value)) { valueProto.integerValue = value.value; return valueProto; } - if (value instanceof entity.Double) { + if (isDsDouble(value)) { valueProto.doubleValue = value.value; return valueProto; } - if (value instanceof entity.GeoPoint) { + if (isDsGeoPoint(value)) { valueProto.geoPointValue = value.value; return valueProto; } @@ -286,7 +334,7 @@ function encodeValue(value) { return valueProto; } - if (value instanceof entity.Key) { + if (isDsKey(value)) { valueProto.keyValue = entity.keyToKeyProto(value); return valueProto; } diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index cdc3d312171..2d6d2b93bc6 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -343,6 +343,20 @@ Datastore.prototype.double = Datastore.double = function(value) { return new entity.Double(value); }; +/** + * Helper function to check if something is a Datastore Double object. + * + * @param {*} value + * @return {boolean} + * + * @example + * datastore.isDouble(0.42); // false + * datastore.isDouble(datastore.double(0.42)); // true + */ +Datastore.prototype.isDouble = Datastore.isDouble = function(value) { + return entity.isDsDouble(value); +}; + /** * Helper function to get a Datastore Geo Point object. * @@ -359,8 +373,27 @@ Datastore.prototype.double = Datastore.double = function(value) { * * var geoPoint = datastore.geoPoint(coordinates); */ -Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordindates) { - return new entity.GeoPoint(coordindates); +Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordinates) { + return new entity.GeoPoint(coordinates); +}; + +/** + * Helper function to check if something is a Datastore Geo Point object. + * + * @param {*} value + * @return {boolean} + * + * @example + * var coordinates = { + * latitude: 0, + * longitude: 0 + * }; + * + * datastore.isGeoPoint(coordinates); // false + * datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true + */ +Datastore.prototype.isGeoPoint = Datastore.isGeoPoint = function(value) { + return entity.isDsGeoPoint(value); }; /** @@ -387,6 +420,20 @@ Datastore.prototype.int = Datastore.int = function(value) { return new entity.Int(value); }; +/** + * Helper function to check if something is a Datastore Integer object. + * + * @param {*} value + * @return {boolean} + * + * @example + * datastore.isInt(42); // false + * datastore.isInt(datastore.int(42)); // true + */ +Datastore.prototype.isInt = Datastore.isInt = function(value) { + return entity.isDsInt(value); +}; + /** * Access the Key from an Entity object. * @@ -509,6 +556,20 @@ Datastore.prototype.key = function(options) { return new entity.Key(options); }; +/** + * Helper function to check if something is a Datastore Key object. + * + * @param {*} value + * @return {boolean} + * + * @example + * datastore.isKey({path: ['Company', 123]}); // false + * datastore.isKey(datastore.key(['Company', 123])); // true + */ +Datastore.prototype.isKey = Datastore.isKey = function(value) { + return entity.isDsKey(value); +}; + /** * Create a new Transaction object. * diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 048d643e547..02406962b5e 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -48,6 +48,23 @@ describe('entity', function() { }); }); + describe('isDsDouble', function() { + it('should correctly identify a Double', function() { + var double = new entity.Double(0.42); + assert.strictEqual(entity.isDsDouble(double), true); + }); + + it('should correctly identify a homomorphic non-Double', function() { + var nonDouble = Object.assign({}, new entity.Double(42)); + assert.strictEqual(entity.isDsDouble(nonDouble), false); + }); + + it('should correctly identify a primitive', function() { + var primitiveDouble = 0.42; + assert.strictEqual(entity.isDsDouble(primitiveDouble), false); + }); + }); + describe('Int', function() { it('should store the stringified value', function() { var value = 8; @@ -57,6 +74,23 @@ describe('entity', function() { }); }); + describe('isDsInt', function() { + it('should correctly identify an Int', function() { + var int = new entity.Int(42); + assert.strictEqual(entity.isDsInt(int), true); + }); + + it('should correctly identify homomorphic non-Int', function() { + var nonInt = Object.assign({}, new entity.Int(42)); + assert.strictEqual(entity.isDsInt(nonInt), false); + }); + + it('should correctly identify a primitive', function() { + var primitiveInt = 42; + assert.strictEqual(entity.isDsInt(primitiveInt), false); + }); + }); + describe('GeoPoint', function() { it('should store the value', function() { var value = { @@ -69,6 +103,19 @@ describe('entity', function() { }); }); + describe('isDsGeoPoint', function() { + it('should correctly identify a GeoPoint', function() { + var geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); + assert.strictEqual(entity.isDsGeoPoint(geoPoint), true); + }); + + it('should correctly identify a homomorphic non-GeoPoint', function() { + var geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); + var nonGeoPoint = Object.assign({}, geoPoint); + assert.strictEqual(entity.isDsGeoPoint(nonGeoPoint), false); + }); + }); + describe('Key', function() { it('should assign the namespace', function() { var namespace = 'NS'; @@ -116,6 +163,18 @@ describe('entity', function() { }); }); + describe('isDsKey', function() { + it('should correctly identify a Key', function() { + var key = new entity.Key({path: ['Kind', 1]}); + assert.strictEqual(entity.isDsKey(key), true); + }); + + it('should correctly identify a homomorphic non-Key', function() { + var notKey = Object.assign({}, new entity.Key({path: ['Kind', 1]})); + assert.strictEqual(entity.isDsKey(notKey), false); + }); + }); + describe('decodeValueProto', function() { it('should decode arrays', function() { var expectedValue = [{}]; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 6bcee3b1a71..b7dc9393618 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -27,14 +27,26 @@ var fakeEntity = { Int: function(value) { this.value = value; }, + isDsInt: function() { + this.calledWith_ = arguments; + }, Double: function(value) { this.value = value; }, + isDsDouble: function() { + this.calledWith_ = arguments; + }, GeoPoint: function(value) { this.value = value; }, + isDsGeoPoint: function() { + this.calledWith_ = arguments; + }, Key: function() { this.calledWith_ = arguments; + }, + isDsKey: function() { + this.calledWith_ = arguments; } }; @@ -194,6 +206,18 @@ describe('Datastore', function() { }); }); + describe('isDouble', function() { + it('should expose Double identifier', function() { + var something = {}; + Datastore.isDouble(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.isDouble, Datastore.isDouble); + }); + }); + describe('geoPoint', function() { it('should expose GeoPoint builder', function() { var aGeoPoint = { latitude: 24, longitude: 88 }; @@ -206,6 +230,18 @@ describe('Datastore', function() { }); }); + describe('isGeoPoint', function() { + it('should expose GeoPoint identifier', function() { + var something = {}; + Datastore.isGeoPoint(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.isGeoPoint, Datastore.isGeoPoint); + }); + }); + describe('int', function() { it('should expose Int builder', function() { var anInt = 7; @@ -218,6 +254,18 @@ describe('Datastore', function() { }); }); + describe('isInt', function() { + it('should expose Int identifier', function() { + var something = {}; + Datastore.isInt(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + + it('should also be on the prototype', function() { + assert.strictEqual(datastore.isInt, Datastore.isInt); + }); + }); + describe('KEY', function() { it('should expose the KEY symbol', function() { assert.strictEqual(Datastore.KEY, fakeEntity.KEY_SYMBOL); @@ -318,6 +366,18 @@ describe('Datastore', function() { }); }); + describe('isKey', function() { + it('should expose Key identifier', function() { + var something = {}; + datastore.isKey(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + + it('should also be on the namespace', function() { + assert.strictEqual(datastore.isKey, Datastore.isKey); + }); + }); + describe('transaction', function() { it('should return a Transaction object', function() { var transaction = datastore.transaction(); From 80eb7d25559e320b3a93fd078e5868617ae40628 Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Mon, 23 Oct 2017 16:14:38 -0700 Subject: [PATCH 145/820] chore: update deps: google-{gax,proto-files} (#2691) --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 362b6ad07cb..682cb96337d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -57,8 +57,8 @@ "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", "extend": "^3.0.0", - "google-gax": "^0.13.0", - "google-proto-files": "^0.12.0", + "google-gax": "^0.14.2", + "google-proto-files": "^0.13.1", "is": "^3.0.1", "lodash.flatten": "^4.2.0", "modelo": "^4.2.0", From 07121d4d950a888f93829d95e38dc27788dcf27f Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 6 Nov 2017 12:09:34 -0500 Subject: [PATCH 146/820] Use safe-buffer for Node v4 compatibility. (#2726) --- handwritten/nodejs-datastore/system-test/datastore.js | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index eb917ecaa88..538473064b7 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -18,6 +18,7 @@ var assert = require('assert'); var async = require('async'); +var Buffer = require('safe-buffer').Buffer; var Datastore = require('../'); var entity = require('../src/entity.js'); From 9dac0531e0f4f888282d77fdb2896987095295dc Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Fri, 15 Dec 2017 17:31:33 -0800 Subject: [PATCH 147/820] Repo migration (#4) * Add repo tools config. * Add cloud repo tools dev dep. * Add config to cloud repo tools. * npm run generate-scaffolding * Generate a samples readme. * Add .mailmap and regenerate scaffolding. * New auto-gen layer behind datastore. * Add JSDoc. * Add docs command. * Add lint and prettier commands. * Add ESLint and prettier * npm run prettier * Use GAPIC. (#1) * Make the linter happy. * Fix jsdocs and regenerate scaffolding. (#2) * Support TransactionOptions. (#3) * setting up CI * dummy change to trigger circleci build * prettier, lint * more coverage for unit tests * prettier and lint * sorted new tests in alphabetical order * test changes * add GCLOUD_PROJECT to circleci conf --- handwritten/nodejs-datastore/.appveyor.yml | 20 + .../nodejs-datastore/.circleci/config.yml | 227 ++++ .../nodejs-datastore/.circleci/key.json.enc | Bin 0 -> 2368 bytes .../nodejs-datastore/.cloud-repo-tools.json | 31 + handwritten/nodejs-datastore/.eslintignore | 3 + handwritten/nodejs-datastore/.eslintrc.yml | 13 + handwritten/nodejs-datastore/.gitignore | 10 + handwritten/nodejs-datastore/.jsdoc.js | 45 + handwritten/nodejs-datastore/.mailmap | 6 + handwritten/nodejs-datastore/.nycrc | 26 + handwritten/nodejs-datastore/.prettierignore | 3 + handwritten/nodejs-datastore/.prettierrc | 8 + .../nodejs-datastore/CODE_OF_CONDUCT.md | 43 + handwritten/nodejs-datastore/CONTRIBUTORS | 21 + handwritten/nodejs-datastore/LICENSE | 202 ++++ handwritten/nodejs-datastore/README.md | 203 ++-- handwritten/nodejs-datastore/package.json | 104 +- .../protos/google/api/annotations.proto | 31 - .../protos/google/api/auth.proto | 183 --- .../protos/google/api/backend.proto | 47 - .../protos/google/api/billing.proto | 98 -- .../protos/google/api/config_change.proto | 85 -- .../protos/google/api/consumer.proto | 83 -- .../protos/google/api/context.proto | 63 - .../protos/google/api/control.proto | 33 - .../protos/google/api/distribution.proto | 185 --- .../protos/google/api/documentation.proto | 159 --- .../protos/google/api/endpoint.proto | 74 -- .../experimental/authorization_config.proto | 40 - .../api/experimental/experimental.proto | 34 - .../protos/google/api/http.proto | 291 ----- .../protos/google/api/httpbody.proto | 70 -- .../protos/google/api/label.proto | 49 - .../protos/google/api/log.proto | 55 - .../protos/google/api/logging.proto | 83 -- .../protos/google/api/metric.proto | 196 --- .../google/api/monitored_resource.proto | 91 -- .../protos/google/api/monitoring.proto | 89 -- .../protos/google/api/quota.proto | 259 ---- .../protos/google/api/service.proto | 176 --- .../api/servicecontrol/v1/check_error.proto | 95 -- .../api/servicecontrol/v1/distribution.proto | 159 --- .../api/servicecontrol/v1/log_entry.proto | 67 -- .../api/servicecontrol/v1/metric_value.proto | 78 -- .../api/servicecontrol/v1/operation.proto | 112 -- .../v1/service_controller.proto | 161 --- .../api/servicemanagement/v1/resources.proto | 286 ----- .../servicemanagement/v1/servicemanager.proto | 392 ------ .../protos/google/api/source_info.proto | 32 - .../protos/google/api/system_parameter.proto | 96 -- .../protos/google/api/usage.proto | 85 -- .../google/datastore/v1/datastore.proto | 57 +- .../protos/google/datastore/v1/entity.proto | 2 +- .../protos/google/datastore/v1/query.proto | 4 +- .../protos/google/protobuf/any.proto | 139 --- .../protos/google/protobuf/api.proto | 202 ---- .../protos/google/protobuf/descriptor.proto | 831 ------------- .../protos/google/protobuf/duration.proto | 117 -- .../protos/google/protobuf/empty.proto | 52 - .../protos/google/protobuf/field_mask.proto | 246 ---- .../google/protobuf/source_context.proto | 48 - .../protos/google/protobuf/struct.proto | 96 -- .../protos/google/protobuf/timestamp.proto | 133 -- .../protos/google/protobuf/type.proto | 187 --- .../protobuf/util/json_format_proto3.proto | 183 --- .../protos/google/protobuf/wrappers.proto | 118 -- .../protos/google/type/color.proto | 164 --- .../protos/google/type/date.proto | 45 - .../protos/google/type/dayofweek.proto | 51 - .../protos/google/type/latlng.proto | 71 -- .../protos/google/type/money.proto | 42 - .../protos/google/type/postal_address.proto | 132 -- .../protos/google/type/timeofday.proto | 43 - .../nodejs-datastore/samples/.eslintrc.yml | 3 + .../nodejs-datastore/samples/README.md | 62 +- .../nodejs-datastore/samples/concepts.js | 801 ++++++------ handwritten/nodejs-datastore/samples/error.js | 20 +- .../nodejs-datastore/samples/index.yaml | 34 + .../nodejs-datastore/samples/package.json | 51 +- .../nodejs-datastore/samples/quickstart.js | 15 +- .../samples/system-test/.eslintrc.yml | 5 + .../samples/system-test/concepts.test.js | 174 ++- .../samples/system-test/error.test.js | 4 +- .../samples/system-test/quickstart.test.js | 36 +- .../samples/system-test/tasks.test.js | 25 +- handwritten/nodejs-datastore/samples/tasks.js | 88 +- handwritten/nodejs-datastore/src/entity.js | 212 ++-- handwritten/nodejs-datastore/src/index.js | 582 ++++++--- handwritten/nodejs-datastore/src/query.js | 248 ++-- handwritten/nodejs-datastore/src/request.js | 464 +++---- .../nodejs-datastore/src/transaction.js | 312 +++-- .../src/v1/datastore_client.js | 1025 +++++++++------- .../src/v1/datastore_client_config.json | 5 + .../datastore/v1}/doc_datastore.js | 242 ++-- .../{ => google/datastore/v1}/doc_entity.js | 72 +- .../{ => google/datastore/v1}/doc_query.js | 127 +- .../protobuf/doc_wrappers.js} | 90 +- handwritten/nodejs-datastore/src/v1/index.js | 46 +- .../system-test/.eslintrc.yml | 6 + .../nodejs-datastore/system-test/datastore.js | 577 +++++---- .../nodejs-datastore/test/.eslintrc.yml | 5 + handwritten/nodejs-datastore/test/entity.js | 368 +++--- handwritten/nodejs-datastore/test/gapic-v1.js | 463 +++++++ handwritten/nodejs-datastore/test/index.js | 311 +++-- handwritten/nodejs-datastore/test/query.js | 6 +- handwritten/nodejs-datastore/test/request.js | 1071 ++++++++++------- .../nodejs-datastore/test/transaction.js | 261 ++-- 107 files changed, 5656 insertions(+), 10120 deletions(-) create mode 100644 handwritten/nodejs-datastore/.appveyor.yml create mode 100644 handwritten/nodejs-datastore/.circleci/config.yml create mode 100644 handwritten/nodejs-datastore/.circleci/key.json.enc create mode 100644 handwritten/nodejs-datastore/.cloud-repo-tools.json create mode 100644 handwritten/nodejs-datastore/.eslintignore create mode 100644 handwritten/nodejs-datastore/.eslintrc.yml create mode 100644 handwritten/nodejs-datastore/.gitignore create mode 100644 handwritten/nodejs-datastore/.jsdoc.js create mode 100644 handwritten/nodejs-datastore/.mailmap create mode 100644 handwritten/nodejs-datastore/.nycrc create mode 100644 handwritten/nodejs-datastore/.prettierignore create mode 100644 handwritten/nodejs-datastore/.prettierrc create mode 100644 handwritten/nodejs-datastore/CODE_OF_CONDUCT.md create mode 100644 handwritten/nodejs-datastore/CONTRIBUTORS create mode 100644 handwritten/nodejs-datastore/LICENSE delete mode 100644 handwritten/nodejs-datastore/protos/google/api/annotations.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/auth.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/backend.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/billing.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/config_change.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/consumer.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/context.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/control.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/distribution.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/documentation.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/endpoint.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/http.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/httpbody.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/label.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/log.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/logging.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/metric.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/monitoring.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/quota.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/service.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/source_info.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/system_parameter.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/api/usage.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/any.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/api.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/duration.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/empty.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/struct.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/type.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/color.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/date.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/dayofweek.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/latlng.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/money.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/postal_address.proto delete mode 100644 handwritten/nodejs-datastore/protos/google/type/timeofday.proto create mode 100644 handwritten/nodejs-datastore/samples/.eslintrc.yml create mode 100644 handwritten/nodejs-datastore/samples/index.yaml create mode 100644 handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml rename handwritten/nodejs-datastore/src/v1/doc/{ => google/datastore/v1}/doc_datastore.js (63%) rename handwritten/nodejs-datastore/src/v1/doc/{ => google/datastore/v1}/doc_entity.js (82%) rename handwritten/nodejs-datastore/src/v1/doc/{ => google/datastore/v1}/doc_query.js (82%) rename handwritten/nodejs-datastore/src/v1/doc/{doc_google_protobuf_wrappers.js => google/protobuf/doc_wrappers.js} (59%) create mode 100644 handwritten/nodejs-datastore/system-test/.eslintrc.yml create mode 100644 handwritten/nodejs-datastore/test/.eslintrc.yml create mode 100644 handwritten/nodejs-datastore/test/gapic-v1.js diff --git a/handwritten/nodejs-datastore/.appveyor.yml b/handwritten/nodejs-datastore/.appveyor.yml new file mode 100644 index 00000000000..24082152655 --- /dev/null +++ b/handwritten/nodejs-datastore/.appveyor.yml @@ -0,0 +1,20 @@ +environment: + matrix: + - nodejs_version: 8 + +install: + - ps: Install-Product node $env:nodejs_version + - npm install -g npm # Force using the latest npm to get dedupe during install + - set PATH=%APPDATA%\npm;%PATH% + - npm install --force --ignore-scripts + +test_script: + - node --version + - npm --version + - npm rebuild + - npm test + +build: off + +matrix: + fast_finish: true diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml new file mode 100644 index 00000000000..e986756c997 --- /dev/null +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -0,0 +1,227 @@ +--- +# "Include" for unit tests definition. +unit_tests: &unit_tests + steps: + - checkout + - run: + name: Install modules and dependencies. + command: npm install + - run: + name: Run unit tests. + command: npm test + - run: + name: Submit coverage data to codecov. + command: node_modules/.bin/codecov + when: always + +version: 2.0 +workflows: + version: 2 + tests: + jobs: + - node4: + filters: + tags: + only: /.*/ + - node6: + filters: + tags: + only: /.*/ + - node7: + filters: + tags: + only: /.*/ + - node8: + filters: + tags: + only: /.*/ + - node9: + filters: + tags: + only: /.*/ + - lint: + requires: + - node4 + - node6 + - node7 + - node8 + - node9 + filters: + tags: + only: /.*/ + - docs: + requires: + - node4 + - node6 + - node7 + - node8 + - node9 + filters: + tags: + only: /.*/ + - system_tests: + requires: + - lint + - docs + filters: + branches: + only: master + tags: + only: /^v[\d.]+$/ + - sample_tests: + requires: + - lint + - docs + filters: + branches: + only: master + tags: + only: /^v[\d.]+$/ + - publish_npm: + requires: + - system_tests + - sample_tests + filters: + branches: + ignore: /.*/ + tags: + only: /^v[\d.]+$/ + +jobs: + node4: + docker: + - image: node:4 + steps: + - checkout + - run: + name: Install modules and dependencies. + command: npm install --unsafe-perm + - run: + name: Run unit tests. + command: npm test + - run: + name: Submit coverage data to codecov. + command: node_modules/.bin/codecov + when: always + node6: + docker: + - image: node:6 + <<: *unit_tests + node7: + docker: + - image: node:7 + <<: *unit_tests + node8: + docker: + - image: node:8 + <<: *unit_tests + node9: + docker: + - image: node:9 + <<: *unit_tests + + lint: + docker: + - image: node:8 + steps: + - checkout + - run: + name: Install modules and dependencies. + command: | + npm install + npm link + - run: + name: Link the module being tested to the samples. + command: | + cd samples/ + npm link @google-cloud/datastore + npm install + cd .. + - run: + name: Run linting. + command: npm run lint + + docs: + docker: + - image: node:8 + steps: + - checkout + - run: + name: Install modules and dependencies. + command: npm install + - run: + name: Build documentation. + command: npm run docs + + sample_tests: + docker: + - image: node:8 + steps: + - checkout + - run: + name: Decrypt credentials. + command: | + openssl aes-256-cbc -d -in .circleci/key.json.enc \ + -out .circleci/key.json \ + -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + - run: + name: Install and link the module. + command: | + npm install + npm link + - run: + name: Link the module being tested to the samples. + command: | + cd samples/ + npm link @google-cloud/datastore + npm install + cd .. + - run: + name: Run sample tests. + command: npm run samples-test + environment: + GCLOUD_PROJECT: long-door-651 + GOOGLE_APPLICATION_CREDENTIALS: /var/datastore/.circleci/key.json + - run: + name: Remove unencrypted key. + command: rm .circleci/key.json + when: always + working_directory: /var/datastore/ + + system_tests: + docker: + - image: node:8 + steps: + - checkout + - run: + name: Decrypt credentials. + command: | + openssl aes-256-cbc -d -in .circleci/key.json.enc \ + -out .circleci/key.json \ + -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + - run: + name: Install modules and dependencies. + command: npm install + - run: + name: Run system tests. + command: npm run system-test + environment: + GCLOUD_PROJECT: long-door-651 + GOOGLE_APPLICATION_CREDENTIALS: .circleci/key.json + - run: + name: Remove unencrypted key. + command: rm .circleci/key.json + when: always + + publish_npm: + docker: + - image: node:8 + steps: + - checkout + - run: + name: Set NPM authentication. + command: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + - run: + name: Publish the module to npm. + command: npm publish + diff --git a/handwritten/nodejs-datastore/.circleci/key.json.enc b/handwritten/nodejs-datastore/.circleci/key.json.enc new file mode 100644 index 0000000000000000000000000000000000000000..454e63675d40d07fa050575792d810938fb9aaed GIT binary patch literal 2368 zcmV-G3BUGJVQh3|WM5ym5&dS<7inc^?@qJ6i%o(wG}}5*tz`Oo7t++gn*Di^H@GV2 zb4q0xWo*!qjaMoG^ZKT4Sh}B_`3Wk%YDc?VN*wJVoust|*4br6L({zjPi7Sx z3M%nna%Jiq2#c2G4 z*ly z;UP_g@|wo<-t6;Q`H&_46jFI4V)uU=#M6EW8Q`n`S9YZt^RrbWZN~_s2H}NGGr%Nr ztybYHb8rw)@&1x(lJ{Ng0VBhJGLJ%CbGsoMcjn`=%!CVrPw(PR^=p3dcwXiNr=Y`I z>&TTy)3<15yr7a2-``&(G=6kjpK^D(z49L%MneF`eUOlTWmBc1JU-N25GBgV=fz)Q z8<6f*u(}whhdo+`pc&{&AX{j9NXnnRRBTRlvY&4dP_`8PgrJ+`o44GT~C0gLJ?WdJCpdxCzP&J2G09=MUWu(zA*4c<+ zPvPYi+7wsDzA7RztCeuN={bocrpgXyO0r3_mLL5Naw`}wEu z$t*iE$D?#{ zpv?FsZ9cH^U2B^HYzv@M*@QXH5+A;e{cnMao^4aTPfbh3JnS>hGmfWpH7wQ$Ct5Igs2JzL9uOb~WOdpEXr4EDw$RBZ6@d)(b!9< zKW#`WqehCV0Mzd6_t1hMetqD}-?ty7wM(-I3(R2S;<$yC6W6Ef)VWi=nGZ(z1AK7K zX3g12lh-vEkOue*S=%!yB&1VM=QR7!jfMV`L+!5#A>9nK=GI5MGZVn^4kBvrtiE>3 z+maq*Pln06Nb3yKXJtMg;V0wAKhmu;0&R9=@ExrmTEU$Kn9(k>LsF;rJpD3!EG*N@?dFcjE0+@=$QvZUzt z@w$JmUt`}D&>LvI&rhU5o@7`7AZ^%&FJ@PwnMG~Tg5SfXUOnR_$@;Mo!FODrv~mkr zzfezPsiX|a?@_5Xt2kP+J=TU@*?r43bOBmklk^;I4aG|uu&-m3(*)tHB-72Re}pe` zsVyLfq$%cUqHY`$KO_7-ZQ;B(Ls0tjz^{Jm2uve5&(V#t9Mk!;&r2u8q*KYy6TAL_ zOHTbHLYT ze;t6*2Vv`3Ja*6weaP7L*wVG@LO^E6I`o9ryiDPqNQh*iCs{0D;qP3ekoQRU@dmO5 zp<{hj{xoiuUJun(bmW<7jo0(x-XAPtZ z7G-WqtlB4 z$TwLmAR?P?4FN7u8FR|r^#HfXrmae~U1AAo1kKioRvRm#&)BZ+?^kXGZF5%Ma)vnw zfS^;HE&PeE$dA(wfofW^mf4rIh~~hqd7~m0PJ5mjM#=Jkv1PzzPQ4(9L9bDzW~Idf zII{_{drGl9B^^vwM?&>h%H!%8sc1#wT8UP`0a>52lbnlKLet(~^L1JP;0BqH;S>!* zjy`{#+%>$0mx>dZ)dsw5gI!;+YskeF*={oW0DZ0_nY zvxl1ey|aiJ5KgX>#*TMn0DyQCQ2cE!xo;#1&hG)9)F|BuU+&o|^#BqV%)lXRiuuQ1 zMFe{bvnN?g`k!$EvT0MRel4qxkk%eUbUM^xG?Pb8mXkP4MD|By&t_H}cWw}qSm$%pWw mu({34{gqq2$q5PU1ssO>!lh*M&(;BVz>%P%;z|}#&c{GP#-g+U literal 0 HcmV?d00001 diff --git a/handwritten/nodejs-datastore/.cloud-repo-tools.json b/handwritten/nodejs-datastore/.cloud-repo-tools.json new file mode 100644 index 00000000000..70b817d2e74 --- /dev/null +++ b/handwritten/nodejs-datastore/.cloud-repo-tools.json @@ -0,0 +1,31 @@ +{ + "requiresKeyFile": true, + "requiresProjectId": true, + "product": "datastore", + "client_reference_url": "https://cloud.google.com/nodejs/docs/reference/datastore/latest/", + "release_quality": "ga", + "samples": [ + { + "id": "tasks", + "name": "Tasks", + "file": "tasks.js", + "docs_link": "https://cloud.google.com/datastore/docs/datastore-api-tutorial", + "usage": "node tasks.js --help" + }, + { + "id": "concepts", + "name": "Concepts", + "file": "concepts.js", + "docs_link": "https://cloud.google.com/datastore/docs/concepts/entities" + }, + { + "id": "error", + "name": "Errors and Error Handling", + "file": "error.js", + "docs_link": "https://cloud.google.com/datastore/docs/concepts/errors", + "usage": { + "text": "node error.js" + } + } + ] +} diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore new file mode 100644 index 00000000000..f6fac98b0a8 --- /dev/null +++ b/handwritten/nodejs-datastore/.eslintignore @@ -0,0 +1,3 @@ +node_modules/* +samples/node_modules/* +src/**/doc/* diff --git a/handwritten/nodejs-datastore/.eslintrc.yml b/handwritten/nodejs-datastore/.eslintrc.yml new file mode 100644 index 00000000000..bed57fbc42c --- /dev/null +++ b/handwritten/nodejs-datastore/.eslintrc.yml @@ -0,0 +1,13 @@ +--- +extends: + - 'eslint:recommended' + - 'plugin:node/recommended' + - prettier +plugins: + - node + - prettier +rules: + prettier/prettier: error + block-scoped-var: error + eqeqeq: error + no-warning-comments: warn diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore new file mode 100644 index 00000000000..6b80718f261 --- /dev/null +++ b/handwritten/nodejs-datastore/.gitignore @@ -0,0 +1,10 @@ +**/*.log +**/node_modules +.coverage +.nyc_output +docs/ +out/ +system-test/secrets.js +system-test/*key.json +*.lock +*-lock.js* diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js new file mode 100644 index 00000000000..da963502389 --- /dev/null +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -0,0 +1,45 @@ +/*! + * Copyright 2017 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +module.exports = { + opts: { + readme: './README.md', + package: './package.json', + template: './node_modules/ink-docstrap/template', + recurse: true, + verbose: true, + destination: './docs/' + }, + plugins: [ + 'plugins/markdown' + ], + source: { + excludePattern: '(^|\\/|\\\\)[._]', + include: [ + 'src' + ], + includePattern: '\\.js$' + }, + templates: { + copyright: 'Copyright 2017 Google, Inc.', + includeDate: false, + sourceFiles: false, + systemName: '@google-cloud/datastore', + theme: 'lumen' + } +}; diff --git a/handwritten/nodejs-datastore/.mailmap b/handwritten/nodejs-datastore/.mailmap new file mode 100644 index 00000000000..6b58e7bf4cb --- /dev/null +++ b/handwritten/nodejs-datastore/.mailmap @@ -0,0 +1,6 @@ +Jason Dobry Jason Dobry +Jason Dobry Jason Dobry +Jun Mukai Jun Mukai +Luke Sneeringer +Stephen Sawchuk Stephen +Stephen Sawchuk Stephen Sawchuk diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc new file mode 100644 index 00000000000..a1a8e6920ce --- /dev/null +++ b/handwritten/nodejs-datastore/.nycrc @@ -0,0 +1,26 @@ +{ + "report-dir": "./.coverage", + "exclude": [ + "src/*{/*,/**/*}.js", + "src/*/v*/*.js", + "test/**/*.js" + ], + "watermarks": { + "branches": [ + 95, + 100 + ], + "functions": [ + 95, + 100 + ], + "lines": [ + 95, + 100 + ], + "statements": [ + 95, + 100 + ] + } +} diff --git a/handwritten/nodejs-datastore/.prettierignore b/handwritten/nodejs-datastore/.prettierignore new file mode 100644 index 00000000000..f6fac98b0a8 --- /dev/null +++ b/handwritten/nodejs-datastore/.prettierignore @@ -0,0 +1,3 @@ +node_modules/* +samples/node_modules/* +src/**/doc/* diff --git a/handwritten/nodejs-datastore/.prettierrc b/handwritten/nodejs-datastore/.prettierrc new file mode 100644 index 00000000000..df6eac07446 --- /dev/null +++ b/handwritten/nodejs-datastore/.prettierrc @@ -0,0 +1,8 @@ +--- +bracketSpacing: false +printWidth: 80 +semi: true +singleQuote: true +tabWidth: 2 +trailingComma: es5 +useTabs: false diff --git a/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md b/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..46b2a08ea6d --- /dev/null +++ b/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md @@ -0,0 +1,43 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, +and in the interest of fostering an open and welcoming community, +we pledge to respect all people who contribute through reporting issues, +posting feature requests, updating documentation, +submitting pull requests or patches, and other activities. + +We are committed to making participation in this project +a harassment-free experience for everyone, +regardless of level of experience, gender, gender identity and expression, +sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, +such as physical or electronic +addresses, without explicit permission +* Other unethical or unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct. +By adopting this Code of Conduct, +project maintainers commit themselves to fairly and consistently +applying these principles to every aspect of managing this project. +Project maintainers who do not follow or enforce the Code of Conduct +may be permanently removed from the project team. + +This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported by opening an issue +or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, +available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) diff --git a/handwritten/nodejs-datastore/CONTRIBUTORS b/handwritten/nodejs-datastore/CONTRIBUTORS new file mode 100644 index 00000000000..4e3aa7f5d47 --- /dev/null +++ b/handwritten/nodejs-datastore/CONTRIBUTORS @@ -0,0 +1,21 @@ +# The names of individuals who have contributed to this project. +# +# Names are formatted as: +# name +# +Ace Nassri +Ali Ijaz Sheikh +Dave Gramlich +Eric Uldall +Geoffrey Gowan +Jason Dobry +Jun Mukai +Luke Sneeringer +Patrick Costello +Philip Irri +Song Wang +Stephen Sawchuk +Tim Swast +Walter Poupore +antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ +tcrognon diff --git a/handwritten/nodejs-datastore/LICENSE b/handwritten/nodejs-datastore/LICENSE new file mode 100644 index 00000000000..7a4a3ea2424 --- /dev/null +++ b/handwritten/nodejs-datastore/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 191ca5c7b5c..edd844c9211 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -1,116 +1,143 @@ -# @google-cloud/datastore ([GA][versioning]) -> Cloud Datastore Client Library for Node.js +Google Cloud Platform logo -*Looking for more Google APIs than just Datastore? You might want to check out [`google-cloud`][google-cloud].* +# [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) -- [API Documentation][gcloud-datastore-docs] -- [Official Documentation][cloud-datastore-docs] +[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) +[![CircleCI](https://img.shields.io/circleci/project/github/googleapis/nodejs-datastore.svg?style=flat)](https://circleci.com/gh/googleapis/nodejs-datastore) +[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/googleapis/nodejs-datastore?branch=master&svg=true)](https://ci.appveyor.com/project/googleapis/nodejs-datastore) +[![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) -*Follow the [activation instructions][cloud-datastore-activation] to use the Cloud Datastore API with your project.* +> Node.js idiomatic client for [Cloud Datastore][product-docs]. -```sh -$ npm install --save @google-cloud/datastore -``` -```js -var datastore = require('@google-cloud/datastore')({ - projectId: 'grape-spaceship-123', - keyFilename: '/path/to/keyfile.json' -}); +[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects. -var key = datastore.key(['Product', 'Computer']); -datastore.get(key, function(err, entity) { - console.log(err || entity); -}); +* [Cloud Datastore Node.js Client API Reference][client-docs] +* [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) +* [Cloud Datastore Documentation][product-docs] -// Save data to Datastore. -var blogPostData = { - title: 'How to make the perfect homemade pasta', - author: 'Andrew Chilton', - isDraft: true -}; +Read more about the client libraries for Cloud APIs, including the older +Google APIs Client Libraries, in [Client Libraries Explained][explained]. -var blogPostKey = datastore.key('BlogPost'); - -datastore.save({ - key: blogPostKey, - data: blogPostData -}, function(err) { - // `blogPostKey` has been updated with an ID so you can do more operations - // with it, such as an update. - blogPostData.isDraft = false; - - datastore.save({ - key: blogPostKey, - data: blogPostData - }, function(err) { - if (!err) { - // The blog post is now published! - } - }); -}); +[explained]: https://cloud.google.com/apis/docs/client-libraries-explained -// Promises are also supported by omitting callbacks. -datastore.save({ - key: blogPostKey, - data: blogPostData -}).then(function() { - // The blog post is now published! -}); +**Table of contents:** -// It's also possible to integrate with third-party Promise libraries. -var datastore = require('@google-cloud/datastore')({ - promise: require('bluebird') -}); -``` +* [Quickstart](#quickstart) + * [Before you begin](#before-you-begin) + * [Installing the client library](#installing-the-client-library) + * [Using the client library](#using-the-client-library) +* [Samples](#samples) +* [Versioning](#versioning) +* [Contributing](#contributing) +* [License](#license) +## Quickstart -## Authentication +### Before you begin -It's incredibly easy to get authenticated and start using Google's APIs. You can set your credentials on a global basis as well as on a per-API basis. See each individual API section below to see how you can auth on a per-API-basis. This is useful if you want to use different accounts for different Cloud services. +1. Select or create a Cloud Platform project. -### On Google Cloud Platform + [Go to the projects page][projects] -If you are running this client on Google Cloud Platform, we handle authentication for you with no configuration. You just need to make sure that when you [set up the GCE instance][gce-how-to], you add the correct scopes for the APIs you want to access. +1. Enable billing for your project. -``` js -var datastore = require('@google-cloud/datastore')(); -// ...you're good to go! -``` + [Enable billing][billing] -### Elsewhere +1. Enable the Google Cloud Datastore API. -If you are not running this client on Google Cloud Platform, you need a Google Developers service account. To create a service account: + [Enable the API][enable_api] -1. Visit the [Google Developers Console][dev-console]. -2. Create a new project or click on an existing project. -3. Navigate to **APIs & auth** > **APIs section** and turn on the following APIs (you may need to enable billing in order to use these services): - * Cloud Datastore API -4. Navigate to **APIs & auth** > **Credentials** and then: - * If you want to use a new service account key, click on **Create credentials** and select **Service account key**. After the account key is created, you will be prompted to download the JSON key file that the library uses to authenticate your requests. - * If you want to generate a new service account key for an existing service account, click on **Generate new JSON key** and download the JSON key file. +1. [Set up authentication with a service account][auth] so you can access the + API from your local workstation. -``` js -var projectId = process.env.GCLOUD_PROJECT; // E.g. 'grape-spaceship-123' +[projects]: https://console.cloud.google.com/project +[billing]: https://support.google.com/cloud/answer/6293499#enable-billing +[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com +[auth]: https://cloud.google.com/docs/authentication/getting-started -var datastore = require('@google-cloud/datastore')({ - projectId: projectId, +### Installing the client library + + npm install --save @google-cloud/datastore - // The path to your key file: - keyFilename: '/path/to/keyfile.json' +### Using the client library - // Or the contents of the key file: - credentials: require('./path/to/keyfile.json') +```javascript +// Imports the Google Cloud client library +const Datastore = require('@google-cloud/datastore'); + +// Your Google Cloud Platform project ID +const projectId = 'YOUR_PROJECT_ID'; + +// Creates a client +const datastore = new Datastore({ + projectId: projectId, }); -// ...you're good to go! +// The kind for the new entity +const kind = 'Task'; +// The name/ID for the new entity +const name = 'sampletask1'; +// The Cloud Datastore key for the new entity +const taskKey = datastore.key([kind, name]); + +// Prepares the new entity +const task = { + key: taskKey, + data: { + description: 'Buy milk', + }, +}; + +// Saves the entity +datastore + .save(task) + .then(() => { + console.log(`Saved ${task.key.name}: ${task.data.description}`); + }) + .catch(err => { + console.error('ERROR:', err); + }); ``` +## Samples + +Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/master/samples) directory. The samples' `README.md` +has instructions for running the samples. + +| Sample | Source Code | Try it | +| --------------------------- | --------------------------------- | ------ | +| Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | +| Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | +| Errors and Error Handling | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | + +The [Cloud Datastore Node.js Client API Reference][client-docs] documentation +also contains samples. + +## Versioning + +This library follows [Semantic Versioning](http://semver.org/). + +This library is considered to be **General Availability (GA)**. This means it +is stable; the code surface will not change in backwards-incompatible ways +unless absolutely necessary (e.g. because of critical security issues) or with +an extensive deprecation period. Issues and requests against **GA** libraries +are addressed with the highest priority. + +More Information: [Google Cloud Platform Launch Stages][launch_stages] + +[launch_stages]: https://cloud.google.com/terms/launch-stages + +## Contributing + +Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/master/.github/CONTRIBUTING.md). + +## License + +Apache Version 2.0 + +See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[versioning]: https://github.com/GoogleCloudPlatform/google-cloud-node#versioning -[google-cloud]: https://github.com/GoogleCloudPlatform/google-cloud-node -[gce-how-to]: https://cloud.google.com/compute/docs/authentication#using -[dev-console]: https://console.developers.google.com/project -[gcloud-datastore-docs]: https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore -[cloud-datastore-docs]: https://cloud.google.com/datastore/docs -[cloud-datastore-activation]: https://cloud.google.com/datastore/docs/activate +[client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ +[product-docs]: https://cloud.google.com/datastore/docs +[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 682cb96337d..64b76b8a4ca 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,34 +1,13 @@ { "name": "@google-cloud/datastore", + "description": "Cloud Datastore Client Library for Node.js", "version": "1.1.0", + "license": "Apache-2.0", "author": "Google Inc.", - "description": "Cloud Datastore Client Library for Node.js", - "contributors": [ - { - "name": "Burcu Dogan", - "email": "jbd@google.com" - }, - { - "name": "Johan Euphrosine", - "email": "proppy@google.com" - }, - { - "name": "Patrick Costello", - "email": "pcostell@google.com" - }, - { - "name": "Ryan Seys", - "email": "ryan@ryanseys.com" - }, - { - "name": "Silvano Luciani", - "email": "silvano@google.com" - }, - { - "name": "Stephen Sawchuk", - "email": "sawchuk@gmail.com" - } - ], + "engines": { + "node": ">=4.0.0" + }, + "repository": "googleapis/nodejs-datastore", "main": "./src/index.js", "files": [ "protos", @@ -37,7 +16,6 @@ "CONTRIBUTORS", "LICENSE" ], - "repository": "googlecloudplatform/google-cloud-node", "keywords": [ "google apis client", "google api client", @@ -50,37 +28,71 @@ "google datastore", "datastore" ], + "contributors": [ + "Ace Nassri ", + "Ali Ijaz Sheikh ", + "Dave Gramlich ", + "Eric Uldall ", + "Geoffrey Gowan ", + "Jason Dobry ", + "Jun Mukai ", + "Luke Sneeringer ", + "Patrick Costello ", + "Philip Irri ", + "Song Wang ", + "Stephen Sawchuk ", + "Tim Swast ", + "Walter Poupore ", + "antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ ", + "tcrognon " + ], + "scripts": { + "docs": "repo-tools exec -- jsdoc -c .jsdoc.js", + "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", + "lint": "repo-tools lint --cmd eslint -- src/ samples/ system-test/ test/", + "prettier": "repo-tools exec -- prettier --write src/*.js src/*/*.js samples/*.js samples/*/*.js test/*.js test/*/*.js system-test/*.js system-test/*/*.js", + "cover": "nyc --reporter=lcov mocha --require intelli-espower-loader test/*.js && nyc report", + "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", + "test-no-cover": "repo-tools test run --cmd mocha -- test/*.js --no-timeouts", + "test": "repo-tools test run --cmd npm -- run cover", + "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --no-timeouts" + }, "dependencies": { - "@google-cloud/common": "^0.13.0", - "@google-cloud/common-grpc": "^0.4.0", + "@google-cloud/common": "^0.14.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", - "extend": "^3.0.0", + "extend": "^3.0.1", + "google-auto-auth": "^0.7.2", "google-gax": "^0.14.2", "google-proto-files": "^0.13.1", "is": "^3.0.1", "lodash.flatten": "^4.2.0", - "modelo": "^4.2.0", + "lodash.merge": "^4.6.0", "prop-assign": "^1.0.0", "propprop": "^0.3.0", - "split-array-stream": "^1.0.0" + "safe-buffer": "^5.1.1", + "split-array-stream": "^1.0.0", + "stream-events": "^1.0.2", + "through2": "^2.0.3" }, "devDependencies": { - "async": "^2.0.1", + "@google-cloud/nodejs-repo-tools": "^2.1.3", + "async": "^2.6.0", + "codecov": "^3.0.0", "deep-strict-equal": "^0.2.0", - "mocha": "^3.0.1", + "eslint": "^4.10.0", + "eslint-config-prettier": "^2.7.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-prettier": "^2.3.1", + "ink-docstrap": "^1.3.2", + "intelli-espower-loader": "^1.0.1", + "jsdoc": "^3.5.5", + "mocha": "^4.0.1", + "nyc": "^11.3.0", + "power-assert": "^1.4.4", + "prettier": "^1.9.2", "proxyquire": "^1.7.10", - "sinon": "^1.17.6", - "through2": "^2.0.0" - }, - "scripts": { - "publish-module": "node ../../scripts/publish.js datastore", - "test": "mocha test/*.js", - "system-test": "mocha system-test/*.js --no-timeouts --bail" - }, - "license": "Apache-2.0", - "engines": { - "node": ">=4.0.0" + "sinon": "^4.1.1" } } diff --git a/handwritten/nodejs-datastore/protos/google/api/annotations.proto b/handwritten/nodejs-datastore/protos/google/api/annotations.proto deleted file mode 100644 index 85c361b47fe..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/annotations.proto +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2015, Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/http.proto"; -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "AnnotationsProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -extend google.protobuf.MethodOptions { - // See `HttpRule`. - HttpRule http = 72295728; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/auth.proto b/handwritten/nodejs-datastore/protos/google/api/auth.proto deleted file mode 100644 index 0ef63863192..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/auth.proto +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "AuthProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Authentication` defines the authentication configuration for an API. -// -// Example for an API targeted for external use: -// -// name: calendar.googleapis.com -// authentication: -// providers: -// - id: google_calendar_auth -// jwks_uri: https://www.googleapis.com/oauth2/v1/certs -// issuer: https://securetoken.google.com -// rules: -// - selector: "*" -// requirements: -// provider_id: google_calendar_auth -message Authentication { - // A list of authentication rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated AuthenticationRule rules = 3; - - // Defines a set of authentication providers that a service supports. - repeated AuthProvider providers = 4; -} - -// Authentication rules for the service. -// -// By default, if a method has any authentication requirements, every request -// must include a valid credential matching one of the requirements. -// It's an error to include more than one kind of credential in a single -// request. -// -// If a method doesn't have any auth requirements, request credentials will be -// ignored. -message AuthenticationRule { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // The requirements for OAuth credentials. - OAuthRequirements oauth = 2; - - // Whether to allow requests without a credential. The credential can be - // an OAuth token, Google cookies (first-party auth) or EndUserCreds. - // - // For requests without credentials, if the service control environment is - // specified, each incoming request **must** be associated with a service - // consumer. This can be done by passing an API key that belongs to a consumer - // project. - bool allow_without_credential = 5; - - // Requirements for additional authentication providers. - repeated AuthRequirement requirements = 7; -} - -// Configuration for an anthentication provider, including support for -// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). -message AuthProvider { - // The unique identifier of the auth provider. It will be referred to by - // `AuthRequirement.provider_id`. - // - // Example: "bookstore_auth". - string id = 1; - - // Identifies the principal that issued the JWT. See - // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 - // Usually a URL or an email address. - // - // Example: https://securetoken.google.com - // Example: 1234567-compute@developer.gserviceaccount.com - string issuer = 2; - - // URL of the provider's public key set to validate signature of the JWT. See - // [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). - // Optional if the key set document: - // - can be retrieved from - // [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html - // of the issuer. - // - can be inferred from the email domain of the issuer (e.g. a Google service account). - // - // Example: https://www.googleapis.com/oauth2/v1/certs - string jwks_uri = 3; - - // The list of JWT - // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). - // that are allowed to access. A JWT containing any of these audiences will - // be accepted. When this setting is absent, only JWTs with audience - // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" - // will be accepted. For example, if no audiences are in the setting, - // LibraryService API will only accept JWTs with the following audience - // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". - // - // Example: - // - // audiences: bookstore_android.apps.googleusercontent.com, - // bookstore_web.apps.googleusercontent.com - string audiences = 4; -} - -// OAuth scopes are a way to define data and permissions on data. For example, -// there are scopes defined for "Read-only access to Google Calendar" and -// "Access to Cloud Platform". Users can consent to a scope for an application, -// giving it permission to access that data on their behalf. -// -// OAuth scope specifications should be fairly coarse grained; a user will need -// to see and understand the text description of what your scope means. -// -// In most cases: use one or at most two OAuth scopes for an entire family of -// products. If your product has multiple APIs, you should probably be sharing -// the OAuth scope across all of those APIs. -// -// When you need finer grained OAuth consent screens: talk with your product -// management about how developers will use them in practice. -// -// Please note that even though each of the canonical scopes is enough for a -// request to be accepted and passed to the backend, a request can still fail -// due to the backend requiring additional scopes or permissions. -message OAuthRequirements { - // The list of publicly documented OAuth scopes that are allowed access. An - // OAuth token containing any of these scopes will be accepted. - // - // Example: - // - // canonical_scopes: https://www.googleapis.com/auth/calendar, - // https://www.googleapis.com/auth/calendar.read - string canonical_scopes = 1; -} - -// User-defined authentication requirements, including support for -// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). -message AuthRequirement { - // [id][google.api.AuthProvider.id] from authentication provider. - // - // Example: - // - // provider_id: bookstore_auth - string provider_id = 1; - - // NOTE: This will be deprecated soon, once AuthProvider.audiences is - // implemented and accepted in all the runtime components. - // - // The list of JWT - // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). - // that are allowed to access. A JWT containing any of these audiences will - // be accepted. When this setting is absent, only JWTs with audience - // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" - // will be accepted. For example, if no audiences are in the setting, - // LibraryService API will only accept JWTs with the following audience - // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". - // - // Example: - // - // audiences: bookstore_android.apps.googleusercontent.com, - // bookstore_web.apps.googleusercontent.com - string audiences = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/backend.proto b/handwritten/nodejs-datastore/protos/google/api/backend.proto deleted file mode 100644 index 61a72e14d19..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/backend.proto +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "BackendProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Backend` defines the backend configuration for a service. -message Backend { - // A list of API backend rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated BackendRule rules = 1; -} - -// A backend rule provides configuration for an individual API element. -message BackendRule { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // The address of the API backend. - string address = 2; - - // The number of seconds to wait for a response from a request. The - // default depends on the deployment context. - double deadline = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/billing.proto b/handwritten/nodejs-datastore/protos/google/api/billing.proto deleted file mode 100644 index 6ecffd5451e..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/billing.proto +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; -import "google/api/metric.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "BillingProto"; -option java_package = "com.google.api"; - - -// Billing related configuration of the service. -// -// The following example shows how to configure metrics for billing: -// -// metrics: -// - name: library.googleapis.com/read_calls -// metric_kind: DELTA -// value_type: INT64 -// - name: library.googleapis.com/write_calls -// metric_kind: DELTA -// value_type: INT64 -// billing: -// metrics: -// - library.googleapis.com/read_calls -// - library.googleapis.com/write_calls -// -// The next example shows how to enable billing status check and customize the -// check behavior. It makes sure billing status check is included in the `Check` -// method of [Service Control API](https://cloud.google.com/service-control/). -// In the example, "google.storage.Get" method can be served when the billing -// status is either `current` or `delinquent`, while "google.storage.Write" -// method can only be served when the billing status is `current`: -// -// billing: -// rules: -// - selector: google.storage.Get -// allowed_statuses: -// - current -// - delinquent -// - selector: google.storage.Write -// allowed_statuses: current -// -// Mostly services should only allow `current` status when serving requests. -// In addition, services can choose to allow both `current` and `delinquent` -// statuses when serving read-only requests to resources. If there's no -// matching selector for operation, no billing status check will be performed. -// -message Billing { - // Names of the metrics to report to billing. Each name must - // be defined in [Service.metrics][google.api.Service.metrics] section. - repeated string metrics = 1; - - // A list of billing status rules for configuring billing status check. - repeated BillingStatusRule rules = 5; -} - -// Defines the billing status requirements for operations. -// -// When used with -// [Service Control API](https://cloud.google.com/service-control/), the -// following statuses are supported: -// -// - **current**: the associated billing account is up to date and capable of -// paying for resource usages. -// - **delinquent**: the associated billing account has a correctable problem, -// such as late payment. -// -// Mostly services should only allow `current` status when serving requests. -// In addition, services can choose to allow both `current` and `delinquent` -// statuses when serving read-only requests to resources. If the list of -// allowed_statuses is empty, it means no billing requirement. -// -message BillingStatusRule { - // Selects the operation names to which this rule applies. - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Allowed billing statuses. The billing status check passes if the actual - // billing status matches any of the provided values here. - repeated string allowed_statuses = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/config_change.proto b/handwritten/nodejs-datastore/protos/google/api/config_change.proto deleted file mode 100644 index 3c416164ec5..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/config_change.proto +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/configchange;configchange"; -option java_multiple_files = true; -option java_outer_classname = "ConfigChangeProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Output generated from semantically comparing two versions of a service -// configuration. -// -// Includes detailed information about a field that have changed with -// applicable advice about potential consequences for the change, such as -// backwards-incompatibility. -message ConfigChange { - // Object hierarchy path to the change, with levels separated by a '.' - // character. For repeated fields, an applicable unique identifier field is - // used for the index (usually selector, name, or id). For maps, the term - // 'key' is used. If the field has no unique identifier, the numeric index - // is used. - // Examples: - // - visibility.rules[selector=="google.LibraryService.CreateBook"].restriction - // - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value - // - logging.producer_destinations[0] - string element = 1; - - // Value of the changed object in the old Service configuration, - // in JSON format. This field will not be populated if ChangeType == ADDED. - string old_value = 2; - - // Value of the changed object in the new Service configuration, - // in JSON format. This field will not be populated if ChangeType == REMOVED. - string new_value = 3; - - // The type for this change, either ADDED, REMOVED, or MODIFIED. - ChangeType change_type = 4; - - // Collection of advice provided for this change, useful for determining the - // possible impact of this change. - repeated Advice advices = 5; -} - -// Generated advice about this change, used for providing more -// information about how a change will affect the existing service. -message Advice { - // Useful description for why this advice was applied and what actions should - // be taken to mitigate any implied risks. - string description = 2; -} - -// Classifies set of possible modifications to an object in the service -// configuration. -enum ChangeType { - // No value was provided. - CHANGE_TYPE_UNSPECIFIED = 0; - - // The changed object exists in the 'new' service configuration, but not - // in the 'old' service configuration. - ADDED = 1; - - // The changed object exists in the 'old' service configuration, but not - // in the 'new' service configuration. - REMOVED = 2; - - // The changed object exists in both service configurations, but its value - // is different. - MODIFIED = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/consumer.proto b/handwritten/nodejs-datastore/protos/google/api/consumer.proto deleted file mode 100644 index 4e963168efc..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/consumer.proto +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "ConsumerProto"; -option java_package = "com.google.api"; - - -// A descriptor for defining project properties for a service. One service may -// have many consumer projects, and the service may want to behave differently -// depending on some properties on the project. For example, a project may be -// associated with a school, or a business, or a government agency, a business -// type property on the project may affect how a service responds to the client. -// This descriptor defines which properties are allowed to be set on a project. -// -// Example: -// -// project_properties: -// properties: -// - name: NO_WATERMARK -// type: BOOL -// description: Allows usage of the API without watermarks. -// - name: EXTENDED_TILE_CACHE_PERIOD -// type: INT64 -message ProjectProperties { - // List of per consumer project-specific properties. - repeated Property properties = 1; -} - -// Defines project properties. -// -// API services can define properties that can be assigned to consumer projects -// so that backends can perform response customization without having to make -// additional calls or maintain additional storage. For example, Maps API -// defines properties that controls map tile cache period, or whether to embed a -// watermark in a result. -// -// These values can be set via API producer console. Only API providers can -// define and set these properties. -message Property { - // Supported data type of the property values - enum PropertyType { - // The type is unspecified, and will result in an error. - UNSPECIFIED = 0; - - // The type is `int64`. - INT64 = 1; - - // The type is `bool`. - BOOL = 2; - - // The type is `string`. - STRING = 3; - - // The type is 'double'. - DOUBLE = 4; - } - - // The name of the property (a.k.a key). - string name = 1; - - // The type of this property. - PropertyType type = 2; - - // The description of the property - string description = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/context.proto b/handwritten/nodejs-datastore/protos/google/api/context.proto deleted file mode 100644 index fd03fcae916..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/context.proto +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "ContextProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Context` defines which contexts an API requests. -// -// Example: -// -// context: -// rules: -// - selector: "*" -// requested: -// - google.rpc.context.ProjectContext -// - google.rpc.context.OriginContext -// -// The above specifies that all methods in the API request -// `google.rpc.context.ProjectContext` and -// `google.rpc.context.OriginContext`. -// -// Available context types are defined in package -// `google.rpc.context`. -message Context { - // A list of RPC context rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated ContextRule rules = 1; -} - -// A context rule provides information about the context for an individual API -// element. -message ContextRule { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // A list of full type names of requested contexts. - repeated string requested = 2; - - // A list of full type names of provided contexts. - repeated string provided = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/control.proto b/handwritten/nodejs-datastore/protos/google/api/control.proto deleted file mode 100644 index acad56cbdde..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/control.proto +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "ControlProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Selects and configures the service controller used by the service. The -// service controller handles features like abuse, quota, billing, logging, -// monitoring, etc. -message Control { - // The service control environment to use. If empty, no control plane - // feature (like quota and billing) will be enabled. - string environment = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/distribution.proto b/handwritten/nodejs-datastore/protos/google/api/distribution.proto deleted file mode 100644 index 2861e9b6f3a..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/distribution.proto +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/distribution;distribution"; -option java_multiple_files = true; -option java_outer_classname = "DistributionProto"; -option java_package = "com.google.api"; - - -// Distribution contains summary statistics for a population of values and, -// optionally, a histogram representing the distribution of those values across -// a specified set of histogram buckets. -// -// The summary statistics are the count, mean, sum of the squared deviation from -// the mean, the minimum, and the maximum of the set of population of values. -// -// The histogram is based on a sequence of buckets and gives a count of values -// that fall into each bucket. The boundaries of the buckets are given either -// explicitly or by specifying parameters for a method of computing them -// (buckets of fixed width or buckets of exponentially increasing width). -// -// Although it is not forbidden, it is generally a bad idea to include -// non-finite values (infinities or NaNs) in the population of values, as this -// will render the `mean` and `sum_of_squared_deviation` fields meaningless. -message Distribution { - // The range of the population values. - message Range { - // The minimum of the population values. - double min = 1; - - // The maximum of the population values. - double max = 2; - } - - // A Distribution may optionally contain a histogram of the values in the - // population. The histogram is given in `bucket_counts` as counts of values - // that fall into one of a sequence of non-overlapping buckets. The sequence - // of buckets is described by `bucket_options`. - // - // A bucket specifies an inclusive lower bound and exclusive upper bound for - // the values that are counted for that bucket. The upper bound of a bucket - // is strictly greater than the lower bound. - // - // The sequence of N buckets for a Distribution consists of an underflow - // bucket (number 0), zero or more finite buckets (number 1 through N - 2) and - // an overflow bucket (number N - 1). The buckets are contiguous: the lower - // bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. - // The buckets span the whole range of finite values: lower bound of the - // underflow bucket is -infinity and the upper bound of the overflow bucket is - // +infinity. The finite buckets are so-called because both bounds are - // finite. - // - // `BucketOptions` describes bucket boundaries in one of three ways. Two - // describe the boundaries by giving parameters for a formula to generate - // boundaries and one gives the bucket boundaries explicitly. - // - // If `bucket_boundaries` is not given, then no `bucket_counts` may be given. - message BucketOptions { - // Specify a sequence of buckets that all have the same width (except - // overflow and underflow). Each bucket represents a constant absolute - // uncertainty on the specific value in the bucket. - // - // Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for - // bucket `i`: - // - // Upper bound (0 <= i < N-1): offset + (width * i). - // Lower bound (1 <= i < N): offset + (width * (i - 1)). - message Linear { - // Must be greater than 0. - int32 num_finite_buckets = 1; - - // Must be greater than 0. - double width = 2; - - // Lower bound of the first bucket. - double offset = 3; - } - - // Specify a sequence of buckets that have a width that is proportional to - // the value of the lower bound. Each bucket represents a constant relative - // uncertainty on a specific value in the bucket. - // - // Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for - // bucket i: - // - // Upper bound (0 <= i < N-1): scale * (growth_factor ^ i). - // Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). - message Exponential { - // Must be greater than 0. - int32 num_finite_buckets = 1; - - // Must be greater than 1. - double growth_factor = 2; - - // Must be greater than 0. - double scale = 3; - } - - // A set of buckets with arbitrary widths. - // - // Defines `size(bounds) + 1` (= N) buckets with these boundaries for - // bucket i: - // - // Upper bound (0 <= i < N-1): bounds[i] - // Lower bound (1 <= i < N); bounds[i - 1] - // - // There must be at least one element in `bounds`. If `bounds` has only one - // element, there are no finite buckets, and that single element is the - // common boundary of the overflow and underflow buckets. - message Explicit { - // The values must be monotonically increasing. - repeated double bounds = 1; - } - - // Exactly one of these three fields must be set. - oneof options { - // The linear bucket. - Linear linear_buckets = 1; - - // The exponential buckets. - Exponential exponential_buckets = 2; - - // The explicit buckets. - Explicit explicit_buckets = 3; - } - } - - // The number of values in the population. Must be non-negative. - int64 count = 1; - - // The arithmetic mean of the values in the population. If `count` is zero - // then this field must be zero. - double mean = 2; - - // The sum of squared deviations from the mean of the values in the - // population. For values x_i this is: - // - // Sum[i=1..n]((x_i - mean)^2) - // - // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition - // describes Welford's method for accumulating this sum in one pass. - // - // If `count` is zero then this field must be zero. - double sum_of_squared_deviation = 3; - - // If specified, contains the range of the population values. The field - // must not be present if the `count` is zero. - Range range = 4; - - // Defines the histogram bucket boundaries. - BucketOptions bucket_options = 6; - - // If `bucket_options` is given, then the sum of the values in `bucket_counts` - // must equal the value in `count`. If `bucket_options` is not given, no - // `bucket_counts` fields may be given. - // - // Bucket counts are given in order under the numbering scheme described - // above (the underflow bucket has number 0; the finite buckets, if any, - // have numbers 1 through N-2; the overflow bucket has number N-1). - // - // The size of `bucket_counts` must be no greater than N as defined in - // `bucket_options`. - // - // Any suffix of trailing zero bucket_count fields may be omitted. - repeated int64 bucket_counts = 7; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/documentation.proto b/handwritten/nodejs-datastore/protos/google/api/documentation.proto deleted file mode 100644 index 0b85eca51e5..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/documentation.proto +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "DocumentationProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Documentation` provides the information for describing a service. -// -// Example: -//
documentation:
-//   summary: >
-//     The Google Calendar API gives access
-//     to most calendar features.
-//   pages:
-//   - name: Overview
-//     content: (== include google/foo/overview.md ==)
-//   - name: Tutorial
-//     content: (== include google/foo/tutorial.md ==)
-//     subpages;
-//     - name: Java
-//       content: (== include google/foo/tutorial_java.md ==)
-//   rules:
-//   - selector: google.calendar.Calendar.Get
-//     description: >
-//       ...
-//   - selector: google.calendar.Calendar.Put
-//     description: >
-//       ...
-// 
-// Documentation is provided in markdown syntax. In addition to -// standard markdown features, definition lists, tables and fenced -// code blocks are supported. Section headers can be provided and are -// interpreted relative to the section nesting of the context where -// a documentation fragment is embedded. -// -// Documentation from the IDL is merged with documentation defined -// via the config at normalization time, where documentation provided -// by config rules overrides IDL provided. -// -// A number of constructs specific to the API platform are supported -// in documentation text. -// -// In order to reference a proto element, the following -// notation can be used: -//
[fully.qualified.proto.name][]
-// To override the display text used for the link, this can be used: -//
[display text][fully.qualified.proto.name]
-// Text can be excluded from doc using the following notation: -//
(-- internal comment --)
-// Comments can be made conditional using a visibility label. The below -// text will be only rendered if the `BETA` label is available: -//
(--BETA: comment for BETA users --)
-// A few directives are available in documentation. Note that -// directives must appear on a single line to be properly -// identified. The `include` directive includes a markdown file from -// an external source: -//
(== include path/to/file ==)
-// The `resource_for` directive marks a message to be the resource of -// a collection in REST view. If it is not specified, tools attempt -// to infer the resource from the operations in a collection: -//
(== resource_for v1.shelves.books ==)
-// The directive `suppress_warning` does not directly affect documentation -// and is documented together with service config validation. -message Documentation { - // A short summary of what the service does. Can only be provided by - // plain text. - string summary = 1; - - // The top level pages for the documentation set. - repeated Page pages = 5; - - // A list of documentation rules that apply to individual API elements. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated DocumentationRule rules = 3; - - // The URL to the root of documentation. - string documentation_root_url = 4; - - // Declares a single overview page. For example: - //
documentation:
-  //   summary: ...
-  //   overview: (== include overview.md ==)
-  // 
- // This is a shortcut for the following declaration (using pages style): - //
documentation:
-  //   summary: ...
-  //   pages:
-  //   - name: Overview
-  //     content: (== include overview.md ==)
-  // 
- // Note: you cannot specify both `overview` field and `pages` field. - string overview = 2; -} - -// A documentation rule provides information about individual API elements. -message DocumentationRule { - // The selector is a comma-separated list of patterns. Each pattern is a - // qualified name of the element which may end in "*", indicating a wildcard. - // Wildcards are only allowed at the end and for a whole component of the - // qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To - // specify a default for all applicable elements, the whole pattern "*" - // is used. - string selector = 1; - - // Description of the selected API(s). - string description = 2; - - // Deprecation description of the selected element(s). It can be provided if an - // element is marked as `deprecated`. - string deprecation_description = 3; -} - -// Represents a documentation page. A page can contain subpages to represent -// nested documentation set structure. -message Page { - // The name of the page. It will be used as an identity of the page to - // generate URI of the page, text of the link to this page in navigation, - // etc. The full page name (start from the root page name to this page - // concatenated with `.`) can be used as reference to the page in your - // documentation. For example: - //
pages:
-  // - name: Tutorial
-  //   content: (== include tutorial.md ==)
-  //   subpages:
-  //   - name: Java
-  //     content: (== include tutorial_java.md ==)
-  // 
- // You can reference `Java` page using Markdown reference link syntax: - // `[Java][Tutorial.Java]`. - string name = 1; - - // The Markdown content of the page. You can use (== include {path} ==) - // to include content from a Markdown file. - string content = 2; - - // Subpages of this page. The order of subpages specified here will be - // honored in the generated docset. - repeated Page subpages = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/endpoint.proto b/handwritten/nodejs-datastore/protos/google/api/endpoint.proto deleted file mode 100644 index 68655b26a08..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/endpoint.proto +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "EndpointProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Endpoint` describes a network endpoint that serves a set of APIs. -// A service may expose any number of endpoints, and all endpoints share the -// same service configuration, such as quota configuration and monitoring -// configuration. -// -// Example service configuration: -// -// name: library-example.googleapis.com -// endpoints: -// # Below entry makes 'google.example.library.v1.Library' -// # API be served from endpoint address library-example.googleapis.com. -// # It also allows HTTP OPTIONS calls to be passed to the backend, for -// # it to decide whether the subsequent cross-origin request is -// # allowed to proceed. -// - name: library-example.googleapis.com -// allow_cors: true -message Endpoint { - // The canonical name of this endpoint. - string name = 1; - - // DEPRECATED: This field is no longer supported. Instead of using aliases, - // please specify multiple [google.api.Endpoint][google.api.Endpoint] for each of the intented - // alias. - // - // Additional names that this endpoint will be hosted on. - repeated string aliases = 2; - - // The list of APIs served by this endpoint. - repeated string apis = 3; - - // The list of features enabled on this endpoint. - repeated string features = 4; - - // The specification of an Internet routable address of API frontend that will - // handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). - // It should be either a valid IPv4 address or a fully-qualified domain name. - // For example, "8.8.8.8" or "myservice.appspot.com". - string target = 101; - - // Allowing - // [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka - // cross-domain traffic, would allow the backends served from this endpoint to - // receive and respond to HTTP OPTIONS requests. The response will be used by - // the browser to determine whether the subsequent cross-origin request is - // allowed to proceed. - bool allow_cors = 5; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto b/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto deleted file mode 100644 index 5c213c62531..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/experimental/authorization_config.proto +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api;api"; -option java_multiple_files = true; -option java_outer_classname = "AuthorizationConfigProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Configuration of authorization. -// -// This section determines the authorization provider, if unspecified, then no -// authorization check will be done. -// -// Example: -// -// experimental: -// authorization: -// provider: firebaserules.googleapis.com -message AuthorizationConfig { - // The name of the authorization provider, such as - // firebaserules.googleapis.com. - string provider = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto b/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto deleted file mode 100644 index b98097df54a..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/experimental/experimental.proto +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; -import "google/api/experimental/authorization_config.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api;api"; -option java_multiple_files = true; -option java_outer_classname = "ExperimentalProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Experimental service configuration. These configuration options can -// only be used by whitelisted users. -message Experimental { - // Authorization configuration. - AuthorizationConfig authorization = 8; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/http.proto b/handwritten/nodejs-datastore/protos/google/api/http.proto deleted file mode 100644 index 5f8538a0164..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/http.proto +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "HttpProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Defines the HTTP configuration for a service. It contains a list of -// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -// to one or more HTTP REST API methods. -message Http { - // A list of HTTP configuration rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated HttpRule rules = 1; -} - -// `HttpRule` defines the mapping of an RPC method to one or more HTTP -// REST APIs. The mapping determines what portions of the request -// message are populated from the path, query parameters, or body of -// the HTTP request. The mapping is typically specified as an -// `google.api.http` annotation, see "google/api/annotations.proto" -// for details. -// -// The mapping consists of a field specifying the path template and -// method kind. The path template can refer to fields in the request -// message, as in the example below which describes a REST GET -// operation on a resource collection of messages: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// SubMessage sub = 2; // `sub.subfield` is url-mapped -// } -// message Message { -// string text = 1; // content of the resource -// } -// -// The same http annotation can alternatively be expressed inside the -// `GRPC API Configuration` YAML file. -// -// http: -// rules: -// - selector: .Messaging.GetMessage -// get: /v1/messages/{message_id}/{sub.subfield} -// -// This definition enables an automatic, bidrectional mapping of HTTP -// JSON to RPC. Example: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))` -// -// In general, not only fields but also field paths can be referenced -// from a path pattern. Fields mapped to the path pattern cannot be -// repeated and must have a primitive (non-message) type. -// -// Any fields in the request message which are not bound by the path -// pattern automatically become (optional) HTTP query -// parameters. Assume the following definition of the request message: -// -// -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// int64 revision = 2; // becomes a parameter -// SubMessage sub = 3; // `sub.subfield` becomes a parameter -// } -// -// -// This enables a HTTP JSON to RPC mapping as below: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))` -// -// Note that fields which are mapped to HTTP parameters must have a -// primitive type or a repeated primitive type. Message types are not -// allowed. In the case of a repeated type, the parameter can be -// repeated in the URL, as in `...?param=A¶m=B`. -// -// For HTTP method kinds which allow a request body, the `body` field -// specifies the mapping. Consider a REST update method on the -// message resource collection: -// -// -// service Messaging { -// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "message" -// }; -// } -// } -// message UpdateMessageRequest { -// string message_id = 1; // mapped to the URL -// Message message = 2; // mapped to the body -// } -// -// -// The following HTTP JSON to RPC mapping is enabled, where the -// representation of the JSON in the request body is determined by -// protos JSON encoding: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })` -// -// The special name `*` can be used in the body mapping to define that -// every field not bound by the path template should be mapped to the -// request body. This enables the following alternative definition of -// the update method: -// -// service Messaging { -// rpc UpdateMessage(Message) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "*" -// }; -// } -// } -// message Message { -// string message_id = 1; -// string text = 2; -// } -// -// -// The following HTTP JSON to RPC mapping is enabled: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")` -// -// Note that when using `*` in the body mapping, it is not possible to -// have HTTP parameters, as all fields not bound by the path end in -// the body. This makes this option more rarely used in practice of -// defining REST APIs. The common usage of `*` is in custom methods -// which don't use the URL at all for transferring data. -// -// It is possible to define multiple HTTP methods for one RPC by using -// the `additional_bindings` option. Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/messages/{message_id}" -// additional_bindings { -// get: "/v1/users/{user_id}/messages/{message_id}" -// } -// }; -// } -// } -// message GetMessageRequest { -// string message_id = 1; -// string user_id = 2; -// } -// -// -// This enables the following two alternative HTTP JSON to RPC -// mappings: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` -// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` -// -// # Rules for HTTP mapping -// -// The rules for mapping HTTP path, query parameters, and body fields -// to the request message are as follows: -// -// 1. The `body` field specifies either `*` or a field path, or is -// omitted. If omitted, it assumes there is no HTTP body. -// 2. Leaf fields (recursive expansion of nested messages in the -// request) can be classified into three types: -// (a) Matched in the URL template. -// (b) Covered by body (if body is `*`, everything except (a) fields; -// else everything under the body field) -// (c) All other fields. -// 3. URL query parameters found in the HTTP request are mapped to (c) fields. -// 4. Any body sent with an HTTP request can contain only (b) fields. -// -// The syntax of the path template is as follows: -// -// Template = "/" Segments [ Verb ] ; -// Segments = Segment { "/" Segment } ; -// Segment = "*" | "**" | LITERAL | Variable ; -// Variable = "{" FieldPath [ "=" Segments ] "}" ; -// FieldPath = IDENT { "." IDENT } ; -// Verb = ":" LITERAL ; -// -// The syntax `*` matches a single path segment. It follows the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String -// Expansion. -// -// The syntax `**` matches zero or more path segments. It follows the semantics -// of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved -// Expansion. NOTE: it must be the last segment in the path except the Verb. -// -// The syntax `LITERAL` matches literal text in the URL path. -// -// The syntax `Variable` matches the entire path as specified by its template; -// this nested template must not contain further variables. If a variable -// matches a single path segment, its template may be omitted, e.g. `{var}` -// is equivalent to `{var=*}`. -// -// NOTE: the field paths in variables and in the `body` must not refer to -// repeated fields or map fields. -// -// Use CustomHttpPattern to specify any HTTP method that is not included in the -// `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for -// a given URL path rule. The wild-card rule is useful for services that provide -// content to Web (HTML) clients. -message HttpRule { - // Selects methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Determines the URL pattern is matched by this rules. This pattern can be - // used with any of the {get|put|post|delete|patch} methods. A custom method - // can be defined using the 'custom' field. - oneof pattern { - // Used for listing and getting information about resources. - string get = 2; - - // Used for updating a resource. - string put = 3; - - // Used for creating a resource. - string post = 4; - - // Used for deleting a resource. - string delete = 5; - - // Used for updating a resource. - string patch = 6; - - // Custom pattern is used for defining custom verbs. - CustomHttpPattern custom = 8; - } - - // The name of the request field whose value is mapped to the HTTP body, or - // `*` for mapping all fields not captured by the path pattern to the HTTP - // body. NOTE: the referred field must not be a repeated field and must be - // present at the top-level of request message type. - string body = 7; - - // Additional HTTP bindings for the selector. Nested bindings must - // not contain an `additional_bindings` field themselves (that is, - // the nesting may only be one level deep). - repeated HttpRule additional_bindings = 11; -} - -// A custom pattern is used for defining custom HTTP verb. -message CustomHttpPattern { - // The name of this custom HTTP verb. - string kind = 1; - - // The path matched by this custom verb. - string path = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/httpbody.proto b/handwritten/nodejs-datastore/protos/google/api/httpbody.proto deleted file mode 100644 index f5176634b0b..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/httpbody.proto +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; -option java_multiple_files = true; -option java_outer_classname = "HttpBodyProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Message that represents an arbitrary HTTP body. It should only be used for -// payload formats that can't be represented as JSON, such as raw binary or -// an HTML page. -// -// -// This message can be used both in streaming and non-streaming API methods in -// the request as well as the response. -// -// It can be used as a top-level request field, which is convenient if one -// wants to extract parameters from either the URL or HTTP template into the -// request fields and also want access to the raw HTTP body. -// -// Example: -// -// message GetResourceRequest { -// // A unique request id. -// string request_id = 1; -// -// // The raw HTTP body is bound to this field. -// google.api.HttpBody http_body = 2; -// } -// -// service ResourceService { -// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); -// rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); -// } -// -// Example with streaming methods: -// -// service CaldavService { -// rpc GetCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// rpc UpdateCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// } -// -// Use of this type only changes how the request and response bodies are -// handled, all other features will continue to work unchanged. -message HttpBody { - // The HTTP Content-Type string representing the content type of the body. - string content_type = 1; - - // HTTP body binary data. - bytes data = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/label.proto b/handwritten/nodejs-datastore/protos/google/api/label.proto deleted file mode 100644 index ec2c14f0c35..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/label.proto +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/label;label"; -option java_multiple_files = true; -option java_outer_classname = "LabelProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// A description of a label. -message LabelDescriptor { - // Value types that can be used as label values. - enum ValueType { - // A variable-length string. This is the default. - STRING = 0; - - // Boolean; true or false. - BOOL = 1; - - // A 64-bit signed integer. - INT64 = 2; - } - - // The label key. - string key = 1; - - // The type of data that can be assigned to the label. - ValueType value_type = 2; - - // A human-readable description for the label. - string description = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/log.proto b/handwritten/nodejs-datastore/protos/google/api/log.proto deleted file mode 100644 index d64f2439581..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/log.proto +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/label.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "LogProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// A description of a log type. Example in YAML format: -// -// - name: library.googleapis.com/activity_history -// description: The history of borrowing and returning library items. -// display_name: Activity -// labels: -// - key: /customer_id -// description: Identifier of a library customer -message LogDescriptor { - // The name of the log. It must be less than 512 characters long and can - // include the following characters: upper- and lower-case alphanumeric - // characters [A-Za-z0-9], and punctuation characters including - // slash, underscore, hyphen, period [/_-.]. - string name = 1; - - // The set of labels that are available to describe a specific log entry. - // Runtime requests that contain labels not specified here are - // considered invalid. - repeated LabelDescriptor labels = 2; - - // A human-readable description of this log. This information appears in - // the documentation and can contain details. - string description = 3; - - // The human-readable name for this log. This information appears on - // the user interface and should be concise. - string display_name = 4; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/logging.proto b/handwritten/nodejs-datastore/protos/google/api/logging.proto deleted file mode 100644 index 15c8a996e97..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/logging.proto +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "LoggingProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Logging configuration of the service. -// -// The following example shows how to configure logs to be sent to the -// producer and consumer projects. In the example, the `activity_history` -// log is sent to both the producer and consumer projects, whereas the -// `purchase_history` log is only sent to the producer project. -// -// monitored_resources: -// - type: library.googleapis.com/branch -// labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. -// logs: -// - name: activity_history -// labels: -// - key: /customer_id -// - name: purchase_history -// logging: -// producer_destinations: -// - monitored_resource: library.googleapis.com/branch -// logs: -// - activity_history -// - purchase_history -// consumer_destinations: -// - monitored_resource: library.googleapis.com/branch -// logs: -// - activity_history -message Logging { - // Configuration of a specific logging destination (the producer project - // or the consumer project). - message LoggingDestination { - // The monitored resource type. The type must be defined in the - // [Service.monitored_resources][google.api.Service.monitored_resources] section. - string monitored_resource = 3; - - // Names of the logs to be sent to this destination. Each name must - // be defined in the [Service.logs][google.api.Service.logs] section. If the log name is - // not a domain scoped name, it will be automatically prefixed with - // the service name followed by "/". - repeated string logs = 1; - } - - // Logging configurations for sending logs to the producer project. - // There can be multiple producer destinations, each one must have a - // different monitored resource type. A log can be used in at most - // one producer destination. - repeated LoggingDestination producer_destinations = 1; - - // Logging configurations for sending logs to the consumer project. - // There can be multiple consumer destinations, each one must have a - // different monitored resource type. A log can be used in at most - // one consumer destination. - repeated LoggingDestination consumer_destinations = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/metric.proto b/handwritten/nodejs-datastore/protos/google/api/metric.proto deleted file mode 100644 index 17b7263a334..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/metric.proto +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/label.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/metric;metric"; -option java_multiple_files = true; -option java_outer_classname = "MetricProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Defines a metric type and its schema. Once a metric descriptor is created, -// deleting or altering it stops data collection and makes the metric type's -// existing data unusable. -message MetricDescriptor { - // The kind of measurement. It describes how the data is reported. - enum MetricKind { - // Do not use this default value. - METRIC_KIND_UNSPECIFIED = 0; - - // An instantaneous measurement of a value. - GAUGE = 1; - - // The change in a value during a time interval. - DELTA = 2; - - // A value accumulated over a time interval. Cumulative - // measurements in a time series should have the same start time - // and increasing end times, until an event resets the cumulative - // value to zero and sets a new start time for the following - // points. - CUMULATIVE = 3; - } - - // The value type of a metric. - enum ValueType { - // Do not use this default value. - VALUE_TYPE_UNSPECIFIED = 0; - - // The value is a boolean. - // This value type can be used only if the metric kind is `GAUGE`. - BOOL = 1; - - // The value is a signed 64-bit integer. - INT64 = 2; - - // The value is a double precision floating point number. - DOUBLE = 3; - - // The value is a text string. - // This value type can be used only if the metric kind is `GAUGE`. - STRING = 4; - - // The value is a [`Distribution`][google.api.Distribution]. - DISTRIBUTION = 5; - - // The value is money. - MONEY = 6; - } - - // The resource name of the metric descriptor. Depending on the - // implementation, the name typically includes: (1) the parent resource name - // that defines the scope of the metric type or of its data; and (2) the - // metric's URL-encoded type, which also appears in the `type` field of this - // descriptor. For example, following is the resource name of a custom - // metric within the GCP project `my-project-id`: - // - // "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount" - string name = 1; - - // The metric type, including its DNS name prefix. The type is not - // URL-encoded. All user-defined custom metric types have the DNS name - // `custom.googleapis.com`. Metric types should use a natural hierarchical - // grouping. For example: - // - // "custom.googleapis.com/invoice/paid/amount" - // "appengine.googleapis.com/http/server/response_latencies" - string type = 8; - - // The set of labels that can be used to describe a specific - // instance of this metric type. For example, the - // `appengine.googleapis.com/http/server/response_latencies` metric - // type has a label for the HTTP response code, `response_code`, so - // you can look at latencies for successful responses or just - // for responses that failed. - repeated LabelDescriptor labels = 2; - - // Whether the metric records instantaneous values, changes to a value, etc. - // Some combinations of `metric_kind` and `value_type` might not be supported. - MetricKind metric_kind = 3; - - // Whether the measurement is an integer, a floating-point number, etc. - // Some combinations of `metric_kind` and `value_type` might not be supported. - ValueType value_type = 4; - - // The unit in which the metric value is reported. It is only applicable - // if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The - // supported units are a subset of [The Unified Code for Units of - // Measure](http://unitsofmeasure.org/ucum.html) standard: - // - // **Basic units (UNIT)** - // - // * `bit` bit - // * `By` byte - // * `s` second - // * `min` minute - // * `h` hour - // * `d` day - // - // **Prefixes (PREFIX)** - // - // * `k` kilo (10**3) - // * `M` mega (10**6) - // * `G` giga (10**9) - // * `T` tera (10**12) - // * `P` peta (10**15) - // * `E` exa (10**18) - // * `Z` zetta (10**21) - // * `Y` yotta (10**24) - // * `m` milli (10**-3) - // * `u` micro (10**-6) - // * `n` nano (10**-9) - // * `p` pico (10**-12) - // * `f` femto (10**-15) - // * `a` atto (10**-18) - // * `z` zepto (10**-21) - // * `y` yocto (10**-24) - // * `Ki` kibi (2**10) - // * `Mi` mebi (2**20) - // * `Gi` gibi (2**30) - // * `Ti` tebi (2**40) - // - // **Grammar** - // - // The grammar includes the dimensionless unit `1`, such as `1/s`. - // - // The grammar also includes these connectors: - // - // * `/` division (as an infix operator, e.g. `1/s`). - // * `.` multiplication (as an infix operator, e.g. `GBy.d`) - // - // The grammar for a unit is as follows: - // - // Expression = Component { "." Component } { "/" Component } ; - // - // Component = [ PREFIX ] UNIT [ Annotation ] - // | Annotation - // | "1" - // ; - // - // Annotation = "{" NAME "}" ; - // - // Notes: - // - // * `Annotation` is just a comment if it follows a `UNIT` and is - // equivalent to `1` if it is used alone. For examples, - // `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. - // * `NAME` is a sequence of non-blank printable ASCII characters not - // containing '{' or '}'. - string unit = 5; - - // A detailed description of the metric, which can be used in documentation. - string description = 6; - - // A concise name for the metric, which can be displayed in user interfaces. - // Use sentence case without an ending period, for example "Request count". - string display_name = 7; -} - -// A specific metric, identified by specifying values for all of the -// labels of a [`MetricDescriptor`][google.api.MetricDescriptor]. -message Metric { - // An existing metric type, see [google.api.MetricDescriptor][google.api.MetricDescriptor]. - // For example, `custom.googleapis.com/invoice/paid/amount`. - string type = 3; - - // The set of label values that uniquely identify this metric. All - // labels listed in the `MetricDescriptor` must be assigned values. - map labels = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto b/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto deleted file mode 100644 index 612ffa18da4..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/monitored_resource.proto +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/label.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/monitoredres;monitoredres"; -option java_multiple_files = true; -option java_outer_classname = "MonitoredResourceProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// An object that describes the schema of a [MonitoredResource][google.api.MonitoredResource] object using a -// type name and a set of labels. For example, the monitored resource -// descriptor for Google Compute Engine VM instances has a type of -// `"gce_instance"` and specifies the use of the labels `"instance_id"` and -// `"zone"` to identify particular VM instances. -// -// Different APIs can support different monitored resource types. APIs generally -// provide a `list` method that returns the monitored resource descriptors used -// by the API. -message MonitoredResourceDescriptor { - // Optional. The resource name of the monitored resource descriptor: - // `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where - // {type} is the value of the `type` field in this object and - // {project_id} is a project ID that provides API-specific context for - // accessing the type. APIs that do not use project information can use the - // resource name format `"monitoredResourceDescriptors/{type}"`. - string name = 5; - - // Required. The monitored resource type. For example, the type - // `"cloudsql_database"` represents databases in Google Cloud SQL. - // The maximum length of this value is 256 characters. - string type = 1; - - // Optional. A concise name for the monitored resource type that might be - // displayed in user interfaces. It should be a Title Cased Noun Phrase, - // without any article or other determiners. For example, - // `"Google Cloud SQL Database"`. - string display_name = 2; - - // Optional. A detailed description of the monitored resource type that might - // be used in documentation. - string description = 3; - - // Required. A set of labels used to describe instances of this monitored - // resource type. For example, an individual Google Cloud SQL database is - // identified by values for the labels `"database_id"` and `"zone"`. - repeated LabelDescriptor labels = 4; -} - -// An object representing a resource that can be used for monitoring, logging, -// billing, or other purposes. Examples include virtual machine instances, -// databases, and storage devices such as disks. The `type` field identifies a -// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object that describes the resource's -// schema. Information in the `labels` field identifies the actual resource and -// its attributes according to the schema. For example, a particular Compute -// Engine VM instance could be represented by the following object, because the -// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] for `"gce_instance"` has labels -// `"instance_id"` and `"zone"`: -// -// { "type": "gce_instance", -// "labels": { "instance_id": "12345678901234", -// "zone": "us-central1-a" }} -message MonitoredResource { - // Required. The monitored resource type. This field must match - // the `type` field of a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object. For - // example, the type of a Cloud SQL database is `"cloudsql_database"`. - string type = 1; - - // Required. Values for all of the labels listed in the associated monitored - // resource descriptor. For example, Cloud SQL databases use the labels - // `"database_id"` and `"zone"`. - map labels = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/monitoring.proto b/handwritten/nodejs-datastore/protos/google/api/monitoring.proto deleted file mode 100644 index f49c85f85ee..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/monitoring.proto +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "MonitoringProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Monitoring configuration of the service. -// -// The example below shows how to configure monitored resources and metrics -// for monitoring. In the example, a monitored resource and two metrics are -// defined. The `library.googleapis.com/book/returned_count` metric is sent -// to both producer and consumer projects, whereas the -// `library.googleapis.com/book/overdue_count` metric is only sent to the -// consumer project. -// -// monitored_resources: -// - type: library.googleapis.com/branch -// labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. -// metrics: -// - name: library.googleapis.com/book/returned_count -// metric_kind: DELTA -// value_type: INT64 -// labels: -// - key: /customer_id -// - name: library.googleapis.com/book/overdue_count -// metric_kind: GAUGE -// value_type: INT64 -// labels: -// - key: /customer_id -// monitoring: -// producer_destinations: -// - monitored_resource: library.googleapis.com/branch -// metrics: -// - library.googleapis.com/book/returned_count -// consumer_destinations: -// - monitored_resource: library.googleapis.com/branch -// metrics: -// - library.googleapis.com/book/returned_count -// - library.googleapis.com/book/overdue_count -message Monitoring { - // Configuration of a specific monitoring destination (the producer project - // or the consumer project). - message MonitoringDestination { - // The monitored resource type. The type must be defined in - // [Service.monitored_resources][google.api.Service.monitored_resources] section. - string monitored_resource = 1; - - // Names of the metrics to report to this monitoring destination. - // Each name must be defined in [Service.metrics][google.api.Service.metrics] section. - repeated string metrics = 2; - } - - // Monitoring configurations for sending metrics to the producer project. - // There can be multiple producer destinations, each one must have a - // different monitored resource type. A metric can be used in at most - // one producer destination. - repeated MonitoringDestination producer_destinations = 1; - - // Monitoring configurations for sending metrics to the consumer project. - // There can be multiple consumer destinations, each one must have a - // different monitored resource type. A metric can be used in at most - // one consumer destination. - repeated MonitoringDestination consumer_destinations = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/quota.proto b/handwritten/nodejs-datastore/protos/google/api/quota.proto deleted file mode 100644 index aa327a19694..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/quota.proto +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "QuotaProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Quota configuration helps to achieve fairness and budgeting in service -// usage. -// -// The quota configuration works this way: -// - The service configuration defines a set of metrics. -// - For API calls, the quota.metric_rules maps methods to metrics with -// corresponding costs. -// - The quota.limits defines limits on the metrics, which will be used for -// quota checks at runtime. -// -// An example quota configuration in yaml format: -// -// quota: -// limits: -// -// - name: apiWriteQpsPerProject -// metric: library.googleapis.com/write_calls -// unit: "1/min/{project}" # rate limit for consumer projects -// values: -// STANDARD: 10000 -// -// # The metric rules bind all methods to the read_calls metric, -// # except for the UpdateBook and DeleteBook methods. These two methods -// # are mapped to the write_calls metric, with the UpdateBook method -// # consuming at twice rate as the DeleteBook method. -// metric_rules: -// - selector: "*" -// metric_costs: -// library.googleapis.com/read_calls: 1 -// - selector: google.example.library.v1.LibraryService.UpdateBook -// metric_costs: -// library.googleapis.com/write_calls: 2 -// - selector: google.example.library.v1.LibraryService.DeleteBook -// metric_costs: -// library.googleapis.com/write_calls: 1 -// -// Corresponding Metric definition: -// -// metrics: -// - name: library.googleapis.com/read_calls -// display_name: Read requests -// metric_kind: DELTA -// value_type: INT64 -// -// - name: library.googleapis.com/write_calls -// display_name: Write requests -// metric_kind: DELTA -// value_type: INT64 -// -message Quota { - // List of `QuotaLimit` definitions for the service. - // - // Used by metric-based quotas only. - repeated QuotaLimit limits = 3; - - // List of `MetricRule` definitions, each one mapping a selected method to one - // or more metrics. - // - // Used by metric-based quotas only. - repeated MetricRule metric_rules = 4; -} - -// Bind API methods to metrics. Binding a method to a metric causes that -// metric's configured quota, billing, and monitoring behaviors to apply to the -// method call. -// -// Used by metric-based quotas only. -message MetricRule { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Metrics to update when the selected methods are called, and the associated - // cost applied to each metric. - // - // The key of the map is the metric name, and the values are the amount - // increased for the metric against which the quota limits are defined. - // The value must not be negative. - map metric_costs = 2; -} - -// `QuotaLimit` defines a specific limit that applies over a specified duration -// for a limit type. There can be at most one limit for a duration and limit -// type combination defined within a `QuotaGroup`. -message QuotaLimit { - // Name of the quota limit. The name is used to refer to the limit when - // overriding the default limit on per-consumer basis. - // - // For group-based quota limits, the name must be unique within the quota - // group. If a name is not provided, it will be generated from the limit_by - // and duration fields. - // - // For metric-based quota limits, the name must be provided, and it must be - // unique within the service. The name can only include alphanumeric - // characters as well as '-'. - // - // The maximum length of the limit name is 64 characters. - // - // The name of a limit is used as a unique identifier for this limit. - // Therefore, once a limit has been put into use, its name should be - // immutable. You can use the display_name field to provide a user-friendly - // name for the limit. The display name can be evolved over time without - // affecting the identity of the limit. - string name = 6; - - // Optional. User-visible, extended description for this quota limit. - // Should be used only when more context is needed to understand this limit - // than provided by the limit's display name (see: `display_name`). - string description = 2; - - // Default number of tokens that can be consumed during the specified - // duration. This is the number of tokens assigned when a client - // application developer activates the service for his/her project. - // - // Specifying a value of 0 will block all requests. This can be used if you - // are provisioning quota to selected consumers and blocking others. - // Similarly, a value of -1 will indicate an unlimited quota. No other - // negative values are allowed. - // - // Used by group-based quotas only. - int64 default_limit = 3; - - // Maximum number of tokens that can be consumed during the specified - // duration. Client application developers can override the default limit up - // to this maximum. If specified, this value cannot be set to a value less - // than the default limit. If not specified, it is set to the default limit. - // - // To allow clients to apply overrides with no upper bound, set this to -1, - // indicating unlimited maximum quota. - // - // Used by group-based quotas only. - int64 max_limit = 4; - - // Free tier value displayed in the Developers Console for this limit. - // The free tier is the number of tokens that will be subtracted from the - // billed amount when billing is enabled. - // This field can only be set on a limit with duration "1d", in a billable - // group; it is invalid on any other limit. If this field is not set, it - // defaults to 0, indicating that there is no free tier for this service. - // - // Used by group-based quotas only. - int64 free_tier = 7; - - // Duration of this limit in textual notation. Example: "100s", "24h", "1d". - // For duration longer than a day, only multiple of days is supported. We - // support only "100s" and "1d" for now. Additional support will be added in - // the future. "0" indicates indefinite duration. - // - // Used by group-based quotas only. - string duration = 5; - - // The name of the metric this quota limit applies to. The quota limits with - // the same metric will be checked together during runtime. The metric must be - // defined within the service config. - // - // Used by metric-based quotas only. - string metric = 8; - - // Specify the unit of the quota limit. It uses the same syntax as - // [Metric.unit][]. The supported unit kinds are determined by the quota - // backend system. - // - // The [Google Service Control](https://cloud.google.com/service-control) - // supports the following unit components: - // * One of the time intevals: - // * "/min" for quota every minute. - // * "/d" for quota every 24 hours, starting 00:00 US Pacific Time. - // * Otherwise the quota won't be reset by time, such as storage limit. - // * One and only one of the granted containers: - // * "/{organization}" quota for an organization. - // * "/{project}" quota for a project. - // * "/{folder}" quota for a folder. - // * "/{resource}" quota for a universal resource. - // * Zero or more quota segmentation dimension. Not all combos are valid. - // * "/{region}" quota for every region. Not to be used with time intervals. - // * Otherwise the resources granted on the target is not segmented. - // * "/{zone}" quota for every zone. Not to be used with time intervals. - // * Otherwise the resources granted on the target is not segmented. - // * "/{resource}" quota for a resource associated with a project or org. - // - // Here are some examples: - // * "1/min/{project}" for quota per minute per project. - // * "1/min/{user}" for quota per minute per user. - // * "1/min/{organization}" for quota per minute per organization. - // - // Note: the order of unit components is insignificant. - // The "1" at the beginning is required to follow the metric unit syntax. - // - // Used by metric-based quotas only. - string unit = 9; - - // Tiered limit values. Also allows for regional or zone overrides for these - // values if "/{region}" or "/{zone}" is specified in the unit field. - // - // Currently supported tiers from low to high: - // VERY_LOW, LOW, STANDARD, HIGH, VERY_HIGH - // - // To apply different limit values for users according to their tiers, specify - // the values for the tiers you want to differentiate. For example: - // {LOW:100, STANDARD:500, HIGH:1000, VERY_HIGH:5000} - // - // The limit value for each tier is optional except for the tier STANDARD. - // The limit value for an unspecified tier falls to the value of its next - // tier towards tier STANDARD. For the above example, the limit value for tier - // STANDARD is 500. - // - // To apply the same limit value for all users, just specify limit value for - // tier STANDARD. For example: {STANDARD:500}. - // - // To apply a regional overide for a tier, add a map entry with key - // "/", where is a region name. Similarly, for a zone - // override, add a map entry with key "/{zone}". - // Further, a wildcard can be used at the end of a zone name in order to - // specify zone level overrides. For example: - // LOW: 10, STANDARD: 50, HIGH: 100, - // LOW/us-central1: 20, STANDARD/us-central1: 60, HIGH/us-central1: 200, - // LOW/us-central1-*: 10, STANDARD/us-central1-*: 20, HIGH/us-central1-*: 80 - // - // The regional overrides tier set for each region must be the same as - // the tier set for default limit values. Same rule applies for zone overrides - // tier as well. - // - // Used by metric-based quotas only. - map values = 10; - - // User-visible display name for this limit. - // Optional. If not set, the UI will provide a default display name based on - // the quota configuration. This field can be used to override the default - // display name generated from the configuration. - string display_name = 12; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/service.proto b/handwritten/nodejs-datastore/protos/google/api/service.proto deleted file mode 100644 index 04c7fd700b1..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/service.proto +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; -import "google/api/auth.proto"; -import "google/api/backend.proto"; -import "google/api/context.proto"; -import "google/api/control.proto"; -import "google/api/documentation.proto"; -import "google/api/endpoint.proto"; -import "google/api/experimental/experimental.proto"; -import "google/api/http.proto"; -import "google/api/label.proto"; -import "google/api/log.proto"; -import "google/api/logging.proto"; -import "google/api/metric.proto"; -import "google/api/monitored_resource.proto"; -import "google/api/monitoring.proto"; -import "google/api/quota.proto"; -import "google/api/source_info.proto"; -import "google/api/system_parameter.proto"; -import "google/api/usage.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/api.proto"; -import "google/protobuf/type.proto"; -import "google/protobuf/wrappers.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "ServiceProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// `Service` is the root object of Google service configuration schema. It -// describes basic information about a service, such as the name and the -// title, and delegates other aspects to sub-sections. Each sub-section is -// either a proto message or a repeated proto message that configures a -// specific aspect, such as auth. See each proto message definition for details. -// -// Example: -// -// type: google.api.Service -// config_version: 3 -// name: calendar.googleapis.com -// title: Google Calendar API -// apis: -// - name: google.calendar.v3.Calendar -// authentication: -// providers: -// - id: google_calendar_auth -// jwks_uri: https://www.googleapis.com/oauth2/v1/certs -// issuer: https://securetoken.google.com -// rules: -// - selector: "*" -// requirements: -// provider_id: google_calendar_auth -message Service { - // The version of the service configuration. The config version may - // influence interpretation of the configuration, for example, to - // determine defaults. This is documented together with applicable - // options. The current default for the config version itself is `3`. - google.protobuf.UInt32Value config_version = 20; - - // The DNS address at which this service is available, - // e.g. `calendar.googleapis.com`. - string name = 1; - - // A unique ID for a specific instance of this message, typically assigned - // by the client for tracking purpose. If empty, the server may choose to - // generate one instead. - string id = 33; - - // The product title associated with this service. - string title = 2; - - // The id of the Google developer project that owns the service. - // Members of this project can manage the service configuration, - // manage consumption of the service, etc. - string producer_project_id = 22; - - // A list of API interfaces exported by this service. Only the `name` field - // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration - // author, as the remaining fields will be derived from the IDL during the - // normalization process. It is an error to specify an API interface here - // which cannot be resolved against the associated IDL files. - repeated google.protobuf.Api apis = 3; - - // A list of all proto message types included in this API service. - // Types referenced directly or indirectly by the `apis` are - // automatically included. Messages which are not referenced but - // shall be included, such as types used by the `google.protobuf.Any` type, - // should be listed here by name. Example: - // - // types: - // - name: google.protobuf.Int32 - repeated google.protobuf.Type types = 4; - - // A list of all enum types included in this API service. Enums - // referenced directly or indirectly by the `apis` are automatically - // included. Enums which are not referenced but shall be included - // should be listed here by name. Example: - // - // enums: - // - name: google.someapi.v1.SomeEnum - repeated google.protobuf.Enum enums = 5; - - // Additional API documentation. - Documentation documentation = 6; - - // API backend configuration. - Backend backend = 8; - - // HTTP configuration. - Http http = 9; - - // Quota configuration. - Quota quota = 10; - - // Auth configuration. - Authentication authentication = 11; - - // Context configuration. - Context context = 12; - - // Configuration controlling usage of this service. - Usage usage = 15; - - // Configuration for network endpoints. If this is empty, then an endpoint - // with the same name as the service is automatically generated to service all - // defined APIs. - repeated Endpoint endpoints = 18; - - // Configuration for the service control plane. - Control control = 21; - - // Defines the logs used by this service. - repeated LogDescriptor logs = 23; - - // Defines the metrics used by this service. - repeated MetricDescriptor metrics = 24; - - // Defines the monitored resources used by this service. This is required - // by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations. - repeated MonitoredResourceDescriptor monitored_resources = 25; - - // Logging configuration. - Logging logging = 27; - - // Monitoring configuration. - Monitoring monitoring = 28; - - // System parameter configuration. - SystemParameters system_parameters = 29; - - // Output only. The source information for this configuration if available. - SourceInfo source_info = 37; - - // Experimental configuration. - Experimental experimental = 101; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto deleted file mode 100644 index 4fa31cf4c26..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/check_error.proto +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -import "google/api/annotations.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "CheckErrorProto"; -option java_package = "com.google.api.servicecontrol.v1"; - - -// Defines the errors to be returned in -// [google.api.servicecontrol.v1.CheckResponse.check_errors][google.api.servicecontrol.v1.CheckResponse.check_errors]. -message CheckError { - // Error codes for Check responses. - enum Code { - // This is never used in `CheckResponse`. - ERROR_CODE_UNSPECIFIED = 0; - - // The consumer's project id was not found. - // Same as [google.rpc.Code.NOT_FOUND][]. - NOT_FOUND = 5; - - // The consumer doesn't have access to the specified resource. - // Same as [google.rpc.Code.PERMISSION_DENIED][]. - PERMISSION_DENIED = 7; - - // Quota check failed. Same as [google.rpc.Code.RESOURCE_EXHAUSTED][]. - RESOURCE_EXHAUSTED = 8; - - // The consumer hasn't activated the service. - SERVICE_NOT_ACTIVATED = 104; - - // The consumer cannot access the service because billing is disabled. - BILLING_DISABLED = 107; - - // The consumer's project has been marked as deleted (soft deletion). - PROJECT_DELETED = 108; - - // The consumer's project number or id does not represent a valid project. - PROJECT_INVALID = 114; - - // The IP address of the consumer is invalid for the specific consumer - // project. - IP_ADDRESS_BLOCKED = 109; - - // The referer address of the consumer request is invalid for the specific - // consumer project. - REFERER_BLOCKED = 110; - - // The client application of the consumer request is invalid for the - // specific consumer project. - CLIENT_APP_BLOCKED = 111; - - // The consumer's API key is invalid. - API_KEY_INVALID = 105; - - // The consumer's API Key has expired. - API_KEY_EXPIRED = 112; - - // The consumer's API Key was not found in config record. - API_KEY_NOT_FOUND = 113; - - // The backend server for looking up project id/number is unavailable. - NAMESPACE_LOOKUP_UNAVAILABLE = 300; - - // The backend server for checking service status is unavailable. - SERVICE_STATUS_UNAVAILABLE = 301; - - // The backend server for checking billing status is unavailable. - BILLING_STATUS_UNAVAILABLE = 302; - } - - // The error code. - Code code = 1; - - // Free-form text providing details on the error cause of the error. - string detail = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto deleted file mode 100644 index 93ec2e4d675..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/distribution.proto +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "DistributionProto"; -option java_package = "com.google.api.servicecontrol.v1"; - - -// Distribution represents a frequency distribution of double-valued sample -// points. It contains the size of the population of sample points plus -// additional optional information: -// -// - the arithmetic mean of the samples -// - the minimum and maximum of the samples -// - the sum-squared-deviation of the samples, used to compute variance -// - a histogram of the values of the sample points -message Distribution { - // Describing buckets with constant width. - message LinearBuckets { - // The number of finite buckets. With the underflow and overflow buckets, - // the total number of buckets is `num_finite_buckets` + 2. - // See comments on `bucket_options` for details. - int32 num_finite_buckets = 1; - - // The i'th linear bucket covers the interval - // [offset + (i-1) * width, offset + i * width) - // where i ranges from 1 to num_finite_buckets, inclusive. - // Must be strictly positive. - double width = 2; - - // The i'th linear bucket covers the interval - // [offset + (i-1) * width, offset + i * width) - // where i ranges from 1 to num_finite_buckets, inclusive. - double offset = 3; - } - - // Describing buckets with exponentially growing width. - message ExponentialBuckets { - // The number of finite buckets. With the underflow and overflow buckets, - // the total number of buckets is `num_finite_buckets` + 2. - // See comments on `bucket_options` for details. - int32 num_finite_buckets = 1; - - // The i'th exponential bucket covers the interval - // [scale * growth_factor^(i-1), scale * growth_factor^i) - // where i ranges from 1 to num_finite_buckets inclusive. - // Must be larger than 1.0. - double growth_factor = 2; - - // The i'th exponential bucket covers the interval - // [scale * growth_factor^(i-1), scale * growth_factor^i) - // where i ranges from 1 to num_finite_buckets inclusive. - // Must be > 0. - double scale = 3; - } - - // Describing buckets with arbitrary user-provided width. - message ExplicitBuckets { - // 'bound' is a list of strictly increasing boundaries between - // buckets. Note that a list of length N-1 defines N buckets because - // of fenceposting. See comments on `bucket_options` for details. - // - // The i'th finite bucket covers the interval - // [bound[i-1], bound[i]) - // where i ranges from 1 to bound_size() - 1. Note that there are no - // finite buckets at all if 'bound' only contains a single element; in - // that special case the single bound defines the boundary between the - // underflow and overflow buckets. - // - // bucket number lower bound upper bound - // i == 0 (underflow) -inf bound[i] - // 0 < i < bound_size() bound[i-1] bound[i] - // i == bound_size() (overflow) bound[i-1] +inf - repeated double bounds = 1; - } - - // The total number of samples in the distribution. Must be >= 0. - int64 count = 1; - - // The arithmetic mean of the samples in the distribution. If `count` is - // zero then this field must be zero. - double mean = 2; - - // The minimum of the population of values. Ignored if `count` is zero. - double minimum = 3; - - // The maximum of the population of values. Ignored if `count` is zero. - double maximum = 4; - - // The sum of squared deviations from the mean: - // Sum[i=1..count]((x_i - mean)^2) - // where each x_i is a sample values. If `count` is zero then this field - // must be zero, otherwise validation of the request fails. - double sum_of_squared_deviation = 5; - - // The number of samples in each histogram bucket. `bucket_counts` are - // optional. If present, they must sum to the `count` value. - // - // The buckets are defined below in `bucket_option`. There are N buckets. - // `bucket_counts[0]` is the number of samples in the underflow bucket. - // `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples - // in each of the finite buckets. And `bucket_counts[N] is the number - // of samples in the overflow bucket. See the comments of `bucket_option` - // below for more details. - // - // Any suffix of trailing zeros may be omitted. - repeated int64 bucket_counts = 6; - - // Defines the buckets in the histogram. `bucket_option` and `bucket_counts` - // must be both set, or both unset. - // - // Buckets are numbered the the range of [0, N], with a total of N+1 buckets. - // There must be at least two buckets (a single-bucket histogram gives - // no information that isn't already provided by `count`). - // - // The first bucket is the underflow bucket which has a lower bound - // of -inf. The last bucket is the overflow bucket which has an - // upper bound of +inf. All other buckets (if any) are called "finite" - // buckets because they have finite lower and upper bounds. As described - // below, there are three ways to define the finite buckets. - // - // (1) Buckets with constant width. - // (2) Buckets with exponentially growing widths. - // (3) Buckets with arbitrary user-provided widths. - // - // In all cases, the buckets cover the entire real number line (-inf, - // +inf). Bucket upper bounds are exclusive and lower bounds are - // inclusive. The upper bound of the underflow bucket is equal to the - // lower bound of the smallest finite bucket; the lower bound of the - // overflow bucket is equal to the upper bound of the largest finite - // bucket. - oneof bucket_option { - // Buckets with constant width. - LinearBuckets linear_buckets = 7; - - // Buckets with exponentially growing width. - ExponentialBuckets exponential_buckets = 8; - - // Buckets with arbitrary user-provided width. - ExplicitBuckets explicit_buckets = 9; - } -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto deleted file mode 100644 index fddb9851eca..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/log_entry.proto +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -import "google/api/annotations.proto"; -import "google/logging/type/log_severity.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "LogEntryProto"; -option java_package = "com.google.api.servicecontrol.v1"; - - -// An individual log entry. -message LogEntry { - // Required. The log to which this log entry belongs. Examples: `"syslog"`, - // `"book_log"`. - string name = 10; - - // The time the event described by the log entry occurred. If - // omitted, defaults to operation start time. - google.protobuf.Timestamp timestamp = 11; - - // The severity of the log entry. The default value is - // `LogSeverity.DEFAULT`. - google.logging.type.LogSeverity severity = 12; - - // A unique ID for the log entry used for deduplication. If omitted, - // the implementation will generate one based on operation_id. - string insert_id = 4; - - // A set of user-defined (key, value) data that provides additional - // information about the log entry. - map labels = 13; - - // The log entry payload, which can be one of multiple types. - oneof payload { - // The log entry payload, represented as a protocol buffer that is - // expressed as a JSON object. You can only pass `protoPayload` - // values that belong to a set of approved types. - google.protobuf.Any proto_payload = 2; - - // The log entry payload, represented as a Unicode string (UTF-8). - string text_payload = 3; - - // The log entry payload, represented as a structure that - // is expressed as a JSON object. - google.protobuf.Struct struct_payload = 6; - } -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto deleted file mode 100644 index d5e5803b7a0..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/metric_value.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -import "google/api/annotations.proto"; -import "google/api/servicecontrol/v1/distribution.proto"; -import "google/protobuf/timestamp.proto"; -import "google/type/money.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "MetricValueSetProto"; -option java_package = "com.google.api.servicecontrol.v1"; - - -// Represents a single metric value. -message MetricValue { - // The labels describing the metric value. - // See comments on [google.api.servicecontrol.v1.Operation.labels][google.api.servicecontrol.v1.Operation.labels] for - // the overriding relationship. - map labels = 1; - - // The start of the time period over which this metric value's measurement - // applies. The time period has different semantics for different metric - // types (cumulative, delta, and gauge). See the metric definition - // documentation in the service configuration for details. - google.protobuf.Timestamp start_time = 2; - - // The end of the time period over which this metric value's measurement - // applies. - google.protobuf.Timestamp end_time = 3; - - // The value. The type of value used in the request must - // agree with the metric definition in the service configuration, otherwise - // the MetricValue is rejected. - oneof value { - // A boolean value. - bool bool_value = 4; - - // A signed 64-bit integer value. - int64 int64_value = 5; - - // A double precision floating point value. - double double_value = 6; - - // A text string value. - string string_value = 7; - - // A distribution value. - Distribution distribution_value = 8; - } -} - -// Represents a set of metric values in the same metric. -// Each metric value in the set should have a unique combination of start time, -// end time, and label values. -message MetricValueSet { - // The metric name defined in the service configuration. - string metric_name = 1; - - // The values in this metric. - repeated MetricValue metric_values = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto deleted file mode 100644 index 568108af539..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/operation.proto +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -import "google/api/annotations.proto"; -import "google/api/servicecontrol/v1/log_entry.proto"; -import "google/api/servicecontrol/v1/metric_value.proto"; -import "google/protobuf/timestamp.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "OperationProto"; -option java_package = "com.google.api.servicecontrol.v1"; - - -// Represents information regarding an operation. -message Operation { - // Defines the importance of the data contained in the operation. - enum Importance { - // The API implementation may cache and aggregate the data. - // The data may be lost when rare and unexpected system failures occur. - LOW = 0; - - // The API implementation doesn't cache and aggregate the data. - // If the method returns successfully, it's guaranteed that the data has - // been persisted in durable storage. - HIGH = 1; - } - - // Identity of the operation. This must be unique within the scope of the - // service that generated the operation. If the service calls - // Check() and Report() on the same operation, the two calls should carry - // the same id. - // - // UUID version 4 is recommended, though not required. - // In scenarios where an operation is computed from existing information - // and an idempotent id is desirable for deduplication purpose, UUID version 5 - // is recommended. See RFC 4122 for details. - string operation_id = 1; - - // Fully qualified name of the operation. Reserved for future use. - string operation_name = 2; - - // Identity of the consumer who is using the service. - // This field should be filled in for the operations initiated by a - // consumer, but not for service-initiated operations that are - // not related to a specific consumer. - // - // This can be in one of the following formats: - // project:, - // project_number:, - // api_key:. - string consumer_id = 3; - - // Required. Start time of the operation. - google.protobuf.Timestamp start_time = 4; - - // End time of the operation. - // Required when the operation is used in [ServiceController.Report][google.api.servicecontrol.v1.ServiceController.Report], - // but optional when the operation is used in [ServiceController.Check][google.api.servicecontrol.v1.ServiceController.Check]. - google.protobuf.Timestamp end_time = 5; - - // Labels describing the operation. Only the following labels are allowed: - // - // - Labels describing monitored resources as defined in - // the service configuration. - // - Default labels of metric values. When specified, labels defined in the - // metric value override these default. - // - The following labels defined by Google Cloud Platform: - // - `cloud.googleapis.com/location` describing the location where the - // operation happened, - // - `servicecontrol.googleapis.com/user_agent` describing the user agent - // of the API request, - // - `servicecontrol.googleapis.com/service_agent` describing the service - // used to handle the API request (e.g. ESP), - // - `servicecontrol.googleapis.com/platform` describing the platform - // where the API is served (e.g. GAE, GCE, GKE). - map labels = 6; - - // Represents information about this operation. Each MetricValueSet - // corresponds to a metric defined in the service configuration. - // The data type used in the MetricValueSet must agree with - // the data type specified in the metric definition. - // - // Within a single operation, it is not allowed to have more than one - // MetricValue instances that have the same metric names and identical - // label value combinations. If a request has such duplicated MetricValue - // instances, the entire request is rejected with - // an invalid argument error. - repeated MetricValueSet metric_value_sets = 7; - - // Represents information to be logged. - repeated LogEntry log_entries = 8; - - // DO NOT USE. This is an experimental field. - Importance importance = 11; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto b/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto deleted file mode 100644 index 2d0ec8e9fd7..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicecontrol/v1/service_controller.proto +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicecontrol.v1; - -import "google/api/annotations.proto"; -import "google/api/servicecontrol/v1/check_error.proto"; -import "google/api/servicecontrol/v1/operation.proto"; -import "google/rpc/status.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol"; -option java_multiple_files = true; -option java_outer_classname = "ServiceControllerProto"; -option java_package = "com.google.api.servicecontrol.v1"; -option objc_class_prefix = "GASC"; - - -// [Google Service Control API](/service-control/overview) -// -// Lets clients check and report operations against -// a [managed service][google.api.servicemanagement.v1.ManagedService]. -service ServiceController { - // Checks an operation with Google Service Control to decide whether - // the given operation should proceed. It should be called before the - // operation is executed. - // - // If feasible, the client should cache the check results and reuse them for - // up to 60s. In case of server errors, the client may rely on the cached - // results for longer time. - // - // This method requires the `servicemanagement.services.check` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - rpc Check(CheckRequest) returns (CheckResponse) { - option (google.api.http) = { post: "/v1/services/{service_name}:check" body: "*" }; - } - - // Reports operations to Google Service Control. It should be called - // after the operation is completed. - // - // If feasible, the client should aggregate reporting data for up to 5s to - // reduce API traffic. Limiting aggregation to 5s is to reduce data loss - // during client crashes. Clients should carefully choose the aggregation - // window to avoid data loss risk more than 0.01% for business and - // compliance reasons. - // - // This method requires the `servicemanagement.services.report` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - rpc Report(ReportRequest) returns (ReportResponse) { - option (google.api.http) = { post: "/v1/services/{service_name}:report" body: "*" }; - } -} - -// Request message for the Check method. -message CheckRequest { - // The service name as specified in its service configuration. For example, - // `"pubsub.googleapis.com"`. - // - // See [google.api.Service][google.api.Service] for the definition of a service name. - string service_name = 1; - - // The operation to be checked. - Operation operation = 2; - - // Specifies which version of service configuration should be used to process - // the request. - // - // If unspecified or no matching version can be found, the - // latest one will be used. - string service_config_id = 4; -} - -// Response message for the Check method. -message CheckResponse { - // The same operation_id value used in the CheckRequest. - // Used for logging and diagnostics purposes. - string operation_id = 1; - - // Indicate the decision of the check. - // - // If no check errors are present, the service should process the operation. - // Otherwise the service should use the list of errors to determine the - // appropriate action. - repeated CheckError check_errors = 2; - - // The actual config id used to process the request. - string service_config_id = 5; -} - -// Request message for the Report method. -message ReportRequest { - // The service name as specified in its service configuration. For example, - // `"pubsub.googleapis.com"`. - // - // See [google.api.Service][google.api.Service] for the definition of a service name. - string service_name = 1; - - // Operations to be reported. - // - // Typically the service should report one operation per request. - // Putting multiple operations into a single request is allowed, but should - // be used only when multiple operations are natually available at the time - // of the report. - // - // If multiple operations are in a single request, the total request size - // should be no larger than 1MB. See [ReportResponse.report_errors][google.api.servicecontrol.v1.ReportResponse.report_errors] for - // partial failure behavior. - repeated Operation operations = 2; - - // Specifies which version of service config should be used to process the - // request. - // - // If unspecified or no matching version can be found, the - // latest one will be used. - string service_config_id = 3; -} - -// Response message for the Report method. -message ReportResponse { - // Represents the processing error of one `Operation` in the request. - message ReportError { - // The [Operation.operation_id][google.api.servicecontrol.v1.Operation.operation_id] value from the request. - string operation_id = 1; - - // Details of the error when processing the `Operation`. - google.rpc.Status status = 2; - } - - // Partial failures, one for each `Operation` in the request that failed - // processing. There are three possible combinations of the RPC status: - // - // 1. The combination of a successful RPC status and an empty `report_errors` - // list indicates a complete success where all `Operations` in the - // request are processed successfully. - // 2. The combination of a successful RPC status and a non-empty - // `report_errors` list indicates a partial success where some - // `Operations` in the request succeeded. Each - // `Operation` that failed processing has a corresponding item - // in this list. - // 3. A failed RPC status indicates a complete failure where none of the - // `Operations` in the request succeeded. - repeated ReportError report_errors = 1; - - // The actual config id used to process the request. - string service_config_id = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto deleted file mode 100644 index 0d0f34d62ef..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/resources.proto +++ /dev/null @@ -1,286 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicemanagement.v1; - -import "google/api/annotations.proto"; -import "google/api/config_change.proto"; -import "google/api/service.proto"; -import "google/longrunning/operations.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/timestamp.proto"; -import "google/rpc/status.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/servicemanagement/v1;servicemanagement"; -option java_multiple_files = true; -option java_outer_classname = "ResourcesProto"; -option java_package = "com.google.api.servicemanagement.v1"; -option objc_class_prefix = "GASM"; - - -// The full representation of a Service that is managed by -// Google Service Management. -message ManagedService { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. - string service_name = 2; - - // ID of the project that produces and owns this service. - string producer_project_id = 3; -} - -// The metadata associated with a long running operation resource. -message OperationMetadata { - // Represents the status of one operation step. - message Step { - // The short description of the step. - string description = 2; - - // The status code. - Status status = 4; - } - - // Code describes the status of one operation step. - enum Status { - // Unspecifed code. - STATUS_UNSPECIFIED = 0; - - // The step has completed without errors. - DONE = 1; - - // The step has not started yet. - NOT_STARTED = 2; - - // The step is in progress. - IN_PROGRESS = 3; - - // The step has completed with errors. - FAILED = 4; - - // The step has completed with cancellation. - CANCELLED = 5; - } - - // The full name of the resources that this operation is directly - // associated with. - repeated string resource_names = 1; - - // Detailed status information for each step. The order is undetermined. - repeated Step steps = 2; - - // Percentage of completion of this operation, ranging from 0 to 100. - int32 progress_percentage = 3; - - // The start time of the operation. - google.protobuf.Timestamp start_time = 4; -} - -// Represents a diagnostic message (error or warning) -message Diagnostic { - // The kind of diagnostic information possible. - enum Kind { - // Warnings and errors - WARNING = 0; - - // Only errors - ERROR = 1; - } - - // File name and line number of the error or warning. - string location = 1; - - // The kind of diagnostic information provided. - Kind kind = 2; - - // Message describing the error or warning. - string message = 3; -} - -// Represents a source file which is used to generate the service configuration -// defined by `google.api.Service`. -message ConfigSource { - // A unique ID for a specific instance of this message, typically assigned - // by the client for tracking purpose. If empty, the server may choose to - // generate one instead. - string id = 5; - - // Set of source configuration files that are used to generate a service - // configuration (`google.api.Service`). - repeated ConfigFile files = 2; -} - -// Generic specification of a source configuration file -message ConfigFile { - enum FileType { - // Unknown file type. - FILE_TYPE_UNSPECIFIED = 0; - - // YAML-specification of service. - SERVICE_CONFIG_YAML = 1; - - // OpenAPI specification, serialized in JSON. - OPEN_API_JSON = 2; - - // OpenAPI specification, serialized in YAML. - OPEN_API_YAML = 3; - - // FileDescriptorSet, generated by protoc. - // - // To generate, use protoc with imports and source info included. - // For an example test.proto file, the following command would put the value - // in a new file named out.pb. - // - // $protoc --include_imports --include_source_info test.proto -o out.pb - FILE_DESCRIPTOR_SET_PROTO = 4; - } - - // The file name of the configuration file (full or relative path). - string file_path = 1; - - // The bytes that constitute the file. - bytes file_contents = 3; - - // The type of configuration file this represents. - FileType file_type = 4; -} - -// Represents a service configuration with its name and id. -message ConfigRef { - // Resource name of a service config. It must have the following - // format: "services/{service name}/configs/{config id}". - string name = 1; -} - -// Change report associated with a particular service configuration. -// -// It contains a list of ConfigChanges based on the comparison between -// two service configurations. -message ChangeReport { - // List of changes between two service configurations. - // The changes will be alphabetically sorted based on the identifier - // of each change. - // A ConfigChange identifier is a dot separated path to the configuration. - // Example: visibility.rules[selector='LibraryService.CreateBook'].restriction - repeated google.api.ConfigChange config_changes = 1; -} - -// A rollout resource that defines how service configuration versions are pushed -// to control plane systems. Typically, you create a new version of the -// service config, and then create a Rollout to push the service config. -message Rollout { - // Strategy that specifies how Google Service Control should select - // different - // versions of service configurations based on traffic percentage. - // - // One example of how to gradually rollout a new service configuration using - // this - // strategy: - // Day 1 - // - // Rollout { - // id: "example.googleapis.com/rollout_20160206" - // traffic_percent_strategy { - // percentages: { - // "example.googleapis.com/20160201": 70.00 - // "example.googleapis.com/20160206": 30.00 - // } - // } - // } - // - // Day 2 - // - // Rollout { - // id: "example.googleapis.com/rollout_20160207" - // traffic_percent_strategy: { - // percentages: { - // "example.googleapis.com/20160206": 100.00 - // } - // } - // } - message TrafficPercentStrategy { - // Maps service configuration IDs to their corresponding traffic percentage. - // Key is the service configuration ID, Value is the traffic percentage - // which must be greater than 0.0 and the sum must equal to 100.0. - map percentages = 1; - } - - // Strategy used to delete a service. This strategy is a placeholder only - // used by the system generated rollout to delete a service. - message DeleteServiceStrategy { - - } - - // Status of a Rollout. - enum RolloutStatus { - // No status specified. - ROLLOUT_STATUS_UNSPECIFIED = 0; - - // The Rollout is in progress. - IN_PROGRESS = 1; - - // The Rollout has completed successfully. - SUCCESS = 2; - - // The Rollout has been cancelled. This can happen if you have overlapping - // Rollout pushes, and the previous ones will be cancelled. - CANCELLED = 3; - - // The Rollout has failed. It is typically caused by configuration errors. - FAILED = 4; - - // The Rollout has not started yet and is pending for execution. - PENDING = 5; - } - - // Optional unique identifier of this Rollout. Only lower case letters, digits - // and '-' are allowed. - // - // If not specified by client, the server will generate one. The generated id - // will have the form of , where "date" is the create - // date in ISO 8601 format. "revision number" is a monotonically increasing - // positive number that is reset every day for each service. - // An example of the generated rollout_id is '2016-02-16r1' - string rollout_id = 1; - - // Creation time of the rollout. Readonly. - google.protobuf.Timestamp create_time = 2; - - // The user who created the Rollout. Readonly. - string created_by = 3; - - // The status of this rollout. Readonly. In case of a failed rollout, - // the system will automatically rollback to the current Rollout - // version. Readonly. - RolloutStatus status = 4; - - // Strategy that defines which versions of service configurations should be - // pushed - // and how they should be used at runtime. - oneof strategy { - // Google Service Control selects service configurations based on - // traffic percentage. - TrafficPercentStrategy traffic_percent_strategy = 5; - - // The strategy associated with a rollout to delete a `ManagedService`. - // Readonly. - DeleteServiceStrategy delete_service_strategy = 200; - } - - // The name of the service associated with this Rollout. - string service_name = 8; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto b/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto deleted file mode 100644 index 62af1893ec2..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/servicemanagement/v1/servicemanager.proto +++ /dev/null @@ -1,392 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api.servicemanagement.v1; - -import "google/api/annotations.proto"; -import "google/api/service.proto"; -import "google/api/servicemanagement/v1/resources.proto"; -import "google/longrunning/operations.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/empty.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/struct.proto"; -import "google/rpc/status.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/servicemanagement/v1;servicemanagement"; -option java_multiple_files = true; -option java_outer_classname = "ServiceManagerProto"; -option java_package = "com.google.api.servicemanagement.v1"; -option objc_class_prefix = "GASM"; - - -// [Google Service Management API](/service-management/overview) -service ServiceManager { - // Lists all managed services. - rpc ListServices(ListServicesRequest) returns (ListServicesResponse) { - option (google.api.http) = { get: "/v1/services" }; - } - - // Gets a managed service. - rpc GetService(GetServiceRequest) returns (ManagedService) { - option (google.api.http) = { get: "/v1/services/{service_name}" }; - } - - // Creates a new managed service. - // Please note one producer project can own no more than 20 services. - // - // Operation - rpc CreateService(CreateServiceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services" body: "service" }; - } - - // Deletes a managed service. This method will change the serivce in the - // `Soft-Delete` state for 30 days. Within this period, service producers may - // call [UndeleteService][google.api.servicemanagement.v1.ServiceManager.UndeleteService] to restore the service. - // After 30 days, the service will be permanently deleted. - // - // Operation - rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { delete: "/v1/services/{service_name}" }; - } - - // Revives a previously deleted managed service. The method restores the - // service using the configuration at the time the service was deleted. - // The target service must exist and must have been deleted within the - // last 30 days. - // - // Operation - rpc UndeleteService(UndeleteServiceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services/{service_name}:undelete" body: "" }; - } - - // Lists the history of the service configuration for a managed service, - // from the newest to the oldest. - rpc ListServiceConfigs(ListServiceConfigsRequest) returns (ListServiceConfigsResponse) { - option (google.api.http) = { get: "/v1/services/{service_name}/configs" }; - } - - // Gets a service configuration (version) for a managed service. - rpc GetServiceConfig(GetServiceConfigRequest) returns (google.api.Service) { - option (google.api.http) = { get: "/v1/services/{service_name}/configs/{config_id}" }; - } - - // Creates a new service configuration (version) for a managed service. - // This method only stores the service configuration. To roll out the service - // configuration to backend systems please call - // [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - rpc CreateServiceConfig(CreateServiceConfigRequest) returns (google.api.Service) { - option (google.api.http) = { post: "/v1/services/{service_name}/configs" body: "service_config" }; - } - - // Creates a new service configuration (version) for a managed service based - // on - // user-supplied configuration source files (for example: OpenAPI - // Specification). This method stores the source configurations as well as the - // generated service configuration. To rollout the service configuration to - // other services, - // please call [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - // - // Operation - rpc SubmitConfigSource(SubmitConfigSourceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services/{service_name}/configs:submit" body: "*" }; - } - - // Lists the history of the service configuration rollouts for a managed - // service, from the newest to the oldest. - rpc ListServiceRollouts(ListServiceRolloutsRequest) returns (ListServiceRolloutsResponse) { - option (google.api.http) = { get: "/v1/services/{service_name}/rollouts" }; - } - - // Gets a service configuration [rollout][google.api.servicemanagement.v1.Rollout]. - rpc GetServiceRollout(GetServiceRolloutRequest) returns (Rollout) { - option (google.api.http) = { get: "/v1/services/{service_name}/rollouts/{rollout_id}" }; - } - - // Creates a new service configuration rollout. Based on rollout, the - // Google Service Management will roll out the service configurations to - // different backend services. For example, the logging configuration will be - // pushed to Google Cloud Logging. - // - // Please note that any previous pending and running Rollouts and associated - // Operations will be automatically cancelled so that the latest Rollout will - // not be blocked by previous Rollouts. - // - // Operation - rpc CreateServiceRollout(CreateServiceRolloutRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services/{service_name}/rollouts" body: "rollout" }; - } - - // Generates and returns a report (errors, warnings and changes from - // existing configurations) associated with - // GenerateConfigReportRequest.new_value - // - // If GenerateConfigReportRequest.old_value is specified, - // GenerateConfigReportRequest will contain a single ChangeReport based on the - // comparison between GenerateConfigReportRequest.new_value and - // GenerateConfigReportRequest.old_value. - // If GenerateConfigReportRequest.old_value is not specified, this method - // will compare GenerateConfigReportRequest.new_value with the last pushed - // service configuration. - rpc GenerateConfigReport(GenerateConfigReportRequest) returns (GenerateConfigReportResponse) { - option (google.api.http) = { post: "/v1/services:generateConfigReport" body: "*" }; - } - - // Enable a managed service for a project with default setting. - // - // Operation - // - // [google.rpc.Status][google.rpc.Status] errors may contain a - // [google.rpc.PreconditionFailure][] error detail. - rpc EnableService(EnableServiceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services/{service_name}:enable" body: "*" }; - } - - // Disable a managed service for a project. - // - // Operation - rpc DisableService(DisableServiceRequest) returns (google.longrunning.Operation) { - option (google.api.http) = { post: "/v1/services/{service_name}:disable" body: "*" }; - } -} - -// Request message for `ListServices` method. -message ListServicesRequest { - // Include services produced by the specified project. - string producer_project_id = 1; - - // Requested size of the next page of data. - int32 page_size = 5; - - // Token identifying which result to start with; returned by a previous list - // call. - string page_token = 6; -} - -// Response message for `ListServices` method. -message ListServicesResponse { - // The results of the query. - repeated ManagedService services = 1; - - // Token that can be passed to `ListServices` to resume a paginated query. - string next_page_token = 2; -} - -// Request message for `GetService` method. -message GetServiceRequest { - // The name of the service. See the `ServiceManager` overview for naming - // requirements. For example: `example.googleapis.com`. - string service_name = 1; -} - -// Request message for CreateService method. -message CreateServiceRequest { - // Initial values for the service resource. - ManagedService service = 1; -} - -// Request message for DeleteService method. -message DeleteServiceRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; -} - -// Request message for UndeleteService method. -message UndeleteServiceRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; -} - -// Response message for UndeleteService method. -message UndeleteServiceResponse { - // Revived service resource. - ManagedService service = 1; -} - -// Request message for GetServiceConfig method. -message GetServiceConfigRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - string config_id = 2; -} - -// Request message for ListServiceConfigs method. -message ListServiceConfigsRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The token of the page to retrieve. - string page_token = 2; - - // The max number of items to include in the response list. - int32 page_size = 3; -} - -// Response message for ListServiceConfigs method. -message ListServiceConfigsResponse { - // The list of service configuration resources. - repeated google.api.Service service_configs = 1; - - // The token of the next page of results. - string next_page_token = 2; -} - -// Request message for CreateServiceConfig method. -message CreateServiceConfigRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The service configuration resource. - google.api.Service service_config = 2; -} - -// Request message for SubmitConfigSource method. -message SubmitConfigSourceRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The source configuration for the service. - ConfigSource config_source = 2; - - // Optional. If set, this will result in the generation of a - // `google.api.Service` configuration based on the `ConfigSource` provided, - // but the generated config and the sources will NOT be persisted. - bool validate_only = 3; -} - -// Response message for SubmitConfigSource method. -message SubmitConfigSourceResponse { - // The generated service configuration. - google.api.Service service_config = 1; -} - -// Request message for 'CreateServiceRollout' -message CreateServiceRolloutRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The rollout resource. The `service_name` field is output only. - Rollout rollout = 2; -} - -// Request message for 'ListServiceRollouts' -message ListServiceRolloutsRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The token of the page to retrieve. - string page_token = 2; - - // The max number of items to include in the response list. - int32 page_size = 3; -} - -// Response message for ListServiceRollouts method. -message ListServiceRolloutsResponse { - // The list of rollout resources. - repeated Rollout rollouts = 1; - - // The token of the next page of results. - string next_page_token = 2; -} - -// Request message for GetServiceRollout method. -message GetServiceRolloutRequest { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - string service_name = 1; - - // The id of the rollout resource. - string rollout_id = 2; -} - -// Request message for EnableService method. -message EnableServiceRequest { - // Name of the service to enable. Specifying an unknown service name will - // cause the request to fail. - string service_name = 1; - - // The identity of consumer resource which service enablement will be - // applied to. - // - // The Google Service Management implementation accepts the following - // forms: "project:", "project_number:". - // - // Note: this is made compatible with - // google.api.servicecontrol.v1.Operation.consumer_id. - string consumer_id = 2; -} - -// Request message for DisableService method. -message DisableServiceRequest { - // Name of the service to disable. Specifying an unknown service name - // will cause the request to fail. - string service_name = 1; - - // The identity of consumer resource which service disablement will be - // applied to. - // - // The Google Service Management implementation accepts the following - // forms: "project:", "project_number:". - // - // Note: this is made compatible with - // google.api.servicecontrol.v1.Operation.consumer_id. - string consumer_id = 2; -} - -// Request message for GenerateConfigReport method. -message GenerateConfigReportRequest { - // Service configuration for which we want to generate the report. - // For this version of API, the supported types are - // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], - // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], - // and [google.api.Service][google.api.Service] - google.protobuf.Any new_config = 1; - - // Service configuration against which the comparison will be done. - // For this version of API, the supported types are - // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], - // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], - // and [google.api.Service][google.api.Service] - google.protobuf.Any old_config = 2; -} - -// Response message for GenerateConfigReport method. -message GenerateConfigReportResponse { - // Name of the service this report belongs to. - string service_name = 1; - - // ID of the service configuration this report belongs to. - string id = 2; - - // list of ChangeReport, each corresponding to comparison between two - // service configurations. - repeated ChangeReport change_reports = 3; - - // Errors / Linter warnings associated with the service definition this - // report - // belongs to. - repeated Diagnostic diagnostics = 4; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/source_info.proto b/handwritten/nodejs-datastore/protos/google/api/source_info.proto deleted file mode 100644 index 5d0f7bd721f..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/source_info.proto +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/protobuf/any.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "SourceInfoProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Source information used to create a Service Config -message SourceInfo { - // All files used during config generation. - repeated google.protobuf.Any source_files = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto b/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto deleted file mode 100644 index ed36a3d0bce..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/system_parameter.proto +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "SystemParameterProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// ### System parameter configuration -// -// A system parameter is a special kind of parameter defined by the API -// system, not by an individual API. It is typically mapped to an HTTP header -// and/or a URL query parameter. This configuration specifies which methods -// change the names of the system parameters. -message SystemParameters { - // Define system parameters. - // - // The parameters defined here will override the default parameters - // implemented by the system. If this field is missing from the service - // config, default system parameters will be used. Default system parameters - // and names is implementation-dependent. - // - // Example: define api key for all methods - // - // system_parameters - // rules: - // - selector: "*" - // parameters: - // - name: api_key - // url_query_parameter: api_key - // - // - // Example: define 2 api key names for a specific method. - // - // system_parameters - // rules: - // - selector: "/ListShelves" - // parameters: - // - name: api_key - // http_header: Api-Key1 - // - name: api_key - // http_header: Api-Key2 - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated SystemParameterRule rules = 1; -} - -// Define a system parameter rule mapping system parameter definitions to -// methods. -message SystemParameterRule { - // Selects the methods to which this rule applies. Use '*' to indicate all - // methods in all APIs. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Define parameters. Multiple names may be defined for a parameter. - // For a given method call, only one of them should be used. If multiple - // names are used the behavior is implementation-dependent. - // If none of the specified names are present the behavior is - // parameter-dependent. - repeated SystemParameter parameters = 2; -} - -// Define a parameter's name and location. The parameter may be passed as either -// an HTTP header or a URL query parameter, and if both are passed the behavior -// is implementation-dependent. -message SystemParameter { - // Define the name of the parameter, such as "api_key" . It is case sensitive. - string name = 1; - - // Define the HTTP header name to use for the parameter. It is case - // insensitive. - string http_header = 2; - - // Define the URL query parameter name to use for the parameter. It is case - // sensitive. - string url_query_parameter = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/api/usage.proto b/handwritten/nodejs-datastore/protos/google/api/usage.proto deleted file mode 100644 index 29c601382d4..00000000000 --- a/handwritten/nodejs-datastore/protos/google/api/usage.proto +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/annotations.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; -option java_multiple_files = true; -option java_outer_classname = "UsageProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - - -// Configuration controlling usage of a service. -message Usage { - // Requirements that must be satisfied before a consumer project can use the - // service. Each requirement is of the form /; - // for example 'serviceusage.googleapis.com/billing-enabled'. - repeated string requirements = 1; - - // A list of usage rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated UsageRule rules = 6; - - // The full resource name of a channel used for sending notifications to the - // service producer. - // - // Google Service Management currently only supports - // [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification - // channel. To use Google Cloud Pub/Sub as the channel, this must be the name - // of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format - // documented in https://cloud.google.com/pubsub/docs/overview. - string producer_notification_channel = 7; -} - -// Usage configuration rules for the service. -// -// NOTE: Under development. -// -// -// Use this rule to configure unregistered calls for the service. Unregistered -// calls are calls that do not contain consumer project identity. -// (Example: calls that do not contain an API key). -// By default, API methods do not allow unregistered calls, and each method call -// must be identified by a consumer project identity. Use this rule to -// allow/disallow unregistered calls. -// -// Example of an API that wants to allow unregistered calls for entire service. -// -// usage: -// rules: -// - selector: "*" -// allow_unregistered_calls: true -// -// Example of a method that wants to allow unregistered calls. -// -// usage: -// rules: -// - selector: "google.example.library.v1.LibraryService.CreateBook" -// allow_unregistered_calls: true -message UsageRule { - // Selects the methods to which this rule applies. Use '*' to indicate all - // methods in all APIs. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // True, if the method allows unregistered calls; false otherwise. - bool allow_unregistered_calls = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 11acab6b763..245edb68965 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2017 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -66,6 +66,12 @@ service Datastore { rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:allocateIds" body: "*" }; } + + // Prevents the supplied keys' IDs from being auto-allocated by Cloud + // Datastore. + rpc ReserveIds(ReserveIdsRequest) returns (ReserveIdsResponse) { + option (google.api.http) = { post: "/v1/projects/{project_id}:reserveIds" body: "*" }; + } } // The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. @@ -135,6 +141,9 @@ message RunQueryResponse { message BeginTransactionRequest { // The ID of the project against which to make the request. string project_id = 8; + + // Options for a new transaction. + TransactionOptions transaction_options = 10; } // The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. @@ -232,6 +241,24 @@ message AllocateIdsResponse { repeated Key keys = 1; } +// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +message ReserveIdsRequest { + // The ID of the project against which to make the request. + string project_id = 8; + + // If not empty, the ID of the database against which to make the request. + string database_id = 9; + + // A list of keys with complete key paths whose numeric IDs should not be + // auto-allocated. + repeated Key keys = 1; +} + +// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +message ReserveIdsResponse { + +} + // A mutation to apply to an entity. message Mutation { // The mutation operation. @@ -316,3 +343,31 @@ message ReadOptions { bytes transaction = 2; } } + +// Options for beginning a new transaction. +// +// Transactions can be created explicitly with calls to +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting +// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests. +message TransactionOptions { + // Options specific to read / write transactions. + message ReadWrite { + // The transaction identifier of the transaction being retried. + bytes previous_transaction = 1; + } + + // Options specific to read-only transactions. + message ReadOnly { + + } + + // The `mode` of the transaction, indicating whether write operations are + // supported. + oneof mode { + // The transaction should allow both reads and writes. + ReadWrite read_write = 1; + + // The transaction should only allow reads. + ReadOnly read_only = 2; + } +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 6df3ef2ab25..de38b0763ed 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2017 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 483e12565e1..f74a9946849 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2017 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -273,7 +273,7 @@ message QueryResultBatch { // cursor. MORE_RESULTS_AFTER_CURSOR = 4; - // The query has been exhausted. + // The query is finished, and there are no more results. NO_MORE_RESULTS = 3; } diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/any.proto b/handwritten/nodejs-datastore/protos/google/protobuf/any.proto deleted file mode 100644 index 9bd3f50a453..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/any.proto +++ /dev/null @@ -1,139 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/any"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. - // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: - // - // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/api.proto b/handwritten/nodejs-datastore/protos/google/protobuf/api.proto deleted file mode 100644 index 7c30e8b7ad3..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/api.proto +++ /dev/null @@ -1,202 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/source_context.proto"; -import "google/protobuf/type.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "ApiProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/api;api"; - -// Api is a light-weight descriptor for a protocol buffer service. -message Api { - - // The fully qualified name of this api, including package name - // followed by the api's simple name. - string name = 1; - - // The methods of this api, in unspecified order. - repeated Method methods = 2; - - // Any metadata attached to the API. - repeated Option options = 3; - - // A version string for this api. If specified, must have the form - // `major-version.minor-version`, as in `1.10`. If the minor version - // is omitted, it defaults to zero. If the entire version field is - // empty, the major version is derived from the package name, as - // outlined below. If the field is not empty, the version in the - // package name will be verified to be consistent with what is - // provided here. - // - // The versioning schema uses [semantic - // versioning](http://semver.org) where the major version number - // indicates a breaking change and the minor version an additive, - // non-breaking change. Both version numbers are signals to users - // what to expect from different versions, and should be carefully - // chosen based on the product plan. - // - // The major version is also reflected in the package name of the - // API, which must end in `v`, as in - // `google.feature.v1`. For major versions 0 and 1, the suffix can - // be omitted. Zero major versions must only be used for - // experimental, none-GA apis. - // - // - string version = 4; - - // Source context for the protocol buffer service represented by this - // message. - SourceContext source_context = 5; - - // Included APIs. See [Mixin][]. - repeated Mixin mixins = 6; - - // The source syntax of the service. - Syntax syntax = 7; -} - -// Method represents a method of an api. -message Method { - - // The simple name of this method. - string name = 1; - - // A URL of the input message type. - string request_type_url = 2; - - // If true, the request is streamed. - bool request_streaming = 3; - - // The URL of the output message type. - string response_type_url = 4; - - // If true, the response is streamed. - bool response_streaming = 5; - - // Any metadata attached to the method. - repeated Option options = 6; - - // The source syntax of this method. - Syntax syntax = 7; -} - -// Declares an API to be included in this API. The including API must -// redeclare all the methods from the included API, but documentation -// and options are inherited as follows: -// -// - If after comment and whitespace stripping, the documentation -// string of the redeclared method is empty, it will be inherited -// from the original method. -// -// - Each annotation belonging to the service config (http, -// visibility) which is not set in the redeclared method will be -// inherited. -// -// - If an http annotation is inherited, the path pattern will be -// modified as follows. Any version prefix will be replaced by the -// version of the including API plus the [root][] path if specified. -// -// Example of a simple mixin: -// -// package google.acl.v1; -// service AccessControl { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v1/{resource=**}:getAcl"; -// } -// } -// -// package google.storage.v2; -// service Storage { -// rpc GetAcl(GetAclRequest) returns (Acl); -// -// // Get a data record. -// rpc GetData(GetDataRequest) returns (Data) { -// option (google.api.http).get = "/v2/{resource=**}"; -// } -// } -// -// Example of a mixin configuration: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// -// The mixin construct implies that all methods in `AccessControl` are -// also declared with same name and request/response types in -// `Storage`. A documentation generator or annotation processor will -// see the effective `Storage.GetAcl` method after inherting -// documentation and annotations as follows: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/{resource=**}:getAcl"; -// } -// ... -// } -// -// Note how the version in the path pattern changed from `v1` to `v2`. -// -// If the `root` field in the mixin is specified, it should be a -// relative path under which inherited HTTP paths are placed. Example: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// root: acls -// -// This implies the following inherited HTTP annotation: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; -// } -// ... -// } -message Mixin { - // The fully qualified name of the API which is included. - string name = 1; - - // If non-empty specifies a path under which inherited HTTP paths - // are rooted. - string root = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto b/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto deleted file mode 100644 index f859c42972f..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/descriptor.proto +++ /dev/null @@ -1,831 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - - -syntax = "proto2"; - -package google.protobuf; -option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { - repeated FileDescriptorProto file = 1; -} - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; - - // The syntax of the proto file. - // The supported values are "proto2" and "proto3". - optional string syntax = 12; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; - optional int32 end = 2; - } - repeated ExtensionRange extension_range = 5; - - repeated OneofDescriptorProto oneof_decl = 8; - - optional MessageOptions options = 7; - - // Range of reserved tag numbers. Reserved tag numbers may not be used by - // fields or extension ranges in the same message. Reserved ranges may - // not overlap. - message ReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - } - repeated ReservedRange reserved_range = 9; - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - repeated string reserved_name = 10; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - }; - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REQUIRED = 2; - LABEL_REPEATED = 3; - }; - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - // TODO(kenton): Base-64 encode? - optional string default_value = 7; - - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - optional int32 oneof_index = 9; - - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - optional string json_name = 10; - - optional FieldOptions options = 8; -} - -// Describes a oneof. -message OneofDescriptorProto { - optional string name = 1; - optional OneofOptions options = 2; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; - - // Identifies if client streams multiple client messages - optional bool client_streaming = 5 [default=false]; - // Identifies if server streams multiple server messages - optional bool server_streaming = 6 [default=false]; -} - - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Objective-C plugin) and your project website (if available) -- there's no -// need to explain how you intend to use them. Usually you only need one -// extension number. You can declare multiple options with only one extension -// number by putting them in a sub-message. See the Custom Options section of -// the docs for examples: -// https://developers.google.com/protocol-buffers/docs/proto#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - - // If set, all the classes from the .proto file are wrapped in a single - // outer class with the given name. This applies to both Proto1 - // (equivalent to the old "--one_java_file" option) and Proto2 (where - // a .proto always translates to a single class, but you may want to - // explicitly choose the class name). - optional string java_outer_classname = 8; - - // If set true, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the outer class - // named by java_outer_classname. However, the outer class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [default=false]; - - // This option does nothing. - optional bool java_generate_equals_and_hash = 20 [deprecated=true]; - - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 - // byte sequence to a string field. - // Message reflection will do the same. - // However, an extension field still accepts non-UTF-8 byte sequences. - // This option has no effect on when used with the lite runtime. - optional bool java_string_check_utf8 = 27 [default=false]; - - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [default=SPEED]; - - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - optional string go_package = 11; - - - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [default=false]; - optional bool java_generic_services = 17 [default=false]; - optional bool py_generic_services = 18 [default=false]; - - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - optional bool deprecated = 23 [default=false]; - - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - optional bool cc_enable_arenas = 31 [default=false]; - - - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - optional string objc_class_prefix = 36; - - // Namespace for generated classes; defaults to the package. - optional string csharp_namespace = 37; - - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - optional string swift_prefix = 39; - - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - optional string php_class_prefix = 40; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 38; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [default=false]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [default=false]; - - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - optional bool deprecated = 3 [default=false]; - - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // map map_field = 1; - // The parsed descriptor looks like: - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementions still need to work as - // if the field is a repeated message field. - // - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - optional bool map_entry = 7; - - reserved 8; // javalite_serializable - reserved 9; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is not yet implemented in the open source - // release -- sorry, we'll try to include it in a future version! - optional CType ctype = 1 [default = STRING]; - enum CType { - // Default mode. - STRING = 0; - - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. - optional bool packed = 2; - - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). By default these types are - // represented as JavaScript strings. This avoids loss of precision that can - // happen when a large value is converted to a floating point JavaScript - // numbers. Specifying JS_NUMBER for the jstype causes the generated - // JavaScript code to use the JavaScript "number" type instead of strings. - // This option is an enum to permit additional types to be added, - // e.g. goog.math.Integer. - optional JSType jstype = 6 [default = JS_NORMAL]; - enum JSType { - // Use the default type. - JS_NORMAL = 0; - - // Use JavaScript strings. - JS_STRING = 1; - - // Use JavaScript numbers. - JS_NUMBER = 2; - } - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - optional bool lazy = 5 [default=false]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [default=false]; - - // For Google-internal migration only. Do not use. - optional bool weak = 10 [default=false]; - - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 4; // removed jtype -} - -message OneofOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to true to allow mapping different tag names to the same - // value. - optional bool allow_alias = 2; - - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - optional bool deprecated = 3 [default=false]; - - reserved 5; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - optional bool deprecated = 1 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - optional bool deprecated = 33 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - optional bool deprecated = 33 [default=false]; - - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0; - NO_SIDE_EFFECTS = 1; // implies idempotent - IDEMPOTENT = 2; // idempotent, but may have side effects - } - optional IdempotencyLevel idempotency_level = - 34 [default=IDEMPOTENCY_UNKNOWN]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - // "foo.(bar.baz).qux". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendent. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition. For - // example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - repeated int32 path = 1 [packed=true]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [packed=true]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to qux. - // // - // // Another line attached to qux. - // optional double qux = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to qux or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - optional string leading_comments = 3; - optional string trailing_comments = 4; - repeated string leading_detached_comments = 6; - } -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -message GeneratedCodeInfo { - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - repeated Annotation annotation = 1; - message Annotation { - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - repeated int32 path = 1 [packed=true]; - - // Identifies the filesystem path to the original source .proto. - optional string source_file = 2; - - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - optional int32 begin = 3; - - // Identifies the ending offset in bytes in the generated code that - // relates to the identified offset. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - optional int32 end = 4; - } -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto b/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto deleted file mode 100644 index 975fce41aae..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/duration.proto +++ /dev/null @@ -1,117 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/duration"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DurationProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Duration represents a signed, fixed-length span of time represented -// as a count of seconds and fractions of seconds at nanosecond -// resolution. It is independent of any calendar and concepts like "day" -// or "month". It is related to Timestamp in that the difference between -// two Timestamp values is a Duration and it can be added or subtracted -// from a Timestamp. Range is approximately +-10,000 years. -// -// # Examples -// -// Example 1: Compute Duration from two Timestamps in pseudo code. -// -// Timestamp start = ...; -// Timestamp end = ...; -// Duration duration = ...; -// -// duration.seconds = end.seconds - start.seconds; -// duration.nanos = end.nanos - start.nanos; -// -// if (duration.seconds < 0 && duration.nanos > 0) { -// duration.seconds += 1; -// duration.nanos -= 1000000000; -// } else if (durations.seconds > 0 && duration.nanos < 0) { -// duration.seconds -= 1; -// duration.nanos += 1000000000; -// } -// -// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. -// -// Timestamp start = ...; -// Duration duration = ...; -// Timestamp end = ...; -// -// end.seconds = start.seconds + duration.seconds; -// end.nanos = start.nanos + duration.nanos; -// -// if (end.nanos < 0) { -// end.seconds -= 1; -// end.nanos += 1000000000; -// } else if (end.nanos >= 1000000000) { -// end.seconds += 1; -// end.nanos -= 1000000000; -// } -// -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// -// -message Duration { - - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto b/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto deleted file mode 100644 index 03cacd23308..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/empty.proto +++ /dev/null @@ -1,52 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/empty"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "EmptyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -// The JSON representation for `Empty` is empty JSON object `{}`. -message Empty {} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto b/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto deleted file mode 100644 index c68d247c8a4..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/field_mask.proto +++ /dev/null @@ -1,246 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "FieldMaskProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask"; - -// `FieldMask` represents a set of symbolic field paths, for example: -// -// paths: "f.a" -// paths: "f.b.d" -// -// Here `f` represents a field in some root message, `a` and `b` -// fields in the message found in `f`, and `d` a field found in the -// message in `f.b`. -// -// Field masks are used to specify a subset of fields that should be -// returned by a get operation or modified by an update operation. -// Field masks also have a custom JSON encoding (see below). -// -// # Field Masks in Projections -// -// When used in the context of a projection, a response message or -// sub-message is filtered by the API to only contain those fields as -// specified in the mask. For example, if the mask in the previous -// example is applied to a response message as follows: -// -// f { -// a : 22 -// b { -// d : 1 -// x : 2 -// } -// y : 13 -// } -// z: 8 -// -// The result will not contain specific values for fields x,y and z -// (their value will be set to the default, and omitted in proto text -// output): -// -// -// f { -// a : 22 -// b { -// d : 1 -// } -// } -// -// A repeated field is not allowed except at the last position of a -// paths string. -// -// If a FieldMask object is not present in a get operation, the -// operation applies to all fields (as if a FieldMask of all fields -// had been specified). -// -// Note that a field mask does not necessarily apply to the -// top-level response message. In case of a REST get operation, the -// field mask applies directly to the response, but in case of a REST -// list operation, the mask instead applies to each individual message -// in the returned resource list. In case of a REST custom method, -// other definitions may be used. Where the mask applies will be -// clearly documented together with its declaration in the API. In -// any case, the effect on the returned resource/resources is required -// behavior for APIs. -// -// # Field Masks in Update Operations -// -// A field mask in update operations specifies which fields of the -// targeted resource are going to be updated. The API is required -// to only change the values of the fields as specified in the mask -// and leave the others untouched. If a resource is passed in to -// describe the updated values, the API ignores the values of all -// fields not covered by the mask. -// -// If a repeated field is specified for an update operation, the existing -// repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a `paths` -// string. -// -// If a sub-message is specified in the last position of the field mask for an -// update operation, then the existing sub-message in the target resource is -// overwritten. Given the target message: -// -// f { -// b { -// d : 1 -// x : 2 -// } -// c : 1 -// } -// -// And an update message: -// -// f { -// b { -// d : 10 -// } -// } -// -// then if the field mask is: -// -// paths: "f.b" -// -// then the result will be: -// -// f { -// b { -// d : 10 -// } -// c : 1 -// } -// -// However, if the update mask was: -// -// paths: "f.b.d" -// -// then the result would be: -// -// f { -// b { -// d : 10 -// x : 2 -// } -// c : 1 -// } -// -// In order to reset a field's value to the default, the field must -// be in the mask and set to the default value in the provided resource. -// Hence, in order to reset all fields of a resource, provide a default -// instance of the resource and set all fields in the mask, or do -// not provide a mask as described below. -// -// If a field mask is not present on update, the operation applies to -// all fields (as if a field mask of all fields has been specified). -// Note that in the presence of schema evolution, this may mean that -// fields the client does not know and has therefore not filled into -// the request will be reset to their default. If this is unwanted -// behavior, a specific service may require a client to always specify -// a field mask, producing an error if not. -// -// As with get operations, the location of the resource which -// describes the updated values in the request message depends on the -// operation kind. In any case, the effect of the field mask is -// required to be honored by the API. -// -// ## Considerations for HTTP REST -// -// The HTTP kind of an update operation which uses a field mask must -// be set to PATCH instead of PUT in order to satisfy HTTP semantics -// (PUT must only be used for full updates). -// -// # JSON Encoding of Field Masks -// -// In JSON, a field mask is encoded as a single string where paths are -// separated by a comma. Fields name in each path are converted -// to/from lower-camel naming conventions. -// -// As an example, consider the following message declarations: -// -// message Profile { -// User user = 1; -// Photo photo = 2; -// } -// message User { -// string display_name = 1; -// string address = 2; -// } -// -// In proto a field mask for `Profile` may look as such: -// -// mask { -// paths: "user.display_name" -// paths: "photo" -// } -// -// In JSON, the same mask is represented as below: -// -// { -// mask: "user.displayName,photo" -// } -// -// # Field Masks and Oneof Fields -// -// Field masks treat fields in oneofs just as regular fields. Consider the -// following message: -// -// message SampleMessage { -// oneof test_oneof { -// string name = 4; -// SubMessage sub_message = 9; -// } -// } -// -// The field mask can be: -// -// mask { -// paths: "name" -// } -// -// Or: -// -// mask { -// paths: "sub_message" -// } -// -// Note that oneof type names ("test_oneof" in this case) cannot be used in -// paths. -message FieldMask { - // The set of field mask paths. - repeated string paths = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto b/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto deleted file mode 100644 index f3b2c966811..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/source_context.proto +++ /dev/null @@ -1,48 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "SourceContextProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/source_context;source_context"; - -// `SourceContext` represents information about the source of a -// protobuf element, like the file in which it is defined. -message SourceContext { - // The path-qualified name of the .proto file that contained the associated - // protobuf element. For example: `"google/protobuf/source_context.proto"`. - string file_name = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto b/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto deleted file mode 100644 index 7d7808e7fbb..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/struct.proto +++ /dev/null @@ -1,96 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "StructProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - - -// `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -message Struct { - // Unordered map of dynamically typed values. - map fields = 1; -} - -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -message Value { - // The kind of value. - oneof kind { - // Represents a null value. - NullValue null_value = 1; - // Represents a double value. - double number_value = 2; - // Represents a string value. - string string_value = 3; - // Represents a boolean value. - bool bool_value = 4; - // Represents a structured value. - Struct struct_value = 5; - // Represents a repeated `Value`. - ListValue list_value = 6; - } -} - -// `NullValue` is a singleton enumeration to represent the null value for the -// `Value` type union. -// -// The JSON representation for `NullValue` is JSON `null`. -enum NullValue { - // Null value. - NULL_VALUE = 0; -} - -// `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -message ListValue { - // Repeated field of dynamically typed values. - repeated Value values = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto b/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto deleted file mode 100644 index b7cbd17502f..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/timestamp.proto +++ /dev/null @@ -1,133 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/timestamp"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TimestampProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Timestamp represents a point in time independent of any time zone -// or calendar, represented as seconds and fractions of seconds at -// nanosecond resolution in UTC Epoch time. It is encoded using the -// Proleptic Gregorian Calendar which extends the Gregorian calendar -// backwards to year one. It is encoded assuming all minutes are 60 -// seconds long, i.e. leap seconds are "smeared" so that no leap second -// table is needed for interpretation. Range is from -// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. -// By restricting to that range, we ensure that we can convert to -// and from RFC 3339 date strings. -// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). -// -// # Examples -// -// Example 1: Compute Timestamp from POSIX `time()`. -// -// Timestamp timestamp; -// timestamp.set_seconds(time(NULL)); -// timestamp.set_nanos(0); -// -// Example 2: Compute Timestamp from POSIX `gettimeofday()`. -// -// struct timeval tv; -// gettimeofday(&tv, NULL); -// -// Timestamp timestamp; -// timestamp.set_seconds(tv.tv_sec); -// timestamp.set_nanos(tv.tv_usec * 1000); -// -// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. -// -// FILETIME ft; -// GetSystemTimeAsFileTime(&ft); -// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -// -// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -// Timestamp timestamp; -// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -// -// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. -// -// long millis = System.currentTimeMillis(); -// -// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -// .setNanos((int) ((millis % 1000) * 1000000)).build(); -// -// -// Example 5: Compute Timestamp from current time in Python. -// -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. -// -// -message Timestamp { - - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/type.proto b/handwritten/nodejs-datastore/protos/google/protobuf/type.proto deleted file mode 100644 index 624c15ee616..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/type.proto +++ /dev/null @@ -1,187 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/any.proto"; -import "google/protobuf/source_context.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TypeProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option go_package = "google.golang.org/genproto/protobuf/ptype;ptype"; - -// A protocol buffer message type. -message Type { - // The fully qualified message name. - string name = 1; - // The list of fields. - repeated Field fields = 2; - // The list of types appearing in `oneof` definitions in this type. - repeated string oneofs = 3; - // The protocol buffer options. - repeated Option options = 4; - // The source context. - SourceContext source_context = 5; - // The source syntax. - Syntax syntax = 6; -} - -// A single field of a message type. -message Field { - // Basic field types. - enum Kind { - // Field type unknown. - TYPE_UNKNOWN = 0; - // Field type double. - TYPE_DOUBLE = 1; - // Field type float. - TYPE_FLOAT = 2; - // Field type int64. - TYPE_INT64 = 3; - // Field type uint64. - TYPE_UINT64 = 4; - // Field type int32. - TYPE_INT32 = 5; - // Field type fixed64. - TYPE_FIXED64 = 6; - // Field type fixed32. - TYPE_FIXED32 = 7; - // Field type bool. - TYPE_BOOL = 8; - // Field type string. - TYPE_STRING = 9; - // Field type group. Proto2 syntax only, and deprecated. - TYPE_GROUP = 10; - // Field type message. - TYPE_MESSAGE = 11; - // Field type bytes. - TYPE_BYTES = 12; - // Field type uint32. - TYPE_UINT32 = 13; - // Field type enum. - TYPE_ENUM = 14; - // Field type sfixed32. - TYPE_SFIXED32 = 15; - // Field type sfixed64. - TYPE_SFIXED64 = 16; - // Field type sint32. - TYPE_SINT32 = 17; - // Field type sint64. - TYPE_SINT64 = 18; - }; - - // Whether a field is optional, required, or repeated. - enum Cardinality { - // For fields with unknown cardinality. - CARDINALITY_UNKNOWN = 0; - // For optional fields. - CARDINALITY_OPTIONAL = 1; - // For required fields. Proto2 syntax only. - CARDINALITY_REQUIRED = 2; - // For repeated fields. - CARDINALITY_REPEATED = 3; - }; - - // The field type. - Kind kind = 1; - // The field cardinality. - Cardinality cardinality = 2; - // The field number. - int32 number = 3; - // The field name. - string name = 4; - // The field type URL, without the scheme, for message or enumeration - // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - string type_url = 6; - // The index of the field type in `Type.oneofs`, for message or enumeration - // types. The first type has index 1; zero means the type is not in the list. - int32 oneof_index = 7; - // Whether to use alternative packed wire representation. - bool packed = 8; - // The protocol buffer options. - repeated Option options = 9; - // The field JSON name. - string json_name = 10; - // The string value of the default value of this field. Proto2 syntax only. - string default_value = 11; -} - -// Enum type definition. -message Enum { - // Enum type name. - string name = 1; - // Enum value definitions. - repeated EnumValue enumvalue = 2; - // Protocol buffer options. - repeated Option options = 3; - // The source context. - SourceContext source_context = 4; - // The source syntax. - Syntax syntax = 5; -} - -// Enum value definition. -message EnumValue { - // Enum value name. - string name = 1; - // Enum value number. - int32 number = 2; - // Protocol buffer options. - repeated Option options = 3; -} - -// A protocol buffer option, which can be attached to a message, field, -// enumeration, etc. -message Option { - // The option's name. For protobuf built-in options (options defined in - // descriptor.proto), this is the short name. For example, `"map_entry"`. - // For custom options, it should be the fully-qualified name. For example, - // `"google.api.http"`. - string name = 1; - // The option's value packed in an Any message. If the value is a primitive, - // the corresponding wrapper type defined in google/protobuf/wrappers.proto - // should be used. If the value is an enum, it should be stored as an int32 - // value using the google.protobuf.Int32Value type. - Any value = 2; -} - -// The syntax in which a protocol buffer element is defined. -enum Syntax { - // Syntax `proto2`. - SYNTAX_PROTO2 = 0; - // Syntax `proto3`. - SYNTAX_PROTO3 = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto b/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto deleted file mode 100644 index 8a0441c8f64..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/util/json_format_proto3.proto +++ /dev/null @@ -1,183 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package proto3; - -option java_package = "com.google.protobuf.util"; -option java_outer_classname = "JsonFormatProto3"; - -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/unittest.proto"; - -enum EnumType { - FOO = 0; - BAR = 1; -} - -message MessageType { - int32 value = 1; -} - -message TestMessage { - bool bool_value = 1; - int32 int32_value = 2; - int64 int64_value = 3; - uint32 uint32_value = 4; - uint64 uint64_value = 5; - float float_value = 6; - double double_value = 7; - string string_value = 8; - bytes bytes_value = 9; - EnumType enum_value = 10; - MessageType message_value = 11; - - repeated bool repeated_bool_value = 21; - repeated int32 repeated_int32_value = 22; - repeated int64 repeated_int64_value = 23; - repeated uint32 repeated_uint32_value = 24; - repeated uint64 repeated_uint64_value = 25; - repeated float repeated_float_value = 26; - repeated double repeated_double_value = 27; - repeated string repeated_string_value = 28; - repeated bytes repeated_bytes_value = 29; - repeated EnumType repeated_enum_value = 30; - repeated MessageType repeated_message_value = 31; -} - -message TestOneof { - // In JSON format oneof fields behave mostly the same as optional - // fields except that: - // 1. Oneof fields have field presence information and will be - // printed if it's set no matter whether it's the default value. - // 2. Multiple oneof fields in the same oneof cannot appear at the - // same time in the input. - oneof oneof_value { - int32 oneof_int32_value = 1; - string oneof_string_value = 2; - bytes oneof_bytes_value = 3; - EnumType oneof_enum_value = 4; - MessageType oneof_message_value = 5; - } -} - -message TestMap { - map bool_map = 1; - map int32_map = 2; - map int64_map = 3; - map uint32_map = 4; - map uint64_map = 5; - map string_map = 6; -} - -message TestNestedMap { - map bool_map = 1; - map int32_map = 2; - map int64_map = 3; - map uint32_map = 4; - map uint64_map = 5; - map string_map = 6; - map map_map = 7; -} - -message TestWrapper { - google.protobuf.BoolValue bool_value = 1; - google.protobuf.Int32Value int32_value = 2; - google.protobuf.Int64Value int64_value = 3; - google.protobuf.UInt32Value uint32_value = 4; - google.protobuf.UInt64Value uint64_value = 5; - google.protobuf.FloatValue float_value = 6; - google.protobuf.DoubleValue double_value = 7; - google.protobuf.StringValue string_value = 8; - google.protobuf.BytesValue bytes_value = 9; - - repeated google.protobuf.BoolValue repeated_bool_value = 11; - repeated google.protobuf.Int32Value repeated_int32_value = 12; - repeated google.protobuf.Int64Value repeated_int64_value = 13; - repeated google.protobuf.UInt32Value repeated_uint32_value = 14; - repeated google.protobuf.UInt64Value repeated_uint64_value = 15; - repeated google.protobuf.FloatValue repeated_float_value = 16; - repeated google.protobuf.DoubleValue repeated_double_value = 17; - repeated google.protobuf.StringValue repeated_string_value = 18; - repeated google.protobuf.BytesValue repeated_bytes_value = 19; -} - -message TestTimestamp { - google.protobuf.Timestamp value = 1; - repeated google.protobuf.Timestamp repeated_value = 2; -} - -message TestDuration { - google.protobuf.Duration value = 1; - repeated google.protobuf.Duration repeated_value = 2; -} - -message TestFieldMask { - google.protobuf.FieldMask value = 1; -} - -message TestStruct { - google.protobuf.Struct value = 1; - repeated google.protobuf.Struct repeated_value = 2; -} - -message TestAny { - google.protobuf.Any value = 1; - repeated google.protobuf.Any repeated_value = 2; -} - -message TestValue { - google.protobuf.Value value = 1; - repeated google.protobuf.Value repeated_value = 2; -} - -message TestListValue { - google.protobuf.ListValue value = 1; - repeated google.protobuf.ListValue repeated_value = 2; -} - -message TestBoolValue { - bool bool_value = 1; - map bool_map = 2; -} - -message TestCustomJsonName { - int32 value = 1 [json_name = "@value"]; -} - -message TestExtensions { - .protobuf_unittest.TestAllExtensions extensions = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto b/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto deleted file mode 100644 index 01947639ac4..00000000000 --- a/handwritten/nodejs-datastore/protos/google/protobuf/wrappers.proto +++ /dev/null @@ -1,118 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Wrappers for primitive (non-message) types. These types are useful -// for embedding primitives in the `google.protobuf.Any` type and for places -// where we need to distinguish between the absence of a primitive -// typed field and its default value. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/wrappers"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "WrappersProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// Wrapper message for `double`. -// -// The JSON representation for `DoubleValue` is JSON number. -message DoubleValue { - // The double value. - double value = 1; -} - -// Wrapper message for `float`. -// -// The JSON representation for `FloatValue` is JSON number. -message FloatValue { - // The float value. - float value = 1; -} - -// Wrapper message for `int64`. -// -// The JSON representation for `Int64Value` is JSON string. -message Int64Value { - // The int64 value. - int64 value = 1; -} - -// Wrapper message for `uint64`. -// -// The JSON representation for `UInt64Value` is JSON string. -message UInt64Value { - // The uint64 value. - uint64 value = 1; -} - -// Wrapper message for `int32`. -// -// The JSON representation for `Int32Value` is JSON number. -message Int32Value { - // The int32 value. - int32 value = 1; -} - -// Wrapper message for `uint32`. -// -// The JSON representation for `UInt32Value` is JSON number. -message UInt32Value { - // The uint32 value. - uint32 value = 1; -} - -// Wrapper message for `bool`. -// -// The JSON representation for `BoolValue` is JSON `true` and `false`. -message BoolValue { - // The bool value. - bool value = 1; -} - -// Wrapper message for `string`. -// -// The JSON representation for `StringValue` is JSON string. -message StringValue { - // The string value. - string value = 1; -} - -// Wrapper message for `bytes`. -// -// The JSON representation for `BytesValue` is JSON string. -message BytesValue { - // The bytes value. - bytes value = 1; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/color.proto b/handwritten/nodejs-datastore/protos/google/type/color.proto deleted file mode 100644 index 2856ce91ee8..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/color.proto +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -import "google/protobuf/wrappers.proto"; - -option go_package = "google.golang.org/genproto/googleapis/type/color;color"; -option java_multiple_files = true; -option java_outer_classname = "ColorProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents a color in the RGBA color space. This representation is designed -// for simplicity of conversion to/from color representations in various -// languages over compactness; for example, the fields of this representation -// can be trivially provided to the constructor of "java.awt.Color" in Java; it -// can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" -// method in iOS; and, with just a little work, it can be easily formatted into -// a CSS "rgba()" string in JavaScript, as well. Here are some examples: -// -// Example (Java): -// -// import com.google.type.Color; -// -// // ... -// public static java.awt.Color fromProto(Color protocolor) { -// float alpha = protocolor.hasAlpha() -// ? protocolor.getAlpha().getValue() -// : 1.0; -// -// return new java.awt.Color( -// protocolor.getRed(), -// protocolor.getGreen(), -// protocolor.getBlue(), -// alpha); -// } -// -// public static Color toProto(java.awt.Color color) { -// float red = (float) color.getRed(); -// float green = (float) color.getGreen(); -// float blue = (float) color.getBlue(); -// float denominator = 255.0; -// Color.Builder resultBuilder = -// Color -// .newBuilder() -// .setRed(red / denominator) -// .setGreen(green / denominator) -// .setBlue(blue / denominator); -// int alpha = color.getAlpha(); -// if (alpha != 255) { -// result.setAlpha( -// FloatValue -// .newBuilder() -// .setValue(((float) alpha) / denominator) -// .build()); -// } -// return resultBuilder.build(); -// } -// // ... -// -// Example (iOS / Obj-C): -// -// // ... -// static UIColor* fromProto(Color* protocolor) { -// float red = [protocolor red]; -// float green = [protocolor green]; -// float blue = [protocolor blue]; -// FloatValue* alpha_wrapper = [protocolor alpha]; -// float alpha = 1.0; -// if (alpha_wrapper != nil) { -// alpha = [alpha_wrapper value]; -// } -// return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; -// } -// -// static Color* toProto(UIColor* color) { -// CGFloat red, green, blue, alpha; -// if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { -// return nil; -// } -// Color* result = [Color alloc] init]; -// [result setRed:red]; -// [result setGreen:green]; -// [result setBlue:blue]; -// if (alpha <= 0.9999) { -// [result setAlpha:floatWrapperWithValue(alpha)]; -// } -// [result autorelease]; -// return result; -// } -// // ... -// -// Example (JavaScript): -// -// // ... -// -// var protoToCssColor = function(rgb_color) { -// var redFrac = rgb_color.red || 0.0; -// var greenFrac = rgb_color.green || 0.0; -// var blueFrac = rgb_color.blue || 0.0; -// var red = Math.floor(redFrac * 255); -// var green = Math.floor(greenFrac * 255); -// var blue = Math.floor(blueFrac * 255); -// -// if (!('alpha' in rgb_color)) { -// return rgbToCssColor_(red, green, blue); -// } -// -// var alphaFrac = rgb_color.alpha.value || 0.0; -// var rgbParams = [red, green, blue].join(','); -// return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); -// }; -// -// var rgbToCssColor_ = function(red, green, blue) { -// var rgbNumber = new Number((red << 16) | (green << 8) | blue); -// var hexString = rgbNumber.toString(16); -// var missingZeros = 6 - hexString.length; -// var resultBuilder = ['#']; -// for (var i = 0; i < missingZeros; i++) { -// resultBuilder.push('0'); -// } -// resultBuilder.push(hexString); -// return resultBuilder.join(''); -// }; -// -// // ... -message Color { - // The amount of red in the color as a value in the interval [0, 1]. - float red = 1; - - // The amount of green in the color as a value in the interval [0, 1]. - float green = 2; - - // The amount of blue in the color as a value in the interval [0, 1]. - float blue = 3; - - // The fraction of this color that should be applied to the pixel. That is, - // the final pixel color is defined by the equation: - // - // pixel color = alpha * (this color) + (1.0 - alpha) * (background color) - // - // This means that a value of 1.0 corresponds to a solid color, whereas - // a value of 0.0 corresponds to a completely transparent color. This - // uses a wrapper message rather than a simple float scalar so that it is - // possible to distinguish between a default value and the value being unset. - // If omitted, this color object is to be rendered as a solid color - // (as if the alpha value had been explicitly given with a value of 1.0). - google.protobuf.FloatValue alpha = 4; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/date.proto b/handwritten/nodejs-datastore/protos/google/type/date.proto deleted file mode 100644 index d873ed462f8..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/date.proto +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/type/date;date"; -option java_multiple_files = true; -option java_outer_classname = "DateProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents a whole calendar date, e.g. date of birth. The time of day and -// time zone are either specified elsewhere or are not significant. The date -// is relative to the Proleptic Gregorian Calendar. The day may be 0 to -// represent a year and month where the day is not significant, e.g. credit card -// expiration date. The year may be 0 to represent a month and day independent -// of year, e.g. anniversary date. Related types are [google.type.TimeOfDay][google.type.TimeOfDay] -// and `google.protobuf.Timestamp`. -message Date { - // Year of date. Must be from 1 to 9999, or 0 if specifying a date without - // a year. - int32 year = 1; - - // Month of year. Must be from 1 to 12. - int32 month = 2; - - // Day of month. Must be from 1 to 31 and valid for the year and month, or 0 - // if specifying a year/month where the day is not significant. - int32 day = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto b/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto deleted file mode 100644 index 4eaa9e729f7..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/dayofweek.proto +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option go_package = "google.golang.org/genproto/googleapis/type/dayofweek;dayofweek"; -option java_multiple_files = true; -option java_outer_classname = "DayOfWeekProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents a day of week. -enum DayOfWeek { - // The unspecified day-of-week. - DAY_OF_WEEK_UNSPECIFIED = 0; - - // The day-of-week of Monday. - MONDAY = 1; - - // The day-of-week of Tuesday. - TUESDAY = 2; - - // The day-of-week of Wednesday. - WEDNESDAY = 3; - - // The day-of-week of Thursday. - THURSDAY = 4; - - // The day-of-week of Friday. - FRIDAY = 5; - - // The day-of-week of Saturday. - SATURDAY = 6; - - // The day-of-week of Sunday. - SUNDAY = 7; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/latlng.proto b/handwritten/nodejs-datastore/protos/google/type/latlng.proto deleted file mode 100644 index 4e8c65d227a..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/latlng.proto +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option go_package = "google.golang.org/genproto/googleapis/type/latlng;latlng"; -option java_multiple_files = true; -option java_outer_classname = "LatLngProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// An object representing a latitude/longitude pair. This is expressed as a pair -// of doubles representing degrees latitude and degrees longitude. Unless -// specified otherwise, this must conform to the -// WGS84 -// standard. Values must be within normalized ranges. -// -// Example of normalization code in Python: -// -// def NormalizeLongitude(longitude): -// """Wraps decimal degrees longitude to [-180.0, 180.0].""" -// q, r = divmod(longitude, 360.0) -// if r > 180.0 or (r == 180.0 and q <= -1.0): -// return r - 360.0 -// return r -// -// def NormalizeLatLng(latitude, longitude): -// """Wraps decimal degrees latitude and longitude to -// [-90.0, 90.0] and [-180.0, 180.0], respectively.""" -// r = latitude % 360.0 -// if r <= 90.0: -// return r, NormalizeLongitude(longitude) -// elif r >= 270.0: -// return r - 360, NormalizeLongitude(longitude) -// else: -// return 180 - r, NormalizeLongitude(longitude + 180.0) -// -// assert 180.0 == NormalizeLongitude(180.0) -// assert -180.0 == NormalizeLongitude(-180.0) -// assert -179.0 == NormalizeLongitude(181.0) -// assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0) -// assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0) -// assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) -// assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0) -// assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0) -// assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0) -// assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0) -// assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0) -// assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0) -// assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0) -message LatLng { - // The latitude in degrees. It must be in the range [-90.0, +90.0]. - double latitude = 1; - - // The longitude in degrees. It must be in the range [-180.0, +180.0]. - double longitude = 2; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/money.proto b/handwritten/nodejs-datastore/protos/google/type/money.proto deleted file mode 100644 index 154acc9f295..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/money.proto +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option go_package = "google.golang.org/genproto/googleapis/type/money;money"; -option java_multiple_files = true; -option java_outer_classname = "MoneyProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents an amount of money with its currency type. -message Money { - // The 3-letter currency code defined in ISO 4217. - string currency_code = 1; - - // The whole units of the amount. - // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. - int64 units = 2; - - // Number of nano (10^-9) units of the amount. - // The value must be between -999,999,999 and +999,999,999 inclusive. - // If `units` is positive, `nanos` must be positive or zero. - // If `units` is zero, `nanos` can be positive, zero, or negative. - // If `units` is negative, `nanos` must be negative or zero. - // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. - int32 nanos = 3; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/postal_address.proto b/handwritten/nodejs-datastore/protos/google/type/postal_address.proto deleted file mode 100644 index b08b61726ac..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/postal_address.proto +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option go_package = "google.golang.org/genproto/googleapis/type/postaladdress;postaladdress"; -option java_multiple_files = true; -option java_outer_classname = "PostalAddressProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents a postal address, e.g. for postal delivery or payments addresses. -// Given a postal address, a postal service can deliver items to a premise, P.O. -// Box or similar. -// It is not intended to model geographical locations (roads, towns, -// mountains). -// -// In typical usage an address would be created via user input or from importing -// existing data, depending on the type of process. -// -// Advice on address input / editing: -// - Use an i18n-ready address widget such as -// https://github.com/googlei18n/libaddressinput) -// - Users should not be presented with UI elements for input or editing of -// fields outside countries where that field is used. -// -// For more guidance on how to use this schema, please see: -// https://support.google.com/business/answer/6397478 -message PostalAddress { - // The schema revision of the `PostalAddress`. - // All new revisions **must** be backward compatible with old revisions. - int32 revision = 1; - - // Required. CLDR region code of the country/region of the address. This - // is never inferred and it is up to the user to ensure the value is - // correct. See http://cldr.unicode.org/ and - // http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html - // for details. Example: "CH" for Switzerland. - string region_code = 2; - - // Optional. BCP-47 language code of the contents of this address (if - // known). This is often the UI language of the input form or is expected - // to match one of the languages used in the address' country/region, or their - // transliterated equivalents. - // This can affect formatting in certain countries, but is not critical - // to the correctness of the data and will never affect any validation or - // other non-formatting related operations. - // - // If this value is not known, it should be omitted (rather than specifying a - // possibly incorrect default). - // - // Examples: "zh-Hant", "ja", "ja-Latn", "en". - string language_code = 3; - - // Optional. Postal code of the address. Not all countries use or require - // postal codes to be present, but where they are used, they may trigger - // additional validation with other parts of the address (e.g. state/zip - // validation in the U.S.A.). - string postal_code = 4; - - // Optional. Additional, country-specific, sorting code. This is not used - // in most regions. Where it is used, the value is either a string like - // "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number - // alone, representing the "sector code" (Jamaica), "delivery area indicator" - // (Malawi) or "post office indicator" (e.g. Côte d'Ivoire). - string sorting_code = 5; - - // Optional. Highest administrative subdivision which is used for postal - // addresses of a country or region. - // For example, this can be a state, a province, an oblast, or a prefecture. - // Specifically, for Spain this is the province and not the autonomous - // community (e.g. "Barcelona" and not "Catalonia"). - // Many countries don't use an administrative area in postal addresses. E.g. - // in Switzerland this should be left unpopulated. - string administrative_area = 6; - - // Optional. Generally refers to the city/town portion of the address. - // Examples: US city, IT comune, UK post town. - // In regions of the world where localities are not well defined or do not fit - // into this structure well, leave locality empty and use address_lines. - string locality = 7; - - // Optional. Sublocality of the address. - // For example, this can be neighborhoods, boroughs, districts. - string sublocality = 8; - - // Unstructured address lines describing the lower levels of an address. - // - // Because values in address_lines do not have type information and may - // sometimes contain multiple values in a single field (e.g. - // "Austin, TX"), it is important that the line order is clear. The order of - // address lines should be "envelope order" for the country/region of the - // address. In places where this can vary (e.g. Japan), address_language is - // used to make it explicit (e.g. "ja" for large-to-small ordering and - // "ja-Latn" or "en" for small-to-large). This way, the most specific line of - // an address can be selected based on the language. - // - // The minimum permitted structural representation of an address consists - // of a region_code with all remaining information placed in the - // address_lines. It would be possible to format such an address very - // approximately without geocoding, but no semantic reasoning could be - // made about any of the address components until it was at least - // partially resolved. - // - // Creating an address only containing a region_code and address_lines, and - // then geocoding is the recommended way to handle completely unstructured - // addresses (as opposed to guessing which parts of the address should be - // localities or administrative areas). - repeated string address_lines = 9; - - // Optional. The recipient at the address. - // This field may, under certain circumstances, contain multiline information. - // For example, it might contain "care of" information. - repeated string recipients = 10; - - // Optional. The name of the organization at the address. - string organization = 11; -} diff --git a/handwritten/nodejs-datastore/protos/google/type/timeofday.proto b/handwritten/nodejs-datastore/protos/google/type/timeofday.proto deleted file mode 100644 index b130256e223..00000000000 --- a/handwritten/nodejs-datastore/protos/google/type/timeofday.proto +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.type; - -option go_package = "google.golang.org/genproto/googleapis/type/timeofday;timeofday"; -option java_multiple_files = true; -option java_outer_classname = "TimeOfDayProto"; -option java_package = "com.google.type"; -option objc_class_prefix = "GTP"; - - -// Represents a time of day. The date and time zone are either not significant -// or are specified elsewhere. An API may chose to allow leap seconds. Related -// types are [google.type.Date][google.type.Date] and `google.protobuf.Timestamp`. -message TimeOfDay { - // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose - // to allow the value "24:00:00" for scenarios like business closing time. - int32 hours = 1; - - // Minutes of hour of day. Must be from 0 to 59. - int32 minutes = 2; - - // Seconds of minutes of the time. Must normally be from 0 to 59. An API may - // allow the value 60 if it allows leap-seconds. - int32 seconds = 3; - - // Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. - int32 nanos = 4; -} diff --git a/handwritten/nodejs-datastore/samples/.eslintrc.yml b/handwritten/nodejs-datastore/samples/.eslintrc.yml new file mode 100644 index 00000000000..282535f55f6 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/.eslintrc.yml @@ -0,0 +1,3 @@ +--- +rules: + no-console: off diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index f1cbd559349..e7ba732d846 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -1,50 +1,43 @@ Google Cloud Platform logo -# Google Cloud Datastore Node.js Samples +# Google Cloud Datastore: Node.js Samples -[![Build](https://storage.googleapis.com/cloud-docs-samples-badges/GoogleCloudPlatform/nodejs-docs-samples/nodejs-docs-samples-datastore.svg)]() +[![Open in Cloud Shell][shell_img]][shell_link] [Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects. ## Table of Contents -* [Setup](#setup) +* [Before you begin](#before-you-begin) * [Samples](#samples) * [Tasks](#tasks) * [Concepts](#concepts) * [Errors and Error Handling](#errors-and-error-handling) -* [Running the tests](#running-the-tests) -## Setup +## Before you begin -1. Read [Prerequisites][prereq] and [How to run a sample][run] first. -1. Install dependencies: - - With **npm**: - - npm install - - With **yarn**: - - yarn install - -[prereq]: ../README.md#prerequisites -[run]: ../README.md#how-to-run-a-sample +Before running the samples, make sure you've followed the steps in the +[Before you begin section](../README.md#before-you-begin) of the client +library's README. ## Samples ### Tasks -View the [documentation][tasks_0_docs] or the [source code][tasks_0_code]. +View the [source code][tasks_0_code]. + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) __Usage:__ `node tasks.js --help` ``` +tasks.js + Commands: - new Adds a task with a description . - done Marks the specified task as done. - list Lists all tasks ordered by creation time. - delete Deletes a task. + tasks.js new Adds a task with a description . + tasks.js done Marks the specified task as done. + tasks.js list Lists all tasks ordered by creation time. + tasks.js delete Deletes a task. Options: --version Show version number [boolean] @@ -64,27 +57,20 @@ For more information, see https://cloud.google.com/datastore/docs ### Concepts -View the [documentation][concepts_1_docs] or the [source code][concepts_1_code].[concepts_1_docs]: https://cloud.google.com/datastore/docs/concepts/entities +View the [source code][concepts_1_code]. + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md)[concepts_1_docs]: https://cloud.google.com/datastore/docs/concepts/entities [concepts_1_code]: concepts.js ### Errors and Error Handling -View the [documentation][error_2_docs] or the [source code][error_2_code]. +View the [source code][error_2_code]. + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) __Usage:__ `node error.js` [error_2_docs]: https://cloud.google.com/datastore/docs/concepts/errors [error_2_code]: error.js -## Running the tests - -1. Set the **GCLOUD_PROJECT** and **GOOGLE_APPLICATION_CREDENTIALS** environment variables. - -1. Run the tests: - - With **npm**: - - npm test - - With **yarn**: - - yarn test +[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png +[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 453457b6b77..94a5ab8b8e4 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -13,6 +13,8 @@ * limitations under the License. */ +'use strict'; + const sinon = require('sinon'); // By default, the client will authenticate using the service account file @@ -21,7 +23,7 @@ const sinon = require('sinon'); // https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication const Datastore = require('@google-cloud/datastore'); -function makeStub () { +function makeStub() { return sinon.stub().returns(Promise.resolve([])); } @@ -34,20 +36,20 @@ let datastore = { update: makeStub(), upsert: makeStub(), runQuery: sinon.stub().returns(Promise.resolve([[]])), - save: makeStub() + save: makeStub(), }; class TestHelper { - constructor (projectId) { + constructor(projectId) { const options = { - projectId: projectId + projectId: projectId, }; - this.datastore = Datastore(options); + this.datastore = new Datastore(options); } } class Entity extends TestHelper { - constructor (projectId) { + constructor(projectId) { super(projectId); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; @@ -58,7 +60,7 @@ class Entity extends TestHelper { this.keyWithMultiLevelParent = this.getKeyWithMultiLevelParent(); } - getIncompleteKey () { + getIncompleteKey() { // [START incomplete_key] const taskKey = datastore.key('Task'); // [END incomplete_key] @@ -66,31 +68,28 @@ class Entity extends TestHelper { return taskKey; } - getNamedKey () { + getNamedKey() { // [START named_key] - const taskKey = datastore.key([ - 'Task', - 'sampleTask' - ]); + const taskKey = datastore.key(['Task', 'sampleTask']); // [END named_key] return taskKey; } - getKeyWithParent () { + getKeyWithParent() { // [START key_with_parent] const taskKey = datastore.key([ 'TaskList', 'default', 'Task', - 'sampleTask' + 'sampleTask', ]); // [END key_with_parent] return taskKey; } - getKeyWithMultiLevelParent () { + getKeyWithMultiLevelParent() { // [START key_with_multilevel_parent] const taskKey = datastore.key([ 'User', @@ -98,59 +97,59 @@ class Entity extends TestHelper { 'TaskList', 'default', 'Task', - 'sampleTask' + 'sampleTask', ]); // [END key_with_multilevel_parent] return taskKey; } - getTask () { + getTask() { // [START basic_entity] const task = { category: 'Personal', done: false, priority: 4, - description: 'Learn Cloud Datastore' + description: 'Learn Cloud Datastore', }; // [END basic_entity] return task; } - testIncompleteKey (t) { + testIncompleteKey(t) { t.plan(0); return this.datastore.save({ key: this.incompleteKey, - data: {} + data: {}, }); } - testNamedKey (t) { + testNamedKey(t) { t.plan(0); return this.datastore.save({ key: this.namedKey, - data: {} + data: {}, }); } - testKeyWithParent (t) { + testKeyWithParent(t) { t.plan(0); return this.datastore.save({ key: this.keyWithParent, - data: {} + data: {}, }); } - testKeyWithMultiLevelParent (t) { + testKeyWithMultiLevelParent(t) { t.plan(0); return this.datastore.save({ key: this.keyWithMultiLevelParent, - data: {} + data: {}, }); } - testEntityWithParent (t) { + testEntityWithParent(t) { t.plan(0); const taskKey = this.keyWithParent; @@ -161,81 +160,75 @@ class Entity extends TestHelper { category: 'Personal', done: false, priority: 4, - description: 'Learn Cloud Datastore' - } + description: 'Learn Cloud Datastore', + }, }; // [END entity_with_parent] return this.datastore.save(task); } - testProperties (t) { + testProperties() { // [START properties] const task = [ { name: 'category', - value: 'Personal' + value: 'Personal', }, { name: 'created', - value: new Date() + value: new Date(), }, { name: 'done', - value: false + value: false, }, { name: 'priority', - value: 4 + value: 4, }, { name: 'percent_complete', - value: 10.0 + value: 10.0, }, { name: 'description', value: 'Learn Cloud Datastore', - excludeFromIndexes: true - } + excludeFromIndexes: true, + }, ]; // [END properties] return this.datastore.save({ key: this.incompleteKey, - data: task + data: task, }); } - testArrayValue (t) { + testArrayValue(t) { t.plan(0); // [START array_value] const task = { - tags: [ - 'fun', - 'programming' - ], - collaborators: [ - 'alice', - 'bob' - ] + tags: ['fun', 'programming'], + collaborators: ['alice', 'bob'], }; // [END array_value] return this.datastore.save({ key: this.incompleteKey, - data: task + data: task, }); } - testBasicEntity (t) { + testBasicEntity(t) { t.plan(0); return this.datastore.save({ key: this.getIncompleteKey(), - data: this.getTask() + data: this.getTask(), }); } - testUpsert (t) { + testUpsert(t) { t.plan(0); const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -243,22 +236,21 @@ class Entity extends TestHelper { // [START upsert] const entity = { key: taskKey, - data: task + data: task, }; - datastore.upsert(entity) - .then(() => { - // Task inserted successfully. - }); + datastore.upsert(entity).then(() => { + // Task inserted successfully. + }); // [END upsert] return this.datastore.upsert({ key: this.datastore.key(['Task', 1]), - data: task + data: task, }); } - testInsert (t) { + testInsert(t) { t.plan(0); const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -266,50 +258,50 @@ class Entity extends TestHelper { // [START insert] const entity = { key: taskKey, - data: task + data: task, }; - datastore.insert(entity) - .then(() => { - // Task inserted successfully. - }); + datastore.insert(entity).then(() => { + // Task inserted successfully. + }); // [END insert] return this.datastore.save({ method: 'insert', key: taskKey, - data: task + data: task, }); } - testLookup (t) { + testLookup(t) { t.plan(0); const taskKey = this.getIncompleteKey(); // [START lookup] - datastore.get(taskKey) - .then((results) => { - // Task found. - const entity = results[0]; - - // entity = { - // category: 'Personal', - // done: false, - // priority: 4, - // description: 'Learn Cloud Datastore' - // }; - console.log(entity); - }); + datastore.get(taskKey).then(results => { + // Task found. + const entity = results[0]; + + // entity = { + // category: 'Personal', + // done: false, + // priority: 4, + // description: 'Learn Cloud Datastore' + // }; + console.log(entity); + }); // [END lookup] - return this.datastore.save({ - method: 'insert', - key: taskKey, - data: {} - }).then(() => this.datastore.get(taskKey)); + return this.datastore + .save({ + method: 'insert', + key: taskKey, + data: {}, + }) + .then(() => this.datastore.get(taskKey)); } - testUpdate (t) { + testUpdate(t) { t.plan(0); const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -317,41 +309,43 @@ class Entity extends TestHelper { // [START update] const entity = { key: taskKey, - data: task + data: task, }; - datastore.update(entity) - .then(() => { - // Task updated successfully. - }); + datastore.update(entity).then(() => { + // Task updated successfully. + }); // [END update] - return this.datastore.save({ - method: 'insert', - key: taskKey, - data: {} - }).then(() => this.datastore.update({ key: taskKey, data: task })); + return this.datastore + .save({ + method: 'insert', + key: taskKey, + data: {}, + }) + .then(() => this.datastore.update({key: taskKey, data: task})); } - testDelete (t) { + testDelete(t) { t.plan(0); const taskKey = this.getIncompleteKey(); // [START delete] - datastore.delete(taskKey) - .then(() => { - // Task deleted successfully. - }); + datastore.delete(taskKey).then(() => { + // Task deleted successfully. + }); // [END delete] - return this.datastore.save({ - method: 'insert', - key: taskKey, - data: {} - }).then(() => this.datastore.delete(taskKey)); + return this.datastore + .save({ + method: 'insert', + key: taskKey, + data: {}, + }) + .then(() => this.datastore.delete(taskKey)); } - testBatchUpsert (t) { + testBatchUpsert() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -359,47 +353,46 @@ class Entity extends TestHelper { category: 'Personal', done: false, priority: 4, - description: 'Learn Cloud Datastore' + description: 'Learn Cloud Datastore', }; const task2 = { category: 'Work', done: false, priority: 8, - description: 'Integrate Cloud Datastore' + description: 'Integrate Cloud Datastore', }; // [START batch_upsert] const entities = [ { key: taskKey1, - data: task1 + data: task1, }, { key: taskKey2, - data: task2 - } + data: task2, + }, ]; - datastore.upsert(entities) - .then(() => { - // Tasks inserted successfully. - }); + datastore.upsert(entities).then(() => { + // Tasks inserted successfully. + }); // [END batch_upsert] return this.datastore.upsert([ { key: taskKey1, - data: task1 + data: task1, }, { key: taskKey2, - data: task2 - } + data: task2, + }, ]); } - testBatchLookup (t) { + testBatchLookup(t) { t.plan(0); const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -407,19 +400,18 @@ class Entity extends TestHelper { // [START batch_lookup] const keys = [taskKey1, taskKey2]; - datastore.get(keys) - .then((results) => { - // Tasks retrieved successfully. - const tasks = results[0]; + datastore.get(keys).then(results => { + // Tasks retrieved successfully. + const tasks = results[0]; - console.log(tasks); - }); + console.log(tasks); + }); // [END batch_lookup] return this.datastore.get([taskKey1, taskKey2]); } - testBatchDelete (t) { + testBatchDelete(t) { t.plan(0); const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -427,10 +419,9 @@ class Entity extends TestHelper { // [START batch_delete] const keys = [taskKey1, taskKey2]; - datastore.delete(keys) - .then(() => { - // Tasks deleted successfully. - }); + datastore.delete(keys).then(() => { + // Tasks deleted successfully. + }); // [END batch_delete] return this.datastore.delete([taskKey1, taskKey2]); @@ -438,19 +429,20 @@ class Entity extends TestHelper { } class Index extends TestHelper { - testUnindexedPropertyQuery (t) { + testUnindexedPropertyQuery(t) { t.plan(0); const datastore = this.datastore; // [START unindexed_property_query] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('description', '=', 'A task description.'); // [END unindexed_property_query] return this.datastore.runQuery(query); } - testExplodingProperties (t) { + testExplodingProperties(t) { const original = datastore.key; datastore.key = this.datastore.key; @@ -459,186 +451,173 @@ class Index extends TestHelper { method: 'insert', key: datastore.key('Task'), data: { - tags: [ - 'fun', - 'programming', - 'learn' - ], - collaborators: [ - 'alice', - 'bob', - 'charlie' - ], - created: new Date() - } + tags: ['fun', 'programming', 'learn'], + collaborators: ['alice', 'bob', 'charlie'], + created: new Date(), + }, }; // [END exploding_properties] datastore.key = original; - return this.datastore.save(task) - .then(() => { - t.truthy(task.key); - t.truthy(task.key.id); - }); + return this.datastore.save(task).then(() => { + t.truthy(task.key); + t.truthy(task.key.id); + }); } } class Metadata extends TestHelper { - testNamespaceRunQuery (t) { + testNamespaceRunQuery(t) { const datastore = this.datastore; const startNamespace = 'Animals'; const endNamespace = 'Zoos'; - return datastore.save({ - key: datastore.key({ - namespace: 'Animals', - path: ['Ant', 1] - }), - data: {} - }) + return datastore + .save({ + key: datastore.key({ + namespace: 'Animals', + path: ['Ant', 1], + }), + data: {}, + }) .then(() => { // [START namespace_run_query] - function runNamespaceQuery (startNamespace, endNamespace) { + function runNamespaceQuery(startNamespace, endNamespace) { const startKey = datastore.key(['__namespace__', startNamespace]); const endKey = datastore.key(['__namespace__', endNamespace]); - const query = datastore.createQuery('__namespace__') + const query = datastore + .createQuery('__namespace__') .select('__key__') .filter('__key__', '>=', startKey) .filter('__key__', '<', endKey); - return datastore.runQuery(query) - .then((results) => { - const entities = results[0]; - const namespaces = entities.map((entity) => entity[datastore.KEY].name); + return datastore.runQuery(query).then(results => { + const entities = results[0]; + const namespaces = entities.map( + entity => entity[datastore.KEY].name + ); - console.log('Namespaces:'); - namespaces.forEach((namespace) => console.log(namespace)); + console.log('Namespaces:'); + namespaces.forEach(namespace => console.log(namespace)); - return namespaces; - }); + return namespaces; + }); } // [END namespace_run_query] return runNamespaceQuery(startNamespace, endNamespace); }) - .then((namespaces) => { + .then(namespaces => { t.true(namespaces.includes('Animals')); }); } - testKindRunQuery (t) { + testKindRunQuery(t) { const datastore = this.datastore; // [START kind_run_query] - function runKindQuery () { - const query = datastore.createQuery('__kind__') - .select('__key__'); + function runKindQuery() { + const query = datastore.createQuery('__kind__').select('__key__'); - return datastore.runQuery(query) - .then((results) => { - const entities = results[0]; - const kinds = entities.map((entity) => entity[datastore.KEY].name); + return datastore.runQuery(query).then(results => { + const entities = results[0]; + const kinds = entities.map(entity => entity[datastore.KEY].name); - console.log('Kinds:'); - kinds.forEach((kind) => console.log(kind)); + console.log('Kinds:'); + kinds.forEach(kind => console.log(kind)); - return kinds; - }); + return kinds; + }); } // [END kind_run_query] - return runKindQuery() - .then((kinds) => { - t.true(kinds.includes('Account')); - }); + return runKindQuery().then(kinds => { + t.true(kinds.includes('Account')); + }); } - testPropertyRunQuery (t) { + testPropertyRunQuery(t) { const datastore = this.datastore; // [START property_run_query] - function runPropertyQuery () { - const query = datastore.createQuery('__property__') - .select('__key__'); - - return datastore.runQuery(query) - .then((results) => { - const entities = results[0]; - const propertiesByKind = {}; - - entities.forEach((entity) => { - const key = entity[datastore.KEY]; - const kind = key.path[1]; - const property = key.path[3]; - - propertiesByKind[kind] = propertiesByKind[kind] || []; - propertiesByKind[kind].push(property); - }); + function runPropertyQuery() { + const query = datastore.createQuery('__property__').select('__key__'); - console.log('Properties by Kind:'); - for (let key in propertiesByKind) { - console.log(key, propertiesByKind[key]); - } + return datastore.runQuery(query).then(results => { + const entities = results[0]; + const propertiesByKind = {}; + + entities.forEach(entity => { + const key = entity[datastore.KEY]; + const kind = key.path[1]; + const property = key.path[3]; - return propertiesByKind; + propertiesByKind[kind] = propertiesByKind[kind] || []; + propertiesByKind[kind].push(property); }); + + console.log('Properties by Kind:'); + for (let key in propertiesByKind) { + console.log(key, propertiesByKind[key]); + } + + return propertiesByKind; + }); } // [END property_run_query] - return runPropertyQuery() - .then((propertiesByKind) => { - t.deepEqual(propertiesByKind.Account, ['balance']); - }); + return runPropertyQuery().then(propertiesByKind => { + t.deepEqual(propertiesByKind.Account, ['balance']); + }); } - testPropertyByKindRunQuery (t) { + testPropertyByKindRunQuery(t) { const datastore = this.datastore; // [START property_by_kind_run_query] - function runPropertyByKindQuery () { + function runPropertyByKindQuery() { const ancestorKey = datastore.key(['__kind__', 'Account']); - const query = datastore.createQuery('__property__') + const query = datastore + .createQuery('__property__') .hasAncestor(ancestorKey); - return datastore.runQuery(query) - .then((results) => { - const entities = results[0]; + return datastore.runQuery(query).then(results => { + const entities = results[0]; - const representationsByProperty = {}; + const representationsByProperty = {}; - entities.forEach((entity) => { - const key = entity[datastore.KEY]; - const propertyName = key.name; - const propertyType = entity.property_representation; + entities.forEach(entity => { + const key = entity[datastore.KEY]; + const propertyName = key.name; + const propertyType = entity.property_representation; - representationsByProperty[propertyName] = propertyType; - }); + representationsByProperty[propertyName] = propertyType; + }); - console.log('Task property representations:'); - for (let key in representationsByProperty) { - console.log(key, representationsByProperty[key]); - } + console.log('Task property representations:'); + for (let key in representationsByProperty) { + console.log(key, representationsByProperty[key]); + } - return representationsByProperty; - }); + return representationsByProperty; + }); } // [END property_by_kind_run_query] - return runPropertyByKindQuery() - .then((propertiesByKind) => { - t.deepEqual(propertiesByKind, { - balance: ['INT64'] - }); + return runPropertyByKindQuery().then(propertiesByKind => { + t.deepEqual(propertiesByKind, { + balance: ['INT64'], }); + }); } } class Query extends TestHelper { - constructor (projectId) { + constructor(projectId) { super(projectId); this.basicQuery = this.getBasicQuery(); @@ -646,81 +625,81 @@ class Query extends TestHelper { this.ancestorQuery = this.getAncestorQuery(); } - getBasicQuery () { + getBasicQuery() { const datastore = this.datastore; // [START basic_query] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('done', '=', false) .filter('priority', '>=', 4) .order('priority', { - descending: true + descending: true, }); // [END basic_query] return query; } - getProjectionQuery () { + getProjectionQuery() { const datastore = this.datastore; // [START projection_query] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .select(['priority', 'percent_complete']); // [END projection_query] return query; } - getAncestorQuery () { + getAncestorQuery() { const datastore = this.datastore; // [START ancestor_query] const ancestorKey = datastore.key(['TaskList', 'default']); - const query = datastore.createQuery('Task') - .hasAncestor(ancestorKey); + const query = datastore.createQuery('Task').hasAncestor(ancestorKey); // [END ancestor_query] return query; } - testRunQuery (t) { + testRunQuery(t) { t.plan(0); const query = this.basicQuery; // [START run_query] - datastore.runQuery(query) - .then((results) => { - // Task entities found. - const tasks = results[0]; + datastore.runQuery(query).then(results => { + // Task entities found. + const tasks = results[0]; - console.log('Tasks:'); - tasks.forEach((task) => console.log(task)); - }); + console.log('Tasks:'); + tasks.forEach(task => console.log(task)); + }); // [END run_query] return this.datastore.runQuery(query); } - testPropertyFilter (t) { + testPropertyFilter(t) { t.plan(0); const datastore = this.datastore; // [START property_filter] - const query = datastore.createQuery('Task') - .filter('done', '=', false); + const query = datastore.createQuery('Task').filter('done', '=', false); // [END property_filter] return this.datastore.runQuery(query); } - testCompositeFilter (t) { + testCompositeFilter(t) { t.plan(0); const datastore = this.datastore; // [START composite_filter] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('done', '=', false) .filter('priority', '=', 4); // [END composite_filter] @@ -728,52 +707,52 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testKeyFilter (t) { + testKeyFilter(t) { t.plan(0); const datastore = this.datastore; // [START key_filter] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('__key__', '>', datastore.key(['Task', 'someTask'])); // [END key_filter] return this.datastore.runQuery(query); } - testAscendingSort (t) { + testAscendingSort(t) { t.plan(0); const datastore = this.datastore; // [START ascending_sort] - const query = datastore.createQuery('Task') - .order('created'); + const query = datastore.createQuery('Task').order('created'); // [END ascending_sort] return this.datastore.runQuery(query); } - testDescendingSort (t) { + testDescendingSort(t) { t.plan(0); const datastore = this.datastore; // [START descending_sort] - const query = datastore.createQuery('Task') - .order('created', { - descending: true - }); + const query = datastore.createQuery('Task').order('created', { + descending: true, + }); // [END descending_sort] return this.datastore.runQuery(query); } - testMultiSort (t) { + testMultiSort(t) { t.plan(0); const datastore = this.datastore; // [START multi_sort] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .order('priority', { - descending: true + descending: true, }) .order('created'); // [END multi_sort] @@ -781,13 +760,14 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testKindlessQuery (t) { + testKindlessQuery(t) { t.plan(0); const datastore = this.datastore; const lastSeenKey = this.datastore.key(['Task', Date.now()]); // [START kindless_query] - const query = datastore.createQuery() + const query = datastore + .createQuery() .filter('__key__', '>', lastSeenKey) .limit(1); // [END kindless_query] @@ -795,41 +775,41 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testRunQueryProjection () { + testRunQueryProjection() { const datastore = this.datastore; const query = this.projectionQuery; // [START run_query_projection] - function runProjectionQuery () { + function runProjectionQuery() { const priorities = []; const percentCompletes = []; - return datastore.runQuery(query) - .then((results) => { - const tasks = results[0]; - - tasks.forEach((task) => { - priorities.push(task.priority); - percentCompletes.push(task.percent_complete); - }); + return datastore.runQuery(query).then(results => { + const tasks = results[0]; - return { - priorities: priorities, - percentCompletes: percentCompletes - }; + tasks.forEach(task => { + priorities.push(task.priority); + percentCompletes.push(task.percent_complete); }); + + return { + priorities: priorities, + percentCompletes: percentCompletes, + }; + }); } // [END run_query_projection] return runProjectionQuery(); } - testKeysOnlyQuery (t) { + testKeysOnlyQuery(t) { t.plan(0); const datastore = this.datastore; // [START keys_only_query] - const query = datastore.createQuery() + const query = datastore + .createQuery() .select('__key__') .limit(1); // [END keys_only_query] @@ -837,12 +817,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testDistinctQuery (t) { + testDistinctQuery(t) { t.plan(0); const datastore = this.datastore; // [START distinct_query] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .groupBy(['category', 'priority']) .order('category') .order('priority'); @@ -851,12 +832,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testDistinctOnQuery (t) { + testDistinctOnQuery(t) { t.plan(0); const datastore = this.datastore; // [START distinct_on_query] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .groupBy('category') .order('category') .order('priority'); @@ -865,12 +847,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testArrayValueInequalityRange (t) { + testArrayValueInequalityRange(t) { t.plan(0); const datastore = this.datastore; // [START array_value_inequality_range] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('tag', '>', 'learn') .filter('tag', '<', 'math'); // [END array_value_inequality_range] @@ -878,12 +861,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testArrayValueEquality (t) { + testArrayValueEquality(t) { t.plan(0); const datastore = this.datastore; // [START array_value_equality] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('tag', '=', 'fun') .filter('tag', '=', 'programming'); // [END array_value_equality] @@ -891,12 +875,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalityRange (t) { + testInequalityRange(t) { t.plan(0); const datastore = this.datastore; // [START inequality_range] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('created', '>', new Date('1990-01-01T00:00:00z')) .filter('created', '<', new Date('2000-12-31T23:59:59z')); // [END inequality_range] @@ -904,11 +889,12 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalityInvalid () { + testInequalityInvalid() { const datastore = this.datastore; // [START inequality_invalid] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('priority', '>', 3) .filter('created', '>', new Date('1990-01-01T00:00:00z')); // [END inequality_invalid] @@ -916,12 +902,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testEqualAndInequalityRange (t) { + testEqualAndInequalityRange(t) { t.plan(0); const datastore = this.datastore; // [START equal_and_inequality_range] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('priority', '=', 4) .filter('done', '=', false) .filter('created', '>', new Date('1990-01-01T00:00:00z')) @@ -931,12 +918,13 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalitySort (t) { + testInequalitySort(t) { t.plan(0); const datastore = this.datastore; // [START inequality_sort] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('priority', '>', 3) .order('priority') .order('created'); @@ -945,11 +933,12 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalitySortInvalidNotSame () { + testInequalitySortInvalidNotSame() { const datastore = this.datastore; // [START inequality_sort_invalid_not_same] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('priority', '>', 3) .order('created'); // [END inequality_sort_invalid_not_same] @@ -957,11 +946,12 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalitySortInvalidNotFirst (t) { + testInequalitySortInvalidNotFirst() { const datastore = this.datastore; // [START inequality_sort_invalid_not_first] - const query = datastore.createQuery('Task') + const query = datastore + .createQuery('Task') .filter('priority', '>', 3) .order('created') .order('priority'); @@ -970,19 +960,18 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testLimit (t) { + testLimit(t) { t.plan(0); const datastore = this.datastore; // [START limit] - const query = datastore.createQuery('Task') - .limit(5); + const query = datastore.createQuery('Task').limit(5); // [END limit] return this.datastore.runQuery(query); } - testCursorPaging (t) { + testCursorPaging(t) { const datastore = this.datastore; const pageSize = 1; @@ -990,65 +979,61 @@ class Query extends TestHelper { // By default, google-cloud-node will automatically paginate through all of // the results that match a query. However, this sample implements manual // pagination using limits and cursor tokens. - function runPageQuery (pageCursor) { - let query = datastore.createQuery('Task') - .limit(pageSize); + function runPageQuery(pageCursor) { + let query = datastore.createQuery('Task').limit(pageSize); if (pageCursor) { query = query.start(pageCursor); } - return datastore.runQuery(query) - .then((results) => { - const entities = results[0]; - const info = results[1]; - - if (info.moreResults !== Datastore.NO_MORE_RESULTS) { - // If there are more results to retrieve, the end cursor is - // automatically set on `info`. To get this value directly, access - // the `endCursor` property. - return runPageQuery(info.endCursor) - .then((results) => { - // Concatenate entities - results[0] = entities.concat(results[0]); - return results; - }); - } - - return [entities, info]; - }); - } - // [END cursor_paging] - - return runPageQuery() - .then((results) => { + return datastore.runQuery(query).then(results => { const entities = results[0]; - t.true(Array.isArray(entities)); const info = results[1]; - if (!info || !info.endCursor) { - throw new Error('An `info` with an `endCursor` is not present.'); + + if (info.moreResults !== Datastore.NO_MORE_RESULTS) { + // If there are more results to retrieve, the end cursor is + // automatically set on `info`. To get this value directly, access + // the `endCursor` property. + return runPageQuery(info.endCursor).then(results => { + // Concatenate entities + results[0] = entities.concat(results[0]); + return results; + }); } + + return [entities, info]; }); + } + // [END cursor_paging] + + return runPageQuery().then(results => { + const entities = results[0]; + t.true(Array.isArray(entities)); + const info = results[1]; + if (!info || !info.endCursor) { + throw new Error('An `info` with an `endCursor` is not present.'); + } + }); } - testEventualConsistentQuery (t) { + testEventualConsistentQuery(t) { t.plan(0); const datastoreMock = datastore; datastore = this.datastore; // [START eventual_consistent_query] const ancestorKey = datastore.key(['TaskList', 'default']); - const query = datastore.createQuery('Task') - .hasAncestor(ancestorKey); + const query = datastore.createQuery('Task').hasAncestor(ancestorKey); - query.run({ consistency: 'eventual' }); + query.run({consistency: 'eventual'}); // [END eventual_consistent_query] - return query.run({ consistency: 'eventual' }) - .then((results) => { + return query + .run({consistency: 'eventual'}) + .then(results => { datastore = datastoreMock; const entities = results[0]; return entities; }) - .catch((err) => { + .catch(err => { datastore = datastoreMock; return Promise.reject(err); }); @@ -1056,14 +1041,14 @@ class Query extends TestHelper { } // [START transactional_update] -function transferFunds (fromKey, toKey, amount) { +function transferFunds(fromKey, toKey, amount) { const transaction = datastore.transaction(); - return transaction.run() + return transaction + .run() .then(() => Promise.all([transaction.get(fromKey), transaction.get(toKey)])) - .then((results) => { - const accounts = results - .map((result) => result[0]); + .then(results => { + const accounts = results.map(result => result[0]); accounts[0].balance -= amount; accounts[1].balance += amount; @@ -1071,12 +1056,12 @@ function transferFunds (fromKey, toKey, amount) { transaction.save([ { key: fromKey, - data: accounts[0] + data: accounts[0], }, { key: toKey, - data: accounts[1] - } + data: accounts[1], + }, ]); return transaction.commit(); @@ -1086,7 +1071,7 @@ function transferFunds (fromKey, toKey, amount) { // [END transactional_update] class Transaction extends TestHelper { - constructor (projectId) { + constructor(projectId) { super(projectId); this.fromKey = this.datastore.key(['Bank', 1, 'Account', 1]); this.toKey = this.datastore.key(['Bank', 1, 'Account', 2]); @@ -1095,20 +1080,20 @@ class Transaction extends TestHelper { this.amountToTransfer = 10; } - restoreBankAccountBalances (config) { - const entities = config.keys.map((key) => { + restoreBankAccountBalances(config) { + const entities = config.keys.map(key => { return { key: key, data: { - balance: config.balance - } + balance: config.balance, + }, }; }); return this.datastore.save(entities); } - testTransactionalUpdate (t) { + testTransactionalUpdate(t) { const fromKey = this.fromKey; const toKey = this.toKey; const originalBalance = this.originalBalance; @@ -1120,25 +1105,27 @@ class Transaction extends TestHelper { return this.restoreBankAccountBalances({ keys: [fromKey, toKey], - balance: originalBalance + balance: originalBalance, }) .then(() => transferFunds(fromKey, toKey, amountToTransfer)) - .then(() => Promise.all([this.datastore.get(fromKey), this.datastore.get(toKey)])) - .then((results) => { - const accounts = results.map((result) => result[0]); + .then(() => + Promise.all([this.datastore.get(fromKey), this.datastore.get(toKey)]) + ) + .then(results => { + const accounts = results.map(result => result[0]); // Restore `datastore` to the mock API. datastore = datastoreMock; t.is(accounts[0].balance, originalBalance - amountToTransfer); t.is(accounts[1].balance, originalBalance + amountToTransfer); }) - .catch((err) => { + .catch(err => { // Restore `datastore` to the mock API. datastore = datastoreMock; return Promise.reject(err); }); } - testTransactionalRetry (t) { + testTransactionalRetry(t) { t.plan(0); // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; @@ -1149,30 +1136,29 @@ class Transaction extends TestHelper { return this.restoreBankAccountBalances({ keys: [fromKey, toKey], - balance: this.originalBalance + balance: this.originalBalance, }) .then(() => { // [START transactional_retry] - function transferFundsWithRetry () { + function transferFundsWithRetry() { const maxTries = 5; let currentAttempt = 1; let delay = 100; - function tryRequest () { - return transferFunds(fromKey, toKey, 10) - .catch((err) => { - if (currentAttempt <= maxTries) { - // Use exponential backoff - return new Promise((resolve, reject) => { - setTimeout(() => { - currentAttempt++; - delay *= 2; - tryRequest().then(resolve, reject); - }, delay); - }); - } - return Promise.reject(err); - }); + function tryRequest() { + return transferFunds(fromKey, toKey, 10).catch(err => { + if (currentAttempt <= maxTries) { + // Use exponential backoff + return new Promise((resolve, reject) => { + setTimeout(() => { + currentAttempt++; + delay *= 2; + tryRequest().then(resolve, reject); + }, delay); + }); + } + return Promise.reject(err); + }); } return tryRequest(1, 5); @@ -1190,7 +1176,7 @@ class Transaction extends TestHelper { }); } - testTransactionalGetOrCreate (t) { + testTransactionalGetOrCreate(t) { const taskKey = this.datastore.key(['Task', Date.now()]); // Overwrite so the real Datastore instance is used in `transferFunds`. @@ -1198,17 +1184,18 @@ class Transaction extends TestHelper { datastore = this.datastore; // [START transactional_get_or_create] - function getOrCreate (taskKey, taskData) { + function getOrCreate(taskKey, taskData) { const taskEntity = { key: taskKey, - data: taskData + data: taskData, }; const transaction = datastore.transaction(); - return transaction.run() + return transaction + .run() .then(() => transaction.get(taskKey)) - .then((results) => { + .then(results => { const task = results[0]; if (task) { // The task entity already exists. @@ -1225,43 +1212,43 @@ class Transaction extends TestHelper { // [END transactional_get_or_create] return getOrCreate(taskKey, {}) - .then((task) => { + .then(task => { t.truthy(task, 'Should have a task.'); return getOrCreate(taskKey, {}); }) - .then((task) => { + .then(task => { t.truthy(task, 'Should have a task.'); // Restore `datastore` to the mock API. datastore = datastoreMock; }) - .catch((err) => { + .catch(err => { // Restore `datastore` to the mock API. datastore = datastoreMock; return Promise.reject(err); }); } - testSingleEntityGroupReadOnly (t) { + testSingleEntityGroupReadOnly(t) { // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; datastore = this.datastore; // [START transactional_single_entity_group_read_only] - function getTaskListEntities () { + function getTaskListEntities() { let taskList, taskListEntities; const transaction = datastore.transaction(); const taskListKey = datastore.key(['TaskList', 'default']); - return transaction.run() + return transaction + .run() .then(() => datastore.get(taskListKey)) - .then((results) => { + .then(results => { taskList = results[0]; - const query = datastore.createQuery('Task') - .hasAncestor(taskListKey); + const query = datastore.createQuery('Task').hasAncestor(taskListKey); return datastore.runQuery(query); }) - .then((results) => { + .then(results => { taskListEntities = results[0]; return transaction.commit(); }) @@ -1270,17 +1257,19 @@ class Transaction extends TestHelper { } // [END transactional_single_entity_group_read_only] - return getTaskListEntities() - .then((results) => { + return getTaskListEntities().then( + results => { // Restore `datastore` to the mock API. datastore = datastoreMock; t.is(results.length, 2); t.true(Array.isArray(results[1])); - }, (err) => { + }, + err => { // Restore `datastore` to the mock API. datastore = datastoreMock; return Promise.reject(err); - }); + } + ); } } @@ -1289,5 +1278,5 @@ module.exports = { Index: Index, Metadata: Metadata, Query: Query, - Transaction: Transaction + Transaction: Transaction, }; diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index f0d1caab1ba..bd20ea214d8 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -18,29 +18,31 @@ const Datastore = require('@google-cloud/datastore'); // [START error] -function runQuery () { - // Instantiates a client - const datastore = Datastore(); +function runQuery() { + // Creates a client + const datastore = new Datastore({}); const query = datastore.createQuery(['Company']).start('badrequest'); - return datastore.runQuery(query) - .then((results) => { + return datastore + .runQuery(query) + .then(results => { const entities = results[0]; console.log('Entities:'); - entities.forEach((entity) => console.log(entity)); + entities.forEach(entity => console.log(entity)); return entities; }) - .catch((err) => { + .catch(err => { console.log(err.errors); // [...] - console.log(err.code); // 400 + console.log(err.code); // 3 (a gRPC error code) console.log(err.message); // "Bad Request" console.log(err.response); // {...} // Process error // For example, treat permission error like no entities were found - if (err.code === 403) { + // eslint-disable-next-line no-constant-condition + if (/* some condition */ false) { return []; } diff --git a/handwritten/nodejs-datastore/samples/index.yaml b/handwritten/nodejs-datastore/samples/index.yaml new file mode 100644 index 00000000000..3f851a0065c --- /dev/null +++ b/handwritten/nodejs-datastore/samples/index.yaml @@ -0,0 +1,34 @@ +indexes: + +- kind: Task + ancestor: no + properties: + - name: done + - name: priority + direction: desc + +- kind: Task + properties: + - name: priority + direction: desc + - name: created + +- kind: Task + properties: + - name: priority + - name: created + +- kind: Task + properties: + - name: done + - name: created + +- kind: Task + properties: + - name: category + - name: priority + +- kind: Task + properties: + - name: percent_complete + - name: priority diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ae79053edd1..e31c4d64dd1 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -4,55 +4,24 @@ "private": true, "license": "Apache-2.0", "author": "Google Inc.", - "repository": { - "type": "git", - "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" - }, + "repository": "googleapis/nodejs-datastore", "engines": { "node": ">=4" }, "scripts": { - "lint": "samples lint", - "pretest": "npm run lint", - "test": "samples test run --cmd ava -- -T 1m --verbose system-test/*.test.js" + "test": "repo-tools test run --cmd npm -- run cover", + "ava": "ava -T 20s --verbose test/*.test.js system-test/*.test.js", + "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { "@google-cloud/datastore": "1.1.0", - "yargs": "9.0.1" + "sinon": "4.1.2", + "yargs": "10.0.3" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "1.4.17", - "ava": "0.22.0", - "proxyquire": "1.8.0", - "sinon": "3.3.0" - }, - "cloud-repo-tools": { - "requiresKeyFile": true, - "requiresProjectId": true, - "product": "datastore", - "samples": [ - { - "id": "tasks", - "name": "Tasks", - "file": "tasks.js", - "docs_link": "https://cloud.google.com/datastore/docs/datastore-api-tutorial", - "usage": "node tasks.js --help" - }, - { - "id": "concepts", - "name": "Concepts", - "file": "concepts.js", - "docs_link": "https://cloud.google.com/datastore/docs/concepts/entities" - }, - { - "id": "error", - "name": "Errors and Error Handling", - "file": "error.js", - "docs_link": "https://cloud.google.com/datastore/docs/concepts/errors", - "usage": { - "text": "node error.js" - } - } - ] + "@google-cloud/nodejs-repo-tools": "2.1.3", + "ava": "^0.23.0", + "nyc": "^11.3.0", + "proxyquire": "1.8.0" } } diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 141dd31aae9..22bb3a4b5fc 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -22,9 +22,9 @@ const Datastore = require('@google-cloud/datastore'); // Your Google Cloud Platform project ID const projectId = 'YOUR_PROJECT_ID'; -// Instantiates a client -const datastore = Datastore({ - projectId: projectId +// Creates a client +const datastore = new Datastore({ + projectId: projectId, }); // The kind for the new entity @@ -38,16 +38,17 @@ const taskKey = datastore.key([kind, name]); const task = { key: taskKey, data: { - description: 'Buy milk' - } + description: 'Buy milk', + }, }; // Saves the entity -datastore.save(task) +datastore + .save(task) .then(() => { console.log(`Saved ${task.key.name}: ${task.data.description}`); }) - .catch((err) => { + .catch(err => { console.error('ERROR:', err); }); // [END datastore_quickstart] diff --git a/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml b/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml new file mode 100644 index 00000000000..c0289282a68 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml @@ -0,0 +1,5 @@ +--- +rules: + node/no-unpublished-require: off + node/no-unsupported-features: off + no-empty: off diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js index d2da75e4ee3..9d606618f35 100644 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -32,7 +32,7 @@ const Entity = concepts.Entity; const Query = concepts.Query; test.before(tools.checkCredentials); -test.before((t) => { +test.before(t => { const projectId = process.env.GCLOUD_PROJECT; t.truthy(projectId, `You must set the GCLOUD_PROJECT env var!`); transaction = new Transaction(projectId); @@ -46,39 +46,62 @@ test.after.always(async () => { const datastore = transaction.datastore; const query = datastore.createQuery(`Task`).select(`__key__`); const [entities] = await datastore.runQuery(query); - await datastore.delete(entities.map((entity) => entity[datastore.KEY])); + await datastore.delete(entities.map(entity => entity[datastore.KEY])); }); test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); // Transactions -test.serial(`performs a transactional update`, (t) => transaction.testTransactionalUpdate(t)); -test.serial(`performs retries if necessary`, (t) => transaction.testTransactionalRetry(t)); -test.serial(`performs a get or create`, (t) => transaction.testTransactionalGetOrCreate(t)); -test.serial(`gets a snapshot of task list entities`, (t) => transaction.testSingleEntityGroupReadOnly(t)); +test.serial(`performs a transactional update`, t => + transaction.testTransactionalUpdate(t) +); +test.serial(`performs retries if necessary`, t => + transaction.testTransactionalRetry(t) +); +test.serial(`performs a get or create`, t => + transaction.testTransactionalGetOrCreate(t) +); +test.serial(`gets a snapshot of task list entities`, t => + transaction.testSingleEntityGroupReadOnly(t) +); // Metadata -test.serial(`performs a namespace query`, (t) => metadata.testNamespaceRunQuery(t)); -test.serial(`performs a kind query`, (t) => metadata.testKindRunQuery(t)); -test.serial(`performs a property query`, (t) => metadata.testPropertyRunQuery(t)); -test.serial(`performs a property by kind query`, (t) => metadata.testPropertyByKindRunQuery(t)); +test.serial(`performs a namespace query`, t => + metadata.testNamespaceRunQuery(t) +); +test.serial(`performs a kind query`, t => metadata.testKindRunQuery(t)); +test.serial(`performs a property query`, t => metadata.testPropertyRunQuery(t)); +test.serial(`performs a property by kind query`, t => + metadata.testPropertyByKindRunQuery(t) +); // Indexes -test.serial(`performs a query with a filter on an unindexed property`, (t) => index.testUnindexedPropertyQuery(t)); -test.serial(`inserts arrays of data`, (t) => index.testExplodingProperties(t)); +test.serial(`performs a query with a filter on an unindexed property`, t => + index.testUnindexedPropertyQuery(t) +); +test.serial(`inserts arrays of data`, t => index.testExplodingProperties(t)); // Queries -test.serial(`performs a basic query`, (t) => query.testRunQuery(t)); -test.serial(`performs a query with a property filter`, (t) => query.testPropertyFilter(t)); -test.serial(`performs a query with a composite filter`, (t) => query.testCompositeFilter(t)); -test.serial(`performs a query with a key filter`, (t) => query.testKeyFilter(t)); -test.serial(`performs a query with ascending sort`, (t) => query.testAscendingSort(t)); -test.serial(`performs a query with descending sort`, (t) => query.testDescendingSort(t)); -test.serial(`performs a query with multi sort`, (t) => query.testMultiSort(t)); -test.serial(`performs a kindless query`, (t) => query.testKindlessQuery(t)); -test.serial('performs a projection query', (t) => { - return entity.testProperties(t) +test.serial(`performs a basic query`, t => query.testRunQuery(t)); +test.serial(`performs a query with a property filter`, t => + query.testPropertyFilter(t) +); +test.serial(`performs a query with a composite filter`, t => + query.testCompositeFilter(t) +); +test.serial(`performs a query with a key filter`, t => query.testKeyFilter(t)); +test.serial(`performs a query with ascending sort`, t => + query.testAscendingSort(t) +); +test.serial(`performs a query with descending sort`, t => + query.testDescendingSort(t) +); +test.serial(`performs a query with multi sort`, t => query.testMultiSort(t)); +test.serial(`performs a kindless query`, t => query.testKindlessQuery(t)); +test.serial('performs a projection query', t => { + return entity + .testProperties(t) .then(() => { return new Promise((resolve, reject) => { setTimeout(() => { @@ -86,63 +109,84 @@ test.serial('performs a projection query', (t) => { }, 1000); }); }) - .then((results) => { + .then(results => { t.deepEqual(results, { priorities: [4], - percentCompletes: [10] + percentCompletes: [10], }); }); }); -test.serial(`performs a keys only query`, (t) => query.testKeysOnlyQuery(t)); -test.serial(`performs a distinct query`, (t) => query.testDistinctQuery(t)); -test.serial(`performs a distinct on query`, (t) => query.testDistinctOnQuery(t)); -test.serial(`performs an array value inequality query`, (t) => query.testArrayValueInequalityRange(t)); -test.serial(`performs an array value equality query`, (t) => query.testArrayValueEquality(t)); -test.serial(`performs an inequality range query`, (t) => query.testInequalityRange(t)); -test.serial(`returns an error from an invalid query`, async (t) => { +test.serial(`performs a keys only query`, t => query.testKeysOnlyQuery(t)); +test.serial(`performs a distinct query`, t => query.testDistinctQuery(t)); +test.serial(`performs a distinct on query`, t => query.testDistinctOnQuery(t)); +test.serial(`performs an array value inequality query`, t => + query.testArrayValueInequalityRange(t) +); +test.serial(`performs an array value equality query`, t => + query.testArrayValueEquality(t) +); +test.serial(`performs an inequality range query`, t => + query.testInequalityRange(t) +); +test.serial(`returns an error from an invalid query`, async t => { await t.throws(query.testInequalityInvalid(t)); }); -test.serial(`performs an equal and inequality range query`, (t) => query.testEqualAndInequalityRange(t)); -test.serial(`performs an equality sort query`, (t) => query.testInequalitySort(t)); -test.serial(`returns an error when not sorted on filtered property`, async (t) => { - await t.throws(query.testInequalitySortInvalidNotSame(t)); -}); -test.serial(`returns an error when not sorted on first filter prop`, async (t) => { - await t.throws(query.testInequalitySortInvalidNotFirst(t)); -}); -test.serial(`performs a query with a limit`, (t) => query.testLimit(t)); -test.serial(`allows manual pagination through results`, (t) => { - return entity.testBatchUpsert(t) - .then(() => { - return new Promise((resolve, reject) => { - setTimeout(() => { - query.testCursorPaging(t).then(resolve, reject); - }, 1000); - }); +test.serial(`performs an equal and inequality range query`, t => + query.testEqualAndInequalityRange(t) +); +test.serial(`performs an equality sort query`, t => + query.testInequalitySort(t) +); +test.serial( + `returns an error when not sorted on filtered property`, + async t => { + await t.throws(query.testInequalitySortInvalidNotSame(t)); + } +); +test.serial( + `returns an error when not sorted on first filter prop`, + async t => { + await t.throws(query.testInequalitySortInvalidNotFirst(t)); + } +); +test.serial(`performs a query with a limit`, t => query.testLimit(t)); +test.serial(`allows manual pagination through results`, t => { + return entity.testBatchUpsert(t).then(() => { + return new Promise((resolve, reject) => { + setTimeout(() => { + query.testCursorPaging(t).then(resolve, reject); + }, 1000); }); + }); }); -test.serial(`performs an ancestor query`, (t) => query.testEventualConsistentQuery(t)); +test.serial(`performs an ancestor query`, t => + query.testEventualConsistentQuery(t) +); // Entities -test.serial(`saves with an incomplete key`, (t) => entity.testIncompleteKey(t)); -test.serial(`saves with a named key`, (t) => entity.testNamedKey(t)); -test.serial(`saves a key with a parent`, (t) => entity.testKeyWithParent(t)); -test.serial(`saves a key with multiple parents`, (t) => entity.testKeyWithMultiLevelParent(t)); -test.serial(`saves an entity with a parent`, (t) => entity.testEntityWithParent(t)); -test.serial(`saves an entity with properties`, (t) => { +test.serial(`saves with an incomplete key`, t => entity.testIncompleteKey(t)); +test.serial(`saves with a named key`, t => entity.testNamedKey(t)); +test.serial(`saves a key with a parent`, t => entity.testKeyWithParent(t)); +test.serial(`saves a key with multiple parents`, t => + entity.testKeyWithMultiLevelParent(t) +); +test.serial(`saves an entity with a parent`, t => + entity.testEntityWithParent(t) +); +test.serial(`saves an entity with properties`, t => { t.plan(0); return entity.testProperties(t); }); -test.serial(`saves an entity with arrays`, (t) => entity.testArrayValue(t)); -test.serial(`saves a basic entity`, (t) => entity.testBasicEntity(t)); -test.serial(`saves with an upsert`, (t) => entity.testUpsert(t)); -test.serial(`saves with an insert`, (t) => entity.testInsert(t)); -test.serial(`performs a lookup`, (t) => entity.testLookup(t)); -test.serial(`saves with an update`, (t) => entity.testUpdate(t)); -test.serial(`deletes an entity`, (t) => entity.testDelete(t)); -test.serial(`performs a batch upsert`, (t) => { +test.serial(`saves an entity with arrays`, t => entity.testArrayValue(t)); +test.serial(`saves a basic entity`, t => entity.testBasicEntity(t)); +test.serial(`saves with an upsert`, t => entity.testUpsert(t)); +test.serial(`saves with an insert`, t => entity.testInsert(t)); +test.serial(`performs a lookup`, t => entity.testLookup(t)); +test.serial(`saves with an update`, t => entity.testUpdate(t)); +test.serial(`deletes an entity`, t => entity.testDelete(t)); +test.serial(`performs a batch upsert`, t => { t.plan(0); return entity.testBatchUpsert(t); }); -test.serial(`performs a batch lookup`, (t) => entity.testBatchLookup(t)); -test.serial(`performs a batch delete`, (t) => entity.testBatchDelete(t)); +test.serial(`performs a batch lookup`, t => entity.testBatchLookup(t)); +test.serial(`performs a batch delete`, t => entity.testBatchDelete(t)); diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js index 2816a134fe7..a584466b7d9 100644 --- a/handwritten/nodejs-datastore/samples/system-test/error.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/error.test.js @@ -22,8 +22,8 @@ const tools = require(`@google-cloud/nodejs-repo-tools`); test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); -test(`should have an error`, async (t) => { +test(`should have an error`, async t => { const err = await t.throws(error.runQuery()); t.truthy(err); - t.is(err.code, 400); + t.is(err.code, 3); }); diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js index 75cd8bcb119..d624c536e50 100644 --- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js @@ -22,7 +22,7 @@ const tools = require(`@google-cloud/nodejs-repo-tools`); const datastore = proxyquire(`@google-cloud/datastore`, {})(); -const entity = { description: `Buy milk` }; +const entity = {description: `Buy milk`}; const kind = `Task`; const name = `sampletask1`; const key = datastore.key([kind, name]); @@ -43,31 +43,33 @@ test.after.always(async () => { test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); -test.cb(`should get a task from Datastore`, (t) => { +test.cb(`should get a task from Datastore`, t => { const datastoreMock = { key: (...args) => datastore.key(...args), - save: (_task) => { + save: _task => { t.is(_task.key.kind, kind); t.is(_task.key.name, name); t.deepEqual(_task.data, entity); - return datastore.save(_task) - .then(() => { - setTimeout(() => { - datastore.get(key) - .then(([task]) => { - t.deepEqual(task, datastoreEntity); - t.true(console.log.calledWith(`Saved ${name}: ${entity.description}`)); - t.end(); - }) - .catch(t.end); - }, 200); - }, t.end); - } + return datastore.save(_task).then(() => { + setTimeout(() => { + datastore + .get(key) + .then(([task]) => { + t.deepEqual(task, datastoreEntity); + t.true( + console.log.calledWith(`Saved ${name}: ${entity.description}`) + ); + t.end(); + }) + .catch(t.end); + }, 200); + }, t.end); + }, }; proxyquire(`../quickstart`, { - '@google-cloud/datastore': sinon.stub().returns(datastoreMock) + '@google-cloud/datastore': sinon.stub().returns(datastoreMock), }); }); diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js index 1126e9ccb87..739e558ff5a 100644 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -15,7 +15,8 @@ 'use strict'; -const datastore = require(`@google-cloud/datastore`)(); +const Datastore = require(`@google-cloud/datastore`); +const datastore = new Datastore({}); const path = require(`path`); const test = require(`ava`); const tools = require(`@google-cloud/nodejs-repo-tools`); @@ -36,17 +37,19 @@ test.before(tools.checkCredentials); test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); -test.serial(`should add a task`, async (t) => { +test.serial(`should add a task`, async t => { t.plan(2); const expected = /^Task (\d+) created successfully.$/; const parts = tools.run(`${cmd} new "${description}"`, cwd).match(expected); t.true(expected.test(parts[0])); - const [task] = await datastore.get(datastore.key([`Task`, parseInt(parts[1], 10)])); + const [task] = await datastore.get( + datastore.key([`Task`, parseInt(parts[1], 10)]) + ); key = task[datastore.KEY]; t.is(task.description, description); }); -test.serial(`should mark a task as done`, async (t) => { +test.serial(`should mark a task as done`, async t => { t.plan(2); const expected = `Task ${key.id} updated successfully.`; const output = await tools.runAsync(`${cmd} done ${key.id}`, cwd); @@ -55,15 +58,17 @@ test.serial(`should mark a task as done`, async (t) => { t.true(task.done); }); -test.serial(`should list tasks`, async (t) => { +test.serial(`should list tasks`, async t => { t.plan(0); - await tools.tryTest(async (assert) => { - const output = await tools.runAsync(`${cmd} list`, cwd); - assert(output.includes(key.id)); - }).start(); + await tools + .tryTest(async assert => { + const output = await tools.runAsync(`${cmd} list`, cwd); + assert(output.includes(key.id)); + }) + .start(); }); -test.serial(`should delete a task`, async (t) => { +test.serial(`should delete a task`, async t => { t.plan(2); const expected = `Task ${key.id} deleted successfully.`; const output = await tools.runAsync(`${cmd} delete ${key.id}`, cwd); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 6ab7c36d8a0..8e9249f06fd 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -22,8 +22,8 @@ // https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication const Datastore = require('@google-cloud/datastore'); -// Instantiates a client -const datastore = Datastore(); +// Creates a client +const datastore = new Datastore({}); // [END build_service] /* @@ -64,53 +64,52 @@ node tasks */ // [START add_entity] -function addTask (description) { +function addTask(description) { const taskKey = datastore.key('Task'); const entity = { key: taskKey, data: [ { name: 'created', - value: new Date().toJSON() + value: new Date().toJSON(), }, { name: 'description', value: description, - excludeFromIndexes: true + excludeFromIndexes: true, }, { name: 'done', - value: false - } - ] + value: false, + }, + ], }; - datastore.save(entity) + datastore + .save(entity) .then(() => { console.log(`Task ${taskKey.id} created successfully.`); }) - .catch((err) => { + .catch(err => { console.error('ERROR:', err); }); } // [END add_entity] // [START update_entity] -function markDone (taskId) { +function markDone(taskId) { const transaction = datastore.transaction(); - const taskKey = datastore.key([ - 'Task', - taskId - ]); + const taskKey = datastore.key(['Task', taskId]); - transaction.run() + transaction + .run() .then(() => transaction.get(taskKey)) - .then((results) => { + .then(results => { const task = results[0]; task.done = true; transaction.save({ key: taskKey, - data: task + data: task, }); return transaction.commit(); }) @@ -123,38 +122,36 @@ function markDone (taskId) { // [END update_entity] // [START retrieve_entities] -function listTasks () { - const query = datastore.createQuery('Task') - .order('created'); +function listTasks() { + const query = datastore.createQuery('Task').order('created'); - datastore.runQuery(query) - .then((results) => { + datastore + .runQuery(query) + .then(results => { const tasks = results[0]; console.log('Tasks:'); - tasks.forEach((task) => { + tasks.forEach(task => { const taskKey = task[datastore.KEY]; console.log(taskKey.id, task); }); }) - .catch((err) => { + .catch(err => { console.error('ERROR:', err); }); } // [END retrieve_entities] // [START delete_entity] -function deleteTask (taskId) { - const taskKey = datastore.key([ - 'Task', - taskId - ]); +function deleteTask(taskId) { + const taskKey = datastore.key(['Task', taskId]); - datastore.delete(taskKey) + datastore + .delete(taskKey) .then(() => { console.log(`Task ${taskId} deleted successfully.`); }) - .catch((err) => { + .catch(err => { console.error('ERROR:', err); }); } @@ -166,33 +163,20 @@ require(`yargs`) // eslint-disable-line `new `, `Adds a task with a description .`, {}, - (opts) => addTask(opts.description) - ) - .command( - `done `, - `Marks the specified task as done.`, - {}, - (opts) => markDone(opts.taskId) + opts => addTask(opts.description) ) - .command( - `list`, - `Lists all tasks ordered by creation time.`, - {}, - listTasks + .command(`done `, `Marks the specified task as done.`, {}, opts => + markDone(opts.taskId) ) - .command( - `delete `, - `Deletes a task.`, - {}, - (opts) => deleteTask(opts.taskId) + .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) + .command(`delete `, `Deletes a task.`, {}, opts => + deleteTask(opts.taskId) ) .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) .example(`node $0 done 12345`, `Marks task 12345 as Done.`) .example(`node $0 list`, `Lists all tasks ordered by creation time`) .example(`node $0 delete 12345`, `Deletes task 12345.`) .wrap(120) - .recommendCommands() .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) .help() - .strict() - .argv; + .strict().argv; diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index f575fd37b9e..17de4c9801c 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -14,14 +14,10 @@ * limitations under the License. */ -/** - * @private - * @module datastore/entity - */ - 'use strict'; var arrify = require('arrify'); +var Buffer = require('safe-buffer').Buffer; var createErrorClass = require('create-error-class'); var extend = require('extend'); var is = require('is'); @@ -31,7 +27,7 @@ var entity = module.exports; var InvalidKeyError = createErrorClass('InvalidKey', function(opts) { var errorMessages = { MISSING_KIND: 'A key should contain at least a kind.', - MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.' + MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', }; this.message = errorMessages[opts.code]; @@ -41,19 +37,26 @@ var InvalidKeyError = createErrorClass('InvalidKey', function(opts) { * A symbol to access the Key object from an entity object. * * @type {symbol} + * @private */ entity.KEY_SYMBOL = Symbol('KEY'); /** * Build a Datastore Double object. For long doubles, a string can be provided. * - * @constructor - * @param {number} value - The double value. + * @class + * @param {number} value The double value. * * @example - * var aDouble = new Double(7.3); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const aDouble = datastore.double(7.3); */ function Double(value) { + /** + * @name Double#value + * @type {number} + */ this.value = value; } @@ -62,8 +65,9 @@ entity.Double = Double; /** * Check if something is a Datastore Double object. * + * @private * @param {*} value - * @return {boolean} + * @returns {boolean} */ function isDsDouble(value) { return value instanceof entity.Double; @@ -74,13 +78,19 @@ entity.isDsDouble = isDsDouble; /** * Build a Datastore Int object. For long integers, a string can be provided. * - * @constructor - * @param {number|string} value - The integer value. + * @class + * @param {number|string} value The integer value. * * @example - * var anInt = new Int(7); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const anInt = datastore.int(7); */ function Int(value) { + /** + * @name Int#value + * @type {string} + */ this.value = value.toString(); } @@ -89,8 +99,9 @@ entity.Int = Int; /** * Check if something is a Datastore Int object. * + * @private * @param {*} value - * @return {boolean} + * @returns {boolean} */ function isDsInt(value) { return value instanceof entity.Int; @@ -101,20 +112,30 @@ entity.isDsInt = isDsInt; /** * Build a Datastore Geo Point object. * - * @constructor - * @param {object} coordinates - Coordinate value. - * @param {number} coordinates.latitude - Latitudinal value. - * @param {number} coordinates.longitude - Longitudinal value. + * @class + * @param {object} coordinates Coordinate value. + * @param {number} coordinates.latitude Latitudinal value. + * @param {number} coordinates.longitude Longitudinal value. * * @example - * var coordinates = { + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { * latitude: 40.6894, * longitude: -74.0447 * }; * - * var geoPoint = new GeoPoint(coordinates); + * const geoPoint = datastore.geoPoint(coordinates); */ function GeoPoint(coordinates) { + /** + * Coordinate value. + * + * @name GeoPoint#coordinates + * @type {object} + * @property {number} latitude Latitudinal value. + * @property {number} longitude Longitudinal value. + */ this.value = coordinates; } @@ -123,8 +144,9 @@ entity.GeoPoint = GeoPoint; /** * Check if something is a Datastore Geo Point object. * + * @private * @param {*} value - * @return {boolean} + * @returns {boolean} */ function isDsGeoPoint(value) { return value instanceof entity.GeoPoint; @@ -135,18 +157,24 @@ entity.isDsGeoPoint = isDsGeoPoint; /** * Build a Datastore Key object. * - * @constructor - * @param {object} - Configuration object. - * @param {...*} options.path - Key path. - * @param {string=} options.namespace - Optional namespace. + * @class + * @param {object|string|array} Configuration object. + * @param {string|array} options.path Key path. + * @param {string} [options.namespace] Optional namespace. * * @example - * var key = new Key({ + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key({ * namespace: 'ns', * path: ['Company', 123] * }); */ function Key(options) { + /** + * @name Key#namespace + * @type {string} + */ this.namespace = options.namespace; if (options.path.length % 2 === 0) { @@ -167,12 +195,18 @@ function Key(options) { // `path` is computed on demand to consider any changes that may have been // made to the key. + /** + * @name Key#path + * @type {array} + */ Object.defineProperty(this, 'path', { enumerable: true, get: function() { - return arrify(this.parent && this.parent.path) - .concat([this.kind, this.name || this.id]); - } + return arrify(this.parent && this.parent.path).concat([ + this.kind, + this.name || this.id, + ]); + }, }); } @@ -181,8 +215,9 @@ entity.Key = Key; /** * Check if something is a Datastore Key object. * + * @private * @param {*} value - * @return {boolean} + * @returns {boolean} */ function isDsKey(value) { return value instanceof entity.Key; @@ -193,8 +228,9 @@ entity.isDsKey = isDsKey; /** * Convert a protobuf Value message to its native value. * - * @param {object} valueProto - The protobuf Value message to convert. - * @return {*} + * @private + * @param {object} valueProto The protobuf Value message to convert. + * @returns {*} * * @example * decodeValueProto({ @@ -213,7 +249,7 @@ entity.isDsKey = isDsKey; * // */ function decodeValueProto(valueProto) { - var valueType = valueProto.value_type; + var valueType = valueProto.valueType; var value = valueProto[valueType]; switch (valueType) { @@ -261,8 +297,9 @@ entity.decodeValueProto = decodeValueProto; /** * Convert any native value to a protobuf Value message object. * - * @param {*} value - Native value. - * @return {object} + * @private + * @param {*} value Native value. + * @returns {object} * * @example * encodeValue('Hi'); @@ -311,7 +348,7 @@ function encodeValue(value) { valueProto.timestampValue = { seconds: Math.floor(seconds), - nanos: value.getMilliseconds() * 1e6 + nanos: value.getMilliseconds() * 1e6, }; return valueProto; @@ -329,7 +366,7 @@ function encodeValue(value) { if (is.array(value)) { valueProto.arrayValue = { - values: value.map(entity.encodeValue) + values: value.map(entity.encodeValue), }; return valueProto; } @@ -351,7 +388,7 @@ function encodeValue(value) { } valueProto.entityValue = { - properties: value + properties: value, }; return valueProto; @@ -367,8 +404,9 @@ entity.encodeValue = encodeValue; * * @todo Use registered metadata if provided. * - * @param {object} entityProto - The protocol entity object to convert. - * @return {object} + * @private + * @param {object} entityProto The protocol entity object to convert. + * @returns {object} * * @example * entityFromEntityProto({ @@ -376,7 +414,7 @@ entity.encodeValue = encodeValue; * map: { * name: { * value: { - * value_type: 'stringValue', + * valueType: 'stringValue', * stringValue: 'Stephen' * } * } @@ -405,8 +443,9 @@ entity.entityFromEntityProto = entityFromEntityProto; /** * Convert an entity object to an entity protocol object. * - * @param {object} entityObject - The entity object to convert. - * @return {object} + * @private + * @param {object} entityObject The entity object to convert. + * @returns {object} * * @example * entityToEntityProto({ @@ -441,7 +480,7 @@ function entityToEntityProto(entityObject) { properties: Object.keys(properties).reduce(function(encoded, key) { encoded[key] = entity.encodeValue(properties[key]); return encoded; - }, {}) + }, {}), }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { @@ -480,7 +519,7 @@ function entityToEntityProto(entityObject) { var delimiter = firstPathPartIsArray ? '[]' : '.'; var splitPath = path.split(delimiter); var firstPathPart = splitPath.shift(); - var remainderPath = splitPath.join(delimiter).replace(/^(\.|[])/, ''); + var remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); if (!entity.properties[firstPathPart]) { return; @@ -503,10 +542,11 @@ entity.entityToEntityProto = entityToEntityProto; /** * Convert an API response array to a qualified Key and data object. * - * @param {object[]} results - The response array. - * @param {object} results.entity - An entity object. - * @param {object} results.entity.key - The entity's key. - * @return {object[]} + * @private + * @param {object[]} results The response array. + * @param {object} results.entity An entity object. + * @param {object} results.entity.key The entity's key. + * @returns {object[]} * * @example * request_('runQuery', {}, function(err, response) { @@ -533,8 +573,9 @@ entity.formatArray = formatArray; /** * Check if a key is complete. * - * @param {Key} key - The Key object. - * @return {boolean} + * @private + * @param {Key} key The Key object. + * @returns {boolean} * * @example * isKeyComplete(new Key(['Company', 'Google'])); // true @@ -550,8 +591,9 @@ entity.isKeyComplete = isKeyComplete; /** * Convert a key protocol object to a Key object. * - * @param {object} keyProto - The key protocol object to convert. - * @return {Key} + * @private + * @param {object} keyProto The key protocol object to convert. + * @returns {Key} * * @example * var key = keyFromKeyProto({ @@ -569,7 +611,7 @@ entity.isKeyComplete = isKeyComplete; */ function keyFromKeyProto(keyProto) { var keyOptions = { - path: [] + path: [], }; if (keyProto.partitionId && keyProto.partitionId.namespaceId) { @@ -579,9 +621,9 @@ function keyFromKeyProto(keyProto) { keyProto.path.forEach(function(path, index) { keyOptions.path.push(path.kind); - var id = path[path.id_type]; + var id = path[path.idType]; - if (path.id_type === 'id') { + if (path.idType === 'id') { id = new entity.Int(id); } @@ -589,7 +631,7 @@ function keyFromKeyProto(keyProto) { keyOptions.path.push(id); } else if (index < keyProto.path.length - 1) { throw new InvalidKeyError({ - code: 'MISSING_ANCESTOR_ID' + code: 'MISSING_ANCESTOR_ID', }); } }); @@ -602,8 +644,9 @@ entity.keyFromKeyProto = keyFromKeyProto; /** * Convert a Key object to a key protocol object. * - * @param {Key} key - The Key object to convert. - * @return {object} + * @private + * @param {Key} key The Key object to convert. + * @returns {object} * * @example * var keyProto = keyToKeyProto(new Key(['Company', 1])); @@ -619,17 +662,17 @@ entity.keyFromKeyProto = keyFromKeyProto; function keyToKeyProto(key) { if (is.undefined(key.kind)) { throw new InvalidKeyError({ - code: 'MISSING_KIND' + code: 'MISSING_KIND', }); } var keyProto = { - path: [] + path: [], }; if (key.namespace) { keyProto.partitionId = { - namespaceId: key.namespace + namespaceId: key.namespace, }; } @@ -640,12 +683,12 @@ function keyToKeyProto(key) { if (numKeysWalked > 0 && is.undefined(key.id) && is.undefined(key.name)) { // This isn't just an incomplete key. An ancestor key is incomplete. throw new InvalidKeyError({ - code: 'MISSING_ANCESTOR_ID' + code: 'MISSING_ANCESTOR_ID', }); } var pathElement = { - kind: key.kind + kind: key.kind, }; if (is.defined(key.id)) { @@ -668,9 +711,8 @@ entity.keyToKeyProto = keyToKeyProto; * Convert a query object to a query protocol object. * * @private - * - * @param {object} q - The query object to convert. - * @return {object} + * @param {object} q The query object to convert. + * @returns {object} * * @example * queryToQueryProto({ @@ -700,48 +742,48 @@ entity.keyToKeyProto = keyToKeyProto; */ function queryToQueryProto(query) { var OP_TO_OPERATOR = { - '=': 'EQUAL', - '>': 'GREATER_THAN', + '=': 'EQUAL', + '>': 'GREATER_THAN', '>=': 'GREATER_THAN_OR_EQUAL', - '<': 'LESS_THAN', + '<': 'LESS_THAN', '<=': 'LESS_THAN_OR_EQUAL', - HAS_ANCESTOR: 'HAS_ANCESTOR' + HAS_ANCESTOR: 'HAS_ANCESTOR', }; var SIGN_TO_ORDER = { '-': 'DESCENDING', - '+': 'ASCENDING' + '+': 'ASCENDING', }; var queryProto = { distinctOn: query.groupByVal.map(function(groupBy) { return { - name: groupBy + name: groupBy, }; }), kind: query.kinds.map(function(kind) { return { - name: kind + name: kind, }; }), order: query.orders.map(function(order) { return { property: { - name: order.name + name: order.name, }, - direction: SIGN_TO_ORDER[order.sign] + direction: SIGN_TO_ORDER[order.sign], }; }), projection: query.selectVal.map(function(select) { return { property: { - name: select - } + name: select, + }, }; - }) + }), }; if (query.endVal) { @@ -750,7 +792,7 @@ function queryToQueryProto(query) { if (query.limitVal > 0) { queryProto.limit = { - value: query.limitVal + value: query.limitVal, }; } @@ -775,19 +817,19 @@ function queryToQueryProto(query) { return { propertyFilter: { property: { - name: filter.name + name: filter.name, }, op: OP_TO_OPERATOR[filter.op], - value: value - } + value: value, + }, }; }); queryProto.filter = { compositeFilter: { filters: filters, - op: 'AND' - } + op: 'AND', + }, }; } diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 2d6d2b93bc6..261ae9bda54 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -14,99 +14,99 @@ * limitations under the License. */ -/*! - * @module datastore - */ - 'use strict'; var arrify = require('arrify'); var common = require('@google-cloud/common'); -var commonGrpc = require('@google-cloud/common-grpc'); +var extend = require('extend'); +var grpc = require('google-gax').grpc; +var googleAuth = require('google-auto-auth'); var is = require('is'); -var modelo = require('modelo'); -var path = require('path'); +var util = require('util'); -/** - * @type {module:datastore/request} - * @private - */ var DatastoreRequest = require('./request.js'); - -/** - * @type {module:datastore/entity} - * @private - */ var entity = require('./entity.js'); - -/** - * @type {module:datastore/query} - * @private - */ var Query = require('./query.js'); - -/** - * @type {module:datastore/transaction} - * @private - */ var Transaction = require('./transaction.js'); +// Import the clients for each version supported by this package. +const gapic = Object.freeze({ + v1: require('./v1'), +}); + /** - * @constructor - * @alias module:datastore - * @mixes module:datastore/request + * Idiomatic class for interacting with Cloud Datastore. Uses the lower-level + * {@link v1.DatastoreClient} class under the hood. + * + * In addition to the constructor options shown here, the {@link Datastore} + * class constructor accepts the same options accepted by + * {@link v1.DatastoreClient}. + * + *

The Datastore Emulator

+ * + * Make sure you have the + * gcloud SDK installed, then run: + * + *
+ *   $ gcloud beta emulators datastore start --no-legacy
+ * 
+ * + * You will see the following printed: + * + *
+ *   [datastore] API endpoint: http://localhost:8005
+ *   [datastore] If you are using a library that supports the
+ *               DATASTORE_EMULATOR_HOST environment variable, run:
+ *   [datastore]
+ *   [datastore]   export DATASTORE_EMULATOR_HOST=localhost:8005
+ *   [datastore]
+ *   [datastore] Dev App Server is now running.
+ * 
+ * + * Set that environment variable and your localhost Datastore will + * automatically be used. You can also pass this address in manually with + * `apiEndpoint`. * - * @resource [Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview} + * Additionally, `DATASTORE_PROJECT_ID` is recognized. If you have this set, + * you don't need to provide a `projectId`. + *- * - * @param {object=} options - [Configuration object](#/docs). - * @param {string=} options.apiEndpoint - Override the default API endpoint used + * @class + * @extends {DatastoreRequest} + * + * @see [Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview} + * + * @param {object} [options] Configuration options. + * @param {string} [options.apiEndpoint] Override the default API endpoint used * to reach Datastore. This is useful for connecting to your local Datastore * server (usually "http://localhost:8080"). - * @param {string} options.namespace - Namespace to isolate transactions to. + * @param {string} [options.namespace] Namespace to isolate transactions to. * - * @example - * //- - * //

The Datastore Emulator

- * // - * // Make sure you have the - * // gcloud SDK installed, then run: - * // - * //
- * //   $ gcloud beta emulators datastore start --no-legacy
- * // 
- * // - * // You will see the following printed: - * // - * //
- * //   [datastore] API endpoint: http://localhost:8005
- * //   [datastore] If you are using a library that supports the
- * //               DATASTORE_EMULATOR_HOST environment variable, run:
- * //   [datastore]
- * //   [datastore]   export DATASTORE_EMULATOR_HOST=localhost:8005
- * //   [datastore]
- * //   [datastore] Dev App Server is now running.
- * // 
- * // - * // Set that environment variable and your localhost Datastore will - * // automatically be used. You can also pass this address in manually with - * // `apiEndpoint`. - * // - * // Additionally, `DATASTORE_PROJECT_ID` is recognized. If you have this set, - * // you don't need to provide a `projectId`. - * //- + * @example Import the client library + * const Datastore = require('@google-cloud/datastore'); + * + * @example Create a client that uses Application Default Credentials (ADC): + * const datastore = new Datastore(); + * + * @example Create a client with explicit credentials: + * const datastore = new Datastore({ + * projectId: 'your-project-id', + * keyFilename: '/path/to/keyfile.json' + * }); + * + * @example Retrieving Records + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * - * //- - * //

Retrieving Records

- * // * // Records, called "entities" in Datastore, are retrieved by using a key. The * // key is more than a numeric identifier, it is a complex data structure that * // can be used to model relationships. The simplest key has a string `kind` * // value, and either a numeric `id` value, or a string `name` value. * // - * // A single record can be retrieved with {module:datastore#key} and - * // {module:datastore#get}. + * // A single record can be retrieved with {@link Datastore#key} and + * // {@link Datastore#get}. * //- - * var key = datastore.key(['Company', 'Google']); + * const key = datastore.key(['Company', 'Google']); * * datastore.get(key, function(err, entity) { * // entity = The record. @@ -116,59 +116,57 @@ var Transaction = require('./transaction.js'); * //- * //

Querying Records

* // - * // Create a query with {module:datastore#createQuery}. + * // Create a query with {@link Datastore#createQuery}. * //- - * var query = datastore.createQuery('Company'); + * const query = datastore.createQuery('Company'); * * //- * // Multiple records can be found that match criteria with - * // {module:datastore/query#filter}. + * // {@link Query#filter}. * //- * query.filter('location', 'CA'); * * //- - * // Records can also be ordered with {module:datastore/query#order}. + * // Records can also be ordered with {@link Query#order}. * //- * query.order('name'); * * //- * // The number of records returned can be specified with - * // {module:datastore/query#limit}. + * // {@link Query#limit}. * //- * query.limit(5); * * //- * // Records' key structures can also be queried with - * // {module:datastore/query#hasAncestor}. + * // {@link Query#hasAncestor}. * //- - * var ancestorKey = datastore.key(['ParentCompany', 'Alphabet']); + * const ancestorKey = datastore.key(['ParentCompany', 'Alphabet']); * * query.hasAncestor(ancestorKey); * * //- - * // Run the query with {module:datastore#runQuery}. + * // Run the query with {@link Datastore#runQuery}. * //- * datastore.runQuery(query, function(err, entities) { * // entities = An array of records. * * // Access the Key object for an entity. - * var firstEntityKey = entities[0][datastore.KEY]; + * const firstEntityKey = entities[0][datastore.KEY]; * }); * - * //- - * //

Paginating Records

- * // + * @example Paginating Records * // Imagine building a website that allows a user to sift through hundreds of * // their contacts. You'll likely want to only display a subset of these at * // once, so you set a limit. * //- - * var express = require('express'); - * var app = express(); + * const express = require('express'); + * const app = express(); * - * var NUM_RESULTS_PER_PAGE = 15; + * const NUM_RESULTS_PER_PAGE = 15; * * app.get('/contacts', function(req, res) { - * var query = datastore.createQuery('Contacts') + * const query = datastore.createQuery('Contacts') * .limit(NUM_RESULTS_PER_PAGE); * * if (req.query.nextPageCursor) { @@ -183,7 +181,7 @@ var Transaction = require('./transaction.js'); * * // Respond to the front end with the contacts and the cursoring token * // from the query we just ran. - * var frontEndResponse = { + * const frontEndResponse = { * contacts: entities * }; * @@ -196,18 +194,16 @@ var Transaction = require('./transaction.js'); * }); * }); * - * //- - * //

Creating Records

- * // - * // New entities can be created and persisted with {module:datastore#save}. + * @example Creating Records + * // New entities can be created and persisted with {@link Datastore#save}. * // The entitiy must have a key to be saved. If you don't specify an * // identifier for the key, one is generated for you. * // * // We will create a key with a `name` identifier, "Google". * //- - * var key = datastore.key(['Company', 'Google']); + * const key = datastore.key(['Company', 'Google']); * - * var data = { + * const data = { * name: 'Google', * location: 'CA' * }; @@ -222,7 +218,7 @@ var Transaction = require('./transaction.js'); * }); * * //- - * // We can verify the data was saved by using {module:datastore#get}. + * // We can verify the data was saved by using {@link Datastore#get}. * //- * datastore.get(key, function(err, entity) { * // entity = { @@ -246,13 +242,11 @@ var Transaction = require('./transaction.js'); * } * }); * - * //- - * //

Deleting Records

- * // + * @example Deleting Records * // Entities can be removed from Datastore by passing the entity's key object - * // to {module:datastore#delete}. + * // to {@link Datastore#delete}. * //- - * var key = datastore.key(['Company', 'Google']); + * const key = datastore.key(['Company', 'Google']); * * datastore.delete(key, function(err) { * if (!err) { @@ -260,21 +254,19 @@ var Transaction = require('./transaction.js'); * } * }); * - * //- - * //

Transactions

- * // + * @example Transactions * // Complex logic can be wrapped in a transaction with - * // {module:datastore#transaction}. All queries and updates run within + * // {@link Datastore#transaction}. All queries and updates run within * // the transaction will be applied when the `done` function is called. * //- - * var transaction = datastore.transaction(); + * const transaction = datastore.transaction(); * * transaction.run(function(err) { * if (err) { * // Error handling omitted. * } * - * var key = datastore.key(['Company', 'Google']); + * const key = datastore.key(['Company', 'Google']); * * transaction.get(key, function(err, entity) { * if (err) { @@ -292,52 +284,137 @@ var Transaction = require('./transaction.js'); * }); * }); * }); + * + * @example Queries with Ancestors + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * + * const customerId1 = 2993844; + * const customerId2 = 4993882; + * const customerKey1 = datastore.key(['Customer', customerId1]); + * const customerKey2 = datastore.key(['Customer', customerId2]); + * const cookieKey1 = datastore.key(['Customer', customerId1, 'Cookie', 'cookie28839']); // child entity + * const cookieKey2 = datastore.key(['Customer', customerId1, 'Cookie', 'cookie78984']); // child entity + * const cookieKey3 = datastore.key(['Customer', customerId2, 'Cookie', 'cookie93911']); // child entity + * + * const entities = []; + * + * entities.push({ + * key: customerKey1, + * data: { + * name: 'Jane Doe', + * address: '4848 Liller' + * } + * }); + * + * entities.push({ + * key: customerKey2, + * data: { + * name: 'John Smith', + * address: '4848 Pine' + * } + * }); + * + * entities.push({ + * key: cookieKey1, + * data: { + * cookieVal: 'dj83kks88rkld' + * } + * }); + * + * entities.push({ + * key: cookieKey2, + * data: { + * cookieVal: 'sj843ka99s' + * } + * }); + * + * entities.push({ + * key: cookieKey3, + * data: { + * cookieVal: 'otk82k2kw' + * } + * }); + * + * datastore.upsert(entities); + * + * const query = datastore.createQuery().hasAncestor(customerKey1); + * + * datastore.runQuery(query, (err, entities) => { + * for (let entity of entities) { + * console.log(entity[datastore.KEY]); + * } + * }); + * + * const query2 = datastore.createQuery().hasAncestor(customerKey2); + * + * datastore.runQuery(query2, (err, entities) => { + * for (let entity of entities) { + * console.log(entity[datastore.KEY]); + * } + * }); + * + * datastore.runQuery(query2, (entities) => { + * console.log(entities); + * }); */ function Datastore(options) { if (!(this instanceof Datastore)) { options = common.util.normalizeArguments(this, options, { - projectIdRequired: false + projectIdRequired: false, }); return new Datastore(options); } + options = options || {}; + + this.clients_ = new Map(); + this.datastore = this; + /** + * @name Datastore#namespace + * @type {string} + */ + this.namespace = options.namespace; + /** + * @name Datastore#projectId + * @type {string} + */ + this.projectId = + process.env.DATASTORE_PROJECT_ID || options.projectId || '{{projectId}}'; + this.defaultBaseUrl_ = 'datastore.googleapis.com'; this.determineBaseUrl_(options.apiEndpoint); - this.namespace = options.namespace; - this.projectId = process.env.DATASTORE_PROJECT_ID || options.projectId; - - var config = { - projectIdRequired: false, - baseUrl: this.baseUrl_, - customEndpoint: this.customEndpoint_, - protosDir: path.resolve(__dirname, '../protos'), - protoServices: { - Datastore: { - path: 'google/datastore/v1/datastore.proto', - service: 'datastore.v1' - } + this.options = extend( + { + libName: 'gccl', + libVersion: require('../package.json').version, + scopes: gapic.v1.DatastoreClient.scopes, + servicePath: this.baseUrl_, + port: is.number(this.port_) ? this.port_ : 443, }, - scopes: ['https://www.googleapis.com/auth/datastore'], - packageJson: require('../package.json'), - grpcMetadata: { - 'google-cloud-resource-prefix': 'projects/' + this.projectId - } - }; - - commonGrpc.Service.call(this, config, options); + options + ); + + if (this.customEndpoint_) { + this.options.sslCreds = grpc.credentials.createInsecure(); + } + + this.auth = googleAuth(this.options); } -modelo.inherits(Datastore, DatastoreRequest, commonGrpc.Service); +util.inherits(Datastore, DatastoreRequest); /** * Helper function to get a Datastore Double object. * - * @param {number} value - The double value. - * @return {object} + * @param {number} value The double value. + * @returns {object} * * @example - * var threeDouble = datastore.double(3.0); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const threeDouble = datastore.double(3.0); */ Datastore.prototype.double = Datastore.double = function(value) { return new entity.Double(value); @@ -347,9 +424,11 @@ Datastore.prototype.double = Datastore.double = function(value) { * Helper function to check if something is a Datastore Double object. * * @param {*} value - * @return {boolean} + * @returns {boolean} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * datastore.isDouble(0.42); // false * datastore.isDouble(datastore.double(0.42)); // true */ @@ -360,18 +439,20 @@ Datastore.prototype.isDouble = Datastore.isDouble = function(value) { /** * Helper function to get a Datastore Geo Point object. * - * @param {object} coordinates - Coordinate value. - * @param {number} coordinates.latitude - Latitudinal value. - * @param {number} coordinates.longitude - Longitudinal value. - * @return {object} + * @param {object} coordinates Coordinate value. + * @param {number} coordinates.latitude Latitudinal value. + * @param {number} coordinates.longitude Longitudinal value. + * @returns {object} * * @example - * var coordinates = { + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { * latitude: 40.6894, * longitude: -74.0447 * }; * - * var geoPoint = datastore.geoPoint(coordinates); + * const geoPoint = datastore.geoPoint(coordinates); */ Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordinates) { return new entity.GeoPoint(coordinates); @@ -381,10 +462,12 @@ Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordinates) { * Helper function to check if something is a Datastore Geo Point object. * * @param {*} value - * @return {boolean} + * @returns {boolean} * * @example - * var coordinates = { + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { * latitude: 0, * longitude: 0 * }; @@ -402,16 +485,18 @@ Datastore.prototype.isGeoPoint = Datastore.isGeoPoint = function(value) { * This is also useful when using an ID outside the bounds of a JavaScript * Number object. * - * @param {number} value - The integer value. - * @return {object} + * @param {number} value The integer value. + * @returns {object} * * @example - * var sevenInteger = datastore.int(7); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const sevenInteger = datastore.int(7); * * //- * // Create an Int to support long Key IDs. * //- - * var key = datastore.key([ + * const key = datastore.key([ * 'Kind', * datastore.int('100000000000001234') * ]); @@ -424,9 +509,11 @@ Datastore.prototype.int = Datastore.int = function(value) { * Helper function to check if something is a Datastore Integer object. * * @param {*} value - * @return {boolean} + * @returns {boolean} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * datastore.isInt(42); // false * datastore.isInt(datastore.int(42)); // true */ @@ -437,60 +524,68 @@ Datastore.prototype.isInt = Datastore.isInt = function(value) { /** * Access the Key from an Entity object. * + * @name Datastore.KEY + * @type {symbol} + */ +/** + * Access the Key from an Entity object. + * + * @name Datastore#KEY * @type {symbol} */ Datastore.prototype.KEY = Datastore.KEY = entity.KEY_SYMBOL; /** * This is one of three values which may be returned from - * {module:datastore#runQuery}, {module:transaction#runQuery}, and - * {module:datastore/query#run} as `info.moreResults`. + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. * * There *may* be more results after the specified end cursor. * * @type {string} */ -Datastore.prototype.MORE_RESULTS_AFTER_CURSOR = -Datastore.MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR'; +Datastore.prototype.MORE_RESULTS_AFTER_CURSOR = Datastore.MORE_RESULTS_AFTER_CURSOR = + 'MORE_RESULTS_AFTER_CURSOR'; /** * This is one of three values which may be returned from - * {module:datastore#runQuery}, {module:transaction#runQuery}, and - * {module:datastore/query#run} as `info.moreResults`. + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. * * There *may* be more results after the specified limit. * * @type {string} */ -Datastore.prototype.MORE_RESULTS_AFTER_LIMIT = -Datastore.MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT'; +Datastore.prototype.MORE_RESULTS_AFTER_LIMIT = Datastore.MORE_RESULTS_AFTER_LIMIT = + 'MORE_RESULTS_AFTER_LIMIT'; /** * This is one of three values which may be returned from - * {module:datastore#runQuery}, {module:transaction#runQuery}, and - * {module:datastore/query#run} as `info.moreResults`. + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. * * There are no more results left to query for. * * @type {string} */ -Datastore.prototype.NO_MORE_RESULTS = -Datastore.NO_MORE_RESULTS = 'NO_MORE_RESULTS'; +Datastore.prototype.NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS = + 'NO_MORE_RESULTS'; /** - * Create a query for the specified kind. See {module:datastore/query} for all + * Create a query for the specified kind. See {@link Query} for all * of the available methods. * - * @resource [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} - * - * @see {module:datastore/query} + * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * @see {@link Query} * - * @param {string=} namespace - Namespace. - * @param {string} kind - The kind to query. - * @return {module:datastore/query} + * @param {string} [namespace] Namespace. + * @param {string} kind The kind to query. + * @returns {Query} * * @example - * var query = datastore.createQuery('Company'); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); */ Datastore.prototype.createQuery = function(namespace, kind) { if (arguments.length < 2) { @@ -506,52 +601,56 @@ Datastore.prototype.createQuery = function(namespace, kind) { * * You may also specify a configuration object to define a namespace and path. * - * @param {...*=} options - Key path. To specify or override a namespace, + * @param {object|string|array} [options] Key path. To specify or override a namespace, * you must use an object here to explicitly state it. - * @param {object=} options - Configuration object. - * @param {...*=} options.path - Key path. - * @param {string=} options.namespace - Optional namespace. - * @return {Key} A newly created Key from the options given. + * @param {string|array} [options.path] Key path. + * @param {string} [options.namespace] Optional namespace. + * @returns {Key} A newly created Key from the options given. * * @example - * //- - * // Create an incomplete key with a kind value of `Company`. - * //- - * var key = datastore.key('Company'); + * Create an incomplete key with a kind value of `Company`. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key('Company'); * - * //- - * // Create a complete key with a kind value of `Company` and id `123`. - * //- - * var key = datastore.key(['Company', 123]); + * @example + * Create a complete key with a kind value of `Company` and id `123`. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 123]); * - * //- - * // If the ID integer is outside the bounds of a JavaScript Number object, - * // create an Int. - * //- - * var key = datastore.key([ + * @example + * If the ID integer is outside the bounds of a JavaScript Number object, create an Int. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key([ * 'Company', * datastore.int('100000000000001234') * ]); * - * //- + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * // Create a complete key with a kind value of `Company` and name `Google`. * // Note: `id` is used for numeric identifiers and `name` is used otherwise. - * //- - * var key = datastore.key(['Company', 'Google']); + * const key = datastore.key(['Company', 'Google']); * - * //- - * // Create a complete key from a provided namespace and path. - * //- - * var key = datastore.key({ + * @example + * Create a complete key from a provided namespace and path. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key({ * namespace: 'My-NS', * path: ['Company', 123] * }); */ Datastore.prototype.key = function(options) { - options = is.object(options) ? options : { - namespace: this.namespace, - path: arrify(options) - }; + options = is.object(options) + ? options + : { + namespace: this.namespace, + path: arrify(options), + }; return new entity.Key(options); }; @@ -560,9 +659,11 @@ Datastore.prototype.key = function(options) { * Helper function to check if something is a Datastore Key object. * * @param {*} value - * @return {boolean} + * @returns {boolean} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * datastore.isKey({path: ['Company', 123]}); // false * datastore.isKey(datastore.key(['Company', 123])); // true */ @@ -573,11 +674,19 @@ Datastore.prototype.isKey = Datastore.isKey = function(value) { /** * Create a new Transaction object. * - * @return {module:datastore/transaction} - * @private + * @param {object} [options] Configuration object. + * @param {string} [options.id] The ID of a previously run transaction. + * @param {boolean} [options.readOnly=false] A read-only transaction cannot + * modify entities. + * @returns {Transaction} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); */ -Datastore.prototype.transaction = function() { - return new Transaction(this); +Datastore.prototype.transaction = function(options) { + return new Transaction(this, options); }; /** @@ -587,12 +696,13 @@ Datastore.prototype.transaction = function() { * * @private * - * @param {string} customApiEndpoint - Custom API endpoint. + * @param {string} customApiEndpoint Custom API endpoint. */ Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { var baseUrl = this.defaultBaseUrl_; var leadingProtocol = new RegExp('^https*://'); var trailingSlashes = new RegExp('/*$'); + var port = new RegExp(':(\\d+)'); if (customApiEndpoint) { baseUrl = customApiEndpoint; @@ -602,14 +712,86 @@ Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { this.customEndpoint_ = true; } + if (port.test(baseUrl)) { + this.port_ = baseUrl.match(port)[1]; + } + this.baseUrl_ = baseUrl .replace(leadingProtocol, '') + .replace(port, '') .replace(trailingSlashes, ''); }; +/** + * {@link DatastoreRequest} class. + * + * @name Datastore.DatastoreRequest + * @see DatastoreRequest + * @type {constructor} + */ Datastore.DatastoreRequest = DatastoreRequest; + +/** + * {@link Query} class. + * + * @name Datastore.Query + * @see Query + * @type {constructor} + */ Datastore.Query = Query; + +/** + * {@link Transaction} class. + * + * @name Datastore.Transaction + * @see Transaction + * @type {constructor} + */ Datastore.Transaction = Transaction; +/** + * The default export of the `@google-cloud/datastore` package is the + * {@link Datastore} class. + * + * See the {@link Datastore} class for client methods and configuration options. + * + * @module {Datastore} @google-cloud/datastore + * @alias nodejs-datastore + * + * @example Install the client library with npm: + * npm install --save @google-cloud/datastore + * + * @example Import the client library + * const Datastore = require('@google-cloud/datastore'); + * + * @example Create a client that uses Application Default Credentials (ADC): + * const datastore = new Datastore(); + * + * @example Create a client with explicit credentials: + * const datastore = new Datastore({ + * projectId: 'your-project-id', + * keyFilename: '/path/to/keyfile.json' + * }); + * + * @example include:samples/quickstart.js + * region_tag:datastore_quickstart + * Full quickstart example: + */ module.exports = Datastore; -module.exports.v1 = require('./v1'); + +/** + * @name Datastore.v1 + * @see v1.DatastoreClient + * @type {object} + * @property {constructor} DatastoreClient + * Reference to {@link v1.DatastoreClient}. + */ + +/** + * @name module:@google-cloud/datastore.v1 + * @see v1.DatastoreClient + * @type {object} + * @property {constructor} DatastoreClient + * Reference to {@link v1.DatastoreClient}. + */ +module.exports.v1 = gapic.v1; diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index e09bf934e89..6f91c7da426 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -14,35 +14,28 @@ * limitations under the License. */ -/*! - * @module datastore/query - */ - 'use strict'; var arrify = require('arrify'); -/*! Developer Documentation - * - * @param {module:datastore|module:transaction} scope - The parent scope the - * query was created from. - */ /** * Build a Query object. * * **Queries are built with {module:datastore#createQuery} and - * {module:transaction#createQuery}.** + * {@link Transaction#createQuery}.** * - * @resource [Datastore Queries]{@link http://goo.gl/Cag0r6} + * @see [Datastore Queries]{@link http://goo.gl/Cag0r6} * - * @constructor - * @alias module:datastore/query - * - * @param {string=} namespace - Namespace to query entities from. - * @param {string} kind - Kind to query. + * @class + * @param {Datastore|Rransaction} scope The parent scope the query was created + * from. + * @param {string} [namespace] Namespace to query entities from. + * @param {string} kind Kind to query. * * @example - * var query = datastore.createQuery('AnimalNamespace', 'Lion'); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('AnimalNamespace', 'Lion'); */ function Query(scope, namespace, kinds) { if (!kinds) { @@ -50,20 +43,64 @@ function Query(scope, namespace, kinds) { namespace = null; } + /** + * @name Query#scope + * @type {Datastore|Transaction} + */ this.scope = scope; + /** + * @name Query#namespace + * @type {?string} + */ this.namespace = namespace || null; + /** + * @name Query#kinds + * @type {string} + */ this.kinds = kinds; + /** + * @name Query#filters + * @type {array} + */ this.filters = []; + /** + * @name Query#orders + * @type {array} + */ this.orders = []; + /** + * @name Query#groupByVal + * @type {array} + */ this.groupByVal = []; + /** + * @name Query#selectVal + * @type {array} + */ this.selectVal = []; // pagination + /** + * @name Query#startVal + * @type {?number} + */ this.startVal = null; + /** + * @name Query#endVal + * @type {?number} + */ this.endVal = null; + /** + * @name Query#limitVal + * @type {number} + */ this.limitVal = -1; + /** + * @name Query#offsetVal + * @type {number} + */ this.offsetVal = -1; } @@ -74,23 +111,27 @@ function Query(scope, namespace, kinds) { * * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* * - * @resource [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs} + * @see [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs} * - * @param {string} property - The field name. - * @param {string=} operator - Operator (=, <, >, <=, >=). Default: `=` - * @param {*} value - Value to compare property to. - * @return {module:datastore/query} + * @param {string} property The field name. + * @param {string} [operator="="] Operator (=, <, >, <=, >=). + * @param {*} value Value to compare property to. + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * * //- * // List all companies that are located in California. * //- - * var caliQuery = query.filter('state', 'CA'); + * const caliQuery = query.filter('state', 'CA'); * * //- * // List all companies named Google that have less than 400 employees. * //- - * var companyQuery = query + * const companyQuery = query * .filter('name', 'Google') * .filter('size', '<', 400); * @@ -98,8 +139,8 @@ function Query(scope, namespace, kinds) { * // To filter by key, use `__key__` for the property name. Filter on keys * // stored as properties is not currently supported. * //- - * var key = datastore.key(['Company', 'Google']); - * var keyQuery = query.filter('__key__', key); + * const key = datastore.key(['Company', 'Google']); + * const keyQuery = query.filter('__key__', key); */ Query.prototype.filter = function(property, operator, value) { if (arguments.length === 2) { @@ -107,11 +148,10 @@ Query.prototype.filter = function(property, operator, value) { operator = '='; } - // TODO: Add filter validation. this.filters.push({ name: property.trim(), op: operator.trim(), - val: value + val: value, }); return this; }; @@ -119,16 +159,19 @@ Query.prototype.filter = function(property, operator, value) { /** * Filter a query by ancestors. * - * @resource [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs} + * @see [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs} * - * @param {Key} key - Key object to filter by. - * @return {module:datastore/query} + * @param {Key} key Key object to filter by. + * @returns {Query} * * @example - * var ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('MyKind'); + * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); */ Query.prototype.hasAncestor = function(key) { - this.filters.push({ name: '__key__', op: 'HAS_ANCESTOR', val: key }); + this.filters.push({name: '__key__', op: 'HAS_ANCESTOR', val: key}); return this; }; @@ -136,38 +179,45 @@ Query.prototype.hasAncestor = function(key) { * Sort the results by a property name in ascending or descending order. By * default, an ascending sort order will be used. * - * @resource [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs} + * @see [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs} * - * @param {string} property - The property to order by. - * @param {object=} options - Options object. - * @param {boolean} options.descending - Sort the results by a property name - * in descending order. Default: `false`. - * @return {module:datastore/query} + * @param {string} property The property to order by. + * @param {object} [options] Options object. + * @param {boolean} [options.descending=false] Sort the results by a property + * name in descending order. + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * * // Sort by size ascendingly. - * var companiesAscending = companyQuery.order('size'); + * const companiesAscending = companyQuery.order('size'); * * // Sort by size descendingly. - * var companiesDescending = companyQuery.order('size', { + * const companiesDescending = companyQuery.order('size', { * descending: true * }); */ Query.prototype.order = function(property, options) { var sign = options && options.descending ? '-' : '+'; - this.orders.push({ name: property, sign: sign }); + this.orders.push({name: property, sign: sign}); return this; }; /** * Group query results by a list of properties. * - * @param {array} properties - Properties to group by. - * @return {module:datastore/query} + * @param {array} properties Properties to group by. + * @returns {Query} * * @example - * var groupedQuery = companyQuery.groupBy(['name', 'size']); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * const groupedQuery = companyQuery.groupBy(['name', 'size']); */ Query.prototype.groupBy = function(fieldNames) { this.groupByVal = arrify(fieldNames); @@ -179,18 +229,22 @@ Query.prototype.groupBy = function(fieldNames) { * * Queries that select a subset of properties are called Projection Queries. * - * @resource [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} + * @see [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} * - * @param {string|string[]} fieldNames - Properties to return from the matched + * @param {string|string[]} fieldNames Properties to return from the matched * entities. - * @return {module:datastore/query} + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * * // Only retrieve the name property. - * var selectQuery = companyQuery.select('name'); + * const selectQuery = companyQuery.select('name'); * * // Only retrieve the name and size properties. - * var selectQuery = companyQuery.select(['name', 'size']); + * const selectQuery = companyQuery.select(['name', 'size']); */ Query.prototype.select = function(fieldNames) { this.selectVal = arrify(fieldNames); @@ -200,16 +254,20 @@ Query.prototype.select = function(fieldNames) { /** * Set a starting cursor to a query. * - * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets} + * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets} * - * @param {string} cursorToken - The starting cursor token. - * @return {module:datastore/query} + * @param {string} cursorToken The starting cursor token. + * @returns {Query} * * @example - * var cursorToken = 'X'; + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * const cursorToken = 'X'; * * // Retrieve results starting from cursorToken. - * var startQuery = companyQuery.start(cursorToken); + * const startQuery = companyQuery.start(cursorToken); */ Query.prototype.start = function(start) { this.startVal = start; @@ -219,16 +277,20 @@ Query.prototype.start = function(start) { /** * Set an ending cursor to a query. * - * @resource [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} + * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} * - * @param {string} cursorToken - The ending cursor token. - * @return {module:datastore/query} + * @param {string} cursorToken The ending cursor token. + * @returns {Query} * * @example - * var cursorToken = 'X'; + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * const cursorToken = 'X'; * * // Retrieve results limited to the extent of cursorToken. - * var endQuery = companyQuery.end(cursorToken); + * const endQuery = companyQuery.end(cursorToken); */ Query.prototype.end = function(end) { this.endVal = end; @@ -238,14 +300,18 @@ Query.prototype.end = function(end) { /** * Set a limit on a query. * - * @resource [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * @see [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} * - * @param {number} n - The number of results to limit the query to. - * @return {module:datastore/query} + * @param {number} n The number of results to limit the query to. + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * * // Limit the results to 10 entities. - * var limitQuery = companyQuery.limit(10); + * const limitQuery = companyQuery.limit(10); */ Query.prototype.limit = function(n) { this.limitVal = n; @@ -255,14 +321,18 @@ Query.prototype.limit = function(n) { /** * Set an offset on a query. * - * @resource [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * @see [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} * - * @param {number} n - The offset to start from after the start cursor. - * @return {module:datastore/query} + * @param {number} n The offset to start from after the start cursor. + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * * // Start from the 101st result. - * var offsetQuery = companyQuery.offset(100); + * const offsetQuery = companyQuery.offset(100); */ Query.prototype.offset = function(n) { this.offsetVal = n; @@ -272,27 +342,31 @@ Query.prototype.offset = function(n) { /** * Run the query. * - * @param {object=} options - Optional configuration. - * @param {string} options.consistency - Specify either `strong` or `eventual`. + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. * If not specified, default values are chosen by Datastore for the * operation. Learn more about strong and eventual consistency * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {function=} callback - The callback function. If omitted, a readable + * @param {function} [callback] The callback function. If omitted, a readable * stream instance is returned. - * @param {?error} callback.err - An error returned while making this request - * @param {object[]} callback.entities - A list of entities. - * @param {object} callback.info - An object useful for pagination. - * @param {?string} callback.info.endCursor - Use this in a follow-up query to + * @param {?error} callback.err An error returned while making this request + * @param {object[]} callback.entities A list of entities. + * @param {object} callback.info An object useful for pagination. + * @param {?string} callback.info.endCursor Use this in a follow-up query to * begin from where these results ended. - * @param {string} callback.info.moreResults - Datastore responds with one of: + * @param {string} callback.info.moreResults Datastore responds with one of: * - * - {module:datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more * results after the specified limit. - * - {module:datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more * results after the specified end cursor. - * - {module:datastore#NO_MORE_RESULTS}: There are no more results. + * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * * query.run(function(err, entities, info) { * // entities = An array of records. * @@ -329,11 +403,16 @@ Query.prototype.run = function() { /** * Run the query as a readable object stream. * - * @param {object=} options - Optional configuration. See - * {module:datastore/query#run} for a complete list of options. - * @return {stream} + * @method Query#runStream + * @param {object} [options] Optional configuration. See + * {@link Query#run} for a complete list of options. + * @returns {stream} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * * query.runStream() * .on('error', console.error) * .on('data', function (entity) { @@ -361,4 +440,9 @@ Query.prototype.runStream = function() { return this.scope.runQueryStream.apply(this.scope, args); }; +/** + * Reference to the {@link Query} class. + * @name module:@google-cloud/datastore.Query + * @see Query + */ module.exports = Query; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index ff8bfa60863..2ccd47067eb 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -14,10 +14,6 @@ * limitations under the License. */ -/*! - * @module datastore/request - */ - 'use strict'; var arrify = require('arrify'); @@ -27,17 +23,15 @@ var extend = require('extend'); var is = require('is'); var propAssign = require('prop-assign'); var split = require('split-array-stream'); +var streamEvents = require('stream-events'); +var through = require('through2'); -/** - * @type {module:datastore/entity} - * @private - */ -var entity = require('./entity.js'); +// Import the clients for each version supported by this package. +const gapic = Object.freeze({ + v1: require('./v1'), +}); -/** - * @type {module:datastore/query} - * @private - */ +var entity = require('./entity.js'); var Query = require('./query.js'); /** @@ -48,22 +42,17 @@ var Query = require('./query.js'); */ var CONSISTENCY_PROTO_CODE = { eventual: 2, - strong: 1 + strong: 1, }; -/*! Developer Documentation - * - * Handles request logic for Datastore. +/** + * Handle logic for Datastore API operations. Handles request logic for + * Datastore. * * Creates requests to the Datastore endpoint. Designed to be inherited by - * {module:datastore} and {module:datastore/transaction} objects. - */ -/** - * Handle logic for Datastore API operations. + * the {@link Datastore} and {@link Transaction} classes. * - * @constructor - * @alias module:datastore/request - * @mixin + * @class */ function DatastoreRequest() {} @@ -85,9 +74,9 @@ function DatastoreRequest() {} * * @private * - * @resource [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} + * @see [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} * - * @param {object} obj - The user's input object. + * @param {object} obj The user's input object. */ DatastoreRequest.prepareEntityObject_ = function(obj) { var entityObject = extend(true, {}, obj); @@ -96,7 +85,7 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { if (obj[entity.KEY_SYMBOL]) { return { key: obj[entity.KEY_SYMBOL], - data: entityObject + data: entityObject, }; } @@ -106,12 +95,16 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { /** * Generate IDs without creating entities. * - * @param {Key} incompleteKey - The key object to complete. - * @param {number} n - How many IDs to generate. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {array} callback.keys - The generated IDs - * @param {object} callback.apiResponse - The full API response. + * @param {Key} key The key object to complete. + * @param {number|object} options Either the number of IDs to allocate or an + * options object for further customization of the request. + * @param {number} options.allocations How many IDs to allocate. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {array} callback.keys The generated IDs + * @param {object} callback.apiResponse The full API response. * * @example * var incompleteKey = datastore.key(['Company']); @@ -168,35 +161,37 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { * var apiResponse = data[1]; * }); */ -DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) { - if (entity.isKeyComplete(incompleteKey)) { +DatastoreRequest.prototype.allocateIds = function(key, options, callback) { + if (entity.isKeyComplete(key)) { throw new Error('An incomplete key should be provided.'); } - var incompleteKeys = []; - for (var i = 0; i < n; i++) { - incompleteKeys.push(entity.keyToKeyProto(incompleteKey)); + if (is.number(options)) { + options = { + allocations: options, + }; } - var protoOpts = { - service: 'Datastore', - method: 'allocateIds' - }; + this.request_( + { + client: 'DatastoreClient', + method: 'allocateIds', + reqOpts: { + keys: new Array(options.allocations).fill(entity.keyToKeyProto(key)), + }, + gaxOpts: options.gaxOptions, + }, + function(err, resp) { + if (err) { + callback(err, null, resp); + return; + } - var reqOpts = { - keys: incompleteKeys - }; + var keys = arrify(resp.keys).map(entity.keyFromKeyProto); - this.request_(protoOpts, reqOpts, function(err, resp) { - if (err) { - callback(err, null, resp); - return; + callback(null, keys, resp); } - - var keys = (resp.keys || []).map(entity.keyFromKeyProto); - - callback(null, keys, resp); - }); + ); }; /** @@ -204,8 +199,8 @@ DatastoreRequest.prototype.allocateIds = function(incompleteKey, n, callback) { * * @throws {Error} If at least one Key object is not provided. * - * @param {Key|Key[]} keys - Datastore key object(s). - * @param {object=} options - Optional configuration. See {module:datastore#get} + * @param {Key|Key[]} keys Datastore key object(s). + * @param {object} [options] Optional configuration. See {@link Datastore#get} * for a complete list of options. * * @example @@ -234,55 +229,57 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { throw new Error('At least one Key object is required.'); } - var limiter = common.util.createLimiter(makeRequest, options); - var stream = limiter.stream; + var stream = streamEvents(through.obj()); stream.once('reading', function() { - limiter.makeRequest(keys); + makeRequest(keys); }); function makeRequest(keys) { - var protoOpts = { - service: 'Datastore', - method: 'lookup' - }; - var reqOpts = { - keys: keys + keys: keys, }; if (options.consistency) { var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; reqOpts.readOptions = { - readConsistency: code + readConsistency: code, }; } - self.request_(protoOpts, reqOpts, function(err, resp) { - if (err) { - stream.destroy(err); - return; - } - - var entities = entity.formatArray(resp.found); - var nextKeys = (resp.deferred || []) - .map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); - - split(entities, stream, function(streamEnded) { - if (streamEnded) { + self.request_( + { + client: 'DatastoreClient', + method: 'lookup', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + function(err, resp) { + if (err) { + stream.destroy(err); return; } - if (nextKeys.length > 0) { - limiter.makeRequest(nextKeys); - return; - } + var entities = entity.formatArray(resp.found); + var nextKeys = (resp.deferred || []) + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); - stream.push(null); - }); - }); + split(entities, stream, function(streamEnded) { + if (streamEnded) { + return; + } + + if (nextKeys.length > 0) { + makeRequest(nextKeys); + return; + } + + stream.push(null); + }); + } + ); } return stream; @@ -291,10 +288,12 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { /** * Delete all entities identified with the specified key(s). * - * @param {Key|Key[]} key - Datastore key object(s). - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object} callback.apiResponse - The full API response. + * @param {Key|Key[]} key Datastore key object(s). + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. * * @example * var key = datastore.key(['Company', 123]); @@ -334,20 +333,20 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { * var apiResponse = data[0]; * }); */ -DatastoreRequest.prototype.delete = function(keys, callback) { - callback = callback || common.util.noop; +DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } - var protoOpts = { - service: 'Datastore', - method: 'commit' - }; + callback = callback || common.util.noop; var reqOpts = { mutations: arrify(keys).map(function(key) { return { - delete: entity.keyToKeyProto(key) + delete: entity.keyToKeyProto(key), }; - }) + }), }; if (this.id) { @@ -355,7 +354,15 @@ DatastoreRequest.prototype.delete = function(keys, callback) { return; } - this.request_(protoOpts, reqOpts, callback); + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts: reqOpts, + gaxOpts: gaxOptions, + }, + callback + ); }; /** @@ -365,16 +372,17 @@ DatastoreRequest.prototype.delete = function(keys, callback) { * * @throws {Error} If at least one Key object is not provided. * - * @param {Key|Key[]} keys - Datastore key object(s). - * @param {object=} options - Optional configuration. - * @param {string} options.consistency - Specify either `strong` or `eventual`. + * @param {Key|Key[]} keys Datastore key object(s). + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. * If not specified, default values are chosen by Datastore for the * operation. Learn more about strong and eventual consistency * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {number} options.maxApiCalls - Maximum API calls to make. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object|object[]} callback.entity - The entity object(s) which match + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object|object[]} callback.entity The entity object(s) which match * the provided keys. * * @example @@ -452,25 +460,27 @@ DatastoreRequest.prototype.get = function(keys, options, callback) { this.createReadStream(keys, options) .on('error', callback) - .pipe(concat(function(results) { - var isSingleLookup = !is.array(keys); - callback(null, isSingleLookup ? results[0] : results); - })); + .pipe( + concat(function(results) { + var isSingleLookup = !is.array(keys); + callback(null, isSingleLookup ? results[0] : results); + }) + ); }; /** - * Maps to {module:datastore#save}, forcing the method to be `insert`. + * Maps to {@link Datastore#save}, forcing the method to be `insert`. * - * @param {object|object[]} entities - Datastore key object(s). - * @param {Key} entities.key - Datastore key object. - * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the examples in - * {module:datastore#save} to see how to target properties at different + * {@link Datastore#save} to see how to target properties at different * levels of nesting within your entity. - * @param {object} entities.data - Data to save with the provided key. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object} callback.apiResponse - The full API response. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. */ DatastoreRequest.prototype.insert = function(entities, callback) { entities = arrify(entities) @@ -491,27 +501,28 @@ DatastoreRequest.prototype.insert = function(entities, callback) { * query. You can pass that object back to this method to see if more results * exist. * - * @param {module:datastore/query} query - Query object. - * @param {object=} options - Optional configuration. - * @param {string} options.consistency - Specify either `strong` or `eventual`. + * @param {Query} query Query object. + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. * If not specified, default values are chosen by Datastore for the * operation. Learn more about strong and eventual consistency * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {number} options.maxApiCalls - Maximum API calls to make. - * @param {function=} callback - The callback function. If omitted, a readable + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} [callback] The callback function. If omitted, a readable * stream instance is returned. - * @param {?error} callback.err - An error returned while making this request - * @param {object[]} callback.entities - A list of entities. - * @param {object} callback.info - An object useful for pagination. - * @param {?string} callback.info.endCursor - Use this in a follow-up query to + * @param {?error} callback.err An error returned while making this request + * @param {object[]} callback.entities A list of entities. + * @param {object} callback.info An object useful for pagination. + * @param {?string} callback.info.endCursor Use this in a follow-up query to * begin from where these results ended. - * @param {string} callback.info.moreResults - Datastore responds with one of: + * @param {string} callback.info.moreResults Datastore responds with one of: * - * - {module:datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more * results after the specified limit. - * - {module:datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more * results after the specified end cursor. - * - {module:datastore#NO_MORE_RESULTS}: There are no more results. + * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. * * @example * //- @@ -584,18 +595,22 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { .on('info', function(info_) { info = info_; }) - .pipe(concat(function(results) { - callback(null, results, info); - })); + .pipe( + concat(function(results) { + callback(null, results, info); + }) + ); }; /** * Get a list of entities as a readable object stream. * - * See {module:datastore#runQuery} for a list of all available options. + * See {@link Datastore#runQuery} for a list of all available options. * - * @param {module:datastore/query} query - Query object. - * @param {object=} options - Optional configuration. + * @param {Query} query Query object. + * @param {object} [options] Optional configuration. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. * * @example * datastore.runQueryStream(query) @@ -625,37 +640,39 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { query = extend(true, new Query(), query); - var limiter = common.util.createLimiter(makeRequest, options); - var stream = limiter.stream; + var stream = streamEvents(through.obj()); stream.once('reading', function() { - limiter.makeRequest(query); + makeRequest(query); }); function makeRequest(query) { - var protoOpts = { - service: 'Datastore', - method: 'runQuery' - }; - var reqOpts = { - query: entity.queryToQueryProto(query) + query: entity.queryToQueryProto(query), }; if (options.consistency) { var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; reqOpts.readOptions = { - readConsistency: code + readConsistency: code, }; } if (query.namespace) { reqOpts.partitionId = { - namespaceId: query.namespace + namespaceId: query.namespace, }; } - self.request_(protoOpts, reqOpts, onResultSet); + self.request_( + { + client: 'DatastoreClient', + method: 'runQuery', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + onResultSet + ); } function onResultSet(err, resp) { @@ -665,7 +682,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { } var info = { - moreResults: resp.batch.moreResults + moreResults: resp.batch.moreResults, }; if (resp.batch.endCursor) { @@ -693,16 +710,14 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { // The query is "NOT_FINISHED". Get the rest of the results. var offset = query.offsetVal === -1 ? 0 : query.offsetVal; - query - .start(info.endCursor) - .offset(offset - resp.batch.skippedResults); + query.start(info.endCursor).offset(offset - resp.batch.skippedResults); var limit = query.limitVal; if (limit && limit > -1) { query.limit(limit - resp.batch.entityResults.length); } - limiter.makeRequest(query); + makeRequest(query); }); } @@ -724,22 +739,24 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * included in *all* indexes, you must supply an `excludeFromIndexes` array. See * below for an example. * - * @borrows {module:datastore/transaction#save} as save + * @borrows {@link Transaction#save} as save * * @throws {Error} If an unrecognized method is provided. * - * @param {object|object[]} entities - Datastore key object(s). - * @param {Key} entities.key - Datastore key object. - * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the example below to see * how to target properties at different levels of nesting within your - * entity. - * @param {string=} entities.method - Explicit method to use, either 'insert', + * @param {string} [entities.method] Explicit method to use, either 'insert', * 'update', or 'upsert'. - * @param {object} entities.data - Data to save with the provided key. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object} callback.apiResponse - The full API response. + * @param {object} entities.data Data to save with the provided key. + * entity. + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. * * @example * //- @@ -910,15 +927,20 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * var apiResponse = data[0]; * }); */ -DatastoreRequest.prototype.save = function(entities, callback) { +DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { entities = arrify(entities); + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } + var insertIndexes = {}; var mutations = []; var methods = { insert: true, update: true, - upsert: true + upsert: true, }; // Iterate over the entity objects, build a proto from all keys and values, @@ -974,13 +996,8 @@ DatastoreRequest.prototype.save = function(entities, callback) { mutations.push(mutation); }); - var protoOpts = { - service: 'Datastore', - method: 'commit' - }; - var reqOpts = { - mutations: mutations + mutations: mutations, }; function onCommit(err, resp) { @@ -1009,22 +1026,30 @@ DatastoreRequest.prototype.save = function(entities, callback) { return; } - this.request_(protoOpts, reqOpts, onCommit); + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts: reqOpts, + gaxOpts: gaxOptions, + }, + onCommit + ); }; /** - * Maps to {module:datastore#save}, forcing the method to be `update`. + * Maps to {@link Datastore#save}, forcing the method to be `update`. * - * @param {object|object[]} entities - Datastore key object(s). - * @param {Key} entities.key - Datastore key object. - * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the examples in - * {module:datastore#save} to see how to target properties at different + * {@link Datastore#save} to see how to target properties at different * levels of nesting within your entity. - * @param {object} entities.data - Data to save with the provided key. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object} callback.apiResponse - The full API response. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. */ DatastoreRequest.prototype.update = function(entities, callback) { entities = arrify(entities) @@ -1035,18 +1060,18 @@ DatastoreRequest.prototype.update = function(entities, callback) { }; /** - * Maps to {module:datastore#save}, forcing the method to be `upsert`. + * Maps to {@link Datastore#save}, forcing the method to be `upsert`. * - * @param {object|object[]} entities - Datastore key object(s). - * @param {Key} entities.key - Datastore key object. - * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the examples in - * {module:datastore#save} to see how to target properties at different + * {@link Datastore#save} to see how to target properties at different * levels of nesting within your entity. - * @param {object} entities.data - Data to save with the provided key. - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request - * @param {object} callback.apiResponse - The full API response. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. */ DatastoreRequest.prototype.upsert = function(entities, callback) { entities = arrify(entities) @@ -1060,24 +1085,24 @@ DatastoreRequest.prototype.upsert = function(entities, callback) { * Make a request to the API endpoint. Properties to indicate a transactional or * non-transactional operation are added automatically. * - * @param {string} method - Datastore action (allocateIds, commit, etc.). - * @param {object=} body - Request configuration object. - * @param {function} callback - The callback function. + * @param {object} config Configuration object. + * @param {object} config.gaxOpts GAX options. + * @param {function} config.method The gax method to call. + * @param {object} config.reqOpts Request options. + * @param {function} callback The callback function. * * @private */ -DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) { - if (!callback) { - callback = reqOpts; - reqOpts = {}; - } +DatastoreRequest.prototype.request_ = function(config, callback) { + var datastore = this.datastore; callback = callback || common.util.noop; var isTransaction = is.defined(this.id); - var method = protoOpts.method; + var method = config.method; + var reqOpts = extend(true, {}, config.reqOpts); - reqOpts.projectId = this.projectId; + reqOpts.projectId = datastore.projectId; // Set properties to indicate if we're in a transaction or not. if (method === 'commit') { @@ -1099,11 +1124,37 @@ DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) { } reqOpts.readOptions = { - transaction: this.id + transaction: this.id, }; } - this.request(protoOpts, reqOpts, callback); + datastore.auth.getProjectId(function(err, projectId) { + if (err) { + callback(err); + return; + } + + var clientName = config.client; + + if (!datastore.clients_.has(clientName)) { + datastore.clients_.set( + clientName, + new gapic.v1[clientName](datastore.options) + ); + } + + var gaxClient = datastore.clients_.get(clientName); + + reqOpts = common.util.replaceProjectIdToken(reqOpts, projectId); + + var gaxOpts = extend(true, {}, config.gaxOpts, { + headers: { + 'google-cloud-resource-prefix': `projects/${projectId}`, + }, + }); + + gaxClient[method](reqOpts, gaxOpts, callback); + }); }; /*! Developer Documentation @@ -1113,4 +1164,9 @@ DatastoreRequest.prototype.request_ = function(protoOpts, reqOpts, callback) { */ common.util.promisifyAll(DatastoreRequest); +/** + * Reference to the {@link DatastoreRequest} class. + * @name module:@google-cloud/datastore.DatastoreRequest + * @see DatastoreRequest + */ module.exports = DatastoreRequest; diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 3a90c1c7f11..61fb1e3693a 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -14,56 +14,60 @@ * limitations under the License. */ -/*! - * @module datastore/transaction - */ - 'use strict'; var arrify = require('arrify'); var common = require('@google-cloud/common'); var flatten = require('lodash.flatten'); +var is = require('is'); var prop = require('propprop'); var util = require('util'); -/** - * @type {module:datastore/entity} - * @private - */ var entity = require('./entity.js'); - -/** - * @type {module:datastore/request} - * @private - */ var Request = require('./request.js'); -/*! Developer Documentation - * - * @param {module:datastore} datastore - A Datastore instance. - */ /** * A transaction is a set of Datastore operations on one or more entities. Each * transaction is guaranteed to be atomic, which means that transactions are * never partially applied. Either all of the operations in the transaction are * applied, or none of them are applied. * - * @resource [Transactions Reference]{@link https://cloud.google.com/datastore/docs/concepts/transactions} + * @see [Transactions Reference]{@link https://cloud.google.com/datastore/docs/concepts/transactions} * - * @constructor - * @alias module:datastore/transaction + * @class + * @extends {Request} + * @param {Datastore} datastore A Datastore instance. * @mixes module:datastore/request * * @example - * var transaction = datastore.transaction(); + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); */ -function Transaction(datastore) { +function Transaction(datastore, options) { + /** + * @name Transaction#datastore + * @type {Datastore} + */ this.datastore = datastore; + /** + * @name Transaction#projectId + * @type {string} + */ this.projectId = datastore.projectId; + /** + * @name Transaction#namespace + * @type {string} + */ this.namespace = datastore.namespace; - this.request = datastore.request.bind(datastore); + options = options || {}; + + this.id = options.id; + this.readOnly = options.readOnly === true; + + this.request = datastore.request_.bind(datastore); // A queue for entity modifications made during the transaction. this.modifiedEntities_ = []; @@ -92,13 +96,19 @@ util.inherits(Transaction, Request); * * If the commit request fails, we will automatically rollback the transaction. * - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request. + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. * If the commit fails, we automatically try to rollback the transaction (see * {module:datastore/transaction#rollback}). - * @param {object} callback.apiResponse - The full API response. + * @param {object} callback.apiResponse The full API response. * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * transaction.commit(function(err, apiResponse) { * if (err) { * // Transaction could not be committed. @@ -112,9 +122,14 @@ util.inherits(Transaction, Request); * var apiResponse = data[0]; * }); */ -Transaction.prototype.commit = function(callback) { +Transaction.prototype.commit = function(gaxOptions, callback) { var self = this; + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } + callback = callback || common.util.noop; if (this.skipCommit) { @@ -125,11 +140,9 @@ Transaction.prototype.commit = function(callback) { var keys = {}; this.modifiedEntities_ - // Reverse the order of the queue to respect the "last queued request wins" // behavior. .reverse() - // Limit the operations we're going to send through to only the most // recently queued operations. E.g., if a user tries to save with the same // key they just asked to be deleted, the delete request will be ignored, @@ -148,14 +161,12 @@ Transaction.prototype.commit = function(callback) { return true; } }) - // Group entities together by method: `save` mutations, then `delete`. Note: // `save` mutations being first is required to maintain order when assigning // IDs to incomplete keys. .sort(function(a, b) { return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; }) - // Group arguments together so that we only make one call to each method. // This is important for `DatastoreRequest.save`, especially, as that method // handles assigning auto-generated IDs to the original keys passed in. When @@ -163,8 +174,8 @@ Transaction.prototype.commit = function(callback) { // keys together is necessary to maintain order. .reduce(function(acc, entityObject) { var lastEntityObject = acc[acc.length - 1]; - var sameMethod = lastEntityObject && - entityObject.method === lastEntityObject.method; + var sameMethod = + lastEntityObject && entityObject.method === lastEntityObject.method; if (!lastEntityObject || !sameMethod) { acc.push(entityObject); @@ -174,7 +185,6 @@ Transaction.prototype.commit = function(callback) { return acc; }, []) - // Call each of the mutational methods (DatastoreRequest[save,delete]) to // build up a `req` array on this instance. This will also build up a // `callbacks` array, that is the same callback that would run if we were @@ -187,53 +197,60 @@ Transaction.prototype.commit = function(callback) { Request.prototype[method].call(self, args, common.util.noop); }); - var protoOpts = { - service: 'Datastore', - method: 'commit' - }; - // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. var reqOpts = { - mutations: flatten(this.requests_.map(prop('mutations'))) + mutations: flatten(this.requests_.map(prop('mutations'))), }; - this.request_(protoOpts, reqOpts, function(err, resp) { - if (err) { - // Rollback automatically for the user. - self.rollback(function() { - // Provide the error & API response from the failed commit to the user. - // Even a failed rollback should be transparent. - // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 - callback(err, resp); - }); - return; - } + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts: reqOpts, + gaxOpts: gaxOptions, + }, + function(err, resp) { + if (err) { + // Rollback automatically for the user. + self.rollback(function() { + // Provide the error & API response from the failed commit to the user. + // Even a failed rollback should be transparent. + // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } - // The `callbacks` array was built previously. These are the callbacks that - // handle the API response normally when using the DatastoreRequest.save and - // .delete methods. - self.requestCallbacks_.forEach(function(cb) { - cb(null, resp); - }); + // The `callbacks` array was built previously. These are the callbacks that + // handle the API response normally when using the DatastoreRequest.save and + // .delete methods. + self.requestCallbacks_.forEach(function(cb) { + cb(null, resp); + }); - callback(null, resp); - }); + callback(null, resp); + } + ); }; /** * Create a query for the specified kind. See {module:datastore/query} for all * of the available methods. * - * @resource [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} * - * @see {module:datastore/query} + * @see {@link Query} * - * @param {string=} namespace - Namespace. - * @param {string} kind - The kind to query. - * @return {module:datastore/query} + * @param {string} [namespace] Namespace. + * @param {string} kind The kind to query. + * @returns {Query} * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * // Run the query inside the transaction. * transaction.run(function(err) { * if (err) { @@ -263,9 +280,13 @@ Transaction.prototype.createQuery = function() { * Delete all entities identified with the specified key(s) in the current * transaction. * - * @param {Key|Key[]} key - Datastore key object(s). + * @param {Key|Key[]} key Datastore key object(s). * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * transaction.run(function(err) { * if (err) { * // Error handling omitted. @@ -293,10 +314,10 @@ Transaction.prototype.delete = function(entities) { arrify(entities).forEach(function(ent) { self.modifiedEntities_.push({ entity: { - key: ent + key: ent, }, method: 'delete', - args: [ent] + args: [ent], }); }); }; @@ -304,11 +325,17 @@ Transaction.prototype.delete = function(entities) { /** * Reverse a transaction remotely and finalize the current transaction instance. * - * @param {function} callback - The callback function. - * @param {?error} callback.err - An error returned while making this request. - * @param {object} callback.apiResponse - The full API response. + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {object} callback.apiResponse The full API response. * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * transaction.run(function(err) { * if (err) { * // Error handling omitted. @@ -328,35 +355,52 @@ Transaction.prototype.delete = function(entities) { * var apiResponse = data[0]; * }); */ -Transaction.prototype.rollback = function(callback) { +Transaction.prototype.rollback = function(gaxOptions, callback) { var self = this; - callback = callback || common.util.noop; + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } - var protoOpts = { - service: 'Datastore', - method: 'rollback' - }; + callback = callback || common.util.noop; - this.request_(protoOpts, function(err, resp) { - self.skipCommit = true; + this.request_( + { + client: 'DatastoreClient', + method: 'rollback', + gaxOpts: gaxOptions, + }, + function(err, resp) { + self.skipCommit = true; - callback(err || null, resp); - }); + callback(err || null, resp); + } + ); }; /** * Begin a remote transaction. In the callback provided, run your transactional * commands. * - * @param {function} callback - The function to execute within the context of + * @param {object} [options] Configuration object. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {boolean} [options.readOnly=false] A read-only transaction cannot + * modify entities. + * @param {string} [options.transactionId] The ID of a previous transaction. + * @param {function} callback The function to execute within the context of * a transaction. - * @param {?error} callback.err - An error returned while making this request. - * @param {module:datastore/transaction} callback.transaction - This transaction + * @param {?error} callback.err An error returned while making this request. + * @param {Transaction} callback.transaction This transaction * instance. - * @param {object} callback.apiResponse - The full API response. + * @param {object} callback.apiResponse The full API response. * * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * transaction.run(function(err, transaction) { * // Perform Datastore transactional operations. * var key = datastore.key(['Company', 123]); @@ -385,26 +429,53 @@ Transaction.prototype.rollback = function(callback) { * var apiResponse = data[1]; * }); */ -Transaction.prototype.run = function(callback) { +Transaction.prototype.run = function(options, callback) { var self = this; + if (is.fn(options)) { + callback = options; + options = {}; + } + + options = options || {}; callback = callback || common.util.noop; - var protoOpts = { - service: 'Datastore', - method: 'beginTransaction' + var reqOpts = { + transactionOptions: {}, }; - this.request_(protoOpts, function(err, resp) { - if (err) { - callback(err, null, resp); - return; - } + if (options.readOnly || this.readOnly) { + reqOpts.transactionOptions.readOnly = {}; + } - self.id = resp.transaction; + if (options.transactionId || this.id) { + reqOpts.transactionOptions.readWrite = { + previousTransaction: options.transactionId || this.id, + }; + } - callback(null, self, resp); - }); + if (options.transactionOptions) { + reqOpts.transactionOptions = options.transactionOptions; + } + + this.request_( + { + client: 'DatastoreClient', + method: 'beginTransaction', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + function(err, resp) { + if (err) { + callback(err, null, resp); + return; + } + + self.id = resp.transaction; + + callback(null, self, resp); + } + ); }; /** @@ -422,23 +493,25 @@ Transaction.prototype.run = function(callback) { * included in *all* indexes, you must supply an `excludeFromIndexes` array. See * below for an example. * - * @param {object|object[]} entities - Datastore key object(s). - * @param {Key} entities.key - Datastore key object. - * @param {string[]=} entities.excludeFromIndexes - Exclude properties from + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the example below to see * how to target properties at different levels of nesting within your * entity. - * @param {object} entities.data - Data to save with the provided key. + * @param {object} entities.data Data to save with the provided key. * * @example - * //- - * // Save a single entity. - * // + * Save a single entity. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * // Notice that we are providing an incomplete key. After the transaction is * // committed, the Key object held by the `key` variable will be populated * // with a path containing its generated ID. * //- - * var key = datastore.key('Company'); + * const key = datastore.key('Company'); * * transaction.run(function(err) { * if (err) { @@ -459,10 +532,14 @@ Transaction.prototype.run = function(callback) { * }); * }); * - * //- + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. * // This will allow storing string values larger than 1500 bytes. - * //- + * * transaction.run(function(err) { * if (err) { * // Error handling omitted. @@ -495,11 +572,13 @@ Transaction.prototype.run = function(callback) { * }); * }); * - * //- - * // Save multiple entities at once. - * //- - * var companyKey = datastore.key(['Company', 123]); - * var productKey = datastore.key(['Product', 'Computer']); + * @example + * Save multiple entities at once. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * const companyKey = datastore.key(['Company', 123]); + * const productKey = datastore.key(['Product', 'Computer']); * * transaction.run(function(err) { * if (err) { @@ -534,10 +613,10 @@ Transaction.prototype.save = function(entities) { arrify(entities).forEach(function(ent) { self.modifiedEntities_.push({ entity: { - key: ent.key + key: ent.key, }, method: 'save', - args: [ent] + args: [ent], }); }); }; @@ -548,7 +627,12 @@ Transaction.prototype.save = function(entities) { * that a callback is omitted. */ common.util.promisifyAll(Transaction, { - exclude: ['createQuery', 'delete', 'save'] + exclude: ['createQuery', 'delete', 'save'], }); +/** + * Reference to the {@link Transaction} class. + * @name module:@google-cloud/datastore.Transaction + * @see Transaction + */ module.exports = Transaction; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 9d9408ace66..21816d3b35b 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -1,50 +1,25 @@ -/* - * Copyright 2017, Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * EDITING INSTRUCTIONS - * This file was generated from the file - * https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto, - * and updates to that file get reflected here through a refresh process. - * For the short term, the refresh process will only be runnable by Google - * engineers. - * - * The only allowed edits are to method and file documentation. A 3-way - * merge preserves those additions if the generated source changes. - */ -/* TODO: introduce line-wrapping so that it never exceeds the limit. */ -/* jscs: disable maximumLineLength */ -'use strict'; - -var configData = require('./datastore_client_config'); -var extend = require('extend'); -var gax = require('google-gax'); +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. -var SERVICE_ADDRESS = 'datastore.googleapis.com'; +'use strict'; -var DEFAULT_SERVICE_PORT = 443; +const gapicConfig = require('./datastore_client_config'); +const gax = require('google-gax'); +const merge = require('lodash.merge'); +const path = require('path'); -var CODE_GEN_NAME_VERSION = 'gapic/0.7.1'; - -/** - * The scopes needed to make gRPC calls to all of the methods defined in - * this service. - */ -var ALL_SCOPES = [ - 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/datastore' -]; +const VERSION = require('../../package.json').version; /** * Each RPC normalizes the partition IDs of the keys in its input entities, @@ -54,450 +29,588 @@ var ALL_SCOPES = [ * input keys sets the project ID (if not already set) to the project ID from * the request. * - * This will be created through a builder function which can be obtained by the module. - * See the following example of how to initialize the module and how to access to the builder. - * @see {@link datastoreClient} - * - * @example - * var datastoreV1 = require('@google-cloud/datastore').v1({ - * // optional auth parameters. - * }); - * var client = datastoreV1.datastoreClient(); - * * @class + * @memberof v1 */ -function DatastoreClient(gaxGrpc, grpcClients, opts) { - opts = extend({ - servicePath: SERVICE_ADDRESS, - port: DEFAULT_SERVICE_PORT, - clientConfig: {} - }, opts); - - var googleApiClient = [ - 'gl-node/' + process.versions.node - ]; - if (opts.libName && opts.libVersion) { - googleApiClient.push(opts.libName + '/' + opts.libVersion); - } - googleApiClient.push( - CODE_GEN_NAME_VERSION, - 'gax/' + gax.version, - 'grpc/' + gaxGrpc.grpcVersion - ); +class DatastoreClient { + /** + * Construct an instance of DatastoreClient. + * + * @param {object} [options] - The configuration object. See the subsequent + * parameters for more details. + * @param {object} [options.credentials] - Credentials object. + * @param {string} [options.credentials.client_email] + * @param {string} [options.credentials.private_key] + * @param {string} [options.email] - Account email address. Required when + * usaing a .pem or .p12 keyFilename. + * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or + * .p12 key downloaded from the Google Developers Console. If you provide + * a path to a JSON file, the projectId option above is not necessary. + * NOTE: .pem and .p12 require you to specify options.email as well. + * @param {number} [options.port] - The port on which to connect to + * the remote host. + * @param {string} [options.projectId] - The project ID from the Google + * Developer's Console, e.g. 'grape-spaceship-123'. We will also check + * the environment variable GCLOUD_PROJECT for your project ID. If your + * app is running in an environment which supports + * {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials}, + * your project ID will be detected automatically. + * @param {function} [options.promise] - Custom promise module to use instead + * of native Promises. + * @param {string} [options.servicePath] - The domain name of the + * API remote host. + */ + constructor(opts) { + this._descriptors = {}; + + // Ensure that options include the service address and port. + opts = Object.assign( + { + clientConfig: {}, + port: this.constructor.port, + servicePath: this.constructor.servicePath, + }, + opts + ); + + // Create a `gaxGrpc` object, with any grpc-specific options + // sent to the client. + opts.scopes = this.constructor.scopes; + var gaxGrpc = gax.grpc(opts); + + // Save the auth object to the client, for use by other methods. + this.auth = gaxGrpc.auth; - var defaults = gaxGrpc.constructSettings( + // Determine the client header string. + var clientHeader = [ + `gl-node/${process.version.node}`, + `grpc/${gaxGrpc.grpcVersion}`, + `gax/${gax.version}`, + `gapic/${VERSION}`, + ]; + if (opts.libName && opts.libVersion) { + clientHeader.push(`${opts.libName}/${opts.libVersion}`); + } + + // Load the applicable protos. + var protos = merge( + {}, + gaxGrpc.loadProto( + path.join(__dirname, '..', '..', 'protos'), + 'google/datastore/v1/datastore.proto' + ) + ); + + // Put together the default options sent with requests. + var defaults = gaxGrpc.constructSettings( 'google.datastore.v1.Datastore', - configData, + gapicConfig, opts.clientConfig, - {'x-goog-api-client': googleApiClient.join(' ')}); - - var self = this; - - this.auth = gaxGrpc.auth; - var datastoreStub = gaxGrpc.createStub( - grpcClients.google.datastore.v1.Datastore, - opts); - var datastoreStubMethods = [ - 'lookup', - 'runQuery', - 'beginTransaction', - 'commit', - 'rollback', - 'allocateIds' - ]; - datastoreStubMethods.forEach(function(methodName) { - self['_' + methodName] = gax.createApiCall( - datastoreStub.then(function(datastoreStub) { - return function() { - var args = Array.prototype.slice.call(arguments, 0); - return datastoreStub[methodName].apply(datastoreStub, args); - }; - }), - defaults[methodName], - null); - }); -} + {'x-goog-api-client': clientHeader.join(' ')} + ); -/** - * Get the project ID used by this class. - * @aram {function(Error, string)} callback - the callback to be called with - * the current project Id. - */ -DatastoreClient.prototype.getProjectId = function(callback) { - return this.auth.getProjectId(callback); -}; + // Set up a dictionary of "inner API calls"; the core implementation + // of calling the API is handled in `google-gax`, with this code + // merely providing the destination and request information. + this._innerApiCalls = {}; -// Service calls + // Put together the "service stub" for + // google.datastore.v1.Datastore. + var datastoreStub = gaxGrpc.createStub( + protos.google.datastore.v1.Datastore, + opts + ); -/** - * Looks up entities by key. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {Object} request.readOptions - * The options for this lookup request. - * - * This object should have the same structure as [ReadOptions]{@link ReadOptions} - * @param {Object[]} request.keys - * Keys of entities to look up. - * - * This object should have the same structure as [Key]{@link Key} - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [LookupResponse]{@link LookupResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [LookupResponse]{@link LookupResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * var readOptions = {}; - * var keys = []; - * var request = { - * projectId: projectId, - * readOptions: readOptions, - * keys: keys - * }; - * client.lookup(request).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.lookup = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; + // Iterate over each of the methods that the service provides + // and create an API call method for each. + var datastoreStubMethods = [ + 'lookup', + 'runQuery', + 'beginTransaction', + 'commit', + 'rollback', + 'allocateIds', + 'reserveIds', + ]; + for (let methodName of datastoreStubMethods) { + this._innerApiCalls[methodName] = gax.createApiCall( + datastoreStub.then( + stub => + function() { + var args = Array.prototype.slice.call(arguments, 0); + return stub[methodName].apply(stub, args); + } + ), + defaults[methodName], + null + ); + } } - if (options === undefined) { - options = {}; + + /** + * The DNS address for this API service. + */ + static get servicePath() { + return 'datastore.googleapis.com'; } - return this._lookup(request, options, callback); -}; + /** + * The port for this API service. + */ + static get port() { + return 443; + } -/** - * Queries for entities. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {Object} request.partitionId - * Entities are partitioned into subsets, identified by a partition ID. - * Queries are scoped to a single partition. - * This partition ID is normalized with the standard default context - * partition ID. - * - * This object should have the same structure as [PartitionId]{@link PartitionId} - * @param {Object} request.readOptions - * The options for this query. - * - * This object should have the same structure as [ReadOptions]{@link ReadOptions} - * @param {Object=} request.query - * The query to run. - * - * This object should have the same structure as [Query]{@link Query} - * @param {Object=} request.gqlQuery - * The GQL query to run. - * - * This object should have the same structure as [GqlQuery]{@link GqlQuery} - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [RunQueryResponse]{@link RunQueryResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RunQueryResponse]{@link RunQueryResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * var partitionId = {}; - * var readOptions = {}; - * var request = { - * projectId: projectId, - * partitionId: partitionId, - * readOptions: readOptions - * }; - * client.runQuery(request).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.runQuery = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; + /** + * The scopes needed to make gRPC calls for every method defined + * in this service. + */ + static get scopes() { + return [ + 'https://www.googleapis.com/auth/cloud-platform', + 'https://www.googleapis.com/auth/datastore', + ]; } - if (options === undefined) { - options = {}; + + /** + * Return the project ID used by this class. + * @param {function(Error, string)} callback - the callback to + * be called with the current project Id. + */ + getProjectId(callback) { + return this.auth.getProjectId(callback); } - return this._runQuery(request, options, callback); -}; + // ------------------- + // -- Service calls -- + // ------------------- -/** - * Begins a new transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [BeginTransactionResponse]{@link BeginTransactionResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [BeginTransactionResponse]{@link BeginTransactionResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * client.beginTransaction({projectId: projectId}).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.beginTransaction = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - if (options === undefined) { - options = {}; + /** + * Looks up entities by key. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {Object[]} request.keys + * Keys of entities to look up. + * + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} + * @param {Object} [request.readOptions] + * The options for this lookup request. + * + * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var keys = []; + * var request = { + * projectId: projectId, + * keys: keys, + * }; + * client.lookup(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + lookup(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; + + return this._innerApiCalls.lookup(request, options, callback); } - return this._beginTransaction(request, options, callback); -}; + /** + * Queries for entities. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {Object} request.partitionId + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + * + * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} + * @param {Object} [request.readOptions] + * The options for this query. + * + * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} + * @param {Object} [request.query] + * The query to run. + * + * This object should have the same structure as [Query]{@link google.datastore.v1.Query} + * @param {Object} [request.gqlQuery] + * The GQL query to run. + * + * This object should have the same structure as [GqlQuery]{@link google.datastore.v1.GqlQuery} + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var partitionId = {}; + * var request = { + * projectId: projectId, + * partitionId: partitionId, + * }; + * client.runQuery(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + runQuery(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; -/** - * Commits a transaction, optionally creating, deleting or modifying some - * entities. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {number} request.mode - * The type of commit to perform. Defaults to `TRANSACTIONAL`. - * - * The number should be among the values of [Mode]{@link Mode} - * @param {Object[]} request.mutations - * The mutations to perform. - * - * When mode is `TRANSACTIONAL`, mutations affecting a single entity are - * applied in order. The following sequences of mutations affecting a single - * entity are not permitted in a single `Commit` request: - * - * - `insert` followed by `insert` - * - `update` followed by `insert` - * - `upsert` followed by `insert` - * - `delete` followed by `update` - * - * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single - * entity. - * - * This object should have the same structure as [Mutation]{@link Mutation} - * @param {string=} request.transaction - * The identifier of the transaction associated with the commit. A - * transaction identifier is returned by a call to - * {@link Datastore.BeginTransaction}. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [CommitResponse]{@link CommitResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [CommitResponse]{@link CommitResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * var mode = datastoreV1.CommitRequest.Mode.MODE_UNSPECIFIED; - * var mutations = []; - * var request = { - * projectId: projectId, - * mode: mode, - * mutations: mutations - * }; - * client.commit(request).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.commit = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - if (options === undefined) { - options = {}; + return this._innerApiCalls.runQuery(request, options, callback); } - return this._commit(request, options, callback); -}; + /** + * Begins a new transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {Object} [request.transactionOptions] + * Options for a new transaction. + * + * This object should have the same structure as [TransactionOptions]{@link google.datastore.v1.TransactionOptions} + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * client.beginTransaction({projectId: projectId}) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + beginTransaction(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; -/** - * Rolls back a transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {string} request.transaction - * The transaction identifier, returned by a call to - * {@link Datastore.BeginTransaction}. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [RollbackResponse]{@link RollbackResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RollbackResponse]{@link RollbackResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * var transaction = ''; - * var request = { - * projectId: projectId, - * transaction: transaction - * }; - * client.rollback(request).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.rollback = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - if (options === undefined) { - options = {}; + return this._innerApiCalls.beginTransaction(request, options, callback); } - return this._rollback(request, options, callback); -}; + /** + * Commits a transaction, optionally creating, deleting or modifying some + * entities. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {number} request.mode + * The type of commit to perform. Defaults to `TRANSACTIONAL`. + * + * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} + * @param {Object[]} request.mutations + * The mutations to perform. + * + * When mode is `TRANSACTIONAL`, mutations affecting a single entity are + * applied in order. The following sequences of mutations affecting a single + * entity are not permitted in a single `Commit` request: + * + * - `insert` followed by `insert` + * - `update` followed by `insert` + * - `upsert` followed by `insert` + * - `delete` followed by `update` + * + * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single + * entity. + * + * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} + * @param {string} [request.transaction] + * The identifier of the transaction associated with the commit. A + * transaction identifier is returned by a call to + * Datastore.BeginTransaction. + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var mode = 'MODE_UNSPECIFIED'; + * var mutations = []; + * var request = { + * projectId: projectId, + * mode: mode, + * mutations: mutations, + * }; + * client.commit(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + commit(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; -/** - * Allocates IDs for the given keys, which is useful for referencing an entity - * before it is inserted. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {Object[]} request.keys - * A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. - * - * This object should have the same structure as [Key]{@link Key} - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [AllocateIdsResponse]{@link AllocateIdsResponse}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [AllocateIdsResponse]{@link AllocateIdsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * var client = datastoreV1.datastoreClient(); - * var projectId = ''; - * var keys = []; - * var request = { - * projectId: projectId, - * keys: keys - * }; - * client.allocateIds(request).then(function(responses) { - * var response = responses[0]; - * // doThingsWith(response) - * }).catch(function(err) { - * console.error(err); - * }); - */ -DatastoreClient.prototype.allocateIds = function(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - if (options === undefined) { - options = {}; + return this._innerApiCalls.commit(request, options, callback); } - return this._allocateIds(request, options, callback); -}; + /** + * Rolls back a transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {string} request.transaction + * The transaction identifier, returned by a call to + * Datastore.BeginTransaction. + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var transaction = ''; + * var request = { + * projectId: projectId, + * transaction: transaction, + * }; + * client.rollback(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + rollback(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; -function DatastoreClientBuilder(gaxGrpc) { - if (!(this instanceof DatastoreClientBuilder)) { - return new DatastoreClientBuilder(gaxGrpc); + return this._innerApiCalls.rollback(request, options, callback); } - var datastoreClient = gaxGrpc.load([{ - root: require('google-proto-files')('..'), - file: 'google/datastore/v1/datastore.proto' - }]); - extend(this, datastoreClient.google.datastore.v1); + /** + * Allocates IDs for the given keys, which is useful for referencing an entity + * before it is inserted. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {Object[]} request.keys + * A list of keys with incomplete key paths for which to allocate IDs. + * No key may be reserved/read-only. + * + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var keys = []; + * var request = { + * projectId: projectId, + * keys: keys, + * }; + * client.allocateIds(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); + */ + allocateIds(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; + return this._innerApiCalls.allocateIds(request, options, callback); + } /** - * Build a new instance of {@link DatastoreClient}. - * - * @param {Object=} opts - The optional parameters. - * @param {String=} opts.servicePath - * The domain name of the API remote host. - * @param {number=} opts.port - * The port on which to connect to the remote host. - * @param {grpc.ClientCredentials=} opts.sslCreds - * A ClientCredentials for use with an SSL-enabled channel. - * @param {Object=} opts.clientConfig - * The customized config to build the call settings. See - * {@link gax.constructSettings} for the format. + * Prevents the supplied keys' IDs from being auto-allocated by Cloud + * Datastore. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * The ID of the project against which to make the request. + * @param {Object[]} request.keys + * A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + * + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} + * @param {string} [request.databaseId] + * If not empty, the ID of the database against which to make the request. + * @param {Object} [options] + * Optional parameters. You can override the default settings for this call, e.g, timeout, + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * @param {function(?Error, ?Object)} [callback] + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + * + * @example + * + * const datastore = require('@google-cloud/datastore'); + * + * var client = new datastore.v1.DatastoreClient({ + * // optional auth parameters. + * }); + * + * var projectId = ''; + * var keys = []; + * var request = { + * projectId: projectId, + * keys: keys, + * }; + * client.reserveIds(request) + * .then(responses => { + * var response = responses[0]; + * // doThingsWith(response) + * }) + * .catch(err => { + * console.error(err); + * }); */ - this.datastoreClient = function(opts) { - return new DatastoreClient(gaxGrpc, datastoreClient, opts); - }; - extend(this.datastoreClient, DatastoreClient); + reserveIds(request, options, callback) { + if (options instanceof Function && callback === undefined) { + callback = options; + options = {}; + } + options = options || {}; + + return this._innerApiCalls.reserveIds(request, options, callback); + } } -module.exports = DatastoreClientBuilder; -module.exports.SERVICE_ADDRESS = SERVICE_ADDRESS; -module.exports.ALL_SCOPES = ALL_SCOPES; \ No newline at end of file + +module.exports = DatastoreClient; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index 84ac96e10dc..fb7c2c4498e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -49,6 +49,11 @@ "timeout_millis": 60000, "retry_codes_name": "non_idempotent", "retry_params_name": "default" + }, + "ReserveIds": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" } } } diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js similarity index 63% rename from handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js rename to handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index 3ff2ec875f0..61f3acdc70d 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -1,26 +1,22 @@ -/* - * Copyright 2017, Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. -/* - * Note: this file is purely for documentation. Any contents are not expected - * to be loaded as the JS file. - */ +// Note: this file is purely for documentation. Any contents are not expected +// to be loaded as the JS file. /** - * The request for {@link Datastore.Lookup}. + * The request for Datastore.Lookup. * * @property {string} projectId * The ID of the project against which to make the request. @@ -28,14 +24,15 @@ * @property {Object} readOptions * The options for this lookup request. * - * This object should have the same structure as [ReadOptions]{@link ReadOptions} + * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} * * @property {Object[]} keys * Keys of entities to look up. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * - * @class + * @typedef LookupRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.LookupRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var LookupRequest = { @@ -43,30 +40,31 @@ var LookupRequest = { }; /** - * The response for {@link Datastore.Lookup}. + * The response for Datastore.Lookup. * * @property {Object[]} found * Entities found as `ResultType.FULL` entities. The order of results in this * field is undefined and has no relation to the order of the keys in the * input. * - * This object should have the same structure as [EntityResult]{@link EntityResult} + * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} * * @property {Object[]} missing * Entities not found as `ResultType.KEY_ONLY` entities. The order of results * in this field is undefined and has no relation to the order of the keys * in the input. * - * This object should have the same structure as [EntityResult]{@link EntityResult} + * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} * * @property {Object[]} deferred * A list of keys that were not looked up due to resource constraints. The * order of results in this field is undefined and has no relation to the * order of the keys in the input. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * - * @class + * @typedef LookupResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.LookupResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var LookupResponse = { @@ -74,7 +72,7 @@ var LookupResponse = { }; /** - * The request for {@link Datastore.RunQuery}. + * The request for Datastore.RunQuery. * * @property {string} projectId * The ID of the project against which to make the request. @@ -85,24 +83,25 @@ var LookupResponse = { * This partition ID is normalized with the standard default context * partition ID. * - * This object should have the same structure as [PartitionId]{@link PartitionId} + * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} * * @property {Object} readOptions * The options for this query. * - * This object should have the same structure as [ReadOptions]{@link ReadOptions} + * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} * * @property {Object} query * The query to run. * - * This object should have the same structure as [Query]{@link Query} + * This object should have the same structure as [Query]{@link google.datastore.v1.Query} * * @property {Object} gqlQuery * The GQL query to run. * - * This object should have the same structure as [GqlQuery]{@link GqlQuery} + * This object should have the same structure as [GqlQuery]{@link google.datastore.v1.GqlQuery} * - * @class + * @typedef RunQueryRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.RunQueryRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var RunQueryRequest = { @@ -110,19 +109,20 @@ var RunQueryRequest = { }; /** - * The response for {@link Datastore.RunQuery}. + * The response for Datastore.RunQuery. * * @property {Object} batch * A batch of query results (always present). * - * This object should have the same structure as [QueryResultBatch]{@link QueryResultBatch} + * This object should have the same structure as [QueryResultBatch]{@link google.datastore.v1.QueryResultBatch} * * @property {Object} query * The parsed form of the `GqlQuery` from the request, if it was set. * - * This object should have the same structure as [Query]{@link Query} + * This object should have the same structure as [Query]{@link google.datastore.v1.Query} * - * @class + * @typedef RunQueryResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.RunQueryResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var RunQueryResponse = { @@ -130,12 +130,18 @@ var RunQueryResponse = { }; /** - * The request for {@link Datastore.BeginTransaction}. + * The request for Datastore.BeginTransaction. * * @property {string} projectId * The ID of the project against which to make the request. * - * @class + * @property {Object} transactionOptions + * Options for a new transaction. + * + * This object should have the same structure as [TransactionOptions]{@link google.datastore.v1.TransactionOptions} + * + * @typedef BeginTransactionRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.BeginTransactionRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var BeginTransactionRequest = { @@ -143,12 +149,13 @@ var BeginTransactionRequest = { }; /** - * The response for {@link Datastore.BeginTransaction}. + * The response for Datastore.BeginTransaction. * * @property {string} transaction * The transaction identifier (always present). * - * @class + * @typedef BeginTransactionResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.BeginTransactionResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var BeginTransactionResponse = { @@ -156,16 +163,17 @@ var BeginTransactionResponse = { }; /** - * The request for {@link Datastore.Rollback}. + * The request for Datastore.Rollback. * * @property {string} projectId * The ID of the project against which to make the request. * * @property {string} transaction * The transaction identifier, returned by a call to - * {@link Datastore.BeginTransaction}. + * Datastore.BeginTransaction. * - * @class + * @typedef RollbackRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var RollbackRequest = { @@ -173,9 +181,10 @@ var RollbackRequest = { }; /** - * The response for {@link Datastore.Rollback}. + * The response for Datastore.Rollback. * (an empty message). - * @class + * @typedef RollbackResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var RollbackResponse = { @@ -183,7 +192,7 @@ var RollbackResponse = { }; /** - * The request for {@link Datastore.Commit}. + * The request for Datastore.Commit. * * @property {string} projectId * The ID of the project against which to make the request. @@ -191,12 +200,12 @@ var RollbackResponse = { * @property {number} mode * The type of commit to perform. Defaults to `TRANSACTIONAL`. * - * The number should be among the values of [Mode]{@link Mode} + * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} * * @property {string} transaction * The identifier of the transaction associated with the commit. A * transaction identifier is returned by a call to - * {@link Datastore.BeginTransaction}. + * Datastore.BeginTransaction. * * @property {Object[]} mutations * The mutations to perform. @@ -213,9 +222,10 @@ var RollbackResponse = { * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single * entity. * - * This object should have the same structure as [Mutation]{@link Mutation} + * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} * - * @class + * @typedef CommitRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.CommitRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var CommitRequest = { @@ -225,6 +235,7 @@ var CommitRequest = { * The modes available for commits. * * @enum {number} + * @memberof google.datastore.v1 */ Mode: { @@ -247,19 +258,20 @@ var CommitRequest = { }; /** - * The response for {@link Datastore.Commit}. + * The response for Datastore.Commit. * * @property {Object[]} mutationResults * The result of performing the mutations. * The i-th mutation result corresponds to the i-th mutation in the request. * - * This object should have the same structure as [MutationResult]{@link MutationResult} + * This object should have the same structure as [MutationResult]{@link google.datastore.v1.MutationResult} * * @property {number} indexUpdates * The number of index entries updated during the commit, or zero if none were * updated. * - * @class + * @typedef CommitResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.CommitResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var CommitResponse = { @@ -267,7 +279,7 @@ var CommitResponse = { }; /** - * The request for {@link Datastore.AllocateIds}. + * The request for Datastore.AllocateIds. * * @property {string} projectId * The ID of the project against which to make the request. @@ -276,9 +288,10 @@ var CommitResponse = { * A list of keys with incomplete key paths for which to allocate IDs. * No key may be reserved/read-only. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * - * @class + * @typedef AllocateIdsRequest + * @memberof google.datastore.v1 * @see [google.datastore.v1.AllocateIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var AllocateIdsRequest = { @@ -286,21 +299,55 @@ var AllocateIdsRequest = { }; /** - * The response for {@link Datastore.AllocateIds}. + * The response for Datastore.AllocateIds. * * @property {Object[]} keys * The keys specified in the request (in the same order), each with * its key path completed with a newly allocated ID. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * - * @class + * @typedef AllocateIdsResponse + * @memberof google.datastore.v1 * @see [google.datastore.v1.AllocateIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var AllocateIdsResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; +/** + * The request for Datastore.ReserveIds. + * + * @property {string} projectId + * The ID of the project against which to make the request. + * + * @property {string} databaseId + * If not empty, the ID of the database against which to make the request. + * + * @property {Object[]} keys + * A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + * + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} + * + * @typedef ReserveIdsRequest + * @memberof google.datastore.v1 + * @see [google.datastore.v1.ReserveIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} + */ +var ReserveIdsRequest = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; + +/** + * The response for Datastore.ReserveIds. + * @typedef ReserveIdsResponse + * @memberof google.datastore.v1 + * @see [google.datastore.v1.ReserveIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} + */ +var ReserveIdsResponse = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; + /** * A mutation to apply to an entity. * @@ -308,31 +355,32 @@ var AllocateIdsResponse = { * The entity to insert. The entity must not already exist. * The entity key's final path element may be incomplete. * - * This object should have the same structure as [Entity]{@link Entity} + * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} * * @property {Object} update * The entity to update. The entity must already exist. * Must have a complete key path. * - * This object should have the same structure as [Entity]{@link Entity} + * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} * * @property {Object} upsert * The entity to upsert. The entity may or may not already exist. * The entity key's final path element may be incomplete. * - * This object should have the same structure as [Entity]{@link Entity} + * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} * * @property {Object} delete * The key of the entity to delete. The entity may or may not already exist. * Must have a complete key path and must not be reserved/read-only. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * * @property {number} baseVersion * The version of the entity that this mutation is being applied to. If this * does not match the current version on the server, the mutation conflicts. * - * @class + * @typedef Mutation + * @memberof google.datastore.v1 * @see [google.datastore.v1.Mutation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var Mutation = { @@ -346,7 +394,7 @@ var Mutation = { * The automatically allocated key. * Set only when the mutation allocated a key. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * * @property {number} version * The version of the entity on the server after processing the mutation. If @@ -359,7 +407,8 @@ var Mutation = { * Whether a conflict was detected for this mutation. Always false when a * conflict detection strategy field is not set in the mutation. * - * @class + * @typedef MutationResult + * @memberof google.datastore.v1 * @see [google.datastore.v1.MutationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var MutationResult = { @@ -373,14 +422,15 @@ var MutationResult = { * The non-transactional read consistency to use. * Cannot be set to `STRONG` for global queries. * - * The number should be among the values of [ReadConsistency]{@link ReadConsistency} + * The number should be among the values of [ReadConsistency]{@link google.datastore.v1.ReadConsistency} * * @property {string} transaction * The identifier of the transaction in which to read. A * transaction identifier is returned by a call to - * {@link Datastore.BeginTransaction}. + * Datastore.BeginTransaction. * - * @class + * @typedef ReadOptions + * @memberof google.datastore.v1 * @see [google.datastore.v1.ReadOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ var ReadOptions = { @@ -390,6 +440,7 @@ var ReadOptions = { * The possible values for read consistencies. * * @enum {number} + * @memberof google.datastore.v1 */ ReadConsistency: { @@ -408,4 +459,53 @@ var ReadOptions = { */ EVENTUAL: 2 } +}; + +/** + * Options for beginning a new transaction. + * + * Transactions can be created explicitly with calls to + * Datastore.BeginTransaction or implicitly by setting + * ReadOptions.new_transaction in read requests. + * + * @property {Object} readWrite + * The transaction should allow both reads and writes. + * + * This object should have the same structure as [ReadWrite]{@link google.datastore.v1.ReadWrite} + * + * @property {Object} readOnly + * The transaction should only allow reads. + * + * This object should have the same structure as [ReadOnly]{@link google.datastore.v1.ReadOnly} + * + * @typedef TransactionOptions + * @memberof google.datastore.v1 + * @see [google.datastore.v1.TransactionOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} + */ +var TransactionOptions = { + // This is for documentation. Actual contents will be loaded by gRPC. + + /** + * Options specific to read / write transactions. + * + * @property {string} previousTransaction + * The transaction identifier of the transaction being retried. + * + * @typedef ReadWrite + * @memberof google.datastore.v1 + * @see [google.datastore.v1.TransactionOptions.ReadWrite definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} + */ + ReadWrite: { + // This is for documentation. Actual contents will be loaded by gRPC. + }, + + /** + * Options specific to read-only transactions. + * @typedef ReadOnly + * @memberof google.datastore.v1 + * @see [google.datastore.v1.TransactionOptions.ReadOnly definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} + */ + ReadOnly: { + // This is for documentation. Actual contents will be loaded by gRPC. + } }; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js similarity index 82% rename from handwritten/nodejs-datastore/src/v1/doc/doc_entity.js rename to handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index 33ae665f9da..a7cfd513bdd 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -1,23 +1,19 @@ -/* - * Copyright 2017, Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. -/* - * Note: this file is purely for documentation. Any contents are not expected - * to be loaded as the JS file. - */ +// Note: this file is purely for documentation. Any contents are not expected +// to be loaded as the JS file. /** * A partition ID identifies a grouping of entities. The grouping is always @@ -46,7 +42,8 @@ * @property {string} namespaceId * If not empty, the ID of the namespace to which the entities belong. * - * @class + * @typedef PartitionId + * @memberof google.datastore.v1 * @see [google.datastore.v1.PartitionId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ var PartitionId = { @@ -64,7 +61,7 @@ var PartitionId = { * ID and namespace ID. * Queries are scoped to a single partition. * - * This object should have the same structure as [PartitionId]{@link PartitionId} + * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} * * @property {Object[]} path * The entity path. @@ -84,9 +81,10 @@ var PartitionId = { * * A path can never be empty, and a path can have at most 100 elements. * - * This object should have the same structure as [PathElement]{@link PathElement} + * This object should have the same structure as [PathElement]{@link google.datastore.v1.PathElement} * - * @class + * @typedef Key + * @memberof google.datastore.v1 * @see [google.datastore.v1.Key definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ var Key = { @@ -115,7 +113,8 @@ var Key = { * A name must not be more than 1500 bytes when UTF-8 encoded. * Cannot be `""`. * - * @class + * @typedef PathElement + * @memberof google.datastore.v1 * @see [google.datastore.v1.Key.PathElement definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ PathElement: { @@ -131,9 +130,10 @@ var Key = { * The order of this array may not be preserved if it contains a mix of * indexed and unindexed values. * - * This object should have the same structure as [Value]{@link Value} + * This object should have the same structure as [Value]{@link google.datastore.v1.Value} * - * @class + * @typedef ArrayValue + * @memberof google.datastore.v1 * @see [google.datastore.v1.ArrayValue definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ var ArrayValue = { @@ -147,7 +147,7 @@ var ArrayValue = { * @property {number} nullValue * A null value. * - * The number should be among the values of [google.protobuf.NullValue]{@link external:"google.protobuf.NullValue"} + * The number should be among the values of [NullValue]{@link google.protobuf.NullValue} * * @property {boolean} booleanValue * A boolean value. @@ -163,12 +163,12 @@ var ArrayValue = { * When stored in the Datastore, precise only to microseconds; * any additional precision is rounded down. * - * This object should have the same structure as [google.protobuf.Timestamp]{@link external:"google.protobuf.Timestamp"} + * This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp} * * @property {Object} keyValue * A key value. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * * @property {string} stringValue * A UTF-8 encoded string value. @@ -184,7 +184,7 @@ var ArrayValue = { * @property {Object} geoPointValue * A geo point value representing a point on the surface of Earth. * - * This object should have the same structure as [google.type.LatLng]{@link external:"google.type.LatLng"} + * This object should have the same structure as [LatLng]{@link google.type.LatLng} * * @property {Object} entityValue * An entity value. @@ -193,7 +193,7 @@ var ArrayValue = { * - May have a key with an incomplete key path. * - May have a reserved/read-only key. * - * This object should have the same structure as [Entity]{@link Entity} + * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} * * @property {Object} arrayValue * An array value. @@ -201,7 +201,7 @@ var ArrayValue = { * A `Value` instance that sets field `array_value` must not set fields * `meaning` or `exclude_from_indexes`. * - * This object should have the same structure as [ArrayValue]{@link ArrayValue} + * This object should have the same structure as [ArrayValue]{@link google.datastore.v1.ArrayValue} * * @property {number} meaning * The `meaning` field should only be populated for backwards compatibility. @@ -210,7 +210,8 @@ var ArrayValue = { * If the value should be excluded from all indexes including those defined * explicitly. * - * @class + * @typedef Value + * @memberof google.datastore.v1 * @see [google.datastore.v1.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ var Value = { @@ -232,7 +233,7 @@ var Value = { * An entity's kind is its key path's last element's kind, * or null if it has no key. * - * This object should have the same structure as [Key]{@link Key} + * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * * @property {Object.} properties * The entity's properties. @@ -242,7 +243,8 @@ var Value = { * The name must not contain more than 500 characters. * The name cannot be `""`. * - * @class + * @typedef Entity + * @memberof google.datastore.v1 * @see [google.datastore.v1.Entity definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ var Entity = { diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js similarity index 82% rename from handwritten/nodejs-datastore/src/v1/doc/doc_query.js rename to handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 90c44904ce8..be68ae1cdfd 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -1,23 +1,19 @@ -/* - * Copyright 2017, Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: this file is purely for documentation. Any contents are not expected - * to be loaded as the JS file. - */ +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Note: this file is purely for documentation. Any contents are not expected +// to be loaded as the JS file. /** * The result of fetching an entity from Datastore. @@ -25,16 +21,16 @@ * @property {Object} entity * The resulting entity. * - * This object should have the same structure as [Entity]{@link Entity} + * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} * * @property {number} version * The version of the entity, a strictly positive number that monotonically * increases with changes to the entity. * - * This field is set for {@link `FULL`} entity + * This field is set for `FULL` entity * results. * - * For {@link missing} entities in `LookupResponse`, this + * For missing entities in `LookupResponse`, this * is the version of the snapshot that was used to look up the entity, and it * is always set except for eventually consistent reads. * @@ -42,7 +38,8 @@ * A cursor that points to the position after the result entity. * Set only when the `EntityResult` is part of a `QueryResultBatch` message. * - * @class + * @typedef EntityResult + * @memberof google.datastore.v1 * @see [google.datastore.v1.EntityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var EntityResult = { @@ -56,6 +53,7 @@ var EntityResult = { * specifies a `ResultType` for all the values in field `entity_results`). * * @enum {number} + * @memberof google.datastore.v1 */ ResultType: { @@ -87,30 +85,30 @@ var EntityResult = { * @property {Object[]} projection * The projection to return. Defaults to returning all properties. * - * This object should have the same structure as [Projection]{@link Projection} + * This object should have the same structure as [Projection]{@link google.datastore.v1.Projection} * * @property {Object[]} kind * The kinds to query (if empty, returns entities of all kinds). * Currently at most 1 kind may be specified. * - * This object should have the same structure as [KindExpression]{@link KindExpression} + * This object should have the same structure as [KindExpression]{@link google.datastore.v1.KindExpression} * * @property {Object} filter * The filter to apply. * - * This object should have the same structure as [Filter]{@link Filter} + * This object should have the same structure as [Filter]{@link google.datastore.v1.Filter} * * @property {Object[]} order * The order to apply to the query results (if empty, order is unspecified). * - * This object should have the same structure as [PropertyOrder]{@link PropertyOrder} + * This object should have the same structure as [PropertyOrder]{@link google.datastore.v1.PropertyOrder} * * @property {Object[]} distinctOn * The properties to make distinct. The query results will contain the first * result for each distinct combination of values for the given properties * (if empty, all results are returned). * - * This object should have the same structure as [PropertyReference]{@link PropertyReference} + * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} * * @property {string} startCursor * A starting point for the query results. Query cursors are @@ -132,9 +130,10 @@ var EntityResult = { * Unspecified is interpreted as no limit. * Must be >= 0 if specified. * - * This object should have the same structure as [google.protobuf.Int32Value]{@link external:"google.protobuf.Int32Value"} + * This object should have the same structure as [Int32Value]{@link google.protobuf.Int32Value} * - * @class + * @typedef Query + * @memberof google.datastore.v1 * @see [google.datastore.v1.Query definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var Query = { @@ -147,7 +146,8 @@ var Query = { * @property {string} name * The name of the kind. * - * @class + * @typedef KindExpression + * @memberof google.datastore.v1 * @see [google.datastore.v1.KindExpression definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var KindExpression = { @@ -161,7 +161,8 @@ var KindExpression = { * The name of the property. * If name includes "."s, it may be interpreted as a property name path. * - * @class + * @typedef PropertyReference + * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyReference definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var PropertyReference = { @@ -174,9 +175,10 @@ var PropertyReference = { * @property {Object} property * The property to project. * - * This object should have the same structure as [PropertyReference]{@link PropertyReference} + * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} * - * @class + * @typedef Projection + * @memberof google.datastore.v1 * @see [google.datastore.v1.Projection definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var Projection = { @@ -189,14 +191,15 @@ var Projection = { * @property {Object} property * The property to order by. * - * This object should have the same structure as [PropertyReference]{@link PropertyReference} + * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} * * @property {number} direction * The direction to order by. Defaults to `ASCENDING`. * - * The number should be among the values of [Direction]{@link Direction} + * The number should be among the values of [Direction]{@link google.datastore.v1.Direction} * - * @class + * @typedef PropertyOrder + * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyOrder definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var PropertyOrder = { @@ -206,6 +209,7 @@ var PropertyOrder = { * The sort direction. * * @enum {number} + * @memberof google.datastore.v1 */ Direction: { @@ -232,14 +236,15 @@ var PropertyOrder = { * @property {Object} compositeFilter * A composite filter. * - * This object should have the same structure as [CompositeFilter]{@link CompositeFilter} + * This object should have the same structure as [CompositeFilter]{@link google.datastore.v1.CompositeFilter} * * @property {Object} propertyFilter * A filter on a property. * - * This object should have the same structure as [PropertyFilter]{@link PropertyFilter} + * This object should have the same structure as [PropertyFilter]{@link google.datastore.v1.PropertyFilter} * - * @class + * @typedef Filter + * @memberof google.datastore.v1 * @see [google.datastore.v1.Filter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var Filter = { @@ -252,15 +257,16 @@ var Filter = { * @property {number} op * The operator for combining multiple filters. * - * The number should be among the values of [Operator]{@link Operator} + * The number should be among the values of [Operator]{@link google.datastore.v1.Operator} * * @property {Object[]} filters * The list of filters to combine. * Must contain at least one filter. * - * This object should have the same structure as [Filter]{@link Filter} + * This object should have the same structure as [Filter]{@link google.datastore.v1.Filter} * - * @class + * @typedef CompositeFilter + * @memberof google.datastore.v1 * @see [google.datastore.v1.CompositeFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var CompositeFilter = { @@ -270,6 +276,7 @@ var CompositeFilter = { * A composite filter operator. * * @enum {number} + * @memberof google.datastore.v1 */ Operator: { @@ -291,19 +298,20 @@ var CompositeFilter = { * @property {Object} property * The property to filter by. * - * This object should have the same structure as [PropertyReference]{@link PropertyReference} + * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} * * @property {number} op * The operator to filter by. * - * The number should be among the values of [Operator]{@link Operator} + * The number should be among the values of [Operator]{@link google.datastore.v1.Operator} * * @property {Object} value * The value to compare the property to. * - * This object should have the same structure as [Value]{@link Value} + * This object should have the same structure as [Value]{@link google.datastore.v1.Value} * - * @class + * @typedef PropertyFilter + * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var PropertyFilter = { @@ -313,6 +321,7 @@ var PropertyFilter = { * A property filter operator. * * @enum {number} + * @memberof google.datastore.v1 */ Operator: { @@ -380,9 +389,10 @@ var PropertyFilter = { * For each binding site numbered i in `query_string`, there must be an i-th * numbered parameter. The inverse must also be true. * - * This object should have the same structure as [GqlQueryParameter]{@link GqlQueryParameter} + * This object should have the same structure as [GqlQueryParameter]{@link google.datastore.v1.GqlQueryParameter} * - * @class + * @typedef GqlQuery + * @memberof google.datastore.v1 * @see [google.datastore.v1.GqlQuery definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var GqlQuery = { @@ -395,13 +405,14 @@ var GqlQuery = { * @property {Object} value * A value parameter. * - * This object should have the same structure as [Value]{@link Value} + * This object should have the same structure as [Value]{@link google.datastore.v1.Value} * * @property {string} cursor * A query cursor. Query cursors are returned in query * result batches. * - * @class + * @typedef GqlQueryParameter + * @memberof google.datastore.v1 * @see [google.datastore.v1.GqlQueryParameter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var GqlQueryParameter = { @@ -421,12 +432,12 @@ var GqlQueryParameter = { * @property {number} entityResultType * The result type for every entity in `entity_results`. * - * The number should be among the values of [ResultType]{@link ResultType} + * The number should be among the values of [ResultType]{@link google.datastore.v1.ResultType} * * @property {Object[]} entityResults * The results for this batch. * - * This object should have the same structure as [EntityResult]{@link EntityResult} + * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} * * @property {string} endCursor * A cursor that points to the position after the last result in the batch. @@ -434,7 +445,7 @@ var GqlQueryParameter = { * @property {number} moreResults * The state of the query after the current batch. * - * The number should be among the values of [MoreResultsType]{@link MoreResultsType} + * The number should be among the values of [MoreResultsType]{@link google.datastore.v1.MoreResultsType} * * @property {number} snapshotVersion * The version number of the snapshot this batch was returned from. @@ -447,7 +458,8 @@ var GqlQueryParameter = { * is valid for all preceding batches. * The value will be zero for eventually consistent queries. * - * @class + * @typedef QueryResultBatch + * @memberof google.datastore.v1 * @see [google.datastore.v1.QueryResultBatch definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ var QueryResultBatch = { @@ -457,6 +469,7 @@ var QueryResultBatch = { * The possible values for the `more_results` field. * * @enum {number} + * @memberof google.datastore.v1 */ MoreResultsType: { @@ -482,7 +495,7 @@ var QueryResultBatch = { MORE_RESULTS_AFTER_CURSOR: 4, /** - * The query has been exhausted. + * The query is finished, and there are no more results. */ NO_MORE_RESULTS: 3 } diff --git a/handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js similarity index 59% rename from handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js rename to handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index 46a5e3e2213..0ccf17f236b 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/doc_google_protobuf_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -1,128 +1,160 @@ -/* - * Copyright 2017, Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. -/* - * Note: this file is purely for documentation. Any contents are not expected - * to be loaded as the JS file. - */ +// Note: this file is purely for documentation. Any contents are not expected +// to be loaded as the JS file. /** * Wrapper message for `double`. * * The JSON representation for `DoubleValue` is JSON number. * - * @external "google.protobuf.DoubleValue" * @property {number} value * The double value. * + * @typedef DoubleValue + * @memberof google.protobuf * @see [google.protobuf.DoubleValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var DoubleValue = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `float`. * * The JSON representation for `FloatValue` is JSON number. * - * @external "google.protobuf.FloatValue" * @property {number} value * The float value. * + * @typedef FloatValue + * @memberof google.protobuf * @see [google.protobuf.FloatValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var FloatValue = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `int64`. * * The JSON representation for `Int64Value` is JSON string. * - * @external "google.protobuf.Int64Value" * @property {number} value * The int64 value. * + * @typedef Int64Value + * @memberof google.protobuf * @see [google.protobuf.Int64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var Int64Value = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `uint64`. * * The JSON representation for `UInt64Value` is JSON string. * - * @external "google.protobuf.UInt64Value" * @property {number} value * The uint64 value. * + * @typedef UInt64Value + * @memberof google.protobuf * @see [google.protobuf.UInt64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var UInt64Value = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `int32`. * * The JSON representation for `Int32Value` is JSON number. * - * @external "google.protobuf.Int32Value" * @property {number} value * The int32 value. * + * @typedef Int32Value + * @memberof google.protobuf * @see [google.protobuf.Int32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var Int32Value = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `uint32`. * * The JSON representation for `UInt32Value` is JSON number. * - * @external "google.protobuf.UInt32Value" * @property {number} value * The uint32 value. * + * @typedef UInt32Value + * @memberof google.protobuf * @see [google.protobuf.UInt32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var UInt32Value = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `bool`. * * The JSON representation for `BoolValue` is JSON `true` and `false`. * - * @external "google.protobuf.BoolValue" * @property {boolean} value * The bool value. * + * @typedef BoolValue + * @memberof google.protobuf * @see [google.protobuf.BoolValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var BoolValue = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `string`. * * The JSON representation for `StringValue` is JSON string. * - * @external "google.protobuf.StringValue" * @property {string} value * The string value. * + * @typedef StringValue + * @memberof google.protobuf * @see [google.protobuf.StringValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ +var StringValue = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; /** * Wrapper message for `bytes`. * * The JSON representation for `BytesValue` is JSON string. * - * @external "google.protobuf.BytesValue" * @property {string} value * The bytes value. * + * @typedef BytesValue + * @memberof google.protobuf * @see [google.protobuf.BytesValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ \ No newline at end of file + */ +var BytesValue = { + // This is for documentation. Actual contents will be loaded by gRPC. +}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/src/v1/index.js index 47d7f45c677..52cca3f0e7c 100644 --- a/handwritten/nodejs-datastore/src/v1/index.js +++ b/handwritten/nodejs-datastore/src/v1/index.js @@ -1,33 +1,19 @@ -/* - * Copyright 2016 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -'use strict'; - -var datastoreClient = require('./datastore_client'); -var gax = require('google-gax'); -var extend = require('extend'); +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. -function v1(options) { - options = extend({ - scopes: v1.ALL_SCOPES - }, options); - var gaxGrpc = gax.grpc(options); - return datastoreClient(gaxGrpc); -} +'use strict'; -v1.SERVICE_ADDRESS = datastoreClient.SERVICE_ADDRESS; -v1.ALL_SCOPES = datastoreClient.ALL_SCOPES; +const DatastoreClient = require('./datastore_client'); -module.exports = v1; +module.exports.DatastoreClient = DatastoreClient; diff --git a/handwritten/nodejs-datastore/system-test/.eslintrc.yml b/handwritten/nodejs-datastore/system-test/.eslintrc.yml new file mode 100644 index 00000000000..2e6882e46d2 --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/.eslintrc.yml @@ -0,0 +1,6 @@ +--- +env: + mocha: true +rules: + node/no-unpublished-require: off + no-console: off diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 538473064b7..532fc5a42a1 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -22,11 +22,10 @@ var Buffer = require('safe-buffer').Buffer; var Datastore = require('../'); var entity = require('../src/entity.js'); -var env = require('../../../system-test/env.js'); describe('Datastore', function() { var testKinds = []; - var datastore = new Datastore(env); + var datastore = new Datastore({}); // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. var key = datastore.key; @@ -38,8 +37,7 @@ describe('Datastore', function() { after(function(done) { function deleteEntities(kind, callback) { - var query = datastore.createQuery(kind) - .select('__key__'); + var query = datastore.createQuery(kind).select('__key__'); datastore.runQuery(query, function(err, entities) { if (err) { @@ -78,8 +76,8 @@ describe('Datastore', function() { rating: 5.0, likes: null, metadata: { - views: 100 - } + views: 100, + }, }; it('should excludeFromIndexes correctly', function(done) { @@ -99,14 +97,14 @@ describe('Datastore', function() { nestedLongStringArray: [ { longString: longString, - nestedProperty: true + nestedProperty: true, }, { - longString: longString - } - ] - } - ] + longString: longString, + }, + ], + }, + ], }, longStringArray: [ { @@ -114,47 +112,50 @@ describe('Datastore', function() { nestedLongStringArray: [ { longString: longString, - nestedProperty: true + nestedProperty: true, }, { - longString: longString - } - ] - } - ] - } + longString: longString, + }, + ], + }, + ], + }, }; - datastore.save({ - key: postKey, - data: data, - excludeFromIndexes: [ - 'longString', - 'metadata.obj.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString' - ] - }, function(err) { - assert.ifError(err); - - datastore.get(postKey, function(err, entity) { + datastore.save( + { + key: postKey, + data: data, + excludeFromIndexes: [ + 'longString', + 'metadata.obj.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ], + }, + function(err) { assert.ifError(err); - assert.deepEqual(entity, data); - assert.deepEqual(entity[datastore.KEY], postKey); + datastore.get(postKey, function(err, entity) { + assert.ifError(err); - datastore.delete(postKey, done); - }); - }); + assert.deepEqual(entity, data); + assert.deepEqual(entity[datastore.KEY], postKey); + + datastore.delete(postKey, done); + }); + } + ); }); it('should save/get/delete with a key name', function(done) { var postKey = datastore.key(['Post', 'post1']); - datastore.save({ key: postKey, data: post }, function(err) { + datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); datastore.get(postKey, function(err, entity) { @@ -171,7 +172,7 @@ describe('Datastore', function() { it('should save/get/delete with a numeric key id', function(done) { var postKey = datastore.key(['Post', 123456789]); - datastore.save({ key: postKey, data: post }, function(err) { + datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); datastore.get(postKey, function(err, entity) { @@ -187,10 +188,10 @@ describe('Datastore', function() { it('should save/get/delete a buffer', function(done) { var postKey = datastore.key(['Post']); var data = { - buf: new Buffer('010100000000000000000059400000000000006940', 'hex') + buf: new Buffer('010100000000000000000059400000000000006940', 'hex'), }; - datastore.save({ key: postKey, data: data }, function(err) { + datastore.save({key: postKey, data: data}, function(err) { assert.ifError(err); var assignedId = postKey.id; @@ -209,7 +210,7 @@ describe('Datastore', function() { it('should save/get/delete with a generated key id', function(done) { var postKey = datastore.key('Post'); - datastore.save({ key: postKey, data: post }, function(err) { + datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); // The key's path should now be complete. @@ -228,7 +229,7 @@ describe('Datastore', function() { it('should save/get/update', function(done) { var postKey = datastore.key('Post'); - datastore.save({ key: postKey, data: post }, function(err) { + datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); datastore.get(postKey, function(err, entity) { @@ -254,63 +255,72 @@ describe('Datastore', function() { it('should save and get with a string ID', function(done) { var longIdKey = datastore.key([ 'Post', - datastore.int('100000000000001234') + datastore.int('100000000000001234'), ]); - datastore.save({ - key: longIdKey, - data: { - test: true - } - }, function(err) { - assert.ifError(err); - - datastore.get(longIdKey, function(err, entity) { + datastore.save( + { + key: longIdKey, + data: { + test: true, + }, + }, + function(err) { assert.ifError(err); - assert.strictEqual(entity.test, true); - done(); - }); - }); + + datastore.get(longIdKey, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.test, true); + done(); + }); + } + ); }); it('should fail explicitly set second insert on save', function(done) { var postKey = datastore.key('Post'); - datastore.save({ key: postKey, data: post }, function(err) { + datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); // The key's path should now be complete. assert(postKey.id); - datastore.save({ - key: postKey, - method: 'insert', - data: post - }, function(err) { - assert.notStrictEqual(err, null); // should fail insert + datastore.save( + { + key: postKey, + method: 'insert', + data: post, + }, + function(err) { + assert.notStrictEqual(err, null); // should fail insert - datastore.get(postKey, function(err, entity) { - assert.ifError(err); + datastore.get(postKey, function(err, entity) { + assert.ifError(err); - assert.deepEqual(entity, post); + assert.deepEqual(entity, post); - datastore.delete(postKey, done); - }); - }); + datastore.delete(postKey, done); + }); + } + ); }); }); it('should fail explicitly set first update on save', function(done) { var postKey = datastore.key('Post'); - datastore.save({ - key: postKey, - method: 'update', - data: post - }, function(err) { - assert.notStrictEqual(err, null); - done(); - }); + datastore.save( + { + key: postKey, + method: 'update', + data: post, + }, + function(err) { + assert.notStrictEqual(err, null); + done(); + } + ); }); it('should save/get/delete multiple entities at once', function(done) { @@ -327,71 +337,76 @@ describe('Datastore', function() { var key1 = datastore.key('Post'); var key2 = datastore.key('Post'); - datastore.save([ - { key: key1, data: post }, - { key: key2, data: post2 } - ], function(err) { - assert.ifError(err); - - datastore.get([key1, key2], function(err, entities) { + datastore.save( + [{key: key1, data: post}, {key: key2, data: post2}], + function(err) { assert.ifError(err); - assert.strictEqual(entities.length, 2); - datastore.delete([key1, key2], done); - }); - }); + datastore.get([key1, key2], function(err, entities) { + assert.ifError(err); + assert.strictEqual(entities.length, 2); + + datastore.delete([key1, key2], done); + }); + } + ); }); it('should get multiple entities in a stream', function(done) { var key1 = datastore.key('Post'); var key2 = datastore.key('Post'); - datastore.save([ - { key: key1, data: post }, - { key: key2, data: post } - ], function(err) { - assert.ifError(err); + datastore.save( + [{key: key1, data: post}, {key: key2, data: post}], + function(err) { + assert.ifError(err); - var numEntitiesEmitted = 0; + var numEntitiesEmitted = 0; - datastore.createReadStream([key1, key2]) - .on('error', done) - .on('data', function() { - numEntitiesEmitted++; - }) - .on('end', function() { - assert.strictEqual(numEntitiesEmitted, 2); + datastore + .createReadStream([key1, key2]) + .on('error', done) + .on('data', function() { + numEntitiesEmitted++; + }) + .on('end', function() { + assert.strictEqual(numEntitiesEmitted, 2); - datastore.delete([key1, key2], done); - }); - }); + datastore.delete([key1, key2], done); + }); + } + ); }); it('should save keys as a part of entity and query by key', function(done) { var personKey = datastore.key(['People', 'US', 'Person', 'name']); - datastore.save({ - key: personKey, - data: { - fullName: 'Full name', - linkedTo: personKey // himself - } - }, function(err) { - assert.ifError(err); + datastore.save( + { + key: personKey, + data: { + fullName: 'Full name', + linkedTo: personKey, // himself + }, + }, + function(err) { + assert.ifError(err); - var query = datastore.createQuery('Person') - .hasAncestor(datastore.key(['People', 'US'])) - .filter('linkedTo', personKey); + var query = datastore + .createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); - datastore.runQuery(query, function(err, results) { - assert.ifError(err); + datastore.runQuery(query, function(err, results) { + assert.ifError(err); - assert.strictEqual(results[0].fullName, 'Full name'); - assert.deepEqual(results[0].linkedTo, personKey); + assert.strictEqual(results[0].fullName, 'Full name'); + assert.deepEqual(results[0].linkedTo, personKey); - datastore.delete(personKey, done); - }); - }); + datastore.delete(personKey, done); + }); + } + ); }); describe('entity types', function() { @@ -401,20 +416,23 @@ describe('Datastore', function() { var key = datastore.key('Person'); - datastore.save({ - key: key, - data: { - year: integerType - } - }, function(err) { - assert.ifError(err); - - datastore.get(key, function(err, entity) { + datastore.save( + { + key: key, + data: { + year: integerType, + }, + }, + function(err) { assert.ifError(err); - assert.strictEqual(entity.year, integerValue); - done(); - }); - }); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.year, integerValue); + done(); + }); + } + ); }); it('should save and decode a double', function(done) { @@ -423,45 +441,51 @@ describe('Datastore', function() { var key = datastore.key('Person'); - datastore.save({ - key: key, - data: { - nines: doubleType - } - }, function(err) { - assert.ifError(err); - - datastore.get(key, function(err, entity) { + datastore.save( + { + key: key, + data: { + nines: doubleType, + }, + }, + function(err) { assert.ifError(err); - assert.strictEqual(entity.nines, doubleValue); - done(); - }); - }); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.nines, doubleValue); + done(); + }); + } + ); }); it('should save and decode a geo point', function(done) { var geoPointValue = { latitude: 40.6894, - longitude: -74.0447 + longitude: -74.0447, }; var geoPointType = Datastore.geoPoint(geoPointValue); var key = datastore.key('Person'); - datastore.save({ - key: key, - data: { - location: geoPointType - } - }, function(err) { - assert.ifError(err); - - datastore.get(key, function(err, entity) { + datastore.save( + { + key: key, + data: { + location: geoPointType, + }, + }, + function(err) { assert.ifError(err); - assert.deepEqual(entity.location, geoPointValue); - done(); - }); - }); + + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.deepEqual(entity.location, geoPointValue); + done(); + }); + } + ); }); }); }); @@ -478,7 +502,7 @@ describe('Datastore', function() { ['Rickard', 'Character', 'Eddard', 'Character', 'Sansa'], ['Rickard', 'Character', 'Eddard', 'Character', 'Robb'], ['Rickard', 'Character', 'Eddard', 'Character', 'Bran'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'] + ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'], ].map(function(path) { return datastore.key(['Book', 'GoT', 'Character'].concat(path)); }); @@ -488,57 +512,57 @@ describe('Datastore', function() { name: 'Rickard', family: 'Stark', appearances: 9, - alive: false + alive: false, }, { name: 'Eddard', family: 'Stark', appearances: 9, - alive: false + alive: false, }, { name: 'Catelyn', family: ['Stark', 'Tully'], appearances: 26, - alive: false + alive: false, }, { name: 'Arya', family: 'Stark', appearances: 33, - alive: true + alive: true, }, { name: 'Sansa', family: 'Stark', appearances: 31, - alive: true + alive: true, }, { name: 'Robb', family: 'Stark', appearances: 22, - alive: false + alive: false, }, { name: 'Bran', family: 'Stark', appearances: 25, - alive: true + alive: true, }, { name: 'Jon Snow', family: 'Stark', appearances: 32, - alive: true - } + alive: true, + }, ]; before(function(done) { var keysToSave = keys.map(function(key, index) { return { key: key, - data: characters[index] + data: characters[index], }; }); @@ -550,7 +574,8 @@ describe('Datastore', function() { }); it('should limit queries', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .limit(5); @@ -558,7 +583,8 @@ describe('Datastore', function() { assert.ifError(err); assert.strictEqual(firstEntities.length, 5); - var secondQ = datastore.createQuery('Character') + var secondQ = datastore + .createQuery('Character') .hasAncestor(ancestor) .start(info.endCursor); @@ -573,8 +599,10 @@ describe('Datastore', function() { it('should not go over a limit', function(done) { var limit = 3; - var q = datastore.createQuery('Character') - .hasAncestor(ancestor).limit(limit); + var q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); datastore.runQuery(q, function(err, results) { assert.ifError(err); @@ -588,9 +616,12 @@ describe('Datastore', function() { var resultsReturned = 0; - datastore.runQueryStream(q) + datastore + .runQueryStream(q) .on('error', done) - .on('data', function() { resultsReturned++; }) + .on('data', function() { + resultsReturned++; + }) .on('end', function() { assert.strictEqual(resultsReturned, characters.length); done(); @@ -599,15 +630,19 @@ describe('Datastore', function() { it('should not go over a limit with a stream', function(done) { var limit = 3; - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .limit(limit); var resultsReturned = 0; - datastore.runQueryStream(q) + datastore + .runQueryStream(q) .on('error', done) - .on('data', function() { resultsReturned++; }) + .on('data', function() { + resultsReturned++; + }) .on('end', function() { assert.strictEqual(resultsReturned, limit); done(); @@ -615,7 +650,8 @@ describe('Datastore', function() { }); it('should filter queries with simple indexes', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .filter('appearances', '>=', 20); @@ -627,7 +663,8 @@ describe('Datastore', function() { }); it('should filter queries with defined indexes', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .filter('family', 'Stark') .filter('appearances', '>=', 20); @@ -652,7 +689,8 @@ describe('Datastore', function() { it('should filter by key', function(done) { var key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .filter('__key__', key); @@ -664,7 +702,8 @@ describe('Datastore', function() { }); it('should order queries', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .order('appearances'); @@ -679,7 +718,8 @@ describe('Datastore', function() { }); it('should select projections', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .select(['name', 'family']); @@ -688,12 +728,12 @@ describe('Datastore', function() { assert.deepEqual(entities[0], { name: 'Arya', - family: 'Stark' + family: 'Stark', }); assert.deepEqual(entities[8], { name: 'Sansa', - family: 'Stark' + family: 'Stark', }); done(); @@ -701,7 +741,8 @@ describe('Datastore', function() { }); it('should paginate with offset and limit', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .offset(2) .limit(3) @@ -714,7 +755,8 @@ describe('Datastore', function() { assert.strictEqual(entities[0].name, 'Robb'); assert.strictEqual(entities[2].name, 'Catelyn'); - var secondQ = datastore.createQuery('Character') + var secondQ = datastore + .createQuery('Character') .hasAncestor(ancestor) .order('appearances') .start(info.endCursor); @@ -732,7 +774,8 @@ describe('Datastore', function() { }); it('should resume from a start cursor', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .offset(2) .limit(2) @@ -741,7 +784,8 @@ describe('Datastore', function() { datastore.runQuery(q, function(err, entities, info) { assert.ifError(err); - var secondQ = datastore.createQuery('Character') + var secondQ = datastore + .createQuery('Character') .hasAncestor(ancestor) .order('appearances') .start(info.endCursor); @@ -759,7 +803,8 @@ describe('Datastore', function() { }); it('should group queries', function(done) { - var q = datastore.createQuery('Character') + var q = datastore + .createQuery('Character') .hasAncestor(ancestor) .groupBy('appearances'); @@ -781,7 +826,7 @@ describe('Datastore', function() { it('should run in a transaction', function(done) { var key = datastore.key(['Company', 'Google']); var obj = { - url: 'www.google.com' + url: 'www.google.com', }; var transaction = datastore.transaction(); @@ -792,7 +837,7 @@ describe('Datastore', function() { transaction.get(key, function(err) { assert.ifError(err); - transaction.save({ key: key, data: obj }); + transaction.save({key: key, data: obj}); transaction.commit(function(err) { assert.ifError(err); @@ -812,58 +857,64 @@ describe('Datastore', function() { var key = datastore.key(['Company', 'Google']); var incompleteKey = datastore.key('Company'); - datastore.save({ - key: deleteKey, - data: {} - }, function(err) { - assert.ifError(err); - - var transaction = datastore.transaction(); - - transaction.run(function(err) { + datastore.save( + { + key: deleteKey, + data: {}, + }, + function(err) { assert.ifError(err); - transaction.delete(deleteKey); - - transaction.save([ - { - key: key, - data: { rating: 10 } - }, - { - key: incompleteKey, - data: { rating: 100 } - } - ]); + var transaction = datastore.transaction(); - transaction.commit(function(err) { + transaction.run(function(err) { assert.ifError(err); - // Incomplete key should have been given an ID. - assert.strictEqual(incompleteKey.path.length, 2); + transaction.delete(deleteKey); - async.parallel([ - // The key queued for deletion should have been deleted. - function(callback) { - datastore.get(deleteKey, function(err, entity) { - assert.ifError(err); - assert.strictEqual(typeof entity, 'undefined'); - callback(); - }); + transaction.save([ + { + key: key, + data: {rating: 10}, + }, + { + key: incompleteKey, + data: {rating: 100}, }, + ]); - // Data should have been updated on the key. - function(callback) { - datastore.get(key, function(err, entity) { - assert.ifError(err); - assert.strictEqual(entity.rating, 10); - callback(); - }); - } - ], done); + transaction.commit(function(err) { + assert.ifError(err); + + // Incomplete key should have been given an ID. + assert.strictEqual(incompleteKey.path.length, 2); + + async.parallel( + [ + // The key queued for deletion should have been deleted. + function(callback) { + datastore.get(deleteKey, function(err, entity) { + assert.ifError(err); + assert.strictEqual(typeof entity, 'undefined'); + callback(); + }); + }, + + // Data should have been updated on the key. + function(callback) { + datastore.get(key, function(err, entity) { + assert.ifError(err); + assert.strictEqual(entity.rating, 10); + callback(); + }); + }, + ], + done + ); + }); }); - }); - }); + } + ); }); it('should use the last modification to a key', function(done) { @@ -879,15 +930,15 @@ describe('Datastore', function() { { key: key, data: { - rating: 10 - } + rating: 10, + }, }, { key: incompleteKey, data: { - rating: 100 - } - } + rating: 100, + }, + }, ]); transaction.delete(key); @@ -928,5 +979,35 @@ describe('Datastore', function() { }); }); }); + + it('should read in a readOnly transaction', function(done) { + var transaction = datastore.transaction({readOnly: true}); + var key = datastore.key(['Company', 'Google']); + + transaction.run(function(err) { + assert.ifError(err); + transaction.get(key, done); + }); + }); + + it('should not write in a readOnly transaction', function(done) { + var transaction = datastore.transaction({readOnly: true}); + var key = datastore.key(['Company', 'Google']); + + transaction.run(function(err) { + assert.ifError(err); + + transaction.get(key, function(err) { + assert.ifError(err); + + transaction.save({key: key, data: {}}); + + transaction.commit(function(err) { + assert(err instanceof Error); + done(); + }); + }); + }); + }); }); }); diff --git a/handwritten/nodejs-datastore/test/.eslintrc.yml b/handwritten/nodejs-datastore/test/.eslintrc.yml new file mode 100644 index 00000000000..73f7bbc946f --- /dev/null +++ b/handwritten/nodejs-datastore/test/.eslintrc.yml @@ -0,0 +1,5 @@ +--- +env: + mocha: true +rules: + node/no-unpublished-require: off diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 02406962b5e..3fbecce8c24 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -17,10 +17,13 @@ 'use strict'; var assert = require('assert'); +var Buffer = require('safe-buffer').Buffer; var deepStrictEqual = require('deep-strict-equal'); -assert.deepStrictEqual = assert.deepStrictEqual || function() { - return assert(deepStrictEqual.apply(this, arguments)); -}; +assert.deepStrictEqual = + assert.deepStrictEqual || + function() { + return assert(deepStrictEqual.apply(this, arguments)); + }; var extend = require('extend'); var Datastore = require('../'); @@ -95,7 +98,7 @@ describe('entity', function() { it('should store the value', function() { var value = { latitude: 24, - longitude: 88 + longitude: 88, }; var geoPoint = new entity.GeoPoint(value); @@ -119,41 +122,41 @@ describe('entity', function() { describe('Key', function() { it('should assign the namespace', function() { var namespace = 'NS'; - var key = new entity.Key({ namespace: namespace, path: [] }); + var key = new entity.Key({namespace: namespace, path: []}); assert.strictEqual(key.namespace, namespace); }); it('should assign the kind', function() { var kind = 'kind'; - var key = new entity.Key({ path: [kind] }); + var key = new entity.Key({path: [kind]}); assert.strictEqual(key.kind, kind); }); it('should assign the ID', function() { var id = 11; - var key = new entity.Key({ path: ['Kind', id] }); + var key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id); }); it('should assign the ID from an Int', function() { var id = new entity.Int(11); - var key = new entity.Key({ path: ['Kind', id] }); + var key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id.value); }); it('should assign the name', function() { var name = 'name'; - var key = new entity.Key({ path: ['Kind', name] }); + var key = new entity.Key({path: ['Kind', name]}); assert.strictEqual(key.name, name); }); it('should assign a parent', function() { - var key = new entity.Key({ path: ['ParentKind', 1, 'Kind', 1] }); + var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert(key.parent instanceof entity.Key); }); it('should always compute the correct path', function() { - var key = new entity.Key({ path: ['ParentKind', 1, 'Kind', 1] }); + var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert.deepEqual(key.path, ['ParentKind', 1, 'Kind', 1]); key.parent.kind = 'GrandParentKind'; @@ -180,10 +183,10 @@ describe('entity', function() { var expectedValue = [{}]; var valueProto = { - value_type: 'arrayValue', + valueType: 'arrayValue', arrayValue: { - values: expectedValue - } + values: expectedValue, + }, }; var run = false; @@ -206,8 +209,8 @@ describe('entity', function() { var expectedValue = new Buffer('Hi'); var valueProto = { - value_type: 'blobValue', - blobValue: expectedValue.toString('base64') + valueType: 'blobValue', + blobValue: expectedValue.toString('base64'), }; assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); @@ -217,8 +220,8 @@ describe('entity', function() { var expectedValue = null; var valueProto = { - value_type: 'nullValue', - nullValue: 0 + valueType: 'nullValue', + nullValue: 0, }; var decodedValue = entity.decodeValueProto(valueProto); @@ -229,8 +232,8 @@ describe('entity', function() { var expectedValue = 8.3; var valueProto = { - value_type: 'doubleValue', - doubleValue: expectedValue + valueType: 'doubleValue', + doubleValue: expectedValue, }; assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); @@ -240,8 +243,8 @@ describe('entity', function() { var expectedValue = 8; var valueProto = { - value_type: 'integerValue', - integerValue: expectedValue + valueType: 'integerValue', + integerValue: expectedValue, }; assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); @@ -251,8 +254,8 @@ describe('entity', function() { var expectedValue = {}; var valueProto = { - value_type: 'entityValue', - entityValue: expectedValue + valueType: 'entityValue', + entityValue: expectedValue, }; entity.entityFromEntityProto = function(entityProto) { @@ -267,8 +270,8 @@ describe('entity', function() { var expectedValue = {}; var valueProto = { - value_type: 'keyValue', - keyValue: expectedValue + valueType: 'keyValue', + keyValue: expectedValue, }; entity.keyFromKeyProto = function(keyProto) { @@ -288,11 +291,11 @@ describe('entity', function() { var expectedValue = new Date(seconds * 1000 + ms); var valueProto = { - value_type: 'timestampValue', + valueType: 'timestampValue', timestampValue: { seconds: seconds, - nanos: ms * 1e6 - } + nanos: ms * 1e6, + }, }; assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); @@ -302,8 +305,8 @@ describe('entity', function() { var expectedValue = false; var valueProto = { - value_type: 'booleanValue', - booleanValue: expectedValue + valueType: 'booleanValue', + booleanValue: expectedValue, }; assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); @@ -315,7 +318,7 @@ describe('entity', function() { var value = true; var expectedValueProto = { - booleanValue: value + booleanValue: value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -325,7 +328,7 @@ describe('entity', function() { var value = null; var expectedValueProto = { - nullValue: 0 + nullValue: 0, }; assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); @@ -335,7 +338,7 @@ describe('entity', function() { var value = 8; var expectedValueProto = { - integerValue: value + integerValue: value, }; entity.Int = function(value_) { @@ -350,7 +353,7 @@ describe('entity', function() { var value = new entity.Int(3); var expectedValueProto = { - integerValue: value.value + integerValue: value.value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -360,7 +363,7 @@ describe('entity', function() { var value = 8.3; var expectedValueProto = { - doubleValue: value + doubleValue: value, }; entity.Double = function(value_) { @@ -375,7 +378,7 @@ describe('entity', function() { var value = new entity.Double(3); var expectedValueProto = { - doubleValue: value.value + doubleValue: value.value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -385,7 +388,7 @@ describe('entity', function() { var value = new entity.GeoPoint(); var expectedValueProto = { - geoPointValue: value.value + geoPointValue: value.value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -398,8 +401,8 @@ describe('entity', function() { var expectedValueProto = { timestampValue: { seconds: Math.floor(seconds), - nanos: value.getMilliseconds() * 1e6 - } + nanos: value.getMilliseconds() * 1e6, + }, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -409,7 +412,7 @@ describe('entity', function() { var value = 'Hi'; var expectedValueProto = { - stringValue: value + stringValue: value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -419,7 +422,7 @@ describe('entity', function() { var value = new Buffer('Hi'); var expectedValueProto = { - blobValue: value + blobValue: value, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -430,8 +433,8 @@ describe('entity', function() { var expectedValueProto = { arrayValue: { - values: value - } + values: value, + }, }; var run = false; @@ -453,11 +456,11 @@ describe('entity', function() { it('should encode a Key', function() { var value = new entity.Key({ namespace: 'ns', - path: ['Kind', 1] + path: ['Kind', 1], }); var expectedValueProto = { - keyValue: value + keyValue: value, }; entity.keyToKeyProto = function(key) { @@ -470,15 +473,15 @@ describe('entity', function() { it('should encode an object', function() { var value = { - key: 'value' + key: 'value', }; var expectedValueProto = { entityValue: { properties: { - key: value.key - } - } + key: value.key, + }, + }, }; var run = false; @@ -501,9 +504,9 @@ describe('entity', function() { var value = { a: { b: { - obj: true - } - } + obj: true, + }, + }, }; var originalValue = extend(true, {}, value); @@ -519,8 +522,8 @@ describe('entity', function() { var expectedValueProto = { entityValue: { - properties: {} - } + properties: {}, + }, }; assert.deepEqual(entity.encodeValue(value), expectedValueProto); @@ -536,16 +539,16 @@ describe('entity', function() { describe('entityFromEntityProto', function() { it('should convert entity proto to entity', function() { var expectedEntity = { - name: 'Stephen' + name: 'Stephen', }; var entityProto = { properties: { name: { - value_type: 'stringValue', - stringValue: expectedEntity.name - } - } + valueType: 'stringValue', + stringValue: expectedEntity.name, + }, + }, }; assert.deepEqual( @@ -561,13 +564,13 @@ describe('entity', function() { var entityObject = { data: { - name: value - } + name: value, + }, }; var expectedEntityProto = { key: null, - properties: entityObject.data + properties: entityObject.data, }; entity.encodeValue = function(value_) { @@ -591,41 +594,41 @@ describe('entity', function() { 'array[].name', 'array[].entity.name', 'array[].entity.array[].name', - 'array[].array[].entity.name' + 'array[].array[].entity.name', ], data: { name: value, entity: { - name: value + name: value, }, array: [ { - name: value + name: value, }, { entity: { name: value, array: [ { - name: value - } - ] - } + name: value, + }, + ], + }, }, { array: [ { entity: { - name: value - } - } - ] - } - ] - } + name: value, + }, + }, + ], + }, + ], + }, }; var expectedEntityProto = { @@ -633,17 +636,17 @@ describe('entity', function() { properties: { name: { stringValue: value, - excludeFromIndexes: true + excludeFromIndexes: true, }, entity: { entityValue: { properties: { name: { stringValue: value, - excludeFromIndexes: true - } - } - } + excludeFromIndexes: true, + }, + }, + }, }, array: { arrayValue: { @@ -653,10 +656,10 @@ describe('entity', function() { properties: { name: { stringValue: value, - excludeFromIndexes: true - } - } - } + excludeFromIndexes: true, + }, + }, + }, }, { entityValue: { @@ -666,7 +669,7 @@ describe('entity', function() { properties: { name: { stringValue: value, - excludeFromIndexes: true + excludeFromIndexes: true, }, array: { arrayValue: { @@ -676,19 +679,19 @@ describe('entity', function() { properties: { name: { stringValue: value, - excludeFromIndexes: true - } - } - } - } - ] - } - } - } - } - } - } - } + excludeFromIndexes: true, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + }, + }, }, { entityValue: { @@ -704,24 +707,24 @@ describe('entity', function() { properties: { name: { stringValue: value, - excludeFromIndexes: true - } - } - } - } - } - } - } - ] - } - } - } - } - } - ] - } - } - } + excludeFromIndexes: true, + }, + }, + }, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + ], + }, + }, + }, }; assert.deepEqual( @@ -736,13 +739,13 @@ describe('entity', function() { var key = {}; var entityProto = { - key: key + key: key, }; var results = [ { - entity: entityProto - } + entity: entityProto, + }, ]; var expectedResults = entityProto; @@ -767,7 +770,7 @@ describe('entity', function() { describe('isKeyComplete', function() { it('should convert key to key proto', function(done) { var key = new entity.Key({ - path: ['Kind', 123] + path: ['Kind', 123], }); entity.keyToKeyProto = function(key_) { @@ -781,7 +784,7 @@ describe('entity', function() { it('should return true if key has id', function() { var key = new entity.Key({ - path: ['Kind', 123] + path: ['Kind', 123], }); assert.strictEqual(entity.isKeyComplete(key), true); @@ -789,7 +792,7 @@ describe('entity', function() { it('should return true if key has name', function() { var key = new entity.Key({ - path: ['Kind', 'name'] + path: ['Kind', 'name'], }); assert.strictEqual(entity.isKeyComplete(key), true); @@ -797,7 +800,7 @@ describe('entity', function() { it('should return false if key does not have name or ID', function() { var key = new entity.Key({ - path: ['Kind'] + path: ['Kind'], }); assert.strictEqual(entity.isKeyComplete(key), false); @@ -810,20 +813,20 @@ describe('entity', function() { var keyProto = { partitionId: { namespaceId: NAMESPACE, - projectId: 'project-id' + projectId: 'project-id', }, path: [ { - id_type: 'id', + idType: 'id', kind: 'Kind', - id: '111' + id: '111', }, { - id_type: 'name', + idType: 'name', kind: 'Kind2', - name: 'name' - } - ] + name: 'name', + }, + ], }; it('should set the namespace', function(done) { @@ -839,12 +842,7 @@ describe('entity', function() { entity.Key = function(keyOptions) { assert.deepEqual(keyOptions, { namespace: NAMESPACE, - path: [ - 'Kind', - new entity.Int(111), - 'Kind2', - 'name' - ] + path: ['Kind', new entity.Int(111), 'Kind2', 'name'], }); done(); @@ -867,21 +865,21 @@ describe('entity', function() { var keyProtoInvalid = { partitionId: { namespaceId: 'Namespace', - projectId: 'project-id' + projectId: 'project-id', }, path: [ { - kind: 'Kind' + kind: 'Kind', }, { - kind: 'Kind2' - } - ] + kind: 'Kind2', + }, + ], }; try { entity.keyFromKeyProto(keyProtoInvalid); - } catch(e) { + } catch (e) { assert.strictEqual(e.name, 'InvalidKey'); assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); done(); @@ -892,7 +890,7 @@ describe('entity', function() { describe('keyToKeyProto', function() { it('should handle hierarchical key definitions', function() { var key = new entity.Key({ - path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)] + path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)], }); var keyProto = entity.keyToKeyProto(key); @@ -915,7 +913,7 @@ describe('entity', function() { it('should detect the namespace of the hierarchical keys', function() { var key = new entity.Key({ namespace: 'Namespace', - path: ['Kind1', 1, 'Kind2', 'name'] + path: ['Kind1', 1, 'Kind2', 'name'], }); var keyProto = entity.keyToKeyProto(key); @@ -933,12 +931,12 @@ describe('entity', function() { it('should handle incomplete keys with & without namespaces', function() { var incompleteKey = new entity.Key({ - path: ['Kind'] + path: ['Kind'], }); var incompleteKeyWithNs = new entity.Key({ namespace: 'Namespace', - path: ['Kind'] + path: ['Kind'], }); var keyProto = entity.keyToKeyProto(incompleteKey); @@ -957,12 +955,12 @@ describe('entity', function() { it('should throw if key contains 0 items', function(done) { var key = new entity.Key({ - path: [] + path: [], }); try { entity.keyToKeyProto(key); - } catch(e) { + } catch (e) { assert.strictEqual(e.name, 'InvalidKey'); assert.strictEqual(e.message, 'A key should contain at least a kind.'); done(); @@ -972,12 +970,12 @@ describe('entity', function() { it('should throw if key path contains null ids', function(done) { var key = new entity.Key({ namespace: 'Namespace', - path: ['Kind1', null, 'Company'] + path: ['Kind1', null, 'Company'], }); try { entity.keyToKeyProto(key); - } catch(e) { + } catch (e) { assert.strictEqual(e.name, 'InvalidKey'); assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); done(); @@ -987,7 +985,7 @@ describe('entity', function() { it('should not throw if key is incomplete', function() { var key = new entity.Key({ namespace: 'Namespace', - path: ['Kind1', 123, 'Company', null] + path: ['Kind1', 123, 'Company', null], }); assert.doesNotThrow(function() { @@ -1000,32 +998,32 @@ describe('entity', function() { var queryProto = { distinctOn: [ { - name: 'name' - } + name: 'name', + }, ], kind: [ { - name: 'Kind1' - } + name: 'Kind1', + }, ], order: [ { property: { - name: 'name' + name: 'name', }, - direction: 'ASCENDING' - } + direction: 'ASCENDING', + }, ], projection: [ { property: { - name: 'name' - } - } + name: 'name', + }, + }, ], endCursor: 'end', limit: { - value: 1 + value: 1, }, offset: 1, startCursor: 'start', @@ -1035,18 +1033,18 @@ describe('entity', function() { { propertyFilter: { property: { - name: 'name' + name: 'name', }, op: 'EQUAL', value: { - stringValue: 'John' - } - } + stringValue: 'John', + }, + }, }, { propertyFilter: { property: { - name: '__key__' + name: '__key__', }, op: 'HAS_ANCESTOR', value: { @@ -1054,27 +1052,28 @@ describe('entity', function() { path: [ { kind: 'Kind2', - name: 'somename' - } - ] - } - } - } - } + name: 'somename', + }, + ], + }, + }, + }, + }, ], - op: 'AND' - } - } + op: 'AND', + }, + }, }; it('should support all configurations of a query', function() { var ancestorKey = new entity.Key({ - path: ['Kind2', 'somename'] + path: ['Kind2', 'somename'], }); - var ds = new Datastore({ projectId: 'project-id' }); + var ds = new Datastore({projectId: 'project-id'}); - var query = ds.createQuery('Kind1') + var query = ds + .createQuery('Kind1') .filter('name', 'John') .start('start') .end('end') @@ -1089,11 +1088,12 @@ describe('entity', function() { }); it('should handle buffer start and end values', function() { - var ds = new Datastore({ projectId: 'project-id' }); + var ds = new Datastore({projectId: 'project-id'}); var startVal = new Buffer('start'); var endVal = new Buffer('end'); - var query = ds.createQuery('Kind1') + var query = ds + .createQuery('Kind1') .start(startVal) .end(endVal); diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js new file mode 100644 index 00000000000..75d6a25bc9e --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -0,0 +1,463 @@ +// Copyright 2017, Google LLC All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const assert = require('assert'); + +const datastoreModule = require('../src'); + +var FAKE_STATUS_CODE = 1; +var error = new Error(); +error.code = FAKE_STATUS_CODE; + +describe('DatastoreClient', () => { + describe('lookup', () => { + it('invokes lookup without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + var expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.lookup = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.lookup(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes lookup with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); + + client.lookup(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('runQuery', () => { + it('invokes runQuery without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var partitionId = {}; + var request = { + projectId: projectId, + partitionId: partitionId, + }; + + // Mock response + var expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.runQuery = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.runQuery(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes runQuery with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var partitionId = {}; + var request = { + projectId: projectId, + partitionId: partitionId, + }; + + // Mock Grpc layer + client._innerApiCalls.runQuery = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.runQuery(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('beginTransaction', () => { + it('invokes beginTransaction without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var request = { + projectId: projectId, + }; + + // Mock response + var transaction = '-34'; + var expectedResponse = { + transaction: transaction, + }; + + // Mock Grpc layer + client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.beginTransaction(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes beginTransaction with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var request = { + projectId: projectId, + }; + + // Mock Grpc layer + client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.beginTransaction(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('commit', () => { + it('invokes commit without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var mode = 'MODE_UNSPECIFIED'; + var mutations = []; + var request = { + projectId: projectId, + mode: mode, + mutations: mutations, + }; + + // Mock response + var indexUpdates = -1425228195; + var expectedResponse = { + indexUpdates: indexUpdates, + }; + + // Mock Grpc layer + client._innerApiCalls.commit = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.commit(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes commit with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var mode = 'MODE_UNSPECIFIED'; + var mutations = []; + var request = { + projectId: projectId, + mode: mode, + mutations: mutations, + }; + + // Mock Grpc layer + client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); + + client.commit(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('rollback', () => { + it('invokes rollback without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var transaction = '-34'; + var request = { + projectId: projectId, + transaction: transaction, + }; + + // Mock response + var expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.rollback = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.rollback(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes rollback with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var transaction = '-34'; + var request = { + projectId: projectId, + transaction: transaction, + }; + + // Mock Grpc layer + client._innerApiCalls.rollback = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.rollback(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('allocateIds', () => { + it('invokes allocateIds without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + var expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.allocateIds(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes allocateIds with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.allocateIds(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('reserveIds', () => { + it('invokes reserveIds without error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + var expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.reserveIds(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes reserveIds with error', done => { + var client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.reserveIds(request, (err, response) => { + assert(err instanceof Error); + assert.equal(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); +}); + +function mockSimpleGrpcMethod(expectedRequest, response, error) { + return function(actualRequest, options, callback) { + assert.deepStrictEqual(actualRequest, expectedRequest); + if (error) { + callback(error); + } else if (response) { + callback(null, response); + } else { + callback(null); + } + }; +} diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index b7dc9393618..b4b4b40ec5b 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -18,10 +18,11 @@ var assert = require('assert'); var extend = require('extend'); -var path = require('path'); var proxyquire = require('proxyquire'); var util = require('@google-cloud/common').util; +var v1 = require('../src/v1/index.js'); + var fakeEntity = { KEY_SYMBOL: Symbol('fake key symbol'), Int: function(value) { @@ -47,15 +48,27 @@ var fakeEntity = { }, isDsKey: function() { this.calledWith_ = arguments; - } + }, }; var fakeUtil = extend({}, util); -function FakeGrpcService() { - this.calledWith_ = arguments; +var googleAutoAuthOverride; +function fakeGoogleAutoAuth() { + return (googleAutoAuthOverride || util.noop).apply(null, arguments); } +var createInsecureOverride; +var fakeGoogleGax = { + grpc: { + credentials: { + createInsecure: function() { + return (createInsecureOverride || util.noop).apply(null, arguments); + }, + }, + }, +}; + function FakeQuery() { this.calledWith_ = arguments; } @@ -79,31 +92,38 @@ describe('Datastore', function() { credentials: {}, keyFilename: 'key/file', email: 'email', - namespace: NAMESPACE + namespace: NAMESPACE, }; before(function() { Datastore = proxyquire('../', { '@google-cloud/common': { - util: fakeUtil - }, - '@google-cloud/common-grpc': { - Service: FakeGrpcService + util: fakeUtil, }, './entity.js': fakeEntity, './query.js': FakeQuery, './transaction.js': FakeTransaction, - './v1': FakeV1 + './v1': FakeV1, + 'google-auto-auth': fakeGoogleAutoAuth, + 'google-gax': fakeGoogleGax, }); }); beforeEach(function() { + createInsecureOverride = null; + googleAutoAuthOverride = null; + datastore = new Datastore({ projectId: PROJECT_ID, - namespace: NAMESPACE + namespace: NAMESPACE, }); }); + after(function() { + createInsecureOverride = null; + googleAutoAuthOverride = null; + }); + it('should export GAX client', function() { assert.strictEqual(Datastore.v1, FakeV1); }); @@ -128,6 +148,40 @@ describe('Datastore', function() { fakeUtil.normalizeArguments = normalizeArguments; }); + it('should initialize an empty Client map', function() { + assert(datastore.clients_ instanceof Map); + assert.strictEqual(datastore.clients_.size, 0); + }); + + it('should alias itself to the datastore property', function() { + assert.strictEqual(datastore.datastore, datastore); + }); + + it('should localize the namespace', function() { + assert.strictEqual(datastore.namespace, NAMESPACE); + }); + + it('should localize the projectId', function() { + assert.strictEqual(datastore.projectId, PROJECT_ID); + }); + + it('should default project ID to placeholder', function() { + var datastore = new Datastore({}); + assert.strictEqual(datastore.projectId, '{{projectId}}'); + }); + + it('should use DATASTORE_PROJECT_ID', function() { + var datastoreProjectIdCached = process.env.DATASTORE_PROJECT_ID; + var projectId = 'overridden-project-id'; + + process.env.DATASTORE_PROJECT_ID = projectId; + + var datastore = new Datastore(OPTIONS); + process.env.DATASTORE_PROJECT_ID = datastoreProjectIdCached; + + assert.strictEqual(datastore.projectId, projectId); + }); + it('should set the default base URL', function() { assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com'); }); @@ -145,52 +199,72 @@ describe('Datastore', function() { new Datastore(OPTIONS); }); - it('should localize the namespace', function() { - assert.strictEqual(datastore.namespace, NAMESPACE); - }); + it('should localize the options', function() { + var options = { + a: 'b', + c: 'd', + }; - it('should localize the projectId', function() { - assert.strictEqual(datastore.projectId, PROJECT_ID); + var datastore = new Datastore(options); + + assert.notStrictEqual(datastore.options, options); + + assert.deepEqual( + datastore.options, + extend( + { + libName: 'gccl', + libVersion: require('../package.json').version, + scopes: v1.DatastoreClient.scopes, + servicePath: datastore.baseUrl_, + port: 443, + }, + options + ) + ); }); - it('should use DATASTORE_PROJECT_ID', function() { - var datastoreProjectIdCached = process.env.DATASTORE_PROJECT_ID; - var projectId = 'overridden-project-id'; + it('should set port if detected', function() { + var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - process.env.DATASTORE_PROJECT_ID = projectId; + var port = 99; + Datastore.prototype.determineBaseUrl_ = function() { + Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; + this.port_ = port; + }; var datastore = new Datastore(OPTIONS); - process.env.DATASTORE_PROJECT_ID = datastoreProjectIdCached; - assert.strictEqual(datastore.projectId, projectId); + assert.strictEqual(datastore.options.port, port); }); - it('should inherit from GrpcService', function() { - var datastore = new Datastore(OPTIONS); + it('should set grpc ssl credentials if custom endpoint', function() { + var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - var calledWith = datastore.calledWith_[0]; + Datastore.prototype.determineBaseUrl_ = function() { + Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; + this.customEndpoint_ = true; + }; - assert.strictEqual(calledWith.projectIdRequired, false); - assert.strictEqual(calledWith.baseUrl, datastore.baseUrl_); - assert.strictEqual(calledWith.customEndpoint, datastore.customEndpoint_); + var fakeInsecureCreds = {}; + createInsecureOverride = function() { + return fakeInsecureCreds; + }; - var protosDir = path.resolve(__dirname, '../protos'); - assert.strictEqual(calledWith.protosDir, protosDir); + var datastore = new Datastore(OPTIONS); - assert.deepStrictEqual(calledWith.protoServices, { - Datastore: { - path: 'google/datastore/v1/datastore.proto', - service: 'datastore.v1' - } - }); + assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); + }); - assert.deepEqual(calledWith.scopes, [ - 'https://www.googleapis.com/auth/datastore' - ]); - assert.deepEqual(calledWith.packageJson, require('../package.json')); - assert.deepEqual(calledWith.grpcMetadata, { - 'google-cloud-resource-prefix': 'projects/' + datastore.projectId - }); + it('should cache a local google-auto-auth instance', function() { + var fakeGoogleAutoAuthInstance = {}; + + googleAutoAuthOverride = function() { + return fakeGoogleAutoAuthInstance; + }; + + var datastore = new Datastore({}); + assert.strictEqual(datastore.auth, fakeGoogleAutoAuthInstance); }); }); @@ -206,21 +280,9 @@ describe('Datastore', function() { }); }); - describe('isDouble', function() { - it('should expose Double identifier', function() { - var something = {}; - Datastore.isDouble(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - - it('should also be on the prototype', function() { - assert.strictEqual(datastore.isDouble, Datastore.isDouble); - }); - }); - describe('geoPoint', function() { it('should expose GeoPoint builder', function() { - var aGeoPoint = { latitude: 24, longitude: 88 }; + var aGeoPoint = {latitude: 24, longitude: 88}; var geoPoint = Datastore.geoPoint(aGeoPoint); assert.strictEqual(geoPoint.value, aGeoPoint); }); @@ -230,18 +292,6 @@ describe('Datastore', function() { }); }); - describe('isGeoPoint', function() { - it('should expose GeoPoint identifier', function() { - var something = {}; - Datastore.isGeoPoint(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - - it('should also be on the prototype', function() { - assert.strictEqual(datastore.isGeoPoint, Datastore.isGeoPoint); - }); - }); - describe('int', function() { it('should expose Int builder', function() { var anInt = 7; @@ -254,15 +304,91 @@ describe('Datastore', function() { }); }); + describe('isDouble', function() { + it('should pass value to entity', function() { + var value = 0.42; + var called = false; + var saved = fakeEntity.isDsDouble; + fakeEntity.isDsDouble = function(arg) { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isDouble(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsDouble = saved; + }); + + it('should expose Double identifier', function() { + var something = {}; + Datastore.isDouble(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); + + describe('isGeoPoint', function() { + it('should pass value to entity', function() { + var value = {fakeLatitude: 1, fakeLongitude: 2}; + var called = false; + var saved = fakeEntity.isDsGeoPoint; + fakeEntity.isDsGeoPoint = function(arg) { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isGeoPoint(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsGeoPoint = saved; + }); + + it('should expose GeoPoint identifier', function() { + var something = {}; + Datastore.isGeoPoint(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); + describe('isInt', function() { + it('should pass value to entity', function() { + var value = 42; + var called = false; + var saved = fakeEntity.isDsInt; + fakeEntity.isDsInt = function(arg) { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isInt(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsInt = saved; + }); + it('should expose Int identifier', function() { var something = {}; Datastore.isInt(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); + }); - it('should also be on the prototype', function() { - assert.strictEqual(datastore.isInt, Datastore.isInt); + describe('isKey', function() { + it('should pass value to entity', function() { + var value = {zz: true}; + var called = false; + var saved = fakeEntity.isDsKey; + fakeEntity.isDsKey = function(arg) { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isKey(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsKey = saved; + }); + + it('should expose Key identifier', function() { + var something = {}; + datastore.isKey(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); }); }); @@ -366,23 +492,17 @@ describe('Datastore', function() { }); }); - describe('isKey', function() { - it('should expose Key identifier', function() { - var something = {}; - datastore.isKey(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - - it('should also be on the namespace', function() { - assert.strictEqual(datastore.isKey, Datastore.isKey); - }); - }); - describe('transaction', function() { it('should return a Transaction object', function() { var transaction = datastore.transaction(); assert.strictEqual(transaction.calledWith_[0], datastore); }); + + it('should pass options to the Transaction constructor', function() { + var options = {}; + var transaction = datastore.transaction(options); + assert.strictEqual(transaction.calledWith_[1], options); + }); }); describe('determineBaseUrl_', function() { @@ -403,29 +523,35 @@ describe('Datastore', function() { }); it('should remove slashes from the baseUrl', function() { - var expectedBaseUrl = 'localhost:8080'; + var expectedBaseUrl = 'localhost'; - setHost('localhost:8080/'); + setHost('localhost/'); datastore.determineBaseUrl_(); assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); - setHost('localhost:8080//'); + setHost('localhost//'); datastore.determineBaseUrl_(); assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); }); it('should remove the protocol if specified', function() { - setHost('http://localhost:8080'); + setHost('http://localhost'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, 'localhost'); + + setHost('https://localhost'); datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, 'localhost:8080'); + assert.strictEqual(datastore.baseUrl_, 'localhost'); + }); - setHost('https://localhost:8080'); + it('should set port if one was found', function() { + setHost('http://localhost:9090'); datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, 'localhost:8080'); + assert.strictEqual(datastore.port_, '9090'); }); it('should not set customEndpoint_ when using default baseurl', function() { - var datastore = new Datastore({ projectId: PROJECT_ID }); + var datastore = new Datastore({projectId: PROJECT_ID}); datastore.determineBaseUrl_(); assert.strictEqual(datastore.customEndpoint_, undefined); }); @@ -442,6 +568,8 @@ describe('Datastore', function() { describe('with DATASTORE_EMULATOR_HOST environment variable', function() { var DATASTORE_EMULATOR_HOST = 'localhost:9090'; + var EXPECTED_BASE_URL = 'localhost'; + var EXPECTED_PORT = '9090'; beforeEach(function() { setHost(DATASTORE_EMULATOR_HOST); @@ -453,7 +581,8 @@ describe('Datastore', function() { it('should use the DATASTORE_EMULATOR_HOST env var', function() { datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, DATASTORE_EMULATOR_HOST); + assert.strictEqual(datastore.baseUrl_, EXPECTED_BASE_URL); + assert.strictEqual(datastore.port_, EXPECTED_PORT); }); it('should set customEndpoint_', function() { diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js index 8c694ebf8c6..9401f28632b 100644 --- a/handwritten/nodejs-datastore/test/query.js +++ b/handwritten/nodejs-datastore/test/query.js @@ -49,7 +49,7 @@ describe('Query', function() { new Query(SCOPE, null, KINDS), new Query(SCOPE, undefined, KINDS), new Query(SCOPE, 0, KINDS), - new Query(SCOPE, KINDS) + new Query(SCOPE, KINDS), ].forEach(function(query) { assert.strictEqual(query.namespace, null); }); @@ -159,7 +159,7 @@ describe('Query', function() { }); it('should support descending order', function() { - var query = new Query(['kind1']).order('count', { descending: true }); + var query = new Query(['kind1']).order('count', {descending: true}); assert.equal(query.orders[0].name, 'count'); assert.equal(query.orders[0].sign, '-'); @@ -168,7 +168,7 @@ describe('Query', function() { it('should support both ascending and descending', function() { var query = new Query(['kind1']) .order('name') - .order('count', { descending: true }); + .order('count', {descending: true}); assert.equal(query.orders[0].name, 'name'); assert.equal(query.orders[0].sign, '+'); diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 0e9aa38398b..f1bcace57b7 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -17,11 +17,11 @@ 'use strict'; var assert = require('assert'); +var Buffer = require('safe-buffer').Buffer; var extend = require('extend'); var is = require('is'); var proxyquire = require('proxyquire'); var sinon = require('sinon').sandbox.create(); -var stream = require('stream'); var through = require('through2'); var util = require('@google-cloud/common').util; @@ -34,9 +34,16 @@ var fakeUtil = extend({}, util, { if (Class.name === 'DatastoreRequest') { promisified = true; } - } + }, }); +var v1FakeClientOverride; +var fakeV1 = { + FakeClient: function() { + return (v1FakeClientOverride || util.noop).apply(null, arguments); + }, +}; + var overrides = {}; function override(name, object) { @@ -83,25 +90,28 @@ describe('Request', function() { before(function() { Request = proxyquire('../src/request.js', { '@google-cloud/common': { - util: fakeUtil + util: fakeUtil, }, './entity.js': entity, - './query.js': FakeQuery + './query.js': FakeQuery, + './v1': fakeV1, }); override('Request', Request); }); after(function() { + v1FakeClientOverride = null; resetOverrides(); }); beforeEach(function() { key = new entity.Key({ namespace: 'namespace', - path: ['Company', 123] + path: ['Company', 123], }); FakeQuery.prototype = new Query(); + v1FakeClientOverride = null; resetOverrides(); request = new Request(); }); @@ -117,10 +127,10 @@ describe('Request', function() { var obj = { data: { nested: { - obj: true - } + obj: true, + }, }, - method: 'insert' + method: 'insert', }; var expectedPreparedEntityObject = extend(true, {}, obj); @@ -128,17 +138,14 @@ describe('Request', function() { assert.notStrictEqual(preparedEntityObject, obj); - assert.notStrictEqual( - preparedEntityObject.data.nested, - obj.data.nested - ); + assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); assert.deepEqual(preparedEntityObject, expectedPreparedEntityObject); }); it('should format an entity', function() { var key = {}; - var entityObject = { data: true }; + var entityObject = {data: true}; entityObject[entity.KEY_SYMBOL] = key; var preparedEntityObject = Request.prepareEntityObject_(entityObject); @@ -149,86 +156,130 @@ describe('Request', function() { }); describe('allocateIds', function() { - var incompleteKey; - var apiResponse = { - keys: [ - { path: [{ id_type: 'id', kind: 'Kind', id: 123 }] } - ] + var INCOMPLETE_KEY = {}; + + var ALLOCATIONS = 2; + var OPTIONS = { + allocations: ALLOCATIONS, }; beforeEach(function() { - incompleteKey = new entity.Key({ namespace: null, path: ['Kind'] }); + overrides.entity.isKeyComplete = util.noop; + overrides.entity.keyToKeyProto = util.noop; }); - it('should produce proper allocate IDs req protos', function(done) { - request.request_ = function(protoOpts, reqOpts, callback) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'allocateIds'); + it('should throw if the key is complete', function() { + overrides.entity.isKeyComplete = function(key) { + assert.strictEqual(key, INCOMPLETE_KEY); + return true; + }; - assert.equal(reqOpts.keys.length, 1); + assert.throws(function() { + request.allocateIds(INCOMPLETE_KEY, OPTIONS, assert.ifError); + }, new RegExp('An incomplete key should be provided.')); + }); + + it('should make the correct request', function(done) { + var keyProto = {}; - callback(null, apiResponse); + overrides.entity.keyToKeyProto = function(key) { + assert.strictEqual(key, INCOMPLETE_KEY); + return keyProto; }; - request.allocateIds(incompleteKey, 1, function(err, keys) { - assert.ifError(err); - var generatedKey = keys[0]; - assert.strictEqual(generatedKey.path.pop(), '123'); + request.request_ = function(config) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'allocateIds'); + + var expectedKeys = []; + expectedKeys.length = ALLOCATIONS; + expectedKeys.fill(keyProto); + + assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); + + assert.strictEqual(config.gaxOpts, undefined); + done(); - }); - }); + }; - it('should exec callback with error & API response', function(done) { - var error = new Error('Error.'); + request.allocateIds(INCOMPLETE_KEY, OPTIONS, assert.ifError); + }); - request.request_ = function(protoOpts, reqOpts, callback) { - callback(error, apiResponse); + it('should allow a numeric shorthand for allocations', function(done) { + request.request_ = function(config) { + assert.strictEqual(config.reqOpts.keys.length, ALLOCATIONS); + done(); }; - request.allocateIds(incompleteKey, 1, function(err, keys, apiResponse_) { - assert.strictEqual(err, error); - assert.strictEqual(keys, null); - assert.strictEqual(apiResponse_, apiResponse); + request.allocateIds(INCOMPLETE_KEY, ALLOCATIONS, assert.ifError); + }); + + it('should allow customization of GAX options', function(done) { + var options = extend({}, OPTIONS, { + gaxOptions: {}, + }); + + request.request_ = function(config) { + assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); + }; + + request.allocateIds(INCOMPLETE_KEY, options, assert.ifError); + }); + + describe('error', function() { + var ERROR = new Error('Error.'); + var API_RESPONSE = {}; + + beforeEach(function() { + request.request_ = function(config, callback) { + callback(ERROR, API_RESPONSE); + }; + }); + + it('should exec callback with error & API response', function(done) { + request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { + assert.strictEqual(err, ERROR); + assert.strictEqual(keys, null); + assert.strictEqual(resp, API_RESPONSE); + done(); + }); }); }); - it('should return apiResponse in callback', function(done) { - request.request_ = function(protoOpts, reqOpts, callback) { - callback(null, apiResponse); + describe('success', function() { + var KEY = {}; + var API_RESPONSE = { + keys: [KEY], }; - request.allocateIds(incompleteKey, 1, function(err, keys, apiResponse_) { - assert.ifError(err); - assert.strictEqual(apiResponse_, apiResponse); - done(); + beforeEach(function() { + request.request_ = function(config, callback) { + callback(null, API_RESPONSE); + }; }); - }); - it('should throw if trying to allocate IDs with complete keys', function() { - assert.throws(function() { - request.allocateIds(key); + it('should create and return Keys & API response', function(done) { + var key = {}; + + overrides.entity.keyFromKeyProto = function(keyProto) { + assert.strictEqual(keyProto, API_RESPONSE.keys[0]); + return key; + }; + + request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { + assert.ifError(err); + assert.deepStrictEqual(keys, [key]); + assert.strictEqual(resp, API_RESPONSE); + done(); + }); }); }); }); describe('createReadStream', function() { beforeEach(function() { - request.request_ = function() {}; - - overrides.util.createLimiter = function(makeRequest) { - var transformStream = new stream.Transform({ objectMode: true }); - transformStream.destroy = through.obj().destroy.bind(transformStream); - - setImmediate(function() { - transformStream.emit('reading'); - }); - - return { - makeRequest: makeRequest, - stream: transformStream - }; - }; + request.request_ = util.noop; }); it('should throw if no keys are provided', function() { @@ -246,64 +297,67 @@ describe('Request', function() { request.createReadStream(key).on('error', done); }); - it('should create a limiter', function(done) { - var options = {}; - - overrides.util.createLimiter = function(makeRequest, options_) { - assert.strictEqual(options_, options); + it('should make correct request when stream is ready', function(done) { + request.request_ = function(config) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'lookup'); - setImmediate(done); + assert.deepEqual(config.reqOpts.keys[0], entity.keyToKeyProto(key)); - return { - makeRequest: makeRequest, - stream: through() - }; + done(); }; - request.createReadStream(key, options).on('error', done); - }); + var stream = request.createReadStream(key); - it('should make correct request', function(done) { - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'lookup'); + stream.emit('reading'); + }); - assert.deepEqual(reqOpts.keys[0], entity.keyToKeyProto(key)); + it('should allow customization of GAX options', function(done) { + var options = { + gaxOptions: {}, + }; + request.request_ = function(config) { + assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; - request.createReadStream(key).on('error', done); + request + .createReadStream(key, options) + .on('error', done) + .emit('reading'); }); it('should allow setting strong read consistency', function(done) { - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(reqOpts.readOptions.readConsistency, 1); + request.request_ = function(config) { + assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); }; request - .createReadStream(key, { consistency: 'strong' }) - .on('error', done); + .createReadStream(key, {consistency: 'strong'}) + .on('error', done) + .emit('reading'); }); it('should allow setting strong eventual consistency', function(done) { - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(reqOpts.readOptions.readConsistency, 2); + request.request_ = function(config) { + assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); }; request - .createReadStream(key, { consistency: 'eventual' }) - .on('error', done); + .createReadStream(key, {consistency: 'eventual'}) + .on('error', done) + .emit('reading'); }); describe('error', function() { var error = new Error('Error.'); - var apiResponse = { a: 'b', c: 'd' }; + var apiResponse = {a: 'b', c: 'd'}; beforeEach(function() { - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { setImmediate(function() { callback(error, apiResponse); }); @@ -311,7 +365,8 @@ describe('Request', function() { }); it('should emit error', function(done) { - request.createReadStream(key) + request + .createReadStream(key) .on('data', util.noop) .on('error', function(err) { assert.strictEqual(err, error); @@ -322,14 +377,12 @@ describe('Request', function() { it('should end stream', function(done) { var stream = request.createReadStream(key); - stream - .on('data', util.noop) - .on('error', function() { - setImmediate(function() { - assert.strictEqual(stream._destroyed, true); - done(); - }); + stream.on('data', util.noop).on('error', function() { + setImmediate(function() { + assert.strictEqual(stream._destroyed, true); + done(); }); + }); }); }); @@ -340,47 +393,47 @@ describe('Request', function() { entity: { key: { partitionId: { - projectId: 'grape-spaceship-123' + projectId: 'grape-spaceship-123', }, path: [ { kind: 'Post', - name: 'post1' - } - ] + name: 'post1', + }, + ], }, properties: { title: { - stringValue: 'How to make the perfect pizza in your grill' + stringValue: 'How to make the perfect pizza in your grill', }, tags: { arrayValue: { values: [ { - stringValue: 'pizza' + stringValue: 'pizza', }, { - stringValue: 'grill' - } - ] - } + stringValue: 'grill', + }, + ], + }, }, rating: { - integerValue: '5' + integerValue: '5', }, author: { - stringValue: 'Silvano' + stringValue: 'Silvano', }, wordCount: { - integerValue: '400' + integerValue: '400', }, isDraft: { - booleanValue: false - } - } - } - } - ] + booleanValue: false, + }, + }, + }, + }, + ], }; var expectedResult = entity.formatArray(apiResponse.found)[0]; @@ -391,20 +444,13 @@ describe('Request', function() { var apiResponseWithDeferred = extend(true, {}, apiResponse); apiResponseWithDeferred.deferred = [ - apiResponseWithDeferred.found[0].entity.key + apiResponseWithDeferred.found[0].entity.key, ]; beforeEach(function() { - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { callback(null, apiResponse); }; - - overrides.util.createLimiter = function(makeRequest) { - return { - makeRequest: makeRequest, - stream: new stream.Transform({ objectMode: true }) - }; - }; }); it('should format the results', function(done) { @@ -423,7 +469,7 @@ describe('Request', function() { it('should continue looking for deferred results', function(done) { var numTimesCalled = 0; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { numTimesCalled++; if (numTimesCalled === 1) { @@ -435,7 +481,7 @@ describe('Request', function() { .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); - assert.deepEqual(reqOpts.keys, expectedKeys); + assert.deepEqual(config.reqOpts.keys, expectedKeys); done(); }; @@ -446,7 +492,8 @@ describe('Request', function() { }); it('should push results to the stream', function(done) { - request.createReadStream(key) + request + .createReadStream(key) .on('error', done) .on('data', function(entity) { assert.deepEqual(entity, expectedResult); @@ -458,13 +505,14 @@ describe('Request', function() { it('should not push more results if stream was ended', function(done) { var entitiesEmitted = 0; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { setImmediate(function() { callback(null, apiResponseWithMultiEntities); }); }; - request.createReadStream([key, key]) + request + .createReadStream([key, key]) .on('data', function() { entitiesEmitted++; this.end(); @@ -479,14 +527,15 @@ describe('Request', function() { it('should not get more results if stream was ended', function(done) { var lookupCount = 0; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { lookupCount++; setImmediate(function() { callback(null, apiResponseWithDeferred); }); }; - request.createReadStream(key) + request + .createReadStream(key) .on('error', done) .on('data', function() { this.end(); @@ -502,18 +551,18 @@ describe('Request', function() { describe('delete', function() { it('should delete by key', function(done) { - request.request_ = function(protoOpts, reqOpts, callback) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'commit'); - assert(is.object(reqOpts.mutations[0].delete)); + request.request_ = function(config, callback) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); + assert(is.object(config.reqOpts.mutations[0].delete)); callback(); }; request.delete(key, done); }); it('should return apiResponse in callback', function(done) { - var resp = { success: true }; - request.request_ = function(protoOpts, reqOpts, callback) { + var resp = {success: true}; + request.request_ = function(config, callback) { callback(null, resp); }; request.delete(key, function(err, apiResponse) { @@ -524,11 +573,22 @@ describe('Request', function() { }); it('should multi delete by keys', function(done) { - request.request_ = function(protoOpts, reqOpts, callback) { - assert.equal(reqOpts.mutations.length, 2); + request.request_ = function(config, callback) { + assert.equal(config.reqOpts.mutations.length, 2); callback(); }; - request.delete([ key, key ], done); + request.delete([key, key], done); + }); + + it('should allow customization of GAX options', function(done) { + var gaxOptions = {}; + + request.request_ = function(config) { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + request.delete(key, gaxOptions, assert.ifError); }); describe('transactions', function() { @@ -549,10 +609,7 @@ describe('Request', function() { describe('get', function() { describe('success', function() { var keys = [key]; - var fakeEntities = [ - { a: 'a' }, - { b: 'b' } - ]; + var fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { request.createReadStream = sinon.spy(function() { @@ -637,9 +694,9 @@ describe('Request', function() { describe('insert', function() { it('should prepare entity objects', function(done) { var entityObject = {}; - var preparedEntityObject = { prepared: true }; + var preparedEntityObject = {prepared: true}; var expectedEntityObject = extend({}, preparedEntityObject, { - method: 'insert' + method: 'insert', }); overrides.Request.prepareEntityObject_ = function(obj) { @@ -657,21 +714,23 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [{ - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', undefined], + assert.deepEqual(entities, [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'insert', }, - data: {}, - method: 'insert' - }]); + ]); callback(); }; - var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); - request.insert({ key: key, data: {} }, done); + var key = new entity.Key({namespace: 'ns', path: ['Company']}); + request.insert({key: key, data: {}}, done); }); }); @@ -679,40 +738,6 @@ describe('Request', function() { beforeEach(function() { overrides.entity.queryToQueryProto = util.noop; request.request_ = util.noop; - - overrides.util.createLimiter = function(makeRequest) { - var transformStream = new stream.Transform({ objectMode: true }); - transformStream.destroy = through.obj().destroy.bind(transformStream); - - setImmediate(function() { - transformStream.emit('reading'); - }); - - return { - makeRequest: makeRequest, - stream: transformStream - }; - }; - }); - - it('should create a limiter', function(done) { - var options = {}; - - overrides.util.createLimiter = function(makeRequest, options_) { - assert.strictEqual(options_, options); - - setImmediate(done); - - return { - makeRequest: makeRequest, - stream: through() - }; - }; - - request - .runQueryStream({}, options) - .on('error', done) - .emit('reading'); }); it('should clone the query', function(done) { @@ -732,20 +757,24 @@ describe('Request', function() { .emit('reading'); }); - it('should make correct request', function(done) { - var query = { namespace: 'namespace' }; + it('should make correct request when the stream is ready', function(done) { + var query = {namespace: 'namespace'}; var queryProto = {}; overrides.entity.queryToQueryProto = function() { return queryProto; }; - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'runQuery'); - assert(is.empty(reqOpts.readOptions)); - assert.strictEqual(reqOpts.query, queryProto); - assert.strictEqual(reqOpts.partitionId.namespaceId, query.namespace); + request.request_ = function(config) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'runQuery'); + assert(is.empty(config.reqOpts.readOptions)); + assert.strictEqual(config.reqOpts.query, queryProto); + assert.strictEqual( + config.reqOpts.partitionId.namespaceId, + query.namespace + ); + assert.strictEqual(config.gaxOpts, undefined); done(); }; @@ -756,26 +785,42 @@ describe('Request', function() { .emit('reading'); }); + it('should allow customization of GAX options', function(done) { + var options = { + gaxOptions: {}, + }; + + request.request_ = function(config) { + assert.strictEqual(config.gaxOpts, options.gaxOptions); + done(); + }; + + request + .runQueryStream({}, options) + .on('error', done) + .emit('reading'); + }); + it('should allow setting strong read consistency', function(done) { - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(reqOpts.readOptions.readConsistency, 1); + request.request_ = function(config) { + assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); }; request - .runQueryStream({}, { consistency: 'strong' }) + .runQueryStream({}, {consistency: 'strong'}) .on('error', done) .emit('reading'); }); it('should allow setting strong eventual consistency', function(done) { - request.request_ = function(protoOpts, reqOpts) { - assert.strictEqual(reqOpts.readOptions.readConsistency, 2); + request.request_ = function(config) { + assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); }; request - .runQueryStream({}, { consistency: 'eventual' }) + .runQueryStream({}, {consistency: 'eventual'}) .on('error', done) .emit('reading'); }); @@ -784,37 +829,39 @@ describe('Request', function() { var error = new Error('Error.'); beforeEach(function() { - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { callback(error); }; }); it('should emit error on a stream', function(done) { - request.runQueryStream({}) + request + .runQueryStream({}) .on('error', function(err) { assert.strictEqual(err, error); done(); - }); + }) + .emit('reading'); }); }); describe('success', function() { var entityResultsPerApiCall = { - 1: [{ a: true }], - 2: [{ b: true }, { c: true }] + 1: [{a: true}], + 2: [{b: true}, {c: true}], }; var apiResponse = { batch: { - entityResults: [{ a: true }, { b: true }, { c: true }], + entityResults: [{a: true}, {b: true}, {c: true}], endCursor: new Buffer('abc'), moreResults: 'MORE_RESULTS_AFTER_LIMIT', - skippedResults: 0 - } + skippedResults: 0, + }, }; beforeEach(function() { - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { callback(null, apiResponse); }; @@ -846,12 +893,12 @@ describe('Request', function() { it('should re-run query if not finished', function(done) { var query = { limitVal: 1, - offsetVal: 8 + offsetVal: 8, }; var queryProto = { limit: { - value: query.limitVal - } + value: query.limitVal, + }, }; var timesRequestCalled = 0; @@ -866,7 +913,7 @@ describe('Request', function() { return entityResultsPerApiCall[timesRequestCalled]; }; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { timesRequestCalled++; var resp = extend(true, {}, apiResponse); @@ -874,8 +921,8 @@ describe('Request', function() { entityResultsPerApiCall[timesRequestCalled]; if (timesRequestCalled === 1) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'runQuery'); + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'runQuery'); resp.batch.moreResults = 'NOT_FINISHED'; @@ -883,7 +930,7 @@ describe('Request', function() { } else { assert.strictEqual(startCalled, true); assert.strictEqual(offsetCalled, true); - assert.strictEqual(reqOpts.query, queryProto); + assert.strictEqual(config.reqOpts.query, queryProto); resp.batch.moreResults = 'MORE_RESULTS_AFTER_LIMIT'; @@ -937,14 +984,15 @@ describe('Request', function() { entities.push(entity); }) .on('end', function() { - var allResults = [].slice.call(entityResultsPerApiCall[1]) + var allResults = [].slice + .call(entityResultsPerApiCall[1]) .concat(entityResultsPerApiCall[2]); assert.deepEqual(entities, allResults); assert.deepEqual(info, { endCursor: apiResponse.batch.endCursor, - moreResults: apiResponse.batch.moreResults + moreResults: apiResponse.batch.moreResults, }); done(); @@ -956,10 +1004,10 @@ describe('Request', function() { var limitCalled = false; var query = { - limitVal: -1 + limitVal: -1, }; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { var batch; if (++timesRequestCalled === 2) { @@ -967,11 +1015,11 @@ describe('Request', function() { } else { batch = { moreResults: 'NOT_FINISHED', - endCursor: new Buffer('abc') + endCursor: new Buffer('abc'), }; } - callback(null, { batch: batch }); + callback(null, {batch: batch}); }; overrides.entity.queryToQueryProto = function() { @@ -998,7 +1046,7 @@ describe('Request', function() { var timesRequestCalled = 0; var entitiesEmitted = 0; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { timesRequestCalled++; var resp = extend(true, {}, apiResponse); @@ -1014,7 +1062,8 @@ describe('Request', function() { } }; - request.runQueryStream({}) + request + .runQueryStream({}) .on('data', function() { entitiesEmitted++; this.end(); @@ -1028,12 +1077,13 @@ describe('Request', function() { it('should not get more results if stream was ended', function(done) { var timesRequestCalled = 0; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { timesRequestCalled++; callback(null, apiResponse); }; - request.runQueryStream({}) + request + .runQueryStream({}) .on('error', done) .on('data', function() { this.end(); @@ -1051,10 +1101,7 @@ describe('Request', function() { describe('success', function() { var fakeInfo = {}; - var fakeEntities = [ - { a: 'a' }, - { b: 'b' } - ]; + var fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { request.runQueryStream = sinon.spy(function() { @@ -1139,57 +1186,76 @@ describe('Request', function() { upsert: { key: { partitionId: { - namespaceId: 'namespace' + namespaceId: 'namespace', }, path: [ { kind: 'Company', - id: 123 - } - ] + id: 123, + }, + ], }, properties: { k: { - stringValue: 'v' - } - } - } + stringValue: 'v', + }, + }, + }, }, { upsert: { key: { partitionId: { - namespaceId: 'namespace' + namespaceId: 'namespace', }, path: [ { kind: 'Company', - id: 123 - } - ] + id: 123, + }, + ], }, properties: { k: { - stringValue: 'v' - } - } - } - } - ] + stringValue: 'v', + }, + }, + }, + }, + ], }; - request.request_ = function(protoOpts, reqOpts, callback) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.strictEqual(protoOpts.method, 'commit'); + request.request_ = function(config, callback) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); - assert.deepEqual(reqOpts, expectedReq); + assert.deepEqual(config.reqOpts, expectedReq); + assert.deepEqual(config.gaxOpts, {}); callback(); }; - request.save([ - { key: key, data: { k: 'v' } }, - { key: key, data: { k: 'v' } } - ], done); + request.save( + [{key: key, data: {k: 'v'}}, {key: key, data: {k: 'v'}}], + done + ); + }); + + it('should allow customization of GAX options', function(done) { + var gaxOptions = {}; + + request.request_ = function(config) { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + request.save( + { + key: key, + data: {}, + }, + gaxOptions, + assert.ifError + ); }); it('should prepare entity objects', function(done) { @@ -1202,7 +1268,7 @@ describe('Request', function() { return { key: key, method: 'insert', - data: { k: 'v' } + data: {k: 'v'}, }; }; @@ -1215,40 +1281,46 @@ describe('Request', function() { }); it('should save with specific method', function(done) { - request.request_ = function(protoOpts, reqOpts, callback) { - assert.equal(reqOpts.mutations.length, 3); - assert(is.object(reqOpts.mutations[0].insert)); - assert(is.object(reqOpts.mutations[1].update)); - assert(is.object(reqOpts.mutations[2].upsert)); + request.request_ = function(config, callback) { + assert.equal(config.reqOpts.mutations.length, 3); + assert(is.object(config.reqOpts.mutations[0].insert)); + assert(is.object(config.reqOpts.mutations[1].update)); + assert(is.object(config.reqOpts.mutations[2].upsert)); - var insert = reqOpts.mutations[0].insert; - assert.deepEqual(insert.properties.k, { stringValue: 'v' }); + var insert = config.reqOpts.mutations[0].insert; + assert.deepEqual(insert.properties.k, {stringValue: 'v'}); - var update = reqOpts.mutations[1].update; - assert.deepEqual(update.properties.k2, { stringValue: 'v2' }); + var update = config.reqOpts.mutations[1].update; + assert.deepEqual(update.properties.k2, {stringValue: 'v2'}); - var upsert = reqOpts.mutations[2].upsert; - assert.deepEqual(upsert.properties.k3, { stringValue: 'v3' }); + var upsert = config.reqOpts.mutations[2].upsert; + assert.deepEqual(upsert.properties.k3, {stringValue: 'v3'}); callback(); }; - request.save([ - { key: key, method: 'insert', data: { k: 'v' } }, - { key: key, method: 'update', data: { k2: 'v2' } }, - { key: key, method: 'upsert', data: { k3: 'v3' } } - ], done); + request.save( + [ + {key: key, method: 'insert', data: {k: 'v'}}, + {key: key, method: 'update', data: {k2: 'v2'}}, + {key: key, method: 'upsert', data: {k3: 'v3'}}, + ], + done + ); }); it('should throw if a given method is not recognized', function() { assert.throws(function() { - request.save({ - key: key, - method: 'auto_insert_id', - data: { - k: 'v' - } - }, assert.ifError); + request.save( + { + key: key, + method: 'auto_insert_id', + data: { + k: 'v', + }, + }, + assert.ifError + ); }, /Method auto_insert_id not recognized/); }); @@ -1261,10 +1333,10 @@ describe('Request', function() { data: { value: { a: 'b', - c: [1, 2, 3] - } - } - } + c: [1, 2, 3], + }, + }, + }, ]; var expectedEntities = extend(true, {}, entities); @@ -1279,12 +1351,12 @@ describe('Request', function() { }); it('should return apiResponse in callback', function(done) { - var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); + var key = new entity.Key({namespace: 'ns', path: ['Company']}); var mockCommitResponse = {}; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { callback(null, mockCommitResponse); }; - request.save({ key: key, data: {} }, function(err, apiResponse) { + request.save({key: key, data: {}}, function(err, apiResponse) { assert.ifError(err); assert.strictEqual(mockCommitResponse, apiResponse); done(); @@ -1292,28 +1364,31 @@ describe('Request', function() { }); it('should allow setting the indexed value of a property', function(done) { - request.request_ = function(protoOpts, reqOpts) { - var property = reqOpts.mutations[0].upsert.properties.name; + request.request_ = function(config) { + var property = config.reqOpts.mutations[0].upsert.properties.name; assert.strictEqual(property.stringValue, 'value'); assert.strictEqual(property.excludeFromIndexes, true); done(); }; - request.save({ - key: key, - data: [ - { - name: 'name', - value: 'value', - excludeFromIndexes: true - } - ] - }, assert.ifError); + request.save( + { + key: key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); }); it('should allow setting the indexed value on arrays', function(done) { - request.request_ = function(protoOpts, reqOpts) { - var property = reqOpts.mutations[0].upsert.properties.name; + request.request_ = function(config) { + var property = config.reqOpts.mutations[0].upsert.properties.name; property.arrayValue.values.forEach(function(value) { assert.strictEqual(value.excludeFromIndexes, true); @@ -1322,22 +1397,25 @@ describe('Request', function() { done(); }; - request.save({ - key: key, - data: [ - { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true - } - ] - }, assert.ifError); + request.save( + { + key: key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); }); it('should assign ID on keys without them', function(done) { - var incompleteKey = new entity.Key({ path: ['Incomplete'] }); - var incompleteKey2 = new entity.Key({ path: ['Incomplete'] }); - var completeKey = new entity.Key({ path: ['Complete', 'Key'] }); + var incompleteKey = new entity.Key({path: ['Incomplete']}); + var incompleteKey2 = new entity.Key({path: ['Incomplete']}); + var completeKey = new entity.Key({path: ['Complete', 'Key']}); var keyProtos = []; var ids = [1, 2]; @@ -1345,42 +1423,45 @@ describe('Request', function() { var response = { mutationResults: [ { - key: {} + key: {}, }, { - key: {} + key: {}, }, - {} - ] + {}, + ], }; - request.request_ = function(protoOpts, reqOpts, callback) { + request.request_ = function(config, callback) { callback(null, response); }; overrides.entity.keyFromKeyProto = function(keyProto) { keyProtos.push(keyProto); return { - id: ids[keyProtos.length - 1] + id: ids[keyProtos.length - 1], }; }; - request.save([ - { key: incompleteKey, data: {} }, - { key: incompleteKey2, data: {} }, - { key: completeKey, data: {} } - ], function(err) { - assert.ifError(err); + request.save( + [ + {key: incompleteKey, data: {}}, + {key: incompleteKey2, data: {}}, + {key: completeKey, data: {}}, + ], + function(err) { + assert.ifError(err); - assert.strictEqual(incompleteKey.id, ids[0]); - assert.strictEqual(incompleteKey2.id, ids[1]); + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); - assert.strictEqual(keyProtos.length, 2); - assert.strictEqual(keyProtos[0], response.mutationResults[0].key); - assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); - done(); - }); + done(); + } + ); }); describe('transactions', function() { @@ -1394,7 +1475,7 @@ describe('Request', function() { it('should queue request & callback', function() { request.save({ key: key, - data: [{ name: 'name', value: 'value' }] + data: [{name: 'name', value: 'value'}], }); assert.equal(typeof request.requestCallbacks_[0], 'function'); @@ -1406,9 +1487,9 @@ describe('Request', function() { describe('update', function() { it('should prepare entity objects', function(done) { var entityObject = {}; - var preparedEntityObject = { prepared: true }; + var preparedEntityObject = {prepared: true}; var expectedEntityObject = extend({}, preparedEntityObject, { - method: 'update' + method: 'update', }); overrides.Request.prepareEntityObject_ = function(obj) { @@ -1426,30 +1507,32 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [{ - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', undefined], + assert.deepEqual(entities, [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'update', }, - data: {}, - method: 'update' - }]); + ]); callback(); }; - var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); - request.update({ key: key, data: {} }, done); + var key = new entity.Key({namespace: 'ns', path: ['Company']}); + request.update({key: key, data: {}}, done); }); }); describe('upsert', function() { it('should prepare entity objects', function(done) { var entityObject = {}; - var preparedEntityObject = { prepared: true }; + var preparedEntityObject = {prepared: true}; var expectedEntityObject = extend({}, preparedEntityObject, { - method: 'upsert' + method: 'upsert', }); overrides.Request.prepareEntityObject_ = function(obj) { @@ -1467,64 +1550,175 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [{ - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', undefined], + assert.deepEqual(entities, [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', undefined], + }, + data: {}, + method: 'upsert', }, - data: {}, - method: 'upsert' - }]); + ]); callback(); }; - var key = new entity.Key({ namespace: 'ns', path: ['Company'] }); - request.upsert({ key: key, data: {} }, done); + var key = new entity.Key({namespace: 'ns', path: ['Company']}); + request.upsert({key: key, data: {}}, done); }); }); describe('request_', function() { + var CONFIG = { + client: 'FakeClient', // name set at top of file + method: 'method', + reqOpts: { + a: 'b', + c: 'd', + }, + gaxOpts: { + a: 'b', + c: 'd', + }, + }; + var PROJECT_ID = 'project-id'; - var PROTO_OPTS = {}; beforeEach(function() { - request.projectId = PROJECT_ID; + var clients_ = new Map(); + clients_.set(CONFIG.client, { + [CONFIG.method]: util.noop, + }); + + request.datastore = { + clients_: clients_, + + auth: { + getProjectId: function(callback) { + callback(null, PROJECT_ID); + }, + }, + }; }); - it('should not require reqOpts', function(done) { - request.request = function(protoOpts, reqOpts, callback) { - callback(); // done() + it('should get the project ID', function(done) { + request.datastore.auth.getProjectId = function() { + done(); }; - request.request_(PROTO_OPTS, done); + request.request_(CONFIG, assert.ifError); }); - it('should make the correct request', function(done) { - var reqOpts = {}; + it('should return error if getting project ID failed', function(done) { + var error = new Error('Error.'); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(protoOpts, PROTO_OPTS); - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.projectId, PROJECT_ID); + request.datastore.auth.getProjectId = function(callback) { + callback(error); + }; + + request.request_(CONFIG, function(err) { + assert.strictEqual(err, error); done(); + }); + }); + + it('should initiate and cache the client', function() { + var fakeClient = { + [CONFIG.method]: util.noop, + }; + + v1FakeClientOverride = function(options) { + assert.deepStrictEqual(options, request.datastore.options); + return fakeClient; }; - request.request_(PROTO_OPTS, reqOpts, assert.ifError); + request.datastore.clients_ = new Map(); + + request.request_(CONFIG, assert.ifError); + + var client = request.datastore.clients_.get(CONFIG.client); + + assert.strictEqual(client, fakeClient); + }); + + it('should use the cached client', function(done) { + v1FakeClientOverride = function() { + done(new Error('Should not re-instantiate a GAX client.')); + }; + + request.request_(CONFIG); + done(); + }); + + it('should replace the project ID token', function(done) { + var replacedReqOpts = {}; + + var expectedReqOpts = extend({}, CONFIG.reqOpts); + expectedReqOpts.projectId = request.projectId; + + overrides.util.replaceProjectIdToken = function(reqOpts, projectId) { + assert.notStrictEqual(reqOpts, CONFIG.reqOpts); + assert.deepEqual(reqOpts, expectedReqOpts); + assert.strictEqual(projectId, PROJECT_ID); + + return replacedReqOpts; + }; + + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + [CONFIG.method]: function(reqOpts) { + assert.strictEqual(reqOpts, replacedReqOpts); + done(); + }, + }); + + request.request_(CONFIG, assert.ifError); + }); + + it('should send gaxOpts', function(done) { + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + [CONFIG.method]: function(_, gaxO) { + delete gaxO.headers; + assert.deepStrictEqual(gaxO, CONFIG.gaxOpts); + done(); + }, + }); + + request.request_(CONFIG, assert.ifError); + }); + + it('should send google-cloud-resource-prefix', function(done) { + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + [CONFIG.method]: function(_, gaxO) { + assert.deepStrictEqual(gaxO.headers, { + 'google-cloud-resource-prefix': 'projects/' + PROJECT_ID, + }); + done(); + }, + }); + + request.request_(CONFIG, assert.ifError); }); describe('commit', function() { it('should set the mode', function(done) { - var reqOpts = {}; + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + commit: function(reqOpts) { + assert.strictEqual(reqOpts.mode, 'NON_TRANSACTIONAL'); + done(); + }, + }); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.mode, 'NON_TRANSACTIONAL'); - done(); - }; + var config = extend({}, CONFIG, { + method: 'commit', + }); - request.request_({ method: 'commit' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }); }); @@ -1536,75 +1730,82 @@ describe('Request', function() { }); it('should set the commit transaction info', function(done) { - var reqOpts = {}; + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + commit: function(reqOpts) { + assert.strictEqual(reqOpts.mode, 'TRANSACTIONAL'); + assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); + done(); + }, + }); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.mode, 'TRANSACTIONAL'); - assert.strictEqual(reqOpts_.transaction, request.id); - done(); - }; + var config = extend({}, CONFIG, { + method: 'commit', + }); - request.id = 'transaction-id'; - request.request_({ method: 'commit' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }); it('should set the rollback transaction info', function(done) { - var reqOpts = {}; + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + rollback: function(reqOpts) { + assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); + done(); + }, + }); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.transaction, request.id); - done(); - }; + var config = extend({}, CONFIG, { + method: 'rollback', + }); - request.id = 'transaction-id'; - request.request_({ method: 'rollback' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }); it('should set the lookup transaction info', function(done) { - var reqOpts = { - readOptions: {} - }; + var config = extend(true, {}, CONFIG, { + method: 'lookup', + }); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.readOptions, reqOpts.readOptions); - assert.strictEqual(reqOpts_.readOptions.transaction, request.id); - done(); - }; + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + lookup: function(reqOpts) { + assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); + done(); + }, + }); - request.id = 'transaction-id'; - request.request_({ method: 'lookup' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }); - it('should set the lookup transaction info', function(done) { - var reqOpts = { - readOptions: {} - }; + it('should set the runQuery transaction info', function(done) { + var config = extend(true, {}, CONFIG, { + method: 'runQuery', + }); - request.request = function(protoOpts, reqOpts_) { - assert.strictEqual(reqOpts_, reqOpts); - assert.strictEqual(reqOpts_.readOptions, reqOpts.readOptions); - assert.strictEqual(reqOpts_.readOptions.transaction, request.id); - done(); - }; + request.datastore.clients_ = new Map(); + request.datastore.clients_.set(CONFIG.client, { + runQuery: function(reqOpts) { + assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); + done(); + }, + }); - request.id = 'transaction-id'; - request.request_({ method: 'runQuery' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }); it('should throw if read consistency is specified', function() { - var reqOpts = { - readOptions: { - readConsistency: 1 - } - }; - - request.id = 'transaction-id'; + var config = extend(true, {}, CONFIG, { + method: 'runQuery', + reqOpts: { + readOptions: { + readConsistency: 1, + }, + }, + }); assert.throws(function() { - request.request_({ method: 'runQuery' }, reqOpts, assert.ifError); + request.request_(config, assert.ifError); }, /Read consistency cannot be specified in a transaction\./); }); }); diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index 123ee58fd8e..8c5e309614a 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -32,12 +32,12 @@ var fakeUtil = extend({}, util, { promisified = true; assert.deepEqual(options.exclude, ['createQuery', 'delete', 'save']); - } + }, }); var DatastoreRequestOverride = { delete: util.noop, - save: util.noop + save: util.noop, }; var FakeDatastoreRequest = { @@ -54,8 +54,8 @@ var FakeDatastoreRequest = { var results = DatastoreRequestOverride.save.apply(null, args); DatastoreRequestOverride.save = util.noop; return results; - } - } + }, + }, }; describe('Transaction', function() { @@ -66,21 +66,21 @@ describe('Transaction', function() { var NAMESPACE = 'a-namespace'; var DATASTORE = { - request: function() {}, + request_: function() {}, projectId: PROJECT_ID, - namespace: NAMESPACE + namespace: NAMESPACE, }; function key(path) { - return new entity.Key({ path: arrify(path) }); + return new entity.Key({path: arrify(path)}); } before(function() { Transaction = proxyquire('../src/transaction.js', { '@google-cloud/common': { - util: fakeUtil + util: fakeUtil, }, - './request.js': FakeDatastoreRequest + './request.js': FakeDatastoreRequest, }); }); @@ -105,11 +105,29 @@ describe('Transaction', function() { assert.strictEqual(transaction.namespace, NAMESPACE); }); + it('should localize the transaction ID', function() { + var options = { + id: 'transaction-id', + }; + + var transaction = new Transaction(DATASTORE, options); + assert.strictEqual(transaction.id, options.id); + }); + + it('should localize readOnly', function() { + var options = { + readOnly: true, + }; + + var transaction = new Transaction(DATASTORE, options); + assert.strictEqual(transaction.readOnly, true); + }); + it('should localize request function', function(done) { var transaction; var fakeDataset = { - request: { + request_: { bind: function(context) { assert.strictEqual(context, fakeDataset); @@ -119,8 +137,8 @@ describe('Transaction', function() { }); return fakeDataset.request; - } - } + }, + }, }; transaction = new Transaction(fakeDataset); @@ -139,14 +157,26 @@ describe('Transaction', function() { }); it('should commit', function(done) { - transaction.request_ = function(protoOpts) { - assert.equal(protoOpts.service, 'Datastore'); - assert.equal(protoOpts.method, 'commit'); + transaction.request_ = function(config) { + assert.equal(config.client, 'DatastoreClient'); + assert.equal(config.method, 'commit'); + assert.strictEqual(config.gaxOptions, undefined); done(); }; transaction.commit(); }); + it('should accept gaxOptions', function(done) { + var gaxOptions = {}; + + transaction.request_ = function(config) { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + transaction.commit(gaxOptions); + }); + it('should skip the commit', function(done) { transaction.skipCommit = true; @@ -168,8 +198,7 @@ describe('Transaction', function() { callback(rollbackError, rollbackApiResponse); }; - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + transaction.request_ = function(config, callback) { callback(error, apiResponse); }; }); @@ -184,9 +213,8 @@ describe('Transaction', function() { }); it('should pass apiResponse to callback', function(done) { - var resp = { success: true }; - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + var resp = {success: true}; + transaction.request_ = function(config, callback) { callback(null, resp); }; transaction.commit(function(err, apiResponse) { @@ -200,8 +228,8 @@ describe('Transaction', function() { var deleteArg1 = key(['Product', 123]); var deleteArg2 = key(['Product', 234]); - var saveArg1 = { key: key(['Product', 345]), data: '' }; - var saveArg2 = { key: key(['Product', 456]), data: '' }; + var saveArg1 = {key: key(['Product', 345]), data: ''}; + var saveArg2 = {key: key(['Product', 456]), data: ''}; // Queue saves & deletes in varying order. transaction.delete(deleteArg1); @@ -233,16 +261,13 @@ describe('Transaction', function() { assert.equal(args.length, 2); // Save arguments must come first. - assert.deepEqual(args, [ - [saveArg1, saveArg2], - [deleteArg1, deleteArg2] - ]); + assert.deepEqual(args, [[saveArg1, saveArg2], [deleteArg1, deleteArg2]]); }); it('should honor ordering of mutations (last wins)', function() { // The delete should be ignored. transaction.delete(key(['Product', 123])); - transaction.save({ key: key(['Product', 123]), data: '' }); + transaction.save({key: key(['Product', 123]), data: ''}); var deleteCalled = 0; DatastoreRequestOverride.delete = function() { @@ -262,8 +287,8 @@ describe('Transaction', function() { }); it('should not squash key-incomplete mutations', function(done) { - transaction.save({ key: key(['Product']), data: '' }); - transaction.save({ key: key(['Product']), data: '' }); + transaction.save({key: key(['Product']), data: ''}); + transaction.save({key: key(['Product']), data: ''}); DatastoreRequestOverride.save = function(entities) { assert.strictEqual(entities.length, 2); @@ -278,27 +303,16 @@ describe('Transaction', function() { it('should send the built request object', function(done) { transaction.requests_ = [ { - mutations: [ - { a: 'b' }, - { c: 'd' } - ] + mutations: [{a: 'b'}, {c: 'd'}], }, { - mutations: [ - { e: 'f' }, - { g: 'h' } - ] - } + mutations: [{e: 'f'}, {g: 'h'}], + }, ]; - transaction.request_ = function(protoOpts, reqOpts) { - assert.deepEqual(reqOpts, { - mutations: [ - { a: 'b' }, - { c: 'd' }, - { e: 'f' }, - { g: 'h' } - ] + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts, { + mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], }); done(); }; @@ -311,11 +325,15 @@ describe('Transaction', function() { var cb2Called = false; transaction.requestCallbacks_ = [ - function() { cb1Called = true; }, - function() { cb2Called = true; } + function() { + cb1Called = true; + }, + function() { + cb2Called = true; + }, ]; - transaction.request_ = function(protoOpts, reqOpts, cb) { + transaction.request_ = function(config, cb) { cb(); }; @@ -350,7 +368,7 @@ describe('Transaction', function() { var keys = [ key('Product', 123), key('Product', 234), - key('Product', 345) + key('Product', 345), ]; transaction.delete(keys); @@ -371,18 +389,29 @@ describe('Transaction', function() { }); it('should rollback', function(done) { - transaction.request_ = function(protoOpts) { - assert.strictEqual(protoOpts.service, 'Datastore'); - assert.equal(protoOpts.method, 'rollback'); + transaction.request_ = function(config) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.equal(config.method, 'rollback'); + assert.strictEqual(config.gaxOptions, undefined); done(); }; transaction.rollback(); }); + it('should allow setting gaxOptions', function(done) { + var gaxOptions = {}; + + transaction.request_ = function(config) { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + transaction.rollback(gaxOptions); + }); + it('should pass error to callback', function(done) { var error = new Error('Error.'); - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + transaction.request_ = function(config, callback) { callback(error); }; transaction.rollback(function(err) { @@ -392,9 +421,8 @@ describe('Transaction', function() { }); it('should pass apiResponse to callback', function(done) { - var resp = { success: true }; - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + var resp = {success: true}; + transaction.request_ = function(config, callback) { callback(null, resp); }; transaction.rollback(function(err, apiResponse) { @@ -405,8 +433,7 @@ describe('Transaction', function() { }); it('should set skipCommit', function(done) { - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + transaction.request_ = function(config, callback) { callback(); }; transaction.rollback(function() { @@ -416,8 +443,7 @@ describe('Transaction', function() { }); it('should set skipCommit when rollback errors', function(done) { - transaction.request_ = function(protoOpts, reqOpts, callback) { - callback = callback || reqOpts; + transaction.request_ = function(config, callback) { callback(new Error('Error.')); }; transaction.rollback(function() { @@ -429,24 +455,111 @@ describe('Transaction', function() { describe('run', function() { it('should make the correct API request', function(done) { - transaction.request_ = function(protoOpts) { - assert.deepEqual(protoOpts, { - service: 'Datastore', - method: 'beginTransaction' - }); - + transaction.request_ = function(config) { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'beginTransaction'); + assert.deepEqual(config.reqOpts, {transactionOptions: {}}); + assert.strictEqual(config.gaxOpts, undefined); done(); }; transaction.run(assert.ifError); }); + it('should allow setting gaxOptions', function(done) { + var gaxOptions = {}; + + transaction.request_ = function(config) { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + transaction.run({gaxOptions: gaxOptions}); + }); + + describe('options.readOnly', function() { + it('should respect the readOnly option', function(done) { + var options = { + readOnly: true, + }; + + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts.transactionOptions.readOnly, {}); + done(); + }; + + transaction.run(options, assert.ifError); + }); + + it('should respect the global readOnly option', function(done) { + transaction.readOnly = true; + + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts.transactionOptions.readOnly, {}); + done(); + }; + + transaction.run(assert.ifError); + }); + }); + + describe('options.transactionId', function() { + it('should respect the transactionId option', function(done) { + var options = { + transactionId: 'transaction-id', + }; + + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts.transactionOptions.readWrite, { + previousTransaction: options.transactionId, + }); + done(); + }; + + transaction.run(options, assert.ifError); + }); + + it('should respect the global transactionId option', function(done) { + transaction.id = 'transaction-id'; + + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts.transactionOptions.readWrite, { + previousTransaction: transaction.id, + }); + done(); + }; + + transaction.run(assert.ifError); + }); + }); + + describe('options.transactionOptions', function() { + it('should allow full override of transactionOptions', function(done) { + transaction.readOnly = true; + + var options = { + transactionOptions: { + readWrite: { + previousTransaction: 'transaction-id', + }, + }, + }; + + transaction.request_ = function(config) { + assert.deepEqual(config.reqOpts, options); + done(); + }; + + transaction.run(options, assert.ifError); + }); + }); + describe('error', function() { var error = new Error('Error.'); var apiResponse = {}; beforeEach(function() { - transaction.request_ = function(protoOpts, callback) { + transaction.request_ = function(config, callback) { callback(error, apiResponse); }; }); @@ -463,11 +576,11 @@ describe('Transaction', function() { describe('success', function() { var apiResponse = { - transaction: TRANSACTION_ID + transaction: TRANSACTION_ID, }; beforeEach(function() { - transaction.request_ = function(protoOpts, callback) { + transaction.request_ = function(config, callback) { callback(null, apiResponse); }; }); @@ -496,9 +609,9 @@ describe('Transaction', function() { describe('save', function() { it('should push entities into a queue', function() { var entities = [ - { key: key('Product', 123), data: 123 }, - { key: key('Product', 234), data: 234 }, - { key: key('Product', 345), data: 345 } + {key: key('Product', 123), data: 123}, + {key: key('Product', 234), data: 234}, + {key: key('Product', 345), data: 345}, ]; transaction.save(entities); From ecf3efd82ce4899b68bcbcf93af3b7d9d0f2cc8d Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Fri, 15 Dec 2017 18:11:39 -0800 Subject: [PATCH 148/820] bump the version (#6) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 64b76b8a4ca..a94539e9878 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.1.0", + "version": "1.2.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { From e11b94b9909fed254e4dea43ead1d426e1a84bd1 Mon Sep 17 00:00:00 2001 From: Luke Sneeringer Date: Fri, 15 Dec 2017 18:23:42 -0800 Subject: [PATCH 149/820] Update samples/package.json to match package.json (#7) --- handwritten/nodejs-datastore/samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index e31c4d64dd1..429f9a91e0d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.1.0", + "@google-cloud/datastore": "1.2.0", "sinon": "4.1.2", "yargs": "10.0.3" }, From c2d0bd05270b11af84d9df14c863975449420f84 Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 18 Dec 2017 11:01:32 -0500 Subject: [PATCH 150/820] Properly locate grpc from google-gax. (#16) --- handwritten/nodejs-datastore/src/index.js | 2 +- handwritten/nodejs-datastore/test/index.js | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 261ae9bda54..c8a453a0f81 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -19,7 +19,7 @@ var arrify = require('arrify'); var common = require('@google-cloud/common'); var extend = require('extend'); -var grpc = require('google-gax').grpc; +var grpc = require('google-gax').grpc().grpc; var googleAuth = require('google-auto-auth'); var is = require('is'); var util = require('util'); diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index b4b4b40ec5b..dc81fa47980 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -60,12 +60,16 @@ function fakeGoogleAutoAuth() { var createInsecureOverride; var fakeGoogleGax = { - grpc: { - credentials: { - createInsecure: function() { - return (createInsecureOverride || util.noop).apply(null, arguments); + grpc: function() { + return { + grpc: { + credentials: { + createInsecure: function() { + return (createInsecureOverride || util.noop).apply(null, arguments); + }, + }, }, - }, + }; }, }; From bceca6cc0b38b0e2e9115f1e02bbc2bfc1871626 Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 18 Dec 2017 11:47:11 -0500 Subject: [PATCH 151/820] 1.2.1 (#17) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a94539e9878..2fd3c97fa0f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.2.0", + "version": "1.2.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 429f9a91e0d..1e9e87cffd0 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.2.0", + "@google-cloud/datastore": "1.2.1", "sinon": "4.1.2", "yargs": "10.0.3" }, From cb6b0a3b22819504bef3ad7c933a312718ab3463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?antoine=20beau=E1=B5=9B=E1=B5=83=E1=B4=B5=CB=A2=E2=81=BBla?= =?UTF-8?q?c=E1=B5=83=CB=A2=CB=A2=E1=B5=89?= Date: Mon, 18 Dec 2017 15:05:53 -0500 Subject: [PATCH 152/820] Support excludeFromIndexes for primitives in arrays. (#18) * Support excludeFromIndexes for primitives in arrays. * Incorporate into system test. --- handwritten/nodejs-datastore/src/entity.js | 18 ++++-- handwritten/nodejs-datastore/src/request.js | 2 + .../nodejs-datastore/system-test/datastore.js | 2 + handwritten/nodejs-datastore/test/entity.js | 60 +++++++++++++++++++ 4 files changed, 77 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 17de4c9801c..2e26e1ab487 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -499,9 +499,14 @@ function entityToEntityProto(entityObject) { var hasEntityPath = entityIndex > -1; if (!hasArrayPath && !hasEntityPath) { - if (entity.properties[path]) { - // This is the property to exclude! - entity.properties[path].excludeFromIndexes = true; + if (entity.properties) { + if (entity.properties[path]) { + // This is the property to exclude! + entity.properties[path].excludeFromIndexes = true; + } + } else if (!path) { + // This is a primitive that should be excluded. + entity.excludeFromIndexes = true; } return; } @@ -521,14 +526,17 @@ function entityToEntityProto(entityObject) { var firstPathPart = splitPath.shift(); var remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); - if (!entity.properties[firstPathPart]) { + if (!(entity.properties && entity.properties[firstPathPart])) { + // Either a primitive or an entity for which this path doesn't apply. return; } if (firstPathPartIsArray) { var array = entity.properties[firstPathPart].arrayValue; + array.values.forEach(function(arrayValue) { - excludePathFromEntity(arrayValue.entityValue, remainderPath); + var memberEntity = arrayValue.entityValue || arrayValue; + excludePathFromEntity(memberEntity, remainderPath); }); } else if (firstPathPartIsEntity) { var parentEntity = entity.properties[firstPathPart].entityValue; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 2ccd47067eb..f9e11a234fe 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -867,6 +867,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * excludeFromIndexes: [ * 'description', * 'embeddedEntity.description', + * 'arrayValue[]', * 'arrayValue[].description' * ], * data: { @@ -875,6 +876,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * description: 'Long string (...)' * }, * arrayValue: [ + * 'Long string (...)', * { * description: 'Long string (...)' * } diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 532fc5a42a1..080b613c0a7 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -87,6 +87,7 @@ describe('Datastore', function() { var data = { longString: longString, notMetadata: true, + longStringArray: [longString], metadata: { longString: longString, otherProperty: 'value', @@ -129,6 +130,7 @@ describe('Datastore', function() { data: data, excludeFromIndexes: [ 'longString', + 'longStringArray[]', 'metadata.obj.longString', 'metadata.obj.longStringArray[].longString', 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 3fbecce8c24..073dfe82e81 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -591,10 +591,13 @@ describe('entity', function() { excludeFromIndexes: [ 'name', 'entity.name', + 'array[]', 'array[].name', 'array[].entity.name', 'array[].entity.array[].name', 'array[].array[].entity.name', + 'entityExcluded[].name', + 'primitiveExcluded[]', ], data: { @@ -604,7 +607,22 @@ describe('entity', function() { name: value, }, + entityExcluded: [ + value, + { + name: value, + }, + ], + + primitiveExcluded: [ + value, + { + name: value, + }, + ], + array: [ + value, { name: value, }, @@ -648,9 +666,51 @@ describe('entity', function() { }, }, }, + entityExcluded: { + arrayValue: { + values: [ + { + stringValue: value, + }, + { + entityValue: { + properties: { + name: { + stringValue: value, + excludeFromIndexes: true, + }, + }, + }, + }, + ], + }, + }, + primitiveExcluded: { + arrayValue: { + values: [ + { + stringValue: value, + excludeFromIndexes: true, + }, + { + entityValue: { + properties: { + name: { + stringValue: value, + }, + }, + }, + }, + ], + }, + }, array: { arrayValue: { values: [ + { + stringValue: value, + excludeFromIndexes: true, + }, { entityValue: { properties: { From 336328a4682162d5dd5f2844c96e29b79406b419 Mon Sep 17 00:00:00 2001 From: Stephen Date: Tue, 19 Dec 2017 09:58:59 -0500 Subject: [PATCH 153/820] 1.3.0 (#19) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2fd3c97fa0f..1108b446763 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.2.1", + "version": "1.3.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 1e9e87cffd0..6e379042f39 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.2.1", + "@google-cloud/datastore": "1.3.0", "sinon": "4.1.2", "yargs": "10.0.3" }, From e3bb9eab52116ec9ee17cd12008f76054f7fbd82 Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 20 Dec 2017 10:20:59 -0500 Subject: [PATCH 154/820] Return endCursor as a base64 string. (#21) --- handwritten/nodejs-datastore/src/request.js | 2 +- handwritten/nodejs-datastore/test/request.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index f9e11a234fe..1616c6e0222 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -686,7 +686,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { }; if (resp.batch.endCursor) { - info.endCursor = resp.batch.endCursor; + info.endCursor = resp.batch.endCursor.toString('base64'); } var entities = []; diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index f1bcace57b7..e36666ffb59 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -939,7 +939,10 @@ describe('Request', function() { }; FakeQuery.prototype.start = function(endCursor) { - assert.strictEqual(endCursor, apiResponse.batch.endCursor); + assert.strictEqual( + endCursor, + apiResponse.batch.endCursor.toString('base64') + ); startCalled = true; return this; }; @@ -991,7 +994,7 @@ describe('Request', function() { assert.deepEqual(entities, allResults); assert.deepEqual(info, { - endCursor: apiResponse.batch.endCursor, + endCursor: apiResponse.batch.endCursor.toString('base64'), moreResults: apiResponse.batch.moreResults, }); From b12283154888376cf0df315ce2e1a7ff22c4629c Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 20 Dec 2017 12:51:44 -0500 Subject: [PATCH 155/820] v1.3.1 (#22) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1108b446763..16217665ee2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.0", + "version": "1.3.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 6e379042f39..8acb5c56351 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.0", + "@google-cloud/datastore": "1.3.1", "sinon": "4.1.2", "yargs": "10.0.3" }, From 10f6deb44f5bd1361da36a0dd4f51dca1884fdbf Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 20 Dec 2017 13:43:35 -0500 Subject: [PATCH 156/820] Numberify port from an emulator env var. (#24) --- handwritten/nodejs-datastore/src/index.js | 2 +- handwritten/nodejs-datastore/test/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index c8a453a0f81..41a3bf701d2 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -713,7 +713,7 @@ Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { } if (port.test(baseUrl)) { - this.port_ = baseUrl.match(port)[1]; + this.port_ = Number(baseUrl.match(port)[1]); } this.baseUrl_ = baseUrl diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index dc81fa47980..7f2968980aa 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -548,10 +548,10 @@ describe('Datastore', function() { assert.strictEqual(datastore.baseUrl_, 'localhost'); }); - it('should set port if one was found', function() { + it('should set Numberified port if one was found', function() { setHost('http://localhost:9090'); datastore.determineBaseUrl_(); - assert.strictEqual(datastore.port_, '9090'); + assert.strictEqual(datastore.port_, 9090); }); it('should not set customEndpoint_ when using default baseurl', function() { @@ -573,7 +573,7 @@ describe('Datastore', function() { describe('with DATASTORE_EMULATOR_HOST environment variable', function() { var DATASTORE_EMULATOR_HOST = 'localhost:9090'; var EXPECTED_BASE_URL = 'localhost'; - var EXPECTED_PORT = '9090'; + var EXPECTED_PORT = 9090; beforeEach(function() { setHost(DATASTORE_EMULATOR_HOST); From 268d0340c7e161c9f95779581481cb4314908286 Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 20 Dec 2017 14:08:05 -0500 Subject: [PATCH 157/820] 1.3.2 (#25) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 16217665ee2..ca98fa5f717 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.1", + "version": "1.3.2", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8acb5c56351..72904ea455a 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.1", + "@google-cloud/datastore": "1.3.2", "sinon": "4.1.2", "yargs": "10.0.3" }, From ca8bbae866656dba6747ed05f6fbea62fbeba8ee Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 20 Dec 2017 15:51:26 -0500 Subject: [PATCH 158/820] fix(package): update google-auto-auth to version 0.8.2 (#26) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ca98fa5f717..0eb7bb80910 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -63,7 +63,7 @@ "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auto-auth": "^0.7.2", + "google-auto-auth": "^0.8.2", "google-gax": "^0.14.2", "google-proto-files": "^0.13.1", "is": "^3.0.1", From b11c9b8fcce3d2375d37fbb6d5d2962ddbe4751b Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 21 Dec 2017 14:08:09 -0800 Subject: [PATCH 159/820] Run CI as non-root user (#30) Speeding up CI by temporary switching it to non-root user, until GRPC tarball ownership issue is fixed. --- .../nodejs-datastore/.circleci/config.yml | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index e986756c997..a9e075aada0 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -91,6 +91,7 @@ jobs: node4: docker: - image: node:4 + user: node steps: - checkout - run: @@ -106,30 +107,38 @@ jobs: node6: docker: - image: node:6 + user: node <<: *unit_tests node7: docker: - image: node:7 + user: node <<: *unit_tests node8: docker: - image: node:8 + user: node <<: *unit_tests node9: docker: - image: node:9 + user: node <<: *unit_tests lint: docker: - image: node:8 + user: node steps: - checkout - run: name: Install modules and dependencies. command: | + mkdir -p /home/node/.npm-global npm install npm link + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Link the module being tested to the samples. command: | @@ -137,13 +146,18 @@ jobs: npm link @google-cloud/datastore npm install cd .. + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Run linting. command: npm run lint + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global docs: docker: - image: node:8 + user: node steps: - checkout - run: @@ -156,6 +170,7 @@ jobs: sample_tests: docker: - image: node:8 + user: node steps: - checkout - run: @@ -167,8 +182,11 @@ jobs: - run: name: Install and link the module. command: | + mkdir -p /home/node/.npm-global npm install npm link + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Link the module being tested to the samples. command: | @@ -176,21 +194,25 @@ jobs: npm link @google-cloud/datastore npm install cd .. + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Run sample tests. command: npm run samples-test environment: GCLOUD_PROJECT: long-door-651 GOOGLE_APPLICATION_CREDENTIALS: /var/datastore/.circleci/key.json + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Remove unencrypted key. command: rm .circleci/key.json when: always - working_directory: /var/datastore/ + working_directory: /home/node/datastore-samples/ system_tests: docker: - image: node:8 + user: node steps: - checkout - run: @@ -216,6 +238,7 @@ jobs: publish_npm: docker: - image: node:8 + user: node steps: - checkout - run: From 4cd5738e7f94a23bf3ab07099ed98a71a14a7ffb Mon Sep 17 00:00:00 2001 From: Stephen Date: Thu, 21 Dec 2017 18:06:56 -0500 Subject: [PATCH 160/820] Provide user's project ID to google-auto-auth. (#28) * Provide user's project ID to google-auto-auth. * Add tests. * Remove un-used test. --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/index.js | 11 +++++++--- handwritten/nodejs-datastore/test/index.js | 24 +++++++++++++++++++--- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0eb7bb80910..85dd895f8f1 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -63,7 +63,7 @@ "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auto-auth": "^0.8.2", + "google-auto-auth": "^0.9.0", "google-gax": "^0.14.2", "google-proto-files": "^0.13.1", "is": "^3.0.1", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 41a3bf701d2..429a24ee354 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -370,17 +370,22 @@ function Datastore(options) { this.clients_ = new Map(); this.datastore = this; + /** * @name Datastore#namespace * @type {string} */ this.namespace = options.namespace; + + const userProvidedProjectId = + options.projectId || process.env.DATASTORE_PROJECT_ID; + const defaultProjectId = '{{projectId}}'; + /** * @name Datastore#projectId * @type {string} */ - this.projectId = - process.env.DATASTORE_PROJECT_ID || options.projectId || '{{projectId}}'; + this.projectId = userProvidedProjectId || defaultProjectId; this.defaultBaseUrl_ = 'datastore.googleapis.com'; this.determineBaseUrl_(options.apiEndpoint); @@ -392,10 +397,10 @@ function Datastore(options) { scopes: gapic.v1.DatastoreClient.scopes, servicePath: this.baseUrl_, port: is.number(this.port_) ? this.port_ : 443, + projectId: userProvidedProjectId, }, options ); - if (this.customEndpoint_) { this.options.sslCreds = grpc.credentials.createInsecure(); } diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 7f2968980aa..10427e18c93 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -90,6 +90,8 @@ describe('Datastore', function() { var PROJECT_ID = 'project-id'; var NAMESPACE = 'namespace'; + var DATASTORE_PROJECT_ID_CACHED = process.env.DATASTORE_PROJECT_ID; + var OPTIONS = { projectId: PROJECT_ID, apiEndpoint: 'http://endpoint', @@ -123,6 +125,14 @@ describe('Datastore', function() { }); }); + afterEach(function() { + if (typeof DATASTORE_PROJECT_ID_CACHED === 'string') { + process.env.DATASTORE_PROJECT_ID = DATASTORE_PROJECT_ID_CACHED; + } else { + delete process.env.DATASTORE_PROJECT_ID; + } + }); + after(function() { createInsecureOverride = null; googleAutoAuthOverride = null; @@ -167,6 +177,7 @@ describe('Datastore', function() { it('should localize the projectId', function() { assert.strictEqual(datastore.projectId, PROJECT_ID); + assert.strictEqual(datastore.options.projectId, PROJECT_ID); }); it('should default project ID to placeholder', function() { @@ -174,16 +185,20 @@ describe('Datastore', function() { assert.strictEqual(datastore.projectId, '{{projectId}}'); }); + it('should not default options.projectId to placeholder', function() { + var datastore = new Datastore({}); + assert.strictEqual(datastore.options.projectId, undefined); + }); + it('should use DATASTORE_PROJECT_ID', function() { - var datastoreProjectIdCached = process.env.DATASTORE_PROJECT_ID; var projectId = 'overridden-project-id'; process.env.DATASTORE_PROJECT_ID = projectId; - var datastore = new Datastore(OPTIONS); - process.env.DATASTORE_PROJECT_ID = datastoreProjectIdCached; + var datastore = new Datastore({}); assert.strictEqual(datastore.projectId, projectId); + assert.strictEqual(datastore.options.projectId, projectId); }); it('should set the default base URL', function() { @@ -204,6 +219,8 @@ describe('Datastore', function() { }); it('should localize the options', function() { + delete process.env.DATASTORE_PROJECT_ID; + var options = { a: 'b', c: 'd', @@ -222,6 +239,7 @@ describe('Datastore', function() { scopes: v1.DatastoreClient.scopes, servicePath: datastore.baseUrl_, port: 443, + projectId: undefined, }, options ) From c6602de275a09ef6b489c920215cf10fb42b9188 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 21 Dec 2017 15:20:32 -0800 Subject: [PATCH 161/820] fix samples test CI configuration (#31) --- handwritten/nodejs-datastore/.circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index a9e075aada0..f298870636c 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -201,7 +201,7 @@ jobs: command: npm run samples-test environment: GCLOUD_PROJECT: long-door-651 - GOOGLE_APPLICATION_CREDENTIALS: /var/datastore/.circleci/key.json + GOOGLE_APPLICATION_CREDENTIALS: /home/node/datastore-samples/.circleci/key.json NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Remove unencrypted key. From 66cda6a675edb60a1b4572532782500bcabfb887 Mon Sep 17 00:00:00 2001 From: Stephen Date: Fri, 22 Dec 2017 14:19:22 -0500 Subject: [PATCH 162/820] 1.3.3 (#32) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 85dd895f8f1..be8683ab653 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.2", + "version": "1.3.3", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 72904ea455a..a3423cb7373 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.2", + "@google-cloud/datastore": "1.3.3", "sinon": "4.1.2", "yargs": "10.0.3" }, From 1a1e531512c91474d761ad39f08a537ccbfdbfba Mon Sep 17 00:00:00 2001 From: Dominic Kramer Date: Tue, 2 Jan 2018 13:48:31 -0800 Subject: [PATCH 163/820] fix: Update the link for the Client API Reference (#38) * fix: Update the link for the Client API Reference * Update the `client-docs` URL --- handwritten/nodejs-datastore/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index edd844c9211..e9092ba9f79 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -138,6 +138,6 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ +[client-docs]: https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/datastore [product-docs]: https://cloud.google.com/datastore/docs [shell_img]: http://gstatic.com/cloudssh/images/open-btn.png From 41102c56fec6520a699d798d2fa1f2782bfe2fce Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 4 Jan 2018 10:55:20 -0800 Subject: [PATCH 164/820] Revert "fix: Update the link for the Client API Reference (#38)" (#40) This reverts commit 4868f8d44c3046ea65a4e548606701b8e07bc2b8. --- handwritten/nodejs-datastore/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index e9092ba9f79..edd844c9211 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -138,6 +138,6 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/datastore +[client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ [product-docs]: https://cloud.google.com/datastore/docs [shell_img]: http://gstatic.com/cloudssh/images/open-btn.png From e1c5e384e1456283f7cf83a24c7c6493afc96887 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 18 Jan 2018 08:19:00 -0500 Subject: [PATCH 165/820] =?UTF-8?q?Update=20mocha=20to=20the=20latest=20ve?= =?UTF-8?q?rsion=20=F0=9F=9A=80=20(#41)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index be8683ab653..baf74dd469a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -88,7 +88,7 @@ "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", - "mocha": "^4.0.1", + "mocha": "^5.0.0", "nyc": "^11.3.0", "power-assert": "^1.4.4", "prettier": "^1.9.2", From 3aac27baee65e6439873c82dd5615f07b8e4e852 Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 24 Jan 2018 16:21:17 -0500 Subject: [PATCH 166/820] Normalize arguments when using new. (#42) --- handwritten/nodejs-datastore/src/index.js | 7 +++---- handwritten/nodejs-datastore/test/index.js | 21 +++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 429a24ee354..7e874b71833 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -360,13 +360,12 @@ const gapic = Object.freeze({ */ function Datastore(options) { if (!(this instanceof Datastore)) { - options = common.util.normalizeArguments(this, options, { - projectIdRequired: false, - }); return new Datastore(options); } - options = options || {}; + options = common.util.normalizeArguments(this, options, { + projectIdRequired: false, + }); this.clients_ = new Map(); this.datastore = this; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 10427e18c93..933a7780a2e 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -52,6 +52,7 @@ var fakeEntity = { }; var fakeUtil = extend({}, util); +var originalFakeUtil = extend(true, {}, fakeUtil); var googleAutoAuthOverride; function fakeGoogleAutoAuth() { @@ -116,6 +117,8 @@ describe('Datastore', function() { }); beforeEach(function() { + extend(fakeUtil, originalFakeUtil); + createInsecureOverride = null; googleAutoAuthOverride = null; @@ -143,23 +146,25 @@ describe('Datastore', function() { }); describe('instantiation', function() { + it('should work without new', function() { + assert.doesNotThrow(function() { + Datastore({projectId: PROJECT_ID}); + }); + }); + it('should normalize the arguments', function() { - var normalizeArguments = fakeUtil.normalizeArguments; var normalizeArgumentsCalled = false; - var fakeContext = {}; + var options = {}; fakeUtil.normalizeArguments = function(context, options_, config) { normalizeArgumentsCalled = true; - assert.strictEqual(context, fakeContext); - assert.strictEqual(OPTIONS, options_); + assert.strictEqual(options_, options); assert.strictEqual(config.projectIdRequired, false); return options_; }; - Datastore.call(fakeContext, OPTIONS); - assert(normalizeArgumentsCalled); - - fakeUtil.normalizeArguments = normalizeArguments; + new Datastore(options); + assert.strictEqual(normalizeArgumentsCalled, true); }); it('should initialize an empty Client map', function() { From 43cf534ed89d86154b393ce0f336e5cae3152c27 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 26 Jan 2018 13:15:22 -0800 Subject: [PATCH 167/820] fix(package): update google-proto-files to version 0.14.2 (#45) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index baf74dd469a..e7b5a61f275 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "extend": "^3.0.1", "google-auto-auth": "^0.9.0", "google-gax": "^0.14.2", - "google-proto-files": "^0.13.1", + "google-proto-files": "^0.14.2", "is": "^3.0.1", "lodash.flatten": "^4.2.0", "lodash.merge": "^4.6.0", From 31c8e43f0c1166d12d530f8c423e94b1b7f252e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?antoine=20beau=E1=B5=9B=E1=B5=83=E1=B4=B5=CB=A2=E2=81=BBla?= =?UTF-8?q?c=E1=B5=83=CB=A2=CB=A2=E1=B5=89?= Date: Thu, 1 Feb 2018 11:14:45 -0500 Subject: [PATCH 168/820] Don't modify Key constructor input path. (#48) --- handwritten/nodejs-datastore/src/entity.js | 6 ++++-- handwritten/nodejs-datastore/test/entity.js | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 2e26e1ab487..918c3a96e43 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -158,8 +158,8 @@ entity.isDsGeoPoint = isDsGeoPoint; * Build a Datastore Key object. * * @class - * @param {object|string|array} Configuration object. - * @param {string|array} options.path Key path. + * @param {object} options Configuration object. + * @param {array} options.path Key path. * @param {string} [options.namespace] Optional namespace. * * @example @@ -177,6 +177,8 @@ function Key(options) { */ this.namespace = options.namespace; + options.path = [].slice.call(options.path); + if (options.path.length % 2 === 0) { var identifier = options.path.pop(); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 073dfe82e81..849914db78c 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -155,6 +155,12 @@ describe('entity', function() { assert(key.parent instanceof entity.Key); }); + it('should not modify input path', function() { + var inputPath = ['ParentKind', 1, 'Kind', 1]; + new entity.Key({path: inputPath}); + assert.deepEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); + }); + it('should always compute the correct path', function() { var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert.deepEqual(key.path, ['ParentKind', 1, 'Kind', 1]); From 87a271c5e3db0d2645f4f7aeda338bb6915d8c5d Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 1 Feb 2018 21:33:24 -0500 Subject: [PATCH 169/820] =?UTF-8?q?Update=20google-proto-files=20to=20the?= =?UTF-8?q?=20latest=20version=20=F0=9F=9A=80=20(#50)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e7b5a61f275..dcf609fdee6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "extend": "^3.0.1", "google-auto-auth": "^0.9.0", "google-gax": "^0.14.2", - "google-proto-files": "^0.14.2", + "google-proto-files": "^0.15.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", "lodash.merge": "^4.6.0", From 938df33e3199752dcd0dc15ce4fbdeb8ac3ee8bc Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 5 Feb 2018 09:00:04 -0500 Subject: [PATCH 170/820] =?UTF-8?q?Update=20eslint-plugin-node=20to=20the?= =?UTF-8?q?=20latest=20version=20=F0=9F=9A=80=20(#51)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index dcf609fdee6..d38ad255708 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -83,7 +83,7 @@ "deep-strict-equal": "^0.2.0", "eslint": "^4.10.0", "eslint-config-prettier": "^2.7.0", - "eslint-plugin-node": "^5.2.1", + "eslint-plugin-node": "^6.0.0", "eslint-plugin-prettier": "^2.3.1", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", From 5f63d6940a5cbf3af055d4b335033066af24a0f2 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 7 Feb 2018 10:16:44 -0500 Subject: [PATCH 171/820] =?UTF-8?q?Update=20@google-cloud/common=20to=20th?= =?UTF-8?q?e=20latest=20version=20=F0=9F=9A=80=20(#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d38ad255708..0c5ad786a69 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -58,7 +58,7 @@ "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --no-timeouts" }, "dependencies": { - "@google-cloud/common": "^0.14.0", + "@google-cloud/common": "^0.16.0", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", From e8267f21c318884307404e3545415842f4869068 Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 12 Feb 2018 13:00:46 -0500 Subject: [PATCH 172/820] 1.3.4 (#58) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0c5ad786a69..2b2b3b9fc46 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.3", + "version": "1.3.4", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a3423cb7373..afbf7ea645c 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.3", + "@google-cloud/datastore": "1.3.4", "sinon": "4.1.2", "yargs": "10.0.3" }, From 0b6c3eb44846f01e7ba239ddcfe7cf6d627cd893 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 22 Feb 2018 16:09:55 -0800 Subject: [PATCH 173/820] chore: removing node7 job from CircleCI (#61) * chore: removing node7 job from CircleCI * chore: rename reference --- .../nodejs-datastore/.circleci/config.yml | 63 +++++++------------ 1 file changed, 21 insertions(+), 42 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index f298870636c..94503a3f8fb 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -1,7 +1,5 @@ ---- -# "Include" for unit tests definition. -unit_tests: &unit_tests - steps: +unit_tests: + steps: &unit_tests - checkout - run: name: Install modules and dependencies. @@ -13,8 +11,7 @@ unit_tests: &unit_tests name: Submit coverage data to codecov. command: node_modules/.bin/codecov when: always - -version: 2.0 +version: 2 workflows: version: 2 tests: @@ -27,10 +24,6 @@ workflows: filters: tags: only: /.*/ - - node7: - filters: - tags: - only: /.*/ - node8: filters: tags: @@ -43,7 +36,6 @@ workflows: requires: - node4 - node6 - - node7 - node8 - node9 filters: @@ -53,7 +45,6 @@ workflows: requires: - node4 - node6 - - node7 - node8 - node9 filters: @@ -67,7 +58,7 @@ workflows: branches: only: master tags: - only: /^v[\d.]+$/ + only: '/^v[\d.]+$/' - sample_tests: requires: - lint @@ -76,7 +67,7 @@ workflows: branches: only: master tags: - only: /^v[\d.]+$/ + only: '/^v[\d.]+$/' - publish_npm: requires: - system_tests @@ -85,12 +76,11 @@ workflows: branches: ignore: /.*/ tags: - only: /^v[\d.]+$/ - + only: '/^v[\d.]+$/' jobs: node4: docker: - - image: node:4 + - image: 'node:4' user: node steps: - checkout @@ -106,28 +96,22 @@ jobs: when: always node6: docker: - - image: node:6 - user: node - <<: *unit_tests - node7: - docker: - - image: node:7 + - image: 'node:6' user: node - <<: *unit_tests + steps: *unit_tests node8: docker: - - image: node:8 + - image: 'node:8' user: node - <<: *unit_tests + steps: *unit_tests node9: docker: - - image: node:9 + - image: 'node:9' user: node - <<: *unit_tests - + steps: *unit_tests lint: docker: - - image: node:8 + - image: 'node:8' user: node steps: - checkout @@ -153,10 +137,9 @@ jobs: command: npm run lint environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - docs: docker: - - image: node:8 + - image: 'node:8' user: node steps: - checkout @@ -166,10 +149,9 @@ jobs: - run: name: Build documentation. command: npm run docs - sample_tests: docker: - - image: node:8 + - image: 'node:8' user: node steps: - checkout @@ -208,10 +190,9 @@ jobs: command: rm .circleci/key.json when: always working_directory: /home/node/datastore-samples/ - system_tests: docker: - - image: node:8 + - image: 'node:8' user: node steps: - checkout @@ -234,17 +215,15 @@ jobs: name: Remove unencrypted key. command: rm .circleci/key.json when: always - publish_npm: docker: - - image: node:8 + - image: 'node:8' user: node steps: - checkout - run: name: Set NPM authentication. - command: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + command: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' - run: - name: Publish the module to npm. - command: npm publish - + name: Publish the module to npm. + command: npm publish From 060cb923b60002cc278f0f7db3b181db31be4611 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 5 Mar 2018 16:22:06 -0500 Subject: [PATCH 174/820] fix(package): update google-gax to version 0.15.0 (#65) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2b2b3b9fc46..88c47084f23 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auto-auth": "^0.9.0", - "google-gax": "^0.14.2", + "google-gax": "^0.15.0", "google-proto-files": "^0.15.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", From 6779dee89028652ecb06ffdcfb7d0ba2e4a8fa18 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 7 Mar 2018 21:14:17 -0500 Subject: [PATCH 175/820] =?UTF-8?q?Update=20proxyquire=20to=20the=20latest?= =?UTF-8?q?=20version=20=F0=9F=9A=80=20(#64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 88c47084f23..2886e40b8c2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -92,7 +92,7 @@ "nyc": "^11.3.0", "power-assert": "^1.4.4", "prettier": "^1.9.2", - "proxyquire": "^1.7.10", + "proxyquire": "^2.0.0", "sinon": "^4.1.1" } } From a2da5c7bd79b37e8859d36a9666467804b9d5bd4 Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 7 Mar 2018 22:00:18 -0500 Subject: [PATCH 176/820] v1.3.5 (#67) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2886e40b8c2..9de0071fca3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.4", + "version": "1.3.5", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index afbf7ea645c..1a79977a1e1 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.4", + "@google-cloud/datastore": "1.3.5", "sinon": "4.1.2", "yargs": "10.0.3" }, From 08ce0666865dcf49862bb651128bcd7bb6e5fb45 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 14 Mar 2018 16:22:10 -0400 Subject: [PATCH 177/820] fix(package): update google-gax to version 0.16.0 (#68) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9de0071fca3..223b1c249f6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auto-auth": "^0.9.0", - "google-gax": "^0.15.0", + "google-gax": "^0.16.0", "google-proto-files": "^0.15.0", "is": "^3.0.1", "lodash.flatten": "^4.2.0", From f7c60d95d0b3603b5b1b72902e67781256baa54b Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 16 Mar 2018 13:12:44 -0700 Subject: [PATCH 178/820] Upgrade repo-tools and regenerate scaffolding. (#70) * Upgrade repo-tools and regenerate scaffolding. * looks like new package-lock.json fixes lint error * update package-lock.json for samples --- handwritten/nodejs-datastore/.gitignore | 1 - handwritten/nodejs-datastore/CONTRIBUTORS | 4 + handwritten/nodejs-datastore/README.md | 2 +- .../nodejs-datastore/package-lock.json | 14625 +++++++++++ handwritten/nodejs-datastore/package.json | 6 +- .../nodejs-datastore/samples/README.md | 2 +- .../samples/package-lock.json | 20166 ++++++++++++++++ .../nodejs-datastore/samples/package.json | 2 +- 8 files changed, 34803 insertions(+), 5 deletions(-) create mode 100644 handwritten/nodejs-datastore/package-lock.json create mode 100644 handwritten/nodejs-datastore/samples/package-lock.json diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 6b80718f261..b7d407606fb 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -7,4 +7,3 @@ out/ system-test/secrets.js system-test/*key.json *.lock -*-lock.js* diff --git a/handwritten/nodejs-datastore/CONTRIBUTORS b/handwritten/nodejs-datastore/CONTRIBUTORS index 4e3aa7f5d47..3c498cd5818 100644 --- a/handwritten/nodejs-datastore/CONTRIBUTORS +++ b/handwritten/nodejs-datastore/CONTRIBUTORS @@ -4,12 +4,15 @@ # name # Ace Nassri +Alexander Fenster Ali Ijaz Sheikh Dave Gramlich +Dominic Kramer Eric Uldall Geoffrey Gowan Jason Dobry Jun Mukai +Luke Sneeringer Luke Sneeringer Patrick Costello Philip Irri @@ -18,4 +21,5 @@ Stephen Sawchuk Tim Swast Walter Poupore antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ +greenkeeper[bot] tcrognon diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index edd844c9211..56a18c22923 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -140,4 +140,4 @@ See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ [product-docs]: https://cloud.google.com/datastore/docs -[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png +[shell_img]: //gstatic.com/cloudssh/images/open-btn.png diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json new file mode 100644 index 00000000000..bd895f17d6d --- /dev/null +++ b/handwritten/nodejs-datastore/package-lock.json @@ -0,0 +1,14625 @@ +{ + "name": "@google-cloud/datastore", + "version": "1.3.5", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", + "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", + "dev": true + }, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", + "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "package-hash": "1.2.0" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "package-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", + "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "dev": true, + "requires": { + "md5-hex": "1.3.0" + } + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", + "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", + "dev": true, + "requires": { + "@ava/babel-plugin-throws-helper": "2.0.0", + "babel-plugin-espower": "2.3.2" + } + }, + "@ava/write-file-atomic": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", + "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "@concordance/react": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", + "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", + "dev": true, + "requires": { + "arrify": "1.0.1" + } + }, + "@google-cloud/common": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.2.tgz", + "integrity": "sha512-GrkaFoj0/oO36pNs4yLmaYhTujuA3i21FdQik99Fd/APix1uhf01VlpJY4lAteTDFLRNkRx6ydEh7OVvmeUHng==", + "requires": { + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.1", + "ent": "2.2.0", + "extend": "3.0.1", + "google-auto-auth": "0.9.7", + "is": "3.2.1", + "log-driver": "1.2.7", + "methmeth": "1.1.0", + "modelo": "4.2.0", + "request": "2.83.0", + "retry-request": "3.1.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.2", + "string-format-obj": "1.1.0", + "through2": "2.0.3" + }, + "dependencies": { + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + } + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.3.tgz", + "integrity": "sha512-O6OVc8lKiLL8Qtoc1lVAynf5pJT550fHZcW33a7oQ7TMNkrTHPgeoYw4esi4KSbDRn8gV+cfefnkgqxXmr+KzA==", + "dev": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", + "ansi-escapes": "3.0.0", + "ansi-styles": "3.2.0", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.1.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "babel-generator": "6.26.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.0", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.1", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.0.10", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.1.0", + "matcher": "1.0.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.0.0", + "plur": "2.1.2", + "pretty-ms": "3.0.1", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "semver": "5.4.1", + "slash": "1.0.0", + "source-map-support": "0.5.4", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supertap": "1.0.0", + "supports-color": "5.3.0", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "1.2.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "sinon": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", + "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "dev": true, + "requires": { + "@sinonjs/formatio": "2.0.0", + "diff": "3.4.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "5.3.0", + "type-detect": "4.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/inquire": "1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@types/long": { + "version": "3.0.32", + "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", + "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + }, + "@types/node": { + "version": "8.9.5", + "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==" + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "0.7.1", + "optjs": "3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + }, + "auto-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", + "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "dev": true + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-espower": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", + "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babylon": "6.18.0", + "call-matcher": "1.0.1", + "core-js": "2.5.1", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "boxen": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", + "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "3.2.0" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "deep-equal": "1.0.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chardet": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.0.tgz", + "integrity": "sha1-C74TVaxE16PtSpJXB8TvcPgZD2w=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "ci-info": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", + "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", + "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "1.0.0" + }, + "dependencies": { + "pinkie": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "dev": true + }, + "pinkie-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true, + "requires": { + "pinkie": "1.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codecov": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", + "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", + "dev": true, + "requires": { + "argv": "0.0.2", + "request": "2.81.0", + "urlgrey": "0.4.4" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "2.1.0", + "esutils": "2.0.2", + "fast-diff": "1.1.2", + "function-name-support": "0.2.0", + "js-string-escape": "1.0.1", + "lodash.clonedeep": "4.5.0", + "lodash.flattendeep": "4.4.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "semver": "5.4.1", + "well-known-symbols": "1.0.0" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "1.0.1", + "is-error": "2.2.1" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.41" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deep-strict-equal": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", + "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", + "dev": true, + "requires": { + "core-assert": "0.2.1" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", + "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=" + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "eastasianwidth": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", + "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "empower": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", + "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", + "requires": { + "core-js": "2.5.1", + "empower-core": "0.6.2" + } + }, + "empower-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/empower-assert/-/empower-assert-1.0.1.tgz", + "integrity": "sha1-MeMQq8BluqfDoEh+a+W7zGXzwd4=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "requires": { + "call-signature": "0.0.2", + "core-js": "2.5.1" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "requires": { + "once": "1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.41", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.41.tgz", + "integrity": "sha512-MYK02wXfwTMie5TEJWPolgOsXEmz7wKCQaGzgmRjZOoV6VLG8I5dSv2bn6AOClXhK64gnSQTQ9W9MKvx87J4gw==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", + "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "dev": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escallmatch": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/escallmatch/-/escallmatch-1.5.0.tgz", + "integrity": "sha1-UAmdhugJGwkt+N37w/mm+wWgJNA=", + "dev": true, + "requires": { + "call-matcher": "1.0.1", + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", + "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.7.0.tgz", + "integrity": "sha1-e7/vZq14MneDb06lVuaLm8ydpNA=", + "dev": true, + "requires": { + "get-stdin": "5.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "dev": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.4.1" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz", + "integrity": "sha512-AV8shBlGN9tRZffj5v/f4uiQWlP3qiQ+lh+BhTqRLuKSyczx+HRWVkVZaf7dOmguxghAH1wftnou/JUEEChhGg==", + "dev": true, + "requires": { + "fast-diff": "1.1.2", + "jest-docblock": "21.2.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espower": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.0.tgz", + "integrity": "sha1-zh7bPZhwKEH99ZbRy46FvcSujkg=", + "dev": true, + "requires": { + "array-find": "1.0.0", + "escallmatch": "1.5.0", + "escodegen": "1.9.1", + "escope": "3.6.0", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0", + "source-map": "0.5.7", + "type-name": "2.0.2", + "xtend": "4.0.1" + } + }, + "espower-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/espower-loader/-/espower-loader-1.2.2.tgz", + "integrity": "sha1-7bRsPFmga6yOpzppXIblxaC8gto=", + "dev": true, + "requires": { + "convert-source-map": "1.5.0", + "espower-source": "2.2.0", + "minimatch": "3.0.4", + "source-map-support": "0.4.18", + "xtend": "4.0.1" + } + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "requires": { + "is-url": "1.2.2", + "path-is-absolute": "1.0.1", + "source-map": "0.5.7", + "xtend": "4.0.1" + } + }, + "espower-source": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/espower-source/-/espower-source-2.2.0.tgz", + "integrity": "sha1-fgBSVa5HtcE2RIZEs/PYAtUD91I=", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-es7-plugin": "1.1.7", + "convert-source-map": "1.5.0", + "empower-assert": "1.0.1", + "escodegen": "1.9.1", + "espower": "2.1.0", + "estraverse": "4.2.0", + "merge-estraverse-visitors": "1.0.0", + "multi-stage-sourcemap": "0.2.1", + "path-is-absolute": "1.0.1", + "xtend": "4.0.1" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "requires": { + "core-js": "2.5.1" + } + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.0", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "fast-glob": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.0.tgz", + "integrity": "sha512-4F75PTznkNtSKs2pbhtBwRkw8sRwa7LfXx5XaQJOe4IQ6yTjceLDTwM5gj1s80R2t/5WeDC1gVfm3jLE+l39Tw==", + "requires": { + "@mrmlnc/readdir-enhanced": "2.2.1", + "glob-parent": "3.1.0", + "is-glob": "4.0.0", + "merge2": "1.2.1", + "micromatch": "3.1.9" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "follow-redirects": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "requires": { + "debug": "3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-name-support": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-dirs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", + "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", + "dev": true, + "requires": { + "ini": "1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "google-auto-auth": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", + "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.3.2", + "request": "2.83.0" + }, + "dependencies": { + "gcp-metadata": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", + "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", + "requires": { + "axios": "0.18.0", + "extend": "3.0.1", + "retry-axios": "0.3.2" + } + }, + "google-auth-library": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.3.2.tgz", + "integrity": "sha512-aRz0om4Bs85uyR2Ousk3Gb8Nffx2Sr2RoKts1smg1MhRwrehE1aD1HC4RmprNt1HVJ88IDnQ8biJQ/aXjiIxlQ==", + "requires": { + "axios": "0.18.0", + "gcp-metadata": "0.6.3", + "gtoken": "2.2.0", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lru-cache": "4.1.2", + "retry-axios": "0.3.2" + } + }, + "google-p12-pem": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", + "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", + "requires": { + "node-forge": "0.7.4", + "pify": "3.0.0" + } + }, + "gtoken": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.2.0.tgz", + "integrity": "sha512-tvQs8B1z5+I1FzMPZnq/OCuxTWFOkvy7cUJcpNdBOK2L7yEtPZTVCPtZU181sSDF+isUPebSqFTNTkIejFASAQ==", + "requires": { + "axios": "0.18.0", + "google-p12-pem": "1.0.2", + "jws": "3.1.4", + "mime": "2.2.0", + "pify": "3.0.0" + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "mime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", + "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" + }, + "node-forge": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", + "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "google-gax": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.0.tgz", + "integrity": "sha512-sslPB7USGD8SrVUGlWFIGYVZrgZ6oj+fWUEW3f8Bk43+nxqeLyrNoI3iFBRpjLfwMCEYaXVziWNmatwLRP8azg==", + "requires": { + "duplexify": "3.5.4", + "extend": "3.0.1", + "globby": "8.0.1", + "google-auto-auth": "0.9.7", + "google-proto-files": "0.15.1", + "grpc": "1.9.1", + "is-stream-ended": "0.1.3", + "lodash": "4.17.4", + "protobufjs": "6.8.6", + "through2": "2.0.3" + }, + "dependencies": { + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + } + } + }, + "google-proto-files": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", + "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", + "requires": { + "globby": "7.1.1", + "power-assert": "1.4.4", + "protobufjs": "6.8.6" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true + }, + "grpc": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.9.1.tgz", + "integrity": "sha512-WNW3MWMuAoo63AwIlzFE3T0KzzvNBSvOkg67Hm8WhvHNkXFBlIk1QyJRE3Ocm0O5eIwS7JU8Ssota53QR1zllg==", + "requires": { + "lodash": "4.17.4", + "nan": "2.8.0", + "node-pre-gyp": "0.6.39", + "protobufjs": "5.0.2" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "requires": { + "detect-libc": "1.0.3", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.2", + "rc": "1.2.4", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "2.2.1", + "tar-pack": "3.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "protobufjs": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", + "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", + "requires": { + "ascli": "1.0.1", + "bytebuffer": "5.0.1", + "glob": "7.1.2", + "yargs": "3.32.0" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.4.0", + "bundled": true + }, + "rc": { + "version": "1.2.4", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.3.0", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", + "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", + "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "es6-error": "4.0.2", + "graceful-fs": "4.1.11", + "indent-string": "3.2.0", + "json5": "0.5.1", + "lodash.clonedeep": "4.5.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.isequal": "4.5.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "package-hash": "2.0.0", + "pkg-dir": "2.0.0", + "resolve-from": "3.0.0", + "safe-buffer": "5.1.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "ink-docstrap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz", + "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", + "dev": true, + "requires": { + "moment": "2.19.2", + "sanitize-html": "1.15.0" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "intelli-espower-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/intelli-espower-loader/-/intelli-espower-loader-1.0.1.tgz", + "integrity": "sha1-LHsDFGvB1GvyENCgOXxckatMorA=", + "dev": true, + "requires": { + "espower-loader": "1.2.2" + } + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.0", + "is-path-inside": "1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-stream-ended": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.3.tgz", + "integrity": "sha1-oEc7Jnx1ZjVIa+7cfjNE5UnRUqw=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "1.0.2" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdoc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", + "dev": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "3.5.1", + "catharsis": "0.8.9", + "escape-string-regexp": "1.0.5", + "js2xmlparser": "3.0.0", + "klaw": "2.0.0", + "marked": "0.3.6", + "mkdirp": "0.5.1", + "requizzle": "0.2.1", + "strip-json-comments": "2.0.1", + "taffydb": "2.6.2", + "underscore": "1.8.3" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "jwa": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", + "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", + "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "last-line-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", + "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + }, + "lolex": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.0.tgz", + "integrity": "sha512-rPO6R1t8PjYL6xbsFUg7aByKkWAql907na6powPBORVs4DCm8aMBUkL4+6CXO0gEIV8vtu3mWV0FB8ZaCYPBmA==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "marked": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "matcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", + "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-estraverse-visitors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-estraverse-visitors/-/merge-estraverse-visitors-1.0.0.tgz", + "integrity": "sha1-65aDOLXe1c7tgs7AMH3sui2OqZQ=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "merge2": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz", + "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg==" + }, + "methmeth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", + "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.4.tgz", + "integrity": "sha512-nMOpAPFosU1B4Ix1jdhx5e3q7XO55ic5a8cgYvW27CequcEY+BabS0kUVL1Cw1V5PuVHZWeNRWFLmEPexo79VA==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "modelo": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz", + "integrity": "sha1-O0tCACOmbKfjK9uhbnEJN+FNGws=" + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "moment": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", + "integrity": "sha512-Rf6jiHPEfxp9+dlzxPTmRHbvoFXsh2L/U8hOupUMpnuecHQmI6cF6lUbJl3QqKPko1u6ujO+FxtcajLVfLpAtA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multi-stage-sourcemap": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz", + "integrity": "sha1-sJ/IWG6qF/gdV1xK0C4Pej9rEQU=", + "dev": true, + "requires": { + "source-map": "0.1.43" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nise": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", + "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", + "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.3", + "istanbul-reports": "1.3.0", + "md5-hex": "1.3.0", + "merge-source-map": "1.1.0", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.2.1", + "yargs": "11.1.0", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.9", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "observable-to-promise": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", + "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "dev": true, + "requires": { + "is-observable": "0.2.0", + "symbol-observable": "1.0.4" + }, + "dependencies": { + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "option-chain": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", + "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "package-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", + "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "lodash.flattendeep": "4.4.0", + "md5-hex": "2.0.0", + "release-zalgo": "1.0.0" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + } + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "1.4.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "power-assert": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.4.4.tgz", + "integrity": "sha1-kpXqdDcZb1pgH95CDwQmMRhtdRc=", + "requires": { + "define-properties": "1.1.2", + "empower": "1.2.3", + "power-assert-formatter": "1.4.1", + "universal-deep-strict-equal": "1.2.2", + "xtend": "4.0.1" + } + }, + "power-assert-context-formatter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", + "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", + "requires": { + "core-js": "2.5.1", + "power-assert-context-traversal": "1.1.1" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", + "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", + "requires": { + "acorn": "4.0.13", + "acorn-es7-plugin": "1.1.7", + "core-js": "2.5.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "power-assert-context-traversal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", + "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", + "requires": { + "core-js": "2.5.1", + "estraverse": "4.2.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "requires": { + "core-js": "2.5.1", + "power-assert-context-formatter": "1.1.1", + "power-assert-context-reducer-ast": "1.1.2", + "power-assert-renderer-assertion": "1.1.1", + "power-assert-renderer-comparison": "1.1.1", + "power-assert-renderer-diagram": "1.1.2", + "power-assert-renderer-file": "1.1.1" + } + }, + "power-assert-renderer-assertion": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", + "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", + "requires": { + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" + }, + "power-assert-renderer-comparison": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", + "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", + "requires": { + "core-js": "2.5.1", + "diff-match-patch": "1.0.0", + "power-assert-renderer-base": "1.1.1", + "stringifier": "1.3.0", + "type-name": "2.0.2" + } + }, + "power-assert-renderer-diagram": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", + "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", + "requires": { + "core-js": "2.5.1", + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1", + "stringifier": "1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", + "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", + "requires": { + "power-assert-renderer-base": "1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", + "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", + "requires": { + "eastasianwidth": "0.1.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", + "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "dev": true + }, + "pretty-ms": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.0.1.tgz", + "integrity": "sha1-fBi3PCKKm49u3Cg1oSy49+2F+fQ=", + "dev": true, + "requires": { + "parse-ms": "1.0.1", + "plur": "2.1.2" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "prop-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", + "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" + }, + "propprop": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", + "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" + }, + "protobufjs": { + "version": "6.8.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", + "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/base64": "1.1.2", + "@protobufjs/codegen": "2.0.4", + "@protobufjs/eventemitter": "1.1.0", + "@protobufjs/fetch": "1.1.0", + "@protobufjs/float": "1.0.2", + "@protobufjs/inquire": "1.1.0", + "@protobufjs/path": "1.1.2", + "@protobufjs/pool": "1.1.0", + "@protobufjs/utf8": "1.1.0", + "@types/long": "3.0.32", + "@types/node": "8.9.5", + "long": "4.0.0" + } + }, + "proxyquire": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.0.tgz", + "integrity": "sha512-TO9TAIz0mpa+SKddXsgCFatoe/KmHvoNVj2jDMC1kXE6kKn7/4CRpxvQ+0wAK9sbMT2FVO89qItlvnZMcFbJ2Q==", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "4.0.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry-axios": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", + "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" + }, + "retry-request": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.1.1.tgz", + "integrity": "sha512-Sj3M3bC8ODJT+jfVxbTwvORRkFtc/AlDhhiMch5RJalLMAjz6+lIf5Q/Ox2esAM4tXcAYfG4ecNHPtaGNWIqvQ==", + "requires": { + "request": "2.83.0", + "through2": "2.0.3" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "0.1.15" + } + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "sanitize-html": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.15.0.tgz", + "integrity": "sha512-1jWLToWx8ZV53Z1Jg+2fHl8dNFsxvQt2Cmrk4o/z1+MUdB5EXSU0QVuzlGGhfp7cQrYbEEfMO/TUWHfkBUqujQ==", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "lodash.escaperegexp": "4.1.2", + "srcset": "1.0.0", + "xtend": "4.0.1" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sinon": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", + "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==", + "dev": true, + "requires": { + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "4.5.0", + "type-detect": "4.0.5" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split-array-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", + "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "requires": { + "async": "2.6.0", + "is-stream-ended": "0.1.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "srcset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", + "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", + "dev": true, + "requires": { + "array-uniq": "1.0.3", + "number-is-nan": "1.0.1" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "stream-events": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.2.tgz", + "integrity": "sha1-q/OfZsCJCk63lbyNXoWbJhW1kLI=", + "requires": { + "stubs": "3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", + "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", + "dev": true + }, + "string-format-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz", + "integrity": "sha1-djVhCx7zlwE+hHi+mKFw4EmD0Gg=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringifier": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", + "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", + "requires": { + "core-js": "2.5.1", + "traverse": "0.6.6", + "type-name": "2.0.2" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, + "superagent": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz", + "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.6.0", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + }, + "supertap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", + "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "indent-string": "3.2.0", + "js-yaml": "3.10.0", + "serialize-error": "2.1.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "supertest": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", + "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", + "dev": true, + "requires": { + "methods": "1.1.2", + "superagent": "3.8.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "dev": true + }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "os-tmpdir": "1.0.2", + "uid2": "0.0.3" + } + }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "requires": { + "array-filter": "1.0.0", + "indexof": "0.0.1", + "object-keys": "1.0.11" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.2.2", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "well-known-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", + "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "pify": "3.0.0", + "sort-keys": "2.0.0", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", + "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "dev": true, + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.3.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } +} diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 223b1c249f6..36dd33ebd2f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -30,12 +30,15 @@ ], "contributors": [ "Ace Nassri ", + "Alexander Fenster ", "Ali Ijaz Sheikh ", "Dave Gramlich ", + "Dominic Kramer ", "Eric Uldall ", "Geoffrey Gowan ", "Jason Dobry ", "Jun Mukai ", + "Luke Sneeringer ", "Luke Sneeringer ", "Patrick Costello ", "Philip Irri ", @@ -44,6 +47,7 @@ "Tim Swast ", "Walter Poupore ", "antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ ", + "greenkeeper[bot] ", "tcrognon " ], "scripts": { @@ -77,7 +81,7 @@ "through2": "^2.0.3" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^2.1.3", + "@google-cloud/nodejs-repo-tools": "^2.2.3", "async": "^2.6.0", "codecov": "^3.0.0", "deep-strict-equal": "^0.2.0", diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index e7ba732d846..1c0073a9bdb 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -72,5 +72,5 @@ __Usage:__ `node error.js` [error_2_docs]: https://cloud.google.com/datastore/docs/concepts/errors [error_2_code]: error.js -[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png +[shell_img]: //gstatic.com/cloudssh/images/open-btn.png [shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json new file mode 100644 index 00000000000..bbbb7274127 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -0,0 +1,20166 @@ +{ + "name": "nodejs-docs-samples-datastore", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", + "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", + "dev": true + }, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", + "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "package-hash": "1.2.0" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "package-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", + "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "dev": true, + "requires": { + "md5-hex": "1.3.0" + } + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", + "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", + "dev": true, + "requires": { + "@ava/babel-plugin-throws-helper": "2.0.0", + "babel-plugin-espower": "2.3.2" + } + }, + "@ava/write-file-atomic": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", + "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "@concordance/react": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", + "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", + "dev": true, + "requires": { + "arrify": "1.0.1" + } + }, + "@google-cloud/datastore": { + "version": "1.3.5", + "requires": { + "@google-cloud/common": "0.16.2", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "extend": "3.0.1", + "google-auto-auth": "0.9.7", + "google-gax": "0.16.0", + "google-proto-files": "0.15.1", + "is": "3.2.1", + "lodash.flatten": "4.4.0", + "lodash.merge": "4.6.0", + "prop-assign": "1.0.0", + "propprop": "0.3.1", + "safe-buffer": "5.1.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.2", + "through2": "2.0.3" + }, + "dependencies": { + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "bundled": true + }, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "package-hash": "1.2.0" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "package-hash": { + "version": "1.2.0", + "bundled": true, + "requires": { + "md5-hex": "1.3.0" + } + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "bundled": true, + "requires": { + "@ava/babel-plugin-throws-helper": "2.0.0", + "babel-plugin-espower": "2.3.2" + } + }, + "@ava/write-file-atomic": { + "version": "2.2.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "@concordance/react": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arrify": "1.0.1" + } + }, + "@google-cloud/common": { + "version": "0.16.2", + "bundled": true, + "requires": { + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "create-error-class": "3.0.2", + "duplexify": "3.5.1", + "ent": "2.2.0", + "extend": "3.0.1", + "google-auto-auth": "0.9.7", + "is": "3.2.1", + "log-driver": "1.2.7", + "methmeth": "1.1.0", + "modelo": "4.2.0", + "request": "2.83.0", + "retry-request": "3.1.1", + "split-array-stream": "1.0.3", + "stream-events": "1.0.2", + "string-format-obj": "1.1.0", + "through2": "2.0.3" + }, + "dependencies": { + "log-driver": { + "version": "1.2.7", + "bundled": true + } + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.2.3", + "bundled": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "bundled": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "ava": { + "version": "0.25.0", + "bundled": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", + "ansi-escapes": "3.0.0", + "ansi-styles": "3.2.0", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.1.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "babel-generator": "6.26.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.0", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.1", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.0.10", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.1.0", + "matcher": "1.0.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.0.0", + "plur": "2.1.2", + "pretty-ms": "3.0.1", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "semver": "5.4.1", + "slash": "1.0.0", + "source-map-support": "0.5.4", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supertap": "1.0.0", + "supports-color": "5.3.0", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + } + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "4.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "bundled": true, + "requires": { + "convert-to-spaces": "1.0.2" + } + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "fs-extra": { + "version": "5.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "globby": { + "version": "6.1.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "got": { + "version": "8.2.0", + "bundled": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-observable": { + "version": "1.1.0", + "bundled": true, + "requires": { + "symbol-observable": "1.2.0" + } + }, + "lodash": { + "version": "4.17.5", + "bundled": true + }, + "nyc": { + "version": "11.4.1", + "bundled": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "prepend-http": { + "version": "2.0.0", + "bundled": true + }, + "proxyquire": { + "version": "1.8.0", + "bundled": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "sinon": { + "version": "4.3.0", + "bundled": true, + "requires": { + "@sinonjs/formatio": "2.0.0", + "diff": "3.4.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "5.3.0", + "type-detect": "4.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-support": { + "version": "0.5.4", + "bundled": true, + "requires": { + "source-map": "0.6.1" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.3.0", + "bundled": true, + "requires": { + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "bundled": true + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "bundled": true + }, + "url-parse-lax": { + "version": "3.0.0", + "bundled": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "bundled": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "bundled": true + }, + "chalk": { + "version": "0.4.0", + "bundled": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "date-time": { + "version": "0.1.1", + "bundled": true + }, + "parse-ms": { + "version": "0.1.2", + "bundled": true + }, + "pretty-ms": { + "version": "0.2.2", + "bundled": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "bundled": true + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "bundled": true, + "requires": { + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "bundled": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "bundled": true, + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/inquire": "1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "bundled": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "bundled": true + }, + "@sindresorhus/is": { + "version": "0.7.0", + "bundled": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "bundled": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@types/long": { + "version": "3.0.32", + "bundled": true + }, + "@types/node": { + "version": "8.9.5", + "bundled": true + }, + "acorn": { + "version": "5.2.1", + "bundled": true + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "bundled": true + }, + "acorn-jsx": { + "version": "3.0.1", + "bundled": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "bundled": true + } + } + }, + "ajv": { + "version": "5.3.0", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "bundled": true + }, + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.0", + "bundled": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "bundled": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "argparse": { + "version": "1.0.9", + "bundled": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "argv": { + "version": "0.0.2", + "bundled": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-exclude": { + "version": "1.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-differ": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "1.0.0", + "bundled": true + }, + "array-find": { + "version": "1.0.0", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "ascli": { + "version": "1.0.1", + "bundled": true, + "requires": { + "colour": "0.7.1", + "optjs": "3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "async": { + "version": "2.6.0", + "bundled": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "atob": { + "version": "2.0.3", + "bundled": true + }, + "auto-bind": { + "version": "1.1.0", + "bundled": true + }, + "ava-init": { + "version": "0.2.1", + "bundled": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "axios": { + "version": "0.18.0", + "bundled": true, + "requires": { + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "bundled": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-espower": { + "version": "2.3.2", + "bundled": true, + "requires": { + "babel-generator": "6.26.0", + "babylon": "6.18.0", + "call-matcher": "1.0.1", + "core-js": "2.5.1", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "base64url": { + "version": "2.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-extensions": { + "version": "1.10.0", + "bundled": true + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "boom": { + "version": "4.3.1", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + }, + "boxen": { + "version": "1.2.2", + "bundled": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "buf-compare": { + "version": "1.0.1", + "bundled": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "bytebuffer": { + "version": "5.0.1", + "bundled": true, + "requires": { + "long": "3.2.0" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "bundled": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "bundled": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, + "call-matcher": { + "version": "1.0.1", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "deep-equal": "1.0.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "bundled": true + }, + "call-signature": { + "version": "0.0.2", + "bundled": true + }, + "caller-path": { + "version": "0.1.0", + "bundled": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "bundled": true + }, + "camelcase": { + "version": "2.1.1", + "bundled": true + }, + "camelcase-keys": { + "version": "2.1.0", + "bundled": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "catharsis": { + "version": "0.8.9", + "bundled": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chardet": { + "version": "0.4.0", + "bundled": true + }, + "chokidar": { + "version": "1.7.0", + "bundled": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "ci-info": { + "version": "1.1.1", + "bundled": true + }, + "circular-json": { + "version": "0.3.3", + "bundled": true + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "clean-stack": { + "version": "1.3.0", + "bundled": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "bundled": true + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "1.1.0", + "bundled": true + }, + "cli-truncate": { + "version": "1.1.0", + "bundled": true, + "requires": { + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone-response": { + "version": "1.0.2", + "bundled": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "co-with-promise": { + "version": "4.6.0", + "bundled": true, + "requires": { + "pinkie-promise": "1.0.0" + }, + "dependencies": { + "pinkie": { + "version": "1.0.0", + "bundled": true + }, + "pinkie-promise": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pinkie": "1.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "codecov": { + "version": "3.0.0", + "bundled": true, + "requires": { + "argv": "0.0.2", + "request": "2.81.0", + "urlgrey": "0.4.4" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "bundled": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-schema": { + "version": "1.0.5", + "bundled": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "performance-now": { + "version": "0.2.0", + "bundled": true + }, + "qs": { + "version": "6.4.0", + "bundled": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.1.2", + "bundled": true + }, + "colour": { + "version": "0.7.1", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "bundled": true + }, + "common-path-prefix": { + "version": "1.0.0", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "concordance": { + "version": "3.0.0", + "bundled": true, + "requires": { + "date-time": "2.1.0", + "esutils": "2.0.2", + "fast-diff": "1.1.2", + "function-name-support": "0.2.0", + "js-string-escape": "1.0.1", + "lodash.clonedeep": "4.5.0", + "lodash.flattendeep": "4.4.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "semver": "5.4.1", + "well-known-symbols": "1.0.0" + } + }, + "configstore": { + "version": "3.1.1", + "bundled": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "bundled": true + }, + "cookiejar": { + "version": "2.1.1", + "bundled": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-assert": { + "version": "0.2.1", + "bundled": true, + "requires": { + "buf-compare": "1.0.1", + "is-error": "2.2.1" + } + }, + "core-js": { + "version": "2.5.1", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "bundled": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "0.10.41" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-time": { + "version": "2.1.0", + "bundled": true, + "requires": { + "time-zone": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "decompress-response": { + "version": "3.3.0", + "bundled": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "bundled": true + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "deep-is": { + "version": "0.1.3", + "bundled": true + }, + "deep-strict-equal": { + "version": "0.2.0", + "bundled": true, + "requires": { + "core-assert": "0.2.1" + } + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "del": { + "version": "2.2.2", + "bundled": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.4.0", + "bundled": true + }, + "diff-match-patch": { + "version": "1.0.0", + "bundled": true + }, + "dir-glob": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "doctrine": { + "version": "2.0.0", + "bundled": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "bundled": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "bundled": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "bundled": true + }, + "domhandler": { + "version": "2.4.1", + "bundled": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "bundled": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.5.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "eastasianwidth": { + "version": "0.1.1", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "bundled": true, + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "empower": { + "version": "1.2.3", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "empower-core": "0.6.2" + } + }, + "empower-assert": { + "version": "1.0.1", + "bundled": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "empower-core": { + "version": "0.6.2", + "bundled": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "2.5.1" + } + }, + "end-of-stream": { + "version": "1.4.0", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "bundled": true + }, + "entities": { + "version": "1.1.1", + "bundled": true + }, + "equal-length": { + "version": "1.0.1", + "bundled": true + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.41", + "bundled": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-error": { + "version": "4.0.2", + "bundled": true + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escallmatch": { + "version": "1.5.0", + "bundled": true, + "requires": { + "call-matcher": "1.0.1", + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "bundled": true + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "escodegen": { + "version": "1.9.1", + "bundled": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "bundled": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.11.0", + "bundled": true, + "requires": { + "ajv": "5.3.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "2.7.0", + "bundled": true, + "requires": { + "get-stdin": "5.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "5.0.1", + "bundled": true + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "bundled": true, + "requires": { + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.4.1" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "bundled": true, + "requires": { + "path-parse": "1.0.5" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "2.3.1", + "bundled": true, + "requires": { + "fast-diff": "1.1.2", + "jest-docblock": "21.2.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "bundled": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espower": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-find": "1.0.0", + "escallmatch": "1.5.0", + "escodegen": "1.9.1", + "escope": "3.6.0", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0", + "source-map": "0.5.7", + "type-name": "2.0.2", + "xtend": "4.0.1" + } + }, + "espower-loader": { + "version": "1.2.2", + "bundled": true, + "requires": { + "convert-source-map": "1.5.0", + "espower-source": "2.2.0", + "minimatch": "3.0.4", + "source-map-support": "0.4.18", + "xtend": "4.0.1" + } + }, + "espower-location-detector": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-url": "1.2.2", + "path-is-absolute": "1.0.1", + "source-map": "0.5.7", + "xtend": "4.0.1" + } + }, + "espower-source": { + "version": "2.2.0", + "bundled": true, + "requires": { + "acorn": "5.2.1", + "acorn-es7-plugin": "1.1.7", + "convert-source-map": "1.5.0", + "empower-assert": "1.0.1", + "escodegen": "1.9.1", + "espower": "2.1.0", + "estraverse": "4.2.0", + "merge-estraverse-visitors": "1.0.0", + "multi-stage-sourcemap": "0.2.1", + "path-is-absolute": "1.0.1", + "xtend": "4.0.1" + } + }, + "espree": { + "version": "3.5.2", + "bundled": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "bundled": true + }, + "espurify": { + "version": "1.7.0", + "bundled": true, + "requires": { + "core-js": "2.5.1" + } + }, + "esquery": { + "version": "1.0.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "event-emitter": { + "version": "0.3.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.41" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "chardet": "0.4.0", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "bundled": true + }, + "fast-diff": { + "version": "1.1.2", + "bundled": true + }, + "fast-glob": { + "version": "2.2.0", + "bundled": true, + "requires": { + "@mrmlnc/readdir-enhanced": "2.2.1", + "glob-parent": "3.1.0", + "is-glob": "4.0.0", + "merge2": "1.2.1", + "micromatch": "3.1.9" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "braces": { + "version": "2.3.1", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-glob": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.9", + "bundled": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "bundled": true + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "bundled": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-keys": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" + } + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "bundled": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "fn-name": { + "version": "2.0.1", + "bundled": true + }, + "follow-redirects": { + "version": "1.4.1", + "bundled": true, + "requires": { + "debug": "3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.1", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formatio": { + "version": "1.2.0", + "bundled": true, + "requires": { + "samsam": "1.3.0" + } + }, + "formidable": { + "version": "1.1.1", + "bundled": true + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-name-support": { + "version": "0.2.0", + "bundled": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-port": { + "version": "3.2.0", + "bundled": true + }, + "get-stdin": { + "version": "4.0.1", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "bundled": true + }, + "global-dirs": { + "version": "0.1.0", + "bundled": true, + "requires": { + "ini": "1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "8.0.1", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "google-auto-auth": { + "version": "0.9.7", + "bundled": true, + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.3.2", + "request": "2.83.0" + }, + "dependencies": { + "gcp-metadata": { + "version": "0.6.3", + "bundled": true, + "requires": { + "axios": "0.18.0", + "extend": "3.0.1", + "retry-axios": "0.3.2" + } + }, + "google-auth-library": { + "version": "1.3.2", + "bundled": true, + "requires": { + "axios": "0.18.0", + "gcp-metadata": "0.6.3", + "gtoken": "2.2.0", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lru-cache": "4.1.2", + "retry-axios": "0.3.2" + } + }, + "google-p12-pem": { + "version": "1.0.2", + "bundled": true, + "requires": { + "node-forge": "0.7.4", + "pify": "3.0.0" + } + }, + "gtoken": { + "version": "2.2.0", + "bundled": true, + "requires": { + "axios": "0.18.0", + "google-p12-pem": "1.0.2", + "jws": "3.1.4", + "mime": "2.2.0", + "pify": "3.0.0" + } + }, + "lru-cache": { + "version": "4.1.2", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "mime": { + "version": "2.2.0", + "bundled": true + }, + "node-forge": { + "version": "0.7.4", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "google-gax": { + "version": "0.16.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "extend": "3.0.1", + "globby": "8.0.1", + "google-auto-auth": "0.9.7", + "google-proto-files": "0.15.1", + "grpc": "1.9.1", + "is-stream-ended": "0.1.3", + "lodash": "4.17.4", + "protobufjs": "6.8.6", + "through2": "2.0.3" + }, + "dependencies": { + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + } + } + }, + "google-proto-files": { + "version": "0.15.1", + "bundled": true, + "requires": { + "globby": "7.1.1", + "power-assert": "1.4.4", + "protobufjs": "6.8.6" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "growl": { + "version": "1.10.3", + "bundled": true + }, + "grpc": { + "version": "1.9.1", + "bundled": true, + "requires": { + "lodash": "4.17.4", + "nan": "2.8.0", + "node-pre-gyp": "0.6.39", + "protobufjs": "5.0.2" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "requires": { + "detect-libc": "1.0.3", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.2", + "rc": "1.2.4", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "2.2.1", + "tar-pack": "3.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "protobufjs": { + "version": "5.0.2", + "bundled": true, + "requires": { + "ascli": "1.0.1", + "bytebuffer": "5.0.1", + "glob": "7.1.2", + "yargs": "3.32.0" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.4.0", + "bundled": true + }, + "rc": { + "version": "1.2.4", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "bundled": true + }, + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "5.3.0", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "bundled": true + }, + "has-flag": { + "version": "2.0.0", + "bundled": true + }, + "has-symbol-support-x": { + "version": "1.4.1", + "bundled": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "bundled": true, + "requires": { + "has-symbol-support-x": "1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "has-yarn": { + "version": "1.0.0", + "bundled": true + }, + "hawk": { + "version": "6.0.2", + "bundled": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hoek": { + "version": "4.2.0", + "bundled": true + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "htmlparser2": { + "version": "3.9.2", + "bundled": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "bundled": true, + "requires": { + "dot-prop": "4.2.0", + "es6-error": "4.0.2", + "graceful-fs": "4.1.11", + "indent-string": "3.2.0", + "json5": "0.5.1", + "lodash.clonedeep": "4.5.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.isequal": "4.5.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "package-hash": "2.0.0", + "pkg-dir": "2.0.0", + "resolve-from": "3.0.0", + "safe-buffer": "5.1.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ignore": { + "version": "3.3.7", + "bundled": true + }, + "ignore-by-default": { + "version": "1.0.1", + "bundled": true + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "import-local": { + "version": "0.1.1", + "bundled": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "3.2.0", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true + }, + "ink-docstrap": { + "version": "1.3.2", + "bundled": true, + "requires": { + "moment": "2.19.2", + "sanitize-html": "1.15.0" + } + }, + "inquirer": { + "version": "3.3.0", + "bundled": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "bundled": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "intelli-espower-loader": { + "version": "1.0.1", + "bundled": true, + "requires": { + "espower-loader": "1.2.2" + } + }, + "into-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "irregular-plurals": { + "version": "1.4.0", + "bundled": true + }, + "is": { + "version": "3.2.1", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "bundled": true, + "requires": { + "ci-info": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-error": { + "version": "2.2.1", + "bundled": true + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-generator-fn": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "0.1.0", + "is-path-inside": "1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-object": { + "version": "1.0.1", + "bundled": true + }, + "is-observable": { + "version": "0.2.0", + "bundled": true, + "requires": { + "symbol-observable": "0.2.4" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "bundled": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "bundled": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-resolvable": { + "version": "1.0.0", + "bundled": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-stream-ended": { + "version": "0.1.3", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "is-url": { + "version": "1.2.2", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "isurl": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "bundled": true + }, + "js-string-escape": { + "version": "1.0.1", + "bundled": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.10.0", + "bundled": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "bundled": true, + "requires": { + "xmlcreate": "1.0.2" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "jsdoc": { + "version": "3.5.5", + "bundled": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "3.5.1", + "catharsis": "0.8.9", + "escape-string-regexp": "1.0.5", + "js2xmlparser": "3.0.0", + "klaw": "2.0.0", + "marked": "0.3.6", + "mkdirp": "0.5.1", + "requizzle": "0.2.1", + "strip-json-comments": "2.0.1", + "taffydb": "2.6.2", + "underscore": "1.8.3" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.19", + "bundled": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-buffer": { + "version": "3.0.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonfile": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-extend": { + "version": "1.1.27", + "bundled": true + }, + "jwa": { + "version": "1.1.5", + "bundled": true, + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.4", + "bundled": true, + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "keyv": { + "version": "3.0.0", + "bundled": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "last-line-stream": { + "version": "1.0.0", + "bundled": true, + "requires": { + "through2": "2.0.3" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "bundled": true + }, + "lodash.debounce": { + "version": "4.0.8", + "bundled": true + }, + "lodash.difference": { + "version": "4.5.0", + "bundled": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "bundled": true + }, + "lodash.flatten": { + "version": "4.4.0", + "bundled": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true + }, + "lodash.get": { + "version": "4.4.2", + "bundled": true + }, + "lodash.isequal": { + "version": "4.5.0", + "bundled": true + }, + "lodash.isstring": { + "version": "4.0.1", + "bundled": true + }, + "lodash.merge": { + "version": "4.6.0", + "bundled": true + }, + "lolex": { + "version": "2.3.0", + "bundled": true + }, + "long": { + "version": "4.0.0", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + }, + "lru-cache": { + "version": "4.1.2", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.1.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-obj": { + "version": "1.0.1", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "marked": { + "version": "0.3.6", + "bundled": true + }, + "matcher": { + "version": "1.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "md5-hex": { + "version": "2.0.0", + "bundled": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "meow": { + "version": "3.7.0", + "bundled": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "merge-estraverse-visitors": { + "version": "1.0.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "merge2": { + "version": "1.2.1", + "bundled": true + }, + "methmeth": { + "version": "1.1.0", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.6.0", + "bundled": true + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true + }, + "mimic-response": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.0.4", + "bundled": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "supports-color": { + "version": "4.4.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "modelo": { + "version": "4.2.0", + "bundled": true + }, + "module-not-found-error": { + "version": "1.0.1", + "bundled": true + }, + "moment": { + "version": "2.19.2", + "bundled": true + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multi-stage-sourcemap": { + "version": "0.2.1", + "bundled": true, + "requires": { + "source-map": "0.1.43" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "multimatch": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nan": { + "version": "2.8.0", + "bundled": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nise": { + "version": "1.2.0", + "bundled": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "bundled": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "bundled": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "nyc": { + "version": "11.6.0", + "bundled": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.3", + "istanbul-reports": "1.3.0", + "md5-hex": "1.3.0", + "merge-source-map": "1.1.0", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.2.1", + "yargs": "11.1.0", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "atob": { + "version": "2.0.3", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "invariant": { + "version": "2.2.3", + "bundled": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "bundled": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "bundled": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "bundled": true, + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.3", + "bundled": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "bundled": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + }, + "lodash": { + "version": "4.17.5", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.2", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "0.1.15" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.1", + "bundled": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.9", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "braces": { + "version": "2.3.1", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.9", + "bundled": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "4.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "bundled": true + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "observable-to-promise": { + "version": "0.5.0", + "bundled": true, + "requires": { + "is-observable": "0.2.0", + "symbol-observable": "1.0.4" + }, + "dependencies": { + "symbol-observable": { + "version": "1.0.4", + "bundled": true + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "option-chain": { + "version": "1.0.0", + "bundled": true + }, + "optionator": { + "version": "0.8.2", + "bundled": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "bundled": true + } + } + }, + "optjs": { + "version": "3.2.2", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "p-cancelable": { + "version": "0.3.0", + "bundled": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "package-hash": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "lodash.flattendeep": "4.4.0", + "md5-hex": "2.0.0", + "release-zalgo": "1.0.0" + } + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + } + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-ms": { + "version": "1.0.1", + "bundled": true + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-dirname": { + "version": "1.0.2", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "1.7.0", + "bundled": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "bundled": true + } + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-conf": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0" + } + }, + "plur": { + "version": "2.1.2", + "bundled": true, + "requires": { + "irregular-plurals": "1.4.0" + } + }, + "pluralize": { + "version": "7.0.0", + "bundled": true + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "power-assert": { + "version": "1.4.4", + "bundled": true, + "requires": { + "define-properties": "1.1.2", + "empower": "1.2.3", + "power-assert-formatter": "1.4.1", + "universal-deep-strict-equal": "1.2.2", + "xtend": "4.0.1" + } + }, + "power-assert-context-formatter": { + "version": "1.1.1", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "power-assert-context-traversal": "1.1.1" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.1.2", + "bundled": true, + "requires": { + "acorn": "4.0.13", + "acorn-es7-plugin": "1.1.7", + "core-js": "2.5.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "bundled": true + } + } + }, + "power-assert-context-traversal": { + "version": "1.1.1", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "estraverse": "4.2.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "power-assert-context-formatter": "1.1.1", + "power-assert-context-reducer-ast": "1.1.2", + "power-assert-renderer-assertion": "1.1.1", + "power-assert-renderer-comparison": "1.1.1", + "power-assert-renderer-diagram": "1.1.2", + "power-assert-renderer-file": "1.1.1" + } + }, + "power-assert-renderer-assertion": { + "version": "1.1.1", + "bundled": true, + "requires": { + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "bundled": true + }, + "power-assert-renderer-comparison": { + "version": "1.1.1", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "diff-match-patch": "1.0.0", + "power-assert-renderer-base": "1.1.1", + "stringifier": "1.3.0", + "type-name": "2.0.2" + } + }, + "power-assert-renderer-diagram": { + "version": "1.1.2", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "power-assert-renderer-base": "1.1.1", + "power-assert-util-string-width": "1.1.1", + "stringifier": "1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.1.1", + "bundled": true, + "requires": { + "power-assert-renderer-base": "1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.1.1", + "bundled": true, + "requires": { + "eastasianwidth": "0.1.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "prettier": { + "version": "1.11.1", + "bundled": true + }, + "pretty-ms": { + "version": "3.0.1", + "bundled": true, + "requires": { + "parse-ms": "1.0.1", + "plur": "2.1.2" + } + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "progress": { + "version": "2.0.0", + "bundled": true + }, + "prop-assign": { + "version": "1.0.0", + "bundled": true + }, + "propprop": { + "version": "0.3.1", + "bundled": true + }, + "protobufjs": { + "version": "6.8.6", + "bundled": true, + "requires": { + "@protobufjs/aspromise": "1.1.2", + "@protobufjs/base64": "1.1.2", + "@protobufjs/codegen": "2.0.4", + "@protobufjs/eventemitter": "1.1.0", + "@protobufjs/fetch": "1.1.0", + "@protobufjs/float": "1.0.2", + "@protobufjs/inquire": "1.1.0", + "@protobufjs/path": "1.1.2", + "@protobufjs/pool": "1.1.0", + "@protobufjs/utf8": "1.1.0", + "@types/long": "3.0.32", + "@types/node": "8.9.5", + "long": "4.0.0" + } + }, + "proxyquire": { + "version": "2.0.0", + "bundled": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "query-string": { + "version": "5.1.1", + "bundled": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "rc": { + "version": "1.2.2", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "bundled": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "2.0.1" + } + } + } + }, + "regenerate": { + "version": "1.3.3", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "bundled": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "bundled": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "1.2.2" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es6-error": "4.0.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "require-precompiled": { + "version": "0.1.0", + "bundled": true + }, + "require-uncached": { + "version": "1.0.3", + "bundled": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "bundled": true + } + } + }, + "requizzle": { + "version": "0.2.1", + "bundled": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "bundled": true + } + } + }, + "resolve": { + "version": "1.1.7", + "bundled": true + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "responselike": { + "version": "1.0.2", + "bundled": true, + "requires": { + "lowercase-keys": "1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "retry-axios": { + "version": "0.3.2", + "bundled": true + }, + "retry-request": { + "version": "3.1.1", + "bundled": true, + "requires": { + "request": "2.83.0", + "through2": "2.0.3" + } + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "bundled": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "bundled": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "0.1.15" + } + }, + "samsam": { + "version": "1.3.0", + "bundled": true + }, + "sanitize-html": { + "version": "1.15.0", + "bundled": true, + "requires": { + "htmlparser2": "3.9.2", + "lodash.escaperegexp": "4.1.2", + "srcset": "1.0.0", + "xtend": "4.0.1" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "5.4.1" + } + }, + "serialize-error": { + "version": "2.1.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "sinon": { + "version": "4.1.2", + "bundled": true, + "requires": { + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "4.5.0", + "type-detect": "4.0.5" + } + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slice-ansi": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "hoek": "4.2.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.1", + "bundled": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + }, + "split-array-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "async": "2.6.0", + "is-stream-ended": "0.1.3" + } + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "srcset": { + "version": "1.0.0", + "bundled": true, + "requires": { + "array-uniq": "1.0.3", + "number-is-nan": "1.0.1" + } + }, + "sshpk": { + "version": "1.13.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stack-utils": { + "version": "1.0.1", + "bundled": true + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "stream-events": { + "version": "1.0.2", + "bundled": true, + "requires": { + "stubs": "3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string": { + "version": "3.3.3", + "bundled": true + }, + "string-format-obj": { + "version": "1.1.0", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringifier": { + "version": "1.3.0", + "bundled": true, + "requires": { + "core-js": "2.5.1", + "traverse": "0.6.6", + "type-name": "2.0.2" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "1.0.1", + "bundled": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "stubs": { + "version": "3.0.0", + "bundled": true + }, + "superagent": { + "version": "3.8.1", + "bundled": true, + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.6.0", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + }, + "supertap": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arrify": "1.0.1", + "indent-string": "3.2.0", + "js-yaml": "3.10.0", + "serialize-error": "2.1.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "supertest": { + "version": "3.0.0", + "bundled": true, + "requires": { + "methods": "1.1.2", + "superagent": "3.8.1" + } + }, + "supports-color": { + "version": "4.5.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-observable": { + "version": "0.2.4", + "bundled": true + }, + "table": { + "version": "4.0.2", + "bundled": true, + "requires": { + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "bundled": true + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-encoding": { + "version": "0.6.4", + "bundled": true + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "time-zone": { + "version": "1.0.0", + "bundled": true + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "tmp": { + "version": "0.0.33", + "bundled": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "traverse": { + "version": "0.6.6", + "bundled": true + }, + "trim-newlines": { + "version": "1.0.0", + "bundled": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "tryit": { + "version": "1.0.3", + "bundled": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "bundled": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.5", + "bundled": true + }, + "type-name": { + "version": "2.0.2", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "uid2": { + "version": "0.0.3", + "bundled": true + }, + "underscore": { + "version": "1.8.3", + "bundled": true + }, + "underscore-contrib": { + "version": "0.3.0", + "bundled": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "bundled": true + } + } + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unique-temp-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "mkdirp": "0.5.1", + "os-tmpdir": "1.0.2", + "uid2": "0.0.3" + } + }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "bundled": true, + "requires": { + "array-filter": "1.0.0", + "indexof": "0.0.1", + "object-keys": "1.0.11" + } + }, + "universalify": { + "version": "0.1.1", + "bundled": true + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "update-notifier": { + "version": "2.3.0", + "bundled": true, + "requires": { + "boxen": "1.2.2", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-to-options": { + "version": "1.0.1", + "bundled": true + }, + "urlgrey": { + "version": "0.4.4", + "bundled": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.1.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "well-known-symbols": { + "version": "1.0.0", + "bundled": true + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "widest-line": { + "version": "1.0.0", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.4", + "bundled": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write": { + "version": "0.2.1", + "bundled": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "bundled": true, + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "pify": "3.0.0", + "sort-keys": "2.0.0", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "write-pkg": { + "version": "3.1.0", + "bundled": true, + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.3.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + }, + "xmlcreate": { + "version": "1.0.2", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "bundled": true, + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.3.tgz", + "integrity": "sha512-O6OVc8lKiLL8Qtoc1lVAynf5pJT550fHZcW33a7oQ7TMNkrTHPgeoYw4esi4KSbDRn8gV+cfefnkgqxXmr+KzA==", + "dev": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", + "ansi-escapes": "3.0.0", + "ansi-styles": "3.2.0", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.1.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "babel-generator": "6.26.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.0", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.1", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.0.10", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.1.0", + "matcher": "1.0.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.0.0", + "plur": "2.1.2", + "pretty-ms": "3.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "semver": "5.4.1", + "slash": "1.0.0", + "source-map-support": "0.5.4", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supertap": "1.0.0", + "supports-color": "5.3.0", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "1.2.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "sinon": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", + "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "dev": true, + "requires": { + "@sinonjs/formatio": "2.0.0", + "diff": "3.4.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "5.3.0", + "type-detect": "4.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "auto-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", + "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "dev": true + }, + "ava": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.23.0.tgz", + "integrity": "sha512-ZsVwO8UENDoZHlYQOEBv6oSGuUiZ8AFqaa+OhTv/McwC+4Y2V9skip5uYwN3egT9I9c+mKzLWA9lXUv7D6g8ZA==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "ansi-escapes": "2.0.0", + "ansi-styles": "3.2.0", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.1.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.0", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.0", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.0", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.0.10", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "js-yaml": "3.10.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.1.0", + "matcher": "1.0.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.0.0", + "plur": "2.1.2", + "pretty-ms": "3.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "slash": "1.0.0", + "source-map-support": "0.4.18", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supports-color": "4.5.0", + "time-require": "0.1.2", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-espower": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", + "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babylon": "6.18.0", + "call-matcher": "1.0.1", + "core-js": "2.5.1", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "boxen": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", + "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "deep-equal": "1.0.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", + "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "1.0.0" + }, + "dependencies": { + "pinkie": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "dev": true + }, + "pinkie-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true, + "requires": { + "pinkie": "1.0.0" + } + } + } + }, + "code-excerpt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", + "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "2.1.0", + "esutils": "2.0.2", + "fast-diff": "1.1.2", + "function-name-support": "0.2.0", + "js-string-escape": "1.0.1", + "lodash.clonedeep": "4.5.0", + "lodash.flattendeep": "4.4.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "semver": "5.4.1", + "well-known-symbols": "1.0.0" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + } + } + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "1.0.1", + "is-error": "2.2.1" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "2.5.1" + } + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es6-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", + "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "requires": { + "is-url": "1.2.2", + "path-is-absolute": "1.0.1", + "source-map": "0.5.7", + "xtend": "4.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "dev": true, + "requires": { + "core-js": "2.5.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "1.0.1", + "merge-descriptors": "1.0.1" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "requires": { + "samsam": "1.3.0" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "function-name-support": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "has-symbol-support-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", + "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.1" + } + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", + "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "es6-error": "4.0.2", + "graceful-fs": "4.1.11", + "indent-string": "3.2.0", + "json5": "0.5.1", + "lodash.clonedeep": "4.5.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.isequal": "4.5.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "package-hash": "2.0.0", + "pkg-dir": "2.0.0", + "resolve-from": "3.0.0", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + } + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==" + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "last-line-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", + "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true + }, + "lolex": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.0.tgz", + "integrity": "sha512-rPO6R1t8PjYL6xbsFUg7aByKkWAql907na6powPBORVs4DCm8aMBUkL4+6CXO0gEIV8vtu3mWV0FB8ZaCYPBmA==" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "matcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", + "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "optional": true + }, + "nise": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", + "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.27", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=" + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.3.0.tgz", + "integrity": "sha512-oUu0WHt1k/JMIODvAYXX6C50Mupw2GO34P/Jdg2ty9xrLufBthHiKR2gf08aF+9S0abW1fl24R7iKRBXzibZmg==", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.0", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.3.8", + "test-exclude": "4.1.1", + "yargs": "10.0.3", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spawn-wrap": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.3.8.tgz", + "integrity": "sha512-Yfkd7Yiwz4RcBPrDWzvhnTzQINBHNqOEhUzOdWZ67Y9b4wzs3Gz6ymuptQmRBpzlpOzroM7jwzmBdRec7JJ0UA==", + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "observable-to-promise": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", + "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "dev": true, + "requires": { + "is-observable": "0.2.0", + "symbol-observable": "1.0.4" + }, + "dependencies": { + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "option-chain": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", + "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } + }, + "package-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", + "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "lodash.flattendeep": "4.4.0", + "md5-hex": "2.0.0", + "release-zalgo": "1.0.0" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + } + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "1.4.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-ms": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", + "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", + "dev": true, + "requires": { + "parse-ms": "1.0.1", + "plur": "2.1.2" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, + "requires": { + "fill-keys": "1.0.2", + "module-not-found-error": "1.0.1", + "resolve": "1.1.7" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.2" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "4.0.2" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sinon": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", + "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==", + "requires": { + "diff": "3.4.0", + "formatio": "1.2.0", + "lodash.get": "4.4.2", + "lolex": "2.3.0", + "nise": "1.2.0", + "supports-color": "4.5.0", + "type-detect": "4.0.5" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", + "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "superagent": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz", + "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.4.1", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + }, + "supertap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", + "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "indent-string": "3.2.0", + "js-yaml": "3.10.0", + "serialize-error": "2.1.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "supertest": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", + "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", + "dev": true, + "requires": { + "methods": "1.1.2", + "superagent": "3.8.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "time-require": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", + "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", + "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "type-detect": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", + "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "os-tmpdir": "1.0.2", + "uid2": "0.0.3" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.2.2", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "well-known-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", + "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "pify": "3.0.0", + "sort-keys": "2.0.0", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", + "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "dev": true, + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.3.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + } + } +} diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 1a79977a1e1..4276f6fd906 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -19,7 +19,7 @@ "yargs": "10.0.3" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "2.1.3", + "@google-cloud/nodejs-repo-tools": "2.2.3", "ava": "^0.23.0", "nyc": "^11.3.0", "proxyquire": "1.8.0" From 1af2b1053a4607defb80bbbcff58910263b574d3 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Tue, 20 Mar 2018 11:44:37 +1300 Subject: [PATCH 179/820] v1.4.0 (#71) --- .../nodejs-datastore/package-lock.json | 4727 ++++++------ handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 6402 +++++++++-------- .../nodejs-datastore/samples/package.json | 2 +- 4 files changed, 5680 insertions(+), 5453 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index bd895f17d6d..86c4808e8da 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "1.3.5", + "version": "1.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -57,7 +57,7 @@ "dev": true, "requires": { "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" + "babel-plugin-espower": "2.4.0" } }, "@ava/write-file-atomic": { @@ -87,35 +87,28 @@ "requires": { "array-uniq": "1.0.3", "arrify": "1.0.1", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "create-error-class": "3.0.2", - "duplexify": "3.5.1", + "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", "is": "3.2.1", "log-driver": "1.2.7", "methmeth": "1.1.0", - "modelo": "4.2.0", - "request": "2.83.0", - "retry-request": "3.1.1", + "modelo": "4.2.3", + "request": "2.85.0", + "retry-request": "3.3.1", "split-array-stream": "1.0.3", "stream-events": "1.0.2", - "string-format-obj": "1.1.0", + "string-format-obj": "1.1.1", "through2": "2.0.3" - }, - "dependencies": { - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" - } } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.3.tgz", - "integrity": "sha512-O6OVc8lKiLL8Qtoc1lVAynf5pJT550fHZcW33a7oQ7TMNkrTHPgeoYw4esi4KSbDRn8gV+cfefnkgqxXmr+KzA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.4.tgz", + "integrity": "sha512-yHxW7JvhnqgoIftv6dAn1r/9AEcPuumD0xXggdYHmDeyf38OMYyjTk92gP9vflTOee1JhM0vOarwGrlKYUbmnQ==", "dev": true, "requires": { "ava": "0.25.0", @@ -133,115 +126,12 @@ "yargs-parser": "9.0.2" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", - "ansi-styles": "3.2.0", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.1.0", - "ava-init": "0.2.1", - "babel-core": "6.26.0", - "babel-generator": "6.26.0", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.3.0", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.1.0", - "matcher": "1.0.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.0.0", - "plur": "2.1.2", - "pretty-ms": "3.0.1", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", - "semver": "5.4.1", - "slash": "1.0.0", - "source-map-support": "0.5.4", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.3.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "cliui": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", @@ -253,99 +143,12 @@ "wrap-ansi": "2.1.0" } }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", - "dev": true, - "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "1.2.0" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, "nyc": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", @@ -383,8 +186,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -394,26 +196,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -421,14 +219,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -436,32 +232,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -471,8 +262,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -487,8 +277,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -496,8 +285,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -506,8 +294,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -519,8 +306,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -536,8 +322,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -548,20 +333,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -570,8 +352,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -581,14 +362,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -598,15 +377,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -616,8 +393,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -629,8 +405,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -641,8 +416,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -650,38 +424,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -690,8 +458,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -699,20 +466,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -720,8 +484,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -729,8 +492,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -738,20 +500,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -765,8 +524,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -778,8 +536,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -787,8 +544,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -796,8 +552,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -805,14 +560,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -824,8 +577,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -835,8 +587,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -844,14 +595,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -859,8 +608,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -869,26 +617,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -901,8 +645,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -911,8 +654,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -920,20 +662,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -944,8 +683,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -955,8 +693,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -964,26 +701,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -992,14 +725,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -1007,26 +738,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -1034,14 +761,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -1049,20 +774,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -1070,8 +792,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -1079,8 +800,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -1088,8 +808,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -1097,44 +816,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -1142,14 +854,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -1157,8 +867,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -1172,8 +881,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -1184,8 +892,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -1195,8 +902,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -1208,8 +914,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -1219,8 +924,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -1228,20 +932,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1249,15 +950,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -1265,8 +964,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1278,8 +976,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -1288,28 +985,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -1317,8 +1010,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -1327,8 +1019,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -1336,14 +1027,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -1351,8 +1040,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -1360,8 +1048,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -1381,14 +1068,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -1396,14 +1081,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1411,14 +1094,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -1429,8 +1110,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -1438,8 +1118,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -1447,20 +1126,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -1469,8 +1145,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -1478,8 +1153,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -1488,14 +1162,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -1505,20 +1177,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -1526,8 +1195,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -1538,8 +1206,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -1547,8 +1214,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -1556,26 +1222,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1585,20 +1247,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -1606,8 +1265,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -1615,8 +1273,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1627,20 +1284,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -1649,8 +1303,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -1658,8 +1311,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1669,8 +1321,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1680,8 +1331,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -1691,8 +1341,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -1701,8 +1350,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1713,14 +1361,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -1728,26 +1374,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -1755,26 +1397,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1783,8 +1421,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -1792,20 +1429,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -1813,32 +1447,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -1851,8 +1480,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -1860,20 +1488,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1882,20 +1507,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -1905,8 +1527,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1914,8 +1535,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -1923,20 +1543,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -1948,20 +1565,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1972,8 +1586,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1987,15 +1600,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -2004,8 +1615,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -2013,27 +1623,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -2042,8 +1648,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -2055,14 +1660,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -2072,20 +1675,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -2104,8 +1704,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -2115,8 +1714,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -2130,8 +1728,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -2139,8 +1736,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -2158,27 +1754,6 @@ "mem": "1.1.0" } }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "proxyquire": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", @@ -2197,27 +1772,12 @@ "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", - "diff": "3.4.0", + "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", + "lolex": "2.3.2", + "nise": "1.3.2", "supports-color": "5.3.0", - "type-detect": "4.0.5" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", - "dev": true, - "requires": { - "source-map": "0.6.1" + "type-detect": "4.0.8" } }, "string-width": { @@ -2239,38 +1799,6 @@ "ansi-regex": "3.0.0" } }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "2.0.0" - } - }, "yargs": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", @@ -2290,15 +1818,6 @@ "y18n": "3.2.1", "yargs-parser": "9.0.2" } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } } } }, @@ -2331,18 +1850,6 @@ "strip-ansi": "0.1.1" } }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, "pretty-ms": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", @@ -2445,14 +1952,13 @@ }, "@types/node": { "version": "8.9.5", - "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==" }, "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", - "dev": true + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" }, "acorn-es7-plugin": { "version": "1.1.7", @@ -2477,12 +1983,12 @@ } }, "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -2502,6 +2008,17 @@ "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "amdefine": { @@ -2552,15 +2069,21 @@ } } }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" @@ -2574,12 +2097,103 @@ "requires": { "micromatch": "2.3.11", "normalize-path": "2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "1.0.3" @@ -2592,13 +2206,9 @@ "dev": true }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "arr-exclude": { "version": "1.0.0", @@ -2653,10 +2263,9 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "arrify": { "version": "1.0.1", @@ -2692,7 +2301,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "async-each": { @@ -2712,66 +2321,208 @@ "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" }, "auto-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", - "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", + "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", "dev": true }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "1.4.1", - "is-buffer": "1.1.6" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", + "ansi-escapes": "3.0.0", + "ansi-styles": "3.2.1", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.2.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "babel-generator": "6.26.1", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.2", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.1", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.1.0", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.2.0", + "matcher": "1.1.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.1.0", + "plur": "2.1.2", + "pretty-ms": "3.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "slash": "1.0.0", + "source-map-support": "0.5.4", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supertap": "1.0.0", + "supports-color": "5.3.0", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", "has-ansi": "2.0.0", @@ -2794,7 +2545,7 @@ "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -2803,10 +2554,10 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2826,9 +2577,9 @@ } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -2836,7 +2587,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2924,7 +2675,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -2969,15 +2720,15 @@ } }, "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", "dev": true, "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.1", + "core-js": "2.5.3", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3124,11 +2875,22 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "babel-runtime": { @@ -3137,8 +2899,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -3151,7 +2913,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -3167,8 +2929,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -3190,7 +2952,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -3226,11 +2988,6 @@ "requires": { "is-descriptor": "1.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -3249,9 +3006,9 @@ } }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, "bluebird": { @@ -3265,22 +3022,22 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "boxen": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", - "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", - "widest-line": "1.0.0" + "widest-line": "2.0.0" }, "dependencies": { "ansi-regex": { @@ -3323,25 +3080,57 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "buf-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", @@ -3388,13 +3177,6 @@ "to-object-path": "0.3.0", "union-value": "1.0.0", "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "cacheable-request": { @@ -3451,7 +3233,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3528,20 +3310,20 @@ } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.3.0" } }, "chardet": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.0.tgz", - "integrity": "sha1-C74TVaxE16PtSpJXB8TvcPgZD2w=", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, "chokidar": { @@ -3559,12 +3341,38 @@ "is-glob": "2.0.1", "path-is-absolute": "1.0.1", "readdirp": "2.1.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } } }, "ci-info": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", - "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", "dev": true }, "circular-json": { @@ -3638,11 +3446,6 @@ "kind-of": "5.1.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -3763,23 +3566,15 @@ "dev": true, "requires": { "pinkie-promise": "1.0.0" - }, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "1.0.0" - } - } + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" } }, "code-point-at": { @@ -3845,8 +3640,8 @@ "dev": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-schema": { @@ -3891,7 +3686,7 @@ "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "performance-now": { @@ -3915,7 +3710,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -3925,15 +3720,15 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "0.2.0", "qs": "6.4.0", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "sntp": { @@ -3983,9 +3778,9 @@ "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "1.0.0" } @@ -4019,12 +3814,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "typedarray": "0.0.6" } }, @@ -4041,30 +3836,41 @@ "js-string-escape": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", - "semver": "5.4.1", + "semver": "5.5.0", "well-known-symbols": "1.0.0" - } - }, - "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } + } + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "dev": true, "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" } }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "convert-to-spaces": { @@ -4095,9 +3901,9 @@ } }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" }, "core-util-is": { "version": "1.0.2", @@ -4136,7 +3942,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } @@ -4174,13 +3980,10 @@ } }, "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "1.0.0" - } + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true }, "debug": { "version": "3.1.0", @@ -4252,13 +4055,6 @@ "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "del": { @@ -4295,6 +4091,21 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } } } }, @@ -4313,9 +4124,9 @@ } }, "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "diff-match-patch": { @@ -4330,31 +4141,15 @@ "requires": { "arrify": "1.0.1", "path-type": "3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } } }, "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "2.0.2" } }, "dom-serializer": { @@ -4391,9 +4186,9 @@ } }, "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { "dom-serializer": "0.1.0", @@ -4416,13 +4211,13 @@ "dev": true }, "duplexify": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", - "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-shift": "1.0.0" } }, @@ -4454,7 +4249,7 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "empower-core": "0.6.2" } }, @@ -4473,13 +4268,13 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { "once": "1.4.0" } @@ -4522,9 +4317,9 @@ } }, "es6-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", - "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "es6-iterator": { @@ -4647,40 +4442,40 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, "eslint": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", - "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.0.tgz", + "integrity": "sha512-r83L5CuqaocDvfwdojbz68b6tCUk8KJkqfppO+gmSAQqYCzTr0bCSMu6A6yFCLKG65j5eKcKUw4Cw4Yl4gfWkg==", "dev": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.0", - "concat-stream": "1.6.0", + "chalk": "2.3.2", + "concat-stream": "1.6.1", "cross-spawn": "5.1.0", "debug": "3.1.0", - "doctrine": "2.0.0", + "doctrine": "2.1.0", "eslint-scope": "3.7.1", - "espree": "3.5.2", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.4", "esquery": "1.0.0", - "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "9.18.0", + "globals": "11.3.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -4688,8 +4483,9 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", + "regexpp": "1.0.1", "require-uncached": "1.0.3", - "semver": "5.4.1", + "semver": "5.5.0", "strip-ansi": "4.0.0", "strip-json-comments": "2.0.1", "table": "4.0.2", @@ -4702,6 +4498,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4714,9 +4516,9 @@ } }, "eslint-config-prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.7.0.tgz", - "integrity": "sha1-e7/vZq14MneDb06lVuaLm8ydpNA=", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz", + "integrity": "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", "dev": true, "requires": { "get-stdin": "5.0.1" @@ -4739,7 +4541,7 @@ "ignore": "3.3.7", "minimatch": "3.0.4", "resolve": "1.5.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "resolve": { @@ -4754,9 +4556,9 @@ } }, "eslint-plugin-prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz", - "integrity": "sha512-AV8shBlGN9tRZffj5v/f4uiQWlP3qiQ+lh+BhTqRLuKSyczx+HRWVkVZaf7dOmguxghAH1wftnou/JUEEChhGg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz", + "integrity": "sha512-floiaI4F7hRkTrFe8V2ItOK97QYrX75DjmdzmVITZoAP6Cn06oEDPQRsO6MlHEP/u2SxI3xQ52Kpjw6j5WGfeQ==", "dev": true, "requires": { "fast-diff": "1.1.2", @@ -4769,10 +4571,16 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, "espower": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.0.tgz", @@ -4797,11 +4605,22 @@ "integrity": "sha1-7bRsPFmga6yOpzppXIblxaC8gto=", "dev": true, "requires": { - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "espower-source": "2.2.0", "minimatch": "3.0.4", "source-map-support": "0.4.18", "xtend": "4.0.1" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "espower-location-detector": { @@ -4822,9 +4641,9 @@ "integrity": "sha1-fgBSVa5HtcE2RIZEs/PYAtUD91I=", "dev": true, "requires": { - "acorn": "5.2.1", + "acorn": "5.5.3", "acorn-es7-plugin": "1.1.7", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "empower-assert": "1.0.1", "escodegen": "1.9.1", "espower": "2.1.0", @@ -4833,16 +4652,32 @@ "multi-stage-sourcemap": "0.2.1", "path-is-absolute": "1.0.1", "xtend": "4.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + } } }, "espree": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", - "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.2.1", + "acorn": "5.5.3", "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + } } }, "esprima": { @@ -4856,7 +4691,7 @@ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "requires": { - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "esquery": { @@ -4869,13 +4704,12 @@ } }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -4915,12 +4749,94 @@ } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "is-posix-bracket": "0.1.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } } }, "expand-range": { @@ -4930,6 +4846,48 @@ "dev": true, "requires": { "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "extend": { @@ -4962,18 +4920,42 @@ "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "dev": true, "requires": { - "chardet": "0.4.0", + "chardet": "0.4.2", "iconv-lite": "0.4.19", "tmp": "0.0.33" } }, "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "is-extglob": "1.0.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "extsprintf": { @@ -4982,9 +4964,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-diff": { "version": "1.1.2", @@ -5002,280 +4984,6 @@ "is-glob": "4.0.0", "merge2": "1.2.1", "micromatch": "3.1.9" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } } }, "fast-json-stable-stringify": { @@ -5325,16 +5033,24 @@ } }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } } }, "find-cache-dir": { @@ -5344,7 +5060,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -5408,28 +5124,19 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.3.0" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "formidable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", - "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz", + "integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==", "dev": true }, "fragment-cache": { @@ -5447,7 +5154,18 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, "fs.realpath": { @@ -5462,7 +5180,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.8.0", + "nan": "2.10.0", "node-pre-gyp": "0.6.39" }, "dependencies": { @@ -6371,6 +6089,16 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gcp-metadata": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", + "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", + "requires": { + "axios": "0.18.0", + "extend": "3.0.1", + "retry-axios": "0.3.2" + } + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -6429,15 +6157,51 @@ "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } } }, "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "2.0.1" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } } }, "glob-to-regexp": { @@ -6446,12 +6210,12 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, "global-dirs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", - "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -6474,6 +6238,20 @@ "slash": "1.0.0" } }, + "google-auth-library": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.3.2.tgz", + "integrity": "sha512-aRz0om4Bs85uyR2Ousk3Gb8Nffx2Sr2RoKts1smg1MhRwrehE1aD1HC4RmprNt1HVJ88IDnQ8biJQ/aXjiIxlQ==", + "requires": { + "axios": "0.18.0", + "gcp-metadata": "0.6.3", + "gtoken": "2.2.0", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lru-cache": "4.1.2", + "retry-axios": "0.3.2" + } + }, "google-auto-auth": { "version": "0.9.7", "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", @@ -6482,78 +6260,7 @@ "async": "2.6.0", "gcp-metadata": "0.6.3", "google-auth-library": "1.3.2", - "request": "2.83.0" - }, - "dependencies": { - "gcp-metadata": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", - "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", - "requires": { - "axios": "0.18.0", - "extend": "3.0.1", - "retry-axios": "0.3.2" - } - }, - "google-auth-library": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.3.2.tgz", - "integrity": "sha512-aRz0om4Bs85uyR2Ousk3Gb8Nffx2Sr2RoKts1smg1MhRwrehE1aD1HC4RmprNt1HVJ88IDnQ8biJQ/aXjiIxlQ==", - "requires": { - "axios": "0.18.0", - "gcp-metadata": "0.6.3", - "gtoken": "2.2.0", - "jws": "3.1.4", - "lodash.isstring": "4.0.1", - "lru-cache": "4.1.2", - "retry-axios": "0.3.2" - } - }, - "google-p12-pem": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", - "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", - "requires": { - "node-forge": "0.7.4", - "pify": "3.0.0" - } - }, - "gtoken": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.2.0.tgz", - "integrity": "sha512-tvQs8B1z5+I1FzMPZnq/OCuxTWFOkvy7cUJcpNdBOK2L7yEtPZTVCPtZU181sSDF+isUPebSqFTNTkIejFASAQ==", - "requires": { - "axios": "0.18.0", - "google-p12-pem": "1.0.2", - "jws": "3.1.4", - "mime": "2.2.0", - "pify": "3.0.0" - } - }, - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "mime": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", - "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" - }, - "node-forge": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", - "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "request": "2.85.0" } }, "google-gax": { @@ -6568,22 +6275,18 @@ "google-proto-files": "0.15.1", "grpc": "1.9.1", "is-stream-ended": "0.1.3", - "lodash": "4.17.4", + "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", - "requires": { - "end-of-stream": "1.4.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - } - } + } + }, + "google-p12-pem": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", + "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", + "requires": { + "node-forge": "0.7.4", + "pify": "3.0.0" } }, "google-proto-files": { @@ -6608,11 +6311,48 @@ "pify": "3.0.0", "slash": "1.0.0" } + } + } + }, + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true }, - "pify": { + "url-parse-lax": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } } } }, @@ -6633,8 +6373,8 @@ "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.9.1.tgz", "integrity": "sha512-WNW3MWMuAoo63AwIlzFE3T0KzzvNBSvOkg67Hm8WhvHNkXFBlIk1QyJRE3Ocm0O5eIwS7JU8Ssota53QR1zllg==", "requires": { - "lodash": "4.17.4", - "nan": "2.8.0", + "lodash": "4.17.5", + "nan": "2.10.0", "node-pre-gyp": "0.6.39", "protobufjs": "5.0.2" }, @@ -7358,6 +7098,18 @@ } } }, + "gtoken": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.2.0.tgz", + "integrity": "sha512-tvQs8B1z5+I1FzMPZnq/OCuxTWFOkvy7cUJcpNdBOK2L7yEtPZTVCPtZU181sSDF+isUPebSqFTNTkIejFASAQ==", + "requires": { + "axios": "0.18.0", + "google-p12-pem": "1.0.2", + "jws": "3.1.4", + "mime": "2.2.0", + "pify": "3.0.0" + } + }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", @@ -7397,7 +7149,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "har-schema": "2.0.0" } }, @@ -7423,9 +7175,9 @@ "dev": true }, "has-symbol-support-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", - "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", "dev": true }, "has-to-string-tag-x": { @@ -7434,7 +7186,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "1.4.2" } }, "has-value": { @@ -7445,13 +7197,6 @@ "get-value": "2.0.6", "has-values": "1.0.0", "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "has-values": { @@ -7463,24 +7208,6 @@ "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -7504,7 +7231,7 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.1.0" } }, @@ -7515,9 +7242,9 @@ "dev": true }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, "home-or-tmp": { "version": "2.0.0", @@ -7530,9 +7257,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "htmlparser2": { @@ -7543,10 +7270,10 @@ "requires": { "domelementtype": "1.3.0", "domhandler": "2.4.1", - "domutils": "1.6.2", + "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "http-cache-semantics": { @@ -7562,7 +7289,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "hullabaloo-config-manager": { @@ -7572,14 +7299,14 @@ "dev": true, "requires": { "dot-prop": "4.2.0", - "es6-error": "4.0.2", + "es6-error": "4.1.1", "graceful-fs": "4.1.11", "indent-string": "3.2.0", "json5": "0.5.1", "lodash.clonedeep": "4.5.0", "lodash.clonedeepwith": "4.5.0", "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", "package-hash": "2.0.0", "pkg-dir": "2.0.0", @@ -7652,9 +7379,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "ink-docstrap": { @@ -7663,8 +7390,8 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.19.2", - "sanitize-html": "1.15.0" + "moment": "2.21.0", + "sanitize-html": "1.18.2" } }, "inquirer": { @@ -7674,12 +7401,12 @@ "dev": true, "requires": { "ansi-escapes": "3.0.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.1.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -7689,12 +7416,6 @@ "through": "2.3.8" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -7748,9 +7469,9 @@ } }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -7778,13 +7499,6 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "is-arrayish": { @@ -7799,7 +7513,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -7817,12 +7531,12 @@ } }, "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.1" + "ci-info": "1.1.3" } }, "is-data-descriptor": { @@ -7831,13 +7545,6 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "is-descriptor": { @@ -7848,13 +7555,6 @@ "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "is-dotfile": { @@ -7884,10 +7584,9 @@ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { "version": "1.0.2", @@ -7913,12 +7612,11 @@ "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "2.1.1" } }, "is-installed-globally": { @@ -7927,8 +7625,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.0", - "is-path-inside": "1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -7938,12 +7636,21 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-obj": { @@ -7959,12 +7666,12 @@ "dev": true }, "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "1.2.0" } }, "is-odd": { @@ -7994,13 +7701,13 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -8018,13 +7725,6 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "is-posix-bracket": { @@ -8052,13 +7752,10 @@ "dev": true }, "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true }, "is-retry-allowed": { "version": "1.1.0", @@ -8111,13 +7808,9 @@ "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isstream": { "version": "0.1.2", @@ -8153,12 +7846,12 @@ "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "4.0.0" } }, @@ -8189,7 +7882,7 @@ "escape-string-regexp": "1.0.5", "js2xmlparser": "3.0.0", "klaw": "2.0.0", - "marked": "0.3.6", + "marked": "0.3.17", "mkdirp": "0.5.1", "requizzle": "0.2.1", "strip-json-comments": "2.0.1", @@ -8217,6 +7910,12 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -8316,12 +8015,9 @@ } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "klaw": { "version": "2.0.0", @@ -8406,9 +8102,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -8463,20 +8159,37 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" }, "lolex": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.0.tgz", - "integrity": "sha512-rPO6R1t8PjYL6xbsFUg7aByKkWAql907na6powPBORVs4DCm8aMBUkL4+6CXO0gEIV8vtu3mWV0FB8ZaCYPBmA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", "dev": true }, "long": { @@ -8519,27 +8232,18 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "map-cache": { @@ -8562,15 +8266,15 @@ } }, "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", + "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==", "dev": true }, "matcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", - "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", + "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", "dev": true, "requires": { "escape-string-regexp": "1.0.5" @@ -8597,7 +8301,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "meow": { @@ -8673,6 +8377,21 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -8737,49 +8456,47 @@ "dev": true }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", + "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "mimic-response": { @@ -8793,7 +8510,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -8848,18 +8565,6 @@ "supports-color": "4.4.0" }, "dependencies": { - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", @@ -8872,9 +8577,9 @@ } }, "modelo": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz", - "integrity": "sha1-O0tCACOmbKfjK9uhbnEJN+FNGws=" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", + "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==" }, "module-not-found-error": { "version": "1.0.1", @@ -8883,9 +8588,9 @@ "dev": true }, "moment": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", - "integrity": "sha512-Rf6jiHPEfxp9+dlzxPTmRHbvoFXsh2L/U8hOupUMpnuecHQmI6cF6lUbJl3QqKPko1u6ujO+FxtcajLVfLpAtA==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", + "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==", "dev": true }, "ms": { @@ -8932,9 +8637,9 @@ "dev": true }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" }, "nanomatch": { "version": "1.2.9", @@ -8953,23 +8658,6 @@ "regex-not": "1.0.2", "snapdragon": "0.8.2", "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "natural-compare": { @@ -8985,36 +8673,33 @@ "dev": true }, "nise": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", - "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", + "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", "dev": true, "requires": { - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "1.6.0", + "lolex": "2.3.2", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" - }, - "dependencies": { - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - } } }, + "node-forge": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", + "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -9096,8 +8781,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -9107,26 +8791,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -9134,14 +8814,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -9149,50 +8827,42 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -9202,8 +8872,7 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -9218,8 +8887,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -9227,8 +8895,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -9237,8 +8904,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -9250,8 +8916,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -9267,8 +8932,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -9279,20 +8943,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "1.0.1", @@ -9306,8 +8967,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -9315,16 +8975,14 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -9333,8 +8991,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -9344,14 +9001,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "1.0.0", @@ -9367,16 +9022,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -9386,15 +9039,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9404,8 +9055,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -9417,8 +9067,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -9429,8 +9078,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -9438,8 +9086,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9447,8 +9094,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9458,8 +9104,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9467,8 +9112,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9478,8 +9122,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -9489,22 +9132,19 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9515,8 +9155,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -9524,14 +9163,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "1.0.0", @@ -9540,44 +9177,37 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9586,8 +9216,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9595,26 +9224,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -9622,8 +9247,7 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2", @@ -9632,16 +9256,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -9649,8 +9271,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -9658,20 +9279,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -9685,8 +9303,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9698,8 +9315,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -9707,8 +9323,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -9716,8 +9331,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -9726,8 +9340,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -9737,8 +9350,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -9746,14 +9358,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -9765,8 +9375,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -9776,8 +9385,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -9785,14 +9393,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -9800,8 +9406,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -9810,8 +9415,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "0.2.2" @@ -9819,32 +9423,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -9857,8 +9456,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -9867,8 +9465,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -9876,20 +9473,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -9900,8 +9494,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -9911,8 +9504,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -9920,14 +9512,12 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -9937,16 +9527,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -9955,8 +9543,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9964,8 +9551,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9975,8 +9561,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9986,20 +9571,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -10008,14 +9590,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -10023,14 +9603,12 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -10038,28 +9616,24 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -10067,8 +9641,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -10076,16 +9649,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "1.0.0", @@ -10095,22 +9666,19 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -10118,20 +9686,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -10139,14 +9704,12 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -10154,8 +9717,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10163,8 +9725,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "4.0.0" @@ -10172,16 +9733,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10189,58 +9748,49 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -10248,14 +9798,12 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -10263,8 +9811,7 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.1", @@ -10278,8 +9825,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -10290,8 +9836,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -10301,8 +9846,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -10314,8 +9858,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -10325,8 +9868,7 @@ }, "istanbul-reports": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -10334,20 +9876,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10355,15 +9894,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -10371,8 +9908,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10384,8 +9920,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -10394,28 +9929,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -10423,8 +9954,7 @@ }, "lru-cache": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -10433,14 +9963,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "1.0.1" @@ -10448,8 +9976,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -10457,14 +9984,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -10472,8 +9997,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "0.6.1" @@ -10481,16 +10005,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -10510,14 +10032,12 @@ }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -10525,14 +10045,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2", @@ -10541,8 +10059,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -10552,8 +10069,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -10561,14 +10077,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -10587,28 +10101,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -10619,8 +10129,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -10628,8 +10137,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -10637,20 +10145,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -10660,8 +10165,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10669,8 +10173,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10678,8 +10181,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10687,8 +10189,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -10698,8 +10199,7 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } @@ -10708,8 +10208,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10717,16 +10216,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -10735,8 +10232,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10744,16 +10240,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -10761,8 +10255,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -10771,14 +10264,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -10788,14 +10279,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "1.0.0" @@ -10803,8 +10292,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.2.0" @@ -10812,14 +10300,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -10830,8 +10316,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -10839,14 +10324,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -10854,26 +10337,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10883,20 +10362,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -10904,8 +10380,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -10913,8 +10388,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -10925,26 +10399,22 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -10953,8 +10423,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10962,8 +10431,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10973,8 +10441,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10984,8 +10451,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -10995,8 +10461,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -11005,8 +10470,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -11017,14 +10481,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -11032,8 +10494,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -11042,26 +10503,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -11069,38 +10526,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11109,8 +10560,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -11118,8 +10568,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "0.1.15" @@ -11127,20 +10576,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11151,8 +10597,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11162,8 +10607,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -11171,26 +10615,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "0.11.2", @@ -11205,8 +10645,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11214,8 +10653,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11223,8 +10661,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11232,8 +10669,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11243,8 +10679,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11252,8 +10687,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11263,8 +10697,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11274,16 +10707,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "1.0.0", @@ -11293,8 +10724,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11302,16 +10732,14 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11319,14 +10747,12 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "bundled": true, "dev": true, "requires": { "atob": "2.0.3", @@ -11338,14 +10764,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -11358,8 +10782,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -11368,14 +10791,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -11384,14 +10805,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -11399,8 +10818,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "0.2.5", @@ -11409,8 +10827,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11418,8 +10835,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11427,8 +10843,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11438,8 +10853,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11447,8 +10861,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11458,8 +10871,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11469,16 +10881,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -11487,14 +10897,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11504,8 +10912,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11513,8 +10920,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -11522,20 +10928,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -11547,20 +10950,17 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "braces": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0", @@ -11579,8 +10979,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11588,8 +10987,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11599,8 +10997,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "2.6.9", @@ -11614,8 +11011,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11623,8 +11019,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11632,8 +11027,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11643,16 +11037,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "bundled": true, "dev": true, "requires": { "array-unique": "0.3.2", @@ -11667,8 +11059,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11676,8 +11067,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11687,8 +11077,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11699,8 +11088,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11710,8 +11098,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11719,8 +11106,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11730,8 +11116,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11739,8 +11124,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11750,8 +11134,7 @@ }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11759,8 +11142,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11770,20 +11152,17 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true }, "micromatch": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -11805,14 +11184,12 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11820,8 +11197,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "2.0.2", @@ -11832,8 +11208,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -11842,8 +11217,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11853,14 +11227,12 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11871,8 +11243,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11886,15 +11257,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -11905,8 +11274,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11914,8 +11282,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11928,8 +11295,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "0.3.1", @@ -11938,8 +11304,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -11949,8 +11314,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -11960,28 +11324,24 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -11989,16 +11349,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -12007,8 +11365,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -12016,27 +11373,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -12045,8 +11398,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -12054,8 +11406,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12067,14 +11418,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12084,20 +11433,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { "cliui": "4.0.0", @@ -12116,20 +11462,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "bundled": true, "dev": true, "requires": { "string-width": "2.1.1", @@ -12139,8 +11482,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12148,8 +11490,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -12159,8 +11500,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -12168,8 +11508,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -12237,6 +11576,14 @@ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -12251,13 +11598,6 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "object.omit": { @@ -12276,13 +11616,6 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "observable-to-promise": { @@ -12292,14 +11625,25 @@ "dev": true, "requires": { "is-observable": "0.2.0", - "symbol-observable": "1.0.4" + "symbol-observable": "1.2.0" }, "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } } } }, @@ -12317,7 +11661,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "optimist": { @@ -12402,10 +11746,13 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -12413,9 +11760,24 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "package-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", @@ -12435,9 +11797,9 @@ "dev": true, "requires": { "got": "6.7.1", - "registry-auth-token": "3.3.1", + "registry-auth-token": "3.3.2", "registry-url": "3.1.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "got": { @@ -12461,18 +11823,35 @@ } } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -12483,9 +11862,9 @@ } }, "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, "pascalcase": { @@ -12545,20 +11924,11 @@ } }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "pify": "3.0.0" } }, "performance-now": { @@ -12572,28 +11942,52 @@ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", "dev": true }, "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "1.0.0" } }, "pkg-conf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", - "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { "find-up": "2.1.0", - "load-json-file": "2.0.0" + "load-json-file": "4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + } } }, "pkg-dir": { @@ -12625,6 +12019,25 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "postcss": { + "version": "6.0.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.20.tgz", + "integrity": "sha512-Opr6usW30Iy0xEDrJywDckRxtylfO7gTGs3Kfb2LdLQlGsUg89fTy0R3Vm1Dub2YHO7MK58avr0p70+uFFHb7A==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "power-assert": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.4.4.tgz", @@ -12642,7 +12055,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-context-traversal": "1.1.1" } }, @@ -12653,16 +12066,9 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.1", + "core-js": "2.5.3", "espurify": "1.7.0", "estraverse": "4.2.0" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } } }, "power-assert-context-traversal": { @@ -12670,7 +12076,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "estraverse": "4.2.0" } }, @@ -12679,7 +12085,7 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -12707,7 +12113,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -12719,7 +12125,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -12766,13 +12172,21 @@ "dev": true }, "pretty-ms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.0.1.tgz", - "integrity": "sha1-fBi3PCKKm49u3Cg1oSy49+2F+fQ=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", + "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", "dev": true, "requires": { "parse-ms": "1.0.1", "plur": "2.1.2" + }, + "dependencies": { + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + } } }, "private": { @@ -12782,9 +12196,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { "version": "2.0.0", @@ -12869,26 +12283,6 @@ "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -12901,13 +12295,13 @@ } }, "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -12929,6 +12323,23 @@ "load-json-file": "2.0.0", "normalize-package-data": "2.4.0", "path-type": "2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -12942,14 +12353,14 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -12963,7 +12374,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, @@ -12995,9 +12406,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { @@ -13018,6 +12429,12 @@ "safe-regex": "1.1.0" } }, + "regexpp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.0.1.tgz", + "integrity": "sha512-8Ph721maXiOYSLtaDGKVmDn5wdsNaF6Px85qFNeMPQq0r8K5Y10tgP6YuR65Ws35n4DvzFcCxEnRNBIXQunzLw==", + "dev": true + }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -13030,12 +12447,12 @@ } }, "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.2", + "rc": "1.2.6", "safe-buffer": "5.1.1" } }, @@ -13045,7 +12462,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.2" + "rc": "1.2.6" } }, "regjsgen": { @@ -13069,7 +12486,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.0.2" + "es6-error": "4.1.1" } }, "remove-trailing-separator": { @@ -13098,32 +12515,32 @@ } }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.3.1", + "form-data": "2.3.2", "har-validator": "5.0.3", "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "require-directory": { @@ -13235,11 +12652,11 @@ "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" }, "retry-request": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.1.1.tgz", - "integrity": "sha512-Sj3M3bC8ODJT+jfVxbTwvORRkFtc/AlDhhiMch5RJalLMAjz6+lIf5Q/Ox2esAM4tXcAYfG4ecNHPtaGNWIqvQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", + "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", "requires": { - "request": "2.83.0", + "request": "2.85.0", "through2": "2.0.3" } }, @@ -13306,21 +12723,27 @@ "dev": true }, "sanitize-html": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.15.0.tgz", - "integrity": "sha512-1jWLToWx8ZV53Z1Jg+2fHl8dNFsxvQt2Cmrk4o/z1+MUdB5EXSU0QVuzlGGhfp7cQrYbEEfMO/TUWHfkBUqujQ==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.2.tgz", + "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", "dev": true, "requires": { + "chalk": "2.3.2", "htmlparser2": "3.9.2", + "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mergewith": "4.6.1", + "postcss": "6.0.20", "srcset": "1.0.0", "xtend": "4.0.1" } }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "semver-diff": { @@ -13329,7 +12752,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, "serialize-error": { @@ -13393,18 +12816,18 @@ "dev": true }, "sinon": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", - "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.6.tgz", + "integrity": "sha512-bzQag30yErCC4lJPv+C2HcmD1+3ula4JQNePZldKcagi0Exq6XDfcC2yqXVfEwtfTIq1rYGujrUIZbwHPpKjog==", "dev": true, "requires": { - "diff": "3.4.0", - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", + "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", - "supports-color": "4.5.0", - "type-detect": "4.0.5" + "lolex": "2.3.2", + "nise": "1.3.2", + "supports-color": "5.3.0", + "type-detect": "4.0.8" } }, "slash": { @@ -13544,11 +12967,6 @@ "requires": { "is-descriptor": "1.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -13558,6 +12976,16 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } } }, "sntp": { @@ -13565,7 +12993,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "sort-keys": { @@ -13595,12 +13023,20 @@ } }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-url": { @@ -13609,24 +13045,35 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-array-stream": { @@ -13663,9 +13110,9 @@ } }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -13779,9 +13226,9 @@ "dev": true }, "string-format-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz", - "integrity": "sha1-djVhCx7zlwE+hHi+mKFw4EmD0Gg=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", + "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==" }, "string-width": { "version": "1.0.2", @@ -13806,7 +13253,7 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -13866,21 +13313,29 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz", - "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "1.2.1", "cookiejar": "2.1.1", "debug": "3.1.0", "extend": "3.0.1", - "form-data": "2.3.1", - "formidable": "1.1.1", + "form-data": "2.3.2", + "formidable": "1.2.0", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } } }, "supertap": { @@ -13891,7 +13346,7 @@ "requires": { "arrify": "1.0.1", "indent-string": "3.2.0", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "serialize-error": "2.1.0", "strip-ansi": "4.0.0" }, @@ -13920,22 +13375,30 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.1" + "superagent": "3.8.2" } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + } } }, "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "table": { @@ -13944,10 +13407,10 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.0", - "lodash": "4.17.4", + "chalk": "2.3.2", + "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -14023,7 +13486,7 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, @@ -14060,6 +13523,16 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } } }, "to-regex": { @@ -14080,22 +13553,12 @@ "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - } - } } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } @@ -14123,12 +13586,6 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -14153,9 +13610,9 @@ } }, "type-detect": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", - "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-name": { @@ -14365,11 +13822,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -14385,8 +13837,8 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.2.2", - "chalk": "2.3.0", + "boxen": "1.3.0", + "chalk": "2.3.2", "configstore": "3.1.1", "import-lazy": "2.1.0", "is-installed-globally": "0.1.0", @@ -14428,13 +13880,6 @@ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } } }, "util-deprecate": { @@ -14443,18 +13888,18 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "verror": { @@ -14489,12 +13934,45 @@ "dev": true }, "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } } }, "window-size": { @@ -14550,7 +14028,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" @@ -14561,12 +14039,6 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -14620,6 +14092,23 @@ "window-size": "0.1.4", "y18n": "3.2.1" } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } } } } diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 36dd33ebd2f..f56c5eda21d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.3.5", + "version": "1.4.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index bbbb7274127..33871a4f223 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -57,7 +57,7 @@ "dev": true, "requires": { "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" + "babel-plugin-espower": "2.4.0" } }, "@ava/write-file-atomic": { @@ -81,11 +81,11 @@ } }, "@google-cloud/datastore": { - "version": "1.3.5", + "version": "1.4.0", "requires": { "@google-cloud/common": "0.16.2", "arrify": "1.0.1", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "create-error-class": "3.0.2", "extend": "3.0.1", "google-auto-auth": "0.9.7", @@ -93,7 +93,7 @@ "google-proto-files": "0.15.1", "is": "3.2.1", "lodash.flatten": "4.4.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "prop-assign": "1.0.0", "propprop": "0.3.1", "safe-buffer": "5.1.1", @@ -145,7 +145,7 @@ "bundled": true, "requires": { "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" + "babel-plugin-espower": "2.4.0" } }, "@ava/write-file-atomic": { @@ -170,32 +170,26 @@ "requires": { "array-uniq": "1.0.3", "arrify": "1.0.1", - "concat-stream": "1.6.0", + "concat-stream": "1.6.1", "create-error-class": "3.0.2", - "duplexify": "3.5.1", + "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", "is": "3.2.1", "log-driver": "1.2.7", "methmeth": "1.1.0", - "modelo": "4.2.0", - "request": "2.83.0", - "retry-request": "3.1.1", + "modelo": "4.2.3", + "request": "2.85.0", + "retry-request": "3.3.1", "split-array-stream": "1.0.3", "stream-events": "1.0.2", - "string-format-obj": "1.1.0", + "string-format-obj": "1.1.1", "through2": "2.0.3" - }, - "dependencies": { - "log-driver": { - "version": "1.2.7", - "bundled": true - } } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.2.3", + "version": "2.2.4", "bundled": true, "requires": { "ava": "0.25.0", @@ -213,107 +207,10 @@ "yargs-parser": "9.0.2" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "bundled": true - }, "ansi-regex": { "version": "3.0.0", "bundled": true }, - "ava": { - "version": "0.25.0", - "bundled": true, - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", - "ansi-styles": "3.2.0", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.1.0", - "ava-init": "0.2.1", - "babel-core": "6.26.0", - "babel-generator": "6.26.0", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.3.0", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.0.10", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.1.0", - "matcher": "1.0.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.0.0", - "plur": "2.1.2", - "pretty-ms": "3.0.1", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", - "semver": "5.4.1", - "slash": "1.0.0", - "source-map-support": "0.5.4", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.3.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" - } - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, "cliui": { "version": "4.0.0", "bundled": true, @@ -323,81 +220,10 @@ "wrap-ansi": "2.1.0" } }, - "code-excerpt": { - "version": "2.1.1", - "bundled": true, - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "fs-extra": { - "version": "5.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "globby": { - "version": "6.1.0", - "bundled": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "got": { - "version": "8.2.0", - "bundled": true, - "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "1.2.0" - } - }, - "lodash": { - "version": "4.17.5", - "bundled": true - }, "nyc": { "version": "11.4.1", "bundled": true, @@ -1792,21 +1618,6 @@ "mem": "1.1.0" } }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, "proxyquire": { "version": "1.8.0", "bundled": true, @@ -1821,23 +1632,12 @@ "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", - "diff": "3.4.0", + "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", + "lolex": "2.3.2", + "nise": "1.3.2", "supports-color": "5.3.0", - "type-detect": "4.0.5" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "source-map-support": { - "version": "0.5.4", - "bundled": true, - "requires": { - "source-map": "0.6.1" + "type-detect": "4.0.8" } }, "string-width": { @@ -1855,30 +1655,6 @@ "ansi-regex": "3.0.0" } }, - "supports-color": { - "version": "5.3.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "2.0.0" - } - }, "yargs": { "version": "11.0.0", "bundled": true, @@ -1896,13 +1672,6 @@ "y18n": "3.2.1", "yargs-parser": "9.0.2" } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - } } } }, @@ -1929,14 +1698,6 @@ "strip-ansi": "0.1.1" } }, - "date-time": { - "version": "0.1.1", - "bundled": true - }, - "parse-ms": { - "version": "0.1.2", - "bundled": true - }, "pretty-ms": { "version": "0.2.2", "bundled": true, @@ -2022,7 +1783,7 @@ "bundled": true }, "acorn": { - "version": "5.2.1", + "version": "4.0.13", "bundled": true }, "acorn-es7-plugin": { @@ -2043,11 +1804,11 @@ } }, "ajv": { - "version": "5.3.0", + "version": "5.5.2", "bundled": true, "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -2063,6 +1824,15 @@ "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "amdefine": { @@ -2101,12 +1871,16 @@ } } }, + "ansi-escapes": { + "version": "3.0.0", + "bundled": true + }, "ansi-regex": { "version": "2.1.1", "bundled": true }, "ansi-styles": { - "version": "3.2.0", + "version": "3.2.1", "bundled": true, "requires": { "color-convert": "1.9.1" @@ -2118,10 +1892,83 @@ "requires": { "micromatch": "2.3.11", "normalize-path": "2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } } }, "argparse": { - "version": "1.0.9", + "version": "1.0.10", "bundled": true, "requires": { "sprintf-js": "1.0.3" @@ -2132,11 +1979,8 @@ "bundled": true }, "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "bundled": true }, "arr-exclude": { "version": "1.0.0", @@ -2178,7 +2022,7 @@ "bundled": true }, "array-unique": { - "version": "0.2.1", + "version": "0.3.2", "bundled": true }, "arrify": { @@ -2209,7 +2053,7 @@ "version": "2.6.0", "bundled": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "async-each": { @@ -2225,19 +2069,147 @@ "bundled": true }, "auto-bind": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true }, - "ava-init": { - "version": "0.2.1", + "ava": { + "version": "0.25.0", "bundled": true, "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", + "ansi-escapes": "3.0.0", + "ansi-styles": "3.2.1", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.2.0", + "ava-init": "0.2.1", + "babel-core": "6.26.0", + "babel-generator": "6.26.1", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "bluebird": "3.5.1", + "caching-transform": "1.0.1", + "chalk": "2.3.2", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "cli-truncate": "1.1.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.1", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.1", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "3.1.0", + "dot-prop": "4.2.0", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.2.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.2.0", + "is-ci": "1.1.0", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.2.0", + "matcher": "1.1.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.1.0", + "plur": "2.1.2", + "pretty-ms": "3.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "slash": "1.0.0", + "source-map-support": "0.5.4", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supertap": "1.0.0", + "supports-color": "5.3.0", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "globby": { + "version": "6.1.0", + "bundled": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "ava-init": { + "version": "0.2.1", + "bundled": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } }, "aws-sign2": { "version": "0.7.0", @@ -2290,7 +2262,7 @@ "bundled": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -2299,10 +2271,10 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2320,7 +2292,7 @@ } }, "babel-generator": { - "version": "6.26.0", + "version": "6.26.1", "bundled": true, "requires": { "babel-messages": "6.23.0", @@ -2328,7 +2300,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2400,7 +2372,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -2437,13 +2409,13 @@ } }, "babel-plugin-espower": { - "version": "2.3.2", + "version": "2.4.0", "bundled": true, "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.1", + "core-js": "2.5.3", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2560,19 +2532,28 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "babel-runtime": { "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -2583,7 +2564,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -2597,8 +2578,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -2616,7 +2597,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -2647,10 +2628,6 @@ "requires": { "is-descriptor": "1.0.2" } - }, - "isobject": { - "version": "3.0.1", - "bundled": true } } }, @@ -2667,7 +2644,7 @@ } }, "binary-extensions": { - "version": "1.10.0", + "version": "1.11.0", "bundled": true }, "bluebird": { @@ -2678,20 +2655,20 @@ "version": "4.3.1", "bundled": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "boxen": { - "version": "1.2.2", + "version": "1.3.0", "bundled": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", - "widest-line": "1.0.0" + "widest-line": "2.0.0" }, "dependencies": { "ansi-regex": { @@ -2724,7 +2701,7 @@ } }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.11", "bundled": true, "requires": { "balanced-match": "1.0.0", @@ -2732,14 +2709,43 @@ } }, "braces": { - "version": "1.8.5", + "version": "2.3.1", "bundled": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, "buf-compare": { "version": "1.0.1", "bundled": true @@ -2778,12 +2784,6 @@ "to-object-path": "0.3.0", "union-value": "1.0.0", "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "cacheable-request": { @@ -2830,7 +2830,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2892,16 +2892,16 @@ } }, "chalk": { - "version": "2.3.0", + "version": "2.3.2", "bundled": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.3.0" } }, "chardet": { - "version": "0.4.0", + "version": "0.4.2", "bundled": true }, "chokidar": { @@ -2917,10 +2917,30 @@ "is-glob": "2.0.1", "path-is-absolute": "1.0.1", "readdirp": "2.1.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + } } }, "ci-info": { - "version": "1.1.1", + "version": "1.1.3", "bundled": true }, "circular-json": { @@ -2985,10 +3005,6 @@ "kind-of": "5.1.0" } }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, "kind-of": { "version": "5.1.0", "bundled": true @@ -3080,19 +3096,13 @@ "bundled": true, "requires": { "pinkie-promise": "1.0.0" - }, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "bundled": true - }, - "pinkie-promise": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pinkie": "1.0.0" - } - } + } + }, + "code-excerpt": { + "version": "2.1.1", + "bundled": true, + "requires": { + "convert-to-spaces": "1.0.2" } }, "code-point-at": { @@ -3143,8 +3153,8 @@ "bundled": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-schema": { @@ -3179,7 +3189,7 @@ "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "performance-now": { @@ -3197,7 +3207,7 @@ "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -3207,15 +3217,15 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "0.2.0", "qs": "6.4.0", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "sntp": { @@ -3255,7 +3265,7 @@ "bundled": true }, "combined-stream": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "requires": { "delayed-stream": "1.0.0" @@ -3282,11 +3292,11 @@ "bundled": true }, "concat-stream": { - "version": "1.6.0", + "version": "1.6.1", "bundled": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "typedarray": "0.0.6" } }, @@ -3301,10 +3311,19 @@ "js-string-escape": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", - "semver": "5.4.1", + "semver": "5.5.0", "well-known-symbols": "1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "bundled": true, + "requires": { + "time-zone": "1.0.0" + } + } } }, "configstore": { @@ -3313,14 +3332,14 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" } }, "convert-source-map": { - "version": "1.5.0", + "version": "1.5.1", "bundled": true }, "convert-to-spaces": { @@ -3344,7 +3363,7 @@ } }, "core-js": { - "version": "2.5.1", + "version": "2.5.3", "bundled": true }, "core-util-is": { @@ -3378,7 +3397,7 @@ "version": "5.2.0", "bundled": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } @@ -3409,11 +3428,8 @@ } }, "date-time": { - "version": "2.1.0", - "bundled": true, - "requires": { - "time-zone": "1.0.0" - } + "version": "0.1.1", + "bundled": true }, "debug": { "version": "3.1.0", @@ -3470,12 +3486,6 @@ "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "del": { @@ -3506,6 +3516,17 @@ "pify": { "version": "2.3.0", "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } } } }, @@ -3521,7 +3542,7 @@ } }, "diff": { - "version": "3.4.0", + "version": "3.5.0", "bundled": true }, "diff-match-patch": { @@ -3534,27 +3555,13 @@ "requires": { "arrify": "1.0.1", "path-type": "3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true - } } }, "doctrine": { - "version": "2.0.0", + "version": "2.1.0", "bundled": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "2.0.2" } }, "dom-serializer": { @@ -3583,7 +3590,7 @@ } }, "domutils": { - "version": "1.6.2", + "version": "1.7.0", "bundled": true, "requires": { "dom-serializer": "0.1.0", @@ -3602,12 +3609,12 @@ "bundled": true }, "duplexify": { - "version": "3.5.1", + "version": "3.5.4", "bundled": true, "requires": { - "end-of-stream": "1.4.0", + "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-shift": "1.0.0" } }, @@ -3635,7 +3642,7 @@ "version": "1.2.3", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "empower-core": "0.6.2" } }, @@ -3651,11 +3658,11 @@ "bundled": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "end-of-stream": { - "version": "1.4.0", + "version": "1.4.1", "bundled": true, "requires": { "once": "1.4.0" @@ -3690,7 +3697,7 @@ } }, "es6-error": { - "version": "4.0.2", + "version": "4.1.1", "bundled": true }, "es6-iterator": { @@ -3789,38 +3796,38 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, "eslint": { - "version": "4.11.0", + "version": "4.19.0", "bundled": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.0", - "concat-stream": "1.6.0", + "chalk": "2.3.2", + "concat-stream": "1.6.1", "cross-spawn": "5.1.0", "debug": "3.1.0", - "doctrine": "2.0.0", + "doctrine": "2.1.0", "eslint-scope": "3.7.1", - "espree": "3.5.2", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.4", "esquery": "1.0.0", - "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "9.18.0", + "globals": "11.3.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -3828,8 +3835,9 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", + "regexpp": "1.0.1", "require-uncached": "1.0.3", - "semver": "5.4.1", + "semver": "5.5.0", "strip-ansi": "4.0.0", "strip-json-comments": "2.0.1", "table": "4.0.2", @@ -3840,6 +3848,10 @@ "version": "3.0.0", "bundled": true }, + "globals": { + "version": "11.3.0", + "bundled": true + }, "strip-ansi": { "version": "4.0.0", "bundled": true, @@ -3850,7 +3862,7 @@ } }, "eslint-config-prettier": { - "version": "2.7.0", + "version": "2.9.0", "bundled": true, "requires": { "get-stdin": "5.0.1" @@ -3869,7 +3881,7 @@ "ignore": "3.3.7", "minimatch": "3.0.4", "resolve": "1.5.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "resolve": { @@ -3882,7 +3894,7 @@ } }, "eslint-plugin-prettier": { - "version": "2.3.1", + "version": "2.6.0", "bundled": true, "requires": { "fast-diff": "1.1.2", @@ -3893,10 +3905,14 @@ "version": "3.7.1", "bundled": true, "requires": { - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, + "eslint-visitor-keys": { + "version": "1.0.0", + "bundled": true + }, "espower": { "version": "2.1.0", "bundled": true, @@ -3917,11 +3933,20 @@ "version": "1.2.2", "bundled": true, "requires": { - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "espower-source": "2.2.0", "minimatch": "3.0.4", "source-map-support": "0.4.18", "xtend": "4.0.1" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "espower-location-detector": { @@ -3938,9 +3963,9 @@ "version": "2.2.0", "bundled": true, "requires": { - "acorn": "5.2.1", + "acorn": "5.5.3", "acorn-es7-plugin": "1.1.7", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "empower-assert": "1.0.1", "escodegen": "1.9.1", "espower": "2.1.0", @@ -3949,14 +3974,26 @@ "multi-stage-sourcemap": "0.2.1", "path-is-absolute": "1.0.1", "xtend": "4.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "bundled": true + } } }, "espree": { - "version": "3.5.2", + "version": "3.5.4", "bundled": true, "requires": { - "acorn": "5.2.1", + "acorn": "5.5.3", "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.5.3", + "bundled": true + } } }, "esprima": { @@ -3967,7 +4004,7 @@ "version": "1.7.0", "bundled": true, "requires": { - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "esquery": { @@ -3978,11 +4015,10 @@ } }, "esrecurse": { - "version": "4.2.0", + "version": "4.2.1", "bundled": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -4015,10 +4051,84 @@ } }, "expand-brackets": { - "version": "0.1.5", + "version": "2.1.4", "bundled": true, "requires": { - "is-posix-bracket": "0.1.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true + } } }, "expand-range": { @@ -4026,6 +4136,40 @@ "bundled": true, "requires": { "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "extend": { @@ -4053,16 +4197,39 @@ "version": "2.1.0", "bundled": true, "requires": { - "chardet": "0.4.0", + "chardet": "0.4.2", "iconv-lite": "0.4.19", "tmp": "0.0.33" } }, "extglob": { - "version": "0.3.2", + "version": "2.0.4", "bundled": true, "requires": { - "is-extglob": "1.0.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "extsprintf": { @@ -4070,7 +4237,7 @@ "bundled": true }, "fast-deep-equal": { - "version": "1.0.0", + "version": "1.1.0", "bundled": true }, "fast-diff": { @@ -4086,251 +4253,6 @@ "is-glob": "4.0.0", "merge2": "1.2.1", "micromatch": "3.1.9" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "braces": { - "version": "2.3.1", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.9", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } } }, "fast-json-stable-stringify": { @@ -4369,14 +4291,22 @@ } }, "fill-range": { - "version": "2.2.3", + "version": "4.0.0", "bundled": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "find-cache-dir": { @@ -4384,7 +4314,7 @@ "bundled": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -4436,23 +4366,16 @@ "bundled": true }, "form-data": { - "version": "2.3.1", + "version": "2.3.2", "bundled": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "formatio": { - "version": "1.2.0", - "bundled": true, - "requires": { - "samsam": "1.3.0" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "formidable": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true }, "fragment-cache": { @@ -4467,7 +4390,16 @@ "bundled": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" + } + }, + "fs-extra": { + "version": "5.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, "fs.realpath": { @@ -4482,6 +4414,15 @@ "version": "1.0.1", "bundled": true }, + "gcp-metadata": { + "version": "0.6.3", + "bundled": true, + "requires": { + "axios": "0.18.0", + "extend": "3.0.1", + "retry-axios": "0.3.2" + } + }, "get-caller-file": { "version": "1.0.2", "bundled": true @@ -4527,13 +4468,43 @@ "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", "bundled": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "2.1.1" + } + } } }, "glob-to-regexp": { @@ -4541,10 +4512,10 @@ "bundled": true }, "global-dirs": { - "version": "0.1.0", + "version": "0.1.1", "bundled": true, "requires": { - "ini": "1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -4564,6 +4535,19 @@ "slash": "1.0.0" } }, + "google-auth-library": { + "version": "1.3.2", + "bundled": true, + "requires": { + "axios": "0.18.0", + "gcp-metadata": "0.6.3", + "gtoken": "2.2.0", + "jws": "3.1.4", + "lodash.isstring": "4.0.1", + "lru-cache": "4.1.2", + "retry-axios": "0.3.2" + } + }, "google-auto-auth": { "version": "0.9.7", "bundled": true, @@ -4571,70 +4555,7 @@ "async": "2.6.0", "gcp-metadata": "0.6.3", "google-auth-library": "1.3.2", - "request": "2.83.0" - }, - "dependencies": { - "gcp-metadata": { - "version": "0.6.3", - "bundled": true, - "requires": { - "axios": "0.18.0", - "extend": "3.0.1", - "retry-axios": "0.3.2" - } - }, - "google-auth-library": { - "version": "1.3.2", - "bundled": true, - "requires": { - "axios": "0.18.0", - "gcp-metadata": "0.6.3", - "gtoken": "2.2.0", - "jws": "3.1.4", - "lodash.isstring": "4.0.1", - "lru-cache": "4.1.2", - "retry-axios": "0.3.2" - } - }, - "google-p12-pem": { - "version": "1.0.2", - "bundled": true, - "requires": { - "node-forge": "0.7.4", - "pify": "3.0.0" - } - }, - "gtoken": { - "version": "2.2.0", - "bundled": true, - "requires": { - "axios": "0.18.0", - "google-p12-pem": "1.0.2", - "jws": "3.1.4", - "mime": "2.2.0", - "pify": "3.0.0" - } - }, - "lru-cache": { - "version": "4.1.2", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "mime": { - "version": "2.2.0", - "bundled": true - }, - "node-forge": { - "version": "0.7.4", - "bundled": true - }, - "pify": { - "version": "3.0.0", - "bundled": true - } + "request": "2.85.0" } }, "google-gax": { @@ -4648,21 +4569,17 @@ "google-proto-files": "0.15.1", "grpc": "1.9.1", "is-stream-ended": "0.1.3", - "lodash": "4.17.4", + "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - } - } + } + }, + "google-p12-pem": { + "version": "1.0.2", + "bundled": true, + "requires": { + "node-forge": "0.7.4", + "pify": "3.0.0" } }, "google-proto-files": { @@ -4685,10 +4602,42 @@ "pify": "3.0.0", "slash": "1.0.0" } + } + } + }, + "got": { + "version": "8.2.0", + "bundled": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "bundled": true }, - "pify": { + "url-parse-lax": { "version": "3.0.0", - "bundled": true + "bundled": true, + "requires": { + "prepend-http": "2.0.0" + } } } }, @@ -4704,8 +4653,8 @@ "version": "1.9.1", "bundled": true, "requires": { - "lodash": "4.17.4", - "nan": "2.8.0", + "lodash": "4.17.5", + "nan": "2.10.0", "node-pre-gyp": "0.6.39", "protobufjs": "5.0.2" }, @@ -5428,6 +5377,17 @@ } } }, + "gtoken": { + "version": "2.2.0", + "bundled": true, + "requires": { + "axios": "0.18.0", + "google-p12-pem": "1.0.2", + "jws": "3.1.4", + "mime": "2.2.0", + "pify": "3.0.0" + } + }, "handlebars": { "version": "4.0.11", "bundled": true, @@ -5459,7 +5419,7 @@ "version": "5.0.3", "bundled": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "har-schema": "2.0.0" } }, @@ -5479,14 +5439,14 @@ "bundled": true }, "has-symbol-support-x": { - "version": "1.4.1", + "version": "1.4.2", "bundled": true }, "has-to-string-tag-x": { "version": "1.4.1", "bundled": true, "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "1.4.2" } }, "has-value": { @@ -5496,12 +5456,6 @@ "get-value": "2.0.6", "has-values": "1.0.0", "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "has-values": { @@ -5512,22 +5466,6 @@ "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "bundled": true, @@ -5547,7 +5485,7 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.1.0" } }, @@ -5556,7 +5494,7 @@ "bundled": true }, "hoek": { - "version": "4.2.0", + "version": "4.2.1", "bundled": true }, "home-or-tmp": { @@ -5568,7 +5506,7 @@ } }, "hosted-git-info": { - "version": "2.5.0", + "version": "2.6.0", "bundled": true }, "htmlparser2": { @@ -5577,10 +5515,10 @@ "requires": { "domelementtype": "1.3.0", "domhandler": "2.4.1", - "domutils": "1.6.2", + "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "http-cache-semantics": { @@ -5593,7 +5531,7 @@ "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "hullabaloo-config-manager": { @@ -5601,14 +5539,14 @@ "bundled": true, "requires": { "dot-prop": "4.2.0", - "es6-error": "4.0.2", + "es6-error": "4.1.1", "graceful-fs": "4.1.11", "indent-string": "3.2.0", "json5": "0.5.1", "lodash.clonedeep": "4.5.0", "lodash.clonedeepwith": "4.5.0", "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", "package-hash": "2.0.0", "pkg-dir": "2.0.0", @@ -5665,15 +5603,15 @@ "bundled": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true }, "ink-docstrap": { "version": "1.3.2", "bundled": true, "requires": { - "moment": "2.19.2", - "sanitize-html": "1.15.0" + "moment": "2.21.0", + "sanitize-html": "1.18.2" } }, "inquirer": { @@ -5681,12 +5619,12 @@ "bundled": true, "requires": { "ansi-escapes": "3.0.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.1.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -5696,10 +5634,6 @@ "through": "2.3.8" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "bundled": true - }, "ansi-regex": { "version": "3.0.0", "bundled": true @@ -5741,7 +5675,7 @@ } }, "invariant": { - "version": "2.2.2", + "version": "2.2.4", "bundled": true, "requires": { "loose-envify": "1.3.1" @@ -5764,12 +5698,6 @@ "bundled": true, "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } } }, "is-arrayish": { @@ -5780,7 +5708,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -5795,10 +5723,10 @@ } }, "is-ci": { - "version": "1.0.10", + "version": "1.1.0", "bundled": true, "requires": { - "ci-info": "1.1.1" + "ci-info": "1.1.3" } }, "is-data-descriptor": { @@ -5806,12 +5734,6 @@ "bundled": true, "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } } }, "is-descriptor": { @@ -5821,12 +5743,6 @@ "is-accessor-descriptor": "1.0.0", "is-data-descriptor": "1.0.0", "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } } }, "is-dotfile": { @@ -5849,7 +5765,7 @@ "bundled": true }, "is-extglob": { - "version": "1.0.0", + "version": "2.1.1", "bundled": true }, "is-finite": { @@ -5871,18 +5787,18 @@ "bundled": true }, "is-glob": { - "version": "2.0.1", + "version": "4.0.0", "bundled": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "2.1.1" } }, "is-installed-globally": { "version": "0.1.0", "bundled": true, "requires": { - "global-dirs": "0.1.0", - "is-path-inside": "1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -5890,10 +5806,19 @@ "bundled": true }, "is-number": { - "version": "2.1.0", + "version": "3.0.0", "bundled": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-obj": { @@ -5905,10 +5830,10 @@ "bundled": true }, "is-observable": { - "version": "0.2.0", + "version": "1.1.0", "bundled": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "1.2.0" } }, "is-odd": { @@ -5932,11 +5857,11 @@ "version": "1.0.0", "bundled": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "requires": { "path-is-inside": "1.0.2" @@ -5951,12 +5876,6 @@ "bundled": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "is-posix-bracket": { @@ -5976,11 +5895,8 @@ "bundled": true }, "is-resolvable": { - "version": "1.0.0", - "bundled": true, - "requires": { - "tryit": "1.0.3" - } + "version": "1.1.0", + "bundled": true }, "is-retry-allowed": { "version": "1.1.0", @@ -6019,11 +5935,8 @@ "bundled": true }, "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "bundled": true }, "isstream": { "version": "0.1.2", @@ -6050,10 +5963,10 @@ "bundled": true }, "js-yaml": { - "version": "3.10.0", + "version": "3.11.0", "bundled": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "4.0.0" } }, @@ -6079,7 +5992,7 @@ "escape-string-regexp": "1.0.5", "js2xmlparser": "3.0.0", "klaw": "2.0.0", - "marked": "0.3.6", + "marked": "0.3.17", "mkdirp": "0.5.1", "requizzle": "0.2.1", "strip-json-comments": "2.0.1", @@ -6101,6 +6014,10 @@ "version": "3.0.0", "bundled": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + }, "json-schema": { "version": "0.2.3", "bundled": true @@ -6180,11 +6097,8 @@ } }, "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "bundled": true }, "klaw": { "version": "2.0.0", @@ -6252,7 +6166,7 @@ } }, "lodash": { - "version": "4.17.4", + "version": "4.17.5", "bundled": true }, "lodash.clonedeep": { @@ -6291,16 +6205,28 @@ "version": "4.5.0", "bundled": true }, + "lodash.isplainobject": { + "version": "4.0.6", + "bundled": true + }, "lodash.isstring": { "version": "4.0.1", "bundled": true }, "lodash.merge": { - "version": "4.6.0", + "version": "4.6.1", + "bundled": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "bundled": true + }, + "log-driver": { + "version": "1.2.7", "bundled": true }, "lolex": { - "version": "2.3.0", + "version": "2.3.2", "bundled": true }, "long": { @@ -6339,16 +6265,10 @@ } }, "make-dir": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, "requires": { "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "bundled": true - } } }, "map-cache": { @@ -6367,11 +6287,11 @@ } }, "marked": { - "version": "0.3.6", + "version": "0.3.17", "bundled": true }, "matcher": { - "version": "1.0.0", + "version": "1.1.0", "bundled": true, "requires": { "escape-string-regexp": "1.0.5" @@ -6392,7 +6312,7 @@ "version": "1.1.0", "bundled": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "meow": { @@ -6454,6 +6374,17 @@ "version": "2.3.0", "bundled": true }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "2.0.4" + } + }, "read-pkg": { "version": "1.1.0", "bundled": true, @@ -6504,41 +6435,41 @@ "bundled": true }, "micromatch": { - "version": "2.3.11", + "version": "3.1.9", "bundled": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "mime": { - "version": "1.6.0", + "version": "2.2.0", "bundled": true }, "mime-db": { - "version": "1.30.0", + "version": "1.33.0", "bundled": true }, "mime-types": { - "version": "2.1.17", + "version": "2.1.18", "bundled": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true }, "mimic-response": { @@ -6549,7 +6480,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -6596,14 +6527,6 @@ "supports-color": "4.4.0" }, "dependencies": { - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, "supports-color": { "version": "4.4.0", "bundled": true, @@ -6614,7 +6537,7 @@ } }, "modelo": { - "version": "4.2.0", + "version": "4.2.3", "bundled": true }, "module-not-found-error": { @@ -6622,7 +6545,7 @@ "bundled": true }, "moment": { - "version": "2.19.2", + "version": "2.21.0", "bundled": true }, "ms": { @@ -6660,7 +6583,7 @@ "bundled": true }, "nan": { - "version": "2.8.0", + "version": "2.10.0", "bundled": true }, "nanomatch": { @@ -6679,20 +6602,6 @@ "regex-not": "1.0.2", "snapdragon": "0.8.2", "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } } }, "natural-compare": { @@ -6704,30 +6613,28 @@ "bundled": true }, "nise": { - "version": "1.2.0", + "version": "1.3.2", "bundled": true, "requires": { - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "1.6.0", + "lolex": "2.3.2", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" - }, - "dependencies": { - "lolex": { - "version": "1.6.0", - "bundled": true - } } }, + "node-forge": { + "version": "0.7.4", + "bundled": true + }, "normalize-package-data": { "version": "2.4.0", "bundled": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -9238,6 +9145,13 @@ "bundled": true } } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -9250,12 +9164,6 @@ "bundled": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "object.omit": { @@ -9271,12 +9179,6 @@ "bundled": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } } }, "observable-to-promise": { @@ -9284,12 +9186,21 @@ "bundled": true, "requires": { "is-observable": "0.2.0", - "symbol-observable": "1.0.4" + "symbol-observable": "1.2.0" }, "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "bundled": true + "is-observable": { + "version": "0.2.0", + "bundled": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "bundled": true + } + } } } }, @@ -9304,7 +9215,7 @@ "version": "2.0.1", "bundled": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "optimist": { @@ -9369,16 +9280,30 @@ "bundled": true }, "p-limit": { - "version": "1.1.0", - "bundled": true + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", "bundled": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "1.0.0" } }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, "package-hash": { "version": "2.0.0", "bundled": true, @@ -9394,9 +9319,9 @@ "bundled": true, "requires": { "got": "6.7.1", - "registry-auth-token": "3.3.1", + "registry-auth-token": "3.3.2", "registry-url": "3.1.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "got": { @@ -9426,6 +9351,19 @@ "is-dotfile": "1.0.3", "is-extglob": "1.0.0", "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + } } }, "parse-json": { @@ -9436,7 +9374,7 @@ } }, "parse-ms": { - "version": "1.0.1", + "version": "0.1.2", "bundled": true }, "pascalcase": { @@ -9481,16 +9419,10 @@ } }, "path-type": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "requires": { - "pify": "2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - } + "pify": "3.0.0" } }, "performance-now": { @@ -9502,22 +9434,42 @@ "bundled": true }, "pinkie": { - "version": "2.0.4", + "version": "1.0.0", "bundled": true }, "pinkie-promise": { - "version": "2.0.1", + "version": "1.0.0", "bundled": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "1.0.0" } }, "pkg-conf": { - "version": "2.0.0", + "version": "2.1.0", "bundled": true, "requires": { "find-up": "2.1.0", - "load-json-file": "2.0.0" + "load-json-file": "4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + } } }, "pkg-dir": { @@ -9542,6 +9494,21 @@ "version": "0.1.1", "bundled": true }, + "postcss": { + "version": "6.0.20", + "bundled": true, + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } + } + }, "power-assert": { "version": "1.4.4", "bundled": true, @@ -9557,7 +9524,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-context-traversal": "1.1.1" } }, @@ -9567,22 +9534,16 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.1", + "core-js": "2.5.3", "espurify": "1.7.0", "estraverse": "4.2.0" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "bundled": true - } } }, "power-assert-context-traversal": { "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "estraverse": "4.2.0" } }, @@ -9590,7 +9551,7 @@ "version": "1.4.1", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -9615,7 +9576,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -9626,7 +9587,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -9663,11 +9624,17 @@ "bundled": true }, "pretty-ms": { - "version": "3.0.1", + "version": "3.1.0", "bundled": true, "requires": { "parse-ms": "1.0.1", "plur": "2.1.2" + }, + "dependencies": { + "parse-ms": { + "version": "1.0.1", + "bundled": true + } } }, "private": { @@ -9675,7 +9642,7 @@ "bundled": true }, "process-nextick-args": { - "version": "1.0.7", + "version": "2.0.0", "bundled": true }, "progress": { @@ -9747,22 +9714,6 @@ "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "bundled": true, @@ -9773,11 +9724,11 @@ } }, "rc": { - "version": "1.2.2", + "version": "1.2.6", "bundled": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -9795,6 +9746,19 @@ "load-json-file": "2.0.0", "normalize-package-data": "2.4.0", "path-type": "2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + } } }, "read-pkg-up": { @@ -9806,13 +9770,13 @@ } }, "readable-stream": { - "version": "2.3.3", + "version": "2.3.5", "bundled": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -9824,7 +9788,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, @@ -9850,7 +9814,7 @@ "bundled": true }, "regenerator-runtime": { - "version": "0.11.0", + "version": "0.11.1", "bundled": true }, "regex-cache": { @@ -9868,6 +9832,10 @@ "safe-regex": "1.1.0" } }, + "regexpp": { + "version": "1.0.1", + "bundled": true + }, "regexpu-core": { "version": "2.0.0", "bundled": true, @@ -9878,10 +9846,10 @@ } }, "registry-auth-token": { - "version": "3.3.1", + "version": "3.3.2", "bundled": true, "requires": { - "rc": "1.2.2", + "rc": "1.2.6", "safe-buffer": "5.1.1" } }, @@ -9889,7 +9857,7 @@ "version": "3.1.0", "bundled": true, "requires": { - "rc": "1.2.2" + "rc": "1.2.6" } }, "regjsgen": { @@ -9907,7 +9875,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "es6-error": "4.0.2" + "es6-error": "4.1.1" } }, "remove-trailing-separator": { @@ -9930,31 +9898,31 @@ } }, "request": { - "version": "2.83.0", + "version": "2.85.0", "bundled": true, "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.3.1", + "form-data": "2.3.2", "har-validator": "5.0.3", "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" } }, "require-directory": { @@ -10039,10 +10007,10 @@ "bundled": true }, "retry-request": { - "version": "3.1.1", + "version": "3.3.1", "bundled": true, "requires": { - "request": "2.83.0", + "request": "2.85.0", "through2": "2.0.3" } }, @@ -10095,24 +10063,30 @@ "bundled": true }, "sanitize-html": { - "version": "1.15.0", + "version": "1.18.2", "bundled": true, "requires": { + "chalk": "2.3.2", "htmlparser2": "3.9.2", + "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mergewith": "4.6.1", + "postcss": "6.0.20", "srcset": "1.0.0", "xtend": "4.0.1" } }, "semver": { - "version": "5.4.1", + "version": "5.5.0", "bundled": true }, "semver-diff": { "version": "2.1.0", "bundled": true, "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, "serialize-error": { @@ -10162,16 +10136,16 @@ "bundled": true }, "sinon": { - "version": "4.1.2", + "version": "4.4.6", "bundled": true, "requires": { - "diff": "3.4.0", - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", + "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", - "supports-color": "4.5.0", - "type-detect": "4.0.5" + "lolex": "2.3.2", + "nise": "1.3.2", + "supports-color": "5.3.0", + "type-detect": "4.0.8" } }, "slash": { @@ -10292,10 +10266,6 @@ "requires": { "is-descriptor": "1.0.2" } - }, - "isobject": { - "version": "3.0.1", - "bundled": true } } }, @@ -10304,13 +10274,22 @@ "bundled": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "sntp": { "version": "2.1.0", "bundled": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "sort-keys": { @@ -10336,10 +10315,16 @@ } }, "source-map-support": { - "version": "0.4.18", + "version": "0.5.4", "bundled": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } } }, "source-map-url": { @@ -10347,18 +10332,27 @@ "bundled": true }, "spdx-correct": { - "version": "1.0.2", + "version": "3.0.0", "bundled": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", + "spdx-exceptions": { + "version": "2.1.0", "bundled": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", + "version": "3.0.0", "bundled": true }, "split-array-stream": { @@ -10389,7 +10383,7 @@ } }, "sshpk": { - "version": "1.13.1", + "version": "1.14.1", "bundled": true, "requires": { "asn1": "0.2.3", @@ -10488,7 +10482,7 @@ "bundled": true }, "string-format-obj": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true }, "string-width": { @@ -10511,7 +10505,7 @@ "version": "1.3.0", "bundled": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -10558,19 +10552,25 @@ "bundled": true }, "superagent": { - "version": "3.8.1", + "version": "3.8.2", "bundled": true, "requires": { "component-emitter": "1.2.1", "cookiejar": "2.1.1", "debug": "3.1.0", "extend": "3.0.1", - "form-data": "2.3.1", - "formidable": "1.1.1", + "form-data": "2.3.2", + "formidable": "1.2.0", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "bundled": true + } } }, "supertap": { @@ -10579,7 +10579,7 @@ "requires": { "arrify": "1.0.1", "indent-string": "3.2.0", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "serialize-error": "2.1.0", "strip-ansi": "4.0.0" }, @@ -10602,28 +10602,34 @@ "bundled": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.1" + "superagent": "3.8.2" } }, "supports-color": { - "version": "4.5.0", + "version": "5.3.0", "bundled": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "bundled": true + } } }, "symbol-observable": { - "version": "0.2.4", + "version": "1.2.0", "bundled": true }, "table": { "version": "4.0.2", "bundled": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.0", - "lodash": "4.17.4", + "chalk": "2.3.2", + "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -10680,7 +10686,7 @@ "version": "2.0.3", "bundled": true, "requires": { - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, @@ -10708,6 +10714,15 @@ "bundled": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "to-regex": { @@ -10726,19 +10741,10 @@ "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - } } }, "tough-cookie": { - "version": "2.3.3", + "version": "2.3.4", "bundled": true, "requires": { "punycode": "1.4.1" @@ -10760,10 +10766,6 @@ "version": "1.0.1", "bundled": true }, - "tryit": { - "version": "1.0.3", - "bundled": true - }, "tunnel-agent": { "version": "0.6.0", "bundled": true, @@ -10784,7 +10786,7 @@ } }, "type-detect": { - "version": "4.0.5", + "version": "4.0.8", "bundled": true }, "type-name": { @@ -10956,10 +10958,6 @@ "has-values": { "version": "0.1.4", "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true } } }, @@ -10971,8 +10969,8 @@ "version": "2.3.0", "bundled": true, "requires": { - "boxen": "1.2.2", - "chalk": "2.3.0", + "boxen": "1.3.0", + "chalk": "2.3.2", "configstore": "3.1.1", "import-lazy": "2.1.0", "is-installed-globally": "0.1.0", @@ -11006,12 +11004,6 @@ "bundled": true, "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } } }, "util-deprecate": { @@ -11019,15 +11011,15 @@ "bundled": true }, "uuid": { - "version": "3.1.0", + "version": "3.2.1", "bundled": true }, "validate-npm-package-license": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "verror": { @@ -11055,10 +11047,35 @@ "bundled": true }, "widest-line": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "requires": { - "string-width": "1.0.2" + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } } }, "window-size": { @@ -11103,7 +11120,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" @@ -11112,10 +11129,6 @@ "detect-indent": { "version": "5.0.0", "bundled": true - }, - "pify": { - "version": "3.0.0", - "bundled": true } } }, @@ -11159,6 +11172,19 @@ "window-size": "0.1.4", "y18n": "3.2.1" } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } } } }, @@ -11183,12 +11209,6 @@ "yargs-parser": "9.0.2" }, "dependencies": { - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -11207,19 +11227,19 @@ "@concordance/react": "1.0.0", "@ladjs/time-require": "0.1.4", "ansi-escapes": "3.0.0", - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", "array-uniq": "1.0.3", "arrify": "1.0.1", - "auto-bind": "1.1.0", + "auto-bind": "1.2.0", "ava-init": "0.2.1", "babel-core": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.0", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -11247,7 +11267,7 @@ "ignore-by-default": "1.0.1", "import-local": "0.1.1", "indent-string": "3.2.0", - "is-ci": "1.0.10", + "is-ci": "1.1.0", "is-generator-fn": "1.0.0", "is-obj": "1.0.1", "is-observable": "1.1.0", @@ -11258,22 +11278,22 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.1.0", - "matcher": "1.0.0", + "make-dir": "1.2.0", + "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", - "ms": "2.0.0", + "ms": "2.1.1", "multimatch": "2.1.0", "observable-to-promise": "0.5.0", "option-chain": "1.0.0", "package-hash": "2.0.0", - "pkg-conf": "2.0.0", + "pkg-conf": "2.1.0", "plur": "2.1.2", "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", "safe-buffer": "5.1.1", - "semver": "5.4.1", + "semver": "5.5.0", "slash": "1.0.0", "source-map-support": "0.5.4", "stack-utils": "1.0.1", @@ -11286,12 +11306,6 @@ "update-notifier": "2.3.0" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "cliui": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", @@ -11303,87 +11317,6 @@ "wrap-ansi": "2.1.0" } }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", - "dev": true, - "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "1.2.0" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, "nyc": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", @@ -11421,8 +11354,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -11432,26 +11364,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -11459,14 +11387,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -11474,32 +11400,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -11509,8 +11430,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -11525,8 +11445,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -11534,8 +11453,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -11544,8 +11462,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11557,8 +11474,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -11574,8 +11490,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11586,20 +11501,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -11608,8 +11520,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -11619,14 +11530,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -11636,15 +11545,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11654,8 +11561,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -11667,8 +11573,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11679,8 +11584,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -11688,38 +11592,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11728,8 +11626,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -11737,20 +11634,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -11758,8 +11652,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -11767,8 +11660,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -11776,20 +11668,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -11803,8 +11692,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11816,8 +11704,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -11825,8 +11712,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -11834,8 +11720,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11843,14 +11728,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -11862,8 +11745,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -11873,8 +11755,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -11882,14 +11763,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -11897,8 +11776,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -11907,26 +11785,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -11939,8 +11813,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -11949,8 +11822,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -11958,20 +11830,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -11982,8 +11851,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -11993,8 +11861,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12002,26 +11869,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -12030,14 +11893,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -12045,26 +11906,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -12072,14 +11929,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -12087,20 +11942,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -12108,8 +11960,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -12117,8 +11968,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -12126,8 +11976,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12135,44 +11984,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -12180,14 +12022,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -12195,8 +12035,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -12210,8 +12049,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -12222,8 +12060,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -12233,8 +12070,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -12246,8 +12082,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -12257,8 +12092,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -12266,20 +12100,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12287,15 +12118,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -12303,8 +12132,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12316,8 +12144,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -12326,28 +12153,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -12355,8 +12178,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -12365,8 +12187,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -12374,14 +12195,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -12389,8 +12208,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -12398,8 +12216,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -12419,14 +12236,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -12434,14 +12249,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -12449,14 +12262,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -12467,8 +12278,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -12476,8 +12286,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -12485,20 +12294,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -12507,8 +12313,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -12516,8 +12321,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -12526,14 +12330,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -12543,20 +12345,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -12564,8 +12363,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -12576,8 +12374,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -12585,8 +12382,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -12594,26 +12390,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12623,20 +12415,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -12644,8 +12433,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -12653,8 +12441,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12665,20 +12452,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -12687,8 +12471,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12696,8 +12479,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12707,8 +12489,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12718,8 +12499,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -12729,8 +12509,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -12739,8 +12518,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12751,14 +12529,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -12766,26 +12542,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -12793,26 +12565,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12821,8 +12589,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -12830,20 +12597,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -12851,32 +12615,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -12889,8 +12648,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -12898,20 +12656,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -12920,20 +12675,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12943,8 +12695,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12952,8 +12703,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -12961,20 +12711,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -12986,20 +12733,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -13010,8 +12754,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -13025,15 +12768,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -13042,8 +12783,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -13051,27 +12791,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -13080,8 +12816,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -13093,14 +12828,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -13110,20 +12843,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -13142,8 +12872,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -13153,8 +12882,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -13168,8 +12896,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -13177,46 +12904,13 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } } } }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "sinon": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", @@ -13224,37 +12918,12 @@ "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", - "diff": "3.4.0", + "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", + "lolex": "2.3.2", + "nise": "1.3.2", "supports-color": "5.3.0", - "type-detect": "4.0.5" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", - "dev": true, - "requires": { - "source-map": "0.6.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "type-detect": "4.0.8" } }, "strip-ansi": { @@ -13283,21 +12952,6 @@ } } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "2.0.0" - } - }, "yargs": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", @@ -13358,18 +13012,6 @@ "strip-ansi": "0.1.1" } }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, "pretty-ms": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", @@ -13397,7 +13039,6 @@ "version": "2.0.0", "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, "requires": { "samsam": "1.3.0" } @@ -13426,45 +13067,12 @@ "dev": true, "requires": { "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } } }, "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, "ansi-regex": { @@ -13473,9 +13081,9 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" @@ -13492,9 +13100,9 @@ } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "1.0.3" @@ -13560,6 +13168,12 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", @@ -13573,9 +13187,9 @@ "dev": true }, "auto-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", - "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", + "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", "dev": true }, "ava": { @@ -13589,17 +13203,17 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "ansi-escapes": "2.0.0", - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", "array-uniq": "1.0.3", "arrify": "1.0.1", - "auto-bind": "1.1.0", + "auto-bind": "1.2.0", "ava-init": "0.2.1", "babel-core": "6.26.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.0", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -13607,10 +13221,10 @@ "cli-spinners": "1.1.0", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", - "code-excerpt": "2.1.0", + "code-excerpt": "2.1.1", "common-path-prefix": "1.0.0", "concordance": "3.0.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "core-assert": "0.2.1", "currently-unhandled": "0.4.1", "debug": "3.1.0", @@ -13627,28 +13241,28 @@ "ignore-by-default": "1.0.1", "import-local": "0.1.1", "indent-string": "3.2.0", - "is-ci": "1.0.10", + "is-ci": "1.1.0", "is-generator-fn": "1.0.0", "is-obj": "1.0.1", "is-observable": "0.2.0", "is-promise": "2.1.0", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "last-line-stream": "1.0.0", "lodash.clonedeepwith": "4.5.0", "lodash.debounce": "4.0.8", "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.1.0", - "matcher": "1.0.0", + "make-dir": "1.2.0", + "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", - "ms": "2.0.0", + "ms": "2.1.1", "multimatch": "2.1.0", "observable-to-promise": "0.5.0", "option-chain": "1.0.0", "package-hash": "2.0.0", - "pkg-conf": "2.0.0", + "pkg-conf": "2.1.0", "plur": "2.1.2", "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", @@ -13666,19 +13280,34 @@ "update-notifier": "2.3.0" }, "dependencies": { + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", "dev": true, "requires": { - "is-obj": "1.0.1" + "symbol-observable": "0.2.4" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" } }, "strip-ansi": { @@ -13689,6 +13318,12 @@ "requires": { "ansi-regex": "3.0.0" } + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true } } }, @@ -13750,7 +13385,7 @@ "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -13759,10 +13394,10 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -13778,13 +13413,19 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -13792,7 +13433,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -13880,7 +13521,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -13925,15 +13566,15 @@ } }, "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", "dev": true, "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.1", + "core-js": "2.5.3", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -14080,11 +13721,22 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "babel-runtime": { @@ -14093,8 +13745,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -14107,7 +13759,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -14123,8 +13775,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -14135,6 +13787,12 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -14146,7 +13804,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -14175,63 +13833,24 @@ "dev": true }, "boxen": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", - "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", - "widest-line": "1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } + "widest-line": "2.0.0" } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -14315,7 +13934,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -14328,10 +13947,9 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "camelcase-keys": { "version": "2.1.0", @@ -14341,6 +13959,14 @@ "requires": { "camelcase": "2.1.1", "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } } }, "capture-stack-trace": { @@ -14361,14 +13987,31 @@ } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.3.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } } }, "chokidar": { @@ -14389,9 +14032,9 @@ } }, "ci-info": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", - "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", "dev": true }, "clean-stack": { @@ -14435,39 +14078,6 @@ "requires": { "slice-ansi": "1.0.0", "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } } }, "cliui": { @@ -14478,6 +14088,18 @@ "string-width": "1.0.2", "strip-ansi": "3.0.1", "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "clone-response": { @@ -14496,29 +14118,12 @@ "dev": true, "requires": { "pinkie-promise": "1.0.0" - }, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "1.0.0" - } - } } }, "code-excerpt": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", - "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", "dev": true, "requires": { "convert-to-spaces": "1.0.2" @@ -14551,9 +14156,9 @@ "dev": true }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -14596,10 +14201,21 @@ "js-string-escape": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", - "semver": "5.4.1", + "semver": "5.5.0", "well-known-symbols": "1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } + } } }, "configstore": { @@ -14610,27 +14226,16 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - } } }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "convert-to-spaces": { @@ -14656,9 +14261,9 @@ } }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "core-util-is": { @@ -14681,7 +14286,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -14702,13 +14307,10 @@ } }, "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "1.0.0" - } + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true }, "debug": { "version": "3.1.0", @@ -14717,6 +14319,14 @@ "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "decamelize": { @@ -14767,9 +14377,18 @@ } }, "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } }, "duplexer3": { "version": "0.1.4", @@ -14784,7 +14403,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "equal-length": { @@ -14803,9 +14422,9 @@ } }, "es6-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", - "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "escape-string-regexp": { @@ -14838,7 +14457,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "estraverse": { @@ -14951,7 +14570,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -14985,14 +14604,14 @@ } }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "formatio": { @@ -15004,9 +14623,9 @@ } }, "formidable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", - "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz", + "integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==", "dev": true }, "from2": { @@ -15016,7 +14635,18 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, "fs.realpath": { @@ -15031,7 +14661,7 @@ "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "optional": true, "requires": { - "nan": "2.8.0", + "nan": "2.10.0", "node-pre-gyp": "0.6.39" }, "dependencies": { @@ -15881,7 +15511,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -15901,36 +15531,95 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + } + } + }, + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "mimic-response": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -15959,9 +15648,9 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "has-symbol-support-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz", - "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", "dev": true }, "has-to-string-tag-x": { @@ -15970,7 +15659,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "1.4.2" } }, "has-yarn": { @@ -15990,9 +15679,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "http-cache-semantics": { @@ -16008,30 +15697,19 @@ "dev": true, "requires": { "dot-prop": "4.2.0", - "es6-error": "4.0.2", + "es6-error": "4.1.1", "graceful-fs": "4.1.11", "indent-string": "3.2.0", "json5": "0.5.1", "lodash.clonedeep": "4.5.0", "lodash.clonedeepwith": "4.5.0", "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", "safe-buffer": "5.1.1" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - } } }, "ignore-by-default": { @@ -16085,9 +15763,9 @@ "dev": true }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "into-stream": { @@ -16101,9 +15779,9 @@ } }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -16151,12 +15829,12 @@ } }, "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.2" + "ci-info": "1.1.3" } }, "is-dotfile": { @@ -16231,7 +15909,7 @@ "dev": true, "requires": { "global-dirs": "0.1.1", - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -16262,18 +15940,18 @@ "dev": true }, "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "1.2.0" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -16333,10 +16011,9 @@ "dev": true }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -16350,6 +16027,14 @@ "dev": true, "requires": { "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "isurl": { @@ -16375,12 +16060,12 @@ "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "4.0.0" } }, @@ -16396,6 +16081,12 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -16489,9 +16180,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "lodash.clonedeep": { @@ -16542,15 +16233,15 @@ "dev": true }, "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", "dev": true }, "lolex": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.0.tgz", - "integrity": "sha512-rPO6R1t8PjYL6xbsFUg7aByKkWAql907na6powPBORVs4DCm8aMBUkL4+6CXO0gEIV8vtu3mWV0FB8ZaCYPBmA==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==" }, "longest": { "version": "1.0.1", @@ -16584,18 +16275,18 @@ "dev": true }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { "pify": "3.0.0" @@ -16616,9 +16307,9 @@ "dev": true }, "matcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", - "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", + "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", "dev": true, "requires": { "escape-string-regexp": "1.0.5" @@ -16644,7 +16335,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "meow": { @@ -16714,6 +16405,21 @@ "pinkie-promise": "2.0.1" } }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -16780,30 +16486,30 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "mimic-response": { "version": "1.0.0", @@ -16817,7 +16523,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -16842,9 +16548,9 @@ "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "multimatch": { @@ -16860,28 +16566,21 @@ } }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "optional": true }, "nise": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", - "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", + "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", "requires": { - "formatio": "1.2.0", + "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "1.6.0", + "lolex": "2.3.2", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" - }, - "dependencies": { - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=" - } } }, "normalize-package-data": { @@ -16890,10 +16589,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -16938,44 +16637,43 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.3.0.tgz", - "integrity": "sha512-oUu0WHt1k/JMIODvAYXX6C50Mupw2GO34P/Jdg2ty9xrLufBthHiKR2gf08aF+9S0abW1fl24R7iKRBXzibZmg==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", + "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", "dev": true, "requires": { "archy": "1.0.0", "arrify": "1.0.1", "caching-transform": "1.0.1", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug-log": "1.0.1", "default-require-extensions": "1.0.0", "find-cache-dir": "0.1.1", "find-up": "2.1.0", "foreground-child": "1.5.6", "glob": "7.1.2", - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.2.0", "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.3", + "istanbul-reports": "1.3.0", "md5-hex": "1.3.0", - "merge-source-map": "1.0.4", + "merge-source-map": "1.1.0", "micromatch": "2.3.11", "mkdirp": "0.5.1", "resolve-from": "2.0.0", "rimraf": "2.6.2", "signal-exit": "3.0.2", - "spawn-wrap": "1.3.8", - "test-exclude": "4.1.1", - "yargs": "10.0.3", - "yargs-parser": "8.0.0" + "spawn-wrap": "1.4.2", + "test-exclude": "4.2.1", + "yargs": "11.1.0", + "yargs-parser": "8.1.0" }, "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -16985,26 +16683,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -17012,14 +16706,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -17027,32 +16719,42 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, + "dev": true + }, + "atob": { + "version": "2.0.3", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -17061,9 +16763,8 @@ } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -17071,15 +16772,14 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" } }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -17087,31 +16787,28 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -17121,38 +16818,63 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.3", + "lodash": "4.17.5" } }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, + "base": { + "version": "0.11.2", + "bundled": true, + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -17161,8 +16883,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -17172,14 +16893,35 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -17189,15 +16931,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -17207,8 +16947,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -17218,22 +16957,97 @@ "supports-color": "2.0.0" } }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "class-utils": { + "version": "0.3.6", + "bundled": true, "dev": true, - "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, "dev": true, "optional": true } @@ -17241,48 +17055,60 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true, "dev": true }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "which": "1.3.0" } }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17290,29 +17116,46 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" } }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -17320,8 +17163,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -17329,20 +17171,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -17356,11 +17195,10 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -17369,8 +17207,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -17378,17 +17215,34 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" } }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17396,14 +17250,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -17415,8 +17267,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -17426,8 +17277,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -17435,14 +17285,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -17450,36 +17298,44 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", "signal-exit": "3.0.2" } }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, + "dev": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -17492,8 +17348,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -17502,8 +17357,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -17511,20 +17365,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -17535,8 +17386,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -17546,8 +17396,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -17555,26 +17404,76 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -17583,14 +17482,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.3", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -17598,41 +17495,82 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "version": "1.1.6", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -17640,38 +17578,30 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "version": "2.0.0", + "bundled": true, + "dev": true }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17679,95 +17609,118 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" } }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" } }, "istanbul-lib-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "version": "1.2.0", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "version": "1.10.1", + "bundled": true, "dev": true, "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" } }, "istanbul-lib-report": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "version": "1.1.3", + "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.2.0", "mkdirp": "0.5.1", "path-parse": "1.0.5", "supports-color": "3.2.3" @@ -17775,8 +17728,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -17785,13 +17737,12 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "version": "1.2.3", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-coverage": "1.2.0", "mkdirp": "0.5.1", "rimraf": "2.6.2", "source-map": "0.5.7" @@ -17799,8 +17750,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17809,9 +17759,8 @@ } }, "istanbul-reports": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "version": "1.3.0", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -17819,36 +17768,31 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -17856,8 +17800,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -17869,8 +17812,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -17879,47 +17821,54 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" } }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.2", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, + "map-cache": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -17927,32 +17876,35 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "version": "1.1.0", + "bundled": true, "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } } }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -17971,30 +17923,45 @@ } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "version": "1.2.0", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -18002,26 +17969,59 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -18029,8 +18029,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -18038,30 +18037,109 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, - "object.omit": { + "object-copy": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -18069,8 +18147,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -18079,14 +18156,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -18096,29 +18171,33 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -18129,17 +18208,20 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" } }, + "pascalcase": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -18147,26 +18229,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18176,20 +18254,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -18197,8 +18272,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -18206,8 +18280,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18216,22 +18289,24 @@ } } }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -18240,8 +18315,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -18249,30 +18323,27 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -18282,8 +18353,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -18292,8 +18362,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18303,42 +18372,45 @@ } }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -18346,26 +18418,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -18374,29 +18452,54 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" } }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -18404,155 +18507,624 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "spawn-wrap": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.3.8.tgz", - "integrity": "sha512-Yfkd7Yiwz4RcBPrDWzvhnTzQINBHNqOEhUzOdWZ67Y9b4wzs3Gz6ymuptQmRBpzlpOzroM7jwzmBdRec7JJ0UA==", - "dev": true, - "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "snapdragon": { + "version": "0.8.2", + "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.9", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "braces": { + "version": "2.3.1", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "micromatch": { + "version": "3.1.9", + "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "kind-of": "3.2.2" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "to-regex": { + "version": "3.0.2", + "bundled": true, "dev": true, "requires": { - "is-utf8": "0.2.1" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "test-exclude": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "to-regex-range": { + "version": "2.1.1", + "bundled": true, "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } } }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -18563,8 +19135,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -18578,25 +19149,115 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "bundled": true, "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -18604,37 +19265,40 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" }, "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -18646,14 +19310,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "version": "1.3.4", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18663,23 +19325,20 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "version": "11.1.0", + "bundled": true, "dev": true, "requires": { - "cliui": "3.2.0", + "cliui": "4.0.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -18690,39 +19349,50 @@ "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "8.0.0" + "yargs-parser": "9.0.2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.0.0", + "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" } } } }, "yargs-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "version": "8.1.0", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -18730,8 +19400,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -18761,14 +19430,25 @@ "dev": true, "requires": { "is-observable": "0.2.0", - "symbol-observable": "1.0.4" + "symbol-observable": "1.2.0" }, "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } } } }, @@ -18787,7 +19467,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "optimist": { @@ -18812,6 +19492,16 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -18836,18 +19526,35 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "package-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", @@ -18867,9 +19574,9 @@ "dev": true, "requires": { "got": "6.7.1", - "registry-auth-token": "3.3.1", + "registry-auth-token": "3.3.2", "registry-url": "3.1.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "got": { @@ -18915,9 +19622,9 @@ } }, "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, "path-exists": { @@ -18948,13 +19655,6 @@ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "requires": { "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } } }, "path-type": { @@ -18973,28 +19673,58 @@ "dev": true }, "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", "dev": true }, "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "1.0.0" } }, "pkg-conf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", - "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { "find-up": "2.1.0", - "load-json-file": "2.0.0" + "load-json-file": "4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pkg-dir": { @@ -19035,6 +19765,14 @@ "requires": { "parse-ms": "1.0.1", "plur": "2.1.2" + }, + "dependencies": { + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + } } }, "private": { @@ -19044,9 +19782,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "proxyquire": { @@ -19124,13 +19862,13 @@ } }, "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -19165,18 +19903,26 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "readdirp": { @@ -19187,7 +19933,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, @@ -19219,9 +19965,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { @@ -19245,12 +19991,12 @@ } }, "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.2", + "rc": "1.2.6", "safe-buffer": "5.1.1" } }, @@ -19260,7 +20006,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.2" + "rc": "1.2.6" } }, "regjsgen": { @@ -19284,7 +20030,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.0.2" + "es6-error": "4.1.1" } }, "remove-trailing-separator": { @@ -19392,9 +20138,9 @@ "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==" }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "semver-diff": { @@ -19403,7 +20149,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, "serialize-error": { @@ -19446,13 +20192,13 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==", "requires": { - "diff": "3.4.0", + "diff": "3.5.0", "formatio": "1.2.0", "lodash.get": "4.4.2", - "lolex": "2.3.0", - "nise": "1.2.0", + "lolex": "2.3.2", + "nise": "1.3.2", "supports-color": "4.5.0", - "type-detect": "4.0.5" + "type-detect": "4.0.8" } }, "slash": { @@ -19500,33 +20246,52 @@ "dev": true }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "sprintf-js": { @@ -19554,13 +20319,32 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } } }, "string_decoder": { @@ -19616,21 +20400,21 @@ "dev": true }, "superagent": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz", - "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "1.2.1", "cookiejar": "2.1.1", "debug": "3.1.0", "extend": "3.0.1", - "form-data": "2.3.1", - "formidable": "1.1.1", + "form-data": "2.3.2", + "formidable": "1.2.0", "methods": "1.1.2", - "mime": "1.4.1", + "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "supertap": { @@ -19641,7 +20425,7 @@ "requires": { "arrify": "1.0.1", "indent-string": "3.2.0", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "serialize-error": "2.1.0", "strip-ansi": "4.0.0" }, @@ -19670,7 +20454,7 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.1" + "superagent": "3.8.2" } }, "supports-color": { @@ -19682,9 +20466,9 @@ } }, "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "term-size": { @@ -19713,7 +20497,7 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, @@ -19746,18 +20530,6 @@ "strip-ansi": "0.1.1" } }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, "pretty-ms": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", @@ -19812,9 +20584,9 @@ "dev": true }, "type-detect": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", - "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "uglify-js": { "version": "2.8.29", @@ -19847,13 +20619,6 @@ "wordwrap": "0.0.2" } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -19927,8 +20692,8 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.2.2", - "chalk": "2.3.0", + "boxen": "1.3.0", + "chalk": "2.3.2", "configstore": "3.1.1", "import-lazy": "2.1.0", "is-installed-globally": "0.1.0", @@ -19960,13 +20725,13 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "well-known-symbols": { @@ -19989,14 +20754,21 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "2.1.1" } }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -20010,6 +20782,18 @@ "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, "wrappy": { @@ -20037,7 +20821,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" @@ -20105,61 +20889,15 @@ "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "8.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } + "yargs-parser": "8.1.0" } }, "yargs-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "requires": { "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } } } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 4276f6fd906..51080846e75 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.3.5", + "@google-cloud/datastore": "1.4.0", "sinon": "4.1.2", "yargs": "10.0.3" }, From eacafe055d633ed1ea193cfd5ed9c03343614a8e Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Mon, 19 Mar 2018 18:29:41 -0700 Subject: [PATCH 180/820] chore: setup nighty build in CircleCI (#73) * chore: setup nighty build in CircleCI * chore: setup nighty build in CircleCI --- .../nodejs-datastore/.circleci/config.yml | 48 +++++++------ .../.circleci/get_workflow_name.py | 67 +++++++++++++++++++ 2 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 handwritten/nodejs-datastore/.circleci/get_workflow_name.py diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 94503a3f8fb..903c48d2fcf 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -1,21 +1,8 @@ -unit_tests: - steps: &unit_tests - - checkout - - run: - name: Install modules and dependencies. - command: npm install - - run: - name: Run unit tests. - command: npm test - - run: - name: Submit coverage data to codecov. - command: node_modules/.bin/codecov - when: always version: 2 workflows: version: 2 tests: - jobs: + jobs: &workflow_jobs - node4: filters: tags: @@ -77,16 +64,35 @@ workflows: ignore: /.*/ tags: only: '/^v[\d.]+$/' + nightly: + triggers: + - schedule: + cron: 0 7 * * * + filters: + branches: + only: master + jobs: *workflow_jobs jobs: node4: docker: - image: 'node:4' user: node - steps: + steps: &unit_tests_steps - checkout + - run: &remove_package_lock + name: Remove package-lock.json if needed. + command: | + WORKFLOW_NAME=`python .circleci/get_workflow_name.py` + echo "Workflow name: $WORKFLOW_NAME" + if [ "$WORKFLOW_NAME" = "nightly" ]; then + echo "Nightly build detected, removing package-lock.json." + rm -f package-lock.json samples/package-lock.json + else + echo "Not a nightly build, skipping this step." + fi - run: name: Install modules and dependencies. - command: npm install --unsafe-perm + command: npm install - run: name: Run unit tests. command: npm test @@ -98,23 +104,24 @@ jobs: docker: - image: 'node:6' user: node - steps: *unit_tests + steps: *unit_tests_steps node8: docker: - image: 'node:8' user: node - steps: *unit_tests + steps: *unit_tests_steps node9: docker: - image: 'node:9' user: node - steps: *unit_tests + steps: *unit_tests_steps lint: docker: - image: 'node:8' user: node steps: - checkout + - run: *remove_package_lock - run: name: Install modules and dependencies. command: | @@ -143,6 +150,7 @@ jobs: user: node steps: - checkout + - run: *remove_package_lock - run: name: Install modules and dependencies. command: npm install @@ -155,6 +163,7 @@ jobs: user: node steps: - checkout + - run: *remove_package_lock - run: name: Decrypt credentials. command: | @@ -196,6 +205,7 @@ jobs: user: node steps: - checkout + - run: *remove_package_lock - run: name: Decrypt credentials. command: | diff --git a/handwritten/nodejs-datastore/.circleci/get_workflow_name.py b/handwritten/nodejs-datastore/.circleci/get_workflow_name.py new file mode 100644 index 00000000000..ff6b58fd24f --- /dev/null +++ b/handwritten/nodejs-datastore/.circleci/get_workflow_name.py @@ -0,0 +1,67 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Get workflow name for the current build using CircleCI API. +Would be great if this information is available in one of +CircleCI environment variables, but it's not there. +https://circleci.ideas.aha.io/ideas/CCI-I-295 +""" + +import json +import os +import sys +import urllib2 + + +def main(): + try: + username = os.environ['CIRCLE_PROJECT_USERNAME'] + reponame = os.environ['CIRCLE_PROJECT_REPONAME'] + build_num = os.environ['CIRCLE_BUILD_NUM'] + except: + sys.stderr.write( + 'Looks like we are not inside CircleCI container. Exiting...\n') + return 1 + + try: + request = urllib2.Request( + "https://circleci.com/api/v1.1/project/github/%s/%s/%s" % + (username, reponame, build_num), + headers={"Accept": "application/json"}) + contents = urllib2.urlopen(request).read() + except: + sys.stderr.write('Cannot query CircleCI API. Exiting...\n') + return 1 + + try: + build_info = json.loads(contents) + except: + sys.stderr.write( + 'Cannot parse JSON received from CircleCI API. Exiting...\n') + return 1 + + try: + workflow_name = build_info['workflows']['workflow_name'] + except: + sys.stderr.write( + 'Cannot get workflow name from CircleCI build info. Exiting...\n') + return 1 + + print workflow_name + return 0 + + +retval = main() +exit(retval) From 47108d3d9eb9b8fc7eb3191ee298fec5751ca9d8 Mon Sep 17 00:00:00 2001 From: Ace Nassri Date: Thu, 22 Mar 2018 16:01:05 -0700 Subject: [PATCH 181/820] Fix typo (#76) --- handwritten/nodejs-datastore/src/query.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index 6f91c7da426..61de4b3c605 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -27,7 +27,7 @@ var arrify = require('arrify'); * @see [Datastore Queries]{@link http://goo.gl/Cag0r6} * * @class - * @param {Datastore|Rransaction} scope The parent scope the query was created + * @param {Datastore|Transaction} scope The parent scope the query was created * from. * @param {string} [namespace] Namespace to query entities from. * @param {string} kind Kind to query. From 32665af9a129710ada599d1141d32e82811e0a70 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 27 Mar 2018 18:08:54 -0700 Subject: [PATCH 182/820] chore: workaround for repo-tools EPERM (#78) --- .../nodejs-datastore/.circleci/config.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 903c48d2fcf..c3146894db2 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -92,7 +92,12 @@ jobs: fi - run: name: Install modules and dependencies. - command: npm install + command: |- + npm install + repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" + if ! test -x "$repo_tools"; then + chmod +x "$repo_tools" + fi - run: name: Run unit tests. command: npm test @@ -127,6 +132,10 @@ jobs: command: | mkdir -p /home/node/.npm-global npm install + repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" + if ! test -x "$repo_tools"; then + chmod +x "$repo_tools" + fi npm link environment: NPM_CONFIG_PREFIX: /home/node/.npm-global @@ -153,7 +162,12 @@ jobs: - run: *remove_package_lock - run: name: Install modules and dependencies. - command: npm install + command: |- + npm install + repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" + if ! test -x "$repo_tools"; then + chmod +x "$repo_tools" + fi - run: name: Build documentation. command: npm run docs From f3c21406816cde34a1ab2195d119a98f5ebf9bae Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 28 Mar 2018 18:41:50 -0700 Subject: [PATCH 183/820] chore: one more workaround for repo-tools EPERM (#80) --- handwritten/nodejs-datastore/.circleci/config.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index c3146894db2..b0c187df296 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -189,6 +189,10 @@ jobs: command: | mkdir -p /home/node/.npm-global npm install + repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" + if ! test -x "$repo_tools"; then + chmod +x "$repo_tools" + fi npm link environment: NPM_CONFIG_PREFIX: /home/node/.npm-global @@ -228,7 +232,12 @@ jobs: -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" - run: name: Install modules and dependencies. - command: npm install + command: |- + npm install + repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" + if ! test -x "$repo_tools"; then + chmod +x "$repo_tools" + fi - run: name: Run system tests. command: npm run system-test From 9528e8758c0c17a053637590aca8ad082b068f7b Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 13 Apr 2018 13:38:34 -0400 Subject: [PATCH 184/820] =?UTF-8?q?Update=20split-array-stream=20to=20the?= =?UTF-8?q?=20latest=20version=20=F0=9F=9A=80=20(#81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nodejs-datastore/package-lock.json | 1079 ++++++++--------- handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 957 +++++++-------- handwritten/nodejs-datastore/src/request.js | 6 +- 4 files changed, 956 insertions(+), 1088 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 86c4808e8da..db61d58b56d 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -87,7 +87,7 @@ "requires": { "array-uniq": "1.0.3", "arrify": "1.0.1", - "concat-stream": "1.6.1", + "concat-stream": "1.6.2", "create-error-class": "3.0.2", "duplexify": "3.5.4", "ent": "2.2.0", @@ -100,15 +100,26 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.2", + "stream-events": "1.0.3", "string-format-obj": "1.1.1", "through2": "2.0.3" + }, + "dependencies": { + "split-array-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", + "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "requires": { + "async": "2.6.0", + "is-stream-ended": "0.1.4" + } + } } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.4.tgz", - "integrity": "sha512-yHxW7JvhnqgoIftv6dAn1r/9AEcPuumD0xXggdYHmDeyf38OMYyjTk92gP9vflTOee1JhM0vOarwGrlKYUbmnQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", + "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", "dev": true, "requires": { "ava": "0.25.0", @@ -119,6 +130,7 @@ "lodash": "4.17.5", "nyc": "11.4.1", "proxyquire": "1.8.0", + "semver": "5.5.0", "sinon": "4.3.0", "string": "3.3.3", "supertest": "3.0.0", @@ -1951,9 +1963,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "8.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", - "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==" + "version": "8.10.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.8.tgz", + "integrity": "sha512-BvcUxNZe9JgiiUVivtiQt3NrPVu9OAQzkxR1Ko9ESftCYU7V6Np5kpDzQwxd+34lsop7SNRdL292Flv52OvCaw==" }, "acorn": { "version": "4.0.13", @@ -2070,9 +2082,9 @@ } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -2316,9 +2328,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" }, "auto-bind": { "version": "1.2.0", @@ -2337,7 +2349,7 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", @@ -2355,7 +2367,7 @@ "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", + "cli-spinners": "1.3.1", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.1", @@ -2414,7 +2426,7 @@ "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-regex": { @@ -2487,9 +2499,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "axios": { "version": "0.18.0", @@ -2728,7 +2740,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.3", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2875,7 +2887,7 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -2899,7 +2911,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -2988,6 +3000,32 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -3089,17 +3127,15 @@ } }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -3107,14 +3143,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -3142,6 +3170,11 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -3192,6 +3225,14 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } } }, "caching-transform": { @@ -3233,7 +3274,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3399,57 +3440,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -3481,9 +3471,9 @@ } }, "cli-spinners": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", - "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", "dev": true }, "cli-truncate": { @@ -3708,7 +3698,7 @@ "dev": true, "requires": { "aws-sign2": "0.6.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -3814,12 +3804,13 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { + "buffer-from": "1.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "typedarray": "0.0.6" } }, @@ -3854,9 +3845,9 @@ } }, "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { "dot-prop": "4.2.0", @@ -3901,9 +3892,9 @@ } }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" }, "core-util-is": { "version": "1.0.2", @@ -3968,7 +3959,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "dashdash": { @@ -4055,6 +4046,34 @@ "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } } }, "del": { @@ -4065,7 +4084,7 @@ "requires": { "globby": "5.0.0", "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", @@ -4217,7 +4236,7 @@ "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "stream-shift": "1.0.0" } }, @@ -4249,14 +4268,14 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "empower-core": "0.6.2" } }, "empower-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/empower-assert/-/empower-assert-1.0.1.tgz", - "integrity": "sha1-MeMQq8BluqfDoEh+a+W7zGXzwd4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/empower-assert/-/empower-assert-1.1.0.tgz", + "integrity": "sha512-Ylck0Q6p8y/LpNzYeBccaxAPm2ZyuqBgErgZpO9KT0HuQWF0sJckBKCLmgS1/DEXEiyBi9XtYh3clZm5cAdARw==", "dev": true, "requires": { "estraverse": "4.2.0" @@ -4268,7 +4287,7 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "end-of-stream": { @@ -4306,9 +4325,9 @@ } }, "es5-ext": { - "version": "0.10.41", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.41.tgz", - "integrity": "sha512-MYK02wXfwTMie5TEJWPolgOsXEmz7wKCQaGzgmRjZOoV6VLG8I5dSv2bn6AOClXhK64gnSQTQ9W9MKvx87J4gw==", + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", "dev": true, "requires": { "es6-iterator": "2.0.3", @@ -4329,7 +4348,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-symbol": "3.1.1" } }, @@ -4340,7 +4359,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -4354,7 +4373,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -4367,7 +4386,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "es6-weak-map": { @@ -4377,7 +4396,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -4447,27 +4466,27 @@ } }, "eslint": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.0.tgz", - "integrity": "sha512-r83L5CuqaocDvfwdojbz68b6tCUk8KJkqfppO+gmSAQqYCzTr0bCSMu6A6yFCLKG65j5eKcKUw4Cw4Yl4gfWkg==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", "chalk": "2.3.2", - "concat-stream": "1.6.1", + "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", "espree": "3.5.4", - "esquery": "1.0.0", + "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.3.0", + "globals": "11.4.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", @@ -4483,7 +4502,7 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", - "regexpp": "1.0.1", + "regexpp": "1.1.0", "require-uncached": "1.0.3", "semver": "5.5.0", "strip-ansi": "4.0.0", @@ -4499,9 +4518,9 @@ "dev": true }, "globals": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", - "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", "dev": true }, "strip-ansi": { @@ -4540,14 +4559,14 @@ "requires": { "ignore": "3.3.7", "minimatch": "3.0.4", - "resolve": "1.5.0", + "resolve": "1.7.1", "semver": "5.5.0" }, "dependencies": { "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -4629,7 +4648,7 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.2", + "is-url": "1.2.4", "path-is-absolute": "1.0.1", "source-map": "0.5.7", "xtend": "4.0.1" @@ -4644,7 +4663,7 @@ "acorn": "5.5.3", "acorn-es7-plugin": "1.1.7", "convert-source-map": "1.5.1", - "empower-assert": "1.0.1", + "empower-assert": "1.1.0", "escodegen": "1.9.1", "espower": "2.1.0", "estraverse": "4.2.0", @@ -4691,13 +4710,13 @@ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "requires": { - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "4.2.0" @@ -4730,7 +4749,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "execa": { @@ -4785,57 +4804,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -4915,13 +4883,13 @@ } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.21", "tmp": "0.0.33" } }, @@ -4955,6 +4923,32 @@ "requires": { "is-extendable": "0.1.1" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -4983,7 +4977,7 @@ "glob-parent": "3.1.0", "is-glob": "4.0.0", "merge2": "1.2.1", - "micromatch": "3.1.9" + "micromatch": "3.1.10" } }, "fast-json-stable-stringify": { @@ -5134,9 +5128,9 @@ } }, "formidable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz", - "integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", "dev": true }, "fragment-cache": { @@ -5154,7 +5148,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "fs-extra": { @@ -6239,13 +6233,13 @@ } }, "google-auth-library": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.3.2.tgz", - "integrity": "sha512-aRz0om4Bs85uyR2Ousk3Gb8Nffx2Sr2RoKts1smg1MhRwrehE1aD1HC4RmprNt1HVJ88IDnQ8biJQ/aXjiIxlQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.4.0.tgz", + "integrity": "sha512-vWRx6pJulK7Y5V/Xyr7MPMlx2mWfmrUVbcffZ7hpq8ElFg5S8WY6PvjMovdcr6JfuAwwpAX4R0I1XOcyWuBcUw==", "requires": { "axios": "0.18.0", "gcp-metadata": "0.6.3", - "gtoken": "2.2.0", + "gtoken": "2.3.0", "jws": "3.1.4", "lodash.isstring": "4.0.1", "lru-cache": "4.1.2", @@ -6259,25 +6253,38 @@ "requires": { "async": "2.6.0", "gcp-metadata": "0.6.3", - "google-auth-library": "1.3.2", + "google-auth-library": "1.4.0", "request": "2.85.0" } }, "google-gax": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.0.tgz", - "integrity": "sha512-sslPB7USGD8SrVUGlWFIGYVZrgZ6oj+fWUEW3f8Bk43+nxqeLyrNoI3iFBRpjLfwMCEYaXVziWNmatwLRP8azg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", + "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.9.7", + "google-auto-auth": "0.10.0", "google-proto-files": "0.15.1", - "grpc": "1.9.1", - "is-stream-ended": "0.1.3", + "grpc": "1.10.1", + "is-stream-ended": "0.1.4", "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.0.tgz", + "integrity": "sha512-R6m473OqgZacPvlidJ0aownTlUWyLy654ugjKSXyi1ffIicXlXg3wMfse9T9zxqG6w01q6K1iG+b7dImMkVJ2Q==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + } } }, "google-p12-pem": { @@ -6285,7 +6292,7 @@ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", "requires": { - "node-forge": "0.7.4", + "node-forge": "0.7.5", "pify": "3.0.0" } }, @@ -6295,7 +6302,7 @@ "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", "requires": { "globby": "7.1.1", - "power-assert": "1.4.4", + "power-assert": "1.5.0", "protobufjs": "6.8.6" }, "dependencies": { @@ -6328,7 +6335,7 @@ "into-stream": "3.1.0", "is-retry-allowed": "1.1.0", "isurl": "1.0.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "mimic-response": "1.0.0", "p-cancelable": "0.3.0", "p-timeout": "2.0.1", @@ -6369,13 +6376,13 @@ "dev": true }, "grpc": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.9.1.tgz", - "integrity": "sha512-WNW3MWMuAoo63AwIlzFE3T0KzzvNBSvOkg67Hm8WhvHNkXFBlIk1QyJRE3Ocm0O5eIwS7JU8Ssota53QR1zllg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.10.1.tgz", + "integrity": "sha512-xmhA11h2XhqpSVzDAmoQAYdNQ+swILXpKOiRpAEQ2kX55ioxVADc6v7SkS4zQBxm4klhQHgGqpGKvoL6LGx4VQ==", "requires": { "lodash": "4.17.5", "nan": "2.10.0", - "node-pre-gyp": "0.6.39", + "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" }, "dependencies": { @@ -6384,11 +6391,13 @@ "bundled": true }, "ajv": { - "version": "4.11.8", + "version": "5.5.2", "bundled": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ansi-regex": { @@ -6404,7 +6413,7 @@ "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "asn1": { @@ -6412,7 +6421,7 @@ "bundled": true }, "assert-plus": { - "version": "0.2.0", + "version": "1.0.0", "bundled": true }, "asynckit": { @@ -6420,7 +6429,7 @@ "bundled": true }, "aws-sign2": { - "version": "0.6.0", + "version": "0.7.0", "bundled": true }, "aws4": { @@ -6447,10 +6456,10 @@ } }, "boom": { - "version": "2.10.1", + "version": "4.3.1", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "brace-expansion": { @@ -6474,7 +6483,7 @@ "bundled": true }, "combined-stream": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "requires": { "delayed-stream": "1.0.0" @@ -6493,10 +6502,19 @@ "bundled": true }, "cryptiles": { - "version": "2.0.5", + "version": "3.1.2", "bundled": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + } } }, "dashdash": { @@ -6504,12 +6522,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "debug": { @@ -6551,17 +6563,25 @@ "version": "1.3.0", "bundled": true }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, "forever-agent": { "version": "0.6.1", "bundled": true }, "form-data": { - "version": "2.1.4", + "version": "2.3.2", "bundled": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "fs.realpath": { @@ -6606,12 +6626,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "glob": { @@ -6631,15 +6645,15 @@ "bundled": true }, "har-schema": { - "version": "1.0.5", + "version": "2.0.0", "bundled": true }, "har-validator": { - "version": "4.2.1", + "version": "5.0.3", "bundled": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has-unicode": { @@ -6647,26 +6661,26 @@ "bundled": true }, "hawk": { - "version": "3.1.3", + "version": "6.0.2", "bundled": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" } }, "hoek": { - "version": "2.16.3", + "version": "4.2.1", "bundled": true }, "http-signature": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "inflight": { @@ -6713,46 +6727,33 @@ "version": "0.2.3", "bundled": true }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true }, "json-stringify-safe": { "version": "5.0.1", "bundled": true }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, "jsprim": { "version": "1.4.1", "bundled": true, "requires": { "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, "mime-db": { - "version": "1.30.0", + "version": "1.33.0", "bundled": true }, "mime-types": { - "version": "2.1.17", + "version": "2.1.18", "bundled": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "minimatch": { @@ -6763,7 +6764,7 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.0", "bundled": true }, "mkdirp": { @@ -6771,6 +6772,12 @@ "bundled": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } } }, "ms": { @@ -6778,16 +6785,15 @@ "bundled": true }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.7.0", "bundled": true, "requires": { "detect-libc": "1.0.3", - "hawk": "3.1.3", "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.2", - "rc": "1.2.4", - "request": "2.81.0", + "rc": "1.2.6", + "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.5.0", "tar": "2.2.1", @@ -6799,7 +6805,7 @@ "bundled": true, "requires": { "abbrev": "1.1.1", - "osenv": "0.1.4" + "osenv": "0.1.5" } }, "npmlog": { @@ -6840,7 +6846,7 @@ "bundled": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "requires": { "os-homedir": "1.0.2", @@ -6852,11 +6858,11 @@ "bundled": true }, "performance-now": { - "version": "0.2.0", + "version": "2.1.0", "bundled": true }, "process-nextick-args": { - "version": "1.0.7", + "version": "2.0.0", "bundled": true }, "protobufjs": { @@ -6875,62 +6881,56 @@ "bundled": true }, "qs": { - "version": "6.4.0", + "version": "6.5.1", "bundled": true }, "rc": { - "version": "1.2.4", + "version": "1.2.6", "bundled": true, "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } } }, "readable-stream": { - "version": "2.3.3", + "version": "2.3.5", "bundled": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, "request": { - "version": "2.81.0", + "version": "2.83.0", "bundled": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -6959,14 +6959,14 @@ "bundled": true }, "sntp": { - "version": "1.0.9", + "version": "2.1.0", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "sshpk": { - "version": "1.13.1", + "version": "1.14.1", "bundled": true, "requires": { "asn1": "0.2.3", @@ -6977,12 +6977,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "string-width": { @@ -7033,14 +7027,14 @@ "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" } }, "tough-cookie": { - "version": "2.3.3", + "version": "2.3.4", "bundled": true, "requires": { "punycode": "1.4.1" @@ -7077,12 +7071,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "wide-align": { @@ -7099,14 +7087,14 @@ } }, "gtoken": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.2.0.tgz", - "integrity": "sha512-tvQs8B1z5+I1FzMPZnq/OCuxTWFOkvy7cUJcpNdBOK2L7yEtPZTVCPtZU181sSDF+isUPebSqFTNTkIejFASAQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", + "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", "requires": { "axios": "0.18.0", "google-p12-pem": "1.0.2", "jws": "3.1.4", - "mime": "2.2.0", + "mime": "2.3.1", "pify": "3.0.0" } }, @@ -7273,7 +7261,7 @@ "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "http-cache-semantics": { @@ -7315,10 +7303,13 @@ } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } }, "ignore": { "version": "3.3.7", @@ -7390,7 +7381,7 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.21.0", + "moment": "2.22.0", "sanitize-html": "1.18.2" } }, @@ -7400,11 +7391,11 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", "lodash": "4.17.5", "mute-stream": "0.0.7", @@ -7494,11 +7485,21 @@ "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-arrayish": { @@ -7540,21 +7541,38 @@ } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } } }, "is-dotfile": { @@ -7696,9 +7714,9 @@ "dev": true }, "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { "is-path-inside": "1.0.1" @@ -7770,9 +7788,9 @@ "dev": true }, "is-stream-ended": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.3.tgz", - "integrity": "sha1-oEc7Jnx1ZjVIa+7cfjNE5UnRUqw=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, "is-typedarray": { "version": "1.0.0", @@ -7780,9 +7798,9 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, "is-utf8": { @@ -7882,7 +7900,7 @@ "escape-string-regexp": "1.0.5", "js2xmlparser": "3.0.0", "klaw": "2.0.0", - "marked": "0.3.17", + "marked": "0.3.19", "mkdirp": "0.5.1", "requizzle": "0.2.1", "strip-json-comments": "2.0.1", @@ -7911,9 +7929,9 @@ "dev": true }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema": { @@ -8223,9 +8241,9 @@ } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { @@ -8266,9 +8284,9 @@ } }, "marked": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", - "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", "dev": true }, "matcher": { @@ -8456,13 +8474,13 @@ "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -8476,9 +8494,9 @@ } }, "mime": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", - "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, "mime-db": { "version": "1.33.0", @@ -8548,9 +8566,9 @@ } }, "mocha": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.4.tgz", - "integrity": "sha512-nMOpAPFosU1B4Ix1jdhx5e3q7XO55ic5a8cgYvW27CequcEY+BabS0kUVL1Cw1V5PuVHZWeNRWFLmEPexo79VA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.0.tgz", + "integrity": "sha512-d6RWgYPILd+AoWVOxiD0UwUqRicnE1inTxMr40CXOgqYve1MvnKntoLAtLIcxjEeVjEoYYTe5QAq3mUc6/ySjQ==", "dev": true, "requires": { "browser-stdout": "1.3.1", @@ -8561,6 +8579,7 @@ "glob": "7.1.2", "growl": "1.10.3", "he": "1.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "4.4.0" }, @@ -8588,9 +8607,9 @@ "dev": true }, "moment": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", - "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==", "dev": true }, "ms": { @@ -8686,9 +8705,9 @@ } }, "node-forge": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", - "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" }, "normalize-package-data": { "version": "2.4.0", @@ -11544,39 +11563,6 @@ "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -11814,7 +11800,7 @@ "is-redirect": "1.0.0", "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", @@ -11985,7 +11971,7 @@ "dev": true, "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } } } @@ -12020,9 +12006,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.20.tgz", - "integrity": "sha512-Opr6usW30Iy0xEDrJywDckRxtylfO7gTGs3Kfb2LdLQlGsUg89fTy0R3Vm1Dub2YHO7MK58avr0p70+uFFHb7A==", + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", "dev": true, "requires": { "chalk": "2.3.2", @@ -12039,9 +12025,9 @@ } }, "power-assert": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.4.4.tgz", - "integrity": "sha1-kpXqdDcZb1pgH95CDwQmMRhtdRc=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz", + "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==", "requires": { "define-properties": "1.1.2", "empower": "1.2.3", @@ -12055,7 +12041,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-context-traversal": "1.1.1" } }, @@ -12066,7 +12052,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.3", + "core-js": "2.5.5", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -12076,7 +12062,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "estraverse": "4.2.0" } }, @@ -12085,7 +12071,7 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -12113,7 +12099,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -12125,7 +12111,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -12166,9 +12152,9 @@ "dev": true }, "prettier": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.0.tgz", + "integrity": "sha512-Wz0SMncgaglBzDcohH3ZIAi4nVpzOIEweFzCOmgVEoRSeO72b4dcKGfgxoRGVMaFlh1r7dlVaJ+f3CIHfeH6xg==", "dev": true }, "pretty-ms": { @@ -12232,19 +12218,30 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.9.5", + "@types/node": "8.10.8", "long": "4.0.0" } }, "proxyquire": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.0.tgz", - "integrity": "sha512-TO9TAIz0mpa+SKddXsgCFatoe/KmHvoNVj2jDMC1kXE6kKn7/4CRpxvQ+0wAK9sbMT2FVO89qItlvnZMcFbJ2Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.1.tgz", + "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==", "dev": true, "requires": { "fill-keys": "1.0.2", "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "resolve": "1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + } } }, "pseudomap": { @@ -12353,16 +12350,16 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -12374,7 +12371,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, @@ -12430,9 +12427,9 @@ } }, "regexpp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.0.1.tgz", - "integrity": "sha512-8Ph721maXiOYSLtaDGKVmDn5wdsNaF6Px85qFNeMPQq0r8K5Y10tgP6YuR65Ws35n4DvzFcCxEnRNBIXQunzLw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, "regexpu-core": { @@ -12520,7 +12517,7 @@ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -12628,7 +12625,7 @@ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -12716,6 +12713,12 @@ "ret": "0.1.15" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "samsam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", @@ -12735,7 +12738,7 @@ "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.20", + "postcss": "6.0.21", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -12816,9 +12819,9 @@ "dev": true }, "sinon": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.4.6.tgz", - "integrity": "sha512-bzQag30yErCC4lJPv+C2HcmD1+3ula4JQNePZldKcagi0Exq6XDfcC2yqXVfEwtfTIq1rYGujrUIZbwHPpKjog==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", + "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -12896,57 +12899,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -12967,6 +12919,32 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -13015,7 +12993,7 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -13077,12 +13055,11 @@ "dev": true }, "split-array-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", - "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", + "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", "requires": { - "async": "2.6.0", - "is-stream-ended": "0.1.3" + "is-stream-ended": "0.1.4" } }, "split-string": { @@ -13146,64 +13123,13 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, "stream-events": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.2.tgz", - "integrity": "sha1-q/OfZsCJCk63lbyNXoWbJhW1kLI=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.3.tgz", + "integrity": "sha512-SvnBCMhEBQSJml4/ImlWkzGWgchjo1tVxnoBUOa1i1g3BsYNWz4W6a9Hc8VhqfmwJiEGu6tLrGdNRm/K/I4YXw==", "requires": { "stubs": "3.0.0" } @@ -13241,9 +13167,9 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "5.1.1" } @@ -13253,7 +13179,7 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -13323,11 +13249,11 @@ "debug": "3.1.0", "extend": "3.0.1", "form-data": "2.3.2", - "formidable": "1.2.0", + "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" }, "dependencies": { "mime": { @@ -13486,7 +13412,7 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -13832,15 +13758,16 @@ "dev": true }, "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", + "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", "dev": true, "requires": { "boxen": "1.3.0", "chalk": "2.3.2", - "configstore": "3.1.1", + "configstore": "3.1.2", "import-lazy": "2.1.0", + "is-ci": "1.1.0", "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f56c5eda21d..e52005e6fbe 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -76,7 +76,7 @@ "prop-assign": "^1.0.0", "propprop": "^0.3.0", "safe-buffer": "^5.1.1", - "split-array-stream": "^1.0.0", + "split-array-stream": "^2.0.0", "stream-events": "^1.0.2", "through2": "^2.0.3" }, diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 33871a4f223..464893a57e0 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -85,11 +85,11 @@ "requires": { "@google-cloud/common": "0.16.2", "arrify": "1.0.1", - "concat-stream": "1.6.1", + "concat-stream": "1.6.2", "create-error-class": "3.0.2", "extend": "3.0.1", "google-auto-auth": "0.9.7", - "google-gax": "0.16.0", + "google-gax": "0.16.1", "google-proto-files": "0.15.1", "is": "3.2.1", "lodash.flatten": "4.4.0", @@ -97,8 +97,8 @@ "prop-assign": "1.0.0", "propprop": "0.3.1", "safe-buffer": "5.1.1", - "split-array-stream": "1.0.3", - "stream-events": "1.0.2", + "split-array-stream": "2.0.0", + "stream-events": "1.0.3", "through2": "2.0.3" }, "dependencies": { @@ -170,7 +170,7 @@ "requires": { "array-uniq": "1.0.3", "arrify": "1.0.1", - "concat-stream": "1.6.1", + "concat-stream": "1.6.2", "create-error-class": "3.0.2", "duplexify": "3.5.4", "ent": "2.2.0", @@ -183,13 +183,23 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.2", + "stream-events": "1.0.3", "string-format-obj": "1.1.1", "through2": "2.0.3" + }, + "dependencies": { + "split-array-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "async": "2.6.0", + "is-stream-ended": "0.1.4" + } + } } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.2.4", + "version": "2.3.0", "bundled": true, "requires": { "ava": "0.25.0", @@ -200,6 +210,7 @@ "lodash": "4.17.5", "nyc": "11.4.1", "proxyquire": "1.8.0", + "semver": "5.5.0", "sinon": "4.3.0", "string": "3.3.3", "supertest": "3.0.0", @@ -1779,7 +1790,7 @@ "bundled": true }, "@types/node": { - "version": "8.9.5", + "version": "8.10.8", "bundled": true }, "acorn": { @@ -1872,7 +1883,7 @@ } }, "ansi-escapes": { - "version": "3.0.0", + "version": "3.1.0", "bundled": true }, "ansi-regex": { @@ -2065,7 +2076,7 @@ "bundled": true }, "atob": { - "version": "2.0.3", + "version": "2.1.0", "bundled": true }, "auto-bind": { @@ -2081,7 +2092,7 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", @@ -2099,7 +2110,7 @@ "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", + "cli-spinners": "1.3.1", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.1", @@ -2158,7 +2169,7 @@ "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-regex": { @@ -2216,7 +2227,7 @@ "bundled": true }, "aws4": { - "version": "1.6.0", + "version": "1.7.0", "bundled": true }, "axios": { @@ -2415,7 +2426,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.3", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2532,7 +2543,7 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -2552,7 +2563,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -2628,6 +2639,29 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -2709,16 +2743,14 @@ } }, "braces": { - "version": "2.3.1", + "version": "2.3.2", "bundled": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -2726,13 +2758,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "bundled": true, @@ -2754,6 +2779,10 @@ "version": "1.0.1", "bundled": true }, + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, "builtin-modules": { "version": "1.1.1", "bundled": true @@ -2797,6 +2826,12 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + } } }, "caching-transform": { @@ -2830,7 +2865,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2963,51 +2998,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -3031,7 +3021,7 @@ } }, "cli-spinners": { - "version": "1.1.0", + "version": "1.3.1", "bundled": true }, "cli-truncate": { @@ -3205,7 +3195,7 @@ "bundled": true, "requires": { "aws-sign2": "0.6.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -3292,11 +3282,12 @@ "bundled": true }, "concat-stream": { - "version": "1.6.1", + "version": "1.6.2", "bundled": true, "requires": { + "buffer-from": "1.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "typedarray": "0.0.6" } }, @@ -3327,7 +3318,7 @@ } }, "configstore": { - "version": "3.1.1", + "version": "3.1.2", "bundled": true, "requires": { "dot-prop": "4.2.0", @@ -3363,7 +3354,7 @@ } }, "core-js": { - "version": "2.5.3", + "version": "2.5.5", "bundled": true }, "core-util-is": { @@ -3417,7 +3408,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "dashdash": { @@ -3486,6 +3477,31 @@ "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } } }, "del": { @@ -3494,7 +3510,7 @@ "requires": { "globby": "5.0.0", "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", @@ -3614,7 +3630,7 @@ "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "stream-shift": "1.0.0" } }, @@ -3642,12 +3658,12 @@ "version": "1.2.3", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "empower-core": "0.6.2" } }, "empower-assert": { - "version": "1.0.1", + "version": "1.1.0", "bundled": true, "requires": { "estraverse": "4.2.0" @@ -3658,7 +3674,7 @@ "bundled": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "end-of-stream": { @@ -3688,7 +3704,7 @@ } }, "es5-ext": { - "version": "0.10.41", + "version": "0.10.42", "bundled": true, "requires": { "es6-iterator": "2.0.3", @@ -3705,7 +3721,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-symbol": "3.1.1" } }, @@ -3714,7 +3730,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -3726,7 +3742,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -3737,7 +3753,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "es6-weak-map": { @@ -3745,7 +3761,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41", + "es5-ext": "0.10.42", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -3801,25 +3817,25 @@ } }, "eslint": { - "version": "4.19.0", + "version": "4.19.1", "bundled": true, "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", "chalk": "2.3.2", - "concat-stream": "1.6.1", + "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", "espree": "3.5.4", - "esquery": "1.0.0", + "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.3.0", + "globals": "11.4.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", @@ -3835,7 +3851,7 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", - "regexpp": "1.0.1", + "regexpp": "1.1.0", "require-uncached": "1.0.3", "semver": "5.5.0", "strip-ansi": "4.0.0", @@ -3849,7 +3865,7 @@ "bundled": true }, "globals": { - "version": "11.3.0", + "version": "11.4.0", "bundled": true }, "strip-ansi": { @@ -3880,12 +3896,12 @@ "requires": { "ignore": "3.3.7", "minimatch": "3.0.4", - "resolve": "1.5.0", + "resolve": "1.7.1", "semver": "5.5.0" }, "dependencies": { "resolve": { - "version": "1.5.0", + "version": "1.7.1", "bundled": true, "requires": { "path-parse": "1.0.5" @@ -3953,7 +3969,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "is-url": "1.2.2", + "is-url": "1.2.4", "path-is-absolute": "1.0.1", "source-map": "0.5.7", "xtend": "4.0.1" @@ -3966,7 +3982,7 @@ "acorn": "5.5.3", "acorn-es7-plugin": "1.1.7", "convert-source-map": "1.5.1", - "empower-assert": "1.0.1", + "empower-assert": "1.1.0", "escodegen": "1.9.1", "espower": "2.1.0", "estraverse": "4.2.0", @@ -4004,11 +4020,11 @@ "version": "1.7.0", "bundled": true, "requires": { - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "esquery": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "requires": { "estraverse": "4.2.0" @@ -4034,7 +4050,7 @@ "bundled": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.41" + "es5-ext": "0.10.42" } }, "execa": { @@ -4083,51 +4099,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -4194,11 +4165,11 @@ } }, "external-editor": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.21", "tmp": "0.0.33" } }, @@ -4229,6 +4200,29 @@ "requires": { "is-extendable": "0.1.1" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -4252,7 +4246,7 @@ "glob-parent": "3.1.0", "is-glob": "4.0.0", "merge2": "1.2.1", - "micromatch": "3.1.9" + "micromatch": "3.1.10" } }, "fast-json-stable-stringify": { @@ -4375,7 +4369,7 @@ } }, "formidable": { - "version": "1.2.0", + "version": "1.2.1", "bundled": true }, "fragment-cache": { @@ -4390,7 +4384,7 @@ "bundled": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "fs-extra": { @@ -4536,12 +4530,12 @@ } }, "google-auth-library": { - "version": "1.3.2", + "version": "1.4.0", "bundled": true, "requires": { "axios": "0.18.0", "gcp-metadata": "0.6.3", - "gtoken": "2.2.0", + "gtoken": "2.3.0", "jws": "3.1.4", "lodash.isstring": "4.0.1", "lru-cache": "4.1.2", @@ -4554,31 +4548,43 @@ "requires": { "async": "2.6.0", "gcp-metadata": "0.6.3", - "google-auth-library": "1.3.2", + "google-auth-library": "1.4.0", "request": "2.85.0" } }, "google-gax": { - "version": "0.16.0", + "version": "0.16.1", "bundled": true, "requires": { "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.9.7", + "google-auto-auth": "0.10.0", "google-proto-files": "0.15.1", - "grpc": "1.9.1", - "is-stream-ended": "0.1.3", + "grpc": "1.10.1", + "is-stream-ended": "0.1.4", "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.0", + "bundled": true, + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + } } }, "google-p12-pem": { "version": "1.0.2", "bundled": true, "requires": { - "node-forge": "0.7.4", + "node-forge": "0.7.5", "pify": "3.0.0" } }, @@ -4587,7 +4593,7 @@ "bundled": true, "requires": { "globby": "7.1.1", - "power-assert": "1.4.4", + "power-assert": "1.5.0", "protobufjs": "6.8.6" }, "dependencies": { @@ -4617,7 +4623,7 @@ "into-stream": "3.1.0", "is-retry-allowed": "1.1.0", "isurl": "1.0.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "mimic-response": "1.0.0", "p-cancelable": "0.3.0", "p-timeout": "2.0.1", @@ -4650,12 +4656,12 @@ "bundled": true }, "grpc": { - "version": "1.9.1", + "version": "1.10.1", "bundled": true, "requires": { "lodash": "4.17.5", "nan": "2.10.0", - "node-pre-gyp": "0.6.39", + "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" }, "dependencies": { @@ -4664,11 +4670,13 @@ "bundled": true }, "ajv": { - "version": "4.11.8", + "version": "5.5.2", "bundled": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ansi-regex": { @@ -4684,7 +4692,7 @@ "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "asn1": { @@ -4692,7 +4700,7 @@ "bundled": true }, "assert-plus": { - "version": "0.2.0", + "version": "1.0.0", "bundled": true }, "asynckit": { @@ -4700,7 +4708,7 @@ "bundled": true }, "aws-sign2": { - "version": "0.6.0", + "version": "0.7.0", "bundled": true }, "aws4": { @@ -4727,10 +4735,10 @@ } }, "boom": { - "version": "2.10.1", + "version": "4.3.1", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "brace-expansion": { @@ -4754,7 +4762,7 @@ "bundled": true }, "combined-stream": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "requires": { "delayed-stream": "1.0.0" @@ -4773,10 +4781,19 @@ "bundled": true }, "cryptiles": { - "version": "2.0.5", + "version": "3.1.2", "bundled": true, "requires": { - "boom": "2.10.1" + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + } } }, "dashdash": { @@ -4784,12 +4801,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "debug": { @@ -4831,17 +4842,25 @@ "version": "1.3.0", "bundled": true }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, "forever-agent": { "version": "0.6.1", "bundled": true }, "form-data": { - "version": "2.1.4", + "version": "2.3.2", "bundled": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "fs.realpath": { @@ -4886,12 +4905,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "glob": { @@ -4911,15 +4924,15 @@ "bundled": true }, "har-schema": { - "version": "1.0.5", + "version": "2.0.0", "bundled": true }, "har-validator": { - "version": "4.2.1", + "version": "5.0.3", "bundled": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has-unicode": { @@ -4927,26 +4940,26 @@ "bundled": true }, "hawk": { - "version": "3.1.3", + "version": "6.0.2", "bundled": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" } }, "hoek": { - "version": "2.16.3", + "version": "4.2.1", "bundled": true }, "http-signature": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "inflight": { @@ -4993,21 +5006,14 @@ "version": "0.2.3", "bundled": true }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true }, "json-stringify-safe": { "version": "5.0.1", "bundled": true }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, "jsprim": { "version": "1.4.1", "bundled": true, @@ -5016,23 +5022,17 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "mime-db": { - "version": "1.30.0", + "version": "1.33.0", "bundled": true }, "mime-types": { - "version": "2.1.17", + "version": "2.1.18", "bundled": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "minimatch": { @@ -5043,7 +5043,7 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.0", "bundled": true }, "mkdirp": { @@ -5051,6 +5051,12 @@ "bundled": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } } }, "ms": { @@ -5058,16 +5064,15 @@ "bundled": true }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.7.0", "bundled": true, "requires": { "detect-libc": "1.0.3", - "hawk": "3.1.3", "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.2", - "rc": "1.2.4", - "request": "2.81.0", + "rc": "1.2.6", + "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.5.0", "tar": "2.2.1", @@ -5079,7 +5084,7 @@ "bundled": true, "requires": { "abbrev": "1.1.1", - "osenv": "0.1.4" + "osenv": "0.1.5" } }, "npmlog": { @@ -5120,7 +5125,7 @@ "bundled": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "requires": { "os-homedir": "1.0.2", @@ -5132,11 +5137,11 @@ "bundled": true }, "performance-now": { - "version": "0.2.0", + "version": "2.1.0", "bundled": true }, "process-nextick-args": { - "version": "1.0.7", + "version": "2.0.0", "bundled": true }, "protobufjs": { @@ -5154,62 +5159,56 @@ "bundled": true }, "qs": { - "version": "6.4.0", + "version": "6.5.1", "bundled": true }, "rc": { - "version": "1.2.4", + "version": "1.2.6", "bundled": true, "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } } }, "readable-stream": { - "version": "2.3.3", + "version": "2.3.5", "bundled": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, "request": { - "version": "2.81.0", + "version": "2.83.0", "bundled": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" } @@ -5238,14 +5237,14 @@ "bundled": true }, "sntp": { - "version": "1.0.9", + "version": "2.1.0", "bundled": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "sshpk": { - "version": "1.13.1", + "version": "1.14.1", "bundled": true, "requires": { "asn1": "0.2.3", @@ -5256,12 +5255,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "string-width": { @@ -5312,14 +5305,14 @@ "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" } }, "tough-cookie": { - "version": "2.3.3", + "version": "2.3.4", "bundled": true, "requires": { "punycode": "1.4.1" @@ -5356,12 +5349,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "wide-align": { @@ -5378,13 +5365,13 @@ } }, "gtoken": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "requires": { "axios": "0.18.0", "google-p12-pem": "1.0.2", "jws": "3.1.4", - "mime": "2.2.0", + "mime": "2.3.1", "pify": "3.0.0" } }, @@ -5518,7 +5505,7 @@ "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "http-cache-semantics": { @@ -5555,8 +5542,11 @@ } }, "iconv-lite": { - "version": "0.4.19", - "bundled": true + "version": "0.4.21", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + } }, "ignore": { "version": "3.3.7", @@ -5610,7 +5600,7 @@ "version": "1.3.2", "bundled": true, "requires": { - "moment": "2.21.0", + "moment": "2.22.0", "sanitize-html": "1.18.2" } }, @@ -5618,11 +5608,11 @@ "version": "3.3.0", "bundled": true, "requires": { - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", "lodash": "4.17.5", "mute-stream": "0.0.7", @@ -5694,10 +5684,19 @@ "bundled": true }, "is-accessor-descriptor": { - "version": "1.0.0", + "version": "0.1.6", "bundled": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-arrayish": { @@ -5730,19 +5729,34 @@ } }, "is-data-descriptor": { - "version": "1.0.0", + "version": "0.1.4", "bundled": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-descriptor": { - "version": "1.0.2", + "version": "0.1.6", "bundled": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } } }, "is-dotfile": { @@ -5854,7 +5868,7 @@ "bundled": true }, "is-path-in-cwd": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "requires": { "is-path-inside": "1.0.1" @@ -5907,7 +5921,7 @@ "bundled": true }, "is-stream-ended": { - "version": "0.1.3", + "version": "0.1.4", "bundled": true }, "is-typedarray": { @@ -5915,7 +5929,7 @@ "bundled": true }, "is-url": { - "version": "1.2.2", + "version": "1.2.4", "bundled": true }, "is-utf8": { @@ -5992,7 +6006,7 @@ "escape-string-regexp": "1.0.5", "js2xmlparser": "3.0.0", "klaw": "2.0.0", - "marked": "0.3.17", + "marked": "0.3.19", "mkdirp": "0.5.1", "requizzle": "0.2.1", "strip-json-comments": "2.0.1", @@ -6015,7 +6029,7 @@ "bundled": true }, "json-parse-better-errors": { - "version": "1.0.1", + "version": "1.0.2", "bundled": true }, "json-schema": { @@ -6253,7 +6267,7 @@ } }, "lowercase-keys": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true }, "lru-cache": { @@ -6287,7 +6301,7 @@ } }, "marked": { - "version": "0.3.17", + "version": "0.3.19", "bundled": true }, "matcher": { @@ -6435,12 +6449,12 @@ "bundled": true }, "micromatch": { - "version": "3.1.9", + "version": "3.1.10", "bundled": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -6454,7 +6468,7 @@ } }, "mime": { - "version": "2.2.0", + "version": "2.3.1", "bundled": true }, "mime-db": { @@ -6512,7 +6526,7 @@ } }, "mocha": { - "version": "5.0.4", + "version": "5.1.0", "bundled": true, "requires": { "browser-stdout": "1.3.1", @@ -6523,6 +6537,7 @@ "glob": "7.1.2", "growl": "1.10.3", "he": "1.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "4.4.0" }, @@ -6545,7 +6560,7 @@ "bundled": true }, "moment": { - "version": "2.21.0", + "version": "2.22.0", "bundled": true }, "ms": { @@ -6624,7 +6639,7 @@ } }, "node-forge": { - "version": "0.7.4", + "version": "0.7.5", "bundled": true }, "normalize-package-data": { @@ -9117,35 +9132,6 @@ "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, "kind-of": { "version": "3.2.2", "bundled": true, @@ -9334,7 +9320,7 @@ "is-redirect": "1.0.0", "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", @@ -9467,7 +9453,7 @@ "bundled": true, "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } } } @@ -9495,7 +9481,7 @@ "bundled": true }, "postcss": { - "version": "6.0.20", + "version": "6.0.21", "bundled": true, "requires": { "chalk": "2.3.2", @@ -9510,7 +9496,7 @@ } }, "power-assert": { - "version": "1.4.4", + "version": "1.5.0", "bundled": true, "requires": { "define-properties": "1.1.2", @@ -9524,7 +9510,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-context-traversal": "1.1.1" } }, @@ -9534,7 +9520,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.3", + "core-js": "2.5.5", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -9543,7 +9529,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "estraverse": "4.2.0" } }, @@ -9551,7 +9537,7 @@ "version": "1.4.1", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -9576,7 +9562,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -9587,7 +9573,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -9620,7 +9606,7 @@ "bundled": true }, "prettier": { - "version": "1.11.1", + "version": "1.12.0", "bundled": true }, "pretty-ms": { @@ -9672,17 +9658,26 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.9.5", + "@types/node": "8.10.8", "long": "4.0.0" } }, "proxyquire": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "requires": { "fill-keys": "1.0.2", "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "resolve": "1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "bundled": true, + "requires": { + "path-parse": "1.0.5" + } + } } }, "pseudomap": { @@ -9770,7 +9765,7 @@ } }, "readable-stream": { - "version": "2.3.5", + "version": "2.3.6", "bundled": true, "requires": { "core-util-is": "1.0.2", @@ -9778,7 +9773,7 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -9788,7 +9783,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, @@ -9833,7 +9828,7 @@ } }, "regexpp": { - "version": "1.0.1", + "version": "1.1.0", "bundled": true }, "regexpu-core": { @@ -9902,7 +9897,7 @@ "bundled": true, "requires": { "aws-sign2": "0.7.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -9987,7 +9982,7 @@ "version": "1.0.2", "bundled": true, "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -10058,6 +10053,10 @@ "ret": "0.1.15" } }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, "samsam": { "version": "1.3.0", "bundled": true @@ -10073,7 +10072,7 @@ "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.20", + "postcss": "6.0.21", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -10136,7 +10135,7 @@ "bundled": true }, "sinon": { - "version": "4.4.6", + "version": "4.5.0", "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -10203,51 +10202,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -10266,6 +10220,29 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } } } }, @@ -10307,7 +10284,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -10356,11 +10333,10 @@ "bundled": true }, "split-array-stream": { - "version": "1.0.3", + "version": "2.0.0", "bundled": true, "requires": { - "async": "2.6.0", - "is-stream-ended": "0.1.3" + "is-stream-ended": "0.1.4" } }, "split-string": { @@ -10414,56 +10390,11 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, "stream-events": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "requires": { "stubs": "3.0.0" @@ -10495,7 +10426,7 @@ } }, "string_decoder": { - "version": "1.0.3", + "version": "1.1.1", "bundled": true, "requires": { "safe-buffer": "5.1.1" @@ -10505,7 +10436,7 @@ "version": "1.3.0", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -10560,11 +10491,11 @@ "debug": "3.1.0", "extend": "3.0.1", "form-data": "2.3.2", - "formidable": "1.2.0", + "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" }, "dependencies": { "mime": { @@ -10686,7 +10617,7 @@ "version": "2.0.3", "bundled": true, "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -10966,13 +10897,14 @@ "bundled": true }, "update-notifier": { - "version": "2.3.0", + "version": "2.4.0", "bundled": true, "requires": { "boxen": "1.3.0", "chalk": "2.3.2", - "configstore": "3.1.1", + "configstore": "3.1.2", "import-lazy": "2.1.0", + "is-ci": "1.1.0", "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", @@ -11226,7 +11158,7 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", @@ -11244,7 +11176,7 @@ "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", + "cli-spinners": "1.3.1", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.1", @@ -11303,7 +11235,7 @@ "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" + "update-notifier": "2.4.0" } }, "cliui": { @@ -13070,9 +13002,9 @@ } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -13218,7 +13150,7 @@ "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", + "cli-spinners": "1.3.1", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.1", @@ -13277,7 +13209,7 @@ "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-escapes": { @@ -13574,7 +13506,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.3", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -13721,7 +13653,7 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -13745,7 +13677,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -13893,6 +13825,14 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } } }, "caching-transform": { @@ -13934,7 +13874,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -14065,9 +14005,9 @@ } }, "cli-spinners": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", - "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", "dev": true }, "cli-truncate": { @@ -14219,9 +14159,9 @@ } }, "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { "dot-prop": "4.2.0", @@ -14261,9 +14201,9 @@ } }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", "dev": true }, "core-util-is": { @@ -14403,7 +14343,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "equal-length": { @@ -14439,7 +14379,7 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.2", + "is-url": "1.2.4", "path-is-absolute": "1.0.1", "source-map": "0.5.7", "xtend": "4.0.1" @@ -14457,7 +14397,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "estraverse": { @@ -14623,9 +14563,9 @@ } }, "formidable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.0.tgz", - "integrity": "sha512-hr9aT30rAi7kf8Q2aaTpSP7xGMhlJ+MdrUDVZs3rxbD3L/K46A86s2VY7qC2D2kGYGBtiT/3j6wTx1eeUq5xAQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", "dev": true }, "from2": { @@ -14635,7 +14575,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "fs-extra": { @@ -15564,7 +15504,7 @@ "into-stream": "3.1.0", "is-retry-allowed": "1.1.0", "isurl": "1.0.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "mimic-response": "1.0.0", "p-cancelable": "0.3.0", "p-timeout": "2.0.1", @@ -15999,9 +15939,9 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, "is-utf8": { @@ -16082,9 +16022,9 @@ "dev": true }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json5": { @@ -16269,9 +16209,9 @@ } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { @@ -19591,7 +19531,7 @@ "is-redirect": "1.0.0", "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", @@ -19716,7 +19656,7 @@ "dev": true, "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } }, "pify": { @@ -19903,9 +19843,9 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -19913,7 +19853,7 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" }, "dependencies": { @@ -19933,7 +19873,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, @@ -20103,7 +20043,7 @@ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -20348,9 +20288,9 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -20410,11 +20350,11 @@ "debug": "3.1.0", "extend": "3.0.1", "form-data": "2.3.2", - "formidable": "1.2.0", + "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", "qs": "6.5.1", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "supertap": { @@ -20497,7 +20437,7 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -20687,15 +20627,16 @@ "dev": true }, "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", + "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", "dev": true, "requires": { "boxen": "1.3.0", "chalk": "2.3.2", - "configstore": "3.1.1", + "configstore": "3.1.2", "import-lazy": "2.1.0", + "is-ci": "1.1.0", "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 1616c6e0222..3bc98fac5e1 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -22,7 +22,7 @@ var concat = require('concat-stream'); var extend = require('extend'); var is = require('is'); var propAssign = require('prop-assign'); -var split = require('split-array-stream'); +var split = require('split-array-stream').split; var streamEvents = require('stream-events'); var through = require('through2'); @@ -266,7 +266,7 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); - split(entities, stream, function(streamEnded) { + split(entities, stream).then(function(streamEnded) { if (streamEnded) { return; } @@ -696,7 +696,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { } // Emit each result right away, then get the rest if necessary. - split(entities, stream, function(streamEnded) { + split(entities, stream).then(function(streamEnded) { if (streamEnded) { return; } From dc7122feea90892098bd116cde3aaea5a1c93a87 Mon Sep 17 00:00:00 2001 From: Stephen Date: Wed, 25 Apr 2018 12:28:59 -0400 Subject: [PATCH 185/820] fix(package): update google-auto-auth to version 0.10.1 (#82) * fix(package): update google-auto-auth to version 0.10.1 Closes #72 * Update package locks --- .../nodejs-datastore/package-lock.json | 2687 +++++++++-------- handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 2258 +++++++------- 3 files changed, 2741 insertions(+), 2206 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index db61d58b56d..b98bb10d026 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -105,6 +105,17 @@ "through2": "2.0.3" }, "dependencies": { + "google-auto-auth": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", + "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + }, "split-array-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", @@ -198,7 +209,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -208,22 +220,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -231,12 +247,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -244,27 +262,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -274,7 +297,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -289,7 +313,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -297,7 +322,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -306,7 +332,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -318,7 +345,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -334,7 +362,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -345,17 +374,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -364,7 +396,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -374,12 +407,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -389,13 +424,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -405,7 +442,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -417,7 +455,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -428,7 +467,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -436,32 +476,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -470,7 +516,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -478,17 +525,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -496,7 +546,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -504,7 +555,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -512,17 +564,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -536,7 +591,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -548,7 +604,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -556,7 +613,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -564,7 +622,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -572,12 +631,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -589,7 +650,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -599,7 +661,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -607,12 +670,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -620,7 +685,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -629,22 +695,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -657,7 +727,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -666,7 +737,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -674,17 +746,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -695,7 +770,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -705,7 +781,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -713,22 +790,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -737,12 +818,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -750,22 +833,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -773,12 +860,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -786,17 +875,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -804,7 +896,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -812,7 +905,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -820,7 +914,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -828,37 +923,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -866,12 +968,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -879,7 +983,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -893,7 +998,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -904,7 +1010,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -914,7 +1021,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "3.1.0", @@ -926,7 +1034,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -936,7 +1045,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -944,17 +1054,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -962,13 +1075,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -976,7 +1091,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -988,7 +1104,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -997,24 +1114,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -1022,7 +1143,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -1031,7 +1153,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -1039,12 +1162,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -1052,7 +1177,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "0.5.7" @@ -1060,7 +1186,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -1080,12 +1207,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -1093,12 +1222,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1106,12 +1237,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -1122,7 +1255,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -1130,7 +1264,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -1138,17 +1273,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -1157,7 +1295,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -1165,7 +1304,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -1174,12 +1314,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -1189,17 +1331,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.1.0" @@ -1207,7 +1352,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -1218,7 +1364,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -1226,7 +1373,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -1234,22 +1382,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1259,17 +1411,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -1277,7 +1432,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -1285,7 +1441,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -1296,17 +1453,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -1315,7 +1475,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -1323,7 +1484,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1333,7 +1495,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1343,7 +1506,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -1353,7 +1517,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -1362,7 +1527,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -1373,12 +1539,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -1386,22 +1554,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -1409,22 +1581,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -1433,7 +1609,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -1441,17 +1618,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -1459,27 +1639,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -1492,7 +1677,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -1500,17 +1686,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1519,17 +1708,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -1539,7 +1731,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1547,7 +1740,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -1555,17 +1749,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "1.0.1", @@ -1577,17 +1774,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -1598,7 +1798,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -1612,13 +1813,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -1627,7 +1830,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -1635,23 +1839,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -1660,7 +1868,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1672,12 +1881,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1687,17 +1898,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "3.2.0", @@ -1716,7 +1930,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "1.0.2", @@ -1726,7 +1941,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1740,7 +1956,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -1748,7 +1965,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -3375,7 +3593,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", + "fsevents": "1.2.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -5168,39 +5386,29 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "dev": true, "optional": true, "requires": { "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -5212,150 +5420,52 @@ "optional": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.2.9" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", + "balanced-match": { + "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "assert-plus": { - "version": "0.2.0", + "brace-expansion": { + "version": "1.1.11", "bundled": true, "dev": true, - "optional": true + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, - "asynckit": { - "version": "0.4.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, - "aws-sign2": { - "version": "0.6.0", + "code-point-at": { + "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "aws4": { - "version": "1.6.0", + "concat-map": { + "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "balanced-match": { - "version": "0.4.2", + "console-control-strings": { + "version": "1.1.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", + "core-util-is": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -5369,11 +5479,6 @@ "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -5381,74 +5486,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "form-data": { - "version": "2.1.4", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -5456,7 +5512,7 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -5466,27 +5522,11 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -5496,64 +5536,35 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "safer-buffer": "2.1.2" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -5565,7 +5576,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -5578,111 +5589,43 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, "dev": true, "optional": true }, - "jsprim": { - "version": "1.4.0", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.27.0", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "minipass": "2.2.4" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -5697,23 +5640,33 @@ "dev": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.9.1", "bundled": true, "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", + "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.0", "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -5722,12 +5675,28 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, @@ -5743,12 +5712,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -5776,7 +5739,7 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, @@ -5788,39 +5751,23 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.6", "bundled": true, "dev": true, "optional": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -5834,227 +5781,118 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "1.0.0", "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "tar-pack": { - "version": "3.4.0", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "tough-cookie": { - "version": "2.3.2", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "safe-buffer": "5.1.1" } }, - "tunnel-agent": { - "version": "0.6.0", + "strip-ansi": { + "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { - "safe-buffer": "5.0.1" + "ansi-regex": "2.1.1" } }, - "tweetnacl": { - "version": "0.14.5", + "strip-json-comments": { + "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "uid-number": { - "version": "0.0.6", + "tar": { + "version": "4.4.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -6068,6 +5906,11 @@ "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, @@ -6247,9 +6090,9 @@ } }, "google-auto-auth": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", - "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", + "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", "requires": { "async": "2.6.0", "gcp-metadata": "0.6.3", @@ -6388,11 +6231,13 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ajv": { "version": "5.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { "co": "4.6.0", "fast-deep-equal": "1.1.0", @@ -6402,15 +6247,18 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", "readable-stream": "2.3.5" @@ -6418,31 +6266,38 @@ }, "asn1": { "version": "0.2.3", - "bundled": true + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "assert-plus": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "asynckit": { "version": "0.4.0", - "bundled": true + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { "version": "0.7.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.6.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -6450,21 +6305,24 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { "inherits": "2.0.3" } }, "boom": { "version": "4.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { "hoek": "4.2.1" } }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -6472,45 +6330,54 @@ }, "caseless": { "version": "0.12.0", - "bundled": true + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "co": { "version": "4.6.0", - "bundled": true + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "combined-stream": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "1.0.0" } }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cryptiles": { "version": "3.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { "boom": "5.2.0" }, "dependencies": { "boom": { "version": "5.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { "hoek": "4.2.1" } @@ -6519,37 +6386,44 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { "assert-plus": "1.0.0" } }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.4.2", - "bundled": true + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" }, "delayed-stream": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { "jsbn": "0.1.1" @@ -6557,27 +6431,33 @@ }, "extend": { "version": "3.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extsprintf": { "version": "1.3.0", - "bundled": true + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "fast-json-stable-stringify": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "forever-agent": { "version": "0.6.1", - "bundled": true + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.6", @@ -6586,11 +6466,13 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", @@ -6600,7 +6482,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "requires": { "fstream": "1.0.11", "inherits": "2.0.3", @@ -6609,7 +6492,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "1.2.0", "console-control-strings": "1.1.0", @@ -6623,14 +6507,16 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { "assert-plus": "1.0.0" } }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -6642,15 +6528,18 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "har-schema": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { "ajv": "5.5.2", "har-schema": "2.0.0" @@ -6658,11 +6547,13 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "hawk": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", @@ -6672,11 +6563,13 @@ }, "hoek": { "version": "4.2.1", - "bundled": true + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, "http-signature": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", @@ -6685,7 +6578,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -6693,51 +6587,62 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "1.0.1" } }, "is-typedarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isstream": { "version": "0.1.2", - "bundled": true + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { "version": "0.3.1", - "bundled": true + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "jsprim": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -6747,46 +6652,54 @@ }, "mime-db": { "version": "1.33.0", - "bundled": true + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { "version": "2.1.18", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { "mime-db": "1.33.0" } }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "1.1.8" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "ms": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node-pre-gyp": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.7.0.tgz", + "integrity": "sha1-Va7/uu2TtQ0KRlfUaRmM2ArJ3zY=", "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", @@ -6802,7 +6715,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1.1.1", "osenv": "0.1.5" @@ -6810,7 +6724,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "1.1.4", "console-control-strings": "1.1.0", @@ -6820,34 +6735,41 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { "version": "0.8.2", - "bundled": true + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -6855,15 +6777,18 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "performance-now": { "version": "2.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "protobufjs": { "version": "5.0.2", @@ -6878,15 +6803,18 @@ }, "punycode": { "version": "1.4.1", - "bundled": true + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { "version": "6.5.1", - "bundled": true + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "rc": { "version": "1.2.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -6896,7 +6824,8 @@ }, "readable-stream": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -6909,7 +6838,8 @@ }, "request": { "version": "2.83.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.6.0", @@ -6937,37 +6867,44 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "semver": { "version": "5.5.0", - "bundled": true + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sntp": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { "hoek": "4.2.1" } }, "sshpk": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -6981,7 +6918,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -6990,29 +6928,34 @@ }, "string_decoder": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { "safe-buffer": "5.1.1" } }, "stringstream": { "version": "0.0.5", - "bundled": true + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { "block-stream": "0.0.9", "fstream": "1.0.11", @@ -7021,7 +6964,8 @@ }, "tar-pack": { "version": "3.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", "requires": { "debug": "2.6.9", "fstream": "1.0.11", @@ -7035,38 +6979,45 @@ }, "tough-cookie": { "version": "2.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "1.4.1" } }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { "safe-buffer": "5.1.1" } }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, "uid-number": { "version": "0.0.6", - "bundled": true + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "3.2.1", - "bundled": true + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "verror": { "version": "1.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { "assert-plus": "1.0.0", "core-util-is": "1.0.2", @@ -7075,14 +7026,16 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "requires": { "string-width": "1.0.2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" } } }, @@ -8800,7 +8753,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -8810,22 +8764,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -8833,12 +8791,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -8846,42 +8806,50 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -8891,7 +8859,8 @@ }, "babel-generator": { "version": "6.26.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -8906,7 +8875,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -8914,7 +8884,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -8923,7 +8894,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8935,7 +8907,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -8951,7 +8924,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8962,17 +8936,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "1.0.1", @@ -8986,7 +8963,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -8994,14 +8972,16 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -9010,7 +8990,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -9020,12 +9001,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "1.0.0", @@ -9041,14 +9024,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -9058,13 +9043,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -9074,7 +9061,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -9086,7 +9074,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", @@ -9097,7 +9086,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -9105,7 +9095,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9113,7 +9104,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9123,7 +9115,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9131,7 +9124,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9141,7 +9135,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -9151,19 +9146,22 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -9174,7 +9172,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -9182,12 +9181,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "1.0.0", @@ -9196,37 +9197,44 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9235,7 +9243,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -9243,22 +9252,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -9266,7 +9279,8 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "1.0.2", @@ -9275,14 +9289,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -9290,7 +9306,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -9298,17 +9315,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -9322,7 +9342,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9334,7 +9355,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -9342,7 +9364,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -9350,7 +9373,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -9359,7 +9383,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -9369,7 +9394,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -9377,12 +9403,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -9394,7 +9422,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -9404,7 +9433,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -9412,12 +9442,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -9425,7 +9457,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -9434,7 +9467,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "0.2.2" @@ -9442,27 +9476,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -9475,7 +9514,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -9484,7 +9524,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -9492,17 +9533,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -9513,7 +9557,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -9523,7 +9568,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -9531,12 +9577,14 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "2.0.6", @@ -9546,14 +9594,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "3.0.0", @@ -9562,7 +9612,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9570,7 +9621,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9580,7 +9632,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9590,17 +9643,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -9609,12 +9665,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -9622,12 +9680,14 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -9635,24 +9695,28 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -9660,7 +9724,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -9668,14 +9733,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "1.0.0", @@ -9685,19 +9752,22 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -9705,17 +9775,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -9723,12 +9796,14 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -9736,7 +9811,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9744,7 +9820,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { "is-number": "4.0.0" @@ -9752,14 +9829,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -9767,49 +9846,58 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -9817,12 +9905,14 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -9830,7 +9920,8 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "6.26.1", @@ -9844,7 +9935,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -9855,7 +9947,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -9865,7 +9958,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { "debug": "3.1.0", @@ -9877,7 +9971,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -9887,7 +9982,8 @@ }, "istanbul-reports": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -9895,17 +9991,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9913,13 +10012,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -9927,7 +10028,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -9939,7 +10041,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -9948,24 +10051,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -9973,7 +10080,8 @@ }, "lru-cache": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -9982,12 +10090,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "1.0.1" @@ -9995,7 +10105,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -10003,12 +10114,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -10016,7 +10129,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { "source-map": "0.6.1" @@ -10024,14 +10138,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -10051,12 +10167,14 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -10064,12 +10182,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -10078,7 +10198,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -10088,7 +10209,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -10096,12 +10218,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -10120,24 +10244,28 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -10148,7 +10276,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -10156,7 +10285,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -10164,17 +10294,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -10184,7 +10317,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10192,7 +10326,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10200,7 +10335,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10208,7 +10344,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -10218,7 +10355,8 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -10227,7 +10365,8 @@ }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "3.0.1" @@ -10235,14 +10374,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -10251,7 +10392,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "3.0.1" @@ -10259,14 +10401,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -10274,7 +10418,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -10283,12 +10428,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -10298,12 +10445,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "1.0.0" @@ -10311,7 +10460,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.2.0" @@ -10319,12 +10469,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -10335,7 +10487,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -10343,12 +10496,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -10356,22 +10511,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10381,17 +10540,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -10399,7 +10561,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -10407,7 +10570,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -10418,22 +10582,26 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -10442,7 +10610,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10450,7 +10619,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10460,7 +10630,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10470,7 +10641,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -10480,7 +10652,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -10489,7 +10662,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -10500,12 +10674,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -10513,7 +10689,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -10522,22 +10699,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -10545,32 +10726,38 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -10579,7 +10766,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -10587,7 +10775,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "0.1.15" @@ -10595,17 +10784,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -10616,7 +10808,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10626,7 +10819,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -10634,22 +10828,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -10664,7 +10862,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10672,7 +10871,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10680,7 +10880,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10688,7 +10889,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10698,7 +10900,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10706,7 +10909,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10716,7 +10920,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -10726,14 +10931,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "1.0.0", @@ -10743,7 +10950,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -10751,14 +10959,16 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10766,12 +10976,14 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { "atob": "2.0.3", @@ -10783,12 +10995,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -10801,7 +11015,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -10810,12 +11025,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -10824,12 +11041,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -10837,7 +11056,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "0.2.5", @@ -10846,7 +11066,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10854,7 +11075,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10862,7 +11084,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10872,7 +11095,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10880,7 +11104,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10890,7 +11115,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -10900,14 +11126,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -10916,12 +11144,14 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -10931,7 +11161,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -10939,7 +11170,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -10947,17 +11179,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { "arrify": "1.0.1", @@ -10969,17 +11204,20 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "braces": { "version": "2.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { "arr-flatten": "1.1.0", @@ -10998,7 +11236,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11006,7 +11245,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11016,7 +11256,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "2.6.9", @@ -11030,7 +11271,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11038,7 +11280,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11046,7 +11289,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11056,14 +11300,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "0.3.2", @@ -11078,7 +11324,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11086,7 +11333,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11096,7 +11344,8 @@ }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11107,7 +11356,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11117,7 +11367,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11125,7 +11376,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11135,7 +11387,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11143,7 +11396,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11153,7 +11407,8 @@ }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11161,7 +11416,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11171,17 +11427,20 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "micromatch": { "version": "3.1.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -11203,12 +11462,14 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11216,7 +11477,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "2.0.2", @@ -11227,7 +11489,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "3.0.0", @@ -11236,7 +11499,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11246,12 +11510,14 @@ }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -11262,7 +11528,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -11276,13 +11543,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "3.1.0", @@ -11293,7 +11562,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11301,7 +11571,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11314,7 +11585,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "0.3.1", @@ -11323,7 +11595,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "2.0.6", @@ -11333,7 +11606,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -11343,24 +11617,28 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -11368,14 +11646,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -11384,7 +11664,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -11392,23 +11673,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -11417,7 +11702,8 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11425,7 +11711,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -11437,12 +11724,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -11452,17 +11741,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { "cliui": "4.0.0", @@ -11481,17 +11773,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -11501,7 +11796,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11509,7 +11805,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -11519,7 +11816,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "4.1.0" @@ -11527,7 +11825,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e52005e6fbe..438f4d24b5d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -67,7 +67,7 @@ "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auto-auth": "^0.9.0", + "google-auto-auth": "^0.10.1", "google-gax": "^0.16.0", "google-proto-files": "^0.15.0", "is": "^3.0.1", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 464893a57e0..3231d8a4b2b 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -88,7 +88,7 @@ "concat-stream": "1.6.2", "create-error-class": "3.0.2", "extend": "3.0.1", - "google-auto-auth": "0.9.7", + "google-auto-auth": "0.10.1", "google-gax": "0.16.1", "google-proto-files": "0.15.1", "is": "3.2.1", @@ -188,6 +188,16 @@ "through2": "2.0.3" }, "dependencies": { + "google-auto-auth": { + "version": "0.9.7", + "bundled": true, + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + }, "split-array-stream": { "version": "1.0.3", "bundled": true, @@ -2945,7 +2955,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", + "fsevents": "1.2.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -4543,7 +4553,7 @@ } }, "google-auto-auth": { - "version": "0.9.7", + "version": "0.10.1", "bundled": true, "requires": { "async": "2.6.0", @@ -11286,7 +11296,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -11296,22 +11307,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -11319,12 +11334,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -11332,27 +11349,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -11362,7 +11384,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -11377,7 +11400,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -11385,7 +11409,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -11394,7 +11419,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11406,7 +11432,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -11422,7 +11449,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11433,17 +11461,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -11452,7 +11483,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -11462,12 +11494,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -11477,13 +11511,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -11493,7 +11529,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -11505,7 +11542,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -11516,7 +11554,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -11524,32 +11563,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11558,7 +11603,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -11566,17 +11612,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -11584,7 +11633,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -11592,7 +11642,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -11600,17 +11651,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -11624,7 +11678,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11636,7 +11691,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -11644,7 +11700,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -11652,7 +11709,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11660,12 +11718,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -11677,7 +11737,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -11687,7 +11748,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -11695,12 +11757,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -11708,7 +11772,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -11717,22 +11782,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -11745,7 +11814,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -11754,7 +11824,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -11762,17 +11833,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -11783,7 +11857,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -11793,7 +11868,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11801,22 +11877,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -11825,12 +11905,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -11838,22 +11920,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -11861,12 +11947,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -11874,17 +11962,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11892,7 +11983,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11900,7 +11992,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11908,7 +12001,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11916,37 +12010,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -11954,12 +12055,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -11967,7 +12070,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -11981,7 +12085,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -11992,7 +12097,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -12002,7 +12108,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "3.1.0", @@ -12014,7 +12121,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -12024,7 +12132,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -12032,17 +12141,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12050,13 +12162,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -12064,7 +12178,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12076,7 +12191,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -12085,24 +12201,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -12110,7 +12230,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -12119,7 +12240,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -12127,12 +12249,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -12140,7 +12264,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "0.5.7" @@ -12148,7 +12273,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -12168,12 +12294,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -12181,12 +12309,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -12194,12 +12324,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -12210,7 +12342,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -12218,7 +12351,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -12226,17 +12360,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -12245,7 +12382,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -12253,7 +12391,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -12262,12 +12401,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -12277,17 +12418,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.1.0" @@ -12295,7 +12439,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -12306,7 +12451,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -12314,7 +12460,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -12322,22 +12469,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12347,17 +12498,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -12365,7 +12519,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -12373,7 +12528,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -12384,17 +12540,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -12403,7 +12562,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -12411,7 +12571,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12421,7 +12582,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12431,7 +12593,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -12441,7 +12604,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -12450,7 +12614,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -12461,12 +12626,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -12474,22 +12641,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -12497,22 +12668,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -12521,7 +12696,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -12529,17 +12705,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -12547,27 +12726,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -12580,7 +12764,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -12588,17 +12773,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -12607,17 +12795,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12627,7 +12818,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12635,7 +12827,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -12643,17 +12836,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "1.0.1", @@ -12665,17 +12861,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -12686,7 +12885,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -12700,13 +12900,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -12715,7 +12917,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -12723,23 +12926,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -12748,7 +12955,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12760,12 +12968,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12775,17 +12985,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "3.2.0", @@ -12804,7 +13017,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "1.0.2", @@ -12814,7 +13028,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12828,7 +13043,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -12836,7 +13052,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -13962,7 +14179,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", + "fsevents": "1.2.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -14596,35 +14813,26 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "optional": true, "requires": { "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "optional": true }, @@ -14634,79 +14842,23 @@ "optional": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.2.9" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true + "balanced-match": { + "version": "1.0.0", + "bundled": true }, - "asynckit": { - "version": "0.4.0", + "brace-expansion": { + "version": "1.1.11", "bundled": true, - "optional": true + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "optional": true }, @@ -14714,13 +14866,6 @@ "version": "1.1.0", "bundled": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true @@ -14731,32 +14876,11 @@ }, "core-util-is": { "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "optional": true, "requires": { @@ -14768,82 +14892,35 @@ "bundled": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, "delegates": { "version": "1.0.0", "bundled": true, "optional": true }, "detect-libc": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", + "version": "1.0.3", "bundled": true, "optional": true }, - "form-data": { - "version": "2.1.4", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, "optional": true, "requires": { - "aproba": "1.1.1", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -14853,24 +14930,10 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, + "optional": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -14880,56 +14943,31 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "safer-buffer": "2.1.2" } }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, + "optional": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -14940,7 +14978,7 @@ "bundled": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "optional": true }, @@ -14951,96 +14989,38 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, "isarray": { "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", "bundled": true, "optional": true }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", + "minimatch": { + "version": "3.0.4", "bundled": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.27.0", + "minimist": { + "version": "0.0.8", "bundled": true }, - "mime-types": { - "version": "2.1.15", + "minipass": { + "version": "2.2.4", "bundled": true, "requires": { - "mime-db": "1.27.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "minipass": "2.2.4" } }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -15053,22 +15033,31 @@ "bundled": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.9.1", "bundled": true, "optional": true, "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", + "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.0", "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -15076,12 +15065,26 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "optional": true, "requires": { @@ -15095,11 +15098,6 @@ "version": "1.0.1", "bundled": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -15123,44 +15121,31 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "optional": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", + }, + "path-is-absolute": { + "version": "1.0.1", "bundled": true, "optional": true }, - "qs": { - "version": "6.4.0", + "process-nextick-args": { + "version": "2.0.0", "bundled": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.6", "bundled": true, "optional": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -15173,60 +15158,43 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, + "optional": true, "requires": { - "buffer-shims": "1.0.0", "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, + "optional": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, "semver": { - "version": "5.3.0", + "version": "5.5.0", "bundled": true, "optional": true }, @@ -15240,36 +15208,6 @@ "bundled": true, "optional": true }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -15280,17 +15218,13 @@ } }, "string_decoder": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, + "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -15304,72 +15238,24 @@ "optional": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", + "version": "4.4.1", "bundled": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", "bundled": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -15381,6 +15267,10 @@ "wrappy": { "version": "1.0.2", "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, @@ -16613,7 +16503,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -16623,22 +16514,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -16646,12 +16541,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -16659,42 +16556,50 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -16704,7 +16609,8 @@ }, "babel-generator": { "version": "6.26.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -16719,7 +16625,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -16727,7 +16634,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -16736,7 +16644,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -16748,7 +16657,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -16764,7 +16674,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -16775,17 +16686,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "1.0.1", @@ -16799,7 +16713,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -16807,14 +16722,16 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -16823,7 +16740,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -16833,12 +16751,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "1.0.0", @@ -16854,14 +16774,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -16871,13 +16793,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -16887,7 +16811,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -16899,7 +16824,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", @@ -16910,7 +16836,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -16918,7 +16845,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -16926,7 +16854,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -16936,7 +16865,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -16944,7 +16874,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -16954,7 +16885,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -16964,19 +16896,22 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -16987,7 +16922,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -16995,12 +16931,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "1.0.0", @@ -17009,37 +16947,44 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -17048,7 +16993,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -17056,22 +17002,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -17079,7 +17029,8 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "1.0.2", @@ -17088,14 +17039,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -17103,7 +17056,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -17111,17 +17065,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -17135,7 +17092,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -17147,7 +17105,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -17155,7 +17114,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -17163,7 +17123,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -17172,7 +17133,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17182,7 +17144,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17190,12 +17153,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -17207,7 +17172,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -17217,7 +17183,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -17225,12 +17192,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -17238,7 +17207,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -17247,7 +17217,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "0.2.2" @@ -17255,27 +17226,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -17288,7 +17264,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -17297,7 +17274,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -17305,17 +17283,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -17326,7 +17307,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -17336,7 +17318,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -17344,12 +17327,14 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "2.0.6", @@ -17359,14 +17344,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "3.0.0", @@ -17375,7 +17362,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -17383,7 +17371,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17393,7 +17382,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17403,17 +17393,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -17422,12 +17415,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -17435,12 +17430,14 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -17448,24 +17445,28 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -17473,7 +17474,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -17481,14 +17483,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "1.0.0", @@ -17498,19 +17502,22 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -17518,17 +17525,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -17536,12 +17546,14 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17549,7 +17561,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -17557,7 +17570,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { "is-number": "4.0.0" @@ -17565,14 +17579,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -17580,49 +17596,58 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -17630,12 +17655,14 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -17643,7 +17670,8 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "6.26.1", @@ -17657,7 +17685,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -17668,7 +17697,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -17678,7 +17708,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { "debug": "3.1.0", @@ -17690,7 +17721,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -17700,7 +17732,8 @@ }, "istanbul-reports": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -17708,17 +17741,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17726,13 +17762,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -17740,7 +17778,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -17752,7 +17791,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -17761,24 +17801,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -17786,7 +17830,8 @@ }, "lru-cache": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -17795,12 +17840,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "1.0.1" @@ -17808,7 +17855,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -17816,12 +17864,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -17829,7 +17879,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { "source-map": "0.6.1" @@ -17837,14 +17888,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -17864,12 +17917,14 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -17877,12 +17932,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -17891,7 +17948,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17901,7 +17959,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -17909,12 +17968,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -17933,24 +17994,28 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -17961,7 +18026,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -17969,7 +18035,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -17977,17 +18044,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -17997,7 +18067,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18005,7 +18076,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18013,7 +18085,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18021,7 +18094,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -18031,7 +18105,8 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -18040,7 +18115,8 @@ }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "3.0.1" @@ -18048,14 +18124,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -18064,7 +18142,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "3.0.1" @@ -18072,14 +18151,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -18087,7 +18168,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -18096,12 +18178,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -18111,12 +18195,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "1.0.0" @@ -18124,7 +18210,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.2.0" @@ -18132,12 +18219,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -18148,7 +18237,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -18156,12 +18246,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -18169,22 +18261,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18194,17 +18290,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -18212,7 +18311,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -18220,7 +18320,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -18231,22 +18332,26 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -18255,7 +18360,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18263,7 +18369,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18273,7 +18380,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18283,7 +18391,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -18293,7 +18402,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -18302,7 +18412,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -18313,12 +18424,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -18326,7 +18439,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -18335,22 +18449,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -18358,32 +18476,38 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -18392,7 +18516,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -18400,7 +18525,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "0.1.15" @@ -18408,17 +18534,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18429,7 +18558,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18439,7 +18569,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -18447,22 +18578,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -18477,7 +18612,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18485,7 +18621,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18493,7 +18630,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18501,7 +18639,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18511,7 +18650,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18519,7 +18659,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18529,7 +18670,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -18539,14 +18681,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "1.0.0", @@ -18556,7 +18700,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -18564,14 +18709,16 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18579,12 +18726,14 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { "atob": "2.0.3", @@ -18596,12 +18745,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -18614,7 +18765,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -18623,12 +18775,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -18637,12 +18791,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -18650,7 +18806,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "0.2.5", @@ -18659,7 +18816,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18667,7 +18825,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18675,7 +18834,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18685,7 +18845,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18693,7 +18854,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18703,7 +18865,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -18713,14 +18876,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -18729,12 +18894,14 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -18744,7 +18911,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -18752,7 +18920,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -18760,17 +18929,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { "arrify": "1.0.1", @@ -18782,17 +18954,20 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "braces": { "version": "2.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { "arr-flatten": "1.1.0", @@ -18811,7 +18986,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -18819,7 +18995,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18829,7 +19006,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "2.6.9", @@ -18843,7 +19021,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18851,7 +19030,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18859,7 +19039,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -18869,14 +19050,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "0.3.2", @@ -18891,7 +19074,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -18899,7 +19083,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18909,7 +19094,8 @@ }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18920,7 +19106,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18930,7 +19117,8 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18938,7 +19126,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18948,7 +19137,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18956,7 +19146,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18966,7 +19157,8 @@ }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18974,7 +19166,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18984,17 +19177,20 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "micromatch": { "version": "3.1.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -19016,12 +19212,14 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -19029,7 +19227,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "2.0.2", @@ -19040,7 +19239,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "3.0.0", @@ -19049,7 +19249,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -19059,12 +19260,14 @@ }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -19075,7 +19278,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -19089,13 +19293,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "3.1.0", @@ -19106,7 +19312,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19114,7 +19321,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -19127,7 +19335,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "0.3.1", @@ -19136,7 +19345,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "2.0.6", @@ -19146,7 +19356,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -19156,24 +19367,28 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -19181,14 +19396,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -19197,7 +19414,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -19205,23 +19423,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -19230,7 +19452,8 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -19238,7 +19461,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -19250,12 +19474,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -19265,17 +19491,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { "cliui": "4.0.0", @@ -19294,17 +19523,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -19314,7 +19546,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -19322,7 +19555,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -19332,7 +19566,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "4.1.0" @@ -19340,7 +19575,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } From 69a7671f17a57ab0851bc2ca30abb65948b805f6 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 2 May 2018 08:30:34 -0700 Subject: [PATCH 186/820] chore: lock files maintenance (#84) * chore: lock files maintenance * chore: lock files maintenance --- .../nodejs-datastore/package-lock.json | 2910 ++++++---------- .../samples/package-lock.json | 2911 ++++++----------- 2 files changed, 2021 insertions(+), 3800 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index b98bb10d026..91413da4e70 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -100,7 +100,7 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.3", + "stream-events": "1.0.4", "string-format-obj": "1.1.1", "through2": "2.0.3" }, @@ -156,9 +156,9 @@ "dev": true }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "2.1.1", @@ -172,6 +172,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, "nyc": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", @@ -209,8 +215,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -220,26 +225,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -247,14 +248,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -262,32 +261,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -297,8 +291,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -313,8 +306,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -322,8 +314,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -332,8 +323,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -345,8 +335,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -362,8 +351,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -374,20 +362,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -396,8 +381,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -407,14 +391,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -424,15 +406,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -442,8 +422,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -455,8 +434,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -467,8 +445,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -476,38 +453,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -516,8 +487,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -525,20 +495,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -546,8 +513,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -555,8 +521,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -564,20 +529,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -591,8 +553,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -604,8 +565,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -613,8 +573,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -622,8 +581,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -631,14 +589,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -650,8 +606,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -661,8 +616,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -670,14 +624,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -685,8 +637,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -695,26 +646,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -727,8 +674,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -737,8 +683,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -746,20 +691,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -770,8 +712,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -781,8 +722,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -790,26 +730,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -818,14 +754,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -833,26 +767,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -860,14 +790,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -875,20 +803,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -896,8 +821,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -905,8 +829,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -914,8 +837,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -923,44 +845,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -968,14 +883,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -983,8 +896,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -998,8 +910,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -1010,8 +921,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -1021,8 +931,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -1034,8 +943,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -1045,8 +953,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -1054,20 +961,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1075,15 +979,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -1091,8 +993,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1104,8 +1005,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -1114,28 +1014,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -1143,8 +1039,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -1153,8 +1048,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -1162,14 +1056,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -1177,8 +1069,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -1186,8 +1077,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -1207,14 +1097,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -1222,14 +1110,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1237,14 +1123,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -1255,8 +1139,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -1264,8 +1147,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -1273,20 +1155,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -1295,8 +1174,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -1304,8 +1182,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -1314,14 +1191,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -1331,20 +1206,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -1352,8 +1224,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -1364,8 +1235,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -1373,8 +1243,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -1382,26 +1251,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1411,20 +1276,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -1432,8 +1294,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -1441,8 +1302,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1453,20 +1313,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -1475,8 +1332,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -1484,8 +1340,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1495,8 +1350,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1506,8 +1360,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -1517,8 +1370,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -1527,8 +1379,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1539,14 +1390,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -1554,26 +1403,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -1581,26 +1426,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1609,8 +1450,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -1618,20 +1458,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -1639,32 +1476,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -1677,8 +1509,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -1686,20 +1517,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1708,20 +1536,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -1731,8 +1556,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1740,8 +1564,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -1749,20 +1572,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -1774,20 +1594,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1798,8 +1615,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1813,15 +1629,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -1830,8 +1644,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -1839,27 +1652,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -1868,8 +1677,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1881,14 +1689,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1898,20 +1704,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -1930,8 +1733,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -1941,8 +1743,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1956,8 +1757,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -1965,8 +1765,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -2005,8 +1804,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -2035,7 +1834,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -2181,9 +1980,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "8.10.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.8.tgz", - "integrity": "sha512-BvcUxNZe9JgiiUVivtiQt3NrPVu9OAQzkxR1Ko9ESftCYU7V6Np5kpDzQwxd+34lsop7SNRdL292Flv52OvCaw==" + "version": "8.10.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.11.tgz", + "integrity": "sha512-FM7tvbjbn2BUzM/Qsdk9LUGq3zeh7li8NcHoS398dBzqLzfmSqSP1+yKbMRTCcZzLcu2JAR5lq3IKIEYkto7iQ==" }, "acorn": { "version": "4.0.13", @@ -2531,7 +2330,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "async-each": { @@ -2546,9 +2345,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" }, "auto-bind": { "version": "1.2.0", @@ -2575,12 +2374,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2633,18 +2432,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.5", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-regex": { @@ -2769,9 +2568,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2787,7 +2586,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2817,7 +2616,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2905,7 +2704,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -3020,9 +2819,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -3103,11 +2902,11 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", "core-js": "2.5.5", "home-or-tmp": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -3143,7 +2942,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -3160,7 +2959,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.5" + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -3182,7 +2981,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -3289,7 +3088,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -3569,14 +3368,14 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" } }, "chardet": { @@ -3593,7 +3392,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.2", + "fsevents": "1.2.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3791,163 +3590,14 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", - "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.1.tgz", + "integrity": "sha512-0TjnXrbvcPzAkRPv/Y5D8aZju/M5adkFxShRyMMgDReB8EV9nF4XMERXs6ajgLA1di9LUFW2tgePDQd2JPWy7g==", "dev": true, "requires": { "argv": "0.0.2", - "request": "2.81.0", + "request": "2.85.0", "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - } } }, "collection-visit": { @@ -4228,9 +3878,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "deep-is": { @@ -4478,7 +4128,7 @@ "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", "requires": { "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "empower": { @@ -4691,7 +4341,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -4704,15 +4354,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.4.0", - "ignore": "3.3.7", + "globals": "11.5.0", + "ignore": "3.3.8", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -4736,9 +4386,9 @@ "dev": true }, "globals": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", - "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, "strip-ansi": { @@ -4775,7 +4425,7 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.7", + "ignore": "3.3.8", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -5187,9 +4837,9 @@ "dev": true }, "fast-glob": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.0.tgz", - "integrity": "sha512-4F75PTznkNtSKs2pbhtBwRkw8sRwa7LfXx5XaQJOe4IQ6yTjceLDTwM5gj1s80R2t/5WeDC1gVfm3jLE+l39Tw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.1.tgz", + "integrity": "sha512-wSyW1TBK3ia5V+te0rGPXudeMHoUQW6O5Y9oATiaGhpENmEifPDlOdhpsnlj5HoG6ttIvGiY1DdCmI9X2xGMhg==", "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", "glob-parent": "3.1.0", @@ -5386,9 +5036,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", - "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "dev": true, "optional": true, "requires": { @@ -6068,9 +5718,9 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.0", + "fast-glob": "2.2.1", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -6108,26 +5758,13 @@ "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.0", + "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.10.1", + "grpc": "1.11.0", "is-stream-ended": "0.1.4", - "lodash": "4.17.5", + "lodash": "4.17.10", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "google-auto-auth": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.0.tgz", - "integrity": "sha512-R6m473OqgZacPvlidJ0aownTlUWyLy654ugjKSXyi1ffIicXlXg3wMfse9T9zxqG6w01q6K1iG+b7dImMkVJ2Q==", - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - } } }, "google-p12-pem": { @@ -6157,7 +5794,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -6183,7 +5820,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -6219,11 +5856,11 @@ "dev": true }, "grpc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.10.1.tgz", - "integrity": "sha512-xmhA11h2XhqpSVzDAmoQAYdNQ+swILXpKOiRpAEQ2kX55ioxVADc6v7SkS4zQBxm4klhQHgGqpGKvoL6LGx4VQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.0.tgz", + "integrity": "sha512-pTJjV/eatBQ6Rhc/jWNmUW9jE8fPrhcMYSWDSyf4l7ah1U3sIe4eIjqI/a3sm0zKbM5CuovV0ESrc+b04kr4Ig==", "requires": { - "lodash": "4.17.5", + "lodash": "4.17.10", "nan": "2.10.0", "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" @@ -6231,13 +5868,11 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "bundled": true }, "ajv": { "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "bundled": true, "requires": { "co": "4.6.0", "fast-deep-equal": "1.1.0", @@ -6247,57 +5882,47 @@ }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "bundled": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "bundled": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "asn1": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "bundled": true }, "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "bundled": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "bundled": true }, "aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "bundled": true }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.7.0", + "bundled": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "bundled": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "bundled": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -6305,24 +5930,21 @@ }, "block-stream": { "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "bundled": true, "requires": { "inherits": "2.0.3" } }, "boom": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "bundled": true, "requires": { "hoek": "4.2.1" } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "bundled": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -6330,54 +5952,45 @@ }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "bundled": true }, "co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "bundled": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "bundled": true }, "combined-stream": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "bundled": true, "requires": { "delayed-stream": "1.0.0" } }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "bundled": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "bundled": true }, "cryptiles": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "bundled": true, "requires": { "boom": "5.2.0" }, "dependencies": { "boom": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "bundled": true, "requires": { "hoek": "4.2.1" } @@ -6386,44 +5999,37 @@ }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "requires": { "assert-plus": "1.0.0" } }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + "bundled": true }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "bundled": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "bundled": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "bundled": true }, "ecc-jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "bundled": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -6431,33 +6037,27 @@ }, "extend": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "bundled": true }, "extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "bundled": true }, "fast-deep-equal": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "bundled": true }, "fast-json-stable-stringify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "bundled": true }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "bundled": true }, "form-data": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "bundled": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.6", @@ -6466,13 +6066,11 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "bundled": true }, "fstream": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", @@ -6482,8 +6080,7 @@ }, "fstream-ignore": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "requires": { "fstream": "1.0.11", "inherits": "2.0.3", @@ -6492,8 +6089,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "requires": { "aproba": "1.2.0", "console-control-strings": "1.1.0", @@ -6507,16 +6103,14 @@ }, "getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "bundled": true, "requires": { "assert-plus": "1.0.0" } }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -6528,18 +6122,15 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "bundled": true }, "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "bundled": true }, "har-validator": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "bundled": true, "requires": { "ajv": "5.5.2", "har-schema": "2.0.0" @@ -6547,13 +6138,11 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "bundled": true }, "hawk": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "bundled": true, "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", @@ -6563,13 +6152,11 @@ }, "hoek": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + "bundled": true }, "http-signature": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "bundled": true, "requires": { "assert-plus": "1.0.0", "jsprim": "1.4.1", @@ -6578,8 +6165,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -6587,62 +6173,51 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "requires": { "number-is-nan": "1.0.1" } }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "bundled": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "bundled": true }, "isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "bundled": true }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "optional": true }, "json-schema": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "bundled": true }, "json-schema-traverse": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "bundled": true }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "bundled": true }, "jsprim": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "bundled": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -6652,54 +6227,46 @@ }, "mime-db": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "bundled": true }, "mime-types": { "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "bundled": true, "requires": { "mime-db": "1.33.0" } }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "bundled": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "bundled": true } } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "bundled": true }, "node-pre-gyp": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.7.0.tgz", - "integrity": "sha1-Va7/uu2TtQ0KRlfUaRmM2ArJ3zY=", + "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", @@ -6715,8 +6282,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "requires": { "abbrev": "1.1.1", "osenv": "0.1.5" @@ -6724,8 +6290,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "requires": { "are-we-there-yet": "1.1.4", "console-control-strings": "1.1.0", @@ -6735,41 +6300,34 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "bundled": true }, "oauth-sign": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "bundled": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "bundled": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "requires": { "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "bundled": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -6777,18 +6335,15 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "bundled": true }, "performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "bundled": true }, "protobufjs": { "version": "5.0.2", @@ -6803,18 +6358,15 @@ }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "bundled": true }, "qs": { "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "bundled": true }, "rc": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "bundled": true, "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -6823,26 +6375,24 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "bundled": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, "request": { "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "bundled": true, "requires": { "aws-sign2": "0.7.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -6867,44 +6417,37 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "bundled": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "bundled": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "bundled": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "bundled": true }, "sntp": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "bundled": true, "requires": { "hoek": "4.2.1" } }, "sshpk": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "bundled": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -6918,8 +6461,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -6927,35 +6469,30 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "bundled": true, "requires": { "safe-buffer": "5.1.1" } }, "stringstream": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "bundled": true }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "requires": { "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "bundled": true }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "bundled": true, "requires": { "block-stream": "0.0.9", "fstream": "1.0.11", @@ -6964,14 +6501,13 @@ }, "tar-pack": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", - "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", + "bundled": true, "requires": { "debug": "2.6.9", "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" @@ -6979,45 +6515,38 @@ }, "tough-cookie": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "bundled": true, "requires": { "punycode": "1.4.1" } }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "bundled": true, "requires": { "safe-buffer": "5.1.1" } }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "bundled": true, "optional": true }, "uid-number": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + "bundled": true }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "bundled": true }, "uuid": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "bundled": true }, "verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "bundled": true, "requires": { "assert-plus": "1.0.0", "core-util-is": "1.0.2", @@ -7026,16 +6555,14 @@ }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "requires": { "string-width": "1.0.2" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "bundled": true } } }, @@ -7252,7 +6779,7 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "iconv-lite": { @@ -7265,9 +6792,9 @@ } }, "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" }, "ignore-by-default": { "version": "1.0.1", @@ -7334,7 +6861,7 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.22.0", + "moment": "2.22.1", "sanitize-html": "1.18.2" } }, @@ -7345,12 +6872,12 @@ "dev": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -7897,15 +7424,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -7932,12 +7450,6 @@ "graceful-fs": "4.1.11" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7963,7 +7475,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "jws": { @@ -7973,7 +7485,7 @@ "requires": { "base64url": "2.0.0", "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "keyv": { @@ -8073,9 +7585,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -8519,9 +8031,9 @@ } }, "mocha": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.0.tgz", - "integrity": "sha512-d6RWgYPILd+AoWVOxiD0UwUqRicnE1inTxMr40CXOgqYve1MvnKntoLAtLIcxjEeVjEoYYTe5QAq3mUc6/ySjQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.1.tgz", + "integrity": "sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw==", "dev": true, "requires": { "browser-stdout": "1.3.1", @@ -8560,9 +8072,9 @@ "dev": true }, "moment": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", - "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==", "dev": true }, "ms": { @@ -8645,9 +8157,9 @@ "dev": true }, "nise": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", - "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", + "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -8717,9 +8229,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", - "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.1.tgz", + "integrity": "sha512-EGePURSKUEpS1jWnEKAMhY+GWZzi7JC+f8iBDOATaOsLZW5hM/9eYx2dHGaEXa1ITvMm44CJugMksvP3NwMQMw==", "dev": true, "requires": { "archy": "1.0.0", @@ -8737,7 +8249,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -8753,8 +8265,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -8764,26 +8275,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -8791,14 +8298,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -8806,50 +8311,42 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.0", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -8859,8 +8356,7 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -8875,8 +8371,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -8884,18 +8379,16 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8907,8 +8400,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -8918,14 +8410,13 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", + "invariant": "2.2.4", "lodash": "4.17.5" } }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8936,20 +8427,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "1.0.1", @@ -8963,25 +8451,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -8990,8 +8506,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -9001,14 +8516,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "1.0.0", @@ -9024,16 +8537,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -9043,15 +8554,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9061,8 +8570,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -9074,8 +8582,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -9086,94 +8593,33 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, "dev": true, "optional": true } @@ -9181,14 +8627,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "1.0.0", @@ -9197,44 +8641,37 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.5", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9243,8 +8680,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9252,26 +8688,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -9279,26 +8711,54 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -9306,8 +8766,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -9315,20 +8774,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -9342,8 +8798,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -9355,8 +8810,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -9364,8 +8818,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -9373,8 +8826,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -9383,8 +8835,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -9394,8 +8845,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -9403,14 +8853,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -9422,8 +8870,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -9433,8 +8880,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -9442,14 +8888,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -9457,8 +8901,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -9467,8 +8910,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "0.2.2" @@ -9476,32 +8918,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -9514,8 +8951,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -9524,8 +8960,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -9533,20 +8968,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -9557,8 +8989,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -9568,8 +8999,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -9577,14 +9007,12 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -9594,16 +9022,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -9612,8 +9038,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9621,8 +9046,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9632,8 +9056,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9643,20 +9066,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -9665,14 +9085,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -9680,94 +9098,68 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "bundled": true, "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -9775,20 +9167,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -9796,14 +9185,12 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -9811,8 +9198,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9820,8 +9206,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "4.0.0" @@ -9829,16 +9214,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -9846,58 +9229,49 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -9905,14 +9279,12 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -9920,8 +9292,7 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.1", @@ -9935,8 +9306,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -9947,8 +9317,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -9958,8 +9327,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -9971,8 +9339,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9981,9 +9348,8 @@ } }, "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -9991,20 +9357,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10012,15 +9375,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -10028,8 +9389,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10041,8 +9401,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -10051,28 +9410,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -10080,8 +9435,7 @@ }, "lru-cache": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -10090,14 +9444,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "1.0.1" @@ -10105,8 +9457,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -10114,14 +9465,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -10129,8 +9478,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "0.6.1" @@ -10138,16 +9486,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -10167,14 +9513,12 @@ }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -10182,14 +9526,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2", @@ -10198,8 +9540,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -10209,8 +9550,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -10218,14 +9558,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -10244,28 +9582,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -10276,8 +9610,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -10285,8 +9618,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -10294,20 +9626,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -10317,56 +9646,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10374,16 +9664,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -10392,8 +9680,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10401,16 +9688,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -10418,8 +9703,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -10428,14 +9712,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -10445,14 +9727,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "1.0.0" @@ -10460,8 +9740,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.2.0" @@ -10469,14 +9748,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -10487,8 +9764,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -10496,14 +9772,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -10511,26 +9785,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10540,20 +9810,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -10561,8 +9828,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -10570,8 +9836,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -10582,26 +9847,22 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -10610,8 +9871,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10619,8 +9879,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10630,8 +9889,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10641,8 +9899,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -10652,8 +9909,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -10662,8 +9918,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -10674,14 +9929,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -10689,8 +9942,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -10699,26 +9951,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -10726,38 +9974,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -10766,8 +10008,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -10775,8 +10016,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "0.1.15" @@ -10784,20 +10024,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -10808,8 +10045,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10819,8 +10055,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -10828,119 +10063,55 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "0.11.2", "debug": "2.6.9", "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "is-descriptor": "0.1.6" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "extend-shallow": { + "version": "2.0.1", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-extendable": "0.1.1" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "1.0.0", @@ -10950,25 +10121,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10976,17 +10175,15 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "bundled": true, "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -10995,14 +10192,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -11015,8 +10210,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -11025,14 +10219,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -11041,14 +10233,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -11056,8 +10246,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "0.2.5", @@ -11066,76 +10255,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -11144,14 +10274,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11161,8 +10289,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11170,8 +10297,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -11179,24 +10305,21 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -11204,29 +10327,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -11234,19 +10352,9 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11256,8 +10364,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "2.6.9", @@ -11271,8 +10378,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11280,17 +10386,51 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11300,16 +10440,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "bundled": true, "dev": true, "requires": { "array-unique": "0.3.2", @@ -11324,8 +10462,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11333,8 +10470,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11344,8 +10480,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11356,8 +10491,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11366,49 +10500,34 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11416,8 +10535,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11427,25 +10545,22 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -11462,14 +10577,12 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11477,8 +10590,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "2.0.2", @@ -11489,8 +10601,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -11499,8 +10610,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11510,14 +10620,12 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11528,8 +10636,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11543,15 +10650,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -11562,8 +10667,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11571,8 +10675,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11585,8 +10688,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "0.3.1", @@ -11595,8 +10697,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -11606,8 +10707,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -11617,28 +10717,24 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -11646,16 +10742,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -11664,8 +10758,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -11673,27 +10766,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -11702,8 +10791,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11711,8 +10799,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -11724,14 +10811,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -11741,20 +10826,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { "cliui": "4.0.0", @@ -11773,20 +10855,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "bundled": true, "dev": true, "requires": { "string-width": "2.1.1", @@ -11796,8 +10875,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11805,8 +10883,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -11816,8 +10893,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -11825,8 +10901,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -12100,7 +11175,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -12305,14 +11380,14 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", - "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "source-map": { @@ -12451,9 +11526,9 @@ "dev": true }, "prettier": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.0.tgz", - "integrity": "sha512-Wz0SMncgaglBzDcohH3ZIAi4nVpzOIEweFzCOmgVEoRSeO72b4dcKGfgxoRGVMaFlh1r7dlVaJ+f3CIHfeH6xg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", "dev": true }, "pretty-ms": { @@ -12517,7 +11592,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.8", + "@types/node": "8.10.11", "long": "4.0.0" } }, @@ -12591,12 +11666,12 @@ } }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -12657,7 +11732,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -12748,8 +11823,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -12758,7 +11833,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -12832,7 +11907,7 @@ "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", @@ -13000,9 +12075,9 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -13030,14 +12105,14 @@ "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", "dev": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.21", + "postcss": "6.0.22", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -13127,8 +12202,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -13292,7 +12367,7 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "requires": { - "atob": "2.1.0", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -13300,11 +12375,12 @@ } }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -13426,9 +12502,9 @@ } }, "stream-events": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.3.tgz", - "integrity": "sha512-SvnBCMhEBQSJml4/ImlWkzGWgchjo1tVxnoBUOa1i1g3BsYNWz4W6a9Hc8VhqfmwJiEGu6tLrGdNRm/K/I4YXw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", + "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { "stubs": "3.0.0" } @@ -13470,7 +12546,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "stringifier": { @@ -13538,9 +12614,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -13600,13 +12676,13 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -13634,8 +12710,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.2", - "lodash": "4.17.5", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -13816,7 +12892,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -14057,13 +13133,13 @@ "dev": true }, "update-notifier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", - "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 3231d8a4b2b..58c291d93aa 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -96,9 +96,9 @@ "lodash.merge": "4.6.1", "prop-assign": "1.0.0", "propprop": "0.3.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "split-array-stream": "2.0.0", - "stream-events": "1.0.3", + "stream-events": "1.0.4", "through2": "2.0.3" }, "dependencies": { @@ -115,7 +115,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -183,7 +183,7 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.3", + "stream-events": "1.0.4", "string-format-obj": "1.1.1", "through2": "2.0.3" }, @@ -233,7 +233,7 @@ "bundled": true }, "cliui": { - "version": "4.0.0", + "version": "4.1.0", "bundled": true, "requires": { "string-width": "2.1.1", @@ -245,6 +245,10 @@ "version": "2.0.0", "bundled": true }, + "lodash": { + "version": "4.17.5", + "bundled": true + }, "nyc": { "version": "11.4.1", "bundled": true, @@ -1656,8 +1660,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -1680,7 +1684,7 @@ "version": "11.0.0", "bundled": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -1800,7 +1804,7 @@ "bundled": true }, "@types/node": { - "version": "8.10.8", + "version": "8.10.11", "bundled": true }, "acorn": { @@ -2074,7 +2078,7 @@ "version": "2.6.0", "bundled": true, "requires": { - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "async-each": { @@ -2086,7 +2090,7 @@ "bundled": true }, "atob": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true }, "auto-bind": { @@ -2110,12 +2114,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2168,18 +2172,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.5", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-regex": { @@ -2279,7 +2283,7 @@ } }, "babel-core": { - "version": "6.26.0", + "version": "6.26.3", "bundled": true, "requires": { "babel-code-frame": "6.26.0", @@ -2295,7 +2299,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2321,7 +2325,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2393,7 +2397,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -2484,7 +2488,7 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", + "version": "6.26.2", "bundled": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -2551,11 +2555,11 @@ "version": "6.26.0", "bundled": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", "core-js": "2.5.5", "home-or-tmp": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -2585,7 +2589,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -2600,7 +2604,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.5" + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -2618,7 +2622,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -2708,7 +2712,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -2937,12 +2941,12 @@ } }, "chalk": { - "version": "2.3.2", + "version": "2.4.1", "bundled": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" } }, "chardet": { @@ -2955,7 +2959,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.2", + "fsevents": "1.2.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3110,131 +3114,12 @@ "bundled": true }, "codecov": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "requires": { "argv": "0.0.2", - "request": "2.81.0", + "request": "2.85.0", "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "bundled": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-schema": { - "version": "1.0.5", - "bundled": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "performance-now": { - "version": "0.2.0", - "bundled": true - }, - "qs": { - "version": "6.4.0", - "bundled": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - } } }, "collection-visit": { @@ -3459,7 +3344,7 @@ "bundled": true }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true }, "deep-is": { @@ -3661,7 +3546,7 @@ "bundled": true, "requires": { "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "empower": { @@ -3832,7 +3717,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -3845,15 +3730,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.4.0", - "ignore": "3.3.7", + "globals": "11.5.0", + "ignore": "3.3.8", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -3875,7 +3760,7 @@ "bundled": true }, "globals": { - "version": "11.4.0", + "version": "11.5.0", "bundled": true }, "strip-ansi": { @@ -3904,7 +3789,7 @@ "version": "6.0.1", "bundled": true, "requires": { - "ignore": "3.3.7", + "ignore": "3.3.8", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -4249,7 +4134,7 @@ "bundled": true }, "fast-glob": { - "version": "2.2.0", + "version": "2.2.1", "bundled": true, "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", @@ -4532,9 +4417,9 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.0", + "fast-glob": "2.2.1", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -4569,25 +4454,13 @@ "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.0", + "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.10.1", + "grpc": "1.11.0", "is-stream-ended": "0.1.4", - "lodash": "4.17.5", + "lodash": "4.17.10", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "google-auto-auth": { - "version": "0.10.0", - "bundled": true, - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - } } }, "google-p12-pem": { @@ -4614,7 +4487,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -4638,7 +4511,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -4666,10 +4539,10 @@ "bundled": true }, "grpc": { - "version": "1.10.1", + "version": "1.11.0", "bundled": true, "requires": { - "lodash": "4.17.5", + "lodash": "4.17.10", "nan": "2.10.0", "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" @@ -4702,7 +4575,7 @@ "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "asn1": { @@ -4722,7 +4595,7 @@ "bundled": true }, "aws4": { - "version": "1.6.0", + "version": "1.7.0", "bundled": true }, "balanced-match": { @@ -4752,7 +4625,7 @@ } }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.11", "bundled": true, "requires": { "balanced-match": "1.0.0", @@ -5049,7 +4922,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -5183,7 +5056,7 @@ } }, "readable-stream": { - "version": "2.3.5", + "version": "2.3.6", "bundled": true, "requires": { "core-util-is": "1.0.2", @@ -5191,7 +5064,7 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -5200,7 +5073,7 @@ "bundled": true, "requires": { "aws-sign2": "0.7.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -5277,7 +5150,7 @@ } }, "string_decoder": { - "version": "1.0.3", + "version": "1.1.1", "bundled": true, "requires": { "safe-buffer": "5.1.1" @@ -5315,7 +5188,7 @@ "fstream": "1.0.11", "fstream-ignore": "1.0.5", "once": "1.4.0", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "rimraf": "2.6.2", "tar": "2.2.1", "uid-number": "0.0.6" @@ -5548,7 +5421,7 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "iconv-lite": { @@ -5559,7 +5432,7 @@ } }, "ignore": { - "version": "3.3.7", + "version": "3.3.8", "bundled": true }, "ignore-by-default": { @@ -5610,7 +5483,7 @@ "version": "1.3.2", "bundled": true, "requires": { - "moment": "2.22.0", + "moment": "2.22.1", "sanitize-html": "1.18.2" } }, @@ -5619,12 +5492,12 @@ "bundled": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -6050,13 +5923,6 @@ "version": "0.3.1", "bundled": true }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "bundled": true @@ -6076,10 +5942,6 @@ "graceful-fs": "4.1.11" } }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, "jsprim": { "version": "1.4.1", "bundled": true, @@ -6101,7 +5963,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "jws": { @@ -6110,7 +5972,7 @@ "requires": { "base64url": "2.0.0", "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "keyv": { @@ -6190,7 +6052,7 @@ } }, "lodash": { - "version": "4.17.5", + "version": "4.17.10", "bundled": true }, "lodash.clonedeep": { @@ -6536,7 +6398,7 @@ } }, "mocha": { - "version": "5.1.0", + "version": "5.1.1", "bundled": true, "requires": { "browser-stdout": "1.3.1", @@ -6570,7 +6432,7 @@ "bundled": true }, "moment": { - "version": "2.22.0", + "version": "2.22.1", "bundled": true }, "ms": { @@ -6638,7 +6500,7 @@ "bundled": true }, "nise": { - "version": "1.3.2", + "version": "1.3.3", "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -6696,7 +6558,7 @@ "bundled": true }, "nyc": { - "version": "11.6.0", + "version": "11.7.1", "bundled": true, "requires": { "archy": "1.0.0", @@ -6714,7 +6576,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -6792,7 +6654,7 @@ "bundled": true }, "atob": { - "version": "2.0.3", + "version": "2.1.0", "bundled": true }, "babel-code-frame": { @@ -6829,7 +6691,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -6855,7 +6717,7 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", + "invariant": "2.2.4", "lodash": "4.17.5" } }, @@ -6897,9 +6759,36 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true } } }, @@ -6996,54 +6885,9 @@ "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, "isobject": { "version": "3.0.1", "bundled": true - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -7097,7 +6941,7 @@ "bundled": true }, "core-js": { - "version": "2.5.3", + "version": "2.5.5", "bundled": true }, "cross-spawn": { @@ -7142,11 +6986,38 @@ "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true - } - } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } }, "detect-indent": { "version": "4.0.0", @@ -7439,7 +7310,7 @@ "bundled": true }, "invariant": { - "version": "2.2.3", + "version": "2.2.4", "bundled": true, "requires": { "loose-envify": "1.3.1" @@ -7450,16 +7321,10 @@ "bundled": true }, "is-accessor-descriptor": { - "version": "1.0.0", + "version": "0.1.6", "bundled": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -7478,29 +7343,23 @@ } }, "is-data-descriptor": { - "version": "1.0.0", + "version": "0.1.4", "bundled": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", + "version": "0.1.6", "bundled": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", + "version": "5.1.0", "bundled": true } } @@ -7674,7 +7533,7 @@ } }, "istanbul-reports": { - "version": "1.3.0", + "version": "1.4.0", "bundled": true, "requires": { "handlebars": "4.0.11" @@ -7938,35 +7797,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } } } }, @@ -8360,51 +8190,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -8424,9 +8209,36 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true } } }, @@ -8445,7 +8257,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -8513,51 +8325,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -8609,7 +8376,7 @@ "bundled": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -8624,16 +8391,14 @@ "bundled": true }, "braces": { - "version": "2.3.1", + "version": "2.3.2", "bundled": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -8641,13 +8406,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "bundled": true, @@ -8684,6 +8442,38 @@ "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "bundled": true, @@ -8749,35 +8539,26 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -8805,12 +8586,12 @@ "bundled": true }, "micromatch": { - "version": "3.1.9", + "version": "3.1.10", "bundled": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -9331,7 +9112,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -9491,12 +9272,12 @@ "bundled": true }, "postcss": { - "version": "6.0.21", + "version": "6.0.22", "bundled": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "source-map": { @@ -9616,7 +9397,7 @@ "bundled": true }, "prettier": { - "version": "1.12.0", + "version": "1.12.1", "bundled": true }, "pretty-ms": { @@ -9668,7 +9449,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.8", + "@types/node": "8.10.11", "long": "4.0.0" } }, @@ -9729,10 +9510,10 @@ } }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -9782,7 +9563,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -9854,15 +9635,15 @@ "version": "3.3.2", "bundled": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { "version": "3.1.0", "bundled": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -9923,7 +9704,7 @@ "oauth-sign": "0.8.2", "performance-now": "2.1.0", "qs": "6.5.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", @@ -10053,7 +9834,7 @@ } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true }, "safe-regex": { @@ -10075,14 +9856,14 @@ "version": "1.18.2", "bundled": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.21", + "postcss": "6.0.22", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -10152,8 +9933,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -10294,7 +10075,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.1.0", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -10302,9 +10083,10 @@ } }, "source-map-support": { - "version": "0.5.4", + "version": "0.5.5", "bundled": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -10404,7 +10186,7 @@ } }, "stream-events": { - "version": "1.0.3", + "version": "1.0.4", "bundled": true, "requires": { "stubs": "3.0.0" @@ -10439,7 +10221,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "stringifier": { @@ -10493,7 +10275,7 @@ "bundled": true }, "superagent": { - "version": "3.8.2", + "version": "3.8.3", "bundled": true, "requires": { "component-emitter": "1.2.1", @@ -10543,11 +10325,11 @@ "bundled": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { - "version": "5.3.0", + "version": "5.4.0", "bundled": true, "requires": { "has-flag": "3.0.0" @@ -10569,8 +10351,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.2", - "lodash": "4.17.5", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -10711,7 +10493,7 @@ "version": "0.6.0", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -10907,11 +10689,11 @@ "bundled": true }, "update-notifier": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -11176,12 +10958,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -11234,24 +11016,24 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.5", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" } }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "2.1.1", @@ -11296,8 +11078,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -11307,26 +11088,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -11334,14 +11111,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -11349,32 +11124,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -11384,8 +11154,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -11400,8 +11169,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -11409,8 +11177,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -11419,8 +11186,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11432,8 +11198,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -11449,8 +11214,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11461,20 +11225,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -11483,8 +11244,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -11494,14 +11254,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -11511,15 +11269,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11529,8 +11285,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -11542,8 +11297,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11554,8 +11308,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -11563,38 +11316,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11603,8 +11350,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -11612,20 +11358,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -11633,8 +11376,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -11642,8 +11384,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -11651,20 +11392,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -11678,8 +11416,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11691,8 +11428,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -11700,8 +11436,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -11709,8 +11444,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11718,14 +11452,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -11737,8 +11469,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -11748,8 +11479,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -11757,14 +11487,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -11772,8 +11500,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -11782,26 +11509,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -11814,8 +11537,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -11824,8 +11546,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -11833,20 +11554,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -11857,8 +11575,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -11868,8 +11585,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11877,26 +11593,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -11905,14 +11617,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -11920,26 +11630,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -11947,14 +11653,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -11962,20 +11666,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11983,8 +11684,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11992,8 +11692,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -12001,8 +11700,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12010,44 +11708,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -12055,14 +11746,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -12070,8 +11759,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -12085,8 +11773,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -12097,8 +11784,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -12108,8 +11794,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -12121,8 +11806,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -12132,8 +11816,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -12141,20 +11824,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12162,15 +11842,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -12178,8 +11856,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12191,8 +11868,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -12201,28 +11877,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -12230,8 +11902,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -12240,8 +11911,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -12249,14 +11919,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -12264,8 +11932,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -12273,8 +11940,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -12294,14 +11960,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -12309,14 +11973,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -12324,14 +11986,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -12342,8 +12002,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -12351,8 +12010,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -12360,20 +12018,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -12382,8 +12037,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -12391,8 +12045,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -12401,14 +12054,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -12418,20 +12069,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -12439,8 +12087,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -12451,8 +12098,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -12460,8 +12106,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -12469,26 +12114,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12498,20 +12139,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -12519,8 +12157,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -12528,8 +12165,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12540,20 +12176,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -12562,8 +12195,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12571,8 +12203,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12582,8 +12213,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12593,8 +12223,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -12604,8 +12233,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -12614,8 +12242,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12626,14 +12253,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -12641,26 +12266,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -12668,26 +12289,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12696,8 +12313,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -12705,20 +12321,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -12726,32 +12339,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -12764,8 +12372,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -12773,20 +12380,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -12795,20 +12399,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12818,8 +12419,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12827,8 +12427,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -12836,20 +12435,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -12861,20 +12457,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12885,8 +12478,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12900,15 +12492,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -12917,8 +12507,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -12926,27 +12515,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -12955,8 +12540,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12968,14 +12552,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12985,20 +12567,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -13017,8 +12596,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -13028,8 +12606,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -13043,8 +12620,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -13052,8 +12628,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -13070,8 +12645,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -13085,9 +12660,9 @@ } }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -13107,7 +12682,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -13359,10 +12934,10 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -13416,7 +12991,7 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "slash": "1.0.0", "source-map-support": "0.4.18", "stack-utils": "1.0.1", @@ -13426,7 +13001,7 @@ "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-escapes": { @@ -13528,9 +13103,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -13785,9 +13360,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -13868,7 +13443,7 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", "core-js": "2.5.5", "home-or-tmp": "2.0.0", @@ -13989,7 +13564,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -14023,6 +13598,12 @@ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -14144,14 +13725,14 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "has-flag": { @@ -14161,9 +13742,9 @@ "dev": true }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -14179,7 +13760,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.2", + "fsevents": "1.2.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -14513,9 +14094,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "delayed-stream": { @@ -14813,9 +14394,9 @@ "dev": true }, "fsevents": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", - "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "optional": true, "requires": { "nan": "2.10.0", @@ -15399,7 +14980,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -15539,7 +15120,7 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "ignore-by-default": { @@ -16402,9 +15983,9 @@ "optional": true }, "nise": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", - "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", + "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", "requires": { "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", @@ -16467,9 +16048,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", - "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.1.tgz", + "integrity": "sha512-EGePURSKUEpS1jWnEKAMhY+GWZzi7JC+f8iBDOATaOsLZW5hM/9eYx2dHGaEXa1ITvMm44CJugMksvP3NwMQMw==", "dev": true, "requires": { "archy": "1.0.0", @@ -16487,7 +16068,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -16503,8 +16084,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -16514,26 +16094,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -16541,14 +16117,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -16556,50 +16130,42 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.0", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -16609,8 +16175,7 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -16625,8 +16190,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -16634,18 +16198,16 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -16657,8 +16219,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -16668,14 +16229,13 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", + "invariant": "2.2.4", "lodash": "4.17.5" } }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -16686,20 +16246,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "1.0.1", @@ -16713,25 +16270,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -16740,8 +16325,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -16751,14 +16335,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "1.0.0", @@ -16774,16 +16356,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -16793,15 +16373,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -16811,8 +16389,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -16824,8 +16401,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -16836,82 +16412,22 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -16922,8 +16438,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -16931,14 +16446,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "1.0.0", @@ -16947,44 +16460,37 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.5", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -16993,8 +16499,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17002,26 +16507,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -17029,26 +16530,54 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -17056,8 +16585,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -17065,20 +16593,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -17092,8 +16617,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.2", @@ -17105,8 +16629,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -17114,8 +16637,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -17123,8 +16645,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -17133,8 +16654,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17144,8 +16664,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17153,14 +16672,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -17172,8 +16689,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -17183,8 +16699,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -17192,14 +16707,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -17207,8 +16720,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -17217,8 +16729,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "0.2.2" @@ -17226,32 +16737,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -17264,8 +16770,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -17274,8 +16779,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -17283,20 +16787,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -17307,8 +16808,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -17318,8 +16818,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -17327,14 +16826,12 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -17344,16 +16841,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -17362,8 +16857,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -17371,8 +16865,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17382,8 +16875,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17393,20 +16885,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -17415,14 +16904,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -17430,94 +16917,68 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "bundled": true, "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -17525,20 +16986,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -17546,14 +17004,12 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -17561,8 +17017,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -17570,8 +17025,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "4.0.0" @@ -17579,16 +17033,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -17596,58 +17048,49 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -17655,14 +17098,12 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -17670,8 +17111,7 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.1", @@ -17685,8 +17125,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -17697,8 +17136,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -17708,8 +17146,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -17721,8 +17158,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17731,9 +17167,8 @@ } }, "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -17741,20 +17176,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17762,15 +17194,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -17778,8 +17208,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -17791,8 +17220,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -17801,28 +17229,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -17830,8 +17254,7 @@ }, "lru-cache": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -17840,14 +17263,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "1.0.1" @@ -17855,8 +17276,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -17864,14 +17284,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -17879,8 +17297,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "0.6.1" @@ -17888,16 +17305,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -17917,14 +17332,12 @@ }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -17932,14 +17345,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2", @@ -17948,8 +17359,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17959,8 +17369,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -17968,14 +17377,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -17994,28 +17401,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -18026,8 +17429,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -18035,8 +17437,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -18044,20 +17445,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -18067,56 +17465,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -18124,16 +17483,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -18142,8 +17499,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -18151,16 +17507,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -18168,8 +17522,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -18178,14 +17531,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -18195,14 +17546,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "1.0.0" @@ -18210,8 +17559,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.2.0" @@ -18219,14 +17567,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -18237,8 +17583,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -18246,14 +17591,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -18261,26 +17604,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18290,20 +17629,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -18311,8 +17647,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -18320,8 +17655,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18332,26 +17666,22 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -18360,8 +17690,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -18369,8 +17698,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18380,8 +17708,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18391,8 +17718,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -18402,8 +17728,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -18412,8 +17737,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18424,14 +17748,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -18439,8 +17761,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -18449,26 +17770,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -18476,38 +17793,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -18516,8 +17827,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -18525,8 +17835,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "0.1.15" @@ -18534,20 +17843,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18558,8 +17864,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18569,8 +17874,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -18578,26 +17882,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "0.11.2", @@ -18612,8 +17912,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18621,76 +17920,17 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "1.0.0", @@ -18700,25 +17940,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -18726,17 +17994,15 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "bundled": true, "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -18745,14 +18011,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -18765,8 +18029,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -18775,14 +18038,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -18791,14 +18052,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -18806,8 +18065,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "0.2.5", @@ -18816,76 +18074,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -18894,14 +18093,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -18911,8 +18108,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -18920,8 +18116,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -18929,24 +18124,21 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -18954,29 +18146,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -18984,19 +18171,9 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19006,8 +18183,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "2.6.9", @@ -19021,8 +18197,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -19030,17 +18205,51 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -19050,16 +18259,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "bundled": true, "dev": true, "requires": { "array-unique": "0.3.2", @@ -19074,8 +18281,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -19083,8 +18289,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19094,8 +18299,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -19106,8 +18310,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19116,49 +18319,34 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19166,8 +18354,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -19177,25 +18364,22 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -19212,14 +18396,12 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19227,8 +18409,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "2.0.2", @@ -19239,8 +18420,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -19249,8 +18429,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19260,14 +18439,12 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -19278,8 +18455,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -19293,15 +18469,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -19312,8 +18486,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19321,8 +18494,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -19335,8 +18507,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "0.3.1", @@ -19345,8 +18516,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -19356,8 +18526,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -19367,28 +18536,24 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -19396,16 +18561,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -19414,8 +18577,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -19423,27 +18585,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -19452,8 +18610,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -19461,8 +18618,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -19474,14 +18630,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -19491,20 +18645,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { "cliui": "4.0.0", @@ -19523,20 +18674,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "bundled": true, "dev": true, "requires": { "string-width": "2.1.1", @@ -19546,8 +18694,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -19555,8 +18702,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -19566,8 +18712,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -19575,8 +18720,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -19768,7 +18912,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -20038,12 +19182,12 @@ } }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -20088,7 +19232,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" }, @@ -20172,8 +19316,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -20182,7 +19326,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -20303,9 +19447,9 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "samsam": { @@ -20372,7 +19516,7 @@ "formatio": "1.2.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.2", + "nise": "1.3.3", "supports-color": "4.5.0", "type-detect": "4.0.8" } @@ -20422,11 +19566,12 @@ "dev": true }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -20529,7 +19674,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -20576,9 +19721,9 @@ "dev": true }, "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -20630,7 +19775,7 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { @@ -20863,13 +20008,13 @@ "dev": true }, "update-notifier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", - "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", From 130718f9a6cbaa9bfeded36af740dc2fe9d9cba8 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 2 May 2018 15:09:58 -0700 Subject: [PATCH 187/820] chore: test on node10 (#86) --- .../nodejs-datastore/.circleci/config.yml | 77 ++++++------------- 1 file changed, 24 insertions(+), 53 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index b0c187df296..08c2605773e 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -19,12 +19,17 @@ workflows: filters: tags: only: /.*/ + - node10: + filters: + tags: + only: /.*/ - lint: requires: - node4 - node6 - node8 - node9 + - node10 filters: tags: only: /.*/ @@ -34,6 +39,7 @@ workflows: - node6 - node8 - node9 + - node10 filters: tags: only: /.*/ @@ -90,14 +96,18 @@ jobs: else echo "Not a nightly build, skipping this step." fi - - run: - name: Install modules and dependencies. - command: |- + - run: &npm_install_and_link + name: Install and link the module. + command: | + mkdir -p /home/node/.npm-global npm install repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" if ! test -x "$repo_tools"; then chmod +x "$repo_tools" fi + npm link + environment: + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Run unit tests. command: npm test @@ -120,6 +130,11 @@ jobs: - image: 'node:9' user: node steps: *unit_tests_steps + node10: + docker: + - image: 'node:10' + user: node + steps: *unit_tests_steps lint: docker: - image: 'node:8' @@ -127,19 +142,8 @@ jobs: steps: - checkout - run: *remove_package_lock - - run: - name: Install modules and dependencies. - command: | - mkdir -p /home/node/.npm-global - npm install - repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" - if ! test -x "$repo_tools"; then - chmod +x "$repo_tools" - fi - npm link - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: + - run: *npm_install_and_link + - run: &samples_npm_install_and_link name: Link the module being tested to the samples. command: | cd samples/ @@ -160,14 +164,7 @@ jobs: steps: - checkout - run: *remove_package_lock - - run: - name: Install modules and dependencies. - command: |- - npm install - repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" - if ! test -x "$repo_tools"; then - chmod +x "$repo_tools" - fi + - run: *npm_install_and_link - run: name: Build documentation. command: npm run docs @@ -184,27 +181,8 @@ jobs: openssl aes-256-cbc -d -in .circleci/key.json.enc \ -out .circleci/key.json \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" - - run: - name: Install and link the module. - command: | - mkdir -p /home/node/.npm-global - npm install - repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" - if ! test -x "$repo_tools"; then - chmod +x "$repo_tools" - fi - npm link - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: - name: Link the module being tested to the samples. - command: | - cd samples/ - npm link @google-cloud/datastore - npm install - cd .. - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global + - run: *npm_install_and_link + - run: *samples_npm_install_and_link - run: name: Run sample tests. command: npm run samples-test @@ -230,14 +208,7 @@ jobs: openssl aes-256-cbc -d -in .circleci/key.json.enc \ -out .circleci/key.json \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" - - run: - name: Install modules and dependencies. - command: |- - npm install - repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" - if ! test -x "$repo_tools"; then - chmod +x "$repo_tools" - fi + - run: *npm_install_and_link - run: name: Run system tests. command: npm run system-test From a95d49b3a8b20c6a8753729d7791d6d27788f1fc Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 8 May 2018 14:26:34 -0700 Subject: [PATCH 188/820] chore: lock files maintenance (#87) * chore: lock files maintenance * chore: lock files maintenance --- .../nodejs-datastore/package-lock.json | 519 ++++-------------- .../samples/package-lock.json | 517 ++++------------- 2 files changed, 233 insertions(+), 803 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 91413da4e70..5deedf2e8e2 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -89,7 +89,7 @@ "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", - "duplexify": "3.5.4", + "duplexify": "3.6.0", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", @@ -1980,9 +1980,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "8.10.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.11.tgz", - "integrity": "sha512-FM7tvbjbn2BUzM/Qsdk9LUGq3zeh7li8NcHoS398dBzqLzfmSqSP1+yKbMRTCcZzLcu2JAR5lq3IKIEYkto7iQ==" + "version": "8.10.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.12.tgz", + "integrity": "sha512-aRFUGj/f9JVA0qSQiCK9ebaa778mmqMIcy1eKnPktgfm9O6VsnIzzB5wJnjp9/jVrfm7fX1rr3OR1nndppGZUg==" }, "acorn": { "version": "4.0.13", @@ -2757,7 +2757,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2904,7 +2904,7 @@ "requires": { "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", "lodash": "4.17.10", "mkdirp": "0.5.1", @@ -2928,7 +2928,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -3291,7 +3291,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3760,9 +3760,9 @@ } }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" }, "core-util-is": { "version": "1.0.2", @@ -4098,9 +4098,9 @@ "dev": true }, "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", @@ -4136,7 +4136,7 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "empower-core": "0.6.2" } }, @@ -4155,7 +4155,7 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "end-of-stream": { @@ -4578,7 +4578,7 @@ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "esquery": { @@ -4757,7 +4757,7 @@ "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.21", + "iconv-lite": "0.4.22", "tmp": "0.0.33" } }, @@ -4844,7 +4844,7 @@ "@mrmlnc/readdir-enhanced": "2.2.1", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.1", + "merge2": "1.2.2", "micromatch": "3.1.10" } }, @@ -5755,12 +5755,12 @@ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { - "duplexify": "3.5.4", + "duplexify": "3.6.0", "extend": "3.0.1", "globby": "8.0.1", "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.11.0", + "grpc": "1.11.3", "is-stream-ended": "0.1.4", "lodash": "4.17.10", "protobufjs": "6.8.6", @@ -5856,13 +5856,13 @@ "dev": true }, "grpc": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.0.tgz", - "integrity": "sha512-pTJjV/eatBQ6Rhc/jWNmUW9jE8fPrhcMYSWDSyf4l7ah1U3sIe4eIjqI/a3sm0zKbM5CuovV0ESrc+b04kr4Ig==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.3.tgz", + "integrity": "sha512-7fJ40USpnP7hxGK0uRoEhJz6unA5VUdwInfwAY2rK2+OVxdDJSdTZQ/8/M+1tW68pHZYgHvg2ohvJ+clhW3ANg==", "requires": { "lodash": "4.17.10", "nan": "2.10.0", - "node-pre-gyp": "0.7.0", + "node-pre-gyp": "0.10.0", "protobufjs": "5.0.2" }, "dependencies": { @@ -5870,16 +5870,6 @@ "version": "1.1.1", "bundled": true }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true @@ -5896,52 +5886,10 @@ "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.7.0", - "bundled": true - }, "balanced-match": { "version": "1.0.0", "bundled": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -5950,25 +5898,14 @@ "concat-map": "0.0.1" } }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true }, "code-point-at": { "version": "1.1.0", "bundled": true }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true @@ -5981,29 +5918,6 @@ "version": "1.0.2", "bundled": true }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "debug": { "version": "2.6.9", "bundled": true, @@ -6012,11 +5926,7 @@ } }, "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "delayed-stream": { - "version": "1.0.0", + "version": "0.5.1", "bundled": true }, "delegates": { @@ -6027,66 +5937,17 @@ "version": "1.0.3", "bundled": true }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, "gauge": { "version": "2.7.4", "bundled": true, @@ -6101,13 +5962,6 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "glob": { "version": "7.1.2", "bundled": true, @@ -6120,47 +5974,19 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", + "iconv-lite": { + "version": "0.4.19", "bundled": true }, - "http-signature": { - "version": "1.2.0", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "minimatch": "3.0.4" } }, "inflight": { @@ -6186,67 +6012,36 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, "isarray": { "version": "1.0.0", "bundled": true }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", + "minimatch": { + "version": "3.0.4", "bundled": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.33.0", + "minimist": { + "version": "1.2.0", "bundled": true }, - "mime-types": { - "version": "2.1.18", + "minipass": { + "version": "2.2.4", "bundled": true, "requires": { - "mime-db": "1.33.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "minipass": "2.2.4" } }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -6264,20 +6059,29 @@ "version": "2.0.0", "bundled": true }, + "needle": { + "version": "2.2.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.19", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.7.0", + "version": "0.10.0", "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.1", "nopt": "4.0.1", + "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", - "request": "2.83.0", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "2.2.1", - "tar-pack": "3.4.1" + "tar": "4.4.2" } }, "nopt": { @@ -6288,6 +6092,18 @@ "osenv": "0.1.5" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, "npmlog": { "version": "4.1.2", "bundled": true, @@ -6302,10 +6118,6 @@ "version": "1.0.1", "bundled": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, "object-assign": { "version": "4.1.1", "bundled": true @@ -6337,10 +6149,6 @@ "version": "1.0.1", "bundled": true }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, "process-nextick-args": { "version": "2.0.0", "bundled": true @@ -6356,19 +6164,11 @@ "yargs": "3.32.0" } }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -6387,34 +6187,6 @@ "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.83.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, "rimraf": { "version": "2.6.2", "bundled": true, @@ -6426,6 +6198,10 @@ "version": "5.1.1", "bundled": true }, + "sax": { + "version": "1.2.4", + "bundled": true + }, "semver": { "version": "5.5.0", "bundled": true @@ -6438,27 +6214,6 @@ "version": "3.0.2", "bundled": true }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -6475,10 +6230,6 @@ "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -6491,68 +6242,28 @@ "bundled": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.6", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", + "version": "4.4.2", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -6563,6 +6274,10 @@ "wrappy": { "version": "1.0.2", "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, @@ -6783,9 +6498,9 @@ } }, "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.22.tgz", + "integrity": "sha512-1AinFBeDTnsvVEP+V1QBlHpM1UZZl7gWB6fcz7B1Ho+LI1dUh2sSrxoCfVt2PinRHzXAziSniEV3P7JbTDHcXA==", "dev": true, "requires": { "safer-buffer": "2.1.2" @@ -7923,9 +7638,9 @@ } }, "merge2": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz", - "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" }, "methmeth": { "version": "1.1.0", @@ -11415,7 +11130,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-traversal": "1.1.1" } }, @@ -11426,7 +11141,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.5", + "core-js": "2.5.6", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -11436,7 +11151,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "estraverse": "4.2.0" } }, @@ -11445,7 +11160,7 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -11473,7 +11188,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -11485,7 +11200,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -11592,7 +11307,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.11", + "@types/node": "8.10.12", "long": "4.0.0" } }, @@ -11629,9 +11344,9 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { "version": "5.1.1", @@ -11906,7 +11621,7 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.1", + "qs": "6.5.2", "safe-buffer": "5.1.2", "stringstream": "0.0.5", "tough-cookie": "2.3.4", @@ -12554,7 +12269,7 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -12627,7 +12342,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" }, "dependencies": { diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 58c291d93aa..c0aee0ccf8c 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -172,7 +172,7 @@ "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", - "duplexify": "3.5.4", + "duplexify": "3.6.0", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", @@ -1804,7 +1804,7 @@ "bundled": true }, "@types/node": { - "version": "8.10.11", + "version": "8.10.12", "bundled": true }, "acorn": { @@ -2440,7 +2440,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2557,7 +2557,7 @@ "requires": { "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", "lodash": "4.17.10", "mkdirp": "0.5.1", @@ -2577,7 +2577,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -2879,7 +2879,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3249,7 +3249,7 @@ } }, "core-js": { - "version": "2.5.5", + "version": "2.5.6", "bundled": true }, "core-util-is": { @@ -3520,7 +3520,7 @@ "bundled": true }, "duplexify": { - "version": "3.5.4", + "version": "3.6.0", "bundled": true, "requires": { "end-of-stream": "1.4.1", @@ -3553,7 +3553,7 @@ "version": "1.2.3", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "empower-core": "0.6.2" } }, @@ -3569,7 +3569,7 @@ "bundled": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "end-of-stream": { @@ -3915,7 +3915,7 @@ "version": "1.7.0", "bundled": true, "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "esquery": { @@ -4064,7 +4064,7 @@ "bundled": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.21", + "iconv-lite": "0.4.22", "tmp": "0.0.33" } }, @@ -4140,7 +4140,7 @@ "@mrmlnc/readdir-enhanced": "2.2.1", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.1", + "merge2": "1.2.2", "micromatch": "3.1.10" } }, @@ -4451,12 +4451,12 @@ "version": "0.16.1", "bundled": true, "requires": { - "duplexify": "3.5.4", + "duplexify": "3.6.0", "extend": "3.0.1", "globby": "8.0.1", "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.11.0", + "grpc": "1.11.3", "is-stream-ended": "0.1.4", "lodash": "4.17.10", "protobufjs": "6.8.6", @@ -4539,12 +4539,12 @@ "bundled": true }, "grpc": { - "version": "1.11.0", + "version": "1.11.3", "bundled": true, "requires": { "lodash": "4.17.10", "nan": "2.10.0", - "node-pre-gyp": "0.7.0", + "node-pre-gyp": "0.10.0", "protobufjs": "5.0.2" }, "dependencies": { @@ -4552,16 +4552,6 @@ "version": "1.1.1", "bundled": true }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true @@ -4578,52 +4568,10 @@ "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.7.0", - "bundled": true - }, "balanced-match": { "version": "1.0.0", "bundled": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -4632,25 +4580,14 @@ "concat-map": "0.0.1" } }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true }, "code-point-at": { "version": "1.1.0", "bundled": true }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true @@ -4663,29 +4600,6 @@ "version": "1.0.2", "bundled": true }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "debug": { "version": "2.6.9", "bundled": true, @@ -4694,11 +4608,7 @@ } }, "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "delayed-stream": { - "version": "1.0.0", + "version": "0.5.1", "bundled": true }, "delegates": { @@ -4709,66 +4619,17 @@ "version": "1.0.3", "bundled": true }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, "gauge": { "version": "2.7.4", "bundled": true, @@ -4783,13 +4644,6 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "glob": { "version": "7.1.2", "bundled": true, @@ -4802,47 +4656,19 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", + "iconv-lite": { + "version": "0.4.19", "bundled": true }, - "http-signature": { - "version": "1.2.0", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "minimatch": "3.0.4" } }, "inflight": { @@ -4868,67 +4694,36 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, "isarray": { "version": "1.0.0", "bundled": true }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", + "minimatch": { + "version": "3.0.4", "bundled": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.33.0", + "minimist": { + "version": "1.2.0", "bundled": true }, - "mime-types": { - "version": "2.1.18", + "minipass": { + "version": "2.2.4", "bundled": true, "requires": { - "mime-db": "1.33.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "minipass": "2.2.4" } }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -4946,20 +4741,29 @@ "version": "2.0.0", "bundled": true }, + "needle": { + "version": "2.2.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.19", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.7.0", + "version": "0.10.0", "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.1", "nopt": "4.0.1", + "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", - "request": "2.83.0", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "2.2.1", - "tar-pack": "3.4.1" + "tar": "4.4.2" } }, "nopt": { @@ -4970,6 +4774,18 @@ "osenv": "0.1.5" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, "npmlog": { "version": "4.1.2", "bundled": true, @@ -4984,10 +4800,6 @@ "version": "1.0.1", "bundled": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, "object-assign": { "version": "4.1.1", "bundled": true @@ -5019,10 +4831,6 @@ "version": "1.0.1", "bundled": true }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, "process-nextick-args": { "version": "2.0.0", "bundled": true @@ -5037,19 +4845,11 @@ "yargs": "3.32.0" } }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -5068,34 +4868,6 @@ "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.83.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, "rimraf": { "version": "2.6.2", "bundled": true, @@ -5107,6 +4879,10 @@ "version": "5.1.1", "bundled": true }, + "sax": { + "version": "1.2.4", + "bundled": true + }, "semver": { "version": "5.5.0", "bundled": true @@ -5119,27 +4895,6 @@ "version": "3.0.2", "bundled": true }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -5156,10 +4911,6 @@ "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -5172,68 +4923,28 @@ "bundled": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.6", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", + "version": "4.4.2", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -5244,6 +4955,10 @@ "wrappy": { "version": "1.0.2", "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, @@ -5425,7 +5140,7 @@ } }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.22", "bundled": true, "requires": { "safer-buffer": "2.1.2" @@ -6309,7 +6024,7 @@ } }, "merge2": { - "version": "1.2.1", + "version": "1.2.2", "bundled": true }, "methmeth": { @@ -9301,7 +9016,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-traversal": "1.1.1" } }, @@ -9311,7 +9026,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.5", + "core-js": "2.5.6", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -9320,7 +9035,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "estraverse": "4.2.0" } }, @@ -9328,7 +9043,7 @@ "version": "1.4.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -9353,7 +9068,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -9364,7 +9079,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -9449,7 +9164,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.11", + "@types/node": "8.10.12", "long": "4.0.0" } }, @@ -9480,7 +9195,7 @@ "bundled": true }, "qs": { - "version": "6.5.1", + "version": "6.5.2", "bundled": true }, "query-string": { @@ -9703,7 +9418,7 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.1", + "qs": "6.5.2", "safe-buffer": "5.1.2", "stringstream": "0.0.5", "tough-cookie": "2.3.4", @@ -10228,7 +9943,7 @@ "version": "1.3.0", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -10286,7 +10001,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" }, "dependencies": { @@ -13298,7 +13013,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -13445,7 +13160,7 @@ "requires": { "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -13469,7 +13184,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -13672,7 +13387,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -13999,9 +13714,9 @@ } }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", "dev": true }, "core-util-is": { @@ -14141,7 +13856,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "equal-length": { @@ -14195,7 +13910,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "estraverse": { @@ -19124,9 +18839,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "query-string": { @@ -19734,7 +19449,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" } }, From d2da40ee99412d9943a40053e3f8f8b557cc5b9b Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Fri, 11 May 2018 09:15:06 -0400 Subject: [PATCH 189/820] Run repo-tools and fix image link (#88) --- handwritten/nodejs-datastore/.gitignore | 4 ++++ handwritten/nodejs-datastore/README.md | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index b7d407606fb..082cf01ed78 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -4,6 +4,10 @@ .nyc_output docs/ out/ +build/ system-test/secrets.js system-test/*key.json *.lock +.DS_Store +google-cloud-logging-winston-*.tgz +google-cloud-logging-bunyan-*.tgz \ No newline at end of file diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 56a18c22923..9df21c2a148 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -1,3 +1,5 @@ +[//]: # "This README.md file is auto-generated, all changes to this file will be lost." +[//]: # "To regenerate it, use `npm run generate-scaffolding`." Google Cloud Platform logo # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) @@ -140,4 +142,4 @@ See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ [product-docs]: https://cloud.google.com/datastore/docs -[shell_img]: //gstatic.com/cloudssh/images/open-btn.png +[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png From 346fe4e9b555f72aa335fd324fe9053adccf0480 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 11 May 2018 09:27:26 -0400 Subject: [PATCH 190/820] =?UTF-8?q?Update=20sinon=20to=20the=20latest=20ve?= =?UTF-8?q?rsion=20=F0=9F=9A=80=20(#74)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nodejs-datastore/package-lock.json | 3339 +++++++++++----- handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 3430 +++++++++++------ 3 files changed, 4560 insertions(+), 2211 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 5deedf2e8e2..036f3c0029b 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -89,7 +89,7 @@ "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", - "duplexify": "3.6.0", + "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", @@ -100,7 +100,7 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.4", + "stream-events": "1.0.3", "string-format-obj": "1.1.1", "through2": "2.0.3" }, @@ -156,9 +156,9 @@ "dev": true }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -172,12 +172,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, "nyc": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", @@ -215,7 +209,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -225,22 +220,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -248,12 +247,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -261,27 +262,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -291,7 +297,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -306,7 +313,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -314,7 +322,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -323,7 +332,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -335,7 +345,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -351,7 +362,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -362,17 +374,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -381,7 +396,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -391,12 +407,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -406,13 +424,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -422,7 +442,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -434,7 +455,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -445,7 +467,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -453,32 +476,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -487,7 +516,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -495,17 +525,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -513,7 +546,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -521,7 +555,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -529,17 +564,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -553,7 +591,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -565,7 +604,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -573,7 +613,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -581,7 +622,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -589,12 +631,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -606,7 +650,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -616,7 +661,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -624,12 +670,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -637,7 +685,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -646,22 +695,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -674,7 +727,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -683,7 +737,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -691,17 +746,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -712,7 +770,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -722,7 +781,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -730,22 +790,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -754,12 +818,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -767,22 +833,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -790,12 +860,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -803,17 +875,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -821,7 +896,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -829,7 +905,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -837,7 +914,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -845,37 +923,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -883,12 +968,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -896,7 +983,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -910,7 +998,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -921,7 +1010,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -931,7 +1021,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "3.1.0", @@ -943,7 +1034,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -953,7 +1045,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -961,17 +1054,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -979,13 +1075,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -993,7 +1091,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1005,7 +1104,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -1014,24 +1114,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -1039,7 +1143,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -1048,7 +1153,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -1056,12 +1162,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -1069,7 +1177,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "0.5.7" @@ -1077,7 +1186,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -1097,12 +1207,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -1110,12 +1222,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1123,12 +1237,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -1139,7 +1255,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -1147,7 +1264,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -1155,17 +1273,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -1174,7 +1295,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -1182,7 +1304,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -1191,12 +1314,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -1206,17 +1331,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.1.0" @@ -1224,7 +1352,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -1235,7 +1364,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -1243,7 +1373,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -1251,22 +1382,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1276,17 +1411,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -1294,7 +1432,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -1302,7 +1441,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -1313,17 +1453,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -1332,7 +1475,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -1340,7 +1484,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1350,7 +1495,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1360,7 +1506,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -1370,7 +1517,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -1379,7 +1527,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -1390,12 +1539,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -1403,22 +1554,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -1426,22 +1581,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -1450,7 +1609,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -1458,17 +1618,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -1476,27 +1639,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -1509,7 +1677,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -1517,17 +1686,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1536,17 +1708,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -1556,7 +1731,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1564,7 +1740,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -1572,17 +1749,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "1.0.1", @@ -1594,17 +1774,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -1615,7 +1798,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -1629,13 +1813,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -1644,7 +1830,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -1652,23 +1839,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -1677,7 +1868,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1689,12 +1881,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1704,17 +1898,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "3.2.0", @@ -1733,7 +1930,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "1.0.2", @@ -1743,7 +1941,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1757,7 +1956,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -1765,7 +1965,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -1804,8 +2005,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", - "supports-color": "5.4.0", + "nise": "1.3.2", + "supports-color": "5.3.0", "type-detect": "4.0.8" } }, @@ -1834,7 +2035,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.1.0", + "cliui": "4.0.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -1980,9 +2181,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "8.10.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.12.tgz", - "integrity": "sha512-aRFUGj/f9JVA0qSQiCK9ebaa778mmqMIcy1eKnPktgfm9O6VsnIzzB5wJnjp9/jVrfm7fX1rr3OR1nndppGZUg==" + "version": "8.10.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.8.tgz", + "integrity": "sha512-BvcUxNZe9JgiiUVivtiQt3NrPVu9OAQzkxR1Ko9ESftCYU7V6Np5kpDzQwxd+34lsop7SNRdL292Flv52OvCaw==" }, "acorn": { "version": "4.0.13", @@ -2330,7 +2531,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "async-each": { @@ -2345,9 +2546,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" }, "auto-bind": { "version": "1.2.0", @@ -2374,12 +2575,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.4.1", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2432,18 +2633,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.5", + "source-map-support": "0.5.4", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.4.0", + "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-regex": { @@ -2568,9 +2769,9 @@ } }, "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2586,7 +2787,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.10", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2616,7 +2817,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2704,7 +2905,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -2757,7 +2958,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.6", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2819,9 +3020,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -2902,11 +3103,11 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.6", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -2928,7 +3129,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -2942,7 +3143,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -2959,7 +3160,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.10" + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -2981,7 +3182,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.10", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -3088,7 +3289,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -3291,7 +3492,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -3368,14 +3569,14 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "supports-color": "5.3.0" } }, "chardet": { @@ -3590,58 +3791,207 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.1.tgz", - "integrity": "sha512-0TjnXrbvcPzAkRPv/Y5D8aZju/M5adkFxShRyMMgDReB8EV9nF4XMERXs6ajgLA1di9LUFW2tgePDQd2JPWy7g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", + "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", "dev": true, "requires": { "argv": "0.0.2", - "request": "2.85.0", + "request": "2.81.0", "urlgrey": "0.4.4" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "1.0.0" - } + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.11.0", @@ -3760,9 +4110,9 @@ } }, "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" }, "core-util-is": { "version": "1.0.2", @@ -3878,9 +4228,9 @@ "dev": true }, "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, "deep-is": { @@ -4098,9 +4448,9 @@ "dev": true }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", @@ -4128,7 +4478,7 @@ "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", "requires": { "base64url": "2.0.0", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "empower": { @@ -4136,7 +4486,7 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "empower-core": "0.6.2" } }, @@ -4155,7 +4505,7 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "end-of-stream": { @@ -4341,7 +4691,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -4354,15 +4704,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", + "globals": "11.4.0", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -4386,9 +4736,9 @@ "dev": true }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", "dev": true }, "strip-ansi": { @@ -4425,7 +4775,7 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.8", + "ignore": "3.3.7", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -4578,7 +4928,7 @@ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "requires": { - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "esquery": { @@ -4757,7 +5107,7 @@ "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.22", + "iconv-lite": "0.4.21", "tmp": "0.0.33" } }, @@ -4837,14 +5187,14 @@ "dev": true }, "fast-glob": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.1.tgz", - "integrity": "sha512-wSyW1TBK3ia5V+te0rGPXudeMHoUQW6O5Y9oATiaGhpENmEifPDlOdhpsnlj5HoG6ttIvGiY1DdCmI9X2xGMhg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.0.tgz", + "integrity": "sha512-4F75PTznkNtSKs2pbhtBwRkw8sRwa7LfXx5XaQJOe4IQ6yTjceLDTwM5gj1s80R2t/5WeDC1gVfm3jLE+l39Tw==", "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.2", + "merge2": "1.2.1", "micromatch": "3.1.10" } }, @@ -5718,9 +6068,9 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.1", + "fast-glob": "2.2.0", "glob": "7.1.2", - "ignore": "3.3.8", + "ignore": "3.3.7", "pify": "3.0.0", "slash": "1.0.0" } @@ -5755,16 +6105,29 @@ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { - "duplexify": "3.6.0", + "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.1", + "google-auto-auth": "0.10.0", "google-proto-files": "0.15.1", - "grpc": "1.11.3", + "grpc": "1.10.1", "is-stream-ended": "0.1.4", - "lodash": "4.17.10", + "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.0.tgz", + "integrity": "sha512-R6m473OqgZacPvlidJ0aownTlUWyLy654ugjKSXyi1ffIicXlXg3wMfse9T9zxqG6w01q6K1iG+b7dImMkVJ2Q==", + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + } } }, "google-p12-pem": { @@ -5794,7 +6157,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.8", + "ignore": "3.3.7", "pify": "3.0.0", "slash": "1.0.0" } @@ -5820,7 +6183,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -5856,101 +6219,281 @@ "dev": true }, "grpc": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.3.tgz", - "integrity": "sha512-7fJ40USpnP7hxGK0uRoEhJz6unA5VUdwInfwAY2rK2+OVxdDJSdTZQ/8/M+1tW68pHZYgHvg2ohvJ+clhW3ANg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.10.1.tgz", + "integrity": "sha512-xmhA11h2XhqpSVzDAmoQAYdNQ+swILXpKOiRpAEQ2kX55ioxVADc6v7SkS4zQBxm4klhQHgGqpGKvoL6LGx4VQ==", "requires": { - "lodash": "4.17.10", + "lodash": "4.17.5", "nan": "2.10.0", - "node-pre-gyp": "0.10.0", + "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" }, "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.6" + "readable-stream": "2.3.5" } }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.1" + } }, "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "chownr": { - "version": "1.0.1", - "bundled": true + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "deep-extend": { - "version": "0.5.1", - "bundled": true + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, "requires": { - "minipass": "2.2.4" + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "1.2.0", "console-control-strings": "1.1.0", @@ -5962,9 +6505,18 @@ "wide-align": "1.1.2" } }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -5974,24 +6526,60 @@ "path-is-absolute": "1.0.1" } }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "minimatch": "3.0.4" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -5999,114 +6587,145 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "minimatch": { - "version": "3.0.4", - "bundled": true, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "requires": { - "brace-expansion": "1.1.11" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "minimist": { - "version": "1.2.0", - "bundled": true + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, - "minipass": { - "version": "2.2.4", - "bundled": true, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "mime-db": "1.33.0" } }, - "minizlib": { - "version": "1.1.0", - "bundled": true, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "minipass": "2.2.4" + "brace-expansion": "1.1.8" } }, - "mkdirp": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "ms": { "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.7.0.tgz", + "integrity": "sha1-Va7/uu2TtQ0KRlfUaRmM2ArJ3zY=", "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", - "needle": "2.2.1", "nopt": "4.0.1", - "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.7", + "rc": "1.2.6", + "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "4.4.2" + "tar": "2.2.1", + "tar-pack": "3.4.1" } }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1.1.1", "osenv": "0.1.5" } }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "1.1.4", "console-control-strings": "1.1.0", @@ -6116,30 +6735,41 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -6147,11 +6777,18 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "protobufjs": { "version": "5.0.2", @@ -6164,59 +6801,125 @@ "yargs": "3.32.0" } }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, "rc": { - "version": "1.2.7", - "bundled": true, + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" } }, "readable-stream": { - "version": "2.3.6", - "bundled": true, + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", + "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.1.1", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "semver": { "version": "5.5.0", - "bundled": true + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.1" + } + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -6224,60 +6927,115 @@ } }, "string_decoder": { - "version": "1.1.1", - "bundled": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { "safe-buffer": "5.1.1" } }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { - "version": "4.4.2", - "bundled": true, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", + "requires": { + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.5", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "requires": { "string-width": "1.0.2" } }, "wrappy": { "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" } } }, @@ -6494,22 +7252,22 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "iconv-lite": { - "version": "0.4.22", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.22.tgz", - "integrity": "sha512-1AinFBeDTnsvVEP+V1QBlHpM1UZZl7gWB6fcz7B1Ho+LI1dUh2sSrxoCfVt2PinRHzXAziSniEV3P7JbTDHcXA==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "requires": { "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" }, "ignore-by-default": { "version": "1.0.1", @@ -6576,7 +7334,7 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.22.1", + "moment": "2.22.0", "sanitize-html": "1.18.2" } }, @@ -6587,12 +7345,12 @@ "dev": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -7139,6 +7897,15 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -7165,6 +7932,12 @@ "graceful-fs": "4.1.11" } }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7190,7 +7963,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "jws": { @@ -7200,7 +7973,7 @@ "requires": { "base64url": "2.0.0", "jwa": "1.1.5", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "keyv": { @@ -7300,9 +8073,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -7638,9 +8411,9 @@ } }, "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz", + "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg==" }, "methmeth": { "version": "1.1.0", @@ -7746,9 +8519,9 @@ } }, "mocha": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.1.tgz", - "integrity": "sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.0.tgz", + "integrity": "sha512-d6RWgYPILd+AoWVOxiD0UwUqRicnE1inTxMr40CXOgqYve1MvnKntoLAtLIcxjEeVjEoYYTe5QAq3mUc6/ySjQ==", "dev": true, "requires": { "browser-stdout": "1.3.1", @@ -7787,9 +8560,9 @@ "dev": true }, "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==", "dev": true }, "ms": { @@ -7872,9 +8645,9 @@ "dev": true }, "nise": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", - "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", + "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -7944,9 +8717,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.1.tgz", - "integrity": "sha512-EGePURSKUEpS1jWnEKAMhY+GWZzi7JC+f8iBDOATaOsLZW5hM/9eYx2dHGaEXa1ITvMm44CJugMksvP3NwMQMw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", + "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", "dev": true, "requires": { "archy": "1.0.0", @@ -7964,7 +8737,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", + "istanbul-reports": "1.3.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -7980,7 +8753,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -7990,22 +8764,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -8013,12 +8791,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -8026,42 +8806,50 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { - "version": "2.1.0", - "bundled": true, + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -8071,7 +8859,8 @@ }, "babel-generator": { "version": "6.26.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -8086,7 +8875,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -8094,16 +8884,18 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.3", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8115,7 +8907,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -8125,13 +8918,14 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.4", + "invariant": "2.2.3", "lodash": "4.17.5" } }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -8142,17 +8936,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "1.0.1", @@ -8166,53 +8963,25 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -8221,7 +8990,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -8231,12 +9001,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "1.0.0", @@ -8252,14 +9024,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -8269,13 +9043,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -8285,7 +9061,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -8297,7 +9074,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", @@ -8308,22 +9086,82 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -8334,7 +9172,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -8342,12 +9181,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "1.0.0", @@ -8356,37 +9197,44 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-js": { - "version": "2.5.5", - "bundled": true, + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -8395,7 +9243,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -8403,22 +9252,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -8426,54 +9279,26 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -8481,7 +9306,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -8489,17 +9315,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -8513,7 +9342,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -8525,7 +9355,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -8533,7 +9364,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -8541,7 +9373,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -8550,7 +9383,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -8560,7 +9394,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -8568,12 +9403,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -8585,7 +9422,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -8595,7 +9433,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -8603,12 +9442,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -8616,7 +9457,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -8625,7 +9467,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "0.2.2" @@ -8633,27 +9476,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -8666,7 +9514,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -8675,7 +9524,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -8683,17 +9533,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -8704,7 +9557,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -8714,7 +9568,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -8722,12 +9577,14 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "2.0.6", @@ -8737,14 +9594,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "3.0.0", @@ -8753,7 +9612,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -8761,7 +9621,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -8771,7 +9632,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -8781,17 +9643,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -8800,12 +9665,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { - "version": "2.2.4", - "bundled": true, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -8813,68 +9680,94 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-descriptor": { - "version": "0.1.6", - "bundled": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "5.1.0", - "bundled": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -8882,17 +9775,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -8900,12 +9796,14 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -8913,7 +9811,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -8921,7 +9820,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { "is-number": "4.0.0" @@ -8929,14 +9829,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -8944,49 +9846,58 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -8994,12 +9905,14 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -9007,7 +9920,8 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "6.26.1", @@ -9021,7 +9935,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -9032,7 +9947,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -9042,7 +9958,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { "debug": "3.1.0", @@ -9054,7 +9971,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -9063,8 +9981,9 @@ } }, "istanbul-reports": { - "version": "1.4.0", - "bundled": true, + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -9072,17 +9991,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9090,13 +10012,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -9104,7 +10028,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -9116,7 +10041,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -9125,24 +10051,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -9150,7 +10080,8 @@ }, "lru-cache": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -9159,12 +10090,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "1.0.1" @@ -9172,7 +10105,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -9180,12 +10114,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -9193,7 +10129,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { "source-map": "0.6.1" @@ -9201,14 +10138,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -9228,12 +10167,14 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -9241,12 +10182,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -9255,7 +10198,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -9265,7 +10209,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -9273,12 +10218,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -9297,24 +10244,28 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -9325,7 +10276,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -9333,7 +10285,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -9341,17 +10294,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -9361,17 +10317,56 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } } } }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "3.0.1" @@ -9379,14 +10374,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -9395,7 +10392,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "3.0.1" @@ -9403,14 +10401,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -9418,7 +10418,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -9427,12 +10428,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -9442,12 +10445,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "1.0.0" @@ -9455,7 +10460,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.2.0" @@ -9463,12 +10469,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -9479,7 +10487,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -9487,12 +10496,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -9500,22 +10511,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -9525,17 +10540,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -9543,7 +10561,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -9551,7 +10570,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -9562,22 +10582,26 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -9586,7 +10610,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9594,7 +10619,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9604,7 +10630,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9614,7 +10641,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -9624,7 +10652,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -9633,7 +10662,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -9644,12 +10674,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -9657,7 +10689,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -9666,22 +10699,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -9689,32 +10726,38 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -9723,7 +10766,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -9731,7 +10775,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "0.1.15" @@ -9739,17 +10784,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -9760,7 +10808,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -9770,7 +10819,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -9778,22 +10828,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -9808,25 +10862,85 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "1.0.0", @@ -9836,53 +10950,25 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "3.2.2" @@ -9890,15 +10976,17 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.1.0", + "atob": "2.0.3", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -9907,12 +10995,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -9925,7 +11015,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -9934,12 +11025,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -9948,12 +11041,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -9961,7 +11056,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "0.2.5", @@ -9970,17 +11066,76 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -9989,12 +11144,14 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -10004,7 +11161,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -10012,7 +11170,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -10020,21 +11179,24 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.10", + "micromatch": "3.1.9", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -10042,24 +11204,29 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "braces": { - "version": "2.3.2", - "bundled": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", + "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", + "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -10067,9 +11234,19 @@ "to-regex": "3.0.2" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10079,7 +11256,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "2.6.9", @@ -10093,7 +11271,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10101,51 +11280,17 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -10155,14 +11300,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "0.3.2", @@ -10177,7 +11324,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -10185,7 +11333,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10195,7 +11344,8 @@ }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -10206,7 +11356,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10215,34 +11366,49 @@ } }, "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10250,7 +11416,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10260,22 +11427,25 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "micromatch": { - "version": "3.1.10", - "bundled": true, + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.2", + "braces": "2.3.1", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -10292,12 +11462,14 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10305,7 +11477,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "2.0.2", @@ -10316,7 +11489,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "3.0.0", @@ -10325,7 +11499,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -10335,12 +11510,14 @@ }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -10351,7 +11528,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -10365,13 +11543,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "3.1.0", @@ -10382,7 +11562,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10390,7 +11571,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -10403,7 +11585,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "0.3.1", @@ -10412,7 +11595,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "2.0.6", @@ -10422,7 +11606,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -10432,24 +11617,28 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -10457,14 +11646,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -10473,7 +11664,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -10481,23 +11673,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -10506,7 +11702,8 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -10514,7 +11711,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -10526,12 +11724,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10541,17 +11741,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { "cliui": "4.0.0", @@ -10570,17 +11773,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -10590,7 +11796,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -10598,7 +11805,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -10608,7 +11816,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "4.1.0" @@ -10616,7 +11825,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -10890,7 +12100,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -11095,14 +12305,14 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", + "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", "dev": true, "requires": { - "chalk": "2.4.1", + "chalk": "2.3.2", "source-map": "0.6.1", - "supports-color": "5.4.0" + "supports-color": "5.3.0" }, "dependencies": { "source-map": { @@ -11130,7 +12340,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-context-traversal": "1.1.1" } }, @@ -11141,7 +12351,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.6", + "core-js": "2.5.5", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -11151,7 +12361,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "estraverse": "4.2.0" } }, @@ -11160,7 +12370,7 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -11188,7 +12398,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -11200,7 +12410,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -11241,9 +12451,9 @@ "dev": true }, "prettier": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", - "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.0.tgz", + "integrity": "sha512-Wz0SMncgaglBzDcohH3ZIAi4nVpzOIEweFzCOmgVEoRSeO72b4dcKGfgxoRGVMaFlh1r7dlVaJ+f3CIHfeH6xg==", "dev": true }, "pretty-ms": { @@ -11307,7 +12517,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.12", + "@types/node": "8.10.8", "long": "4.0.0" } }, @@ -11344,9 +12554,9 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "query-string": { "version": "5.1.1", @@ -11381,12 +12591,12 @@ } }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -11447,7 +12657,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -11538,8 +12748,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "1.2.6", + "safe-buffer": "5.1.1" } }, "registry-url": { @@ -11548,7 +12758,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.7" + "rc": "1.2.6" } }, "regjsgen": { @@ -11621,8 +12831,8 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", + "qs": "6.5.1", + "safe-buffer": "5.1.1", "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", @@ -11790,9 +13000,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "safe-regex": { "version": "1.1.0", @@ -11820,14 +13030,14 @@ "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", "dev": true, "requires": { - "chalk": "2.4.1", + "chalk": "2.3.2", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.22", + "postcss": "6.0.21", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -11908,17 +13118,17 @@ "dev": true }, "sinon": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", - "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.0.7.tgz", + "integrity": "sha512-GvNLrwpvLZ8jIMZBUhHGUZDq5wlUdceJWyHvZDmqBxnjazpxY1L0FNbGBX6VpcOEoQ8Q4XMWFzm2myJMvx+VjA==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", - "supports-color": "5.4.0", + "nise": "1.3.2", + "supports-color": "5.3.0", "type-detect": "4.0.8" } }, @@ -12082,7 +13292,7 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "requires": { - "atob": "2.1.1", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -12090,12 +13300,11 @@ } }, "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -12217,9 +13426,9 @@ } }, "stream-events": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", - "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.3.tgz", + "integrity": "sha512-SvnBCMhEBQSJml4/ImlWkzGWgchjo1tVxnoBUOa1i1g3BsYNWz4W6a9Hc8VhqfmwJiEGu6tLrGdNRm/K/I4YXw==", "requires": { "stubs": "3.0.0" } @@ -12261,7 +13470,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "stringifier": { @@ -12269,7 +13478,7 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -12329,9 +13538,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -12342,7 +13551,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.2", + "qs": "6.5.1", "readable-stream": "2.3.6" }, "dependencies": { @@ -12391,13 +13600,13 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.3" + "superagent": "3.8.2" } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -12425,8 +13634,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", + "chalk": "2.3.2", + "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -12607,7 +13816,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -12848,13 +14057,13 @@ "dev": true }, "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", + "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 438f4d24b5d..c2fee13234d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -97,6 +97,6 @@ "power-assert": "^1.4.4", "prettier": "^1.9.2", "proxyquire": "^2.0.0", - "sinon": "^4.1.1" + "sinon": "^5.0.7" } } diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index c0aee0ccf8c..0e521542cf6 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -96,9 +96,9 @@ "lodash.merge": "4.6.1", "prop-assign": "1.0.0", "propprop": "0.3.1", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "split-array-stream": "2.0.0", - "stream-events": "1.0.4", + "stream-events": "1.0.3", "through2": "2.0.3" }, "dependencies": { @@ -115,7 +115,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -172,7 +172,7 @@ "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", - "duplexify": "3.6.0", + "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", "google-auto-auth": "0.9.7", @@ -183,7 +183,7 @@ "request": "2.85.0", "retry-request": "3.3.1", "split-array-stream": "1.0.3", - "stream-events": "1.0.4", + "stream-events": "1.0.3", "string-format-obj": "1.1.1", "through2": "2.0.3" }, @@ -233,7 +233,7 @@ "bundled": true }, "cliui": { - "version": "4.1.0", + "version": "4.0.0", "bundled": true, "requires": { "string-width": "2.1.1", @@ -245,10 +245,6 @@ "version": "2.0.0", "bundled": true }, - "lodash": { - "version": "4.17.5", - "bundled": true - }, "nyc": { "version": "11.4.1", "bundled": true, @@ -1660,8 +1656,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", - "supports-color": "5.4.0", + "nise": "1.3.2", + "supports-color": "5.3.0", "type-detect": "4.0.8" } }, @@ -1684,7 +1680,7 @@ "version": "11.0.0", "bundled": true, "requires": { - "cliui": "4.1.0", + "cliui": "4.0.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -1804,7 +1800,7 @@ "bundled": true }, "@types/node": { - "version": "8.10.12", + "version": "8.10.8", "bundled": true }, "acorn": { @@ -2078,7 +2074,7 @@ "version": "2.6.0", "bundled": true, "requires": { - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "async-each": { @@ -2090,7 +2086,7 @@ "bundled": true }, "atob": { - "version": "2.1.1", + "version": "2.1.0", "bundled": true }, "auto-bind": { @@ -2114,12 +2110,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.4.1", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2172,18 +2168,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.5", + "source-map-support": "0.5.4", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.4.0", + "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-regex": { @@ -2283,7 +2279,7 @@ } }, "babel-core": { - "version": "6.26.3", + "version": "6.26.0", "bundled": true, "requires": { "babel-code-frame": "6.26.0", @@ -2299,7 +2295,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.10", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2325,7 +2321,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2397,7 +2393,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -2440,7 +2436,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.6", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2488,7 +2484,7 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", + "version": "6.26.0", "bundled": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -2555,11 +2551,11 @@ "version": "6.26.0", "bundled": true, "requires": { - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.6", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -2577,7 +2573,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -2589,7 +2585,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.10" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -2604,7 +2600,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.10" + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -2622,7 +2618,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.10", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -2712,7 +2708,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -2879,7 +2875,7 @@ "version": "1.0.1", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -2941,12 +2937,12 @@ } }, "chalk": { - "version": "2.4.1", + "version": "2.3.2", "bundled": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "supports-color": "5.3.0" } }, "chardet": { @@ -3114,12 +3110,131 @@ "bundled": true }, "codecov": { - "version": "3.0.1", + "version": "3.0.0", "bundled": true, "requires": { "argv": "0.0.2", - "request": "2.85.0", + "request": "2.81.0", "urlgrey": "0.4.4" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "bundled": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-schema": { + "version": "1.0.5", + "bundled": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "performance-now": { + "version": "0.2.0", + "bundled": true + }, + "qs": { + "version": "6.4.0", + "bundled": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + } } }, "collection-visit": { @@ -3249,7 +3364,7 @@ } }, "core-js": { - "version": "2.5.6", + "version": "2.5.5", "bundled": true }, "core-util-is": { @@ -3344,7 +3459,7 @@ "bundled": true }, "deep-extend": { - "version": "0.5.1", + "version": "0.4.2", "bundled": true }, "deep-is": { @@ -3520,7 +3635,7 @@ "bundled": true }, "duplexify": { - "version": "3.6.0", + "version": "3.5.4", "bundled": true, "requires": { "end-of-stream": "1.4.1", @@ -3546,14 +3661,14 @@ "bundled": true, "requires": { "base64url": "2.0.0", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "empower": { "version": "1.2.3", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "empower-core": "0.6.2" } }, @@ -3569,7 +3684,7 @@ "bundled": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "end-of-stream": { @@ -3717,7 +3832,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -3730,15 +3845,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", + "globals": "11.4.0", + "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -3760,7 +3875,7 @@ "bundled": true }, "globals": { - "version": "11.5.0", + "version": "11.4.0", "bundled": true }, "strip-ansi": { @@ -3789,7 +3904,7 @@ "version": "6.0.1", "bundled": true, "requires": { - "ignore": "3.3.8", + "ignore": "3.3.7", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -3915,7 +4030,7 @@ "version": "1.7.0", "bundled": true, "requires": { - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "esquery": { @@ -4064,7 +4179,7 @@ "bundled": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.22", + "iconv-lite": "0.4.21", "tmp": "0.0.33" } }, @@ -4134,13 +4249,13 @@ "bundled": true }, "fast-glob": { - "version": "2.2.1", + "version": "2.2.0", "bundled": true, "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.2", + "merge2": "1.2.1", "micromatch": "3.1.10" } }, @@ -4417,9 +4532,9 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.1", + "fast-glob": "2.2.0", "glob": "7.1.2", - "ignore": "3.3.8", + "ignore": "3.3.7", "pify": "3.0.0", "slash": "1.0.0" } @@ -4451,16 +4566,28 @@ "version": "0.16.1", "bundled": true, "requires": { - "duplexify": "3.6.0", + "duplexify": "3.5.4", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.1", + "google-auto-auth": "0.10.0", "google-proto-files": "0.15.1", - "grpc": "1.11.3", + "grpc": "1.10.1", "is-stream-ended": "0.1.4", - "lodash": "4.17.10", + "lodash": "4.17.5", "protobufjs": "6.8.6", "through2": "2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.0", + "bundled": true, + "requires": { + "async": "2.6.0", + "gcp-metadata": "0.6.3", + "google-auth-library": "1.4.0", + "request": "2.85.0" + } + } } }, "google-p12-pem": { @@ -4487,7 +4614,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.8", + "ignore": "3.3.7", "pify": "3.0.0", "slash": "1.0.0" } @@ -4511,7 +4638,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -4539,12 +4666,12 @@ "bundled": true }, "grpc": { - "version": "1.11.3", + "version": "1.10.1", "bundled": true, "requires": { - "lodash": "4.17.10", + "lodash": "4.17.5", "nan": "2.10.0", - "node-pre-gyp": "0.10.0", + "node-pre-gyp": "0.7.0", "protobufjs": "5.0.2" }, "dependencies": { @@ -4552,6 +4679,16 @@ "version": "1.1.1", "bundled": true }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, "ansi-regex": { "version": "2.1.1", "bundled": true @@ -4565,29 +4702,82 @@ "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.6" + "readable-stream": "2.3.5" } }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, "balanced-match": { "version": "1.0.0", "bundled": true }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "4.3.1", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.8", "bundled": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "chownr": { - "version": "1.0.1", + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "co": { + "version": "4.6.0", "bundled": true }, "code-point-at": { "version": "1.1.0", "bundled": true }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, "concat-map": { "version": "0.0.1", "bundled": true @@ -4600,6 +4790,29 @@ "version": "1.0.2", "bundled": true }, + "cryptiles": { + "version": "3.1.2", + "bundled": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, "debug": { "version": "2.6.9", "bundled": true, @@ -4608,7 +4821,11 @@ } }, "deep-extend": { - "version": "0.5.1", + "version": "0.4.2", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", "bundled": true }, "delegates": { @@ -4619,17 +4836,66 @@ "version": "1.0.3", "bundled": true }, - "fs-minipass": { - "version": "1.2.5", + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", "bundled": true, "requires": { - "minipass": "2.2.4" + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "fs.realpath": { "version": "1.0.0", "bundled": true }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, "gauge": { "version": "2.7.4", "bundled": true, @@ -4644,6 +4910,13 @@ "wide-align": "1.1.2" } }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, "glob": { "version": "7.1.2", "bundled": true, @@ -4656,19 +4929,47 @@ "path-is-absolute": "1.0.1" } }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, "has-unicode": { "version": "2.0.1", "bundled": true }, - "iconv-lite": { - "version": "0.4.19", + "hawk": { + "version": "6.0.2", + "bundled": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.1", "bundled": true }, - "ignore-walk": { - "version": "3.0.1", + "http-signature": { + "version": "1.2.0", "bundled": true, "requires": { - "minimatch": "3.0.4" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "inflight": { @@ -4694,36 +4995,67 @@ "number-is-nan": "1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, "isarray": { "version": "1.0.0", "bundled": true }, - "minimatch": { - "version": "3.0.4", + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } + "optional": true }, - "minimist": { - "version": "1.2.0", + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", "bundled": true }, - "minipass": { - "version": "2.2.4", + "jsprim": { + "version": "1.4.1", "bundled": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "minizlib": { - "version": "1.1.0", + "mime-db": { + "version": "1.33.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", "bundled": true, "requires": { - "minipass": "2.2.4" + "brace-expansion": "1.1.8" } }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -4741,29 +5073,20 @@ "version": "2.0.0", "bundled": true }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" - } - }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.7.0", "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", - "needle": "2.2.1", "nopt": "4.0.1", - "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.7", + "rc": "1.2.6", + "request": "2.83.0", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "4.4.2" + "tar": "2.2.1", + "tar-pack": "3.4.1" } }, "nopt": { @@ -4774,18 +5097,6 @@ "osenv": "0.1.5" } }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, "npmlog": { "version": "4.1.2", "bundled": true, @@ -4800,6 +5111,10 @@ "version": "1.0.1", "bundled": true }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, "object-assign": { "version": "4.1.1", "bundled": true @@ -4831,6 +5146,10 @@ "version": "1.0.1", "bundled": true }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, "process-nextick-args": { "version": "2.0.0", "bundled": true @@ -4845,18 +5164,26 @@ "yargs": "3.32.0" } }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, "rc": { - "version": "1.2.7", + "version": "1.2.6", "bundled": true, "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.5", "bundled": true, "requires": { "core-util-is": "1.0.2", @@ -4864,10 +5191,38 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", + "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, + "request": { + "version": "2.83.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, "rimraf": { "version": "2.6.2", "bundled": true, @@ -4879,10 +5234,6 @@ "version": "5.1.1", "bundled": true }, - "sax": { - "version": "1.2.4", - "bundled": true - }, "semver": { "version": "5.5.0", "bundled": true @@ -4895,6 +5246,27 @@ "version": "3.0.2", "bundled": true }, + "sntp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + }, + "sshpk": { + "version": "1.14.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -4905,12 +5277,16 @@ } }, "string_decoder": { - "version": "1.1.1", + "version": "1.0.3", "bundled": true, "requires": { "safe-buffer": "5.1.1" } }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -4923,28 +5299,68 @@ "bundled": true }, "tar": { - "version": "4.4.2", + "version": "2.2.1", "bundled": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.5", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.4", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" } }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, "util-deprecate": { "version": "1.0.2", "bundled": true }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -4955,10 +5371,6 @@ "wrappy": { "version": "1.0.2", "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true } } }, @@ -5136,18 +5548,18 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "iconv-lite": { - "version": "0.4.22", + "version": "0.4.21", "bundled": true, "requires": { "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.8", + "version": "3.3.7", "bundled": true }, "ignore-by-default": { @@ -5198,7 +5610,7 @@ "version": "1.3.2", "bundled": true, "requires": { - "moment": "2.22.1", + "moment": "2.22.0", "sanitize-html": "1.18.2" } }, @@ -5207,12 +5619,12 @@ "bundled": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.10", + "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -5638,6 +6050,13 @@ "version": "0.3.1", "bundled": true }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "bundled": true @@ -5657,6 +6076,10 @@ "graceful-fs": "4.1.11" } }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, "jsprim": { "version": "1.4.1", "bundled": true, @@ -5678,7 +6101,7 @@ "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "jws": { @@ -5687,7 +6110,7 @@ "requires": { "base64url": "2.0.0", "jwa": "1.1.5", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "keyv": { @@ -5767,7 +6190,7 @@ } }, "lodash": { - "version": "4.17.10", + "version": "4.17.5", "bundled": true }, "lodash.clonedeep": { @@ -6024,7 +6447,7 @@ } }, "merge2": { - "version": "1.2.2", + "version": "1.2.1", "bundled": true }, "methmeth": { @@ -6113,7 +6536,7 @@ } }, "mocha": { - "version": "5.1.1", + "version": "5.1.0", "bundled": true, "requires": { "browser-stdout": "1.3.1", @@ -6147,7 +6570,7 @@ "bundled": true }, "moment": { - "version": "2.22.1", + "version": "2.22.0", "bundled": true }, "ms": { @@ -6215,7 +6638,7 @@ "bundled": true }, "nise": { - "version": "1.3.3", + "version": "1.3.2", "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -6273,7 +6696,7 @@ "bundled": true }, "nyc": { - "version": "11.7.1", + "version": "11.6.0", "bundled": true, "requires": { "archy": "1.0.0", @@ -6291,7 +6714,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", + "istanbul-reports": "1.3.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -6369,7 +6792,7 @@ "bundled": true }, "atob": { - "version": "2.1.0", + "version": "2.0.3", "bundled": true }, "babel-code-frame": { @@ -6406,7 +6829,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.3", "regenerator-runtime": "0.11.1" } }, @@ -6432,7 +6855,7 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.4", + "invariant": "2.2.3", "lodash": "4.17.5" } }, @@ -6474,36 +6897,9 @@ "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true } } }, @@ -6600,9 +6996,54 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "5.1.0", + "bundled": true } } }, @@ -6656,7 +7097,7 @@ "bundled": true }, "core-js": { - "version": "2.5.5", + "version": "2.5.3", "bundled": true }, "cross-spawn": { @@ -6701,36 +7142,9 @@ "isobject": "3.0.1" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true } } }, @@ -7025,7 +7439,7 @@ "bundled": true }, "invariant": { - "version": "2.2.4", + "version": "2.2.3", "bundled": true, "requires": { "loose-envify": "1.3.1" @@ -7036,10 +7450,16 @@ "bundled": true }, "is-accessor-descriptor": { - "version": "0.1.6", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } } }, "is-arrayish": { @@ -7058,23 +7478,29 @@ } }, "is-data-descriptor": { - "version": "0.1.4", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } } }, "is-descriptor": { - "version": "0.1.6", + "version": "1.0.2", "bundled": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "5.1.0", + "version": "6.0.2", "bundled": true } } @@ -7248,7 +7674,7 @@ } }, "istanbul-reports": { - "version": "1.4.0", + "version": "1.3.0", "bundled": true, "requires": { "handlebars": "4.0.11" @@ -7512,19 +7938,48 @@ "requires": { "is-descriptor": "0.1.6" } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "bundled": true } } }, @@ -7905,6 +8360,51 @@ "requires": { "is-extendable": "0.1.1" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true } } }, @@ -7924,36 +8424,9 @@ "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true } } }, @@ -7972,7 +8445,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.1.0", + "atob": "2.0.3", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -8040,6 +8513,51 @@ "requires": { "is-descriptor": "0.1.6" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "bundled": true } } }, @@ -8091,7 +8609,7 @@ "bundled": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.10", + "micromatch": "3.1.9", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -8106,14 +8624,16 @@ "bundled": true }, "braces": { - "version": "2.3.2", + "version": "2.3.1", "bundled": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", + "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", + "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -8121,6 +8641,13 @@ "to-regex": "3.0.2" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "extend-shallow": { "version": "2.0.1", "bundled": true, @@ -8157,38 +8684,6 @@ "is-extendable": "0.1.1" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "is-descriptor": { "version": "0.1.6", "bundled": true, @@ -8254,26 +8749,35 @@ } }, "is-accessor-descriptor": { - "version": "1.0.0", + "version": "0.1.6", "bundled": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", + "version": "0.1.4", "bundled": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-number": { @@ -8301,12 +8805,12 @@ "bundled": true }, "micromatch": { - "version": "3.1.10", + "version": "3.1.9", "bundled": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.2", + "braces": "2.3.1", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -8827,7 +9331,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -8987,12 +9491,12 @@ "bundled": true }, "postcss": { - "version": "6.0.22", + "version": "6.0.21", "bundled": true, "requires": { - "chalk": "2.4.1", + "chalk": "2.3.2", "source-map": "0.6.1", - "supports-color": "5.4.0" + "supports-color": "5.3.0" }, "dependencies": { "source-map": { @@ -9016,7 +9520,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-context-traversal": "1.1.1" } }, @@ -9026,7 +9530,7 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.6", + "core-js": "2.5.5", "espurify": "1.7.0", "estraverse": "4.2.0" } @@ -9035,7 +9539,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "estraverse": "4.2.0" } }, @@ -9043,7 +9547,7 @@ "version": "1.4.1", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -9068,7 +9572,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "diff-match-patch": "1.0.0", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", @@ -9079,7 +9583,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -9112,7 +9616,7 @@ "bundled": true }, "prettier": { - "version": "1.12.1", + "version": "1.12.0", "bundled": true }, "pretty-ms": { @@ -9164,7 +9668,7 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.12", + "@types/node": "8.10.8", "long": "4.0.0" } }, @@ -9195,7 +9699,7 @@ "bundled": true }, "qs": { - "version": "6.5.2", + "version": "6.5.1", "bundled": true }, "query-string": { @@ -9225,10 +9729,10 @@ } }, "rc": { - "version": "1.2.7", + "version": "1.2.6", "bundled": true, "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -9278,7 +9782,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -9350,15 +9854,15 @@ "version": "3.3.2", "bundled": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "1.2.6", + "safe-buffer": "5.1.1" } }, "registry-url": { "version": "3.1.0", "bundled": true, "requires": { - "rc": "1.2.7" + "rc": "1.2.6" } }, "regjsgen": { @@ -9418,8 +9922,8 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", + "qs": "6.5.1", + "safe-buffer": "5.1.1", "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", @@ -9549,7 +10053,7 @@ } }, "safe-buffer": { - "version": "5.1.2", + "version": "5.1.1", "bundled": true }, "safe-regex": { @@ -9571,14 +10075,14 @@ "version": "1.18.2", "bundled": true, "requires": { - "chalk": "2.4.1", + "chalk": "2.3.2", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.22", + "postcss": "6.0.21", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -9641,15 +10145,15 @@ "bundled": true }, "sinon": { - "version": "4.5.0", + "version": "5.0.7", "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", - "supports-color": "5.4.0", + "nise": "1.3.2", + "supports-color": "5.3.0", "type-detect": "4.0.8" } }, @@ -9790,7 +10294,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.1.1", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -9798,10 +10302,9 @@ } }, "source-map-support": { - "version": "0.5.5", + "version": "0.5.4", "bundled": true, "requires": { - "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -9901,7 +10404,7 @@ } }, "stream-events": { - "version": "1.0.4", + "version": "1.0.3", "bundled": true, "requires": { "stubs": "3.0.0" @@ -9936,14 +10439,14 @@ "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "stringifier": { "version": "1.3.0", "bundled": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "traverse": "0.6.6", "type-name": "2.0.2" } @@ -9990,7 +10493,7 @@ "bundled": true }, "superagent": { - "version": "3.8.3", + "version": "3.8.2", "bundled": true, "requires": { "component-emitter": "1.2.1", @@ -10001,7 +10504,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.2", + "qs": "6.5.1", "readable-stream": "2.3.6" }, "dependencies": { @@ -10040,11 +10543,11 @@ "bundled": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.3" + "superagent": "3.8.2" } }, "supports-color": { - "version": "5.4.0", + "version": "5.3.0", "bundled": true, "requires": { "has-flag": "3.0.0" @@ -10066,8 +10569,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", + "chalk": "2.3.2", + "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -10208,7 +10711,7 @@ "version": "0.6.0", "bundled": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -10404,11 +10907,11 @@ "bundled": true }, "update-notifier": { - "version": "2.5.0", + "version": "2.4.0", "bundled": true, "requires": { "boxen": "1.3.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -10673,12 +11176,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.4.1", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -10731,24 +11234,24 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.5", + "source-map-support": "0.5.4", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.4.0", + "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "update-notifier": "2.4.0" } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -10793,7 +11296,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -10803,22 +11307,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -10826,12 +11334,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -10839,27 +11349,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -10869,7 +11384,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -10884,7 +11400,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -10892,7 +11409,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "2.5.3", @@ -10901,7 +11419,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -10913,7 +11432,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -10929,7 +11449,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -10940,17 +11461,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -10959,7 +11483,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -10969,12 +11494,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -10984,13 +11511,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -11000,7 +11529,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -11012,7 +11542,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -11023,7 +11554,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -11031,32 +11563,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11065,7 +11603,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -11073,17 +11612,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -11091,7 +11633,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -11099,7 +11642,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -11107,17 +11651,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -11131,7 +11678,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11143,7 +11691,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -11151,7 +11700,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -11159,7 +11709,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11167,12 +11718,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -11184,7 +11737,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -11194,7 +11748,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -11202,12 +11757,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -11215,7 +11772,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -11224,22 +11782,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -11252,7 +11814,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -11261,7 +11824,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -11269,17 +11833,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -11290,7 +11857,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -11300,7 +11868,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11308,22 +11877,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -11332,12 +11905,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -11345,22 +11920,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -11368,12 +11947,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -11381,17 +11962,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11399,7 +11983,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11407,7 +11992,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11415,7 +12001,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11423,37 +12010,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -11461,12 +12055,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -11474,7 +12070,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -11488,7 +12085,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -11499,7 +12097,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -11509,7 +12108,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "3.1.0", @@ -11521,7 +12121,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -11531,7 +12132,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -11539,17 +12141,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11557,13 +12162,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -11571,7 +12178,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -11583,7 +12191,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -11592,24 +12201,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -11617,7 +12230,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -11626,7 +12240,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -11634,12 +12249,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -11647,7 +12264,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "0.5.7" @@ -11655,7 +12273,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -11675,12 +12294,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -11688,12 +12309,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -11701,12 +12324,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -11717,7 +12342,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -11725,7 +12351,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -11733,17 +12360,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -11752,7 +12382,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -11760,7 +12391,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -11769,12 +12401,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -11784,17 +12418,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.1.0" @@ -11802,7 +12439,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -11813,7 +12451,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -11821,7 +12460,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -11829,22 +12469,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -11854,17 +12498,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -11872,7 +12519,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -11880,7 +12528,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -11891,17 +12540,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -11910,7 +12562,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -11918,7 +12571,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11928,7 +12582,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11938,7 +12593,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -11948,7 +12604,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -11957,7 +12614,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -11968,12 +12626,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -11981,22 +12641,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -12004,22 +12668,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -12028,7 +12696,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -12036,17 +12705,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -12054,27 +12726,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -12087,7 +12764,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -12095,17 +12773,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -12114,17 +12795,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12134,7 +12818,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12142,7 +12827,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -12150,17 +12836,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "1.0.1", @@ -12172,17 +12861,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -12193,7 +12885,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -12207,13 +12900,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -12222,7 +12917,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -12230,23 +12926,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -12255,7 +12955,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12267,12 +12968,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12282,17 +12985,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "3.2.0", @@ -12311,7 +13017,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "1.0.2", @@ -12321,7 +13028,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12335,7 +13043,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -12343,7 +13052,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -12360,8 +13070,8 @@ "diff": "3.5.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", - "supports-color": "5.4.0", + "nise": "1.3.2", + "supports-color": "5.3.0", "type-detect": "4.0.8" } }, @@ -12375,9 +13085,9 @@ } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -12397,7 +13107,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.1.0", + "cliui": "4.0.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -12649,10 +13359,10 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.3", + "babel-core": "6.26.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.4.1", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -12706,7 +13416,7 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "slash": "1.0.0", "source-map-support": "0.4.18", "stack-utils": "1.0.1", @@ -12716,7 +13426,7 @@ "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "update-notifier": "2.4.0" }, "dependencies": { "ansi-escapes": { @@ -12818,9 +13528,9 @@ } }, "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -13013,7 +13723,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.6", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -13075,9 +13785,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -13158,9 +13868,9 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.3", + "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.6", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -13184,7 +13894,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -13279,7 +13989,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -13313,12 +14023,6 @@ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -13387,7 +14091,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.6", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -13440,14 +14144,14 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "supports-color": "5.3.0" }, "dependencies": { "has-flag": { @@ -13457,9 +14161,9 @@ "dev": true }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -13714,9 +14418,9 @@ } }, "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", "dev": true }, "core-util-is": { @@ -13809,9 +14513,9 @@ "dev": true }, "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, "delayed-stream": { @@ -13856,7 +14560,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "equal-length": { @@ -13910,7 +14614,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.6" + "core-js": "2.5.5" } }, "estraverse": { @@ -14695,7 +15399,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -14835,7 +15539,7 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "ignore-by-default": { @@ -15698,9 +16402,9 @@ "optional": true }, "nise": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", - "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", + "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", "requires": { "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", @@ -15763,9 +16467,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.1.tgz", - "integrity": "sha512-EGePURSKUEpS1jWnEKAMhY+GWZzi7JC+f8iBDOATaOsLZW5hM/9eYx2dHGaEXa1ITvMm44CJugMksvP3NwMQMw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", + "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", "dev": true, "requires": { "archy": "1.0.0", @@ -15783,7 +16487,7 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", + "istanbul-reports": "1.3.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", "micromatch": "2.3.11", @@ -15799,7 +16503,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "3.2.2", @@ -15809,22 +16514,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -15832,12 +16541,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -15845,42 +16556,50 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { - "version": "2.1.0", - "bundled": true, + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -15890,7 +16609,8 @@ }, "babel-generator": { "version": "6.26.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -15905,7 +16625,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -15913,16 +16634,18 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.3", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -15934,7 +16657,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -15944,13 +16668,14 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.4", + "invariant": "2.2.3", "lodash": "4.17.5" } }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -15961,17 +16686,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "1.0.1", @@ -15985,53 +16713,25 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -16040,7 +16740,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "1.8.2", @@ -16050,12 +16751,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "1.0.0", @@ -16071,14 +16774,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "1.3.0", @@ -16088,13 +16793,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -16104,7 +16811,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -16116,7 +16824,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", @@ -16127,22 +16836,82 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -16153,7 +16922,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -16161,12 +16931,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "1.0.0", @@ -16175,37 +16947,44 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-js": { - "version": "2.5.5", - "bundled": true, + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -16214,7 +16993,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -16222,22 +17002,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "2.0.0" @@ -16245,54 +17029,26 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "2.0.1" @@ -16300,7 +17056,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -16308,17 +17065,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -16332,7 +17092,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.2", @@ -16344,7 +17105,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -16352,7 +17114,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "2.2.3" @@ -16360,7 +17123,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -16369,7 +17133,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -16379,7 +17144,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -16387,12 +17153,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "2.1.0", @@ -16404,7 +17172,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "1.0.1", @@ -16414,7 +17183,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "2.0.0" @@ -16422,12 +17192,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "1.0.2" @@ -16435,7 +17207,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -16444,7 +17217,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "0.2.2" @@ -16452,27 +17226,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -16485,7 +17264,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "2.0.0", @@ -16494,7 +17274,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "2.0.1" @@ -16502,17 +17283,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -16523,7 +17307,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": "1.0.1" @@ -16533,7 +17318,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -16541,12 +17327,14 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "2.0.6", @@ -16556,14 +17344,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "3.0.0", @@ -16572,7 +17362,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -16580,7 +17371,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -16590,7 +17382,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -16600,17 +17393,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -16619,12 +17415,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { - "version": "2.2.4", - "bundled": true, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -16632,68 +17430,94 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "is-descriptor": { - "version": "0.1.6", - "bundled": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "5.1.0", - "bundled": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "2.0.0" @@ -16701,17 +17525,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -16719,12 +17546,14 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "1.0.0" @@ -16732,7 +17561,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -16740,7 +17570,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { "is-number": "4.0.0" @@ -16748,14 +17579,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" @@ -16763,49 +17596,58 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -16813,12 +17655,14 @@ }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" @@ -16826,7 +17670,8 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "6.26.1", @@ -16840,7 +17685,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -16851,7 +17697,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -16861,7 +17708,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { "debug": "3.1.0", @@ -16873,7 +17721,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -16882,8 +17731,9 @@ } }, "istanbul-reports": { - "version": "1.4.0", - "bundled": true, + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { "handlebars": "4.0.11" @@ -16891,17 +17741,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -16909,13 +17762,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "1.0.0" @@ -16923,7 +17778,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -16935,7 +17791,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "2.0.0", @@ -16944,24 +17801,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "3.0.2" @@ -16969,7 +17830,8 @@ }, "lru-cache": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -16978,12 +17840,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "1.0.1" @@ -16991,7 +17855,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -16999,12 +17864,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -17012,7 +17879,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { "source-map": "0.6.1" @@ -17020,14 +17888,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "2.0.0", @@ -17047,12 +17917,14 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -17060,12 +17932,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -17074,7 +17948,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17084,7 +17959,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -17092,12 +17968,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -17116,24 +17994,28 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -17144,7 +18026,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -17152,7 +18035,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "2.0.1" @@ -17160,17 +18044,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -17180,17 +18067,56 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } } } }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "3.0.1" @@ -17198,14 +18124,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "0.1.5", @@ -17214,7 +18142,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "3.0.1" @@ -17222,14 +18151,16 @@ "dependencies": { "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -17237,7 +18168,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "0.0.8", @@ -17246,12 +18178,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "0.7.0", @@ -17261,12 +18195,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "1.0.0" @@ -17274,7 +18210,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "1.2.0" @@ -17282,12 +18219,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "0.3.0", @@ -17298,7 +18237,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "1.3.1" @@ -17306,12 +18246,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -17319,22 +18261,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -17344,17 +18290,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" @@ -17362,7 +18311,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "1.1.2" @@ -17370,7 +18320,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -17381,22 +18332,26 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", @@ -17405,7 +18360,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -17413,7 +18369,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17423,7 +18380,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17433,7 +18391,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "1.1.0", @@ -17443,7 +18402,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "1.1.2", @@ -17452,7 +18412,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "2.1.0", @@ -17463,12 +18424,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -17476,7 +18439,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "3.0.2", @@ -17485,22 +18449,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "1.0.2" @@ -17508,32 +18476,38 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -17542,7 +18516,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "7.1.2" @@ -17550,7 +18525,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "0.1.15" @@ -17558,17 +18534,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -17579,7 +18558,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -17589,7 +18569,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -17597,22 +18578,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -17627,7 +18612,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -17635,17 +18621,76 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "1.0.0", @@ -17655,53 +18700,25 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, "isobject": { "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "3.2.2" @@ -17709,15 +18726,17 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.1.0", + "atob": "2.0.3", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -17726,12 +18745,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "1.5.6", @@ -17744,7 +18765,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -17753,12 +18775,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -17767,12 +18791,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -17780,7 +18806,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "0.2.5", @@ -17789,17 +18816,76 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -17808,12 +18894,14 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -17823,7 +18911,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -17831,7 +18920,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "0.2.1" @@ -17839,21 +18929,24 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.10", + "micromatch": "3.1.9", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -17861,24 +18954,29 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "braces": { - "version": "2.3.2", - "bundled": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", + "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", + "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -17886,9 +18984,19 @@ "to-regex": "3.0.2" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -17898,7 +19006,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "2.6.9", @@ -17912,7 +19021,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -17920,51 +19030,17 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -17974,14 +19050,16 @@ }, "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "0.3.2", @@ -17996,7 +19074,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -18004,7 +19083,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18014,7 +19094,8 @@ }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18025,7 +19106,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18034,34 +19116,49 @@ } }, "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18069,7 +19166,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -18079,22 +19177,25 @@ }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "micromatch": { - "version": "3.1.10", - "bundled": true, + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.2", + "braces": "2.3.1", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -18111,12 +19212,14 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18124,7 +19227,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "2.0.2", @@ -18135,7 +19239,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "3.0.0", @@ -18144,7 +19249,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" @@ -18154,12 +19260,14 @@ }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -18170,7 +19278,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -18184,13 +19293,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "3.1.0", @@ -18201,7 +19312,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18209,7 +19321,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18222,7 +19335,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "0.3.1", @@ -18231,7 +19345,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "2.0.6", @@ -18241,7 +19356,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -18251,24 +19367,28 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { "kind-of": "6.0.2" @@ -18276,14 +19396,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -18292,7 +19414,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -18300,23 +19423,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "1.0.2", @@ -18325,7 +19452,8 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -18333,7 +19461,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -18345,12 +19474,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18360,17 +19491,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { "cliui": "4.0.0", @@ -18389,17 +19523,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "2.1.1", @@ -18409,7 +19546,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -18417,7 +19555,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "4.1.0" @@ -18427,7 +19566,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "4.1.0" @@ -18435,7 +19575,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -18627,7 +19768,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -18839,9 +19980,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, "query-string": { @@ -18897,12 +20038,12 @@ } }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { - "deep-extend": "0.5.1", + "deep-extend": "0.4.2", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -18947,7 +20088,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", + "safe-buffer": "5.1.1", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" }, @@ -19031,8 +20172,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "1.2.6", + "safe-buffer": "5.1.1" } }, "registry-url": { @@ -19041,7 +20182,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.7" + "rc": "1.2.6" } }, "regjsgen": { @@ -19162,9 +20303,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "samsam": { @@ -19231,7 +20372,7 @@ "formatio": "1.2.0", "lodash.get": "4.4.2", "lolex": "2.3.2", - "nise": "1.3.3", + "nise": "1.3.2", "supports-color": "4.5.0", "type-detect": "4.0.8" } @@ -19281,12 +20422,11 @@ "dev": true }, "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -19389,7 +20529,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.1" } }, "strip-ansi": { @@ -19436,9 +20576,9 @@ "dev": true }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -19449,7 +20589,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.2", + "qs": "6.5.1", "readable-stream": "2.3.6" } }, @@ -19490,7 +20630,7 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.3" + "superagent": "3.8.2" } }, "supports-color": { @@ -19723,13 +20863,13 @@ "dev": true }, "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", + "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.4.1", + "chalk": "2.3.2", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", From 48f6d79f65af6fbaf2381c97135ad6e1dbbe814d Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 11 May 2018 09:47:08 -0400 Subject: [PATCH 191/820] =?UTF-8?q?Update=20@google-cloud/common=20to=20th?= =?UTF-8?q?e=20latest=20version=20=F0=9F=9A=80=20(#75)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nodejs-datastore/package-lock.json | 103 +++++++++--------- handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 87 +++++++-------- 3 files changed, 97 insertions(+), 95 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 036f3c0029b..32567e3bb8a 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -81,48 +81,32 @@ } }, "@google-cloud/common": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.2.tgz", - "integrity": "sha512-GrkaFoj0/oO36pNs4yLmaYhTujuA3i21FdQik99Fd/APix1uhf01VlpJY4lAteTDFLRNkRx6ydEh7OVvmeUHng==", + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.18.6.tgz", + "integrity": "sha512-kwYLeAjrlDvztxirzxcSmEyapq5jl09Bca6Pl5wsuMejjM/7KxfFQRnDwHyu43uB/QGGPH/0e0BS1Icxy6O/SA==", "requires": { - "array-uniq": "1.0.3", + "@types/duplexify": "3.5.0", + "@types/request": "2.47.0", "arrify": "1.0.1", - "concat-stream": "1.6.2", - "create-error-class": "3.0.2", + "axios": "0.18.0", "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", - "google-auto-auth": "0.9.7", + "google-auth-library": "1.4.0", "is": "3.2.1", - "log-driver": "1.2.7", - "methmeth": "1.1.0", - "modelo": "4.2.3", + "pify": "3.0.0", "request": "2.85.0", "retry-request": "3.3.1", - "split-array-stream": "1.0.3", - "stream-events": "1.0.3", - "string-format-obj": "1.1.1", - "through2": "2.0.3" + "split-array-stream": "2.0.0", + "stream-events": "1.0.4" }, "dependencies": { - "google-auto-auth": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", - "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - }, - "split-array-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", - "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "stream-events": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", + "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { - "async": "2.6.0", - "is-stream-ended": "0.1.4" + "stubs": "3.0.0" } } } @@ -2175,6 +2159,27 @@ "samsam": "1.3.0" } }, + "@types/caseless": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", + "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==" + }, + "@types/duplexify": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", + "requires": { + "@types/node": "8.10.8" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "8.10.8" + } + }, "@types/long": { "version": "3.0.32", "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", @@ -2185,6 +2190,22 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.8.tgz", "integrity": "sha512-BvcUxNZe9JgiiUVivtiQt3NrPVu9OAQzkxR1Ko9ESftCYU7V6Np5kpDzQwxd+34lsop7SNRdL292Flv52OvCaw==" }, + "@types/request": { + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.0.tgz", + "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==", + "requires": { + "@types/caseless": "0.12.1", + "@types/form-data": "2.2.1", + "@types/node": "8.10.8", + "@types/tough-cookie": "2.3.3" + } + }, + "@types/tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" + }, "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", @@ -8152,11 +8173,6 @@ "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", "dev": true }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" - }, "lolex": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", @@ -8415,11 +8431,6 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz", "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg==" }, - "methmeth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", - "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=" - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -8548,11 +8559,6 @@ } } }, - "modelo": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", - "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==" - }, "module-not-found-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", @@ -13450,11 +13456,6 @@ "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", "dev": true }, - "string-format-obj": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", - "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c2fee13234d..4ec6e98be02 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,7 +62,7 @@ "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --no-timeouts" }, "dependencies": { - "@google-cloud/common": "^0.16.0", + "@google-cloud/common": "^0.18.6", "arrify": "^1.0.0", "concat-stream": "^1.5.0", "create-error-class": "^3.0.2", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 0e521542cf6..046a7a97002 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -83,7 +83,7 @@ "@google-cloud/datastore": { "version": "1.4.0", "requires": { - "@google-cloud/common": "0.16.2", + "@google-cloud/common": "0.18.6", "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", @@ -165,45 +165,30 @@ } }, "@google-cloud/common": { - "version": "0.16.2", + "version": "0.18.6", "bundled": true, "requires": { - "array-uniq": "1.0.3", + "@types/duplexify": "3.5.0", + "@types/request": "2.47.0", "arrify": "1.0.1", - "concat-stream": "1.6.2", - "create-error-class": "3.0.2", + "axios": "0.18.0", "duplexify": "3.5.4", "ent": "2.2.0", "extend": "3.0.1", - "google-auto-auth": "0.9.7", + "google-auth-library": "1.4.0", "is": "3.2.1", - "log-driver": "1.2.7", - "methmeth": "1.1.0", - "modelo": "4.2.3", + "pify": "3.0.0", "request": "2.85.0", "retry-request": "3.3.1", - "split-array-stream": "1.0.3", - "stream-events": "1.0.3", - "string-format-obj": "1.1.1", - "through2": "2.0.3" + "split-array-stream": "2.0.0", + "stream-events": "1.0.4" }, "dependencies": { - "google-auto-auth": { - "version": "0.9.7", - "bundled": true, - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - }, - "split-array-stream": { - "version": "1.0.3", + "stream-events": { + "version": "1.0.4", "bundled": true, "requires": { - "async": "2.6.0", - "is-stream-ended": "0.1.4" + "stubs": "3.0.0" } } } @@ -1795,6 +1780,24 @@ "samsam": "1.3.0" } }, + "@types/caseless": { + "version": "0.12.1", + "bundled": true + }, + "@types/duplexify": { + "version": "3.5.0", + "bundled": true, + "requires": { + "@types/node": "8.10.8" + } + }, + "@types/form-data": { + "version": "2.2.1", + "bundled": true, + "requires": { + "@types/node": "8.10.8" + } + }, "@types/long": { "version": "3.0.32", "bundled": true @@ -1803,6 +1806,20 @@ "version": "8.10.8", "bundled": true }, + "@types/request": { + "version": "2.47.0", + "bundled": true, + "requires": { + "@types/caseless": "0.12.1", + "@types/form-data": "2.2.1", + "@types/node": "8.10.8", + "@types/tough-cookie": "2.3.3" + } + }, + "@types/tough-cookie": { + "version": "2.3.3", + "bundled": true + }, "acorn": { "version": "4.0.13", "bundled": true @@ -6245,10 +6262,6 @@ "version": "4.6.1", "bundled": true }, - "log-driver": { - "version": "1.2.7", - "bundled": true - }, "lolex": { "version": "2.3.2", "bundled": true @@ -6450,10 +6463,6 @@ "version": "1.2.1", "bundled": true }, - "methmeth": { - "version": "1.1.0", - "bundled": true - }, "methods": { "version": "1.1.2", "bundled": true @@ -6561,10 +6570,6 @@ } } }, - "modelo": { - "version": "4.2.3", - "bundled": true - }, "module-not-found-error": { "version": "1.0.1", "bundled": true @@ -10422,10 +10427,6 @@ "version": "3.3.3", "bundled": true }, - "string-format-obj": { - "version": "1.1.1", - "bundled": true - }, "string-width": { "version": "1.0.2", "bundled": true, From 217050b41d16550df98b57d15525389897592ef4 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 16 May 2018 16:52:08 -0700 Subject: [PATCH 192/820] chore: timeout for system test (#90) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4ec6e98be02..5e2ba9be68c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -59,7 +59,7 @@ "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", "test-no-cover": "repo-tools test run --cmd mocha -- test/*.js --no-timeouts", "test": "repo-tools test run --cmd npm -- run cover", - "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --no-timeouts" + "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --timeout 600000" }, "dependencies": { "@google-cloud/common": "^0.18.6", From 4357402def03fab18c54bca3e3f0b487992d74af Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 21 May 2018 09:29:48 -0700 Subject: [PATCH 193/820] Fix Datastore region tags. (#89) --- .../nodejs-datastore/samples/concepts.js | 208 +++++++++--------- handwritten/nodejs-datastore/samples/tasks.js | 20 +- 2 files changed, 114 insertions(+), 114 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 94a5ab8b8e4..d62737116df 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -61,36 +61,36 @@ class Entity extends TestHelper { } getIncompleteKey() { - // [START incomplete_key] + // [START datastore_incomplete_key] const taskKey = datastore.key('Task'); - // [END incomplete_key] + // [END datastore_incomplete_key] return taskKey; } getNamedKey() { - // [START named_key] + // [START datastore_named_key] const taskKey = datastore.key(['Task', 'sampleTask']); - // [END named_key] + // [END datastore_named_key] return taskKey; } getKeyWithParent() { - // [START key_with_parent] + // [START datastore_key_with_parent] const taskKey = datastore.key([ 'TaskList', 'default', 'Task', 'sampleTask', ]); - // [END key_with_parent] + // [END datastore_key_with_parent] return taskKey; } getKeyWithMultiLevelParent() { - // [START key_with_multilevel_parent] + // [START datastore_key_with_multilevel_parent] const taskKey = datastore.key([ 'User', 'alice', @@ -99,20 +99,20 @@ class Entity extends TestHelper { 'Task', 'sampleTask', ]); - // [END key_with_multilevel_parent] + // [END datastore_key_with_multilevel_parent] return taskKey; } getTask() { - // [START basic_entity] + // [START datastore_basic_entity] const task = { category: 'Personal', done: false, priority: 4, description: 'Learn Cloud Datastore', }; - // [END basic_entity] + // [END datastore_basic_entity] return task; } @@ -153,7 +153,7 @@ class Entity extends TestHelper { t.plan(0); const taskKey = this.keyWithParent; - // [START entity_with_parent] + // [START datastore_entity_with_parent] const task = { key: taskKey, data: { @@ -163,13 +163,13 @@ class Entity extends TestHelper { description: 'Learn Cloud Datastore', }, }; - // [END entity_with_parent] + // [END datastore_entity_with_parent] return this.datastore.save(task); } testProperties() { - // [START properties] + // [START datastore_properties] const task = [ { name: 'category', @@ -197,7 +197,7 @@ class Entity extends TestHelper { excludeFromIndexes: true, }, ]; - // [END properties] + // [END datastore_properties] return this.datastore.save({ key: this.incompleteKey, @@ -207,12 +207,12 @@ class Entity extends TestHelper { testArrayValue(t) { t.plan(0); - // [START array_value] + // [START datastore_array_value] const task = { tags: ['fun', 'programming'], collaborators: ['alice', 'bob'], }; - // [END array_value] + // [END datastore_array_value] return this.datastore.save({ key: this.incompleteKey, @@ -233,7 +233,7 @@ class Entity extends TestHelper { const taskKey = this.getIncompleteKey(); const task = this.getTask(); - // [START upsert] + // [START datastore_upsert] const entity = { key: taskKey, data: task, @@ -242,7 +242,7 @@ class Entity extends TestHelper { datastore.upsert(entity).then(() => { // Task inserted successfully. }); - // [END upsert] + // [END datastore_upsert] return this.datastore.upsert({ key: this.datastore.key(['Task', 1]), @@ -255,7 +255,7 @@ class Entity extends TestHelper { const taskKey = this.getIncompleteKey(); const task = this.getTask(); - // [START insert] + // [START datastore_insert] const entity = { key: taskKey, data: task, @@ -264,7 +264,7 @@ class Entity extends TestHelper { datastore.insert(entity).then(() => { // Task inserted successfully. }); - // [END insert] + // [END datastore_insert] return this.datastore.save({ method: 'insert', @@ -277,7 +277,7 @@ class Entity extends TestHelper { t.plan(0); const taskKey = this.getIncompleteKey(); - // [START lookup] + // [START datastore_lookup] datastore.get(taskKey).then(results => { // Task found. const entity = results[0]; @@ -290,7 +290,7 @@ class Entity extends TestHelper { // }; console.log(entity); }); - // [END lookup] + // [END datastore_lookup] return this.datastore .save({ @@ -306,7 +306,7 @@ class Entity extends TestHelper { const taskKey = this.getIncompleteKey(); const task = this.getTask(); - // [START update] + // [START datastore_update] const entity = { key: taskKey, data: task, @@ -315,7 +315,7 @@ class Entity extends TestHelper { datastore.update(entity).then(() => { // Task updated successfully. }); - // [END update] + // [END datastore_update] return this.datastore .save({ @@ -330,11 +330,11 @@ class Entity extends TestHelper { t.plan(0); const taskKey = this.getIncompleteKey(); - // [START delete] + // [START datastore_delete] datastore.delete(taskKey).then(() => { // Task deleted successfully. }); - // [END delete] + // [END datastore_delete] return this.datastore .save({ @@ -363,7 +363,7 @@ class Entity extends TestHelper { description: 'Integrate Cloud Datastore', }; - // [START batch_upsert] + // [START datastore_batch_upsert] const entities = [ { key: taskKey1, @@ -378,7 +378,7 @@ class Entity extends TestHelper { datastore.upsert(entities).then(() => { // Tasks inserted successfully. }); - // [END batch_upsert] + // [END datastore_batch_upsert] return this.datastore.upsert([ { @@ -397,7 +397,7 @@ class Entity extends TestHelper { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); - // [START batch_lookup] + // [START datastore_batch_lookup] const keys = [taskKey1, taskKey2]; datastore.get(keys).then(results => { @@ -406,7 +406,7 @@ class Entity extends TestHelper { console.log(tasks); }); - // [END batch_lookup] + // [END datastore_batch_lookup] return this.datastore.get([taskKey1, taskKey2]); } @@ -416,13 +416,13 @@ class Entity extends TestHelper { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); - // [START batch_delete] + // [START datastore_batch_delete] const keys = [taskKey1, taskKey2]; datastore.delete(keys).then(() => { // Tasks deleted successfully. }); - // [END batch_delete] + // [END datastore_batch_delete] return this.datastore.delete([taskKey1, taskKey2]); } @@ -433,11 +433,11 @@ class Index extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START unindexed_property_query] + // [START datastore_unindexed_property_query] const query = datastore .createQuery('Task') .filter('description', '=', 'A task description.'); - // [END unindexed_property_query] + // [END datastore_unindexed_property_query] return this.datastore.runQuery(query); } @@ -446,7 +446,7 @@ class Index extends TestHelper { const original = datastore.key; datastore.key = this.datastore.key; - // [START exploding_properties] + // [START datastore_exploding_properties] const task = { method: 'insert', key: datastore.key('Task'), @@ -456,7 +456,7 @@ class Index extends TestHelper { created: new Date(), }, }; - // [END exploding_properties] + // [END datastore_exploding_properties] datastore.key = original; @@ -483,7 +483,7 @@ class Metadata extends TestHelper { data: {}, }) .then(() => { - // [START namespace_run_query] + // [START datastore_namespace_run_query] function runNamespaceQuery(startNamespace, endNamespace) { const startKey = datastore.key(['__namespace__', startNamespace]); const endKey = datastore.key(['__namespace__', endNamespace]); @@ -506,7 +506,7 @@ class Metadata extends TestHelper { return namespaces; }); } - // [END namespace_run_query] + // [END datastore_namespace_run_query] return runNamespaceQuery(startNamespace, endNamespace); }) @@ -518,7 +518,7 @@ class Metadata extends TestHelper { testKindRunQuery(t) { const datastore = this.datastore; - // [START kind_run_query] + // [START datastore_kind_run_query] function runKindQuery() { const query = datastore.createQuery('__kind__').select('__key__'); @@ -532,7 +532,7 @@ class Metadata extends TestHelper { return kinds; }); } - // [END kind_run_query] + // [END datastore_kind_run_query] return runKindQuery().then(kinds => { t.true(kinds.includes('Account')); @@ -542,7 +542,7 @@ class Metadata extends TestHelper { testPropertyRunQuery(t) { const datastore = this.datastore; - // [START property_run_query] + // [START datastore_property_run_query] function runPropertyQuery() { const query = datastore.createQuery('__property__').select('__key__'); @@ -567,7 +567,7 @@ class Metadata extends TestHelper { return propertiesByKind; }); } - // [END property_run_query] + // [END datastore_property_run_query] return runPropertyQuery().then(propertiesByKind => { t.deepEqual(propertiesByKind.Account, ['balance']); @@ -577,7 +577,7 @@ class Metadata extends TestHelper { testPropertyByKindRunQuery(t) { const datastore = this.datastore; - // [START property_by_kind_run_query] + // [START datastore_property_by_kind_run_query] function runPropertyByKindQuery() { const ancestorKey = datastore.key(['__kind__', 'Account']); @@ -606,7 +606,7 @@ class Metadata extends TestHelper { return representationsByProperty; }); } - // [END property_by_kind_run_query] + // [END datastore_property_by_kind_run_query] return runPropertyByKindQuery().then(propertiesByKind => { t.deepEqual(propertiesByKind, { @@ -628,7 +628,7 @@ class Query extends TestHelper { getBasicQuery() { const datastore = this.datastore; - // [START basic_query] + // [START datastore_basic_query] const query = datastore .createQuery('Task') .filter('done', '=', false) @@ -636,7 +636,7 @@ class Query extends TestHelper { .order('priority', { descending: true, }); - // [END basic_query] + // [END datastore_basic_query] return query; } @@ -644,11 +644,11 @@ class Query extends TestHelper { getProjectionQuery() { const datastore = this.datastore; - // [START projection_query] + // [START datastore_projection_query] const query = datastore .createQuery('Task') .select(['priority', 'percent_complete']); - // [END projection_query] + // [END datastore_projection_query] return query; } @@ -656,11 +656,11 @@ class Query extends TestHelper { getAncestorQuery() { const datastore = this.datastore; - // [START ancestor_query] + // [START datastore_ancestor_query] const ancestorKey = datastore.key(['TaskList', 'default']); const query = datastore.createQuery('Task').hasAncestor(ancestorKey); - // [END ancestor_query] + // [END datastore_ancestor_query] return query; } @@ -669,7 +669,7 @@ class Query extends TestHelper { t.plan(0); const query = this.basicQuery; - // [START run_query] + // [START datastore_run_query] datastore.runQuery(query).then(results => { // Task entities found. const tasks = results[0]; @@ -677,7 +677,7 @@ class Query extends TestHelper { console.log('Tasks:'); tasks.forEach(task => console.log(task)); }); - // [END run_query] + // [END datastore_run_query] return this.datastore.runQuery(query); } @@ -686,9 +686,9 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START property_filter] + // [START datastore_property_filter] const query = datastore.createQuery('Task').filter('done', '=', false); - // [END property_filter] + // [END datastore_property_filter] return this.datastore.runQuery(query); } @@ -697,12 +697,12 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START composite_filter] + // [START datastore_composite_filter] const query = datastore .createQuery('Task') .filter('done', '=', false) .filter('priority', '=', 4); - // [END composite_filter] + // [END datastore_composite_filter] return this.datastore.runQuery(query); } @@ -711,11 +711,11 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START key_filter] + // [START datastore_key_filter] const query = datastore .createQuery('Task') .filter('__key__', '>', datastore.key(['Task', 'someTask'])); - // [END key_filter] + // [END datastore_key_filter] return this.datastore.runQuery(query); } @@ -724,9 +724,9 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START ascending_sort] + // [START datastore_ascending_sort] const query = datastore.createQuery('Task').order('created'); - // [END ascending_sort] + // [END datastore_ascending_sort] return this.datastore.runQuery(query); } @@ -735,11 +735,11 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START descending_sort] + // [START datastore_descending_sort] const query = datastore.createQuery('Task').order('created', { descending: true, }); - // [END descending_sort] + // [END datastore_descending_sort] return this.datastore.runQuery(query); } @@ -748,14 +748,14 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START multi_sort] + // [START datastore_multi_sort] const query = datastore .createQuery('Task') .order('priority', { descending: true, }) .order('created'); - // [END multi_sort] + // [END datastore_multi_sort] return this.datastore.runQuery(query); } @@ -765,12 +765,12 @@ class Query extends TestHelper { const datastore = this.datastore; const lastSeenKey = this.datastore.key(['Task', Date.now()]); - // [START kindless_query] + // [START datastore_kindless_query] const query = datastore .createQuery() .filter('__key__', '>', lastSeenKey) .limit(1); - // [END kindless_query] + // [END datastore_kindless_query] return this.datastore.runQuery(query); } @@ -779,7 +779,7 @@ class Query extends TestHelper { const datastore = this.datastore; const query = this.projectionQuery; - // [START run_query_projection] + // [START datastore_run_query_projection] function runProjectionQuery() { const priorities = []; const percentCompletes = []; @@ -798,7 +798,7 @@ class Query extends TestHelper { }; }); } - // [END run_query_projection] + // [END datastore_run_query_projection] return runProjectionQuery(); } @@ -807,12 +807,12 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START keys_only_query] + // [START datastore_keys_only_query] const query = datastore .createQuery() .select('__key__') .limit(1); - // [END keys_only_query] + // [END datastore_keys_only_query] return this.datastore.runQuery(query); } @@ -821,13 +821,13 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START distinct_query] + // [START datastore_distinct_query] const query = datastore .createQuery('Task') .groupBy(['category', 'priority']) .order('category') .order('priority'); - // [END distinct_query] + // [END datastore_distinct_query] return this.datastore.runQuery(query); } @@ -836,13 +836,13 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START distinct_on_query] + // [START datastore_distinct_on_query] const query = datastore .createQuery('Task') .groupBy('category') .order('category') .order('priority'); - // [END distinct_on_query] + // [END datastore_distinct_on_query] return this.datastore.runQuery(query); } @@ -851,12 +851,12 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START array_value_inequality_range] + // [START datastore_array_value_inequality_range] const query = datastore .createQuery('Task') .filter('tag', '>', 'learn') .filter('tag', '<', 'math'); - // [END array_value_inequality_range] + // [END datastore_array_value_inequality_range] return this.datastore.runQuery(query); } @@ -865,12 +865,12 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START array_value_equality] + // [START datastore_array_value_equality] const query = datastore .createQuery('Task') .filter('tag', '=', 'fun') .filter('tag', '=', 'programming'); - // [END array_value_equality] + // [END datastore_array_value_equality] return this.datastore.runQuery(query); } @@ -879,12 +879,12 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START inequality_range] + // [START datastore_inequality_range] const query = datastore .createQuery('Task') .filter('created', '>', new Date('1990-01-01T00:00:00z')) .filter('created', '<', new Date('2000-12-31T23:59:59z')); - // [END inequality_range] + // [END datastore_inequality_range] return this.datastore.runQuery(query); } @@ -892,12 +892,12 @@ class Query extends TestHelper { testInequalityInvalid() { const datastore = this.datastore; - // [START inequality_invalid] + // [START datastore_inequality_invalid] const query = datastore .createQuery('Task') .filter('priority', '>', 3) .filter('created', '>', new Date('1990-01-01T00:00:00z')); - // [END inequality_invalid] + // [END datastore_inequality_invalid] return this.datastore.runQuery(query); } @@ -906,14 +906,14 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START equal_and_inequality_range] + // [START datastore_equal_and_inequality_range] const query = datastore .createQuery('Task') .filter('priority', '=', 4) .filter('done', '=', false) .filter('created', '>', new Date('1990-01-01T00:00:00z')) .filter('created', '<', new Date('2000-12-31T23:59:59z')); - // [END equal_and_inequality_range] + // [END datastore_equal_and_inequality_range] return this.datastore.runQuery(query); } @@ -922,13 +922,13 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START inequality_sort] + // [START datastore_inequality_sort] const query = datastore .createQuery('Task') .filter('priority', '>', 3) .order('priority') .order('created'); - // [END inequality_sort] + // [END datastore_inequality_sort] return this.datastore.runQuery(query); } @@ -936,12 +936,12 @@ class Query extends TestHelper { testInequalitySortInvalidNotSame() { const datastore = this.datastore; - // [START inequality_sort_invalid_not_same] + // [START datastore_inequality_sort_invalid_not_same] const query = datastore .createQuery('Task') .filter('priority', '>', 3) .order('created'); - // [END inequality_sort_invalid_not_same] + // [END datastore_inequality_sort_invalid_not_same] return this.datastore.runQuery(query); } @@ -949,13 +949,13 @@ class Query extends TestHelper { testInequalitySortInvalidNotFirst() { const datastore = this.datastore; - // [START inequality_sort_invalid_not_first] + // [START datastore_inequality_sort_invalid_not_first] const query = datastore .createQuery('Task') .filter('priority', '>', 3) .order('created') .order('priority'); - // [END inequality_sort_invalid_not_first] + // [END datastore_inequality_sort_invalid_not_first] return this.datastore.runQuery(query); } @@ -964,9 +964,9 @@ class Query extends TestHelper { t.plan(0); const datastore = this.datastore; - // [START limit] + // [START datastore_limit] const query = datastore.createQuery('Task').limit(5); - // [END limit] + // [END datastore_limit] return this.datastore.runQuery(query); } @@ -975,7 +975,7 @@ class Query extends TestHelper { const datastore = this.datastore; const pageSize = 1; - // [START cursor_paging] + // [START datastore_cursor_paging] // By default, google-cloud-node will automatically paginate through all of // the results that match a query. However, this sample implements manual // pagination using limits and cursor tokens. @@ -1004,7 +1004,7 @@ class Query extends TestHelper { return [entities, info]; }); } - // [END cursor_paging] + // [END datastore_cursor_paging] return runPageQuery().then(results => { const entities = results[0]; @@ -1020,12 +1020,12 @@ class Query extends TestHelper { t.plan(0); const datastoreMock = datastore; datastore = this.datastore; - // [START eventual_consistent_query] + // [START datastore_eventual_consistent_query] const ancestorKey = datastore.key(['TaskList', 'default']); const query = datastore.createQuery('Task').hasAncestor(ancestorKey); query.run({consistency: 'eventual'}); - // [END eventual_consistent_query] + // [END datastore_eventual_consistent_query] return query .run({consistency: 'eventual'}) .then(results => { @@ -1040,7 +1040,7 @@ class Query extends TestHelper { } } -// [START transactional_update] +// [START datastore_transactional_update] function transferFunds(fromKey, toKey, amount) { const transaction = datastore.transaction(); @@ -1068,7 +1068,7 @@ function transferFunds(fromKey, toKey, amount) { }) .catch(() => transaction.rollback()); } -// [END transactional_update] +// [END datastore_transactional_update] class Transaction extends TestHelper { constructor(projectId) { @@ -1139,7 +1139,7 @@ class Transaction extends TestHelper { balance: this.originalBalance, }) .then(() => { - // [START transactional_retry] + // [START datastore_transactional_retry] function transferFundsWithRetry() { const maxTries = 5; let currentAttempt = 1; @@ -1163,7 +1163,7 @@ class Transaction extends TestHelper { return tryRequest(1, 5); } - // [END transactional_retry] + // [END datastore_transactional_retry] return transferFundsWithRetry(); }) .then(() => { @@ -1183,7 +1183,7 @@ class Transaction extends TestHelper { const datastoreMock = datastore; datastore = this.datastore; - // [START transactional_get_or_create] + // [START datastore_transactional_get_or_create] function getOrCreate(taskKey, taskData) { const taskEntity = { key: taskKey, @@ -1209,7 +1209,7 @@ class Transaction extends TestHelper { .then(() => taskEntity) .catch(() => transaction.rollback()); } - // [END transactional_get_or_create] + // [END datastore_transactional_get_or_create] return getOrCreate(taskKey, {}) .then(task => { @@ -1233,7 +1233,7 @@ class Transaction extends TestHelper { const datastoreMock = datastore; datastore = this.datastore; - // [START transactional_single_entity_group_read_only] + // [START datastore_transactional_single_entity_group_read_only] function getTaskListEntities() { let taskList, taskListEntities; @@ -1255,7 +1255,7 @@ class Transaction extends TestHelper { .then(() => [taskList, taskListEntities]) .catch(() => transaction.rollback()); } - // [END transactional_single_entity_group_read_only] + // [END datastore_transactional_single_entity_group_read_only] return getTaskListEntities().then( results => { diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 8e9249f06fd..46113129b23 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -15,7 +15,7 @@ 'use strict'; -// [START build_service] +// [START datastore_build_service] // By default, the client will authenticate using the service account file // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use // the project specified by the GCLOUD_PROJECT environment variable. See @@ -24,7 +24,7 @@ const Datastore = require('@google-cloud/datastore'); // Creates a client const datastore = new Datastore({}); -// [END build_service] +// [END datastore_build_service] /* Installation and setup instructions. @@ -63,7 +63,7 @@ node tasks ``` */ -// [START add_entity] +// [START datastore_add_entity] function addTask(description) { const taskKey = datastore.key('Task'); const entity = { @@ -94,9 +94,9 @@ function addTask(description) { console.error('ERROR:', err); }); } -// [END add_entity] +// [END datastore_add_entity] -// [START update_entity] +// [START datastore_update_entity] function markDone(taskId) { const transaction = datastore.transaction(); const taskKey = datastore.key(['Task', taskId]); @@ -119,9 +119,9 @@ function markDone(taskId) { }) .catch(() => transaction.rollback()); } -// [END update_entity] +// [END datastore_update_entity] -// [START retrieve_entities] +// [START datastore_retrieve_entities] function listTasks() { const query = datastore.createQuery('Task').order('created'); @@ -140,9 +140,9 @@ function listTasks() { console.error('ERROR:', err); }); } -// [END retrieve_entities] +// [END datastore_retrieve_entities] -// [START delete_entity] +// [START datastore_delete_entity] function deleteTask(taskId) { const taskKey = datastore.key(['Task', taskId]); @@ -155,7 +155,7 @@ function deleteTask(taskId) { console.error('ERROR:', err); }); } -// [END delete_entity] +// [END datastore_delete_entity] require(`yargs`) // eslint-disable-line .demand(1) From 93b4c9942a27e5d316241d39deba74323a2d0218 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Mon, 21 May 2018 15:57:18 -0700 Subject: [PATCH 194/820] chore: the ultimate fix for repo-tools EPERM (#91) --- .../nodejs-datastore/.circleci/config.yml | 48 ++++++------------- 1 file changed, 14 insertions(+), 34 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 08c2605773e..a9530aee603 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -4,25 +4,17 @@ workflows: tests: jobs: &workflow_jobs - node4: - filters: + filters: &all_commits tags: only: /.*/ - node6: - filters: - tags: - only: /.*/ + filters: *all_commits - node8: - filters: - tags: - only: /.*/ + filters: *all_commits - node9: - filters: - tags: - only: /.*/ + filters: *all_commits - node10: - filters: - tags: - only: /.*/ + filters: *all_commits - lint: requires: - node4 @@ -30,9 +22,7 @@ workflows: - node8 - node9 - node10 - filters: - tags: - only: /.*/ + filters: *all_commits - docs: requires: - node4 @@ -40,27 +30,21 @@ workflows: - node8 - node9 - node10 - filters: - tags: - only: /.*/ + filters: *all_commits - system_tests: requires: - lint - docs - filters: + filters: &master_and_releases branches: only: master - tags: + tags: &releases only: '/^v[\d.]+$/' - sample_tests: requires: - lint - docs - filters: - branches: - only: master - tags: - only: '/^v[\d.]+$/' + filters: *master_and_releases - publish_npm: requires: - system_tests @@ -68,8 +52,7 @@ workflows: filters: branches: ignore: /.*/ - tags: - only: '/^v[\d.]+$/' + tags: *releases nightly: triggers: - schedule: @@ -97,15 +80,12 @@ jobs: echo "Not a nightly build, skipping this step." fi - run: &npm_install_and_link - name: Install and link the module. - command: | + name: Install and link the module + command: |- mkdir -p /home/node/.npm-global npm install - repo_tools="node_modules/@google-cloud/nodejs-repo-tools/bin/tools" - if ! test -x "$repo_tools"; then - chmod +x "$repo_tools" - fi npm link + chmod +x node_modules/@google-cloud/nodejs-repo-tools/bin/tools environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: From 998eb778fff4c9f152803c04a95d5aff9cd16c18 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 22 May 2018 11:31:45 -0700 Subject: [PATCH 195/820] chore: lock files maintenance (#92) * chore: lock files maintenance * chore: lock files maintenance --- .../nodejs-datastore/package-lock.json | 3928 +++++--------- .../samples/package-lock.json | 4546 ++++++----------- 2 files changed, 2922 insertions(+), 5552 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 32567e3bb8a..05317da3ba4 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -81,34 +81,24 @@ } }, "@google-cloud/common": { - "version": "0.18.6", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.18.6.tgz", - "integrity": "sha512-kwYLeAjrlDvztxirzxcSmEyapq5jl09Bca6Pl5wsuMejjM/7KxfFQRnDwHyu43uB/QGGPH/0e0BS1Icxy6O/SA==", + "version": "0.18.9", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.18.9.tgz", + "integrity": "sha512-P5jtyfOCF84fzVcT/36XKARRrbCOqozYBliDd7btQ96GuEqKzjPVjxeE4EzdeRQ8QChBpHLrbONsU63Jprw73A==", "requires": { "@types/duplexify": "3.5.0", "@types/request": "2.47.0", "arrify": "1.0.1", "axios": "0.18.0", - "duplexify": "3.5.4", + "duplexify": "3.6.0", "ent": "2.2.0", "extend": "3.0.1", - "google-auth-library": "1.4.0", + "google-auth-library": "1.5.0", "is": "3.2.1", "pify": "3.0.0", - "request": "2.85.0", + "request": "2.87.0", "retry-request": "3.3.1", "split-array-stream": "2.0.0", "stream-events": "1.0.4" - }, - "dependencies": { - "stream-events": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", - "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", - "requires": { - "stubs": "3.0.0" - } - } } }, "@google-cloud/nodejs-repo-tools": { @@ -140,9 +130,9 @@ "dev": true }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "2.1.1", @@ -156,6 +146,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, "nyc": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", @@ -193,8 +189,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -204,26 +199,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -231,14 +222,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -246,32 +235,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -281,8 +265,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -297,8 +280,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -306,8 +288,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -316,8 +297,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -329,8 +309,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -346,8 +325,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -358,20 +336,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -380,8 +355,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -391,14 +365,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -408,15 +380,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -426,8 +396,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -439,8 +408,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -451,8 +419,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -460,38 +427,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -500,8 +461,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -509,20 +469,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -530,8 +487,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -539,8 +495,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -548,20 +503,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -575,8 +527,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -588,8 +539,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -597,8 +547,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -606,8 +555,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -615,14 +563,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -634,8 +580,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -645,8 +590,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -654,14 +598,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -669,8 +611,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -679,26 +620,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -711,8 +648,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -721,8 +657,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -730,20 +665,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -754,8 +686,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -765,8 +696,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -774,26 +704,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -802,14 +728,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -817,26 +741,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -844,14 +764,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -859,20 +777,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -880,8 +795,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -889,8 +803,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -898,8 +811,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -907,44 +819,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -952,14 +857,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -967,8 +870,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -982,8 +884,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -994,8 +895,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -1005,8 +905,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -1018,8 +917,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -1029,8 +927,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -1038,20 +935,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1059,15 +953,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -1075,8 +967,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1088,8 +979,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -1098,28 +988,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -1127,8 +1013,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -1137,8 +1022,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -1146,14 +1030,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -1161,8 +1043,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -1170,8 +1051,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -1191,14 +1071,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -1206,14 +1084,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1221,14 +1097,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -1239,8 +1113,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -1248,8 +1121,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -1257,20 +1129,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -1279,8 +1148,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -1288,8 +1156,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -1298,14 +1165,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -1315,20 +1180,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -1336,8 +1198,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -1348,8 +1209,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -1357,8 +1217,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -1366,26 +1225,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1395,20 +1250,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -1416,8 +1268,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -1425,8 +1276,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1437,20 +1287,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -1459,8 +1306,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -1468,8 +1314,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1479,8 +1324,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1490,8 +1334,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -1501,8 +1344,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -1511,8 +1353,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -1523,14 +1364,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -1538,26 +1377,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -1565,26 +1400,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1593,8 +1424,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -1602,20 +1432,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -1623,32 +1450,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -1661,8 +1483,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -1670,20 +1491,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1692,20 +1510,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -1715,8 +1530,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1724,8 +1538,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -1733,20 +1546,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -1758,20 +1568,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1782,8 +1589,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1797,15 +1603,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -1814,8 +1618,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -1823,27 +1626,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -1852,8 +1651,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1865,14 +1663,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1882,20 +1678,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -1914,8 +1707,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -1925,8 +1717,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1940,8 +1731,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -1949,8 +1739,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -1988,9 +1777,9 @@ "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "lolex": "2.6.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -2019,7 +1808,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -2090,6 +1879,11 @@ "glob-to-regexp": "0.3.0" } }, + "@nodelib/fs.stat": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.0.2.tgz", + "integrity": "sha512-vCpf75JDcdomXvUd7Rn6DfYAVqPAFI66FVjxiWGwh85OLdvfo3paBoPJaam5keIYRyUolnS7SleS/ZPCidCvzw==" + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -2152,7 +1946,7 @@ }, "@sinonjs/formatio": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", "dev": true, "requires": { @@ -2169,7 +1963,7 @@ "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", "requires": { - "@types/node": "8.10.8" + "@types/node": "10.1.2" } }, "@types/form-data": { @@ -2177,7 +1971,7 @@ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "requires": { - "@types/node": "8.10.8" + "@types/node": "10.1.2" } }, "@types/long": { @@ -2186,9 +1980,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "8.10.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.8.tgz", - "integrity": "sha512-BvcUxNZe9JgiiUVivtiQt3NrPVu9OAQzkxR1Ko9ESftCYU7V6Np5kpDzQwxd+34lsop7SNRdL292Flv52OvCaw==" + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", + "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==" }, "@types/request": { "version": "2.47.0", @@ -2197,7 +1991,7 @@ "requires": { "@types/caseless": "0.12.1", "@types/form-data": "2.2.1", - "@types/node": "8.10.8", + "@types/node": "10.1.2", "@types/tough-cookie": "2.3.3" } }, @@ -2548,11 +2342,11 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "async-each": { @@ -2567,9 +2361,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" }, "auto-bind": { "version": "1.2.0", @@ -2596,12 +2390,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2640,7 +2434,7 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", @@ -2654,18 +2448,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.6", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-regex": { @@ -2747,7 +2541,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "follow-redirects": "1.4.1", + "follow-redirects": "1.5.0", "is-buffer": "1.1.6" } }, @@ -2790,9 +2584,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2808,7 +2602,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2838,7 +2632,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2926,7 +2720,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -2979,9 +2773,9 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -3041,9 +2835,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -3124,11 +2918,11 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -3150,7 +2944,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -3164,7 +2958,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -3181,7 +2975,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.5" + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -3203,7 +2997,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -3268,11 +3062,6 @@ } } }, - "base64url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" - }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", @@ -3294,14 +3083,6 @@ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.1" - } - }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -3310,7 +3091,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -3513,9 +3294,9 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -3590,14 +3371,14 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" } }, "chardet": { @@ -3614,7 +3395,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.3", + "fsevents": "1.2.4", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3812,163 +3593,14 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", - "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.2.tgz", + "integrity": "sha512-9ljtIROIjPIUmMRqO+XuDITDoV8xRrZmA0jcEq6p2hg2+wY9wGmLfreAZGIL72IzUfdEDZaU8+Vjidg1fBQ8GQ==", "dev": true, "requires": { "argv": "0.0.2", - "request": "2.81.0", + "request": "2.87.0", "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - } } }, "collection-visit": { @@ -4015,9 +3647,9 @@ } }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "common-path-prefix": { @@ -4091,7 +3723,7 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" @@ -4131,9 +3763,9 @@ } }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" }, "core-util-is": { "version": "1.0.2", @@ -4154,29 +3786,11 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.2.1" - } - } - } - }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -4249,9 +3863,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "deep-is": { @@ -4388,9 +4002,9 @@ "dev": true }, "diff-match-patch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", - "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", + "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" }, "dir-glob": { "version": "2.0.0", @@ -4435,9 +4049,9 @@ "dev": true }, "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { "domelementtype": "1.3.0" @@ -4469,9 +4083,9 @@ "dev": true }, "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", @@ -4494,12 +4108,11 @@ } }, "ecdsa-sig-formatter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", - "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", "requires": { - "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "empower": { @@ -4507,7 +4120,7 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "empower-core": "0.6.2" } }, @@ -4526,7 +4139,7 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "end-of-stream": { @@ -4712,7 +4325,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -4725,15 +4338,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.4.0", - "ignore": "3.3.7", + "globals": "11.5.0", + "ignore": "3.3.8", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -4757,9 +4370,9 @@ "dev": true }, "globals": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", - "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, "strip-ansi": { @@ -4796,7 +4409,7 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.7", + "ignore": "3.3.8", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -4840,9 +4453,9 @@ "dev": true }, "espower": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.0.tgz", - "integrity": "sha1-zh7bPZhwKEH99ZbRy46FvcSujkg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.1.tgz", + "integrity": "sha512-F4TY1qYJB1aUyzB03NsZksZzUQmQoEBaTUjRJGR30GxbkbjKI41NhCyYjrF+bGgWN7x/ZsczYppRpz/0WdI0ug==", "dev": true, "requires": { "array-find": "1.0.0", @@ -4850,7 +4463,7 @@ "escodegen": "1.9.1", "escope": "3.6.0", "espower-location-detector": "1.0.0", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0", "source-map": "0.5.7", "type-name": "2.0.2", @@ -4904,7 +4517,7 @@ "convert-source-map": "1.5.1", "empower-assert": "1.1.0", "escodegen": "1.9.1", - "espower": "2.1.0", + "espower": "2.1.1", "estraverse": "4.2.0", "merge-estraverse-visitors": "1.0.0", "multi-stage-sourcemap": "0.2.1", @@ -4945,11 +4558,11 @@ "dev": true }, "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", + "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "esquery": { @@ -5052,18 +4665,18 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "2.2.4" }, "dependencies": { "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "1.1.7", + "randomatic": "3.0.0", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } @@ -5128,7 +4741,7 @@ "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.21", + "iconv-lite": "0.4.23", "tmp": "0.0.33" } }, @@ -5208,14 +4821,15 @@ "dev": true }, "fast-glob": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.0.tgz", - "integrity": "sha512-4F75PTznkNtSKs2pbhtBwRkw8sRwa7LfXx5XaQJOe4IQ6yTjceLDTwM5gj1s80R2t/5WeDC1gVfm3jLE+l39Tw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.0.2", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.1", + "merge2": "1.2.2", "micromatch": "3.1.10" } }, @@ -5293,7 +4907,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pkg-dir": "2.0.0" } }, @@ -5325,9 +4939,9 @@ "dev": true }, "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", "requires": { "debug": "3.1.0" } @@ -5407,14 +5021,14 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", - "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { "nan": "2.10.0", - "node-pre-gyp": "0.9.1" + "node-pre-gyp": "0.10.0" }, "dependencies": { "abbrev": { @@ -5495,7 +5109,7 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "dev": true, "optional": true @@ -5673,7 +5287,7 @@ } }, "node-pre-gyp": { - "version": "0.9.1", + "version": "0.10.0", "bundled": true, "dev": true, "optional": true, @@ -5684,7 +5298,7 @@ "nopt": "4.0.1", "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", "tar": "4.4.1" @@ -5782,12 +5396,12 @@ "optional": true }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -6089,24 +5703,24 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.0", + "fast-glob": "2.2.2", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } }, "google-auth-library": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.4.0.tgz", - "integrity": "sha512-vWRx6pJulK7Y5V/Xyr7MPMlx2mWfmrUVbcffZ7hpq8ElFg5S8WY6PvjMovdcr6JfuAwwpAX4R0I1XOcyWuBcUw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.5.0.tgz", + "integrity": "sha512-xpibA/hkq4waBcpIkSJg4GiDAqcBWjJee3c47zj7xP3RQ0A9mc8MP3Vc9sc8SGRoDYA0OszZxTjW7SbcC4pJIA==", "requires": { "axios": "0.18.0", "gcp-metadata": "0.6.3", "gtoken": "2.3.0", - "jws": "3.1.4", + "jws": "3.1.5", "lodash.isstring": "4.0.1", - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "retry-axios": "0.3.2" } }, @@ -6115,10 +5729,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", "requires": { - "async": "2.6.0", + "async": "2.6.1", "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" + "google-auth-library": "1.5.0", + "request": "2.87.0" } }, "google-gax": { @@ -6126,29 +5740,16 @@ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { - "duplexify": "3.5.4", + "duplexify": "3.6.0", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.0", + "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.10.1", + "grpc": "1.11.3", "is-stream-ended": "0.1.4", - "lodash": "4.17.5", + "lodash": "4.17.10", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "google-auto-auth": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.0.tgz", - "integrity": "sha512-R6m473OqgZacPvlidJ0aownTlUWyLy654ugjKSXyi1ffIicXlXg3wMfse9T9zxqG6w01q6K1iG+b7dImMkVJ2Q==", - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - } } }, "google-p12-pem": { @@ -6178,7 +5779,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -6204,7 +5805,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -6234,287 +5835,107 @@ "dev": true }, "growl": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "grpc": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.10.1.tgz", - "integrity": "sha512-xmhA11h2XhqpSVzDAmoQAYdNQ+swILXpKOiRpAEQ2kX55ioxVADc6v7SkS4zQBxm4klhQHgGqpGKvoL6LGx4VQ==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.3.tgz", + "integrity": "sha512-7fJ40USpnP7hxGK0uRoEhJz6unA5VUdwInfwAY2rK2+OVxdDJSdTZQ/8/M+1tW68pHZYgHvg2ohvJ+clhW3ANg==", "requires": { - "lodash": "4.17.5", + "lodash": "4.17.10", "nan": "2.10.0", - "node-pre-gyp": "0.7.0", - "protobufjs": "5.0.2" + "node-pre-gyp": "0.10.0", + "protobufjs": "5.0.3" }, "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } + "bundled": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "bundled": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "bundled": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" - }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.1" - } + "bundled": true }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "bundled": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "chownr": { + "version": "1.0.1", + "bundled": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "1.0.0" - } + "bundled": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "bundled": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "1.0.0" - } + "bundled": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "version": "0.5.1", + "bundled": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "bundled": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "bundled": true }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "bundled": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "requires": { "aproba": "1.2.0", "console-control-strings": "1.1.0", @@ -6526,18 +5947,9 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "1.0.0" - } - }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -6547,60 +5959,24 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } + "bundled": true }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + "iconv-lite": { + "version": "0.4.19", + "bundled": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -6608,145 +5984,114 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "requires": { "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "bundled": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "minimatch": { + "version": "3.0.4", + "bundled": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "minimist": { + "version": "1.2.0", + "bundled": true }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "minipass": { + "version": "2.2.4", + "bundled": true, "requires": { - "mime-db": "1.33.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "minizlib": { + "version": "1.1.0", + "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "minipass": "2.2.4" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "bundled": true } } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "bundled": true + }, + "needle": { + "version": "2.2.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.19", + "sax": "1.2.4" + } }, "node-pre-gyp": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.7.0.tgz", - "integrity": "sha1-Va7/uu2TtQ0KRlfUaRmM2ArJ3zY=", + "version": "0.10.0", + "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.1", "nopt": "4.0.1", + "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", - "request": "2.83.0", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "2.2.1", - "tar-pack": "3.4.1" + "tar": "4.4.2" } }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "requires": { "abbrev": "1.1.1", "osenv": "0.1.5" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "requires": { "are-we-there-yet": "1.1.4", "console-control-strings": "1.1.0", @@ -6756,41 +6101,30 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "bundled": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "bundled": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "requires": { "wrappy": "1.0.2" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "bundled": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -6798,23 +6132,16 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "bundled": true }, "protobufjs": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", - "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", "requires": { "ascli": "1.0.1", "bytebuffer": "5.0.1", @@ -6822,125 +6149,59 @@ "yargs": "3.32.0" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.7", + "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "bundled": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "bundled": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "bundled": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.2.1" - } - }, - "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } + "bundled": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -6948,115 +6209,60 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "bundled": true, "requires": { "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "requires": { "ansi-regex": "2.1.1" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "bundled": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", - "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", - "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.5", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "version": "4.4.2", + "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" - }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } + "bundled": true }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "requires": { "string-width": "1.0.2" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, @@ -7067,7 +6273,7 @@ "requires": { "axios": "0.18.0", "google-p12-pem": "1.0.2", - "jws": "3.1.4", + "jws": "3.1.5", "mime": "2.3.1", "pify": "3.0.0" } @@ -7186,28 +6392,12 @@ "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", "dev": true }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -7231,7 +6421,7 @@ "dev": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.4.1", + "domhandler": "2.4.2", "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", @@ -7273,22 +6463,22 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" }, "ignore-by-default": { "version": "1.0.1", @@ -7355,7 +6545,7 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.22.0", + "moment": "2.22.1", "sanitize-html": "1.18.2" } }, @@ -7366,12 +6556,12 @@ "dev": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -7918,15 +7108,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -7953,12 +7134,6 @@ "graceful-fs": "4.1.11" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7977,24 +7152,22 @@ "dev": true }, "jwa": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", - "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", "requires": { - "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "5.1.2" } }, "jws": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", - "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", "requires": { - "base64url": "2.0.0", - "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "jwa": "1.1.6", + "safe-buffer": "5.1.2" } }, "keyv": { @@ -8094,9 +7267,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -8174,9 +7347,9 @@ "dev": true }, "lolex": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", - "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", + "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==", "dev": true }, "long": { @@ -8216,18 +7389,18 @@ "dev": true }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "3.0.0" @@ -8267,6 +7440,12 @@ "escape-string-regexp": "1.0.5" } }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "md5-hex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", @@ -8427,9 +7606,9 @@ } }, "merge2": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.1.tgz", - "integrity": "sha512-wUqcG5pxrAcaFI1lkqkMnk3Q7nUxV/NWfpAFSeWUwG9TRODnBDCUHa75mi3o3vLWQ5N4CQERWCauSlP0I3ZqUg==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" }, "methods": { "version": "1.1.2", @@ -8530,33 +7709,22 @@ } }, "mocha": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.0.tgz", - "integrity": "sha512-d6RWgYPILd+AoWVOxiD0UwUqRicnE1inTxMr40CXOgqYve1MvnKntoLAtLIcxjEeVjEoYYTe5QAq3mUc6/ySjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { "browser-stdout": "1.3.1", - "commander": "2.11.0", + "commander": "2.15.1", "debug": "3.1.0", "diff": "3.5.0", "escape-string-regexp": "1.0.5", "glob": "7.1.2", - "growl": "1.10.3", + "growl": "1.10.5", "he": "1.1.1", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "4.4.0" - }, - "dependencies": { - "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "module-not-found-error": { @@ -8566,9 +7734,9 @@ "dev": true }, "moment": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", - "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==", "dev": true }, "ms": { @@ -8651,14 +7819,14 @@ "dev": true }, "nise": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", - "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", + "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "2.3.2", + "lolex": "2.6.0", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" } @@ -8723,9 +7891,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", - "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.8.0.tgz", + "integrity": "sha512-PUFq1PSsx5OinSk5g5aaZygcDdI3QQT5XUlbR9QRMihtMS6w0Gm8xj4BxmKeeAlpQXC5M2DIhH16Y+KejceivQ==", "dev": true, "requires": { "archy": "1.0.0", @@ -8743,10 +7911,10 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", - "micromatch": "2.3.11", + "micromatch": "3.1.10", "mkdirp": "0.5.1", "resolve-from": "2.0.0", "rimraf": "2.6.2", @@ -8759,8 +7927,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -8770,26 +7937,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -8797,65 +7960,52 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "bundled": true, + "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.1", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -8865,8 +8015,7 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -8874,15 +8023,14 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" } }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -8890,31 +8038,28 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -8924,38 +8069,34 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "invariant": "2.2.4", + "lodash": "4.17.10" } }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "1.0.1", @@ -8969,25 +8110,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -8995,26 +8164,40 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "1.0.0", @@ -9030,16 +8213,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -9049,15 +8230,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9067,8 +8246,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -9080,8 +8258,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -9092,82 +8269,22 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9178,8 +8295,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -9187,14 +8303,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "1.0.0", @@ -9203,54 +8317,46 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.6", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "which": "1.3.0" } }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9258,26 +8364,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -9285,26 +8387,54 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "detect-indent": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -9312,8 +8442,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -9321,20 +8450,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -9348,11 +8474,10 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -9360,27 +8485,40 @@ } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "version": "2.1.4", + "bundled": true, "dev": true, "requires": { - "fill-range": "2.2.3" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "1.0.0", @@ -9389,8 +8527,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -9399,37 +8536,93 @@ } }, "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "version": "2.0.4", + "bundled": true, "dev": true, "requires": { - "is-extglob": "1.0.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "4.0.0", + "bundled": true, "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -9439,8 +8632,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -9448,23 +8640,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -9473,8 +8654,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "0.2.2" @@ -9482,32 +8662,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -9518,41 +8693,19 @@ "path-is-absolute": "1.0.1" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -9563,8 +8716,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -9574,8 +8726,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -9583,14 +8734,12 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -9600,16 +8749,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -9618,8 +8765,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9627,8 +8773,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9638,8 +8783,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -9649,20 +8793,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -9671,14 +8812,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -9686,115 +8825,68 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "bundled": true, "dev": true } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -9802,23 +8894,12 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -9826,8 +8907,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "4.0.0" @@ -9835,16 +8915,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -9852,73 +8930,49 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "bundled": true, + "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -9926,8 +8980,7 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.1", @@ -9941,8 +8994,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -9953,8 +9005,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -9964,8 +9015,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -9977,8 +9027,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9987,9 +9036,8 @@ } }, "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -9997,20 +9045,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -10018,15 +9063,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -10034,8 +9077,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10047,8 +9089,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -10057,37 +9098,32 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.10", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" } }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -10096,14 +9132,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "1.0.1" @@ -10111,8 +9145,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -10120,14 +9153,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -10135,8 +9166,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "0.6.1" @@ -10144,43 +9174,46 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -10188,14 +9221,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2", @@ -10204,8 +9235,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -10215,8 +9245,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -10224,14 +9253,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -10250,28 +9277,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -10280,19 +9303,9 @@ "validate-npm-package-license": "3.0.3" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -10300,20 +9313,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -10323,56 +9333,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10380,26 +9351,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -10407,16 +9366,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -10424,8 +9381,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -10434,14 +9390,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -10451,14 +9405,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "1.0.0" @@ -10466,8 +9418,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.2.0" @@ -10475,26 +9426,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -10502,14 +9439,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -10517,26 +9452,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -10546,20 +9477,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -10567,8 +9495,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -10576,8 +9503,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -10588,67 +9514,17 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -10658,8 +9534,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -10668,8 +9543,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -10680,51 +9554,31 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -10732,38 +9586,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -10772,8 +9620,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -10781,8 +9628,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "0.1.15" @@ -10790,20 +9636,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -10814,8 +9657,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -10825,8 +9667,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -10834,26 +9675,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "0.11.2", @@ -10868,8 +9705,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -10877,76 +9713,17 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "requires": { + "is-extendable": "0.1.1" + } } } }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "1.0.0", @@ -10956,25 +9733,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -10982,17 +9787,15 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "bundled": true, "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -11001,14 +9804,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -11021,8 +9822,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -11031,14 +9831,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -11047,14 +9845,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -11062,8 +9858,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "0.2.5", @@ -11072,76 +9867,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -11150,14 +9886,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11167,8 +9901,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11176,8 +9909,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -11185,24 +9917,21 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -11210,29 +9939,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -11240,19 +9964,9 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11262,8 +9976,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "2.6.9", @@ -11277,8 +9990,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -11286,17 +9998,51 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -11306,16 +10052,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "bundled": true, "dev": true, "requires": { "array-unique": "0.3.2", @@ -11330,8 +10074,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -11339,8 +10082,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11350,8 +10092,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11362,8 +10103,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11372,49 +10112,34 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11422,8 +10147,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -11433,25 +10157,22 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -11468,14 +10189,12 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11483,8 +10202,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "2.0.2", @@ -11495,8 +10213,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -11505,8 +10222,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -11516,14 +10232,12 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11534,8 +10248,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11549,15 +10262,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -11568,8 +10279,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -11577,8 +10287,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -11591,8 +10300,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "0.3.1", @@ -11601,8 +10309,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -11612,8 +10319,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -11623,28 +10329,24 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -11652,16 +10354,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -11670,8 +10370,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -11679,27 +10378,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -11708,8 +10403,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11717,8 +10411,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -11730,14 +10423,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -11747,23 +10438,20 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -11779,20 +10467,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "bundled": true, "dev": true, "requires": { "string-width": "2.1.1", @@ -11802,8 +10487,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -11811,8 +10495,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -11822,8 +10505,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -11831,8 +10513,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -12106,7 +10787,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -12311,14 +10992,14 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz", - "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "source-map": { @@ -12346,7 +11027,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-traversal": "1.1.1" } }, @@ -12357,8 +11038,8 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.5", - "espurify": "1.7.0", + "core-js": "2.5.6", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -12367,7 +11048,7 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "estraverse": "4.2.0" } }, @@ -12376,7 +11057,7 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -12404,8 +11085,8 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.5", - "diff-match-patch": "1.0.0", + "core-js": "2.5.6", + "diff-match-patch": "1.0.1", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", "type-name": "2.0.2" @@ -12416,7 +11097,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -12457,9 +11138,9 @@ "dev": true }, "prettier": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.0.tgz", - "integrity": "sha512-Wz0SMncgaglBzDcohH3ZIAi4nVpzOIEweFzCOmgVEoRSeO72b4dcKGfgxoRGVMaFlh1r7dlVaJ+f3CIHfeH6xg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", "dev": true }, "pretty-ms": { @@ -12523,8 +11204,15 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.8", + "@types/node": "8.10.17", "long": "4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.17.tgz", + "integrity": "sha512-3N3FRd/rA1v5glXjb90YdYUa+sOB7WrkU2rAhKZnF4TKD86Cym9swtulGuH0p9nxo7fP5woRNa8b0oFTpCO1bg==" + } } }, "proxyquire": { @@ -12560,9 +11248,9 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { "version": "5.1.1", @@ -12576,33 +11264,31 @@ } }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { - "kind-of": { + "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true } } }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -12663,7 +11349,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -12702,9 +11388,9 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { @@ -12743,7 +11429,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -12754,8 +11440,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -12764,7 +11450,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -12817,9 +11503,9 @@ } }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { "aws-sign2": "0.7.0", "aws4": "1.7.0", @@ -12829,7 +11515,6 @@ "forever-agent": "0.6.1", "form-data": "2.3.2", "har-validator": "5.0.3", - "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", @@ -12837,9 +11522,8 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", + "qs": "6.5.2", + "safe-buffer": "5.1.2", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" @@ -12958,7 +11642,7 @@ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", "requires": { - "request": "2.85.0", + "request": "2.87.0", "through2": "2.0.3" } }, @@ -13006,9 +11690,9 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -13036,14 +11720,14 @@ "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", "dev": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.21", + "postcss": "6.0.22", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -13132,9 +11816,9 @@ "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "lolex": "2.6.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -13177,7 +11861,7 @@ "extend-shallow": "2.0.1", "map-cache": "0.2.2", "source-map": "0.5.7", - "source-map-resolve": "0.5.1", + "source-map-resolve": "0.5.2", "use": "3.1.0" }, "dependencies": { @@ -13271,14 +11955,6 @@ } } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.2.1" - } - }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -13294,11 +11970,11 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "2.1.0", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -13306,11 +11982,12 @@ } }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -13432,9 +12109,9 @@ } }, "stream-events": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.3.tgz", - "integrity": "sha512-SvnBCMhEBQSJml4/ImlWkzGWgchjo1tVxnoBUOa1i1g3BsYNWz4W6a9Hc8VhqfmwJiEGu6tLrGdNRm/K/I4YXw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", + "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { "stubs": "3.0.0" } @@ -13471,7 +12148,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "stringifier": { @@ -13479,16 +12156,11 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "traverse": "0.6.6", "type-name": "2.0.2" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -13539,9 +12211,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -13552,7 +12224,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" }, "dependencies": { @@ -13601,13 +12273,13 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -13635,8 +12307,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.2", - "lodash": "4.17.5", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -13817,7 +12489,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -14058,13 +12730,13 @@ "dev": true }, "update-notifier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", - "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -14255,7 +12927,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 046a7a97002..7d71c813475 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -83,7 +83,7 @@ "@google-cloud/datastore": { "version": "1.4.0", "requires": { - "@google-cloud/common": "0.18.6", + "@google-cloud/common": "0.18.9", "arrify": "1.0.1", "concat-stream": "1.6.2", "create-error-class": "3.0.2", @@ -96,9 +96,9 @@ "lodash.merge": "4.6.1", "prop-assign": "1.0.0", "propprop": "0.3.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "split-array-stream": "2.0.0", - "stream-events": "1.0.3", + "stream-events": "1.0.4", "through2": "2.0.3" }, "dependencies": { @@ -115,7 +115,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -165,32 +165,23 @@ } }, "@google-cloud/common": { - "version": "0.18.6", + "version": "0.18.9", "bundled": true, "requires": { "@types/duplexify": "3.5.0", "@types/request": "2.47.0", "arrify": "1.0.1", "axios": "0.18.0", - "duplexify": "3.5.4", + "duplexify": "3.6.0", "ent": "2.2.0", "extend": "3.0.1", - "google-auth-library": "1.4.0", + "google-auth-library": "1.5.0", "is": "3.2.1", "pify": "3.0.0", - "request": "2.85.0", + "request": "2.87.0", "retry-request": "3.3.1", "split-array-stream": "2.0.0", "stream-events": "1.0.4" - }, - "dependencies": { - "stream-events": { - "version": "1.0.4", - "bundled": true, - "requires": { - "stubs": "3.0.0" - } - } } }, "@google-cloud/nodejs-repo-tools": { @@ -218,7 +209,7 @@ "bundled": true }, "cliui": { - "version": "4.0.0", + "version": "4.1.0", "bundled": true, "requires": { "string-width": "2.1.1", @@ -230,6 +221,10 @@ "version": "2.0.0", "bundled": true }, + "lodash": { + "version": "4.17.5", + "bundled": true + }, "nyc": { "version": "11.4.1", "bundled": true, @@ -1640,9 +1635,9 @@ "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "lolex": "2.6.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -1665,7 +1660,7 @@ "version": "11.0.0", "bundled": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -1725,6 +1720,10 @@ "glob-to-regexp": "0.3.0" } }, + "@nodelib/fs.stat": { + "version": "1.0.2", + "bundled": true + }, "@protobufjs/aspromise": { "version": "1.1.2", "bundled": true @@ -1788,14 +1787,14 @@ "version": "3.5.0", "bundled": true, "requires": { - "@types/node": "8.10.8" + "@types/node": "10.1.2" } }, "@types/form-data": { "version": "2.2.1", "bundled": true, "requires": { - "@types/node": "8.10.8" + "@types/node": "10.1.2" } }, "@types/long": { @@ -1803,7 +1802,7 @@ "bundled": true }, "@types/node": { - "version": "8.10.8", + "version": "10.1.2", "bundled": true }, "@types/request": { @@ -1812,7 +1811,7 @@ "requires": { "@types/caseless": "0.12.1", "@types/form-data": "2.2.1", - "@types/node": "8.10.8", + "@types/node": "10.1.2", "@types/tough-cookie": "2.3.3" } }, @@ -2088,10 +2087,10 @@ "bundled": true }, "async": { - "version": "2.6.0", + "version": "2.6.1", "bundled": true, "requires": { - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "async-each": { @@ -2103,7 +2102,7 @@ "bundled": true }, "atob": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true }, "auto-bind": { @@ -2127,12 +2126,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -2171,7 +2170,7 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", @@ -2185,18 +2184,18 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.6", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-regex": { @@ -2261,7 +2260,7 @@ "version": "0.18.0", "bundled": true, "requires": { - "follow-redirects": "1.4.1", + "follow-redirects": "1.5.0", "is-buffer": "1.1.6" } }, @@ -2296,7 +2295,7 @@ } }, "babel-core": { - "version": "6.26.0", + "version": "6.26.3", "bundled": true, "requires": { "babel-code-frame": "6.26.0", @@ -2312,7 +2311,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -2338,7 +2337,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -2410,7 +2409,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -2453,9 +2452,9 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -2501,7 +2500,7 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", + "version": "6.26.2", "bundled": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -2568,11 +2567,11 @@ "version": "6.26.0", "bundled": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -2590,7 +2589,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -2602,7 +2601,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -2617,7 +2616,7 @@ "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.4", - "lodash": "4.17.5" + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -2635,7 +2634,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -2692,10 +2691,6 @@ } } }, - "base64url": { - "version": "2.0.0", - "bundled": true - }, "bcrypt-pbkdf": { "version": "1.0.1", "bundled": true, @@ -2712,20 +2707,13 @@ "version": "3.5.1", "bundled": true }, - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, "boxen": { "version": "1.3.0", "bundled": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -2892,9 +2880,9 @@ "version": "1.0.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -2954,12 +2942,12 @@ } }, "chalk": { - "version": "2.3.2", + "version": "2.4.1", "bundled": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" } }, "chardet": { @@ -2972,7 +2960,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.3", + "fsevents": "1.2.4", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -3127,131 +3115,12 @@ "bundled": true }, "codecov": { - "version": "3.0.0", + "version": "3.0.2", "bundled": true, "requires": { "argv": "0.0.2", - "request": "2.81.0", + "request": "2.87.0", "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "bundled": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "har-schema": { - "version": "1.0.5", - "bundled": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "performance-now": { - "version": "0.2.0", - "bundled": true - }, - "qs": { - "version": "6.4.0", - "bundled": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - } } }, "collection-visit": { @@ -3289,7 +3158,7 @@ } }, "commander": { - "version": "2.11.0", + "version": "2.15.1", "bundled": true }, "common-path-prefix": { @@ -3350,7 +3219,7 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" @@ -3381,7 +3250,7 @@ } }, "core-js": { - "version": "2.5.5", + "version": "2.5.6", "bundled": true }, "core-util-is": { @@ -3399,27 +3268,11 @@ "version": "5.1.0", "bundled": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, "crypto-random-string": { "version": "1.0.0", "bundled": true @@ -3476,7 +3329,7 @@ "bundled": true }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true }, "deep-is": { @@ -3589,7 +3442,7 @@ "bundled": true }, "diff-match-patch": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true }, "dir-glob": { @@ -3626,7 +3479,7 @@ "bundled": true }, "domhandler": { - "version": "2.4.1", + "version": "2.4.2", "bundled": true, "requires": { "domelementtype": "1.3.0" @@ -3652,7 +3505,7 @@ "bundled": true }, "duplexify": { - "version": "3.5.4", + "version": "3.6.0", "bundled": true, "requires": { "end-of-stream": "1.4.1", @@ -3674,18 +3527,17 @@ } }, "ecdsa-sig-formatter": { - "version": "1.0.9", + "version": "1.0.10", "bundled": true, "requires": { - "base64url": "2.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "empower": { "version": "1.2.3", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "empower-core": "0.6.2" } }, @@ -3701,7 +3553,7 @@ "bundled": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "end-of-stream": { @@ -3849,7 +3701,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -3862,15 +3714,15 @@ "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.4.0", - "ignore": "3.3.7", + "globals": "11.5.0", + "ignore": "3.3.8", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -3892,7 +3744,7 @@ "bundled": true }, "globals": { - "version": "11.4.0", + "version": "11.5.0", "bundled": true }, "strip-ansi": { @@ -3921,7 +3773,7 @@ "version": "6.0.1", "bundled": true, "requires": { - "ignore": "3.3.7", + "ignore": "3.3.8", "minimatch": "3.0.4", "resolve": "1.7.1", "semver": "5.5.0" @@ -3957,7 +3809,7 @@ "bundled": true }, "espower": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true, "requires": { "array-find": "1.0.0", @@ -3965,7 +3817,7 @@ "escodegen": "1.9.1", "escope": "3.6.0", "espower-location-detector": "1.0.0", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0", "source-map": "0.5.7", "type-name": "2.0.2", @@ -4011,7 +3863,7 @@ "convert-source-map": "1.5.1", "empower-assert": "1.1.0", "escodegen": "1.9.1", - "espower": "2.1.0", + "espower": "2.1.1", "estraverse": "4.2.0", "merge-estraverse-visitors": "1.0.0", "multi-stage-sourcemap": "0.2.1", @@ -4044,10 +3896,10 @@ "bundled": true }, "espurify": { - "version": "1.7.0", + "version": "1.8.0", "bundled": true, "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "esquery": { @@ -4133,16 +3985,16 @@ "version": "1.8.2", "bundled": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "2.2.4" }, "dependencies": { "fill-range": { - "version": "2.2.3", + "version": "2.2.4", "bundled": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "1.1.7", + "randomatic": "3.0.0", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } @@ -4196,7 +4048,7 @@ "bundled": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.21", + "iconv-lite": "0.4.23", "tmp": "0.0.33" } }, @@ -4266,13 +4118,14 @@ "bundled": true }, "fast-glob": { - "version": "2.2.0", + "version": "2.2.2", "bundled": true, "requires": { "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.0.2", "glob-parent": "3.1.0", "is-glob": "4.0.0", - "merge2": "1.2.1", + "merge2": "1.2.2", "micromatch": "3.1.10" } }, @@ -4335,7 +4188,7 @@ "bundled": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pkg-dir": "2.0.0" } }, @@ -4361,7 +4214,7 @@ "bundled": true }, "follow-redirects": { - "version": "1.4.1", + "version": "1.5.0", "bundled": true, "requires": { "debug": "3.1.0" @@ -4549,23 +4402,23 @@ "requires": { "array-union": "1.0.2", "dir-glob": "2.0.0", - "fast-glob": "2.2.0", + "fast-glob": "2.2.2", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } }, "google-auth-library": { - "version": "1.4.0", + "version": "1.5.0", "bundled": true, "requires": { "axios": "0.18.0", "gcp-metadata": "0.6.3", "gtoken": "2.3.0", - "jws": "3.1.4", + "jws": "3.1.5", "lodash.isstring": "4.0.1", - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "retry-axios": "0.3.2" } }, @@ -4573,38 +4426,26 @@ "version": "0.10.1", "bundled": true, "requires": { - "async": "2.6.0", + "async": "2.6.1", "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" + "google-auth-library": "1.5.0", + "request": "2.87.0" } }, "google-gax": { "version": "0.16.1", "bundled": true, "requires": { - "duplexify": "3.5.4", + "duplexify": "3.6.0", "extend": "3.0.1", "globby": "8.0.1", - "google-auto-auth": "0.10.0", + "google-auto-auth": "0.10.1", "google-proto-files": "0.15.1", - "grpc": "1.10.1", + "grpc": "1.11.3", "is-stream-ended": "0.1.4", - "lodash": "4.17.5", + "lodash": "4.17.10", "protobufjs": "6.8.6", "through2": "2.0.3" - }, - "dependencies": { - "google-auto-auth": { - "version": "0.10.0", - "bundled": true, - "requires": { - "async": "2.6.0", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.4.0", - "request": "2.85.0" - } - } } }, "google-p12-pem": { @@ -4631,7 +4472,7 @@ "array-union": "1.0.2", "dir-glob": "2.0.0", "glob": "7.1.2", - "ignore": "3.3.7", + "ignore": "3.3.8", "pify": "3.0.0", "slash": "1.0.0" } @@ -4655,7 +4496,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -4679,33 +4520,23 @@ "bundled": true }, "growl": { - "version": "1.10.3", + "version": "1.10.5", "bundled": true }, "grpc": { - "version": "1.10.1", + "version": "1.11.3", "bundled": true, "requires": { - "lodash": "4.17.5", + "lodash": "4.17.10", "nan": "2.10.0", - "node-pre-gyp": "0.7.0", - "protobufjs": "5.0.2" + "node-pre-gyp": "0.10.0", + "protobufjs": "5.0.3" }, "dependencies": { "abbrev": { "version": "1.1.1", "bundled": true }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true @@ -4719,82 +4550,29 @@ "bundled": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true - }, "balanced-match": { "version": "1.0.0", "bundled": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.11", "bundled": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true }, "code-point-at": { "version": "1.1.0", "bundled": true }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true @@ -4807,29 +4585,6 @@ "version": "1.0.2", "bundled": true }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "debug": { "version": "2.6.9", "bundled": true, @@ -4838,11 +4593,7 @@ } }, "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "delayed-stream": { - "version": "1.0.0", + "version": "0.5.1", "bundled": true }, "delegates": { @@ -4853,66 +4604,17 @@ "version": "1.0.3", "bundled": true }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, "gauge": { "version": "2.7.4", "bundled": true, @@ -4927,13 +4629,6 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, "glob": { "version": "7.1.2", "bundled": true, @@ -4946,55 +4641,27 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", + "has-unicode": { + "version": "2.0.1", "bundled": true }, - "har-schema": { - "version": "2.0.0", + "iconv-lite": { + "version": "0.4.19", "bundled": true }, - "har-validator": { - "version": "5.0.3", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "minimatch": "3.0.4" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hawk": { - "version": "6.0.2", + "inflight": { + "version": "1.0.6", "bundled": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", - "bundled": true - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -5012,67 +4679,36 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, "isarray": { "version": "1.0.0", "bundled": true }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", + "minimatch": { + "version": "3.0.4", "bundled": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.33.0", + "minimist": { + "version": "1.2.0", "bundled": true }, - "mime-types": { - "version": "2.1.18", + "minipass": { + "version": "2.2.4", "bundled": true, "requires": { - "mime-db": "1.33.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "minipass": "2.2.4" } }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -5090,20 +4726,29 @@ "version": "2.0.0", "bundled": true }, + "needle": { + "version": "2.2.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.19", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.7.0", + "version": "0.10.0", "bundled": true, "requires": { "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.1", "nopt": "4.0.1", + "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", - "request": "2.83.0", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", - "tar": "2.2.1", - "tar-pack": "3.4.1" + "tar": "4.4.2" } }, "nopt": { @@ -5114,6 +4759,18 @@ "osenv": "0.1.5" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, "npmlog": { "version": "4.1.2", "bundled": true, @@ -5128,10 +4785,6 @@ "version": "1.0.1", "bundled": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, "object-assign": { "version": "4.1.1", "bundled": true @@ -5163,16 +4816,12 @@ "version": "1.0.1", "bundled": true }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, "process-nextick-args": { "version": "2.0.0", "bundled": true }, "protobufjs": { - "version": "5.0.2", + "version": "5.0.3", "bundled": true, "requires": { "ascli": "1.0.1", @@ -5181,26 +4830,18 @@ "yargs": "3.32.0" } }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" } }, "readable-stream": { - "version": "2.3.5", + "version": "2.3.6", "bundled": true, "requires": { "core-util-is": "1.0.2", @@ -5208,38 +4849,10 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.83.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, "rimraf": { "version": "2.6.2", "bundled": true, @@ -5251,6 +4864,10 @@ "version": "5.1.1", "bundled": true }, + "sax": { + "version": "1.2.4", + "bundled": true + }, "semver": { "version": "5.5.0", "bundled": true @@ -5263,27 +4880,6 @@ "version": "3.0.2", "bundled": true }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -5294,16 +4890,12 @@ } }, "string_decoder": { - "version": "1.0.3", + "version": "1.1.1", "bundled": true, "requires": { "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -5316,68 +4908,28 @@ "bundled": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.5", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", + "version": "4.4.2", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.2", + "yallist": "3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -5388,6 +4940,10 @@ "wrappy": { "version": "1.0.2", "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, @@ -5397,7 +4953,7 @@ "requires": { "axios": "0.18.0", "google-p12-pem": "1.0.2", - "jws": "3.1.4", + "jws": "3.1.5", "mime": "2.3.1", "pify": "3.0.0" } @@ -5493,24 +5049,10 @@ "version": "1.0.0", "bundled": true }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, "he": { "version": "1.1.1", "bundled": true }, - "hoek": { - "version": "4.2.1", - "bundled": true - }, "home-or-tmp": { "version": "2.0.0", "bundled": true, @@ -5528,7 +5070,7 @@ "bundled": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.4.1", + "domhandler": "2.4.2", "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", @@ -5565,18 +5107,18 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.23", "bundled": true, "requires": { "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.7", + "version": "3.3.8", "bundled": true }, "ignore-by-default": { @@ -5627,7 +5169,7 @@ "version": "1.3.2", "bundled": true, "requires": { - "moment": "2.22.0", + "moment": "2.22.1", "sanitize-html": "1.18.2" } }, @@ -5636,12 +5178,12 @@ "bundled": true, "requires": { "ansi-escapes": "3.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -6067,13 +5609,6 @@ "version": "0.3.1", "bundled": true }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "bundled": true @@ -6093,10 +5628,6 @@ "graceful-fs": "4.1.11" } }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, "jsprim": { "version": "1.4.1", "bundled": true, @@ -6112,22 +5643,20 @@ "bundled": true }, "jwa": { - "version": "1.1.5", + "version": "1.1.6", "bundled": true, "requires": { - "base64url": "2.0.0", "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.9", - "safe-buffer": "5.1.1" + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "5.1.2" } }, "jws": { - "version": "3.1.4", + "version": "3.1.5", "bundled": true, "requires": { - "base64url": "2.0.0", - "jwa": "1.1.5", - "safe-buffer": "5.1.1" + "jwa": "1.1.6", + "safe-buffer": "5.1.2" } }, "keyv": { @@ -6207,7 +5736,7 @@ } }, "lodash": { - "version": "4.17.5", + "version": "4.17.10", "bundled": true }, "lodash.clonedeep": { @@ -6263,7 +5792,7 @@ "bundled": true }, "lolex": { - "version": "2.3.2", + "version": "2.6.0", "bundled": true }, "long": { @@ -6294,7 +5823,7 @@ "bundled": true }, "lru-cache": { - "version": "4.1.2", + "version": "4.1.3", "bundled": true, "requires": { "pseudomap": "1.0.2", @@ -6302,7 +5831,7 @@ } }, "make-dir": { - "version": "1.2.0", + "version": "1.3.0", "bundled": true, "requires": { "pify": "3.0.0" @@ -6334,6 +5863,10 @@ "escape-string-regexp": "1.0.5" } }, + "math-random": { + "version": "1.0.1", + "bundled": true + }, "md5-hex": { "version": "2.0.0", "bundled": true, @@ -6460,7 +5993,7 @@ } }, "merge2": { - "version": "1.2.1", + "version": "1.2.2", "bundled": true }, "methods": { @@ -6545,29 +6078,20 @@ } }, "mocha": { - "version": "5.1.0", + "version": "5.2.0", "bundled": true, "requires": { "browser-stdout": "1.3.1", - "commander": "2.11.0", + "commander": "2.15.1", "debug": "3.1.0", "diff": "3.5.0", "escape-string-regexp": "1.0.5", "glob": "7.1.2", - "growl": "1.10.3", + "growl": "1.10.5", "he": "1.1.1", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "4.4.0" - }, - "dependencies": { - "supports-color": { - "version": "4.4.0", - "bundled": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "module-not-found-error": { @@ -6575,7 +6099,7 @@ "bundled": true }, "moment": { - "version": "2.22.0", + "version": "2.22.1", "bundled": true }, "ms": { @@ -6643,12 +6167,12 @@ "bundled": true }, "nise": { - "version": "1.3.2", + "version": "1.3.3", "bundled": true, "requires": { "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "2.3.2", + "lolex": "2.6.0", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" } @@ -6701,7 +6225,7 @@ "bundled": true }, "nyc": { - "version": "11.6.0", + "version": "11.8.0", "bundled": true, "requires": { "archy": "1.0.0", @@ -6719,10 +6243,10 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", - "micromatch": "2.3.11", + "micromatch": "3.1.10", "mkdirp": "0.5.1", "resolve-from": "2.0.0", "rimraf": "2.6.2", @@ -6766,11 +6290,8 @@ "bundled": true }, "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "bundled": true }, "arr-flatten": { "version": "1.1.0", @@ -6781,7 +6302,7 @@ "bundled": true }, "array-unique": { - "version": "0.2.1", + "version": "0.3.2", "bundled": true }, "arrify": { @@ -6797,7 +6318,7 @@ "bundled": true }, "atob": { - "version": "2.0.3", + "version": "2.1.1", "bundled": true }, "babel-code-frame": { @@ -6818,7 +6339,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" } @@ -6834,7 +6355,7 @@ "version": "6.26.0", "bundled": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -6846,7 +6367,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -6860,8 +6381,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "invariant": "2.2.4", + "lodash": "4.17.10" } }, "babel-types": { @@ -6870,7 +6391,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -6902,9 +6423,36 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true } } }, @@ -6917,12 +6465,28 @@ } }, "braces": { - "version": "1.8.5", + "version": "2.3.2", "bundled": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "builtin-modules": { @@ -7001,69 +6565,24 @@ "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", + "isobject": { + "version": "3.0.1", + "bundled": true + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", "bundled": true, "optional": true } @@ -7102,14 +6621,14 @@ "bundled": true }, "core-js": { - "version": "2.5.3", + "version": "2.5.6", "bundled": true }, "cross-spawn": { "version": "4.0.2", "bundled": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "which": "1.3.0" } }, @@ -7147,9 +6666,36 @@ "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true } } }, @@ -7192,7 +6738,7 @@ "version": "5.1.0", "bundled": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -7200,17 +6746,32 @@ } }, "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", + "version": "2.1.4", "bundled": true, "requires": { - "fill-range": "2.2.3" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "extend-shallow": { @@ -7231,25 +6792,79 @@ } }, "extglob": { - "version": "0.3.2", + "version": "2.0.4", "bundled": true, "requires": { - "is-extglob": "1.0.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } } }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, "fill-range": { - "version": "2.2.3", + "version": "4.0.0", "bundled": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "find-cache-dir": { @@ -7272,13 +6887,6 @@ "version": "1.0.2", "bundled": true }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "1.0.2" - } - }, "foreground-child": { "version": "1.5.6", "bundled": true, @@ -7322,21 +6930,6 @@ "path-is-absolute": "1.0.1" } }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "2.0.1" - } - }, "globals": { "version": "9.18.0", "bundled": true @@ -7444,7 +7037,7 @@ "bundled": true }, "invariant": { - "version": "2.2.3", + "version": "2.2.4", "bundled": true, "requires": { "loose-envify": "1.3.1" @@ -7455,16 +7048,10 @@ "bundled": true }, "is-accessor-descriptor": { - "version": "1.0.0", + "version": "0.1.6", "bundled": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -7483,52 +7070,31 @@ } }, "is-data-descriptor": { - "version": "1.0.0", + "version": "0.1.4", "bundled": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", + "version": "0.1.6", "bundled": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", + "version": "5.1.0", "bundled": true } } }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "bundled": true }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, "is-finite": { "version": "1.0.2", "bundled": true, @@ -7540,15 +7106,8 @@ "version": "2.0.0", "bundled": true }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", + "is-number": { + "version": "3.0.0", "bundled": true, "requires": { "kind-of": "3.2.2" @@ -7580,14 +7139,6 @@ } } }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, "is-stream": { "version": "1.1.0", "bundled": true @@ -7609,11 +7160,8 @@ "bundled": true }, "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "bundled": true }, "istanbul-lib-coverage": { "version": "1.2.0", @@ -7679,7 +7227,7 @@ } }, "istanbul-reports": { - "version": "1.3.0", + "version": "1.4.0", "bundled": true, "requires": { "handlebars": "4.0.11" @@ -7738,7 +7286,7 @@ } }, "lodash": { - "version": "4.17.5", + "version": "4.17.10", "bundled": true }, "longest": { @@ -7753,7 +7301,7 @@ } }, "lru-cache": { - "version": "4.1.2", + "version": "4.1.3", "bundled": true, "requires": { "pseudomap": "1.0.2", @@ -7803,22 +7351,28 @@ } }, "micromatch": { - "version": "2.3.11", + "version": "3.1.10", "bundled": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } } }, "mimic-fn": { @@ -7906,13 +7460,6 @@ "validate-npm-package-license": "3.0.3" } }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, "npm-run-path": { "version": "2.0.2", "bundled": true, @@ -7943,35 +7490,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } } } }, @@ -7988,14 +7506,6 @@ } } }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, "object.pick": { "version": "1.3.0", "bundled": true, @@ -8059,16 +7569,6 @@ "version": "1.0.0", "bundled": true }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, "parse-json": { "version": "2.2.0", "bundled": true, @@ -8144,47 +7644,10 @@ "version": "0.1.1", "bundled": true }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, "pseudomap": { "version": "1.0.2", "bundled": true }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "read-pkg": { "version": "1.1.0", "bundled": true, @@ -8216,13 +7679,6 @@ "version": "0.11.1", "bundled": true }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, "regex-not": { "version": "1.0.2", "bundled": true, @@ -8231,10 +7687,6 @@ "safe-regex": "1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, "repeat-element": { "version": "1.1.2", "bundled": true @@ -8365,51 +7817,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true } } }, @@ -8429,9 +7836,36 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "bundled": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true } } }, @@ -8450,7 +7884,7 @@ "version": "0.5.1", "bundled": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -8518,71 +7952,26 @@ "requires": { "is-descriptor": "0.1.6" } + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true }, - "is-accessor-descriptor": { - "version": "0.1.6", + "strip-ansi": { + "version": "4.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "3.0.0" } } } @@ -8614,7 +8003,7 @@ "bundled": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -8629,16 +8018,14 @@ "bundled": true }, "braces": { - "version": "2.3.1", + "version": "2.3.2", "bundled": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -8646,13 +8033,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "bundled": true, @@ -8689,6 +8069,38 @@ "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "bundled": true, @@ -8754,35 +8166,26 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", + "version": "1.0.0", "bundled": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -8810,12 +8213,12 @@ "bundled": true }, "micromatch": { - "version": "3.1.9", + "version": "3.1.10", "bundled": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -9061,7 +8464,7 @@ "version": "11.1.0", "bundled": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -9084,7 +8487,7 @@ "bundled": true }, "cliui": { - "version": "4.0.0", + "version": "4.1.0", "bundled": true, "requires": { "string-width": "2.1.1", @@ -9336,7 +8739,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -9496,12 +8899,12 @@ "bundled": true }, "postcss": { - "version": "6.0.21", + "version": "6.0.22", "bundled": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "source-map": { @@ -9525,7 +8928,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-traversal": "1.1.1" } }, @@ -9535,8 +8938,8 @@ "requires": { "acorn": "4.0.13", "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.5", - "espurify": "1.7.0", + "core-js": "2.5.6", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -9544,7 +8947,7 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "estraverse": "4.2.0" } }, @@ -9552,7 +8955,7 @@ "version": "1.4.1", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-context-formatter": "1.1.1", "power-assert-context-reducer-ast": "1.1.2", "power-assert-renderer-assertion": "1.1.1", @@ -9577,8 +8980,8 @@ "version": "1.1.1", "bundled": true, "requires": { - "core-js": "2.5.5", - "diff-match-patch": "1.0.0", + "core-js": "2.5.6", + "diff-match-patch": "1.0.1", "power-assert-renderer-base": "1.1.1", "stringifier": "1.3.0", "type-name": "2.0.2" @@ -9588,7 +8991,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "power-assert-renderer-base": "1.1.1", "power-assert-util-string-width": "1.1.1", "stringifier": "1.3.0" @@ -9621,7 +9024,7 @@ "bundled": true }, "prettier": { - "version": "1.12.0", + "version": "1.12.1", "bundled": true }, "pretty-ms": { @@ -9673,8 +9076,14 @@ "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.0", "@types/long": "3.0.32", - "@types/node": "8.10.8", + "@types/node": "8.10.17", "long": "4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.17", + "bundled": true + } } }, "proxyquire": { @@ -9704,7 +9113,7 @@ "bundled": true }, "qs": { - "version": "6.5.1", + "version": "6.5.2", "bundled": true }, "query-string": { @@ -9717,27 +9126,25 @@ } }, "randomatic": { - "version": "1.1.7", + "version": "3.0.0", "bundled": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { - "kind-of": { + "is-number": { "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } + "bundled": true } } }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -9787,7 +9194,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -9820,7 +9227,7 @@ } }, "regenerate": { - "version": "1.3.3", + "version": "1.4.0", "bundled": true }, "regenerator-runtime": { @@ -9850,7 +9257,7 @@ "version": "2.0.0", "bundled": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -9859,15 +9266,15 @@ "version": "3.3.2", "bundled": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { "version": "3.1.0", "bundled": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -9908,7 +9315,7 @@ } }, "request": { - "version": "2.85.0", + "version": "2.87.0", "bundled": true, "requires": { "aws-sign2": "0.7.0", @@ -9919,7 +9326,6 @@ "forever-agent": "0.6.1", "form-data": "2.3.2", "har-validator": "5.0.3", - "hawk": "6.0.2", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", @@ -9927,9 +9333,8 @@ "mime-types": "2.1.18", "oauth-sign": "0.8.2", "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", + "qs": "6.5.2", + "safe-buffer": "5.1.2", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" @@ -10020,7 +9425,7 @@ "version": "3.3.1", "bundled": true, "requires": { - "request": "2.85.0", + "request": "2.87.0", "through2": "2.0.3" } }, @@ -10058,7 +9463,7 @@ } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true }, "safe-regex": { @@ -10080,14 +9485,14 @@ "version": "1.18.2", "bundled": true, "requires": { - "chalk": "2.3.2", + "chalk": "2.4.1", "htmlparser2": "3.9.2", "lodash.clonedeep": "4.5.0", "lodash.escaperegexp": "4.1.2", "lodash.isplainobject": "4.0.6", "lodash.isstring": "4.0.1", "lodash.mergewith": "4.6.1", - "postcss": "6.0.21", + "postcss": "6.0.22", "srcset": "1.0.0", "xtend": "4.0.1" } @@ -10156,9 +9561,9 @@ "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "lolex": "2.6.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -10193,7 +9598,7 @@ "extend-shallow": "2.0.1", "map-cache": "0.2.2", "source-map": "0.5.7", - "source-map-resolve": "0.5.1", + "source-map-resolve": "0.5.2", "use": "3.1.0" }, "dependencies": { @@ -10277,13 +9682,6 @@ } } }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, "sort-keys": { "version": "2.0.0", "bundled": true, @@ -10296,10 +9694,10 @@ "bundled": true }, "source-map-resolve": { - "version": "0.5.1", + "version": "0.5.2", "bundled": true, "requires": { - "atob": "2.1.0", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -10307,9 +9705,10 @@ } }, "source-map-support": { - "version": "0.5.4", + "version": "0.5.6", "bundled": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -10409,7 +9808,7 @@ } }, "stream-events": { - "version": "1.0.3", + "version": "1.0.4", "bundled": true, "requires": { "stubs": "3.0.0" @@ -10440,22 +9839,18 @@ "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "stringifier": { "version": "1.3.0", "bundled": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "traverse": "0.6.6", "type-name": "2.0.2" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -10494,7 +9889,7 @@ "bundled": true }, "superagent": { - "version": "3.8.2", + "version": "3.8.3", "bundled": true, "requires": { "component-emitter": "1.2.1", @@ -10505,7 +9900,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" }, "dependencies": { @@ -10544,11 +9939,11 @@ "bundled": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { - "version": "5.3.0", + "version": "5.4.0", "bundled": true, "requires": { "has-flag": "3.0.0" @@ -10570,8 +9965,8 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.2", - "lodash": "4.17.5", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, @@ -10712,7 +10107,7 @@ "version": "0.6.0", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -10908,11 +10303,11 @@ "bundled": true }, "update-notifier": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -11063,7 +10458,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" @@ -11177,12 +10572,12 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -11221,7 +10616,7 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", @@ -11235,24 +10630,24 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.4", + "source-map-support": "0.5.6", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" } }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "2.1.1", @@ -11297,8 +10692,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -11308,26 +10702,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -11335,14 +10725,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" @@ -11350,32 +10738,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -11385,8 +10768,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -11401,8 +10783,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -11410,8 +10791,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "2.5.3", @@ -11420,8 +10800,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11433,8 +10812,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -11450,8 +10828,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -11462,20 +10839,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -11484,8 +10858,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", @@ -11495,14 +10868,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -11512,15 +10883,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11530,8 +10899,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -11543,8 +10911,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -11555,8 +10922,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -11564,38 +10930,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11604,8 +10964,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -11613,20 +10972,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -11634,8 +10990,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -11643,8 +10998,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -11652,20 +11006,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -11679,8 +11030,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", @@ -11692,8 +11042,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -11701,8 +11050,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" @@ -11710,8 +11058,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -11719,14 +11066,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", @@ -11738,8 +11083,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -11749,8 +11093,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -11758,14 +11101,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" @@ -11773,8 +11114,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -11783,26 +11123,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -11815,8 +11151,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", @@ -11825,8 +11160,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" @@ -11834,20 +11168,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -11858,8 +11189,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -11869,8 +11199,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -11878,26 +11207,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -11906,14 +11231,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -11921,26 +11244,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" @@ -11948,14 +11267,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" @@ -11963,20 +11280,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11984,8 +11298,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -11993,8 +11306,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" @@ -12002,8 +11314,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12011,44 +11322,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -12056,14 +11360,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -12071,8 +11373,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", @@ -12086,8 +11387,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -12098,8 +11398,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -12109,8 +11408,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -12122,8 +11420,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -12133,8 +11430,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -12142,20 +11438,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12163,15 +11456,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -12179,8 +11470,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12192,8 +11482,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -12202,28 +11491,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" @@ -12231,8 +11516,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -12241,8 +11525,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -12250,14 +11533,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.1.0" @@ -12265,8 +11546,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" @@ -12274,8 +11554,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", @@ -12295,14 +11574,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" @@ -12310,14 +11587,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -12325,14 +11600,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", @@ -12343,8 +11616,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" @@ -12352,8 +11624,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -12361,20 +11632,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", @@ -12383,8 +11651,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -12392,8 +11659,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -12402,14 +11668,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -12419,20 +11683,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" @@ -12440,8 +11701,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", @@ -12452,8 +11712,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -12461,8 +11720,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -12470,26 +11728,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12499,20 +11753,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -12520,8 +11771,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -12529,8 +11779,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12541,20 +11790,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -12563,8 +11809,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -12572,8 +11817,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12583,8 +11827,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -12594,8 +11837,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -12605,8 +11847,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -12615,8 +11856,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -12627,14 +11867,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" @@ -12642,26 +11880,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -12669,26 +11903,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12697,8 +11927,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -12706,20 +11935,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -12727,32 +11953,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -12765,8 +11986,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" @@ -12774,20 +11994,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -12796,20 +12013,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -12819,8 +12033,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -12828,8 +12041,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -12837,20 +12049,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", @@ -12862,20 +12071,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12886,8 +12092,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -12901,15 +12106,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", @@ -12918,8 +12121,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -12927,27 +12129,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -12956,8 +12154,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -12969,14 +12166,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -12986,20 +12181,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "3.2.0", @@ -13018,8 +12210,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -13029,8 +12220,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -13044,8 +12234,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -13053,8 +12242,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -13070,9 +12258,9 @@ "@sinonjs/formatio": "2.0.0", "diff": "3.5.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", - "supports-color": "5.3.0", + "lolex": "2.6.0", + "nise": "1.3.3", + "supports-color": "5.4.0", "type-detect": "4.0.8" } }, @@ -13086,9 +12274,9 @@ } }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -13108,7 +12296,7 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -13187,7 +12375,7 @@ }, "@sinonjs/formatio": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", "requires": { "samsam": "1.3.0" @@ -13360,10 +12548,10 @@ "arrify": "1.0.1", "auto-bind": "1.2.0", "ava-init": "0.2.1", - "babel-core": "6.26.0", + "babel-core": "6.26.3", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.1", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -13403,7 +12591,7 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", @@ -13417,7 +12605,7 @@ "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "slash": "1.0.0", "source-map-support": "0.4.18", "stack-utils": "1.0.1", @@ -13427,7 +12615,7 @@ "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.4.0" + "update-notifier": "2.5.0" }, "dependencies": { "ansi-escapes": { @@ -13529,9 +12717,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -13724,9 +12912,9 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.5", + "core-js": "2.5.6", "espower-location-detector": "1.0.0", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -13786,9 +12974,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -13869,9 +13057,9 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.5", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -13895,7 +13083,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -13990,7 +13178,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -14024,6 +13212,12 @@ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -14092,9 +13286,9 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.5", + "core-js": "2.5.6", "deep-equal": "1.0.1", - "espurify": "1.7.0", + "espurify": "1.8.0", "estraverse": "4.2.0" } }, @@ -14145,14 +13339,14 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" }, "dependencies": { "has-flag": { @@ -14162,9 +13356,9 @@ "dev": true }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -14180,7 +13374,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.2.3", + "fsevents": "1.2.4", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -14384,7 +13578,7 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" @@ -14419,9 +13613,9 @@ } }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", "dev": true }, "core-util-is": { @@ -14444,7 +13638,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -14514,9 +13708,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "delayed-stream": { @@ -14561,7 +13755,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "equal-length": { @@ -14610,12 +13804,12 @@ "dev": true }, "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", + "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", "dev": true, "requires": { - "core-js": "2.5.5" + "core-js": "2.5.6" } }, "estraverse": { @@ -14659,7 +13853,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "2.2.4" } }, "extend": { @@ -14709,14 +13903,14 @@ } }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "1.1.7", + "randomatic": "3.0.0", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } @@ -14728,7 +13922,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pkg-dir": "2.0.0" } }, @@ -14814,13 +14008,13 @@ "dev": true }, "fsevents": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", - "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { "nan": "2.10.0", - "node-pre-gyp": "0.9.1" + "node-pre-gyp": "0.10.0" }, "dependencies": { "abbrev": { @@ -14889,7 +14083,7 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "optional": true }, @@ -15045,7 +14239,7 @@ } }, "node-pre-gyp": { - "version": "0.9.1", + "version": "0.10.0", "bundled": true, "optional": true, "requires": { @@ -15055,7 +14249,7 @@ "nopt": "4.0.1", "npm-packlist": "1.1.10", "npmlog": "4.1.2", - "rc": "1.2.6", + "rc": "1.2.7", "rimraf": "2.6.2", "semver": "5.5.0", "tar": "4.4.1" @@ -15141,11 +14335,11 @@ "optional": true }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "optional": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -15400,7 +14594,7 @@ "p-cancelable": "0.3.0", "p-timeout": "2.0.1", "pify": "3.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "url-parse-lax": "3.0.0", "url-to-options": "1.0.1" @@ -15540,7 +14734,7 @@ "package-hash": "2.0.0", "pkg-dir": "2.0.0", "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "ignore-by-default": { @@ -16070,9 +15264,9 @@ "dev": true }, "lolex": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", - "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", + "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==" }, "longest": { "version": "1.0.1", @@ -16106,18 +15300,18 @@ "dev": true }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "3.0.0" @@ -16146,6 +15340,12 @@ "escape-string-regexp": "1.0.5" } }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "md5-hex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", @@ -16403,13 +15603,13 @@ "optional": true }, "nise": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", - "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", + "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", "requires": { "@sinonjs/formatio": "2.0.0", "just-extend": "1.1.27", - "lolex": "2.3.2", + "lolex": "2.6.0", "path-to-regexp": "1.7.0", "text-encoding": "0.6.4" } @@ -16468,9 +15668,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.6.0.tgz", - "integrity": "sha512-ZaXCh0wmbk2aSBH2B5hZGGvK2s9aM8DIm2rVY+BG3Fx8tUS+bpJSswUVZqOD1YfCmnYRFSqgYJSr7UeeUcW0jg==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.8.0.tgz", + "integrity": "sha512-PUFq1PSsx5OinSk5g5aaZygcDdI3QQT5XUlbR9QRMihtMS6w0Gm8xj4BxmKeeAlpQXC5M2DIhH16Y+KejceivQ==", "dev": true, "requires": { "archy": "1.0.0", @@ -16488,10 +15688,10 @@ "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.3", "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.3.0", + "istanbul-reports": "1.4.0", "md5-hex": "1.3.0", "merge-source-map": "1.1.0", - "micromatch": "2.3.11", + "micromatch": "3.1.10", "mkdirp": "0.5.1", "resolve-from": "2.0.0", "rimraf": "2.6.2", @@ -16504,8 +15704,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", @@ -16515,26 +15714,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "1.0.0" @@ -16542,65 +15737,52 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "bundled": true, + "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.1", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "1.1.3", @@ -16610,8 +15792,7 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "bundled": true, "dev": true, "requires": { "babel-messages": "6.23.0", @@ -16619,15 +15800,14 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.5", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" } }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0" @@ -16635,31 +15815,28 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.5" + "lodash": "4.17.10" } }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -16669,38 +15846,34 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "invariant": "2.2.4", + "lodash": "4.17.10" } }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.5", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "1.0.1", @@ -16714,25 +15887,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", @@ -16740,26 +15941,40 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "1.0.0", @@ -16775,16 +15990,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", @@ -16794,15 +16007,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -16812,8 +16023,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", @@ -16825,8 +16035,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -16837,82 +16046,22 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -16923,8 +16072,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -16932,14 +16080,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "1.0.0", @@ -16948,54 +16094,46 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.6", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "which": "1.3.0" } }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17003,26 +16141,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" @@ -17030,26 +16164,54 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" @@ -17057,8 +16219,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "0.2.1" @@ -17066,20 +16227,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "5.1.0", @@ -17093,88 +16251,155 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } } } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "extend-shallow": { + "version": "2.0.1", + "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-extendable": "0.1.1" } } } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "1.0.1", @@ -17184,8 +16409,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "2.0.0" @@ -17193,23 +16417,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", @@ -17218,8 +16431,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "0.2.2" @@ -17227,32 +16439,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -17263,41 +16470,19 @@ "path-is-absolute": "1.0.1" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "1.5.2", @@ -17308,8 +16493,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" @@ -17319,8 +16503,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -17328,14 +16511,12 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -17345,16 +16526,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -17363,8 +16542,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -17372,8 +16550,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17383,8 +16560,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17394,20 +16570,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -17416,14 +16589,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" @@ -17431,115 +16602,68 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "bundled": true, "dev": true } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -17547,23 +16671,12 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -17571,8 +16684,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "4.0.0" @@ -17580,16 +16692,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -17597,73 +16707,49 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "bundled": true, + "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" @@ -17671,8 +16757,7 @@ }, "istanbul-lib-instrument": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.1", @@ -17686,8 +16771,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.2.0", @@ -17698,8 +16782,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" @@ -17709,8 +16792,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "bundled": true, "dev": true, "requires": { "debug": "3.1.0", @@ -17722,8 +16804,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17732,9 +16813,8 @@ } }, "istanbul-reports": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { "handlebars": "4.0.11" @@ -17742,20 +16822,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -17763,15 +16840,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "1.0.0" @@ -17779,8 +16854,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -17792,8 +16866,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "2.0.0", @@ -17802,37 +16875,32 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.10", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "3.0.2" } }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", @@ -17841,14 +16909,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "1.0.1" @@ -17856,8 +16922,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "0.1.1" @@ -17865,14 +16930,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "1.2.0" @@ -17880,8 +16943,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "0.6.1" @@ -17889,43 +16951,46 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.11" @@ -17933,14 +16998,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "1.0.2", @@ -17949,8 +17012,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "2.0.4" @@ -17960,8 +17022,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -17969,14 +17030,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", @@ -17995,28 +17054,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -18025,19 +17080,9 @@ "validate-npm-package-license": "3.0.3" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" @@ -18045,20 +17090,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "0.1.1", @@ -18068,56 +17110,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -18125,26 +17128,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "3.0.1" @@ -18152,16 +17143,14 @@ "dependencies": { "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -18169,8 +17158,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", @@ -18179,14 +17167,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "0.7.0", @@ -18196,14 +17182,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "1.0.0" @@ -18211,8 +17195,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "1.2.0" @@ -18220,26 +17203,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" @@ -18247,14 +17216,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" @@ -18262,26 +17229,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -18291,20 +17254,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "2.0.4" @@ -18312,8 +17272,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" @@ -18321,8 +17280,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18333,67 +17291,17 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", @@ -18403,8 +17311,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", @@ -18413,8 +17320,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", @@ -18425,51 +17331,31 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2", "safe-regex": "1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "1.0.2" @@ -18477,38 +17363,32 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -18517,8 +17397,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -18526,8 +17405,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "0.1.15" @@ -18535,20 +17413,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -18559,8 +17434,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -18570,8 +17444,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "1.0.0" @@ -18579,26 +17452,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "0.11.2", @@ -18613,8 +17482,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -18622,76 +17490,17 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "1.0.0", @@ -18701,25 +17510,53 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -18727,17 +17564,15 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "bundled": true, "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -18746,14 +17581,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", @@ -18766,8 +17599,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "3.0.0", @@ -18776,14 +17608,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "2.1.0", @@ -18792,14 +17622,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "3.0.2" @@ -18807,8 +17635,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "0.2.5", @@ -18817,76 +17644,17 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -18895,14 +17663,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -18912,8 +17678,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -18921,8 +17686,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" @@ -18930,24 +17694,21 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", - "micromatch": "3.1.9", + "micromatch": "3.1.10", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" @@ -18955,29 +17716,24 @@ "dependencies": { "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -18985,19 +17741,9 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19007,8 +17753,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "2.6.9", @@ -19022,8 +17767,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "0.1.6" @@ -19031,17 +17775,51 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "0.1.6", @@ -19051,16 +17829,14 @@ }, "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "bundled": true, "dev": true } } }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "bundled": true, "dev": true, "requires": { "array-unique": "0.3.2", @@ -19075,8 +17851,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "1.0.2" @@ -19084,8 +17859,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19095,8 +17869,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -19107,8 +17880,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19117,49 +17889,34 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19167,8 +17924,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "1.1.6" @@ -19178,25 +17934,22 @@ }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "bundled": true, "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -19213,14 +17966,12 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19228,8 +17979,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "2.0.2", @@ -19240,8 +17990,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "3.0.0", @@ -19250,8 +17999,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" @@ -19261,14 +18009,12 @@ }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -19279,8 +18025,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -19294,15 +18039,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "3.1.0", @@ -19313,8 +18056,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "0.1.1" @@ -19322,8 +18064,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "2.0.1", @@ -19336,8 +18077,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "0.3.1", @@ -19346,8 +18086,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "2.0.6", @@ -19357,8 +18096,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -19368,28 +18106,24 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "6.0.2" @@ -19397,16 +18131,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "3.0.0", @@ -19415,8 +18147,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "2.0.0" @@ -19424,27 +18155,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", @@ -19453,8 +18180,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -19462,8 +18188,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -19475,14 +18200,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -19492,23 +18215,20 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -19524,20 +18244,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "bundled": true, "dev": true, "requires": { "string-width": "2.1.1", @@ -19547,8 +18264,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "3.0.0" @@ -19556,8 +18272,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -19567,8 +18282,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" @@ -19576,8 +18290,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -19769,7 +18482,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -19981,9 +18694,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "query-string": { @@ -19998,53 +18711,37 @@ } }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "requires": { - "deep-extend": "0.4.2", + "deep-extend": "0.5.1", "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" @@ -20089,7 +18786,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" }, @@ -20136,9 +18833,9 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { @@ -20162,7 +18859,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -20173,8 +18870,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -20183,7 +18880,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -20304,9 +19001,9 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "samsam": { @@ -20372,8 +19069,8 @@ "diff": "3.5.0", "formatio": "1.2.0", "lodash.get": "4.4.2", - "lolex": "2.3.2", - "nise": "1.3.2", + "lolex": "2.6.0", + "nise": "1.3.3", "supports-color": "4.5.0", "type-detect": "4.0.8" } @@ -20423,11 +19120,12 @@ "dev": true }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" }, "dependencies": { @@ -20530,7 +19228,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -20577,9 +19275,9 @@ "dev": true }, "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -20590,7 +19288,7 @@ "formidable": "1.2.1", "methods": "1.1.2", "mime": "1.6.0", - "qs": "6.5.1", + "qs": "6.5.2", "readable-stream": "2.3.6" } }, @@ -20631,7 +19329,7 @@ "dev": true, "requires": { "methods": "1.1.2", - "superagent": "3.8.2" + "superagent": "3.8.3" } }, "supports-color": { @@ -20864,13 +19562,13 @@ "dev": true }, "update-notifier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.4.0.tgz", - "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.1", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -20999,7 +19697,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.2.0", + "make-dir": "1.3.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" From be2906cf603f9daf54cd9e2375aab7853485406c Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sun, 3 Jun 2018 16:15:02 -0700 Subject: [PATCH 196/820] chore(package): update nyc to version 12.0.2 (#98) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5e2ba9be68c..3fe87aac609 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -93,7 +93,7 @@ "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "mocha": "^5.0.0", - "nyc": "^11.3.0", + "nyc": "^12.0.2", "power-assert": "^1.4.4", "prettier": "^1.9.2", "proxyquire": "^2.0.0", From e4cd85a21a01c13679629b67e4f20b4eb2c48c6f Mon Sep 17 00:00:00 2001 From: Moritz Raguschat Date: Mon, 11 Jun 2018 21:52:49 +0200 Subject: [PATCH 197/820] excludeFromIndexes: fix for entity elements inside arrays (#101) Fixes #93 Fixes #100 --- handwritten/nodejs-datastore/src/entity.js | 36 ++- handwritten/nodejs-datastore/test/entity.js | 258 ++++++++++++++++++-- 2 files changed, 264 insertions(+), 30 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 918c3a96e43..28c9033c626 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -501,13 +501,18 @@ function entityToEntityProto(entityObject) { var hasEntityPath = entityIndex > -1; if (!hasArrayPath && !hasEntityPath) { + // This is the path end node. Traversal ends here in either case. if (entity.properties) { - if (entity.properties[path]) { + if ( + entity.properties[path] && + // array properties should be excluded with [] syntax: + !entity.properties[path].arrayValue + ) { // This is the property to exclude! entity.properties[path].excludeFromIndexes = true; } } else if (!path) { - // This is a primitive that should be excluded. + // This is a primitive or entity root that should be excluded. entity.excludeFromIndexes = true; } return; @@ -533,12 +538,29 @@ function entityToEntityProto(entityObject) { return; } - if (firstPathPartIsArray) { + if ( + firstPathPartIsArray && + // check also if the property in question is actually an array value. + entity.properties[firstPathPart].arrayValue + ) { var array = entity.properties[firstPathPart].arrayValue; - - array.values.forEach(function(arrayValue) { - var memberEntity = arrayValue.entityValue || arrayValue; - excludePathFromEntity(memberEntity, remainderPath); + array.values.forEach(function(value) { + if (remainderPath === '') { + // We want to exclude *this* array property, which is + // equivalent with excluding all its values + // (including entity values at their roots): + excludePathFromEntity( + value, + remainderPath // === '' + ); + } else { + // Path traversal continues at value.entityValue, + // if it is an entity, or must end at value. + excludePathFromEntity( + value.entityValue || value, + remainderPath // !== '' + ); + } }); } else if (firstPathPartIsEntity) { var parentEntity = entity.properties[firstPathPart].entityValue; diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 849914db78c..8c736d2d213 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -591,7 +591,21 @@ describe('entity', function() { }); it('should respect excludeFromIndexes', function() { - var value = 'Stephen'; + var value1 = 'Stephen'; + var value2 = 'Stephen2'; + var value3 = 'Stephen3'; + var value4 = 'Stephen4'; + var value5 = 'Stephen5'; + var value6 = 'Stephen6'; + var value7 = 'Stephen7'; + var value8 = 'Stephen8'; + var value9 = 'Stephen9'; + var value10 = 'Stephen10'; + var value11 = 'Stephen11'; + var value12 = 'Stephen12'; + var value13 = 'something'; + var value14 = 'else'; + var value15 = 'whatever'; var entityObject = { excludeFromIndexes: [ @@ -604,40 +618,44 @@ describe('entity', function() { 'array[].array[].entity.name', 'entityExcluded[].name', 'primitiveExcluded[]', + 'rules[].requirements[].audiences', + 'nestedArrayVariants[].a[].b', + 'alpha[]', + 'omega', ], data: { - name: value, + name: value1, entity: { - name: value, + name: value2, }, entityExcluded: [ - value, + value3, { - name: value, + name: value4, }, ], primitiveExcluded: [ - value, + value5, { - name: value, + name: value6, }, ], array: [ - value, + value7, { - name: value, + name: value8, }, { entity: { - name: value, + name: value9, array: [ { - name: value, + name: value10, }, ], }, @@ -646,12 +664,44 @@ describe('entity', function() { array: [ { entity: { - name: value, + name: value11, }, }, ], }, ], + + rules: [ + { + requirements: [ + { + audiences: value12, + }, + ], + }, + { + requirements: null, + }, + ], + + nestedArrayVariants: [ + { + a: [{b: value13}, {c: value14}], + }, + { + a: null, + }, + { + a: [value15], + }, + { + a: [{b: ['nasty', 'array']}], + }, + ], + + alpha: ['beta', 'gamma'], + + omega: ['beta', 'gamma'], }, }; @@ -659,14 +709,14 @@ describe('entity', function() { key: null, properties: { name: { - stringValue: value, + stringValue: value1, excludeFromIndexes: true, }, entity: { entityValue: { properties: { name: { - stringValue: value, + stringValue: value2, excludeFromIndexes: true, }, }, @@ -676,13 +726,13 @@ describe('entity', function() { arrayValue: { values: [ { - stringValue: value, + stringValue: value3, }, { entityValue: { properties: { name: { - stringValue: value, + stringValue: value4, excludeFromIndexes: true, }, }, @@ -695,17 +745,18 @@ describe('entity', function() { arrayValue: { values: [ { - stringValue: value, + stringValue: value5, excludeFromIndexes: true, }, { entityValue: { properties: { name: { - stringValue: value, + stringValue: value6, }, }, }, + excludeFromIndexes: true, }, ], }, @@ -714,18 +765,19 @@ describe('entity', function() { arrayValue: { values: [ { - stringValue: value, + stringValue: value7, excludeFromIndexes: true, }, { entityValue: { properties: { name: { - stringValue: value, + stringValue: value8, excludeFromIndexes: true, }, }, }, + excludeFromIndexes: true, }, { entityValue: { @@ -734,7 +786,7 @@ describe('entity', function() { entityValue: { properties: { name: { - stringValue: value, + stringValue: value9, excludeFromIndexes: true, }, array: { @@ -744,7 +796,7 @@ describe('entity', function() { entityValue: { properties: { name: { - stringValue: value, + stringValue: value10, excludeFromIndexes: true, }, }, @@ -758,6 +810,7 @@ describe('entity', function() { }, }, }, + excludeFromIndexes: true, }, { entityValue: { @@ -772,7 +825,7 @@ describe('entity', function() { entityValue: { properties: { name: { - stringValue: value, + stringValue: value11, excludeFromIndexes: true, }, }, @@ -786,6 +839,165 @@ describe('entity', function() { }, }, }, + excludeFromIndexes: true, + }, + ], + }, + }, + rules: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + requirements: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + audiences: { + stringValue: value12, + excludeFromIndexes: true, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + { + entityValue: { + properties: { + requirements: { + nullValue: 0, + }, + }, + }, + }, + ], + }, + }, + nestedArrayVariants: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + a: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + b: { + stringValue: value13, + excludeFromIndexes: true, + }, + }, + }, + }, + { + entityValue: { + properties: { + c: { + stringValue: value14, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + { + entityValue: { + properties: { + a: { + nullValue: 0, + }, + }, + }, + }, + { + entityValue: { + properties: { + a: { + arrayValue: { + values: [ + { + stringValue: value15, + }, + ], + }, + }, + }, + }, + }, + { + entityValue: { + properties: { + a: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + b: { + // excludeFromIndexes: ['nestedArrayVariants[].a[].b'] does not apply here, + // To exclude this array (= all its elements), we would use ['nestedArrayVariants[].a[].b[]'] + arrayValue: { + values: [ + { + stringValue: 'nasty', + }, + { + stringValue: 'array', + }, + ], + }, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + ], + }, + }, + alpha: { + // `excludeFromIndexes: ['alpha[]']` results in exclusion of all array elements + arrayValue: { + values: [ + { + excludeFromIndexes: true, + stringValue: 'beta', + }, + { + excludeFromIndexes: true, + stringValue: 'gamma', + }, + ], + }, + }, + omega: { + // `excludeFromIndexes: ['omega']` is not applied, because 'omega' is an array. + arrayValue: { + values: [ + { + stringValue: 'beta', + }, + { + stringValue: 'gamma', }, ], }, From bfe236647b5a338eeecf7d093ed2ef59bbc1b885 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 11 Jun 2018 13:06:31 -0700 Subject: [PATCH 198/820] fix: update all dependencies (#102) --- .../nodejs-datastore/package-lock.json | 5508 ++-- handwritten/nodejs-datastore/package.json | 46 +- .../samples/package-lock.json | 24202 +++++----------- .../nodejs-datastore/samples/package.json | 12 +- 4 files changed, 10444 insertions(+), 19324 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 05317da3ba4..17c15b66977 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -16,18 +16,18 @@ "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" + "babel-plugin-check-es2015-constants": "^6.8.0", + "babel-plugin-syntax-trailing-function-commas": "^6.20.0", + "babel-plugin-transform-async-to-generator": "^6.16.0", + "babel-plugin-transform-es2015-destructuring": "^6.19.0", + "babel-plugin-transform-es2015-function-name": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", + "babel-plugin-transform-es2015-parameters": "^6.21.0", + "babel-plugin-transform-es2015-spread": "^6.8.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", + "babel-plugin-transform-exponentiation-operator": "^6.8.0", + "package-hash": "^1.2.0" }, "dependencies": { "md5-hex": { @@ -36,7 +36,7 @@ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "package-hash": { @@ -45,7 +45,7 @@ "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", "dev": true, "requires": { - "md5-hex": "1.3.0" + "md5-hex": "^1.3.0" } } } @@ -56,8 +56,8 @@ "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", "dev": true, "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.4.0" + "@ava/babel-plugin-throws-helper": "^2.0.0", + "babel-plugin-espower": "^2.3.2" } }, "@ava/write-file-atomic": { @@ -66,9 +66,142 @@ "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "@babel/code-frame": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.49" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", + "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", + "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", + "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", + "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", + "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.49.tgz", + "integrity": "sha1-lE0MW6KBK7FZ7b0iZ0Ov0mUXm9w=", + "dev": true + }, + "@babel/template": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", + "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", + "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + }, + "dependencies": { + "globals": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", + "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@concordance/react": { @@ -77,28 +210,29 @@ "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", "dev": true, "requires": { - "arrify": "1.0.1" + "arrify": "^1.0.1" } }, "@google-cloud/common": { - "version": "0.18.9", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.18.9.tgz", - "integrity": "sha512-P5jtyfOCF84fzVcT/36XKARRrbCOqozYBliDd7btQ96GuEqKzjPVjxeE4EzdeRQ8QChBpHLrbONsU63Jprw73A==", - "requires": { - "@types/duplexify": "3.5.0", - "@types/request": "2.47.0", - "arrify": "1.0.1", - "axios": "0.18.0", - "duplexify": "3.6.0", - "ent": "2.2.0", - "extend": "3.0.1", - "google-auth-library": "1.5.0", - "is": "3.2.1", - "pify": "3.0.0", - "request": "2.87.0", - "retry-request": "3.3.1", - "split-array-stream": "2.0.0", - "stream-events": "1.0.4" + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.19.2.tgz", + "integrity": "sha512-CuURBaMx6vUwLFpHLCYyLJXkg6EKYcrAfhH9Fva8C2B9dJ7flT8j/R+o05OuXwj4VQYC4c8bl/hrwyO+XvAwlg==", + "requires": { + "@types/duplexify": "^3.5.0", + "@types/request": "^2.47.0", + "arrify": "^1.0.1", + "axios": "^0.18.0", + "duplexify": "^3.5.4", + "ent": "^2.2.0", + "extend": "^3.0.1", + "google-auth-library": "^1.4.0", + "is": "^3.2.1", + "pify": "^3.0.0", + "request": "^2.85.0", + "retry-request": "^3.3.1", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4", + "through2": "^2.0.3" } }, "@google-cloud/nodejs-repo-tools": { @@ -115,7 +249,7 @@ "lodash": "4.17.5", "nyc": "11.4.1", "proxyquire": "1.8.0", - "semver": "5.5.0", + "semver": "^5.5.0", "sinon": "4.3.0", "string": "3.3.3", "supertest": "3.0.0", @@ -135,9 +269,9 @@ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "is-fullwidth-code-point": { @@ -158,33 +292,33 @@ "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", "dev": true, "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", - "md5-hex": "1.3.0", - "merge-source-map": "1.0.4", - "micromatch": "2.3.11", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.1.1", - "yargs": "10.0.3", - "yargs-parser": "8.0.0" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" }, "dependencies": { "align-text": { @@ -192,9 +326,9 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -217,7 +351,7 @@ "bundled": true, "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "archy": { @@ -230,7 +364,7 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -258,9 +392,9 @@ "bundled": true, "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-generator": { @@ -268,14 +402,14 @@ "bundled": true, "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" } }, "babel-messages": { @@ -283,7 +417,7 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-runtime": { @@ -291,8 +425,8 @@ "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -300,11 +434,11 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -312,15 +446,15 @@ "bundled": true, "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -328,10 +462,10 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -349,7 +483,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -358,9 +492,9 @@ "bundled": true, "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "builtin-modules": { @@ -373,9 +507,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" } }, "camelcase": { @@ -390,8 +524,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -399,11 +533,11 @@ "bundled": true, "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cliui": { @@ -412,8 +546,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -455,8 +589,8 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "debug": { @@ -482,7 +616,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" } }, "detect-indent": { @@ -490,7 +624,7 @@ "bundled": true, "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "error-ex": { @@ -498,7 +632,7 @@ "bundled": true, "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { @@ -516,13 +650,13 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { "cross-spawn": { @@ -530,9 +664,9 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -542,7 +676,7 @@ "bundled": true, "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -550,7 +684,7 @@ "bundled": true, "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -558,7 +692,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "filename-regex": { @@ -571,11 +705,11 @@ "bundled": true, "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-cache-dir": { @@ -583,9 +717,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -593,7 +727,7 @@ "bundled": true, "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -606,7 +740,7 @@ "bundled": true, "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreground-child": { @@ -614,8 +748,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, "fs.realpath": { @@ -638,12 +772,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -651,8 +785,8 @@ "bundled": true, "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -660,7 +794,7 @@ "bundled": true, "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -678,10 +812,10 @@ "bundled": true, "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { @@ -689,7 +823,7 @@ "bundled": true, "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -699,7 +833,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -722,8 +856,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -736,7 +870,7 @@ "bundled": true, "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -759,7 +893,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-dotfile": { @@ -772,7 +906,7 @@ "bundled": true, "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -790,7 +924,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -798,7 +932,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -806,7 +940,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -814,7 +948,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-posix-bracket": { @@ -865,7 +999,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -873,13 +1007,13 @@ "bundled": true, "dev": true, "requires": { - "babel-generator": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" } }, "istanbul-lib-report": { @@ -887,10 +1021,10 @@ "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { "supports-color": { @@ -898,7 +1032,7 @@ "bundled": true, "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -908,11 +1042,11 @@ "bundled": true, "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { "debug": { @@ -930,7 +1064,7 @@ "bundled": true, "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, "js-tokens": { @@ -948,7 +1082,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -962,7 +1096,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -970,11 +1104,11 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -982,8 +1116,8 @@ "bundled": true, "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -1008,7 +1142,7 @@ "bundled": true, "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -1016,8 +1150,8 @@ "bundled": true, "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "md5-hex": { @@ -1025,7 +1159,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -1038,7 +1172,7 @@ "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "merge-source-map": { @@ -1046,7 +1180,7 @@ "bundled": true, "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "micromatch": { @@ -1054,19 +1188,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mimic-fn": { @@ -1079,7 +1213,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1105,10 +1239,10 @@ "bundled": true, "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -1116,7 +1250,7 @@ "bundled": true, "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -1124,7 +1258,7 @@ "bundled": true, "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -1142,8 +1276,8 @@ "bundled": true, "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -1151,7 +1285,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optimist": { @@ -1159,8 +1293,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "os-homedir": { @@ -1173,9 +1307,9 @@ "bundled": true, "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -1193,7 +1327,7 @@ "bundled": true, "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "parse-glob": { @@ -1201,10 +1335,10 @@ "bundled": true, "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -1212,7 +1346,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1220,7 +1354,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -1243,9 +1377,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -1263,7 +1397,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -1271,7 +1405,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" }, "dependencies": { "find-up": { @@ -1279,8 +1413,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -1300,8 +1434,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -1309,7 +1443,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1317,7 +1451,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1327,7 +1461,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1337,9 +1471,9 @@ "bundled": true, "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -1347,8 +1481,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -1356,8 +1490,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -1372,7 +1506,7 @@ "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -1395,7 +1529,7 @@ "bundled": true, "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "require-directory": { @@ -1419,7 +1553,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -1427,7 +1561,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "semver": { @@ -1445,7 +1579,7 @@ "bundled": true, "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -1473,12 +1607,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, "spdx-correct": { @@ -1486,7 +1620,7 @@ "bundled": true, "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -1504,8 +1638,8 @@ "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -1523,7 +1657,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -1533,7 +1667,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -1541,7 +1675,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-eof": { @@ -1559,11 +1693,11 @@ "bundled": true, "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, "to-fast-properties": { @@ -1582,9 +1716,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -1593,9 +1727,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -1612,8 +1746,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "which": { @@ -1621,7 +1755,7 @@ "bundled": true, "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -1645,8 +1779,8 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -1654,9 +1788,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -1671,9 +1805,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "y18n": { @@ -1691,18 +1825,18 @@ "bundled": true, "dev": true, "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.0.0" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" }, "dependencies": { "cliui": { @@ -1710,9 +1844,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -1720,9 +1854,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -1734,7 +1868,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -1752,9 +1886,9 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "proxyquire": { @@ -1763,9 +1897,9 @@ "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" } }, "sinon": { @@ -1774,13 +1908,13 @@ "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.5.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "5.4.0", - "type-detect": "4.0.8" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" } }, "string-width": { @@ -1789,8 +1923,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -1799,7 +1933,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "yargs": { @@ -1808,18 +1942,18 @@ "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } } } @@ -1830,10 +1964,10 @@ "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", "dev": true, "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { @@ -1848,9 +1982,9 @@ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, "pretty-ms": { @@ -1859,7 +1993,7 @@ "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", "dev": true, "requires": { - "parse-ms": "0.1.2" + "parse-ms": "^0.1.0" } }, "strip-ansi": { @@ -1875,14 +2009,14 @@ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, "@nodelib/fs.stat": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.0.2.tgz", - "integrity": "sha512-vCpf75JDcdomXvUd7Rn6DfYAVqPAFI66FVjxiWGwh85OLdvfo3paBoPJaam5keIYRyUolnS7SleS/ZPCidCvzw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", + "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" }, "@protobufjs/aspromise": { "version": "1.1.2", @@ -1909,8 +2043,8 @@ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", "requires": { - "@protobufjs/aspromise": "1.1.2", - "@protobufjs/inquire": "1.1.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, "@protobufjs/float": { @@ -1963,7 +2097,7 @@ "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", "requires": { - "@types/node": "10.1.2" + "@types/node": "*" } }, "@types/form-data": { @@ -1971,7 +2105,7 @@ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "requires": { - "@types/node": "10.1.2" + "@types/node": "*" } }, "@types/long": { @@ -1980,19 +2114,19 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", - "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==" + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.2.tgz", + "integrity": "sha512-9NfEUDp3tgRhmoxzTpTo+lq+KIVFxZahuRX0LHF/9IzKHaWuoWsIrrJ61zw5cnnlGINX8lqJzXYfQTOICS5Q+A==" }, "@types/request": { "version": "2.47.0", "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.0.tgz", "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==", "requires": { - "@types/caseless": "0.12.1", - "@types/form-data": "2.2.1", - "@types/node": "10.1.2", - "@types/tough-cookie": "2.3.3" + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" } }, "@types/tough-cookie": { @@ -2016,7 +2150,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -2032,10 +2166,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -2050,9 +2184,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" }, "dependencies": { "kind-of": { @@ -2061,7 +2195,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2078,7 +2212,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -2099,8 +2233,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -2109,7 +2243,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2131,7 +2265,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -2140,8 +2274,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" }, "dependencies": { "arr-diff": { @@ -2150,7 +2284,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "array-unique": { @@ -2165,9 +2299,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "expand-brackets": { @@ -2176,7 +2310,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "extglob": { @@ -2185,7 +2319,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-extglob": { @@ -2200,7 +2334,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "kind-of": { @@ -2209,7 +2343,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -2218,19 +2352,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } } } @@ -2241,7 +2375,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "argv": { @@ -2299,7 +2433,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -2322,8 +2456,8 @@ "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", "requires": { - "colour": "0.7.1", - "optjs": "3.2.2" + "colour": "~0.7.1", + "optjs": "~3.2.2" } }, "asn1": { @@ -2346,7 +2480,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "4.17.10" + "lodash": "^4.17.10" } }, "async-each": { @@ -2377,89 +2511,89 @@ "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", "dev": true, "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.1.0", - "ansi-styles": "3.2.1", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.2.0", - "ava-init": "0.2.1", - "babel-core": "6.26.3", - "babel-generator": "6.26.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.4.1", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.1", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.1.0", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.3.0", - "matcher": "1.1.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.1.0", - "plur": "2.1.2", - "pretty-ms": "3.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slash": "1.0.0", - "source-map-support": "0.5.6", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.4.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" }, "dependencies": { "ansi-regex": { @@ -2474,11 +2608,11 @@ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -2499,7 +2633,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "strip-ansi": { @@ -2508,7 +2642,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2519,11 +2653,11 @@ "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", "dev": true, "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" } }, "aws-sign2": { @@ -2541,8 +2675,8 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "follow-redirects": "1.5.0", - "is-buffer": "1.1.6" + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" } }, "babel-code-frame": { @@ -2551,9 +2685,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -2568,11 +2702,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -2589,25 +2723,25 @@ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" }, "dependencies": { "debug": { @@ -2627,14 +2761,14 @@ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { "jsesc": { @@ -2651,9 +2785,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-call-delegate": { @@ -2662,10 +2796,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-explode-assignable-expression": { @@ -2674,9 +2808,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-function-name": { @@ -2685,11 +2819,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -2698,8 +2832,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -2708,8 +2842,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-regex": { @@ -2718,9 +2852,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-remap-async-to-generator": { @@ -2729,11 +2863,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helpers": { @@ -2742,8 +2876,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-messages": { @@ -2752,7 +2886,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -2761,7 +2895,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-espower": { @@ -2770,13 +2904,13 @@ "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", "dev": true, "requires": { - "babel-generator": "6.26.1", - "babylon": "6.18.0", - "call-matcher": "1.0.1", - "core-js": "2.5.6", - "espower-location-detector": "1.0.0", - "espurify": "1.8.0", - "estraverse": "4.2.0" + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" } }, "babel-plugin-syntax-async-functions": { @@ -2809,9 +2943,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -2820,7 +2954,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -2829,9 +2963,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -2840,10 +2974,10 @@ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -2852,12 +2986,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -2866,7 +3000,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -2875,9 +3009,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -2886,9 +3020,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -2897,9 +3031,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-strict-mode": { @@ -2908,8 +3042,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-register": { @@ -2918,13 +3052,13 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.6", - "home-or-tmp": "2.0.0", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { "source-map-support": { @@ -2933,7 +3067,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -2944,8 +3078,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -2954,11 +3088,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -2967,15 +3101,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "debug": { @@ -2995,10 +3129,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -3017,13 +3151,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -3031,7 +3165,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -3039,7 +3173,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -3047,7 +3181,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -3055,9 +3189,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -3068,7 +3202,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -3089,13 +3223,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -3122,8 +3256,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -3132,7 +3266,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -3142,7 +3276,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -3151,16 +3285,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -3168,7 +3302,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3191,9 +3325,9 @@ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" }, "builtin-modules": { "version": "1.1.1", @@ -3206,7 +3340,7 @@ "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", "requires": { - "long": "3.2.0" + "long": "~3" }, "dependencies": { "long": { @@ -3221,15 +3355,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "cacheable-request": { @@ -3261,9 +3395,9 @@ "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" }, "dependencies": { "md5-hex": { @@ -3272,7 +3406,7 @@ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "write-file-atomic": { @@ -3281,9 +3415,9 @@ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } } } @@ -3294,10 +3428,10 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.6", - "deep-equal": "1.0.1", - "espurify": "1.8.0", - "estraverse": "4.2.0" + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" } }, "call-me-maybe": { @@ -3316,7 +3450,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -3336,8 +3470,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "capture-stack-trace": { @@ -3356,7 +3490,7 @@ "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "dev": true, "requires": { - "underscore-contrib": "0.3.0" + "underscore-contrib": "~0.3.0" } }, "center-align": { @@ -3366,8 +3500,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -3376,9 +3510,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chardet": { @@ -3393,15 +3527,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.4", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -3410,7 +3544,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -3425,7 +3559,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -3447,10 +3581,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -3458,7 +3592,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -3487,7 +3621,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { @@ -3502,8 +3636,8 @@ "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", "dev": true, "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -3524,8 +3658,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -3534,7 +3668,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -3550,9 +3684,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "clone-response": { @@ -3561,7 +3695,7 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "co": { @@ -3575,7 +3709,7 @@ "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", "dev": true, "requires": { - "pinkie-promise": "1.0.0" + "pinkie-promise": "^1.0.0" } }, "code-excerpt": { @@ -3584,7 +3718,7 @@ "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", "dev": true, "requires": { - "convert-to-spaces": "1.0.2" + "convert-to-spaces": "^1.0.1" } }, "code-point-at": { @@ -3599,7 +3733,7 @@ "dev": true, "requires": { "argv": "0.0.2", - "request": "2.87.0", + "request": "^2.81.0", "urlgrey": "0.4.4" } }, @@ -3608,8 +3742,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -3618,7 +3752,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -3643,7 +3777,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -3679,10 +3813,10 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "concordance": { @@ -3691,17 +3825,17 @@ "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", "dev": true, "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.2", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "semver": "5.5.0", - "well-known-symbols": "1.0.0" + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" }, "dependencies": { "date-time": { @@ -3710,7 +3844,7 @@ "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", "dev": true, "requires": { - "time-zone": "1.0.0" + "time-zone": "^1.0.0" } } } @@ -3721,12 +3855,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "convert-source-map": { @@ -3742,9 +3876,9 @@ "dev": true }, "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, "copy-descriptor": { @@ -3758,14 +3892,14 @@ "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", "dev": true, "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" } }, "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" }, "core-util-is": { "version": "1.0.2", @@ -3777,7 +3911,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { @@ -3786,9 +3920,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-random-string": { @@ -3803,7 +3937,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "d": { @@ -3812,7 +3946,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.42" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -3820,7 +3954,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "date-time": { @@ -3853,7 +3987,7 @@ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "deep-equal": { @@ -3863,9 +3997,9 @@ "dev": true }, "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "deep-is": { @@ -3880,7 +4014,7 @@ "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", "dev": true, "requires": { - "core-assert": "0.2.1" + "core-assert": "^0.2.0" } }, "define-properties": { @@ -3888,8 +4022,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "define-property": { @@ -3897,8 +4031,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -3906,7 +4040,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -3914,7 +4048,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -3922,9 +4056,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -3935,13 +4069,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" }, "dependencies": { "globby": { @@ -3950,12 +4084,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -3976,7 +4110,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } } } @@ -3992,7 +4126,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "diff": { @@ -4011,8 +4145,8 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" + "arrify": "^1.0.1", + "path-type": "^3.0.0" } }, "doctrine": { @@ -4021,7 +4155,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "dom-serializer": { @@ -4030,8 +4164,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -4054,7 +4188,7 @@ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -4063,8 +4197,8 @@ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dot-prop": { @@ -4073,7 +4207,7 @@ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer3": { @@ -4087,10 +4221,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "eastasianwidth": { @@ -4104,7 +4238,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ecdsa-sig-formatter": { @@ -4112,7 +4246,7 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "empower": { @@ -4120,8 +4254,8 @@ "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", "requires": { - "core-js": "2.5.6", - "empower-core": "0.6.2" + "core-js": "^2.0.0", + "empower-core": "^0.6.2" } }, "empower-assert": { @@ -4130,7 +4264,7 @@ "integrity": "sha512-Ylck0Q6p8y/LpNzYeBccaxAPm2ZyuqBgErgZpO9KT0HuQWF0sJckBKCLmgS1/DEXEiyBi9XtYh3clZm5cAdARw==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.2.0" } }, "empower-core": { @@ -4139,7 +4273,7 @@ "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", "requires": { "call-signature": "0.0.2", - "core-js": "2.5.6" + "core-js": "^2.0.0" } }, "end-of-stream": { @@ -4147,7 +4281,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "ent": { @@ -4173,18 +4307,18 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, "es6-error": { @@ -4199,9 +4333,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -4210,12 +4344,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, "es6-set": { @@ -4224,11 +4358,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -4237,8 +4371,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -4247,10 +4381,10 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escallmatch": { @@ -4259,8 +4393,8 @@ "integrity": "sha1-UAmdhugJGwkt+N37w/mm+wWgJNA=", "dev": true, "requires": { - "call-matcher": "1.0.1", - "esprima": "2.7.3" + "call-matcher": "^1.0.0", + "esprima": "^2.0.0" }, "dependencies": { "esprima": { @@ -4283,11 +4417,11 @@ "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" }, "dependencies": { "esprima": { @@ -4311,10 +4445,10 @@ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint": { @@ -4323,44 +4457,44 @@ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.4.1", - "concat-stream": "1.6.2", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.4", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "regexpp": "1.1.0", - "require-uncached": "1.0.3", - "semver": "5.5.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", "table": "4.0.2", - "text-table": "0.2.0" + "text-table": "~0.2.0" }, "dependencies": { "ansi-regex": { @@ -4381,7 +4515,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -4392,7 +4526,7 @@ "integrity": "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", "dev": true, "requires": { - "get-stdin": "5.0.1" + "get-stdin": "^5.0.1" }, "dependencies": { "get-stdin": { @@ -4409,10 +4543,10 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.8", - "minimatch": "3.0.4", - "resolve": "1.7.1", - "semver": "5.5.0" + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" }, "dependencies": { "resolve": { @@ -4421,7 +4555,7 @@ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } } } @@ -4432,8 +4566,8 @@ "integrity": "sha512-floiaI4F7hRkTrFe8V2ItOK97QYrX75DjmdzmVITZoAP6Cn06oEDPQRsO6MlHEP/u2SxI3xQ52Kpjw6j5WGfeQ==", "dev": true, "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.2.0" + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" } }, "eslint-scope": { @@ -4442,8 +4576,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { @@ -4458,16 +4592,16 @@ "integrity": "sha512-F4TY1qYJB1aUyzB03NsZksZzUQmQoEBaTUjRJGR30GxbkbjKI41NhCyYjrF+bGgWN7x/ZsczYppRpz/0WdI0ug==", "dev": true, "requires": { - "array-find": "1.0.0", - "escallmatch": "1.5.0", - "escodegen": "1.9.1", - "escope": "3.6.0", - "espower-location-detector": "1.0.0", - "espurify": "1.8.0", - "estraverse": "4.2.0", - "source-map": "0.5.7", - "type-name": "2.0.2", - "xtend": "4.0.1" + "array-find": "^1.0.0", + "escallmatch": "^1.5.0", + "escodegen": "^1.7.0", + "escope": "^3.3.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.3.0", + "estraverse": "^4.1.0", + "source-map": "^0.5.0", + "type-name": "^2.0.0", + "xtend": "^4.0.0" } }, "espower-loader": { @@ -4476,11 +4610,11 @@ "integrity": "sha1-7bRsPFmga6yOpzppXIblxaC8gto=", "dev": true, "requires": { - "convert-source-map": "1.5.1", - "espower-source": "2.2.0", - "minimatch": "3.0.4", - "source-map-support": "0.4.18", - "xtend": "4.0.1" + "convert-source-map": "^1.1.0", + "espower-source": "^2.0.0", + "minimatch": "^3.0.0", + "source-map-support": "^0.4.0", + "xtend": "^4.0.0" }, "dependencies": { "source-map-support": { @@ -4489,7 +4623,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -4500,10 +4634,10 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.4", - "path-is-absolute": "1.0.1", - "source-map": "0.5.7", - "xtend": "4.0.1" + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" } }, "espower-source": { @@ -4512,23 +4646,23 @@ "integrity": "sha1-fgBSVa5HtcE2RIZEs/PYAtUD91I=", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-es7-plugin": "1.1.7", - "convert-source-map": "1.5.1", - "empower-assert": "1.1.0", - "escodegen": "1.9.1", - "espower": "2.1.1", - "estraverse": "4.2.0", - "merge-estraverse-visitors": "1.0.0", - "multi-stage-sourcemap": "0.2.1", - "path-is-absolute": "1.0.1", - "xtend": "4.0.1" + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.10", + "convert-source-map": "^1.1.1", + "empower-assert": "^1.0.0", + "escodegen": "^1.6.1", + "espower": "^2.0.0", + "estraverse": "^4.0.0", + "merge-estraverse-visitors": "^1.0.0", + "multi-stage-sourcemap": "^0.2.1", + "path-is-absolute": "^1.0.0", + "xtend": "^4.0.0" }, "dependencies": { "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", + "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", "dev": true } } @@ -4539,14 +4673,14 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", + "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", "dev": true } } @@ -4562,7 +4696,7 @@ "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", "requires": { - "core-js": "2.5.6" + "core-js": "^2.0.0" } }, "esquery": { @@ -4571,7 +4705,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -4580,7 +4714,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -4600,8 +4734,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "execa": { @@ -4610,13 +4744,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "expand-brackets": { @@ -4624,13 +4758,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "debug": { @@ -4646,7 +4780,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -4654,7 +4788,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -4665,7 +4799,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.4" + "fill-range": "^2.1.0" }, "dependencies": { "fill-range": { @@ -4674,11 +4808,11 @@ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "is-number": { @@ -4687,7 +4821,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "isobject": { @@ -4705,7 +4839,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4720,8 +4854,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -4729,7 +4863,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -4740,9 +4874,9 @@ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.23", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { @@ -4750,14 +4884,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -4765,7 +4899,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -4773,7 +4907,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -4781,7 +4915,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4789,7 +4923,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4797,9 +4931,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -4825,12 +4959,12 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.0.2", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.2", - "micromatch": "3.1.10" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" } }, "fast-json-stable-stringify": { @@ -4850,7 +4984,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -4859,8 +4993,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "filename-regex": { @@ -4875,8 +5009,8 @@ "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" } }, "fill-range": { @@ -4884,10 +5018,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -4895,7 +5029,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -4906,9 +5040,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, "find-up": { @@ -4917,7 +5051,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -4926,10 +5060,10 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "fn-name": { @@ -4943,7 +5077,7 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", "requires": { - "debug": "3.1.0" + "debug": "^3.1.0" } }, "for-in": { @@ -4957,7 +5091,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreach": { @@ -4975,9 +5109,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "formidable": { @@ -4991,7 +5125,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "from2": { @@ -5000,8 +5134,8 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-extra": { @@ -5010,9 +5144,9 @@ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs.realpath": { @@ -5027,8 +5161,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.10.0" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { @@ -5054,8 +5188,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -5068,7 +5202,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -5132,7 +5266,7 @@ "dev": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "fs.realpath": { @@ -5147,14 +5281,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { @@ -5163,12 +5297,12 @@ "dev": true, "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { @@ -5183,7 +5317,7 @@ "dev": true, "optional": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" } }, "ignore-walk": { @@ -5192,7 +5326,7 @@ "dev": true, "optional": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflight": { @@ -5201,8 +5335,8 @@ "dev": true, "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -5221,7 +5355,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "isarray": { @@ -5235,7 +5369,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -5248,8 +5382,8 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, "minizlib": { @@ -5258,7 +5392,7 @@ "dev": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -5281,9 +5415,9 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "node-pre-gyp": { @@ -5292,16 +5426,16 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nopt": { @@ -5310,8 +5444,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { @@ -5326,8 +5460,8 @@ "dev": true, "optional": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { @@ -5336,10 +5470,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -5358,7 +5492,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -5379,8 +5513,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -5401,10 +5535,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -5421,13 +5555,13 @@ "dev": true, "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { @@ -5436,7 +5570,7 @@ "dev": true, "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -5479,9 +5613,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -5490,7 +5624,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -5498,7 +5632,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -5513,13 +5647,13 @@ "dev": true, "optional": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, "util-deprecate": { @@ -5534,7 +5668,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -5566,8 +5700,8 @@ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", "requires": { - "axios": "0.18.0", - "extend": "3.0.1", + "axios": "^0.18.0", + "extend": "^3.0.1", "retry-axios": "0.3.2" } }, @@ -5605,7 +5739,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -5613,12 +5747,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -5627,8 +5761,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -5637,7 +5771,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -5652,7 +5786,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -5662,8 +5796,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -5671,7 +5805,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -5687,7 +5821,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "globals": { @@ -5701,27 +5835,27 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "fast-glob": "2.2.2", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } }, "google-auth-library": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.5.0.tgz", - "integrity": "sha512-xpibA/hkq4waBcpIkSJg4GiDAqcBWjJee3c47zj7xP3RQ0A9mc8MP3Vc9sc8SGRoDYA0OszZxTjW7SbcC4pJIA==", - "requires": { - "axios": "0.18.0", - "gcp-metadata": "0.6.3", - "gtoken": "2.3.0", - "jws": "3.1.5", - "lodash.isstring": "4.0.1", - "lru-cache": "4.1.3", - "retry-axios": "0.3.2" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", + "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", + "requires": { + "axios": "^0.18.0", + "gcp-metadata": "^0.6.3", + "gtoken": "^2.3.0", + "jws": "^3.1.5", + "lodash.isstring": "^4.0.1", + "lru-cache": "^4.1.3", + "retry-axios": "^0.3.2" } }, "google-auto-auth": { @@ -5729,10 +5863,10 @@ "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", "requires": { - "async": "2.6.1", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.5.0", - "request": "2.87.0" + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" } }, "google-gax": { @@ -5740,16 +5874,43 @@ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { - "duplexify": "3.6.0", - "extend": "3.0.1", - "globby": "8.0.1", - "google-auto-auth": "0.10.1", - "google-proto-files": "0.15.1", - "grpc": "1.11.3", - "is-stream-ended": "0.1.4", - "lodash": "4.17.10", - "protobufjs": "6.8.6", - "through2": "2.0.3" + "duplexify": "^3.5.4", + "extend": "^3.0.0", + "globby": "^8.0.0", + "google-auto-auth": "^0.10.0", + "google-proto-files": "^0.15.0", + "grpc": "^1.10.0", + "is-stream-ended": "^0.1.0", + "lodash": "^4.17.2", + "protobufjs": "^6.8.0", + "through2": "^2.0.3" + }, + "dependencies": { + "google-proto-files": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", + "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", + "requires": { + "globby": "^7.1.1", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + } + } + } } }, "google-p12-pem": { @@ -5757,33 +5918,18 @@ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", "requires": { - "node-forge": "0.7.5", - "pify": "3.0.0" + "node-forge": "^0.7.4", + "pify": "^3.0.0" } }, "google-proto-files": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", - "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.0.tgz", + "integrity": "sha512-ZVW1m38l6dJGTqOXuEQnr5VfWxkOsdkDetWGUchq8zXbo3PSVlZU7VQM/YS1pbc/6+mZy3R+xirctVaoLzIhXw==", "requires": { - "globby": "7.1.1", - "power-assert": "1.5.0", - "protobufjs": "6.8.6" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - } + "globby": "^8.0.0", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" } }, "got": { @@ -5792,23 +5938,23 @@ "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", "dev": true, "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" }, "dependencies": { "prepend-http": { @@ -5823,7 +5969,7 @@ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { - "prepend-http": "2.0.0" + "prepend-http": "^2.0.0" } } } @@ -5841,14 +5987,14 @@ "dev": true }, "grpc": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.11.3.tgz", - "integrity": "sha512-7fJ40USpnP7hxGK0uRoEhJz6unA5VUdwInfwAY2rK2+OVxdDJSdTZQ/8/M+1tW68pHZYgHvg2ohvJ+clhW3ANg==", - "requires": { - "lodash": "4.17.10", - "nan": "2.10.0", - "node-pre-gyp": "0.10.0", - "protobufjs": "5.0.3" + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.2.tgz", + "integrity": "sha512-oDrW7TPuP+u9+RboUx8XupS1GOPCdLSmldyMHmlaB5wu38nOzzyDxzLsmleROw5/0XyfyuwsmFX6UUr7FaXN2w==", + "requires": { + "lodash": "^4.17.5", + "nan": "^2.0.0", + "node-pre-gyp": "^0.10.0", + "protobufjs": "^5.0.3" }, "dependencies": { "abbrev": { @@ -5867,8 +6013,8 @@ "version": "1.1.4", "bundled": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -5879,7 +6025,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -5926,7 +6072,7 @@ "version": "1.2.5", "bundled": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "fs.realpath": { @@ -5937,26 +6083,26 @@ "version": "2.7.4", "bundled": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { "version": "7.1.2", "bundled": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { @@ -5964,22 +6110,25 @@ "bundled": true }, "iconv-lite": { - "version": "0.4.19", - "bundled": true + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "ignore-walk": { "version": "3.0.1", "bundled": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -5994,7 +6143,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "isarray": { @@ -6005,7 +6154,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -6013,18 +6162,18 @@ "bundled": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.3", "bundled": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", "bundled": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -6048,33 +6197,33 @@ "version": "2.2.1", "bundled": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "node-pre-gyp": { "version": "0.10.0", "bundled": true, "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.1", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.2" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nopt": { "version": "4.0.1", "bundled": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { @@ -6085,18 +6234,18 @@ "version": "1.1.10", "bundled": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { "version": "4.1.2", "bundled": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -6111,7 +6260,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -6126,8 +6275,8 @@ "version": "0.1.5", "bundled": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -6143,44 +6292,48 @@ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", "requires": { - "ascli": "1.0.1", - "bytebuffer": "5.0.1", - "glob": "7.1.2", - "yargs": "3.32.0" + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" } }, "rc": { "version": "1.2.7", "bundled": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "readable-stream": { "version": "2.3.6", "bundled": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { "version": "2.6.2", "bundled": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", "bundled": true }, "sax": { @@ -6203,23 +6356,23 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -6227,22 +6380,16 @@ "bundled": true }, "tar": { - "version": "4.4.2", + "version": "4.4.3", "bundled": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" } }, "util-deprecate": { @@ -6253,7 +6400,7 @@ "version": "1.1.2", "bundled": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -6271,11 +6418,11 @@ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", "requires": { - "axios": "0.18.0", - "google-p12-pem": "1.0.2", - "jws": "3.1.5", - "mime": "2.3.1", - "pify": "3.0.0" + "axios": "^0.18.0", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.4", + "mime": "^2.2.0", + "pify": "^3.0.0" } }, "handlebars": { @@ -6284,10 +6431,10 @@ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "async": { @@ -6302,7 +6449,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -6317,8 +6464,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -6327,7 +6474,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-color": { @@ -6354,7 +6501,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "has-value": { @@ -6362,9 +6509,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -6372,8 +6519,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { @@ -6381,7 +6528,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6404,8 +6551,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { @@ -6420,12 +6567,12 @@ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.7.0", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-cache-semantics": { @@ -6439,9 +6586,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "hullabaloo-config-manager": { @@ -6450,20 +6597,20 @@ "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.1.1", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" + "dot-prop": "^4.1.0", + "es6-error": "^4.0.2", + "graceful-fs": "^4.1.11", + "indent-string": "^3.1.0", + "json5": "^0.5.1", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "pkg-dir": "^2.0.0", + "resolve-from": "^3.0.0", + "safe-buffer": "^5.0.1" } }, "iconv-lite": { @@ -6472,7 +6619,7 @@ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore": { @@ -6498,8 +6645,8 @@ "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", "dev": true, "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" } }, "imurmurhash": { @@ -6524,8 +6671,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6545,8 +6692,8 @@ "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", "dev": true, "requires": { - "moment": "2.22.1", - "sanitize-html": "1.18.2" + "moment": "^2.14.1", + "sanitize-html": "^1.13.0" } }, "inquirer": { @@ -6555,20 +6702,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.10", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -6589,8 +6736,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -6599,7 +6746,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -6610,7 +6757,7 @@ "integrity": "sha1-LHsDFGvB1GvyENCgOXxckatMorA=", "dev": true, "requires": { - "espower-loader": "1.2.2" + "espower-loader": "^1.0.0" } }, "into-stream": { @@ -6619,8 +6766,8 @@ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "dev": true, "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" } }, "invariant": { @@ -6629,7 +6776,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -6653,7 +6800,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6661,7 +6808,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6678,7 +6825,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -6692,7 +6839,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-ci": { @@ -6701,7 +6848,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.3" + "ci-info": "^1.0.0" } }, "is-data-descriptor": { @@ -6709,7 +6856,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6717,7 +6864,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6727,9 +6874,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -6751,7 +6898,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-error": { @@ -6776,7 +6923,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -6784,7 +6931,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-generator-fn": { @@ -6798,7 +6945,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -6807,8 +6954,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { @@ -6822,7 +6969,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6830,7 +6977,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6853,7 +7000,7 @@ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "1.2.0" + "symbol-observable": "^1.1.0" } }, "is-odd": { @@ -6861,7 +7008,7 @@ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -6883,7 +7030,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -6892,7 +7039,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -6906,7 +7053,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -6999,14 +7146,35 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "istanbul-lib-coverage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", + "integrity": "sha512-yMSw5xLIbdaxiVXHk3amfNM2WeBxLrwH/BCyZ9HvA/fylwziAIJOG2rKqWyLqEJqwKT725vxxqidv+SyynnGAA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.0.tgz", + "integrity": "sha512-ozQGtlIw+/a/F3n6QwWiuuyRAPp64+g2GVsKYsIez0sgIEzkU5ZpL2uZ5pmAzbEJ82anlRaPlOQZzkRXspgJyg==", + "dev": true, + "requires": { + "@babel/generator": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "istanbul-lib-coverage": "^2.0.0", + "semver": "^5.5.0" + } + }, "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "dev": true, "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "jest-docblock": { @@ -7028,13 +7196,13 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "js2xmlparser": { @@ -7043,7 +7211,7 @@ "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", "dev": true, "requires": { - "xmlcreate": "1.0.2" + "xmlcreate": "^1.0.1" } }, "jsbn": { @@ -7059,17 +7227,17 @@ "dev": true, "requires": { "babylon": "7.0.0-beta.19", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.19", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", "taffydb": "2.6.2", - "underscore": "1.8.3" + "underscore": "~1.8.3" }, "dependencies": { "babylon": { @@ -7131,7 +7299,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsprim": { @@ -7158,7 +7326,7 @@ "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "jws": { @@ -7166,8 +7334,8 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", "requires": { - "jwa": "1.1.6", - "safe-buffer": "5.1.2" + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" } }, "keyv": { @@ -7190,7 +7358,7 @@ "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "last-line-stream": { @@ -7199,7 +7367,7 @@ "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", "dev": true, "requires": { - "through2": "2.0.3" + "through2": "^2.0.0" } }, "latest-version": { @@ -7208,7 +7376,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -7223,7 +7391,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "levn": { @@ -7232,8 +7400,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { @@ -7242,10 +7410,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { "pify": { @@ -7262,8 +7430,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -7347,9 +7515,9 @@ "dev": true }, "lolex": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", - "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", + "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", "dev": true }, "long": { @@ -7369,7 +7537,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "loud-rejection": { @@ -7378,8 +7546,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lowercase-keys": { @@ -7393,8 +7561,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -7403,7 +7571,7 @@ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "map-cache": { @@ -7422,7 +7590,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "marked": { @@ -7432,12 +7600,12 @@ "dev": true }, "matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", - "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.4" } }, "math-random": { @@ -7452,7 +7620,7 @@ "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -7467,7 +7635,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "meow": { @@ -7476,16 +7644,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" }, "dependencies": { "find-up": { @@ -7494,8 +7662,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "load-json-file": { @@ -7504,11 +7672,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "minimist": { @@ -7523,7 +7691,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -7532,9 +7700,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -7555,7 +7723,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "read-pkg": { @@ -7564,9 +7732,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -7575,8 +7743,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "strip-bom": { @@ -7585,7 +7753,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -7602,7 +7770,7 @@ "integrity": "sha1-65aDOLXe1c7tgs7AMH3sui2OqZQ=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "merge2": { @@ -7621,19 +7789,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "mime": { @@ -7651,7 +7819,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-fn": { @@ -7671,7 +7839,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -7685,8 +7853,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -7694,7 +7862,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -7734,9 +7902,9 @@ "dev": true }, "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", "dev": true }, "ms": { @@ -7750,7 +7918,7 @@ "integrity": "sha1-sJ/IWG6qF/gdV1xK0C4Pej9rEQU=", "dev": true, "requires": { - "source-map": "0.1.43" + "source-map": "^0.1.34" }, "dependencies": { "source-map": { @@ -7759,7 +7927,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -7770,10 +7938,10 @@ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "mute-stream": { @@ -7792,18 +7960,18 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "natural-compare": { @@ -7819,16 +7987,16 @@ "dev": true }, "nise": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", - "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.1.tgz", + "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" } }, "node-forge": { @@ -7842,10 +8010,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -7854,7 +8022,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-url": { @@ -7863,9 +8031,9 @@ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "dev": true, "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.1", - "sort-keys": "2.0.0" + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" }, "dependencies": { "prepend-http": { @@ -7882,7 +8050,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -7891,38 +8059,38 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.8.0.tgz", - "integrity": "sha512-PUFq1PSsx5OinSk5g5aaZygcDdI3QQT5XUlbR9QRMihtMS6w0Gm8xj4BxmKeeAlpQXC5M2DIhH16Y+KejceivQ==", - "dev": true, - "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", - "md5-hex": "1.3.0", - "merge-source-map": "1.1.0", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.2.1", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", + "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^2.1.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.5", + "istanbul-reports": "^1.4.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", "yargs": "11.1.0", - "yargs-parser": "8.1.0" + "yargs-parser": "^8.0.0" }, "dependencies": { "align-text": { @@ -7930,9 +8098,9 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -7941,12 +8109,7 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", + "version": "3.0.0", "bundled": true, "dev": true }, @@ -7955,7 +8118,7 @@ "bundled": true, "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "archy": { @@ -8003,92 +8166,6 @@ "bundled": true, "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, "balanced-match": { "version": "1.0.0", "bundled": true, @@ -8099,13 +8176,13 @@ "bundled": true, "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -8113,7 +8190,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -8121,7 +8198,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8129,7 +8206,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8137,16 +8214,11 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, "kind-of": { "version": "6.0.2", "bundled": true, @@ -8159,7 +8231,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -8168,16 +8240,16 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -8185,7 +8257,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8200,22 +8272,15 @@ "bundled": true, "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "caching-transform": { @@ -8223,9 +8288,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" } }, "camelcase": { @@ -8240,20 +8305,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "class-utils": { @@ -8261,10 +8314,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -8272,13 +8325,8 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true } } }, @@ -8288,8 +8336,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -8311,8 +8359,8 @@ "bundled": true, "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "commondir": { @@ -8340,22 +8388,17 @@ "bundled": true, "dev": true }, - "core-js": { - "version": "2.5.6", - "bundled": true, - "dev": true - }, "cross-spawn": { "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.3", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "debug": { - "version": "2.6.9", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { @@ -8382,7 +8425,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" } }, "define-property": { @@ -8390,8 +8433,8 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -8399,7 +8442,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8407,7 +8450,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8415,16 +8458,11 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, "kind-of": { "version": "6.0.2", "bundled": true, @@ -8432,44 +8470,26 @@ } } }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, "error-ex": { "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, "execa": { "version": "0.7.0", "bundled": true, "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { "cross-spawn": { @@ -8477,9 +8497,9 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -8489,21 +8509,29 @@ "bundled": true, "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -8511,7 +8539,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8521,8 +8549,8 @@ "bundled": true, "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -8530,7 +8558,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -8540,14 +8568,14 @@ "bundled": true, "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -8555,7 +8583,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -8563,7 +8591,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -8571,7 +8599,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8579,7 +8607,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8587,9 +8615,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -8604,10 +8632,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -8615,7 +8643,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8625,9 +8653,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -8635,7 +8663,7 @@ "bundled": true, "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -8648,8 +8676,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, "fragment-cache": { @@ -8657,7 +8685,7 @@ "bundled": true, "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fs.realpath": { @@ -8685,19 +8713,14 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, "graceful-fs": { "version": "4.1.11", "bundled": true, @@ -8708,10 +8731,10 @@ "bundled": true, "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { @@ -8719,74 +8742,36 @@ "bundled": true, "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } }, - "has-ansi": { - "version": "2.0.0", + "has-value": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "has-value": { + "has-values": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", + "kind-of": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8806,8 +8791,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -8815,14 +8800,6 @@ "bundled": true, "dev": true }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, "invert-kv": { "version": "1.0.0", "bundled": true, @@ -8833,7 +8810,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-arrayish": { @@ -8851,7 +8828,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-data-descriptor": { @@ -8859,7 +8836,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -8867,9 +8844,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -8884,14 +8861,6 @@ "bundled": true, "dev": true }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true, @@ -8902,7 +8871,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-odd": { @@ -8910,7 +8879,7 @@ "bundled": true, "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -8925,14 +8894,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "isobject": "^3.0.1" } }, "is-stream": { @@ -8975,21 +8937,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-report": { @@ -8997,68 +8945,53 @@ "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "supports-color": { "version": "3.2.3", "bundled": true, "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } }, "istanbul-lib-source-maps": { - "version": "1.2.3", + "version": "1.2.5", "bundled": true, "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" } }, "istanbul-reports": { - "version": "1.4.0", + "version": "1.4.1", "bundled": true, "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, "kind-of": { "version": "3.2.2", "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -9072,7 +9005,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -9080,11 +9013,11 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -9092,8 +9025,8 @@ "bundled": true, "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -9103,31 +9036,18 @@ } } }, - "lodash": { - "version": "4.17.10", - "bundled": true, - "dev": true - }, "longest": { "version": "1.0.1", "bundled": true, "dev": true }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, "lru-cache": { "version": "4.1.3", "bundled": true, "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "map-cache": { @@ -9140,7 +9060,7 @@ "bundled": true, "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "md5-hex": { @@ -9148,7 +9068,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -9161,7 +9081,7 @@ "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "merge-source-map": { @@ -9169,7 +9089,7 @@ "bundled": true, "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -9184,19 +9104,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { "kind-of": { @@ -9216,7 +9136,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -9229,8 +9149,8 @@ "bundled": true, "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -9238,7 +9158,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -9261,30 +9181,20 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, "kind-of": { "version": "6.0.2", "bundled": true, @@ -9297,10 +9207,10 @@ "bundled": true, "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "npm-run-path": { @@ -9308,7 +9218,7 @@ "bundled": true, "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -9326,9 +9236,9 @@ "bundled": true, "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -9336,7 +9246,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -9346,14 +9256,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "isobject": "^3.0.0" } }, "object.pick": { @@ -9361,14 +9264,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "isobject": "^3.0.1" } }, "once": { @@ -9376,7 +9272,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optimist": { @@ -9384,8 +9280,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "os-homedir": { @@ -9398,9 +9294,9 @@ "bundled": true, "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -9413,7 +9309,7 @@ "bundled": true, "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -9421,7 +9317,7 @@ "bundled": true, "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -9434,7 +9330,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "pascalcase": { @@ -9447,7 +9343,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -9470,9 +9366,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -9490,7 +9386,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -9498,7 +9394,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" }, "dependencies": { "find-up": { @@ -9506,8 +9402,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -9527,9 +9423,9 @@ "bundled": true, "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -9537,8 +9433,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -9546,24 +9442,19 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, "regex-not": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "repeat-element": { @@ -9576,14 +9467,6 @@ "bundled": true, "dev": true }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, "require-directory": { "version": "2.1.1", "bundled": true, @@ -9615,7 +9498,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -9623,7 +9506,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-regex": { @@ -9631,7 +9514,7 @@ "bundled": true, "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "semver": { @@ -9649,10 +9532,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -9660,7 +9543,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9670,7 +9553,7 @@ "bundled": true, "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -9693,22 +9576,30 @@ "bundled": true, "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -9716,7 +9607,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -9726,9 +9617,9 @@ "bundled": true, "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -9736,7 +9627,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -9744,7 +9635,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -9752,7 +9643,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -9760,16 +9651,11 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, "kind-of": { "version": "6.0.2", "bundled": true, @@ -9782,7 +9668,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "source-map": { @@ -9791,15 +9677,15 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.1", + "version": "0.5.2", "bundled": true, "dev": true, "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-url": { @@ -9812,12 +9698,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, "spdx-correct": { @@ -9825,8 +9711,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -9839,8 +9725,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -9853,7 +9739,7 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "static-extend": { @@ -9861,8 +9747,8 @@ "bundled": true, "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -9870,7 +9756,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -9880,31 +9766,16 @@ "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { - "version": "3.0.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -9912,7 +9783,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-eof": { @@ -9920,284 +9791,24 @@ "bundled": true, "dev": true }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "test-exclude": { "version": "4.2.1", "bundled": true, "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.10", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, "to-object-path": { "version": "0.3.0", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -10205,10 +9816,10 @@ "bundled": true, "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -10216,34 +9827,19 @@ "bundled": true, "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - } + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "uglify-js": { "version": "2.8.29", "bundled": true, "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -10252,9 +9848,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -10271,10 +9867,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -10282,7 +9878,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -10290,10 +9886,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -10303,8 +9899,8 @@ "bundled": true, "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -10312,9 +9908,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -10331,11 +9927,6 @@ "version": "0.1.4", "bundled": true, "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true } } }, @@ -10349,7 +9940,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -10364,16 +9955,16 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "which": { - "version": "1.3.0", + "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -10397,16 +9988,21 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -10414,9 +10010,17 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" } } } @@ -10431,9 +10035,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "y18n": { @@ -10451,25 +10055,20 @@ "bundled": true, "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, "camelcase": { "version": "4.1.0", "bundled": true, @@ -10480,17 +10079,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "3.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "yargs-parser": { @@ -10498,7 +10089,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -10508,7 +10099,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -10536,9 +10127,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -10546,7 +10137,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "kind-of": { @@ -10554,7 +10145,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -10569,7 +10160,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.omit": { @@ -10578,8 +10169,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -10587,7 +10178,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "observable-to-promise": { @@ -10596,8 +10187,8 @@ "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", "dev": true, "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.2.0" + "is-observable": "^0.2.0", + "symbol-observable": "^1.0.4" }, "dependencies": { "is-observable": { @@ -10606,7 +10197,7 @@ "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "^0.2.2" }, "dependencies": { "symbol-observable": { @@ -10624,7 +10215,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -10633,7 +10224,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -10642,8 +10233,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "option-chain": { @@ -10658,12 +10249,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -10690,7 +10281,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -10718,12 +10309,12 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -10732,7 +10323,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-timeout": { @@ -10741,7 +10332,7 @@ "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "p-try": { @@ -10756,10 +10347,10 @@ "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" } }, "package-json": { @@ -10768,10 +10359,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { "got": { @@ -10780,17 +10371,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } } } @@ -10801,10 +10392,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -10819,7 +10410,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -10830,7 +10421,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse-ms": { @@ -10900,7 +10491,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "performance-now": { @@ -10925,7 +10516,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "1.0.0" + "pinkie": "^1.0.0" } }, "pkg-conf": { @@ -10934,8 +10525,8 @@ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { - "find-up": "2.1.0", - "load-json-file": "4.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "dependencies": { "load-json-file": { @@ -10944,10 +10535,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "parse-json": { @@ -10956,8 +10547,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } } } @@ -10968,7 +10559,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "plur": { @@ -10977,7 +10568,7 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.4.0" + "irregular-plurals": "^1.0.0" } }, "pluralize": { @@ -10997,9 +10588,9 @@ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" }, "dependencies": { "source-map": { @@ -11015,11 +10606,11 @@ "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz", "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==", "requires": { - "define-properties": "1.1.2", - "empower": "1.2.3", - "power-assert-formatter": "1.4.1", - "universal-deep-strict-equal": "1.2.2", - "xtend": "4.0.1" + "define-properties": "^1.1.2", + "empower": "^1.2.3", + "power-assert-formatter": "^1.3.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" } }, "power-assert-context-formatter": { @@ -11027,8 +10618,8 @@ "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", "requires": { - "core-js": "2.5.6", - "power-assert-context-traversal": "1.1.1" + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.1.1" } }, "power-assert-context-reducer-ast": { @@ -11036,11 +10627,11 @@ "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", "requires": { - "acorn": "4.0.13", - "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.6", - "espurify": "1.8.0", - "estraverse": "4.2.0" + "acorn": "^4.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" } }, "power-assert-context-traversal": { @@ -11048,8 +10639,8 @@ "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", "requires": { - "core-js": "2.5.6", - "estraverse": "4.2.0" + "core-js": "^2.0.0", + "estraverse": "^4.1.0" } }, "power-assert-formatter": { @@ -11057,13 +10648,13 @@ "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", "requires": { - "core-js": "2.5.6", - "power-assert-context-formatter": "1.1.1", - "power-assert-context-reducer-ast": "1.1.2", - "power-assert-renderer-assertion": "1.1.1", - "power-assert-renderer-comparison": "1.1.1", - "power-assert-renderer-diagram": "1.1.2", - "power-assert-renderer-file": "1.1.1" + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" } }, "power-assert-renderer-assertion": { @@ -11071,8 +10662,8 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", "requires": { - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1" + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.1.1" } }, "power-assert-renderer-base": { @@ -11085,11 +10676,11 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", "requires": { - "core-js": "2.5.6", - "diff-match-patch": "1.0.1", - "power-assert-renderer-base": "1.1.1", - "stringifier": "1.3.0", - "type-name": "2.0.2" + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" } }, "power-assert-renderer-diagram": { @@ -11097,10 +10688,10 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", "requires": { - "core-js": "2.5.6", - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1", - "stringifier": "1.3.0" + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.1.1", + "stringifier": "^1.3.0" } }, "power-assert-renderer-file": { @@ -11108,7 +10699,7 @@ "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", "requires": { - "power-assert-renderer-base": "1.1.1" + "power-assert-renderer-base": "^1.1.1" } }, "power-assert-util-string-width": { @@ -11116,7 +10707,7 @@ "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", "requires": { - "eastasianwidth": "0.1.1" + "eastasianwidth": "^0.1.1" } }, "prelude-ls": { @@ -11138,19 +10729,18 @@ "dev": true }, "prettier": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", - "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.5.tgz", + "integrity": "sha512-4M90mfvLz6yRf2Dhzd+xPIE6b4xkI8nHMJhsSm9IlfG17g6wujrrm7+H1X8x52tC4cSNm6HmuhCUSNe6Hd5wfw==", "dev": true }, "pretty-ms": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", - "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", + "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", "dev": true, "requires": { - "parse-ms": "1.0.1", - "plur": "2.1.2" + "parse-ms": "^1.0.0" }, "dependencies": { "parse-ms": { @@ -11193,25 +10783,25 @@ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", "requires": { - "@protobufjs/aspromise": "1.1.2", - "@protobufjs/base64": "1.1.2", - "@protobufjs/codegen": "2.0.4", - "@protobufjs/eventemitter": "1.1.0", - "@protobufjs/fetch": "1.1.0", - "@protobufjs/float": "1.0.2", - "@protobufjs/inquire": "1.1.0", - "@protobufjs/path": "1.1.2", - "@protobufjs/pool": "1.1.0", - "@protobufjs/utf8": "1.1.0", - "@types/long": "3.0.32", - "@types/node": "8.10.17", - "long": "4.0.0" + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^3.0.32", + "@types/node": "^8.9.4", + "long": "^4.0.0" }, "dependencies": { "@types/node": { - "version": "8.10.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.17.tgz", - "integrity": "sha512-3N3FRd/rA1v5glXjb90YdYUa+sOB7WrkU2rAhKZnF4TKD86Cym9swtulGuH0p9nxo7fP5woRNa8b0oFTpCO1bg==" + "version": "8.10.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", + "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==" } } }, @@ -11221,9 +10811,9 @@ "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==", "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.5.0" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.5.0" }, "dependencies": { "resolve": { @@ -11232,7 +10822,7 @@ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } } } @@ -11258,9 +10848,9 @@ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "dev": true, "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "randomatic": { @@ -11269,9 +10859,9 @@ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -11283,15 +10873,15 @@ } }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -11308,9 +10898,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" }, "dependencies": { "path-type": { @@ -11319,7 +10909,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pify": { @@ -11336,8 +10926,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { @@ -11345,13 +10935,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -11360,10 +10950,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "redent": { @@ -11372,8 +10962,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" }, "dependencies": { "indent-string": { @@ -11382,7 +10972,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } } } @@ -11405,7 +10995,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -11413,8 +11003,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpp": { @@ -11429,9 +11019,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "registry-auth-token": { @@ -11440,8 +11030,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -11450,7 +11040,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.7" + "rc": "^1.0.1" } }, "regjsgen": { @@ -11465,7 +11055,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" } }, "release-zalgo": { @@ -11474,7 +11064,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.1.1" + "es6-error": "^4.0.1" } }, "remove-trailing-separator": { @@ -11499,7 +11089,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -11507,26 +11097,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "require-directory": { @@ -11553,8 +11143,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" }, "dependencies": { "resolve-from": { @@ -11571,7 +11161,7 @@ "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", "dev": true, "requires": { - "underscore": "1.6.0" + "underscore": "~1.6.0" }, "dependencies": { "underscore": { @@ -11594,7 +11184,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-from": { @@ -11614,7 +11204,7 @@ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "1.0.1" + "lowercase-keys": "^1.0.0" } }, "restore-cursor": { @@ -11623,8 +11213,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -11638,12 +11228,12 @@ "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" }, "retry-request": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.1.tgz", - "integrity": "sha512-PjAmtWIxjNj4Co/6FRtBl8afRP3CxrrIAnUzb1dzydfROd+6xt7xAebFeskgQgkfFf8NmzrXIoaB3HxmswXyxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", + "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", "requires": { - "request": "2.87.0", - "through2": "2.0.3" + "request": "^2.81.0", + "through2": "^2.0.0" } }, "right-align": { @@ -11653,7 +11243,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -11662,7 +11252,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "run-async": { @@ -11671,7 +11261,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -11686,7 +11276,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -11699,14 +11289,13 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "samsam": { "version": "1.3.0", @@ -11720,16 +11309,16 @@ "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", "dev": true, "requires": { - "chalk": "2.4.1", - "htmlparser2": "3.9.2", - "lodash.clonedeep": "4.5.0", - "lodash.escaperegexp": "4.1.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mergewith": "4.6.1", - "postcss": "6.0.22", - "srcset": "1.0.0", - "xtend": "4.0.1" + "chalk": "^2.3.0", + "htmlparser2": "^3.9.0", + "lodash.clonedeep": "^4.5.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.mergewith": "^4.6.0", + "postcss": "^6.0.14", + "srcset": "^1.0.0", + "xtend": "^4.0.0" } }, "semver": { @@ -11744,7 +11333,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "serialize-error": { @@ -11770,10 +11359,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -11781,7 +11370,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -11792,7 +11381,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -11808,18 +11397,18 @@ "dev": true }, "sinon": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.0.7.tgz", - "integrity": "sha512-GvNLrwpvLZ8jIMZBUhHGUZDq5wlUdceJWyHvZDmqBxnjazpxY1L0FNbGBX6VpcOEoQ8Q4XMWFzm2myJMvx+VjA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", + "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.5.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "5.4.0", - "type-detect": "4.0.8" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.5.0", + "lodash.get": "^4.4.2", + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } }, "slash": { @@ -11833,7 +11422,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { "is-fullwidth-code-point": { @@ -11855,14 +11444,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "debug": { @@ -11878,7 +11467,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -11886,7 +11475,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -11896,9 +11485,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -11906,7 +11495,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -11914,7 +11503,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -11922,7 +11511,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -11930,9 +11519,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -11942,7 +11531,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { @@ -11950,7 +11539,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11961,7 +11550,7 @@ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-map": { @@ -11974,11 +11563,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -11987,8 +11576,8 @@ "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -12010,8 +11599,8 @@ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -12026,8 +11615,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -12041,7 +11630,7 @@ "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", "requires": { - "is-stream-ended": "0.1.4" + "is-stream-ended": "^0.1.4" } }, "split-string": { @@ -12049,7 +11638,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -12064,23 +11653,24 @@ "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", "dev": true, "requires": { - "array-uniq": "1.0.3", - "number-is-nan": "1.0.1" + "array-uniq": "^1.0.2", + "number-is-nan": "^1.0.0" } }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-utils": { @@ -12094,8 +11684,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -12103,7 +11693,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -12113,7 +11703,7 @@ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", "requires": { - "stubs": "3.0.0" + "stubs": "^3.0.0" } }, "stream-shift": { @@ -12138,9 +11728,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -12148,7 +11738,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "stringifier": { @@ -12156,9 +11746,9 @@ "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", "requires": { - "core-js": "2.5.6", - "traverse": "0.6.6", - "type-name": "2.0.2" + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" } }, "strip-ansi": { @@ -12166,7 +11756,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -12181,7 +11771,7 @@ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.1" } }, "strip-eof": { @@ -12196,7 +11786,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -12216,16 +11806,16 @@ "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.1.1", - "debug": "3.1.0", - "extend": "3.0.1", - "form-data": "2.3.2", - "formidable": "1.2.1", - "methods": "1.1.2", - "mime": "1.6.0", - "qs": "6.5.2", - "readable-stream": "2.3.6" + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" }, "dependencies": { "mime": { @@ -12242,11 +11832,11 @@ "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", "dev": true, "requires": { - "arrify": "1.0.1", - "indent-string": "3.2.0", - "js-yaml": "3.11.0", - "serialize-error": "2.1.0", - "strip-ansi": "4.0.0" + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -12261,7 +11851,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -12272,8 +11862,8 @@ "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", "dev": true, "requires": { - "methods": "1.1.2", - "superagent": "3.8.3" + "methods": "~1.1.2", + "superagent": "^3.0.0" } }, "supports-color": { @@ -12282,7 +11872,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" }, "dependencies": { "has-flag": { @@ -12305,12 +11895,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -12331,8 +11921,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -12341,7 +11931,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -12358,7 +11948,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-encoding": { @@ -12384,8 +11974,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "time-zone": { @@ -12406,7 +11996,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-fast-properties": { @@ -12420,7 +12010,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12428,7 +12018,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12438,10 +12028,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -12449,8 +12039,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "tough-cookie": { @@ -12458,7 +12048,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "traverse": { @@ -12489,7 +12079,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -12504,7 +12094,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -12530,9 +12120,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -12549,8 +12139,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -12575,9 +12165,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -12624,10 +12214,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -12635,7 +12225,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -12643,10 +12233,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -12657,7 +12247,7 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unique-temp-dir": { @@ -12666,8 +12256,8 @@ "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", "dev": true, "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", + "mkdirp": "^0.5.1", + "os-tmpdir": "^1.0.1", "uid2": "0.0.3" } }, @@ -12676,9 +12266,9 @@ "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", "requires": { - "array-filter": "1.0.0", + "array-filter": "^1.0.0", "indexof": "0.0.1", - "object-keys": "1.0.11" + "object-keys": "^1.0.0" } }, "universalify": { @@ -12692,8 +12282,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -12701,9 +12291,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -12735,16 +12325,16 @@ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "urix": { @@ -12758,7 +12348,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "url-to-options": { @@ -12778,7 +12368,7 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" } }, "util-deprecate": { @@ -12797,8 +12387,8 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "verror": { @@ -12806,9 +12396,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "well-known-symbols": { @@ -12818,12 +12408,12 @@ "dev": true }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -12838,7 +12428,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -12859,8 +12449,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -12869,7 +12459,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -12890,8 +12480,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -12905,7 +12495,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -12914,9 +12504,9 @@ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "write-json-file": { @@ -12925,12 +12515,12 @@ "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", "dev": true, "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "pify": "3.0.0", - "sort-keys": "2.0.0", - "write-file-atomic": "2.3.0" + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" }, "dependencies": { "detect-indent": { @@ -12942,13 +12532,13 @@ } }, "write-pkg": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", - "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", "dev": true, "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.3.0" + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" } }, "xdg-basedir": { @@ -12983,13 +12573,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } }, "yargs-parser": { @@ -12998,7 +12588,7 @@ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 3fe87aac609..fc3e91719c3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,41 +62,41 @@ "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --timeout 600000" }, "dependencies": { - "@google-cloud/common": "^0.18.6", - "arrify": "^1.0.0", - "concat-stream": "^1.5.0", + "@google-cloud/common": "^0.19.2", + "arrify": "^1.0.1", + "concat-stream": "^1.6.2", "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auto-auth": "^0.10.1", - "google-gax": "^0.16.0", - "google-proto-files": "^0.15.0", - "is": "^3.0.1", - "lodash.flatten": "^4.2.0", - "lodash.merge": "^4.6.0", + "google-gax": "^0.16.1", + "google-proto-files": "^0.16.0", + "is": "^3.2.1", + "lodash.flatten": "^4.4.0", + "lodash.merge": "^4.6.1", "prop-assign": "^1.0.0", - "propprop": "^0.3.0", - "safe-buffer": "^5.1.1", + "propprop": "^0.3.1", + "safe-buffer": "^5.1.2", "split-array-stream": "^2.0.0", - "stream-events": "^1.0.2", + "stream-events": "^1.0.4", "through2": "^2.0.3" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^2.2.3", - "async": "^2.6.0", - "codecov": "^3.0.0", + "@google-cloud/nodejs-repo-tools": "^2.3.0", + "async": "^2.6.1", + "codecov": "^3.0.2", "deep-strict-equal": "^0.2.0", - "eslint": "^4.10.0", - "eslint-config-prettier": "^2.7.0", - "eslint-plugin-node": "^6.0.0", - "eslint-plugin-prettier": "^2.3.1", + "eslint": "^4.19.1", + "eslint-config-prettier": "^2.9.0", + "eslint-plugin-node": "^6.0.1", + "eslint-plugin-prettier": "^2.6.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", - "mocha": "^5.0.0", + "mocha": "^5.2.0", "nyc": "^12.0.2", - "power-assert": "^1.4.4", - "prettier": "^1.9.2", - "proxyquire": "^2.0.0", - "sinon": "^5.0.7" + "power-assert": "^1.5.0", + "prettier": "^1.13.5", + "proxyquire": "^2.0.1", + "sinon": "^5.1.1" } } diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 7d71c813475..4eb9614ac5c 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -16,18 +16,18 @@ "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" + "babel-plugin-check-es2015-constants": "^6.8.0", + "babel-plugin-syntax-trailing-function-commas": "^6.20.0", + "babel-plugin-transform-async-to-generator": "^6.16.0", + "babel-plugin-transform-es2015-destructuring": "^6.19.0", + "babel-plugin-transform-es2015-function-name": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", + "babel-plugin-transform-es2015-parameters": "^6.21.0", + "babel-plugin-transform-es2015-spread": "^6.8.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", + "babel-plugin-transform-exponentiation-operator": "^6.8.0", + "package-hash": "^1.2.0" }, "dependencies": { "md5-hex": { @@ -36,7 +36,7 @@ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "package-hash": { @@ -45,7 +45,7 @@ "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", "dev": true, "requires": { - "md5-hex": "1.3.0" + "md5-hex": "^1.3.0" } } } @@ -56,8 +56,8 @@ "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", "dev": true, "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.4.0" + "@ava/babel-plugin-throws-helper": "^2.0.0", + "babel-plugin-espower": "^2.3.2" } }, "@ava/write-file-atomic": { @@ -66,9 +66,142 @@ "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "@babel/code-frame": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", + "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.49" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", + "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", + "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", + "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", + "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", + "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.49.tgz", + "integrity": "sha1-lE0MW6KBK7FZ7b0iZ0Ov0mUXm9w=", + "dev": true + }, + "@babel/template": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", + "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", + "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + }, + "dependencies": { + "globals": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", + "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@concordance/react": { @@ -77,13950 +210,5040 @@ "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", "dev": true, "requires": { - "arrify": "1.0.1" + "arrify": "^1.0.1" + } + }, + "@google-cloud/common": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.2.tgz", + "integrity": "sha512-GrkaFoj0/oO36pNs4yLmaYhTujuA3i21FdQik99Fd/APix1uhf01VlpJY4lAteTDFLRNkRx6ydEh7OVvmeUHng==", + "requires": { + "array-uniq": "^1.0.3", + "arrify": "^1.0.1", + "concat-stream": "^1.6.0", + "create-error-class": "^3.0.2", + "duplexify": "^3.5.0", + "ent": "^2.2.0", + "extend": "^3.0.1", + "google-auto-auth": "^0.9.0", + "is": "^3.2.0", + "log-driver": "1.2.7", + "methmeth": "^1.1.0", + "modelo": "^4.2.0", + "request": "^2.79.0", + "retry-request": "^3.0.0", + "split-array-stream": "^1.0.0", + "stream-events": "^1.0.1", + "string-format-obj": "^1.1.0", + "through2": "^2.0.3" } }, "@google-cloud/datastore": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/datastore/-/datastore-1.4.0.tgz", + "integrity": "sha512-BwFlXHKnXzaydm9+6fEp5khASZvtYC5W5Pf6VXwwOmFmnFfXImGyFJpNov50tVnUw1qLJ8QiS1VD1iXpDCNLmQ==", + "requires": { + "@google-cloud/common": "^0.16.0", + "arrify": "^1.0.0", + "concat-stream": "^1.5.0", + "create-error-class": "^3.0.2", + "extend": "^3.0.1", + "google-auto-auth": "^0.9.0", + "google-gax": "^0.16.0", + "google-proto-files": "^0.15.0", + "is": "^3.0.1", + "lodash.flatten": "^4.2.0", + "lodash.merge": "^4.6.0", + "prop-assign": "^1.0.0", + "propprop": "^0.3.0", + "safe-buffer": "^5.1.1", + "split-array-stream": "^1.0.0", + "stream-events": "^1.0.2", + "through2": "^2.0.3" + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", + "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", + "dev": true, "requires": { - "@google-cloud/common": "0.18.9", - "arrify": "1.0.1", - "concat-stream": "1.6.2", - "create-error-class": "3.0.2", - "extend": "3.0.1", - "google-auto-auth": "0.10.1", - "google-gax": "0.16.1", - "google-proto-files": "0.15.1", - "is": "3.2.1", - "lodash.flatten": "4.4.0", - "lodash.merge": "4.6.1", - "prop-assign": "1.0.0", - "propprop": "0.3.1", - "safe-buffer": "5.1.2", - "split-array-stream": "2.0.0", - "stream-events": "1.0.4", - "through2": "2.0.3" + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "semver": "^5.5.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" }, "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "bundled": true + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "bundled": true, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" }, "dependencies": { - "md5-hex": { - "version": "1.3.0", + "align-text": { + "version": "0.1.4", "bundled": true, + "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, - "package-hash": { - "version": "1.2.0", + "amdefine": { + "version": "1.0.1", "bundled": true, - "requires": { - "md5-hex": "1.3.0" - } - } - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "bundled": true, - "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.4.0" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "@concordance/react": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arrify": "1.0.1" - } - }, - "@google-cloud/common": { - "version": "0.18.9", - "bundled": true, - "requires": { - "@types/duplexify": "3.5.0", - "@types/request": "2.47.0", - "arrify": "1.0.1", - "axios": "0.18.0", - "duplexify": "3.6.0", - "ent": "2.2.0", - "extend": "3.0.1", - "google-auth-library": "1.5.0", - "is": "3.2.1", - "pify": "3.0.0", - "request": "2.87.0", - "retry-request": "3.3.1", - "split-array-stream": "2.0.0", - "stream-events": "1.0.4" - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.2.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.4.1", - "proxyquire": "1.8.0", - "semver": "5.5.0", - "sinon": "4.3.0", - "string": "3.3.3", - "supertest": "3.0.0", - "yargs": "11.0.0", - "yargs-parser": "9.0.2" - }, - "dependencies": { + "dev": true + }, "ansi-regex": { - "version": "3.0.0", - "bundled": true + "version": "2.1.1", + "bundled": true, + "dev": true }, - "cliui": { - "version": "4.1.0", + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", "bundled": true, + "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "default-require-extensions": "^1.0.0" } }, - "is-fullwidth-code-point": { + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } }, - "lodash": { - "version": "4.17.5", - "bundled": true + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true }, - "nyc": { - "version": "11.4.1", + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", "bundled": true, + "dev": true, "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", - "md5-hex": "1.3.0", - "merge-source-map": "1.0.4", - "micromatch": "2.3.11", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.1.1", - "yargs": "10.0.3", - "yargs-parser": "8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "cliui": { - "version": "2.1.0", + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", "bundled": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "core-js": { - "version": "2.5.3", - "bundled": true - }, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "2.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "execa": { - "version": "0.7.0", + "version": "5.1.0", "bundled": true, + "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "invariant": { - "version": "2.2.2", - "bundled": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "2.1.0", + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", "bundled": true, + "dev": true, "requires": { - "isarray": "1.0.0" + "amdefine": ">=0.0.4" } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "bundled": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "bundled": true, - "requires": { - "babel-generator": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "bundled": true, - "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "bundled": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "bundled": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", "bundled": true, + "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true - } + "has-flag": "^1.0.0" } - }, - "lodash": { - "version": "4.17.4", - "bundled": true - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "loose-envify": { - "version": "1.3.1", + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", "bundled": true, + "dev": true, "requires": { - "js-tokens": "3.0.2" + "ms": "2.0.0" } - }, - "lru-cache": { - "version": "4.1.1", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "bundled": true, - "requires": { - "source-map": "0.5.7" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "mimic-fn": { - "version": "1.1.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.1.0", - "bundled": true - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1" - } - }, + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "find-up": "1.1.2" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "semver": { - "version": "5.4.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true - }, - "string-width": { - "version": "2.1.1", + "version": "3.0.0", "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - }, - "test-exclude": { - "version": "4.1.1", - "bundled": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "10.0.3", - "bundled": true, - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.0.0" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - } - } - }, - "yargs-parser": { - "version": "8.0.0", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } + "dev": true } } }, - "os-locale": { - "version": "2.1.0", + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", "bundled": true, + "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "js-tokens": "^3.0.0" } }, - "proxyquire": { - "version": "1.8.0", + "lru-cache": { + "version": "4.1.1", "bundled": true, + "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "sinon": { - "version": "4.3.0", + "md5-hex": { + "version": "1.3.0", "bundled": true, + "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.5.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "5.4.0", - "type-detect": "4.0.8" + "md5-o-matic": "^0.1.1" } }, - "string-width": { + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "remove-trailing-separator": "^1.0.1" } }, - "strip-ansi": { - "version": "4.0.0", + "npm-run-path": { + "version": "2.0.2", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "3.0.0" + "path-key": "^2.0.0" } }, - "yargs": { - "version": "11.0.0", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", "bundled": true, + "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } - } - } - }, - "@ladjs/time-require": { - "version": "0.1.4", - "bundled": true, - "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true }, - "chalk": { - "version": "0.4.0", + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", "bundled": true, + "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "p-limit": "^1.1.0" } }, - "pretty-ms": { - "version": "0.2.2", + "parse-glob": { + "version": "3.0.4", "bundled": true, + "dev": true, "requires": { - "parse-ms": "0.1.2" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, - "strip-ansi": { - "version": "0.1.1", - "bundled": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.0.2", - "bundled": true - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/base64": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "bundled": true - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "bundled": true, - "requires": { - "@protobufjs/aspromise": "1.1.2", - "@protobufjs/inquire": "1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "bundled": true - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/path": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/pool": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "bundled": true - }, - "@sindresorhus/is": { - "version": "0.7.0", - "bundled": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "bundled": true, - "requires": { - "samsam": "1.3.0" - } - }, - "@types/caseless": { - "version": "0.12.1", - "bundled": true - }, - "@types/duplexify": { - "version": "3.5.0", - "bundled": true, - "requires": { - "@types/node": "10.1.2" - } - }, - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "10.1.2" - } - }, - "@types/long": { - "version": "3.0.32", - "bundled": true - }, - "@types/node": { - "version": "10.1.2", - "bundled": true - }, - "@types/request": { - "version": "2.47.0", - "bundled": true, - "requires": { - "@types/caseless": "0.12.1", - "@types/form-data": "2.2.1", - "@types/node": "10.1.2", - "@types/tough-cookie": "2.3.3" - } - }, - "@types/tough-cookie": { - "version": "2.3.3", - "bundled": true - }, - "acorn": { - "version": "4.0.13", - "bundled": true - }, - "acorn-es7-plugin": { - "version": "1.1.7", - "bundled": true - }, - "acorn-jsx": { - "version": "3.0.1", - "bundled": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "bundled": true - } - } - }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "bundled": true - }, - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", + "parse-json": { + "version": "2.2.0", "bundled": true, + "dev": true, "requires": { - "is-buffer": "1.1.6" + "error-ex": "^1.2.0" } - } - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true }, - "string-width": { - "version": "2.1.1", + "path-exists": { + "version": "2.1.0", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "pinkie-promise": "^2.0.0" } }, - "strip-ansi": { - "version": "4.0.0", + "path-is-absolute": { + "version": "1.0.1", "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "anymatch": { - "version": "1.3.2", - "bundled": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", + "dev": true + }, + "path-key": { + "version": "2.0.1", "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } + "dev": true }, - "array-unique": { - "version": "0.2.1", - "bundled": true + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true }, - "braces": { - "version": "1.8.5", + "path-type": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "expand-brackets": { - "version": "0.1.5", + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", "bundled": true, + "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "pinkie": "^2.0.0" } }, - "extglob": { - "version": "0.3.2", + "pkg-dir": { + "version": "1.0.0", "bundled": true, + "dev": true, "requires": { - "is-extglob": "1.0.0" + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } } }, - "is-extglob": { - "version": "1.0.0", - "bundled": true + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true }, - "is-glob": { - "version": "2.0.1", + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", "bundled": true, + "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "kind-of": { - "version": "3.2.2", + "read-pkg": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "is-buffer": "1.1.6" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, - "micromatch": { - "version": "2.3.11", + "read-pkg-up": { + "version": "1.0.1", "bundled": true, + "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "argv": { - "version": "0.0.2", - "bundled": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-exclude": { - "version": "1.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-differ": { - "version": "1.0.0", - "bundled": true - }, - "array-filter": { - "version": "1.0.0", - "bundled": true - }, - "array-find": { - "version": "1.0.0", - "bundled": true - }, - "array-find-index": { - "version": "1.0.2", - "bundled": true - }, - "array-union": { - "version": "1.0.2", - "bundled": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "ascli": { - "version": "1.0.1", - "bundled": true, - "requires": { - "colour": "0.7.1", - "optjs": "3.2.2" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "auto-bind": { - "version": "1.2.0", - "bundled": true - }, - "ava": { - "version": "0.25.0", - "bundled": true, - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.1.0", - "ansi-styles": "3.2.1", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.2.0", - "ava-init": "0.2.1", - "babel-core": "6.26.3", - "babel-generator": "6.26.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.4.1", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.1", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.1.0", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.3.0", - "matcher": "1.1.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.0.0", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.1.0", - "plur": "2.1.2", - "pretty-ms": "3.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slash": "1.0.0", - "source-map-support": "0.5.6", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.4.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } }, - "globby": { - "version": "6.1.0", + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.4", "bundled": true, + "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "is-equal-shallow": "^0.1.3" } }, - "pify": { - "version": "2.3.0", - "bundled": true + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true, + "dev": true }, - "pinkie": { - "version": "2.0.4", - "bundled": true + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true }, - "pinkie-promise": { + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { - "pinkie": "2.0.4" + "is-finite": "^1.0.0" } }, - "strip-ansi": { - "version": "4.0.0", + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", "bundled": true, + "dev": true, + "optional": true, "requires": { - "ansi-regex": "3.0.0" + "align-text": "^0.1.1" } - } - } - }, - "ava-init": { - "version": "0.2.1", - "bundled": true, - "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.7.0", - "bundled": true - }, - "axios": { - "version": "0.18.0", - "bundled": true, - "requires": { - "follow-redirects": "1.5.0", - "is-buffer": "1.1.6" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true }, - "chalk": { - "version": "1.1.3", + "rimraf": { + "version": "2.6.2", "bundled": true, + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "glob": "^7.0.5" } }, - "supports-color": { + "semver": { + "version": "5.4.1", + "bundled": true, + "dev": true + }, + "set-blocking": { "version": "2.0.0", - "bundled": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, "requires": { - "ms": "2.0.0" + "shebang-regex": "^1.0.0" } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "bundled": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.10" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "bundled": true, - "requires": { - "babel-generator": "6.26.1", - "babylon": "6.18.0", - "call-matcher": "1.0.1", - "core-js": "2.5.6", - "espower-location-detector": "1.0.0", - "espurify": "1.8.0", - "estraverse": "4.2.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "bundled": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "bundled": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.6", - "home-or-tmp": "2.0.0", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", + }, + "shebang-regex": { + "version": "1.0.0", "bundled": true, - "requires": { - "source-map": "0.5.7" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - }, - "dependencies": { - "debug": { - "version": "2.6.9", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", + "dev": true + }, + "slide": { + "version": "1.1.6", "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", + "source-map": { + "version": "0.5.7", "bundled": true, - "requires": { - "kind-of": "6.0.2" - } + "dev": true }, - "is-data-descriptor": { - "version": "1.0.0", + "spawn-wrap": { + "version": "1.4.2", "bundled": true, + "dev": true, "requires": { - "kind-of": "6.0.2" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, - "is-descriptor": { + "spdx-correct": { "version": "1.0.2", "bundled": true, + "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "spdx-license-ids": "^1.0.2" } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "boxen": { - "version": "1.3.0", - "bundled": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true }, - "camelcase": { - "version": "4.1.0", - "bundled": true + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true }, "string-width": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "strip-ansi": { - "version": "4.0.0", + "version": "3.0.1", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^2.0.0" } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", + }, + "strip-bom": { + "version": "2.0.0", "bundled": true, + "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-utf8": "^0.2.0" } - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "buf-compare": { - "version": "1.0.1", - "bundled": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "bundled": true - }, - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "bytebuffer": { - "version": "5.0.1", - "bundled": true, - "requires": { - "long": "3.2.0" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "bundled": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "bundled": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { + }, + "strip-eof": { "version": "1.0.0", - "bundled": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, - "write-file-atomic": { - "version": "1.3.4", + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "deep-equal": "1.0.1", - "espurify": "1.8.0", - "estraverse": "4.2.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "call-signature": { - "version": "0.0.2", - "bundled": true - }, - "caller-path": { - "version": "0.1.0", - "bundled": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "bundled": true - }, - "camelcase": { - "version": "2.1.1", - "bundled": true - }, - "camelcase-keys": { - "version": "2.1.0", - "bundled": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "catharsis": { - "version": "0.8.9", - "bundled": true, - "requires": { - "underscore-contrib": "0.3.0" - } - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "chardet": { - "version": "0.4.2", - "bundled": true - }, - "chokidar": { - "version": "1.7.0", - "bundled": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.4", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "which": { + "version": "1.3.0", "bundled": true, + "dev": true, "requires": { - "is-glob": "2.0.1" + "isexe": "^2.0.0" } }, - "is-extglob": { - "version": "1.0.0", - "bundled": true + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true }, - "is-glob": { - "version": "2.0.1", + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, "requires": { - "is-extglob": "1.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } } - } - } - }, - "ci-info": { - "version": "1.1.3", - "bundled": true - }, - "circular-json": { - "version": "0.3.3", - "bundled": true - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", "bundled": true, + "dev": true, "requires": { - "is-descriptor": "0.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } - } - } - }, - "clean-stack": { - "version": "1.3.0", - "bundled": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "bundled": true - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "bundled": true - }, - "cli-truncate": { - "version": "1.1.0", - "bundled": true, - "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true }, - "string-width": { - "version": "2.1.1", + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "10.0.3", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + } } }, - "strip-ansi": { - "version": "4.0.0", + "yargs-parser": { + "version": "8.0.0", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "3.0.0" + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } } } } }, - "cli-width": { - "version": "2.2.0", - "bundled": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" } }, - "clone-response": { - "version": "1.0.2", - "bundled": true, + "sinon": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", + "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "dev": true, "requires": { - "mimic-response": "1.0.0" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true }, - "co": { - "version": "4.6.0", - "bundled": true + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } }, - "co-with-promise": { - "version": "4.6.0", - "bundled": true, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, "requires": { - "pinkie-promise": "1.0.0" + "parse-ms": "^0.1.0" } }, - "code-excerpt": { - "version": "2.1.1", - "bundled": true, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", + "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "requires": { + "samsam": "1.3.0" + } + }, + "@types/long": { + "version": "3.0.32", + "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", + "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + }, + "@types/node": { + "version": "8.10.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", + "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==" + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "convert-to-spaces": "1.0.2" + "is-buffer": "^1.1.5" } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "code-point-at": { - "version": "1.1.0", - "bundled": true + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "codecov": { - "version": "3.0.2", - "bundled": true, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "argv": "0.0.2", - "request": "2.87.0", - "urlgrey": "0.4.4" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "ansi-regex": "^3.0.0" } - }, - "color-convert": { - "version": "1.9.1", - "bundled": true, + } + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { - "color-name": "1.1.3" + "arr-flatten": "^1.0.1" } }, - "color-name": { - "version": "1.1.3", - "bundled": true - }, - "colors": { - "version": "1.1.2", - "bundled": true + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, - "colour": { - "version": "0.7.1", - "bundled": true + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { - "delayed-stream": "1.0.0" + "is-posix-bracket": "^0.1.0" } }, - "commander": { - "version": "2.15.1", - "bundled": true + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } }, - "common-path-prefix": { + "is-extglob": { "version": "1.0.0", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "is-extglob": "^1.0.0" } }, - "concordance": { - "version": "3.0.0", - "bundled": true, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.2", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "semver": "5.5.0", - "well-known-symbols": "1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "bundled": true, - "requires": { - "time-zone": "1.0.0" - } - } + "is-buffer": "^1.1.5" } }, - "configstore": { - "version": "3.1.2", - "bundled": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + }, + "auto-bind": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", + "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", + "dev": true + }, + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "bundled": true - }, - "cookiejar": { - "version": "2.1.1", - "bundled": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-assert": { - "version": "0.2.1", - "bundled": true, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "core-js": { - "version": "2.5.6", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "requires": { - "capture-stack-trace": "1.0.0" - } + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, - "crypto-random-string": { - "version": "1.0.0", - "bundled": true + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "bundled": true, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { - "array-find-index": "1.0.2" + "pinkie": "^2.0.0" } }, - "d": { - "version": "1.0.0", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "es5-ext": "0.10.42" + "ansi-regex": "^3.0.0" } + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, - "dashdash": { - "version": "1.14.1", - "bundled": true, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "date-time": { - "version": "0.1.1", - "bundled": true - }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { "debug": { - "version": "3.1.0", - "bundled": true, + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "decompress-response": { - "version": "3.3.0", - "bundled": true, - "requires": { - "mimic-response": "1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "bundled": true - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "deep-is": { - "version": "0.1.3", - "bundled": true - }, - "deep-strict-equal": { - "version": "0.2.0", - "bundled": true, - "requires": { - "core-assert": "0.2.1" - } - }, - "define-properties": { - "version": "1.1.2", - "bundled": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "del": { - "version": "2.2.2", - "bundled": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "bundled": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "2.0.4" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "2.0.1" - } - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, - "diff-match-patch": { - "version": "1.0.1", - "bundled": true - }, - "dir-glob": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "bundled": true, - "requires": { - "esutils": "2.0.2" - } - }, - "dom-serializer": { - "version": "0.1.0", - "bundled": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "bundled": true - } - } - }, - "domelementtype": { + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { "version": "1.3.0", - "bundled": true - }, - "domhandler": { - "version": "2.4.2", - "bundled": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.7.0", - "bundled": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - } - }, - "eastasianwidth": { - "version": "0.1.1", - "bundled": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "empower": { - "version": "1.2.3", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "empower-core": "0.6.2" - } - }, - "empower-assert": { - "version": "1.1.0", - "bundled": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "empower-core": { - "version": "0.6.2", - "bundled": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "2.5.6" - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "ent": { - "version": "2.2.0", - "bundled": true - }, - "entities": { - "version": "1.1.1", - "bundled": true - }, - "equal-length": { - "version": "1.0.1", - "bundled": true - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "bundled": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" - } - }, - "es6-error": { - "version": "4.1.1", - "bundled": true - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "escallmatch": { - "version": "1.5.0", - "bundled": true, - "requires": { - "call-matcher": "1.0.1", - "esprima": "2.7.3" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "bundled": true - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escodegen": { - "version": "1.9.1", - "bundled": true, - "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "bundled": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "4.19.1", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.4.1", - "concat-stream": "1.6.2", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.4", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "regexpp": "1.1.0", - "require-uncached": "1.0.3", - "semver": "5.5.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "globals": { - "version": "11.5.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "eslint-config-prettier": { - "version": "2.9.0", - "bundled": true, - "requires": { - "get-stdin": "5.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "5.0.1", - "bundled": true - } - } - }, - "eslint-plugin-node": { - "version": "6.0.1", - "bundled": true, - "requires": { - "ignore": "3.3.8", - "minimatch": "3.0.4", - "resolve": "1.7.1", - "semver": "5.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.7.1", - "bundled": true, - "requires": { - "path-parse": "1.0.5" - } - } - } - }, - "eslint-plugin-prettier": { - "version": "2.6.0", - "bundled": true, - "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.2.0" - } - }, - "eslint-scope": { - "version": "3.7.1", - "bundled": true, - "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "bundled": true - }, - "espower": { - "version": "2.1.1", - "bundled": true, - "requires": { - "array-find": "1.0.0", - "escallmatch": "1.5.0", - "escodegen": "1.9.1", - "escope": "3.6.0", - "espower-location-detector": "1.0.0", - "espurify": "1.8.0", - "estraverse": "4.2.0", - "source-map": "0.5.7", - "type-name": "2.0.2", - "xtend": "4.0.1" - } - }, - "espower-loader": { - "version": "1.2.2", - "bundled": true, - "requires": { - "convert-source-map": "1.5.1", - "espower-source": "2.2.0", - "minimatch": "3.0.4", - "source-map-support": "0.4.18", - "xtend": "4.0.1" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "requires": { - "source-map": "0.5.7" - } - } - } - }, - "espower-location-detector": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-url": "1.2.4", - "path-is-absolute": "1.0.1", - "source-map": "0.5.7", - "xtend": "4.0.1" - } - }, - "espower-source": { - "version": "2.2.0", - "bundled": true, - "requires": { - "acorn": "5.5.3", - "acorn-es7-plugin": "1.1.7", - "convert-source-map": "1.5.1", - "empower-assert": "1.1.0", - "escodegen": "1.9.1", - "espower": "2.1.1", - "estraverse": "4.2.0", - "merge-estraverse-visitors": "1.0.0", - "multi-stage-sourcemap": "0.2.1", - "path-is-absolute": "1.0.1", - "xtend": "4.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.5.3", - "bundled": true - } - } - }, - "espree": { - "version": "3.5.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-espower": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", + "dev": true, + "requires": { + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.5.3", - "bundled": true - } + "source-map": "^0.5.6" } - }, - "esprima": { - "version": "4.0.0", - "bundled": true - }, - "espurify": { - "version": "1.8.0", - "bundled": true, - "requires": { - "core-js": "2.5.6" - } - }, - "esquery": { - "version": "1.0.1", - "bundled": true, + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { - "estraverse": "4.2.0" + "ms": "2.0.0" } - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "estraverse": "4.2.0" + "is-descriptor": "^1.0.0" } }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "event-emitter": { - "version": "0.3.5", - "bundled": true, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "kind-of": "^6.0.0" } }, - "execa": { - "version": "0.7.0", - "bundled": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "kind-of": "^6.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "2.2.4" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "bundled": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, - "extend": { - "version": "3.0.1", - "bundled": true + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "external-editor": { - "version": "2.2.0", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.23", - "tmp": "0.0.33" + "ansi-regex": "^3.0.0" } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } + "is-extendable": "^0.1.0" } - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-diff": { - "version": "1.1.2", - "bundled": true - }, - "fast-glob": { - "version": "2.2.2", - "bundled": true, + } + } + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.0.2", - "glob-parent": "3.1.0", - "is-glob": "4.0.0", - "merge2": "1.2.2", - "micromatch": "3.1.10" + "md5-o-matic": "^0.1.1" } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "bundled": true - }, - "figures": { - "version": "2.0.0", - "bundled": true, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } - }, - "file-entry-cache": { + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "is-glob": "^2.0.0" } }, - "filename-regex": { - "version": "2.0.1", - "bundled": true + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, - "fill-keys": { - "version": "1.0.2", - "bundled": true, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" + "is-extglob": "^1.0.0" } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, + } + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "is-descriptor": "^0.1.0" } + } + } + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "find-cache-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" - } + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "find-up": { - "version": "2.1.0", - "bundled": true, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "locate-path": "2.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "flat-cache": { - "version": "1.3.0", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "ansi-regex": "^3.0.0" } - }, - "fn-name": { - "version": "2.0.1", - "bundled": true - }, - "follow-redirects": { - "version": "1.5.0", - "bundled": true, - "requires": { - "debug": "3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "formidable": { - "version": "1.2.1", - "bundled": true - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "fs-extra": { - "version": "5.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-name-support": { - "version": "0.2.0", - "bundled": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "bundled": true - }, - "gcp-metadata": { - "version": "0.6.3", - "bundled": true, - "requires": { - "axios": "0.18.0", - "extend": "3.0.1", - "retry-axios": "0.3.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-port": { - "version": "3.2.0", - "bundled": true - }, - "get-stdin": { - "version": "4.0.1", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "1.3.5" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "globby": { - "version": "8.0.1", - "bundled": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "fast-glob": "2.2.2", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - }, - "google-auth-library": { - "version": "1.5.0", - "bundled": true, - "requires": { - "axios": "0.18.0", - "gcp-metadata": "0.6.3", - "gtoken": "2.3.0", - "jws": "3.1.5", - "lodash.isstring": "4.0.1", - "lru-cache": "4.1.3", - "retry-axios": "0.3.2" - } - }, - "google-auto-auth": { - "version": "0.10.1", - "bundled": true, + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "^1.0.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, "requires": { - "async": "2.6.1", - "gcp-metadata": "0.6.3", - "google-auth-library": "1.5.0", - "request": "2.87.0" + "time-zone": "^1.0.0" } - }, - "google-gax": { - "version": "0.16.1", - "bundled": true, - "requires": { - "duplexify": "3.6.0", - "extend": "3.0.1", - "globby": "8.0.1", - "google-auto-auth": "0.10.1", - "google-proto-files": "0.15.1", - "grpc": "1.11.3", - "is-stream-ended": "0.1.4", - "lodash": "4.17.10", - "protobufjs": "6.8.6", - "through2": "2.0.3" - } - }, - "google-p12-pem": { - "version": "1.0.2", - "bundled": true, - "requires": { - "node-forge": "0.7.5", - "pify": "3.0.0" - } - }, - "google-proto-files": { - "version": "0.15.1", - "bundled": true, - "requires": { - "globby": "7.1.1", - "power-assert": "1.5.0", - "protobufjs": "6.8.6" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "bundled": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - } - } - }, - "got": { - "version": "8.2.0", - "bundled": true, - "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "2.0.0" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "growl": { - "version": "1.10.5", - "bundled": true - }, - "grpc": { - "version": "1.11.3", - "bundled": true, - "requires": { - "lodash": "4.17.10", - "nan": "2.10.0", - "node-pre-gyp": "0.10.0", - "protobufjs": "5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.19", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.1", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ascli": "1.0.1", - "bytebuffer": "5.0.1", - "glob": "7.1.2", - "yargs": "3.32.0" - } - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "gtoken": { - "version": "2.3.0", - "bundled": true, - "requires": { - "axios": "0.18.0", - "google-p12-pem": "1.0.2", - "jws": "3.1.5", - "mime": "2.3.1", - "pify": "3.0.0" - } - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "bundled": true - }, - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-color": { - "version": "0.1.7", - "bundled": true - }, - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "bundled": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "bundled": true, - "requires": { - "has-symbol-support-x": "1.4.2" - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "has-yarn": { - "version": "1.0.0", - "bundled": true - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "htmlparser2": { - "version": "3.9.2", - "bundled": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.7.0", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - } - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "bundled": true, - "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.1.1", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" - } - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore": { - "version": "3.3.8", - "bundled": true - }, - "ignore-by-default": { - "version": "1.0.1", - "bundled": true - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true - }, - "import-local": { - "version": "0.1.1", - "bundled": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "ink-docstrap": { - "version": "1.3.2", - "bundled": true, - "requires": { - "moment": "2.22.1", - "sanitize-html": "1.18.2" - } - }, - "inquirer": { - "version": "3.3.0", - "bundled": true, - "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.10", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "intelli-espower-loader": { - "version": "1.0.1", - "bundled": true, - "requires": { - "espower-loader": "1.2.2" - } - }, - "into-stream": { - "version": "3.1.0", - "bundled": true, - "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "irregular-plurals": { - "version": "1.4.0", - "bundled": true - }, - "is": { - "version": "3.2.1", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ci-info": "1.1.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "bundled": true - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-object": { - "version": "1.0.1", - "bundled": true - }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "1.2.0" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "bundled": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "bundled": true - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true - }, - "is-resolvable": { - "version": "1.1.0", - "bundled": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-stream-ended": { - "version": "0.1.4", - "bundled": true - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "is-url": { - "version": "1.2.4", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "isurl": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" - } - }, - "jest-docblock": { - "version": "21.2.0", - "bundled": true - }, - "js-string-escape": { - "version": "1.0.1", - "bundled": true - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.11.0", - "bundled": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "js2xmlparser": { - "version": "3.0.0", - "bundled": true, - "requires": { - "xmlcreate": "1.0.2" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "jsdoc": { - "version": "3.5.5", - "bundled": true, - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.19", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", - "underscore": "1.8.3" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.19", - "bundled": true - } - } - }, - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "json-buffer": { - "version": "3.0.0", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonfile": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-extend": { - "version": "1.1.27", - "bundled": true - }, - "jwa": { - "version": "1.1.6", - "bundled": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "5.1.2" - } - }, - "jws": { - "version": "3.1.5", - "bundled": true, - "requires": { - "jwa": "1.1.6", - "safe-buffer": "5.1.2" - } - }, - "keyv": { - "version": "3.0.0", - "bundled": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "klaw": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "last-line-stream": { - "version": "1.0.0", - "bundled": true, - "requires": { - "through2": "2.0.3" - } - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "requires": { - "package-json": "4.0.1" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "bundled": true - }, - "lodash.debounce": { - "version": "4.0.8", - "bundled": true - }, - "lodash.difference": { - "version": "4.5.0", - "bundled": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "bundled": true - }, - "lodash.flatten": { - "version": "4.4.0", - "bundled": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "bundled": true - }, - "lodash.get": { - "version": "4.4.2", - "bundled": true - }, - "lodash.isequal": { - "version": "4.5.0", - "bundled": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "bundled": true - }, - "lodash.isstring": { - "version": "4.0.1", - "bundled": true - }, - "lodash.merge": { - "version": "4.6.1", - "bundled": true - }, - "lodash.mergewith": { - "version": "4.6.1", - "bundled": true - }, - "lolex": { - "version": "2.6.0", - "bundled": true - }, - "long": { - "version": "4.0.0", - "bundled": true - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "bundled": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-obj": { - "version": "1.0.1", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "marked": { - "version": "0.3.19", - "bundled": true - }, - "matcher": { - "version": "1.1.0", - "bundled": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "math-random": { - "version": "1.0.1", - "bundled": true - }, - "md5-hex": { - "version": "2.0.0", - "bundled": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "meow": { - "version": "3.7.0", - "bundled": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "bundled": true - }, - "merge-estraverse-visitors": { - "version": "1.0.0", - "bundled": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "merge2": { - "version": "1.2.2", - "bundled": true - }, - "methods": { - "version": "1.1.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "mime": { - "version": "2.3.1", - "bundled": true - }, - "mime-db": { - "version": "1.33.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "mimic-response": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "bundled": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "module-not-found-error": { - "version": "1.0.1", - "bundled": true - }, - "moment": { - "version": "2.22.1", - "bundled": true - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "multi-stage-sourcemap": { - "version": "0.2.1", - "bundled": true, - "requires": { - "source-map": "0.1.43" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "bundled": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "multimatch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true - }, - "nan": { - "version": "2.10.0", - "bundled": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "natural-compare": { - "version": "1.4.0", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "nise": { - "version": "1.3.3", - "bundled": true, - "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" - } - }, - "node-forge": { - "version": "0.7.5", - "bundled": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-url": { - "version": "2.0.1", - "bundled": true, - "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.1", - "sort-keys": "2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "bundled": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "nyc": { - "version": "11.8.0", - "bundled": true, - "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", - "md5-hex": "1.3.0", - "merge-source-map": "1.1.0", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.2.1", - "yargs": "11.1.0", - "yargs-parser": "8.1.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-js": { - "version": "2.5.6", - "bundled": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "requires": { - "lru-cache": "4.1.3", - "which": "1.3.0" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "2.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "bundled": true, - "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.3", - "bundled": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.4.0", - "bundled": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "find-up": "1.1.2" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "0.1.15" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.1", - "bundled": true, - "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.10", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - } - } - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "bundled": true, - "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.2.0" - }, - "dependencies": { - "is-observable": { - "version": "0.2.0", - "bundled": true, - "requires": { - "symbol-observable": "0.2.4" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "bundled": true - } - } - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "option-chain": { - "version": "1.0.0", - "bundled": true - }, - "optionator": { - "version": "0.8.2", - "bundled": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "bundled": true - } - } - }, - "optjs": { - "version": "3.2.2", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "1.4.0", - "bundled": true, - "requires": { - "lcid": "1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "p-cancelable": { - "version": "0.3.0", - "bundled": true - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "package-hash": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" - } - }, - "package-json": { - "version": "4.0.1", - "bundled": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "bundled": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - } - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parse-ms": { - "version": "0.1.2", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-to-regexp": { - "version": "1.7.0", - "bundled": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "bundled": true - } - } - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pinkie": { - "version": "1.0.0", - "bundled": true - }, - "pinkie-promise": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pinkie": "1.0.0" - } - }, - "pkg-conf": { - "version": "2.1.0", - "bundled": true, - "requires": { - "find-up": "2.1.0", - "load-json-file": "4.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - } - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "2.1.0" - } - }, - "plur": { - "version": "2.1.2", - "bundled": true, - "requires": { - "irregular-plurals": "1.4.0" - } - }, - "pluralize": { - "version": "7.0.0", - "bundled": true - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "postcss": { - "version": "6.0.22", - "bundled": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "power-assert": { - "version": "1.5.0", - "bundled": true, - "requires": { - "define-properties": "1.1.2", - "empower": "1.2.3", - "power-assert-formatter": "1.4.1", - "universal-deep-strict-equal": "1.2.2", - "xtend": "4.0.1" - } - }, - "power-assert-context-formatter": { - "version": "1.1.1", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "power-assert-context-traversal": "1.1.1" - } - }, - "power-assert-context-reducer-ast": { - "version": "1.1.2", - "bundled": true, - "requires": { - "acorn": "4.0.13", - "acorn-es7-plugin": "1.1.7", - "core-js": "2.5.6", - "espurify": "1.8.0", - "estraverse": "4.2.0" - } - }, - "power-assert-context-traversal": { - "version": "1.1.1", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "estraverse": "4.2.0" - } - }, - "power-assert-formatter": { - "version": "1.4.1", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "power-assert-context-formatter": "1.1.1", - "power-assert-context-reducer-ast": "1.1.2", - "power-assert-renderer-assertion": "1.1.1", - "power-assert-renderer-comparison": "1.1.1", - "power-assert-renderer-diagram": "1.1.2", - "power-assert-renderer-file": "1.1.1" - } - }, - "power-assert-renderer-assertion": { - "version": "1.1.1", - "bundled": true, - "requires": { - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "bundled": true - }, - "power-assert-renderer-comparison": { - "version": "1.1.1", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "diff-match-patch": "1.0.1", - "power-assert-renderer-base": "1.1.1", - "stringifier": "1.3.0", - "type-name": "2.0.2" - } - }, - "power-assert-renderer-diagram": { - "version": "1.1.2", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "power-assert-renderer-base": "1.1.1", - "power-assert-util-string-width": "1.1.1", - "stringifier": "1.3.0" - } - }, - "power-assert-renderer-file": { - "version": "1.1.1", - "bundled": true, - "requires": { - "power-assert-renderer-base": "1.1.1" - } - }, - "power-assert-util-string-width": { - "version": "1.1.1", - "bundled": true, - "requires": { - "eastasianwidth": "0.1.1" - } - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "prettier": { - "version": "1.12.1", - "bundled": true - }, - "pretty-ms": { - "version": "3.1.0", - "bundled": true, - "requires": { - "parse-ms": "1.0.1", - "plur": "2.1.2" - }, - "dependencies": { - "parse-ms": { - "version": "1.0.1", - "bundled": true - } - } - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "progress": { - "version": "2.0.0", - "bundled": true - }, - "prop-assign": { - "version": "1.0.0", - "bundled": true - }, - "propprop": { - "version": "0.3.1", - "bundled": true - }, - "protobufjs": { - "version": "6.8.6", - "bundled": true, - "requires": { - "@protobufjs/aspromise": "1.1.2", - "@protobufjs/base64": "1.1.2", - "@protobufjs/codegen": "2.0.4", - "@protobufjs/eventemitter": "1.1.0", - "@protobufjs/fetch": "1.1.0", - "@protobufjs/float": "1.0.2", - "@protobufjs/inquire": "1.1.0", - "@protobufjs/path": "1.1.2", - "@protobufjs/pool": "1.1.0", - "@protobufjs/utf8": "1.1.0", - "@types/long": "3.0.32", - "@types/node": "8.10.17", - "long": "4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.17", - "bundled": true - } - } - }, - "proxyquire": { - "version": "2.0.1", - "bundled": true, - "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.5.0", - "bundled": true, - "requires": { - "path-parse": "1.0.5" - } - } - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.2", - "bundled": true - }, - "query-string": { - "version": "5.1.1", - "bundled": true, - "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "randomatic": { - "version": "3.0.0", - "bundled": true, - "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "bundled": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "bundled": true, - "requires": { - "pify": "2.3.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "read-pkg-up": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "bundled": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "2.0.1" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "regexpp": { - "version": "1.1.0", - "bundled": true - }, - "regexpu-core": { - "version": "2.0.0", - "bundled": true, - "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "requires": { - "rc": "1.2.7" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es6-error": "4.1.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "request": { - "version": "2.87.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "require-precompiled": { - "version": "0.1.0", - "bundled": true - }, - "require-uncached": { - "version": "1.0.3", - "bundled": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "bundled": true - } - } - }, - "requizzle": { - "version": "0.2.1", - "bundled": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "bundled": true - } - } - }, - "resolve": { - "version": "1.1.7", - "bundled": true - }, - "resolve-cwd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "resolve-from": "3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "responselike": { - "version": "1.0.2", - "bundled": true, - "requires": { - "lowercase-keys": "1.0.1" - } - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "retry-axios": { - "version": "0.3.2", - "bundled": true - }, - "retry-request": { - "version": "3.3.1", - "bundled": true, - "requires": { - "request": "2.87.0", - "through2": "2.0.3" - } - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "run-async": { - "version": "2.3.0", - "bundled": true, - "requires": { - "is-promise": "2.1.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "bundled": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "bundled": true, - "requires": { - "rx-lite": "4.0.8" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "0.1.15" - } - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "samsam": { - "version": "1.3.0", - "bundled": true - }, - "sanitize-html": { - "version": "1.18.2", - "bundled": true, - "requires": { - "chalk": "2.4.1", - "htmlparser2": "3.9.2", - "lodash.clonedeep": "4.5.0", - "lodash.escaperegexp": "4.1.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mergewith": "4.6.1", - "postcss": "6.0.22", - "srcset": "1.0.0", - "xtend": "4.0.1" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "serialize-error": { - "version": "2.1.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "sinon": { - "version": "5.0.7", - "bundled": true, - "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.5.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "5.4.0", - "type-detect": "4.0.8" - } - }, - "slash": { - "version": "1.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-support": { - "version": "0.5.6", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split-array-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-stream-ended": "0.1.4" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "srcset": { - "version": "1.0.0", - "bundled": true, - "requires": { - "array-uniq": "1.0.3", - "number-is-nan": "1.0.1" - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, - "stack-utils": { - "version": "1.0.1", - "bundled": true - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "stream-events": { - "version": "1.0.4", - "bundled": true, - "requires": { - "stubs": "3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "bundled": true - }, - "string": { - "version": "3.3.3", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "stringifier": { - "version": "1.3.0", - "bundled": true, - "requires": { - "core-js": "2.5.6", - "traverse": "0.6.6", - "type-name": "2.0.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-indent": { - "version": "1.0.1", - "bundled": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "stubs": { - "version": "3.0.0", - "bundled": true - }, - "superagent": { - "version": "3.8.3", - "bundled": true, - "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.1.1", - "debug": "3.1.0", - "extend": "3.0.1", - "form-data": "2.3.2", - "formidable": "1.2.1", - "methods": "1.1.2", - "mime": "1.6.0", - "qs": "6.5.2", - "readable-stream": "2.3.6" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "bundled": true - } - } - }, - "supertap": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arrify": "1.0.1", - "indent-string": "3.2.0", - "js-yaml": "3.11.0", - "serialize-error": "2.1.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "supertest": { - "version": "3.0.0", - "bundled": true, - "requires": { - "methods": "1.1.2", - "superagent": "3.8.3" - } - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "bundled": true - }, - "table": { - "version": "4.0.2", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "taffydb": { - "version": "2.6.2", - "bundled": true - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "requires": { - "execa": "0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "bundled": true - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "time-zone": { - "version": "1.0.0", - "bundled": true - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "tmp": { - "version": "0.0.33", - "bundled": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "traverse": { - "version": "0.6.6", - "bundled": true - }, - "trim-newlines": { - "version": "1.0.0", - "bundled": true - }, - "trim-off-newlines": { - "version": "1.0.1", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "bundled": true - }, - "type-name": { - "version": "2.0.2", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "bundled": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "uid2": { - "version": "0.0.3", - "bundled": true - }, - "underscore": { - "version": "1.8.3", - "bundled": true - }, - "underscore-contrib": { - "version": "0.3.0", - "bundled": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "bundled": true - } - } - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "requires": { - "crypto-random-string": "1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", - "uid2": "0.0.3" - } - }, - "universal-deep-strict-equal": { - "version": "1.2.2", - "bundled": true, - "requires": { - "array-filter": "1.0.0", - "indexof": "0.0.1", - "object-keys": "1.0.11" - } - }, - "universalify": { - "version": "0.1.1", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-to-options": { - "version": "1.0.1", - "bundled": true - }, - "urlgrey": { - "version": "0.4.4", - "bundled": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "bundled": true - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.4", - "bundled": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write": { - "version": "0.2.1", - "bundled": true, - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - } - }, - "write-json-file": { - "version": "2.3.0", - "bundled": true, - "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "pify": "3.0.0", - "sort-keys": "2.0.0", - "write-file-atomic": "2.3.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "bundled": true - } - } - }, - "write-pkg": { - "version": "3.1.0", - "bundled": true, - "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.3.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true - }, - "xmlcreate": { - "version": "1.0.2", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "3.32.0", - "bundled": true, - "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.2.3.tgz", - "integrity": "sha512-O6OVc8lKiLL8Qtoc1lVAynf5pJT550fHZcW33a7oQ7TMNkrTHPgeoYw4esi4KSbDRn8gV+cfefnkgqxXmr+KzA==", - "dev": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.2.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.4.1", - "proxyquire": "1.8.0", - "sinon": "4.3.0", - "string": "3.3.3", - "supertest": "3.0.0", - "yargs": "11.0.0", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.1.0", - "ansi-styles": "3.2.1", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.2.0", - "ava-init": "0.2.1", - "babel-core": "6.26.3", - "babel-generator": "6.26.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.4.1", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.1", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.1.0", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.3.0", - "matcher": "1.1.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.1.1", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.1.0", - "plur": "2.1.2", - "pretty-ms": "3.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", - "semver": "5.5.0", - "slash": "1.0.0", - "source-map-support": "0.5.6", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.4.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "nyc": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", - "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", - "dev": true, - "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", - "md5-hex": "1.3.0", - "merge-source-map": "1.0.4", - "micromatch": "2.3.11", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.1.1", - "yargs": "10.0.3", - "yargs-parser": "8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.3", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invariant": { - "version": "2.2.2", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "bundled": true, - "dev": true - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "lru-cache": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "mimic-fn": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "1.1.2" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "semver": { - "version": "5.4.1", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "10.0.3", - "bundled": true, - "dev": true, - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.0.0" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - } - } - }, - "yargs-parser": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } + } + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" } }, - "sinon": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", - "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", - "dev": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "@sinonjs/formatio": "2.0.0", - "diff": "3.5.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "5.4.0", - "type-detect": "4.0.8" + "kind-of": "^6.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diff-match-patch": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", + "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "eastasianwidth": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", + "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "empower": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", + "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", + "requires": { + "core-js": "^2.0.0", + "empower-core": "^0.6.2" + } + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "requires": { + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "espurify": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", + "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", + "requires": { + "core-js": "^2.0.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } + "kind-of": "^3.0.2" } }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "isarray": "1.0.0" } }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "camelcase": "4.1.0" + "is-buffer": "^1.1.5" } } } }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", - "dev": true, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "ansi-styles": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "is-extendable": "^0.1.0" } }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "parse-ms": "0.1.2" + "kind-of": "^6.0.0" } }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "requires": { - "samsam": "1.3.0" - } + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, - "ansi-align": { + "figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "string-width": "2.1.1" + "escape-string-regexp": "^1.0.5" } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "color-convert": "1.9.1" + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" } }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "arr-flatten": "1.1.0" + "locate-path": "^2.0.0" } }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "requires": { + "debug": "^3.1.0" + } }, - "array-find-index": { + "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "for-in": "^1.0.1" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", "dev": true }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } }, - "auto-bind": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", - "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", - "dev": true + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } }, - "ava": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.23.0.tgz", - "integrity": "sha512-ZsVwO8UENDoZHlYQOEBv6oSGuUiZ8AFqaa+OhTv/McwC+4Y2V9skip5uYwN3egT9I9c+mKzLWA9lXUv7D6g8ZA==", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, + "optional": true, "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "ansi-escapes": "2.0.0", - "ansi-styles": "3.2.1", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.2.0", - "ava-init": "0.2.1", - "babel-core": "6.26.3", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.4.1", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.1", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.1.0", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "js-yaml": "3.11.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.3.0", - "matcher": "1.1.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.1.1", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.1.0", - "plur": "2.1.2", - "pretty-ms": "3.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.2", - "slash": "1.0.0", - "source-map-support": "0.4.18", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supports-color": "4.5.0", - "time-require": "0.1.2", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, "dev": true }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, "dev": true }, - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, "dev": true, + "optional": true, "requires": { - "symbol-observable": "0.2.4" + "ms": "2.0.0" } }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "source-map": "0.5.7" + "minipass": "^2.2.1" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-regex": "3.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "inherits": { + "version": "2.0.3", + "bundled": true, "dev": true - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "minipass": { + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "supports-color": { + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ms": "2.0.0" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, - "requires": { - "babel-generator": "6.26.1", - "babylon": "6.18.0", - "call-matcher": "1.0.1", - "core-js": "2.5.6", - "espower-location-detector": "1.0.0", - "espurify": "1.8.0", - "estraverse": "4.2.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "6.26.3", - "babel-runtime": "6.26.0", - "core-js": "2.5.6", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "source-map": "0.5.7" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.5" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "wrappy": "1" } }, - "ms": { + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, "dev": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "string_decoder": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "safe-buffer": "~5.1.0" } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "2.5.6", - "deep-equal": "1.0.1", - "espurify": "1.8.0", - "estraverse": "4.2.0" - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "has-flag": "3.0.0" + "ansi-regex": "^2.0.0" } - } - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.4", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } - } - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "1.0.0" - } - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "1.0.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.2", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "semver": "5.5.0", - "well-known-symbols": "1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "time-zone": "1.0.0" + "string-width": "^1.0.2" } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" - } - }, - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, "dev": true } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { + "function-name-support": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "2.5.6" - } - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "1.2.4", - "path-is-absolute": "1.0.1", - "source-map": "0.5.7", - "xtend": "4.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", "dev": true }, - "espurify": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", - "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", - "dev": true, + "gcp-metadata": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", + "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", "requires": { - "core-js": "2.5.6" + "axios": "^0.18.0", + "extend": "^3.0.1", + "retry-axios": "0.3.2" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", "dev": true }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.4" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "escape-string-regexp": "1.0.5" + "assert-plus": "^1.0.0" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "is-object": "1.0.1", - "merge-descriptors": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "commondir": "1.0.1", - "make-dir": "1.3.0", - "pkg-dir": "2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, "requires": { - "locate-path": "2.0.0" + "ini": "^1.3.4" } }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "requires": { - "for-in": "1.0.2" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "google-auth-library": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", + "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", + "requires": { + "axios": "^0.18.0", + "gcp-metadata": "^0.6.3", + "gtoken": "^2.3.0", + "jws": "^3.1.5", + "lodash.isstring": "^4.0.1", + "lru-cache": "^4.1.3", + "retry-axios": "^0.3.2" + } + }, + "google-auto-auth": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", + "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" + } + }, + "google-gax": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", + "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", + "requires": { + "duplexify": "^3.5.4", + "extend": "^3.0.0", + "globby": "^8.0.0", + "google-auto-auth": "^0.10.0", + "google-proto-files": "^0.15.0", + "grpc": "^1.10.0", + "is-stream-ended": "^0.1.0", + "lodash": "^4.17.2", + "protobufjs": "^6.8.0", + "through2": "^2.0.3" + }, + "dependencies": { + "google-auto-auth": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", + "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" + } + } } }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "google-p12-pem": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", + "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", "requires": { - "samsam": "1.3.0" + "node-forge": "^0.7.4", + "pify": "^3.0.0" } }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, + "google-proto-files": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", + "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "globby": "^7.1.1", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + } } }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "optional": true, + "grpc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.2.tgz", + "integrity": "sha512-oDrW7TPuP+u9+RboUx8XupS1GOPCdLSmldyMHmlaB5wu38nOzzyDxzLsmleROw5/0XyfyuwsmFX6UUr7FaXN2w==", "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.10.0" + "lodash": "^4.17.5", + "nan": "^2.0.0", + "node-pre-gyp": "^0.10.0", + "protobufjs": "^5.0.3" }, "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, - "optional": true + "bundled": true }, "ansi-regex": { "version": "2.1.1", @@ -14028,16 +5251,14 @@ }, "aproba": { "version": "1.2.0", - "bundled": true, - "optional": true + "bundled": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, - "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -14048,14 +5269,13 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "code-point-at": { "version": "1.1.0", @@ -14071,101 +5291,88 @@ }, "core-util-is": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "debug": { "version": "2.6.9", "bundled": true, - "optional": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.5.1", - "bundled": true, - "optional": true + "bundled": true }, "delegates": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, - "optional": true + "bundled": true }, "fs-minipass": { "version": "1.2.5", "bundled": true, - "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "gauge": { "version": "2.7.4", "bundled": true, - "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { "version": "7.1.2", "bundled": true, - "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { "version": "2.0.1", - "bundled": true, - "optional": true + "bundled": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.23", "bundled": true, - "optional": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, - "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -14174,46 +5381,43 @@ }, "ini": { "version": "1.3.5", - "bundled": true, - "optional": true + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "minimatch": { "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", + "version": "1.2.0", "bundled": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.3", "bundled": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", "bundled": true, - "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -14221,72 +5425,71 @@ "bundled": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } } }, "ms": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true }, "needle": { - "version": "2.2.0", + "version": "2.2.1", "bundled": true, - "optional": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "node-pre-gyp": { "version": "0.10.0", "bundled": true, - "optional": true, "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nopt": { "version": "4.0.1", "bundled": true, - "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { "version": "1.0.3", - "bundled": true, - "optional": true + "bundled": true }, "npm-packlist": { "version": "1.1.10", "bundled": true, - "optional": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { "version": "4.1.2", "bundled": true, - "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -14295,168 +5498,153 @@ }, "object-assign": { "version": "4.1.1", - "bundled": true, - "optional": true + "bundled": true }, "once": { "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "osenv": { "version": "0.1.5", "bundled": true, - "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true + "version": "1.0.1", + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } }, "rc": { "version": "1.2.7", "bundled": true, - "optional": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "readable-stream": { "version": "2.3.6", "bundled": true, - "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { "version": "2.6.2", "bundled": true, - "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, - "optional": true + "bundled": true }, "sax": { "version": "1.2.4", - "bundled": true, - "optional": true + "bundled": true }, "semver": { "version": "5.5.0", - "bundled": true, - "optional": true + "bundled": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, - "optional": true + "bundled": true }, "string-width": { "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "bundled": true, - "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, - "optional": true + "bundled": true }, "tar": { - "version": "4.4.1", + "version": "4.4.3", "bundled": true, - "optional": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "wide-align": { "version": "1.1.2", "bundled": true, - "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -14466,199 +5654,85 @@ "yallist": { "version": "3.0.2", "bundled": true - } - } - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "1.3.5" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "pinkie": "2.0.4" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } } } }, - "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", - "dev": true, + "gtoken": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", + "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "2.0.0" - } - } + "axios": "^0.18.0", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.4", + "mime": "^2.2.0", + "pify": "^3.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-color": { @@ -14668,9 +5742,9 @@ "dev": true }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbol-support-x": { "version": "1.4.2", @@ -14684,7 +5758,36 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "has-yarn": { @@ -14699,8 +5802,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { @@ -14715,28 +5818,43 @@ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "hullabaloo-config-manager": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.1.1", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.2" + "dot-prop": "^4.1.0", + "es6-error": "^4.0.2", + "graceful-fs": "^4.1.11", + "indent-string": "^3.1.0", + "json5": "^0.5.1", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "pkg-dir": "^2.0.0", + "resolve-from": "^3.0.0", + "safe-buffer": "^5.0.1" } }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -14755,8 +5873,8 @@ "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", "dev": true, "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" } }, "imurmurhash": { @@ -14771,21 +5889,24 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -14799,8 +5920,8 @@ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "dev": true, "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" } }, "invariant": { @@ -14809,7 +5930,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -14823,6 +5944,29 @@ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -14835,14 +5979,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -14850,7 +5993,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-ci": { @@ -14859,7 +6002,42 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.3" + "ci-info": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } } }, "is-dotfile": { @@ -14874,7 +6052,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-error": { @@ -14886,14 +6064,12 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { "version": "1.0.2", @@ -14901,7 +6077,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -14909,7 +6085,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-generator-fn": { @@ -14919,12 +6095,11 @@ "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -14933,8 +6108,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { @@ -14944,12 +6119,21 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -14970,7 +6154,22 @@ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "1.2.0" + "symbol-observable": "^1.1.0" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } } }, "is-path-inside": { @@ -14979,7 +6178,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -14988,6 +6187,14 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -15023,6 +6230,16 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -15035,10 +6252,15 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -15046,20 +6268,34 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", + "integrity": "sha512-yMSw5xLIbdaxiVXHk3amfNM2WeBxLrwH/BCyZ9HvA/fylwziAIJOG2rKqWyLqEJqwKT725vxxqidv+SyynnGAA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.0.tgz", + "integrity": "sha512-ozQGtlIw+/a/F3n6QwWiuuyRAPp64+g2GVsKYsIez0sgIEzkU5ZpL2uZ5pmAzbEJ82anlRaPlOQZzkRXspgJyg==", "dev": true, "requires": { - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } + "@babel/generator": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "istanbul-lib-coverage": "^2.0.0", + "semver": "^5.5.0" } }, "isurl": { @@ -15068,8 +6304,8 @@ "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "dev": true, "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "js-string-escape": { @@ -15085,15 +6321,21 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -15112,6 +6354,21 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -15124,7 +6381,18 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, "just-extend": { @@ -15132,6 +6400,25 @@ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==" }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -15142,13 +6429,9 @@ } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "last-line-stream": { "version": "1.0.0", @@ -15156,7 +6439,7 @@ "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", "dev": true, "requires": { - "through2": "2.0.3" + "through2": "^2.0.0" } }, "latest-version": { @@ -15165,7 +6448,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -15180,7 +6463,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -15189,10 +6472,18 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "locate-path": { @@ -15200,15 +6491,14 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -15237,8 +6527,7 @@ "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, "lodash.flattendeep": { "version": "4.4.0", @@ -15246,1085 +6535,628 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", - "dev": true - }, - "lolex": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", - "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", - "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "1.2.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } + "lolex": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", + "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==" }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, - "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "js-tokens": "^3.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "minimist": "0.0.8" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, - "module-not-found-error": { + "lowercase-keys": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "pify": "^3.0.0" } }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "optional": true + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, - "nise": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", - "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", - "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" - } + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "object-visit": "^1.0.0" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "escape-string-regexp": "^1.0.4" } }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", "dev": true, "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.1", - "sort-keys": "2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - } + "md5-o-matic": "^0.1.1" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "path-key": "2.0.1" + "mimic-fn": "^1.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nyc": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.8.0.tgz", - "integrity": "sha512-PUFq1PSsx5OinSk5g5aaZygcDdI3QQT5XUlbR9QRMihtMS6w0Gm8xj4BxmKeeAlpQXC5M2DIhH16Y+KejceivQ==", - "dev": true, - "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", - "md5-hex": "1.3.0", - "merge-source-map": "1.1.0", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.2.1", - "yargs": "11.1.0", - "yargs-parser": "8.1.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" - } + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" + "pinkie-promise": "^2.0.0" } }, - "babel-types": { - "version": "6.26.0", - "bundled": true, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "babylon": { - "version": "6.18.0", - "bundled": true, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "pinkie": "^2.0.0" } }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, - "caching-transform": { + "read-pkg-up": { "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, - "class-utils": { - "version": "0.3.6", - "bundled": true, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "is-utf8": "^0.2.0" } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" + }, + "methmeth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", + "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "modelo": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", + "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==" + }, + "module-not-found-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", + "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nise": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.1.tgz", + "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", + "requires": { + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true - }, - "collection-visit": { - "version": "1.0.0", + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", + "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^2.1.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.5", + "istanbul-reports": "^1.4.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", "bundled": true, "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, - "commondir": { + "amdefine": { "version": "1.0.1", "bundled": true, "dev": true }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.6", + "ansi-regex": { + "version": "3.0.0", "bundled": true, "dev": true }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "4.1.3", - "which": "1.3.0" - } - }, - "debug": { - "version": "2.6.9", + "append-transform": { + "version": "0.4.0", "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "default-require-extensions": "^1.0.0" } }, - "debug-log": { - "version": "1.0.1", + "archy": { + "version": "1.0.0", "bundled": true, "dev": true }, - "decamelize": { - "version": "1.2.0", + "arr-diff": { + "version": "4.0.0", "bundled": true, "dev": true }, - "decode-uri-component": { - "version": "0.2.0", + "arr-flatten": { + "version": "1.1.0", "bundled": true, "dev": true }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", + "arr-union": { + "version": "3.1.0", "bundled": true, "dev": true }, - "esutils": { - "version": "2.0.2", + "array-unique": { + "version": "0.3.2", "bundled": true, "dev": true }, - "execa": { - "version": "0.7.0", + "arrify": { + "version": "1.0.1", "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } + "dev": true }, - "expand-brackets": { - "version": "2.1.4", + "assign-symbols": { + "version": "1.0.0", "bundled": true, - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } + "dev": true }, - "extend-shallow": { - "version": "3.0.2", + "async": { + "version": "1.5.2", "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } + "dev": true }, - "extglob": { - "version": "2.0.4", + "atob": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "base": { + "version": "0.11.2", "bundled": true, "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -16332,15 +7164,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -16348,7 +7172,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -16356,7 +7180,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -16364,9 +7188,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -16376,15 +7200,30 @@ } } }, - "fill-range": { - "version": "4.0.0", + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -16392,1635 +7231,1589 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", + "builtin-modules": { + "version": "1.1.1", "bundled": true, "dev": true }, - "foreground-child": { - "version": "1.5.6", + "cache-base": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "fragment-cache": { - "version": "0.2.1", + "caching-transform": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "map-cache": "0.2.2" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", + "camelcase": { + "version": "1.2.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, - "glob": { - "version": "7.1.2", + "center-align": { + "version": "0.1.3", "bundled": true, "dev": true, + "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", + "class-utils": { + "version": "0.3.6", "bundled": true, "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "source-map": { - "version": "0.4.4", + "define-property": { + "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "amdefine": "1.0.1" + "is-descriptor": "^0.1.0" } } } }, - "has-ansi": { - "version": "2.0.0", + "cliui": { + "version": "2.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-regex": "2.1.1" + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } } }, - "has-flag": { - "version": "1.0.0", + "code-point-at": { + "version": "1.1.0", "bundled": true, "dev": true }, - "has-value": { + "collection-visit": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "has-values": { - "version": "1.0.0", + "commondir": { + "version": "1.0.1", "bundled": true, - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "dev": true }, - "hosted-git-info": { - "version": "2.6.0", + "component-emitter": { + "version": "1.2.1", "bundled": true, "dev": true }, - "imurmurhash": { - "version": "0.1.4", + "concat-map": { + "version": "0.0.1", "bundled": true, "dev": true }, - "inflight": { - "version": "1.0.6", + "convert-source-map": { + "version": "1.5.1", "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } + "dev": true }, - "inherits": { - "version": "2.0.3", + "copy-descriptor": { + "version": "0.1.1", "bundled": true, "dev": true }, - "invariant": { - "version": "2.2.4", + "cross-spawn": { + "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "loose-envify": "1.3.1" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", + "debug": { + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "ms": "2.0.0" } }, - "is-arrayish": { - "version": "0.2.1", + "debug-log": { + "version": "1.0.1", "bundled": true, "dev": true }, - "is-buffer": { - "version": "1.1.6", + "decamelize": { + "version": "1.2.0", "bundled": true, "dev": true }, - "is-builtin-module": { + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "builtin-modules": "1.1.1" + "strip-bom": "^2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, - "is-data-descriptor": { - "version": "0.1.4", + "error-ex": { + "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "is-arrayish": "^0.2.1" } }, - "is-descriptor": { - "version": "0.1.6", + "execa": { + "version": "0.7.0", "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { - "kind-of": { + "cross-spawn": { "version": "5.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } } } }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", + "expand-brackets": { + "version": "2.1.4", "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", + "extend-shallow": { + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "is-odd": { - "version": "2.0.0", + "extglob": { + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "is-number": "4.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "is-number": { - "version": "4.0.0", + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", "bundled": true, "dev": true } } }, - "is-plain-object": { - "version": "2.0.4", + "fill-range": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", + "extend-shallow": { + "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } } } }, - "is-stream": { - "version": "1.1.0", + "find-cache-dir": { + "version": "0.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } }, - "is-utf8": { - "version": "0.2.1", + "find-up": { + "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } }, - "is-windows": { + "for-in": { "version": "1.0.2", "bundled": true, "dev": true }, - "isarray": { - "version": "1.0.0", + "foreground-child": { + "version": "1.5.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } }, - "isexe": { - "version": "2.0.0", + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", "bundled": true, "dev": true }, - "isobject": { - "version": "3.0.1", + "get-caller-file": { + "version": "1.0.2", "bundled": true, "dev": true }, - "istanbul-lib-coverage": { - "version": "1.2.0", + "get-stream": { + "version": "3.0.0", "bundled": true, "dev": true }, - "istanbul-lib-hook": { - "version": "1.1.0", + "get-value": { + "version": "2.0.6", "bundled": true, - "dev": true, - "requires": { - "append-transform": "0.4.0" - } + "dev": true }, - "istanbul-lib-instrument": { - "version": "1.10.1", + "glob": { + "version": "7.1.2", "bundled": true, "dev": true, "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "istanbul-lib-report": { - "version": "1.1.3", + "graceful-fs": { + "version": "4.1.11", "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } + "dev": true }, - "istanbul-lib-source-maps": { - "version": "1.2.3", + "handlebars": { + "version": "4.0.11", "bundled": true, "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { - "debug": { - "version": "3.1.0", + "source-map": { + "version": "0.4.4", "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "amdefine": ">=0.0.4" } } } }, - "istanbul-reports": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { + "has-value": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "locate-path": { - "version": "2.0.0", + "has-values": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "path-exists": { - "version": "3.0.0", + "kind-of": { + "version": "4.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, - "lodash": { - "version": "4.17.10", + "hosted-git-info": { + "version": "2.6.0", "bundled": true, "dev": true }, - "longest": { - "version": "1.0.1", + "imurmurhash": { + "version": "0.1.4", "bundled": true, "dev": true }, - "loose-envify": { - "version": "1.3.1", + "inflight": { + "version": "1.0.6", "bundled": true, "dev": true, "requires": { - "js-tokens": "3.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, - "lru-cache": { - "version": "4.1.3", + "inherits": { + "version": "2.0.3", "bundled": true, - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } + "dev": true }, - "map-cache": { - "version": "0.2.2", + "invert-kv": { + "version": "1.0.0", "bundled": true, "dev": true }, - "map-visit": { - "version": "1.0.0", + "is-accessor-descriptor": { + "version": "0.1.6", "bundled": true, "dev": true, "requires": { - "object-visit": "1.0.1" + "kind-of": "^3.0.2" } }, - "md5-hex": { - "version": "1.3.0", + "is-arrayish": { + "version": "0.2.1", "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "0.1.1" - } + "dev": true }, - "md5-o-matic": { - "version": "0.1.1", + "is-buffer": { + "version": "1.1.6", "bundled": true, "dev": true }, - "mem": { - "version": "1.1.0", + "is-builtin-module": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.2.0" + "builtin-modules": "^1.0.0" } }, - "merge-source-map": { - "version": "1.1.0", + "is-data-descriptor": { + "version": "0.1.4", "bundled": true, "dev": true, "requires": { - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } + "kind-of": "^3.0.2" } }, - "micromatch": { - "version": "3.1.10", + "is-descriptor": { + "version": "0.1.6", "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", + "version": "5.1.0", "bundled": true, "dev": true } } }, - "mimic-fn": { - "version": "1.2.0", + "is-extendable": { + "version": "0.1.1", "bundled": true, "dev": true }, - "minimatch": { - "version": "3.0.4", + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.11" + "kind-of": "^3.0.2" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", + "is-odd": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "is-number": "^4.0.0" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", + "is-number": { + "version": "4.0.0", "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } + "dev": true } } }, - "mkdirp": { - "version": "0.5.1", + "is-plain-object": { + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "isobject": "^3.0.1" } }, - "ms": { - "version": "2.0.0", + "is-stream": { + "version": "1.1.0", "bundled": true, "dev": true }, - "nanomatch": { - "version": "1.2.9", + "is-utf8": { + "version": "0.2.1", "bundled": true, - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } + "dev": true }, - "normalize-package-data": { - "version": "2.4.0", + "is-windows": { + "version": "1.0.2", "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - } + "dev": true }, - "npm-run-path": { - "version": "2.0.2", + "isarray": { + "version": "1.0.0", "bundled": true, - "dev": true, - "requires": { - "path-key": "2.0.1" - } + "dev": true }, - "number-is-nan": { - "version": "1.0.1", + "isexe": { + "version": "2.0.0", "bundled": true, "dev": true }, - "object-assign": { - "version": "4.1.1", + "isobject": { + "version": "3.0.1", "bundled": true, "dev": true }, - "object-copy": { - "version": "0.1.0", + "istanbul-lib-coverage": { + "version": "1.2.0", "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } + "dev": true }, - "object-visit": { - "version": "1.0.1", + "istanbul-lib-hook": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } + "append-transform": "^0.4.0" } }, - "object.pick": { - "version": "1.3.0", + "istanbul-lib-report": { + "version": "1.1.3", "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { - "isobject": { - "version": "3.0.1", + "has-flag": { + "version": "1.0.0", "bundled": true, "dev": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "once": { - "version": "1.4.0", + "istanbul-lib-source-maps": { + "version": "1.2.5", "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" } }, - "optimist": { - "version": "0.6.1", + "istanbul-reports": { + "version": "1.4.1", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "handlebars": "^4.0.3" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", + "kind-of": { + "version": "3.2.2", "bundled": true, "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "is-buffer": "^1.1.5" } }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", + "lazy-cache": { + "version": "1.0.4", "bundled": true, "dev": true, - "requires": { - "p-try": "1.0.0" - } + "optional": true }, - "p-locate": { - "version": "2.0.0", + "lcid": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "p-limit": "1.2.0" + "invert-kv": "^1.0.0" } }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", + "load-json-file": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "error-ex": "1.3.1" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", + "locate-path": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } }, - "path-parse": { - "version": "1.0.5", + "longest": { + "version": "1.0.1", "bundled": true, "dev": true }, - "path-type": { - "version": "1.1.0", + "lru-cache": { + "version": "4.1.3", "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", + "map-cache": { + "version": "0.2.2", "bundled": true, "dev": true }, - "pinkie-promise": { - "version": "2.0.1", + "map-visit": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "pinkie": "2.0.4" + "object-visit": "^1.0.0" } }, - "pkg-dir": { - "version": "1.0.0", + "md5-hex": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - } + "md5-o-matic": "^0.1.1" } }, - "posix-character-classes": { + "md5-o-matic": { "version": "0.1.1", "bundled": true, "dev": true }, - "pseudomap": { - "version": "1.0.2", + "mem": { + "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } }, - "read-pkg": { + "merge-source-map": { "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } } }, - "read-pkg-up": { - "version": "1.0.1", + "micromatch": { + "version": "3.1.10", "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { - "find-up": { - "version": "1.1.2", + "kind-of": { + "version": "6.0.2", "bundled": true, - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } + "dev": true } } }, - "regenerator-runtime": { - "version": "0.11.1", + "mimic-fn": { + "version": "1.2.0", "bundled": true, "dev": true }, - "regex-not": { - "version": "1.0.2", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "brace-expansion": "^1.1.7" } }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "repeating": { - "version": "2.0.1", + "mixin-deep": { + "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "is-finite": "1.0.2" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", + "mkdirp": { + "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, - "resolve-from": { + "ms": { "version": "2.0.0", "bundled": true, "dev": true }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", + "nanomatch": { + "version": "1.2.9", "bundled": true, "dev": true, - "optional": true, "requires": { - "align-text": "0.1.4" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, - "rimraf": { - "version": "2.6.2", + "normalize-package-data": { + "version": "2.4.0", "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "safe-regex": { - "version": "1.1.0", + "npm-run-path": { + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "ret": "0.1.15" + "path-key": "^2.0.0" } }, - "semver": { - "version": "5.5.0", + "number-is-nan": { + "version": "1.0.1", "bundled": true, "dev": true }, - "set-blocking": { - "version": "2.0.0", + "object-assign": { + "version": "4.1.1", "bundled": true, "dev": true }, - "set-value": { - "version": "2.0.0", + "object-copy": { + "version": "0.1.0", "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", + "define-property": { + "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-descriptor": "^0.1.0" } } } }, - "shebang-command": { - "version": "1.2.0", + "object-visit": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "shebang-regex": "1.0.0" + "isobject": "^3.0.0" } }, - "shebang-regex": { - "version": "1.0.0", + "object.pick": { + "version": "1.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "isobject": "^3.0.1" + } }, - "signal-exit": { - "version": "3.0.2", + "once": { + "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1" + } }, - "slide": { - "version": "1.1.6", + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", "bundled": true, "dev": true }, - "snapdragon": { - "version": "0.8.2", + "os-locale": { + "version": "2.1.0", "bundled": true, "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "snapdragon-node": { - "version": "2.1.1", + "p-finally": { + "version": "1.0.0", "bundled": true, - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" } }, - "snapdragon-util": { - "version": "3.0.1", + "p-locate": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "p-limit": "^1.1.0" } }, - "source-map": { - "version": "0.5.7", + "p-try": { + "version": "1.0.0", "bundled": true, "dev": true }, - "source-map-resolve": { - "version": "0.5.1", + "parse-json": { + "version": "2.2.0", "bundled": true, "dev": true, "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "error-ex": "^1.2.0" } }, - "source-map-url": { - "version": "0.4.0", + "pascalcase": { + "version": "0.1.1", "bundled": true, "dev": true }, - "spawn-wrap": { - "version": "1.4.2", + "path-exists": { + "version": "2.1.0", "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" + "pinkie-promise": "^2.0.0" } }, - "spdx-correct": { - "version": "3.0.0", + "path-is-absolute": { + "version": "1.0.1", "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - } + "dev": true }, - "spdx-exceptions": { - "version": "2.1.0", + "path-key": { + "version": "2.0.1", "bundled": true, "dev": true }, - "spdx-expression-parse": { - "version": "3.0.0", + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "spdx-license-ids": { - "version": "3.0.0", + "pify": { + "version": "2.3.0", "bundled": true, "dev": true }, - "split-string": { - "version": "3.1.0", + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2" + "pinkie": "^2.0.0" } }, - "static-extend": { - "version": "0.1.2", + "pkg-dir": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "find-up": "^1.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", + "find-up": { + "version": "1.1.2", "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } }, - "string-width": { - "version": "2.1.1", + "posix-character-classes": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "read-pkg": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", + "find-up": { + "version": "1.1.2", "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } }, - "strip-ansi": { - "version": "3.0.1", + "regex-not": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, - "strip-bom": { + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { "version": "2.0.0", "bundled": true, + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "is-utf8": "0.2.1" + "align-text": "^0.1.1" } }, - "strip-eof": { - "version": "1.0.0", + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", "bundled": true, "dev": true }, - "supports-color": { + "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true }, - "test-exclude": { - "version": "4.2.1", + "set-value": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.10", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "braces": { - "version": "2.3.2", + "extend-shallow": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "is-extendable": "^0.1.0" } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" } }, - "extglob": { - "version": "2.0.4", + "define-property": { + "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "is-descriptor": "^0.1.0" } }, - "fill-range": { - "version": "4.0.0", + "extend-shallow": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } + "is-extendable": "^0.1.0" } - }, - "is-accessor-descriptor": { + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "is-descriptor": "^1.0.0" } }, - "is-data-descriptor": { + "is-accessor-descriptor": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, - "is-descriptor": { - "version": "1.0.2", + "is-data-descriptor": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, - "is-number": { - "version": "3.0.0", + "is-descriptor": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, "kind-of": { "version": "6.0.2", "bundled": true, "dev": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } } } }, - "to-fast-properties": { - "version": "1.0.3", + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7", "bundled": true, "dev": true }, - "to-object-path": { - "version": "0.3.0", + "source-map-resolve": { + "version": "0.5.2", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, - "to-regex": { - "version": "3.0.2", + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", "bundled": true, "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, - "to-regex-range": { - "version": "2.1.1", + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", + "define-property": { + "version": "0.2.5", "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "is-descriptor": "^0.1.0" } } } }, - "trim-right": { - "version": "1.0.1", + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", "bundled": true, "dev": true }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "uglify-js": { "version": "2.8.29", "bundled": true, "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -18029,9 +8822,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -18048,10 +8841,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -18059,7 +8852,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -18067,10 +8860,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -18080,8 +8873,8 @@ "bundled": true, "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -18089,9 +8882,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -18108,11 +8901,6 @@ "version": "0.1.4", "bundled": true, "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true } } }, @@ -18126,7 +8914,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -18141,16 +8929,16 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "which": { - "version": "1.3.0", + "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -18174,16 +8962,21 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -18191,9 +8984,17 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" } } } @@ -18208,9 +9009,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "y18n": { @@ -18228,25 +9029,20 @@ "bundled": true, "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, "camelcase": { "version": "4.1.0", "bundled": true, @@ -18257,17 +9053,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "3.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "yargs-parser": { @@ -18275,7 +9063,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -18285,7 +9073,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -18297,20 +9085,74 @@ } } }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" } }, "observable-to-promise": { @@ -18319,8 +9161,8 @@ "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", "dev": true, "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.2.0" + "is-observable": "^0.2.0", + "symbol-observable": "^1.0.4" }, "dependencies": { "is-observable": { @@ -18329,7 +9171,7 @@ "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "^0.2.2" }, "dependencies": { "symbol-observable": { @@ -18346,9 +9188,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -18357,7 +9198,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -18366,8 +9207,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "option-chain": { @@ -18376,6 +9217,11 @@ "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", "dev": true }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -18383,13 +9229,11 @@ "dev": true }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -18416,11 +9260,11 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -18428,7 +9272,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-timeout": { @@ -18437,7 +9281,7 @@ "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "p-try": { @@ -18451,10 +9295,10 @@ "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" } }, "package-json": { @@ -18463,10 +9307,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { "got": { @@ -18475,17 +9319,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.2", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } } } @@ -18496,10 +9340,27 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } } }, "parse-json": { @@ -18508,7 +9369,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse-ms": { @@ -18517,6 +9378,16 @@ "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -18525,8 +9396,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -18539,28 +9409,44 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "requires": { "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } } }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "2.3.0" + "pify": "^3.0.0" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "1.0.0", @@ -18574,7 +9460,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "1.0.0" + "pinkie": "^1.0.0" } }, "pkg-conf": { @@ -18583,8 +9469,8 @@ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { - "find-up": "2.1.0", - "load-json-file": "4.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "dependencies": { "load-json-file": { @@ -18593,10 +9479,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "parse-json": { @@ -18605,15 +9491,9 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -18623,7 +9503,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "plur": { @@ -18632,7 +9512,121 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.4.0" + "irregular-plurals": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "power-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz", + "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==", + "requires": { + "define-properties": "^1.1.2", + "empower": "^1.2.3", + "power-assert-formatter": "^1.3.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "power-assert-context-formatter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", + "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", + "requires": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.1.1" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", + "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", + "requires": { + "acorn": "^4.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + } + }, + "power-assert-context-traversal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", + "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", + "requires": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "requires": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "power-assert-renderer-assertion": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", + "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", + "requires": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.1.1" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" + }, + "power-assert-renderer-comparison": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", + "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", + "requires": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "power-assert-renderer-diagram": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", + "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", + "requires": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.1.1", + "stringifier": "^1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", + "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", + "requires": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", + "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", + "requires": { + "eastasianwidth": "^0.1.1" } }, "prepend-http": { @@ -18648,13 +9642,12 @@ "dev": true }, "pretty-ms": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", - "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", + "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", "dev": true, "requires": { - "parse-ms": "1.0.1", - "plur": "2.1.2" + "parse-ms": "^1.0.0" }, "dependencies": { "parse-ms": { @@ -18674,18 +9667,58 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "prop-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", + "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" + }, + "propprop": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", + "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" + }, + "protobufjs": { + "version": "6.8.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", + "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^3.0.32", + "@types/node": "^8.9.4", + "long": "^4.0.0" + } }, "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.1.tgz", + "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==", "dev": true, "requires": { - "fill-keys": "1.0.2", - "module-not-found-error": "1.0.1", - "resolve": "1.1.7" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + } } }, "pseudomap": { @@ -18693,11 +9726,15 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { "version": "5.1.1", @@ -18705,9 +9742,9 @@ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "dev": true, "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "randomatic": { @@ -18716,9 +9753,9 @@ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.2", - "math-random": "1.0.1" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -18726,25 +9763,19 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -18761,9 +9792,26 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -18772,31 +9820,22 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -18805,10 +9844,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "redent": { @@ -18817,8 +9856,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" }, "dependencies": { "indent-string": { @@ -18827,7 +9866,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } } } @@ -18850,7 +9889,16 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpu-core": { @@ -18859,9 +9907,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "registry-auth-token": { @@ -18870,8 +9918,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.7", - "safe-buffer": "5.1.2" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -18880,7 +9928,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.7" + "rc": "^1.0.1" } }, "regjsgen": { @@ -18895,7 +9943,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" } }, "release-zalgo": { @@ -18904,7 +9952,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.1.1" + "es6-error": "^4.0.1" } }, "remove-trailing-separator": { @@ -18916,14 +9964,12 @@ "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -18931,7 +9977,34 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "require-directory": { @@ -18962,7 +10035,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-from": { @@ -18971,13 +10044,18 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "1.0.1" + "lowercase-keys": "^1.0.0" } }, "restore-cursor": { @@ -18986,8 +10064,27 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry-axios": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", + "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" + }, + "retry-request": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", + "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", + "requires": { + "request": "^2.81.0", + "through2": "^2.0.0" } }, "right-align": { @@ -18997,14 +10094,26 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "samsam": { "version": "1.3.0", @@ -19023,7 +10132,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "serialize-error": { @@ -19043,12 +10152,33 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -19062,24 +10192,23 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", - "integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", + "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", "requires": { - "diff": "3.5.0", - "formatio": "1.2.0", - "lodash.get": "4.4.2", - "lolex": "2.6.0", - "nise": "1.3.3", - "supports-color": "4.5.0", - "type-detect": "4.0.8" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.5.0", + "lodash.get": "^4.4.2", + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "1.0.0", @@ -19087,7 +10216,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { "is-fullwidth-code-point": { @@ -19104,20 +10233,136 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } }, "source-map-support": { "version": "0.5.6", @@ -19125,8 +10370,8 @@ "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -19137,14 +10382,19 @@ } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -19159,8 +10409,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -19169,18 +10419,83 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, + "split-array-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", + "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", + "requires": { + "async": "^2.4.0", + "is-stream-ended": "^0.1.0" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-events": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", + "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -19193,42 +10508,37 @@ "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", "dev": true }, + "string-format-obj": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", + "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==" + }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" + } + }, + "stringifier": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", + "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", + "requires": { + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" } }, "strip-ansi": { @@ -19236,7 +10546,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -19251,7 +10561,7 @@ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.1" } }, "strip-eof": { @@ -19265,7 +10575,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -19274,22 +10584,35 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.1.1", - "debug": "3.1.0", - "extend": "3.0.1", - "form-data": "2.3.2", - "formidable": "1.2.1", - "methods": "1.1.2", - "mime": "1.6.0", - "qs": "6.5.2", - "readable-stream": "2.3.6" + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } } }, "supertap": { @@ -19298,11 +10621,11 @@ "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", "dev": true, "requires": { - "arrify": "1.0.1", - "indent-string": "3.2.0", - "js-yaml": "3.11.0", - "serialize-error": "2.1.0", - "strip-ansi": "4.0.0" + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -19317,7 +10640,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -19328,16 +10651,16 @@ "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", "dev": true, "requires": { - "methods": "1.1.2", - "superagent": "3.8.3" + "methods": "~1.1.2", + "superagent": "^3.0.0" } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "2.0.0" + "has-flag": "^3.0.0" } }, "symbol-observable": { @@ -19352,7 +10675,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-encoding": { @@ -19370,56 +10693,9 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "time-require": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", - "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", - "dev": true, "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "0.1.2" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "time-zone": { @@ -19440,6 +10716,57 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "^1.4.1" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -19458,11 +10785,35 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -19470,9 +10821,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -19489,11 +10840,18 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -19508,9 +10866,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -19529,13 +10887,45 @@ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", "dev": true }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unique-temp-dir": { @@ -19544,17 +10934,63 @@ "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", "dev": true, "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", + "mkdirp": "^0.5.1", + "os-tmpdir": "^1.0.1", "uid2": "0.0.3" } }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "requires": { + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", @@ -19567,25 +11003,30 @@ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "url-to-options": { @@ -19594,11 +11035,23 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "^6.0.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "validate-npm-package-license": { "version": "3.0.3", @@ -19606,8 +11059,18 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "well-known-symbols": { @@ -19617,11 +11080,11 @@ "dev": true }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -19635,15 +11098,46 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, "wordwrap": { "version": "0.0.3", @@ -19656,27 +11150,14 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.3.0", @@ -19684,9 +11165,9 @@ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "write-json-file": { @@ -19695,12 +11176,12 @@ "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", "dev": true, "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "pify": "3.0.0", - "sort-keys": "2.0.0", - "write-file-atomic": "2.3.0" + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" }, "dependencies": { "detect-indent": { @@ -19708,23 +11189,17 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, "write-pkg": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", - "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", "dev": true, "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.3.0" + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" } }, "xdg-basedir": { @@ -19736,8 +11211,7 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { "version": "3.2.1", @@ -19750,30 +11224,86 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } } } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 51080846e75..5e7db846175 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,13 +15,13 @@ }, "dependencies": { "@google-cloud/datastore": "1.4.0", - "sinon": "4.1.2", - "yargs": "10.0.3" + "sinon": "5.1.1", + "yargs": "11.0.0" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "2.2.3", - "ava": "^0.23.0", - "nyc": "^11.3.0", - "proxyquire": "1.8.0" + "@google-cloud/nodejs-repo-tools": "2.3.0", + "ava": "^0.25.0", + "nyc": "^12.0.2", + "proxyquire": "2.0.1" } } From c2bd8e131e78842a7418cab952f86c02f7e2d0f1 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 20 Jun 2018 11:06:56 -0700 Subject: [PATCH 199/820] Delete unused Datastore region tags / samples. (#110) --- .../nodejs-datastore/samples/README.md | 27 +-------- .../nodejs-datastore/samples/concepts.js | 15 ----- handwritten/nodejs-datastore/samples/error.js | 59 ------------------- .../samples/system-test/concepts.test.js | 1 - .../samples/system-test/error.test.js | 29 --------- handwritten/nodejs-datastore/samples/tasks.js | 4 +- 6 files changed, 4 insertions(+), 131 deletions(-) delete mode 100644 handwritten/nodejs-datastore/samples/error.js delete mode 100644 handwritten/nodejs-datastore/samples/system-test/error.test.js diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 1c0073a9bdb..75f28de9413 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -1,3 +1,5 @@ +[//]: # "This README.md file is auto-generated, all changes to this file will be lost." +[//]: # "To regenerate it, use `npm run generate-scaffolding`." Google Cloud Platform logo # Google Cloud Datastore: Node.js Samples @@ -29,29 +31,6 @@ View the [source code][tasks_0_code]. [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) __Usage:__ `node tasks.js --help` - -``` -tasks.js - -Commands: - tasks.js new Adds a task with a description . - tasks.js done Marks the specified task as done. - tasks.js list Lists all tasks ordered by creation time. - tasks.js delete Deletes a task. - -Options: - --version Show version number [boolean] - --help Show help [boolean] - -Examples: - node tasks.js new "Buy milk" Adds a task with description "Buy milk". - node tasks.js done 12345 Marks task 12345 as Done. - node tasks.js list Lists all tasks ordered by creation time - node tasks.js delete 12345 Deletes task 12345. - -For more information, see https://cloud.google.com/datastore/docs -``` - [tasks_0_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial [tasks_0_code]: tasks.js @@ -72,5 +51,5 @@ __Usage:__ `node error.js` [error_2_docs]: https://cloud.google.com/datastore/docs/concepts/errors [error_2_code]: error.js -[shell_img]: //gstatic.com/cloudssh/images/open-btn.png +[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index d62737116df..6f5ac37050e 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -817,21 +817,6 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testDistinctQuery(t) { - t.plan(0); - const datastore = this.datastore; - - // [START datastore_distinct_query] - const query = datastore - .createQuery('Task') - .groupBy(['category', 'priority']) - .order('category') - .order('priority'); - // [END datastore_distinct_query] - - return this.datastore.runQuery(query); - } - testDistinctOnQuery(t) { t.plan(0); const datastore = this.datastore; diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js deleted file mode 100644 index bd20ea214d8..00000000000 --- a/handwritten/nodejs-datastore/samples/error.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2017, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const Datastore = require('@google-cloud/datastore'); - -// [START error] -function runQuery() { - // Creates a client - const datastore = new Datastore({}); - - const query = datastore.createQuery(['Company']).start('badrequest'); - - return datastore - .runQuery(query) - .then(results => { - const entities = results[0]; - console.log('Entities:'); - entities.forEach(entity => console.log(entity)); - return entities; - }) - .catch(err => { - console.log(err.errors); // [...] - console.log(err.code); // 3 (a gRPC error code) - console.log(err.message); // "Bad Request" - console.log(err.response); // {...} - - // Process error - - // For example, treat permission error like no entities were found - // eslint-disable-next-line no-constant-condition - if (/* some condition */ false) { - return []; - } - - // Forward the error to the caller - return Promise.reject(err); - }); -} -// [END error] - -exports.runQuery = runQuery; - -if (module === require.main) { - exports.runQuery(); -} diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js index 9d606618f35..a2a4aa12f21 100644 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -117,7 +117,6 @@ test.serial('performs a projection query', t => { }); }); test.serial(`performs a keys only query`, t => query.testKeysOnlyQuery(t)); -test.serial(`performs a distinct query`, t => query.testDistinctQuery(t)); test.serial(`performs a distinct on query`, t => query.testDistinctOnQuery(t)); test.serial(`performs an array value inequality query`, t => query.testArrayValueInequalityRange(t) diff --git a/handwritten/nodejs-datastore/samples/system-test/error.test.js b/handwritten/nodejs-datastore/samples/system-test/error.test.js deleted file mode 100644 index a584466b7d9..00000000000 --- a/handwritten/nodejs-datastore/samples/system-test/error.test.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2017, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const error = require('../error'); -const test = require(`ava`); -const tools = require(`@google-cloud/nodejs-repo-tools`); - -test.beforeEach(tools.stubConsole); -test.afterEach.always(tools.restoreConsole); - -test(`should have an error`, async t => { - const err = await t.throws(error.runQuery()); - t.truthy(err); - t.is(err.code, 3); -}); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 46113129b23..71e8bf66887 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -158,7 +158,6 @@ function deleteTask(taskId) { // [END datastore_delete_entity] require(`yargs`) // eslint-disable-line - .demand(1) .command( `new `, `Adds a task with a description .`, @@ -178,5 +177,4 @@ require(`yargs`) // eslint-disable-line .example(`node $0 delete 12345`, `Deletes task 12345.`) .wrap(120) .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) - .help() - .strict().argv; + .help().argv; From c5f1ea2a6e7a6eba7c9f8eebe747b583e1e10c3f Mon Sep 17 00:00:00 2001 From: Stephen Date: Thu, 21 Jun 2018 11:25:34 -0400 Subject: [PATCH 200/820] 1.4.1 (#111) ## Fixes - (#101): excludeFromIndexes behavior fix for entities inside arrays. (Thanks, @trollkotze!) - Updated dependencies. --- .../nodejs-datastore/package-lock.json | 1831 +- handwritten/nodejs-datastore/package.json | 2 +- .../samples/package-lock.json | 20556 +++++++++++----- .../nodejs-datastore/samples/package.json | 2 +- 4 files changed, 15396 insertions(+), 6995 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 17c15b66977..ad677bcd758 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "1.4.0", + "version": "1.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -178,9 +178,9 @@ }, "dependencies": { "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true } } @@ -323,7 +323,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -333,22 +334,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -356,12 +361,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "^1.0.1" @@ -369,27 +376,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "^1.1.3", @@ -399,7 +411,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "^6.23.0", @@ -414,7 +427,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -422,7 +436,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "^2.4.0", @@ -431,7 +446,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -443,7 +459,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -459,7 +476,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -470,17 +488,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -489,7 +510,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "^1.8.1", @@ -499,12 +521,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -514,13 +538,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -530,7 +556,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -542,7 +569,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -553,7 +581,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -561,32 +590,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -595,7 +630,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -603,17 +639,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -621,7 +660,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "^2.0.0" @@ -629,7 +669,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -637,17 +678,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -661,7 +705,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -673,7 +718,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -681,7 +727,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "^2.1.0" @@ -689,7 +736,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -697,12 +745,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "^2.1.0", @@ -714,7 +764,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", @@ -724,7 +775,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -732,12 +784,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -745,7 +799,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "^4", @@ -754,22 +809,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -782,7 +841,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -791,7 +851,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "^2.0.0" @@ -799,17 +860,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "^1.4.0", @@ -820,7 +884,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -830,7 +895,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -838,22 +904,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -862,12 +932,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "^1.0.0" @@ -875,22 +947,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -898,12 +974,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -911,17 +989,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -929,7 +1010,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -937,7 +1019,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -945,7 +1028,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -953,37 +1037,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -991,12 +1082,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "^0.4.0" @@ -1004,7 +1097,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "^6.18.0", @@ -1018,7 +1112,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.1", @@ -1029,7 +1124,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -1039,7 +1135,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -1051,7 +1148,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -1061,7 +1159,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "^4.0.3" @@ -1069,17 +1168,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1087,13 +1189,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -1101,7 +1205,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1113,7 +1218,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -1122,24 +1228,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "^3.0.0" @@ -1147,7 +1257,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1156,7 +1267,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -1164,12 +1276,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -1177,7 +1291,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "^0.5.6" @@ -1185,7 +1300,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "^2.0.0", @@ -1205,12 +1321,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1218,12 +1336,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1231,12 +1351,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -1247,7 +1369,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -1255,7 +1378,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -1263,17 +1387,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "^0.1.4", @@ -1282,7 +1409,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -1290,7 +1418,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", @@ -1299,12 +1428,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", @@ -1314,17 +1445,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -1332,7 +1466,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "^0.3.0", @@ -1343,7 +1478,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -1351,7 +1487,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -1359,22 +1496,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1384,17 +1525,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -1402,7 +1546,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" @@ -1410,7 +1555,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1421,17 +1567,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -1440,7 +1589,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1448,7 +1598,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1458,7 +1609,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1468,7 +1620,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -1478,7 +1631,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -1487,7 +1641,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1498,12 +1653,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -1511,22 +1668,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "^1.0.0" @@ -1534,22 +1695,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -1558,7 +1723,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -1566,17 +1732,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -1584,27 +1753,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -1617,7 +1791,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "^1.0.2" @@ -1625,17 +1800,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -1644,17 +1822,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -1664,7 +1845,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -1672,7 +1854,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -1680,17 +1863,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -1702,17 +1888,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -1723,7 +1912,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -1737,13 +1927,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "~1.0.0", @@ -1752,7 +1944,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -1760,23 +1953,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -1785,7 +1982,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1797,12 +1995,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -1812,17 +2012,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "^3.2.0", @@ -1841,7 +2044,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -1851,7 +2055,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1865,7 +2070,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -1873,7 +2079,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -2114,14 +2321,14 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.2.tgz", - "integrity": "sha512-9NfEUDp3tgRhmoxzTpTo+lq+KIVFxZahuRX0LHF/9IzKHaWuoWsIrrJ61zw5cnnlGINX8lqJzXYfQTOICS5Q+A==" + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.4.tgz", + "integrity": "sha512-YMLlzdeNnAyLrQew39IFRkMacAR5BqKGIEei9ZjdHsIZtv+ZWKYTu1i7QJhetxQ9ReXx8w5f+cixdHZG3zgMQA==" }, "@types/request": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.0.tgz", - "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==", + "version": "2.47.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", + "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", "requires": { "@types/caseless": "*", "@types/form-data": "*", @@ -2135,9 +2342,9 @@ "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" }, "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" }, "acorn-es7-plugin": { "version": "1.1.7", @@ -2500,9 +2707,9 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" }, "auto-bind": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", - "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", + "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", "dev": true }, "ava": { @@ -2602,6 +2809,16 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", @@ -3747,18 +3964,18 @@ } }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.1" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, "colors": { @@ -4228,9 +4445,9 @@ } }, "eastasianwidth": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", - "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "ecc-jsbn": { "version": "0.1.1", @@ -4250,12 +4467,12 @@ } }, "empower": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", - "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.0.tgz", + "integrity": "sha512-tP2WqM7QzrPguCCQEQfFFDF+6Pw6YWLQal3+GHQaV+0uIr0S+jyREQPWljE02zFCYPFYLZ3LosiRV+OzTrxPpQ==", "requires": { "core-js": "^2.0.0", - "empower-core": "^0.6.2" + "empower-core": "^1.2.0" } }, "empower-assert": { @@ -4268,9 +4485,9 @@ } }, "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", "requires": { "call-signature": "0.0.2", "core-js": "^2.0.0" @@ -4302,9 +4519,9 @@ "dev": true }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -4412,9 +4629,9 @@ "dev": true }, "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", + "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -4504,9 +4721,9 @@ "dev": true }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true }, "strip-ansi": { @@ -4550,9 +4767,9 @@ }, "dependencies": { "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -4641,30 +4858,22 @@ } }, "espower-source": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/espower-source/-/espower-source-2.2.0.tgz", - "integrity": "sha1-fgBSVa5HtcE2RIZEs/PYAtUD91I=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/espower-source/-/espower-source-2.3.0.tgz", + "integrity": "sha512-Wc4kC4zUAEV7Qt31JRPoBUc5jjowHRylml2L2VaDQ1XEbnqQofGWx+gPR03TZAPokAMl5dqyL36h3ITyMXy3iA==", "dev": true, "requires": { "acorn": "^5.0.0", "acorn-es7-plugin": "^1.0.10", "convert-source-map": "^1.1.1", "empower-assert": "^1.0.0", - "escodegen": "^1.6.1", - "espower": "^2.0.0", + "escodegen": "^1.10.0", + "espower": "^2.1.1", "estraverse": "^4.0.0", "merge-estraverse-visitors": "^1.0.0", "multi-stage-sourcemap": "^0.2.1", "path-is-absolute": "^1.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", - "dev": true - } } }, "espree": { @@ -4675,14 +4884,6 @@ "requires": { "acorn": "^5.5.0", "acorn-jsx": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", - "dev": true - } } }, "esprima": { @@ -5923,9 +6124,9 @@ } }, "google-proto-files": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.0.tgz", - "integrity": "sha512-ZVW1m38l6dJGTqOXuEQnr5VfWxkOsdkDetWGUchq8zXbo3PSVlZU7VQM/YS1pbc/6+mZy3R+xirctVaoLzIhXw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz", + "integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==", "requires": { "globby": "^8.0.0", "power-assert": "^1.4.4", @@ -5987,9 +6188,9 @@ "dev": true }, "grpc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.2.tgz", - "integrity": "sha512-oDrW7TPuP+u9+RboUx8XupS1GOPCdLSmldyMHmlaB5wu38nOzzyDxzLsmleROw5/0XyfyuwsmFX6UUr7FaXN2w==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.3.tgz", + "integrity": "sha512-QPwbAXRXd8IyXAhTdUVgjEqSdvXoTq5uFWSo+eGMTcra12PBJUkAceD+1AUVOx1GqBY74/7T7eB7BB+UOcOY8w==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -5999,19 +6200,23 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -6019,11 +6224,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6031,57 +6238,69 @@ }, "chownr": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.5.1", - "bundled": true + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -6095,7 +6314,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6107,25 +6327,29 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6133,69 +6357,81 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { - "version": "2.3.3", - "bundled": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.0.tgz", + "integrity": "sha512-jWC2Eg+Np4bxah7llu1IrUNSJQxtLz/J+pOjTM0nFpJXGAaV18XBWhUn031Q1tAA/TJtA1jgwnOe9S2PQa4Lbg==", "requires": { - "safe-buffer": "^5.1.2", + "safe-buffer": "^5.1.1", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "ms": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "needle": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", + "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -6204,7 +6440,8 @@ }, "node-pre-gyp": { "version": "0.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -6220,7 +6457,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -6228,11 +6466,13 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==" }, "npm-packlist": { "version": "1.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -6240,7 +6480,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -6250,30 +6491,36 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -6281,11 +6528,13 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "protobufjs": { "version": "5.0.3", @@ -6300,7 +6549,8 @@ }, "rc": { "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "requires": { "deep-extend": "^0.5.1", "ini": "~1.3.0", @@ -6310,7 +6560,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6323,38 +6574,46 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", - "bundled": true + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.5.0", - "bundled": true + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6363,29 +6622,33 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { - "version": "4.4.3", - "bundled": true, + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", + "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.3", + "minipass": "^2.2.4", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", @@ -6394,22 +6657,26 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "requires": { "string-width": "^1.0.2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "yallist": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" } } }, @@ -6623,9 +6890,9 @@ } }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, "ignore-by-default": { "version": "1.0.1", @@ -7987,9 +8254,9 @@ "dev": true }, "nise": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.1.tgz", - "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", + "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", @@ -8095,7 +8362,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -8105,17 +8373,20 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -8123,57 +8394,68 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -8187,7 +8469,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8195,7 +8478,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8203,7 +8487,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8211,7 +8496,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8221,14 +8507,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -8237,7 +8525,8 @@ }, "braces": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -8254,7 +8543,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8264,12 +8554,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -8285,7 +8577,8 @@ }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -8295,13 +8588,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -8311,7 +8606,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -8322,7 +8618,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8332,7 +8629,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -8343,7 +8641,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -8351,12 +8650,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -8365,32 +8666,38 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8399,7 +8706,8 @@ }, "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { "ms": "2.0.0" @@ -8407,22 +8715,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -8430,7 +8742,8 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -8439,7 +8752,8 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8447,7 +8761,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8455,7 +8770,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8465,14 +8781,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -8480,7 +8798,8 @@ }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -8494,7 +8813,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8506,7 +8826,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "^2.3.3", @@ -8520,7 +8841,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -8528,7 +8850,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8536,7 +8859,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8546,7 +8870,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -8555,7 +8880,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -8565,7 +8891,8 @@ }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "dev": true, "requires": { "array-unique": "^0.3.2", @@ -8580,7 +8907,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8588,7 +8916,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8596,7 +8925,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8604,7 +8934,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8612,7 +8943,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8622,14 +8954,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8640,7 +8974,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8650,7 +8985,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", @@ -8660,7 +8996,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -8668,12 +9005,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "^4", @@ -8682,7 +9021,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -8690,27 +9030,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -8723,12 +9068,14 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "^1.4.0", @@ -8739,7 +9086,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -8749,7 +9097,8 @@ }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "^2.0.6", @@ -8759,7 +9108,8 @@ }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -8768,7 +9118,8 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -8778,17 +9129,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -8797,17 +9151,20 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8815,17 +9172,20 @@ }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -8833,7 +9193,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8841,7 +9202,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -8851,24 +9213,28 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", "dev": true } } }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8876,7 +9242,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", "dev": true, "requires": { "is-number": "^4.0.0" @@ -8884,14 +9251,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -8899,42 +9268,50 @@ }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha1-hTjZcDcss3FtU+VVI91UtVeo2Js=", "dev": true, "requires": { "append-transform": "^0.4.0" @@ -8942,7 +9319,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha1-LfEhiMD6d5kMDSF20tC6M5QYglk=", "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -8953,12 +9331,14 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -8968,7 +9348,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", "dev": true, "requires": { "debug": "^3.1.0", @@ -8980,7 +9361,8 @@ }, "istanbul-reports": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", + "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", "dev": true, "requires": { "handlebars": "^4.0.3" @@ -8988,7 +9370,8 @@ }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -8996,13 +9379,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -9010,7 +9395,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -9022,7 +9408,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -9031,19 +9418,22 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "lru-cache": { "version": "4.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -9052,12 +9442,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -9065,7 +9457,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -9073,12 +9466,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -9086,7 +9481,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", "dev": true, "requires": { "source-map": "^0.6.1" @@ -9094,14 +9490,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } } }, "micromatch": { "version": "3.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -9121,19 +9519,22 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -9141,12 +9542,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", "dev": true, "requires": { "for-in": "^1.0.2", @@ -9155,7 +9558,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -9165,7 +9569,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -9173,12 +9578,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -9197,14 +9604,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -9215,7 +9624,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -9223,17 +9633,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -9243,7 +9656,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9253,7 +9667,8 @@ }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "^3.0.0" @@ -9261,7 +9676,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -9269,7 +9685,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -9277,7 +9694,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", @@ -9286,12 +9704,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", "dev": true, "requires": { "execa": "^0.7.0", @@ -9301,12 +9721,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", "dev": true, "requires": { "p-try": "^1.0.0" @@ -9314,7 +9736,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -9322,12 +9745,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -9335,12 +9760,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -9348,22 +9775,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -9373,17 +9804,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -9391,7 +9825,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" @@ -9399,7 +9834,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -9410,17 +9846,20 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -9430,7 +9869,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -9439,7 +9879,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -9450,7 +9891,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -9459,42 +9901,50 @@ }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -9503,7 +9953,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { "glob": "^7.0.5" @@ -9511,7 +9962,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" @@ -9519,17 +9971,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9540,7 +9995,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9550,7 +10006,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -9558,22 +10015,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", "dev": true, "requires": { "base": "^0.11.1", @@ -9588,7 +10049,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -9596,7 +10058,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9604,7 +10067,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9614,7 +10078,8 @@ }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "dev": true, "requires": { "define-property": "^1.0.0", @@ -9624,7 +10089,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -9632,7 +10098,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -9640,7 +10107,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -9648,7 +10116,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -9658,14 +10127,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -9673,12 +10144,14 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", "dev": true, "requires": { "atob": "^2.1.1", @@ -9690,12 +10163,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -9708,7 +10183,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -9717,12 +10193,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -9731,12 +10209,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -9744,7 +10224,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "^0.2.5", @@ -9753,7 +10234,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9763,7 +10245,8 @@ }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -9772,7 +10255,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -9780,7 +10264,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -9788,12 +10273,14 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", "dev": true, "requires": { "arrify": "^1.0.1", @@ -9805,7 +10292,8 @@ }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -9813,7 +10301,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "dev": true, "requires": { "define-property": "^2.0.2", @@ -9824,7 +10313,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -9833,7 +10323,8 @@ }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -9844,7 +10335,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -9858,13 +10350,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -9875,7 +10369,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9883,7 +10378,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9896,7 +10392,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "^0.3.1", @@ -9905,7 +10402,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "^2.0.3", @@ -9915,7 +10413,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -9925,19 +10424,22 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -9945,14 +10447,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -9961,7 +10465,8 @@ }, "which": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -9969,23 +10474,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -9994,12 +10503,14 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -10007,7 +10518,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -10017,7 +10529,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -10027,12 +10540,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -10042,17 +10557,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha1-kLhpk07W6HERXqL/WLA/RyTtLXc=", "dev": true, "requires": { "cliui": "^4.0.0", @@ -10071,12 +10589,14 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", "dev": true, "requires": { "string-width": "^2.1.1", @@ -10086,7 +10606,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -10096,7 +10617,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -10104,7 +10626,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -10151,9 +10674,9 @@ } }, "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" }, "object-visit": { "version": "1.0.1", @@ -10602,32 +11125,32 @@ } }, "power-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz", - "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.0.tgz", + "integrity": "sha512-nDb6a+p2C7Wj8Y2zmFtLpuv+xobXz4+bzT5s7dr0nn71tLozn7nRMQqzwbefzwZN5qOm0N7Cxhw4kXP75xboKA==", "requires": { "define-properties": "^1.1.2", - "empower": "^1.2.3", - "power-assert-formatter": "^1.3.1", + "empower": "^1.3.0", + "power-assert-formatter": "^1.4.1", "universal-deep-strict-equal": "^1.2.1", "xtend": "^4.0.0" } }, "power-assert-context-formatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", - "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", + "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", "requires": { "core-js": "^2.0.0", - "power-assert-context-traversal": "^1.1.1" + "power-assert-context-traversal": "^1.2.0" } }, "power-assert-context-reducer-ast": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", - "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", + "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", "requires": { - "acorn": "^4.0.0", + "acorn": "^5.0.0", "acorn-es7-plugin": "^1.0.12", "core-js": "^2.0.0", "espurify": "^1.6.0", @@ -10635,9 +11158,9 @@ } }, "power-assert-context-traversal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", - "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", + "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", "requires": { "core-js": "^2.0.0", "estraverse": "^4.1.0" @@ -10658,12 +11181,12 @@ } }, "power-assert-renderer-assertion": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", - "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", + "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", "requires": { "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.1.1" + "power-assert-util-string-width": "^1.2.0" } }, "power-assert-renderer-base": { @@ -10672,9 +11195,9 @@ "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" }, "power-assert-renderer-comparison": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", - "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", + "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", "requires": { "core-js": "^2.0.0", "diff-match-patch": "^1.0.0", @@ -10684,30 +11207,30 @@ } }, "power-assert-renderer-diagram": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", - "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", + "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", "requires": { "core-js": "^2.0.0", "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", "stringifier": "^1.3.0" } }, "power-assert-renderer-file": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", - "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", + "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", "requires": { "power-assert-renderer-base": "^1.1.1" } }, "power-assert-util-string-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", - "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", + "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", "requires": { - "eastasianwidth": "^0.1.1" + "eastasianwidth": "^0.2.0" } }, "prelude-ls": { @@ -10799,9 +11322,9 @@ }, "dependencies": { "@types/node": { - "version": "8.10.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", - "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==" + "version": "8.10.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz", + "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==" } } }, @@ -12272,9 +12795,9 @@ } }, "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "unset-value": { diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fc3e91719c3..5f8d48d878a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.4.0", + "version": "1.4.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 4eb9614ac5c..22fc6b20f3e 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -178,9 +178,9 @@ }, "dependencies": { "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true } } @@ -213,5037 +213,13571 @@ "arrify": "^1.0.1" } }, - "@google-cloud/common": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.16.2.tgz", - "integrity": "sha512-GrkaFoj0/oO36pNs4yLmaYhTujuA3i21FdQik99Fd/APix1uhf01VlpJY4lAteTDFLRNkRx6ydEh7OVvmeUHng==", - "requires": { - "array-uniq": "^1.0.3", - "arrify": "^1.0.1", - "concat-stream": "^1.6.0", - "create-error-class": "^3.0.2", - "duplexify": "^3.5.0", - "ent": "^2.2.0", - "extend": "^3.0.1", - "google-auto-auth": "^0.9.0", - "is": "^3.2.0", - "log-driver": "1.2.7", - "methmeth": "^1.1.0", - "modelo": "^4.2.0", - "request": "^2.79.0", - "retry-request": "^3.0.0", - "split-array-stream": "^1.0.0", - "stream-events": "^1.0.1", - "string-format-obj": "^1.1.0", - "through2": "^2.0.3" - } - }, "@google-cloud/datastore": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@google-cloud/datastore/-/datastore-1.4.0.tgz", - "integrity": "sha512-BwFlXHKnXzaydm9+6fEp5khASZvtYC5W5Pf6VXwwOmFmnFfXImGyFJpNov50tVnUw1qLJ8QiS1VD1iXpDCNLmQ==", + "version": "1.4.1", "requires": { - "@google-cloud/common": "^0.16.0", - "arrify": "^1.0.0", - "concat-stream": "^1.5.0", + "@google-cloud/common": "^0.19.2", + "arrify": "^1.0.1", + "concat-stream": "^1.6.2", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auto-auth": "^0.9.0", - "google-gax": "^0.16.0", - "google-proto-files": "^0.15.0", - "is": "^3.0.1", - "lodash.flatten": "^4.2.0", - "lodash.merge": "^4.6.0", + "google-auto-auth": "^0.10.1", + "google-gax": "^0.16.1", + "google-proto-files": "^0.16.0", + "is": "^3.2.1", + "lodash.flatten": "^4.4.0", + "lodash.merge": "^4.6.1", "prop-assign": "^1.0.0", - "propprop": "^0.3.0", - "safe-buffer": "^5.1.1", - "split-array-stream": "^1.0.0", - "stream-events": "^1.0.2", + "propprop": "^0.3.1", + "safe-buffer": "^5.1.2", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4", "through2": "^2.0.3" - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", - "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", - "dev": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.2.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.4.1", - "proxyquire": "1.8.0", - "semver": "^5.5.0", - "sinon": "4.3.0", - "string": "3.3.3", - "supertest": "3.0.0", - "yargs": "11.0.0", - "yargs-parser": "9.0.2" }, "dependencies": { - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "bundled": true }, - "nyc": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", - "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", - "dev": true, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "bundled": true, "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.1", - "istanbul-lib-report": "^1.1.2", - "istanbul-lib-source-maps": "^1.2.2", - "istanbul-reports": "^1.1.3", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.0.2", - "micromatch": "^2.3.11", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.1.1", - "yargs": "^10.0.3", - "yargs-parser": "^8.0.0" + "babel-plugin-check-es2015-constants": "^6.8.0", + "babel-plugin-syntax-trailing-function-commas": "^6.20.0", + "babel-plugin-transform-async-to-generator": "^6.16.0", + "babel-plugin-transform-es2015-destructuring": "^6.19.0", + "babel-plugin-transform-es2015-function-name": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", + "babel-plugin-transform-es2015-parameters": "^6.21.0", + "babel-plugin-transform-es2015-spread": "^6.8.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", + "babel-plugin-transform-exponentiation-operator": "^6.8.0", + "package-hash": "^1.2.0" }, "dependencies": { - "align-text": { - "version": "0.1.4", + "md5-hex": { + "version": "1.3.0", "bundled": true, - "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "md5-o-matic": "^0.1.1" } }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", + "package-hash": { + "version": "1.2.0", "bundled": true, - "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "md5-hex": "^1.3.0" } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "bundled": true, + "requires": { + "@ava/babel-plugin-throws-helper": "^2.0.0", + "babel-plugin-espower": "^2.3.2" + } + }, + "@ava/write-file-atomic": { + "version": "2.2.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "@babel/code-frame": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/highlight": "7.0.0-beta.49" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/types": "7.0.0-beta.49", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "bundled": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/types": "7.0.0-beta.49" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.49", + "bundled": true + }, + "@babel/template": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.49", + "@babel/helper-function-name": "7.0.0-beta.49", + "@babel/helper-split-export-declaration": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + }, + "dependencies": { + "globals": { + "version": "11.7.0", + "bundled": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.49", + "bundled": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { "version": "2.0.0", + "bundled": true + } + } + }, + "@concordance/react": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.1" + } + }, + "@google-cloud/common": { + "version": "0.19.2", + "bundled": true, + "requires": { + "@types/duplexify": "^3.5.0", + "@types/request": "^2.47.0", + "arrify": "^1.0.1", + "axios": "^0.18.0", + "duplexify": "^3.5.4", + "ent": "^2.2.0", + "extend": "^3.0.1", + "google-auth-library": "^1.4.0", + "is": "^3.2.1", + "pify": "^3.0.0", + "request": "^2.85.0", + "retry-request": "^3.3.1", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4", + "through2": "^2.0.3" + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "semver": "^5.5.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "cliui": { + "version": "4.1.0", "bundled": true, - "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } + "lodash": { + "version": "4.17.5", + "bundled": true }, - "babel-generator": { - "version": "6.26.0", + "nyc": { + "version": "11.4.1", "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.6", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.3", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" }, "dependencies": { - "cross-spawn": { - "version": "5.1.0", + "align-text": { + "version": "0.1.4", "bundled": true, - "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "append-transform": { + "version": "0.4.0", "bundled": true, - "dev": true, "requires": { - "amdefine": ">=0.0.4" + "default-require-extensions": "^1.0.0" } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invariant": { - "version": "2.2.2", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.1", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "arr-diff": { + "version": "2.0.0", "bundled": true, - "dev": true, "requires": { - "has-flag": "^1.0.0" + "arr-flatten": "^1.0.1" } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, "debug": { - "version": "3.1.0", + "version": "2.6.9", "bundled": true, - "dev": true, "requires": { "ms": "2.0.0" } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { + }, + "debug-log": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { "version": "3.0.0", + "bundled": true + }, + "glob": { + "version": "7.1.2", "bundled": true, - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "bundled": true, - "dev": true - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mimic-fn": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", "bundled": true, - "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } - } - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", + }, + "glob-parent": { + "version": "2.0.0", "bundled": true, - "dev": true, "requires": { - "kind-of": "^3.0.2" + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { - "kind-of": { - "version": "3.2.2", + "source-map": { + "version": "0.4.4", "bundled": true, - "dev": true, "requires": { - "is-buffer": "^1.1.5" + "amdefine": ">=0.0.4" } } } }, - "kind-of": { - "version": "4.0.0", + "has-ansi": { + "version": "2.0.0", "bundled": true, - "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ansi-regex": "^2.0.0" } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", "bundled": true, - "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "semver": { - "version": "5.4.1", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "^1.0.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "invariant": { + "version": "2.2.2", "bundled": true, - "dev": true + "requires": { + "loose-envify": "^1.0.0" + } }, - "strip-ansi": { - "version": "4.0.0", + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", "bundled": true, - "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "builtin-modules": "^1.0.0" } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", "bundled": true, - "dev": true, - "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "is-primitive": "^2.0.0" } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-finite": { "version": "1.0.2", "bundled": true, - "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "number-is-nan": "^1.0.0" } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "10.0.3", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", + }, + "is-fullwidth-code-point": { + "version": "1.0.0", "bundled": true, - "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "requires": { + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { - "string-width": { - "version": "1.0.2", + "supports-color": { + "version": "3.2.3", "bundled": true, - "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "has-flag": "^1.0.0" } } } - } - } - }, - "yargs-parser": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", "bundled": true, - "dev": true - } - } - } - } - }, - "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" - } - }, - "sinon": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", - "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" - } - } - } - }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", - "dev": true, - "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "^0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", - "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" - }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "requires": { - "samsam": "1.3.0" - } - }, - "@types/long": { - "version": "3.0.32", - "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", - "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" - }, - "@types/node": { - "version": "8.10.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", - "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==" - }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - }, - "acorn-es7-plugin": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", - "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" - }, - "auto-bind": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", - "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", - "dev": true - }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, - "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "bundled": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "proxyquire": { + "version": "1.8.0", + "bundled": true, + "requires": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" + } + }, + "sinon": { + "version": "4.3.0", + "bundled": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "bundled": true, + "requires": { + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "bundled": true + }, + "chalk": { + "version": "0.4.0", + "bundled": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "pretty-ms": { + "version": "0.2.2", + "bundled": true, + "requires": { + "parse-ms": "^0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "bundled": true + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "bundled": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "bundled": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "bundled": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "bundled": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "bundled": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "bundled": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "bundled": true + }, + "@sindresorhus/is": { + "version": "0.7.0", + "bundled": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "bundled": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@types/caseless": { + "version": "0.12.1", + "bundled": true + }, + "@types/duplexify": { + "version": "3.5.0", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/long": { + "version": "3.0.32", + "bundled": true + }, + "@types/node": { + "version": "10.3.4", + "bundled": true + }, + "@types/request": { + "version": "2.47.1", + "bundled": true, + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } + }, + "@types/tough-cookie": { + "version": "2.3.3", + "bundled": true + }, + "acorn": { + "version": "5.7.1", + "bundled": true + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "bundled": true + }, + "acorn-jsx": { + "version": "3.0.1", + "bundled": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "bundled": true + } + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "bundled": true + }, + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "ansi-escapes": { + "version": "3.1.0", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "bundled": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "bundled": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "argv": { + "version": "0.0.2", + "bundled": true + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "arr-exclude": { + "version": "1.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-differ": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "1.0.0", + "bundled": true + }, + "array-find": { + "version": "1.0.0", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "ascli": { + "version": "1.0.1", + "bundled": true, + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "async": { + "version": "2.6.1", + "bundled": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "atob": { + "version": "2.1.1", + "bundled": true + }, + "auto-bind": { + "version": "1.2.1", + "bundled": true + }, + "ava": { + "version": "0.25.0", + "bundled": true, + "requires": { + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "empower-core": { + "version": "0.6.2", + "bundled": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, + "globby": { + "version": "6.1.0", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "ava-init": { + "version": "0.2.1", + "bundled": true, + "requires": { + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.7.0", + "bundled": true + }, + "axios": { + "version": "0.18.0", + "bundled": true, + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "bundled": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-espower": { + "version": "2.4.0", + "bundled": true, + "requires": { + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.11.0", + "bundled": true + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, + "buf-compare": { + "version": "1.0.1", + "bundled": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "bundled": true + }, + "buffer-from": { + "version": "1.1.0", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "bytebuffer": { + "version": "5.0.1", + "bundled": true, + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "bundled": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "bundled": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + } + } + }, + "call-matcher": { + "version": "1.0.1", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "bundled": true + }, + "call-signature": { + "version": "0.0.2", + "bundled": true + }, + "caller-path": { + "version": "0.1.0", + "bundled": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "bundled": true + }, + "camelcase": { + "version": "2.1.1", + "bundled": true + }, + "camelcase-keys": { + "version": "2.1.0", + "bundled": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "catharsis": { + "version": "0.8.9", + "bundled": true, + "requires": { + "underscore-contrib": "~0.3.0" + } + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "bundled": true + }, + "chokidar": { + "version": "1.7.0", + "bundled": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "ci-info": { + "version": "1.1.3", + "bundled": true + }, + "circular-json": { + "version": "0.3.3", + "bundled": true + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "1.3.0", + "bundled": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "bundled": true + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "bundled": true + }, + "cli-truncate": { + "version": "1.1.0", + "bundled": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "co-with-promise": { + "version": "4.6.0", + "bundled": true, + "requires": { + "pinkie-promise": "^1.0.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "bundled": true, + "requires": { + "convert-to-spaces": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "codecov": { + "version": "3.0.2", + "bundled": true, + "requires": { + "argv": "0.0.2", + "request": "^2.81.0", + "urlgrey": "0.4.4" + } + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "bundled": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "bundled": true + }, + "colors": { + "version": "1.1.2", + "bundled": true + }, + "colour": { + "version": "0.7.1", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "bundled": true + }, + "common-path-prefix": { + "version": "1.0.0", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concordance": { + "version": "3.0.0", + "bundled": true, + "requires": { + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "bundled": true, + "requires": { + "time-zone": "^1.0.0" + } + } + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "bundled": true + }, + "cookiejar": { + "version": "2.1.2", + "bundled": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-assert": { + "version": "0.2.1", + "bundled": true, + "requires": { + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" + } + }, + "core-js": { + "version": "2.5.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-time": { + "version": "0.1.1", + "bundled": true + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "decompress-response": { + "version": "3.3.0", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "bundled": true + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "deep-is": { + "version": "0.1.3", + "bundled": true + }, + "deep-strict-equal": { + "version": "0.2.0", + "bundled": true, + "requires": { + "core-assert": "^0.2.0" + } + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "2.2.2", + "bundled": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "diff-match-patch": { + "version": "1.0.1", + "bundled": true + }, + "dir-glob": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "bundled": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.0", + "bundled": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "bundled": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "bundled": true + }, + "domhandler": { + "version": "2.4.2", + "bundled": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "bundled": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "empower": { + "version": "1.3.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "empower-core": "^1.2.0" + } + }, + "empower-assert": { + "version": "1.1.0", + "bundled": true, + "requires": { + "estraverse": "^4.2.0" + } + }, + "empower-core": { + "version": "1.2.0", + "bundled": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "bundled": true + }, + "entities": { + "version": "1.1.1", + "bundled": true + }, + "equal-length": { + "version": "1.0.1", + "bundled": true + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "bundled": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-error": { + "version": "4.1.1", + "bundled": true + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escallmatch": { + "version": "1.5.0", + "bundled": true, + "requires": { + "call-matcher": "^1.0.0", + "esprima": "^2.0.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "bundled": true + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "escodegen": { + "version": "1.10.0", + "bundled": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "bundled": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "4.19.1", + "bundled": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "globals": { + "version": "11.7.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "2.9.0", + "bundled": true, + "requires": { + "get-stdin": "^5.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "5.0.1", + "bundled": true + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "bundled": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" + }, + "dependencies": { + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "2.6.0", + "bundled": true, + "requires": { + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "bundled": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "bundled": true + }, + "espower": { + "version": "2.1.1", + "bundled": true, + "requires": { + "array-find": "^1.0.0", + "escallmatch": "^1.5.0", + "escodegen": "^1.7.0", + "escope": "^3.3.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.3.0", + "estraverse": "^4.1.0", + "source-map": "^0.5.0", + "type-name": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "espower-loader": { + "version": "1.2.2", + "bundled": true, + "requires": { + "convert-source-map": "^1.1.0", + "espower-source": "^2.0.0", + "minimatch": "^3.0.0", + "source-map-support": "^0.4.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "espower-location-detector": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" + } + }, + "espower-source": { + "version": "2.3.0", + "bundled": true, + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.10", + "convert-source-map": "^1.1.1", + "empower-assert": "^1.0.0", + "escodegen": "^1.10.0", + "espower": "^2.1.1", + "estraverse": "^4.0.0", + "merge-estraverse-visitors": "^1.0.0", + "multi-stage-sourcemap": "^0.2.1", + "path-is-absolute": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "espree": { + "version": "3.5.4", + "bundled": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "bundled": true + }, + "espurify": { + "version": "1.8.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0" + } + }, + "esquery": { + "version": "1.0.1", + "bundled": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "bundled": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "event-emitter": { + "version": "0.3.5", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "bundled": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-diff": { + "version": "1.1.2", + "bundled": true + }, + "fast-glob": { + "version": "2.2.2", + "bundled": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "bundled": true + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "bundled": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-keys": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "bundled": true, + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "fn-name": { + "version": "2.0.1", + "bundled": true + }, + "follow-redirects": { + "version": "1.5.0", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "bundled": true + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-name-support": { + "version": "0.2.0", + "bundled": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "bundled": true + }, + "gcp-metadata": { + "version": "0.6.3", + "bundled": true, + "requires": { + "axios": "^0.18.0", + "extend": "^3.0.1", + "retry-axios": "0.3.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-port": { + "version": "3.2.0", + "bundled": true + }, + "get-stdin": { + "version": "4.0.1", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "bundled": true + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "8.0.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "google-auth-library": { + "version": "1.6.1", + "bundled": true, + "requires": { + "axios": "^0.18.0", + "gcp-metadata": "^0.6.3", + "gtoken": "^2.3.0", + "jws": "^3.1.5", + "lodash.isstring": "^4.0.1", + "lru-cache": "^4.1.3", + "retry-axios": "^0.3.2" + } + }, + "google-auto-auth": { + "version": "0.10.1", + "bundled": true, + "requires": { + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" + } + }, + "google-gax": { + "version": "0.16.1", + "bundled": true, + "requires": { + "duplexify": "^3.5.4", + "extend": "^3.0.0", + "globby": "^8.0.0", + "google-auto-auth": "^0.10.0", + "google-proto-files": "^0.15.0", + "grpc": "^1.10.0", + "is-stream-ended": "^0.1.0", + "lodash": "^4.17.2", + "protobufjs": "^6.8.0", + "through2": "^2.0.3" + }, + "dependencies": { + "google-proto-files": { + "version": "0.15.1", + "bundled": true, + "requires": { + "globby": "^7.1.1", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + } + } + } + } + }, + "google-p12-pem": { + "version": "1.0.2", + "bundled": true, + "requires": { + "node-forge": "^0.7.4", + "pify": "^3.0.0" + } + }, + "google-proto-files": { + "version": "0.16.1", + "bundled": true, + "requires": { + "globby": "^8.0.0", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" + } + }, + "got": { + "version": "8.2.0", + "bundled": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "bundled": true + }, + "url-parse-lax": { + "version": "3.0.0", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "growl": { + "version": "1.10.5", + "bundled": true + }, + "grpc": { + "version": "1.12.3", + "bundled": true, + "requires": { + "lodash": "^4.17.5", + "nan": "^2.0.0", + "node-pre-gyp": "^0.10.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "needle": { + "version": "2.2.1", + "bundled": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.2", + "bundled": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "gtoken": { + "version": "2.3.0", + "bundled": true, + "requires": { + "axios": "^0.18.0", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.4", + "mime": "^2.2.0", + "pify": "^3.0.0" + } + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "bundled": true + }, + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "bundled": true + }, + "has-flag": { + "version": "2.0.0", + "bundled": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "bundled": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "bundled": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "has-yarn": { + "version": "1.0.0", + "bundled": true + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true + }, + "htmlparser2": { + "version": "3.9.2", + "bundled": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "bundled": true, + "requires": { + "dot-prop": "^4.1.0", + "es6-error": "^4.0.2", + "graceful-fs": "^4.1.11", + "indent-string": "^3.1.0", + "json5": "^0.5.1", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "pkg-dir": "^2.0.0", + "resolve-from": "^3.0.0", + "safe-buffer": "^5.0.1" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "3.3.10", + "bundled": true + }, + "ignore-by-default": { + "version": "1.0.1", + "bundled": true + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "import-local": { + "version": "0.1.1", + "bundled": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "3.2.0", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "ink-docstrap": { + "version": "1.3.2", + "bundled": true, + "requires": { + "moment": "^2.14.1", + "sanitize-html": "^1.13.0" + } + }, + "inquirer": { + "version": "3.3.0", + "bundled": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "intelli-espower-loader": { + "version": "1.0.1", + "bundled": true, + "requires": { + "espower-loader": "^1.0.0" + } + }, + "into-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "bundled": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "irregular-plurals": { + "version": "1.4.0", + "bundled": true + }, + "is": { + "version": "3.2.1", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-error": { + "version": "2.2.1", + "bundled": true + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-fn": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-object": { + "version": "1.0.1", + "bundled": true + }, + "is-observable": { + "version": "1.1.0", + "bundled": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "bundled": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-resolvable": { + "version": "1.1.0", + "bundled": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-stream-ended": { + "version": "0.1.4", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "is-url": { + "version": "1.2.4", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "istanbul-lib-coverage": { + "version": "2.0.0", + "bundled": true + }, + "istanbul-lib-instrument": { + "version": "2.2.0", + "bundled": true, + "requires": { + "@babel/generator": "7.0.0-beta.49", + "@babel/parser": "7.0.0-beta.49", + "@babel/template": "7.0.0-beta.49", + "@babel/traverse": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.49", + "istanbul-lib-coverage": "^2.0.0", + "semver": "^5.5.0" + } + }, + "isurl": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "bundled": true + }, + "js-string-escape": { + "version": "1.0.1", + "bundled": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.12.0", + "bundled": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "bundled": true, + "requires": { + "xmlcreate": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "jsdoc": { + "version": "3.5.5", + "bundled": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", + "taffydb": "2.6.2", + "underscore": "~1.8.3" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.19", + "bundled": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-buffer": { + "version": "3.0.0", + "bundled": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonfile": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-extend": { + "version": "1.1.27", + "bundled": true + }, + "jwa": { + "version": "1.1.6", + "bundled": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "bundled": true, + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "3.0.0", + "bundled": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "klaw": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "last-line-stream": { + "version": "1.0.0", + "bundled": true, + "requires": { + "through2": "^2.0.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "bundled": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "bundled": true + }, + "lodash.debounce": { + "version": "4.0.8", + "bundled": true + }, + "lodash.difference": { + "version": "4.5.0", + "bundled": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "bundled": true + }, + "lodash.flatten": { + "version": "4.4.0", + "bundled": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true + }, + "lodash.get": { + "version": "4.4.2", + "bundled": true + }, + "lodash.isequal": { + "version": "4.5.0", + "bundled": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "bundled": true + }, + "lodash.isstring": { + "version": "4.0.1", + "bundled": true + }, + "lodash.merge": { + "version": "4.6.1", + "bundled": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "bundled": true + }, + "lolex": { + "version": "2.7.0", + "bundled": true + }, + "long": { + "version": "4.0.0", + "bundled": true + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-obj": { + "version": "1.0.1", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.3.19", + "bundled": true + }, + "matcher": { + "version": "1.1.1", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "math-random": { + "version": "1.0.1", + "bundled": true + }, + "md5-hex": { + "version": "2.0.0", + "bundled": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "meow": { + "version": "3.7.0", + "bundled": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "merge-estraverse-visitors": { + "version": "1.0.0", + "bundled": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "merge2": { + "version": "1.2.2", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "2.3.1", + "bundled": true + }, + "mime-db": { + "version": "1.33.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "mimic-response": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "bundled": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "module-not-found-error": { + "version": "1.0.1", + "bundled": true + }, + "moment": { + "version": "2.22.2", + "bundled": true + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multi-stage-sourcemap": { + "version": "0.2.1", + "bundled": true, + "requires": { + "source-map": "^0.1.34" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "bundled": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "multimatch": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nan": { + "version": "2.10.0", + "bundled": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nise": { + "version": "1.4.2", + "bundled": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" + } + }, + "node-forge": { + "version": "0.7.5", + "bundled": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "bundled": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "nyc": { + "version": "12.0.2", + "bundled": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^2.1.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.5", + "istanbul-reports": "^1.4.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "atob": { + "version": "2.1.1", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "bundled": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "bundled": true, + "requires": { + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "bundled": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "istanbul-reports": { + "version": "1.4.1", + "bundled": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "bundled": true + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "observable-to-promise": { + "version": "0.5.0", + "bundled": true, + "requires": { + "is-observable": "^0.2.0", + "symbol-observable": "^1.0.4" + }, + "dependencies": { + "is-observable": { + "version": "0.2.0", + "bundled": true, + "requires": { + "symbol-observable": "^0.2.2" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "bundled": true + } + } + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "option-chain": { + "version": "1.0.0", + "bundled": true + }, + "optionator": { + "version": "0.8.2", + "bundled": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "bundled": true + } + } + }, + "optjs": { + "version": "3.2.2", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "p-cancelable": { + "version": "0.3.0", + "bundled": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "package-hash": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" + } + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + } + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-ms": { + "version": "0.1.2", + "bundled": true + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-dirname": { + "version": "1.0.2", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "1.7.0", + "bundled": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "bundled": true + } + } + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "pinkie": { + "version": "1.0.0", + "bundled": true + }, + "pinkie-promise": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pinkie": "^1.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "plur": { + "version": "2.1.2", + "bundled": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "pluralize": { + "version": "7.0.0", + "bundled": true + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "postcss": { + "version": "6.0.22", + "bundled": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } + } + }, + "power-assert": { + "version": "1.6.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "empower": "^1.3.0", + "power-assert-formatter": "^1.4.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "power-assert-context-formatter": { + "version": "1.2.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.2.0" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.2.0", + "bundled": true, + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + } + }, + "power-assert-context-traversal": { + "version": "1.2.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "power-assert-renderer-assertion": { + "version": "1.2.0", + "bundled": true, + "requires": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "bundled": true + }, + "power-assert-renderer-comparison": { + "version": "1.2.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "power-assert-renderer-diagram": { + "version": "1.2.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", + "stringifier": "^1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.2.0", + "bundled": true, + "requires": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.2.0", + "bundled": true, + "requires": { + "eastasianwidth": "^0.2.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "prettier": { + "version": "1.13.5", + "bundled": true + }, + "pretty-ms": { + "version": "3.2.0", + "bundled": true, + "requires": { + "parse-ms": "^1.0.0" + }, + "dependencies": { + "parse-ms": { + "version": "1.0.1", + "bundled": true + } + } + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "progress": { + "version": "2.0.0", + "bundled": true + }, + "prop-assign": { + "version": "1.0.0", + "bundled": true + }, + "propprop": { + "version": "0.3.1", + "bundled": true + }, + "protobufjs": { + "version": "6.8.6", + "bundled": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^3.0.32", + "@types/node": "^8.9.4", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.20", + "bundled": true + } + } + }, + "proxyquire": { + "version": "2.0.1", + "bundled": true, + "requires": { + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "query-string": { + "version": "5.1.1", + "bundled": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "randomatic": { + "version": "3.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "bundled": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + } + } + }, + "regenerate": { + "version": "1.4.0", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "1.1.0", + "bundled": true + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.87.0", + "bundled": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "require-precompiled": { + "version": "0.1.0", + "bundled": true + }, + "require-uncached": { + "version": "1.0.3", + "bundled": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "bundled": true + } + } + }, + "requizzle": { + "version": "0.2.1", + "bundled": true, + "requires": { + "underscore": "~1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "bundled": true + } + } + }, + "resolve": { + "version": "1.1.7", + "bundled": true + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "responselike": { + "version": "1.0.2", + "bundled": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "retry-axios": { + "version": "0.3.2", + "bundled": true + }, + "retry-request": { + "version": "3.3.2", + "bundled": true, + "requires": { + "request": "^2.81.0", + "through2": "^2.0.0" + } + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "bundled": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "bundled": true, "requires": { - "source-map": "^0.5.6" + "rx-lite": "*" } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, "requires": { - "ms": "2.0.0" + "ret": "~0.1.10" } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "samsam": { + "version": "1.3.0", + "bundled": true + }, + "sanitize-html": { + "version": "1.18.2", + "bundled": true, "requires": { - "is-descriptor": "^1.0.0" + "chalk": "^2.3.0", + "htmlparser2": "^3.9.0", + "lodash.clonedeep": "^4.5.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.mergewith": "^4.6.0", + "postcss": "^6.0.14", + "srcset": "^1.0.0", + "xtend": "^4.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "semver": { + "version": "5.5.0", + "bundled": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, "requires": { - "kind-of": "^6.0.0" + "semver": "^5.0.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "serialize-error": { + "version": "2.1.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, "requires": { - "kind-of": "^6.0.0" + "shebang-regex": "^1.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "sinon": { + "version": "5.1.1", + "bundled": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.5.0", + "lodash.get": "^4.4.2", + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "slash": { + "version": "1.0.0", + "bundled": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "slice-ansi": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, "requires": { - "ansi-regex": "^3.0.0" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, "requires": { - "is-extendable": "^0.1.0" + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } - } - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, + }, + "sort-keys": { + "version": "2.0.0", + "bundled": true, "requires": { - "md5-o-matic": "^0.1.1" + "is-plain-obj": "^1.0.0" } }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.6", + "bundled": true, "requires": { - "is-glob": "^2.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true + } } }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "source-map-url": { + "version": "0.4.0", + "bundled": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, "requires": { - "is-extglob": "^1.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } - } - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, "requires": { - "is-descriptor": "^0.1.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } - } - } - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { + }, + "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "bundled": true }, - "is-fullwidth-code-point": { + "split-array-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "bundled": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-stream-ended": "^0.1.4" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "split-string": { + "version": "3.1.0", + "bundled": true, "requires": { - "ansi-regex": "^3.0.0" + "extend-shallow": "^3.0.0" } - } - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "srcset": { + "version": "1.0.0", + "bundled": true, + "requires": { + "array-uniq": "^1.0.2", + "number-is-nan": "^1.0.0" + } + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, "requires": { - "time-zone": "^1.0.0" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { + }, + "stack-utils": { + "version": "1.0.1", + "bundled": true + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-events": { + "version": "1.0.4", + "bundled": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string": { + "version": "3.3.3", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringifier": { + "version": "1.3.0", + "bundled": true, + "requires": { + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "1.0.1", + "bundled": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "stubs": { + "version": "3.0.0", + "bundled": true + }, + "superagent": { + "version": "3.8.3", + "bundled": true, + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "bundled": true + } + } + }, + "supertap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "bundled": true, "requires": { - "kind-of": "^6.0.0" + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "supertest": { + "version": "3.0.0", + "bundled": true, "requires": { - "kind-of": "^6.0.0" + "methods": "~1.1.2", + "superagent": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "supports-color": { + "version": "5.4.0", + "bundled": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "has-flag": "^3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "bundled": true + } } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "diff-match-patch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", - "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "eastasianwidth": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz", - "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=" - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "empower": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz", - "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=", - "requires": { - "core-js": "^2.0.0", - "empower-core": "^0.6.2" - } - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "espurify": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", - "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", - "requires": { - "core-js": "^2.0.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "symbol-observable": { + "version": "1.2.0", + "bundled": true + }, + "table": { + "version": "4.0.2", + "bundled": true, "requires": { - "ms": "2.0.0" + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "taffydb": { + "version": "2.6.2", + "bundled": true + }, + "term-size": { + "version": "1.2.0", + "bundled": true, "requires": { - "is-descriptor": "^0.1.0" + "execa": "^0.7.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "text-encoding": { + "version": "0.6.4", + "bundled": true + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, "requires": { - "is-extendable": "^0.1.0" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, + }, + "time-zone": { + "version": "1.0.0", + "bundled": true + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "tmp": { + "version": "0.0.33", + "bundled": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "os-tmpdir": "~1.0.2" } }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, + "to-regex": { + "version": "3.0.2", + "bundled": true, "requires": { - "isarray": "1.0.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "to-regex-range": { + "version": "2.1.1", + "bundled": true, "requires": { - "is-descriptor": "^1.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "tough-cookie": { + "version": "2.3.4", + "bundled": true, "requires": { - "is-extendable": "^0.1.0" + "punycode": "^1.4.1" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } + "traverse": { + "version": "0.6.6", + "bundled": true }, - "is-data-descriptor": { + "trim-newlines": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } + "bundled": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "trim-off-newlines": { + "version": "1.0.1", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "safe-buffer": "^5.0.1" } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true - }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "bundled": true, "requires": { - "is-extendable": "^0.1.0" + "prelude-ls": "~1.1.2" } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", + }, + "type-detect": { + "version": "4.0.8", + "bundled": true + }, + "type-name": { + "version": "2.0.2", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "bundled": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "bundled": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, - "ansi-regex": { - "version": "2.1.1", + "uid2": { + "version": "0.0.3", + "bundled": true + }, + "underscore": { + "version": "1.8.3", + "bundled": true + }, + "underscore-contrib": { + "version": "0.3.0", "bundled": true, - "dev": true + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "bundled": true + } + } }, - "aproba": { - "version": "1.2.0", + "union-value": { + "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } }, - "are-we-there-yet": { - "version": "1.1.4", + "unique-string": { + "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "crypto-random-string": "^1.0.0" } }, - "balanced-match": { + "unique-temp-dir": { "version": "1.0.0", "bundled": true, - "dev": true + "requires": { + "mkdirp": "^0.5.1", + "os-tmpdir": "^1.0.1", + "uid2": "0.0.3" + } }, - "brace-expansion": { - "version": "1.1.11", + "universal-deep-strict-equal": { + "version": "1.2.2", "bundled": true, - "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" } }, - "chownr": { - "version": "1.0.1", + "universalify": { + "version": "0.1.2", + "bundled": true + }, + "unset-value": { + "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + } + } }, - "code-point-at": { - "version": "1.1.0", + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "update-notifier": { + "version": "2.5.0", "bundled": true, - "dev": true + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } }, - "concat-map": { - "version": "0.0.1", + "urix": { + "version": "0.1.0", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", "bundled": true, - "dev": true + "requires": { + "prepend-http": "^1.0.1" + } }, - "console-control-strings": { - "version": "1.1.0", + "url-to-options": { + "version": "1.0.1", + "bundled": true + }, + "urlgrey": { + "version": "0.4.4", + "bundled": true + }, + "use": { + "version": "3.1.0", "bundled": true, - "dev": true + "requires": { + "kind-of": "^6.0.2" + } }, - "core-util-is": { + "util-deprecate": { "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "debug": { - "version": "2.6.9", + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "well-known-symbols": { + "version": "1.0.0", + "bundled": true + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "window-size": { + "version": "0.1.4", + "bundled": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", "bundled": true, - "dev": true, - "optional": true, "requires": { - "ms": "2.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, - "deep-extend": { - "version": "0.5.1", + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write": { + "version": "0.2.1", "bundled": true, - "dev": true, - "optional": true + "requires": { + "mkdirp": "^0.5.1" + } }, - "delegates": { - "version": "1.0.0", + "write-file-atomic": { + "version": "2.3.0", "bundled": true, - "dev": true, - "optional": true + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } }, - "detect-libc": { - "version": "1.0.3", + "write-json-file": { + "version": "2.3.0", "bundled": true, - "dev": true, - "optional": true + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "bundled": true + } + } }, - "fs-minipass": { - "version": "1.2.5", + "write-pkg": { + "version": "3.2.0", "bundled": true, - "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" } }, - "fs.realpath": { - "version": "1.0.0", + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + }, + "xmlcreate": { + "version": "1.0.2", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "3.32.0", "bundled": true, - "dev": true, - "optional": true + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } }, - "gauge": { - "version": "2.7.4", + "yargs-parser": { + "version": "9.0.2", "bundled": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", + "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", + "dev": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "semver": "^5.5.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", "dev": true, - "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } } }, - "glob": { - "version": "7.1.2", - "bundled": true, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", "dev": true, - "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, + "sinon": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", + "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", "dev": true, - "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, - "optional": true, "requires": { - "minimatch": "^3.0.4" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", "dev": true, - "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "parse-ms": "^0.1.0" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "requires": { + "samsam": "1.3.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "auto-bind": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", + "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", + "dev": true + }, + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, - "minizlib": { - "version": "1.1.0", - "bundled": true, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "minimist": "0.0.8" + "ansi-regex": "^2.0.0" } }, - "ms": { + "supports-color": { "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true + "requires": { + "ms": "2.0.0" + } }, - "once": { - "version": "1.4.0", - "bundled": true, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-espower": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", + "dev": true, + "requires": { + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "wrappy": "1" + "source-map": "^0.5.6" } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "ms": "2.0.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { + "ms": { "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, - "optional": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } + "md5-o-matic": "^0.1.1" } }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, - "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "^1.0.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", "dev": true, - "optional": true, "requires": { - "glob": "^7.0.5" + "time-zone": "^1.0.0" } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { + } + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, - "function-name-support": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "gcp-metadata": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", - "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" + "mimic-response": "^1.0.0" } }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, "requires": { - "assert-plus": "^1.0.0" + "is-obj": "^1.0.0" } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "call-signature": "0.0.2", + "core-js": "^2.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } + "is-arrayish": "^0.2.1" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "espurify": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", + "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", "dev": true, "requires": { - "ini": "^1.3.4" + "core-js": "^2.0.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "dev": true, + "requires": { + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" + } + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, - "google-auth-library": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", - "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.6.3", - "gtoken": "^2.3.0", - "jws": "^3.1.5", - "lodash.isstring": "^4.0.1", - "lru-cache": "^4.1.3", - "retry-axios": "^0.3.2" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, - "google-auto-auth": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.9.7.tgz", - "integrity": "sha512-Nro7aIFrL2NP0G7PoGrJqXGMZj8AjdBOcbZXRRm/8T3w08NUHIiNN3dxpuUYzDsZizslH+c8e+7HXL8vh3JXTQ==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.6.1", - "google-auth-library": "^1.3.1", - "request": "^2.79.0" + "locate-path": "^2.0.0" } }, - "google-gax": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", - "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, "requires": { - "duplexify": "^3.5.4", - "extend": "^3.0.0", - "globby": "^8.0.0", - "google-auto-auth": "^0.10.0", - "google-proto-files": "^0.15.0", - "grpc": "^1.10.0", - "is-stream-ended": "^0.1.0", - "lodash": "^4.17.2", - "protobufjs": "^6.8.0", - "through2": "^2.0.3" - }, - "dependencies": { - "google-auto-auth": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", - "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", - "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.6.1", - "google-auth-library": "^1.3.1", - "request": "^2.79.0" - } - } + "for-in": "^1.0.1" } }, - "google-p12-pem": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", - "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, "requires": { - "node-forge": "^0.7.4", - "pify": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" } }, - "google-proto-files": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", - "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "requires": { - "globby": "^7.1.1", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - } + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - } + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "grpc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.2.tgz", - "integrity": "sha512-oDrW7TPuP+u9+RboUx8XupS1GOPCdLSmldyMHmlaB5wu38nOzzyDxzLsmleROw5/0XyfyuwsmFX6UUr7FaXN2w==", + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, "requires": { - "lodash": "^4.17.5", - "nan": "^2.0.0", - "node-pre-gyp": "^0.10.0", - "protobufjs": "^5.0.3" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "bundled": true, + "optional": true }, "ansi-regex": { "version": "2.1.1", @@ -5251,11 +13785,13 @@ }, "aproba": { "version": "1.2.0", - "bundled": true + "bundled": true, + "optional": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -5275,7 +13811,8 @@ }, "chownr": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "code-point-at": { "version": "1.1.0", @@ -5291,41 +13828,49 @@ }, "core-util-is": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "debug": { "version": "2.6.9", "bundled": true, + "optional": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.5.1", - "bundled": true + "bundled": true, + "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true + "bundled": true, + "optional": true }, "fs-minipass": { "version": "1.2.5", "bundled": true, + "optional": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -5340,6 +13885,7 @@ "glob": { "version": "7.1.2", "bundled": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5351,18 +13897,21 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "bundled": true, + "optional": true }, "iconv-lite": { - "version": "0.4.23", + "version": "0.4.21", "bundled": true, + "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "^2.1.0" } }, "ignore-walk": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "minimatch": "^3.0.4" } @@ -5370,6 +13919,7 @@ "inflight": { "version": "1.0.6", "bundled": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5381,7 +13931,8 @@ }, "ini": { "version": "1.3.5", - "bundled": true + "bundled": true, + "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -5392,7 +13943,8 @@ }, "isarray": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "minimatch": { "version": "3.0.4", @@ -5402,20 +13954,21 @@ } }, "minimist": { - "version": "1.2.0", + "version": "0.0.8", "bundled": true }, "minipass": { - "version": "2.3.3", + "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", + "safe-buffer": "^5.1.1", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", "bundled": true, + "optional": true, "requires": { "minipass": "^2.2.1" } @@ -5425,21 +13978,17 @@ "bundled": true, "requires": { "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } } }, "ms": { "version": "2.0.0", - "bundled": true + "bundled": true, + "optional": true }, "needle": { - "version": "2.2.1", + "version": "2.2.0", "bundled": true, + "optional": true, "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -5449,6 +13998,7 @@ "node-pre-gyp": { "version": "0.10.0", "bundled": true, + "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -5465,6 +14015,7 @@ "nopt": { "version": "4.0.1", "bundled": true, + "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -5472,11 +14023,13 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true + "bundled": true, + "optional": true }, "npm-packlist": { "version": "1.1.10", "bundled": true, + "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -5485,6 +14038,7 @@ "npmlog": { "version": "4.1.2", "bundled": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -5498,7 +14052,8 @@ }, "object-assign": { "version": "4.1.1", - "bundled": true + "bundled": true, + "optional": true }, "once": { "version": "1.4.0", @@ -5509,15 +14064,18 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "osenv": { "version": "0.1.5", "bundled": true, + "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -5525,36 +14083,36 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } + "bundled": true, + "optional": true }, "rc": { "version": "1.2.7", "bundled": true, + "optional": true, "requires": { "deep-extend": "^0.5.1", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } } }, "readable-stream": { "version": "2.3.6", "bundled": true, + "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5568,33 +14126,39 @@ "rimraf": { "version": "2.6.2", "bundled": true, + "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.1.2", + "version": "5.1.1", "bundled": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "bundled": true, + "optional": true }, "sax": { "version": "1.2.4", - "bundled": true + "bundled": true, + "optional": true }, "semver": { "version": "5.5.0", - "bundled": true + "bundled": true, + "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true + "bundled": true, + "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true + "bundled": true, + "optional": true }, "string-width": { "version": "1.0.2", @@ -5608,6 +14172,7 @@ "string_decoder": { "version": "1.1.1", "bundled": true, + "optional": true, "requires": { "safe-buffer": "~5.1.0" } @@ -5621,28 +14186,32 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "bundled": true, + "optional": true }, "tar": { - "version": "4.4.3", + "version": "4.4.1", "bundled": true, + "optional": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.3", + "minipass": "^2.2.4", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", + "safe-buffer": "^5.1.1", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "wide-align": { "version": "1.1.2", "bundled": true, + "optional": true, "requires": { "string-width": "^1.0.2" } @@ -5654,35 +14223,169 @@ "yallist": { "version": "3.0.2", "bundled": true + } + } + }, + "function-name-support": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "pinkie": "^2.0.0" } } } }, - "gtoken": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", - "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "dev": true, "requires": { - "axios": "^0.18.0", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.4", - "mime": "^2.2.0", - "pify": "^3.0.0" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + } } }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", @@ -5695,12 +14398,6 @@ "uglify-js": "^2.6" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", @@ -5712,20 +14409,6 @@ } } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -5733,6 +14416,14 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, "has-color": { @@ -5761,35 +14452,6 @@ "has-symbol-support-x": "^1.4.1" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "has-yarn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", @@ -5818,16 +14480,6 @@ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "hullabaloo-config-manager": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", @@ -5850,11 +14502,6 @@ "safe-buffer": "^5.0.1" } }, - "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" - }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -5889,15 +14536,11 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5906,7 +14549,8 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "ini": { "version": "1.3.5", @@ -5944,29 +14588,6 @@ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, - "is": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", - "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5985,59 +14606,25 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "requires": { - "ci-info": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "requires": { + "builtin-modules": "^1.0.0" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "ci-info": "^1.0.0" } }, "is-dotfile": { @@ -6064,12 +14651,14 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-finite": { "version": "1.0.2", @@ -6081,12 +14670,9 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { "version": "1.0.0", @@ -6095,11 +14681,12 @@ "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "^1.0.0" } }, "is-installed-globally": { @@ -6119,21 +14706,12 @@ "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-obj": { @@ -6157,21 +14735,6 @@ "symbol-observable": "^1.1.0" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -6187,14 +14750,6 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -6230,16 +14785,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -6252,15 +14797,10 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -6268,14 +14808,21 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } }, "istanbul-lib-coverage": { "version": "2.0.0", @@ -6330,12 +14877,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -6354,21 +14895,6 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -6384,41 +14910,11 @@ "graceful-fs": "^4.1.6" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "just-extend": { "version": "1.1.27", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==" }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -6429,9 +14925,13 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } }, "last-line-stream": { "version": "1.0.0", @@ -6476,14 +14976,6 @@ "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "locate-path": { @@ -6496,9 +14988,10 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true }, "lodash.clonedeep": { "version": "4.5.0", @@ -6527,7 +15020,8 @@ "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true }, "lodash.flattendeep": { "version": "4.4.0", @@ -6546,31 +15040,17 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, "lodash.merge": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true }, "lolex": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==" }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -6618,27 +15098,22 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, "matcher": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", @@ -6744,12 +15219,6 @@ "pinkie-promise": "^2.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -6803,16 +15272,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" - }, - "methmeth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/methmeth/-/methmeth-1.1.0.tgz", - "integrity": "sha1-6AomYY5S9cQiKGG7dIUQvRDikIk=" - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6820,39 +15279,43 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, "requires": { "mime-db": "~1.33.0" } @@ -6872,6 +15335,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6882,25 +15346,6 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -6910,11 +15355,6 @@ "minimist": "0.0.8" } }, - "modelo": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.3.tgz", - "integrity": "sha512-9DITV2YEMcw7XojdfvGl3gDD8J9QjZTJ7ZOUuSAkP+F3T6rDbzMJuPktxptsdHYEvZcmXrCD3LMOhdSAEq6zKA==" - }, "module-not-found-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", @@ -6922,9 +15362,10 @@ "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true }, "multimatch": { "version": "2.1.0", @@ -6941,31 +15382,13 @@ "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "optional": true }, "nise": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.1.tgz", - "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", + "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", "requires": { "@sinonjs/formatio": "^2.0.0", "just-extend": "^1.1.27", @@ -6974,11 +15397,6 @@ "text-encoding": "^0.6.4" } }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -7069,7 +15487,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -7079,17 +15498,20 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -7097,57 +15519,68 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -7161,7 +15594,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7169,7 +15603,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7177,7 +15612,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7185,7 +15621,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7195,14 +15632,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -7211,7 +15650,8 @@ }, "braces": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -7228,7 +15668,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7238,12 +15679,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -7259,7 +15702,8 @@ }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -7269,13 +15713,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -7285,7 +15731,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -7296,7 +15743,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7306,7 +15754,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -7317,7 +15766,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -7325,12 +15775,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -7339,32 +15791,38 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7373,7 +15831,8 @@ }, "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { "ms": "2.0.0" @@ -7381,22 +15840,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -7404,7 +15867,8 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -7413,7 +15877,8 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7421,7 +15886,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7429,7 +15895,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7439,14 +15906,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -7454,7 +15923,8 @@ }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -7468,7 +15938,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7480,7 +15951,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "^2.3.3", @@ -7494,7 +15966,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -7502,7 +15975,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7510,7 +15984,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7520,7 +15995,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -7529,7 +16005,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -7539,7 +16016,8 @@ }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "dev": true, "requires": { "array-unique": "^0.3.2", @@ -7554,7 +16032,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7562,7 +16041,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7570,7 +16050,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7578,7 +16059,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7586,7 +16068,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7596,14 +16079,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -7614,7 +16099,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7624,7 +16110,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", @@ -7634,7 +16121,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -7642,12 +16130,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "^4", @@ -7656,7 +16146,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -7664,27 +16155,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -7697,12 +16193,14 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "^1.4.0", @@ -7713,7 +16211,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -7723,7 +16222,8 @@ }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "^2.0.6", @@ -7733,7 +16233,8 @@ }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -7742,7 +16243,8 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -7752,17 +16254,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -7771,17 +16276,20 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7789,17 +16297,20 @@ }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -7807,7 +16318,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7815,7 +16327,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -7825,24 +16338,28 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", "dev": true } } }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7850,7 +16367,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { "is-number": "^4.0.0" @@ -7858,14 +16376,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -7873,42 +16393,50 @@ }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "^0.4.0" @@ -7916,7 +16444,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -7927,12 +16456,14 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -7942,7 +16473,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", "dev": true, "requires": { "debug": "^3.1.0", @@ -7954,7 +16486,8 @@ }, "istanbul-reports": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", + "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", "dev": true, "requires": { "handlebars": "^4.0.3" @@ -7962,7 +16495,8 @@ }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -7970,13 +16504,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -7984,7 +16520,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -7996,7 +16533,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -8005,19 +16543,22 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "lru-cache": { "version": "4.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -8026,12 +16567,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -8039,7 +16582,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -8047,12 +16591,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -8060,7 +16606,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -8068,14 +16615,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "micromatch": { "version": "3.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8095,19 +16644,22 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -8115,12 +16667,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -8129,7 +16683,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -8139,7 +16694,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -8147,12 +16703,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8171,14 +16729,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -8189,7 +16749,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -8197,17 +16758,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -8217,7 +16781,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8227,7 +16792,8 @@ }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "^3.0.0" @@ -8235,7 +16801,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -8243,7 +16810,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -8251,7 +16819,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", @@ -8260,12 +16829,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", @@ -8275,12 +16846,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -8288,7 +16861,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -8296,12 +16870,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -8309,12 +16885,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -8322,22 +16900,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -8347,17 +16929,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -8365,7 +16950,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" @@ -8373,7 +16959,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8384,17 +16971,20 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -8404,7 +16994,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -8413,7 +17004,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8424,7 +17016,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -8433,42 +17026,50 @@ }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -8477,7 +17078,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -8485,7 +17087,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" @@ -8493,17 +17096,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8514,7 +17120,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8524,7 +17131,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -8532,22 +17140,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "^0.11.1", @@ -8562,7 +17174,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -8570,7 +17183,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8578,7 +17192,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8588,7 +17203,8 @@ }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "^1.0.0", @@ -8598,7 +17214,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8606,7 +17223,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8614,7 +17232,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8622,7 +17241,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8632,14 +17252,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -8647,12 +17269,14 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", "dev": true, "requires": { "atob": "^2.1.1", @@ -8664,12 +17288,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -8682,7 +17308,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -8691,12 +17318,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -8705,12 +17334,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -8718,7 +17349,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "^0.2.5", @@ -8727,7 +17359,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8737,7 +17370,8 @@ }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -8746,7 +17380,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -8754,7 +17389,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -8762,12 +17398,14 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -8779,7 +17417,8 @@ }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8787,7 +17426,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "^2.0.2", @@ -8798,7 +17438,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -8807,7 +17448,8 @@ }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -8818,7 +17460,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -8832,13 +17475,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -8849,7 +17494,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8857,7 +17503,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8870,7 +17517,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "^0.3.1", @@ -8879,7 +17527,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "^2.0.3", @@ -8889,7 +17538,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -8899,19 +17549,22 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -8919,14 +17572,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -8935,7 +17590,8 @@ }, "which": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -8943,23 +17599,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -8968,12 +17628,14 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -8981,7 +17643,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -8991,7 +17654,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -9001,12 +17665,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -9016,17 +17682,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { "cliui": "^4.0.0", @@ -9045,12 +17714,14 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", "dev": true, "requires": { "string-width": "^2.1.1", @@ -9060,7 +17731,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9070,7 +17742,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9078,65 +17751,20 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } } } }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -9147,14 +17775,6 @@ "is-extendable": "^0.1.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, "observable-to-promise": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", @@ -9188,6 +17808,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -9217,11 +17838,6 @@ "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", "dev": true }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -9229,11 +17845,13 @@ "dev": true }, "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "lcid": "^1.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -9337,30 +17955,13 @@ "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -9378,16 +17979,6 @@ "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -9396,7 +17987,8 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-is-inside": { "version": "1.0.2", @@ -9421,32 +18013,22 @@ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "requires": { "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } } }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^2.0.0" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "1.0.0", @@ -9494,6 +18076,12 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -9515,120 +18103,6 @@ "irregular-plurals": "^1.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "power-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz", - "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==", - "requires": { - "define-properties": "^1.1.2", - "empower": "^1.2.3", - "power-assert-formatter": "^1.3.1", - "universal-deep-strict-equal": "^1.2.1", - "xtend": "^4.0.0" - } - }, - "power-assert-context-formatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz", - "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-traversal": "^1.1.1" - } - }, - "power-assert-context-reducer-ast": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz", - "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=", - "requires": { - "acorn": "^4.0.0", - "acorn-es7-plugin": "^1.0.12", - "core-js": "^2.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.2.0" - } - }, - "power-assert-context-traversal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz", - "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=", - "requires": { - "core-js": "^2.0.0", - "estraverse": "^4.1.0" - } - }, - "power-assert-formatter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", - "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-formatter": "^1.0.7", - "power-assert-context-reducer-ast": "^1.0.7", - "power-assert-renderer-assertion": "^1.0.7", - "power-assert-renderer-comparison": "^1.0.7", - "power-assert-renderer-diagram": "^1.0.7", - "power-assert-renderer-file": "^1.0.7" - } - }, - "power-assert-renderer-assertion": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz", - "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=", - "requires": { - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.1.1" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", - "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" - }, - "power-assert-renderer-comparison": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz", - "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=", - "requires": { - "core-js": "^2.0.0", - "diff-match-patch": "^1.0.0", - "power-assert-renderer-base": "^1.1.1", - "stringifier": "^1.3.0", - "type-name": "^2.0.1" - } - }, - "power-assert-renderer-diagram": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz", - "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=", - "requires": { - "core-js": "^2.0.0", - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.1.1", - "stringifier": "^1.3.0" - } - }, - "power-assert-renderer-file": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz", - "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=", - "requires": { - "power-assert-renderer-base": "^1.1.1" - } - }, - "power-assert-util-string-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz", - "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=", - "requires": { - "eastasianwidth": "^0.1.1" - } - }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -9667,37 +18141,8 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "prop-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", - "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" - }, - "propprop": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", - "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" - }, - "protobufjs": { - "version": "6.8.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", - "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^3.0.32", - "@types/node": "^8.9.4", - "long": "^4.0.0" - } + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true }, "proxyquire": { "version": "2.0.1", @@ -9726,15 +18171,11 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "5.1.1", @@ -9763,6 +18204,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -9795,23 +18242,6 @@ "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", "path-type": "^2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "read-pkg-up": { @@ -9828,6 +18258,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9836,6 +18267,14 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "readdirp": { @@ -9892,15 +18331,6 @@ "is-equal-shallow": "^0.1.3" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -9964,12 +18394,14 @@ "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "repeating": { "version": "2.0.1", @@ -9980,33 +18412,6 @@ "is-finite": "^1.0.0" } }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10044,11 +18449,6 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -10068,25 +18468,6 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry-axios": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", - "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" - }, - "retry-request": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", - "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", - "requires": { - "request": "^2.81.0", - "through2": "^2.0.0" - } - }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -10100,20 +18481,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "samsam": { "version": "1.3.0", @@ -10152,27 +18521,6 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -10208,7 +18556,8 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true }, "slice-ansi": { "version": "1.0.0", @@ -10217,14 +18566,6 @@ "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } } }, "slide": { @@ -10233,111 +18574,6 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -10350,19 +18586,8 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "source-map-support": { "version": "0.5.6", @@ -10382,11 +18607,6 @@ } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", @@ -10419,83 +18639,18 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, - "split-array-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-1.0.3.tgz", - "integrity": "sha1-0rdajl4Ngk1S/eyLgiWDncLjXfo=", - "requires": { - "async": "^2.4.0", - "is-stream-ended": "^0.1.0" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-events": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", - "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -10506,47 +18661,32 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", - "dev": true - }, - "string-format-obj": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.1.tgz", - "integrity": "sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==" + "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, - "stringifier": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", - "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", - "requires": { - "core-js": "^2.0.0", - "traverse": "^0.6.6", - "type-name": "^2.0.1" - } - }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -10584,11 +18724,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" - }, "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", @@ -10605,14 +18740,6 @@ "mime": "^1.4.1", "qs": "^6.5.1", "readable-stream": "^2.3.5" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } } }, "supertap": { @@ -10626,23 +18753,6 @@ "js-yaml": "^3.10.0", "serialize-error": "^2.1.0", "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "supertest": { @@ -10693,6 +18803,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" @@ -10716,57 +18827,6 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "requires": { - "punycode": "^1.4.1" - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -10785,35 +18845,11 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, - "type-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", - "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -10845,13 +18881,6 @@ "wordwrap": "0.0.2" } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -10887,38 +18916,6 @@ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", "dev": true }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -10939,58 +18936,12 @@ "uid2": "0.0.3" } }, - "universal-deep-strict-equal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", - "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", - "requires": { - "array-filter": "^1.0.0", - "indexof": "0.0.1", - "object-keys": "^1.0.0" - } - }, "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", @@ -11015,11 +18966,6 @@ "xdg-basedir": "^3.0.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -11035,23 +18981,11 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "requires": { - "kind-of": "^6.0.2" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "validate-npm-package-license": { "version": "3.0.3", @@ -11063,16 +18997,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "well-known-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", @@ -11099,45 +19023,14 @@ "dev": true, "requires": { "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true }, "wordwrap": { "version": "0.0.3", @@ -11152,12 +19045,46 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "2.3.0", @@ -11189,6 +19116,12 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -11211,7 +19144,8 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true }, "y18n": { "version": "3.2.1", @@ -11240,55 +19174,6 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "yargs-parser": { @@ -11297,13 +19182,6 @@ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } } } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5e7db846175..7a16a01a56d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.4.0", + "@google-cloud/datastore": "1.4.1", "sinon": "5.1.1", "yargs": "11.0.0" }, From 1cace9c8e7a0a920c4ecd0d234d298efa9677860 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 21 Jun 2018 18:48:10 -0700 Subject: [PATCH 201/820] =?UTF-8?q?chore(package):=20Update=20sinon=20to?= =?UTF-8?q?=20the=20latest=20version=20=F0=9F=9A=80=20(#104)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handwritten/nodejs-datastore/.circleci/config.yml | 1 + handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index a9530aee603..cf5496e9060 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -129,6 +129,7 @@ jobs: cd samples/ npm link @google-cloud/datastore npm install + npm link @google-cloud/datastore cd .. environment: NPM_CONFIG_PREFIX: /home/node/.npm-global diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5f8d48d878a..831c2781d53 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -97,6 +97,6 @@ "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", - "sinon": "^5.1.1" + "sinon": "^6.0.0" } } From 412983fa0d9494ced805ee6a3c942e059ae346be Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 22 Jun 2018 08:26:28 -0700 Subject: [PATCH 202/820] refactor: update nodejs-common and google-auth-library (#112) --- .../nodejs-datastore/.circleci/config.yml | 4 +- .../nodejs-datastore/package-lock.json | 1637 +- handwritten/nodejs-datastore/package.json | 4 +- .../samples/package-lock.json | 20125 +++++----------- handwritten/nodejs-datastore/src/index.js | 4 +- handwritten/nodejs-datastore/test/index.js | 24 +- 6 files changed, 6710 insertions(+), 15088 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index cf5496e9060..59daf9ee0e7 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -84,7 +84,6 @@ jobs: command: |- mkdir -p /home/node/.npm-global npm install - npm link chmod +x node_modules/@google-cloud/nodejs-repo-tools/bin/tools environment: NPM_CONFIG_PREFIX: /home/node/.npm-global @@ -127,9 +126,8 @@ jobs: name: Link the module being tested to the samples. command: | cd samples/ - npm link @google-cloud/datastore + npm link ../ npm install - npm link @google-cloud/datastore cd .. environment: NPM_CONFIG_PREFIX: /home/node/.npm-global diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index ad677bcd758..d6cd0a73c98 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -214,21 +214,21 @@ } }, "@google-cloud/common": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.19.2.tgz", - "integrity": "sha512-CuURBaMx6vUwLFpHLCYyLJXkg6EKYcrAfhH9Fva8C2B9dJ7flT8j/R+o05OuXwj4VQYC4c8bl/hrwyO+XvAwlg==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.20.1.tgz", + "integrity": "sha512-LJB7CoNXEXY0mDWtF8E2cl3Y0kuMQ3wjH9Xr+Y7vH5gHgN82dDh1BMUOizRf9oXQFDWUgGERD5SdfBcjUhHmwA==", "requires": { "@types/duplexify": "^3.5.0", "@types/request": "^2.47.0", "arrify": "^1.0.1", "axios": "^0.18.0", - "duplexify": "^3.5.4", + "duplexify": "^3.6.0", "ent": "^2.2.0", "extend": "^3.0.1", - "google-auth-library": "^1.4.0", + "google-auth-library": "^1.6.0", "is": "^3.2.1", "pify": "^3.0.0", - "request": "^2.85.0", + "request": "^2.87.0", "retry-request": "^3.3.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", @@ -323,8 +323,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", @@ -334,26 +333,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -361,14 +356,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.0.1" @@ -376,32 +369,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "^1.1.3", @@ -411,8 +399,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "^6.23.0", @@ -427,8 +414,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -436,8 +422,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "^2.4.0", @@ -446,8 +431,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -459,8 +443,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -476,8 +459,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -488,20 +470,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -510,8 +489,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "^1.8.1", @@ -521,14 +499,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -538,15 +514,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -556,8 +530,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -569,8 +542,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -581,8 +553,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -590,38 +561,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -630,8 +595,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -639,20 +603,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -660,8 +621,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "^2.0.0" @@ -669,8 +629,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -678,20 +637,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -705,8 +661,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -718,8 +673,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -727,8 +681,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "^2.1.0" @@ -736,8 +689,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -745,14 +697,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "^2.1.0", @@ -764,8 +714,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -775,8 +724,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "^2.0.0" @@ -784,14 +732,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "^1.0.1" @@ -799,8 +745,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -809,26 +754,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -841,8 +782,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -851,8 +791,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "^2.0.0" @@ -860,20 +799,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "^1.4.0", @@ -884,8 +820,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -895,8 +830,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -904,26 +838,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -932,14 +862,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "^1.0.0" @@ -947,26 +875,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -974,14 +898,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -989,20 +911,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1010,8 +929,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1019,8 +937,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -1028,8 +945,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1037,44 +953,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -1082,14 +991,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "^0.4.0" @@ -1097,8 +1004,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "^6.18.0", @@ -1112,8 +1018,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.1", @@ -1124,8 +1029,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" @@ -1135,8 +1039,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", @@ -1148,8 +1051,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -1159,8 +1061,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" @@ -1168,20 +1069,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1189,15 +1087,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -1205,8 +1101,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1218,8 +1113,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "^2.0.0", @@ -1228,28 +1122,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "^3.0.0" @@ -1257,8 +1147,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1267,8 +1156,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -1276,14 +1164,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -1291,8 +1177,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "^0.5.6" @@ -1300,8 +1185,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^2.0.0", @@ -1321,14 +1205,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1336,14 +1218,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1351,14 +1231,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -1369,8 +1247,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -1378,8 +1255,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -1387,20 +1263,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "^0.1.4", @@ -1409,8 +1282,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -1418,8 +1290,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", @@ -1428,14 +1299,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "^0.7.0", @@ -1445,20 +1314,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "^1.1.0" @@ -1466,8 +1332,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "^0.3.0", @@ -1478,8 +1343,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" @@ -1487,8 +1351,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -1496,26 +1359,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1525,20 +1384,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" @@ -1546,8 +1402,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" @@ -1555,8 +1410,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1567,20 +1421,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -1589,8 +1440,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1598,8 +1448,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1609,8 +1458,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1620,8 +1468,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -1631,8 +1478,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", @@ -1641,8 +1487,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1653,14 +1498,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -1668,26 +1511,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "^1.0.0" @@ -1695,26 +1534,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1723,8 +1558,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" @@ -1732,20 +1566,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -1753,32 +1584,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -1791,8 +1617,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "^1.0.2" @@ -1800,20 +1625,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -1822,20 +1644,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -1845,8 +1664,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -1854,8 +1672,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -1863,20 +1680,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -1888,20 +1702,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1912,8 +1723,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1927,15 +1737,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "~1.0.0", @@ -1944,8 +1752,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -1953,27 +1760,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -1982,8 +1785,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1995,14 +1797,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -2012,20 +1812,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "^3.2.0", @@ -2044,8 +1841,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -2055,8 +1851,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2070,8 +1865,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -2079,8 +1873,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -6188,9 +5981,9 @@ "dev": true }, "grpc": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.3.tgz", - "integrity": "sha512-QPwbAXRXd8IyXAhTdUVgjEqSdvXoTq5uFWSo+eGMTcra12PBJUkAceD+1AUVOx1GqBY74/7T7eB7BB+UOcOY8w==", + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.4.tgz", + "integrity": "sha512-t0Hy4yoHHYLkK0b+ULTHw5ZuSFmWokCABY0C4bKQbE4jnm1hpjA23cQVD0xAqDcRHN5CkvFzlqb34ngV22dqoQ==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -6200,23 +5993,19 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "bundled": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "bundled": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "bundled": true }, "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "version": "1.1.5", + "bundled": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -6224,13 +6013,11 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "bundled": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6238,69 +6025,57 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + "bundled": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "bundled": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "bundled": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "bundled": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" + "version": "0.6.0", + "bundled": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "bundled": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "bundled": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "bundled": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -6314,8 +6089,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6327,29 +6101,25 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "bundled": true }, "iconv-lite": { "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "bundled": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6357,81 +6127,69 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "bundled": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "bundled": true }, "minipass": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.0.tgz", - "integrity": "sha512-jWC2Eg+Np4bxah7llu1IrUNSJQxtLz/J+pOjTM0nFpJXGAaV18XBWhUn031Q1tAA/TJtA1jgwnOe9S2PQa4Lbg==", + "version": "2.3.3", + "bundled": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "bundled": true, "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "bundled": true } } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "bundled": true }, "needle": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", - "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", + "bundled": true, "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -6440,8 +6198,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "bundled": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -6457,8 +6214,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -6466,13 +6222,11 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==" + "bundled": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "bundled": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -6480,8 +6234,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -6491,36 +6244,30 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "bundled": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "bundled": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "bundled": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -6528,13 +6275,11 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "bundled": true }, "protobufjs": { "version": "5.0.3", @@ -6548,11 +6293,10 @@ } }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.8", + "bundled": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -6560,8 +6304,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6574,46 +6317,38 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "bundled": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "bundled": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "bundled": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "bundled": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "bundled": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "bundled": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6622,33 +6357,29 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "bundled": true }, "tar": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", - "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", + "version": "4.4.4", + "bundled": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", + "minipass": "^2.3.3", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", @@ -6657,26 +6388,22 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "bundled": true }, "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "version": "1.1.3", + "bundled": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "bundled": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + "bundled": true } } }, @@ -8362,8 +8089,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", @@ -8373,20 +8099,17 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -8394,68 +8117,57 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "bundled": true, "dev": true, "requires": { "cache-base": "^1.0.1", @@ -8469,8 +8181,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8478,8 +8189,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8487,8 +8197,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8496,8 +8205,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8507,16 +8215,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -8525,8 +8231,7 @@ }, "braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -8543,8 +8248,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8554,14 +8258,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "bundled": true, "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -8577,8 +8279,7 @@ }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -8588,15 +8289,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -8606,8 +8305,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -8618,8 +8316,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8629,8 +8326,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -8641,8 +8337,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -8650,14 +8345,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "^1.0.0", @@ -8666,38 +8359,32 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8706,8 +8393,7 @@ }, "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -8715,26 +8401,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -8742,8 +8424,7 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -8752,8 +8433,7 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8761,8 +8441,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8770,8 +8449,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8781,16 +8459,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -8798,8 +8474,7 @@ }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -8813,8 +8488,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -8826,8 +8500,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "^2.3.3", @@ -8841,8 +8514,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -8850,8 +8522,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8859,8 +8530,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8870,8 +8540,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -8880,8 +8549,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -8891,8 +8559,7 @@ }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "bundled": true, "dev": true, "requires": { "array-unique": "^0.3.2", @@ -8907,8 +8574,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8916,8 +8582,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8925,8 +8590,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8934,8 +8598,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8943,8 +8606,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8954,16 +8616,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8974,8 +8634,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8985,8 +8644,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -8996,8 +8654,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "^2.0.0" @@ -9005,14 +8662,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -9021,8 +8676,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "^0.2.2" @@ -9030,32 +8684,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -9068,14 +8717,12 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "^1.4.0", @@ -9086,8 +8733,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -9097,8 +8743,7 @@ }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.6", @@ -9108,8 +8753,7 @@ }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -9118,8 +8762,7 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -9129,20 +8772,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -9151,20 +8791,17 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -9172,20 +8809,17 @@ }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -9193,8 +8827,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -9202,8 +8835,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -9213,28 +8845,24 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "bundled": true, "dev": true } } }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -9242,8 +8870,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", + "bundled": true, "dev": true, "requires": { "is-number": "^4.0.0" @@ -9251,16 +8878,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -9268,50 +8893,42 @@ }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha1-hTjZcDcss3FtU+VVI91UtVeo2Js=", + "bundled": true, "dev": true, "requires": { "append-transform": "^0.4.0" @@ -9319,8 +8936,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha1-LfEhiMD6d5kMDSF20tC6M5QYglk=", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -9331,14 +8947,12 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" @@ -9348,8 +8962,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", - "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", + "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", @@ -9361,8 +8974,7 @@ }, "istanbul-reports": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", - "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" @@ -9370,8 +8982,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -9379,15 +8990,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -9395,8 +9004,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -9408,8 +9016,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "^2.0.0", @@ -9418,22 +9025,19 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "lru-cache": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -9442,14 +9046,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "^1.0.0" @@ -9457,8 +9059,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -9466,14 +9067,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -9481,8 +9080,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "bundled": true, "dev": true, "requires": { "source-map": "^0.6.1" @@ -9490,16 +9088,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "bundled": true, "dev": true } } }, "micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -9519,22 +9115,19 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -9542,14 +9135,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "bundled": true, "dev": true, "requires": { "for-in": "^1.0.2", @@ -9558,8 +9149,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -9569,8 +9159,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -9578,14 +9167,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -9604,16 +9191,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -9624,8 +9209,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -9633,20 +9217,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -9656,8 +9237,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9667,8 +9247,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.0" @@ -9676,8 +9255,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -9685,8 +9263,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -9694,8 +9271,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", @@ -9704,14 +9280,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", + "bundled": true, "dev": true, "requires": { "execa": "^0.7.0", @@ -9721,14 +9295,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", + "bundled": true, "dev": true, "requires": { "p-try": "^1.0.0" @@ -9736,8 +9308,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "^1.1.0" @@ -9745,14 +9316,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" @@ -9760,14 +9329,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -9775,26 +9342,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -9804,20 +9367,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" @@ -9825,8 +9385,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" @@ -9834,8 +9393,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -9846,20 +9404,17 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -9869,8 +9424,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", @@ -9879,8 +9433,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -9891,8 +9444,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -9901,50 +9453,42 @@ }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9953,8 +9497,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" @@ -9962,8 +9505,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "~0.1.10" @@ -9971,20 +9513,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9995,8 +9534,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -10006,8 +9544,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -10015,26 +9552,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "bundled": true, "dev": true, "requires": { "base": "^0.11.1", @@ -10049,8 +9582,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -10058,8 +9590,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -10067,8 +9598,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -10078,8 +9608,7 @@ }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "bundled": true, "dev": true, "requires": { "define-property": "^1.0.0", @@ -10089,8 +9618,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -10098,8 +9626,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -10107,8 +9634,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -10116,8 +9642,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -10127,16 +9652,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.2.0" @@ -10144,14 +9667,12 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "bundled": true, "dev": true, "requires": { "atob": "^2.1.1", @@ -10163,14 +9684,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -10183,8 +9702,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -10193,14 +9711,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -10209,14 +9725,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -10224,8 +9738,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "^0.2.5", @@ -10234,8 +9747,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -10245,8 +9757,7 @@ }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -10255,8 +9766,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -10264,8 +9774,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -10273,14 +9782,12 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -10292,8 +9799,7 @@ }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -10301,8 +9807,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "bundled": true, "dev": true, "requires": { "define-property": "^2.0.2", @@ -10313,8 +9818,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -10323,8 +9827,7 @@ }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -10335,8 +9838,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -10350,15 +9852,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -10369,8 +9869,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -10378,8 +9877,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -10392,8 +9890,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "^0.3.1", @@ -10402,8 +9899,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.3", @@ -10413,8 +9909,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -10424,22 +9919,19 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.2" @@ -10447,16 +9939,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -10465,8 +9955,7 @@ }, "which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -10474,27 +9963,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -10503,14 +9988,12 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -10518,8 +10001,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -10529,8 +10011,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -10540,14 +10021,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -10557,20 +10036,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha1-kLhpk07W6HERXqL/WLA/RyTtLXc=", + "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", @@ -10589,14 +10065,12 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "bundled": true, "dev": true, "requires": { "string-width": "^2.1.1", @@ -10606,8 +10080,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -10617,8 +10090,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -10626,8 +10098,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -11106,9 +10577,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -11920,9 +11391,9 @@ "dev": true }, "sinon": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", - "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.0.tgz", + "integrity": "sha512-MatciKXyM5pXMSoqd593MqTsItJNCkSSl53HJYeKR5wfsDdp2yljjUQJLfVwAWLoBNfx1HThteqygGQ0ZEpXpQ==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 831c2781d53..91425827dfc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,12 +62,12 @@ "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --timeout 600000" }, "dependencies": { - "@google-cloud/common": "^0.19.2", + "@google-cloud/common": "^0.20.1", "arrify": "^1.0.1", "concat-stream": "^1.6.2", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auto-auth": "^0.10.1", + "google-auth-library": "^1.6.1", "google-gax": "^0.16.1", "google-proto-files": "^0.16.0", "is": "^3.2.1", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 22fc6b20f3e..b3af26b83a6 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -213,8 +213,32 @@ "arrify": "^1.0.1" } }, + "@google-cloud/common": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.19.2.tgz", + "integrity": "sha512-CuURBaMx6vUwLFpHLCYyLJXkg6EKYcrAfhH9Fva8C2B9dJ7flT8j/R+o05OuXwj4VQYC4c8bl/hrwyO+XvAwlg==", + "requires": { + "@types/duplexify": "^3.5.0", + "@types/request": "^2.47.0", + "arrify": "^1.0.1", + "axios": "^0.18.0", + "duplexify": "^3.5.4", + "ent": "^2.2.0", + "extend": "^3.0.1", + "google-auth-library": "^1.4.0", + "is": "^3.2.1", + "pify": "^3.0.0", + "request": "^2.85.0", + "retry-request": "^3.3.1", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4", + "through2": "^2.0.3" + } + }, "@google-cloud/datastore": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@google-cloud/datastore/-/datastore-1.4.1.tgz", + "integrity": "sha512-wxTyVKg15dWL57qjbDN4xM+/CN5NUO/GA9JbRGDOw6xqcfWSXI4E6FtnArbpJp+CksViLx6N5oNcsc8gB3u2tw==", "requires": { "@google-cloud/common": "^0.19.2", "arrify": "^1.0.1", @@ -233,2000 +257,937 @@ "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", "through2": "^2.0.3" + } + }, + "@google-cloud/nodejs-repo-tools": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", + "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", + "dev": true, + "requires": { + "ava": "0.25.0", + "colors": "1.1.2", + "fs-extra": "5.0.0", + "got": "8.2.0", + "handlebars": "4.0.11", + "lodash": "4.17.5", + "nyc": "11.4.1", + "proxyquire": "1.8.0", + "semver": "^5.5.0", + "sinon": "4.3.0", + "string": "3.3.3", + "supertest": "3.0.0", + "yargs": "11.0.0", + "yargs-parser": "9.0.2" }, "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "bundled": true + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "bundled": true, + "nyc": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", + "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.8.0", - "babel-plugin-syntax-trailing-function-commas": "^6.20.0", - "babel-plugin-transform-async-to-generator": "^6.16.0", - "babel-plugin-transform-es2015-destructuring": "^6.19.0", - "babel-plugin-transform-es2015-function-name": "^6.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", - "babel-plugin-transform-es2015-parameters": "^6.21.0", - "babel-plugin-transform-es2015-spread": "^6.8.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", - "babel-plugin-transform-exponentiation-operator": "^6.8.0", - "package-hash": "^1.2.0" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" }, "dependencies": { - "md5-hex": { - "version": "1.3.0", + "align-text": { + "version": "0.1.4", "bundled": true, + "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, - "package-hash": { - "version": "1.2.0", + "amdefine": { + "version": "1.0.1", "bundled": true, - "requires": { - "md5-hex": "^1.3.0" - } - } - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "bundled": true, - "requires": { - "@ava/babel-plugin-throws-helper": "^2.0.0", - "babel-plugin-espower": "^2.3.2" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "@babel/code-frame": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/highlight": "7.0.0-beta.49" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/types": "7.0.0-beta.49", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.1", - "bundled": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/types": "7.0.0-beta.49" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/types": "7.0.0-beta.49" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.0.0-beta.49", - "bundled": true - }, - "@babel/template": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", - "lodash": "^4.17.5" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/generator": "7.0.0-beta.49", - "@babel/helper-function-name": "7.0.0-beta.49", - "@babel/helper-split-export-declaration": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" - }, - "dependencies": { - "globals": { - "version": "11.7.0", - "bundled": true - } - } - }, - "@babel/types": { - "version": "7.0.0-beta.49", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "bundled": true - } - } - }, - "@concordance/react": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1" - } - }, - "@google-cloud/common": { - "version": "0.19.2", - "bundled": true, - "requires": { - "@types/duplexify": "^3.5.0", - "@types/request": "^2.47.0", - "arrify": "^1.0.1", - "axios": "^0.18.0", - "duplexify": "^3.5.4", - "ent": "^2.2.0", - "extend": "^3.0.1", - "google-auth-library": "^1.4.0", - "is": "^3.2.1", - "pify": "^3.0.0", - "request": "^2.85.0", - "retry-request": "^3.3.1", - "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4", - "through2": "^2.0.3" - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.2.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.4.1", - "proxyquire": "1.8.0", - "semver": "^5.5.0", - "sinon": "4.3.0", - "string": "3.3.3", - "supertest": "3.0.0", - "yargs": "11.0.0", - "yargs-parser": "9.0.2" - }, - "dependencies": { + "dev": true + }, "ansi-regex": { - "version": "3.0.0", - "bundled": true + "version": "2.1.1", + "bundled": true, + "dev": true }, - "cliui": { - "version": "4.1.0", + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", "bundled": true, + "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "default-require-extensions": "^1.0.0" } }, - "is-fullwidth-code-point": { + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } }, - "lodash": { - "version": "4.17.5", - "bundled": true + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true }, - "nyc": { - "version": "11.4.1", + "babel-code-frame": { + "version": "6.26.0", "bundled": true, + "dev": true, "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.1", - "istanbul-lib-report": "^1.1.2", - "istanbul-lib-source-maps": "^1.2.2", - "istanbul-reports": "^1.1.3", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.0.2", - "micromatch": "^2.3.11", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.1.1", - "yargs": "^10.0.3", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-generator": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.6", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-generator": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", "bundled": true, + "dev": true, "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "core-js": { - "version": "2.5.3", - "bundled": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "invariant": { - "version": "2.2.2", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.5.3", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", "bundled": true, + "dev": true, "requires": { - "kind-of": "^3.0.2" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "bundled": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "bundled": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.1", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "bundled": true, - "requires": { - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "bundled": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - }, - "lodash": { - "version": "4.17.4", - "bundled": true - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.1", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mimic-fn": { - "version": "1.1.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", "bundled": true, + "dev": true, "requires": { - "minimist": "0.0.8" + "amdefine": ">=0.0.4" } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", "bundled": true, + "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "has-flag": "^1.0.0" } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", "bundled": true, + "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.1.0", - "bundled": true - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "semver": { - "version": "5.4.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "requires": { - "spdx-license-ids": "^1.0.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - }, - "test-exclude": { - "version": "4.1.1", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "10.0.3", - "bundled": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - } - } - }, - "yargs-parser": { - "version": "8.0.0", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } + "ms": "2.0.0" } } } }, - "os-locale": { - "version": "2.1.0", + "istanbul-reports": { + "version": "1.1.3", "bundled": true, + "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "handlebars": "^4.0.3" } }, - "proxyquire": { - "version": "1.8.0", + "js-tokens": { + "version": "3.0.2", "bundled": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" - } + "dev": true }, - "sinon": { - "version": "4.3.0", + "jsesc": { + "version": "1.3.0", "bundled": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" - } + "dev": true }, - "string-width": { - "version": "2.1.1", + "kind-of": { + "version": "3.2.2", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-buffer": "^1.1.5" } }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true }, - "yargs": { - "version": "11.0.0", + "lcid": { + "version": "1.0.0", "bundled": true, + "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "invert-kv": "^1.0.0" } - } - } - }, - "@ladjs/time-require": { - "version": "0.1.4", - "bundled": true, - "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "bundled": true }, - "chalk": { - "version": "0.4.0", + "load-json-file": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, - "pretty-ms": { - "version": "0.2.2", + "locate-path": { + "version": "2.0.0", "bundled": true, + "dev": true, "requires": { - "parse-ms": "^0.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } } }, - "strip-ansi": { - "version": "0.1.1", - "bundled": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/base64": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "bundled": true - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "bundled": true, - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "bundled": true - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/path": { - "version": "1.1.2", - "bundled": true - }, - "@protobufjs/pool": { - "version": "1.1.0", - "bundled": true - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "bundled": true - }, - "@sindresorhus/is": { - "version": "0.7.0", - "bundled": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "bundled": true, - "requires": { - "samsam": "1.3.0" - } - }, - "@types/caseless": { - "version": "0.12.1", - "bundled": true - }, - "@types/duplexify": { - "version": "3.5.0", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/long": { - "version": "3.0.32", - "bundled": true - }, - "@types/node": { - "version": "10.3.4", - "bundled": true - }, - "@types/request": { - "version": "2.47.1", - "bundled": true, - "requires": { - "@types/caseless": "*", - "@types/form-data": "*", - "@types/node": "*", - "@types/tough-cookie": "*" - } - }, - "@types/tough-cookie": { - "version": "2.3.3", - "bundled": true - }, - "acorn": { - "version": "5.7.1", - "bundled": true - }, - "acorn-es7-plugin": { - "version": "1.1.7", - "bundled": true - }, - "acorn-jsx": { - "version": "3.0.1", - "bundled": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "bundled": true - } - } - }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "bundled": true - }, - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", + "lodash": { + "version": "4.17.4", "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true + "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true }, - "string-width": { - "version": "2.1.1", + "loose-envify": { + "version": "1.3.1", "bundled": true, + "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "js-tokens": "^3.0.0" } }, - "strip-ansi": { - "version": "4.0.0", + "lru-cache": { + "version": "4.1.1", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "1.3.2", - "bundled": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", + }, + "md5-hex": { + "version": "1.3.0", "bundled": true, + "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "md5-o-matic": "^0.1.1" } }, - "array-unique": { - "version": "0.2.1", - "bundled": true + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true }, - "braces": { - "version": "1.8.5", + "mem": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "mimic-fn": "^1.0.0" } }, - "expand-brackets": { - "version": "0.1.5", + "merge-source-map": { + "version": "1.0.4", "bundled": true, + "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" + "source-map": "^0.5.6" } }, "micromatch": { "version": "2.3.11", "bundled": true, + "dev": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", @@ -2242,11542 +1203,4090 @@ "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" } - } - } - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "argv": { - "version": "0.0.2", - "bundled": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-exclude": { - "version": "1.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-differ": { - "version": "1.0.0", - "bundled": true - }, - "array-filter": { - "version": "1.0.0", - "bundled": true - }, - "array-find": { - "version": "1.0.0", - "bundled": true - }, - "array-find-index": { - "version": "1.0.2", - "bundled": true - }, - "array-union": { - "version": "1.0.2", - "bundled": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "ascli": { - "version": "1.0.1", - "bundled": true, - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "auto-bind": { - "version": "1.2.1", - "bundled": true - }, - "ava": { - "version": "0.25.0", - "bundled": true, - "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true }, - "empower-core": { - "version": "0.6.2", + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", "bundled": true, + "dev": true, "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" + "brace-expansion": "^1.1.7" } }, - "globby": { - "version": "6.1.0", + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", "bundled": true, + "dev": true, "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "minimist": "0.0.8" } }, - "pify": { - "version": "2.3.0", - "bundled": true + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true }, - "pinkie": { - "version": "2.0.4", - "bundled": true + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } }, - "pinkie-promise": { - "version": "2.0.1", + "normalize-path": { + "version": "2.1.1", "bundled": true, + "dev": true, "requires": { - "pinkie": "^2.0.0" + "remove-trailing-separator": "^1.0.1" } }, - "strip-ansi": { - "version": "4.0.0", + "npm-run-path": { + "version": "2.0.2", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "path-key": "^2.0.0" } - } - } - }, - "ava-init": { - "version": "0.2.1", - "bundled": true, - "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.7.0", - "bundled": true - }, - "axios": { - "version": "0.18.0", - "bundled": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true }, - "chalk": { - "version": "1.1.3", + "number-is-nan": { + "version": "1.0.1", "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", + "once": { + "version": "1.4.0", "bundled": true, + "dev": true, "requires": { - "ms": "2.0.0" + "wrappy": "1" } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "bundled": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "bundled": true, - "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "bundled": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "bundled": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", + }, + "optimist": { + "version": "0.6.1", "bundled": true, + "dev": true, "requires": { - "source-map": "^0.5.6" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", + }, + "os-homedir": { + "version": "1.0.2", "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, "requires": { - "ms": "2.0.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { + }, + "p-finally": { "version": "1.0.0", "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "p-limit": "^1.1.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", + "parse-glob": { + "version": "3.0.4", "bundled": true, + "dev": true, "requires": { - "kind-of": "^6.0.0" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", + "parse-json": { + "version": "2.2.0", "bundled": true, + "dev": true, "requires": { - "kind-of": "^6.0.0" + "error-ex": "^1.2.0" } }, - "is-descriptor": { - "version": "1.0.2", + "path-exists": { + "version": "2.1.0", "bundled": true, + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "pinkie-promise": "^2.0.0" } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "boxen": { - "version": "1.3.0", - "bundled": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true }, - "camelcase": { - "version": "4.1.0", - "bundled": true + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true }, - "string-width": { - "version": "2.1.1", + "path-parse": { + "version": "1.0.5", "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } + "dev": true }, - "strip-ansi": { - "version": "4.0.0", + "path-type": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { "version": "2.0.1", "bundled": true, + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "pinkie": "^2.0.0" } - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "buf-compare": { - "version": "1.0.1", - "bundled": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "bundled": true - }, - "buffer-from": { - "version": "1.1.0", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "bytebuffer": { - "version": "5.0.1", - "bundled": true, - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "bundled": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "bundled": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { + }, + "pkg-dir": { "version": "1.0.0", - "bundled": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", "bundled": true, + "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } } }, - "write-file-atomic": { - "version": "1.3.4", + "preserve": { + "version": "0.2.0", "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "call-signature": { - "version": "0.0.2", - "bundled": true - }, - "caller-path": { - "version": "0.1.0", - "bundled": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "bundled": true - }, - "camelcase": { - "version": "2.1.1", - "bundled": true - }, - "camelcase-keys": { - "version": "2.1.0", - "bundled": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "catharsis": { - "version": "0.8.9", - "bundled": true, - "requires": { - "underscore-contrib": "~0.3.0" - } - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.4.2", - "bundled": true - }, - "chokidar": { - "version": "1.7.0", - "bundled": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", + }, + "read-pkg": { + "version": "1.1.0", "bundled": true, + "dev": true, "requires": { - "is-glob": "^2.0.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", + "read-pkg-up": { + "version": "1.0.1", "bundled": true, + "dev": true, "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "ci-info": { - "version": "1.1.3", - "bundled": true - }, - "circular-json": { - "version": "0.3.3", - "bundled": true - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.4", "bundled": true, + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-equal-shallow": "^0.1.3" } - } - } - }, - "clean-stack": { - "version": "1.3.0", - "bundled": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "bundled": true - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "bundled": true - }, - "cli-truncate": { - "version": "1.1.0", - "bundled": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true }, - "is-fullwidth-code-point": { + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { "version": "2.0.0", - "bundled": true + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.4.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true }, "string-width": { "version": "2.1.1", "bundled": true, + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "strip-ansi": { - "version": "4.0.0", + "version": "3.0.1", "bundled": true, + "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } - } - } - }, - "cli-width": { - "version": "2.2.0", - "bundled": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "co-with-promise": { - "version": "4.6.0", - "bundled": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "bundled": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "codecov": { - "version": "3.0.2", - "bundled": true, - "requires": { - "argv": "0.0.2", - "request": "^2.81.0", - "urlgrey": "0.4.4" - } - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "bundled": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "bundled": true - }, - "colors": { - "version": "1.1.2", - "bundled": true - }, - "colour": { - "version": "0.7.1", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "bundled": true - }, - "common-path-prefix": { - "version": "1.0.0", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concordance": { - "version": "3.0.0", - "bundled": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", + }, + "strip-bom": { + "version": "2.0.0", "bundled": true, + "dev": true, "requires": { - "time-zone": "^1.0.0" + "is-utf8": "^0.2.0" } - } - } - }, - "configstore": { - "version": "3.1.2", - "bundled": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "bundled": true - }, - "cookiejar": { - "version": "2.1.2", - "bundled": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-assert": { - "version": "0.2.1", - "bundled": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "bundled": true - }, - "currently-unhandled": { - "version": "0.4.1", - "bundled": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-time": { - "version": "0.1.1", - "bundled": true - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "decompress-response": { - "version": "3.3.0", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "bundled": true - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "deep-is": { - "version": "0.1.3", - "bundled": true - }, - "deep-strict-equal": { - "version": "0.2.0", - "bundled": true, - "requires": { - "core-assert": "^0.2.0" - } - }, - "define-properties": { - "version": "1.1.2", - "bundled": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { + }, + "strip-eof": { "version": "1.0.0", "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "dev": true, "requires": { - "kind-of": "^6.0.0" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.29", "bundled": true, + "dev": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } } }, - "is-descriptor": { + "uglify-to-browserify": { "version": "1.0.2", "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } - } - } - }, - "del": { - "version": "2.2.2", - "bundled": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "5.0.0", + }, + "which": { + "version": "1.3.0", "bundled": true, + "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "isexe": "^2.0.0" } }, - "pify": { - "version": "2.3.0", - "bundled": true + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true }, - "pinkie": { - "version": "2.0.4", - "bundled": true + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true }, - "pinkie-promise": { - "version": "2.0.1", + "wordwrap": { + "version": "0.0.3", "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, "requires": { - "pinkie": "^2.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "10.0.3", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + } + } + }, + "yargs-parser": { + "version": "8.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } } } } }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, - "diff-match-patch": { - "version": "1.0.1", - "bundled": true - }, - "dir-glob": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "bundled": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "0.1.0", - "bundled": true, - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "bundled": true - } - } - }, - "domelementtype": { - "version": "1.3.0", - "bundled": true - }, - "domhandler": { - "version": "2.4.2", - "bundled": true, + "proxyquire": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", + "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "dev": true, "requires": { - "domelementtype": "1" + "fill-keys": "^1.0.2", + "module-not-found-error": "^1.0.0", + "resolve": "~1.1.7" } }, - "domutils": { - "version": "1.7.0", - "bundled": true, + "sinon": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", + "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" } + } + } + }, + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true }, - "dot-prop": { - "version": "4.2.0", - "bundled": true, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, "requires": { - "is-obj": "^1.0.0" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "parse-ms": "^0.1.0" } }, - "eastasianwidth": { - "version": "0.2.0", - "bundled": true - }, - "ecc-jsbn": { + "strip-ansi": { "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "bundled": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "empower": { - "version": "1.3.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "empower-core": "^1.2.0" - } - }, - "empower-assert": { - "version": "1.1.0", - "bundled": true, - "requires": { - "estraverse": "^4.2.0" - } - }, - "empower-core": { - "version": "1.2.0", - "bundled": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", + "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "requires": { + "samsam": "1.3.0" + } + }, + "@types/caseless": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", + "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==" + }, + "@types/duplexify": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/long": { + "version": "3.0.32", + "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", + "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + }, + "@types/node": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.4.tgz", + "integrity": "sha512-YMLlzdeNnAyLrQew39IFRkMacAR5BqKGIEei9ZjdHsIZtv+ZWKYTu1i7QJhetxQ9ReXx8w5f+cixdHZG3zgMQA==" + }, + "@types/request": { + "version": "2.47.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", + "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } + }, + "@types/tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" + }, + "acorn": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "once": "^1.4.0" + "is-buffer": "^1.1.5" } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "ent": { - "version": "2.2.0", - "bundled": true - }, - "entities": { - "version": "1.1.1", - "bundled": true - }, - "equal-length": { - "version": "1.0.1", - "bundled": true + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, - "error-ex": { - "version": "1.3.2", - "bundled": true, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "es5-ext": { - "version": "0.10.45", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "ansi-regex": "^3.0.0" } - }, - "es6-error": { - "version": "4.1.1", - "bundled": true - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, + } + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "arr-flatten": "^1.0.1" } }, - "es6-map": { - "version": "0.1.5", - "bundled": true, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, - "es6-set": { + "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "is-posix-bracket": "^0.1.0" } }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "is-extglob": "^1.0.0" } }, - "es6-weak-map": { - "version": "2.0.2", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, - "escallmatch": { - "version": "1.5.0", - "bundled": true, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { - "call-matcher": "^1.0.0", - "esprima": "^2.0.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "bundled": true - } + "is-extglob": "^1.0.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escodegen": { - "version": "1.10.0", - "bundled": true, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - } + "is-buffer": "^1.1.5" } }, - "escope": { - "version": "3.6.0", - "bundled": true, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "4.19.1", - "bundled": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "globals": { - "version": "11.7.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + }, + "auto-bind": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", + "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", + "dev": true + }, + "ava": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "eslint-config-prettier": { - "version": "2.9.0", - "bundled": true, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true, "requires": { - "get-stdin": "^5.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "5.0.1", - "bundled": true - } + "call-signature": "0.0.2", + "core-js": "^2.0.0" } }, - "eslint-plugin-node": { - "version": "6.0.1", - "bundled": true, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, "requires": { - "ignore": "^3.3.6", - "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "^5.4.1" - }, - "dependencies": { - "resolve": { - "version": "1.8.1", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } - } + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "eslint-plugin-prettier": { - "version": "2.6.0", - "bundled": true, - "requires": { - "fast-diff": "^1.1.1", - "jest-docblock": "^21.0.0" - } + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true }, - "eslint-scope": { - "version": "3.7.1", - "bundled": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, - "eslint-visitor-keys": { - "version": "1.0.0", - "bundled": true + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, - "espower": { - "version": "2.1.1", - "bundled": true, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { - "array-find": "^1.0.0", - "escallmatch": "^1.5.0", - "escodegen": "^1.7.0", - "escope": "^3.3.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.3.0", - "estraverse": "^4.1.0", - "source-map": "^0.5.0", - "type-name": "^2.0.0", - "xtend": "^4.0.0" + "pinkie": "^2.0.0" } }, - "espower-loader": { - "version": "1.2.2", - "bundled": true, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "convert-source-map": "^1.1.0", - "espower-source": "^2.0.0", - "minimatch": "^3.0.0", - "source-map-support": "^0.4.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "espower-location-detector": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "espower-source": { - "version": "2.3.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0", - "acorn-es7-plugin": "^1.0.10", - "convert-source-map": "^1.1.1", - "empower-assert": "^1.0.0", - "escodegen": "^1.10.0", - "espower": "^2.1.1", - "estraverse": "^4.0.0", - "merge-estraverse-visitors": "^1.0.0", - "multi-stage-sourcemap": "^0.2.1", - "path-is-absolute": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "espree": { - "version": "3.5.4", - "bundled": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "bundled": true - }, - "espurify": { - "version": "1.8.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0" - } - }, - "esquery": { - "version": "1.0.1", - "bundled": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "event-emitter": { - "version": "0.3.5", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "bundled": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "ansi-regex": "^3.0.0" } + } + } + }, + "ava-init": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "external-editor": { - "version": "2.2.0", - "bundled": true, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "ms": "2.0.0" } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-diff": { - "version": "1.1.2", - "bundled": true - }, - "fast-glob": { - "version": "2.2.2", - "bundled": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "bundled": true - }, - "figures": { - "version": "2.0.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "bundled": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-keys": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { "version": "1.3.0", - "bundled": true, - "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" - } - }, - "fn-name": { - "version": "2.0.1", - "bundled": true - }, - "follow-redirects": { - "version": "1.5.0", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "bundled": true - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-name-support": { - "version": "0.2.0", - "bundled": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "bundled": true - }, - "gcp-metadata": { - "version": "0.6.3", - "bundled": true, - "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-port": { - "version": "3.2.0", - "bundled": true - }, - "get-stdin": { - "version": "4.0.1", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "globby": { - "version": "8.0.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "google-auth-library": { - "version": "1.6.1", - "bundled": true, - "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.6.3", - "gtoken": "^2.3.0", - "jws": "^3.1.5", - "lodash.isstring": "^4.0.1", - "lru-cache": "^4.1.3", - "retry-axios": "^0.3.2" - } - }, - "google-auto-auth": { - "version": "0.10.1", - "bundled": true, - "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.6.1", - "google-auth-library": "^1.3.1", - "request": "^2.79.0" - } - }, - "google-gax": { - "version": "0.16.1", - "bundled": true, - "requires": { - "duplexify": "^3.5.4", - "extend": "^3.0.0", - "globby": "^8.0.0", - "google-auto-auth": "^0.10.0", - "google-proto-files": "^0.15.0", - "grpc": "^1.10.0", - "is-stream-ended": "^0.1.0", - "lodash": "^4.17.2", - "protobufjs": "^6.8.0", - "through2": "^2.0.3" - }, - "dependencies": { - "google-proto-files": { - "version": "0.15.1", - "bundled": true, - "requires": { - "globby": "^7.1.1", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - } - } - } - } - }, - "google-p12-pem": { - "version": "1.0.2", - "bundled": true, - "requires": { - "node-forge": "^0.7.4", - "pify": "^3.0.0" - } - }, - "google-proto-files": { - "version": "0.16.1", - "bundled": true, - "requires": { - "globby": "^8.0.0", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - } - }, - "got": { - "version": "8.2.0", - "bundled": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "growl": { - "version": "1.10.5", - "bundled": true - }, - "grpc": { - "version": "1.12.3", - "bundled": true, - "requires": { - "lodash": "^4.17.5", - "nan": "^2.0.0", - "node-pre-gyp": "^0.10.0", - "protobufjs": "^5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "gtoken": { - "version": "2.3.0", - "bundled": true, - "requires": { - "axios": "^0.18.0", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.4", - "mime": "^2.2.0", - "pify": "^3.0.0" - } - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "bundled": true - }, - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "bundled": true - }, - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "bundled": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "bundled": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "1.0.0", - "bundled": true - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "htmlparser2": { - "version": "3.9.2", - "bundled": true, - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "bundled": true, - "requires": { - "dot-prop": "^4.1.0", - "es6-error": "^4.0.2", - "graceful-fs": "^4.1.11", - "indent-string": "^3.1.0", - "json5": "^0.5.1", - "lodash.clonedeep": "^4.5.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "pkg-dir": "^2.0.0", - "resolve-from": "^3.0.0", - "safe-buffer": "^5.0.1" - } - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "3.3.10", - "bundled": true - }, - "ignore-by-default": { - "version": "1.0.1", - "bundled": true - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true - }, - "import-local": { - "version": "0.1.1", - "bundled": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "ink-docstrap": { - "version": "1.3.2", - "bundled": true, - "requires": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" - } - }, - "inquirer": { - "version": "3.3.0", - "bundled": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "intelli-espower-loader": { - "version": "1.0.1", - "bundled": true, - "requires": { - "espower-loader": "^1.0.0" - } - }, - "into-stream": { - "version": "3.1.0", - "bundled": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "irregular-plurals": { - "version": "1.4.0", - "bundled": true - }, - "is": { - "version": "3.2.1", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ci-info": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "bundled": true - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-object": { - "version": "1.0.1", - "bundled": true - }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "bundled": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "bundled": true - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true - }, - "is-resolvable": { - "version": "1.1.0", - "bundled": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-stream-ended": { - "version": "0.1.4", - "bundled": true - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "is-url": { - "version": "1.2.4", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "istanbul-lib-coverage": { - "version": "2.0.0", - "bundled": true - }, - "istanbul-lib-instrument": { - "version": "2.2.0", - "bundled": true, - "requires": { - "@babel/generator": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/traverse": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", - "istanbul-lib-coverage": "^2.0.0", - "semver": "^5.5.0" - } - }, - "isurl": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "jest-docblock": { - "version": "21.2.0", - "bundled": true - }, - "js-string-escape": { - "version": "1.0.1", - "bundled": true - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.12.0", - "bundled": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "js2xmlparser": { - "version": "3.0.0", - "bundled": true, - "requires": { - "xmlcreate": "^1.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "jsdoc": { - "version": "3.5.5", - "bundled": true, - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", - "taffydb": "2.6.2", - "underscore": "~1.8.3" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.19", - "bundled": true - } - } - }, - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "json-buffer": { - "version": "3.0.0", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonfile": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-extend": { - "version": "1.1.27", - "bundled": true - }, - "jwa": { - "version": "1.1.6", - "bundled": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "bundled": true, - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "3.0.0", - "bundled": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "klaw": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "last-line-stream": { - "version": "1.0.0", - "bundled": true, - "requires": { - "through2": "^2.0.0" - } - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "bundled": true - }, - "lodash.debounce": { - "version": "4.0.8", - "bundled": true - }, - "lodash.difference": { - "version": "4.5.0", - "bundled": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "bundled": true - }, - "lodash.flatten": { - "version": "4.4.0", - "bundled": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "bundled": true - }, - "lodash.get": { - "version": "4.4.2", - "bundled": true - }, - "lodash.isequal": { - "version": "4.5.0", - "bundled": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "bundled": true - }, - "lodash.isstring": { - "version": "4.0.1", - "bundled": true - }, - "lodash.merge": { - "version": "4.6.1", - "bundled": true - }, - "lodash.mergewith": { - "version": "4.6.1", - "bundled": true - }, - "lolex": { - "version": "2.7.0", - "bundled": true - }, - "long": { - "version": "4.0.0", - "bundled": true - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "bundled": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-obj": { - "version": "1.0.1", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "0.3.19", - "bundled": true - }, - "matcher": { - "version": "1.1.1", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.1", - "bundled": true - }, - "md5-hex": { - "version": "2.0.0", - "bundled": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "meow": { - "version": "3.7.0", - "bundled": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "bundled": true - }, - "merge-estraverse-visitors": { - "version": "1.0.0", - "bundled": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "merge2": { - "version": "1.2.2", - "bundled": true - }, - "methods": { - "version": "1.1.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "2.3.1", - "bundled": true - }, - "mime-db": { - "version": "1.33.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "mimic-response": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "bundled": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "module-not-found-error": { - "version": "1.0.1", - "bundled": true - }, - "moment": { - "version": "2.22.2", - "bundled": true - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "multi-stage-sourcemap": { - "version": "0.2.1", - "bundled": true, - "requires": { - "source-map": "^0.1.34" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "bundled": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "multimatch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true - }, - "nan": { - "version": "2.10.0", - "bundled": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "nise": { - "version": "1.4.2", - "bundled": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - } - }, - "node-forge": { - "version": "0.7.5", - "bundled": true - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "bundled": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "nyc": { - "version": "12.0.2", - "bundled": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.4.1", - "bundled": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "bundled": true, - "requires": { - "is-observable": "^0.2.0", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "is-observable": { - "version": "0.2.0", - "bundled": true, - "requires": { - "symbol-observable": "^0.2.2" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "bundled": true - } - } - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "option-chain": { - "version": "1.0.0", - "bundled": true - }, - "optionator": { - "version": "0.8.2", - "bundled": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "bundled": true - } - } - }, - "optjs": { - "version": "3.2.2", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "1.4.0", - "bundled": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "p-cancelable": { - "version": "0.3.0", - "bundled": true - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "package-hash": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", - "release-zalgo": "^1.0.0" - } - }, - "package-json": { - "version": "4.0.1", - "bundled": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "bundled": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - } - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-ms": { - "version": "0.1.2", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-to-regexp": { - "version": "1.7.0", - "bundled": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "bundled": true - } - } - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pinkie": { - "version": "1.0.0", - "bundled": true - }, - "pinkie-promise": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pinkie": "^1.0.0" - } - }, - "pkg-conf": { - "version": "2.1.0", - "bundled": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "plur": { - "version": "2.1.2", - "bundled": true, - "requires": { - "irregular-plurals": "^1.0.0" - } - }, - "pluralize": { - "version": "7.0.0", - "bundled": true - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "postcss": { - "version": "6.0.22", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "power-assert": { - "version": "1.6.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "empower": "^1.3.0", - "power-assert-formatter": "^1.4.1", - "universal-deep-strict-equal": "^1.2.1", - "xtend": "^4.0.0" - } - }, - "power-assert-context-formatter": { - "version": "1.2.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "power-assert-context-traversal": "^1.2.0" - } - }, - "power-assert-context-reducer-ast": { - "version": "1.2.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0", - "acorn-es7-plugin": "^1.0.12", - "core-js": "^2.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.2.0" - } - }, - "power-assert-context-traversal": { - "version": "1.2.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "estraverse": "^4.1.0" - } - }, - "power-assert-formatter": { - "version": "1.4.1", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "power-assert-context-formatter": "^1.0.7", - "power-assert-context-reducer-ast": "^1.0.7", - "power-assert-renderer-assertion": "^1.0.7", - "power-assert-renderer-comparison": "^1.0.7", - "power-assert-renderer-diagram": "^1.0.7", - "power-assert-renderer-file": "^1.0.7" - } - }, - "power-assert-renderer-assertion": { - "version": "1.2.0", - "bundled": true, - "requires": { - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "bundled": true - }, - "power-assert-renderer-comparison": { - "version": "1.2.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "diff-match-patch": "^1.0.0", - "power-assert-renderer-base": "^1.1.1", - "stringifier": "^1.3.0", - "type-name": "^2.0.1" - } - }, - "power-assert-renderer-diagram": { - "version": "1.2.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0", - "stringifier": "^1.3.0" - } - }, - "power-assert-renderer-file": { - "version": "1.2.0", - "bundled": true, - "requires": { - "power-assert-renderer-base": "^1.1.1" - } - }, - "power-assert-util-string-width": { - "version": "1.2.0", - "bundled": true, - "requires": { - "eastasianwidth": "^0.2.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "prettier": { - "version": "1.13.5", - "bundled": true - }, - "pretty-ms": { - "version": "3.2.0", - "bundled": true, - "requires": { - "parse-ms": "^1.0.0" - }, - "dependencies": { - "parse-ms": { - "version": "1.0.1", - "bundled": true - } - } - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "progress": { - "version": "2.0.0", - "bundled": true - }, - "prop-assign": { - "version": "1.0.0", - "bundled": true - }, - "propprop": { - "version": "0.3.1", - "bundled": true - }, - "protobufjs": { - "version": "6.8.6", - "bundled": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^3.0.32", - "@types/node": "^8.9.4", - "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.20", - "bundled": true - } - } - }, - "proxyquire": { - "version": "2.0.1", - "bundled": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.5.0", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.2", - "bundled": true - }, - "query-string": { - "version": "5.1.1", - "bundled": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "randomatic": { - "version": "3.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "bundled": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "bundled": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "read-pkg-up": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "bundled": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "1.1.0", - "bundled": true - }, - "regexpu-core": { - "version": "2.0.0", - "bundled": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.87.0", - "bundled": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "require-precompiled": { - "version": "0.1.0", - "bundled": true - }, - "require-uncached": { - "version": "1.0.3", - "bundled": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "bundled": true - } - } - }, - "requizzle": { - "version": "0.2.1", - "bundled": true, - "requires": { - "underscore": "~1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "bundled": true - } - } - }, - "resolve": { - "version": "1.1.7", - "bundled": true - }, - "resolve-cwd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "responselike": { - "version": "1.0.2", - "bundled": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "retry-axios": { - "version": "0.3.2", - "bundled": true - }, - "retry-request": { - "version": "3.3.2", - "bundled": true, - "requires": { - "request": "^2.81.0", - "through2": "^2.0.0" - } - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "run-async": { - "version": "2.3.0", - "bundled": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "bundled": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "bundled": true, - "requires": { - "rx-lite": "*" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "samsam": { - "version": "1.3.0", - "bundled": true - }, - "sanitize-html": { - "version": "1.18.2", - "bundled": true, - "requires": { - "chalk": "^2.3.0", - "htmlparser2": "^3.9.0", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.mergewith": "^4.6.0", - "postcss": "^6.0.14", - "srcset": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "requires": { - "semver": "^5.0.3" - } - }, - "serialize-error": { - "version": "2.1.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "sinon": { - "version": "5.1.1", - "bundled": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" - } - }, - "slash": { - "version": "1.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.6", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split-array-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-stream-ended": "^0.1.4" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "srcset": { - "version": "1.0.0", - "bundled": true, - "requires": { - "array-uniq": "^1.0.2", - "number-is-nan": "^1.0.0" - } - }, - "sshpk": { - "version": "1.14.2", - "bundled": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.1", - "bundled": true - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-events": { - "version": "1.0.4", - "bundled": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "bundled": true - }, - "string": { - "version": "3.3.3", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringifier": { - "version": "1.3.0", - "bundled": true, - "requires": { - "core-js": "^2.0.0", - "traverse": "^0.6.6", - "type-name": "^2.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-indent": { - "version": "1.0.1", - "bundled": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "stubs": { - "version": "3.0.0", - "bundled": true - }, - "superagent": { - "version": "3.8.3", - "bundled": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "bundled": true - } - } - }, - "supertap": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "indent-string": "^3.2.0", - "js-yaml": "^3.10.0", - "serialize-error": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "supertest": { - "version": "3.0.0", - "bundled": true, - "requires": { - "methods": "~1.1.2", - "superagent": "^3.0.0" - } - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "bundled": true - }, - "table": { - "version": "4.0.2", - "bundled": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "taffydb": { - "version": "2.6.2", - "bundled": true - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "requires": { - "execa": "^0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "bundled": true - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "time-zone": { - "version": "1.0.0", - "bundled": true - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "tmp": { - "version": "0.0.33", - "bundled": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "traverse": { - "version": "0.6.6", - "bundled": true - }, - "trim-newlines": { - "version": "1.0.0", - "bundled": true - }, - "trim-off-newlines": { - "version": "1.0.1", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "bundled": true - }, - "type-name": { - "version": "2.0.2", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "bundled": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "uid2": { - "version": "0.0.3", - "bundled": true - }, - "underscore": { - "version": "1.8.3", - "bundled": true - }, - "underscore-contrib": { - "version": "0.3.0", - "bundled": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "bundled": true - } - } - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "mkdirp": "^0.5.1", - "os-tmpdir": "^1.0.1", - "uid2": "0.0.3" - } - }, - "universal-deep-strict-equal": { - "version": "1.2.2", - "bundled": true, - "requires": { - "array-filter": "^1.0.0", - "indexof": "0.0.1", - "object-keys": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-to-options": { - "version": "1.0.1", - "bundled": true - }, - "urlgrey": { - "version": "0.4.4", - "bundled": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "bundled": true - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.4", - "bundled": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write": { - "version": "0.2.1", - "bundled": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "write-json-file": { - "version": "2.3.0", - "bundled": true, - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "bundled": true - } - } - }, - "write-pkg": { - "version": "3.2.0", - "bundled": true, - "requires": { - "sort-keys": "^2.0.0", - "write-json-file": "^2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true - }, - "xmlcreate": { - "version": "1.0.2", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "3.32.0", - "bundled": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", - "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", - "dev": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.2.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.4.1", - "proxyquire": "1.8.0", - "semver": "^5.5.0", - "sinon": "4.3.0", - "string": "3.3.3", - "supertest": "3.0.0", - "yargs": "11.0.0", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "nyc": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", - "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.1", - "istanbul-lib-report": "^1.1.2", - "istanbul-lib-source-maps": "^1.2.2", - "istanbul-reports": "^1.1.3", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.0.2", - "micromatch": "^2.3.11", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.1.1", - "yargs": "^10.0.3", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.6", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.1", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "^1.0.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "test-exclude": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", - "dev": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - } - } - }, - "yargs-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - } + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-espower": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", + "dev": true, + "requires": { + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + }, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" } }, - "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" + "is-extglob": "^1.0.0" + } + } + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, - "sinon": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", - "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "requires": { + "pinkie-promise": "^1.0.0" + } + }, + "code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "requires": { + "convert-to-spaces": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" + "time-zone": "^1.0.0" } } } }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "ansi-styles": { + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" + "kind-of": "^6.0.0" } }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "parse-ms": "^0.1.0" + "kind-of": "^6.0.0" } }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "requires": { - "samsam": "1.3.0" - } + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "repeating": "^2.0.0" } }, - "amdefine": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diff-match-patch": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", + "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" }, - "ansi-align": { + "dir-glob": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "string-width": "^2.0.0" + "is-obj": "^1.0.0" } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "requires": { - "color-convert": "^1.9.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "jsbn": "~0.1.0" } }, - "argparse": { + "ecdsa-sig-formatter": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", "requires": { - "sprintf-js": "~1.0.2" + "safe-buffer": "^5.0.1" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, + "empower": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.0.tgz", + "integrity": "sha512-tP2WqM7QzrPguCCQEQfFFDF+6Pw6YWLQal3+GHQaV+0uIr0S+jyREQPWljE02zFCYPFYLZ3LosiRV+OzTrxPpQ==", "requires": { - "arr-flatten": "^1.0.1" + "core-js": "^2.0.0", + "empower-core": "^1.2.0" } }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, + "empower-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", "requires": { - "array-uniq": "^1.0.1" + "call-signature": "0.0.2", + "core-js": "^2.0.0" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" }, - "arrify": { + "equal-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", "dev": true }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "auto-bind": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", - "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - } + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" } }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "espurify": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", + "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" + "core-js": "^2.0.0" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ms": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "ansi-regex": "^2.0.0" + "is-descriptor": "^0.1.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } } } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "fill-range": "^2.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "ms": "2.0.0" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } } } }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" } }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "escape-string-regexp": "^1.0.5" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", + "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "is-object": "~1.0.1", + "merge-descriptors": "~1.0.0" } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "babel-runtime": "^6.22.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" + "locate-path": "^2.0.0" } }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", "dev": true }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "debug": "^3.1.0" } }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "for-in": "^1.0.1" } }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "babel-runtime": "^6.22.0" + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" } }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "dev": true }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "map-cache": "^0.2.2" } }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, + "optional": true, "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "abbrev": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "source-map": "^0.5.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "md5-o-matic": "^0.1.1" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "time-zone": "^1.0.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, "dev": true } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { + "function-name-support": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", "dev": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, + "gcp-metadata": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", + "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", "requires": { - "is-arrayish": "^0.2.1" + "axios": "^0.18.0", + "extend": "^3.0.1", + "retry-axios": "0.3.2" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", "dev": true }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, - "espurify": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", - "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", - "dev": true, - "requires": { - "core-js": "^2.0.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "assert-plus": "^1.0.0" } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "is-posix-bracket": "^0.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-extglob": "^1.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "ini": "^1.3.4" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, + "google-auth-library": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", + "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "axios": "^0.18.0", + "gcp-metadata": "^0.6.3", + "gtoken": "^2.3.0", + "jws": "^3.1.5", + "lodash.isstring": "^4.0.1", + "lru-cache": "^4.1.3", + "retry-axios": "^0.3.2" } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, + "google-auto-auth": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", + "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "async": "^2.3.0", + "gcp-metadata": "^0.6.1", + "google-auth-library": "^1.3.1", + "request": "^2.79.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "google-gax": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", + "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", "requires": { - "locate-path": "^2.0.0" + "duplexify": "^3.5.4", + "extend": "^3.0.0", + "globby": "^8.0.0", + "google-auto-auth": "^0.10.0", + "google-proto-files": "^0.15.0", + "grpc": "^1.10.0", + "is-stream-ended": "^0.1.0", + "lodash": "^4.17.2", + "protobufjs": "^6.8.0", + "through2": "^2.0.3" + }, + "dependencies": { + "google-proto-files": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", + "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", + "requires": { + "globby": "^7.1.1", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + } + } + } } }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "for-in": { + "google-p12-pem": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", + "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "node-forge": "^0.7.4", + "pify": "^3.0.0" } }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, + "google-proto-files": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz", + "integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==", "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "globby": "^8.0.0", + "power-assert": "^1.4.4", + "protobufjs": "^6.8.0" } }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "got": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", + "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "optional": true, + "grpc": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.4.tgz", + "integrity": "sha512-t0Hy4yoHHYLkK0b+ULTHw5ZuSFmWokCABY0C4bKQbE4jnm1hpjA23cQVD0xAqDcRHN5CkvFzlqb34ngV22dqoQ==", "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "lodash": "^4.17.5", + "nan": "^2.0.0", + "node-pre-gyp": "^0.10.0", + "protobufjs": "^5.0.3" }, "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, - "optional": true + "bundled": true }, "ansi-regex": { "version": "2.1.1", @@ -13785,13 +5294,11 @@ }, "aproba": { "version": "1.2.0", - "bundled": true, - "optional": true + "bundled": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, - "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -13811,8 +5318,7 @@ }, "chownr": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "code-point-at": { "version": "1.1.0", @@ -13828,49 +5334,41 @@ }, "core-util-is": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "debug": { "version": "2.6.9", "bundled": true, - "optional": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { - "version": "0.5.1", - "bundled": true, - "optional": true + "version": "0.6.0", + "bundled": true }, "delegates": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, - "optional": true + "bundled": true }, "fs-minipass": { "version": "1.2.5", "bundled": true, - "optional": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "gauge": { "version": "2.7.4", "bundled": true, - "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -13885,7 +5383,6 @@ "glob": { "version": "7.1.2", "bundled": true, - "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13897,21 +5394,18 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, - "optional": true + "bundled": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.23", "bundled": true, - "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "minimatch": "^3.0.4" } @@ -13919,7 +5413,6 @@ "inflight": { "version": "1.0.6", "bundled": true, - "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -13931,8 +5424,7 @@ }, "ini": { "version": "1.3.5", - "bundled": true, - "optional": true + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -13943,8 +5435,7 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "minimatch": { "version": "3.0.4", @@ -13954,21 +5445,20 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.0", "bundled": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.3", "bundled": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.1.0", "bundled": true, - "optional": true, "requires": { "minipass": "^2.2.1" } @@ -13978,17 +5468,21 @@ "bundled": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } } }, "ms": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true }, "needle": { - "version": "2.2.0", + "version": "2.2.1", "bundled": true, - "optional": true, "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -13998,7 +5492,6 @@ "node-pre-gyp": { "version": "0.10.0", "bundled": true, - "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -14015,7 +5508,6 @@ "nopt": { "version": "4.0.1", "bundled": true, - "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -14023,13 +5515,11 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true, - "optional": true + "bundled": true }, "npm-packlist": { "version": "1.1.10", "bundled": true, - "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -14038,7 +5528,6 @@ "npmlog": { "version": "4.1.2", "bundled": true, - "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -14052,8 +5541,7 @@ }, "object-assign": { "version": "4.1.1", - "bundled": true, - "optional": true + "bundled": true }, "once": { "version": "1.4.0", @@ -14064,18 +5552,15 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "osenv": { "version": "0.1.5", "bundled": true, - "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -14083,36 +5568,36 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, - "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } } }, "readable-stream": { "version": "2.3.6", "bundled": true, - "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -14126,39 +5611,33 @@ "rimraf": { "version": "2.6.2", "bundled": true, - "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, - "optional": true + "bundled": true }, "sax": { "version": "1.2.4", - "bundled": true, - "optional": true + "bundled": true }, "semver": { "version": "5.5.0", - "bundled": true, - "optional": true + "bundled": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, - "optional": true + "bundled": true }, "string-width": { "version": "1.0.2", @@ -14172,7 +5651,6 @@ "string_decoder": { "version": "1.1.1", "bundled": true, - "optional": true, "requires": { "safe-buffer": "~5.1.0" } @@ -14186,34 +5664,30 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, - "optional": true + "bundled": true }, "tar": { - "version": "4.4.1", + "version": "4.4.4", "bundled": true, - "optional": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", + "minipass": "^2.3.3", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, - "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -14223,169 +5697,35 @@ "yallist": { "version": "3.0.2", "bundled": true - } - } - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "pinkie": "^2.0.0" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } } } }, - "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", - "dev": true, + "gtoken": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", + "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - } + "axios": "^0.18.0", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.4", + "mime": "^2.2.0", + "pify": "^3.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", @@ -14398,6 +5738,12 @@ "uglify-js": "^2.6" }, "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", @@ -14409,6 +5755,20 @@ } } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -14416,14 +5776,6 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } } }, "has-color": { @@ -14452,6 +5804,35 @@ "has-symbol-support-x": "^1.4.1" } }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "has-yarn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", @@ -14480,6 +5861,16 @@ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "hullabaloo-config-manager": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", @@ -14502,6 +5893,11 @@ "safe-buffer": "^5.0.1" } }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -14536,11 +5932,15 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -14549,8 +5949,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -14588,6 +5987,29 @@ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -14606,8 +6028,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -14627,6 +6048,41 @@ "ci-info": "^1.0.0" } }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -14651,14 +6107,12 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { "version": "1.0.2", @@ -14670,9 +6124,12 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-generator-fn": { "version": "1.0.0", @@ -14681,12 +6138,11 @@ "dev": true }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -14706,12 +6162,21 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -14735,6 +6200,21 @@ "symbol-observable": "^1.1.0" } }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -14750,6 +6230,14 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -14785,6 +6273,16 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -14797,10 +6295,15 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -14808,21 +6311,14 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { "version": "2.0.0", @@ -14877,6 +6373,12 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -14895,6 +6397,21 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -14910,11 +6427,41 @@ "graceful-fs": "^4.1.6" } }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "just-extend": { "version": "1.1.27", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==" }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -14925,13 +6472,9 @@ } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "last-line-stream": { "version": "1.0.0", @@ -14976,6 +6519,14 @@ "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "locate-path": { @@ -14988,10 +6539,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -15020,8 +6570,7 @@ "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, "lodash.flattendeep": { "version": "4.4.0", @@ -15040,17 +6589,26 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.merge": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", - "dev": true + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" }, "lolex": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==" }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -15098,22 +6656,27 @@ "dev": true, "requires": { "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, "matcher": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", @@ -15219,6 +6782,12 @@ "pinkie-promise": "^2.0.0" } }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -15272,6 +6841,11 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -15279,43 +6853,39 @@ "dev": true }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, "requires": { "mime-db": "~1.33.0" } @@ -15335,7 +6905,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -15346,6 +6915,25 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -15362,10 +6950,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multimatch": { "version": "2.1.0", @@ -15382,8 +6969,26 @@ "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "optional": true + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } }, "nise": { "version": "1.4.2", @@ -15397,6 +7002,11 @@ "text-encoding": "^0.6.4" } }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" + }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -15487,8 +7097,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", @@ -15498,20 +7107,17 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -15519,68 +7125,57 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "bundled": true, "dev": true, "requires": { "cache-base": "^1.0.1", @@ -15594,8 +7189,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -15603,8 +7197,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -15612,8 +7205,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -15621,8 +7213,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -15632,16 +7223,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -15650,8 +7239,7 @@ }, "braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -15668,8 +7256,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -15679,14 +7266,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bundled": true, "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -15702,8 +7287,7 @@ }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -15713,15 +7297,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -15731,8 +7313,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -15743,8 +7324,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -15754,8 +7334,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -15766,8 +7345,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -15775,14 +7353,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "^1.0.0", @@ -15791,38 +7367,32 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -15831,8 +7401,7 @@ }, "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -15840,26 +7409,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -15867,8 +7432,7 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -15877,8 +7441,7 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -15886,8 +7449,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -15895,8 +7457,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -15906,16 +7467,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -15923,8 +7482,7 @@ }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -15938,8 +7496,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -15951,8 +7508,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "^2.3.3", @@ -15966,8 +7522,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -15975,8 +7530,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -15984,8 +7538,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -15995,8 +7548,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -16005,8 +7557,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -16016,8 +7567,7 @@ }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "bundled": true, "dev": true, "requires": { "array-unique": "^0.3.2", @@ -16032,8 +7582,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -16041,8 +7590,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -16050,8 +7598,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -16059,8 +7606,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -16068,8 +7614,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -16079,16 +7624,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -16099,8 +7642,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -16110,8 +7652,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -16121,8 +7662,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "^2.0.0" @@ -16130,14 +7670,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -16146,8 +7684,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "^0.2.2" @@ -16155,32 +7692,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -16193,14 +7725,12 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "^1.4.0", @@ -16211,8 +7741,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -16222,8 +7751,7 @@ }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.6", @@ -16233,8 +7761,7 @@ }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -16243,8 +7770,7 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -16254,20 +7780,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -16276,20 +7799,17 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -16297,20 +7817,17 @@ }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -16318,8 +7835,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -16327,8 +7843,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -16338,28 +7853,24 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "bundled": true, "dev": true } } }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -16367,8 +7878,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "bundled": true, "dev": true, "requires": { "is-number": "^4.0.0" @@ -16376,16 +7886,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -16393,50 +7901,42 @@ }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "^0.4.0" @@ -16444,8 +7944,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha512-D4jVbMDtT2dPmloPJS/rmeP626N5Pr3Rp+SovrPn1+zPChGHcggd/0sL29jnbm4oK9W0wHjCRsdch9oLd7cm6g==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -16456,14 +7955,12 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" @@ -16473,8 +7970,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", - "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", + "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", @@ -16486,8 +7982,7 @@ }, "istanbul-reports": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", - "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" @@ -16495,8 +7990,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -16504,15 +7998,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -16520,8 +8012,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -16533,8 +8024,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "^2.0.0", @@ -16543,22 +8033,19 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "lru-cache": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -16567,14 +8054,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "^1.0.0" @@ -16582,8 +8067,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -16591,14 +8075,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -16606,8 +8088,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "bundled": true, "dev": true, "requires": { "source-map": "^0.6.1" @@ -16615,16 +8096,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -16644,22 +8123,19 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -16667,14 +8143,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "bundled": true, "dev": true, "requires": { "for-in": "^1.0.2", @@ -16683,8 +8157,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -16694,8 +8167,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -16703,14 +8175,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -16729,16 +8199,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -16749,8 +8217,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -16758,20 +8225,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -16781,8 +8245,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -16792,8 +8255,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.0" @@ -16801,8 +8263,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -16810,8 +8271,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -16819,8 +8279,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", @@ -16829,14 +8288,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "^0.7.0", @@ -16846,14 +8303,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "bundled": true, "dev": true, "requires": { "p-try": "^1.0.0" @@ -16861,8 +8316,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "^1.1.0" @@ -16870,14 +8324,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" @@ -16885,14 +8337,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -16900,26 +8350,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -16929,20 +8375,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" @@ -16950,8 +8393,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" @@ -16959,8 +8401,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -16971,20 +8412,17 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -16994,8 +8432,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", @@ -17004,8 +8441,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -17016,8 +8452,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -17026,50 +8461,42 @@ }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -17078,8 +8505,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" @@ -17087,8 +8513,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "~0.1.10" @@ -17096,20 +8521,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -17120,8 +8542,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -17131,8 +8552,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -17140,26 +8560,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "bundled": true, "dev": true, "requires": { "base": "^0.11.1", @@ -17174,8 +8590,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -17183,8 +8598,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -17192,8 +8606,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -17203,8 +8616,7 @@ }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "bundled": true, "dev": true, "requires": { "define-property": "^1.0.0", @@ -17214,8 +8626,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -17223,8 +8634,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -17232,8 +8642,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -17241,8 +8650,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -17252,16 +8660,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.2.0" @@ -17269,14 +8675,12 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "bundled": true, "dev": true, "requires": { "atob": "^2.1.1", @@ -17288,14 +8692,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -17308,8 +8710,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -17318,14 +8719,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -17334,14 +8733,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -17349,8 +8746,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "^0.2.5", @@ -17359,8 +8755,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -17370,8 +8765,7 @@ }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -17380,8 +8774,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -17389,8 +8782,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -17398,14 +8790,12 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -17417,8 +8807,7 @@ }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -17426,8 +8815,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "bundled": true, "dev": true, "requires": { "define-property": "^2.0.2", @@ -17438,8 +8826,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -17448,8 +8835,7 @@ }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -17460,8 +8846,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -17475,15 +8860,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -17494,8 +8877,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -17503,8 +8885,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -17517,8 +8898,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "^0.3.1", @@ -17527,8 +8907,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.3", @@ -17538,8 +8917,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -17549,22 +8927,19 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.2" @@ -17572,16 +8947,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -17590,8 +8963,7 @@ }, "which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -17599,27 +8971,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -17628,14 +8996,12 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -17643,8 +9009,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -17654,8 +9019,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -17665,14 +9029,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -17682,20 +9044,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", @@ -17714,14 +9073,12 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "bundled": true, "dev": true, "requires": { "string-width": "^2.1.1", @@ -17731,8 +9088,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -17742,8 +9098,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -17751,20 +9106,65 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } } } }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -17775,6 +9175,14 @@ "is-extendable": "^0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, "observable-to-promise": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", @@ -17808,7 +9216,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -17838,6 +9245,11 @@ "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", "dev": true }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -17845,13 +9257,11 @@ "dev": true }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -17962,6 +9372,23 @@ "is-dotfile": "^1.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } } }, "parse-json": { @@ -17979,6 +9406,16 @@ "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -17987,8 +9424,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -18013,22 +9449,32 @@ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "requires": { "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } } }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "^2.0.0" + "pify": "^3.0.0" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "1.0.0", @@ -18076,12 +9522,6 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -18103,6 +9543,120 @@ "irregular-plurals": "^1.0.0" } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "power-assert": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.0.tgz", + "integrity": "sha512-nDb6a+p2C7Wj8Y2zmFtLpuv+xobXz4+bzT5s7dr0nn71tLozn7nRMQqzwbefzwZN5qOm0N7Cxhw4kXP75xboKA==", + "requires": { + "define-properties": "^1.1.2", + "empower": "^1.3.0", + "power-assert-formatter": "^1.4.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "power-assert-context-formatter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", + "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", + "requires": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.2.0" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", + "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + } + }, + "power-assert-context-traversal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", + "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", + "requires": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "requires": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "power-assert-renderer-assertion": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", + "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", + "requires": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" + }, + "power-assert-renderer-comparison": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", + "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", + "requires": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "power-assert-renderer-diagram": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", + "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", + "requires": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", + "stringifier": "^1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", + "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", + "requires": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", + "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", + "requires": { + "eastasianwidth": "^0.2.0" + } + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -18141,8 +9695,44 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "prop-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", + "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" + }, + "propprop": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", + "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" + }, + "protobufjs": { + "version": "6.8.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", + "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^3.0.32", + "@types/node": "^8.9.4", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz", + "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==" + } + } }, "proxyquire": { "version": "2.0.1", @@ -18171,11 +9761,15 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { "version": "5.1.1", @@ -18204,12 +9798,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -18242,6 +9830,23 @@ "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -18258,7 +9863,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18267,14 +9871,6 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } } }, "readdirp": { @@ -18331,6 +9927,15 @@ "is-equal-shallow": "^0.1.3" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -18394,14 +9999,12 @@ "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -18412,6 +10015,33 @@ "is-finite": "^1.0.0" } }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -18449,6 +10079,11 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -18468,6 +10103,25 @@ "signal-exit": "^3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry-axios": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", + "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" + }, + "retry-request": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", + "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", + "requires": { + "request": "^2.81.0", + "through2": "^2.0.0" + } + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -18481,8 +10135,20 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "samsam": { "version": "1.3.0", @@ -18521,6 +10187,27 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -18556,8 +10243,7 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "1.0.0", @@ -18566,6 +10252,14 @@ "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "slide": { @@ -18574,6 +10268,111 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -18586,8 +10385,19 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } }, "source-map-support": { "version": "0.5.6", @@ -18607,6 +10417,11 @@ } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", @@ -18639,18 +10454,82 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, + "split-array-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", + "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", + "requires": { + "is-stream-ended": "^0.1.4" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-events": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", + "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -18664,29 +10543,39 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, + "stringifier": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", + "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", + "requires": { + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" + } + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -18724,6 +10613,11 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", @@ -18740,6 +10634,14 @@ "mime": "^1.4.1", "qs": "^6.5.1", "readable-stream": "^2.3.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } } }, "supertap": { @@ -18753,6 +10655,23 @@ "js-yaml": "^3.10.0", "serialize-error": "^2.1.0", "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "supertest": { @@ -18803,7 +10722,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" @@ -18827,6 +10745,57 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "^1.4.1" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -18845,11 +10814,35 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -18881,6 +10874,13 @@ "wordwrap": "0.0.2" } }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -18916,6 +10916,38 @@ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", "dev": true }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -18936,12 +10968,58 @@ "uid2": "0.0.3" } }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "requires": { + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", @@ -18966,6 +11044,11 @@ "xdg-basedir": "^3.0.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -18981,11 +11064,23 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "^6.0.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "validate-npm-package-license": { "version": "3.0.3", @@ -18997,6 +11092,16 @@ "spdx-expression-parse": "^3.0.0" } }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "well-known-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", @@ -19023,14 +11128,45 @@ "dev": true, "requires": { "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, "wordwrap": { "version": "0.0.3", @@ -19045,46 +11181,12 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.3.0", @@ -19116,12 +11218,6 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -19144,8 +11240,7 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { "version": "3.2.1", @@ -19174,6 +11269,55 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "yargs-parser": { @@ -19182,6 +11326,13 @@ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } } } } diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 7e874b71833..26a64fc9247 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -20,7 +20,7 @@ var arrify = require('arrify'); var common = require('@google-cloud/common'); var extend = require('extend'); var grpc = require('google-gax').grpc().grpc; -var googleAuth = require('google-auto-auth'); +var GoogleAuth = require('google-auth-library').GoogleAuth; var is = require('is'); var util = require('util'); @@ -404,7 +404,7 @@ function Datastore(options) { this.options.sslCreds = grpc.credentials.createInsecure(); } - this.auth = googleAuth(this.options); + this.auth = new GoogleAuth(this.options); } util.inherits(Datastore, DatastoreRequest); diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 933a7780a2e..d8819116e6c 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -54,9 +54,9 @@ var fakeEntity = { var fakeUtil = extend({}, util); var originalFakeUtil = extend(true, {}, fakeUtil); -var googleAutoAuthOverride; -function fakeGoogleAutoAuth() { - return (googleAutoAuthOverride || util.noop).apply(null, arguments); +var GoogleAuthOverride; +function fakeGoogleAuth() { + return (GoogleAuthOverride || util.noop).apply(null, arguments); } var createInsecureOverride; @@ -111,7 +111,9 @@ describe('Datastore', function() { './query.js': FakeQuery, './transaction.js': FakeTransaction, './v1': FakeV1, - 'google-auto-auth': fakeGoogleAutoAuth, + 'google-auth-library': { + GoogleAuth: fakeGoogleAuth, + }, 'google-gax': fakeGoogleGax, }); }); @@ -120,7 +122,7 @@ describe('Datastore', function() { extend(fakeUtil, originalFakeUtil); createInsecureOverride = null; - googleAutoAuthOverride = null; + GoogleAuthOverride = null; datastore = new Datastore({ projectId: PROJECT_ID, @@ -138,7 +140,7 @@ describe('Datastore', function() { after(function() { createInsecureOverride = null; - googleAutoAuthOverride = null; + GoogleAuthOverride = null; }); it('should export GAX client', function() { @@ -283,15 +285,15 @@ describe('Datastore', function() { assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); }); - it('should cache a local google-auto-auth instance', function() { - var fakeGoogleAutoAuthInstance = {}; + it('should cache a local GoogleAuth instance', function() { + var fakeGoogleAuthInstance = {}; - googleAutoAuthOverride = function() { - return fakeGoogleAutoAuthInstance; + GoogleAuthOverride = function() { + return fakeGoogleAuthInstance; }; var datastore = new Datastore({}); - assert.strictEqual(datastore.auth, fakeGoogleAutoAuthInstance); + assert.strictEqual(datastore.auth, fakeGoogleAuthInstance); }); }); From 7cf619815c69e7de66fb91e3df19b6ea5274b124 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 23 Jun 2018 14:56:24 -0700 Subject: [PATCH 203/820] chore(package): update eslint to version 5.0.0 (#114) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 91425827dfc..fbc8113be72 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -85,7 +85,7 @@ "async": "^2.6.1", "codecov": "^3.0.2", "deep-strict-equal": "^0.2.0", - "eslint": "^4.19.1", + "eslint": "^5.0.0", "eslint-config-prettier": "^2.9.0", "eslint-plugin-node": "^6.0.1", "eslint-plugin-prettier": "^2.6.0", From dbeba6ecb0fb2060765106c6fa38a354f57f3142 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 25 Jun 2018 07:05:43 -0700 Subject: [PATCH 204/820] fix: update linking for samples (#115) --- handwritten/nodejs-datastore/.circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 59daf9ee0e7..442976ecedd 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -126,9 +126,8 @@ jobs: name: Link the module being tested to the samples. command: | cd samples/ - npm link ../ npm install - cd .. + npm link ../ environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: From a69bbe72f73e58463d64ae8deaed67ef0200ef9d Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 25 Jun 2018 15:42:06 -0700 Subject: [PATCH 205/820] chore: update sample lockfiles (#117) --- .../samples/package-lock.json | 1797 +++++++++++------ 1 file changed, 1196 insertions(+), 601 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index b3af26b83a6..3ae9bcce7da 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -324,7 +324,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -334,22 +335,26 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -357,12 +362,14 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "^1.0.1" @@ -370,27 +377,32 @@ }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-unique": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "babel-code-frame": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "^1.1.3", @@ -400,7 +412,8 @@ }, "babel-generator": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "^6.23.0", @@ -415,7 +428,8 @@ }, "babel-messages": { "version": "6.23.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -423,7 +437,8 @@ }, "babel-runtime": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { "core-js": "^2.4.0", @@ -432,7 +447,8 @@ }, "babel-template": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -444,7 +460,8 @@ }, "babel-traverse": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -460,7 +477,8 @@ }, "babel-types": { "version": "6.26.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -471,17 +489,20 @@ }, "babylon": { "version": "6.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -490,7 +511,8 @@ }, "braces": { "version": "1.8.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "^1.8.1", @@ -500,12 +522,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -515,13 +539,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -531,7 +557,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -543,7 +570,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -554,7 +582,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -562,32 +591,38 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "core-js": { "version": "2.5.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -596,7 +631,8 @@ }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -604,17 +640,20 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -622,7 +661,8 @@ }, "detect-indent": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { "repeating": "^2.0.0" @@ -630,7 +670,8 @@ }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -638,17 +679,20 @@ }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esutils": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -662,7 +706,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -674,7 +719,8 @@ }, "expand-brackets": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -682,7 +728,8 @@ }, "expand-range": { "version": "1.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "^2.1.0" @@ -690,7 +737,8 @@ }, "extglob": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -698,12 +746,14 @@ }, "filename-regex": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "^2.1.0", @@ -715,7 +765,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", @@ -725,7 +776,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -733,12 +785,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -746,7 +800,8 @@ }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "^4", @@ -755,22 +810,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -783,7 +842,8 @@ }, "glob-base": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -792,7 +852,8 @@ }, "glob-parent": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "^2.0.0" @@ -800,17 +861,20 @@ }, "globals": { "version": "9.18.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "^1.4.0", @@ -821,7 +885,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -831,7 +896,8 @@ }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -839,22 +905,26 @@ }, "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -863,12 +933,14 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { "loose-envify": "^1.0.0" @@ -876,22 +948,26 @@ }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -899,12 +975,14 @@ }, "is-dotfile": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -912,17 +990,20 @@ }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -930,7 +1011,8 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -938,7 +1020,8 @@ }, "is-glob": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -946,7 +1029,8 @@ }, "is-number": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -954,37 +1038,44 @@ }, "is-posix-bracket": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -992,12 +1083,14 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "^0.4.0" @@ -1005,7 +1098,8 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "^6.18.0", @@ -1019,7 +1113,8 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.1", @@ -1030,7 +1125,8 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -1040,7 +1136,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -1052,7 +1149,8 @@ "dependencies": { "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -1062,7 +1160,8 @@ }, "istanbul-reports": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", "dev": true, "requires": { "handlebars": "^4.0.3" @@ -1070,17 +1169,20 @@ }, "js-tokens": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "jsesc": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1088,13 +1190,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -1102,7 +1206,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1114,7 +1219,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -1123,24 +1229,28 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "lodash": { "version": "4.17.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "loose-envify": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { "js-tokens": "^3.0.0" @@ -1148,7 +1258,8 @@ }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1157,7 +1268,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -1165,12 +1277,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -1178,7 +1292,8 @@ }, "merge-source-map": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { "source-map": "^0.5.6" @@ -1186,7 +1301,8 @@ }, "micromatch": { "version": "2.3.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "^2.0.0", @@ -1206,12 +1322,14 @@ }, "mimic-fn": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1219,12 +1337,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1232,12 +1352,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -1248,7 +1370,8 @@ }, "normalize-path": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -1256,7 +1379,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -1264,17 +1388,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "^0.1.4", @@ -1283,7 +1410,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -1291,7 +1419,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", @@ -1300,12 +1429,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", @@ -1315,17 +1446,20 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", "dev": true }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -1333,7 +1467,8 @@ }, "parse-glob": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "^0.3.0", @@ -1344,7 +1479,8 @@ }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -1352,7 +1488,8 @@ }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -1360,22 +1497,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1385,17 +1526,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -1403,7 +1547,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" @@ -1411,7 +1556,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1422,17 +1568,20 @@ }, "preserve": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "randomatic": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -1441,7 +1590,8 @@ "dependencies": { "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1449,7 +1599,8 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1459,7 +1610,8 @@ }, "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1469,7 +1621,8 @@ }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -1479,7 +1632,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -1488,7 +1642,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1499,12 +1654,14 @@ }, "regenerator-runtime": { "version": "0.11.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -1512,22 +1669,26 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "repeating": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { "is-finite": "^1.0.0" @@ -1535,22 +1696,26 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -1559,7 +1724,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -1567,17 +1733,20 @@ }, "semver": { "version": "5.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -1585,27 +1754,32 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -1618,7 +1792,8 @@ }, "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "^1.0.2" @@ -1626,17 +1801,20 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -1645,17 +1823,20 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -1665,7 +1846,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -1673,7 +1855,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -1681,17 +1864,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "test-exclude": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -1703,17 +1889,20 @@ }, "to-fast-properties": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "trim-right": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -1724,7 +1913,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -1738,13 +1928,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "~1.0.0", @@ -1753,7 +1945,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -1761,23 +1954,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -1786,7 +1983,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1798,12 +1996,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -1813,17 +2013,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "10.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { "cliui": "^3.2.0", @@ -1842,7 +2045,8 @@ "dependencies": { "cliui": { "version": "3.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -1852,7 +2056,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1866,7 +2071,8 @@ }, "yargs-parser": { "version": "8.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -1874,7 +2080,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } @@ -2064,9 +2271,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.4.tgz", - "integrity": "sha512-YMLlzdeNnAyLrQew39IFRkMacAR5BqKGIEei9ZjdHsIZtv+ZWKYTu1i7QJhetxQ9ReXx8w5f+cixdHZG3zgMQA==" + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.5.tgz", + "integrity": "sha512-6lRwZN0Y3TuglwaaZN2XPocobmzLlhxcqDjKFjNYSsXG/TFAGYkCqkzZh4+ms8iTHHQE6gJXLHPV7TziVGeWhg==" }, "@types/request": { "version": "2.47.1", @@ -4468,24 +4675,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -4495,12 +4706,14 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -4509,34 +4722,40 @@ }, "chownr": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, "requires": { @@ -4545,25 +4764,29 @@ }, "deep-extend": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -4572,13 +4795,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -4594,7 +4819,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "optional": true, "requires": { @@ -4608,13 +4834,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "optional": true, "requires": { @@ -4623,7 +4851,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -4632,7 +4861,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -4642,18 +4872,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -4661,13 +4894,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4675,12 +4910,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { "version": "2.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -4689,7 +4926,8 @@ }, "minizlib": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "dev": true, "optional": true, "requires": { @@ -4698,7 +4936,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -4706,13 +4945,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "optional": true, "requires": { @@ -4723,7 +4964,8 @@ }, "node-pre-gyp": { "version": "0.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "dev": true, "optional": true, "requires": { @@ -4741,7 +4983,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -4751,13 +4994,15 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "dev": true, "optional": true, "requires": { @@ -4767,7 +5012,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -4779,18 +5025,21 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -4798,19 +5047,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -4820,19 +5072,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "optional": true, "requires": { @@ -4844,7 +5099,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -4852,7 +5108,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -4867,7 +5124,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "optional": true, "requires": { @@ -4876,42 +5134,49 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -4921,7 +5186,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -4930,7 +5196,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -4938,13 +5205,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "dev": true, "optional": true, "requires": { @@ -4959,13 +5228,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -4974,12 +5245,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true } } @@ -5286,19 +5559,23 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -5306,11 +5583,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5318,57 +5597,69 @@ }, "chownr": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.6.0", - "bundled": true + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -5382,7 +5673,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5394,25 +5686,29 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5420,37 +5716,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { "version": "2.3.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", + "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5458,31 +5761,36 @@ }, "minizlib": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "ms": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "needle": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", + "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -5491,7 +5799,8 @@ }, "node-pre-gyp": { "version": "0.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -5507,7 +5816,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -5515,11 +5825,13 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==" }, "npm-packlist": { "version": "1.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -5527,7 +5839,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -5537,30 +5850,36 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -5568,11 +5887,13 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "protobufjs": { "version": "5.0.3", @@ -5587,7 +5908,8 @@ }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -5597,7 +5919,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5610,38 +5933,46 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", - "bundled": true + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.5.0", - "bundled": true + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5650,25 +5981,29 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "4.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", + "integrity": "sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w==", "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", @@ -5681,22 +6016,26 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "yallist": { "version": "3.0.2", - "bundled": true + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" }, "yargs": { "version": "3.32.0", @@ -5850,9 +6189,9 @@ } }, "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", "dev": true }, "http-cache-semantics": { @@ -7097,7 +7436,8 @@ "dependencies": { "align-text": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { "kind-of": "^3.0.2", @@ -7107,17 +7447,20 @@ }, "amdefine": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "append-transform": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -7125,57 +7468,68 @@ }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "arr-diff": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "arr-flatten": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-union": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-unique": { "version": "0.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "assign-symbols": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "async": { "version": "1.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "atob": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -7189,7 +7543,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7197,7 +7552,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7205,7 +7561,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7213,7 +7570,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7223,14 +7581,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -7239,7 +7599,8 @@ }, "braces": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -7256,7 +7617,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7266,12 +7628,14 @@ }, "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -7287,7 +7651,8 @@ }, "caching-transform": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -7297,13 +7662,15 @@ }, "camelcase": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "optional": true, "requires": { @@ -7313,7 +7680,8 @@ }, "class-utils": { "version": "0.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -7324,7 +7692,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7334,7 +7703,8 @@ }, "cliui": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, "requires": { @@ -7345,7 +7715,8 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true, "optional": true } @@ -7353,12 +7724,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -7367,32 +7740,38 @@ }, "commondir": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "copy-descriptor": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "cross-spawn": { "version": "4.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7401,7 +7780,8 @@ }, "debug": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { "ms": "2.0.0" @@ -7409,22 +7789,26 @@ }, "debug-log": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "default-require-extensions": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -7432,7 +7816,8 @@ }, "define-property": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -7441,7 +7826,8 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7449,7 +7835,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7457,7 +7844,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7467,14 +7855,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "error-ex": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -7482,7 +7872,8 @@ }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -7496,7 +7887,8 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7508,7 +7900,8 @@ }, "expand-brackets": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "^2.3.3", @@ -7522,7 +7915,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -7530,7 +7924,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7538,7 +7933,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7548,7 +7944,8 @@ }, "extend-shallow": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -7557,7 +7954,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -7567,7 +7965,8 @@ }, "extglob": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "dev": true, "requires": { "array-unique": "^0.3.2", @@ -7582,7 +7981,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7590,7 +7990,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7598,7 +7999,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7606,7 +8008,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7614,7 +8017,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7624,14 +8028,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "fill-range": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -7642,7 +8048,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7652,7 +8059,8 @@ }, "find-cache-dir": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { "commondir": "^1.0.1", @@ -7662,7 +8070,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -7670,12 +8079,14 @@ }, "for-in": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "foreground-child": { "version": "1.5.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { "cross-spawn": "^4", @@ -7684,7 +8095,8 @@ }, "fragment-cache": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -7692,27 +8104,32 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { "version": "2.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -7725,12 +8142,14 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "handlebars": { "version": "4.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "^1.4.0", @@ -7741,7 +8160,8 @@ "dependencies": { "source-map": { "version": "0.4.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -7751,7 +8171,8 @@ }, "has-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "^2.0.6", @@ -7761,7 +8182,8 @@ }, "has-values": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -7770,7 +8192,8 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -7780,17 +8203,20 @@ }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -7799,17 +8225,20 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7817,17 +8246,20 @@ }, "is-arrayish": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -7835,7 +8267,8 @@ }, "is-data-descriptor": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7843,7 +8276,8 @@ }, "is-descriptor": { "version": "0.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -7853,24 +8287,28 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", "dev": true } } }, "is-extendable": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-number": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -7878,7 +8316,8 @@ }, "is-odd": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", "dev": true, "requires": { "is-number": "^4.0.0" @@ -7886,14 +8325,16 @@ "dependencies": { "is-number": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -7901,42 +8342,50 @@ }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-utf8": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "is-windows": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=", "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha1-hTjZcDcss3FtU+VVI91UtVeo2Js=", "dev": true, "requires": { "append-transform": "^0.4.0" @@ -7944,7 +8393,8 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", + "integrity": "sha1-LfEhiMD6d5kMDSF20tC6M5QYglk=", "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -7955,12 +8405,14 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "supports-color": { "version": "3.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "^1.0.0" @@ -7970,7 +8422,8 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", "dev": true, "requires": { "debug": "^3.1.0", @@ -7982,7 +8435,8 @@ }, "istanbul-reports": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", + "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", "dev": true, "requires": { "handlebars": "^4.0.3" @@ -7990,7 +8444,8 @@ }, "kind-of": { "version": "3.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -7998,13 +8453,15 @@ }, "lazy-cache": { "version": "1.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -8012,7 +8469,8 @@ }, "load-json-file": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -8024,7 +8482,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -8033,19 +8492,22 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, "longest": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, "lru-cache": { "version": "4.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -8054,12 +8516,14 @@ }, "map-cache": { "version": "0.2.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -8067,7 +8531,8 @@ }, "md5-hex": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -8075,12 +8540,14 @@ }, "md5-o-matic": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", "dev": true }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -8088,7 +8555,8 @@ }, "merge-source-map": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", "dev": true, "requires": { "source-map": "^0.6.1" @@ -8096,14 +8564,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } } }, "micromatch": { "version": "3.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8123,19 +8593,22 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -8143,12 +8616,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mixin-deep": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", "dev": true, "requires": { "for-in": "^1.0.2", @@ -8157,7 +8632,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -8167,7 +8643,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -8175,12 +8652,14 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nanomatch": { "version": "1.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8199,14 +8678,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -8217,7 +8698,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -8225,17 +8707,20 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -8245,7 +8730,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8255,7 +8741,8 @@ }, "object-visit": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "^3.0.0" @@ -8263,7 +8750,8 @@ }, "object.pick": { "version": "1.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -8271,7 +8759,8 @@ }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -8279,7 +8768,8 @@ }, "optimist": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", @@ -8288,12 +8778,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", "dev": true, "requires": { "execa": "^0.7.0", @@ -8303,12 +8795,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", "dev": true, "requires": { "p-try": "^1.0.0" @@ -8316,7 +8810,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -8324,12 +8819,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parse-json": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -8337,12 +8834,14 @@ }, "pascalcase": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -8350,22 +8849,26 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, "path-type": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -8375,17 +8878,20 @@ }, "pify": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { "version": "2.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -8393,7 +8899,8 @@ }, "pkg-dir": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { "find-up": "^1.0.0" @@ -8401,7 +8908,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8412,17 +8920,20 @@ }, "posix-character-classes": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "read-pkg": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -8432,7 +8943,8 @@ }, "read-pkg-up": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { "find-up": "^1.0.0", @@ -8441,7 +8953,8 @@ "dependencies": { "find-up": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8452,7 +8965,8 @@ }, "regex-not": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -8461,42 +8975,50 @@ }, "repeat-element": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve-from": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", "dev": true }, "resolve-url": { "version": "0.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", "dev": true }, "right-align": { "version": "0.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "optional": true, "requires": { @@ -8505,7 +9027,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { "glob": "^7.0.5" @@ -8513,7 +9036,8 @@ }, "safe-regex": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" @@ -8521,17 +9045,20 @@ }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", "dev": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8542,7 +9069,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8552,7 +9080,8 @@ }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -8560,22 +9089,26 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "snapdragon": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", "dev": true, "requires": { "base": "^0.11.1", @@ -8590,7 +9123,8 @@ "dependencies": { "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -8598,7 +9132,8 @@ }, "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8606,7 +9141,8 @@ }, "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8616,7 +9152,8 @@ }, "snapdragon-node": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "dev": true, "requires": { "define-property": "^1.0.0", @@ -8626,7 +9163,8 @@ "dependencies": { "define-property": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -8634,7 +9172,8 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8642,7 +9181,8 @@ }, "is-data-descriptor": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8650,7 +9190,8 @@ }, "is-descriptor": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8660,14 +9201,16 @@ }, "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -8675,12 +9218,14 @@ }, "source-map": { "version": "0.5.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", "dev": true, "requires": { "atob": "^2.1.1", @@ -8692,12 +9237,14 @@ }, "source-map-url": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spawn-wrap": { "version": "1.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -8710,7 +9257,8 @@ }, "spdx-correct": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -8719,12 +9267,14 @@ }, "spdx-exceptions": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -8733,12 +9283,14 @@ }, "spdx-license-ids": { "version": "3.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", "dev": true }, "split-string": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -8746,7 +9298,8 @@ }, "static-extend": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "^0.2.5", @@ -8755,7 +9308,8 @@ "dependencies": { "define-property": { "version": "0.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8765,7 +9319,8 @@ }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -8774,7 +9329,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -8782,7 +9338,8 @@ }, "strip-bom": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -8790,12 +9347,14 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "test-exclude": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", "dev": true, "requires": { "arrify": "^1.0.1", @@ -8807,7 +9366,8 @@ }, "to-object-path": { "version": "0.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8815,7 +9375,8 @@ }, "to-regex": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "dev": true, "requires": { "define-property": "^2.0.2", @@ -8826,7 +9387,8 @@ }, "to-regex-range": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "^3.0.0", @@ -8835,7 +9397,8 @@ }, "uglify-js": { "version": "2.8.29", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "optional": true, "requires": { @@ -8846,7 +9409,8 @@ "dependencies": { "yargs": { "version": "3.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "optional": true, "requires": { @@ -8860,13 +9424,15 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -8877,7 +9443,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8885,7 +9452,8 @@ }, "set-value": { "version": "0.4.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8898,7 +9466,8 @@ }, "unset-value": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "^0.3.1", @@ -8907,7 +9476,8 @@ "dependencies": { "has-value": { "version": "0.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "^2.0.3", @@ -8917,7 +9487,8 @@ "dependencies": { "isobject": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" @@ -8927,19 +9498,22 @@ }, "has-values": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, "urix": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -8947,14 +9521,16 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -8963,7 +9539,8 @@ }, "which": { "version": "1.3.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -8971,23 +9548,27 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "window-size": { "version": "0.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -8996,12 +9577,14 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -9009,7 +9592,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -9019,7 +9603,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -9029,12 +9614,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -9044,17 +9631,20 @@ }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha1-kLhpk07W6HERXqL/WLA/RyTtLXc=", "dev": true, "requires": { "cliui": "^4.0.0", @@ -9073,12 +9663,14 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cliui": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", "dev": true, "requires": { "string-width": "^2.1.1", @@ -9088,7 +9680,8 @@ }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9098,7 +9691,8 @@ }, "yargs-parser": { "version": "8.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9106,7 +9700,8 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } From 9f74302dd369d2029b2ef7b1733ae54f8a357cbb Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 25 Jun 2018 22:50:04 -0700 Subject: [PATCH 206/820] refactor: drop repo-tool as an exec wrapper (#118) --- handwritten/nodejs-datastore/.circleci/config.yml | 1 - handwritten/nodejs-datastore/package.json | 12 ++++++------ handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 442976ecedd..6786d565b9b 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -84,7 +84,6 @@ jobs: command: |- mkdir -p /home/node/.npm-global npm install - chmod +x node_modules/@google-cloud/nodejs-repo-tools/bin/tools environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fbc8113be72..d7c8da5938c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -51,15 +51,15 @@ "tcrognon " ], "scripts": { - "docs": "repo-tools exec -- jsdoc -c .jsdoc.js", + "docs": "jsdoc -c .jsdoc.js", "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", - "lint": "repo-tools lint --cmd eslint -- src/ samples/ system-test/ test/", - "prettier": "repo-tools exec -- prettier --write src/*.js src/*/*.js samples/*.js samples/*/*.js test/*.js test/*/*.js system-test/*.js system-test/*/*.js", + "lint": "eslint src/ samples/ system-test/ test/", + "prettier": "prettier --write src/*.js src/*/*.js samples/*.js samples/*/*.js test/*.js test/*/*.js system-test/*.js system-test/*/*.js", "cover": "nyc --reporter=lcov mocha --require intelli-espower-loader test/*.js && nyc report", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", - "test-no-cover": "repo-tools test run --cmd mocha -- test/*.js --no-timeouts", - "test": "repo-tools test run --cmd npm -- run cover", - "system-test": "repo-tools test run --cmd mocha -- system-test/*.js --timeout 600000" + "test-no-cover": "mocha test/*.js --no-timeouts", + "test": "npm run cover", + "system-test": "mocha system-test/*.js --timeout 600000" }, "dependencies": { "@google-cloud/common": "^0.20.1", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 7a16a01a56d..e9b4b608ed6 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,7 +9,7 @@ "node": ">=4" }, "scripts": { - "test": "repo-tools test run --cmd npm -- run cover", + "test": "npm run cover", "ava": "ava -T 20s --verbose test/*.test.js system-test/*.test.js", "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, From dc7b36d07f8a04b2cdfddb0ea57dad36d9bd307e Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Tue, 26 Jun 2018 15:54:17 -0700 Subject: [PATCH 207/820] Update google-gax dependency (#119) * update gax and add synth.py --- .../nodejs-datastore/package-lock.json | 411 ++-- handwritten/nodejs-datastore/package.json | 2 +- .../google/datastore/v1/datastore.proto | 38 +- .../protos/google/datastore/v1/entity.proto | 3 +- .../protos/google/datastore/v1/query.proto | 3 +- .../samples/package-lock.json | 1803 ++++++----------- handwritten/nodejs-datastore/src/index.js | 3 +- .../src/v1/datastore_client.js | 12 +- .../doc/google/datastore/v1/doc_datastore.js | 4 +- .../v1/doc/google/datastore/v1/doc_entity.js | 4 +- .../v1/doc/google/datastore/v1/doc_query.js | 4 +- .../v1/doc/google/protobuf/doc_wrappers.js | 4 +- handwritten/nodejs-datastore/src/v1/index.js | 4 +- handwritten/nodejs-datastore/synth.py | 27 + handwritten/nodejs-datastore/test/gapic-v1.js | 6 +- handwritten/nodejs-datastore/test/index.js | 16 +- 16 files changed, 975 insertions(+), 1369 deletions(-) create mode 100644 handwritten/nodejs-datastore/synth.py diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index d6cd0a73c98..ee8546d5a89 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -2114,9 +2114,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.4.tgz", - "integrity": "sha512-YMLlzdeNnAyLrQew39IFRkMacAR5BqKGIEei9ZjdHsIZtv+ZWKYTu1i7QJhetxQ9ReXx8w5f+cixdHZG3zgMQA==" + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.6.tgz", + "integrity": "sha512-h7VDRFL8IhdPw1JjiNVvhr+WynfKW09q2BOflIOA0yeuXNeXBP1bIRuBrysSryH4keaJ5bYUNp63aIyQL9YpDQ==" }, "@types/request": { "version": "2.47.1", @@ -2145,20 +2145,12 @@ "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", "dev": true, "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } + "acorn": "^5.0.3" } }, "ajv": { @@ -2173,9 +2165,9 @@ } }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, "align-text": { @@ -2479,6 +2471,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, "requires": { "lodash": "^4.17.10" } @@ -4320,6 +4313,30 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, "es5-ext": { "version": "0.10.45", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", @@ -4462,63 +4479,100 @@ } }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", + "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", + "cross-spawn": "^6.0.5", "debug": "^3.1.0", "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", - "globals": "^11.0.1", + "globals": "^11.5.0", "ignore": "^3.3.3", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.2", "pluralize": "^7.0.0", "progress": "^2.0.0", - "regexpp": "^1.0.1", + "regexpp": "^1.1.0", "require-uncached": "^1.0.3", - "semver": "^5.3.0", + "semver": "^5.5.0", + "string.prototype.matchall": "^2.0.0", "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" }, "dependencies": { + "ajv": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", + "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, "globals": { "version": "11.7.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4571,9 +4625,9 @@ } }, "eslint-plugin-prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz", - "integrity": "sha512-floiaI4F7hRkTrFe8V2ItOK97QYrX75DjmdzmVITZoAP6Cn06oEDPQRsO6MlHEP/u2SxI3xQ52Kpjw6j5WGfeQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.1.tgz", + "integrity": "sha512-wNZ2z0oVCWnf+3BSI7roS+z4gGu2AwcPKUek+SlLZMZg+X0KbZLsB2knul7fd0K3iuIp402HIYzm4f2+OyfXxA==", "dev": true, "requires": { "fast-diff": "^1.1.1", @@ -4581,9 +4635,9 @@ } }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -4670,13 +4724,13 @@ } }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" } }, "esprima": { @@ -5677,6 +5731,12 @@ } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "function-name-support": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", @@ -5852,57 +5912,30 @@ "retry-axios": "^0.3.2" } }, - "google-auto-auth": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", - "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", - "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.6.1", - "google-auth-library": "^1.3.1", - "request": "^2.79.0" - } - }, "google-gax": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", - "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.17.1.tgz", + "integrity": "sha512-fAKvFx++SRr6bGWamWuVOkJzJnQqMgpJkhaB2oEwfFJ91rbFgEmIPRmZZ/MeIVVFUOuHUVyZ8nwjm5peyTZJ6g==", "requires": { - "duplexify": "^3.5.4", - "extend": "^3.0.0", - "globby": "^8.0.0", - "google-auto-auth": "^0.10.0", - "google-proto-files": "^0.15.0", - "grpc": "^1.10.0", - "is-stream-ended": "^0.1.0", - "lodash": "^4.17.2", - "protobufjs": "^6.8.0", + "duplexify": "^3.6.0", + "extend": "^3.0.1", + "globby": "^8.0.1", + "google-auth-library": "^1.6.1", + "google-proto-files": "^0.16.0", + "grpc": "^1.12.2", + "is-stream-ended": "^0.1.4", + "lodash": "^4.17.10", + "protobufjs": "^6.8.6", + "retry-request": "^4.0.0", "through2": "^2.0.3" }, "dependencies": { - "google-proto-files": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", - "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", - "requires": { - "globby": "^7.1.1", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - } + "retry-request": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz", + "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==", + "requires": { + "through2": "^2.0.0" } } } @@ -6462,6 +6495,15 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -6489,6 +6531,12 @@ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", @@ -6550,9 +6598,9 @@ } }, "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", "dev": true }, "htmlparser2": { @@ -6691,22 +6739,21 @@ } }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^2.1.0", "figures": "^2.0.0", "lodash": "^4.3.0", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^5.5.2", "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" @@ -6836,6 +6883,12 @@ "builtin-modules": "^1.0.0" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-ci": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", @@ -6863,6 +6916,12 @@ } } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -7074,6 +7133,15 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -7097,6 +7165,12 @@ "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7147,9 +7221,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.0.tgz", - "integrity": "sha512-ozQGtlIw+/a/F3n6QwWiuuyRAPp64+g2GVsKYsIez0sgIEzkU5ZpL2uZ5pmAzbEJ82anlRaPlOQZzkRXspgJyg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.1.tgz", + "integrity": "sha512-azWDq6BXKEZV1dGAnqCzBO5S+k3hX6IP63NHKXI9+sPNtaWEymJ6vh0rl65ZLgt8kbn7lmt63kdcOMXomW4B4Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.49", @@ -7980,6 +8054,12 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, "nise": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", @@ -10723,9 +10803,9 @@ "dev": true }, "prettier": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.5.tgz", - "integrity": "sha512-4M90mfvLz6yRf2Dhzd+xPIE6b4xkI8nHMJhsSm9IlfG17g6wujrrm7+H1X8x52tC4cSNm6HmuhCUSNe6Hd5wfw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.6.tgz", + "integrity": "sha512-p5eqCNiohWZN++7aJXUVj0JgLqHCPLf9GLIcLBHGNWs4Y9FJOPs6+KNO2WT0udJIQJTbeZFrJkjzjcb8fkAYYQ==", "dev": true }, "pretty-ms": { @@ -11001,6 +11081,15 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", @@ -11258,19 +11347,21 @@ "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rxjs": { + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", + "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", "dev": true, "requires": { - "rx-lite": "*" + "symbol-observable": "1.0.1" + }, + "dependencies": { + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + } } }, "safe-buffer": { @@ -11391,9 +11482,9 @@ "dev": true }, "sinon": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.0.tgz", - "integrity": "sha512-MatciKXyM5pXMSoqd593MqTsItJNCkSSl53HJYeKR5wfsDdp2yljjUQJLfVwAWLoBNfx1HThteqygGQ0ZEpXpQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", + "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", @@ -11727,6 +11818,19 @@ "strip-ansi": "^3.0.0" } }, + "string.prototype.matchall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", + "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "regexp.prototype.flags": "^1.2.0" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -11884,31 +11988,55 @@ "dev": true }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", "chalk": "^2.1.0", "lodash": "^4.17.4", "slice-ansi": "1.0.0", "string-width": "^2.1.1" }, "dependencies": { + "ajv": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", + "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -12331,6 +12459,23 @@ "xdg-basedir": "^3.0.0" } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -12371,9 +12516,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz", + "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==" }, "validate-npm-package-license": { "version": "3.0.3", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d7c8da5938c..e859f4b53e0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -68,7 +68,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auth-library": "^1.6.1", - "google-gax": "^0.16.1", + "google-gax": "^0.17.1", "google-proto-files": "^0.16.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 245edb68965..2a29a58cec7 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastor option java_multiple_files = true; option java_outer_classname = "DatastoreProto"; option java_package = "com.google.datastore.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\V1"; // Each RPC normalizes the partition IDs of the keys in its input entities, @@ -37,40 +38,61 @@ option java_package = "com.google.datastore.v1"; service Datastore { // Looks up entities by key. rpc Lookup(LookupRequest) returns (LookupResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:lookup" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:lookup" + body: "*" + }; } // Queries for entities. rpc RunQuery(RunQueryRequest) returns (RunQueryResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:runQuery" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:runQuery" + body: "*" + }; } // Begins a new transaction. rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:beginTransaction" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:beginTransaction" + body: "*" + }; } // Commits a transaction, optionally creating, deleting or modifying some // entities. rpc Commit(CommitRequest) returns (CommitResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:commit" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:commit" + body: "*" + }; } // Rolls back a transaction. rpc Rollback(RollbackRequest) returns (RollbackResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:rollback" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:rollback" + body: "*" + }; } // Allocates IDs for the given keys, which is useful for referencing an entity // before it is inserted. rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:allocateIds" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:allocateIds" + body: "*" + }; } // Prevents the supplied keys' IDs from being auto-allocated by Cloud // Datastore. rpc ReserveIds(ReserveIdsRequest) returns (ReserveIdsResponse) { - option (google.api.http) = { post: "/v1/projects/{project_id}:reserveIds" body: "*" }; + option (google.api.http) = { + post: "/v1/projects/{project_id}:reserveIds" + body: "*" + }; } } diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index de38b0763ed..bab7953d62e 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastor option java_multiple_files = true; option java_outer_classname = "EntityProto"; option java_package = "com.google.datastore.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\V1"; // A partition ID identifies a grouping of entities. The grouping is always diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index f74a9946849..2efed915a74 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastor option java_multiple_files = true; option java_outer_classname = "QueryProto"; option java_package = "com.google.datastore.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\V1"; // The result of fetching an entity from Datastore. diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 3ae9bcce7da..cb93f498dde 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -324,8 +324,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", @@ -335,26 +334,22 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -362,14 +357,12 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.0.1" @@ -377,32 +370,27 @@ }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "bundled": true, "dev": true, "requires": { "chalk": "^1.1.3", @@ -412,8 +400,7 @@ }, "babel-generator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "bundled": true, "dev": true, "requires": { "babel-messages": "^6.23.0", @@ -428,8 +415,7 @@ }, "babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.22.0" @@ -437,8 +423,7 @@ }, "babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "bundled": true, "dev": true, "requires": { "core-js": "^2.4.0", @@ -447,8 +432,7 @@ }, "babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -460,8 +444,7 @@ }, "babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "bundled": true, "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -477,8 +460,7 @@ }, "babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "bundled": true, "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -489,20 +471,17 @@ }, "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -511,8 +490,7 @@ }, "braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "bundled": true, "dev": true, "requires": { "expand-range": "^1.8.1", @@ -522,14 +500,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -539,15 +515,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -557,8 +531,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "bundled": true, "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -570,8 +543,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -582,8 +554,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -591,38 +562,32 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -631,8 +596,7 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -640,20 +604,17 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -661,8 +622,7 @@ }, "detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bundled": true, "dev": true, "requires": { "repeating": "^2.0.0" @@ -670,8 +630,7 @@ }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -679,20 +638,17 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "bundled": true, "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "bundled": true, "dev": true }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -706,8 +662,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -719,8 +674,7 @@ }, "expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "bundled": true, "dev": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -728,8 +682,7 @@ }, "expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "bundled": true, "dev": true, "requires": { "fill-range": "^2.1.0" @@ -737,8 +690,7 @@ }, "extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -746,14 +698,12 @@ }, "filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "bundled": true, "dev": true, "requires": { "is-number": "^2.1.0", @@ -765,8 +715,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -776,8 +725,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "^2.0.0" @@ -785,14 +733,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "bundled": true, "dev": true, "requires": { "for-in": "^1.0.1" @@ -800,8 +746,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -810,26 +755,22 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -842,8 +783,7 @@ }, "glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "bundled": true, "dev": true, "requires": { "glob-parent": "^2.0.0", @@ -852,8 +792,7 @@ }, "glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "bundled": true, "dev": true, "requires": { "is-glob": "^2.0.0" @@ -861,20 +800,17 @@ }, "globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "^1.4.0", @@ -885,8 +821,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -896,8 +831,7 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -905,26 +839,22 @@ }, "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -933,14 +863,12 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "bundled": true, "dev": true, "requires": { "loose-envify": "^1.0.0" @@ -948,26 +876,22 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -975,14 +899,12 @@ }, "is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "bundled": true, "dev": true, "requires": { "is-primitive": "^2.0.0" @@ -990,20 +912,17 @@ }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1011,8 +930,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1020,8 +938,7 @@ }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "bundled": true, "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -1029,8 +946,7 @@ }, "is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1038,44 +954,37 @@ }, "is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -1083,14 +992,12 @@ }, "istanbul-lib-coverage": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "bundled": true, "dev": true, "requires": { "append-transform": "^0.4.0" @@ -1098,8 +1005,7 @@ }, "istanbul-lib-instrument": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "bundled": true, "dev": true, "requires": { "babel-generator": "^6.18.0", @@ -1113,8 +1019,7 @@ }, "istanbul-lib-report": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.1", @@ -1125,8 +1030,7 @@ "dependencies": { "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" @@ -1136,8 +1040,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", @@ -1149,8 +1052,7 @@ "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -1160,8 +1062,7 @@ }, "istanbul-reports": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" @@ -1169,20 +1070,17 @@ }, "js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "bundled": true, "dev": true }, "jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "bundled": true, "dev": true }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1190,15 +1088,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -1206,8 +1102,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1219,8 +1114,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "^2.0.0", @@ -1229,28 +1123,24 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "lodash": { "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "bundled": true, "dev": true }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "loose-envify": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "bundled": true, "dev": true, "requires": { "js-tokens": "^3.0.0" @@ -1258,8 +1148,7 @@ }, "lru-cache": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1268,8 +1157,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -1277,14 +1165,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -1292,8 +1178,7 @@ }, "merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "bundled": true, "dev": true, "requires": { "source-map": "^0.5.6" @@ -1301,8 +1186,7 @@ }, "micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^2.0.0", @@ -1322,14 +1206,12 @@ }, "mimic-fn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1337,14 +1219,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1352,14 +1232,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -1370,8 +1248,7 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -1379,8 +1256,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -1388,20 +1264,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "bundled": true, "dev": true, "requires": { "for-own": "^0.1.4", @@ -1410,8 +1283,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -1419,8 +1291,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", @@ -1429,14 +1300,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "bundled": true, "dev": true, "requires": { "execa": "^0.7.0", @@ -1446,20 +1315,17 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "^1.1.0" @@ -1467,8 +1333,7 @@ }, "parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "bundled": true, "dev": true, "requires": { "glob-base": "^0.3.0", @@ -1479,8 +1344,7 @@ }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" @@ -1488,8 +1352,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -1497,26 +1360,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1526,20 +1385,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" @@ -1547,8 +1403,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" @@ -1556,8 +1411,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1568,20 +1422,17 @@ }, "preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -1590,8 +1441,7 @@ "dependencies": { "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -1599,8 +1449,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1610,8 +1459,7 @@ }, "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -1621,8 +1469,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -1632,8 +1479,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", @@ -1642,8 +1488,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -1654,14 +1499,12 @@ }, "regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "bundled": true, "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -1669,26 +1512,22 @@ }, "remove-trailing-separator": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "bundled": true, "dev": true }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "bundled": true, "dev": true, "requires": { "is-finite": "^1.0.0" @@ -1696,26 +1535,22 @@ }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1724,8 +1559,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" @@ -1733,20 +1567,17 @@ }, "semver": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -1754,32 +1585,27 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -1792,8 +1618,7 @@ }, "spdx-correct": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "bundled": true, "dev": true, "requires": { "spdx-license-ids": "^1.0.2" @@ -1801,20 +1626,17 @@ }, "spdx-expression-parse": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -1823,20 +1645,17 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -1846,8 +1665,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -1855,8 +1673,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -1864,20 +1681,17 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", - "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -1889,20 +1703,17 @@ }, "to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "bundled": true, "dev": true }, "trim-right": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "bundled": true, "dev": true }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1913,8 +1724,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1928,15 +1738,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "~1.0.0", @@ -1945,8 +1753,7 @@ }, "which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -1954,27 +1761,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -1983,8 +1786,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1996,14 +1798,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -2013,20 +1813,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", - "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "bundled": true, "dev": true, "requires": { "cliui": "^3.2.0", @@ -2045,8 +1842,7 @@ "dependencies": { "cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -2056,8 +1852,7 @@ "dependencies": { "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2071,8 +1866,7 @@ }, "yargs-parser": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", - "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -2080,8 +1874,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -2271,9 +2064,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.5.tgz", - "integrity": "sha512-6lRwZN0Y3TuglwaaZN2XPocobmzLlhxcqDjKFjNYSsXG/TFAGYkCqkzZh4+ms8iTHHQE6gJXLHPV7TziVGeWhg==" + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.6.tgz", + "integrity": "sha512-h7VDRFL8IhdPw1JjiNVvhr+WynfKW09q2BOflIOA0yeuXNeXBP1bIRuBrysSryH4keaJ5bYUNp63aIyQL9YpDQ==" }, "@types/request": { "version": "2.47.1", @@ -4675,28 +4468,24 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4706,14 +4495,12 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -4722,40 +4509,34 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4764,29 +4545,25 @@ }, "deep-extend": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4795,15 +4572,13 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4819,8 +4594,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4834,15 +4608,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4851,8 +4623,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4861,8 +4632,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4872,21 +4642,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -4894,15 +4661,13 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4910,14 +4675,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "minipass": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", - "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -4926,8 +4689,7 @@ }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4936,8 +4698,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -4945,15 +4706,13 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", - "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4964,8 +4723,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4983,8 +4741,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -4994,15 +4751,13 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5012,8 +4767,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5025,21 +4779,18 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -5047,22 +4798,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5072,22 +4820,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5099,8 +4844,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -5108,8 +4852,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5124,8 +4867,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5134,49 +4876,42 @@ }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -5186,8 +4921,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5196,8 +4930,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -5205,15 +4938,13 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", - "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5228,15 +4959,13 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5245,14 +4974,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "bundled": true, "dev": true } } @@ -5559,23 +5286,19 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "bundled": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "bundled": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "bundled": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "bundled": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -5583,13 +5306,11 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "bundled": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5597,69 +5318,57 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + "bundled": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "bundled": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "bundled": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "bundled": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "bundled": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "bundled": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "bundled": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "bundled": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -5673,8 +5382,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5686,29 +5394,25 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "bundled": true }, "iconv-lite": { "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "bundled": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5716,44 +5420,37 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "bundled": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "bundled": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "bundled": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "bundled": true }, "minipass": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz", - "integrity": "sha512-/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==", + "bundled": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5761,36 +5458,31 @@ }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "bundled": true, "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "bundled": true } } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "bundled": true }, "needle": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz", - "integrity": "sha512-t/ZswCM9JTWjAdXS9VpvqhI2Ct2sL2MdY4fUXqGJaGBk13ge99ObqRksRTbBE56K+wxUXwwfZYOuZHifFW9q+Q==", + "bundled": true, "requires": { "debug": "^2.1.2", "iconv-lite": "^0.4.4", @@ -5799,8 +5491,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "bundled": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -5816,8 +5507,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -5825,13 +5515,11 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==" + "bundled": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "bundled": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -5839,8 +5527,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -5850,36 +5537,30 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "bundled": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "bundled": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "bundled": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "bundled": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -5887,13 +5568,11 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "bundled": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "bundled": true }, "protobufjs": { "version": "5.0.3", @@ -5908,8 +5587,7 @@ }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "bundled": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -5919,8 +5597,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5933,46 +5610,38 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "bundled": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "bundled": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "bundled": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "bundled": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "bundled": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "bundled": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5981,29 +5650,25 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "bundled": true }, "tar": { "version": "4.4.4", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.4.tgz", - "integrity": "sha512-mq9ixIYfNF9SK0IS/h2HKMu8Q2iaCuhDDsZhdEag/FHv8fOaYld4vN7ouMgcSSt5WKZzPs8atclTcJm36OTh4w==", + "bundled": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", @@ -6016,26 +5681,22 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "bundled": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "bundled": true, "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "bundled": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + "bundled": true }, "yargs": { "version": "3.32.0", @@ -6666,9 +6327,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.0.tgz", - "integrity": "sha512-ozQGtlIw+/a/F3n6QwWiuuyRAPp64+g2GVsKYsIez0sgIEzkU5ZpL2uZ5pmAzbEJ82anlRaPlOQZzkRXspgJyg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.1.tgz", + "integrity": "sha512-azWDq6BXKEZV1dGAnqCzBO5S+k3hX6IP63NHKXI9+sPNtaWEymJ6vh0rl65ZLgt8kbn7lmt63kdcOMXomW4B4Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.49", @@ -7436,8 +7097,7 @@ "dependencies": { "align-text": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2", @@ -7447,20 +7107,17 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "bundled": true, "dev": true }, "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "append-transform": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^1.0.0" @@ -7468,68 +7125,57 @@ }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "bundled": true, "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "bundled": true, "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "bundled": true, "dev": true }, "array-unique": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "bundled": true, "dev": true }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "bundled": true, "dev": true }, "atob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "bundled": true, "dev": true, "requires": { "cache-base": "^1.0.1", @@ -7543,8 +7189,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7552,8 +7197,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7561,8 +7205,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7570,8 +7213,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7581,16 +7223,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -7599,8 +7239,7 @@ }, "braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "bundled": true, "dev": true, "requires": { "arr-flatten": "^1.1.0", @@ -7617,8 +7256,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7628,14 +7266,12 @@ }, "builtin-modules": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "bundled": true, "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "bundled": true, "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -7651,8 +7287,7 @@ }, "caching-transform": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "bundled": true, "dev": true, "requires": { "md5-hex": "^1.2.0", @@ -7662,15 +7297,13 @@ }, "camelcase": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "bundled": true, "dev": true, "optional": true }, "center-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -7680,8 +7313,7 @@ }, "class-utils": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -7692,8 +7324,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7703,8 +7334,7 @@ }, "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -7715,8 +7345,7 @@ "dependencies": { "wordwrap": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "bundled": true, "dev": true, "optional": true } @@ -7724,14 +7353,12 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "bundled": true, "dev": true, "requires": { "map-visit": "^1.0.0", @@ -7740,38 +7367,32 @@ }, "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "bundled": true, "dev": true }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7780,8 +7401,7 @@ }, "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -7789,26 +7409,22 @@ }, "debug-log": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "bundled": true, "dev": true }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^2.0.0" @@ -7816,8 +7432,7 @@ }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -7826,8 +7441,7 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7835,8 +7449,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -7844,8 +7457,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -7855,16 +7467,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "error-ex": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -7872,8 +7482,7 @@ }, "execa": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -7887,8 +7496,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -7900,8 +7508,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "bundled": true, "dev": true, "requires": { "debug": "^2.3.3", @@ -7915,8 +7522,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -7924,8 +7530,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -7933,8 +7538,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7944,8 +7548,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "bundled": true, "dev": true, "requires": { "assign-symbols": "^1.0.0", @@ -7954,8 +7557,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -7965,8 +7567,7 @@ }, "extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "bundled": true, "dev": true, "requires": { "array-unique": "^0.3.2", @@ -7981,8 +7582,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -7990,8 +7590,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -7999,8 +7598,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8008,8 +7606,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -8017,8 +7614,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -8028,16 +7624,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8048,8 +7642,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -8059,8 +7652,7 @@ }, "find-cache-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -8070,8 +7662,7 @@ }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "bundled": true, "dev": true, "requires": { "locate-path": "^2.0.0" @@ -8079,14 +7670,12 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "bundled": true, "dev": true }, "foreground-child": { "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -8095,8 +7684,7 @@ }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "bundled": true, "dev": true, "requires": { "map-cache": "^0.2.2" @@ -8104,32 +7692,27 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "bundled": true, "dev": true }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "bundled": true, "dev": true }, "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "bundled": true, "dev": true }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -8142,14 +7725,12 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "handlebars": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "bundled": true, "dev": true, "requires": { "async": "^1.4.0", @@ -8160,8 +7741,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "bundled": true, "dev": true, "requires": { "amdefine": ">=0.0.4" @@ -8171,8 +7751,7 @@ }, "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.6", @@ -8182,8 +7761,7 @@ }, "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -8192,8 +7770,7 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -8203,20 +7780,17 @@ }, "hosted-git-info": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -8225,20 +7799,17 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "bundled": true, "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8246,20 +7817,17 @@ }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "bundled": true, "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -8267,8 +7835,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8276,8 +7843,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", @@ -8287,28 +7853,24 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "bundled": true, "dev": true } } }, "is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8316,8 +7878,7 @@ }, "is-odd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", + "bundled": true, "dev": true, "requires": { "is-number": "^4.0.0" @@ -8325,16 +7886,14 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", + "bundled": true, "dev": true } } }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -8342,50 +7901,42 @@ }, "is-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "bundled": true, "dev": true }, "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "bundled": true, "dev": true }, "istanbul-lib-coverage": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha1-hTjZcDcss3FtU+VVI91UtVeo2Js=", + "bundled": true, "dev": true, "requires": { "append-transform": "^0.4.0" @@ -8393,8 +7944,7 @@ }, "istanbul-lib-report": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz", - "integrity": "sha1-LfEhiMD6d5kMDSF20tC6M5QYglk=", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^1.1.2", @@ -8405,14 +7955,12 @@ "dependencies": { "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "bundled": true, "dev": true }, "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "bundled": true, "dev": true, "requires": { "has-flag": "^1.0.0" @@ -8422,8 +7970,7 @@ }, "istanbul-lib-source-maps": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", - "integrity": "sha1-/+a+Tnq4bTYD5CkNVJkLFFBvybE=", + "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", @@ -8435,8 +7982,7 @@ }, "istanbul-reports": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.4.1.tgz", - "integrity": "sha1-Ty6OkoqnoF0dpsQn1AmLJlXsczQ=", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.0.3" @@ -8444,8 +7990,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "bundled": true, "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -8453,15 +7998,13 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "bundled": true, "dev": true, "optional": true }, "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "bundled": true, "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -8469,8 +8012,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -8482,8 +8024,7 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "bundled": true, "dev": true, "requires": { "p-locate": "^2.0.0", @@ -8492,22 +8033,19 @@ "dependencies": { "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true } } }, "longest": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "bundled": true, "dev": true }, "lru-cache": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -8516,14 +8054,12 @@ }, "map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "bundled": true, "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "bundled": true, "dev": true, "requires": { "object-visit": "^1.0.0" @@ -8531,8 +8067,7 @@ }, "md5-hex": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "bundled": true, "dev": true, "requires": { "md5-o-matic": "^0.1.1" @@ -8540,14 +8075,12 @@ }, "md5-o-matic": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "bundled": true, "dev": true }, "mem": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "bundled": true, "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -8555,8 +8088,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "bundled": true, "dev": true, "requires": { "source-map": "^0.6.1" @@ -8564,16 +8096,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "bundled": true, "dev": true } } }, "micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8593,22 +8123,19 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -8616,14 +8143,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "bundled": true, "dev": true, "requires": { "for-in": "^1.0.2", @@ -8632,8 +8157,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "bundled": true, "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -8643,8 +8167,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -8652,14 +8175,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true }, "nanomatch": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", + "bundled": true, "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -8678,16 +8199,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "normalize-package-data": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -8698,8 +8217,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -8707,20 +8225,17 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "bundled": true, "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -8730,8 +8245,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -8741,8 +8255,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.0" @@ -8750,8 +8263,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "bundled": true, "dev": true, "requires": { "isobject": "^3.0.1" @@ -8759,8 +8271,7 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -8768,8 +8279,7 @@ }, "optimist": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "bundled": true, "dev": true, "requires": { "minimist": "~0.0.1", @@ -8778,14 +8288,12 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", + "bundled": true, "dev": true, "requires": { "execa": "^0.7.0", @@ -8795,14 +8303,12 @@ }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-limit": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", + "bundled": true, "dev": true, "requires": { "p-try": "^1.0.0" @@ -8810,8 +8316,7 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "bundled": true, "dev": true, "requires": { "p-limit": "^1.1.0" @@ -8819,14 +8324,12 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "bundled": true, "dev": true }, "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.2.0" @@ -8834,14 +8337,12 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "bundled": true, "dev": true }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "bundled": true, "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -8849,26 +8350,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "bundled": true, "dev": true }, "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -8878,20 +8375,17 @@ }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "bundled": true, "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "bundled": true, "dev": true }, "pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "bundled": true, "dev": true, "requires": { "pinkie": "^2.0.0" @@ -8899,8 +8393,7 @@ }, "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0" @@ -8908,8 +8401,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8920,20 +8412,17 @@ }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -8943,8 +8432,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "bundled": true, "dev": true, "requires": { "find-up": "^1.0.0", @@ -8953,8 +8441,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "bundled": true, "dev": true, "requires": { "path-exists": "^2.0.0", @@ -8965,8 +8452,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -8975,50 +8461,42 @@ }, "repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "bundled": true, "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "bundled": true, "dev": true }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve-from": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "bundled": true, "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "bundled": true, "dev": true }, "ret": { "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "bundled": true, "dev": true }, "right-align": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9027,8 +8505,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" @@ -9036,8 +8513,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "bundled": true, "dev": true, "requires": { "ret": "~0.1.10" @@ -9045,20 +8521,17 @@ }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9069,8 +8542,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9080,8 +8552,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -9089,26 +8560,22 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "bundled": true, "dev": true }, "snapdragon": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "bundled": true, "dev": true, "requires": { "base": "^0.11.1", @@ -9123,8 +8590,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "bundled": true, "dev": true, "requires": { "ms": "2.0.0" @@ -9132,8 +8598,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9141,8 +8606,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9152,8 +8616,7 @@ }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "bundled": true, "dev": true, "requires": { "define-property": "^1.0.0", @@ -9163,8 +8626,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -9172,8 +8634,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -9181,8 +8642,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.0" @@ -9190,8 +8650,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "bundled": true, "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", @@ -9201,16 +8660,14 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.2.0" @@ -9218,14 +8675,12 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "bundled": true, "dev": true }, "source-map-resolve": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "bundled": true, "dev": true, "requires": { "atob": "^2.1.1", @@ -9237,14 +8692,12 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -9257,8 +8710,7 @@ }, "spdx-correct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -9267,14 +8719,12 @@ }, "spdx-exceptions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -9283,14 +8733,12 @@ }, "spdx-license-ids": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", + "bundled": true, "dev": true }, "split-string": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -9298,8 +8746,7 @@ }, "static-extend": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "bundled": true, "dev": true, "requires": { "define-property": "^0.2.5", @@ -9308,8 +8755,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "bundled": true, "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -9319,8 +8765,7 @@ }, "string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -9329,8 +8774,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -9338,8 +8782,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "bundled": true, "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -9347,14 +8790,12 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "test-exclude": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -9366,8 +8807,7 @@ }, "to-object-path": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "bundled": true, "dev": true, "requires": { "kind-of": "^3.0.2" @@ -9375,8 +8815,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "bundled": true, "dev": true, "requires": { "define-property": "^2.0.2", @@ -9387,8 +8826,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "bundled": true, "dev": true, "requires": { "is-number": "^3.0.0", @@ -9397,8 +8835,7 @@ }, "uglify-js": { "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9409,8 +8846,7 @@ "dependencies": { "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -9424,15 +8860,13 @@ }, "uglify-to-browserify": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "bundled": true, "dev": true, "optional": true }, "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "bundled": true, "dev": true, "requires": { "arr-union": "^3.1.0", @@ -9443,8 +8877,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "bundled": true, "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -9452,8 +8885,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "bundled": true, "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9466,8 +8898,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "bundled": true, "dev": true, "requires": { "has-value": "^0.3.1", @@ -9476,8 +8907,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "bundled": true, "dev": true, "requires": { "get-value": "^2.0.3", @@ -9487,8 +8917,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" @@ -9498,22 +8927,19 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "bundled": true, "dev": true } } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "bundled": true, "dev": true }, "use": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", + "bundled": true, "dev": true, "requires": { "kind-of": "^6.0.2" @@ -9521,16 +8947,14 @@ "dependencies": { "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "bundled": true, "dev": true } } }, "validate-npm-package-license": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "bundled": true, "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -9539,8 +8963,7 @@ }, "which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -9548,27 +8971,23 @@ }, "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, "dev": true }, "window-size": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "bundled": true, "dev": true, "optional": true }, "wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -9577,14 +8996,12 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -9592,8 +9009,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -9603,8 +9019,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -9614,14 +9029,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -9631,20 +9044,17 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha1-kLhpk07W6HERXqL/WLA/RyTtLXc=", + "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", @@ -9663,14 +9073,12 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true }, "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "bundled": true, "dev": true, "requires": { "string-width": "^2.1.1", @@ -9680,8 +9088,7 @@ }, "yargs-parser": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9691,8 +9098,7 @@ }, "yargs-parser": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", + "bundled": true, "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9700,8 +9106,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "bundled": true, "dev": true } } @@ -11673,9 +11078,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz", + "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==" }, "validate-npm-package-license": { "version": "3.0.3", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 26a64fc9247..ca4061abaf2 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -19,7 +19,8 @@ var arrify = require('arrify'); var common = require('@google-cloud/common'); var extend = require('extend'); -var grpc = require('google-gax').grpc().grpc; +var gax = require('google-gax'); +var grpc = new gax.GrpcClient().grpc; var GoogleAuth = require('google-auth-library').GoogleAuth; var is = require('is'); var util = require('util'); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 21816d3b35b..ac56a8a388e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -42,10 +42,10 @@ class DatastoreClient { * @param {string} [options.credentials.client_email] * @param {string} [options.credentials.private_key] * @param {string} [options.email] - Account email address. Required when - * usaing a .pem or .p12 keyFilename. + * using a .pem or .p12 keyFilename. * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or * .p12 key downloaded from the Google Developers Console. If you provide - * a path to a JSON file, the projectId option above is not necessary. + * a path to a JSON file, the projectId option below is not necessary. * NOTE: .pem and .p12 require you to specify options.email as well. * @param {number} [options.port] - The port on which to connect to * the remote host. @@ -76,14 +76,14 @@ class DatastoreClient { // Create a `gaxGrpc` object, with any grpc-specific options // sent to the client. opts.scopes = this.constructor.scopes; - var gaxGrpc = gax.grpc(opts); + var gaxGrpc = new gax.GrpcClient(opts); // Save the auth object to the client, for use by other methods. this.auth = gaxGrpc.auth; // Determine the client header string. var clientHeader = [ - `gl-node/${process.version.node}`, + `gl-node/${process.version}`, `grpc/${gaxGrpc.grpcVersion}`, `gax/${gax.version}`, `gapic/${VERSION}`, diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index 61f3acdc70d..7d75c8233b0 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index a7cfd513bdd..17ba6cc2640 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index be68ae1cdfd..fcd7ee9ec0f 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index 0ccf17f236b..791b600ab1d 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/src/v1/index.js index 52cca3f0e7c..cc1397887db 100644 --- a/handwritten/nodejs-datastore/src/v1/index.js +++ b/handwritten/nodejs-datastore/src/v1/index.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py new file mode 100644 index 00000000000..51edf6d0f54 --- /dev/null +++ b/handwritten/nodejs-datastore/synth.py @@ -0,0 +1,27 @@ +import synthtool as s +import synthtool.gcp as gcp +import logging +from pathlib import Path +import subprocess + +logging.basicConfig(level=logging.DEBUG) + +gapic = gcp.GAPICGenerator() + +# tasks has two product names, and a poorly named artman yaml +version = 'v1' +library = gapic.node_library( + 'datastore', version, + config_path='/google/datastore/artman_datastore.yaml') + +# Copy everything except for top level index, package.json, and README.md +s.copy( + library, + excludes=['package.json', 'README.md', 'src/index.js']) + +# +# Node.js specific cleanup +# +subprocess.run(['npm', 'install']) +subprocess.run(['npm', 'run', 'prettier']) +subprocess.run(['npm', 'run', 'lint']) diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 75d6a25bc9e..0ac522f8962 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -1,10 +1,10 @@ -// Copyright 2017, Google LLC All rights reserved. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -219,7 +219,7 @@ describe('DatastoreClient', () => { }; // Mock response - var indexUpdates = -1425228195; + var indexUpdates = 1425228195; var expectedResponse = { indexUpdates: indexUpdates, }; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index d8819116e6c..648ba771836 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -18,6 +18,7 @@ var assert = require('assert'); var extend = require('extend'); +var gax = new require('google-gax'); var proxyquire = require('proxyquire'); var util = require('@google-cloud/common').util; @@ -60,17 +61,20 @@ function fakeGoogleAuth() { } var createInsecureOverride; + var fakeGoogleGax = { - grpc: function() { - return { - grpc: { + GrpcClient: class extends gax.GrpcClient { + constructor(opts) { + // super constructor must be called first! + super(opts); + this.grpc = { credentials: { - createInsecure: function() { + createInsecure() { return (createInsecureOverride || util.noop).apply(null, arguments); }, }, - }, - }; + }; + } }, }; From 88319bff413ae5940f56cd8481cbe688e501b052 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 26 Jun 2018 21:27:15 -0700 Subject: [PATCH 208/820] fix(deps): update dependency sinon to v6 (#120) --- .../samples/package-lock.json | 47 ++++++++++++++----- .../nodejs-datastore/samples/package.json | 2 +- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index cb93f498dde..0d1325dd4a4 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -326,6 +326,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1136,7 +1137,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -2110,6 +2112,7 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2121,6 +2124,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -4496,12 +4500,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4516,17 +4522,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4643,7 +4652,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4655,6 +4665,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4669,6 +4680,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4676,12 +4688,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4700,6 +4714,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4780,7 +4795,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4792,6 +4808,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4913,6 +4930,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6613,7 +6631,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -7099,6 +7118,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -8041,7 +8061,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "lru-cache": { "version": "4.1.3", @@ -10227,9 +10248,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", - "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", + "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", "requires": { "@sinonjs/formatio": "^2.0.0", "diff": "^3.5.0", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index e9b4b608ed6..e966bb2028c 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "1.4.1", - "sinon": "5.1.1", + "sinon": "6.0.1", "yargs": "11.0.0" }, "devDependencies": { From a926fd3b35e65d6401c0fa62852b3508cd1975a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 29 Jun 2018 15:40:25 -0700 Subject: [PATCH 209/820] fix(deps): update dependency yargs to v12 (#122) --- .../samples/package-lock.json | 175 ++++++++++++++++-- .../nodejs-datastore/samples/package.json | 12 +- 2 files changed, 168 insertions(+), 19 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 0d1325dd4a4..6e232af5d62 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -281,6 +281,29 @@ "yargs-parser": "9.0.2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", @@ -1883,6 +1906,17 @@ } } }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, "proxyquire": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", @@ -1908,6 +1942,45 @@ "supports-color": "^5.1.0", "type-detect": "^4.0.5" } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } } } }, @@ -4367,6 +4440,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { "locate-path": "^2.0.0" } @@ -4479,7 +4553,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4894,7 +4969,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4950,6 +5026,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4993,12 +5070,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -6551,6 +6630,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -9312,6 +9392,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "requires": { "p-try": "^1.0.0" } @@ -9320,6 +9401,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -9336,7 +9418,8 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "package-hash": { "version": "2.0.0", @@ -11258,6 +11341,11 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -11274,13 +11362,13 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", + "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", "os-locale": "^2.0.0", "require-directory": "^2.1.1", @@ -11288,8 +11376,8 @@ "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" }, "dependencies": { "ansi-regex": { @@ -11297,6 +11385,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -11307,11 +11400,36 @@ "wrap-ansi": "^2.0.0" } }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "requires": { + "xregexp": "4.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -11322,6 +11440,27 @@ "mem": "^1.1.0" } }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11338,6 +11477,14 @@ "requires": { "ansi-regex": "^3.0.0" } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + } } } }, @@ -11345,6 +11492,7 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, "requires": { "camelcase": "^4.1.0" }, @@ -11352,7 +11500,8 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true } } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index e966bb2028c..75f8d59d05f 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -6,7 +6,7 @@ "author": "Google Inc.", "repository": "googleapis/nodejs-datastore", "engines": { - "node": ">=4" + "node": ">=6" }, "scripts": { "test": "npm run cover", @@ -14,14 +14,14 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "1.4.1", - "sinon": "6.0.1", - "yargs": "11.0.0" + "@google-cloud/datastore": "^1.4.1", + "sinon": "^6.0.1", + "yargs": "^12.0.1" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "2.3.0", + "@google-cloud/nodejs-repo-tools": "^2.3.0", "ava": "^0.25.0", "nyc": "^12.0.2", - "proxyquire": "2.0.1" + "proxyquire": "^2.0.1" } } From df37c8d6eddaddadbd7c0bb3647977d2926cc8b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 2 Jul 2018 20:51:13 -0700 Subject: [PATCH 210/820] chore(deps): lock file maintenance (#124) --- .../nodejs-datastore/package-lock.json | 191 +++---- .../samples/package-lock.json | 497 +++++++++++------- 2 files changed, 376 insertions(+), 312 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index ee8546d5a89..21e7d8429f3 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -72,21 +72,21 @@ } }, "@babel/code-frame": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", - "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.49" + "@babel/highlight": "7.0.0-beta.51" } }, "@babel/generator": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", - "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.51", "jsesc": "^2.5.1", "lodash": "^4.17.5", "source-map": "^0.5.0", @@ -102,38 +102,38 @@ } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", - "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49" + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", - "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49" + "@babel/types": "7.0.0-beta.51" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", - "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49" + "@babel/types": "7.0.0-beta.51" } }, "@babel/highlight": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", - "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -142,35 +142,35 @@ } }, "@babel/parser": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.49.tgz", - "integrity": "sha1-lE0MW6KBK7FZ7b0iZ0Ov0mUXm9w=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", "dev": true }, "@babel/template": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", - "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "lodash": "^4.17.5" } }, "@babel/traverse": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", - "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/generator": "7.0.0-beta.49", - "@babel/helper-function-name": "7.0.0-beta.49", - "@babel/helper-split-export-declaration": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "debug": "^3.1.0", "globals": "^11.1.0", "invariant": "^2.2.0", @@ -186,9 +186,9 @@ } }, "@babel/types": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", - "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -214,9 +214,9 @@ } }, "@google-cloud/common": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.20.1.tgz", - "integrity": "sha512-LJB7CoNXEXY0mDWtF8E2cl3Y0kuMQ3wjH9Xr+Y7vH5gHgN82dDh1BMUOizRf9oXQFDWUgGERD5SdfBcjUhHmwA==", + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.20.3.tgz", + "integrity": "sha512-jt8/R4EqDTQccv5WA9AEaS65llM5+mlxsuWu57G5Os8HTIpgPbcsOVMUeIvmTrBuPUYSoRIMW8d/pvv/95n0+g==", "requires": { "@types/duplexify": "^3.5.0", "@types/request": "^2.47.0", @@ -229,7 +229,7 @@ "is": "^3.2.1", "pify": "^3.0.0", "request": "^2.87.0", - "retry-request": "^3.3.1", + "retry-request": "^4.0.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", "through2": "^2.0.3" @@ -2114,9 +2114,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.6.tgz", - "integrity": "sha512-h7VDRFL8IhdPw1JjiNVvhr+WynfKW09q2BOflIOA0yeuXNeXBP1bIRuBrysSryH4keaJ5bYUNp63aIyQL9YpDQ==" + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz", + "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==" }, "@types/request": { "version": "2.47.1", @@ -3200,9 +3200,9 @@ } }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -4525,9 +4525,9 @@ }, "dependencies": { "ajv": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", - "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", + "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -5928,16 +5928,6 @@ "protobufjs": "^6.8.6", "retry-request": "^4.0.0", "through2": "^2.0.3" - }, - "dependencies": { - "retry-request": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz", - "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==", - "requires": { - "through2": "^2.0.0" - } - } } }, "google-p12-pem": { @@ -7056,21 +7046,6 @@ "symbol-observable": "^1.1.0" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -7221,16 +7196,16 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.1.tgz", - "integrity": "sha512-azWDq6BXKEZV1dGAnqCzBO5S+k3hX6IP63NHKXI9+sPNtaWEymJ6vh0rl65ZLgt8kbn7lmt63kdcOMXomW4B4Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.0.tgz", + "integrity": "sha512-Ie1LGWJVCFDDJKKH4g1ffpFcZTEXEd6ay5l9fE8539y4qPErJnzo4psnGzDH92tcKvdUDdbxrKySYIbt6zB9hw==", "dev": true, "requires": { - "@babel/generator": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/traverse": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "istanbul-lib-coverage": "^2.0.0", "semver": "^5.5.0" } @@ -8024,16 +7999,15 @@ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" }, "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", @@ -10803,9 +10777,9 @@ "dev": true }, "prettier": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.6.tgz", - "integrity": "sha512-p5eqCNiohWZN++7aJXUVj0JgLqHCPLf9GLIcLBHGNWs4Y9FJOPs6+KNO2WT0udJIQJTbeZFrJkjzjcb8fkAYYQ==", + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", "dev": true }, "pretty-ms": { @@ -11311,11 +11285,10 @@ "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" }, "retry-request": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", - "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz", + "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==", "requires": { - "request": "^2.81.0", "through2": "^2.0.0" } }, @@ -12002,9 +11975,9 @@ }, "dependencies": { "ajv": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", - "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", + "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -12516,9 +12489,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz", - "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "validate-npm-package-license": { "version": "3.0.3", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 6e232af5d62..721b24ff075 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -72,21 +72,21 @@ } }, "@babel/code-frame": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz", - "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.49" + "@babel/highlight": "7.0.0-beta.51" } }, "@babel/generator": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.49.tgz", - "integrity": "sha1-6c/9qROZaszseTu8JauRvBnQv3o=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49", + "@babel/types": "7.0.0-beta.51", "jsesc": "^2.5.1", "lodash": "^4.17.5", "source-map": "^0.5.0", @@ -102,38 +102,38 @@ } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.49.tgz", - "integrity": "sha1-olwRGbnwNSeGcBJuAiXAMEHI3jI=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49" + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.49.tgz", - "integrity": "sha1-z1Aj8y0q2S0Ic3STnOwJUby1FEE=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49" + "@babel/types": "7.0.0-beta.51" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.49.tgz", - "integrity": "sha1-QNeO2glo0BGxxShm5XRs+yPldUg=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.49" + "@babel/types": "7.0.0-beta.51" } }, "@babel/highlight": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz", - "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -142,35 +142,35 @@ } }, "@babel/parser": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.49.tgz", - "integrity": "sha1-lE0MW6KBK7FZ7b0iZ0Ov0mUXm9w=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", "dev": true }, "@babel/template": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz", - "integrity": "sha1-44q+ghfLl5P0YaUwbXrXRdg+HSc=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "lodash": "^4.17.5" } }, "@babel/traverse": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.49.tgz", - "integrity": "sha1-TypzaCoYM07WYl0QCo0nMZ98LWg=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.49", - "@babel/generator": "7.0.0-beta.49", - "@babel/helper-function-name": "7.0.0-beta.49", - "@babel/helper-split-export-declaration": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "debug": "^3.1.0", "globals": "^11.1.0", "invariant": "^2.2.0", @@ -186,9 +186,9 @@ } }, "@babel/types": { - "version": "7.0.0-beta.49", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.49.tgz", - "integrity": "sha1-t+Oxw/TUz+Eb34yJ8e/V4WF7h6Y=", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -287,6 +287,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -298,12 +304,31 @@ "wrap-ansi": "^2.0.0" } }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", @@ -349,7 +374,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1160,8 +1184,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -1917,6 +1940,30 @@ "mem": "^1.1.0" } }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "proxyquire": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", @@ -1981,6 +2028,15 @@ "y18n": "^3.2.1", "yargs-parser": "^9.0.2" } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } } } }, @@ -2139,9 +2195,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.3.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.6.tgz", - "integrity": "sha512-h7VDRFL8IhdPw1JjiNVvhr+WynfKW09q2BOflIOA0yeuXNeXBP1bIRuBrysSryH4keaJ5bYUNp63aIyQL9YpDQ==" + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz", + "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==" }, "@types/request": { "version": "2.47.1", @@ -2185,7 +2241,6 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2197,7 +2252,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -3205,9 +3259,9 @@ } }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -4437,12 +4491,11 @@ } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, "fn-name": { @@ -4553,8 +4606,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -4575,14 +4627,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4597,20 +4647,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -4727,8 +4774,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -4740,7 +4786,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4755,7 +4800,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4763,14 +4807,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4789,7 +4831,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -4870,8 +4911,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -4883,7 +4923,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -4969,8 +5008,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -5006,7 +5044,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5026,7 +5063,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5070,14 +5106,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -6297,21 +6331,6 @@ "symbol-observable": "^1.1.0" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -6424,16 +6443,16 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.2.1.tgz", - "integrity": "sha512-azWDq6BXKEZV1dGAnqCzBO5S+k3hX6IP63NHKXI9+sPNtaWEymJ6vh0rl65ZLgt8kbn7lmt63kdcOMXomW4B4Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.0.tgz", + "integrity": "sha512-Ie1LGWJVCFDDJKKH4g1ffpFcZTEXEd6ay5l9fE8539y4qPErJnzo4psnGzDH92tcKvdUDdbxrKySYIbt6zB9hw==", "dev": true, "requires": { - "@babel/generator": "7.0.0-beta.49", - "@babel/parser": "7.0.0-beta.49", - "@babel/template": "7.0.0-beta.49", - "@babel/traverse": "7.0.0-beta.49", - "@babel/types": "7.0.0-beta.49", + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", "istanbul-lib-coverage": "^2.0.0", "semver": "^5.5.0" } @@ -6627,12 +6646,11 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, @@ -6711,8 +6729,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -7071,16 +7088,15 @@ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" }, "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", @@ -7198,7 +7214,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -8141,8 +8156,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "lru-cache": { "version": "4.1.3", @@ -9389,21 +9403,19 @@ "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-timeout": { @@ -9416,10 +9428,9 @@ } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" }, "package-hash": { "version": "2.0.0", @@ -9605,6 +9616,15 @@ "load-json-file": "^4.0.0" }, "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -9617,6 +9637,40 @@ "strip-bom": "^3.0.0" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -9636,6 +9690,51 @@ "dev": true, "requires": { "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, "plur": { @@ -9961,6 +10060,51 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, "readable-stream": { @@ -11182,9 +11326,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz", - "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "validate-npm-package-license": { "version": "3.0.3", @@ -11385,11 +11529,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -11408,28 +11547,11 @@ "xregexp": "4.0.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -11440,27 +11562,6 @@ "mem": "^1.1.0" } }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11477,22 +11578,13 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "requires": { - "camelcase": "^4.1.0" - } } } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "requires": { "camelcase": "^4.1.0" }, @@ -11500,8 +11592,7 @@ "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" } } } From b51ec648135b5010df783d59627d3886260f2fba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 2 Jul 2018 22:24:51 -0700 Subject: [PATCH 211/820] chore(deps): lock file maintenance (#125) --- handwritten/nodejs-datastore/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 21e7d8429f3..7703257a52d 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -6874,9 +6874,9 @@ } }, "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, "is-ci": { From ea2e5c9b96c4709fee6ea4262f7c6f84197818c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 3 Jul 2018 09:39:59 -0700 Subject: [PATCH 212/820] chore(deps): lock file maintenance (#126) --- handwritten/nodejs-datastore/samples/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 721b24ff075..2d172060ba4 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -10475,9 +10475,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", - "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.0.tgz", + "integrity": "sha512-BSt7qfCyoqMcPVK0c+olyjaa2DB0DTyOBpHmGC3goiHmNa8NE+4/ZJlUi693VS0WPgvR0rc6nYvASXYZMiibhw==", "requires": { "@sinonjs/formatio": "^2.0.0", "diff": "^3.5.0", From 06b0f059476bf5e18796f9b97d7b3424f1c0dda3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 3 Jul 2018 10:46:00 -0700 Subject: [PATCH 213/820] chore(deps): lock file maintenance (#127) --- handwritten/nodejs-datastore/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 7703257a52d..711e339a4b0 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -11455,9 +11455,9 @@ "dev": true }, "sinon": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", - "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.0.tgz", + "integrity": "sha512-BSt7qfCyoqMcPVK0c+olyjaa2DB0DTyOBpHmGC3goiHmNa8NE+4/ZJlUi693VS0WPgvR0rc6nYvASXYZMiibhw==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", From 81be086d1326c3e0a0148600f384a9e041a3ceb2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 3 Jul 2018 11:02:48 -0700 Subject: [PATCH 214/820] chore(deps): lock file maintenance (#128) --- handwritten/nodejs-datastore/package-lock.json | 10 +++++----- handwritten/nodejs-datastore/samples/package-lock.json | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 711e339a4b0..a099d7b002d 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -6004,9 +6004,9 @@ "dev": true }, "grpc": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.4.tgz", - "integrity": "sha512-t0Hy4yoHHYLkK0b+ULTHw5ZuSFmWokCABY0C4bKQbE4jnm1hpjA23cQVD0xAqDcRHN5CkvFzlqb34ngV22dqoQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.0.tgz", + "integrity": "sha512-jGxWFYzttSz9pi8mu283jZvo2zIluWonQ918GMHKx8grT57GIVlvx7/82fo7AGS75lbkPoO1T6PZLvCRD9Pbtw==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -6220,7 +6220,7 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.2", "bundled": true, "requires": { "detect-libc": "^1.0.2", @@ -6229,7 +6229,7 @@ "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 2d172060ba4..6157753fa63 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -5405,9 +5405,9 @@ "dev": true }, "grpc": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.12.4.tgz", - "integrity": "sha512-t0Hy4yoHHYLkK0b+ULTHw5ZuSFmWokCABY0C4bKQbE4jnm1hpjA23cQVD0xAqDcRHN5CkvFzlqb34ngV22dqoQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.0.tgz", + "integrity": "sha512-jGxWFYzttSz9pi8mu283jZvo2zIluWonQ918GMHKx8grT57GIVlvx7/82fo7AGS75lbkPoO1T6PZLvCRD9Pbtw==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -5621,7 +5621,7 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.2", "bundled": true, "requires": { "detect-libc": "^1.0.2", @@ -5630,7 +5630,7 @@ "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" From 7f1ad566096defd243475a787b225fcdb3808df6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 9 Jul 2018 19:40:34 -0700 Subject: [PATCH 215/820] chore(deps): lock file maintenance (#130) --- .../nodejs-datastore/package-lock.json | 100 +++++++++++------- .../samples/package-lock.json | 56 +++++----- 2 files changed, 93 insertions(+), 63 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index a099d7b002d..c30854c5b8f 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -2087,6 +2087,12 @@ "samsam": "1.3.0" } }, + "@sinonjs/samsam": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.0.0.tgz", + "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==", + "dev": true + }, "@types/caseless": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", @@ -2114,9 +2120,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz", - "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==" + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", + "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" }, "@types/request": { "version": "2.47.1", @@ -3730,14 +3736,15 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.2.tgz", - "integrity": "sha512-9ljtIROIjPIUmMRqO+XuDITDoV8xRrZmA0jcEq6p2hg2+wY9wGmLfreAZGIL72IzUfdEDZaU8+Vjidg1fBQ8GQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.4.tgz", + "integrity": "sha512-KJyzHdg9B8U9LxXa7hS6jnEW5b1cNckLYc2YpnJ1nEFiOW+/iSzDHp+5MYEIQd9fN3/tC6WmGZmYiwxzkuGp/A==", "dev": true, "requires": { - "argv": "0.0.2", - "request": "^2.81.0", - "urlgrey": "0.4.4" + "argv": "^0.0.2", + "ignore-walk": "^3.0.1", + "request": "^2.87.0", + "urlgrey": "^0.4.4" } }, "collection-visit": { @@ -4479,9 +4486,9 @@ } }, "eslint": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.0.1.tgz", - "integrity": "sha512-D5nG2rErquLUstgUaxJlWB5+gu+U/3VDY0fk/Iuq8y9CUFy/7Y6oF4N2cR1tV8knzQvciIbfqfohd359xTLIKQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.1.0.tgz", + "integrity": "sha512-DyH6JsoA1KzA5+OSWFjg56DFJT+sDLO0yokaPZ9qY0UEmYrPA1gEX/G1MnVkmRDsksG4H1foIVz2ZXXM3hHYvw==", "dev": true, "requires": { "ajv": "^6.5.0", @@ -4491,6 +4498,7 @@ "debug": "^3.1.0", "doctrine": "^2.1.0", "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", "espree": "^4.0.0", "esquery": "^1.0.1", @@ -4498,7 +4506,7 @@ "file-entry-cache": "^2.0.0", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", - "globals": "^11.5.0", + "globals": "^11.7.0", "ignore": "^3.3.3", "imurmurhash": "^0.1.4", "inquirer": "^5.2.0", @@ -4625,9 +4633,9 @@ } }, "eslint-plugin-prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.1.tgz", - "integrity": "sha512-wNZ2z0oVCWnf+3BSI7roS+z4gGu2AwcPKUek+SlLZMZg+X0KbZLsB2knul7fd0K3iuIp402HIYzm4f2+OyfXxA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz", + "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==", "dev": true, "requires": { "fast-diff": "^1.1.1", @@ -4644,6 +4652,12 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -5121,9 +5135,9 @@ "dev": true }, "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", + "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", "requires": { "debug": "^3.1.0" } @@ -6588,9 +6602,9 @@ } }, "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "htmlparser2": { @@ -6665,6 +6679,15 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -7190,15 +7213,15 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", - "integrity": "sha512-yMSw5xLIbdaxiVXHk3amfNM2WeBxLrwH/BCyZ9HvA/fylwziAIJOG2rKqWyLqEJqwKT725vxxqidv+SyynnGAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.0.tgz", - "integrity": "sha512-Ie1LGWJVCFDDJKKH4g1ffpFcZTEXEd6ay5l9fE8539y4qPErJnzo4psnGzDH92tcKvdUDdbxrKySYIbt6zB9hw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", + "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", @@ -7206,7 +7229,7 @@ "@babel/template": "7.0.0-beta.51", "@babel/traverse": "7.0.0-beta.51", "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.0", + "istanbul-lib-coverage": "^2.0.1", "semver": "^5.5.0" } }, @@ -7558,9 +7581,9 @@ "dev": true }, "lolex": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", - "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.1.tgz", + "integrity": "sha512-Oo2Si3RMKV3+lV5MsSWplDQFoTClz/24S0MMHYcgGWWmFXr6TMlqcqk/l1GtH+d5wLBwNRiqGnwDRMirtFalJw==", "dev": true }, "long": { @@ -10847,9 +10870,9 @@ }, "dependencies": { "@types/node": { - "version": "8.10.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz", - "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==" + "version": "8.10.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.21.tgz", + "integrity": "sha512-87XkD9qDXm8fIax+5y7drx84cXsu34ZZqfB7Cial3Q/2lxSoJ/+DRaWckkCbxP41wFSIrrb939VhzaNxj4eY1w==" } } }, @@ -11455,12 +11478,13 @@ "dev": true }, "sinon": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.0.tgz", - "integrity": "sha512-BSt7qfCyoqMcPVK0c+olyjaa2DB0DTyOBpHmGC3goiHmNa8NE+4/ZJlUi693VS0WPgvR0rc6nYvASXYZMiibhw==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.3.tgz", + "integrity": "sha512-yeTza8xIZZdiXntCHJAzKll/sSYE+DuJOS8hiSapzaLqdW8eCNVVC9je9SZYYTkPm2bLts9x6UYxwuMAVVrM6Q==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", + "@sinonjs/samsam": "^2.0.0", "diff": "^3.5.0", "lodash.get": "^4.4.2", "lolex": "^2.4.2", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 6157753fa63..bce4abf969f 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -2168,6 +2168,11 @@ "samsam": "1.3.0" } }, + "@sinonjs/samsam": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.0.0.tgz", + "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==" + }, "@types/caseless": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", @@ -2195,9 +2200,9 @@ "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" }, "@types/node": { - "version": "10.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz", - "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==" + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", + "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" }, "@types/request": { "version": "2.47.1", @@ -4505,9 +4510,9 @@ "dev": true }, "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", + "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", "requires": { "debug": "^3.1.0" } @@ -5981,9 +5986,9 @@ } }, "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "http-cache-semantics": { @@ -6437,15 +6442,15 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", - "integrity": "sha512-yMSw5xLIbdaxiVXHk3amfNM2WeBxLrwH/BCyZ9HvA/fylwziAIJOG2rKqWyLqEJqwKT725vxxqidv+SyynnGAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.0.tgz", - "integrity": "sha512-Ie1LGWJVCFDDJKKH4g1ffpFcZTEXEd6ay5l9fE8539y4qPErJnzo4psnGzDH92tcKvdUDdbxrKySYIbt6zB9hw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", + "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", @@ -6453,7 +6458,7 @@ "@babel/template": "7.0.0-beta.51", "@babel/traverse": "7.0.0-beta.51", "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.0", + "istanbul-lib-coverage": "^2.0.1", "semver": "^5.5.0" } }, @@ -6716,9 +6721,9 @@ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" }, "lolex": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", - "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.1.tgz", + "integrity": "sha512-Oo2Si3RMKV3+lV5MsSWplDQFoTClz/24S0MMHYcgGWWmFXr6TMlqcqk/l1GtH+d5wLBwNRiqGnwDRMirtFalJw==" }, "long": { "version": "4.0.0", @@ -9931,9 +9936,9 @@ }, "dependencies": { "@types/node": { - "version": "8.10.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz", - "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==" + "version": "8.10.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.21.tgz", + "integrity": "sha512-87XkD9qDXm8fIax+5y7drx84cXsu34ZZqfB7Cial3Q/2lxSoJ/+DRaWckkCbxP41wFSIrrb939VhzaNxj4eY1w==" } } }, @@ -10475,11 +10480,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.0.tgz", - "integrity": "sha512-BSt7qfCyoqMcPVK0c+olyjaa2DB0DTyOBpHmGC3goiHmNa8NE+4/ZJlUi693VS0WPgvR0rc6nYvASXYZMiibhw==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.3.tgz", + "integrity": "sha512-yeTza8xIZZdiXntCHJAzKll/sSYE+DuJOS8hiSapzaLqdW8eCNVVC9je9SZYYTkPm2bLts9x6UYxwuMAVVrM6Q==", "requires": { "@sinonjs/formatio": "^2.0.0", + "@sinonjs/samsam": "^2.0.0", "diff": "^3.5.0", "lodash.get": "^4.4.2", "lolex": "^2.4.2", From d305a2fdc0591d297bbf659ca1aaf364c559524a Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 9 Jul 2018 22:11:57 -0700 Subject: [PATCH 216/820] fix: drop support for node.js 4.x and 9.x (#129) --- .../nodejs-datastore/.circleci/config.yml | 36 ++++--------------- handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 8 insertions(+), 30 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 6786d565b9b..35881120c36 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -17,18 +17,14 @@ workflows: filters: *all_commits - lint: requires: - - node4 - node6 - node8 - - node9 - node10 filters: *all_commits - docs: requires: - - node4 - node6 - node8 - - node9 - node10 filters: *all_commits - system_tests: @@ -62,9 +58,9 @@ workflows: only: master jobs: *workflow_jobs jobs: - node4: + node6: docker: - - image: 'node:4' + - image: 'node:6' user: node steps: &unit_tests_steps - checkout @@ -86,28 +82,14 @@ jobs: npm install environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: - name: Run unit tests. - command: npm test - - run: - name: Submit coverage data to codecov. - command: node_modules/.bin/codecov - when: always - node6: - docker: - - image: 'node:6' - user: node - steps: *unit_tests_steps + - run: npm test + - run: node_modules/.bin/codecov + node8: docker: - image: 'node:8' user: node steps: *unit_tests_steps - node9: - docker: - - image: 'node:9' - user: node - steps: *unit_tests_steps node10: docker: - image: 'node:10' @@ -202,9 +184,5 @@ jobs: user: node steps: - checkout - - run: - name: Set NPM authentication. - command: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' - - run: - name: Publish the module to npm. - command: npm publish + - run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' + - run: npm publish diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e859f4b53e0..c822488f4bf 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -5,7 +5,7 @@ "license": "Apache-2.0", "author": "Google Inc.", "engines": { - "node": ">=4.0.0" + "node": ">=6.0.0" }, "repository": "googleapis/nodejs-datastore", "main": "./src/index.js", From dc3a7630ba68e1bc0beab86732749384add399ca Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Mon, 9 Jul 2018 22:59:18 -0700 Subject: [PATCH 217/820] chore: really delete node4 and node9 (#131) --- handwritten/nodejs-datastore/.circleci/config.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 35881120c36..d5ed84a6c94 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -3,16 +3,12 @@ workflows: version: 2 tests: jobs: &workflow_jobs - - node4: + - node6: filters: &all_commits tags: only: /.*/ - - node6: - filters: *all_commits - node8: filters: *all_commits - - node9: - filters: *all_commits - node10: filters: *all_commits - lint: From 42448493a65c604509f3cc36e2fcfcf7d0f1a47a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 10 Jul 2018 08:06:31 -0700 Subject: [PATCH 218/820] chore(deps): lock file maintenance (#132) --- handwritten/nodejs-datastore/package-lock.json | 6 +++--- handwritten/nodejs-datastore/samples/package-lock.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index c30854c5b8f..6318d33a6d5 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -4754,9 +4754,9 @@ "dev": true }, "espurify": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", - "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", "requires": { "core-js": "^2.0.0" } diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index bce4abf969f..d4022f270cf 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -4198,9 +4198,9 @@ "dev": true }, "espurify": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.0.tgz", - "integrity": "sha512-jdkJG9jswjKCCDmEridNUuIQei9algr+o66ZZ19610ZoBsiWLRsQGNYS4HGez3Z/DsR0lhANGAqiwBUclPuNag==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", "requires": { "core-js": "^2.0.0" } From 1d5fd7271e15623590dc9d3555bc68fd6d406173 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 10 Jul 2018 09:40:23 -0700 Subject: [PATCH 219/820] chore(deps): lock file maintenance (#133) --- handwritten/nodejs-datastore/package-lock.json | 8 ++++---- handwritten/nodejs-datastore/samples/package-lock.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 6318d33a6d5..702d6ea7c6e 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -7598,12 +7598,12 @@ "dev": true }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "loud-rejection": { diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index d4022f270cf..1268248d1b1 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -6737,12 +6737,12 @@ "dev": true }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "loud-rejection": { From 40f7bcb9546dc6b3ad960ab8aa4ae78a2c12b05b Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 10 Jul 2018 14:54:06 -0700 Subject: [PATCH 220/820] chore(build): use `npm ci` instead of `npm install` (#134) --- handwritten/nodejs-datastore/synth.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 51edf6d0f54..a5b0f380926 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -19,9 +19,7 @@ library, excludes=['package.json', 'README.md', 'src/index.js']) -# # Node.js specific cleanup -# -subprocess.run(['npm', 'install']) +subprocess.run(['npm', 'ci']) subprocess.run(['npm', 'run', 'prettier']) subprocess.run(['npm', 'run', 'lint']) From 6f62a073d1b65d2c837d54660940a3398ae38346 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 16 Jul 2018 19:09:35 -0700 Subject: [PATCH 221/820] chore(deps): lock file maintenance (#138) --- .../nodejs-datastore/package-lock.json | 1308 +++++++++++++---- .../samples/package-lock.json | 1299 ++++++++++++---- 2 files changed, 1998 insertions(+), 609 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 702d6ea7c6e..c7e0d63b234 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -236,25 +236,25 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", - "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.1.tgz", + "integrity": "sha512-yIOn92sjHwpF/eORQWjv7QzQPcESSRCsZshdmeX40RGRlB0+HPODRDghZq0GiCqe6zpIYZvKmiKiYd3u52P/7Q==", "dev": true, "requires": { "ava": "0.25.0", "colors": "1.1.2", "fs-extra": "5.0.0", - "got": "8.2.0", + "got": "8.3.0", "handlebars": "4.0.11", "lodash": "4.17.5", - "nyc": "11.4.1", + "nyc": "11.7.2", "proxyquire": "1.8.0", "semver": "^5.5.0", - "sinon": "4.3.0", + "sinon": "6.0.1", "string": "3.3.3", - "supertest": "3.0.0", + "supertest": "3.1.0", "yargs": "11.0.0", - "yargs-parser": "9.0.2" + "yargs-parser": "10.1.0" }, "dependencies": { "ansi-regex": { @@ -263,6 +263,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -287,37 +293,37 @@ "dev": true }, "nyc": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", - "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.2.tgz", + "integrity": "sha512-gBt7qwsR1vryYfglVjQRx1D+AtMZW5NbUKxb+lZe8SN8KsheGCPGWEsSC9AGQG+r2+te1+10uPHUCahuqm1nGQ==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", + "convert-source-map": "^1.5.1", "debug-log": "^1.0.1", "default-require-extensions": "^1.0.0", "find-cache-dir": "^0.1.1", "find-up": "^2.1.0", "foreground-child": "^1.5.3", "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.1", - "istanbul-lib-report": "^1.1.2", - "istanbul-lib-source-maps": "^1.2.2", - "istanbul-reports": "^1.1.3", + "istanbul-lib-instrument": "^1.10.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.3", + "istanbul-reports": "^1.4.0", "md5-hex": "^1.2.0", - "merge-source-map": "^1.0.2", - "micromatch": "^2.3.11", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", "mkdirp": "^0.5.0", "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", + "rimraf": "^2.6.2", "signal-exit": "^3.0.1", "spawn-wrap": "^1.4.2", - "test-exclude": "^4.1.1", - "yargs": "^10.0.3", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", "yargs-parser": "^8.0.0" }, "dependencies": { @@ -360,20 +366,22 @@ "dev": true }, "arr-diff": { - "version": "2.0.0", + "version": "4.0.0", "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } + "dev": true }, "arr-flatten": { "version": "1.1.0", "bundled": true, "dev": true }, + "arr-union": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, "array-unique": { - "version": "0.2.1", + "version": "0.3.2", "bundled": true, "dev": true }, @@ -382,11 +390,21 @@ "bundled": true, "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, + "atob": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "bundled": true, @@ -398,7 +416,7 @@ } }, "babel-generator": { - "version": "6.26.0", + "version": "6.26.1", "bundled": true, "dev": true, "requires": { @@ -408,7 +426,7 @@ "detect-indent": "^4.0.0", "jsesc": "^1.3.0", "lodash": "^4.17.4", - "source-map": "^0.5.6", + "source-map": "^0.5.7", "trim-right": "^1.0.1" } }, @@ -478,8 +496,63 @@ "bundled": true, "dev": true }, + "base": { + "version": "0.11.2", + "bundled": true, + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { @@ -488,13 +561,30 @@ } }, "braces": { - "version": "1.8.5", + "version": "2.3.2", "bundled": true, "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "builtin-modules": { @@ -502,6 +592,22 @@ "bundled": true, "dev": true }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "caching-transform": { "version": "1.0.1", "bundled": true, @@ -540,6 +646,27 @@ "supports-color": "^2.0.0" } }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "cliui": { "version": "2.1.0", "bundled": true, @@ -564,11 +691,25 @@ "bundled": true, "dev": true }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, + "component-emitter": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -579,8 +720,13 @@ "bundled": true, "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "core-js": { - "version": "2.5.3", + "version": "2.5.6", "bundled": true, "dev": true }, @@ -611,6 +757,11 @@ "bundled": true, "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, "default-require-extensions": { "version": "1.0.0", "bundled": true, @@ -619,6 +770,48 @@ "strip-bom": "^2.0.0" } }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "detect-indent": { "version": "4.0.0", "bundled": true, @@ -672,44 +865,139 @@ } }, "expand-brackets": { - "version": "0.1.5", + "version": "2.1.4", "bundled": true, "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "expand-range": { - "version": "1.8.2", + "extend-shallow": { + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "fill-range": "^2.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, "extglob": { - "version": "0.3.2", + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, - "filename-regex": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, "fill-range": { - "version": "2.2.3", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "find-cache-dir": { @@ -735,21 +1023,21 @@ "bundled": true, "dev": true }, - "for-own": { - "version": "0.1.5", + "foreground-child": { + "version": "1.5.6", "bundled": true, "dev": true, "requires": { - "for-in": "^1.0.1" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, - "foreground-child": { - "version": "1.5.6", + "fragment-cache": { + "version": "0.2.1", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "map-cache": "^0.2.2" } }, "fs.realpath": { @@ -767,6 +1055,11 @@ "bundled": true, "dev": true }, + "get-value": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, "glob": { "version": "7.1.2", "bundled": true, @@ -780,23 +1073,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, "globals": { "version": "9.18.0", "bundled": true, @@ -841,8 +1117,37 @@ "bundled": true, "dev": true }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "hosted-git-info": { - "version": "2.5.0", + "version": "2.6.0", "bundled": true, "dev": true }, @@ -866,7 +1171,7 @@ "dev": true }, "invariant": { - "version": "2.2.2", + "version": "2.2.4", "bundled": true, "dev": true, "requires": { @@ -878,6 +1183,14 @@ "bundled": true, "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, "is-arrayish": { "version": "0.2.1", "bundled": true, @@ -896,17 +1209,29 @@ "builtin-modules": "^1.0.0" } }, - "is-dotfile": { - "version": "1.0.3", + "is-data-descriptor": { + "version": "0.1.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } }, - "is-equal-shallow": { - "version": "0.1.3", + "is-descriptor": { + "version": "0.1.6", "bundled": true, "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } } }, "is-extendable": { @@ -914,11 +1239,6 @@ "bundled": true, "dev": true }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "is-finite": { "version": "1.0.2", "bundled": true, @@ -928,39 +1248,41 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "kind-of": "^3.0.2" } }, - "is-glob": { - "version": "2.0.1", + "is-odd": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true, + "dev": true + } } }, - "is-number": { - "version": "2.1.0", + "is-plain-object": { + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "is-stream": { "version": "1.1.0", "bundled": true, @@ -971,6 +1293,11 @@ "bundled": true, "dev": true }, + "is-windows": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, "isarray": { "version": "1.0.0", "bundled": true, @@ -982,15 +1309,12 @@ "dev": true }, "isobject": { - "version": "2.1.0", + "version": "3.0.1", "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "dev": true }, "istanbul-lib-coverage": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true }, @@ -1003,7 +1327,7 @@ } }, "istanbul-lib-instrument": { - "version": "1.9.1", + "version": "1.10.1", "bundled": true, "dev": true, "requires": { @@ -1012,16 +1336,16 @@ "babel-traverse": "^6.18.0", "babel-types": "^6.18.0", "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.2.0", "semver": "^5.3.0" } }, "istanbul-lib-report": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "mkdirp": "^0.5.1", "path-parse": "^1.0.5", "supports-color": "^3.1.2" @@ -1038,12 +1362,12 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.2", + "version": "1.2.3", "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "mkdirp": "^0.5.1", "rimraf": "^2.6.1", "source-map": "^0.5.3" @@ -1060,7 +1384,7 @@ } }, "istanbul-reports": { - "version": "1.1.3", + "version": "1.4.0", "bundled": true, "dev": true, "requires": { @@ -1128,7 +1452,7 @@ } }, "lodash": { - "version": "4.17.4", + "version": "4.17.10", "bundled": true, "dev": true }, @@ -1146,7 +1470,7 @@ } }, "lru-cache": { - "version": "4.1.1", + "version": "4.1.3", "bundled": true, "dev": true, "requires": { @@ -1154,6 +1478,19 @@ "yallist": "^2.1.2" } }, + "map-cache": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, "md5-hex": { "version": "1.3.0", "bundled": true, @@ -1176,35 +1513,49 @@ } }, "merge-source-map": { - "version": "1.0.4", + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "source-map": "^0.5.6" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } } }, "micromatch": { - "version": "2.3.11", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, "mimic-fn": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, "dev": true }, @@ -1221,6 +1572,25 @@ "bundled": true, "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -1234,6 +1604,32 @@ "bundled": true, "dev": true }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "normalize-package-data": { "version": "2.4.0", "bundled": true, @@ -1245,14 +1641,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "bundled": true, @@ -1271,13 +1659,40 @@ "bundled": true, "dev": true }, - "object.omit": { - "version": "2.0.1", + "object-copy": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isobject": "^3.0.1" } }, "once": { @@ -1318,9 +1733,12 @@ "dev": true }, "p-limit": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "p-try": "^1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -1330,16 +1748,10 @@ "p-limit": "^1.1.0" } }, - "parse-glob": { - "version": "3.0.4", + "p-try": { + "version": "1.0.0", "bundled": true, - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } + "dev": true }, "parse-json": { "version": "2.2.0", @@ -1349,6 +1761,11 @@ "error-ex": "^1.2.0" } }, + "pascalcase": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "path-exists": { "version": "2.1.0", "bundled": true, @@ -1419,8 +1836,8 @@ } } }, - "preserve": { - "version": "0.2.0", + "posix-character-classes": { + "version": "0.1.1", "bundled": true, "dev": true }, @@ -1429,43 +1846,6 @@ "bundled": true, "dev": true }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "read-pkg": { "version": "1.1.0", "bundled": true, @@ -1501,19 +1881,15 @@ "bundled": true, "dev": true }, - "regex-cache": { - "version": "0.4.4", + "regex-not": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, "repeat-element": { "version": "1.1.2", "bundled": true, @@ -1547,6 +1923,16 @@ "bundled": true, "dev": true }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, + "dev": true + }, "right-align": { "version": "0.1.3", "bundled": true, @@ -1564,16 +1950,45 @@ "glob": "^7.0.5" } }, - "semver": { - "version": "5.4.1", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "bundled": true, @@ -1597,11 +2012,120 @@ "bundled": true, "dev": true }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, "source-map": { "version": "0.5.7", "bundled": true, "dev": true }, + "source-map-resolve": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -1616,23 +2140,60 @@ } }, "spdx-correct": { - "version": "1.0.2", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", + "spdx-exceptions": { + "version": "2.1.0", "bundled": true, "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", + "version": "3.0.0", "bundled": true, "dev": true }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "string-width": { "version": "2.1.1", "bundled": true, @@ -1647,11 +2208,6 @@ "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "strip-ansi": { "version": "4.0.0", "bundled": true, @@ -1689,12 +2245,12 @@ "dev": true }, "test-exclude": { - "version": "4.1.1", + "version": "4.2.1", "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", - "micromatch": "^2.3.11", + "micromatch": "^3.1.8", "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" @@ -1705,6 +2261,34 @@ "bundled": true, "dev": true }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "trim-right": { "version": "1.0.1", "bundled": true, @@ -1741,13 +2325,101 @@ "dev": true, "optional": true }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true, + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "validate-npm-package-license": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "which": { @@ -1783,6 +2455,14 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -1821,11 +2501,11 @@ "dev": true }, "yargs": { - "version": "10.0.3", + "version": "11.1.0", "bundled": true, "dev": true, "requires": { - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", "find-up": "^2.1.0", "get-caller-file": "^1.0.1", @@ -1836,35 +2516,49 @@ "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^8.0.0" + "yargs-parser": "^9.0.2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, "cliui": { - "version": "3.2.0", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" } } } }, "yargs-parser": { - "version": "8.0.0", + "version": "8.1.0", "bundled": true, "dev": true, "requires": { @@ -1903,18 +2597,18 @@ } }, "sinon": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", - "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", + "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", + "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } }, "string-width": { @@ -1954,6 +2648,17 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" + }, + "dependencies": { + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } } } } @@ -4446,9 +5151,9 @@ "dev": true }, "escodegen": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", - "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -4748,9 +5453,9 @@ } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "espurify": { @@ -5774,9 +6479,9 @@ } }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-port": { @@ -5964,9 +6669,9 @@ } }, "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", + "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", "dev": true, "requires": { "@sindresorhus/is": "^0.7.0", @@ -5979,7 +6684,7 @@ "isurl": "^1.0.0-alpha5", "lowercase-keys": "^1.0.0", "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", + "p-cancelable": "^0.4.0", "p-timeout": "^2.0.1", "pify": "^3.0.0", "safe-buffer": "^5.1.1", @@ -7895,9 +8600,9 @@ "dev": true }, "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, "minimatch": { @@ -10362,9 +11067,9 @@ "dev": true }, "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", "dev": true }, "p-finally": { @@ -11896,9 +12601,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "^1.2.0", @@ -11906,11 +12611,11 @@ "debug": "^3.1.0", "extend": "^3.0.0", "form-data": "^2.3.1", - "formidable": "^1.2.0", + "formidable": "^1.1.1", "methods": "^1.1.1", "mime": "^1.4.1", "qs": "^6.5.1", - "readable-stream": "^2.3.5" + "readable-stream": "^2.0.5" }, "dependencies": { "mime": { @@ -11952,13 +12657,13 @@ } }, "supertest": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", - "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.1.0.tgz", + "integrity": "sha512-O44AMnmJqx294uJQjfUmEyYOg7d9mylNFsMw/Wkz4evKd1njyPrtCN+U6ZIC7sKtfEVQhfTqFFijlXx8KP/Czw==", "dev": true, "requires": { "methods": "~1.1.2", - "superagent": "^3.0.0" + "superagent": "3.8.2" } }, "supports-color": { @@ -12500,12 +13205,9 @@ "dev": true }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "requires": { - "kind-of": "^6.0.2" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util-deprecate": { "version": "1.0.2", @@ -12719,9 +13421,9 @@ } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { "camelcase": "^4.1.0" diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 1268248d1b1..48702ec7520 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -260,25 +260,25 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.0.tgz", - "integrity": "sha512-c8dIGESnNkmM88duFxGHvMQP5QKPgp/sfJq0QhC6+gOcJC7/PKjqd0PkmgPPeIgVl6SXy5Zf/KLbxnJUVgNT1Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.1.tgz", + "integrity": "sha512-yIOn92sjHwpF/eORQWjv7QzQPcESSRCsZshdmeX40RGRlB0+HPODRDghZq0GiCqe6zpIYZvKmiKiYd3u52P/7Q==", "dev": true, "requires": { "ava": "0.25.0", "colors": "1.1.2", "fs-extra": "5.0.0", - "got": "8.2.0", + "got": "8.3.0", "handlebars": "4.0.11", "lodash": "4.17.5", - "nyc": "11.4.1", + "nyc": "11.7.2", "proxyquire": "1.8.0", "semver": "^5.5.0", - "sinon": "4.3.0", + "sinon": "6.0.1", "string": "3.3.3", - "supertest": "3.0.0", + "supertest": "3.1.0", "yargs": "11.0.0", - "yargs-parser": "9.0.2" + "yargs-parser": "10.1.0" }, "dependencies": { "ansi-regex": { @@ -336,37 +336,37 @@ "dev": true }, "nyc": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.4.1.tgz", - "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.2.tgz", + "integrity": "sha512-gBt7qwsR1vryYfglVjQRx1D+AtMZW5NbUKxb+lZe8SN8KsheGCPGWEsSC9AGQG+r2+te1+10uPHUCahuqm1nGQ==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", + "convert-source-map": "^1.5.1", "debug-log": "^1.0.1", "default-require-extensions": "^1.0.0", "find-cache-dir": "^0.1.1", "find-up": "^2.1.0", "foreground-child": "^1.5.3", "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.9.1", - "istanbul-lib-report": "^1.1.2", - "istanbul-lib-source-maps": "^1.2.2", - "istanbul-reports": "^1.1.3", + "istanbul-lib-instrument": "^1.10.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.3", + "istanbul-reports": "^1.4.0", "md5-hex": "^1.2.0", - "merge-source-map": "^1.0.2", - "micromatch": "^2.3.11", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", "mkdirp": "^0.5.0", "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", + "rimraf": "^2.6.2", "signal-exit": "^3.0.1", "spawn-wrap": "^1.4.2", - "test-exclude": "^4.1.1", - "yargs": "^10.0.3", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", "yargs-parser": "^8.0.0" }, "dependencies": { @@ -409,20 +409,22 @@ "dev": true }, "arr-diff": { - "version": "2.0.0", + "version": "4.0.0", "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } + "dev": true }, "arr-flatten": { "version": "1.1.0", "bundled": true, "dev": true }, + "arr-union": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, "array-unique": { - "version": "0.2.1", + "version": "0.3.2", "bundled": true, "dev": true }, @@ -431,11 +433,21 @@ "bundled": true, "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, + "atob": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "bundled": true, @@ -447,7 +459,7 @@ } }, "babel-generator": { - "version": "6.26.0", + "version": "6.26.1", "bundled": true, "dev": true, "requires": { @@ -457,7 +469,7 @@ "detect-indent": "^4.0.0", "jsesc": "^1.3.0", "lodash": "^4.17.4", - "source-map": "^0.5.6", + "source-map": "^0.5.7", "trim-right": "^1.0.1" } }, @@ -527,8 +539,63 @@ "bundled": true, "dev": true }, + "base": { + "version": "0.11.2", + "bundled": true, + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { @@ -537,13 +604,30 @@ } }, "braces": { - "version": "1.8.5", + "version": "2.3.2", "bundled": true, "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "builtin-modules": { @@ -551,6 +635,22 @@ "bundled": true, "dev": true }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "caching-transform": { "version": "1.0.1", "bundled": true, @@ -589,6 +689,27 @@ "supports-color": "^2.0.0" } }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "cliui": { "version": "2.1.0", "bundled": true, @@ -613,11 +734,25 @@ "bundled": true, "dev": true }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, + "component-emitter": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -628,8 +763,13 @@ "bundled": true, "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "core-js": { - "version": "2.5.3", + "version": "2.5.6", "bundled": true, "dev": true }, @@ -660,6 +800,11 @@ "bundled": true, "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, "default-require-extensions": { "version": "1.0.0", "bundled": true, @@ -668,6 +813,48 @@ "strip-bom": "^2.0.0" } }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "detect-indent": { "version": "4.0.0", "bundled": true, @@ -721,44 +908,139 @@ } }, "expand-brackets": { - "version": "0.1.5", + "version": "2.1.4", "bundled": true, "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "expand-range": { - "version": "1.8.2", + "extend-shallow": { + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "fill-range": "^2.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, "extglob": { - "version": "0.3.2", + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, - "filename-regex": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, "fill-range": { - "version": "2.2.3", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "find-cache-dir": { @@ -784,21 +1066,21 @@ "bundled": true, "dev": true }, - "for-own": { - "version": "0.1.5", + "foreground-child": { + "version": "1.5.6", "bundled": true, "dev": true, "requires": { - "for-in": "^1.0.1" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, - "foreground-child": { - "version": "1.5.6", + "fragment-cache": { + "version": "0.2.1", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "map-cache": "^0.2.2" } }, "fs.realpath": { @@ -816,6 +1098,11 @@ "bundled": true, "dev": true }, + "get-value": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, "glob": { "version": "7.1.2", "bundled": true, @@ -829,23 +1116,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, "globals": { "version": "9.18.0", "bundled": true, @@ -890,8 +1160,37 @@ "bundled": true, "dev": true }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "hosted-git-info": { - "version": "2.5.0", + "version": "2.6.0", "bundled": true, "dev": true }, @@ -915,7 +1214,7 @@ "dev": true }, "invariant": { - "version": "2.2.2", + "version": "2.2.4", "bundled": true, "dev": true, "requires": { @@ -927,6 +1226,14 @@ "bundled": true, "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, "is-arrayish": { "version": "0.2.1", "bundled": true, @@ -945,17 +1252,29 @@ "builtin-modules": "^1.0.0" } }, - "is-dotfile": { - "version": "1.0.3", + "is-data-descriptor": { + "version": "0.1.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } }, - "is-equal-shallow": { - "version": "0.1.3", + "is-descriptor": { + "version": "0.1.6", "bundled": true, "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } } }, "is-extendable": { @@ -963,11 +1282,6 @@ "bundled": true, "dev": true }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "is-finite": { "version": "1.0.2", "bundled": true, @@ -977,39 +1291,41 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "kind-of": "^3.0.2" } }, - "is-glob": { - "version": "2.0.1", + "is-odd": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true, + "dev": true + } } }, - "is-number": { - "version": "2.1.0", + "is-plain-object": { + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "kind-of": "^3.0.2" + "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "is-stream": { "version": "1.1.0", "bundled": true, @@ -1020,6 +1336,11 @@ "bundled": true, "dev": true }, + "is-windows": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, "isarray": { "version": "1.0.0", "bundled": true, @@ -1031,15 +1352,12 @@ "dev": true }, "isobject": { - "version": "2.1.0", + "version": "3.0.1", "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "dev": true }, "istanbul-lib-coverage": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true }, @@ -1052,7 +1370,7 @@ } }, "istanbul-lib-instrument": { - "version": "1.9.1", + "version": "1.10.1", "bundled": true, "dev": true, "requires": { @@ -1061,16 +1379,16 @@ "babel-traverse": "^6.18.0", "babel-types": "^6.18.0", "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.2.0", "semver": "^5.3.0" } }, "istanbul-lib-report": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "mkdirp": "^0.5.1", "path-parse": "^1.0.5", "supports-color": "^3.1.2" @@ -1087,12 +1405,12 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.2", + "version": "1.2.3", "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-coverage": "^1.1.2", "mkdirp": "^0.5.1", "rimraf": "^2.6.1", "source-map": "^0.5.3" @@ -1109,7 +1427,7 @@ } }, "istanbul-reports": { - "version": "1.1.3", + "version": "1.4.0", "bundled": true, "dev": true, "requires": { @@ -1177,7 +1495,7 @@ } }, "lodash": { - "version": "4.17.4", + "version": "4.17.10", "bundled": true, "dev": true }, @@ -1195,7 +1513,7 @@ } }, "lru-cache": { - "version": "4.1.1", + "version": "4.1.3", "bundled": true, "dev": true, "requires": { @@ -1203,6 +1521,19 @@ "yallist": "^2.1.2" } }, + "map-cache": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, "md5-hex": { "version": "1.3.0", "bundled": true, @@ -1225,35 +1556,49 @@ } }, "merge-source-map": { - "version": "1.0.4", + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "source-map": "^0.5.6" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } } }, "micromatch": { - "version": "2.3.11", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "version": "3.1.10", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } } }, "mimic-fn": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, "dev": true }, @@ -1270,6 +1615,25 @@ "bundled": true, "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -1283,6 +1647,32 @@ "bundled": true, "dev": true }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "normalize-package-data": { "version": "2.4.0", "bundled": true, @@ -1294,14 +1684,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "bundled": true, @@ -1320,13 +1702,40 @@ "bundled": true, "dev": true }, - "object.omit": { - "version": "2.0.1", + "object-copy": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "isobject": "^3.0.1" } }, "once": { @@ -1367,9 +1776,12 @@ "dev": true }, "p-limit": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "p-try": "^1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -1379,16 +1791,10 @@ "p-limit": "^1.1.0" } }, - "parse-glob": { - "version": "3.0.4", + "p-try": { + "version": "1.0.0", "bundled": true, - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } + "dev": true }, "parse-json": { "version": "2.2.0", @@ -1398,6 +1804,11 @@ "error-ex": "^1.2.0" } }, + "pascalcase": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, "path-exists": { "version": "2.1.0", "bundled": true, @@ -1468,8 +1879,8 @@ } } }, - "preserve": { - "version": "0.2.0", + "posix-character-classes": { + "version": "0.1.1", "bundled": true, "dev": true }, @@ -1478,43 +1889,6 @@ "bundled": true, "dev": true }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "read-pkg": { "version": "1.1.0", "bundled": true, @@ -1550,19 +1924,15 @@ "bundled": true, "dev": true }, - "regex-cache": { - "version": "0.4.4", + "regex-not": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, "repeat-element": { "version": "1.1.2", "bundled": true, @@ -1596,6 +1966,16 @@ "bundled": true, "dev": true }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, + "dev": true + }, "right-align": { "version": "0.1.3", "bundled": true, @@ -1613,16 +1993,45 @@ "glob": "^7.0.5" } }, - "semver": { - "version": "5.4.1", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "bundled": true, @@ -1646,11 +2055,120 @@ "bundled": true, "dev": true }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, "source-map": { "version": "0.5.7", "bundled": true, "dev": true }, + "source-map-resolve": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -1665,23 +2183,60 @@ } }, "spdx-correct": { - "version": "1.0.2", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", + "spdx-exceptions": { + "version": "2.1.0", "bundled": true, "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", + "version": "3.0.0", "bundled": true, "dev": true }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "string-width": { "version": "2.1.1", "bundled": true, @@ -1696,11 +2251,6 @@ "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "strip-ansi": { "version": "4.0.0", "bundled": true, @@ -1738,12 +2288,12 @@ "dev": true }, "test-exclude": { - "version": "4.1.1", + "version": "4.2.1", "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", - "micromatch": "^2.3.11", + "micromatch": "^3.1.8", "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" @@ -1754,6 +2304,34 @@ "bundled": true, "dev": true }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "trim-right": { "version": "1.0.1", "bundled": true, @@ -1790,13 +2368,101 @@ "dev": true, "optional": true }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true, + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, "validate-npm-package-license": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "which": { @@ -1832,6 +2498,14 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -1870,11 +2544,11 @@ "dev": true }, "yargs": { - "version": "10.0.3", + "version": "11.1.0", "bundled": true, "dev": true, "requires": { - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", "find-up": "^2.1.0", "get-caller-file": "^1.0.1", @@ -1885,35 +2559,49 @@ "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^8.0.0" + "yargs-parser": "^9.0.2" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, "cliui": { - "version": "3.2.0", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" } } } }, "yargs-parser": { - "version": "8.0.0", + "version": "8.1.0", "bundled": true, "dev": true, "requires": { @@ -1976,18 +2664,18 @@ } }, "sinon": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.3.0.tgz", - "integrity": "sha512-pmf05hFgEZUS52AGJcsVjOjqAyJW2yo14cOwVYvzCyw7+inv06YXkLyW75WG6X6p951lzkoKh51L2sNbR9CDvw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", + "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", + "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" } }, "string-width": { @@ -2027,15 +2715,17 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" + }, + "dependencies": { + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } } } } @@ -4192,9 +4882,9 @@ } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "espurify": { @@ -5137,9 +5827,9 @@ } }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, "get-port": { "version": "3.2.0", @@ -5362,9 +6052,9 @@ } }, "got": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.2.0.tgz", - "integrity": "sha512-giadqJpXIwjY+ZsuWys8p2yjZGhOHiU4hiJHjS/oeCxw1u8vANQz3zPlrxW2Zw/siCXsSMI3hvzWGcnFyujyAg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", + "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", "dev": true, "requires": { "@sindresorhus/is": "^0.7.0", @@ -5377,7 +6067,7 @@ "isurl": "^1.0.0-alpha5", "lowercase-keys": "^1.0.0", "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", + "p-cancelable": "^0.4.0", "p-timeout": "^2.0.1", "pify": "^3.0.0", "safe-buffer": "^5.1.1", @@ -7017,9 +7707,9 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, "minimatch": { @@ -9391,9 +10081,9 @@ "dev": true }, "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", "dev": true }, "p-finally": { @@ -10873,9 +11563,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { "component-emitter": "^1.2.0", @@ -10883,11 +11573,11 @@ "debug": "^3.1.0", "extend": "^3.0.0", "form-data": "^2.3.1", - "formidable": "^1.2.0", + "formidable": "^1.1.1", "methods": "^1.1.1", "mime": "^1.4.1", "qs": "^6.5.1", - "readable-stream": "^2.3.5" + "readable-stream": "^2.0.5" }, "dependencies": { "mime": { @@ -10929,13 +11619,13 @@ } }, "supertest": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", - "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.1.0.tgz", + "integrity": "sha512-O44AMnmJqx294uJQjfUmEyYOg7d9mylNFsMw/Wkz4evKd1njyPrtCN+U6ZIC7sKtfEVQhfTqFFijlXx8KP/Czw==", "dev": true, "requires": { "methods": "~1.1.2", - "superagent": "^3.0.0" + "superagent": "3.8.2" } }, "supports-color": { @@ -11319,12 +12009,9 @@ "dev": true }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "requires": { - "kind-of": "^6.0.2" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util-deprecate": { "version": "1.0.2", From e8e40c27d381291a1eb9e21b359d5a9875c31ec6 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 18 Jul 2018 00:58:11 -0700 Subject: [PATCH 222/820] test: use strictEqual in tests (#140) --- handwritten/nodejs-datastore/test/gapic-v1.js | 14 ++-- handwritten/nodejs-datastore/test/query.js | 66 +++++++++---------- handwritten/nodejs-datastore/test/request.js | 8 +-- .../nodejs-datastore/test/transaction.js | 26 ++++---- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 0ac522f8962..0117b9c2727 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -73,7 +73,7 @@ describe('DatastoreClient', () => { client.lookup(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -134,7 +134,7 @@ describe('DatastoreClient', () => { client.runQuery(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -194,7 +194,7 @@ describe('DatastoreClient', () => { client.beginTransaction(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -258,7 +258,7 @@ describe('DatastoreClient', () => { client.commit(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -319,7 +319,7 @@ describe('DatastoreClient', () => { client.rollback(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -380,7 +380,7 @@ describe('DatastoreClient', () => { client.allocateIds(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); @@ -441,7 +441,7 @@ describe('DatastoreClient', () => { client.reserveIds(request, (err, response) => { assert(err instanceof Error); - assert.equal(err.code, FAKE_STATUS_CODE); + assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js index 9401f28632b..89965f5e1cc 100644 --- a/handwritten/nodejs-datastore/test/query.js +++ b/handwritten/nodejs-datastore/test/query.js @@ -62,9 +62,9 @@ describe('Query', function() { var query = new Query(['kind1']).filter('date', '<=', now); var filter = query.filters[0]; - assert.equal(filter.name, 'date'); - assert.equal(filter.op, '<='); - assert.equal(filter.val, now); + assert.strictEqual(filter.name, 'date'); + assert.strictEqual(filter.op, '<='); + assert.strictEqual(filter.val, now); }); it('should recognize all the different operators', function() { @@ -76,37 +76,37 @@ describe('Query', function() { .filter('size', '<', 10) .filter('something', '>=', 11); - assert.equal(query.filters[0].name, 'date'); - assert.equal(query.filters[0].op, '<='); + assert.strictEqual(query.filters[0].name, 'date'); + assert.strictEqual(query.filters[0].op, '<='); assert.strictEqual(query.filters[0].val, now); - assert.equal(query.filters[1].name, 'name'); - assert.equal(query.filters[1].op, '='); - assert.equal(query.filters[1].val, 'Title'); + assert.strictEqual(query.filters[1].name, 'name'); + assert.strictEqual(query.filters[1].op, '='); + assert.strictEqual(query.filters[1].val, 'Title'); - assert.equal(query.filters[2].name, 'count'); - assert.equal(query.filters[2].op, '>'); + assert.strictEqual(query.filters[2].name, 'count'); + assert.strictEqual(query.filters[2].op, '>'); assert.strictEqual(query.filters[2].val, 20); - assert.equal(query.filters[3].name, 'size'); - assert.equal(query.filters[3].op, '<'); + assert.strictEqual(query.filters[3].name, 'size'); + assert.strictEqual(query.filters[3].op, '<'); assert.strictEqual(query.filters[3].val, 10); - assert.equal(query.filters[4].name, 'something'); - assert.equal(query.filters[4].op, '>='); + assert.strictEqual(query.filters[4].name, 'something'); + assert.strictEqual(query.filters[4].op, '>='); assert.strictEqual(query.filters[4].val, 11); }); it('should remove any whitespace surrounding the filter name', function() { var query = new Query(['kind1']).filter(' count ', '>', 123); - assert.equal(query.filters[0].name, 'count'); + assert.strictEqual(query.filters[0].name, 'count'); }); it('should remove any whitespace surrounding the operator', function() { var query = new Query(['kind1']).filter('count', ' < ', 123); - assert.equal(query.filters[0].op, '<'); + assert.strictEqual(query.filters[0].op, '<'); }); it('should return the query instance', function() { @@ -120,9 +120,9 @@ describe('Query', function() { var query = new Query(['kind1']).filter('name', 'Stephen'); var filter = query.filters[0]; - assert.equal(filter.name, 'name'); - assert.equal(filter.op, '='); - assert.equal(filter.val, 'Stephen'); + assert.strictEqual(filter.name, 'name'); + assert.strictEqual(filter.op, '='); + assert.strictEqual(filter.val, 'Stephen'); }); }); @@ -130,8 +130,8 @@ describe('Query', function() { it('should support ancestor filtering', function() { var query = new Query(['kind1']).hasAncestor(['kind2', 123]); - assert.equal(query.filters[0].name, '__key__'); - assert.equal(query.filters[0].op, 'HAS_ANCESTOR'); + assert.strictEqual(query.filters[0].name, '__key__'); + assert.strictEqual(query.filters[0].op, 'HAS_ANCESTOR'); assert.deepEqual(query.filters[0].val, ['kind2', 123]); }); @@ -147,22 +147,22 @@ describe('Query', function() { it('should default ordering to ascending', function() { var query = new Query(['kind1']).order('name'); - assert.equal(query.orders[0].name, 'name'); - assert.equal(query.orders[0].sign, '+'); + assert.strictEqual(query.orders[0].name, 'name'); + assert.strictEqual(query.orders[0].sign, '+'); }); it('should support ascending order', function() { var query = new Query(['kind1']).order('name'); - assert.equal(query.orders[0].name, 'name'); - assert.equal(query.orders[0].sign, '+'); + assert.strictEqual(query.orders[0].name, 'name'); + assert.strictEqual(query.orders[0].sign, '+'); }); it('should support descending order', function() { var query = new Query(['kind1']).order('count', {descending: true}); - assert.equal(query.orders[0].name, 'count'); - assert.equal(query.orders[0].sign, '-'); + assert.strictEqual(query.orders[0].name, 'count'); + assert.strictEqual(query.orders[0].sign, '-'); }); it('should support both ascending and descending', function() { @@ -170,10 +170,10 @@ describe('Query', function() { .order('name') .order('count', {descending: true}); - assert.equal(query.orders[0].name, 'name'); - assert.equal(query.orders[0].sign, '+'); - assert.equal(query.orders[1].name, 'count'); - assert.equal(query.orders[1].sign, '-'); + assert.strictEqual(query.orders[0].name, 'name'); + assert.strictEqual(query.orders[0].sign, '+'); + assert.strictEqual(query.orders[1].name, 'count'); + assert.strictEqual(query.orders[1].sign, '-'); }); it('should return the query instance', function() { @@ -230,7 +230,7 @@ describe('Query', function() { it('should capture the starting cursor value', function() { var query = new Query(['kind1']).start('X'); - assert.equal(query.startVal, 'X'); + assert.strictEqual(query.startVal, 'X'); }); it('should return the query instance', function() { @@ -245,7 +245,7 @@ describe('Query', function() { it('should capture the ending cursor value', function() { var query = new Query(['kind1']).end('Z'); - assert.equal(query.endVal, 'Z'); + assert.strictEqual(query.endVal, 'Z'); }); it('should return the query instance', function() { diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index e36666ffb59..8195f081746 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -574,7 +574,7 @@ describe('Request', function() { it('should multi delete by keys', function(done) { request.request_ = function(config, callback) { - assert.equal(config.reqOpts.mutations.length, 2); + assert.strictEqual(config.reqOpts.mutations.length, 2); callback(); }; request.delete([key, key], done); @@ -1285,7 +1285,7 @@ describe('Request', function() { it('should save with specific method', function(done) { request.request_ = function(config, callback) { - assert.equal(config.reqOpts.mutations.length, 3); + assert.strictEqual(config.reqOpts.mutations.length, 3); assert(is.object(config.reqOpts.mutations[0].insert)); assert(is.object(config.reqOpts.mutations[1].update)); assert(is.object(config.reqOpts.mutations[2].upsert)); @@ -1481,8 +1481,8 @@ describe('Request', function() { data: [{name: 'name', value: 'value'}], }); - assert.equal(typeof request.requestCallbacks_[0], 'function'); - assert.equal(typeof request.requests_[0], 'object'); + assert.strictEqual(typeof request.requestCallbacks_[0], 'function'); + assert.strictEqual(typeof request.requests_[0], 'object'); }); }); }); diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index 8c5e309614a..ea97caf43d7 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -158,8 +158,8 @@ describe('Transaction', function() { it('should commit', function(done) { transaction.request_ = function(config) { - assert.equal(config.client, 'DatastoreClient'); - assert.equal(config.method, 'commit'); + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); assert.strictEqual(config.gaxOptions, undefined); done(); }; @@ -255,10 +255,10 @@ describe('Transaction', function() { transaction.commit(); - assert.equal(deleteCalled, 1); - assert.equal(saveCalled, 1); + assert.strictEqual(deleteCalled, 1); + assert.strictEqual(saveCalled, 1); - assert.equal(args.length, 2); + assert.strictEqual(args.length, 2); // Save arguments must come first. assert.deepEqual(args, [[saveArg1, saveArg2], [deleteArg1, deleteArg2]]); @@ -282,8 +282,8 @@ describe('Transaction', function() { transaction.request_ = util.noop; transaction.commit(); - assert.equal(deleteCalled, 0); - assert.equal(saveCalled, 1); + assert.strictEqual(deleteCalled, 0); + assert.strictEqual(saveCalled, 1); }); it('should not squash key-incomplete mutations', function(done) { @@ -373,10 +373,10 @@ describe('Transaction', function() { transaction.delete(keys); - assert.equal(transaction.modifiedEntities_.length, keys.length); + assert.strictEqual(transaction.modifiedEntities_.length, keys.length); transaction.modifiedEntities_.forEach(function(queuedEntity) { - assert.equal(queuedEntity.method, 'delete'); + assert.strictEqual(queuedEntity.method, 'delete'); assert(keys.indexOf(queuedEntity.entity.key) > -1); assert.deepEqual(queuedEntity.args, [queuedEntity.entity.key]); }); @@ -391,7 +391,7 @@ describe('Transaction', function() { it('should rollback', function(done) { transaction.request_ = function(config) { assert.strictEqual(config.client, 'DatastoreClient'); - assert.equal(config.method, 'rollback'); + assert.strictEqual(config.method, 'rollback'); assert.strictEqual(config.gaxOptions, undefined); done(); }; @@ -590,7 +590,7 @@ describe('Transaction', function() { transaction.run(function(err) { assert.ifError(err); - assert.equal(transaction.id, TRANSACTION_ID); + assert.strictEqual(transaction.id, TRANSACTION_ID); done(); }); }); @@ -616,10 +616,10 @@ describe('Transaction', function() { transaction.save(entities); - assert.equal(transaction.modifiedEntities_.length, entities.length); + assert.strictEqual(transaction.modifiedEntities_.length, entities.length); transaction.modifiedEntities_.forEach(function(queuedEntity) { - assert.equal(queuedEntity.method, 'save'); + assert.strictEqual(queuedEntity.method, 'save'); var match = entities.filter(function(ent) { return ent.key === queuedEntity.entity.key; From 856c101b79f191c5d93d25e198c9fbe0f2c7b64d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Wed, 18 Jul 2018 11:19:42 -0700 Subject: [PATCH 223/820] chore(deps): update dependency eslint-plugin-node to v7 (#139) --- .../nodejs-datastore/package-lock.json | 79 +++++++++++++++---- handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 64 insertions(+), 17 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index c7e0d63b234..a72aeafe22b 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -331,6 +331,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1459,7 +1460,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -2886,6 +2888,7 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2897,6 +2900,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5314,18 +5318,44 @@ } } }, + "eslint-plugin-es": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz", + "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==", + "dev": true, + "requires": { + "eslint-utils": "^1.3.0", + "regexpp": "^2.0.0" + }, + "dependencies": { + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + } + } + }, "eslint-plugin-node": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", - "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", "dev": true, "requires": { - "ignore": "^3.3.6", + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "^5.4.1" + "resolve": "^1.8.1", + "semver": "^5.5.0" }, "dependencies": { + "ignore": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.2.tgz", + "integrity": "sha512-uoxnT7PYpyEnsja+yX+7v49B7LXxmzDJ2JALqHH3oEGzpM2U1IGcbfnOr8Dt57z3B/UWs7/iAgPFbmye8m4I0g==", + "dev": true + }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -5962,12 +5992,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5982,17 +6014,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6109,7 +6144,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6121,6 +6157,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6135,6 +6172,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6142,12 +6180,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6166,6 +6206,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6246,7 +6287,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6258,6 +6300,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6379,6 +6422,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -8300,7 +8344,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.4.0", @@ -8873,6 +8918,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -9815,7 +9861,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "lru-cache": { "version": "4.1.3", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c822488f4bf..4f0c38f4973 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -87,7 +87,7 @@ "deep-strict-equal": "^0.2.0", "eslint": "^5.0.0", "eslint-config-prettier": "^2.9.0", - "eslint-plugin-node": "^6.0.1", + "eslint-plugin-node": "^7.0.0", "eslint-plugin-prettier": "^2.6.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", From b345fd08720aec7699f645450da7c278b6a80954 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 24 Jul 2018 10:04:20 -0700 Subject: [PATCH 224/820] chore(deps): lock file maintenance (#142) --- .../nodejs-datastore/package-lock.json | 114 +++++++----------- .../samples/package-lock.json | 59 ++++----- 2 files changed, 72 insertions(+), 101 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index a72aeafe22b..5915ccf6cae 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -236,9 +236,9 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.1.tgz", - "integrity": "sha512-yIOn92sjHwpF/eORQWjv7QzQPcESSRCsZshdmeX40RGRlB0+HPODRDghZq0GiCqe6zpIYZvKmiKiYd3u52P/7Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.2.tgz", + "integrity": "sha512-Zah0wZcVifSpKIy5ulTFyGpHYAA8h/biYy8X7J2UvaXga5XlyruKrXo2K1VmBxB9MDPXa0Duz8M003pe2Ras3w==", "dev": true, "requires": { "ava": "0.25.0", @@ -331,7 +331,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1460,8 +1459,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -2822,9 +2820,9 @@ } }, "@types/long": { - "version": "3.0.32", - "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", - "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { "version": "10.5.2", @@ -2888,7 +2886,6 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2900,7 +2897,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5195,9 +5191,9 @@ } }, "eslint": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.1.0.tgz", - "integrity": "sha512-DyH6JsoA1KzA5+OSWFjg56DFJT+sDLO0yokaPZ9qY0UEmYrPA1gEX/G1MnVkmRDsksG4H1foIVz2ZXXM3hHYvw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.2.0.tgz", + "integrity": "sha512-zlggW1qp7/TBjwLfouRoY7eWXrXwJZFqCdIxxh0/LVB/QuuKuIMkzyUZEcDo6LBadsry5JcEMxIqd3H/66CXVg==", "dev": true, "requires": { "ajv": "^6.5.0", @@ -5216,7 +5212,7 @@ "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", "globals": "^11.7.0", - "ignore": "^3.3.3", + "ignore": "^4.0.2", "imurmurhash": "^0.1.4", "inquirer": "^5.2.0", "is-resolvable": "^1.1.0", @@ -5284,6 +5280,12 @@ "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true }, + "ignore": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.2.tgz", + "integrity": "sha512-uoxnT7PYpyEnsja+yX+7v49B7LXxmzDJ2JALqHH3oEGzpM2U1IGcbfnOr8Dt57z3B/UWs7/iAgPFbmye8m4I0g==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5642,9 +5644,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -5992,14 +5994,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6014,20 +6014,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6144,8 +6141,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6157,7 +6153,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6172,7 +6167,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6180,14 +6174,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6206,7 +6198,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6287,8 +6278,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6300,7 +6290,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6422,7 +6411,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -8344,8 +8332,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.4.0", @@ -8626,16 +8613,16 @@ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.35.0" } }, "mimic-fn": { @@ -8918,7 +8905,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -9861,8 +9847,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "lru-cache": { "version": "4.1.3", @@ -11602,9 +11587,9 @@ "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" }, "protobufjs": { - "version": "6.8.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", - "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -11616,16 +11601,9 @@ "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", - "@types/long": "^3.0.32", - "@types/node": "^8.9.4", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.21.tgz", - "integrity": "sha512-87XkD9qDXm8fIax+5y7drx84cXsu34ZZqfB7Cial3Q/2lxSoJ/+DRaWckkCbxP41wFSIrrb939VhzaNxj4eY1w==" - } } }, "proxyquire": { @@ -12230,17 +12208,17 @@ "dev": true }, "sinon": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.3.tgz", - "integrity": "sha512-yeTza8xIZZdiXntCHJAzKll/sSYE+DuJOS8hiSapzaLqdW8eCNVVC9je9SZYYTkPm2bLts9x6UYxwuMAVVrM6Q==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.4.tgz", + "integrity": "sha512-NFEts+4D4jp2sBjL94fQpZk5o73kzn/g58+I9Dp15i9vsnT4Lk1UEyUf2jACODWLG6Pz/llF0sArYUw47Aarmg==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", "@sinonjs/samsam": "^2.0.0", "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", + "lolex": "^2.7.1", + "nise": "^1.4.2", "supports-color": "^5.4.0", "type-detect": "^4.0.8" } diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 48702ec7520..3407b189315 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -260,9 +260,9 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.1.tgz", - "integrity": "sha512-yIOn92sjHwpF/eORQWjv7QzQPcESSRCsZshdmeX40RGRlB0+HPODRDghZq0GiCqe6zpIYZvKmiKiYd3u52P/7Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.2.tgz", + "integrity": "sha512-Zah0wZcVifSpKIy5ulTFyGpHYAA8h/biYy8X7J2UvaXga5XlyruKrXo2K1VmBxB9MDPXa0Duz8M003pe2Ras3w==", "dev": true, "requires": { "ava": "0.25.0", @@ -2885,9 +2885,9 @@ } }, "@types/long": { - "version": "3.0.32", - "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", - "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { "version": "10.5.2", @@ -5012,9 +5012,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -7689,16 +7689,16 @@ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.35.0" } }, "mimic-fn": { @@ -10606,9 +10606,9 @@ "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" }, "protobufjs": { - "version": "6.8.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.6.tgz", - "integrity": "sha512-eH2OTP9s55vojr3b7NBaF9i4WhWPkv/nq55nznWNp/FomKrLViprUcqnBjHph2tFQ+7KciGPTPsVWGz0SOhL0Q==", + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -10620,16 +10620,9 @@ "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", - "@types/long": "^3.0.32", - "@types/node": "^8.9.4", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.21.tgz", - "integrity": "sha512-87XkD9qDXm8fIax+5y7drx84cXsu34ZZqfB7Cial3Q/2lxSoJ/+DRaWckkCbxP41wFSIrrb939VhzaNxj4eY1w==" - } } }, "proxyquire": { @@ -11170,16 +11163,16 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sinon": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.3.tgz", - "integrity": "sha512-yeTza8xIZZdiXntCHJAzKll/sSYE+DuJOS8hiSapzaLqdW8eCNVVC9je9SZYYTkPm2bLts9x6UYxwuMAVVrM6Q==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.4.tgz", + "integrity": "sha512-NFEts+4D4jp2sBjL94fQpZk5o73kzn/g58+I9Dp15i9vsnT4Lk1UEyUf2jACODWLG6Pz/llF0sArYUw47Aarmg==", "requires": { "@sinonjs/formatio": "^2.0.0", "@sinonjs/samsam": "^2.0.0", "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", + "lolex": "^2.7.1", + "nise": "^1.4.2", "supports-color": "^5.4.0", "type-detect": "^4.0.8" } From 225db0b67d4a64b5fcdd903665b5b71a22ef36e1 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 25 Jul 2018 21:18:09 -0700 Subject: [PATCH 225/820] chore: please eslint (#146) --- handwritten/nodejs-datastore/.gitignore | 3 +- .../nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/src/entity.js | 4 +- handwritten/nodejs-datastore/src/request.js | 2 +- .../nodejs-datastore/system-test/datastore.js | 28 +++---- handwritten/nodejs-datastore/test/entity.js | 69 +++++++++-------- handwritten/nodejs-datastore/test/index.js | 10 +-- handwritten/nodejs-datastore/test/query.js | 10 +-- handwritten/nodejs-datastore/test/request.js | 74 ++++++++++--------- .../nodejs-datastore/test/transaction.js | 45 ++++++----- 10 files changed, 135 insertions(+), 112 deletions(-) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 082cf01ed78..9f619025d84 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -10,4 +10,5 @@ system-test/*key.json *.lock .DS_Store google-cloud-logging-winston-*.tgz -google-cloud-logging-bunyan-*.tgz \ No newline at end of file +google-cloud-logging-bunyan-*.tgz +.vscode diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 75f8d59d05f..759e5dab9bf 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -6,7 +6,7 @@ "author": "Google Inc.", "repository": "googleapis/nodejs-datastore", "engines": { - "node": ">=6" + "node": ">=8" }, "scripts": { "test": "npm run cover", diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 28c9033c626..1c5ba6b69c3 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -246,7 +246,7 @@ entity.isDsKey = isDsKey; * // 'Hi' * * decodeValueProto({ - * blobValue: new Buffer('68656c6c6f') + * blobValue: Buffer.from('68656c6c6f') * }); * // */ @@ -260,7 +260,7 @@ function decodeValueProto(valueProto) { } case 'blobValue': { - return new Buffer(value, 'base64'); + return Buffer.from(value, 'base64'); } case 'nullValue': { diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 3bc98fac5e1..e9ff0dc7cc9 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -847,7 +847,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * numDonutsServed: 45, * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), * isStartup: true, - * donutEmoji: new Buffer('\uD83C\uDF69'), + * donutEmoji: Buffer.from('\uD83C\uDF69'), * keywords: [ * 'donut', * 'coffee', diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 080b613c0a7..19f34dda438 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -145,8 +145,8 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, data); - assert.deepEqual(entity[datastore.KEY], postKey); + assert.deepStrictEqual(entity, data); + assert.deepStrictEqual(entity[datastore.KEY], postKey); datastore.delete(postKey, done); }); @@ -163,8 +163,8 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, post); - assert.deepEqual(entity[datastore.KEY], postKey); + assert.deepStrictEqual(entity, post); + assert.deepStrictEqual(entity[datastore.KEY], postKey); datastore.delete(postKey, done); }); @@ -180,7 +180,7 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, post); + assert.deepStrictEqual(entity, post); datastore.delete(postKey, done); }); @@ -190,7 +190,7 @@ describe('Datastore', function() { it('should save/get/delete a buffer', function(done) { var postKey = datastore.key(['Post']); var data = { - buf: new Buffer('010100000000000000000059400000000000006940', 'hex'), + buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), }; datastore.save({key: postKey, data: data}, function(err) { @@ -202,7 +202,7 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, data); + assert.deepStrictEqual(entity, data); datastore.delete(datastore.key(['Post', assignedId]), done); }); @@ -221,7 +221,7 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, post); + assert.deepStrictEqual(entity, post); datastore.delete(postKey, done); }); @@ -300,7 +300,7 @@ describe('Datastore', function() { datastore.get(postKey, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, post); + assert.deepStrictEqual(entity, post); datastore.delete(postKey, done); }); @@ -403,7 +403,7 @@ describe('Datastore', function() { assert.ifError(err); assert.strictEqual(results[0].fullName, 'Full name'); - assert.deepEqual(results[0].linkedTo, personKey); + assert.deepStrictEqual(results[0].linkedTo, personKey); datastore.delete(personKey, done); }); @@ -483,7 +483,7 @@ describe('Datastore', function() { datastore.get(key, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity.location, geoPointValue); + assert.deepStrictEqual(entity.location, geoPointValue); done(); }); } @@ -728,12 +728,12 @@ describe('Datastore', function() { datastore.runQuery(q, function(err, entities) { assert.ifError(err); - assert.deepEqual(entities[0], { + assert.deepStrictEqual(entities[0], { name: 'Arya', family: 'Stark', }); - assert.deepEqual(entities[8], { + assert.deepStrictEqual(entities[8], { name: 'Sansa', family: 'Stark', }); @@ -846,7 +846,7 @@ describe('Datastore', function() { datastore.get(key, function(err, entity) { assert.ifError(err); - assert.deepEqual(entity, obj); + assert.deepStrictEqual(entity, obj); done(); }); }); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 8c736d2d213..b8dfa25d187 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -158,17 +158,17 @@ describe('entity', function() { it('should not modify input path', function() { var inputPath = ['ParentKind', 1, 'Kind', 1]; new entity.Key({path: inputPath}); - assert.deepEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); + assert.deepStrictEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); }); it('should always compute the correct path', function() { var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); - assert.deepEqual(key.path, ['ParentKind', 1, 'Kind', 1]); + assert.deepStrictEqual(key.path, ['ParentKind', 1, 'Kind', 1]); key.parent.kind = 'GrandParentKind'; key.kind = 'ParentKind'; - assert.deepEqual(key.path, ['GrandParentKind', 1, 'ParentKind', 1]); + assert.deepStrictEqual(key.path, ['GrandParentKind', 1, 'ParentKind', 1]); }); }); @@ -208,18 +208,24 @@ describe('entity', function() { return valueProto; }; - assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.deepStrictEqual( + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode blobs', function() { - var expectedValue = new Buffer('Hi'); + var expectedValue = Buffer.from('Hi'); var valueProto = { valueType: 'blobValue', blobValue: expectedValue.toString('base64'), }; - assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.deepStrictEqual( + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode null', function() { @@ -304,7 +310,10 @@ describe('entity', function() { }, }; - assert.deepEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.deepStrictEqual( + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should return the value if no conversions are necessary', function() { @@ -327,7 +336,7 @@ describe('entity', function() { booleanValue: value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode null', function() { @@ -352,7 +361,7 @@ describe('entity', function() { this.value = value_; }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode an Int object', function() { @@ -362,7 +371,7 @@ describe('entity', function() { integerValue: value.value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a double', function() { @@ -377,7 +386,7 @@ describe('entity', function() { this.value = value_; }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a Double object', function() { @@ -387,7 +396,7 @@ describe('entity', function() { doubleValue: value.value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a GeoPoint object', function() { @@ -397,7 +406,7 @@ describe('entity', function() { geoPointValue: value.value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a date', function() { @@ -411,7 +420,7 @@ describe('entity', function() { }, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a string', function() { @@ -421,17 +430,17 @@ describe('entity', function() { stringValue: value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a buffer', function() { - var value = new Buffer('Hi'); + var value = Buffer.from('Hi'); var expectedValueProto = { blobValue: value, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode an array', function() { @@ -456,7 +465,7 @@ describe('entity', function() { return value_; }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode a Key', function() { @@ -474,7 +483,7 @@ describe('entity', function() { return value; }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should encode an object', function() { @@ -503,7 +512,7 @@ describe('entity', function() { return value_; }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should clone an object', function() { @@ -519,7 +528,7 @@ describe('entity', function() { var encodedValue = entity.encodeValue(value); - assert.deepEqual(value, originalValue); + assert.deepStrictEqual(value, originalValue); assert.notStrictEqual(value, encodedValue); }); @@ -532,7 +541,7 @@ describe('entity', function() { }, }; - assert.deepEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); it('should throw if an invalid value was provided', function() { @@ -557,7 +566,7 @@ describe('entity', function() { }, }; - assert.deepEqual( + assert.deepStrictEqual( entity.entityFromEntityProto(entityProto), expectedEntity ); @@ -584,7 +593,7 @@ describe('entity', function() { return value; }; - assert.deepEqual( + assert.deepStrictEqual( entity.entityToEntityProto(entityObject), expectedEntityProto ); @@ -1005,7 +1014,7 @@ describe('entity', function() { }, }; - assert.deepEqual( + assert.deepStrictEqual( entity.entityToEntityProto(entityObject), expectedEntityProto ); @@ -1040,7 +1049,7 @@ describe('entity', function() { var ent = entity.formatArray(results)[0]; - assert.deepEqual(ent, expectedResults); + assert.deepStrictEqual(ent, expectedResults); assert.strictEqual(ent[entity.KEY_SYMBOL], key); }); }); @@ -1118,7 +1127,7 @@ describe('entity', function() { it('should create a proper Key', function(done) { entity.Key = function(keyOptions) { - assert.deepEqual(keyOptions, { + assert.deepStrictEqual(keyOptions, { namespace: NAMESPACE, path: ['Kind', new entity.Int(111), 'Kind2', 'name'], }); @@ -1362,13 +1371,13 @@ describe('entity', function() { .offset(1) .hasAncestor(ancestorKey); - assert.deepEqual(entity.queryToQueryProto(query), queryProto); + assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); }); it('should handle buffer start and end values', function() { var ds = new Datastore({projectId: 'project-id'}); - var startVal = new Buffer('start'); - var endVal = new Buffer('end'); + var startVal = Buffer.from('start'); + var endVal = Buffer.from('end'); var query = ds .createQuery('Kind1') diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 648ba771836..5f4348b0264 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -241,7 +241,7 @@ describe('Datastore', function() { assert.notStrictEqual(datastore.options, options); - assert.deepEqual( + assert.deepStrictEqual( datastore.options, extend( { @@ -487,7 +487,7 @@ describe('Datastore', function() { assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], namespace); - assert.deepEqual(query.calledWith_[2], kind); + assert.deepStrictEqual(query.calledWith_[2], kind); }); it('should include the default namespace', function() { @@ -496,7 +496,7 @@ describe('Datastore', function() { assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); - assert.deepEqual(query.calledWith_[2], kind); + assert.deepStrictEqual(query.calledWith_[2], kind); }); it('should include the default namespace in a kindless query', function() { @@ -504,7 +504,7 @@ describe('Datastore', function() { assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); - assert.deepEqual(query.calledWith_[2], []); + assert.deepStrictEqual(query.calledWith_[2], []); }); }); @@ -521,7 +521,7 @@ describe('Datastore', function() { var key = datastore.key(options); assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); - assert.deepEqual(key.calledWith_[0].path, [options]); + assert.deepStrictEqual(key.calledWith_[0].path, [options]); }); }); diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js index 89965f5e1cc..7529fd490cc 100644 --- a/handwritten/nodejs-datastore/test/query.js +++ b/handwritten/nodejs-datastore/test/query.js @@ -132,7 +132,7 @@ describe('Query', function() { assert.strictEqual(query.filters[0].name, '__key__'); assert.strictEqual(query.filters[0].op, 'HAS_ANCESTOR'); - assert.deepEqual(query.filters[0].val, ['kind2', 123]); + assert.deepStrictEqual(query.filters[0].val, ['kind2', 123]); }); it('should return the query instance', function() { @@ -188,13 +188,13 @@ describe('Query', function() { it('should store an array of properties to group by', function() { var query = new Query(['kind1']).groupBy(['name', 'size']); - assert.deepEqual(query.groupByVal, ['name', 'size']); + assert.deepStrictEqual(query.groupByVal, ['name', 'size']); }); it('should convert a single property into an array', function() { var query = new Query(['kind1']).groupBy('name'); - assert.deepEqual(query.groupByVal, ['name']); + assert.deepStrictEqual(query.groupByVal, ['name']); }); it('should return the query instance', function() { @@ -209,13 +209,13 @@ describe('Query', function() { it('should store an array of properties to select', function() { var query = new Query(['kind1']).select(['name', 'size']); - assert.deepEqual(query.selectVal, ['name', 'size']); + assert.deepStrictEqual(query.selectVal, ['name', 'size']); }); it('should convert a single property into an array', function() { var query = new Query(['kind1']).select('name'); - assert.deepEqual(query.selectVal, ['name']); + assert.deepStrictEqual(query.selectVal, ['name']); }); it('should return the query instance', function() { diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 8195f081746..93ebbaae648 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -140,7 +140,10 @@ describe('Request', function() { assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); - assert.deepEqual(preparedEntityObject, expectedPreparedEntityObject); + assert.deepStrictEqual( + preparedEntityObject, + expectedPreparedEntityObject + ); }); it('should format an entity', function() { @@ -151,7 +154,7 @@ describe('Request', function() { var preparedEntityObject = Request.prepareEntityObject_(entityObject); assert.strictEqual(preparedEntityObject.key, key); - assert.deepEqual(preparedEntityObject.data, entityObject); + assert.strictEqual(preparedEntityObject.data.data, entityObject.data); }); }); @@ -302,7 +305,10 @@ describe('Request', function() { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); - assert.deepEqual(config.reqOpts.keys[0], entity.keyToKeyProto(key)); + assert.deepStrictEqual( + config.reqOpts.keys[0], + entity.keyToKeyProto(key) + ); done(); }; @@ -481,7 +487,7 @@ describe('Request', function() { .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); - assert.deepEqual(config.reqOpts.keys, expectedKeys); + assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); done(); }; @@ -496,7 +502,7 @@ describe('Request', function() { .createReadStream(key) .on('error', done) .on('data', function(entity) { - assert.deepEqual(entity, expectedResult); + assert.deepStrictEqual(entity, expectedResult); }) .on('end', done) .emit('reading'); @@ -567,7 +573,7 @@ describe('Request', function() { }; request.delete(key, function(err, apiResponse) { assert.ifError(err); - assert.deepEqual(resp, apiResponse); + assert.deepStrictEqual(resp, apiResponse); done(); }); }); @@ -632,7 +638,7 @@ describe('Request', function() { request.get(keys, options, function(err, entities) { assert.ifError(err); - assert.deepEqual(entities, fakeEntities); + assert.deepStrictEqual(entities, fakeEntities); var spy = request.createReadStream.getCall(0); assert.strictEqual(spy.args[0], keys); @@ -661,7 +667,7 @@ describe('Request', function() { assert.ifError(err); var spy = request.createReadStream.getCall(0); - assert.deepEqual(spy.args[1], {}); + assert.deepStrictEqual(spy.args[1], {}); done(); }); }); @@ -705,7 +711,7 @@ describe('Request', function() { }; request.save = function(entities) { - assert.deepEqual(entities[0], expectedEntityObject); + assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -714,18 +720,17 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [ + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { namespace: 'ns', kind: 'Company', - path: ['Company', undefined], + path: ['Company', null], }, data: {}, method: 'insert', }, ]); - callback(); }; @@ -747,7 +752,7 @@ describe('Request', function() { overrides.entity.queryToQueryProto = function(query_) { assert.notStrictEqual(query_, query); - assert.deepEqual(query_, query); + assert.deepStrictEqual(query_, query); done(); }; @@ -854,7 +859,7 @@ describe('Request', function() { var apiResponse = { batch: { entityResults: [{a: true}, {b: true}, {c: true}], - endCursor: new Buffer('abc'), + endCursor: Buffer.from('abc'), moreResults: 'MORE_RESULTS_AFTER_LIMIT', skippedResults: 0, }, @@ -885,7 +890,7 @@ describe('Request', function() { entities.push(entity); }) .on('end', function() { - assert.deepEqual(entities, apiResponse.batch.entityResults); + assert.deepStrictEqual(entities, apiResponse.batch.entityResults); done(); }); }); @@ -991,9 +996,9 @@ describe('Request', function() { .call(entityResultsPerApiCall[1]) .concat(entityResultsPerApiCall[2]); - assert.deepEqual(entities, allResults); + assert.deepStrictEqual(entities, allResults); - assert.deepEqual(info, { + assert.deepStrictEqual(info, { endCursor: apiResponse.batch.endCursor.toString('base64'), moreResults: apiResponse.batch.moreResults, }); @@ -1018,7 +1023,7 @@ describe('Request', function() { } else { batch = { moreResults: 'NOT_FINISHED', - endCursor: new Buffer('abc'), + endCursor: Buffer.from('abc'), }; } @@ -1129,7 +1134,7 @@ describe('Request', function() { request.runQuery(query, options, function(err, entities, info) { assert.ifError(err); - assert.deepEqual(entities, fakeEntities); + assert.deepStrictEqual(entities, fakeEntities); assert.strictEqual(info, fakeInfo); var spy = request.runQueryStream.getCall(0); @@ -1151,7 +1156,7 @@ describe('Request', function() { assert.ifError(err); var spy = request.runQueryStream.getCall(0); - assert.deepEqual(spy.args[1], {}); + assert.deepStrictEqual(spy.args[1], {}); done(); }); }); @@ -1232,8 +1237,8 @@ describe('Request', function() { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); - assert.deepEqual(config.reqOpts, expectedReq); - assert.deepEqual(config.gaxOpts, {}); + assert.deepStrictEqual(config.reqOpts, expectedReq); + assert.deepStrictEqual(config.gaxOpts, {}); callback(); }; @@ -1291,13 +1296,13 @@ describe('Request', function() { assert(is.object(config.reqOpts.mutations[2].upsert)); var insert = config.reqOpts.mutations[0].insert; - assert.deepEqual(insert.properties.k, {stringValue: 'v'}); + assert.deepStrictEqual(insert.properties.k, {stringValue: 'v'}); var update = config.reqOpts.mutations[1].update; - assert.deepEqual(update.properties.k2, {stringValue: 'v2'}); + assert.deepStrictEqual(update.properties.k2, {stringValue: 'v2'}); var upsert = config.reqOpts.mutations[2].upsert; - assert.deepEqual(upsert.properties.k3, {stringValue: 'v3'}); + assert.deepStrictEqual(upsert.properties.k3, {stringValue: 'v3'}); callback(); }; @@ -1341,12 +1346,12 @@ describe('Request', function() { }, }, ]; - var expectedEntities = extend(true, {}, entities); + var expectedEntities = entities.map(x => extend(true, {}, x)); request.request_ = function() { // By the time the request is made, the original object has already been // transformed into a raw request. - assert.deepEqual(entities, expectedEntities); + assert.deepStrictEqual(entities, expectedEntities); done(); }; @@ -1501,7 +1506,7 @@ describe('Request', function() { }; request.save = function(entities) { - assert.deepEqual(entities[0], expectedEntityObject); + assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1510,18 +1515,17 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [ + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { namespace: 'ns', kind: 'Company', - path: ['Company', undefined], + path: ['Company', null], }, data: {}, method: 'update', }, ]); - callback(); }; @@ -1544,7 +1548,7 @@ describe('Request', function() { }; request.save = function(entities) { - assert.deepEqual(entities[0], expectedEntityObject); + assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1553,12 +1557,12 @@ describe('Request', function() { it('should pass the correct arguments to save', function(done) { request.save = function(entities, callback) { - assert.deepEqual(entities, [ + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { namespace: 'ns', kind: 'Company', - path: ['Company', undefined], + path: ['Company', null], }, data: {}, method: 'upsert', @@ -1663,7 +1667,7 @@ describe('Request', function() { overrides.util.replaceProjectIdToken = function(reqOpts, projectId) { assert.notStrictEqual(reqOpts, CONFIG.reqOpts); - assert.deepEqual(reqOpts, expectedReqOpts); + assert.deepStrictEqual(reqOpts, expectedReqOpts); assert.strictEqual(projectId, PROJECT_ID); return replacedReqOpts; diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index ea97caf43d7..fc9bf2a9448 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -31,7 +31,7 @@ var fakeUtil = extend({}, util, { } promisified = true; - assert.deepEqual(options.exclude, ['createQuery', 'delete', 'save']); + assert.deepStrictEqual(options.exclude, ['createQuery', 'delete', 'save']); }, }); @@ -145,9 +145,9 @@ describe('Transaction', function() { }); it('should localize default properties', function() { - assert.deepEqual(transaction.modifiedEntities_, []); - assert.deepEqual(transaction.requestCallbacks_, []); - assert.deepEqual(transaction.requests_, []); + assert.deepStrictEqual(transaction.modifiedEntities_, []); + assert.deepStrictEqual(transaction.requestCallbacks_, []); + assert.deepStrictEqual(transaction.requests_, []); }); }); @@ -219,7 +219,7 @@ describe('Transaction', function() { }; transaction.commit(function(err, apiResponse) { assert.ifError(err); - assert.deepEqual(resp, apiResponse); + assert.deepStrictEqual(resp, apiResponse); done(); }); }); @@ -261,7 +261,10 @@ describe('Transaction', function() { assert.strictEqual(args.length, 2); // Save arguments must come first. - assert.deepEqual(args, [[saveArg1, saveArg2], [deleteArg1, deleteArg2]]); + assert.deepStrictEqual(args, [ + [saveArg1, saveArg2], + [deleteArg1, deleteArg2], + ]); }); it('should honor ordering of mutations (last wins)', function() { @@ -311,7 +314,7 @@ describe('Transaction', function() { ]; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts, { + assert.deepStrictEqual(config.reqOpts, { mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], }); done(); @@ -378,7 +381,7 @@ describe('Transaction', function() { transaction.modifiedEntities_.forEach(function(queuedEntity) { assert.strictEqual(queuedEntity.method, 'delete'); assert(keys.indexOf(queuedEntity.entity.key) > -1); - assert.deepEqual(queuedEntity.args, [queuedEntity.entity.key]); + assert.deepStrictEqual(queuedEntity.args, [queuedEntity.entity.key]); }); }); }); @@ -415,7 +418,7 @@ describe('Transaction', function() { callback(error); }; transaction.rollback(function(err) { - assert.deepEqual(err, error); + assert.deepStrictEqual(err, error); done(); }); }); @@ -427,7 +430,7 @@ describe('Transaction', function() { }; transaction.rollback(function(err, apiResponse) { assert.ifError(err); - assert.deepEqual(resp, apiResponse); + assert.deepStrictEqual(resp, apiResponse); done(); }); }); @@ -458,7 +461,7 @@ describe('Transaction', function() { transaction.request_ = function(config) { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'beginTransaction'); - assert.deepEqual(config.reqOpts, {transactionOptions: {}}); + assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); assert.strictEqual(config.gaxOpts, undefined); done(); }; @@ -484,7 +487,10 @@ describe('Transaction', function() { }; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts.transactionOptions.readOnly, {}); + assert.deepStrictEqual( + config.reqOpts.transactionOptions.readOnly, + {} + ); done(); }; @@ -495,7 +501,10 @@ describe('Transaction', function() { transaction.readOnly = true; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts.transactionOptions.readOnly, {}); + assert.deepStrictEqual( + config.reqOpts.transactionOptions.readOnly, + {} + ); done(); }; @@ -510,7 +519,7 @@ describe('Transaction', function() { }; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts.transactionOptions.readWrite, { + assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { previousTransaction: options.transactionId, }); done(); @@ -523,7 +532,7 @@ describe('Transaction', function() { transaction.id = 'transaction-id'; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts.transactionOptions.readWrite, { + assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { previousTransaction: transaction.id, }); done(); @@ -546,7 +555,7 @@ describe('Transaction', function() { }; transaction.request_ = function(config) { - assert.deepEqual(config.reqOpts, options); + assert.deepStrictEqual(config.reqOpts, options); done(); }; @@ -599,7 +608,7 @@ describe('Transaction', function() { transaction.run(function(err, transaction_, apiResponse_) { assert.ifError(err); assert.strictEqual(transaction_, transaction); - assert.deepEqual(apiResponse_, apiResponse); + assert.deepStrictEqual(apiResponse_, apiResponse); done(); }); }); @@ -625,7 +634,7 @@ describe('Transaction', function() { return ent.key === queuedEntity.entity.key; })[0]; - assert.deepEqual(queuedEntity.args, [match]); + assert.deepStrictEqual(queuedEntity.args, [match]); }); }); }); From ed074aa486878270a8780a1fb8591b08d2914e51 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 26 Jul 2018 22:43:17 -0700 Subject: [PATCH 226/820] chore: remove propprop (#145) --- handwritten/nodejs-datastore/package-lock.json | 5 ----- handwritten/nodejs-datastore/package.json | 1 - handwritten/nodejs-datastore/src/transaction.js | 3 +-- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 5915ccf6cae..544441e0f83 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -11581,11 +11581,6 @@ "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" }, - "propprop": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", - "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" - }, "protobufjs": { "version": "6.8.8", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4f0c38f4973..e93c5c8f91c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -74,7 +74,6 @@ "lodash.flatten": "^4.4.0", "lodash.merge": "^4.6.1", "prop-assign": "^1.0.0", - "propprop": "^0.3.1", "safe-buffer": "^5.1.2", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 61fb1e3693a..6d85c56d119 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -20,7 +20,6 @@ var arrify = require('arrify'); var common = require('@google-cloud/common'); var flatten = require('lodash.flatten'); var is = require('is'); -var prop = require('propprop'); var util = require('util'); var entity = require('./entity.js'); @@ -200,7 +199,7 @@ Transaction.prototype.commit = function(gaxOptions, callback) { // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. var reqOpts = { - mutations: flatten(this.requests_.map(prop('mutations'))), + mutations: flatten(this.requests_.map(x => x.mutations)), }; this.request_( From c7cae68ff40c8b14860e3d8fd1e7e7e978ccad2c Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Fri, 27 Jul 2018 05:32:39 -0700 Subject: [PATCH 227/820] chore: add node templates to synth.py (#143) --- handwritten/nodejs-datastore/synth.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index a5b0f380926..00a216fa780 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -7,6 +7,7 @@ logging.basicConfig(level=logging.DEBUG) gapic = gcp.GAPICGenerator() +common_templates = gcp.CommonTemplates() # tasks has two product names, and a poorly named artman yaml version = 'v1' @@ -19,6 +20,10 @@ library, excludes=['package.json', 'README.md', 'src/index.js']) +templates = common_templates.node_library(package_name="@google-cloud/datastore") +s.copy(templates) + + # Node.js specific cleanup subprocess.run(['npm', 'ci']) subprocess.run(['npm', 'run', 'prettier']) From 3a5c2c4664a1ffab4307d19fc4df9e0d4e1ae452 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Sat, 28 Jul 2018 08:44:59 -0700 Subject: [PATCH 228/820] Re-generate library using /synth.py (#151) --- handwritten/nodejs-datastore/.circleci/config.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index d5ed84a6c94..cf867c5f06d 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -103,8 +103,8 @@ jobs: name: Link the module being tested to the samples. command: | cd samples/ - npm install npm link ../ + npm install environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: @@ -143,13 +143,13 @@ jobs: command: npm run samples-test environment: GCLOUD_PROJECT: long-door-651 - GOOGLE_APPLICATION_CREDENTIALS: /home/node/datastore-samples/.circleci/key.json + GOOGLE_APPLICATION_CREDENTIALS: /home/node/samples/.circleci/key.json NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Remove unencrypted key. command: rm .circleci/key.json when: always - working_directory: /home/node/datastore-samples/ + working_directory: /home/node/samples/ system_tests: docker: - image: 'node:8' @@ -168,7 +168,6 @@ jobs: name: Run system tests. command: npm run system-test environment: - GCLOUD_PROJECT: long-door-651 GOOGLE_APPLICATION_CREDENTIALS: .circleci/key.json - run: name: Remove unencrypted key. @@ -181,4 +180,4 @@ jobs: steps: - checkout - run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' - - run: npm publish + - run: npm publish --access=public \ No newline at end of file From e083bec5827c8aae37e42b83a89d6f389f12b01a Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 30 Jul 2018 10:48:59 -0700 Subject: [PATCH 229/820] chore: move mocha options to mocha.opts (#150) --- handwritten/nodejs-datastore/package.json | 4 ++-- handwritten/nodejs-datastore/test/mocha.opts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/test/mocha.opts diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e93c5c8f91c..e64bc3fc8c1 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -55,9 +55,9 @@ "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", "lint": "eslint src/ samples/ system-test/ test/", "prettier": "prettier --write src/*.js src/*/*.js samples/*.js samples/*/*.js test/*.js test/*/*.js system-test/*.js system-test/*/*.js", - "cover": "nyc --reporter=lcov mocha --require intelli-espower-loader test/*.js && nyc report", + "cover": "nyc --reporter=lcov mocha test/*.js && nyc report", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", - "test-no-cover": "mocha test/*.js --no-timeouts", + "test-no-cover": "mocha test/*.js", "test": "npm run cover", "system-test": "mocha system-test/*.js --timeout 600000" }, diff --git a/handwritten/nodejs-datastore/test/mocha.opts b/handwritten/nodejs-datastore/test/mocha.opts new file mode 100644 index 00000000000..3e740ac6e4c --- /dev/null +++ b/handwritten/nodejs-datastore/test/mocha.opts @@ -0,0 +1,2 @@ +--require intelli-espower-loader +--timeout 10000 From af491392d317bc9f9d075964c63ca8545da22bc4 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 30 Jul 2018 14:59:19 -0700 Subject: [PATCH 230/820] chore: drop dependency on common (#148) --- .../nodejs-datastore/package-lock.json | 167 ++++++++---------- handwritten/nodejs-datastore/package.json | 3 +- handwritten/nodejs-datastore/src/index.js | 5 - handwritten/nodejs-datastore/src/request.js | 11 +- .../nodejs-datastore/src/transaction.js | 12 +- handwritten/nodejs-datastore/test/index.js | 31 +--- handwritten/nodejs-datastore/test/request.js | 43 +++-- .../nodejs-datastore/test/transaction.js | 23 ++- 8 files changed, 132 insertions(+), 163 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 544441e0f83..2f0b27d429e 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -213,28 +213,6 @@ "arrify": "^1.0.1" } }, - "@google-cloud/common": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.20.3.tgz", - "integrity": "sha512-jt8/R4EqDTQccv5WA9AEaS65llM5+mlxsuWu57G5Os8HTIpgPbcsOVMUeIvmTrBuPUYSoRIMW8d/pvv/95n0+g==", - "requires": { - "@types/duplexify": "^3.5.0", - "@types/request": "^2.47.0", - "arrify": "^1.0.1", - "axios": "^0.18.0", - "duplexify": "^3.6.0", - "ent": "^2.2.0", - "extend": "^3.0.1", - "google-auth-library": "^1.6.0", - "is": "^3.2.1", - "pify": "^3.0.0", - "request": "^2.87.0", - "retry-request": "^4.0.0", - "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4", - "through2": "^2.0.3" - } - }, "@google-cloud/nodejs-repo-tools": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.2.tgz", @@ -2663,6 +2641,16 @@ } } }, + "@google-cloud/projectify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.0.tgz", + "integrity": "sha512-ic3vU+rBLlQ9rU6vyMcQ/GoYQX9hP0P56jdbnSkGvXrVnO1DtYrkPV3Qg/NUrpAfKnmNC4hb0O/v2hCj8uGnbQ==" + }, + "@google-cloud/promisify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.3.0.tgz", + "integrity": "sha512-5xfpwK9iIAwZrKtG+SnEKZkgnce9Hsew1dkeYNyP/slAxTIdS9wjSUJ5Waq/dfsYphkHSGyH6F9lwqJlD5Zsyw==" + }, "@ladjs/time-require": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", @@ -2798,27 +2786,6 @@ "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==", "dev": true }, - "@types/caseless": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", - "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==" - }, - "@types/duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", - "requires": { - "@types/node": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, "@types/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", @@ -2829,22 +2796,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" }, - "@types/request": { - "version": "2.47.1", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", - "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", - "requires": { - "@types/caseless": "*", - "@types/form-data": "*", - "@types/node": "*", - "@types/tough-cookie": "*" - } - }, - "@types/tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" - }, "acorn": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", @@ -2868,6 +2819,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -3166,12 +3118,14 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -3196,7 +3150,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.1", @@ -3377,12 +3332,14 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true }, "axios": { "version": "0.18.0", @@ -3914,6 +3871,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -4196,7 +4154,8 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "catharsis": { "version": "0.8.9", @@ -4415,7 +4374,8 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "co-with-promise": { "version": "4.6.0", @@ -4491,6 +4451,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -4668,6 +4629,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -4833,7 +4795,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "detect-indent": { "version": "4.0.0", @@ -4951,6 +4914,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" @@ -4999,11 +4963,6 @@ "once": "^1.4.0" } }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" - }, "entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", @@ -5740,12 +5699,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, "fast-diff": { "version": "1.1.2", @@ -5769,7 +5730,8 @@ "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -5901,12 +5863,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "1.0.6", @@ -6543,6 +6507,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -7225,12 +7190,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, "requires": { "ajv": "^5.1.0", "har-schema": "^2.0.0" @@ -7368,6 +7335,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -7909,7 +7877,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-url": { "version": "1.2.4", @@ -7947,7 +7916,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul-lib-coverage": { "version": "2.0.1", @@ -8021,6 +7991,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, "jsdoc": { @@ -8072,12 +8043,14 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8088,7 +8061,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json5": { "version": "0.5.1", @@ -8109,6 +8083,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8615,12 +8590,14 @@ "mime-db": { "version": "1.35.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "dev": true }, "mime-types": { "version": "2.1.19", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "dev": true, "requires": { "mime-db": "~1.35.0" } @@ -10922,7 +10899,8 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -11305,7 +11283,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "3.0.0", @@ -11631,12 +11610,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "5.1.1", @@ -11901,6 +11882,7 @@ "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.6.0", @@ -12101,7 +12083,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "samsam": { "version": "1.3.0", @@ -12468,6 +12451,7 @@ "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -12891,6 +12875,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, "requires": { "punycode": "^1.4.1" } @@ -12922,6 +12907,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -12930,6 +12916,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-check": { @@ -13237,7 +13224,8 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "validate-npm-package-license": { "version": "3.0.3", @@ -13253,6 +13241,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e64bc3fc8c1..100285308cb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,7 +62,8 @@ "system-test": "mocha system-test/*.js --timeout 600000" }, "dependencies": { - "@google-cloud/common": "^0.20.1", + "@google-cloud/projectify": "^0.3.0", + "@google-cloud/promisify": "^0.3.0", "arrify": "^1.0.1", "concat-stream": "^1.6.2", "create-error-class": "^3.0.2", diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index ca4061abaf2..1e04231cc6b 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -17,7 +17,6 @@ 'use strict'; var arrify = require('arrify'); -var common = require('@google-cloud/common'); var extend = require('extend'); var gax = require('google-gax'); var grpc = new gax.GrpcClient().grpc; @@ -364,10 +363,6 @@ function Datastore(options) { return new Datastore(options); } - options = common.util.normalizeArguments(this, options, { - projectIdRequired: false, - }); - this.clients_ = new Map(); this.datastore = this; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index e9ff0dc7cc9..352d053782b 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -17,7 +17,8 @@ 'use strict'; var arrify = require('arrify'); -var common = require('@google-cloud/common'); +var {replaceProjectIdToken} = require('@google-cloud/projectify'); +var {promisifyAll} = require('@google-cloud/promisify'); var concat = require('concat-stream'); var extend = require('extend'); var is = require('is'); @@ -339,7 +340,7 @@ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { gaxOptions = {}; } - callback = callback || common.util.noop; + callback = callback || function() {}; var reqOpts = { mutations: arrify(keys).map(function(key) { @@ -1098,7 +1099,7 @@ DatastoreRequest.prototype.upsert = function(entities, callback) { DatastoreRequest.prototype.request_ = function(config, callback) { var datastore = this.datastore; - callback = callback || common.util.noop; + callback = callback || function() {}; var isTransaction = is.defined(this.id); var method = config.method; @@ -1147,7 +1148,7 @@ DatastoreRequest.prototype.request_ = function(config, callback) { var gaxClient = datastore.clients_.get(clientName); - reqOpts = common.util.replaceProjectIdToken(reqOpts, projectId); + reqOpts = replaceProjectIdToken(reqOpts, projectId); var gaxOpts = extend(true, {}, config.gaxOpts, { headers: { @@ -1164,7 +1165,7 @@ DatastoreRequest.prototype.request_ = function(config, callback) { * All async methods (except for streams) will return a Promise in the event * that a callback is omitted. */ -common.util.promisifyAll(DatastoreRequest); +promisifyAll(DatastoreRequest); /** * Reference to the {@link DatastoreRequest} class. diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 6d85c56d119..bfb3d462758 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -17,7 +17,7 @@ 'use strict'; var arrify = require('arrify'); -var common = require('@google-cloud/common'); +var {promisifyAll} = require('@google-cloud/promisify'); var flatten = require('lodash.flatten'); var is = require('is'); var util = require('util'); @@ -129,7 +129,7 @@ Transaction.prototype.commit = function(gaxOptions, callback) { gaxOptions = {}; } - callback = callback || common.util.noop; + callback = callback || function() {}; if (this.skipCommit) { setImmediate(callback); @@ -193,7 +193,7 @@ Transaction.prototype.commit = function(gaxOptions, callback) { var method = modifiedEntity.method; var args = modifiedEntity.args.reverse(); - Request.prototype[method].call(self, args, common.util.noop); + Request.prototype[method].call(self, args, function() {}); }); // Take the `req` array built previously, and merge them into one request to @@ -362,7 +362,7 @@ Transaction.prototype.rollback = function(gaxOptions, callback) { gaxOptions = {}; } - callback = callback || common.util.noop; + callback = callback || function() {}; this.request_( { @@ -437,7 +437,7 @@ Transaction.prototype.run = function(options, callback) { } options = options || {}; - callback = callback || common.util.noop; + callback = callback || function() {}; var reqOpts = { transactionOptions: {}, @@ -625,7 +625,7 @@ Transaction.prototype.save = function(entities) { * All async methods (except for streams) will return a Promise in the event * that a callback is omitted. */ -common.util.promisifyAll(Transaction, { +promisifyAll(Transaction, { exclude: ['createQuery', 'delete', 'save'], }); diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index 5f4348b0264..aa88d565123 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -20,7 +20,6 @@ var assert = require('assert'); var extend = require('extend'); var gax = new require('google-gax'); var proxyquire = require('proxyquire'); -var util = require('@google-cloud/common').util; var v1 = require('../src/v1/index.js'); @@ -52,12 +51,9 @@ var fakeEntity = { }, }; -var fakeUtil = extend({}, util); -var originalFakeUtil = extend(true, {}, fakeUtil); - var GoogleAuthOverride; function fakeGoogleAuth() { - return (GoogleAuthOverride || util.noop).apply(null, arguments); + return (GoogleAuthOverride || function() {}).apply(null, arguments); } var createInsecureOverride; @@ -70,7 +66,10 @@ var fakeGoogleGax = { this.grpc = { credentials: { createInsecure() { - return (createInsecureOverride || util.noop).apply(null, arguments); + return (createInsecureOverride || function() {}).apply( + null, + arguments + ); }, }, }; @@ -108,9 +107,6 @@ describe('Datastore', function() { before(function() { Datastore = proxyquire('../', { - '@google-cloud/common': { - util: fakeUtil, - }, './entity.js': fakeEntity, './query.js': FakeQuery, './transaction.js': FakeTransaction, @@ -123,8 +119,6 @@ describe('Datastore', function() { }); beforeEach(function() { - extend(fakeUtil, originalFakeUtil); - createInsecureOverride = null; GoogleAuthOverride = null; @@ -158,21 +152,6 @@ describe('Datastore', function() { }); }); - it('should normalize the arguments', function() { - var normalizeArgumentsCalled = false; - var options = {}; - - fakeUtil.normalizeArguments = function(context, options_, config) { - normalizeArgumentsCalled = true; - assert.strictEqual(options_, options); - assert.strictEqual(config.projectIdRequired, false); - return options_; - }; - - new Datastore(options); - assert.strictEqual(normalizeArgumentsCalled, true); - }); - it('should initialize an empty Client map', function() { assert(datastore.clients_ instanceof Map); assert.strictEqual(datastore.clients_.size, 0); diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 93ebbaae648..5876c15b54a 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -23,13 +23,14 @@ var is = require('is'); var proxyquire = require('proxyquire'); var sinon = require('sinon').sandbox.create(); var through = require('through2'); -var util = require('@google-cloud/common').util; +var pfy = require('@google-cloud/promisify'); +var pjy = require('@google-cloud/projectify'); var entity = require('../src/entity.js'); var Query = require('../src/query.js'); var promisified = false; -var fakeUtil = extend({}, util, { +var fakePfy = extend({}, pfy, { promisifyAll: function(Class) { if (Class.name === 'DatastoreRequest') { promisified = true; @@ -37,10 +38,16 @@ var fakeUtil = extend({}, util, { }, }); +var fakePjy = { + replaceProjectIdToken: function() { + return (pjyOverride || pjy.replaceProjectIdToken).apply(null, arguments); + }, +}; + var v1FakeClientOverride; var fakeV1 = { FakeClient: function() { - return (v1FakeClientOverride || util.noop).apply(null, arguments); + return (v1FakeClientOverride || function() {}).apply(null, arguments); }, }; @@ -75,12 +82,13 @@ function resetOverrides() { } override('entity', entity); -override('util', fakeUtil); function FakeQuery() { this.calledWith_ = arguments; } +let pjyOverride; + describe('Request', function() { var Request; var request; @@ -89,9 +97,8 @@ describe('Request', function() { before(function() { Request = proxyquire('../src/request.js', { - '@google-cloud/common': { - util: fakeUtil, - }, + '@google-cloud/promisify': fakePfy, + '@google-cloud/projectify': fakePjy, './entity.js': entity, './query.js': FakeQuery, './v1': fakeV1, @@ -106,6 +113,7 @@ describe('Request', function() { }); beforeEach(function() { + pjyOverride = null; key = new entity.Key({ namespace: 'namespace', path: ['Company', 123], @@ -167,8 +175,8 @@ describe('Request', function() { }; beforeEach(function() { - overrides.entity.isKeyComplete = util.noop; - overrides.entity.keyToKeyProto = util.noop; + overrides.entity.isKeyComplete = function() {}; + overrides.entity.keyToKeyProto = function() {}; }); it('should throw if the key is complete', function() { @@ -282,7 +290,7 @@ describe('Request', function() { describe('createReadStream', function() { beforeEach(function() { - request.request_ = util.noop; + request.request_ = function() {}; }); it('should throw if no keys are provided', function() { @@ -373,7 +381,7 @@ describe('Request', function() { it('should emit error', function(done) { request .createReadStream(key) - .on('data', util.noop) + .on('data', function() {}) .on('error', function(err) { assert.strictEqual(err, error); done(); @@ -383,7 +391,7 @@ describe('Request', function() { it('should end stream', function(done) { var stream = request.createReadStream(key); - stream.on('data', util.noop).on('error', function() { + stream.on('data', function() {}).on('error', function() { setImmediate(function() { assert.strictEqual(stream._destroyed, true); done(); @@ -741,8 +749,8 @@ describe('Request', function() { describe('runQueryStream', function() { beforeEach(function() { - overrides.entity.queryToQueryProto = util.noop; - request.request_ = util.noop; + overrides.entity.queryToQueryProto = function() {}; + request.request_ = function() {}; }); it('should clone the query', function(done) { @@ -1596,7 +1604,7 @@ describe('Request', function() { beforeEach(function() { var clients_ = new Map(); clients_.set(CONFIG.client, { - [CONFIG.method]: util.noop, + [CONFIG.method]: function() {}, }); request.datastore = { @@ -1633,7 +1641,7 @@ describe('Request', function() { it('should initiate and cache the client', function() { var fakeClient = { - [CONFIG.method]: util.noop, + [CONFIG.method]: function() {}, }; v1FakeClientOverride = function(options) { @@ -1665,11 +1673,10 @@ describe('Request', function() { var expectedReqOpts = extend({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; - overrides.util.replaceProjectIdToken = function(reqOpts, projectId) { + pjyOverride = function(reqOpts, projectId) { assert.notStrictEqual(reqOpts, CONFIG.reqOpts); assert.deepStrictEqual(reqOpts, expectedReqOpts); assert.strictEqual(projectId, PROJECT_ID); - return replacedReqOpts; }; diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index fc9bf2a9448..a078068fe20 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -21,23 +21,22 @@ var assert = require('assert'); var entity = require('../src/entity.js'); var extend = require('extend'); var proxyquire = require('proxyquire'); -var util = require('@google-cloud/common').util; +var pfy = require('@google-cloud/promisify'); var promisified = false; -var fakeUtil = extend({}, util, { +var fakePfy = extend({}, pfy, { promisifyAll: function(Class, options) { if (Class.name !== 'Transaction') { return; } - promisified = true; assert.deepStrictEqual(options.exclude, ['createQuery', 'delete', 'save']); }, }); var DatastoreRequestOverride = { - delete: util.noop, - save: util.noop, + delete: function() {}, + save: function() {}, }; var FakeDatastoreRequest = { @@ -45,14 +44,14 @@ var FakeDatastoreRequest = { delete: function() { var args = [].slice.apply(arguments); var results = DatastoreRequestOverride.delete.apply(null, args); - DatastoreRequestOverride.delete = util.noop; + DatastoreRequestOverride.delete = function() {}; return results; }, save: function() { var args = [].slice.apply(arguments); var results = DatastoreRequestOverride.save.apply(null, args); - DatastoreRequestOverride.save = util.noop; + DatastoreRequestOverride.save = function() {}; return results; }, }, @@ -77,9 +76,7 @@ describe('Transaction', function() { before(function() { Transaction = proxyquire('../src/transaction.js', { - '@google-cloud/common': { - util: fakeUtil, - }, + '@google-cloud/promisify': fakePfy, './request.js': FakeDatastoreRequest, }); }); @@ -251,7 +248,7 @@ describe('Transaction', function() { saveCalled++; }; - transaction.request_ = util.noop; + transaction.request_ = function() {}; transaction.commit(); @@ -282,7 +279,7 @@ describe('Transaction', function() { saveCalled++; }; - transaction.request_ = util.noop; + transaction.request_ = function() {}; transaction.commit(); assert.strictEqual(deleteCalled, 0); @@ -298,7 +295,7 @@ describe('Transaction', function() { done(); }; - transaction.request_ = util.noop; + transaction.request_ = function() {}; transaction.commit(); }); From 3a7f145ef321b29fbe4fd78cbb578905ecf04333 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 30 Jul 2018 18:44:38 -0700 Subject: [PATCH 231/820] chore(deps): lock file maintenance (#153) --- .../nodejs-datastore/package-lock.json | 45 ++++++++++--------- .../samples/package-lock.json | 39 ++++++++-------- 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 2f0b27d429e..fb9cbcc75f4 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -214,9 +214,9 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.2.tgz", - "integrity": "sha512-Zah0wZcVifSpKIy5ulTFyGpHYAA8h/biYy8X7J2UvaXga5XlyruKrXo2K1VmBxB9MDPXa0Duz8M003pe2Ras3w==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.3.tgz", + "integrity": "sha512-aow6Os43uhdgshSe/fr43ESHNl/kHhikim9AOqIMUzEb6mip6H4d8GFKgpO/yoqUUTIhCN3sbpkKktMI5mOQHw==", "dev": true, "requires": { "ava": "0.25.0", @@ -2792,9 +2792,9 @@ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", - "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.4.tgz", + "integrity": "sha512-8TqvB0ReZWwtcd3LXq3YSrBoLyXFgBX/sBZfGye9+YS8zH7/g+i6QRIuiDmwBoTzcQ/pk89nZYTYU4c5akKkzw==" }, "acorn": { "version": "5.7.1", @@ -4911,13 +4911,14 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ecdsa-sig-formatter": { @@ -6720,9 +6721,9 @@ "dev": true }, "grpc": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.0.tgz", - "integrity": "sha512-jGxWFYzttSz9pi8mu283jZvo2zIluWonQ918GMHKx8grT57GIVlvx7/82fo7AGS75lbkPoO1T6PZLvCRD9Pbtw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.1.tgz", + "integrity": "sha512-yl0xChnlUISTefOPU2NQ1cYPh5m/DTatEUV6jdRyQPE9NCrtPq7Gn6J2alMTglN7ufYbJapOd00dvhGurHH6HQ==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -6936,12 +6937,12 @@ } }, "node-pre-gyp": { - "version": "0.10.2", + "version": "0.10.3", "bundled": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", @@ -6964,7 +6965,7 @@ "bundled": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.1.11", "bundled": true, "requires": { "ignore-walk": "^3.0.1", @@ -7926,9 +7927,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", - "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", @@ -11516,9 +11517,9 @@ "dev": true }, "prettier": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", - "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.0.tgz", + "integrity": "sha512-KtQ2EGaUwf2EyDfp1fxyEb0PqGKakVm0WyXwDt6u+cAoxbO2Z2CwKvOe3+b4+F2IlO9lYHi1kqFuRM70ddBnow==", "dev": true }, "pretty-ms": { diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 3407b189315..4a76faf7874 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -260,9 +260,9 @@ } }, "@google-cloud/nodejs-repo-tools": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.2.tgz", - "integrity": "sha512-Zah0wZcVifSpKIy5ulTFyGpHYAA8h/biYy8X7J2UvaXga5XlyruKrXo2K1VmBxB9MDPXa0Duz8M003pe2Ras3w==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.3.tgz", + "integrity": "sha512-aow6Os43uhdgshSe/fr43ESHNl/kHhikim9AOqIMUzEb6mip6H4d8GFKgpO/yoqUUTIhCN3sbpkKktMI5mOQHw==", "dev": true, "requires": { "ava": "0.25.0", @@ -2890,9 +2890,9 @@ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", - "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.4.tgz", + "integrity": "sha512-8TqvB0ReZWwtcd3LXq3YSrBoLyXFgBX/sBZfGye9+YS8zH7/g+i6QRIuiDmwBoTzcQ/pk89nZYTYU4c5akKkzw==" }, "@types/request": { "version": "2.47.1", @@ -4795,12 +4795,13 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ecdsa-sig-formatter": { @@ -6100,9 +6101,9 @@ "dev": true }, "grpc": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.0.tgz", - "integrity": "sha512-jGxWFYzttSz9pi8mu283jZvo2zIluWonQ918GMHKx8grT57GIVlvx7/82fo7AGS75lbkPoO1T6PZLvCRD9Pbtw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.1.tgz", + "integrity": "sha512-yl0xChnlUISTefOPU2NQ1cYPh5m/DTatEUV6jdRyQPE9NCrtPq7Gn6J2alMTglN7ufYbJapOd00dvhGurHH6HQ==", "requires": { "lodash": "^4.17.5", "nan": "^2.0.0", @@ -6316,12 +6317,12 @@ } }, "node-pre-gyp": { - "version": "0.10.2", + "version": "0.10.3", "bundled": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", @@ -6344,7 +6345,7 @@ "bundled": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.1.11", "bundled": true, "requires": { "ignore-walk": "^3.0.1", @@ -7138,9 +7139,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", - "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", From b8acab880429cfec86e81dbfa8983936db1203d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Wed, 1 Aug 2018 18:07:50 -0700 Subject: [PATCH 232/820] fix(deps): update dependency google-gax to ^0.18.0 (#154) --- .../nodejs-datastore/package-lock.json | 73 +++++++++++++++---- handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index fb9cbcc75f4..6d662e77027 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -309,6 +309,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1437,7 +1438,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", @@ -2651,6 +2653,24 @@ "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.3.0.tgz", "integrity": "sha512-5xfpwK9iIAwZrKtG+SnEKZkgnce9Hsew1dkeYNyP/slAxTIdS9wjSUJ5Waq/dfsYphkHSGyH6F9lwqJlD5Zsyw==" }, + "@grpc/proto-loader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.3.0.tgz", + "integrity": "sha512-9b8S/V+3W4Gv7G/JKSZ48zApgyYbfIR7mAC9XNnaSWme3zj57MIESu0ELzm9j5oxNIpFG8DgO00iJMIUZ5luqw==", + "requires": { + "@types/lodash": "^4.14.104", + "@types/node": "^9.4.6", + "lodash": "^4.17.5", + "protobufjs": "^6.8.6" + }, + "dependencies": { + "@types/node": { + "version": "9.6.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.25.tgz", + "integrity": "sha512-uZpzO9MKSHy7zBiTtziA3JgZP3upcAvLTASkKgheLj6/rNZmRX4UyvsFYaY2kbYcmmh8bNZ2T0eocBRCfZdGvQ==" + } + } + }, "@ladjs/time-require": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", @@ -2786,6 +2806,11 @@ "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==", "dev": true }, + "@types/lodash": { + "version": "4.14.115", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.115.tgz", + "integrity": "sha512-9K/P4XMQxk61omAzQh3bbbFiqnG17eLcFysjlAYz0aPcYrVo8T+ujaCeIeY0Gpzux7x1YbxtEtLKB7ZWf79qdg==" + }, "@types/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", @@ -2838,6 +2863,7 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2849,6 +2875,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5959,12 +5986,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5979,17 +6008,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6106,7 +6138,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6118,6 +6151,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6132,6 +6166,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6139,12 +6174,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6163,6 +6200,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6243,7 +6281,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6255,6 +6294,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6376,6 +6416,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6630,10 +6671,11 @@ } }, "google-gax": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.17.1.tgz", - "integrity": "sha512-fAKvFx++SRr6bGWamWuVOkJzJnQqMgpJkhaB2oEwfFJ91rbFgEmIPRmZZ/MeIVVFUOuHUVyZ8nwjm5peyTZJ6g==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.18.0.tgz", + "integrity": "sha512-cF2s3aTw1cWDHsjaYfIizJZT0KJF0FSM3laiCX4O/K0ZcdmeE9PitG2bxRH+dY+Sz094//m+JoH1hBtSyOf67A==", "requires": { + "@grpc/proto-loader": "^0.3.0", "duplexify": "^3.6.0", "extend": "^3.0.1", "globby": "^8.0.1", @@ -6642,7 +6684,7 @@ "grpc": "^1.12.2", "is-stream-ended": "^0.1.4", "lodash": "^4.17.10", - "protobufjs": "^6.8.6", + "protobufjs": "^6.8.8", "retry-request": "^4.0.0", "through2": "^2.0.3" } @@ -8308,7 +8350,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.4.0", @@ -8883,6 +8926,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -9825,7 +9869,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "lru-cache": { "version": "4.1.3", diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 100285308cb..427740c6ef9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -69,7 +69,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auth-library": "^1.6.1", - "google-gax": "^0.17.1", + "google-gax": "^0.18.0", "google-proto-files": "^0.16.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", From f80d893317afe5926a8074c943c20f67a57e0ae4 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 2 Aug 2018 05:11:03 -0700 Subject: [PATCH 233/820] remove that whitespace (#155) --- handwritten/nodejs-datastore/test/mocha.opts | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/test/mocha.opts b/handwritten/nodejs-datastore/test/mocha.opts index 3e740ac6e4c..8751e7bae37 100644 --- a/handwritten/nodejs-datastore/test/mocha.opts +++ b/handwritten/nodejs-datastore/test/mocha.opts @@ -1,2 +1,3 @@ --require intelli-espower-loader --timeout 10000 +--throw-deprecation From 382dc97954f82a1be9a2b07cad39f73752696cad Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 2 Aug 2018 08:25:46 -0700 Subject: [PATCH 234/820] Delete reference to non-existent sample. (#149) --- handwritten/nodejs-datastore/.cloud-repo-tools.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/handwritten/nodejs-datastore/.cloud-repo-tools.json b/handwritten/nodejs-datastore/.cloud-repo-tools.json index 70b817d2e74..a16d6ff5501 100644 --- a/handwritten/nodejs-datastore/.cloud-repo-tools.json +++ b/handwritten/nodejs-datastore/.cloud-repo-tools.json @@ -17,15 +17,6 @@ "name": "Concepts", "file": "concepts.js", "docs_link": "https://cloud.google.com/datastore/docs/concepts/entities" - }, - { - "id": "error", - "name": "Errors and Error Handling", - "file": "error.js", - "docs_link": "https://cloud.google.com/datastore/docs/concepts/errors", - "usage": { - "text": "node error.js" - } } ] } From 6434d4284aef54b7e1759074d6da874069da9b98 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 2 Aug 2018 21:23:47 -0700 Subject: [PATCH 235/820] chore: remove safe-buffer (#144) --- handwritten/nodejs-datastore/package.json | 1 - handwritten/nodejs-datastore/src/entity.js | 1 - handwritten/nodejs-datastore/system-test/datastore.js | 2 -- handwritten/nodejs-datastore/test/entity.js | 1 - handwritten/nodejs-datastore/test/request.js | 1 - 5 files changed, 6 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 427740c6ef9..ead85f362b4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -75,7 +75,6 @@ "lodash.flatten": "^4.4.0", "lodash.merge": "^4.6.1", "prop-assign": "^1.0.0", - "safe-buffer": "^5.1.2", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", "through2": "^2.0.3" diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 1c5ba6b69c3..7ad195f7494 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -17,7 +17,6 @@ 'use strict'; var arrify = require('arrify'); -var Buffer = require('safe-buffer').Buffer; var createErrorClass = require('create-error-class'); var extend = require('extend'); var is = require('is'); diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 19f34dda438..9253b176a86 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -18,8 +18,6 @@ var assert = require('assert'); var async = require('async'); -var Buffer = require('safe-buffer').Buffer; - var Datastore = require('../'); var entity = require('../src/entity.js'); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index b8dfa25d187..509aed59e38 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -17,7 +17,6 @@ 'use strict'; var assert = require('assert'); -var Buffer = require('safe-buffer').Buffer; var deepStrictEqual = require('deep-strict-equal'); assert.deepStrictEqual = assert.deepStrictEqual || diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 5876c15b54a..8a860f3d894 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -17,7 +17,6 @@ 'use strict'; var assert = require('assert'); -var Buffer = require('safe-buffer').Buffer; var extend = require('extend'); var is = require('is'); var proxyquire = require('proxyquire'); From 25de0b916bdb1674e34661c9697514b026bc02c0 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 6 Aug 2018 14:10:12 -0700 Subject: [PATCH 236/820] chore: use let and const (#158) --- .../nodejs-datastore/package-lock.json | 41 +-- handwritten/nodejs-datastore/src/entity.js | 98 +++--- handwritten/nodejs-datastore/src/index.js | 32 +- handwritten/nodejs-datastore/src/query.js | 20 +- handwritten/nodejs-datastore/src/request.js | 172 +++++----- .../nodejs-datastore/src/transaction.js | 54 ++-- .../nodejs-datastore/system-test/datastore.js | 166 +++++----- handwritten/nodejs-datastore/test/entity.js | 302 +++++++++--------- handwritten/nodejs-datastore/test/gapic-v1.js | 134 ++++---- handwritten/nodejs-datastore/test/index.js | 142 ++++---- handwritten/nodejs-datastore/test/query.js | 104 +++--- handwritten/nodejs-datastore/test/request.js | 290 ++++++++--------- .../nodejs-datastore/test/transaction.js | 120 +++---- 13 files changed, 829 insertions(+), 846 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 6d662e77027..02146536fbe 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -309,7 +309,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1438,8 +1437,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -2863,7 +2861,6 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2875,7 +2872,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, - "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -5986,14 +5982,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6008,20 +6002,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6138,8 +6129,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6151,7 +6141,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6166,7 +6155,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6174,14 +6162,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6200,7 +6186,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6281,8 +6266,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6294,7 +6278,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6416,7 +6399,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -8350,8 +8332,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.4.0", @@ -8926,7 +8907,6 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -9869,8 +9849,7 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "lru-cache": { "version": "4.1.3", diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 7ad195f7494..b2715bfc8c7 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -16,15 +16,15 @@ 'use strict'; -var arrify = require('arrify'); -var createErrorClass = require('create-error-class'); -var extend = require('extend'); -var is = require('is'); +const arrify = require('arrify'); +const createErrorClass = require('create-error-class'); +const extend = require('extend'); +const is = require('is'); -var entity = module.exports; +const entity = module.exports; -var InvalidKeyError = createErrorClass('InvalidKey', function(opts) { - var errorMessages = { +const InvalidKeyError = createErrorClass('InvalidKey', function(opts) { + const errorMessages = { MISSING_KIND: 'A key should contain at least a kind.', MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', }; @@ -179,7 +179,7 @@ function Key(options) { options.path = [].slice.call(options.path); if (options.path.length % 2 === 0) { - var identifier = options.path.pop(); + const identifier = options.path.pop(); if (is.number(identifier) || isDsInt(identifier)) { this.id = identifier.value || identifier; @@ -250,8 +250,8 @@ entity.isDsKey = isDsKey; * // */ function decodeValueProto(valueProto) { - var valueType = valueProto.valueType; - var value = valueProto[valueType]; + const valueType = valueProto.valueType; + const value = valueProto[valueType]; switch (valueType) { case 'arrayValue': { @@ -283,7 +283,7 @@ function decodeValueProto(valueProto) { } case 'timestampValue': { - var milliseconds = parseInt(value.nanos, 10) / 1e6; + const milliseconds = parseInt(value.nanos, 10) / 1e6; return new Date(parseInt(value.seconds, 10) * 1000 + milliseconds); } @@ -309,7 +309,7 @@ entity.decodeValueProto = decodeValueProto; * // } */ function encodeValue(value) { - var valueProto = {}; + const valueProto = {}; if (is.boolean(value)) { valueProto.booleanValue = value; @@ -345,7 +345,7 @@ function encodeValue(value) { } if (value instanceof Date) { - var seconds = value.getTime() / 1000; + const seconds = value.getTime() / 1000; valueProto.timestampValue = { seconds: Math.floor(seconds), @@ -381,7 +381,7 @@ function encodeValue(value) { if (!is.empty(value)) { value = extend(true, {}, value); - for (var prop in value) { + for (const prop in value) { if (value.hasOwnProperty(prop)) { value[prop] = entity.encodeValue(value[prop]); } @@ -427,12 +427,12 @@ entity.encodeValue = encodeValue; * // } */ function entityFromEntityProto(entityProto) { - var entityObject = {}; + const entityObject = {}; - var properties = entityProto.properties || {}; + const properties = entityProto.properties || {}; - for (var property in properties) { - var value = properties[property]; + for (const property in properties) { + const value = properties[property]; entityObject[property] = entity.decodeValueProto(value); } @@ -472,10 +472,10 @@ entity.entityFromEntityProto = entityFromEntityProto; * // } */ function entityToEntityProto(entityObject) { - var properties = entityObject.data; - var excludeFromIndexes = entityObject.excludeFromIndexes; + const properties = entityObject.data; + const excludeFromIndexes = entityObject.excludeFromIndexes; - var entityProto = { + const entityProto = { key: null, properties: Object.keys(properties).reduce(function(encoded, key) { @@ -493,11 +493,11 @@ function entityToEntityProto(entityObject) { return entityProto; function excludePathFromEntity(entity, path) { - var arrayIndex = path.indexOf('[]'); - var entityIndex = path.indexOf('.'); + const arrayIndex = path.indexOf('[]'); + const entityIndex = path.indexOf('.'); - var hasArrayPath = arrayIndex > -1; - var hasEntityPath = entityIndex > -1; + const hasArrayPath = arrayIndex > -1; + const hasEntityPath = entityIndex > -1; if (!hasArrayPath && !hasEntityPath) { // This is the path end node. Traversal ends here in either case. @@ -517,20 +517,20 @@ function entityToEntityProto(entityObject) { return; } - var delimiterIndex; + let delimiterIndex; if (hasArrayPath && hasEntityPath) { delimiterIndex = Math.min(arrayIndex, entityIndex); } else { delimiterIndex = Math.max(arrayIndex, entityIndex); } - var firstPathPartIsArray = delimiterIndex === arrayIndex; - var firstPathPartIsEntity = delimiterIndex === entityIndex; + const firstPathPartIsArray = delimiterIndex === arrayIndex; + const firstPathPartIsEntity = delimiterIndex === entityIndex; - var delimiter = firstPathPartIsArray ? '[]' : '.'; - var splitPath = path.split(delimiter); - var firstPathPart = splitPath.shift(); - var remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); + const delimiter = firstPathPartIsArray ? '[]' : '.'; + const splitPath = path.split(delimiter); + const firstPathPart = splitPath.shift(); + const remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); if (!(entity.properties && entity.properties[firstPathPart])) { // Either a primitive or an entity for which this path doesn't apply. @@ -542,7 +542,7 @@ function entityToEntityProto(entityObject) { // check also if the property in question is actually an array value. entity.properties[firstPathPart].arrayValue ) { - var array = entity.properties[firstPathPart].arrayValue; + const array = entity.properties[firstPathPart].arrayValue; array.values.forEach(function(value) { if (remainderPath === '') { // We want to exclude *this* array property, which is @@ -562,7 +562,7 @@ function entityToEntityProto(entityObject) { } }); } else if (firstPathPartIsEntity) { - var parentEntity = entity.properties[firstPathPart].entityValue; + const parentEntity = entity.properties[firstPathPart].entityValue; excludePathFromEntity(parentEntity, remainderPath); } } @@ -581,7 +581,7 @@ entity.entityToEntityProto = entityToEntityProto; * * @example * request_('runQuery', {}, function(err, response) { - * var entityObjects = formatArray(response.batch.entityResults); + * const entityObjects = formatArray(response.batch.entityResults); * // { * // key: {}, * // data: { @@ -593,7 +593,7 @@ entity.entityToEntityProto = entityToEntityProto; */ function formatArray(results) { return results.map(function(result) { - var ent = entity.entityFromEntityProto(result.entity); + const ent = entity.entityFromEntityProto(result.entity); ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key); return ent; }); @@ -613,7 +613,7 @@ entity.formatArray = formatArray; * isKeyComplete(new Key('Company')); // false */ function isKeyComplete(key) { - var lastPathElement = entity.keyToKeyProto(key).path.pop(); + const lastPathElement = entity.keyToKeyProto(key).path.pop(); return !!(lastPathElement.id || lastPathElement.name); } @@ -627,7 +627,7 @@ entity.isKeyComplete = isKeyComplete; * @returns {Key} * * @example - * var key = keyFromKeyProto({ + * const key = keyFromKeyProto({ * partitionId: { * projectId: 'project-id', * namespaceId: '' @@ -641,7 +641,7 @@ entity.isKeyComplete = isKeyComplete; * }); */ function keyFromKeyProto(keyProto) { - var keyOptions = { + const keyOptions = { path: [], }; @@ -652,7 +652,7 @@ function keyFromKeyProto(keyProto) { keyProto.path.forEach(function(path, index) { keyOptions.path.push(path.kind); - var id = path[path.idType]; + let id = path[path.idType]; if (path.idType === 'id') { id = new entity.Int(id); @@ -680,7 +680,7 @@ entity.keyFromKeyProto = keyFromKeyProto; * @returns {object} * * @example - * var keyProto = keyToKeyProto(new Key(['Company', 1])); + * const keyProto = keyToKeyProto(new Key(['Company', 1])); * // { * // path: [ * // { @@ -697,7 +697,7 @@ function keyToKeyProto(key) { }); } - var keyProto = { + const keyProto = { path: [], }; @@ -707,7 +707,7 @@ function keyToKeyProto(key) { }; } - var numKeysWalked = 0; + let numKeysWalked = 0; // Reverse-iterate over the Key objects. do { @@ -718,7 +718,7 @@ function keyToKeyProto(key) { }); } - var pathElement = { + const pathElement = { kind: key.kind, }; @@ -772,7 +772,7 @@ entity.keyToKeyProto = keyToKeyProto; * // } */ function queryToQueryProto(query) { - var OP_TO_OPERATOR = { + const OP_TO_OPERATOR = { '=': 'EQUAL', '>': 'GREATER_THAN', '>=': 'GREATER_THAN_OR_EQUAL', @@ -781,12 +781,12 @@ function queryToQueryProto(query) { HAS_ANCESTOR: 'HAS_ANCESTOR', }; - var SIGN_TO_ORDER = { + const SIGN_TO_ORDER = { '-': 'DESCENDING', '+': 'ASCENDING', }; - var queryProto = { + const queryProto = { distinctOn: query.groupByVal.map(function(groupBy) { return { name: groupBy, @@ -836,8 +836,8 @@ function queryToQueryProto(query) { } if (query.filters.length > 0) { - var filters = query.filters.map(function(filter) { - var value = {}; + const filters = query.filters.map(function(filter) { + let value = {}; if (filter.name === '__key__') { value.keyValue = entity.keyToKeyProto(filter.val); diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index 1e04231cc6b..fb2a3853f46 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -16,18 +16,18 @@ 'use strict'; -var arrify = require('arrify'); -var extend = require('extend'); -var gax = require('google-gax'); -var grpc = new gax.GrpcClient().grpc; -var GoogleAuth = require('google-auth-library').GoogleAuth; -var is = require('is'); -var util = require('util'); - -var DatastoreRequest = require('./request.js'); -var entity = require('./entity.js'); -var Query = require('./query.js'); -var Transaction = require('./transaction.js'); +const arrify = require('arrify'); +const extend = require('extend'); +const gax = require('google-gax'); +const {grpc} = new gax.GrpcClient(); +const {GoogleAuth} = require('google-auth-library'); +const is = require('is'); +const util = require('util'); + +const DatastoreRequest = require('./request.js'); +const entity = require('./entity.js'); +const Query = require('./query.js'); +const Transaction = require('./transaction.js'); // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -699,10 +699,10 @@ Datastore.prototype.transaction = function(options) { * @param {string} customApiEndpoint Custom API endpoint. */ Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { - var baseUrl = this.defaultBaseUrl_; - var leadingProtocol = new RegExp('^https*://'); - var trailingSlashes = new RegExp('/*$'); - var port = new RegExp(':(\\d+)'); + let baseUrl = this.defaultBaseUrl_; + const leadingProtocol = new RegExp('^https*://'); + const trailingSlashes = new RegExp('/*$'); + const port = new RegExp(':(\\d+)'); if (customApiEndpoint) { baseUrl = customApiEndpoint; diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index 61de4b3c605..a21561e0c74 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -16,7 +16,7 @@ 'use strict'; -var arrify = require('arrify'); +const arrify = require('arrify'); /** * Build a Query object. @@ -201,7 +201,7 @@ Query.prototype.hasAncestor = function(key) { * }); */ Query.prototype.order = function(property, options) { - var sign = options && options.descending ? '-' : '+'; + const sign = options && options.descending ? '-' : '+'; this.orders.push({name: property, sign: sign}); return this; @@ -371,7 +371,7 @@ Query.prototype.offset = function(n) { * // entities = An array of records. * * // Access the Key object for an entity. - * var firstEntityKey = entities[0][datastore.KEY]; + * const firstEntityKey = entities[0][datastore.KEY]; * }); * * //- @@ -381,7 +381,7 @@ Query.prototype.offset = function(n) { * query.select('__key__'); * * query.run(function(err, entities) { - * var keys = entities.map(function(entity) { + * const keys = entities.map(function(entity) { * return entity[datastore.KEY]; * }); * }); @@ -390,12 +390,12 @@ Query.prototype.offset = function(n) { * // If the callback is omitted, we'll return a Promise. * //- * query.run().then(function(data) { - * var entities = data[0]; + * const entities = data[0]; * }); */ Query.prototype.run = function() { - var query = this; - var args = [query].concat([].slice.call(arguments)); + const query = this; + const args = [query].concat([].slice.call(arguments)); return this.scope.runQuery.apply(this.scope, args); }; @@ -417,7 +417,7 @@ Query.prototype.run = function() { * .on('error', console.error) * .on('data', function (entity) { * // Access the Key object for this entity. - * var key = entity[datastore.KEY]; + * const key = entity[datastore.KEY]; * }) * .on('info', function(info) {}) * .on('end', function() { @@ -434,8 +434,8 @@ Query.prototype.run = function() { * }); */ Query.prototype.runStream = function() { - var query = this; - var args = [query].concat([].slice.call(arguments)); + const query = this; + const args = [query].concat([].slice.call(arguments)); return this.scope.runQueryStream.apply(this.scope, args); }; diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 352d053782b..f5961cf7315 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -16,24 +16,24 @@ 'use strict'; -var arrify = require('arrify'); -var {replaceProjectIdToken} = require('@google-cloud/projectify'); -var {promisifyAll} = require('@google-cloud/promisify'); -var concat = require('concat-stream'); -var extend = require('extend'); -var is = require('is'); -var propAssign = require('prop-assign'); -var split = require('split-array-stream').split; -var streamEvents = require('stream-events'); -var through = require('through2'); +const arrify = require('arrify'); +const {replaceProjectIdToken} = require('@google-cloud/projectify'); +const {promisifyAll} = require('@google-cloud/promisify'); +const concat = require('concat-stream'); +const extend = require('extend'); +const is = require('is'); +const propAssign = require('prop-assign'); +const {split} = require('split-array-stream'); +const streamEvents = require('stream-events'); +const through = require('through2'); // Import the clients for each version supported by this package. const gapic = Object.freeze({ v1: require('./v1'), }); -var entity = require('./entity.js'); -var Query = require('./query.js'); +const entity = require('./entity.js'); +const Query = require('./query.js'); /** * A map of read consistency values to proto codes. @@ -41,7 +41,7 @@ var Query = require('./query.js'); * @type {object} * @private */ -var CONSISTENCY_PROTO_CODE = { +const CONSISTENCY_PROTO_CODE = { eventual: 2, strong: 1, }; @@ -69,7 +69,7 @@ function DatastoreRequest() {} * data: { foo: 'bar' } * }, function(err) {}) * - * var entity = { foo: 'bar' } + * const entity = { foo: 'bar' } * entity[datastore.KEY] = datastore.key('Kind') * datastore.save(entity, function(err) {}) * @@ -80,7 +80,7 @@ function DatastoreRequest() {} * @param {object} obj The user's input object. */ DatastoreRequest.prepareEntityObject_ = function(obj) { - var entityObject = extend(true, {}, obj); + const entityObject = extend(true, {}, obj); // Entity objects are also supported. if (obj[entity.KEY_SYMBOL]) { @@ -108,7 +108,7 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { * @param {object} callback.apiResponse The full API response. * * @example - * var incompleteKey = datastore.key(['Company']); + * const incompleteKey = datastore.key(['Company']); * * //- * // The following call will create 100 new IDs from the Company kind, which @@ -119,7 +119,7 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { * //- * // Or, if you're using a transaction object. * //- - * var transaction = datastore.transaction(); + * const transaction = datastore.transaction(); * * transaction.run(function(err) { * if (err) { @@ -145,7 +145,7 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { * // below will create 100 new IDs, but from the Company kind that exists under * // the "ns-test" namespace. * //- - * var incompleteKey = datastore.key({ + * const incompleteKey = datastore.key({ * namespace: 'ns-test', * path: ['Company'] * }); @@ -158,8 +158,8 @@ DatastoreRequest.prepareEntityObject_ = function(obj) { * // If the callback is omitted, we'll return a Promise. * //- * datastore.allocateIds(incompleteKey, 100).then(function(data) { - * var keys = data[0]; - * var apiResponse = data[1]; + * const keys = data[0]; + * const apiResponse = data[1]; * }); */ DatastoreRequest.prototype.allocateIds = function(key, options, callback) { @@ -188,7 +188,7 @@ DatastoreRequest.prototype.allocateIds = function(key, options, callback) { return; } - var keys = arrify(resp.keys).map(entity.keyFromKeyProto); + const keys = arrify(resp.keys).map(entity.keyFromKeyProto); callback(null, keys, resp); } @@ -205,7 +205,7 @@ DatastoreRequest.prototype.allocateIds = function(key, options, callback) { * for a complete list of options. * * @example - * var keys = [ + * const keys = [ * datastore.key(['Company', 123]), * datastore.key(['Product', 'Computer']) * ]; @@ -220,7 +220,7 @@ DatastoreRequest.prototype.allocateIds = function(key, options, callback) { * }); */ DatastoreRequest.prototype.createReadStream = function(keys, options) { - var self = this; + const self = this; options = options || {}; @@ -230,19 +230,19 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { throw new Error('At least one Key object is required.'); } - var stream = streamEvents(through.obj()); + const stream = streamEvents(through.obj()); stream.once('reading', function() { makeRequest(keys); }); function makeRequest(keys) { - var reqOpts = { + const reqOpts = { keys: keys, }; if (options.consistency) { - var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; reqOpts.readOptions = { readConsistency: code, @@ -262,8 +262,8 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { return; } - var entities = entity.formatArray(resp.found); - var nextKeys = (resp.deferred || []) + const entities = entity.formatArray(resp.found); + const nextKeys = (resp.deferred || []) .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); @@ -297,13 +297,13 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { * @param {object} callback.apiResponse The full API response. * * @example - * var key = datastore.key(['Company', 123]); + * const key = datastore.key(['Company', 123]); * datastore.delete(key, function(err, apiResp) {}); * * //- * // Or, if you're using a transaction object. * //- - * var transaction = datastore.transaction(); + * const transaction = datastore.transaction(); * * transaction.run(function(err) { * if (err) { @@ -331,7 +331,7 @@ DatastoreRequest.prototype.createReadStream = function(keys, options) { * // If the callback is omitted, we'll return a Promise. * //- * datastore.delete().then(function(data) { - * var apiResponse = data[0]; + * const apiResponse = data[0]; * }); */ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { @@ -342,7 +342,7 @@ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { callback = callback || function() {}; - var reqOpts = { + const reqOpts = { mutations: arrify(keys).map(function(key) { return { delete: entity.keyToKeyProto(key), @@ -390,14 +390,14 @@ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { * //- * // Get a single entity. * //- - * var key = datastore.key(['Company', 123]); + * const key = datastore.key(['Company', 123]); * * datastore.get(key, function(err, entity) {}); * * //- * // Or, if you're using a transaction object. * //- - * var transaction = datastore.transaction(); + * const transaction = datastore.transaction(); * * transaction.run(function(err) { * if (err) { @@ -420,7 +420,7 @@ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { * //- * // Get multiple entities at once with a callback. * //- - * var keys = [ + * const keys = [ * datastore.key(['Company', 123]), * datastore.key(['Product', 'Computer']) * ]; @@ -448,7 +448,7 @@ DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { * // If the callback is omitted, we'll return a Promise. * //- * datastore.get(keys).then(function(data) { - * var entities = data[0]; + * const entities = data[0]; * }); */ DatastoreRequest.prototype.get = function(keys, options, callback) { @@ -463,7 +463,7 @@ DatastoreRequest.prototype.get = function(keys, options, callback) { .on('error', callback) .pipe( concat(function(results) { - var isSingleLookup = !is.array(keys); + const isSingleLookup = !is.array(keys); callback(null, isSingleLookup ? results[0] : results); }) ); @@ -530,19 +530,19 @@ DatastoreRequest.prototype.insert = function(entities, callback) { * // Where you see `transaction`, assume this is the context that's relevant to * // your use, whether that be a Datastore or a Transaction object. * //- - * var query = datastore.createQuery('Lion'); + * const query = datastore.createQuery('Lion'); * * datastore.runQuery(query, function(err, entities, info) { * // entities = An array of records. * * // Access the Key object for an entity. - * var firstEntityKey = entities[0][datastore.KEY]; + * const firstEntityKey = entities[0][datastore.KEY]; * }); * * //- * // Or, if you're using a transaction object. * //- - * var transaction = datastore.transaction(); + * const transaction = datastore.transaction(); * * transaction.run(function(err) { * if (err) { @@ -566,10 +566,10 @@ DatastoreRequest.prototype.insert = function(entities, callback) { * // A keys-only query returns just the keys of the result entities instead of * // the entities themselves, at lower latency and cost. * //- - * var keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); + * const keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); * * datastore.runQuery(keysOnlyQuery, function(err, entities) { - * var keys = entities.map(function(entity) { + * const keys = entities.map(function(entity) { * return entity[datastore.KEY]; * }); * }); @@ -578,7 +578,7 @@ DatastoreRequest.prototype.insert = function(entities, callback) { * // If the callback is omitted, we'll return a Promise. * //- * datastore.runQuery(query).then(function(data) { - * var entities = data[0]; + * const entities = data[0]; * }); */ DatastoreRequest.prototype.runQuery = function(query, options, callback) { @@ -589,7 +589,7 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { options = options || {}; - var info; + let info; this.runQueryStream(query, options) .on('error', callback) @@ -618,7 +618,7 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { * .on('error', console.error) * .on('data', function(entity) { * // Access the Key object for this entity. - * var key = entity[datastore.KEY]; + * const key = entity[datastore.KEY]; * }) * .on('info', function(info) {}) * .on('end', function() { @@ -635,25 +635,25 @@ DatastoreRequest.prototype.runQuery = function(query, options, callback) { * }); */ DatastoreRequest.prototype.runQueryStream = function(query, options) { - var self = this; + const self = this; options = options || {}; query = extend(true, new Query(), query); - var stream = streamEvents(through.obj()); + const stream = streamEvents(through.obj()); stream.once('reading', function() { makeRequest(query); }); function makeRequest(query) { - var reqOpts = { + const reqOpts = { query: entity.queryToQueryProto(query), }; if (options.consistency) { - var code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; reqOpts.readOptions = { readConsistency: code, }; @@ -682,7 +682,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { return; } - var info = { + const info = { moreResults: resp.batch.moreResults, }; @@ -690,7 +690,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { info.endCursor = resp.batch.endCursor.toString('base64'); } - var entities = []; + let entities = []; if (resp.batch.entityResults) { entities = entity.formatArray(resp.batch.entityResults); @@ -709,11 +709,11 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { } // The query is "NOT_FINISHED". Get the rest of the results. - var offset = query.offsetVal === -1 ? 0 : query.offsetVal; + const offset = query.offsetVal === -1 ? 0 : query.offsetVal; query.start(info.endCursor).offset(offset - resp.batch.skippedResults); - var limit = query.limitVal; + const limit = query.limitVal; if (limit && limit > -1) { query.limit(limit - resp.batch.entityResults.length); } @@ -767,8 +767,8 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // Key object used to save will be updated to contain the path with its * // generated ID. * //- - * var key = datastore.key('Company'); - * var entity = { + * const key = datastore.key('Company'); + * const entity = { * key: key, * data: { * rating: '10' @@ -787,8 +787,8 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // original Key object used to save will be updated to contain the path with * // the name instead of a generated ID. * //- - * var key = datastore.key(['Company', 'donutshack']); - * var entity = { + * const key = datastore.key(['Company', 'donutshack']); + * const entity = { * key: key, * data: { * name: 'DonutShack', @@ -808,12 +808,12 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // * // Here we are providing a key with namespace. * //- - * var key = datastore.key({ + * const key = datastore.key({ * namespace: 'my-namespace', * path: ['Company', 'donutshack'] * }); * - * var entity = { + * const entity = { * key: key, * data: { * name: 'DonutShack', @@ -834,8 +834,8 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // Key object used to save will be updated to contain the path with its * // generated ID. * //- - * var key = datastore.key('Company'); - * var entity = { + * const key = datastore.key('Company'); + * const entity = { * key: key, * data: { * name: 'DonutShack', @@ -863,7 +863,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. * // This will allow storing string values larger than 1500 bytes. * //- - * var entity = { + * const entity = { * key: datastore.key('Company'), * excludeFromIndexes: [ * 'description', @@ -890,9 +890,9 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * //- * // Save multiple entities at once. * //- - * var companyKey = datastore.key(['Company', 123]); - * var productKey = datastore.key(['Product', 'Computer']); - * var entities = [ + * const companyKey = datastore.key(['Company', 123]); + * const productKey = datastore.key(['Product', 'Computer']); + * const entities = [ * { * key: companyKey, * data: { @@ -912,8 +912,8 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * //- * // Explicitly attempt to 'insert' a specific entity. * //- - * var userKey = datastore.key(['User', 'chilts']); - * var entity = { + * const userKey = datastore.key(['User', 'chilts']); + * const entity = { * key: userKey, * method: 'insert', * data: { @@ -927,7 +927,7 @@ DatastoreRequest.prototype.runQueryStream = function(query, options) { * // If the callback is omitted, we'll return a Promise. * //- * datastore.save(entity).then(function(data) { - * var apiResponse = data[0]; + * const apiResponse = data[0]; * }); */ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { @@ -938,9 +938,9 @@ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { gaxOptions = {}; } - var insertIndexes = {}; - var mutations = []; - var methods = { + const insertIndexes = {}; + const mutations = []; + const methods = { insert: true, update: true, upsert: true, @@ -951,9 +951,9 @@ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { entities .map(DatastoreRequest.prepareEntityObject_) .forEach(function(entityObject, index) { - var mutation = {}; - var entityProto = {}; - var method = 'upsert'; + const mutation = {}; + let entityProto = {}; + let method = 'upsert'; if (entityObject.method) { if (methods[entityObject.method]) { @@ -972,11 +972,11 @@ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { // `excludeFromIndexes` option. if (is.array(entityObject.data)) { entityProto.properties = entityObject.data.reduce(function(acc, data) { - var value = entity.encodeValue(data.value); + const value = entity.encodeValue(data.value); if (is.boolean(data.excludeFromIndexes)) { - var excluded = data.excludeFromIndexes; - var values = value.arrayValue && value.arrayValue.values; + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; if (values) { values = values.map(propAssign('excludeFromIndexes', excluded)); @@ -999,7 +999,7 @@ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { mutations.push(mutation); }); - var reqOpts = { + const reqOpts = { mutations: mutations, }; @@ -1015,7 +1015,7 @@ DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { } if (insertIndexes[index]) { - var id = entity.keyFromKeyProto(result.key).id; + const id = entity.keyFromKeyProto(result.key).id; entities[index].key.id = id; } }); @@ -1097,13 +1097,13 @@ DatastoreRequest.prototype.upsert = function(entities, callback) { * @private */ DatastoreRequest.prototype.request_ = function(config, callback) { - var datastore = this.datastore; + const datastore = this.datastore; callback = callback || function() {}; - var isTransaction = is.defined(this.id); - var method = config.method; - var reqOpts = extend(true, {}, config.reqOpts); + const isTransaction = is.defined(this.id); + const method = config.method; + let reqOpts = extend(true, {}, config.reqOpts); reqOpts.projectId = datastore.projectId; @@ -1137,7 +1137,7 @@ DatastoreRequest.prototype.request_ = function(config, callback) { return; } - var clientName = config.client; + const clientName = config.client; if (!datastore.clients_.has(clientName)) { datastore.clients_.set( @@ -1146,11 +1146,11 @@ DatastoreRequest.prototype.request_ = function(config, callback) { ); } - var gaxClient = datastore.clients_.get(clientName); + const gaxClient = datastore.clients_.get(clientName); reqOpts = replaceProjectIdToken(reqOpts, projectId); - var gaxOpts = extend(true, {}, config.gaxOpts, { + const gaxOpts = extend(true, {}, config.gaxOpts, { headers: { 'google-cloud-resource-prefix': `projects/${projectId}`, }, diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index bfb3d462758..2de19c716a3 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -16,14 +16,14 @@ 'use strict'; -var arrify = require('arrify'); -var {promisifyAll} = require('@google-cloud/promisify'); -var flatten = require('lodash.flatten'); -var is = require('is'); -var util = require('util'); +const arrify = require('arrify'); +const {promisifyAll} = require('@google-cloud/promisify'); +const flatten = require('lodash.flatten'); +const is = require('is'); +const util = require('util'); -var entity = require('./entity.js'); -var Request = require('./request.js'); +const entity = require('./entity.js'); +const Request = require('./request.js'); /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -118,11 +118,11 @@ util.inherits(Transaction, Request); * // If the callback is omitted, we'll return a Promise. * //- * transaction.commit().then(function(data) { - * var apiResponse = data[0]; + * const apiResponse = data[0]; * }); */ Transaction.prototype.commit = function(gaxOptions, callback) { - var self = this; + const self = this; if (is.fn(gaxOptions)) { callback = gaxOptions; @@ -136,7 +136,7 @@ Transaction.prototype.commit = function(gaxOptions, callback) { return; } - var keys = {}; + const keys = {}; this.modifiedEntities_ // Reverse the order of the queue to respect the "last queued request wins" @@ -147,13 +147,13 @@ Transaction.prototype.commit = function(gaxOptions, callback) { // key they just asked to be deleted, the delete request will be ignored, // giving preference to the save operation. .filter(function(modifiedEntity) { - var key = modifiedEntity.entity.key; + const key = modifiedEntity.entity.key; if (!entity.isKeyComplete(key)) { return true; } - var stringifiedKey = JSON.stringify(modifiedEntity.entity.key); + const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); if (!keys[stringifiedKey]) { keys[stringifiedKey] = true; @@ -172,8 +172,8 @@ Transaction.prototype.commit = function(gaxOptions, callback) { // we eventually execute the `save` method's API callback, having all the // keys together is necessary to maintain order. .reduce(function(acc, entityObject) { - var lastEntityObject = acc[acc.length - 1]; - var sameMethod = + const lastEntityObject = acc[acc.length - 1]; + const sameMethod = lastEntityObject && entityObject.method === lastEntityObject.method; if (!lastEntityObject || !sameMethod) { @@ -190,15 +190,15 @@ Transaction.prototype.commit = function(gaxOptions, callback) { // using `save` and `delete` outside of a transaction, to process the // response from the API. .forEach(function(modifiedEntity) { - var method = modifiedEntity.method; - var args = modifiedEntity.args.reverse(); + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); Request.prototype[method].call(self, args, function() {}); }); // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. - var reqOpts = { + const reqOpts = { mutations: flatten(this.requests_.map(x => x.mutations)), }; @@ -256,7 +256,7 @@ Transaction.prototype.commit = function(gaxOptions, callback) { * // Error handling omitted. * } * - * var query = transaction.createQuery('Company'); + * const query = transaction.createQuery('Company'); * * query.run(function(err, entities) { * if (err) { @@ -308,7 +308,7 @@ Transaction.prototype.createQuery = function() { * }); */ Transaction.prototype.delete = function(entities) { - var self = this; + const self = this; arrify(entities).forEach(function(ent) { self.modifiedEntities_.push({ @@ -351,11 +351,11 @@ Transaction.prototype.delete = function(entities) { * // If the callback is omitted, we'll return a Promise. * //- * transaction.rollback().then(function(data) { - * var apiResponse = data[0]; + * const apiResponse = data[0]; * }); */ Transaction.prototype.rollback = function(gaxOptions, callback) { - var self = this; + const self = this; if (is.fn(gaxOptions)) { callback = gaxOptions; @@ -402,7 +402,7 @@ Transaction.prototype.rollback = function(gaxOptions, callback) { * * transaction.run(function(err, transaction) { * // Perform Datastore transactional operations. - * var key = datastore.key(['Company', 123]); + * const key = datastore.key(['Company', 123]); * * transaction.get(key, function(err, entity) { * entity.name = 'Google'; @@ -424,12 +424,12 @@ Transaction.prototype.rollback = function(gaxOptions, callback) { * // If the callback is omitted, we'll return a Promise. * //- * transaction.run().then(function(data) { - * var transaction = data[0]; - * var apiResponse = data[1]; + * const transaction = data[0]; + * const apiResponse = data[1]; * }); */ Transaction.prototype.run = function(options, callback) { - var self = this; + const self = this; if (is.fn(options)) { callback = options; @@ -439,7 +439,7 @@ Transaction.prototype.run = function(options, callback) { options = options || {}; callback = callback || function() {}; - var reqOpts = { + const reqOpts = { transactionOptions: {}, }; @@ -607,7 +607,7 @@ Transaction.prototype.run = function(options, callback) { * }); */ Transaction.prototype.save = function(entities) { - var self = this; + const self = this; arrify(entities).forEach(function(ent) { self.modifiedEntities_.push({ diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index 9253b176a86..a8eb8300909 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -16,26 +16,26 @@ 'use strict'; -var assert = require('assert'); -var async = require('async'); -var Datastore = require('../'); -var entity = require('../src/entity.js'); +const assert = require('assert'); +const async = require('async'); +const Datastore = require('../'); +const entity = require('../src/entity.js'); describe('Datastore', function() { - var testKinds = []; - var datastore = new Datastore({}); + const testKinds = []; + const datastore = new Datastore({}); // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. - var key = datastore.key; + const key = datastore.key; datastore.key = function() { - var keyObject = key.apply(this, arguments); + const keyObject = key.apply(this, arguments); testKinds.push(keyObject.kind); return keyObject; }; after(function(done) { function deleteEntities(kind, callback) { - var query = datastore.createQuery(kind).select('__key__'); + const query = datastore.createQuery(kind).select('__key__'); datastore.runQuery(query, function(err, entities) { if (err) { @@ -43,7 +43,7 @@ describe('Datastore', function() { return; } - var keys = entities.map(function(entity) { + const keys = entities.map(function(entity) { return entity[datastore.KEY]; }); @@ -64,7 +64,7 @@ describe('Datastore', function() { }); describe('create, retrieve and delete', function() { - var post = { + const post = { title: 'How to make the perfect pizza in your grill', tags: ['pizza', 'grill'], publishedAt: new Date(), @@ -79,10 +79,10 @@ describe('Datastore', function() { }; it('should excludeFromIndexes correctly', function(done) { - var longString = Buffer.alloc(1501, '.').toString(); - var postKey = datastore.key(['Post', 'post1']); + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post1']); - var data = { + const data = { longString: longString, notMetadata: true, longStringArray: [longString], @@ -153,7 +153,7 @@ describe('Datastore', function() { }); it('should save/get/delete with a key name', function(done) { - var postKey = datastore.key(['Post', 'post1']); + const postKey = datastore.key(['Post', 'post1']); datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); @@ -170,7 +170,7 @@ describe('Datastore', function() { }); it('should save/get/delete with a numeric key id', function(done) { - var postKey = datastore.key(['Post', 123456789]); + const postKey = datastore.key(['Post', 123456789]); datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); @@ -186,15 +186,15 @@ describe('Datastore', function() { }); it('should save/get/delete a buffer', function(done) { - var postKey = datastore.key(['Post']); - var data = { + const postKey = datastore.key(['Post']); + const data = { buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), }; datastore.save({key: postKey, data: data}, function(err) { assert.ifError(err); - var assignedId = postKey.id; + const assignedId = postKey.id; assert(assignedId); datastore.get(postKey, function(err, entity) { @@ -208,7 +208,7 @@ describe('Datastore', function() { }); it('should save/get/delete with a generated key id', function(done) { - var postKey = datastore.key('Post'); + const postKey = datastore.key('Post'); datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); @@ -227,7 +227,7 @@ describe('Datastore', function() { }); it('should save/get/update', function(done) { - var postKey = datastore.key('Post'); + const postKey = datastore.key('Post'); datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); @@ -253,7 +253,7 @@ describe('Datastore', function() { }); it('should save and get with a string ID', function(done) { - var longIdKey = datastore.key([ + const longIdKey = datastore.key([ 'Post', datastore.int('100000000000001234'), ]); @@ -278,7 +278,7 @@ describe('Datastore', function() { }); it('should fail explicitly set second insert on save', function(done) { - var postKey = datastore.key('Post'); + const postKey = datastore.key('Post'); datastore.save({key: postKey, data: post}, function(err) { assert.ifError(err); @@ -308,7 +308,7 @@ describe('Datastore', function() { }); it('should fail explicitly set first update on save', function(done) { - var postKey = datastore.key('Post'); + const postKey = datastore.key('Post'); datastore.save( { @@ -324,7 +324,7 @@ describe('Datastore', function() { }); it('should save/get/delete multiple entities at once', function(done) { - var post2 = { + const post2 = { title: 'How to make the perfect homemade pasta', tags: ['pasta', 'homemade'], publishedAt: Date('2001-01-01T00:00:00.000Z'), @@ -334,8 +334,8 @@ describe('Datastore', function() { rating: 4.5, }; - var key1 = datastore.key('Post'); - var key2 = datastore.key('Post'); + const key1 = datastore.key('Post'); + const key2 = datastore.key('Post'); datastore.save( [{key: key1, data: post}, {key: key2, data: post2}], @@ -353,15 +353,15 @@ describe('Datastore', function() { }); it('should get multiple entities in a stream', function(done) { - var key1 = datastore.key('Post'); - var key2 = datastore.key('Post'); + const key1 = datastore.key('Post'); + const key2 = datastore.key('Post'); datastore.save( [{key: key1, data: post}, {key: key2, data: post}], function(err) { assert.ifError(err); - var numEntitiesEmitted = 0; + let numEntitiesEmitted = 0; datastore .createReadStream([key1, key2]) @@ -379,7 +379,7 @@ describe('Datastore', function() { }); it('should save keys as a part of entity and query by key', function(done) { - var personKey = datastore.key(['People', 'US', 'Person', 'name']); + const personKey = datastore.key(['People', 'US', 'Person', 'name']); datastore.save( { @@ -392,7 +392,7 @@ describe('Datastore', function() { function(err) { assert.ifError(err); - var query = datastore + const query = datastore .createQuery('Person') .hasAncestor(datastore.key(['People', 'US'])) .filter('linkedTo', personKey); @@ -411,10 +411,10 @@ describe('Datastore', function() { describe('entity types', function() { it('should save and decode an int', function(done) { - var integerValue = 2015; - var integerType = Datastore.int(integerValue); + const integerValue = 2015; + const integerType = Datastore.int(integerValue); - var key = datastore.key('Person'); + const key = datastore.key('Person'); datastore.save( { @@ -436,10 +436,10 @@ describe('Datastore', function() { }); it('should save and decode a double', function(done) { - var doubleValue = 99.99; - var doubleType = Datastore.double(doubleValue); + const doubleValue = 99.99; + const doubleType = Datastore.double(doubleValue); - var key = datastore.key('Person'); + const key = datastore.key('Person'); datastore.save( { @@ -461,13 +461,13 @@ describe('Datastore', function() { }); it('should save and decode a geo point', function(done) { - var geoPointValue = { + const geoPointValue = { latitude: 40.6894, longitude: -74.0447, }; - var geoPointType = Datastore.geoPoint(geoPointValue); + const geoPointType = Datastore.geoPoint(geoPointValue); - var key = datastore.key('Person'); + const key = datastore.key('Person'); datastore.save( { @@ -491,9 +491,9 @@ describe('Datastore', function() { }); describe('querying the datastore', function() { - var ancestor = datastore.key(['Book', 'GoT']); + const ancestor = datastore.key(['Book', 'GoT']); - var keys = [ + const keys = [ // Paths: ['Rickard'], ['Rickard', 'Character', 'Eddard'], @@ -507,7 +507,7 @@ describe('Datastore', function() { return datastore.key(['Book', 'GoT', 'Character'].concat(path)); }); - var characters = [ + const characters = [ { name: 'Rickard', family: 'Stark', @@ -559,7 +559,7 @@ describe('Datastore', function() { ]; before(function(done) { - var keysToSave = keys.map(function(key, index) { + const keysToSave = keys.map(function(key, index) { return { key: key, data: characters[index], @@ -574,7 +574,7 @@ describe('Datastore', function() { }); it('should limit queries', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .limit(5); @@ -583,7 +583,7 @@ describe('Datastore', function() { assert.ifError(err); assert.strictEqual(firstEntities.length, 5); - var secondQ = datastore + const secondQ = datastore .createQuery('Character') .hasAncestor(ancestor) .start(info.endCursor); @@ -597,9 +597,9 @@ describe('Datastore', function() { }); it('should not go over a limit', function(done) { - var limit = 3; + const limit = 3; - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .limit(limit); @@ -612,9 +612,9 @@ describe('Datastore', function() { }); it('should run a query as a stream', function(done) { - var q = datastore.createQuery('Character').hasAncestor(ancestor); + const q = datastore.createQuery('Character').hasAncestor(ancestor); - var resultsReturned = 0; + let resultsReturned = 0; datastore .runQueryStream(q) @@ -629,13 +629,13 @@ describe('Datastore', function() { }); it('should not go over a limit with a stream', function(done) { - var limit = 3; - var q = datastore + const limit = 3; + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .limit(limit); - var resultsReturned = 0; + let resultsReturned = 0; datastore .runQueryStream(q) @@ -650,7 +650,7 @@ describe('Datastore', function() { }); it('should filter queries with simple indexes', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .filter('appearances', '>=', 20); @@ -663,7 +663,7 @@ describe('Datastore', function() { }); it('should filter queries with defined indexes', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .filter('family', 'Stark') @@ -677,7 +677,7 @@ describe('Datastore', function() { }); it('should filter by ancestor', function(done) { - var q = datastore.createQuery('Character').hasAncestor(ancestor); + const q = datastore.createQuery('Character').hasAncestor(ancestor); datastore.runQuery(q, function(err, entities) { assert.ifError(err); @@ -687,9 +687,9 @@ describe('Datastore', function() { }); it('should filter by key', function(done) { - var key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); + const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .filter('__key__', key); @@ -702,7 +702,7 @@ describe('Datastore', function() { }); it('should order queries', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .order('appearances'); @@ -718,7 +718,7 @@ describe('Datastore', function() { }); it('should select projections', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .select(['name', 'family']); @@ -741,7 +741,7 @@ describe('Datastore', function() { }); it('should paginate with offset and limit', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .offset(2) @@ -755,7 +755,7 @@ describe('Datastore', function() { assert.strictEqual(entities[0].name, 'Robb'); assert.strictEqual(entities[2].name, 'Catelyn'); - var secondQ = datastore + const secondQ = datastore .createQuery('Character') .hasAncestor(ancestor) .order('appearances') @@ -774,7 +774,7 @@ describe('Datastore', function() { }); it('should resume from a start cursor', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .offset(2) @@ -784,7 +784,7 @@ describe('Datastore', function() { datastore.runQuery(q, function(err, entities, info) { assert.ifError(err); - var secondQ = datastore + const secondQ = datastore .createQuery('Character') .hasAncestor(ancestor) .order('appearances') @@ -803,7 +803,7 @@ describe('Datastore', function() { }); it('should group queries', function(done) { - var q = datastore + const q = datastore .createQuery('Character') .hasAncestor(ancestor) .groupBy('appearances'); @@ -816,7 +816,7 @@ describe('Datastore', function() { }); it('should query from the Query object', function(done) { - var q = datastore.createQuery('Character'); + const q = datastore.createQuery('Character'); q.run(done); }); @@ -824,12 +824,12 @@ describe('Datastore', function() { describe('transactions', function() { it('should run in a transaction', function(done) { - var key = datastore.key(['Company', 'Google']); - var obj = { + const key = datastore.key(['Company', 'Google']); + const obj = { url: 'www.google.com', }; - var transaction = datastore.transaction(); + const transaction = datastore.transaction(); transaction.run(function(err) { assert.ifError(err); @@ -853,9 +853,9 @@ describe('Datastore', function() { }); it('should commit all saves and deletes at the end', function(done) { - var deleteKey = datastore.key(['Company', 'Subway']); - var key = datastore.key(['Company', 'Google']); - var incompleteKey = datastore.key('Company'); + const deleteKey = datastore.key(['Company', 'Subway']); + const key = datastore.key(['Company', 'Google']); + const incompleteKey = datastore.key('Company'); datastore.save( { @@ -865,7 +865,7 @@ describe('Datastore', function() { function(err) { assert.ifError(err); - var transaction = datastore.transaction(); + const transaction = datastore.transaction(); transaction.run(function(err) { assert.ifError(err); @@ -918,10 +918,10 @@ describe('Datastore', function() { }); it('should use the last modification to a key', function(done) { - var incompleteKey = datastore.key('Company'); - var key = datastore.key(['Company', 'Google']); + const incompleteKey = datastore.key('Company'); + const key = datastore.key(['Company', 'Google']); - var transaction = datastore.transaction(); + const transaction = datastore.transaction(); transaction.run(function(err) { assert.ifError(err); @@ -960,12 +960,12 @@ describe('Datastore', function() { }); it('should query within a transaction', function(done) { - var transaction = datastore.transaction(); + const transaction = datastore.transaction(); transaction.run(function(err) { assert.ifError(err); - var query = transaction.createQuery('Company'); + const query = transaction.createQuery('Company'); query.run(function(err, entities) { if (err) { @@ -981,8 +981,8 @@ describe('Datastore', function() { }); it('should read in a readOnly transaction', function(done) { - var transaction = datastore.transaction({readOnly: true}); - var key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction({readOnly: true}); + const key = datastore.key(['Company', 'Google']); transaction.run(function(err) { assert.ifError(err); @@ -991,8 +991,8 @@ describe('Datastore', function() { }); it('should not write in a readOnly transaction', function(done) { - var transaction = datastore.transaction({readOnly: true}); - var key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction({readOnly: true}); + const key = datastore.key(['Company', 'Google']); transaction.run(function(err) { assert.ifError(err); diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 509aed59e38..3a74ce79778 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -16,19 +16,19 @@ 'use strict'; -var assert = require('assert'); -var deepStrictEqual = require('deep-strict-equal'); +const assert = require('assert'); +const deepStrictEqual = require('deep-strict-equal'); assert.deepStrictEqual = assert.deepStrictEqual || function() { return assert(deepStrictEqual.apply(this, arguments)); }; -var extend = require('extend'); +const extend = require('extend'); -var Datastore = require('../'); +const Datastore = require('../'); describe('entity', function() { - var entity; + let entity; beforeEach(function() { delete require.cache[require.resolve('../src/entity.js')]; @@ -43,125 +43,125 @@ describe('entity', function() { describe('Double', function() { it('should store the value', function() { - var value = 8.3; + const value = 8.3; - var double = new entity.Double(value); + const double = new entity.Double(value); assert.strictEqual(double.value, value); }); }); describe('isDsDouble', function() { it('should correctly identify a Double', function() { - var double = new entity.Double(0.42); + const double = new entity.Double(0.42); assert.strictEqual(entity.isDsDouble(double), true); }); it('should correctly identify a homomorphic non-Double', function() { - var nonDouble = Object.assign({}, new entity.Double(42)); + const nonDouble = Object.assign({}, new entity.Double(42)); assert.strictEqual(entity.isDsDouble(nonDouble), false); }); it('should correctly identify a primitive', function() { - var primitiveDouble = 0.42; + const primitiveDouble = 0.42; assert.strictEqual(entity.isDsDouble(primitiveDouble), false); }); }); describe('Int', function() { it('should store the stringified value', function() { - var value = 8; + const value = 8; - var int = new entity.Int(value); + const int = new entity.Int(value); assert.strictEqual(int.value, value.toString()); }); }); describe('isDsInt', function() { it('should correctly identify an Int', function() { - var int = new entity.Int(42); + const int = new entity.Int(42); assert.strictEqual(entity.isDsInt(int), true); }); it('should correctly identify homomorphic non-Int', function() { - var nonInt = Object.assign({}, new entity.Int(42)); + const nonInt = Object.assign({}, new entity.Int(42)); assert.strictEqual(entity.isDsInt(nonInt), false); }); it('should correctly identify a primitive', function() { - var primitiveInt = 42; + const primitiveInt = 42; assert.strictEqual(entity.isDsInt(primitiveInt), false); }); }); describe('GeoPoint', function() { it('should store the value', function() { - var value = { + const value = { latitude: 24, longitude: 88, }; - var geoPoint = new entity.GeoPoint(value); + const geoPoint = new entity.GeoPoint(value); assert.strictEqual(geoPoint.value, value); }); }); describe('isDsGeoPoint', function() { it('should correctly identify a GeoPoint', function() { - var geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); + const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); assert.strictEqual(entity.isDsGeoPoint(geoPoint), true); }); it('should correctly identify a homomorphic non-GeoPoint', function() { - var geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); - var nonGeoPoint = Object.assign({}, geoPoint); + const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); + const nonGeoPoint = Object.assign({}, geoPoint); assert.strictEqual(entity.isDsGeoPoint(nonGeoPoint), false); }); }); describe('Key', function() { it('should assign the namespace', function() { - var namespace = 'NS'; - var key = new entity.Key({namespace: namespace, path: []}); + const namespace = 'NS'; + const key = new entity.Key({namespace: namespace, path: []}); assert.strictEqual(key.namespace, namespace); }); it('should assign the kind', function() { - var kind = 'kind'; - var key = new entity.Key({path: [kind]}); + const kind = 'kind'; + const key = new entity.Key({path: [kind]}); assert.strictEqual(key.kind, kind); }); it('should assign the ID', function() { - var id = 11; - var key = new entity.Key({path: ['Kind', id]}); + const id = 11; + const key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id); }); it('should assign the ID from an Int', function() { - var id = new entity.Int(11); - var key = new entity.Key({path: ['Kind', id]}); + const id = new entity.Int(11); + const key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id.value); }); it('should assign the name', function() { - var name = 'name'; - var key = new entity.Key({path: ['Kind', name]}); + const name = 'name'; + const key = new entity.Key({path: ['Kind', name]}); assert.strictEqual(key.name, name); }); it('should assign a parent', function() { - var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); + const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert(key.parent instanceof entity.Key); }); it('should not modify input path', function() { - var inputPath = ['ParentKind', 1, 'Kind', 1]; + const inputPath = ['ParentKind', 1, 'Kind', 1]; new entity.Key({path: inputPath}); assert.deepStrictEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); }); it('should always compute the correct path', function() { - var key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); + const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert.deepStrictEqual(key.path, ['ParentKind', 1, 'Kind', 1]); key.parent.kind = 'GrandParentKind'; @@ -173,30 +173,30 @@ describe('entity', function() { describe('isDsKey', function() { it('should correctly identify a Key', function() { - var key = new entity.Key({path: ['Kind', 1]}); + const key = new entity.Key({path: ['Kind', 1]}); assert.strictEqual(entity.isDsKey(key), true); }); it('should correctly identify a homomorphic non-Key', function() { - var notKey = Object.assign({}, new entity.Key({path: ['Kind', 1]})); + const notKey = Object.assign({}, new entity.Key({path: ['Kind', 1]})); assert.strictEqual(entity.isDsKey(notKey), false); }); }); describe('decodeValueProto', function() { it('should decode arrays', function() { - var expectedValue = [{}]; + const expectedValue = [{}]; - var valueProto = { + const valueProto = { valueType: 'arrayValue', arrayValue: { values: expectedValue, }, }; - var run = false; + let run = false; - var decodeValueProto = entity.decodeValueProto; + const decodeValueProto = entity.decodeValueProto; entity.decodeValueProto = function(valueProto) { if (!run) { run = true; @@ -214,9 +214,9 @@ describe('entity', function() { }); it('should decode blobs', function() { - var expectedValue = Buffer.from('Hi'); + const expectedValue = Buffer.from('Hi'); - var valueProto = { + const valueProto = { valueType: 'blobValue', blobValue: expectedValue.toString('base64'), }; @@ -228,21 +228,21 @@ describe('entity', function() { }); it('should decode null', function() { - var expectedValue = null; + const expectedValue = null; - var valueProto = { + const valueProto = { valueType: 'nullValue', nullValue: 0, }; - var decodedValue = entity.decodeValueProto(valueProto); + const decodedValue = entity.decodeValueProto(valueProto); assert.deepStrictEqual(decodedValue, expectedValue); }); it('should decode doubles', function() { - var expectedValue = 8.3; + const expectedValue = 8.3; - var valueProto = { + const valueProto = { valueType: 'doubleValue', doubleValue: expectedValue, }; @@ -251,9 +251,9 @@ describe('entity', function() { }); it('should decode ints', function() { - var expectedValue = 8; + const expectedValue = 8; - var valueProto = { + const valueProto = { valueType: 'integerValue', integerValue: expectedValue, }; @@ -262,9 +262,9 @@ describe('entity', function() { }); it('should decode entities', function() { - var expectedValue = {}; + const expectedValue = {}; - var valueProto = { + const valueProto = { valueType: 'entityValue', entityValue: expectedValue, }; @@ -278,9 +278,9 @@ describe('entity', function() { }); it('should decode keys', function() { - var expectedValue = {}; + const expectedValue = {}; - var valueProto = { + const valueProto = { valueType: 'keyValue', keyValue: expectedValue, }; @@ -294,14 +294,14 @@ describe('entity', function() { }); it('should decode timestamps', function() { - var date = new Date(); + const date = new Date(); - var seconds = Math.floor(date.getTime() / 1000); - var ms = date.getMilliseconds(); + const seconds = Math.floor(date.getTime() / 1000); + const ms = date.getMilliseconds(); - var expectedValue = new Date(seconds * 1000 + ms); + const expectedValue = new Date(seconds * 1000 + ms); - var valueProto = { + const valueProto = { valueType: 'timestampValue', timestampValue: { seconds: seconds, @@ -316,9 +316,9 @@ describe('entity', function() { }); it('should return the value if no conversions are necessary', function() { - var expectedValue = false; + const expectedValue = false; - var valueProto = { + const valueProto = { valueType: 'booleanValue', booleanValue: expectedValue, }; @@ -329,9 +329,9 @@ describe('entity', function() { describe('encodeValue', function() { it('should encode a boolean', function() { - var value = true; + const value = true; - var expectedValueProto = { + const expectedValueProto = { booleanValue: value, }; @@ -339,9 +339,9 @@ describe('entity', function() { }); it('should encode null', function() { - var value = null; + const value = null; - var expectedValueProto = { + const expectedValueProto = { nullValue: 0, }; @@ -349,9 +349,9 @@ describe('entity', function() { }); it('should encode an int', function() { - var value = 8; + const value = 8; - var expectedValueProto = { + const expectedValueProto = { integerValue: value, }; @@ -364,9 +364,9 @@ describe('entity', function() { }); it('should encode an Int object', function() { - var value = new entity.Int(3); + const value = new entity.Int(3); - var expectedValueProto = { + const expectedValueProto = { integerValue: value.value, }; @@ -374,9 +374,9 @@ describe('entity', function() { }); it('should encode a double', function() { - var value = 8.3; + const value = 8.3; - var expectedValueProto = { + const expectedValueProto = { doubleValue: value, }; @@ -389,9 +389,9 @@ describe('entity', function() { }); it('should encode a Double object', function() { - var value = new entity.Double(3); + const value = new entity.Double(3); - var expectedValueProto = { + const expectedValueProto = { doubleValue: value.value, }; @@ -399,9 +399,9 @@ describe('entity', function() { }); it('should encode a GeoPoint object', function() { - var value = new entity.GeoPoint(); + const value = new entity.GeoPoint(); - var expectedValueProto = { + const expectedValueProto = { geoPointValue: value.value, }; @@ -409,10 +409,10 @@ describe('entity', function() { }); it('should encode a date', function() { - var value = new Date(); - var seconds = value.getTime() / 1000; + const value = new Date(); + const seconds = value.getTime() / 1000; - var expectedValueProto = { + const expectedValueProto = { timestampValue: { seconds: Math.floor(seconds), nanos: value.getMilliseconds() * 1e6, @@ -423,9 +423,9 @@ describe('entity', function() { }); it('should encode a string', function() { - var value = 'Hi'; + const value = 'Hi'; - var expectedValueProto = { + const expectedValueProto = { stringValue: value, }; @@ -433,9 +433,9 @@ describe('entity', function() { }); it('should encode a buffer', function() { - var value = Buffer.from('Hi'); + const value = Buffer.from('Hi'); - var expectedValueProto = { + const expectedValueProto = { blobValue: value, }; @@ -443,17 +443,17 @@ describe('entity', function() { }); it('should encode an array', function() { - var value = [{}]; + const value = [{}]; - var expectedValueProto = { + const expectedValueProto = { arrayValue: { values: value, }, }; - var run = false; + let run = false; - var encodeValue = entity.encodeValue; + const encodeValue = entity.encodeValue; entity.encodeValue = function(value_) { if (!run) { run = true; @@ -468,12 +468,12 @@ describe('entity', function() { }); it('should encode a Key', function() { - var value = new entity.Key({ + const value = new entity.Key({ namespace: 'ns', path: ['Kind', 1], }); - var expectedValueProto = { + const expectedValueProto = { keyValue: value, }; @@ -486,11 +486,11 @@ describe('entity', function() { }); it('should encode an object', function() { - var value = { + const value = { key: 'value', }; - var expectedValueProto = { + const expectedValueProto = { entityValue: { properties: { key: value.key, @@ -498,9 +498,9 @@ describe('entity', function() { }, }; - var run = false; + let run = false; - var encodeValue = entity.encodeValue; + const encodeValue = entity.encodeValue; entity.encodeValue = function(value_) { if (!run) { run = true; @@ -515,7 +515,7 @@ describe('entity', function() { }); it('should clone an object', function() { - var value = { + const value = { a: { b: { obj: true, @@ -523,18 +523,18 @@ describe('entity', function() { }, }; - var originalValue = extend(true, {}, value); + const originalValue = extend(true, {}, value); - var encodedValue = entity.encodeValue(value); + const encodedValue = entity.encodeValue(value); assert.deepStrictEqual(value, originalValue); assert.notStrictEqual(value, encodedValue); }); it('should encode an empty object', function() { - var value = {}; + const value = {}; - var expectedValueProto = { + const expectedValueProto = { entityValue: { properties: {}, }, @@ -552,11 +552,11 @@ describe('entity', function() { describe('entityFromEntityProto', function() { it('should convert entity proto to entity', function() { - var expectedEntity = { + const expectedEntity = { name: 'Stephen', }; - var entityProto = { + const entityProto = { properties: { name: { valueType: 'stringValue', @@ -574,15 +574,15 @@ describe('entity', function() { describe('entityToEntityProto', function() { it('should format an entity', function() { - var value = 'Stephen'; + const value = 'Stephen'; - var entityObject = { + const entityObject = { data: { name: value, }, }; - var expectedEntityProto = { + const expectedEntityProto = { key: null, properties: entityObject.data, }; @@ -599,23 +599,23 @@ describe('entity', function() { }); it('should respect excludeFromIndexes', function() { - var value1 = 'Stephen'; - var value2 = 'Stephen2'; - var value3 = 'Stephen3'; - var value4 = 'Stephen4'; - var value5 = 'Stephen5'; - var value6 = 'Stephen6'; - var value7 = 'Stephen7'; - var value8 = 'Stephen8'; - var value9 = 'Stephen9'; - var value10 = 'Stephen10'; - var value11 = 'Stephen11'; - var value12 = 'Stephen12'; - var value13 = 'something'; - var value14 = 'else'; - var value15 = 'whatever'; - - var entityObject = { + const value1 = 'Stephen'; + const value2 = 'Stephen2'; + const value3 = 'Stephen3'; + const value4 = 'Stephen4'; + const value5 = 'Stephen5'; + const value6 = 'Stephen6'; + const value7 = 'Stephen7'; + const value8 = 'Stephen8'; + const value9 = 'Stephen9'; + const value10 = 'Stephen10'; + const value11 = 'Stephen11'; + const value12 = 'Stephen12'; + const value13 = 'something'; + const value14 = 'else'; + const value15 = 'whatever'; + + const entityObject = { excludeFromIndexes: [ 'name', 'entity.name', @@ -713,7 +713,7 @@ describe('entity', function() { }, }; - var expectedEntityProto = { + const expectedEntityProto = { key: null, properties: { name: { @@ -1022,19 +1022,19 @@ describe('entity', function() { describe('formatArray', function() { it('should convert protos to key/data entity array', function() { - var key = {}; + const key = {}; - var entityProto = { + const entityProto = { key: key, }; - var results = [ + const results = [ { entity: entityProto, }, ]; - var expectedResults = entityProto; + const expectedResults = entityProto; entity.keyFromKeyProto = function(key_) { assert.strictEqual(key_, key); @@ -1046,7 +1046,7 @@ describe('entity', function() { return entityProto; }; - var ent = entity.formatArray(results)[0]; + const ent = entity.formatArray(results)[0]; assert.deepStrictEqual(ent, expectedResults); assert.strictEqual(ent[entity.KEY_SYMBOL], key); @@ -1055,7 +1055,7 @@ describe('entity', function() { describe('isKeyComplete', function() { it('should convert key to key proto', function(done) { - var key = new entity.Key({ + const key = new entity.Key({ path: ['Kind', 123], }); @@ -1069,7 +1069,7 @@ describe('entity', function() { }); it('should return true if key has id', function() { - var key = new entity.Key({ + const key = new entity.Key({ path: ['Kind', 123], }); @@ -1077,7 +1077,7 @@ describe('entity', function() { }); it('should return true if key has name', function() { - var key = new entity.Key({ + const key = new entity.Key({ path: ['Kind', 'name'], }); @@ -1085,7 +1085,7 @@ describe('entity', function() { }); it('should return false if key does not have name or ID', function() { - var key = new entity.Key({ + const key = new entity.Key({ path: ['Kind'], }); @@ -1094,9 +1094,9 @@ describe('entity', function() { }); describe('keyFromKeyProto', function() { - var NAMESPACE = 'Namespace'; + const NAMESPACE = 'Namespace'; - var keyProto = { + const keyProto = { partitionId: { namespaceId: NAMESPACE, projectId: 'project-id', @@ -1138,7 +1138,7 @@ describe('entity', function() { }); it('should return the created Key', function() { - var expectedValue = {}; + const expectedValue = {}; entity.Key = function() { return expectedValue; @@ -1148,7 +1148,7 @@ describe('entity', function() { }); it('should throw if path is invalid', function(done) { - var keyProtoInvalid = { + const keyProtoInvalid = { partitionId: { namespaceId: 'Namespace', projectId: 'project-id', @@ -1175,11 +1175,11 @@ describe('entity', function() { describe('keyToKeyProto', function() { it('should handle hierarchical key definitions', function() { - var key = new entity.Key({ + const key = new entity.Key({ path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)], }); - var keyProto = entity.keyToKeyProto(key); + const keyProto = entity.keyToKeyProto(key); assert.strictEqual(keyProto.partitionId, undefined); @@ -1197,12 +1197,12 @@ describe('entity', function() { }); it('should detect the namespace of the hierarchical keys', function() { - var key = new entity.Key({ + const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', 1, 'Kind2', 'name'], }); - var keyProto = entity.keyToKeyProto(key); + const keyProto = entity.keyToKeyProto(key); assert.strictEqual(keyProto.partitionId.namespaceId, 'Namespace'); @@ -1216,17 +1216,17 @@ describe('entity', function() { }); it('should handle incomplete keys with & without namespaces', function() { - var incompleteKey = new entity.Key({ + const incompleteKey = new entity.Key({ path: ['Kind'], }); - var incompleteKeyWithNs = new entity.Key({ + const incompleteKeyWithNs = new entity.Key({ namespace: 'Namespace', path: ['Kind'], }); - var keyProto = entity.keyToKeyProto(incompleteKey); - var keyProtoWithNs = entity.keyToKeyProto(incompleteKeyWithNs); + const keyProto = entity.keyToKeyProto(incompleteKey); + const keyProtoWithNs = entity.keyToKeyProto(incompleteKeyWithNs); assert.strictEqual(keyProto.partitionId, undefined); assert.strictEqual(keyProto.path[0].kind, 'Kind'); @@ -1240,7 +1240,7 @@ describe('entity', function() { }); it('should throw if key contains 0 items', function(done) { - var key = new entity.Key({ + const key = new entity.Key({ path: [], }); @@ -1254,7 +1254,7 @@ describe('entity', function() { }); it('should throw if key path contains null ids', function(done) { - var key = new entity.Key({ + const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', null, 'Company'], }); @@ -1269,7 +1269,7 @@ describe('entity', function() { }); it('should not throw if key is incomplete', function() { - var key = new entity.Key({ + const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', 123, 'Company', null], }); @@ -1281,7 +1281,7 @@ describe('entity', function() { }); describe('queryToQueryProto', function() { - var queryProto = { + const queryProto = { distinctOn: [ { name: 'name', @@ -1352,13 +1352,13 @@ describe('entity', function() { }; it('should support all configurations of a query', function() { - var ancestorKey = new entity.Key({ + const ancestorKey = new entity.Key({ path: ['Kind2', 'somename'], }); - var ds = new Datastore({projectId: 'project-id'}); + const ds = new Datastore({projectId: 'project-id'}); - var query = ds + const query = ds .createQuery('Kind1') .filter('name', 'John') .start('start') @@ -1374,16 +1374,16 @@ describe('entity', function() { }); it('should handle buffer start and end values', function() { - var ds = new Datastore({projectId: 'project-id'}); - var startVal = Buffer.from('start'); - var endVal = Buffer.from('end'); + const ds = new Datastore({projectId: 'project-id'}); + const startVal = Buffer.from('start'); + const endVal = Buffer.from('end'); - var query = ds + const query = ds .createQuery('Kind1') .start(startVal) .end(endVal); - var queryProto = entity.queryToQueryProto(query); + const queryProto = entity.queryToQueryProto(query); assert.strictEqual(queryProto.endCursor, endVal); assert.strictEqual(queryProto.startCursor, startVal); }); diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 0117b9c2727..dc700ab76f9 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -18,28 +18,28 @@ const assert = require('assert'); const datastoreModule = require('../src'); -var FAKE_STATUS_CODE = 1; -var error = new Error(); +const FAKE_STATUS_CODE = 1; +const error = new Error(); error.code = FAKE_STATUS_CODE; describe('DatastoreClient', () => { describe('lookup', () => { it('invokes lookup without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.lookup = mockSimpleGrpcMethod( @@ -55,15 +55,15 @@ describe('DatastoreClient', () => { }); it('invokes lookup with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; @@ -82,21 +82,21 @@ describe('DatastoreClient', () => { describe('runQuery', () => { it('invokes runQuery without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var partitionId = {}; - var request = { + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { projectId: projectId, partitionId: partitionId, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.runQuery = mockSimpleGrpcMethod( @@ -112,15 +112,15 @@ describe('DatastoreClient', () => { }); it('invokes runQuery with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var partitionId = {}; - var request = { + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { projectId: projectId, partitionId: partitionId, }; @@ -143,20 +143,20 @@ describe('DatastoreClient', () => { describe('beginTransaction', () => { it('invokes beginTransaction without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var request = { + const projectId = 'projectId-1969970175'; + const request = { projectId: projectId, }; // Mock response - var transaction = '-34'; - var expectedResponse = { + const transaction = '-34'; + const expectedResponse = { transaction: transaction, }; @@ -174,14 +174,14 @@ describe('DatastoreClient', () => { }); it('invokes beginTransaction with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var request = { + const projectId = 'projectId-1969970175'; + const request = { projectId: projectId, }; @@ -203,24 +203,24 @@ describe('DatastoreClient', () => { describe('commit', () => { it('invokes commit without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var mode = 'MODE_UNSPECIFIED'; - var mutations = []; - var request = { + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { projectId: projectId, mode: mode, mutations: mutations, }; // Mock response - var indexUpdates = 1425228195; - var expectedResponse = { + const indexUpdates = 1425228195; + const expectedResponse = { indexUpdates: indexUpdates, }; @@ -238,16 +238,16 @@ describe('DatastoreClient', () => { }); it('invokes commit with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var mode = 'MODE_UNSPECIFIED'; - var mutations = []; - var request = { + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { projectId: projectId, mode: mode, mutations: mutations, @@ -267,21 +267,21 @@ describe('DatastoreClient', () => { describe('rollback', () => { it('invokes rollback without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var transaction = '-34'; - var request = { + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { projectId: projectId, transaction: transaction, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.rollback = mockSimpleGrpcMethod( @@ -297,15 +297,15 @@ describe('DatastoreClient', () => { }); it('invokes rollback with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var transaction = '-34'; - var request = { + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { projectId: projectId, transaction: transaction, }; @@ -328,21 +328,21 @@ describe('DatastoreClient', () => { describe('allocateIds', () => { it('invokes allocateIds without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( @@ -358,15 +358,15 @@ describe('DatastoreClient', () => { }); it('invokes allocateIds with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; @@ -389,21 +389,21 @@ describe('DatastoreClient', () => { describe('reserveIds', () => { it('invokes reserveIds without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( @@ -419,15 +419,15 @@ describe('DatastoreClient', () => { }); it('invokes reserveIds with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.js index aa88d565123..c506d57802a 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.js @@ -16,14 +16,14 @@ 'use strict'; -var assert = require('assert'); -var extend = require('extend'); -var gax = new require('google-gax'); -var proxyquire = require('proxyquire'); +const assert = require('assert'); +const extend = require('extend'); +const gax = new require('google-gax'); +const proxyquire = require('proxyquire'); -var v1 = require('../src/v1/index.js'); +const v1 = require('../src/v1/index.js'); -var fakeEntity = { +const fakeEntity = { KEY_SYMBOL: Symbol('fake key symbol'), Int: function(value) { this.value = value; @@ -51,14 +51,14 @@ var fakeEntity = { }, }; -var GoogleAuthOverride; +let GoogleAuthOverride; function fakeGoogleAuth() { return (GoogleAuthOverride || function() {}).apply(null, arguments); } -var createInsecureOverride; +let createInsecureOverride; -var fakeGoogleGax = { +const fakeGoogleGax = { GrpcClient: class extends gax.GrpcClient { constructor(opts) { // super constructor must be called first! @@ -88,15 +88,15 @@ function FakeTransaction() { function FakeV1() {} describe('Datastore', function() { - var Datastore; - var datastore; + let Datastore; + let datastore; - var PROJECT_ID = 'project-id'; - var NAMESPACE = 'namespace'; + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'namespace'; - var DATASTORE_PROJECT_ID_CACHED = process.env.DATASTORE_PROJECT_ID; + const DATASTORE_PROJECT_ID_CACHED = process.env.DATASTORE_PROJECT_ID; - var OPTIONS = { + const OPTIONS = { projectId: PROJECT_ID, apiEndpoint: 'http://endpoint', credentials: {}, @@ -171,21 +171,21 @@ describe('Datastore', function() { }); it('should default project ID to placeholder', function() { - var datastore = new Datastore({}); + const datastore = new Datastore({}); assert.strictEqual(datastore.projectId, '{{projectId}}'); }); it('should not default options.projectId to placeholder', function() { - var datastore = new Datastore({}); + const datastore = new Datastore({}); assert.strictEqual(datastore.options.projectId, undefined); }); it('should use DATASTORE_PROJECT_ID', function() { - var projectId = 'overridden-project-id'; + const projectId = 'overridden-project-id'; process.env.DATASTORE_PROJECT_ID = projectId; - var datastore = new Datastore({}); + const datastore = new Datastore({}); assert.strictEqual(datastore.projectId, projectId); assert.strictEqual(datastore.options.projectId, projectId); @@ -196,7 +196,7 @@ describe('Datastore', function() { }); it('should set default API connection details', function(done) { - var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; @@ -211,12 +211,12 @@ describe('Datastore', function() { it('should localize the options', function() { delete process.env.DATASTORE_PROJECT_ID; - var options = { + const options = { a: 'b', c: 'd', }; - var datastore = new Datastore(options); + const datastore = new Datastore(options); assert.notStrictEqual(datastore.options, options); @@ -237,53 +237,53 @@ describe('Datastore', function() { }); it('should set port if detected', function() { - var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - var port = 99; + const port = 99; Datastore.prototype.determineBaseUrl_ = function() { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; this.port_ = port; }; - var datastore = new Datastore(OPTIONS); + const datastore = new Datastore(OPTIONS); assert.strictEqual(datastore.options.port, port); }); it('should set grpc ssl credentials if custom endpoint', function() { - var determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; Datastore.prototype.determineBaseUrl_ = function() { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; this.customEndpoint_ = true; }; - var fakeInsecureCreds = {}; + const fakeInsecureCreds = {}; createInsecureOverride = function() { return fakeInsecureCreds; }; - var datastore = new Datastore(OPTIONS); + const datastore = new Datastore(OPTIONS); assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); }); it('should cache a local GoogleAuth instance', function() { - var fakeGoogleAuthInstance = {}; + const fakeGoogleAuthInstance = {}; GoogleAuthOverride = function() { return fakeGoogleAuthInstance; }; - var datastore = new Datastore({}); + const datastore = new Datastore({}); assert.strictEqual(datastore.auth, fakeGoogleAuthInstance); }); }); describe('double', function() { it('should expose Double builder', function() { - var aDouble = 7.0; - var double = Datastore.double(aDouble); + const aDouble = 7.0; + const double = Datastore.double(aDouble); assert.strictEqual(double.value, aDouble); }); @@ -294,8 +294,8 @@ describe('Datastore', function() { describe('geoPoint', function() { it('should expose GeoPoint builder', function() { - var aGeoPoint = {latitude: 24, longitude: 88}; - var geoPoint = Datastore.geoPoint(aGeoPoint); + const aGeoPoint = {latitude: 24, longitude: 88}; + const geoPoint = Datastore.geoPoint(aGeoPoint); assert.strictEqual(geoPoint.value, aGeoPoint); }); @@ -306,8 +306,8 @@ describe('Datastore', function() { describe('int', function() { it('should expose Int builder', function() { - var anInt = 7; - var int = Datastore.int(anInt); + const anInt = 7; + const int = Datastore.int(anInt); assert.strictEqual(int.value, anInt); }); @@ -318,9 +318,9 @@ describe('Datastore', function() { describe('isDouble', function() { it('should pass value to entity', function() { - var value = 0.42; - var called = false; - var saved = fakeEntity.isDsDouble; + const value = 0.42; + let called = false; + const saved = fakeEntity.isDsDouble; fakeEntity.isDsDouble = function(arg) { assert.strictEqual(arg, value); called = true; @@ -332,7 +332,7 @@ describe('Datastore', function() { }); it('should expose Double identifier', function() { - var something = {}; + const something = {}; Datastore.isDouble(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); @@ -340,9 +340,9 @@ describe('Datastore', function() { describe('isGeoPoint', function() { it('should pass value to entity', function() { - var value = {fakeLatitude: 1, fakeLongitude: 2}; - var called = false; - var saved = fakeEntity.isDsGeoPoint; + const value = {fakeLatitude: 1, fakeLongitude: 2}; + let called = false; + const saved = fakeEntity.isDsGeoPoint; fakeEntity.isDsGeoPoint = function(arg) { assert.strictEqual(arg, value); called = true; @@ -354,7 +354,7 @@ describe('Datastore', function() { }); it('should expose GeoPoint identifier', function() { - var something = {}; + const something = {}; Datastore.isGeoPoint(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); @@ -362,9 +362,9 @@ describe('Datastore', function() { describe('isInt', function() { it('should pass value to entity', function() { - var value = 42; - var called = false; - var saved = fakeEntity.isDsInt; + const value = 42; + let called = false; + const saved = fakeEntity.isDsInt; fakeEntity.isDsInt = function(arg) { assert.strictEqual(arg, value); called = true; @@ -376,7 +376,7 @@ describe('Datastore', function() { }); it('should expose Int identifier', function() { - var something = {}; + const something = {}; Datastore.isInt(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); @@ -384,9 +384,9 @@ describe('Datastore', function() { describe('isKey', function() { it('should pass value to entity', function() { - var value = {zz: true}; - var called = false; - var saved = fakeEntity.isDsKey; + const value = {zz: true}; + let called = false; + const saved = fakeEntity.isDsKey; fakeEntity.isDsKey = function(arg) { assert.strictEqual(arg, value); called = true; @@ -398,7 +398,7 @@ describe('Datastore', function() { }); it('should expose Key identifier', function() { - var something = {}; + const something = {}; datastore.isKey(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); @@ -458,10 +458,10 @@ describe('Datastore', function() { describe('createQuery', function() { it('should return a Query object', function() { - var namespace = 'namespace'; - var kind = ['Kind']; + const namespace = 'namespace'; + const kind = ['Kind']; - var query = datastore.createQuery(namespace, kind); + const query = datastore.createQuery(namespace, kind); assert(query instanceof FakeQuery); assert.strictEqual(query.calledWith_[0], datastore); @@ -470,8 +470,8 @@ describe('Datastore', function() { }); it('should include the default namespace', function() { - var kind = ['Kind']; - var query = datastore.createQuery(kind); + const kind = ['Kind']; + const query = datastore.createQuery(kind); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); @@ -479,7 +479,7 @@ describe('Datastore', function() { }); it('should include the default namespace in a kindless query', function() { - var query = datastore.createQuery(); + const query = datastore.createQuery(); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); @@ -489,15 +489,15 @@ describe('Datastore', function() { describe('key', function() { it('should return a Key object', function() { - var options = {}; - var key = datastore.key(options); + const options = {}; + const key = datastore.key(options); assert.strictEqual(key.calledWith_[0], options); }); it('should use a non-object argument as the path', function() { - var options = 'path'; - var key = datastore.key(options); + const options = 'path'; + const key = datastore.key(options); assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); assert.deepStrictEqual(key.calledWith_[0].path, [options]); @@ -506,13 +506,13 @@ describe('Datastore', function() { describe('transaction', function() { it('should return a Transaction object', function() { - var transaction = datastore.transaction(); + const transaction = datastore.transaction(); assert.strictEqual(transaction.calledWith_[0], datastore); }); it('should pass options to the Transaction constructor', function() { - var options = {}; - var transaction = datastore.transaction(options); + const options = {}; + const transaction = datastore.transaction(options); assert.strictEqual(transaction.calledWith_[1], options); }); }); @@ -527,7 +527,7 @@ describe('Datastore', function() { }); it('should default to defaultBaseUrl_', function() { - var defaultBaseUrl_ = 'defaulturl'; + const defaultBaseUrl_ = 'defaulturl'; datastore.defaultBaseUrl_ = defaultBaseUrl_; datastore.determineBaseUrl_(); @@ -535,7 +535,7 @@ describe('Datastore', function() { }); it('should remove slashes from the baseUrl', function() { - var expectedBaseUrl = 'localhost'; + const expectedBaseUrl = 'localhost'; setHost('localhost/'); datastore.determineBaseUrl_(); @@ -563,7 +563,7 @@ describe('Datastore', function() { }); it('should not set customEndpoint_ when using default baseurl', function() { - var datastore = new Datastore({projectId: PROJECT_ID}); + const datastore = new Datastore({projectId: PROJECT_ID}); datastore.determineBaseUrl_(); assert.strictEqual(datastore.customEndpoint_, undefined); }); @@ -579,9 +579,9 @@ describe('Datastore', function() { }); describe('with DATASTORE_EMULATOR_HOST environment variable', function() { - var DATASTORE_EMULATOR_HOST = 'localhost:9090'; - var EXPECTED_BASE_URL = 'localhost'; - var EXPECTED_PORT = 9090; + const DATASTORE_EMULATOR_HOST = 'localhost:9090'; + const EXPECTED_BASE_URL = 'localhost'; + const EXPECTED_PORT = 9090; beforeEach(function() { setHost(DATASTORE_EMULATOR_HOST); diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.js index 7529fd490cc..fbe0648cbe0 100644 --- a/handwritten/nodejs-datastore/test/query.js +++ b/handwritten/nodejs-datastore/test/query.js @@ -16,15 +16,15 @@ 'use strict'; -var assert = require('assert'); +const assert = require('assert'); describe('Query', function() { - var SCOPE = {}; - var NAMESPACE = 'Namespace'; - var KINDS = 'Kind'; + const SCOPE = {}; + const NAMESPACE = 'Namespace'; + const KINDS = 'Kind'; - var Query = require('../src/query.js'); - var query; + const Query = require('../src/query.js'); + let query; beforeEach(function() { query = new Query(SCOPE, NAMESPACE, KINDS); @@ -58,9 +58,9 @@ describe('Query', function() { describe('filter', function() { it('should support filtering', function() { - var now = new Date(); - var query = new Query(['kind1']).filter('date', '<=', now); - var filter = query.filters[0]; + const now = new Date(); + const query = new Query(['kind1']).filter('date', '<=', now); + const filter = query.filters[0]; assert.strictEqual(filter.name, 'date'); assert.strictEqual(filter.op, '<='); @@ -68,8 +68,8 @@ describe('Query', function() { }); it('should recognize all the different operators', function() { - var now = new Date(); - var query = new Query(['kind1']) + const now = new Date(); + const query = new Query(['kind1']) .filter('date', '<=', now) .filter('name', '=', 'Title') .filter('count', '>', 20) @@ -98,27 +98,31 @@ describe('Query', function() { }); it('should remove any whitespace surrounding the filter name', function() { - var query = new Query(['kind1']).filter(' count ', '>', 123); + const query = new Query(['kind1']).filter(' count ', '>', 123); assert.strictEqual(query.filters[0].name, 'count'); }); it('should remove any whitespace surrounding the operator', function() { - var query = new Query(['kind1']).filter('count', ' < ', 123); + const query = new Query(['kind1']).filter( + 'count', + ' < ', + 123 + ); assert.strictEqual(query.filters[0].op, '<'); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.filter('count', '<', 5); + const query = new Query(['kind1']); + const nextQuery = query.filter('count', '<', 5); assert.strictEqual(query, nextQuery); }); it('should default the operator to "="', function() { - var query = new Query(['kind1']).filter('name', 'Stephen'); - var filter = query.filters[0]; + const query = new Query(['kind1']).filter('name', 'Stephen'); + const filter = query.filters[0]; assert.strictEqual(filter.name, 'name'); assert.strictEqual(filter.op, '='); @@ -128,7 +132,7 @@ describe('Query', function() { describe('hasAncestor', function() { it('should support ancestor filtering', function() { - var query = new Query(['kind1']).hasAncestor(['kind2', 123]); + const query = new Query(['kind1']).hasAncestor(['kind2', 123]); assert.strictEqual(query.filters[0].name, '__key__'); assert.strictEqual(query.filters[0].op, 'HAS_ANCESTOR'); @@ -136,8 +140,8 @@ describe('Query', function() { }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.hasAncestor(['kind2', 123]); + const query = new Query(['kind1']); + const nextQuery = query.hasAncestor(['kind2', 123]); assert.strictEqual(query, nextQuery); }); @@ -145,28 +149,28 @@ describe('Query', function() { describe('order', function() { it('should default ordering to ascending', function() { - var query = new Query(['kind1']).order('name'); + const query = new Query(['kind1']).order('name'); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); }); it('should support ascending order', function() { - var query = new Query(['kind1']).order('name'); + const query = new Query(['kind1']).order('name'); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); }); it('should support descending order', function() { - var query = new Query(['kind1']).order('count', {descending: true}); + const query = new Query(['kind1']).order('count', {descending: true}); assert.strictEqual(query.orders[0].name, 'count'); assert.strictEqual(query.orders[0].sign, '-'); }); it('should support both ascending and descending', function() { - var query = new Query(['kind1']) + const query = new Query(['kind1']) .order('name') .order('count', {descending: true}); @@ -177,8 +181,8 @@ describe('Query', function() { }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.order('name'); + const query = new Query(['kind1']); + const nextQuery = query.order('name'); assert.strictEqual(query, nextQuery); }); @@ -186,20 +190,20 @@ describe('Query', function() { describe('groupBy', function() { it('should store an array of properties to group by', function() { - var query = new Query(['kind1']).groupBy(['name', 'size']); + const query = new Query(['kind1']).groupBy(['name', 'size']); assert.deepStrictEqual(query.groupByVal, ['name', 'size']); }); it('should convert a single property into an array', function() { - var query = new Query(['kind1']).groupBy('name'); + const query = new Query(['kind1']).groupBy('name'); assert.deepStrictEqual(query.groupByVal, ['name']); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.groupBy(['name', 'size']); + const query = new Query(['kind1']); + const nextQuery = query.groupBy(['name', 'size']); assert.strictEqual(query, nextQuery); }); @@ -207,20 +211,20 @@ describe('Query', function() { describe('select', function() { it('should store an array of properties to select', function() { - var query = new Query(['kind1']).select(['name', 'size']); + const query = new Query(['kind1']).select(['name', 'size']); assert.deepStrictEqual(query.selectVal, ['name', 'size']); }); it('should convert a single property into an array', function() { - var query = new Query(['kind1']).select('name'); + const query = new Query(['kind1']).select('name'); assert.deepStrictEqual(query.selectVal, ['name']); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.select(['name', 'size']); + const query = new Query(['kind1']); + const nextQuery = query.select(['name', 'size']); assert.strictEqual(query, nextQuery); }); @@ -228,14 +232,14 @@ describe('Query', function() { describe('start', function() { it('should capture the starting cursor value', function() { - var query = new Query(['kind1']).start('X'); + const query = new Query(['kind1']).start('X'); assert.strictEqual(query.startVal, 'X'); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.start('X'); + const query = new Query(['kind1']); + const nextQuery = query.start('X'); assert.strictEqual(query, nextQuery); }); @@ -243,14 +247,14 @@ describe('Query', function() { describe('end', function() { it('should capture the ending cursor value', function() { - var query = new Query(['kind1']).end('Z'); + const query = new Query(['kind1']).end('Z'); assert.strictEqual(query.endVal, 'Z'); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.end('Z'); + const query = new Query(['kind1']); + const nextQuery = query.end('Z'); assert.strictEqual(query, nextQuery); }); @@ -258,14 +262,14 @@ describe('Query', function() { describe('limit', function() { it('should capture the number of results to limit to', function() { - var query = new Query(['kind1']).limit(20); + const query = new Query(['kind1']).limit(20); assert.strictEqual(query.limitVal, 20); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.limit(20); + const query = new Query(['kind1']); + const nextQuery = query.limit(20); assert.strictEqual(query, nextQuery); }); @@ -273,14 +277,14 @@ describe('Query', function() { describe('offset', function() { it('should capture the number of results to offset by', function() { - var query = new Query(['kind1']).offset(100); + const query = new Query(['kind1']).offset(100); assert.strictEqual(query.offsetVal, 100); }); it('should return the query instance', function() { - var query = new Query(['kind1']); - var nextQuery = query.offset(100); + const query = new Query(['kind1']); + const nextQuery = query.offset(100); assert.strictEqual(query, nextQuery); }); @@ -288,7 +292,7 @@ describe('Query', function() { describe('run', function() { it('should call the parent instance runQuery correctly', function(done) { - var args = [0, 1, 2]; + const args = [0, 1, 2]; query.scope.runQuery = function() { assert.strictEqual(this, query.scope); @@ -305,8 +309,8 @@ describe('Query', function() { describe('runStream', function() { it('should call the parent instance runQueryStream correctly', function() { - var args = [0, 1, 2]; - var runQueryReturnValue = {}; + const args = [0, 1, 2]; + const runQueryReturnValue = {}; query.scope.runQueryStream = function() { assert.strictEqual(this, query.scope); @@ -317,7 +321,7 @@ describe('Query', function() { return runQueryReturnValue; }; - var results = query.runStream.apply(query, args); + const results = query.runStream.apply(query, args); assert.strictEqual(results, runQueryReturnValue); }); }); diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 8a860f3d894..6269ffa69cb 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -16,20 +16,20 @@ 'use strict'; -var assert = require('assert'); -var extend = require('extend'); -var is = require('is'); -var proxyquire = require('proxyquire'); -var sinon = require('sinon').sandbox.create(); -var through = require('through2'); -var pfy = require('@google-cloud/promisify'); -var pjy = require('@google-cloud/projectify'); - -var entity = require('../src/entity.js'); -var Query = require('../src/query.js'); - -var promisified = false; -var fakePfy = extend({}, pfy, { +const assert = require('assert'); +const extend = require('extend'); +const is = require('is'); +const proxyquire = require('proxyquire'); +const sinon = require('sinon').sandbox.create(); +const through = require('through2'); +const pfy = require('@google-cloud/promisify'); +const pjy = require('@google-cloud/projectify'); + +const entity = require('../src/entity.js'); +const Query = require('../src/query.js'); + +let promisified = false; +const fakePfy = extend({}, pfy, { promisifyAll: function(Class) { if (Class.name === 'DatastoreRequest') { promisified = true; @@ -37,23 +37,23 @@ var fakePfy = extend({}, pfy, { }, }); -var fakePjy = { +const fakePjy = { replaceProjectIdToken: function() { return (pjyOverride || pjy.replaceProjectIdToken).apply(null, arguments); }, }; -var v1FakeClientOverride; -var fakeV1 = { +let v1FakeClientOverride; +const fakeV1 = { FakeClient: function() { return (v1FakeClientOverride || function() {}).apply(null, arguments); }, }; -var overrides = {}; +let overrides = {}; function override(name, object) { - var cachedObject = extend({}, object); + const cachedObject = extend({}, object); overrides[name] = {}; Object.keys(object).forEach(function(methodName) { @@ -62,7 +62,7 @@ function override(name, object) { } object[methodName] = function() { - var args = arguments; + const args = arguments; if (overrides[name][methodName]) { return overrides[name][methodName].apply(this, args); @@ -89,10 +89,10 @@ function FakeQuery() { let pjyOverride; describe('Request', function() { - var Request; - var request; + let Request; + let request; - var key; + let key; before(function() { Request = proxyquire('../src/request.js', { @@ -131,7 +131,7 @@ describe('Request', function() { describe('prepareEntityObject_', function() { it('should clone an object', function() { - var obj = { + const obj = { data: { nested: { obj: true, @@ -139,9 +139,9 @@ describe('Request', function() { }, method: 'insert', }; - var expectedPreparedEntityObject = extend(true, {}, obj); + const expectedPreparedEntityObject = extend(true, {}, obj); - var preparedEntityObject = Request.prepareEntityObject_(obj); + const preparedEntityObject = Request.prepareEntityObject_(obj); assert.notStrictEqual(preparedEntityObject, obj); @@ -154,11 +154,11 @@ describe('Request', function() { }); it('should format an entity', function() { - var key = {}; - var entityObject = {data: true}; + const key = {}; + const entityObject = {data: true}; entityObject[entity.KEY_SYMBOL] = key; - var preparedEntityObject = Request.prepareEntityObject_(entityObject); + const preparedEntityObject = Request.prepareEntityObject_(entityObject); assert.strictEqual(preparedEntityObject.key, key); assert.strictEqual(preparedEntityObject.data.data, entityObject.data); @@ -166,10 +166,10 @@ describe('Request', function() { }); describe('allocateIds', function() { - var INCOMPLETE_KEY = {}; + const INCOMPLETE_KEY = {}; - var ALLOCATIONS = 2; - var OPTIONS = { + const ALLOCATIONS = 2; + const OPTIONS = { allocations: ALLOCATIONS, }; @@ -190,7 +190,7 @@ describe('Request', function() { }); it('should make the correct request', function(done) { - var keyProto = {}; + const keyProto = {}; overrides.entity.keyToKeyProto = function(key) { assert.strictEqual(key, INCOMPLETE_KEY); @@ -201,7 +201,7 @@ describe('Request', function() { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'allocateIds'); - var expectedKeys = []; + const expectedKeys = []; expectedKeys.length = ALLOCATIONS; expectedKeys.fill(keyProto); @@ -225,7 +225,7 @@ describe('Request', function() { }); it('should allow customization of GAX options', function(done) { - var options = extend({}, OPTIONS, { + const options = extend({}, OPTIONS, { gaxOptions: {}, }); @@ -238,8 +238,8 @@ describe('Request', function() { }); describe('error', function() { - var ERROR = new Error('Error.'); - var API_RESPONSE = {}; + const ERROR = new Error('Error.'); + const API_RESPONSE = {}; beforeEach(function() { request.request_ = function(config, callback) { @@ -258,8 +258,8 @@ describe('Request', function() { }); describe('success', function() { - var KEY = {}; - var API_RESPONSE = { + const KEY = {}; + const API_RESPONSE = { keys: [KEY], }; @@ -270,7 +270,7 @@ describe('Request', function() { }); it('should create and return Keys & API response', function(done) { - var key = {}; + const key = {}; overrides.entity.keyFromKeyProto = function(keyProto) { assert.strictEqual(keyProto, API_RESPONSE.keys[0]); @@ -320,13 +320,13 @@ describe('Request', function() { done(); }; - var stream = request.createReadStream(key); + const stream = request.createReadStream(key); stream.emit('reading'); }); it('should allow customization of GAX options', function(done) { - var options = { + const options = { gaxOptions: {}, }; @@ -366,8 +366,8 @@ describe('Request', function() { }); describe('error', function() { - var error = new Error('Error.'); - var apiResponse = {a: 'b', c: 'd'}; + const error = new Error('Error.'); + const apiResponse = {a: 'b', c: 'd'}; beforeEach(function() { request.request_ = function(config, callback) { @@ -388,7 +388,7 @@ describe('Request', function() { }); it('should end stream', function(done) { - var stream = request.createReadStream(key); + const stream = request.createReadStream(key); stream.on('data', function() {}).on('error', function() { setImmediate(function() { @@ -400,7 +400,7 @@ describe('Request', function() { }); describe('success', function() { - var apiResponse = { + const apiResponse = { found: [ { entity: { @@ -449,13 +449,13 @@ describe('Request', function() { ], }; - var expectedResult = entity.formatArray(apiResponse.found)[0]; + const expectedResult = entity.formatArray(apiResponse.found)[0]; - var apiResponseWithMultiEntities = extend(true, {}, apiResponse); - var entities = apiResponseWithMultiEntities.found; + const apiResponseWithMultiEntities = extend(true, {}, apiResponse); + const entities = apiResponseWithMultiEntities.found; entities.push(entities[0]); - var apiResponseWithDeferred = extend(true, {}, apiResponse); + const apiResponseWithDeferred = extend(true, {}, apiResponse); apiResponseWithDeferred.deferred = [ apiResponseWithDeferred.found[0].entity.key, ]; @@ -480,7 +480,7 @@ describe('Request', function() { }); it('should continue looking for deferred results', function(done) { - var numTimesCalled = 0; + let numTimesCalled = 0; request.request_ = function(config, callback) { numTimesCalled++; @@ -490,7 +490,7 @@ describe('Request', function() { return; } - var expectedKeys = apiResponseWithDeferred.deferred + const expectedKeys = apiResponseWithDeferred.deferred .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); @@ -516,7 +516,7 @@ describe('Request', function() { }); it('should not push more results if stream was ended', function(done) { - var entitiesEmitted = 0; + let entitiesEmitted = 0; request.request_ = function(config, callback) { setImmediate(function() { @@ -538,7 +538,7 @@ describe('Request', function() { }); it('should not get more results if stream was ended', function(done) { - var lookupCount = 0; + let lookupCount = 0; request.request_ = function(config, callback) { lookupCount++; @@ -574,7 +574,7 @@ describe('Request', function() { }); it('should return apiResponse in callback', function(done) { - var resp = {success: true}; + const resp = {success: true}; request.request_ = function(config, callback) { callback(null, resp); }; @@ -594,7 +594,7 @@ describe('Request', function() { }); it('should allow customization of GAX options', function(done) { - var gaxOptions = {}; + const gaxOptions = {}; request.request_ = function(config) { assert.strictEqual(config.gaxOpts, gaxOptions); @@ -621,12 +621,12 @@ describe('Request', function() { describe('get', function() { describe('success', function() { - var keys = [key]; - var fakeEntities = [{a: 'a'}, {b: 'b'}]; + const keys = [key]; + const fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { request.createReadStream = sinon.spy(function() { - var stream = through.obj(); + const stream = through.obj(); setImmediate(function() { fakeEntities.forEach(function(entity) { @@ -641,13 +641,13 @@ describe('Request', function() { }); it('should return an array of entities', function(done) { - var options = {}; + const options = {}; request.get(keys, options, function(err, entities) { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); - var spy = request.createReadStream.getCall(0); + const spy = request.createReadStream.getCall(0); assert.strictEqual(spy.args[0], keys); assert.strictEqual(spy.args[1], options); done(); @@ -673,7 +673,7 @@ describe('Request', function() { request.get(keys, null, function(err) { assert.ifError(err); - var spy = request.createReadStream.getCall(0); + const spy = request.createReadStream.getCall(0); assert.deepStrictEqual(spy.args[1], {}); done(); }); @@ -681,11 +681,11 @@ describe('Request', function() { }); describe('error', function() { - var error = new Error('err'); + const error = new Error('err'); beforeEach(function() { request.createReadStream = sinon.spy(function() { - var stream = through.obj(); + const stream = through.obj(); setImmediate(function() { stream.emit('error', error); @@ -706,9 +706,9 @@ describe('Request', function() { describe('insert', function() { it('should prepare entity objects', function(done) { - var entityObject = {}; - var preparedEntityObject = {prepared: true}; - var expectedEntityObject = extend({}, preparedEntityObject, { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = extend({}, preparedEntityObject, { method: 'insert', }); @@ -741,7 +741,7 @@ describe('Request', function() { callback(); }; - var key = new entity.Key({namespace: 'ns', path: ['Company']}); + const key = new entity.Key({namespace: 'ns', path: ['Company']}); request.insert({key: key, data: {}}, done); }); }); @@ -753,7 +753,7 @@ describe('Request', function() { }); it('should clone the query', function(done) { - var query = new FakeQuery(); + let query = new FakeQuery(); query.namespace = 'namespace'; query = extend(true, new FakeQuery(), query); @@ -770,8 +770,8 @@ describe('Request', function() { }); it('should make correct request when the stream is ready', function(done) { - var query = {namespace: 'namespace'}; - var queryProto = {}; + const query = {namespace: 'namespace'}; + const queryProto = {}; overrides.entity.queryToQueryProto = function() { return queryProto; @@ -798,7 +798,7 @@ describe('Request', function() { }); it('should allow customization of GAX options', function(done) { - var options = { + const options = { gaxOptions: {}, }; @@ -838,7 +838,7 @@ describe('Request', function() { }); describe('error', function() { - var error = new Error('Error.'); + const error = new Error('Error.'); beforeEach(function() { request.request_ = function(config, callback) { @@ -858,12 +858,12 @@ describe('Request', function() { }); describe('success', function() { - var entityResultsPerApiCall = { + const entityResultsPerApiCall = { 1: [{a: true}], 2: [{b: true}, {c: true}], }; - var apiResponse = { + const apiResponse = { batch: { entityResults: [{a: true}, {b: true}, {c: true}], endCursor: Buffer.from('abc'), @@ -888,7 +888,7 @@ describe('Request', function() { return array; }; - var entities = []; + const entities = []; request .runQueryStream({}) @@ -903,19 +903,19 @@ describe('Request', function() { }); it('should re-run query if not finished', function(done) { - var query = { + const query = { limitVal: 1, offsetVal: 8, }; - var queryProto = { + const queryProto = { limit: { value: query.limitVal, }, }; - var timesRequestCalled = 0; - var startCalled = false; - var offsetCalled = false; + let timesRequestCalled = 0; + let startCalled = false; + let offsetCalled = false; overrides.entity.formatArray = function(array) { assert.strictEqual( @@ -928,7 +928,7 @@ describe('Request', function() { request.request_ = function(config, callback) { timesRequestCalled++; - var resp = extend(true, {}, apiResponse); + const resp = extend(true, {}, apiResponse); resp.batch.entityResults = entityResultsPerApiCall[timesRequestCalled]; @@ -960,7 +960,7 @@ describe('Request', function() { }; FakeQuery.prototype.offset = function(offset_) { - var offset = query.offsetVal - apiResponse.batch.skippedResults; + const offset = query.offsetVal - apiResponse.batch.skippedResults; assert.strictEqual(offset_, offset); offsetCalled = true; return this; @@ -986,8 +986,8 @@ describe('Request', function() { return queryProto; }; - var entities = []; - var info; + const entities = []; + let info; request .runQueryStream(query) @@ -999,7 +999,7 @@ describe('Request', function() { entities.push(entity); }) .on('end', function() { - var allResults = [].slice + const allResults = [].slice .call(entityResultsPerApiCall[1]) .concat(entityResultsPerApiCall[2]); @@ -1015,15 +1015,15 @@ describe('Request', function() { }); it('should handle large limitless queries', function(done) { - var timesRequestCalled = 0; - var limitCalled = false; + let timesRequestCalled = 0; + let limitCalled = false; - var query = { + const query = { limitVal: -1, }; request.request_ = function(config, callback) { - var batch; + let batch; if (++timesRequestCalled === 2) { batch = {}; @@ -1058,13 +1058,13 @@ describe('Request', function() { }); it('should not push more results if stream was ended', function(done) { - var timesRequestCalled = 0; - var entitiesEmitted = 0; + let timesRequestCalled = 0; + let entitiesEmitted = 0; request.request_ = function(config, callback) { timesRequestCalled++; - var resp = extend(true, {}, apiResponse); + const resp = extend(true, {}, apiResponse); resp.batch.entityResults = entityResultsPerApiCall[timesRequestCalled]; @@ -1090,7 +1090,7 @@ describe('Request', function() { }); it('should not get more results if stream was ended', function(done) { - var timesRequestCalled = 0; + let timesRequestCalled = 0; request.request_ = function(config, callback) { timesRequestCalled++; @@ -1112,15 +1112,15 @@ describe('Request', function() { }); describe('runQuery', function() { - var query = {}; + const query = {}; describe('success', function() { - var fakeInfo = {}; - var fakeEntities = [{a: 'a'}, {b: 'b'}]; + const fakeInfo = {}; + const fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { request.runQueryStream = sinon.spy(function() { - var stream = through.obj(); + const stream = through.obj(); setImmediate(function() { stream.emit('info', fakeInfo); @@ -1137,14 +1137,14 @@ describe('Request', function() { }); it('should return an array of entities', function(done) { - var options = {}; + const options = {}; request.runQuery(query, options, function(err, entities, info) { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); assert.strictEqual(info, fakeInfo); - var spy = request.runQueryStream.getCall(0); + const spy = request.runQueryStream.getCall(0); assert.strictEqual(spy.args[0], query); assert.strictEqual(spy.args[1], options); done(); @@ -1162,7 +1162,7 @@ describe('Request', function() { request.runQuery(query, null, function(err) { assert.ifError(err); - var spy = request.runQueryStream.getCall(0); + const spy = request.runQueryStream.getCall(0); assert.deepStrictEqual(spy.args[1], {}); done(); }); @@ -1170,11 +1170,11 @@ describe('Request', function() { }); describe('error', function() { - var error = new Error('err'); + const error = new Error('err'); beforeEach(function() { request.runQueryStream = sinon.spy(function() { - var stream = through.obj(); + const stream = through.obj(); setImmediate(function() { stream.emit('error', error); @@ -1195,7 +1195,7 @@ describe('Request', function() { describe('save', function() { it('should save with keys', function(done) { - var expectedReq = { + const expectedReq = { mutations: [ { upsert: { @@ -1256,7 +1256,7 @@ describe('Request', function() { }); it('should allow customization of GAX options', function(done) { - var gaxOptions = {}; + const gaxOptions = {}; request.request_ = function(config) { assert.strictEqual(config.gaxOpts, gaxOptions); @@ -1274,8 +1274,8 @@ describe('Request', function() { }); it('should prepare entity objects', function(done) { - var entityObject = {}; - var prepared = false; + const entityObject = {}; + let prepared = false; overrides.Request.prepareEntityObject_ = function(obj) { assert.strictEqual(obj, entityObject); @@ -1302,13 +1302,13 @@ describe('Request', function() { assert(is.object(config.reqOpts.mutations[1].update)); assert(is.object(config.reqOpts.mutations[2].upsert)); - var insert = config.reqOpts.mutations[0].insert; + const insert = config.reqOpts.mutations[0].insert; assert.deepStrictEqual(insert.properties.k, {stringValue: 'v'}); - var update = config.reqOpts.mutations[1].update; + const update = config.reqOpts.mutations[1].update; assert.deepStrictEqual(update.properties.k2, {stringValue: 'v2'}); - var upsert = config.reqOpts.mutations[2].upsert; + const upsert = config.reqOpts.mutations[2].upsert; assert.deepStrictEqual(upsert.properties.k3, {stringValue: 'v3'}); callback(); @@ -1340,7 +1340,7 @@ describe('Request', function() { }); it('should not alter the provided data object', function(done) { - var entities = [ + const entities = [ { key: key, method: 'insert', @@ -1353,7 +1353,7 @@ describe('Request', function() { }, }, ]; - var expectedEntities = entities.map(x => extend(true, {}, x)); + const expectedEntities = entities.map(x => extend(true, {}, x)); request.request_ = function() { // By the time the request is made, the original object has already been @@ -1366,8 +1366,8 @@ describe('Request', function() { }); it('should return apiResponse in callback', function(done) { - var key = new entity.Key({namespace: 'ns', path: ['Company']}); - var mockCommitResponse = {}; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + const mockCommitResponse = {}; request.request_ = function(config, callback) { callback(null, mockCommitResponse); }; @@ -1380,7 +1380,7 @@ describe('Request', function() { it('should allow setting the indexed value of a property', function(done) { request.request_ = function(config) { - var property = config.reqOpts.mutations[0].upsert.properties.name; + const property = config.reqOpts.mutations[0].upsert.properties.name; assert.strictEqual(property.stringValue, 'value'); assert.strictEqual(property.excludeFromIndexes, true); done(); @@ -1403,7 +1403,7 @@ describe('Request', function() { it('should allow setting the indexed value on arrays', function(done) { request.request_ = function(config) { - var property = config.reqOpts.mutations[0].upsert.properties.name; + const property = config.reqOpts.mutations[0].upsert.properties.name; property.arrayValue.values.forEach(function(value) { assert.strictEqual(value.excludeFromIndexes, true); @@ -1428,14 +1428,14 @@ describe('Request', function() { }); it('should assign ID on keys without them', function(done) { - var incompleteKey = new entity.Key({path: ['Incomplete']}); - var incompleteKey2 = new entity.Key({path: ['Incomplete']}); - var completeKey = new entity.Key({path: ['Complete', 'Key']}); + const incompleteKey = new entity.Key({path: ['Incomplete']}); + const incompleteKey2 = new entity.Key({path: ['Incomplete']}); + const completeKey = new entity.Key({path: ['Complete', 'Key']}); - var keyProtos = []; - var ids = [1, 2]; + const keyProtos = []; + const ids = [1, 2]; - var response = { + const response = { mutationResults: [ { key: {}, @@ -1501,9 +1501,9 @@ describe('Request', function() { describe('update', function() { it('should prepare entity objects', function(done) { - var entityObject = {}; - var preparedEntityObject = {prepared: true}; - var expectedEntityObject = extend({}, preparedEntityObject, { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = extend({}, preparedEntityObject, { method: 'update', }); @@ -1536,16 +1536,16 @@ describe('Request', function() { callback(); }; - var key = new entity.Key({namespace: 'ns', path: ['Company']}); + const key = new entity.Key({namespace: 'ns', path: ['Company']}); request.update({key: key, data: {}}, done); }); }); describe('upsert', function() { it('should prepare entity objects', function(done) { - var entityObject = {}; - var preparedEntityObject = {prepared: true}; - var expectedEntityObject = extend({}, preparedEntityObject, { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = extend({}, preparedEntityObject, { method: 'upsert', }); @@ -1579,13 +1579,13 @@ describe('Request', function() { callback(); }; - var key = new entity.Key({namespace: 'ns', path: ['Company']}); + const key = new entity.Key({namespace: 'ns', path: ['Company']}); request.upsert({key: key, data: {}}, done); }); }); describe('request_', function() { - var CONFIG = { + const CONFIG = { client: 'FakeClient', // name set at top of file method: 'method', reqOpts: { @@ -1598,10 +1598,10 @@ describe('Request', function() { }, }; - var PROJECT_ID = 'project-id'; + const PROJECT_ID = 'project-id'; beforeEach(function() { - var clients_ = new Map(); + const clients_ = new Map(); clients_.set(CONFIG.client, { [CONFIG.method]: function() {}, }); @@ -1626,7 +1626,7 @@ describe('Request', function() { }); it('should return error if getting project ID failed', function(done) { - var error = new Error('Error.'); + const error = new Error('Error.'); request.datastore.auth.getProjectId = function(callback) { callback(error); @@ -1639,7 +1639,7 @@ describe('Request', function() { }); it('should initiate and cache the client', function() { - var fakeClient = { + const fakeClient = { [CONFIG.method]: function() {}, }; @@ -1652,7 +1652,7 @@ describe('Request', function() { request.request_(CONFIG, assert.ifError); - var client = request.datastore.clients_.get(CONFIG.client); + const client = request.datastore.clients_.get(CONFIG.client); assert.strictEqual(client, fakeClient); }); @@ -1667,9 +1667,9 @@ describe('Request', function() { }); it('should replace the project ID token', function(done) { - var replacedReqOpts = {}; + const replacedReqOpts = {}; - var expectedReqOpts = extend({}, CONFIG.reqOpts); + const expectedReqOpts = extend({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; pjyOverride = function(reqOpts, projectId) { @@ -1727,7 +1727,7 @@ describe('Request', function() { }, }); - var config = extend({}, CONFIG, { + const config = extend({}, CONFIG, { method: 'commit', }); @@ -1736,7 +1736,7 @@ describe('Request', function() { }); describe('transaction', function() { - var TRANSACTION_ID = 'transaction'; + const TRANSACTION_ID = 'transaction'; beforeEach(function() { request.id = TRANSACTION_ID; @@ -1752,7 +1752,7 @@ describe('Request', function() { }, }); - var config = extend({}, CONFIG, { + const config = extend({}, CONFIG, { method: 'commit', }); @@ -1768,7 +1768,7 @@ describe('Request', function() { }, }); - var config = extend({}, CONFIG, { + const config = extend({}, CONFIG, { method: 'rollback', }); @@ -1776,7 +1776,7 @@ describe('Request', function() { }); it('should set the lookup transaction info', function(done) { - var config = extend(true, {}, CONFIG, { + const config = extend(true, {}, CONFIG, { method: 'lookup', }); @@ -1792,7 +1792,7 @@ describe('Request', function() { }); it('should set the runQuery transaction info', function(done) { - var config = extend(true, {}, CONFIG, { + const config = extend(true, {}, CONFIG, { method: 'runQuery', }); @@ -1808,7 +1808,7 @@ describe('Request', function() { }); it('should throw if read consistency is specified', function() { - var config = extend(true, {}, CONFIG, { + const config = extend(true, {}, CONFIG, { method: 'runQuery', reqOpts: { readOptions: { diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index a078068fe20..6aeaac89a0f 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -16,15 +16,15 @@ 'use strict'; -var arrify = require('arrify'); -var assert = require('assert'); -var entity = require('../src/entity.js'); -var extend = require('extend'); -var proxyquire = require('proxyquire'); -var pfy = require('@google-cloud/promisify'); - -var promisified = false; -var fakePfy = extend({}, pfy, { +const arrify = require('arrify'); +const assert = require('assert'); +const entity = require('../src/entity.js'); +const extend = require('extend'); +const proxyquire = require('proxyquire'); +const pfy = require('@google-cloud/promisify'); + +let promisified = false; +const fakePfy = extend({}, pfy, { promisifyAll: function(Class, options) { if (Class.name !== 'Transaction') { return; @@ -34,23 +34,23 @@ var fakePfy = extend({}, pfy, { }, }); -var DatastoreRequestOverride = { +const DatastoreRequestOverride = { delete: function() {}, save: function() {}, }; -var FakeDatastoreRequest = { +const FakeDatastoreRequest = { prototype: { delete: function() { - var args = [].slice.apply(arguments); - var results = DatastoreRequestOverride.delete.apply(null, args); + const args = [].slice.apply(arguments); + const results = DatastoreRequestOverride.delete.apply(null, args); DatastoreRequestOverride.delete = function() {}; return results; }, save: function() { - var args = [].slice.apply(arguments); - var results = DatastoreRequestOverride.save.apply(null, args); + const args = [].slice.apply(arguments); + const results = DatastoreRequestOverride.save.apply(null, args); DatastoreRequestOverride.save = function() {}; return results; }, @@ -58,13 +58,13 @@ var FakeDatastoreRequest = { }; describe('Transaction', function() { - var Transaction; - var transaction; - var TRANSACTION_ID = 'transaction-id'; - var PROJECT_ID = 'project-id'; - var NAMESPACE = 'a-namespace'; + let Transaction; + let transaction; + const TRANSACTION_ID = 'transaction-id'; + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'a-namespace'; - var DATASTORE = { + const DATASTORE = { request_: function() {}, projectId: PROJECT_ID, namespace: NAMESPACE, @@ -103,27 +103,27 @@ describe('Transaction', function() { }); it('should localize the transaction ID', function() { - var options = { + const options = { id: 'transaction-id', }; - var transaction = new Transaction(DATASTORE, options); + const transaction = new Transaction(DATASTORE, options); assert.strictEqual(transaction.id, options.id); }); it('should localize readOnly', function() { - var options = { + const options = { readOnly: true, }; - var transaction = new Transaction(DATASTORE, options); + const transaction = new Transaction(DATASTORE, options); assert.strictEqual(transaction.readOnly, true); }); it('should localize request function', function(done) { - var transaction; + let transaction; - var fakeDataset = { + const fakeDataset = { request_: { bind: function(context) { assert.strictEqual(context, fakeDataset); @@ -164,7 +164,7 @@ describe('Transaction', function() { }); it('should accept gaxOptions', function(done) { - var gaxOptions = {}; + const gaxOptions = {}; transaction.request_ = function(config) { assert.strictEqual(config.gaxOpts, gaxOptions); @@ -184,11 +184,11 @@ describe('Transaction', function() { }); describe('errors', function() { - var error = new Error('Error.'); - var apiResponse = {}; + const error = new Error('Error.'); + const apiResponse = {}; - var rollbackError = new Error('Error.'); - var rollbackApiResponse = {}; + const rollbackError = new Error('Error.'); + const rollbackApiResponse = {}; beforeEach(function() { transaction.rollback = function(callback) { @@ -210,7 +210,7 @@ describe('Transaction', function() { }); it('should pass apiResponse to callback', function(done) { - var resp = {success: true}; + const resp = {success: true}; transaction.request_ = function(config, callback) { callback(null, resp); }; @@ -222,11 +222,11 @@ describe('Transaction', function() { }); it('should group mutations & execute original methods', function() { - var deleteArg1 = key(['Product', 123]); - var deleteArg2 = key(['Product', 234]); + const deleteArg1 = key(['Product', 123]); + const deleteArg2 = key(['Product', 234]); - var saveArg1 = {key: key(['Product', 345]), data: ''}; - var saveArg2 = {key: key(['Product', 456]), data: ''}; + const saveArg1 = {key: key(['Product', 345]), data: ''}; + const saveArg2 = {key: key(['Product', 456]), data: ''}; // Queue saves & deletes in varying order. transaction.delete(deleteArg1); @@ -234,15 +234,15 @@ describe('Transaction', function() { transaction.delete(deleteArg2); transaction.save(saveArg2); - var args = []; + const args = []; - var deleteCalled = 0; + let deleteCalled = 0; DatastoreRequestOverride.delete = function() { args.push(arguments[0]); deleteCalled++; }; - var saveCalled = 0; + let saveCalled = 0; DatastoreRequestOverride.save = function() { args.push(arguments[0]); saveCalled++; @@ -269,12 +269,12 @@ describe('Transaction', function() { transaction.delete(key(['Product', 123])); transaction.save({key: key(['Product', 123]), data: ''}); - var deleteCalled = 0; + let deleteCalled = 0; DatastoreRequestOverride.delete = function() { deleteCalled++; }; - var saveCalled = 0; + let saveCalled = 0; DatastoreRequestOverride.save = function() { saveCalled++; }; @@ -321,8 +321,8 @@ describe('Transaction', function() { }); it('should execute the queued callbacks', function() { - var cb1Called = false; - var cb2Called = false; + let cb1Called = false; + let cb2Called = false; transaction.requestCallbacks_ = [ function() { @@ -346,8 +346,8 @@ describe('Transaction', function() { describe('createQuery', function() { it('should return query from datastore.createQuery', function() { - var args = [0, 1, 2, 3]; - var createQueryReturnValue = {}; + const args = [0, 1, 2, 3]; + const createQueryReturnValue = {}; transaction.datastore.createQuery = function() { assert.strictEqual(this, transaction); @@ -358,14 +358,14 @@ describe('Transaction', function() { return createQueryReturnValue; }; - var query = transaction.createQuery.apply(transaction, args); + const query = transaction.createQuery.apply(transaction, args); assert.strictEqual(query, createQueryReturnValue); }); }); describe('delete', function() { it('should push entities into a queue', function() { - var keys = [ + const keys = [ key('Product', 123), key('Product', 234), key('Product', 345), @@ -399,7 +399,7 @@ describe('Transaction', function() { }); it('should allow setting gaxOptions', function(done) { - var gaxOptions = {}; + const gaxOptions = {}; transaction.request_ = function(config) { assert.strictEqual(config.gaxOpts, gaxOptions); @@ -410,7 +410,7 @@ describe('Transaction', function() { }); it('should pass error to callback', function(done) { - var error = new Error('Error.'); + const error = new Error('Error.'); transaction.request_ = function(config, callback) { callback(error); }; @@ -421,7 +421,7 @@ describe('Transaction', function() { }); it('should pass apiResponse to callback', function(done) { - var resp = {success: true}; + const resp = {success: true}; transaction.request_ = function(config, callback) { callback(null, resp); }; @@ -467,7 +467,7 @@ describe('Transaction', function() { }); it('should allow setting gaxOptions', function(done) { - var gaxOptions = {}; + const gaxOptions = {}; transaction.request_ = function(config) { assert.strictEqual(config.gaxOpts, gaxOptions); @@ -479,7 +479,7 @@ describe('Transaction', function() { describe('options.readOnly', function() { it('should respect the readOnly option', function(done) { - var options = { + const options = { readOnly: true, }; @@ -511,7 +511,7 @@ describe('Transaction', function() { describe('options.transactionId', function() { it('should respect the transactionId option', function(done) { - var options = { + const options = { transactionId: 'transaction-id', }; @@ -543,7 +543,7 @@ describe('Transaction', function() { it('should allow full override of transactionOptions', function(done) { transaction.readOnly = true; - var options = { + const options = { transactionOptions: { readWrite: { previousTransaction: 'transaction-id', @@ -561,8 +561,8 @@ describe('Transaction', function() { }); describe('error', function() { - var error = new Error('Error.'); - var apiResponse = {}; + const error = new Error('Error.'); + const apiResponse = {}; beforeEach(function() { transaction.request_ = function(config, callback) { @@ -581,7 +581,7 @@ describe('Transaction', function() { }); describe('success', function() { - var apiResponse = { + const apiResponse = { transaction: TRANSACTION_ID, }; @@ -614,7 +614,7 @@ describe('Transaction', function() { describe('save', function() { it('should push entities into a queue', function() { - var entities = [ + const entities = [ {key: key('Product', 123), data: 123}, {key: key('Product', 234), data: 234}, {key: key('Product', 345), data: 345}, @@ -627,7 +627,7 @@ describe('Transaction', function() { transaction.modifiedEntities_.forEach(function(queuedEntity) { assert.strictEqual(queuedEntity.method, 'save'); - var match = entities.filter(function(ent) { + const match = entities.filter(function(ent) { return ent.key === queuedEntity.entity.key; })[0]; From 91b6deab1e2fe868d837b1c0389808a08a779d35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 6 Aug 2018 19:07:15 -0700 Subject: [PATCH 237/820] chore(deps): lock file maintenance (#159) --- .../nodejs-datastore/package-lock.json | 107 +++++++++--------- .../samples/package-lock.json | 45 ++++---- 2 files changed, 75 insertions(+), 77 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 02146536fbe..61769c814b9 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -2660,13 +2660,6 @@ "@types/node": "^9.4.6", "lodash": "^4.17.5", "protobufjs": "^6.8.6" - }, - "dependencies": { - "@types/node": { - "version": "9.6.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.25.tgz", - "integrity": "sha512-uZpzO9MKSHy7zBiTtziA3JgZP3upcAvLTASkKgheLj6/rNZmRX4UyvsFYaY2kbYcmmh8bNZ2T0eocBRCfZdGvQ==" - } } }, "@ladjs/time-require": { @@ -2805,9 +2798,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.115", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.115.tgz", - "integrity": "sha512-9K/P4XMQxk61omAzQh3bbbFiqnG17eLcFysjlAYz0aPcYrVo8T+ujaCeIeY0Gpzux7x1YbxtEtLKB7ZWf79qdg==" + "version": "4.14.116", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz", + "integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg==" }, "@types/long": { "version": "4.0.0", @@ -2815,9 +2808,9 @@ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { - "version": "10.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.4.tgz", - "integrity": "sha512-8TqvB0ReZWwtcd3LXq3YSrBoLyXFgBX/sBZfGye9+YS8zH7/g+i6QRIuiDmwBoTzcQ/pk89nZYTYU4c5akKkzw==" + "version": "9.6.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.25.tgz", + "integrity": "sha512-uZpzO9MKSHy7zBiTtziA3JgZP3upcAvLTASkKgheLj6/rNZmRX4UyvsFYaY2kbYcmmh8bNZ2T0eocBRCfZdGvQ==" }, "acorn": { "version": "5.7.1", @@ -3139,10 +3132,13 @@ } }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -3359,9 +3355,9 @@ "dev": true }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "axios": { @@ -4020,9 +4016,9 @@ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "builtin-modules": { "version": "1.1.1", @@ -5174,9 +5170,9 @@ } }, "eslint": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.2.0.tgz", - "integrity": "sha512-zlggW1qp7/TBjwLfouRoY7eWXrXwJZFqCdIxxh0/LVB/QuuKuIMkzyUZEcDo6LBadsry5JcEMxIqd3H/66CXVg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.3.0.tgz", + "integrity": "sha512-N/tCqlMKkyNvAvLu+zI9AqDasnSLt00K+Hu8kdsERliC9jYEc8ck12XtjvOXrBKu8fK6RrBcN9bat6Xk++9jAg==", "dev": true, "requires": { "ajv": "^6.5.0", @@ -5210,7 +5206,7 @@ "path-is-inside": "^1.0.2", "pluralize": "^7.0.0", "progress": "^2.0.0", - "regexpp": "^1.1.0", + "regexpp": "^2.0.0", "require-uncached": "^1.0.3", "semver": "^5.5.0", "string.prototype.matchall": "^2.0.0", @@ -5264,9 +5260,9 @@ "dev": true }, "ignore": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.2.tgz", - "integrity": "sha512-uoxnT7PYpyEnsja+yX+7v49B7LXxmzDJ2JALqHH3oEGzpM2U1IGcbfnOr8Dt57z3B/UWs7/iAgPFbmye8m4I0g==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.3.tgz", + "integrity": "sha512-Z/vAH2GGIEATQnBVXMclE2IGV6i0GyVngKThcGZ5kHgHMxLo9Ow2+XHRq1aEKEej5vOF1TPJNbvX6J/anT0M7A==", "dev": true }, "json-schema-traverse": { @@ -5311,14 +5307,6 @@ "requires": { "eslint-utils": "^1.3.0", "regexpp": "^2.0.0" - }, - "dependencies": { - "regexpp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", - "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", - "dev": true - } } }, "eslint-plugin-node": { @@ -5336,9 +5324,9 @@ }, "dependencies": { "ignore": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.2.tgz", - "integrity": "sha512-uoxnT7PYpyEnsja+yX+7v49B7LXxmzDJ2JALqHH3oEGzpM2U1IGcbfnOr8Dt57z3B/UWs7/iAgPFbmye8m4I0g==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.3.tgz", + "integrity": "sha512-Z/vAH2GGIEATQnBVXMclE2IGV6i0GyVngKThcGZ5kHgHMxLo9Ow2+XHRq1aEKEej5vOF1TPJNbvX6J/anT0M7A==", "dev": true }, "resolve": { @@ -5858,9 +5846,9 @@ "dev": true }, "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz", + "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==", "requires": { "debug": "^3.1.0" } @@ -11275,9 +11263,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-to-regexp": { @@ -11603,6 +11591,13 @@ "@types/long": "^4.0.0", "@types/node": "^10.1.0", "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.7.tgz", + "integrity": "sha512-VkKcfuitP+Nc/TaTFH0B8qNmn+6NbI6crLkQonbedViVz7O2w8QV/GERPlkJ4bg42VGHiEWa31CoTOPs1q6z1w==" + } } }, "proxyquire": { @@ -11819,9 +11814,9 @@ } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", "dev": true }, "regexpu-core": { @@ -12118,9 +12113,9 @@ "dev": true }, "sanitize-html": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.2.tgz", - "integrity": "sha512-52ThA+Z7h6BnvpSVbURwChl10XZrps5q7ytjTwWcIe9bmJwnVP6cpEVK2NvDOUhGupoqAvNbUz3cpnJDp4+/pg==", + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.4.tgz", + "integrity": "sha512-hjyDYCYrQuhnEjq+5lenLlIfdPBtnZ7z0DkQOC8YGxvkuOInH+1SrkNTj30t4f2/SSv9c5kLniB+uCIpBvYuew==", "dev": true, "requires": { "chalk": "^2.3.0", @@ -13253,9 +13248,9 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json index 4a76faf7874..5121ddc320d 100644 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ b/handwritten/nodejs-datastore/samples/package-lock.json @@ -2890,9 +2890,9 @@ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { - "version": "10.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.4.tgz", - "integrity": "sha512-8TqvB0ReZWwtcd3LXq3YSrBoLyXFgBX/sBZfGye9+YS8zH7/g+i6QRIuiDmwBoTzcQ/pk89nZYTYU4c5akKkzw==" + "version": "10.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.7.tgz", + "integrity": "sha512-VkKcfuitP+Nc/TaTFH0B8qNmn+6NbI6crLkQonbedViVz7O2w8QV/GERPlkJ4bg42VGHiEWa31CoTOPs1q6z1w==" }, "@types/request": { "version": "2.47.1", @@ -3202,9 +3202,12 @@ } }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -3423,9 +3426,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { "version": "0.18.0", @@ -4076,9 +4079,9 @@ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "builtin-modules": { "version": "1.1.1", @@ -5201,9 +5204,9 @@ "dev": true }, "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz", + "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==", "requires": { "debug": "^3.1.0" } @@ -10249,9 +10252,9 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-to-regexp": { @@ -12018,9 +12021,9 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", From 1f23d09e3b8af7729a023ceccdd407ed5889173b Mon Sep 17 00:00:00 2001 From: DPE bot Date: Tue, 7 Aug 2018 07:42:41 -0700 Subject: [PATCH 238/820] chore: switch back to auto-generated code --- handwritten/nodejs-datastore/test/gapic-v1.js | 134 +++++++++--------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index dc700ab76f9..0117b9c2727 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -18,28 +18,28 @@ const assert = require('assert'); const datastoreModule = require('../src'); -const FAKE_STATUS_CODE = 1; -const error = new Error(); +var FAKE_STATUS_CODE = 1; +var error = new Error(); error.code = FAKE_STATUS_CODE; describe('DatastoreClient', () => { describe('lookup', () => { it('invokes lookup without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; // Mock response - const expectedResponse = {}; + var expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.lookup = mockSimpleGrpcMethod( @@ -55,15 +55,15 @@ describe('DatastoreClient', () => { }); it('invokes lookup with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; @@ -82,21 +82,21 @@ describe('DatastoreClient', () => { describe('runQuery', () => { it('invokes runQuery without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const partitionId = {}; - const request = { + var projectId = 'projectId-1969970175'; + var partitionId = {}; + var request = { projectId: projectId, partitionId: partitionId, }; // Mock response - const expectedResponse = {}; + var expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.runQuery = mockSimpleGrpcMethod( @@ -112,15 +112,15 @@ describe('DatastoreClient', () => { }); it('invokes runQuery with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const partitionId = {}; - const request = { + var projectId = 'projectId-1969970175'; + var partitionId = {}; + var request = { projectId: projectId, partitionId: partitionId, }; @@ -143,20 +143,20 @@ describe('DatastoreClient', () => { describe('beginTransaction', () => { it('invokes beginTransaction without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const request = { + var projectId = 'projectId-1969970175'; + var request = { projectId: projectId, }; // Mock response - const transaction = '-34'; - const expectedResponse = { + var transaction = '-34'; + var expectedResponse = { transaction: transaction, }; @@ -174,14 +174,14 @@ describe('DatastoreClient', () => { }); it('invokes beginTransaction with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const request = { + var projectId = 'projectId-1969970175'; + var request = { projectId: projectId, }; @@ -203,24 +203,24 @@ describe('DatastoreClient', () => { describe('commit', () => { it('invokes commit without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; - const request = { + var projectId = 'projectId-1969970175'; + var mode = 'MODE_UNSPECIFIED'; + var mutations = []; + var request = { projectId: projectId, mode: mode, mutations: mutations, }; // Mock response - const indexUpdates = 1425228195; - const expectedResponse = { + var indexUpdates = 1425228195; + var expectedResponse = { indexUpdates: indexUpdates, }; @@ -238,16 +238,16 @@ describe('DatastoreClient', () => { }); it('invokes commit with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; - const request = { + var projectId = 'projectId-1969970175'; + var mode = 'MODE_UNSPECIFIED'; + var mutations = []; + var request = { projectId: projectId, mode: mode, mutations: mutations, @@ -267,21 +267,21 @@ describe('DatastoreClient', () => { describe('rollback', () => { it('invokes rollback without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { + var projectId = 'projectId-1969970175'; + var transaction = '-34'; + var request = { projectId: projectId, transaction: transaction, }; // Mock response - const expectedResponse = {}; + var expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.rollback = mockSimpleGrpcMethod( @@ -297,15 +297,15 @@ describe('DatastoreClient', () => { }); it('invokes rollback with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { + var projectId = 'projectId-1969970175'; + var transaction = '-34'; + var request = { projectId: projectId, transaction: transaction, }; @@ -328,21 +328,21 @@ describe('DatastoreClient', () => { describe('allocateIds', () => { it('invokes allocateIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; // Mock response - const expectedResponse = {}; + var expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( @@ -358,15 +358,15 @@ describe('DatastoreClient', () => { }); it('invokes allocateIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; @@ -389,21 +389,21 @@ describe('DatastoreClient', () => { describe('reserveIds', () => { it('invokes reserveIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; // Mock response - const expectedResponse = {}; + var expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( @@ -419,15 +419,15 @@ describe('DatastoreClient', () => { }); it('invokes reserveIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ + var client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { + var projectId = 'projectId-1969970175'; + var keys = []; + var request = { projectId: projectId, keys: keys, }; From 9bf87fd20f8da6182889a8a270ca3a12c90abb43 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 7 Aug 2018 07:49:05 -0700 Subject: [PATCH 239/820] chore(deps): lock file maintenance (#160) --- handwritten/nodejs-datastore/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json index 61769c814b9..a7daf74b15e 100644 --- a/handwritten/nodejs-datastore/package-lock.json +++ b/handwritten/nodejs-datastore/package-lock.json @@ -2808,9 +2808,9 @@ "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" }, "@types/node": { - "version": "9.6.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.25.tgz", - "integrity": "sha512-uZpzO9MKSHy7zBiTtziA3JgZP3upcAvLTASkKgheLj6/rNZmRX4UyvsFYaY2kbYcmmh8bNZ2T0eocBRCfZdGvQ==" + "version": "9.6.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.26.tgz", + "integrity": "sha512-3LKKscYUZdZreOuvnly8oWsCA1TOWtmkV3mbcUnV34f+nqDWJic+4SGjRi1C/sPHnZcSs/x209O+Dgy8aWHt2A==" }, "acorn": { "version": "5.7.1", From 654b8992ef0be6757a05d7eedc8aee35bf545f69 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 7 Aug 2018 13:59:16 -0700 Subject: [PATCH 240/820] chore: ignore package-lock.json (#162) * chore: ignore package-log.json * remove locky * renovateeee --- .../nodejs-datastore/.circleci/config.yml | 17 +- .../.circleci/get_workflow_name.py | 67 - handwritten/nodejs-datastore/.gitignore | 1 + .../nodejs-datastore/package-lock.json | 13470 ---------------- .../samples/package-lock.json | 12290 -------------- 5 files changed, 2 insertions(+), 25843 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.circleci/get_workflow_name.py delete mode 100644 handwritten/nodejs-datastore/package-lock.json delete mode 100644 handwritten/nodejs-datastore/samples/package-lock.json diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index cf867c5f06d..dd4c80cc6e9 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -59,18 +59,7 @@ jobs: - image: 'node:6' user: node steps: &unit_tests_steps - - checkout - - run: &remove_package_lock - name: Remove package-lock.json if needed. - command: | - WORKFLOW_NAME=`python .circleci/get_workflow_name.py` - echo "Workflow name: $WORKFLOW_NAME" - if [ "$WORKFLOW_NAME" = "nightly" ]; then - echo "Nightly build detected, removing package-lock.json." - rm -f package-lock.json samples/package-lock.json - else - echo "Not a nightly build, skipping this step." - fi + - checkout - run: &npm_install_and_link name: Install and link the module command: |- @@ -97,7 +86,6 @@ jobs: user: node steps: - checkout - - run: *remove_package_lock - run: *npm_install_and_link - run: &samples_npm_install_and_link name: Link the module being tested to the samples. @@ -118,7 +106,6 @@ jobs: user: node steps: - checkout - - run: *remove_package_lock - run: *npm_install_and_link - run: name: Build documentation. @@ -129,7 +116,6 @@ jobs: user: node steps: - checkout - - run: *remove_package_lock - run: name: Decrypt credentials. command: | @@ -156,7 +142,6 @@ jobs: user: node steps: - checkout - - run: *remove_package_lock - run: name: Decrypt credentials. command: | diff --git a/handwritten/nodejs-datastore/.circleci/get_workflow_name.py b/handwritten/nodejs-datastore/.circleci/get_workflow_name.py deleted file mode 100644 index ff6b58fd24f..00000000000 --- a/handwritten/nodejs-datastore/.circleci/get_workflow_name.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Get workflow name for the current build using CircleCI API. -Would be great if this information is available in one of -CircleCI environment variables, but it's not there. -https://circleci.ideas.aha.io/ideas/CCI-I-295 -""" - -import json -import os -import sys -import urllib2 - - -def main(): - try: - username = os.environ['CIRCLE_PROJECT_USERNAME'] - reponame = os.environ['CIRCLE_PROJECT_REPONAME'] - build_num = os.environ['CIRCLE_BUILD_NUM'] - except: - sys.stderr.write( - 'Looks like we are not inside CircleCI container. Exiting...\n') - return 1 - - try: - request = urllib2.Request( - "https://circleci.com/api/v1.1/project/github/%s/%s/%s" % - (username, reponame, build_num), - headers={"Accept": "application/json"}) - contents = urllib2.urlopen(request).read() - except: - sys.stderr.write('Cannot query CircleCI API. Exiting...\n') - return 1 - - try: - build_info = json.loads(contents) - except: - sys.stderr.write( - 'Cannot parse JSON received from CircleCI API. Exiting...\n') - return 1 - - try: - workflow_name = build_info['workflows']['workflow_name'] - except: - sys.stderr.write( - 'Cannot get workflow name from CircleCI build info. Exiting...\n') - return 1 - - print workflow_name - return 0 - - -retval = main() -exit(retval) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 9f619025d84..5ee54dbfbcf 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -12,3 +12,4 @@ system-test/*key.json google-cloud-logging-winston-*.tgz google-cloud-logging-bunyan-*.tgz .vscode +package-lock.json diff --git a/handwritten/nodejs-datastore/package-lock.json b/handwritten/nodejs-datastore/package-lock.json deleted file mode 100644 index a7daf74b15e..00000000000 --- a/handwritten/nodejs-datastore/package-lock.json +++ /dev/null @@ -1,13470 +0,0 @@ -{ - "name": "@google-cloud/datastore", - "version": "1.4.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", - "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", - "dev": true - }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", - "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.8.0", - "babel-plugin-syntax-trailing-function-commas": "^6.20.0", - "babel-plugin-transform-async-to-generator": "^6.16.0", - "babel-plugin-transform-es2015-destructuring": "^6.19.0", - "babel-plugin-transform-es2015-function-name": "^6.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", - "babel-plugin-transform-es2015-parameters": "^6.21.0", - "babel-plugin-transform-es2015-spread": "^6.8.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", - "babel-plugin-transform-exponentiation-operator": "^6.8.0", - "package-hash": "^1.2.0" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "dev": true, - "requires": { - "md5-hex": "^1.3.0" - } - } - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", - "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", - "dev": true, - "requires": { - "@ava/babel-plugin-throws-helper": "^2.0.0", - "babel-plugin-espower": "^2.3.2" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", - "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "@babel/code-frame": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", - "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.51" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", - "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", - "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", - "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", - "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", - "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", - "dev": true - }, - "@babel/template": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", - "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "lodash": "^4.17.5" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", - "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helper-function-name": "7.0.0-beta.51", - "@babel/helper-split-export-declaration": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" - }, - "dependencies": { - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", - "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@concordance/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", - "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1" - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.3.tgz", - "integrity": "sha512-aow6Os43uhdgshSe/fr43ESHNl/kHhikim9AOqIMUzEb6mip6H4d8GFKgpO/yoqUUTIhCN3sbpkKktMI5mOQHw==", - "dev": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.3.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.7.2", - "proxyquire": "1.8.0", - "semver": "^5.5.0", - "sinon": "6.0.1", - "string": "3.3.3", - "supertest": "3.1.0", - "yargs": "11.0.0", - "yargs-parser": "10.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, - "nyc": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.2.tgz", - "integrity": "sha512-gBt7qwsR1vryYfglVjQRx1D+AtMZW5NbUKxb+lZe8SN8KsheGCPGWEsSC9AGQG+r2+te1+10uPHUCahuqm1nGQ==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.2", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.10.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.3", - "istanbul-reports": "^1.4.0", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.6", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.3", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true, - "dev": true - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-resolve": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "atob": "^2.0.0", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true, - "dev": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" - } - }, - "sinon": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", - "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - } - } - }, - "@google-cloud/projectify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.0.tgz", - "integrity": "sha512-ic3vU+rBLlQ9rU6vyMcQ/GoYQX9hP0P56jdbnSkGvXrVnO1DtYrkPV3Qg/NUrpAfKnmNC4hb0O/v2hCj8uGnbQ==" - }, - "@google-cloud/promisify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.3.0.tgz", - "integrity": "sha512-5xfpwK9iIAwZrKtG+SnEKZkgnce9Hsew1dkeYNyP/slAxTIdS9wjSUJ5Waq/dfsYphkHSGyH6F9lwqJlD5Zsyw==" - }, - "@grpc/proto-loader": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.3.0.tgz", - "integrity": "sha512-9b8S/V+3W4Gv7G/JKSZ48zApgyYbfIR7mAC9XNnaSWme3zj57MIESu0ELzm9j5oxNIpFG8DgO00iJMIUZ5luqw==", - "requires": { - "@types/lodash": "^4.14.104", - "@types/node": "^9.4.6", - "lodash": "^4.17.5", - "protobufjs": "^6.8.6" - } - }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", - "dev": true, - "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "^0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", - "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" - }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, - "requires": { - "samsam": "1.3.0" - } - }, - "@sinonjs/samsam": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.0.0.tgz", - "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==", - "dev": true - }, - "@types/lodash": { - "version": "4.14.116", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz", - "integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg==" - }, - "@types/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" - }, - "@types/node": { - "version": "9.6.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.26.tgz", - "integrity": "sha512-3LKKscYUZdZreOuvnly8oWsCA1TOWtmkV3mbcUnV34f+nqDWJic+4SGjRi1C/sPHnZcSs/x209O+Dgy8aWHt2A==" - }, - "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" - }, - "acorn-es7-plugin": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", - "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" - }, - "acorn-jsx": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", - "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", - "dev": true, - "requires": { - "acorn": "^5.0.3" - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" - }, - "array-find": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", - "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" - }, - "auto-bind": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", - "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", - "dev": true - }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, - "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "dev": true, - "requires": { - "underscore-contrib": "~0.3.0" - } - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "codecov": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.4.tgz", - "integrity": "sha512-KJyzHdg9B8U9LxXa7hS6jnEW5b1cNckLYc2YpnJ1nEFiOW+/iSzDHp+5MYEIQd9fN3/tC6WmGZmYiwxzkuGp/A==", - "dev": true, - "requires": { - "argv": "^0.0.2", - "ignore-walk": "^3.0.1", - "request": "^2.87.0", - "urlgrey": "^0.4.4" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "^1.0.0" - } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deep-strict-equal": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", - "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", - "dev": true, - "requires": { - "core-assert": "^0.2.0" - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diff-match-patch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", - "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "empower": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.0.tgz", - "integrity": "sha512-tP2WqM7QzrPguCCQEQfFFDF+6Pw6YWLQal3+GHQaV+0uIr0S+jyREQPWljE02zFCYPFYLZ3LosiRV+OzTrxPpQ==", - "requires": { - "core-js": "^2.0.0", - "empower-core": "^1.2.0" - } - }, - "empower-assert": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/empower-assert/-/empower-assert-1.1.0.tgz", - "integrity": "sha512-Ylck0Q6p8y/LpNzYeBccaxAPm2ZyuqBgErgZpO9KT0HuQWF0sJckBKCLmgS1/DEXEiyBi9XtYh3clZm5cAdARw==", - "dev": true, - "requires": { - "estraverse": "^4.2.0" - } - }, - "empower-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", - "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "escallmatch": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/escallmatch/-/escallmatch-1.5.0.tgz", - "integrity": "sha1-UAmdhugJGwkt+N37w/mm+wWgJNA=", - "dev": true, - "requires": { - "call-matcher": "^1.0.0", - "esprima": "^2.0.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.3.0.tgz", - "integrity": "sha512-N/tCqlMKkyNvAvLu+zI9AqDasnSLt00K+Hu8kdsERliC9jYEc8ck12XtjvOXrBKu8fK6RrBcN9bat6Xk++9jAg==", - "dev": true, - "requires": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.2", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "string.prototype.matchall": "^2.0.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - }, - "ignore": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.3.tgz", - "integrity": "sha512-Z/vAH2GGIEATQnBVXMclE2IGV6i0GyVngKThcGZ5kHgHMxLo9Ow2+XHRq1aEKEej5vOF1TPJNbvX6J/anT0M7A==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "eslint-config-prettier": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz", - "integrity": "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", - "dev": true, - "requires": { - "get-stdin": "^5.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - } - } - }, - "eslint-plugin-es": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz", - "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==", - "dev": true, - "requires": { - "eslint-utils": "^1.3.0", - "regexpp": "^2.0.0" - } - }, - "eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", - "dev": true, - "requires": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" - }, - "dependencies": { - "ignore": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.3.tgz", - "integrity": "sha512-Z/vAH2GGIEATQnBVXMclE2IGV6i0GyVngKThcGZ5kHgHMxLo9Ow2+XHRq1aEKEej5vOF1TPJNbvX6J/anT0M7A==", - "dev": true - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "eslint-plugin-prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz", - "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==", - "dev": true, - "requires": { - "fast-diff": "^1.1.1", - "jest-docblock": "^21.0.0" - } - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espower": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.1.tgz", - "integrity": "sha512-F4TY1qYJB1aUyzB03NsZksZzUQmQoEBaTUjRJGR30GxbkbjKI41NhCyYjrF+bGgWN7x/ZsczYppRpz/0WdI0ug==", - "dev": true, - "requires": { - "array-find": "^1.0.0", - "escallmatch": "^1.5.0", - "escodegen": "^1.7.0", - "escope": "^3.3.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.3.0", - "estraverse": "^4.1.0", - "source-map": "^0.5.0", - "type-name": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "espower-loader": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/espower-loader/-/espower-loader-1.2.2.tgz", - "integrity": "sha1-7bRsPFmga6yOpzppXIblxaC8gto=", - "dev": true, - "requires": { - "convert-source-map": "^1.1.0", - "espower-source": "^2.0.0", - "minimatch": "^3.0.0", - "source-map-support": "^0.4.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "espower-source": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/espower-source/-/espower-source-2.3.0.tgz", - "integrity": "sha512-Wc4kC4zUAEV7Qt31JRPoBUc5jjowHRylml2L2VaDQ1XEbnqQofGWx+gPR03TZAPokAMl5dqyL36h3ITyMXy3iA==", - "dev": true, - "requires": { - "acorn": "^5.0.0", - "acorn-es7-plugin": "^1.0.10", - "convert-source-map": "^1.1.1", - "empower-assert": "^1.0.0", - "escodegen": "^1.10.0", - "espower": "^2.1.1", - "estraverse": "^4.0.0", - "merge-estraverse-visitors": "^1.0.0", - "multi-stage-sourcemap": "^0.2.1", - "path-is-absolute": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "espree": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", - "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", - "dev": true, - "requires": { - "acorn": "^5.6.0", - "acorn-jsx": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "espurify": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", - "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", - "requires": { - "core-js": "^2.0.0" - } - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true - }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "follow-redirects": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz", - "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==", - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gcp-metadata": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", - "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", - "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "google-auth-library": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", - "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", - "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.6.3", - "gtoken": "^2.3.0", - "jws": "^3.1.5", - "lodash.isstring": "^4.0.1", - "lru-cache": "^4.1.3", - "retry-axios": "^0.3.2" - } - }, - "google-gax": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.18.0.tgz", - "integrity": "sha512-cF2s3aTw1cWDHsjaYfIizJZT0KJF0FSM3laiCX4O/K0ZcdmeE9PitG2bxRH+dY+Sz094//m+JoH1hBtSyOf67A==", - "requires": { - "@grpc/proto-loader": "^0.3.0", - "duplexify": "^3.6.0", - "extend": "^3.0.1", - "globby": "^8.0.1", - "google-auth-library": "^1.6.1", - "google-proto-files": "^0.16.0", - "grpc": "^1.12.2", - "is-stream-ended": "^0.1.4", - "lodash": "^4.17.10", - "protobufjs": "^6.8.8", - "retry-request": "^4.0.0", - "through2": "^2.0.3" - } - }, - "google-p12-pem": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", - "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", - "requires": { - "node-forge": "^0.7.4", - "pify": "^3.0.0" - } - }, - "google-proto-files": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz", - "integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==", - "requires": { - "globby": "^8.0.0", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - } - }, - "got": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", - "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "grpc": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.1.tgz", - "integrity": "sha512-yl0xChnlUISTefOPU2NQ1cYPh5m/DTatEUV6jdRyQPE9NCrtPq7Gn6J2alMTglN7ufYbJapOd00dvhGurHH6HQ==", - "requires": { - "lodash": "^4.17.5", - "nan": "^2.0.0", - "node-pre-gyp": "^0.10.0", - "protobufjs": "^5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.3.3", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.4", - "bundled": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.3", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "gtoken": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", - "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", - "requires": { - "axios": "^0.18.0", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.4", - "mime": "^2.2.0", - "pify": "^3.0.0" - } - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", - "dev": true - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", - "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "es6-error": "^4.0.2", - "graceful-fs": "^4.1.11", - "indent-string": "^3.1.0", - "json5": "^0.5.1", - "lodash.clonedeep": "^4.5.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "pkg-dir": "^2.0.0", - "resolve-from": "^3.0.0", - "safe-buffer": "^5.0.1" - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "ink-docstrap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz", - "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", - "dev": true, - "requires": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" - } - }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "intelli-espower-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/intelli-espower-loader/-/intelli-espower-loader-1.0.1.tgz", - "integrity": "sha1-LHsDFGvB1GvyENCgOXxckatMorA=", - "dev": true, - "requires": { - "espower-loader": "^1.0.0" - } - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", - "dev": true - }, - "is": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", - "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "requires": { - "ci-info": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", - "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", - "dev": true, - "requires": { - "@babel/generator": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.1", - "semver": "^5.5.0" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "dev": true, - "requires": { - "xmlcreate": "^1.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsdoc": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", - "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", - "dev": true, - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", - "taffydb": "2.6.2", - "underscore": "~1.8.3" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.19", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", - "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", - "dev": true - } - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", - "dev": true - }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "dev": true, - "requires": { - "through2": "^2.0.0" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", - "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, - "lolex": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.1.tgz", - "integrity": "sha512-Oo2Si3RMKV3+lV5MsSWplDQFoTClz/24S0MMHYcgGWWmFXr6TMlqcqk/l1GtH+d5wLBwNRiqGnwDRMirtFalJw==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "dev": true - }, - "matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", - "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-estraverse-visitors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-estraverse-visitors/-/merge-estraverse-visitors-1.0.0.tgz", - "integrity": "sha1-65aDOLXe1c7tgs7AMH3sui2OqZQ=", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" - }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "dev": true, - "requires": { - "mime-db": "~1.35.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multi-stage-sourcemap": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz", - "integrity": "sha1-sJ/IWG6qF/gdV1xK0C4Pej9rEQU=", - "dev": true, - "requires": { - "source-map": "^0.1.34" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true - }, - "nise": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", - "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nyc": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", - "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true, - "dev": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", - "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", - "dev": true, - "requires": { - "is-observable": "^0.2.0", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, - "requires": { - "symbol-observable": "^0.2.2" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true - } - } - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "option-chain": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", - "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", - "dev": true - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", - "release-zalgo": "^1.0.0" - } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - } - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "^1.0.0" - } - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "^1.0.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "power-assert": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.0.tgz", - "integrity": "sha512-nDb6a+p2C7Wj8Y2zmFtLpuv+xobXz4+bzT5s7dr0nn71tLozn7nRMQqzwbefzwZN5qOm0N7Cxhw4kXP75xboKA==", - "requires": { - "define-properties": "^1.1.2", - "empower": "^1.3.0", - "power-assert-formatter": "^1.4.1", - "universal-deep-strict-equal": "^1.2.1", - "xtend": "^4.0.0" - } - }, - "power-assert-context-formatter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", - "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-traversal": "^1.2.0" - } - }, - "power-assert-context-reducer-ast": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", - "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", - "requires": { - "acorn": "^5.0.0", - "acorn-es7-plugin": "^1.0.12", - "core-js": "^2.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.2.0" - } - }, - "power-assert-context-traversal": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", - "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", - "requires": { - "core-js": "^2.0.0", - "estraverse": "^4.1.0" - } - }, - "power-assert-formatter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", - "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-formatter": "^1.0.7", - "power-assert-context-reducer-ast": "^1.0.7", - "power-assert-renderer-assertion": "^1.0.7", - "power-assert-renderer-comparison": "^1.0.7", - "power-assert-renderer-diagram": "^1.0.7", - "power-assert-renderer-file": "^1.0.7" - } - }, - "power-assert-renderer-assertion": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", - "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", - "requires": { - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", - "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" - }, - "power-assert-renderer-comparison": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", - "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", - "requires": { - "core-js": "^2.0.0", - "diff-match-patch": "^1.0.0", - "power-assert-renderer-base": "^1.1.1", - "stringifier": "^1.3.0", - "type-name": "^2.0.1" - } - }, - "power-assert-renderer-diagram": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", - "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", - "requires": { - "core-js": "^2.0.0", - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0", - "stringifier": "^1.3.0" - } - }, - "power-assert-renderer-file": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", - "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", - "requires": { - "power-assert-renderer-base": "^1.1.1" - } - }, - "power-assert-util-string-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", - "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", - "requires": { - "eastasianwidth": "^0.2.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.0.tgz", - "integrity": "sha512-KtQ2EGaUwf2EyDfp1fxyEb0PqGKakVm0WyXwDt6u+cAoxbO2Z2CwKvOe3+b4+F2IlO9lYHi1kqFuRM70ddBnow==", - "dev": true - }, - "pretty-ms": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", - "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", - "dev": true, - "requires": { - "parse-ms": "^1.0.0" - }, - "dependencies": { - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "prop-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", - "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" - }, - "protobufjs": { - "version": "6.8.8", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", - "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "10.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.7.tgz", - "integrity": "sha512-VkKcfuitP+Nc/TaTFH0B8qNmn+6NbI6crLkQonbedViVz7O2w8QV/GERPlkJ4bg42VGHiEWa31CoTOPs1q6z1w==" - } - } - }, - "proxyquire": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.1.tgz", - "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2" - } - }, - "regexpp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", - "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", - "dev": true - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "dev": true, - "requires": { - "underscore": "~1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry-axios": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", - "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" - }, - "retry-request": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz", - "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==", - "requires": { - "through2": "^2.0.0" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "5.5.11", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", - "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - }, - "dependencies": { - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, - "sanitize-html": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.18.4.tgz", - "integrity": "sha512-hjyDYCYrQuhnEjq+5lenLlIfdPBtnZ7z0DkQOC8YGxvkuOInH+1SrkNTj30t4f2/SSv9c5kLniB+uCIpBvYuew==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "htmlparser2": "^3.9.0", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.mergewith": "^4.6.0", - "postcss": "^6.0.14", - "srcset": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "sinon": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.4.tgz", - "integrity": "sha512-NFEts+4D4jp2sBjL94fQpZk5o73kzn/g58+I9Dp15i9vsnT4Lk1UEyUf2jACODWLG6Pz/llF0sArYUw47Aarmg==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "@sinonjs/samsam": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.7.1", - "nise": "^1.4.2", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "split-array-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", - "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", - "requires": { - "is-stream-ended": "^0.1.4" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "srcset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", - "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", - "dev": true, - "requires": { - "array-uniq": "^1.0.2", - "number-is-nan": "^1.0.0" - } - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-events": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", - "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", - "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.matchall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz", - "integrity": "sha512-WoZ+B2ypng1dp4iFLF2kmZlwwlE19gmjgKuhL1FJfDgCREWb3ye3SDVHSzLH6bxfnvYmkCxbzkmWcQZHA4P//Q==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.10.0", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "regexp.prototype.flags": "^1.2.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringifier": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", - "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", - "requires": { - "core-js": "^2.0.0", - "traverse": "^0.6.6", - "type-name": "^2.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" - }, - "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.1.1", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.0.5" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "supertap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", - "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "indent-string": "^3.2.0", - "js-yaml": "^3.10.0", - "serialize-error": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "supertest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.1.0.tgz", - "integrity": "sha512-O44AMnmJqx294uJQjfUmEyYOg7d9mylNFsMw/Wkz4evKd1njyPrtCN+U6ZIC7sKtfEVQhfTqFFijlXx8KP/Czw==", - "dev": true, - "requires": { - "methods": "~1.1.2", - "superagent": "3.8.2" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", - "dev": true, - "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", - "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", - "dev": true - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", - "dev": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "os-tmpdir": "^1.0.1", - "uid2": "0.0.3" - } - }, - "universal-deep-strict-equal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", - "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", - "requires": { - "array-filter": "^1.0.0", - "indexof": "0.0.1", - "object-keys": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, - "urlgrey": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", - "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", - "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", - "dev": true, - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true - } - } - }, - "write-pkg": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", - "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", - "dev": true, - "requires": { - "sort-keys": "^2.0.0", - "write-json-file": "^2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - } - } -} diff --git a/handwritten/nodejs-datastore/samples/package-lock.json b/handwritten/nodejs-datastore/samples/package-lock.json deleted file mode 100644 index 5121ddc320d..00000000000 --- a/handwritten/nodejs-datastore/samples/package-lock.json +++ /dev/null @@ -1,12290 +0,0 @@ -{ - "name": "nodejs-docs-samples-datastore", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", - "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", - "dev": true - }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", - "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.8.0", - "babel-plugin-syntax-trailing-function-commas": "^6.20.0", - "babel-plugin-transform-async-to-generator": "^6.16.0", - "babel-plugin-transform-es2015-destructuring": "^6.19.0", - "babel-plugin-transform-es2015-function-name": "^6.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", - "babel-plugin-transform-es2015-parameters": "^6.21.0", - "babel-plugin-transform-es2015-spread": "^6.8.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", - "babel-plugin-transform-exponentiation-operator": "^6.8.0", - "package-hash": "^1.2.0" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "dev": true, - "requires": { - "md5-hex": "^1.3.0" - } - } - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", - "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", - "dev": true, - "requires": { - "@ava/babel-plugin-throws-helper": "^2.0.0", - "babel-plugin-espower": "^2.3.2" - } - }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", - "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "@babel/code-frame": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", - "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.51" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", - "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", - "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", - "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", - "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", - "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", - "dev": true - }, - "@babel/template": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", - "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "lodash": "^4.17.5" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", - "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helper-function-name": "7.0.0-beta.51", - "@babel/helper-split-export-declaration": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" - }, - "dependencies": { - "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", - "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@concordance/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", - "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1" - } - }, - "@google-cloud/common": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.19.2.tgz", - "integrity": "sha512-CuURBaMx6vUwLFpHLCYyLJXkg6EKYcrAfhH9Fva8C2B9dJ7flT8j/R+o05OuXwj4VQYC4c8bl/hrwyO+XvAwlg==", - "requires": { - "@types/duplexify": "^3.5.0", - "@types/request": "^2.47.0", - "arrify": "^1.0.1", - "axios": "^0.18.0", - "duplexify": "^3.5.4", - "ent": "^2.2.0", - "extend": "^3.0.1", - "google-auth-library": "^1.4.0", - "is": "^3.2.1", - "pify": "^3.0.0", - "request": "^2.85.0", - "retry-request": "^3.3.1", - "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4", - "through2": "^2.0.3" - } - }, - "@google-cloud/datastore": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@google-cloud/datastore/-/datastore-1.4.1.tgz", - "integrity": "sha512-wxTyVKg15dWL57qjbDN4xM+/CN5NUO/GA9JbRGDOw6xqcfWSXI4E6FtnArbpJp+CksViLx6N5oNcsc8gB3u2tw==", - "requires": { - "@google-cloud/common": "^0.19.2", - "arrify": "^1.0.1", - "concat-stream": "^1.6.2", - "create-error-class": "^3.0.2", - "extend": "^3.0.1", - "google-auto-auth": "^0.10.1", - "google-gax": "^0.16.1", - "google-proto-files": "^0.16.0", - "is": "^3.2.1", - "lodash.flatten": "^4.4.0", - "lodash.merge": "^4.6.1", - "prop-assign": "^1.0.0", - "propprop": "^0.3.1", - "safe-buffer": "^5.1.2", - "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4", - "through2": "^2.0.3" - } - }, - "@google-cloud/nodejs-repo-tools": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@google-cloud/nodejs-repo-tools/-/nodejs-repo-tools-2.3.3.tgz", - "integrity": "sha512-aow6Os43uhdgshSe/fr43ESHNl/kHhikim9AOqIMUzEb6mip6H4d8GFKgpO/yoqUUTIhCN3sbpkKktMI5mOQHw==", - "dev": true, - "requires": { - "ava": "0.25.0", - "colors": "1.1.2", - "fs-extra": "5.0.0", - "got": "8.3.0", - "handlebars": "4.0.11", - "lodash": "4.17.5", - "nyc": "11.7.2", - "proxyquire": "1.8.0", - "semver": "^5.5.0", - "sinon": "6.0.1", - "string": "3.3.3", - "supertest": "3.1.0", - "yargs": "11.0.0", - "yargs-parser": "10.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true - }, - "nyc": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.7.2.tgz", - "integrity": "sha512-gBt7qwsR1vryYfglVjQRx1D+AtMZW5NbUKxb+lZe8SN8KsheGCPGWEsSC9AGQG+r2+te1+10uPHUCahuqm1nGQ==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.2", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.10.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.3", - "istanbul-reports": "^1.4.0", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.6", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.3", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true, - "dev": true - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-resolve": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "atob": "^2.0.0", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true, - "dev": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "proxyquire": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-1.8.0.tgz", - "integrity": "sha1-AtUUpb7ZhvBMuyCTrxZ0FTX3ntw=", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.1.7" - } - }, - "sinon": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.0.1.tgz", - "integrity": "sha512-rfszhNcfamK2+ofIPi9XqeH89pH7KGDcAtM+F9CsjHXOK3jzWG99vyhyD2V+r7s4IipmWcWUFYq4ftZ9/Eu2Wg==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - } - } - }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", - "dev": true, - "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "^0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", - "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==" - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" - }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "requires": { - "samsam": "1.3.0" - } - }, - "@sinonjs/samsam": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.0.0.tgz", - "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==" - }, - "@types/caseless": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", - "integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==" - }, - "@types/duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==", - "requires": { - "@types/node": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" - }, - "@types/node": { - "version": "10.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.7.tgz", - "integrity": "sha512-VkKcfuitP+Nc/TaTFH0B8qNmn+6NbI6crLkQonbedViVz7O2w8QV/GERPlkJ4bg42VGHiEWa31CoTOPs1q6z1w==" - }, - "@types/request": { - "version": "2.47.1", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.1.tgz", - "integrity": "sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g==", - "requires": { - "@types/caseless": "*", - "@types/form-data": "*", - "@types/node": "*", - "@types/tough-cookie": "*" - } - }, - "@types/tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" - }, - "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" - }, - "acorn-es7-plugin": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", - "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=" - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" - }, - "auto-bind": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", - "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", - "dev": true - }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, - "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - } - } - }, - "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "^1.0.0" - } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "diff-match-patch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.1.tgz", - "integrity": "sha512-A0QEhr4PxGUMEtKxd6X+JLnOTFd3BfIPSDpsc4dMvj+CbSaErDwTpoTo/nFJDMSrjxLW4BiNq+FbNisAAHhWeQ==" - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "empower": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.0.tgz", - "integrity": "sha512-tP2WqM7QzrPguCCQEQfFFDF+6Pw6YWLQal3+GHQaV+0uIr0S+jyREQPWljE02zFCYPFYLZ3LosiRV+OzTrxPpQ==", - "requires": { - "core-js": "^2.0.0", - "empower-core": "^1.2.0" - } - }, - "empower-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", - "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "espurify": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", - "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", - "requires": { - "core-js": "^2.0.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true - }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", - "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "follow-redirects": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz", - "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==", - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "gcp-metadata": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz", - "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==", - "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", - "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "google-auth-library": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz", - "integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==", - "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.6.3", - "gtoken": "^2.3.0", - "jws": "^3.1.5", - "lodash.isstring": "^4.0.1", - "lru-cache": "^4.1.3", - "retry-axios": "^0.3.2" - } - }, - "google-auto-auth": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/google-auto-auth/-/google-auto-auth-0.10.1.tgz", - "integrity": "sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ==", - "requires": { - "async": "^2.3.0", - "gcp-metadata": "^0.6.1", - "google-auth-library": "^1.3.1", - "request": "^2.79.0" - } - }, - "google-gax": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.16.1.tgz", - "integrity": "sha512-eP7UUkKvaHmmvCrr+rxzkIOeEKOnXmoib7/AkENDAuqlC9T2+lWlzwpthDRnitQcV8SblDMzsk73YPMPCDwPyQ==", - "requires": { - "duplexify": "^3.5.4", - "extend": "^3.0.0", - "globby": "^8.0.0", - "google-auto-auth": "^0.10.0", - "google-proto-files": "^0.15.0", - "grpc": "^1.10.0", - "is-stream-ended": "^0.1.0", - "lodash": "^4.17.2", - "protobufjs": "^6.8.0", - "through2": "^2.0.3" - }, - "dependencies": { - "google-proto-files": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.15.1.tgz", - "integrity": "sha512-ebtmWgi/ooR5Nl63qRVZZ6VLM6JOb5zTNxTT/ZAU8yfMOdcauoOZNNMOVg0pCmTjqWXeuuVbgPP0CwO5UHHzBQ==", - "requires": { - "globby": "^7.1.1", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - }, - "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - } - } - } - } - }, - "google-p12-pem": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", - "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", - "requires": { - "node-forge": "^0.7.4", - "pify": "^3.0.0" - } - }, - "google-proto-files": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz", - "integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==", - "requires": { - "globby": "^8.0.0", - "power-assert": "^1.4.4", - "protobufjs": "^6.8.0" - } - }, - "got": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", - "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "grpc": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.1.tgz", - "integrity": "sha512-yl0xChnlUISTefOPU2NQ1cYPh5m/DTatEUV6jdRyQPE9NCrtPq7Gn6J2alMTglN7ufYbJapOd00dvhGurHH6HQ==", - "requires": { - "lodash": "^4.17.5", - "nan": "^2.0.0", - "node-pre-gyp": "^0.10.0", - "protobufjs": "^5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.3.3", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.4", - "bundled": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.3", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, - "gtoken": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", - "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", - "requires": { - "axios": "^0.18.0", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.4", - "mime": "^2.2.0", - "pify": "^3.0.0" - } - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", - "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "es6-error": "^4.0.2", - "graceful-fs": "^4.1.11", - "indent-string": "^3.1.0", - "json5": "^0.5.1", - "lodash.clonedeep": "^4.5.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "pkg-dir": "^2.0.0", - "resolve-from": "^3.0.0", - "safe-buffer": "^5.0.1" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", - "dev": true - }, - "is": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", - "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "requires": { - "ci-info": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", - "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", - "dev": true, - "requires": { - "@babel/generator": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.1", - "semver": "^5.5.0" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==" - }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "dev": true, - "requires": { - "through2": "^2.0.0" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", - "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lolex": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.1.tgz", - "integrity": "sha512-Oo2Si3RMKV3+lV5MsSWplDQFoTClz/24S0MMHYcgGWWmFXr6TMlqcqk/l1GtH+d5wLBwNRiqGnwDRMirtFalJw==" - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", - "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge2": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", - "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" - }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "requires": { - "mime-db": "~1.35.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nise": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", - "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", - "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nyc": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", - "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true, - "dev": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "observable-to-promise": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", - "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", - "dev": true, - "requires": { - "is-observable": "^0.2.0", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, - "requires": { - "symbol-observable": "^0.2.2" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true - } - } - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "option-chain": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", - "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", - "dev": true - }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" - }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", - "release-zalgo": "^1.0.0" - } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - } - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true, - "requires": { - "pinkie": "^1.0.0" - } - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "^1.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "power-assert": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.0.tgz", - "integrity": "sha512-nDb6a+p2C7Wj8Y2zmFtLpuv+xobXz4+bzT5s7dr0nn71tLozn7nRMQqzwbefzwZN5qOm0N7Cxhw4kXP75xboKA==", - "requires": { - "define-properties": "^1.1.2", - "empower": "^1.3.0", - "power-assert-formatter": "^1.4.1", - "universal-deep-strict-equal": "^1.2.1", - "xtend": "^4.0.0" - } - }, - "power-assert-context-formatter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", - "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-traversal": "^1.2.0" - } - }, - "power-assert-context-reducer-ast": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", - "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", - "requires": { - "acorn": "^5.0.0", - "acorn-es7-plugin": "^1.0.12", - "core-js": "^2.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.2.0" - } - }, - "power-assert-context-traversal": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", - "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", - "requires": { - "core-js": "^2.0.0", - "estraverse": "^4.1.0" - } - }, - "power-assert-formatter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", - "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", - "requires": { - "core-js": "^2.0.0", - "power-assert-context-formatter": "^1.0.7", - "power-assert-context-reducer-ast": "^1.0.7", - "power-assert-renderer-assertion": "^1.0.7", - "power-assert-renderer-comparison": "^1.0.7", - "power-assert-renderer-diagram": "^1.0.7", - "power-assert-renderer-file": "^1.0.7" - } - }, - "power-assert-renderer-assertion": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", - "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", - "requires": { - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0" - } - }, - "power-assert-renderer-base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", - "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=" - }, - "power-assert-renderer-comparison": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", - "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", - "requires": { - "core-js": "^2.0.0", - "diff-match-patch": "^1.0.0", - "power-assert-renderer-base": "^1.1.1", - "stringifier": "^1.3.0", - "type-name": "^2.0.1" - } - }, - "power-assert-renderer-diagram": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", - "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", - "requires": { - "core-js": "^2.0.0", - "power-assert-renderer-base": "^1.1.1", - "power-assert-util-string-width": "^1.2.0", - "stringifier": "^1.3.0" - } - }, - "power-assert-renderer-file": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", - "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", - "requires": { - "power-assert-renderer-base": "^1.1.1" - } - }, - "power-assert-util-string-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", - "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", - "requires": { - "eastasianwidth": "^0.2.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-ms": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", - "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", - "dev": true, - "requires": { - "parse-ms": "^1.0.0" - }, - "dependencies": { - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "prop-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prop-assign/-/prop-assign-1.0.0.tgz", - "integrity": "sha1-l2eh+/1wk5CGR6boRtMbT+qnBFk=" - }, - "propprop": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/propprop/-/propprop-0.3.1.tgz", - "integrity": "sha1-oEmjVouJZEAGfRXY7J8zc15XAXg=" - }, - "protobufjs": { - "version": "6.8.8", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", - "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "proxyquire": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.1.tgz", - "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==", - "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.0", - "resolve": "~1.5.0" - }, - "dependencies": { - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - } - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry-axios": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", - "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" - }, - "retry-request": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-3.3.2.tgz", - "integrity": "sha512-WIiGp37XXDC6e7ku3LFoi7LCL/Gs9luGeeqvbPRb+Zl6OQMw4RCRfSaW+aLfE6lhz1R941UavE6Svl3Dm5xGIQ==", - "requires": { - "request": "^2.81.0", - "through2": "^2.0.0" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==" - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sinon": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.4.tgz", - "integrity": "sha512-NFEts+4D4jp2sBjL94fQpZk5o73kzn/g58+I9Dp15i9vsnT4Lk1UEyUf2jACODWLG6Pz/llF0sArYUw47Aarmg==", - "requires": { - "@sinonjs/formatio": "^2.0.0", - "@sinonjs/samsam": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.7.1", - "nise": "^1.4.2", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "split-array-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", - "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", - "requires": { - "is-stream-ended": "^0.1.4" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-events": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.4.tgz", - "integrity": "sha512-D243NJaYs/xBN2QnoiMDY7IesJFIK7gEhnvAYqJa5JvDdnh2dC4qDBwlCf0ohPpX2QRlA/4gnbnPd3rs3KxVcA==", - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", - "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringifier": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz", - "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=", - "requires": { - "core-js": "^2.0.0", - "traverse": "^0.6.6", - "type-name": "^2.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" - }, - "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.1.1", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.0.5" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - } - } - }, - "supertap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", - "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "indent-string": "^3.2.0", - "js-yaml": "^3.10.0", - "serialize-error": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "supertest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.1.0.tgz", - "integrity": "sha512-O44AMnmJqx294uJQjfUmEyYOg7d9mylNFsMw/Wkz4evKd1njyPrtCN+U6ZIC7sKtfEVQhfTqFFijlXx8KP/Czw==", - "dev": true, - "requires": { - "methods": "~1.1.2", - "superagent": "3.8.2" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "requires": { - "punycode": "^1.4.1" - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, - "type-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", - "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unique-temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "os-tmpdir": "^1.0.1", - "uid2": "0.0.3" - } - }, - "universal-deep-strict-equal": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", - "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", - "requires": { - "array-filter": "^1.0.0", - "indexof": "0.0.1", - "object-keys": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", - "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", - "dev": true, - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - }, - "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true - } - } - }, - "write-pkg": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", - "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", - "dev": true, - "requires": { - "sort-keys": "^2.0.0", - "write-json-file": "^2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yargs": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", - "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "requires": { - "xregexp": "4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } - } - } -} From 0b391e6ca7ee01655a76908efc35232af7b61e2f Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 9 Aug 2018 10:16:36 -0700 Subject: [PATCH 241/820] fix: fix the samples tests (#164) --- handwritten/nodejs-datastore/src/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index fb2a3853f46..c1595c12d77 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -359,6 +359,7 @@ const gapic = Object.freeze({ * }); */ function Datastore(options) { + options = options || {}; if (!(this instanceof Datastore)) { return new Datastore(options); } From 9356ef6e5997f8dc5d53ae6e253b15f1e3be15fa Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 9 Aug 2018 14:35:52 -0700 Subject: [PATCH 242/820] chore: do not use npm ci (#166) --- handwritten/nodejs-datastore/synth.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 00a216fa780..d30213c529b 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -12,7 +12,7 @@ # tasks has two product names, and a poorly named artman yaml version = 'v1' library = gapic.node_library( - 'datastore', version, + 'datastore', version, config_path='/google/datastore/artman_datastore.yaml') # Copy everything except for top level index, package.json, and README.md @@ -25,6 +25,6 @@ # Node.js specific cleanup -subprocess.run(['npm', 'ci']) +subprocess.run(['npm', 'install']) subprocess.run(['npm', 'run', 'prettier']) subprocess.run(['npm', 'run', 'lint']) From 61eb44de071285e4e5386aa2503c64dac15d0020 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sat, 11 Aug 2018 19:26:35 -0700 Subject: [PATCH 243/820] test: use sinon for mocking (#168) --- handwritten/nodejs-datastore/test/request.js | 166 ++++++++----------- 1 file changed, 70 insertions(+), 96 deletions(-) diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.js index 6269ffa69cb..7fc1af1ba93 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.js @@ -20,7 +20,7 @@ const assert = require('assert'); const extend = require('extend'); const is = require('is'); const proxyquire = require('proxyquire'); -const sinon = require('sinon').sandbox.create(); +const sinon = require('sinon'); const through = require('through2'); const pfy = require('@google-cloud/promisify'); const pjy = require('@google-cloud/projectify'); @@ -50,38 +50,6 @@ const fakeV1 = { }, }; -let overrides = {}; - -function override(name, object) { - const cachedObject = extend({}, object); - overrides[name] = {}; - - Object.keys(object).forEach(function(methodName) { - if (typeof object[methodName] !== 'function') { - return; - } - - object[methodName] = function() { - const args = arguments; - - if (overrides[name][methodName]) { - return overrides[name][methodName].apply(this, args); - } - - return cachedObject[methodName].apply(this, args); - }; - }); -} - -function resetOverrides() { - overrides = Object.keys(overrides).reduce(function(acc, name) { - acc[name] = {}; - return acc; - }, {}); -} - -override('entity', entity); - function FakeQuery() { this.calledWith_ = arguments; } @@ -93,25 +61,24 @@ describe('Request', function() { let request; let key; + let sandbox; before(function() { - Request = proxyquire('../src/request.js', { + Request = proxyquire('../src/request', { '@google-cloud/promisify': fakePfy, '@google-cloud/projectify': fakePjy, - './entity.js': entity, - './query.js': FakeQuery, + './entity': entity, + './query': FakeQuery, './v1': fakeV1, }); - - override('Request', Request); }); after(function() { v1FakeClientOverride = null; - resetOverrides(); }); beforeEach(function() { + sandbox = sinon.createSandbox(); pjyOverride = null; key = new entity.Key({ namespace: 'namespace', @@ -119,10 +86,13 @@ describe('Request', function() { }); FakeQuery.prototype = new Query(); v1FakeClientOverride = null; - resetOverrides(); request = new Request(); }); + afterEach(() => { + sandbox.restore(); + }); + describe('instantiation', function() { it('should promisify all the things', function() { assert(promisified); @@ -140,13 +110,9 @@ describe('Request', function() { method: 'insert', }; const expectedPreparedEntityObject = extend(true, {}, obj); - const preparedEntityObject = Request.prepareEntityObject_(obj); - assert.notStrictEqual(preparedEntityObject, obj); - assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); - assert.deepStrictEqual( preparedEntityObject, expectedPreparedEntityObject @@ -173,16 +139,12 @@ describe('Request', function() { allocations: ALLOCATIONS, }; - beforeEach(function() { - overrides.entity.isKeyComplete = function() {}; - overrides.entity.keyToKeyProto = function() {}; - }); - it('should throw if the key is complete', function() { - overrides.entity.isKeyComplete = function(key) { + sandbox.stub(entity, 'keyToKeyProto'); + sandbox.stub(entity, 'isKeyComplete').callsFake(key => { assert.strictEqual(key, INCOMPLETE_KEY); return true; - }; + }); assert.throws(function() { request.allocateIds(INCOMPLETE_KEY, OPTIONS, assert.ifError); @@ -191,11 +153,11 @@ describe('Request', function() { it('should make the correct request', function(done) { const keyProto = {}; - - overrides.entity.keyToKeyProto = function(key) { + sandbox.stub(entity, 'isKeyComplete'); + sandbox.stub(entity, 'keyToKeyProto').callsFake(key => { assert.strictEqual(key, INCOMPLETE_KEY); return keyProto; - }; + }); request.request_ = function(config) { assert.strictEqual(config.client, 'DatastoreClient'); @@ -216,15 +178,18 @@ describe('Request', function() { }); it('should allow a numeric shorthand for allocations', function(done) { + sandbox.stub(entity, 'isKeyComplete'); + sandbox.stub(entity, 'keyToKeyProto'); request.request_ = function(config) { assert.strictEqual(config.reqOpts.keys.length, ALLOCATIONS); done(); }; - request.allocateIds(INCOMPLETE_KEY, ALLOCATIONS, assert.ifError); }); it('should allow customization of GAX options', function(done) { + sandbox.stub(entity, 'isKeyComplete'); + sandbox.stub(entity, 'keyToKeyProto'); const options = extend({}, OPTIONS, { gaxOptions: {}, }); @@ -248,6 +213,8 @@ describe('Request', function() { }); it('should exec callback with error & API response', function(done) { + sandbox.stub(entity, 'isKeyComplete'); + sandbox.stub(entity, 'keyToKeyProto'); request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { assert.strictEqual(err, ERROR); assert.strictEqual(keys, null); @@ -271,12 +238,12 @@ describe('Request', function() { it('should create and return Keys & API response', function(done) { const key = {}; - - overrides.entity.keyFromKeyProto = function(keyProto) { + sandbox.stub(entity, 'isKeyComplete'); + sandbox.stub(entity, 'keyToKeyProto'); + sandbox.stub(entity, 'keyFromKeyProto').callsFake(keyProto => { assert.strictEqual(keyProto, API_RESPONSE.keys[0]); return key; - }; - + }); request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { assert.ifError(err); assert.deepStrictEqual(keys, [key]); @@ -299,10 +266,10 @@ describe('Request', function() { }); it('should convert key to key proto', function(done) { - overrides.entity.keyToKeyProto = function(key_) { + sandbox.stub(entity, 'keyToKeyProto').callsFake(key_ => { assert.strictEqual(key_, key); done(); - }; + }); request.createReadStream(key).on('error', done); }); @@ -467,11 +434,11 @@ describe('Request', function() { }); it('should format the results', function(done) { - overrides.entity.formatArray = function(arr) { + sandbox.stub(entity, 'formatArray').callsFake(arr => { assert.strictEqual(arr, apiResponse.found); setImmediate(done); return arr; - }; + }); request .createReadStream(key) @@ -625,7 +592,7 @@ describe('Request', function() { const fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { - request.createReadStream = sinon.spy(function() { + request.createReadStream = sandbox.spy(function() { const stream = through.obj(); setImmediate(function() { @@ -684,7 +651,7 @@ describe('Request', function() { const error = new Error('err'); beforeEach(function() { - request.createReadStream = sinon.spy(function() { + request.createReadStream = sandbox.spy(function() { const stream = through.obj(); setImmediate(function() { @@ -712,10 +679,10 @@ describe('Request', function() { method: 'insert', }); - overrides.Request.prepareEntityObject_ = function(obj) { + sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); return preparedEntityObject; - }; + }); request.save = function(entities) { assert.deepStrictEqual(entities[0], expectedEntityObject); @@ -748,7 +715,6 @@ describe('Request', function() { describe('runQueryStream', function() { beforeEach(function() { - overrides.entity.queryToQueryProto = function() {}; request.request_ = function() {}; }); @@ -757,11 +723,11 @@ describe('Request', function() { query.namespace = 'namespace'; query = extend(true, new FakeQuery(), query); - overrides.entity.queryToQueryProto = function(query_) { + sandbox.stub(entity, 'queryToQueryProto').callsFake(query_ => { assert.notStrictEqual(query_, query); assert.deepStrictEqual(query_, query); done(); - }; + }); request .runQueryStream(query) @@ -773,9 +739,7 @@ describe('Request', function() { const query = {namespace: 'namespace'}; const queryProto = {}; - overrides.entity.queryToQueryProto = function() { - return queryProto; - }; + sandbox.stub(entity, 'queryToQueryProto').returns(queryProto); request.request_ = function(config) { assert.strictEqual(config.client, 'DatastoreClient'); @@ -798,6 +762,7 @@ describe('Request', function() { }); it('should allow customization of GAX options', function(done) { + sandbox.stub(entity, 'queryToQueryProto'); const options = { gaxOptions: {}, }; @@ -814,6 +779,7 @@ describe('Request', function() { }); it('should allow setting strong read consistency', function(done) { + sandbox.stub(entity, 'queryToQueryProto'); request.request_ = function(config) { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); @@ -826,6 +792,7 @@ describe('Request', function() { }); it('should allow setting strong eventual consistency', function(done) { + sandbox.stub(entity, 'queryToQueryProto'); request.request_ = function(config) { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); @@ -847,6 +814,7 @@ describe('Request', function() { }); it('should emit error on a stream', function(done) { + sandbox.stub(entity, 'queryToQueryProto'); request .runQueryStream({}) .on('error', function(err) { @@ -872,21 +840,26 @@ describe('Request', function() { }, }; + let formatArrayStub; beforeEach(function() { request.request_ = function(config, callback) { callback(null, apiResponse); }; - overrides.entity.formatArray = function(array) { - return array; - }; + formatArrayStub = sandbox + .stub(entity, 'formatArray') + .callsFake(array => { + return array; + }); }); it('should format results', function(done) { - overrides.entity.formatArray = function(array) { + sandbox.stub(entity, 'queryToQueryProto'); + formatArrayStub.restore(); + sandbox.stub(entity, 'formatArray').callsFake(array => { assert.strictEqual(array, apiResponse.batch.entityResults); return array; - }; + }); const entities = []; @@ -917,13 +890,14 @@ describe('Request', function() { let startCalled = false; let offsetCalled = false; - overrides.entity.formatArray = function(array) { + formatArrayStub.restore(); + sandbox.stub(entity, 'formatArray').callsFake(array => { assert.strictEqual( array, entityResultsPerApiCall[timesRequestCalled] ); return entityResultsPerApiCall[timesRequestCalled]; - }; + }); request.request_ = function(config, callback) { timesRequestCalled++; @@ -979,12 +953,12 @@ describe('Request', function() { return this; }; - overrides.entity.queryToQueryProto = function(query_) { + sandbox.stub(entity, 'queryToQueryProto').callsFake(query_ => { if (timesRequestCalled > 1) { assert.strictEqual(query_, query); } return queryProto; - }; + }); const entities = []; let info; @@ -1037,9 +1011,7 @@ describe('Request', function() { callback(null, {batch: batch}); }; - overrides.entity.queryToQueryProto = function() { - return {}; - }; + sandbox.stub(entity, 'queryToQueryProto').returns({}); FakeQuery.prototype.limit = function() { limitCalled = true; @@ -1061,6 +1033,8 @@ describe('Request', function() { let timesRequestCalled = 0; let entitiesEmitted = 0; + sandbox.stub(entity, 'queryToQueryProto'); + request.request_ = function(config, callback) { timesRequestCalled++; @@ -1091,7 +1065,7 @@ describe('Request', function() { it('should not get more results if stream was ended', function(done) { let timesRequestCalled = 0; - + sandbox.stub(entity, 'queryToQueryProto'); request.request_ = function(config, callback) { timesRequestCalled++; callback(null, apiResponse); @@ -1119,7 +1093,7 @@ describe('Request', function() { const fakeEntities = [{a: 'a'}, {b: 'b'}]; beforeEach(function() { - request.runQueryStream = sinon.spy(function() { + request.runQueryStream = sandbox.spy(function() { const stream = through.obj(); setImmediate(function() { @@ -1173,7 +1147,7 @@ describe('Request', function() { const error = new Error('err'); beforeEach(function() { - request.runQueryStream = sinon.spy(function() { + request.runQueryStream = sandbox.spy(function() { const stream = through.obj(); setImmediate(function() { @@ -1277,7 +1251,7 @@ describe('Request', function() { const entityObject = {}; let prepared = false; - overrides.Request.prepareEntityObject_ = function(obj) { + sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); prepared = true; return { @@ -1285,7 +1259,7 @@ describe('Request', function() { method: 'insert', data: {k: 'v'}, }; - }; + }); request.request_ = function() { assert.strictEqual(prepared, true); @@ -1451,12 +1425,12 @@ describe('Request', function() { callback(null, response); }; - overrides.entity.keyFromKeyProto = function(keyProto) { + sandbox.stub(entity, 'keyFromKeyProto').callsFake(keyProto => { keyProtos.push(keyProto); return { id: ids[keyProtos.length - 1], }; - }; + }); request.save( [ @@ -1507,10 +1481,10 @@ describe('Request', function() { method: 'update', }); - overrides.Request.prepareEntityObject_ = function(obj) { + sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); return preparedEntityObject; - }; + }); request.save = function(entities) { assert.deepStrictEqual(entities[0], expectedEntityObject); @@ -1549,10 +1523,10 @@ describe('Request', function() { method: 'upsert', }); - overrides.Request.prepareEntityObject_ = function(obj) { + sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); return preparedEntityObject; - }; + }); request.save = function(entities) { assert.deepStrictEqual(entities[0], expectedEntityObject); From bc3442ad878bc5af9bcc1905d81598b1b724ee55 Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Tue, 14 Aug 2018 14:10:39 -0700 Subject: [PATCH 244/820] doc: fix namespace causing 404 (#170) --- handwritten/nodejs-datastore/src/index.js | 24 ++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index c1595c12d77..a0962e08c67 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -1,5 +1,5 @@ /*! - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2018 Google LLC. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,28 @@ * limitations under the License. */ +/** + * @namespace google + */ +/** + * @namespace google.cloud + */ +/** + * @namespace google.cloud.datastore + */ +/** + * @namespace google.cloud.datastore.v1 + */ +/** + * @namespace google.protobuf + */ +/** + * @namespace google.rpc + */ +/** + * @namespace google.type + */ + 'use strict'; const arrify = require('arrify'); From 1b3881044f42bc5e6449351d8c375364f957862c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 16 Aug 2018 16:28:30 -0700 Subject: [PATCH 245/820] chore(deps): update dependency eslint-config-prettier to v3 (#169) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ead85f362b4..7299bf74f47 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -85,7 +85,7 @@ "codecov": "^3.0.2", "deep-strict-equal": "^0.2.0", "eslint": "^5.0.0", - "eslint-config-prettier": "^2.9.0", + "eslint-config-prettier": "^3.0.0", "eslint-plugin-node": "^7.0.0", "eslint-plugin-prettier": "^2.6.0", "ink-docstrap": "^1.3.2", From c887c71cd3976be13c932c4a6913255b26891b4d Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 20 Aug 2018 09:21:13 -0700 Subject: [PATCH 246/820] chore: start converting to es classes (#173) --- handwritten/nodejs-datastore/src/query.js | 747 +++--- handwritten/nodejs-datastore/src/request.js | 2006 +++++++++-------- .../nodejs-datastore/src/transaction.js | 1085 ++++----- .../nodejs-datastore/test/transaction.js | 32 +- 4 files changed, 1938 insertions(+), 1932 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index a21561e0c74..fff1094adc4 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -37,408 +37,407 @@ const arrify = require('arrify'); * const datastore = new Datastore(); * const query = datastore.createQuery('AnimalNamespace', 'Lion'); */ -function Query(scope, namespace, kinds) { - if (!kinds) { - kinds = namespace; - namespace = null; +class Query { + constructor(scope, namespace, kinds) { + if (!kinds) { + kinds = namespace; + namespace = null; + } + + /** + * @name Query#scope + * @type {Datastore|Transaction} + */ + this.scope = scope; + + /** + * @name Query#namespace + * @type {?string} + */ + this.namespace = namespace || null; + /** + * @name Query#kinds + * @type {string} + */ + this.kinds = kinds; + + /** + * @name Query#filters + * @type {array} + */ + this.filters = []; + /** + * @name Query#orders + * @type {array} + */ + this.orders = []; + /** + * @name Query#groupByVal + * @type {array} + */ + this.groupByVal = []; + /** + * @name Query#selectVal + * @type {array} + */ + this.selectVal = []; + + // pagination + /** + * @name Query#startVal + * @type {?number} + */ + this.startVal = null; + /** + * @name Query#endVal + * @type {?number} + */ + this.endVal = null; + /** + * @name Query#limitVal + * @type {number} + */ + this.limitVal = -1; + /** + * @name Query#offsetVal + * @type {number} + */ + this.offsetVal = -1; } /** - * @name Query#scope - * @type {Datastore|Transaction} + * Datastore allows querying on properties. Supported comparison operators + * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are + * currently not supported. + * + * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* + * + * @see [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs} + * + * @param {string} property The field name. + * @param {string} [operator="="] Operator (=, <, >, <=, >=). + * @param {*} value Value to compare property to. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * + * //- + * // List all companies that are located in California. + * //- + * const caliQuery = query.filter('state', 'CA'); + * + * //- + * // List all companies named Google that have less than 400 employees. + * //- + * const companyQuery = query + * .filter('name', 'Google') + * .filter('size', '<', 400); + * + * //- + * // To filter by key, use `__key__` for the property name. Filter on keys + * // stored as properties is not currently supported. + * //- + * const key = datastore.key(['Company', 'Google']); + * const keyQuery = query.filter('__key__', key); */ - this.scope = scope; + filter(property, operator, value) { + if (arguments.length === 2) { + value = operator; + operator = '='; + } + + this.filters.push({ + name: property.trim(), + op: operator.trim(), + val: value, + }); + return this; + } /** - * @name Query#namespace - * @type {?string} + * Filter a query by ancestors. + * + * @see [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs} + * + * @param {Key} key Key object to filter by. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('MyKind'); + * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); */ - this.namespace = namespace || null; + hasAncestor(key) { + this.filters.push({name: '__key__', op: 'HAS_ANCESTOR', val: key}); + return this; + } + /** - * @name Query#kinds - * @type {string} + * Sort the results by a property name in ascending or descending order. By + * default, an ascending sort order will be used. + * + * @see [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs} + * + * @param {string} property The property to order by. + * @param {object} [options] Options object. + * @param {boolean} [options.descending=false] Sort the results by a property + * name in descending order. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * // Sort by size ascendingly. + * const companiesAscending = companyQuery.order('size'); + * + * // Sort by size descendingly. + * const companiesDescending = companyQuery.order('size', { + * descending: true + * }); */ - this.kinds = kinds; + order(property, options) { + const sign = options && options.descending ? '-' : '+'; + this.orders.push({name: property, sign: sign}); + return this; + } /** - * @name Query#filters - * @type {array} + * Group query results by a list of properties. + * + * @param {array} properties Properties to group by. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * const groupedQuery = companyQuery.groupBy(['name', 'size']); */ - this.filters = []; + groupBy(fieldNames) { + this.groupByVal = arrify(fieldNames); + return this; + } + /** - * @name Query#orders - * @type {array} + * Retrieve only select properties from the matched entities. + * + * Queries that select a subset of properties are called Projection Queries. + * + * @see [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} + * + * @param {string|string[]} fieldNames Properties to return from the matched + * entities. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * // Only retrieve the name property. + * const selectQuery = companyQuery.select('name'); + * + * // Only retrieve the name and size properties. + * const selectQuery = companyQuery.select(['name', 'size']); */ - this.orders = []; + select(fieldNames) { + this.selectVal = arrify(fieldNames); + return this; + } + /** - * @name Query#groupByVal - * @type {array} + * Set a starting cursor to a query. + * + * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets} + * + * @param {string} cursorToken The starting cursor token. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * const cursorToken = 'X'; + * + * // Retrieve results starting from cursorToken. + * const startQuery = companyQuery.start(cursorToken); */ - this.groupByVal = []; + start(start) { + this.startVal = start; + return this; + } + /** - * @name Query#selectVal - * @type {array} + * Set an ending cursor to a query. + * + * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} + * + * @param {string} cursorToken The ending cursor token. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * const cursorToken = 'X'; + * + * // Retrieve results limited to the extent of cursorToken. + * const endQuery = companyQuery.end(cursorToken); */ - this.selectVal = []; + end(end) { + this.endVal = end; + return this; + } - // pagination /** - * @name Query#startVal - * @type {?number} + * Set a limit on a query. + * + * @see [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * + * @param {number} n The number of results to limit the query to. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * // Limit the results to 10 entities. + * const limitQuery = companyQuery.limit(10); */ - this.startVal = null; + limit(n) { + this.limitVal = n; + return this; + } + /** - * @name Query#endVal - * @type {?number} + * Set an offset on a query. + * + * @see [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * + * @param {number} n The offset to start from after the start cursor. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const companyQuery = datastore.createQuery('Company'); + * + * // Start from the 101st result. + * const offsetQuery = companyQuery.offset(100); */ - this.endVal = null; + offset(n) { + this.offsetVal = n; + return this; + } + /** - * @name Query#limitVal - * @type {number} + * Run the query. + * + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {function} [callback] The callback function. If omitted, a readable + * stream instance is returned. + * @param {?error} callback.err An error returned while making this request + * @param {object[]} callback.entities A list of entities. + * @param {object} callback.info An object useful for pagination. + * @param {?string} callback.info.endCursor Use this in a follow-up query to + * begin from where these results ended. + * @param {string} callback.info.moreResults Datastore responds with one of: + * + * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * results after the specified limit. + * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * results after the specified end cursor. + * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * + * query.run(function(err, entities, info) { + * // entities = An array of records. + * + * // Access the Key object for an entity. + * const firstEntityKey = entities[0][datastore.KEY]; + * }); + * + * //- + * // A keys-only query returns just the keys of the result entities instead of + * // the entities themselves, at lower latency and cost. + * //- + * query.select('__key__'); + * + * query.run(function(err, entities) { + * const keys = entities.map(function(entity) { + * return entity[datastore.KEY]; + * }); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * query.run().then(function(data) { + * const entities = data[0]; + * }); */ - this.limitVal = -1; + run() { + const query = this; + const args = [query].concat([].slice.call(arguments)); + return this.scope.runQuery.apply(this.scope, args); + } + /** - * @name Query#offsetVal - * @type {number} + * Run the query as a readable object stream. + * + * @method Query#runStream + * @param {object} [options] Optional configuration. See + * {@link Query#run} for a complete list of options. + * @returns {stream} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + * + * query.runStream() + * .on('error', console.error) + * .on('data', function (entity) { + * // Access the Key object for this entity. + * const key = entity[datastore.KEY]; + * }) + * .on('info', function(info) {}) + * .on('end', function() { + * // All entities retrieved. + * }); + * + * //- + * // If you anticipate many results, you can end a stream early to prevent + * // unnecessary processing and API requests. + * //- + * query.runStream() + * .on('data', function (entity) { + * this.end(); + * }); */ - this.offsetVal = -1; -} - -/** - * Datastore allows querying on properties. Supported comparison operators - * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are - * currently not supported. - * - * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* - * - * @see [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs} - * - * @param {string} property The field name. - * @param {string} [operator="="] Operator (=, <, >, <=, >=). - * @param {*} value Value to compare property to. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const query = datastore.createQuery('Company'); - * - * //- - * // List all companies that are located in California. - * //- - * const caliQuery = query.filter('state', 'CA'); - * - * //- - * // List all companies named Google that have less than 400 employees. - * //- - * const companyQuery = query - * .filter('name', 'Google') - * .filter('size', '<', 400); - * - * //- - * // To filter by key, use `__key__` for the property name. Filter on keys - * // stored as properties is not currently supported. - * //- - * const key = datastore.key(['Company', 'Google']); - * const keyQuery = query.filter('__key__', key); - */ -Query.prototype.filter = function(property, operator, value) { - if (arguments.length === 2) { - value = operator; - operator = '='; + runStream() { + const query = this; + const args = [query].concat([].slice.call(arguments)); + return this.scope.runQueryStream.apply(this.scope, args); } - - this.filters.push({ - name: property.trim(), - op: operator.trim(), - val: value, - }); - return this; -}; - -/** - * Filter a query by ancestors. - * - * @see [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs} - * - * @param {Key} key Key object to filter by. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const query = datastore.createQuery('MyKind'); - * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); - */ -Query.prototype.hasAncestor = function(key) { - this.filters.push({name: '__key__', op: 'HAS_ANCESTOR', val: key}); - return this; -}; - -/** - * Sort the results by a property name in ascending or descending order. By - * default, an ascending sort order will be used. - * - * @see [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs} - * - * @param {string} property The property to order by. - * @param {object} [options] Options object. - * @param {boolean} [options.descending=false] Sort the results by a property - * name in descending order. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * // Sort by size ascendingly. - * const companiesAscending = companyQuery.order('size'); - * - * // Sort by size descendingly. - * const companiesDescending = companyQuery.order('size', { - * descending: true - * }); - */ -Query.prototype.order = function(property, options) { - const sign = options && options.descending ? '-' : '+'; - - this.orders.push({name: property, sign: sign}); - return this; -}; - -/** - * Group query results by a list of properties. - * - * @param {array} properties Properties to group by. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * const groupedQuery = companyQuery.groupBy(['name', 'size']); - */ -Query.prototype.groupBy = function(fieldNames) { - this.groupByVal = arrify(fieldNames); - return this; -}; - -/** - * Retrieve only select properties from the matched entities. - * - * Queries that select a subset of properties are called Projection Queries. - * - * @see [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} - * - * @param {string|string[]} fieldNames Properties to return from the matched - * entities. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * // Only retrieve the name property. - * const selectQuery = companyQuery.select('name'); - * - * // Only retrieve the name and size properties. - * const selectQuery = companyQuery.select(['name', 'size']); - */ -Query.prototype.select = function(fieldNames) { - this.selectVal = arrify(fieldNames); - return this; -}; - -/** - * Set a starting cursor to a query. - * - * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets} - * - * @param {string} cursorToken The starting cursor token. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * const cursorToken = 'X'; - * - * // Retrieve results starting from cursorToken. - * const startQuery = companyQuery.start(cursorToken); - */ -Query.prototype.start = function(start) { - this.startVal = start; - return this; -}; - -/** - * Set an ending cursor to a query. - * - * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} - * - * @param {string} cursorToken The ending cursor token. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * const cursorToken = 'X'; - * - * // Retrieve results limited to the extent of cursorToken. - * const endQuery = companyQuery.end(cursorToken); - */ -Query.prototype.end = function(end) { - this.endVal = end; - return this; -}; - -/** - * Set a limit on a query. - * - * @see [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} - * - * @param {number} n The number of results to limit the query to. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * // Limit the results to 10 entities. - * const limitQuery = companyQuery.limit(10); - */ -Query.prototype.limit = function(n) { - this.limitVal = n; - return this; -}; - -/** - * Set an offset on a query. - * - * @see [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} - * - * @param {number} n The offset to start from after the start cursor. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const companyQuery = datastore.createQuery('Company'); - * - * // Start from the 101st result. - * const offsetQuery = companyQuery.offset(100); - */ -Query.prototype.offset = function(n) { - this.offsetVal = n; - return this; -}; - -/** - * Run the query. - * - * @param {object} [options] Optional configuration. - * @param {string} [options.consistency] Specify either `strong` or `eventual`. - * If not specified, default values are chosen by Datastore for the - * operation. Learn more about strong and eventual consistency - * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {function} [callback] The callback function. If omitted, a readable - * stream instance is returned. - * @param {?error} callback.err An error returned while making this request - * @param {object[]} callback.entities A list of entities. - * @param {object} callback.info An object useful for pagination. - * @param {?string} callback.info.endCursor Use this in a follow-up query to - * begin from where these results ended. - * @param {string} callback.info.moreResults Datastore responds with one of: - * - * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more - * results after the specified limit. - * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more - * results after the specified end cursor. - * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const query = datastore.createQuery('Company'); - * - * query.run(function(err, entities, info) { - * // entities = An array of records. - * - * // Access the Key object for an entity. - * const firstEntityKey = entities[0][datastore.KEY]; - * }); - * - * //- - * // A keys-only query returns just the keys of the result entities instead of - * // the entities themselves, at lower latency and cost. - * //- - * query.select('__key__'); - * - * query.run(function(err, entities) { - * const keys = entities.map(function(entity) { - * return entity[datastore.KEY]; - * }); - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * query.run().then(function(data) { - * const entities = data[0]; - * }); - */ -Query.prototype.run = function() { - const query = this; - const args = [query].concat([].slice.call(arguments)); - - return this.scope.runQuery.apply(this.scope, args); -}; - -/** - * Run the query as a readable object stream. - * - * @method Query#runStream - * @param {object} [options] Optional configuration. See - * {@link Query#run} for a complete list of options. - * @returns {stream} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const query = datastore.createQuery('Company'); - * - * query.runStream() - * .on('error', console.error) - * .on('data', function (entity) { - * // Access the Key object for this entity. - * const key = entity[datastore.KEY]; - * }) - * .on('info', function(info) {}) - * .on('end', function() { - * // All entities retrieved. - * }); - * - * //- - * // If you anticipate many results, you can end a stream early to prevent - * // unnecessary processing and API requests. - * //- - * query.runStream() - * .on('data', function (entity) { - * this.end(); - * }); - */ -Query.prototype.runStream = function() { - const query = this; - const args = [query].concat([].slice.call(arguments)); - - return this.scope.runQueryStream.apply(this.scope, args); -}; +} /** * Reference to the {@link Query} class. diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index f5961cf7315..97e5bfa6973 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -32,8 +32,8 @@ const gapic = Object.freeze({ v1: require('./v1'), }); -const entity = require('./entity.js'); -const Query = require('./query.js'); +const entity = require('./entity'); +const Query = require('./query'); /** * A map of read consistency values to proto codes. @@ -55,1110 +55,1118 @@ const CONSISTENCY_PROTO_CODE = { * * @class */ -function DatastoreRequest() {} - -/** - * Format a user's input to mutation methods. This will create a deep clone of - * the input, as well as allow users to pass an object in the format of an - * entity. - * - * Both of the following formats can be supplied supported: - * - * datastore.save({ - * key: datastore.key('Kind'), - * data: { foo: 'bar' } - * }, function(err) {}) - * - * const entity = { foo: 'bar' } - * entity[datastore.KEY] = datastore.key('Kind') - * datastore.save(entity, function(err) {}) - * - * @private - * - * @see [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} - * - * @param {object} obj The user's input object. - */ -DatastoreRequest.prepareEntityObject_ = function(obj) { - const entityObject = extend(true, {}, obj); - - // Entity objects are also supported. - if (obj[entity.KEY_SYMBOL]) { - return { - key: obj[entity.KEY_SYMBOL], - data: entityObject, - }; - } - - return entityObject; -}; - -/** - * Generate IDs without creating entities. - * - * @param {Key} key The key object to complete. - * @param {number|object} options Either the number of IDs to allocate or an - * options object for further customization of the request. - * @param {number} options.allocations How many IDs to allocate. - * @param {object} [options.gaxOptions] Request configuration options, outlined - * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {array} callback.keys The generated IDs - * @param {object} callback.apiResponse The full API response. - * - * @example - * const incompleteKey = datastore.key(['Company']); - * - * //- - * // The following call will create 100 new IDs from the Company kind, which - * // exists under the default namespace. - * //- - * datastore.allocateIds(incompleteKey, 100, function(err, keys) {}); - * - * //- - * // Or, if you're using a transaction object. - * //- - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.allocateIds(incompleteKey, 100, function(err, keys) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - * }); - * - * //- - * // You may prefer to create IDs from a non-default namespace by providing an - * // incomplete key with a namespace. Similar to the previous example, the call - * // below will create 100 new IDs, but from the Company kind that exists under - * // the "ns-test" namespace. - * //- - * const incompleteKey = datastore.key({ - * namespace: 'ns-test', - * path: ['Company'] - * }); - * - * function callback(err, keys, apiResponse) {} - * - * datastore.allocateIds(incompleteKey, 100, callback); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * datastore.allocateIds(incompleteKey, 100).then(function(data) { - * const keys = data[0]; - * const apiResponse = data[1]; - * }); - */ -DatastoreRequest.prototype.allocateIds = function(key, options, callback) { - if (entity.isKeyComplete(key)) { - throw new Error('An incomplete key should be provided.'); - } - - if (is.number(options)) { - options = { - allocations: options, - }; - } - - this.request_( - { - client: 'DatastoreClient', - method: 'allocateIds', - reqOpts: { - keys: new Array(options.allocations).fill(entity.keyToKeyProto(key)), - }, - gaxOpts: options.gaxOptions, - }, - function(err, resp) { - if (err) { - callback(err, null, resp); - return; - } - - const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - - callback(null, keys, resp); +class DatastoreRequest { + /** + * Format a user's input to mutation methods. This will create a deep clone of + * the input, as well as allow users to pass an object in the format of an + * entity. + * + * Both of the following formats can be supplied supported: + * + * datastore.save({ + * key: datastore.key('Kind'), + * data: { foo: 'bar' } + * }, function(err) {}) + * + * const entity = { foo: 'bar' } + * entity[datastore.KEY] = datastore.key('Kind') + * datastore.save(entity, function(err) {}) + * + * @private + * + * @see [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} + * + * @param {object} obj The user's input object. + */ + static prepareEntityObject_(obj) { + const entityObject = extend(true, {}, obj); + + // Entity objects are also supported. + if (obj[entity.KEY_SYMBOL]) { + return { + key: obj[entity.KEY_SYMBOL], + data: entityObject, + }; } - ); -}; - -/** - * Retrieve the entities as a readable object stream. - * - * @throws {Error} If at least one Key object is not provided. - * - * @param {Key|Key[]} keys Datastore key object(s). - * @param {object} [options] Optional configuration. See {@link Datastore#get} - * for a complete list of options. - * - * @example - * const keys = [ - * datastore.key(['Company', 123]), - * datastore.key(['Product', 'Computer']) - * ]; - * - * datastore.createReadStream(keys) - * .on('error', function(err) {}) - * .on('data', function(entity) { - * // entity is an entity object. - * }) - * .on('end', function() { - * // All entities retrieved. - * }); - */ -DatastoreRequest.prototype.createReadStream = function(keys, options) { - const self = this; - - options = options || {}; - - keys = arrify(keys).map(entity.keyToKeyProto); - if (keys.length === 0) { - throw new Error('At least one Key object is required.'); + return entityObject; } - const stream = streamEvents(through.obj()); - - stream.once('reading', function() { - makeRequest(keys); - }); - - function makeRequest(keys) { - const reqOpts = { - keys: keys, - }; - - if (options.consistency) { - const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + /** + * Generate IDs without creating entities. + * + * @param {Key} key The key object to complete. + * @param {number|object} options Either the number of IDs to allocate or an + * options object for further customization of the request. + * @param {number} options.allocations How many IDs to allocate. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {array} callback.keys The generated IDs + * @param {object} callback.apiResponse The full API response. + * + * @example + * const incompleteKey = datastore.key(['Company']); + * + * //- + * // The following call will create 100 new IDs from the Company kind, which + * // exists under the default namespace. + * //- + * datastore.allocateIds(incompleteKey, 100, function(err, keys) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.allocateIds(incompleteKey, 100, function(err, keys) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // You may prefer to create IDs from a non-default namespace by providing an + * // incomplete key with a namespace. Similar to the previous example, the call + * // below will create 100 new IDs, but from the Company kind that exists under + * // the "ns-test" namespace. + * //- + * const incompleteKey = datastore.key({ + * namespace: 'ns-test', + * path: ['Company'] + * }); + * + * function callback(err, keys, apiResponse) {} + * + * datastore.allocateIds(incompleteKey, 100, callback); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.allocateIds(incompleteKey, 100).then(function(data) { + * const keys = data[0]; + * const apiResponse = data[1]; + * }); + */ + allocateIds(key, options, callback) { + if (entity.isKeyComplete(key)) { + throw new Error('An incomplete key should be provided.'); + } - reqOpts.readOptions = { - readConsistency: code, + if (is.number(options)) { + options = { + allocations: options, }; } - self.request_( + this.request_( { client: 'DatastoreClient', - method: 'lookup', - reqOpts: reqOpts, + method: 'allocateIds', + reqOpts: { + keys: new Array(options.allocations).fill(entity.keyToKeyProto(key)), + }, gaxOpts: options.gaxOptions, }, function(err, resp) { if (err) { - stream.destroy(err); + callback(err, null, resp); return; } - const entities = entity.formatArray(resp.found); - const nextKeys = (resp.deferred || []) - .map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); - - split(entities, stream).then(function(streamEnded) { - if (streamEnded) { - return; - } - - if (nextKeys.length > 0) { - makeRequest(nextKeys); - return; - } + const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - stream.push(null); - }); + callback(null, keys, resp); } ); } - return stream; -}; + /** + * Retrieve the entities as a readable object stream. + * + * @throws {Error} If at least one Key object is not provided. + * + * @param {Key|Key[]} keys Datastore key object(s). + * @param {object} [options] Optional configuration. See {@link Datastore#get} + * for a complete list of options. + * + * @example + * const keys = [ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ]; + * + * datastore.createReadStream(keys) + * .on('error', function(err) {}) + * .on('data', function(entity) { + * // entity is an entity object. + * }) + * .on('end', function() { + * // All entities retrieved. + * }); + */ + createReadStream(keys, options) { + const self = this; + + options = options || {}; + + keys = arrify(keys).map(entity.keyToKeyProto); + + if (keys.length === 0) { + throw new Error('At least one Key object is required.'); + } -/** - * Delete all entities identified with the specified key(s). - * - * @param {Key|Key[]} key Datastore key object(s). - * @param {object} [gaxOptions] Request configuration options, outlined here: - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - * - * @example - * const key = datastore.key(['Company', 123]); - * datastore.delete(key, function(err, apiResp) {}); - * - * //- - * // Or, if you're using a transaction object. - * //- - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.delete(key); - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - * - * //- - * // Delete multiple entities at once. - * //- - * datastore.delete([ - * datastore.key(['Company', 123]), - * datastore.key(['Product', 'Computer']) - * ], function(err, apiResponse) {}); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * datastore.delete().then(function(data) { - * const apiResponse = data[0]; - * }); - */ -DatastoreRequest.prototype.delete = function(keys, gaxOptions, callback) { - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } + const stream = streamEvents(through.obj()); - callback = callback || function() {}; + stream.once('reading', function() { + makeRequest(keys); + }); - const reqOpts = { - mutations: arrify(keys).map(function(key) { - return { - delete: entity.keyToKeyProto(key), + function makeRequest(keys) { + const reqOpts = { + keys: keys, }; - }), - }; - if (this.id) { - this.requests_.push(reqOpts); - return; - } + if (options.consistency) { + const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; - this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts: reqOpts, - gaxOpts: gaxOptions, - }, - callback - ); -}; + reqOpts.readOptions = { + readConsistency: code, + }; + } -/** - * Retrieve the entities identified with the specified key(s) in the current - * transaction. Get operations require a valid key to retrieve the - * key-identified entity from Datastore. - * - * @throws {Error} If at least one Key object is not provided. - * - * @param {Key|Key[]} keys Datastore key object(s). - * @param {object} [options] Optional configuration. - * @param {string} [options.consistency] Specify either `strong` or `eventual`. - * If not specified, default values are chosen by Datastore for the - * operation. Learn more about strong and eventual consistency - * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {object} [options.gaxOptions] Request configuration options, outlined - * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object|object[]} callback.entity The entity object(s) which match - * the provided keys. - * - * @example - * //- - * // Get a single entity. - * //- - * const key = datastore.key(['Company', 123]); - * - * datastore.get(key, function(err, entity) {}); - * - * //- - * // Or, if you're using a transaction object. - * //- - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.get(key, function(err, entity) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - * }); - * - * //- - * // Get multiple entities at once with a callback. - * //- - * const keys = [ - * datastore.key(['Company', 123]), - * datastore.key(['Product', 'Computer']) - * ]; - * - * datastore.get(keys, function(err, entities) {}); - * - * //- - * // Here's how you would update the value of an entity with the help of the - * // `save` method. - * //- - * datastore.get(key, function(err, entity) { - * if (err) { - * // Error handling omitted. - * } - * - * entity.newValue = true; - * - * datastore.save({ - * key: key, - * data: entity - * }, function(err) {}); - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * datastore.get(keys).then(function(data) { - * const entities = data[0]; - * }); - */ -DatastoreRequest.prototype.get = function(keys, options, callback) { - if (is.fn(options)) { - callback = options; - options = {}; - } + self.request_( + { + client: 'DatastoreClient', + method: 'lookup', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + function(err, resp) { + if (err) { + stream.destroy(err); + return; + } - options = options || {}; + const entities = entity.formatArray(resp.found); + const nextKeys = (resp.deferred || []) + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); - this.createReadStream(keys, options) - .on('error', callback) - .pipe( - concat(function(results) { - const isSingleLookup = !is.array(keys); - callback(null, isSingleLookup ? results[0] : results); - }) - ); -}; + split(entities, stream).then(function(streamEnded) { + if (streamEnded) { + return; + } -/** - * Maps to {@link Datastore#save}, forcing the method to be `insert`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ -DatastoreRequest.prototype.insert = function(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'insert')); + if (nextKeys.length > 0) { + makeRequest(nextKeys); + return; + } - this.save(entities, callback); -}; + stream.push(null); + }); + } + ); + } -/** - * Datastore allows you to query entities by kind, filter them by property - * filters, and sort them by a property name. Projection and pagination are also - * supported. - * - * The query is run, and the results are returned as the second argument to your - * callback. A third argument may also exist, which is a query object that uses - * the end cursor from the previous query as the starting cursor for the next - * query. You can pass that object back to this method to see if more results - * exist. - * - * @param {Query} query Query object. - * @param {object} [options] Optional configuration. - * @param {string} [options.consistency] Specify either `strong` or `eventual`. - * If not specified, default values are chosen by Datastore for the - * operation. Learn more about strong and eventual consistency - * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). - * @param {object} [options.gaxOptions] Request configuration options, outlined - * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} [callback] The callback function. If omitted, a readable - * stream instance is returned. - * @param {?error} callback.err An error returned while making this request - * @param {object[]} callback.entities A list of entities. - * @param {object} callback.info An object useful for pagination. - * @param {?string} callback.info.endCursor Use this in a follow-up query to - * begin from where these results ended. - * @param {string} callback.info.moreResults Datastore responds with one of: - * - * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more - * results after the specified limit. - * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more - * results after the specified end cursor. - * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. - * - * @example - * //- - * // Where you see `transaction`, assume this is the context that's relevant to - * // your use, whether that be a Datastore or a Transaction object. - * //- - * const query = datastore.createQuery('Lion'); - * - * datastore.runQuery(query, function(err, entities, info) { - * // entities = An array of records. - * - * // Access the Key object for an entity. - * const firstEntityKey = entities[0][datastore.KEY]; - * }); - * - * //- - * // Or, if you're using a transaction object. - * //- - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.runQuery(query, function(err, entities) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - * }); - * - * //- - * // A keys-only query returns just the keys of the result entities instead of - * // the entities themselves, at lower latency and cost. - * //- - * const keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); - * - * datastore.runQuery(keysOnlyQuery, function(err, entities) { - * const keys = entities.map(function(entity) { - * return entity[datastore.KEY]; - * }); - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * datastore.runQuery(query).then(function(data) { - * const entities = data[0]; - * }); - */ -DatastoreRequest.prototype.runQuery = function(query, options, callback) { - if (is.fn(options)) { - callback = options; - options = {}; + return stream; } - options = options || {}; - - let info; - - this.runQueryStream(query, options) - .on('error', callback) - .on('info', function(info_) { - info = info_; - }) - .pipe( - concat(function(results) { - callback(null, results, info); - }) - ); -}; - -/** - * Get a list of entities as a readable object stream. - * - * See {@link Datastore#runQuery} for a list of all available options. - * - * @param {Query} query Query object. - * @param {object} [options] Optional configuration. - * @param {object} [options.gaxOptions] Request configuration options, outlined - * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * - * @example - * datastore.runQueryStream(query) - * .on('error', console.error) - * .on('data', function(entity) { - * // Access the Key object for this entity. - * const key = entity[datastore.KEY]; - * }) - * .on('info', function(info) {}) - * .on('end', function() { - * // All entities retrieved. - * }); - * - * //- - * // If you anticipate many results, you can end a stream early to prevent - * // unnecessary processing and API requests. - * //- - * datastore.runQueryStream(query) - * .on('data', function(entity) { - * this.end(); - * }); - */ -DatastoreRequest.prototype.runQueryStream = function(query, options) { - const self = this; - - options = options || {}; - - query = extend(true, new Query(), query); - - const stream = streamEvents(through.obj()); + /** + * Delete all entities identified with the specified key(s). + * + * @param {Key|Key[]} key Datastore key object(s). + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + * + * @example + * const key = datastore.key(['Company', 123]); + * datastore.delete(key, function(err, apiResp) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.delete(key); + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * + * //- + * // Delete multiple entities at once. + * //- + * datastore.delete([ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ], function(err, apiResponse) {}); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.delete().then(function(data) { + * const apiResponse = data[0]; + * }); + */ + delete(keys, gaxOptions, callback) { + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } - stream.once('reading', function() { - makeRequest(query); - }); + callback = callback || function() {}; - function makeRequest(query) { const reqOpts = { - query: entity.queryToQueryProto(query), + mutations: arrify(keys).map(function(key) { + return { + delete: entity.keyToKeyProto(key), + }; + }), }; - if (options.consistency) { - const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; - reqOpts.readOptions = { - readConsistency: code, - }; - } - - if (query.namespace) { - reqOpts.partitionId = { - namespaceId: query.namespace, - }; + if (this.id) { + this.requests_.push(reqOpts); + return; } - self.request_( + this.request_( { client: 'DatastoreClient', - method: 'runQuery', + method: 'commit', reqOpts: reqOpts, - gaxOpts: options.gaxOptions, + gaxOpts: gaxOptions, }, - onResultSet + callback ); } - function onResultSet(err, resp) { - if (err) { - stream.destroy(err); - return; + /** + * Retrieve the entities identified with the specified key(s) in the current + * transaction. Get operations require a valid key to retrieve the + * key-identified entity from Datastore. + * + * @throws {Error} If at least one Key object is not provided. + * + * @param {Key|Key[]} keys Datastore key object(s). + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object|object[]} callback.entity The entity object(s) which match + * the provided keys. + * + * @example + * //- + * // Get a single entity. + * //- + * const key = datastore.key(['Company', 123]); + * + * datastore.get(key, function(err, entity) {}); + * + * //- + * // Or, if you're using a transaction object. + * //- + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.get(key, function(err, entity) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // Get multiple entities at once with a callback. + * //- + * const keys = [ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ]; + * + * datastore.get(keys, function(err, entities) {}); + * + * //- + * // Here's how you would update the value of an entity with the help of the + * // `save` method. + * //- + * datastore.get(key, function(err, entity) { + * if (err) { + * // Error handling omitted. + * } + * + * entity.newValue = true; + * + * datastore.save({ + * key: key, + * data: entity + * }, function(err) {}); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.get(keys).then(function(data) { + * const entities = data[0]; + * }); + */ + get(keys, options, callback) { + if (is.fn(options)) { + callback = options; + options = {}; } - const info = { - moreResults: resp.batch.moreResults, - }; + options = options || {}; - if (resp.batch.endCursor) { - info.endCursor = resp.batch.endCursor.toString('base64'); - } + this.createReadStream(keys, options) + .on('error', callback) + .pipe( + concat(function(results) { + const isSingleLookup = !is.array(keys); + callback(null, isSingleLookup ? results[0] : results); + }) + ); + } - let entities = []; + /** + * Maps to {@link Datastore#save}, forcing the method to be `insert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + insert(entities, callback) { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map(propAssign('method', 'insert')); + + this.save(entities, callback); + } - if (resp.batch.entityResults) { - entities = entity.formatArray(resp.batch.entityResults); + /** + * Datastore allows you to query entities by kind, filter them by property + * filters, and sort them by a property name. Projection and pagination are also + * supported. + * + * The query is run, and the results are returned as the second argument to your + * callback. A third argument may also exist, which is a query object that uses + * the end cursor from the previous query as the starting cursor for the next + * query. You can pass that object back to this method to see if more results + * exist. + * + * @param {Query} query Query object. + * @param {object} [options] Optional configuration. + * @param {string} [options.consistency] Specify either `strong` or `eventual`. + * If not specified, default values are chosen by Datastore for the + * operation. Learn more about strong and eventual consistency + * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} [callback] The callback function. If omitted, a readable + * stream instance is returned. + * @param {?error} callback.err An error returned while making this request + * @param {object[]} callback.entities A list of entities. + * @param {object} callback.info An object useful for pagination. + * @param {?string} callback.info.endCursor Use this in a follow-up query to + * begin from where these results ended. + * @param {string} callback.info.moreResults Datastore responds with one of: + * + * - {@link Datastore#MORE_RESULTS_AFTER_LIMIT}: There *may* be more + * results after the specified limit. + * - {@link Datastore#MORE_RESULTS_AFTER_CURSOR}: There *may* be more + * results after the specified end cursor. + * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. + * + * @example + * //- + * // Where you see `transaction`, assume this is the context that's relevant to + * // your use, whether that be a Datastore or a Transaction object. + * //- + * const query = datastore.createQuery('Lion'); + * + * datastore.runQuery(query, function(err, entities, info) { + * // entities = An array of records. + * + * // Access the Key object for an entity. + * const firstEntityKey = entities[0][datastore.KEY]; + * }); + * + * //- + * // Or, if you're using a transaction object. + * //- + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.runQuery(query, function(err, entities) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * //- + * // A keys-only query returns just the keys of the result entities instead of + * // the entities themselves, at lower latency and cost. + * //- + * const keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); + * + * datastore.runQuery(keysOnlyQuery, function(err, entities) { + * const keys = entities.map(function(entity) { + * return entity[datastore.KEY]; + * }); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.runQuery(query).then(function(data) { + * const entities = data[0]; + * }); + */ + runQuery(query, options, callback) { + if (is.fn(options)) { + callback = options; + options = {}; } - // Emit each result right away, then get the rest if necessary. - split(entities, stream).then(function(streamEnded) { - if (streamEnded) { - return; - } + options = options || {}; - if (resp.batch.moreResults !== 'NOT_FINISHED') { - stream.emit('info', info); - stream.push(null); - return; - } + let info; - // The query is "NOT_FINISHED". Get the rest of the results. - const offset = query.offsetVal === -1 ? 0 : query.offsetVal; + this.runQueryStream(query, options) + .on('error', callback) + .on('info', function(info_) { + info = info_; + }) + .pipe( + concat(function(results) { + callback(null, results, info); + }) + ); + } - query.start(info.endCursor).offset(offset - resp.batch.skippedResults); + /** + * Get a list of entities as a readable object stream. + * + * See {@link Datastore#runQuery} for a list of all available options. + * + * @param {Query} query Query object. + * @param {object} [options] Optional configuration. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * + * @example + * datastore.runQueryStream(query) + * .on('error', console.error) + * .on('data', function(entity) { + * // Access the Key object for this entity. + * const key = entity[datastore.KEY]; + * }) + * .on('info', function(info) {}) + * .on('end', function() { + * // All entities retrieved. + * }); + * + * //- + * // If you anticipate many results, you can end a stream early to prevent + * // unnecessary processing and API requests. + * //- + * datastore.runQueryStream(query) + * .on('data', function(entity) { + * this.end(); + * }); + */ + runQueryStream(query, options) { + const self = this; + + options = options || {}; + + query = extend(true, new Query(), query); + + const stream = streamEvents(through.obj()); + + stream.once('reading', function() { + makeRequest(query); + }); + + function makeRequest(query) { + const reqOpts = { + query: entity.queryToQueryProto(query), + }; - const limit = query.limitVal; - if (limit && limit > -1) { - query.limit(limit - resp.batch.entityResults.length); + if (options.consistency) { + const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + reqOpts.readOptions = { + readConsistency: code, + }; } - makeRequest(query); - }); - } + if (query.namespace) { + reqOpts.partitionId = { + namespaceId: query.namespace, + }; + } - return stream; -}; + self.request_( + { + client: 'DatastoreClient', + method: 'runQuery', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + onResultSet + ); + } -/** - * Insert or update the specified object(s). If a key is incomplete, its - * associated object is inserted and the original Key object is updated to - * contain the generated ID. - * - * This method will determine the correct Datastore method to execute (`upsert`, - * `insert`, or `update`) by using the key(s) provided. For example, if you - * provide an incomplete key (one without an ID), the request will create a new - * entity and have its ID automatically assigned. If you provide a complete key, - * the entity will be updated with the data specified. - * - * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an `excludeFromIndexes` array. See - * below for an example. - * - * @borrows {@link Transaction#save} as save - * - * @throws {Error} If an unrecognized method is provided. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the example below to see - * how to target properties at different levels of nesting within your - * @param {string} [entities.method] Explicit method to use, either 'insert', - * 'update', or 'upsert'. - * @param {object} entities.data Data to save with the provided key. - * entity. - * @param {object} [gaxOptions] Request configuration options, outlined here: - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - * - * @example - * //- - * // Save a single entity. - * // - * // Notice that we are providing an incomplete key. After saving, the original - * // Key object used to save will be updated to contain the path with its - * // generated ID. - * //- - * const key = datastore.key('Company'); - * const entity = { - * key: key, - * data: { - * rating: '10' - * } - * }; - * - * datastore.save(entity, function(err) { - * console.log(key.path); // [ 'Company', 5669468231434240 ] - * console.log(key.namespace); // undefined - * }); - * - * //- - * // Save a single entity using a provided name instead of auto-generated ID. - * // - * // Here we are providing a key with name instead of an ID. After saving, the - * // original Key object used to save will be updated to contain the path with - * // the name instead of a generated ID. - * //- - * const key = datastore.key(['Company', 'donutshack']); - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: 8 - * } - * }; - * - * datastore.save(entity, function(err) { - * console.log(key.path); // ['Company', 'donutshack'] - * console.log(key.namespace); // undefined - * }); - * - * //- - * // Save a single entity with a provided namespace. Namespaces allow for - * // multitenancy. To read more about this, see - * // [the Datastore docs on key concepts](https://goo.gl/M1LUAu). - * // - * // Here we are providing a key with namespace. - * //- - * const key = datastore.key({ - * namespace: 'my-namespace', - * path: ['Company', 'donutshack'] - * }); - * - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: 8 - * } - * }; - * - * datastore.save(entity, function(err) { - * console.log(key.path); // ['Company', 'donutshack'] - * console.log(key.namespace); // 'my-namespace' - * }); - * - * //- - * // Save different types of data, including ints, doubles, dates, booleans, - * // blobs, and lists. - * // - * // Notice that we are providing an incomplete key. After saving, the original - * // Key object used to save will be updated to contain the path with its - * // generated ID. - * //- - * const key = datastore.key('Company'); - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: datastore.int(10), - * worth: datastore.double(123456.78), - * location: datastore.geoPoint({ - * latitude: 40.6894, - * longitude: -74.0447 - * }), - * numDonutsServed: 45, - * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), - * isStartup: true, - * donutEmoji: Buffer.from('\uD83C\uDF69'), - * keywords: [ - * 'donut', - * 'coffee', - * 'yum' - * ] - * } - * }; - * - * datastore.save(entity, function(err, apiResponse) {}); - * - * //- - * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. - * // This will allow storing string values larger than 1500 bytes. - * //- - * const entity = { - * key: datastore.key('Company'), - * excludeFromIndexes: [ - * 'description', - * 'embeddedEntity.description', - * 'arrayValue[]', - * 'arrayValue[].description' - * ], - * data: { - * description: 'Long string (...)', - * embeddedEntity: { - * description: 'Long string (...)' - * }, - * arrayValue: [ - * 'Long string (...)', - * { - * description: 'Long string (...)' - * } - * ] - * } - * }; - * - * datastore.save(entity, function(err, apiResponse) {}); - * - * //- - * // Save multiple entities at once. - * //- - * const companyKey = datastore.key(['Company', 123]); - * const productKey = datastore.key(['Product', 'Computer']); - * const entities = [ - * { - * key: companyKey, - * data: { - * HQ: 'Dallas, TX' - * } - * }, - * { - * key: productKey, - * data: { - * vendor: 'Dell' - * } - * } - * ]; - * - * datastore.save(entities, function(err, apiResponse) {}); - * - * //- - * // Explicitly attempt to 'insert' a specific entity. - * //- - * const userKey = datastore.key(['User', 'chilts']); - * const entity = { - * key: userKey, - * method: 'insert', - * data: { - * fullName: 'Andrew Chilton' - * } - * }; - * - * datastore.save(entity, function(err, apiResponse) {}); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * datastore.save(entity).then(function(data) { - * const apiResponse = data[0]; - * }); - */ -DatastoreRequest.prototype.save = function(entities, gaxOptions, callback) { - entities = arrify(entities); + function onResultSet(err, resp) { + if (err) { + stream.destroy(err); + return; + } - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } + const info = { + moreResults: resp.batch.moreResults, + }; - const insertIndexes = {}; - const mutations = []; - const methods = { - insert: true, - update: true, - upsert: true, - }; - - // Iterate over the entity objects, build a proto from all keys and values, - // then place in the correct mutation array (insert, update, etc). - entities - .map(DatastoreRequest.prepareEntityObject_) - .forEach(function(entityObject, index) { - const mutation = {}; - let entityProto = {}; - let method = 'upsert'; - - if (entityObject.method) { - if (methods[entityObject.method]) { - method = entityObject.method; - } else { - throw new Error('Method ' + entityObject.method + ' not recognized.'); - } + if (resp.batch.endCursor) { + info.endCursor = resp.batch.endCursor.toString('base64'); } - if (!entity.isKeyComplete(entityObject.key)) { - insertIndexes[index] = true; + let entities = []; + + if (resp.batch.entityResults) { + entities = entity.formatArray(resp.batch.entityResults); } - // @TODO remove in @google-cloud/datastore@2.0.0 - // This was replaced with a more efficient mechanism in the top-level - // `excludeFromIndexes` option. - if (is.array(entityObject.data)) { - entityProto.properties = entityObject.data.reduce(function(acc, data) { - const value = entity.encodeValue(data.value); - - if (is.boolean(data.excludeFromIndexes)) { - const excluded = data.excludeFromIndexes; - let values = value.arrayValue && value.arrayValue.values; - - if (values) { - values = values.map(propAssign('excludeFromIndexes', excluded)); - } else { - value.excludeFromIndexes = data.excludeFromIndexes; - } - } + // Emit each result right away, then get the rest if necessary. + split(entities, stream).then(function(streamEnded) { + if (streamEnded) { + return; + } - acc[data.name] = value; + if (resp.batch.moreResults !== 'NOT_FINISHED') { + stream.emit('info', info); + stream.push(null); + return; + } - return acc; - }, {}); - } else { - entityProto = entity.entityToEntityProto(entityObject); - } + // The query is "NOT_FINISHED". Get the rest of the results. + const offset = query.offsetVal === -1 ? 0 : query.offsetVal; - entityProto.key = entity.keyToKeyProto(entityObject.key); + query.start(info.endCursor).offset(offset - resp.batch.skippedResults); - mutation[method] = entityProto; - mutations.push(mutation); - }); + const limit = query.limitVal; + if (limit && limit > -1) { + query.limit(limit - resp.batch.entityResults.length); + } - const reqOpts = { - mutations: mutations, - }; + makeRequest(query); + }); + } - function onCommit(err, resp) { - if (err || !resp) { - callback(err, resp); - return; + return stream; + } + + /** + * Insert or update the specified object(s). If a key is incomplete, its + * associated object is inserted and the original Key object is updated to + * contain the generated ID. + * + * This method will determine the correct Datastore method to execute (`upsert`, + * `insert`, or `update`) by using the key(s) provided. For example, if you + * provide an incomplete key (one without an ID), the request will create a new + * entity and have its ID automatically assigned. If you provide a complete key, + * the entity will be updated with the data specified. + * + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an `excludeFromIndexes` array. See + * below for an example. + * + * @borrows {@link Transaction#save} as save + * + * @throws {Error} If an unrecognized method is provided. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the example below to see + * how to target properties at different levels of nesting within your + * @param {string} [entities.method] Explicit method to use, either 'insert', + * 'update', or 'upsert'. + * @param {object} entities.data Data to save with the provided key. + * entity. + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + * + * @example + * //- + * // Save a single entity. + * // + * // Notice that we are providing an incomplete key. After saving, the original + * // Key object used to save will be updated to contain the path with its + * // generated ID. + * //- + * const key = datastore.key('Company'); + * const entity = { + * key: key, + * data: { + * rating: '10' + * } + * }; + * + * datastore.save(entity, function(err) { + * console.log(key.path); // [ 'Company', 5669468231434240 ] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity using a provided name instead of auto-generated ID. + * // + * // Here we are providing a key with name instead of an ID. After saving, the + * // original Key object used to save will be updated to contain the path with + * // the name instead of a generated ID. + * //- + * const key = datastore.key(['Company', 'donutshack']); + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }; + * + * datastore.save(entity, function(err) { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity with a provided namespace. Namespaces allow for + * // multitenancy. To read more about this, see + * // [the Datastore docs on key concepts](https://goo.gl/M1LUAu). + * // + * // Here we are providing a key with namespace. + * //- + * const key = datastore.key({ + * namespace: 'my-namespace', + * path: ['Company', 'donutshack'] + * }); + * + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }; + * + * datastore.save(entity, function(err) { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // 'my-namespace' + * }); + * + * //- + * // Save different types of data, including ints, doubles, dates, booleans, + * // blobs, and lists. + * // + * // Notice that we are providing an incomplete key. After saving, the original + * // Key object used to save will be updated to contain the path with its + * // generated ID. + * //- + * const key = datastore.key('Company'); + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: datastore.int(10), + * worth: datastore.double(123456.78), + * location: datastore.geoPoint({ + * latitude: 40.6894, + * longitude: -74.0447 + * }), + * numDonutsServed: 45, + * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), + * isStartup: true, + * donutEmoji: Buffer.from('\uD83C\uDF69'), + * keywords: [ + * 'donut', + * 'coffee', + * 'yum' + * ] + * } + * }; + * + * datastore.save(entity, function(err, apiResponse) {}); + * + * //- + * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. + * // This will allow storing string values larger than 1500 bytes. + * //- + * const entity = { + * key: datastore.key('Company'), + * excludeFromIndexes: [ + * 'description', + * 'embeddedEntity.description', + * 'arrayValue[]', + * 'arrayValue[].description' + * ], + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * 'Long string (...)', + * { + * description: 'Long string (...)' + * } + * ] + * } + * }; + * + * datastore.save(entity, function(err, apiResponse) {}); + * + * //- + * // Save multiple entities at once. + * //- + * const companyKey = datastore.key(['Company', 123]); + * const productKey = datastore.key(['Product', 'Computer']); + * const entities = [ + * { + * key: companyKey, + * data: { + * HQ: 'Dallas, TX' + * } + * }, + * { + * key: productKey, + * data: { + * vendor: 'Dell' + * } + * } + * ]; + * + * datastore.save(entities, function(err, apiResponse) {}); + * + * //- + * // Explicitly attempt to 'insert' a specific entity. + * //- + * const userKey = datastore.key(['User', 'chilts']); + * const entity = { + * key: userKey, + * method: 'insert', + * data: { + * fullName: 'Andrew Chilton' + * } + * }; + * + * datastore.save(entity, function(err, apiResponse) {}); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.save(entity).then(function(data) { + * const apiResponse = data[0]; + * }); + */ + save(entities, gaxOptions, callback) { + entities = arrify(entities); + + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; } - arrify(resp.mutationResults).forEach(function(result, index) { - if (!result.key) { - return; - } + const insertIndexes = {}; + const mutations = []; + const methods = { + insert: true, + update: true, + upsert: true, + }; - if (insertIndexes[index]) { - const id = entity.keyFromKeyProto(result.key).id; - entities[index].key.id = id; - } - }); + // Iterate over the entity objects, build a proto from all keys and values, + // then place in the correct mutation array (insert, update, etc). + entities + .map(DatastoreRequest.prepareEntityObject_) + .forEach(function(entityObject, index) { + const mutation = {}; + let entityProto = {}; + let method = 'upsert'; + + if (entityObject.method) { + if (methods[entityObject.method]) { + method = entityObject.method; + } else { + throw new Error( + 'Method ' + entityObject.method + ' not recognized.' + ); + } + } - callback(null, resp); - } + if (!entity.isKeyComplete(entityObject.key)) { + insertIndexes[index] = true; + } - if (this.id) { - this.requests_.push(reqOpts); - this.requestCallbacks_.push(onCommit); - return; - } + // @TODO remove in @google-cloud/datastore@2.0.0 + // This was replaced with a more efficient mechanism in the top-level + // `excludeFromIndexes` option. + if (is.array(entityObject.data)) { + entityProto.properties = entityObject.data.reduce(function( + acc, + data + ) { + const value = entity.encodeValue(data.value); + + if (is.boolean(data.excludeFromIndexes)) { + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map(propAssign('excludeFromIndexes', excluded)); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } + } - this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts: reqOpts, - gaxOpts: gaxOptions, - }, - onCommit - ); -}; + acc[data.name] = value; -/** - * Maps to {@link Datastore#save}, forcing the method to be `update`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ -DatastoreRequest.prototype.update = function(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'update')); + return acc; + }, + {}); + } else { + entityProto = entity.entityToEntityProto(entityObject); + } - this.save(entities, callback); -}; + entityProto.key = entity.keyToKeyProto(entityObject.key); -/** - * Maps to {@link Datastore#save}, forcing the method to be `upsert`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ -DatastoreRequest.prototype.upsert = function(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'upsert')); + mutation[method] = entityProto; + mutations.push(mutation); + }); - this.save(entities, callback); -}; + const reqOpts = { + mutations: mutations, + }; -/** - * Make a request to the API endpoint. Properties to indicate a transactional or - * non-transactional operation are added automatically. - * - * @param {object} config Configuration object. - * @param {object} config.gaxOpts GAX options. - * @param {function} config.method The gax method to call. - * @param {object} config.reqOpts Request options. - * @param {function} callback The callback function. - * - * @private - */ -DatastoreRequest.prototype.request_ = function(config, callback) { - const datastore = this.datastore; + function onCommit(err, resp) { + if (err || !resp) { + callback(err, resp); + return; + } - callback = callback || function() {}; + arrify(resp.mutationResults).forEach(function(result, index) { + if (!result.key) { + return; + } - const isTransaction = is.defined(this.id); - const method = config.method; - let reqOpts = extend(true, {}, config.reqOpts); + if (insertIndexes[index]) { + const id = entity.keyFromKeyProto(result.key).id; + entities[index].key.id = id; + } + }); - reqOpts.projectId = datastore.projectId; + callback(null, resp); + } - // Set properties to indicate if we're in a transaction or not. - if (method === 'commit') { - if (isTransaction) { - reqOpts.mode = 'TRANSACTIONAL'; - reqOpts.transaction = this.id; - } else { - reqOpts.mode = 'NON_TRANSACTIONAL'; + if (this.id) { + this.requests_.push(reqOpts); + this.requestCallbacks_.push(onCommit); + return; } - } - if (method === 'rollback') { - reqOpts.transaction = this.id; + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts: reqOpts, + gaxOpts: gaxOptions, + }, + onCommit + ); } - if (isTransaction && (method === 'lookup' || method === 'runQuery')) { - if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { - throw new Error('Read consistency cannot be specified in a transaction.'); - } + /** + * Maps to {@link Datastore#save}, forcing the method to be `update`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + update(entities, callback) { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map(propAssign('method', 'update')); + + this.save(entities, callback); + } - reqOpts.readOptions = { - transaction: this.id, - }; + /** + * Maps to {@link Datastore#save}, forcing the method to be `upsert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + upsert(entities, callback) { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map(propAssign('method', 'upsert')); + + this.save(entities, callback); } - datastore.auth.getProjectId(function(err, projectId) { - if (err) { - callback(err); - return; + /** + * Make a request to the API endpoint. Properties to indicate a transactional or + * non-transactional operation are added automatically. + * + * @param {object} config Configuration object. + * @param {object} config.gaxOpts GAX options. + * @param {function} config.method The gax method to call. + * @param {object} config.reqOpts Request options. + * @param {function} callback The callback function. + * + * @private + */ + request_(config, callback) { + const datastore = this.datastore; + + callback = callback || function() {}; + + const isTransaction = is.defined(this.id); + const method = config.method; + let reqOpts = extend(true, {}, config.reqOpts); + + reqOpts.projectId = datastore.projectId; + + // Set properties to indicate if we're in a transaction or not. + if (method === 'commit') { + if (isTransaction) { + reqOpts.mode = 'TRANSACTIONAL'; + reqOpts.transaction = this.id; + } else { + reqOpts.mode = 'NON_TRANSACTIONAL'; + } + } + + if (method === 'rollback') { + reqOpts.transaction = this.id; } - const clientName = config.client; + if (isTransaction && (method === 'lookup' || method === 'runQuery')) { + if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { + throw new Error( + 'Read consistency cannot be specified in a transaction.' + ); + } - if (!datastore.clients_.has(clientName)) { - datastore.clients_.set( - clientName, - new gapic.v1[clientName](datastore.options) - ); + reqOpts.readOptions = { + transaction: this.id, + }; } - const gaxClient = datastore.clients_.get(clientName); + datastore.auth.getProjectId(function(err, projectId) { + if (err) { + callback(err); + return; + } + + const clientName = config.client; - reqOpts = replaceProjectIdToken(reqOpts, projectId); + if (!datastore.clients_.has(clientName)) { + datastore.clients_.set( + clientName, + new gapic.v1[clientName](datastore.options) + ); + } - const gaxOpts = extend(true, {}, config.gaxOpts, { - headers: { - 'google-cloud-resource-prefix': `projects/${projectId}`, - }, - }); + const gaxClient = datastore.clients_.get(clientName); - gaxClient[method](reqOpts, gaxOpts, callback); - }); -}; + reqOpts = replaceProjectIdToken(reqOpts, projectId); + + const gaxOpts = extend(true, {}, config.gaxOpts, { + headers: { + 'google-cloud-resource-prefix': `projects/${projectId}`, + }, + }); + + gaxClient[method](reqOpts, gaxOpts, callback); + }); + } +} /*! Developer Documentation * diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index 2de19c716a3..ae74ebebe15 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -20,10 +20,9 @@ const arrify = require('arrify'); const {promisifyAll} = require('@google-cloud/promisify'); const flatten = require('lodash.flatten'); const is = require('is'); -const util = require('util'); -const entity = require('./entity.js'); -const Request = require('./request.js'); +const entity = require('./entity'); +const Request = require('./request'); /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -43,582 +42,584 @@ const Request = require('./request.js'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); */ -function Transaction(datastore, options) { - /** - * @name Transaction#datastore - * @type {Datastore} - */ - this.datastore = datastore; +class Transaction extends Request { + constructor(datastore, options) { + super(); + /** + * @name Transaction#datastore + * @type {Datastore} + */ + this.datastore = datastore; + + /** + * @name Transaction#projectId + * @type {string} + */ + this.projectId = datastore.projectId; + /** + * @name Transaction#namespace + * @type {string} + */ + this.namespace = datastore.namespace; + + options = options || {}; + + this.id = options.id; + this.readOnly = options.readOnly === true; + + this.request = datastore.request_.bind(datastore); + + // A queue for entity modifications made during the transaction. + this.modifiedEntities_ = []; + + // Queue the callbacks that process the API responses. + this.requestCallbacks_ = []; + + // Queue the requests to make when we send the transactional commit. + this.requests_ = []; + } + + /*! Developer Documentation + * + * Below, we override two methods that we inherit from DatastoreRequest: + * `delete` and `save`. This is done because: + * + * A) the documentation needs to be different for a transactional save, and + * B) we build up a "modifiedEntities_" array on this object, used to build + * the final commit request with. + */ /** - * @name Transaction#projectId - * @type {string} - */ - this.projectId = datastore.projectId; - /** - * @name Transaction#namespace - * @type {string} + * Commit the remote transaction and finalize the current transaction instance. + * + * If the commit request fails, we will automatically rollback the transaction. + * + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * If the commit fails, we automatically try to rollback the transaction (see + * {module:datastore/transaction#rollback}). + * @param {object} callback.apiResponse The full API response. + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * transaction.commit(function(err, apiResponse) { + * if (err) { + * // Transaction could not be committed. + * } + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * transaction.commit().then(function(data) { + * const apiResponse = data[0]; + * }); */ - this.namespace = datastore.namespace; - - options = options || {}; - - this.id = options.id; - this.readOnly = options.readOnly === true; + commit(gaxOptions, callback) { + const self = this; - this.request = datastore.request_.bind(datastore); - - // A queue for entity modifications made during the transaction. - this.modifiedEntities_ = []; + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; + } - // Queue the callbacks that process the API responses. - this.requestCallbacks_ = []; + callback = callback || function() {}; - // Queue the requests to make when we send the transactional commit. - this.requests_ = []; -} + if (this.skipCommit) { + setImmediate(callback); + return; + } -util.inherits(Transaction, Request); + const keys = {}; + + this.modifiedEntities_ + // Reverse the order of the queue to respect the "last queued request wins" + // behavior. + .reverse() + // Limit the operations we're going to send through to only the most + // recently queued operations. E.g., if a user tries to save with the same + // key they just asked to be deleted, the delete request will be ignored, + // giving preference to the save operation. + .filter(function(modifiedEntity) { + const key = modifiedEntity.entity.key; + + if (!entity.isKeyComplete(key)) { + return true; + } + + const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); + + if (!keys[stringifiedKey]) { + keys[stringifiedKey] = true; + return true; + } + }) + // Group entities together by method: `save` mutations, then `delete`. Note: + // `save` mutations being first is required to maintain order when assigning + // IDs to incomplete keys. + .sort(function(a, b) { + return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; + }) + // Group arguments together so that we only make one call to each method. + // This is important for `DatastoreRequest.save`, especially, as that method + // handles assigning auto-generated IDs to the original keys passed in. When + // we eventually execute the `save` method's API callback, having all the + // keys together is necessary to maintain order. + .reduce(function(acc, entityObject) { + const lastEntityObject = acc[acc.length - 1]; + const sameMethod = + lastEntityObject && entityObject.method === lastEntityObject.method; + + if (!lastEntityObject || !sameMethod) { + acc.push(entityObject); + } else { + lastEntityObject.args = lastEntityObject.args.concat( + entityObject.args + ); + } + + return acc; + }, []) + // Call each of the mutational methods (DatastoreRequest[save,delete]) to + // build up a `req` array on this instance. This will also build up a + // `callbacks` array, that is the same callback that would run if we were + // using `save` and `delete` outside of a transaction, to process the + // response from the API. + .forEach(function(modifiedEntity) { + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); + + Request.prototype[method].call(self, args, function() {}); + }); -/*! Developer Documentation - * - * Below, we override two methods that we inherit from DatastoreRequest: - * `delete` and `save`. This is done because: - * - * A) the documentation needs to be different for a transactional save, and - * B) we build up a "modifiedEntities_" array on this object, used to build - * the final commit request with. - */ + // Take the `req` array built previously, and merge them into one request to + // send as the final transactional commit. + const reqOpts = { + mutations: flatten(this.requests_.map(x => x.mutations)), + }; -/** - * Commit the remote transaction and finalize the current transaction instance. - * - * If the commit request fails, we will automatically rollback the transaction. - * - * @param {object} [gaxOptions] Request configuration options, outlined here: - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request. - * If the commit fails, we automatically try to rollback the transaction (see - * {module:datastore/transaction#rollback}). - * @param {object} callback.apiResponse The full API response. - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * transaction.commit(function(err, apiResponse) { - * if (err) { - * // Transaction could not be committed. - * } - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * transaction.commit().then(function(data) { - * const apiResponse = data[0]; - * }); - */ -Transaction.prototype.commit = function(gaxOptions, callback) { - const self = this; + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts: reqOpts, + gaxOpts: gaxOptions, + }, + function(err, resp) { + if (err) { + // Rollback automatically for the user. + self.rollback(function() { + // Provide the error & API response from the failed commit to the user. + // Even a failed rollback should be transparent. + // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } + + // The `callbacks` array was built previously. These are the callbacks that + // handle the API response normally when using the DatastoreRequest.save and + // .delete methods. + self.requestCallbacks_.forEach(function(cb) { + cb(null, resp); + }); - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; + callback(null, resp); + } + ); } - callback = callback || function() {}; - - if (this.skipCommit) { - setImmediate(callback); - return; + /** + * Create a query for the specified kind. See {module:datastore/query} for all + * of the available methods. + * + * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * + * @see {@link Query} + * + * @param {string} [namespace] Namespace. + * @param {string} kind The kind to query. + * @returns {Query} + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * // Run the query inside the transaction. + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * const query = transaction.createQuery('Company'); + * + * query.run(function(err, entities) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + */ + createQuery() { + return this.datastore.createQuery.apply(this, arguments); } - const keys = {}; - - this.modifiedEntities_ - // Reverse the order of the queue to respect the "last queued request wins" - // behavior. - .reverse() - // Limit the operations we're going to send through to only the most - // recently queued operations. E.g., if a user tries to save with the same - // key they just asked to be deleted, the delete request will be ignored, - // giving preference to the save operation. - .filter(function(modifiedEntity) { - const key = modifiedEntity.entity.key; - - if (!entity.isKeyComplete(key)) { - return true; - } - - const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); - - if (!keys[stringifiedKey]) { - keys[stringifiedKey] = true; - return true; - } - }) - // Group entities together by method: `save` mutations, then `delete`. Note: - // `save` mutations being first is required to maintain order when assigning - // IDs to incomplete keys. - .sort(function(a, b) { - return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; - }) - // Group arguments together so that we only make one call to each method. - // This is important for `DatastoreRequest.save`, especially, as that method - // handles assigning auto-generated IDs to the original keys passed in. When - // we eventually execute the `save` method's API callback, having all the - // keys together is necessary to maintain order. - .reduce(function(acc, entityObject) { - const lastEntityObject = acc[acc.length - 1]; - const sameMethod = - lastEntityObject && entityObject.method === lastEntityObject.method; - - if (!lastEntityObject || !sameMethod) { - acc.push(entityObject); - } else { - lastEntityObject.args = lastEntityObject.args.concat(entityObject.args); - } - - return acc; - }, []) - // Call each of the mutational methods (DatastoreRequest[save,delete]) to - // build up a `req` array on this instance. This will also build up a - // `callbacks` array, that is the same callback that would run if we were - // using `save` and `delete` outside of a transaction, to process the - // response from the API. - .forEach(function(modifiedEntity) { - const method = modifiedEntity.method; - const args = modifiedEntity.args.reverse(); - - Request.prototype[method].call(self, args, function() {}); + /** + * Delete all entities identified with the specified key(s) in the current + * transaction. + * + * @param {Key|Key[]} key Datastore key object(s). + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * // Delete a single entity. + * transaction.delete(datastore.key(['Company', 123])); + * + * // Delete multiple entities at once. + * transaction.delete([ + * datastore.key(['Company', 123]), + * datastore.key(['Product', 'Computer']) + * ]); + * + * transaction.commit(function(err) { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + */ + delete(entities) { + const self = this; + + arrify(entities).forEach(function(ent) { + self.modifiedEntities_.push({ + entity: { + key: ent, + }, + method: 'delete', + args: [ent], + }); }); + } - // Take the `req` array built previously, and merge them into one request to - // send as the final transactional commit. - const reqOpts = { - mutations: flatten(this.requests_.map(x => x.mutations)), - }; - - this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts: reqOpts, - gaxOpts: gaxOptions, - }, - function(err, resp) { - if (err) { - // Rollback automatically for the user. - self.rollback(function() { - // Provide the error & API response from the failed commit to the user. - // Even a failed rollback should be transparent. - // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 - callback(err, resp); - }); - return; - } - - // The `callbacks` array was built previously. These are the callbacks that - // handle the API response normally when using the DatastoreRequest.save and - // .delete methods. - self.requestCallbacks_.forEach(function(cb) { - cb(null, resp); - }); + /** + * Reverse a transaction remotely and finalize the current transaction instance. + * + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {object} callback.apiResponse The full API response. + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.rollback(function(err) { + * if (!err) { + * // Transaction rolled back successfully. + * } + * }); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * transaction.rollback().then(function(data) { + * const apiResponse = data[0]; + * }); + */ + rollback(gaxOptions, callback) { + const self = this; - callback(null, resp); + if (is.fn(gaxOptions)) { + callback = gaxOptions; + gaxOptions = {}; } - ); -}; - -/** - * Create a query for the specified kind. See {module:datastore/query} for all - * of the available methods. - * - * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} - * - * @see {@link Query} - * - * @param {string} [namespace] Namespace. - * @param {string} kind The kind to query. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * // Run the query inside the transaction. - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * const query = transaction.createQuery('Company'); - * - * query.run(function(err, entities) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - * }); - */ -Transaction.prototype.createQuery = function() { - return this.datastore.createQuery.apply(this, arguments); -}; -/** - * Delete all entities identified with the specified key(s) in the current - * transaction. - * - * @param {Key|Key[]} key Datastore key object(s). - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * // Delete a single entity. - * transaction.delete(datastore.key(['Company', 123])); - * - * // Delete multiple entities at once. - * transaction.delete([ - * datastore.key(['Company', 123]), - * datastore.key(['Product', 'Computer']) - * ]); - * - * transaction.commit(function(err) { - * if (!err) { - * // Transaction committed successfully. - * } - * }); - * }); - */ -Transaction.prototype.delete = function(entities) { - const self = this; + callback = callback || function() {}; - arrify(entities).forEach(function(ent) { - self.modifiedEntities_.push({ - entity: { - key: ent, + this.request_( + { + client: 'DatastoreClient', + method: 'rollback', + gaxOpts: gaxOptions, }, - method: 'delete', - args: [ent], - }); - }); -}; - -/** - * Reverse a transaction remotely and finalize the current transaction instance. - * - * @param {object} [gaxOptions] Request configuration options, outlined here: - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request. - * @param {object} callback.apiResponse The full API response. - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.rollback(function(err) { - * if (!err) { - * // Transaction rolled back successfully. - * } - * }); - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * transaction.rollback().then(function(data) { - * const apiResponse = data[0]; - * }); - */ -Transaction.prototype.rollback = function(gaxOptions, callback) { - const self = this; + function(err, resp) { + self.skipCommit = true; - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; + callback(err || null, resp); + } + ); } - callback = callback || function() {}; - - this.request_( - { - client: 'DatastoreClient', - method: 'rollback', - gaxOpts: gaxOptions, - }, - function(err, resp) { - self.skipCommit = true; + /** + * Begin a remote transaction. In the callback provided, run your transactional + * commands. + * + * @param {object} [options] Configuration object. + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {boolean} [options.readOnly=false] A read-only transaction cannot + * modify entities. + * @param {string} [options.transactionId] The ID of a previous transaction. + * @param {function} callback The function to execute within the context of + * a transaction. + * @param {?error} callback.err An error returned while making this request. + * @param {Transaction} callback.transaction This transaction + * instance. + * @param {object} callback.apiResponse The full API response. + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * transaction.run(function(err, transaction) { + * // Perform Datastore transactional operations. + * const key = datastore.key(['Company', 123]); + * + * transaction.get(key, function(err, entity) { + * entity.name = 'Google'; + * + * transaction.save({ + * key: key, + * data: entity + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * transaction.run().then(function(data) { + * const transaction = data[0]; + * const apiResponse = data[1]; + * }); + */ + run(options, callback) { + const self = this; - callback(err || null, resp); + if (is.fn(options)) { + callback = options; + options = {}; } - ); -}; -/** - * Begin a remote transaction. In the callback provided, run your transactional - * commands. - * - * @param {object} [options] Configuration object. - * @param {object} [options.gaxOptions] Request configuration options, outlined - * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {boolean} [options.readOnly=false] A read-only transaction cannot - * modify entities. - * @param {string} [options.transactionId] The ID of a previous transaction. - * @param {function} callback The function to execute within the context of - * a transaction. - * @param {?error} callback.err An error returned while making this request. - * @param {Transaction} callback.transaction This transaction - * instance. - * @param {object} callback.apiResponse The full API response. - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * transaction.run(function(err, transaction) { - * // Perform Datastore transactional operations. - * const key = datastore.key(['Company', 123]); - * - * transaction.get(key, function(err, entity) { - * entity.name = 'Google'; - * - * transaction.save({ - * key: key, - * data: entity - * }); - * - * transaction.commit(function(err) { - * if (!err) { - * // Data saved successfully. - * } - * }); - * }); - * }); - * - * //- - * // If the callback is omitted, we'll return a Promise. - * //- - * transaction.run().then(function(data) { - * const transaction = data[0]; - * const apiResponse = data[1]; - * }); - */ -Transaction.prototype.run = function(options, callback) { - const self = this; + options = options || {}; + callback = callback || function() {}; - if (is.fn(options)) { - callback = options; - options = {}; - } + const reqOpts = { + transactionOptions: {}, + }; - options = options || {}; - callback = callback || function() {}; + if (options.readOnly || this.readOnly) { + reqOpts.transactionOptions.readOnly = {}; + } - const reqOpts = { - transactionOptions: {}, - }; + if (options.transactionId || this.id) { + reqOpts.transactionOptions.readWrite = { + previousTransaction: options.transactionId || this.id, + }; + } - if (options.readOnly || this.readOnly) { - reqOpts.transactionOptions.readOnly = {}; - } + if (options.transactionOptions) { + reqOpts.transactionOptions = options.transactionOptions; + } - if (options.transactionId || this.id) { - reqOpts.transactionOptions.readWrite = { - previousTransaction: options.transactionId || this.id, - }; - } + this.request_( + { + client: 'DatastoreClient', + method: 'beginTransaction', + reqOpts: reqOpts, + gaxOpts: options.gaxOptions, + }, + function(err, resp) { + if (err) { + callback(err, null, resp); + return; + } - if (options.transactionOptions) { - reqOpts.transactionOptions = options.transactionOptions; - } + self.id = resp.transaction; - this.request_( - { - client: 'DatastoreClient', - method: 'beginTransaction', - reqOpts: reqOpts, - gaxOpts: options.gaxOptions, - }, - function(err, resp) { - if (err) { - callback(err, null, resp); - return; + callback(null, self, resp); } + ); + } - self.id = resp.transaction; - - callback(null, self, resp); - } - ); -}; - -/** - * Insert or update the specified object(s) in the current transaction. If a key - * is incomplete, its associated object is inserted and the original Key object - * is updated to contain the generated ID. - * - * This method will determine the correct Datastore method to execute (`upsert`, - * `insert`, or `update`) by using the key(s) provided. For example, if you - * provide an incomplete key (one without an ID), the request will create a new - * entity and have its ID automatically assigned. If you provide a complete key, - * the entity will be updated with the data specified. - * - * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an `excludeFromIndexes` array. See - * below for an example. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the example below to see - * how to target properties at different levels of nesting within your - * entity. - * @param {object} entities.data Data to save with the provided key. - * - * @example - * Save a single entity. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * // Notice that we are providing an incomplete key. After the transaction is - * // committed, the Key object held by the `key` variable will be populated - * // with a path containing its generated ID. - * //- - * const key = datastore.key('Company'); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.save({ - * key: key, - * data: { - * rating: '10' - * } - * }); - * - * transaction.commit(function(err) { - * if (!err) { - * // Data saved successfully. - * } - * }); - * }); - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * - * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. - * // This will allow storing string values larger than 1500 bytes. - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.save({ - * key: key, - * excludeFromIndexes: [ - * 'description', - * 'embeddedEntity.description', - * 'arrayValue[].description' - * ], - * data: { - * description: 'Long string (...)', - * embeddedEntity: { - * description: 'Long string (...)' - * }, - * arrayValue: [ - * { - * description: 'Long string (...)' - * } - * ] - * } - * }); - * - * transaction.commit(function(err) { - * if (!err) { - * // Data saved successfully. - * } - * }); - * }); - * - * @example - * Save multiple entities at once. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - * const companyKey = datastore.key(['Company', 123]); - * const productKey = datastore.key(['Product', 'Computer']); - * - * transaction.run(function(err) { - * if (err) { - * // Error handling omitted. - * } - * - * transaction.save([ - * { - * key: companyKey, - * data: { - * HQ: 'Dallas, TX' - * } - * }, - * { - * key: productKey, - * data: { - * vendor: 'Dell' - * } - * } - * ]); - * - * transaction.commit(function(err) { - * if (!err) { - * // Data saved successfully. - * } - * }); - * }); - */ -Transaction.prototype.save = function(entities) { - const self = this; - - arrify(entities).forEach(function(ent) { - self.modifiedEntities_.push({ - entity: { - key: ent.key, - }, - method: 'save', - args: [ent], + /** + * Insert or update the specified object(s) in the current transaction. If a key + * is incomplete, its associated object is inserted and the original Key object + * is updated to contain the generated ID. + * + * This method will determine the correct Datastore method to execute (`upsert`, + * `insert`, or `update`) by using the key(s) provided. For example, if you + * provide an incomplete key (one without an ID), the request will create a new + * entity and have its ID automatically assigned. If you provide a complete key, + * the entity will be updated with the data specified. + * + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an `excludeFromIndexes` array. See + * below for an example. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the example below to see + * how to target properties at different levels of nesting within your + * entity. + * @param {object} entities.data Data to save with the provided key. + * + * @example + * Save a single entity. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * // Notice that we are providing an incomplete key. After the transaction is + * // committed, the Key object held by the `key` variable will be populated + * // with a path containing its generated ID. + * //- + * const key = datastore.key('Company'); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save({ + * key: key, + * data: { + * rating: '10' + * } + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * + * @example + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * + * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. + * // This will allow storing string values larger than 1500 bytes. + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save({ + * key: key, + * excludeFromIndexes: [ + * 'description', + * 'embeddedEntity.description', + * 'arrayValue[].description' + * ], + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * { + * description: 'Long string (...)' + * } + * ] + * } + * }); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + * + * @example + * Save multiple entities at once. + * const Datastore = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + * const companyKey = datastore.key(['Company', 123]); + * const productKey = datastore.key(['Product', 'Computer']); + * + * transaction.run(function(err) { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.save([ + * { + * key: companyKey, + * data: { + * HQ: 'Dallas, TX' + * } + * }, + * { + * key: productKey, + * data: { + * vendor: 'Dell' + * } + * } + * ]); + * + * transaction.commit(function(err) { + * if (!err) { + * // Data saved successfully. + * } + * }); + * }); + */ + save(entities) { + const self = this; + arrify(entities).forEach(function(ent) { + self.modifiedEntities_.push({ + entity: { + key: ent.key, + }, + method: 'save', + args: [ent], + }); }); - }); -}; + } +} /*! Developer Documentation * diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index 6aeaac89a0f..a3a7717c0c5 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -39,23 +39,21 @@ const DatastoreRequestOverride = { save: function() {}, }; -const FakeDatastoreRequest = { - prototype: { - delete: function() { - const args = [].slice.apply(arguments); - const results = DatastoreRequestOverride.delete.apply(null, args); - DatastoreRequestOverride.delete = function() {}; - return results; - }, - - save: function() { - const args = [].slice.apply(arguments); - const results = DatastoreRequestOverride.save.apply(null, args); - DatastoreRequestOverride.save = function() {}; - return results; - }, - }, -}; +class FakeDatastoreRequest { + delete() { + const args = [].slice.apply(arguments); + const results = DatastoreRequestOverride.delete.apply(null, args); + DatastoreRequestOverride.delete = function() {}; + return results; + } + + save() { + const args = [].slice.apply(arguments); + const results = DatastoreRequestOverride.save.apply(null, args); + DatastoreRequestOverride.save = function() {}; + return results; + } +} describe('Transaction', function() { let Transaction; From 5e86884e7e00d7a9ca4ba1c217fde75d660dcb5f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Wed, 22 Aug 2018 07:29:16 -0700 Subject: [PATCH 247/820] fix(deps): update dependency google-gax to ^0.19.0 (#177) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7299bf74f47..fc72b91ff1e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -69,7 +69,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auth-library": "^1.6.1", - "google-gax": "^0.18.0", + "google-gax": "^0.19.0", "google-proto-files": "^0.16.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", From 5797f633e8292d3aab0c012d4529b3cbb7dffce4 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Wed, 22 Aug 2018 15:18:30 -0700 Subject: [PATCH 248/820] chore: make CircleCI config consistent (#178) --- handwritten/nodejs-datastore/.circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index dd4c80cc6e9..41c82336dbb 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -59,7 +59,7 @@ jobs: - image: 'node:6' user: node steps: &unit_tests_steps - - checkout + - checkout - run: &npm_install_and_link name: Install and link the module command: |- @@ -69,7 +69,7 @@ jobs: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: npm test - run: node_modules/.bin/codecov - + node8: docker: - image: 'node:8' @@ -165,4 +165,4 @@ jobs: steps: - checkout - run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' - - run: npm publish --access=public \ No newline at end of file + - run: npm publish --access=public From 53f2b6f8cfa97991f2525478b27b5b209b40d0eb Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 22 Aug 2018 16:02:42 -0700 Subject: [PATCH 249/820] chore: use arrow functions (#176) --- handwritten/nodejs-datastore/src/entity.js | 22 +- handwritten/nodejs-datastore/src/index.js | 20 +- handwritten/nodejs-datastore/src/query.js | 12 +- handwritten/nodejs-datastore/src/request.js | 163 +++++------ .../nodejs-datastore/src/transaction.js | 94 +++--- .../nodejs-datastore/system-test/datastore.js | 270 ++++++++---------- 6 files changed, 258 insertions(+), 323 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index b2715bfc8c7..692edc8f611 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -478,14 +478,14 @@ function entityToEntityProto(entityObject) { const entityProto = { key: null, - properties: Object.keys(properties).reduce(function(encoded, key) { + properties: Object.keys(properties).reduce((encoded, key) => { encoded[key] = entity.encodeValue(properties[key]); return encoded; }, {}), }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { - excludeFromIndexes.forEach(function(excludePath) { + excludeFromIndexes.forEach(excludePath => { excludePathFromEntity(entityProto, excludePath); }); } @@ -543,7 +543,7 @@ function entityToEntityProto(entityObject) { entity.properties[firstPathPart].arrayValue ) { const array = entity.properties[firstPathPart].arrayValue; - array.values.forEach(function(value) { + array.values.forEach(value => { if (remainderPath === '') { // We want to exclude *this* array property, which is // equivalent with excluding all its values @@ -580,7 +580,7 @@ entity.entityToEntityProto = entityToEntityProto; * @returns {object[]} * * @example - * request_('runQuery', {}, function(err, response) { + * request_('runQuery', {}, (err, response) => { * const entityObjects = formatArray(response.batch.entityResults); * // { * // key: {}, @@ -592,7 +592,7 @@ entity.entityToEntityProto = entityToEntityProto; * }); */ function formatArray(results) { - return results.map(function(result) { + return results.map(result => { const ent = entity.entityFromEntityProto(result.entity); ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key); return ent; @@ -649,7 +649,7 @@ function keyFromKeyProto(keyProto) { keyOptions.namespace = keyProto.partitionId.namespaceId; } - keyProto.path.forEach(function(path, index) { + keyProto.path.forEach((path, index) => { keyOptions.path.push(path.kind); let id = path[path.idType]; @@ -787,19 +787,19 @@ function queryToQueryProto(query) { }; const queryProto = { - distinctOn: query.groupByVal.map(function(groupBy) { + distinctOn: query.groupByVal.map(groupBy => { return { name: groupBy, }; }), - kind: query.kinds.map(function(kind) { + kind: query.kinds.map(kind => { return { name: kind, }; }), - order: query.orders.map(function(order) { + order: query.orders.map(order => { return { property: { name: order.name, @@ -808,7 +808,7 @@ function queryToQueryProto(query) { }; }), - projection: query.selectVal.map(function(select) { + projection: query.selectVal.map(select => { return { property: { name: select, @@ -836,7 +836,7 @@ function queryToQueryProto(query) { } if (query.filters.length > 0) { - const filters = query.filters.map(function(filter) { + const filters = query.filters.map(filter => { let value = {}; if (filter.name === '__key__') { diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.js index a0962e08c67..a2f89d19b1e 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.js @@ -170,7 +170,7 @@ const gapic = Object.freeze({ * //- * // Run the query with {@link Datastore#runQuery}. * //- - * datastore.runQuery(query, function(err, entities) { + * datastore.runQuery(query, (err, entities) => { * // entities = An array of records. * * // Access the Key object for an entity. @@ -187,7 +187,7 @@ const gapic = Object.freeze({ * * const NUM_RESULTS_PER_PAGE = 15; * - * app.get('/contacts', function(req, res) { + * app.get('/contacts', (req, res) => { * const query = datastore.createQuery('Contacts') * .limit(NUM_RESULTS_PER_PAGE); * @@ -195,7 +195,7 @@ const gapic = Object.freeze({ * query.start(req.query.nextPageCursor); * } * - * datastore.runQuery(query, function(err, entities, info) { + * datastore.runQuery(query, (err, entities, info) => { * if (err) { * // Error handling omitted. * return; @@ -233,7 +233,7 @@ const gapic = Object.freeze({ * datastore.save({ * key: key, * data: data - * }, function(err) { + * }, (err) => { * if (!err) { * // Record saved successfully. * } @@ -242,7 +242,7 @@ const gapic = Object.freeze({ * //- * // We can verify the data was saved by using {@link Datastore#get}. * //- - * datastore.get(key, function(err, entity) { + * datastore.get(key, (err, entity) => { * // entity = { * // name: 'Google', * // location: 'CA' @@ -258,7 +258,7 @@ const gapic = Object.freeze({ * datastore.save({ * key: key, // defined above (datastore.key(['Company', 'Google'])) * data: data - * }, function(err, entity) { + * }, (err, entity) => { * if (!err) { * // Record updated successfully. * } @@ -270,7 +270,7 @@ const gapic = Object.freeze({ * //- * const key = datastore.key(['Company', 'Google']); * - * datastore.delete(key, function(err) { + * datastore.delete(key, (err) => { * if (!err) { * // Record deleted successfully. * } @@ -283,14 +283,14 @@ const gapic = Object.freeze({ * //- * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * * const key = datastore.key(['Company', 'Google']); * - * transaction.get(key, function(err, entity) { + * transaction.get(key, (err, entity) => { * if (err) { * // Error handling omitted. * } @@ -299,7 +299,7 @@ const gapic = Object.freeze({ * * transaction.save(entity); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.js index fff1094adc4..511c72c1b56 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.js @@ -367,7 +367,7 @@ class Query { * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); * - * query.run(function(err, entities, info) { + * query.run((err, entities, info) => { * // entities = An array of records. * * // Access the Key object for an entity. @@ -380,8 +380,8 @@ class Query { * //- * query.select('__key__'); * - * query.run(function(err, entities) { - * const keys = entities.map(function(entity) { + * query.run((err, entities) => { + * const keys = entities.map((entity) => { * return entity[datastore.KEY]; * }); * }); @@ -389,7 +389,7 @@ class Query { * //- * // If the callback is omitted, we'll return a Promise. * //- - * query.run().then(function(data) { + * query.run().then((data) => { * const entities = data[0]; * }); */ @@ -418,8 +418,8 @@ class Query { * // Access the Key object for this entity. * const key = entity[datastore.KEY]; * }) - * .on('info', function(info) {}) - * .on('end', function() { + * .on('info', (info) => {}) + * .on('end', () => { * // All entities retrieved. * }); * diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index 97e5bfa6973..eaedbbf7b72 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -66,11 +66,11 @@ class DatastoreRequest { * datastore.save({ * key: datastore.key('Kind'), * data: { foo: 'bar' } - * }, function(err) {}) + * }, (err) => {}) * * const entity = { foo: 'bar' } * entity[datastore.KEY] = datastore.key('Kind') - * datastore.save(entity, function(err) {}) + * datastore.save(entity, (err) => {}) * * @private * @@ -113,24 +113,24 @@ class DatastoreRequest { * // The following call will create 100 new IDs from the Company kind, which * // exists under the default namespace. * //- - * datastore.allocateIds(incompleteKey, 100, function(err, keys) {}); + * datastore.allocateIds(incompleteKey, 100, (err, keys) => {}); * * //- * // Or, if you're using a transaction object. * //- * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * - * transaction.allocateIds(incompleteKey, 100, function(err, keys) { + * transaction.allocateIds(incompleteKey, 100, (err, keys) => { * if (err) { * // Error handling omitted. * } * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -156,7 +156,7 @@ class DatastoreRequest { * //- * // If the callback is omitted, we'll return a Promise. * //- - * datastore.allocateIds(incompleteKey, 100).then(function(data) { + * datastore.allocateIds(incompleteKey, 100).then((data) => { * const keys = data[0]; * const apiResponse = data[1]; * }); @@ -181,14 +181,12 @@ class DatastoreRequest { }, gaxOpts: options.gaxOptions, }, - function(err, resp) { + (err, resp) => { if (err) { callback(err, null, resp); return; } - const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - callback(null, keys, resp); } ); @@ -210,32 +208,22 @@ class DatastoreRequest { * ]; * * datastore.createReadStream(keys) - * .on('error', function(err) {}) - * .on('data', function(entity) { + * .on('error', (err) => {}) + * .on('data', (entity) => { * // entity is an entity object. * }) - * .on('end', function() { + * .on('end', () => { * // All entities retrieved. * }); */ createReadStream(keys, options) { - const self = this; - options = options || {}; - keys = arrify(keys).map(entity.keyToKeyProto); - if (keys.length === 0) { throw new Error('At least one Key object is required.'); } - const stream = streamEvents(through.obj()); - - stream.once('reading', function() { - makeRequest(keys); - }); - - function makeRequest(keys) { + const makeRequest = keys => { const reqOpts = { keys: keys, }; @@ -248,14 +236,14 @@ class DatastoreRequest { }; } - self.request_( + this.request_( { client: 'DatastoreClient', method: 'lookup', reqOpts: reqOpts, gaxOpts: options.gaxOptions, }, - function(err, resp) { + (err, resp) => { if (err) { stream.destroy(err); return; @@ -266,7 +254,7 @@ class DatastoreRequest { .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); - split(entities, stream).then(function(streamEnded) { + split(entities, stream).then(streamEnded => { if (streamEnded) { return; } @@ -280,8 +268,12 @@ class DatastoreRequest { }); } ); - } + }; + const stream = streamEvents(through.obj()); + stream.once('reading', () => { + makeRequest(keys); + }); return stream; } @@ -297,21 +289,21 @@ class DatastoreRequest { * * @example * const key = datastore.key(['Company', 123]); - * datastore.delete(key, function(err, apiResp) {}); + * datastore.delete(key, (err, apiResp) => {}); * * //- * // Or, if you're using a transaction object. * //- * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * * transaction.delete(key); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -324,12 +316,12 @@ class DatastoreRequest { * datastore.delete([ * datastore.key(['Company', 123]), * datastore.key(['Product', 'Computer']) - * ], function(err, apiResponse) {}); + * ], (err, apiResponse) => {}); * * //- * // If the callback is omitted, we'll return a Promise. * //- - * datastore.delete().then(function(data) { + * datastore.delete().then((data) => { * const apiResponse = data[0]; * }); */ @@ -339,10 +331,10 @@ class DatastoreRequest { gaxOptions = {}; } - callback = callback || function() {}; + callback = callback || (() => {}); const reqOpts = { - mutations: arrify(keys).map(function(key) { + mutations: arrify(keys).map(key => { return { delete: entity.keyToKeyProto(key), }; @@ -391,24 +383,24 @@ class DatastoreRequest { * //- * const key = datastore.key(['Company', 123]); * - * datastore.get(key, function(err, entity) {}); + * datastore.get(key, (err, entity) => {}); * * //- * // Or, if you're using a transaction object. * //- * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * - * transaction.get(key, function(err, entity) { + * transaction.get(key, (err, entity) => { * if (err) { * // Error handling omitted. * } * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -424,13 +416,13 @@ class DatastoreRequest { * datastore.key(['Product', 'Computer']) * ]; * - * datastore.get(keys, function(err, entities) {}); + * datastore.get(keys, (err, entities) => {}); * * //- * // Here's how you would update the value of an entity with the help of the * // `save` method. * //- - * datastore.get(key, function(err, entity) { + * datastore.get(key, (err, entity) => { * if (err) { * // Error handling omitted. * } @@ -440,13 +432,13 @@ class DatastoreRequest { * datastore.save({ * key: key, * data: entity - * }, function(err) {}); + * }, (err) => {}); * }); * * //- * // If the callback is omitted, we'll return a Promise. * //- - * datastore.get(keys).then(function(data) { + * datastore.get(keys).then((data) => { * const entities = data[0]; * }); */ @@ -461,7 +453,7 @@ class DatastoreRequest { this.createReadStream(keys, options) .on('error', callback) .pipe( - concat(function(results) { + concat(results => { const isSingleLookup = !is.array(keys); callback(null, isSingleLookup ? results[0] : results); }) @@ -531,7 +523,7 @@ class DatastoreRequest { * //- * const query = datastore.createQuery('Lion'); * - * datastore.runQuery(query, function(err, entities, info) { + * datastore.runQuery(query, (err, entities, info) => { * // entities = An array of records. * * // Access the Key object for an entity. @@ -543,17 +535,17 @@ class DatastoreRequest { * //- * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * - * transaction.runQuery(query, function(err, entities) { + * transaction.runQuery(query, (err, entities) => { * if (err) { * // Error handling omitted. * } * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -567,8 +559,8 @@ class DatastoreRequest { * //- * const keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); * - * datastore.runQuery(keysOnlyQuery, function(err, entities) { - * const keys = entities.map(function(entity) { + * datastore.runQuery(keysOnlyQuery, (err, entities) => { + * const keys = entities.map((entity) => { * return entity[datastore.KEY]; * }); * }); @@ -576,7 +568,7 @@ class DatastoreRequest { * //- * // If the callback is omitted, we'll return a Promise. * //- - * datastore.runQuery(query).then(function(data) { + * datastore.runQuery(query).then((data) => { * const entities = data[0]; * }); */ @@ -592,11 +584,11 @@ class DatastoreRequest { this.runQueryStream(query, options) .on('error', callback) - .on('info', function(info_) { + .on('info', info_ => { info = info_; }) .pipe( - concat(function(results) { + concat(results => { callback(null, results, info); }) ); @@ -615,12 +607,12 @@ class DatastoreRequest { * @example * datastore.runQueryStream(query) * .on('error', console.error) - * .on('data', function(entity) { + * .on('data', (entity) => { * // Access the Key object for this entity. * const key = entity[datastore.KEY]; * }) - * .on('info', function(info) {}) - * .on('end', function() { + * .on('info', (info) => {}) + * .on('end', () => { * // All entities retrieved. * }); * @@ -629,24 +621,15 @@ class DatastoreRequest { * // unnecessary processing and API requests. * //- * datastore.runQueryStream(query) - * .on('data', function(entity) { + * .on('data', (entity) => { * this.end(); * }); */ runQueryStream(query, options) { - const self = this; - options = options || {}; - query = extend(true, new Query(), query); - const stream = streamEvents(through.obj()); - - stream.once('reading', function() { - makeRequest(query); - }); - - function makeRequest(query) { + const makeRequest = query => { const reqOpts = { query: entity.queryToQueryProto(query), }; @@ -664,7 +647,7 @@ class DatastoreRequest { }; } - self.request_( + this.request_( { client: 'DatastoreClient', method: 'runQuery', @@ -673,7 +656,7 @@ class DatastoreRequest { }, onResultSet ); - } + }; function onResultSet(err, resp) { if (err) { @@ -696,7 +679,7 @@ class DatastoreRequest { } // Emit each result right away, then get the rest if necessary. - split(entities, stream).then(function(streamEnded) { + split(entities, stream).then(streamEnded => { if (streamEnded) { return; } @@ -721,6 +704,10 @@ class DatastoreRequest { }); } + const stream = streamEvents(through.obj()); + stream.once('reading', () => { + makeRequest(query); + }); return stream; } @@ -774,7 +761,7 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err) { + * datastore.save(entity, (err) => { * console.log(key.path); // [ 'Company', 5669468231434240 ] * console.log(key.namespace); // undefined * }); @@ -795,7 +782,7 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err) { + * datastore.save(entity, (err) => { * console.log(key.path); // ['Company', 'donutshack'] * console.log(key.namespace); // undefined * }); @@ -820,7 +807,7 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err) { + * datastore.save(entity, (err) => { * console.log(key.path); // ['Company', 'donutshack'] * console.log(key.namespace); // 'my-namespace' * }); @@ -856,7 +843,7 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err, apiResponse) {}); + * datastore.save(entity, (err, apiResponse) => {}); * * //- * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. @@ -884,7 +871,7 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err, apiResponse) {}); + * datastore.save(entity, (err, apiResponse) => {}); * * //- * // Save multiple entities at once. @@ -906,7 +893,7 @@ class DatastoreRequest { * } * ]; * - * datastore.save(entities, function(err, apiResponse) {}); + * datastore.save(entities, (err, apiResponse) => {}); * * //- * // Explicitly attempt to 'insert' a specific entity. @@ -920,12 +907,12 @@ class DatastoreRequest { * } * }; * - * datastore.save(entity, function(err, apiResponse) {}); + * datastore.save(entity, (err, apiResponse) => {}); * * //- * // If the callback is omitted, we'll return a Promise. * //- - * datastore.save(entity).then(function(data) { + * datastore.save(entity).then((data) => { * const apiResponse = data[0]; * }); */ @@ -949,7 +936,7 @@ class DatastoreRequest { // then place in the correct mutation array (insert, update, etc). entities .map(DatastoreRequest.prepareEntityObject_) - .forEach(function(entityObject, index) { + .forEach((entityObject, index) => { const mutation = {}; let entityProto = {}; let method = 'upsert'; @@ -972,10 +959,7 @@ class DatastoreRequest { // This was replaced with a more efficient mechanism in the top-level // `excludeFromIndexes` option. if (is.array(entityObject.data)) { - entityProto.properties = entityObject.data.reduce(function( - acc, - data - ) { + entityProto.properties = entityObject.data.reduce((acc, data) => { const value = entity.encodeValue(data.value); if (is.boolean(data.excludeFromIndexes)) { @@ -992,8 +976,7 @@ class DatastoreRequest { acc[data.name] = value; return acc; - }, - {}); + }, {}); } else { entityProto = entity.entityToEntityProto(entityObject); } @@ -1014,7 +997,7 @@ class DatastoreRequest { return; } - arrify(resp.mutationResults).forEach(function(result, index) { + arrify(resp.mutationResults).forEach((result, index) => { if (!result.key) { return; } @@ -1104,7 +1087,7 @@ class DatastoreRequest { request_(config, callback) { const datastore = this.datastore; - callback = callback || function() {}; + callback = callback || (() => {}); const isTransaction = is.defined(this.id); const method = config.method; @@ -1138,7 +1121,7 @@ class DatastoreRequest { }; } - datastore.auth.getProjectId(function(err, projectId) { + datastore.auth.getProjectId((err, projectId) => { if (err) { callback(err); return; @@ -1152,17 +1135,13 @@ class DatastoreRequest { new gapic.v1[clientName](datastore.options) ); } - const gaxClient = datastore.clients_.get(clientName); - reqOpts = replaceProjectIdToken(reqOpts, projectId); - const gaxOpts = extend(true, {}, config.gaxOpts, { headers: { 'google-cloud-resource-prefix': `projects/${projectId}`, }, }); - gaxClient[method](reqOpts, gaxOpts, callback); }); } diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.js index ae74ebebe15..9cc2b388098 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.js @@ -107,7 +107,7 @@ class Transaction extends Request { * const datastore = new Datastore(); * const transaction = datastore.transaction(); * - * transaction.commit(function(err, apiResponse) { + * transaction.commit((err, apiResponse) => { * if (err) { * // Transaction could not be committed. * } @@ -116,19 +116,17 @@ class Transaction extends Request { * //- * // If the callback is omitted, we'll return a Promise. * //- - * transaction.commit().then(function(data) { + * transaction.commit().then((data) => { * const apiResponse = data[0]; * }); */ commit(gaxOptions, callback) { - const self = this; - if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; } - callback = callback || function() {}; + callback = callback || (() => {}); if (this.skipCommit) { setImmediate(callback); @@ -145,7 +143,7 @@ class Transaction extends Request { // recently queued operations. E.g., if a user tries to save with the same // key they just asked to be deleted, the delete request will be ignored, // giving preference to the save operation. - .filter(function(modifiedEntity) { + .filter(modifiedEntity => { const key = modifiedEntity.entity.key; if (!entity.isKeyComplete(key)) { @@ -162,7 +160,7 @@ class Transaction extends Request { // Group entities together by method: `save` mutations, then `delete`. Note: // `save` mutations being first is required to maintain order when assigning // IDs to incomplete keys. - .sort(function(a, b) { + .sort((a, b) => { return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; }) // Group arguments together so that we only make one call to each method. @@ -170,7 +168,7 @@ class Transaction extends Request { // handles assigning auto-generated IDs to the original keys passed in. When // we eventually execute the `save` method's API callback, having all the // keys together is necessary to maintain order. - .reduce(function(acc, entityObject) { + .reduce((acc, entityObject) => { const lastEntityObject = acc[acc.length - 1]; const sameMethod = lastEntityObject && entityObject.method === lastEntityObject.method; @@ -190,11 +188,10 @@ class Transaction extends Request { // `callbacks` array, that is the same callback that would run if we were // using `save` and `delete` outside of a transaction, to process the // response from the API. - .forEach(function(modifiedEntity) { + .forEach(modifiedEntity => { const method = modifiedEntity.method; const args = modifiedEntity.args.reverse(); - - Request.prototype[method].call(self, args, function() {}); + Request.prototype[method].call(this, args, () => {}); }); // Take the `req` array built previously, and merge them into one request to @@ -210,10 +207,10 @@ class Transaction extends Request { reqOpts: reqOpts, gaxOpts: gaxOptions, }, - function(err, resp) { + (err, resp) => { if (err) { // Rollback automatically for the user. - self.rollback(function() { + this.rollback(() => { // Provide the error & API response from the failed commit to the user. // Even a failed rollback should be transparent. // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 @@ -225,10 +222,9 @@ class Transaction extends Request { // The `callbacks` array was built previously. These are the callbacks that // handle the API response normally when using the DatastoreRequest.save and // .delete methods. - self.requestCallbacks_.forEach(function(cb) { + this.requestCallbacks_.forEach(cb => { cb(null, resp); }); - callback(null, resp); } ); @@ -252,19 +248,19 @@ class Transaction extends Request { * const transaction = datastore.transaction(); * * // Run the query inside the transaction. - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * * const query = transaction.createQuery('Company'); * - * query.run(function(err, entities) { + * query.run((err, entities) => { * if (err) { * // Error handling omitted. * } * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -287,7 +283,7 @@ class Transaction extends Request { * const datastore = new Datastore(); * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } @@ -301,7 +297,7 @@ class Transaction extends Request { * datastore.key(['Product', 'Computer']) * ]); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Transaction committed successfully. * } @@ -309,10 +305,8 @@ class Transaction extends Request { * }); */ delete(entities) { - const self = this; - - arrify(entities).forEach(function(ent) { - self.modifiedEntities_.push({ + arrify(entities).forEach(ent => { + this.modifiedEntities_.push({ entity: { key: ent, }, @@ -336,12 +330,12 @@ class Transaction extends Request { * const datastore = new Datastore(); * const transaction = datastore.transaction(); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } * - * transaction.rollback(function(err) { + * transaction.rollback((err) => { * if (!err) { * // Transaction rolled back successfully. * } @@ -351,19 +345,17 @@ class Transaction extends Request { * //- * // If the callback is omitted, we'll return a Promise. * //- - * transaction.rollback().then(function(data) { + * transaction.rollback().then((data) => { * const apiResponse = data[0]; * }); */ rollback(gaxOptions, callback) { - const self = this; - if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; } - callback = callback || function() {}; + callback = callback || (() => {}); this.request_( { @@ -371,9 +363,8 @@ class Transaction extends Request { method: 'rollback', gaxOpts: gaxOptions, }, - function(err, resp) { - self.skipCommit = true; - + (err, resp) => { + this.skipCommit = true; callback(err || null, resp); } ); @@ -401,11 +392,11 @@ class Transaction extends Request { * const datastore = new Datastore(); * const transaction = datastore.transaction(); * - * transaction.run(function(err, transaction) { + * transaction.run((err, transaction) => { * // Perform Datastore transactional operations. * const key = datastore.key(['Company', 123]); * - * transaction.get(key, function(err, entity) { + * transaction.get(key, (err, entity) => { * entity.name = 'Google'; * * transaction.save({ @@ -413,7 +404,7 @@ class Transaction extends Request { * data: entity * }); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Data saved successfully. * } @@ -424,21 +415,19 @@ class Transaction extends Request { * //- * // If the callback is omitted, we'll return a Promise. * //- - * transaction.run().then(function(data) { + * transaction.run().then((data) => { * const transaction = data[0]; * const apiResponse = data[1]; * }); */ run(options, callback) { - const self = this; - if (is.fn(options)) { callback = options; options = {}; } options = options || {}; - callback = callback || function() {}; + callback = callback || (() => {}); const reqOpts = { transactionOptions: {}, @@ -465,15 +454,13 @@ class Transaction extends Request { reqOpts: reqOpts, gaxOpts: options.gaxOptions, }, - function(err, resp) { + (err, resp) => { if (err) { callback(err, null, resp); return; } - - self.id = resp.transaction; - - callback(null, self, resp); + this.id = resp.transaction; + callback(null, this, resp); } ); } @@ -513,7 +500,7 @@ class Transaction extends Request { * //- * const key = datastore.key('Company'); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } @@ -525,7 +512,7 @@ class Transaction extends Request { * } * }); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Data saved successfully. * } @@ -540,7 +527,7 @@ class Transaction extends Request { * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. * // This will allow storing string values larger than 1500 bytes. * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } @@ -565,7 +552,7 @@ class Transaction extends Request { * } * }); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Data saved successfully. * } @@ -580,7 +567,7 @@ class Transaction extends Request { * const companyKey = datastore.key(['Company', 123]); * const productKey = datastore.key(['Product', 'Computer']); * - * transaction.run(function(err) { + * transaction.run((err) => { * if (err) { * // Error handling omitted. * } @@ -600,7 +587,7 @@ class Transaction extends Request { * } * ]); * - * transaction.commit(function(err) { + * transaction.commit((err) => { * if (!err) { * // Data saved successfully. * } @@ -608,9 +595,8 @@ class Transaction extends Request { * }); */ save(entities) { - const self = this; - arrify(entities).forEach(function(ent) { - self.modifiedEntities_.push({ + arrify(entities).forEach(ent => { + this.modifiedEntities_.push({ entity: { key: ent.key, }, diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.js index a8eb8300909..3e1797c5810 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.js @@ -21,7 +21,7 @@ const async = require('async'); const Datastore = require('../'); const entity = require('../src/entity.js'); -describe('Datastore', function() { +describe('Datastore', () => { const testKinds = []; const datastore = new Datastore({}); // Override the Key method so we can track what keys are created during the @@ -33,17 +33,17 @@ describe('Datastore', function() { return keyObject; }; - after(function(done) { + after(done => { function deleteEntities(kind, callback) { const query = datastore.createQuery(kind).select('__key__'); - datastore.runQuery(query, function(err, entities) { + datastore.runQuery(query, (err, entities) => { if (err) { callback(err); return; } - const keys = entities.map(function(entity) { + const keys = entities.map(entity => { return entity[datastore.KEY]; }); @@ -54,8 +54,8 @@ describe('Datastore', function() { async.each(testKinds, deleteEntities, done); }); - it('should allocate IDs', function(done) { - datastore.allocateIds(datastore.key('Kind'), 10, function(err, keys) { + it('should allocate IDs', done => { + datastore.allocateIds(datastore.key('Kind'), 10, (err, keys) => { assert.ifError(err); assert.strictEqual(keys.length, 10); assert.strictEqual(entity.isKeyComplete(keys[0]), true); @@ -63,7 +63,7 @@ describe('Datastore', function() { }); }); - describe('create, retrieve and delete', function() { + describe('create, retrieve and delete', () => { const post = { title: 'How to make the perfect pizza in your grill', tags: ['pizza', 'grill'], @@ -78,7 +78,7 @@ describe('Datastore', function() { }, }; - it('should excludeFromIndexes correctly', function(done) { + it('should excludeFromIndexes correctly', done => { const longString = Buffer.alloc(1501, '.').toString(); const postKey = datastore.key(['Post', 'post1']); @@ -137,10 +137,10 @@ describe('Datastore', function() { 'metadata.longStringArray[].nestedLongStringArray[].longString', ], }, - function(err) { + err => { assert.ifError(err); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, data); @@ -152,13 +152,13 @@ describe('Datastore', function() { ); }); - it('should save/get/delete with a key name', function(done) { + it('should save/get/delete with a key name', done => { const postKey = datastore.key(['Post', 'post1']); - datastore.save({key: postKey, data: post}, function(err) { + datastore.save({key: postKey, data: post}, err => { assert.ifError(err); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, post); @@ -169,13 +169,13 @@ describe('Datastore', function() { }); }); - it('should save/get/delete with a numeric key id', function(done) { + it('should save/get/delete with a numeric key id', done => { const postKey = datastore.key(['Post', 123456789]); - datastore.save({key: postKey, data: post}, function(err) { + datastore.save({key: postKey, data: post}, err => { assert.ifError(err); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, post); @@ -185,38 +185,36 @@ describe('Datastore', function() { }); }); - it('should save/get/delete a buffer', function(done) { + it('should save/get/delete a buffer', done => { const postKey = datastore.key(['Post']); const data = { buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), }; - datastore.save({key: postKey, data: data}, function(err) { + datastore.save({key: postKey, data: data}, err => { assert.ifError(err); const assignedId = postKey.id; assert(assignedId); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); - assert.deepStrictEqual(entity, data); - datastore.delete(datastore.key(['Post', assignedId]), done); }); }); }); - it('should save/get/delete with a generated key id', function(done) { + it('should save/get/delete with a generated key id', done => { const postKey = datastore.key('Post'); - datastore.save({key: postKey, data: post}, function(err) { + datastore.save({key: postKey, data: post}, err => { assert.ifError(err); // The key's path should now be complete. assert(postKey.id); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, post); @@ -226,23 +224,23 @@ describe('Datastore', function() { }); }); - it('should save/get/update', function(done) { + it('should save/get/update', done => { const postKey = datastore.key('Post'); - datastore.save({key: postKey, data: post}, function(err) { + datastore.save({key: postKey, data: post}, err => { assert.ifError(err); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.title, post.title); entity.title = 'Updated'; - datastore.save(entity, function(err) { + datastore.save(entity, err => { assert.ifError(err); - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.title, 'Updated'); datastore.delete(postKey, done); @@ -252,7 +250,7 @@ describe('Datastore', function() { }); }); - it('should save and get with a string ID', function(done) { + it('should save and get with a string ID', done => { const longIdKey = datastore.key([ 'Post', datastore.int('100000000000001234'), @@ -265,10 +263,10 @@ describe('Datastore', function() { test: true, }, }, - function(err) { + err => { assert.ifError(err); - datastore.get(longIdKey, function(err, entity) { + datastore.get(longIdKey, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.test, true); done(); @@ -277,10 +275,10 @@ describe('Datastore', function() { ); }); - it('should fail explicitly set second insert on save', function(done) { + it('should fail explicitly set second insert on save', done => { const postKey = datastore.key('Post'); - datastore.save({key: postKey, data: post}, function(err) { + datastore.save({key: postKey, data: post}, err => { assert.ifError(err); // The key's path should now be complete. @@ -292,14 +290,11 @@ describe('Datastore', function() { method: 'insert', data: post, }, - function(err) { + err => { assert.notStrictEqual(err, null); // should fail insert - - datastore.get(postKey, function(err, entity) { + datastore.get(postKey, (err, entity) => { assert.ifError(err); - assert.deepStrictEqual(entity, post); - datastore.delete(postKey, done); }); } @@ -307,7 +302,7 @@ describe('Datastore', function() { }); }); - it('should fail explicitly set first update on save', function(done) { + it('should fail explicitly set first update on save', done => { const postKey = datastore.key('Post'); datastore.save( @@ -316,14 +311,14 @@ describe('Datastore', function() { method: 'update', data: post, }, - function(err) { + err => { assert.notStrictEqual(err, null); done(); } ); }); - it('should save/get/delete multiple entities at once', function(done) { + it('should save/get/delete multiple entities at once', done => { const post2 = { title: 'How to make the perfect homemade pasta', tags: ['pasta', 'homemade'], @@ -339,26 +334,24 @@ describe('Datastore', function() { datastore.save( [{key: key1, data: post}, {key: key2, data: post2}], - function(err) { + err => { assert.ifError(err); - - datastore.get([key1, key2], function(err, entities) { + datastore.get([key1, key2], (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, 2); - datastore.delete([key1, key2], done); }); } ); }); - it('should get multiple entities in a stream', function(done) { + it('should get multiple entities in a stream', done => { const key1 = datastore.key('Post'); const key2 = datastore.key('Post'); datastore.save( [{key: key1, data: post}, {key: key2, data: post}], - function(err) { + err => { assert.ifError(err); let numEntitiesEmitted = 0; @@ -366,19 +359,18 @@ describe('Datastore', function() { datastore .createReadStream([key1, key2]) .on('error', done) - .on('data', function() { + .on('data', () => { numEntitiesEmitted++; }) - .on('end', function() { + .on('end', () => { assert.strictEqual(numEntitiesEmitted, 2); - datastore.delete([key1, key2], done); }); } ); }); - it('should save keys as a part of entity and query by key', function(done) { + it('should save keys as a part of entity and query by key', done => { const personKey = datastore.key(['People', 'US', 'Person', 'name']); datastore.save( @@ -389,7 +381,7 @@ describe('Datastore', function() { linkedTo: personKey, // himself }, }, - function(err) { + err => { assert.ifError(err); const query = datastore @@ -397,20 +389,18 @@ describe('Datastore', function() { .hasAncestor(datastore.key(['People', 'US'])) .filter('linkedTo', personKey); - datastore.runQuery(query, function(err, results) { + datastore.runQuery(query, (err, results) => { assert.ifError(err); - assert.strictEqual(results[0].fullName, 'Full name'); assert.deepStrictEqual(results[0].linkedTo, personKey); - datastore.delete(personKey, done); }); } ); }); - describe('entity types', function() { - it('should save and decode an int', function(done) { + describe('entity types', () => { + it('should save and decode an int', done => { const integerValue = 2015; const integerType = Datastore.int(integerValue); @@ -423,10 +413,10 @@ describe('Datastore', function() { year: integerType, }, }, - function(err) { + err => { assert.ifError(err); - datastore.get(key, function(err, entity) { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.year, integerValue); done(); @@ -435,7 +425,7 @@ describe('Datastore', function() { ); }); - it('should save and decode a double', function(done) { + it('should save and decode a double', done => { const doubleValue = 99.99; const doubleType = Datastore.double(doubleValue); @@ -448,10 +438,10 @@ describe('Datastore', function() { nines: doubleType, }, }, - function(err) { + err => { assert.ifError(err); - datastore.get(key, function(err, entity) { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.nines, doubleValue); done(); @@ -460,7 +450,7 @@ describe('Datastore', function() { ); }); - it('should save and decode a geo point', function(done) { + it('should save and decode a geo point', done => { const geoPointValue = { latitude: 40.6894, longitude: -74.0447, @@ -476,10 +466,10 @@ describe('Datastore', function() { location: geoPointType, }, }, - function(err) { + err => { assert.ifError(err); - datastore.get(key, function(err, entity) { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity.location, geoPointValue); done(); @@ -490,7 +480,7 @@ describe('Datastore', function() { }); }); - describe('querying the datastore', function() { + describe('querying the datastore', () => { const ancestor = datastore.key(['Book', 'GoT']); const keys = [ @@ -503,7 +493,7 @@ describe('Datastore', function() { ['Rickard', 'Character', 'Eddard', 'Character', 'Robb'], ['Rickard', 'Character', 'Eddard', 'Character', 'Bran'], ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'], - ].map(function(path) { + ].map(path => { return datastore.key(['Book', 'GoT', 'Character'].concat(path)); }); @@ -558,8 +548,8 @@ describe('Datastore', function() { }, ]; - before(function(done) { - const keysToSave = keys.map(function(key, index) { + before(done => { + const keysToSave = keys.map((key, index) => { return { key: key, data: characters[index], @@ -569,17 +559,17 @@ describe('Datastore', function() { datastore.save(keysToSave, done); }); - after(function(done) { + after(done => { datastore.delete(keys, done); }); - it('should limit queries', function(done) { + it('should limit queries', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .limit(5); - datastore.runQuery(q, function(err, firstEntities, info) { + datastore.runQuery(q, (err, firstEntities, info) => { assert.ifError(err); assert.strictEqual(firstEntities.length, 5); @@ -588,7 +578,7 @@ describe('Datastore', function() { .hasAncestor(ancestor) .start(info.endCursor); - datastore.runQuery(secondQ, function(err, secondEntities) { + datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); assert.strictEqual(secondEntities.length, 3); done(); @@ -596,7 +586,7 @@ describe('Datastore', function() { }); }); - it('should not go over a limit', function(done) { + it('should not go over a limit', done => { const limit = 3; const q = datastore @@ -604,31 +594,29 @@ describe('Datastore', function() { .hasAncestor(ancestor) .limit(limit); - datastore.runQuery(q, function(err, results) { + datastore.runQuery(q, (err, results) => { assert.ifError(err); assert.strictEqual(results.length, limit); done(); }); }); - it('should run a query as a stream', function(done) { + it('should run a query as a stream', done => { const q = datastore.createQuery('Character').hasAncestor(ancestor); - let resultsReturned = 0; - datastore .runQueryStream(q) .on('error', done) - .on('data', function() { + .on('data', () => { resultsReturned++; }) - .on('end', function() { + .on('end', () => { assert.strictEqual(resultsReturned, characters.length); done(); }); }); - it('should not go over a limit with a stream', function(done) { + it('should not go over a limit with a stream', done => { const limit = 3; const q = datastore .createQuery('Character') @@ -640,53 +628,53 @@ describe('Datastore', function() { datastore .runQueryStream(q) .on('error', done) - .on('data', function() { + .on('data', () => { resultsReturned++; }) - .on('end', function() { + .on('end', () => { assert.strictEqual(resultsReturned, limit); done(); }); }); - it('should filter queries with simple indexes', function(done) { + it('should filter queries with simple indexes', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .filter('appearances', '>=', 20); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, 6); done(); }); }); - it('should filter queries with defined indexes', function(done) { + it('should filter queries with defined indexes', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .filter('family', 'Stark') .filter('appearances', '>=', 20); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, 6); done(); }); }); - it('should filter by ancestor', function(done) { + it('should filter by ancestor', done => { const q = datastore.createQuery('Character').hasAncestor(ancestor); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, characters.length); done(); }); }); - it('should filter by key', function(done) { + it('should filter by key', done => { const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); const q = datastore @@ -694,20 +682,20 @@ describe('Datastore', function() { .hasAncestor(ancestor) .filter('__key__', key); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, 1); done(); }); }); - it('should order queries', function(done) { + it('should order queries', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .order('appearances'); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities[0].name, characters[0].name); @@ -717,13 +705,13 @@ describe('Datastore', function() { }); }); - it('should select projections', function(done) { + it('should select projections', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .select(['name', 'family']); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.deepStrictEqual(entities[0], { @@ -740,7 +728,7 @@ describe('Datastore', function() { }); }); - it('should paginate with offset and limit', function(done) { + it('should paginate with offset and limit', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) @@ -748,7 +736,7 @@ describe('Datastore', function() { .limit(3) .order('appearances'); - datastore.runQuery(q, function(err, entities, info) { + datastore.runQuery(q, (err, entities, info) => { assert.ifError(err); assert.strictEqual(entities.length, 3); @@ -761,19 +749,17 @@ describe('Datastore', function() { .order('appearances') .start(info.endCursor); - datastore.runQuery(secondQ, function(err, secondEntities) { + datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); - assert.strictEqual(secondEntities.length, 3); assert.strictEqual(secondEntities[0].name, 'Sansa'); assert.strictEqual(secondEntities[2].name, 'Arya'); - done(); }); }); }); - it('should resume from a start cursor', function(done) { + it('should resume from a start cursor', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) @@ -781,7 +767,7 @@ describe('Datastore', function() { .limit(2) .order('appearances'); - datastore.runQuery(q, function(err, entities, info) { + datastore.runQuery(q, (err, entities, info) => { assert.ifError(err); const secondQ = datastore @@ -790,7 +776,7 @@ describe('Datastore', function() { .order('appearances') .start(info.endCursor); - datastore.runQuery(secondQ, function(err, secondEntities) { + datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); assert.strictEqual(secondEntities.length, 4); @@ -802,47 +788,41 @@ describe('Datastore', function() { }); }); - it('should group queries', function(done) { + it('should group queries', done => { const q = datastore .createQuery('Character') .hasAncestor(ancestor) .groupBy('appearances'); - datastore.runQuery(q, function(err, entities) { + datastore.runQuery(q, (err, entities) => { assert.ifError(err); assert.strictEqual(entities.length, characters.length - 1); done(); }); }); - it('should query from the Query object', function(done) { + it('should query from the Query object', done => { const q = datastore.createQuery('Character'); - q.run(done); }); }); - describe('transactions', function() { - it('should run in a transaction', function(done) { + describe('transactions', () => { + it('should run in a transaction', done => { const key = datastore.key(['Company', 'Google']); const obj = { url: 'www.google.com', }; const transaction = datastore.transaction(); - - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); - - transaction.get(key, function(err) { + transaction.get(key, err => { assert.ifError(err); - transaction.save({key: key, data: obj}); - - transaction.commit(function(err) { + transaction.commit(err => { assert.ifError(err); - - datastore.get(key, function(err, entity) { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, obj); done(); @@ -852,7 +832,7 @@ describe('Datastore', function() { }); }); - it('should commit all saves and deletes at the end', function(done) { + it('should commit all saves and deletes at the end', done => { const deleteKey = datastore.key(['Company', 'Subway']); const key = datastore.key(['Company', 'Google']); const incompleteKey = datastore.key('Company'); @@ -862,12 +842,12 @@ describe('Datastore', function() { key: deleteKey, data: {}, }, - function(err) { + err => { assert.ifError(err); const transaction = datastore.transaction(); - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); transaction.delete(deleteKey); @@ -883,7 +863,7 @@ describe('Datastore', function() { }, ]); - transaction.commit(function(err) { + transaction.commit(err => { assert.ifError(err); // Incomplete key should have been given an ID. @@ -892,8 +872,8 @@ describe('Datastore', function() { async.parallel( [ // The key queued for deletion should have been deleted. - function(callback) { - datastore.get(deleteKey, function(err, entity) { + callback => { + datastore.get(deleteKey, (err, entity) => { assert.ifError(err); assert.strictEqual(typeof entity, 'undefined'); callback(); @@ -901,8 +881,8 @@ describe('Datastore', function() { }, // Data should have been updated on the key. - function(callback) { - datastore.get(key, function(err, entity) { + callback => { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.strictEqual(entity.rating, 10); callback(); @@ -917,13 +897,13 @@ describe('Datastore', function() { ); }); - it('should use the last modification to a key', function(done) { + it('should use the last modification to a key', done => { const incompleteKey = datastore.key('Company'); const key = datastore.key(['Company', 'Google']); const transaction = datastore.transaction(); - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); transaction.save([ @@ -943,11 +923,11 @@ describe('Datastore', function() { transaction.delete(key); - transaction.commit(function(err) { + transaction.commit(err => { assert.ifError(err); // Should not return a result. - datastore.get(key, function(err, entity) { + datastore.get(key, (err, entity) => { assert.ifError(err); assert.strictEqual(entity, undefined); @@ -959,50 +939,40 @@ describe('Datastore', function() { }); }); - it('should query within a transaction', function(done) { + it('should query within a transaction', done => { const transaction = datastore.transaction(); - - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); - const query = transaction.createQuery('Company'); - - query.run(function(err, entities) { + query.run((err, entities) => { if (err) { transaction.rollback(done); return; } - assert(entities.length > 0); - transaction.commit(done); }); }); }); - it('should read in a readOnly transaction', function(done) { + it('should read in a readOnly transaction', done => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); - - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); transaction.get(key, done); }); }); - it('should not write in a readOnly transaction', function(done) { + it('should not write in a readOnly transaction', done => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); - - transaction.run(function(err) { + transaction.run(err => { assert.ifError(err); - - transaction.get(key, function(err) { + transaction.get(key, err => { assert.ifError(err); - transaction.save({key: key, data: {}}); - - transaction.commit(function(err) { + transaction.commit(err => { assert(err instanceof Error); done(); }); From 848a3683c5c22298325e0b7b854a215ee10f0204 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Mon, 27 Aug 2018 11:18:11 -0700 Subject: [PATCH 250/820] Update the CI config (#180) --- handwritten/nodejs-datastore/.circleci/config.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 41c82336dbb..eab76c4a6ba 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -107,9 +107,7 @@ jobs: steps: - checkout - run: *npm_install_and_link - - run: - name: Build documentation. - command: npm run docs + - run: npm run docs sample_tests: docker: - image: 'node:8' @@ -164,5 +162,6 @@ jobs: user: node steps: - checkout - - run: 'echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc' + - npm install + - run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - run: npm publish --access=public From 8fdd588e80e7c9904c6016b2d95a6b993d8a6c19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 28 Aug 2018 07:58:56 -0700 Subject: [PATCH 251/820] chore(deps): update dependency nyc to v13 (#181) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fc72b91ff1e..3c0deca7b31 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -92,7 +92,7 @@ "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "mocha": "^5.2.0", - "nyc": "^12.0.2", + "nyc": "^13.0.0", "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 759e5dab9bf..9b996b03825 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -21,7 +21,7 @@ "devDependencies": { "@google-cloud/nodejs-repo-tools": "^2.3.0", "ava": "^0.25.0", - "nyc": "^12.0.2", + "nyc": "^13.0.0", "proxyquire": "^2.0.1" } } From ddf84750a31e92a91b6f5906a36a63a249a46e5e Mon Sep 17 00:00:00 2001 From: DPE bot Date: Tue, 28 Aug 2018 13:18:47 -0700 Subject: [PATCH 252/820] Re-generate library using /synth.py (#182) --- handwritten/nodejs-datastore/.jsdoc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index da963502389..fedb3bda761 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,5 +1,5 @@ /*! - * Copyright 2017 Google Inc. All Rights Reserved. + * Copyright 2018 Google LLC. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2017 Google, Inc.', + copyright: 'Copyright 2018 Google, LLC.', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', From d91bdf67ac440d3ad28eac918580c0b9d37777a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 30 Aug 2018 07:27:37 -0700 Subject: [PATCH 253/820] fix(deps): update dependency google-auth-library to v2 (#184) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 3c0deca7b31..280bd84794e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -68,7 +68,7 @@ "concat-stream": "^1.6.2", "create-error-class": "^3.0.2", "extend": "^3.0.1", - "google-auth-library": "^1.6.1", + "google-auth-library": "^2.0.0", "google-gax": "^0.19.0", "google-proto-files": "^0.16.0", "is": "^3.2.1", From 8ab13cd764bbec7ed8408f47a2989a67edf89b3e Mon Sep 17 00:00:00 2001 From: DPE bot Date: Fri, 31 Aug 2018 12:27:33 -0700 Subject: [PATCH 254/820] Re-generate library using /synth.py (#185) --- .../nodejs-datastore/.circleci/config.yml | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index eab76c4a6ba..9a65e928a47 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -117,9 +117,11 @@ jobs: - run: name: Decrypt credentials. command: | - openssl aes-256-cbc -d -in .circleci/key.json.enc \ + if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then + openssl aes-256-cbc -d -in .circleci/key.json.enc \ -out .circleci/key.json \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + fi - run: *npm_install_and_link - run: *samples_npm_install_and_link - run: @@ -131,7 +133,10 @@ jobs: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Remove unencrypted key. - command: rm .circleci/key.json + command: | + if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then + rm .circleci/key.json + fi when: always working_directory: /home/node/samples/ system_tests: @@ -143,9 +148,11 @@ jobs: - run: name: Decrypt credentials. command: | - openssl aes-256-cbc -d -in .circleci/key.json.enc \ + if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then + openssl aes-256-cbc -d -in .circleci/key.json.enc \ -out .circleci/key.json \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + fi - run: *npm_install_and_link - run: name: Run system tests. @@ -154,7 +161,10 @@ jobs: GOOGLE_APPLICATION_CREDENTIALS: .circleci/key.json - run: name: Remove unencrypted key. - command: rm .circleci/key.json + command: | + if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then + rm .circleci/key.json + fi when: always publish_npm: docker: @@ -162,6 +172,6 @@ jobs: user: node steps: - checkout - - npm install + - run: npm install - run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - run: npm publish --access=public From d3a9cfcb0e8936c797645f903eb9631f73a14530 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 4 Sep 2018 10:53:50 -0700 Subject: [PATCH 255/820] Retry npm install in CI (#191) --- .../nodejs-datastore/.circleci/config.yml | 6 +- .../.circleci/npm-install-retry.js | 60 +++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) create mode 100755 handwritten/nodejs-datastore/.circleci/npm-install-retry.js diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 9a65e928a47..80dcf7e67d9 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -64,7 +64,7 @@ jobs: name: Install and link the module command: |- mkdir -p /home/node/.npm-global - npm install + ./.circleci/npm-install-retry.js environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: npm test @@ -92,7 +92,7 @@ jobs: command: | cd samples/ npm link ../ - npm install + ./../.circleci/npm-install-retry.js environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: @@ -172,6 +172,6 @@ jobs: user: node steps: - checkout - - run: npm install + - run: ./.circleci/npm-install-retry.js - run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - run: npm publish --access=public diff --git a/handwritten/nodejs-datastore/.circleci/npm-install-retry.js b/handwritten/nodejs-datastore/.circleci/npm-install-retry.js new file mode 100755 index 00000000000..ae3220d7348 --- /dev/null +++ b/handwritten/nodejs-datastore/.circleci/npm-install-retry.js @@ -0,0 +1,60 @@ +#!/usr/bin/env node + +let spawn = require('child_process').spawn; + +// +//USE: ./index.js [... NPM ARGS] +// + +let timeout = process.argv[2] || 60000; +let attempts = process.argv[3] || 3; +let args = process.argv.slice(4); +if (args.length === 0) { + args = ['install']; +} + +(function npm() { + let timer; + args.push('--verbose'); + let proc = spawn('npm', args); + proc.stdout.pipe(process.stdout); + proc.stderr.pipe(process.stderr); + proc.stdin.end(); + proc.stdout.on('data', () => { + setTimer(); + }); + proc.stderr.on('data', () => { + setTimer(); + }); + + // side effect: this also restarts when npm exits with a bad code even if it + // didnt timeout + proc.on('close', (code, signal) => { + clearTimeout(timer); + if (code || signal) { + console.log('[npm-are-you-sleeping] npm exited with code ' + code + ''); + + if (--attempts) { + console.log('[npm-are-you-sleeping] restarting'); + npm(); + } else { + console.log('[npm-are-you-sleeping] i tried lots of times. giving up.'); + throw new Error("npm install fails"); + } + } + }); + + function setTimer() { + clearTimeout(timer); + timer = setTimeout(() => { + console.log('[npm-are-you-sleeping] killing npm with SIGTERM'); + proc.kill('SIGTERM'); + // wait a couple seconds + timer = setTimeout(() => { + // its it's still not closed sigkill + console.log('[npm-are-you-sleeping] killing npm with SIGKILL'); + proc.kill('SIGKILL'); + }, 2000); + }, timeout); + } +})(); From acd560d449ade82cbf592dc2a7da6ed1e18674f8 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Mon, 10 Sep 2018 08:48:29 -0700 Subject: [PATCH 256/820] Update CI config (#193) --- handwritten/nodejs-datastore/.circleci/config.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 80dcf7e67d9..8af6a4d0489 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -149,21 +149,24 @@ jobs: name: Decrypt credentials. command: | if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - openssl aes-256-cbc -d -in .circleci/key.json.enc \ - -out .circleci/key.json \ - -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + for encrypted_key in .circleci/*.json.enc; do + openssl aes-256-cbc -d -in $encrypted_key \ + -out $(echo $encrypted_key | sed 's/\.enc//') \ + -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" + done fi - run: *npm_install_and_link - run: name: Run system tests. command: npm run system-test environment: + GCLOUD_PROJECT: long-door-651 GOOGLE_APPLICATION_CREDENTIALS: .circleci/key.json - run: name: Remove unencrypted key. command: | if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - rm .circleci/key.json + rm .circleci/*.json fi when: always publish_npm: From 0725ee536bfa78c96f5e61ca630c04100f64c654 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 13 Sep 2018 06:46:37 -0700 Subject: [PATCH 257/820] fix(deps): update dependency google-gax to ^0.20.0 (#194) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 280bd84794e..aab123e0727 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -69,7 +69,7 @@ "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auth-library": "^2.0.0", - "google-gax": "^0.19.0", + "google-gax": "^0.20.0", "google-proto-files": "^0.16.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", From 25494c172f7e0043f3925ee40a39cf48b558d2c7 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Fri, 14 Sep 2018 08:34:32 -0700 Subject: [PATCH 258/820] Switch to let/const (#195) --- .../src/v1/datastore_client.js | 82 +++++------ .../doc/google/datastore/v1/doc_datastore.js | 36 ++--- .../v1/doc/google/datastore/v1/doc_entity.js | 10 +- .../v1/doc/google/datastore/v1/doc_query.js | 24 ++-- .../v1/doc/google/protobuf/doc_wrappers.js | 18 +-- handwritten/nodejs-datastore/test/gapic-v1.js | 134 +++++++++--------- 6 files changed, 152 insertions(+), 152 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index ac56a8a388e..0e00048c6c2 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -76,13 +76,13 @@ class DatastoreClient { // Create a `gaxGrpc` object, with any grpc-specific options // sent to the client. opts.scopes = this.constructor.scopes; - var gaxGrpc = new gax.GrpcClient(opts); + const gaxGrpc = new gax.GrpcClient(opts); // Save the auth object to the client, for use by other methods. this.auth = gaxGrpc.auth; // Determine the client header string. - var clientHeader = [ + const clientHeader = [ `gl-node/${process.version}`, `grpc/${gaxGrpc.grpcVersion}`, `gax/${gax.version}`, @@ -93,7 +93,7 @@ class DatastoreClient { } // Load the applicable protos. - var protos = merge( + const protos = merge( {}, gaxGrpc.loadProto( path.join(__dirname, '..', '..', 'protos'), @@ -102,7 +102,7 @@ class DatastoreClient { ); // Put together the default options sent with requests. - var defaults = gaxGrpc.constructSettings( + const defaults = gaxGrpc.constructSettings( 'google.datastore.v1.Datastore', gapicConfig, opts.clientConfig, @@ -116,14 +116,14 @@ class DatastoreClient { // Put together the "service stub" for // google.datastore.v1.Datastore. - var datastoreStub = gaxGrpc.createStub( + const datastoreStub = gaxGrpc.createStub( protos.google.datastore.v1.Datastore, opts ); // Iterate over each of the methods that the service provides // and create an API call method for each. - var datastoreStubMethods = [ + const datastoreStubMethods = [ 'lookup', 'runQuery', 'beginTransaction', @@ -137,7 +137,7 @@ class DatastoreClient { datastoreStub.then( stub => function() { - var args = Array.prototype.slice.call(arguments, 0); + const args = Array.prototype.slice.call(arguments, 0); return stub[methodName].apply(stub, args); } ), @@ -215,19 +215,19 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var keys = []; - * var request = { + * const projectId = ''; + * const keys = []; + * const request = { * projectId: projectId, * keys: keys, * }; * client.lookup(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -285,19 +285,19 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var partitionId = {}; - * var request = { + * const projectId = ''; + * const partitionId = {}; + * const request = { * projectId: projectId, * partitionId: partitionId, * }; * client.runQuery(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -340,14 +340,14 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; + * const projectId = ''; * client.beginTransaction({projectId: projectId}) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -411,21 +411,21 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var mode = 'MODE_UNSPECIFIED'; - * var mutations = []; - * var request = { + * const projectId = ''; + * const mode = 'MODE_UNSPECIFIED'; + * const mutations = []; + * const request = { * projectId: projectId, * mode: mode, * mutations: mutations, * }; * client.commit(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -467,19 +467,19 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var transaction = ''; - * var request = { + * const projectId = ''; + * const transaction = ''; + * const request = { * projectId: projectId, * transaction: transaction, * }; * client.rollback(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -524,19 +524,19 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var keys = []; - * var request = { + * const projectId = ''; + * const keys = []; + * const request = { * projectId: projectId, * keys: keys, * }; * client.allocateIds(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { @@ -583,19 +583,19 @@ class DatastoreClient { * * const datastore = require('@google-cloud/datastore'); * - * var client = new datastore.v1.DatastoreClient({ + * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. * }); * - * var projectId = ''; - * var keys = []; - * var request = { + * const projectId = ''; + * const keys = []; + * const request = { * projectId: projectId, * keys: keys, * }; * client.reserveIds(request) * .then(responses => { - * var response = responses[0]; + * const response = responses[0]; * // doThingsWith(response) * }) * .catch(err => { diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index 7d75c8233b0..ba2b01b361f 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -35,7 +35,7 @@ * @memberof google.datastore.v1 * @see [google.datastore.v1.LookupRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var LookupRequest = { +const LookupRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -67,7 +67,7 @@ var LookupRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.LookupResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var LookupResponse = { +const LookupResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -104,7 +104,7 @@ var LookupResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.RunQueryRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var RunQueryRequest = { +const RunQueryRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -125,7 +125,7 @@ var RunQueryRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.RunQueryResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var RunQueryResponse = { +const RunQueryResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -144,7 +144,7 @@ var RunQueryResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.BeginTransactionRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var BeginTransactionRequest = { +const BeginTransactionRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -158,7 +158,7 @@ var BeginTransactionRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.BeginTransactionResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var BeginTransactionResponse = { +const BeginTransactionResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -176,7 +176,7 @@ var BeginTransactionResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var RollbackRequest = { +const RollbackRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -187,7 +187,7 @@ var RollbackRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var RollbackResponse = { +const RollbackResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -228,7 +228,7 @@ var RollbackResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.CommitRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var CommitRequest = { +const CommitRequest = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -274,7 +274,7 @@ var CommitRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.CommitResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var CommitResponse = { +const CommitResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -294,7 +294,7 @@ var CommitResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.AllocateIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var AllocateIdsRequest = { +const AllocateIdsRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -311,7 +311,7 @@ var AllocateIdsRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.AllocateIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var AllocateIdsResponse = { +const AllocateIdsResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -334,7 +334,7 @@ var AllocateIdsResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.ReserveIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var ReserveIdsRequest = { +const ReserveIdsRequest = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -344,7 +344,7 @@ var ReserveIdsRequest = { * @memberof google.datastore.v1 * @see [google.datastore.v1.ReserveIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var ReserveIdsResponse = { +const ReserveIdsResponse = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -383,7 +383,7 @@ var ReserveIdsResponse = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Mutation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var Mutation = { +const Mutation = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -411,7 +411,7 @@ var Mutation = { * @memberof google.datastore.v1 * @see [google.datastore.v1.MutationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var MutationResult = { +const MutationResult = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -433,7 +433,7 @@ var MutationResult = { * @memberof google.datastore.v1 * @see [google.datastore.v1.ReadOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var ReadOptions = { +const ReadOptions = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -482,7 +482,7 @@ var ReadOptions = { * @memberof google.datastore.v1 * @see [google.datastore.v1.TransactionOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} */ -var TransactionOptions = { +const TransactionOptions = { // This is for documentation. Actual contents will be loaded by gRPC. /** diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index 17ba6cc2640..bd7848ddd33 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -46,7 +46,7 @@ * @memberof google.datastore.v1 * @see [google.datastore.v1.PartitionId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ -var PartitionId = { +const PartitionId = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -87,7 +87,7 @@ var PartitionId = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Key definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ -var Key = { +const Key = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -136,7 +136,7 @@ var Key = { * @memberof google.datastore.v1 * @see [google.datastore.v1.ArrayValue definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ -var ArrayValue = { +const ArrayValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -214,7 +214,7 @@ var ArrayValue = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ -var Value = { +const Value = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -247,6 +247,6 @@ var Value = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Entity definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} */ -var Entity = { +const Entity = { // This is for documentation. Actual contents will be loaded by gRPC. }; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index fcd7ee9ec0f..2010d79c2da 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -42,7 +42,7 @@ * @memberof google.datastore.v1 * @see [google.datastore.v1.EntityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var EntityResult = { +const EntityResult = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -136,7 +136,7 @@ var EntityResult = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Query definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var Query = { +const Query = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -150,7 +150,7 @@ var Query = { * @memberof google.datastore.v1 * @see [google.datastore.v1.KindExpression definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var KindExpression = { +const KindExpression = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -165,7 +165,7 @@ var KindExpression = { * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyReference definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var PropertyReference = { +const PropertyReference = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -181,7 +181,7 @@ var PropertyReference = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Projection definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var Projection = { +const Projection = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -202,7 +202,7 @@ var Projection = { * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyOrder definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var PropertyOrder = { +const PropertyOrder = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -247,7 +247,7 @@ var PropertyOrder = { * @memberof google.datastore.v1 * @see [google.datastore.v1.Filter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var Filter = { +const Filter = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -269,7 +269,7 @@ var Filter = { * @memberof google.datastore.v1 * @see [google.datastore.v1.CompositeFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var CompositeFilter = { +const CompositeFilter = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -314,7 +314,7 @@ var CompositeFilter = { * @memberof google.datastore.v1 * @see [google.datastore.v1.PropertyFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var PropertyFilter = { +const PropertyFilter = { // This is for documentation. Actual contents will be loaded by gRPC. /** @@ -395,7 +395,7 @@ var PropertyFilter = { * @memberof google.datastore.v1 * @see [google.datastore.v1.GqlQuery definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var GqlQuery = { +const GqlQuery = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -415,7 +415,7 @@ var GqlQuery = { * @memberof google.datastore.v1 * @see [google.datastore.v1.GqlQueryParameter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var GqlQueryParameter = { +const GqlQueryParameter = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -462,7 +462,7 @@ var GqlQueryParameter = { * @memberof google.datastore.v1 * @see [google.datastore.v1.QueryResultBatch definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} */ -var QueryResultBatch = { +const QueryResultBatch = { // This is for documentation. Actual contents will be loaded by gRPC. /** diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index 791b600ab1d..363b6391ac1 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -27,7 +27,7 @@ * @memberof google.protobuf * @see [google.protobuf.DoubleValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var DoubleValue = { +const DoubleValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -43,7 +43,7 @@ var DoubleValue = { * @memberof google.protobuf * @see [google.protobuf.FloatValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var FloatValue = { +const FloatValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -59,7 +59,7 @@ var FloatValue = { * @memberof google.protobuf * @see [google.protobuf.Int64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var Int64Value = { +const Int64Value = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -75,7 +75,7 @@ var Int64Value = { * @memberof google.protobuf * @see [google.protobuf.UInt64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var UInt64Value = { +const UInt64Value = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -91,7 +91,7 @@ var UInt64Value = { * @memberof google.protobuf * @see [google.protobuf.Int32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var Int32Value = { +const Int32Value = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -107,7 +107,7 @@ var Int32Value = { * @memberof google.protobuf * @see [google.protobuf.UInt32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var UInt32Value = { +const UInt32Value = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -123,7 +123,7 @@ var UInt32Value = { * @memberof google.protobuf * @see [google.protobuf.BoolValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var BoolValue = { +const BoolValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -139,7 +139,7 @@ var BoolValue = { * @memberof google.protobuf * @see [google.protobuf.StringValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var StringValue = { +const StringValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; @@ -155,6 +155,6 @@ var StringValue = { * @memberof google.protobuf * @see [google.protobuf.BytesValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} */ -var BytesValue = { +const BytesValue = { // This is for documentation. Actual contents will be loaded by gRPC. }; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 0117b9c2727..dc700ab76f9 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -18,28 +18,28 @@ const assert = require('assert'); const datastoreModule = require('../src'); -var FAKE_STATUS_CODE = 1; -var error = new Error(); +const FAKE_STATUS_CODE = 1; +const error = new Error(); error.code = FAKE_STATUS_CODE; describe('DatastoreClient', () => { describe('lookup', () => { it('invokes lookup without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.lookup = mockSimpleGrpcMethod( @@ -55,15 +55,15 @@ describe('DatastoreClient', () => { }); it('invokes lookup with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; @@ -82,21 +82,21 @@ describe('DatastoreClient', () => { describe('runQuery', () => { it('invokes runQuery without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var partitionId = {}; - var request = { + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { projectId: projectId, partitionId: partitionId, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.runQuery = mockSimpleGrpcMethod( @@ -112,15 +112,15 @@ describe('DatastoreClient', () => { }); it('invokes runQuery with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var partitionId = {}; - var request = { + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { projectId: projectId, partitionId: partitionId, }; @@ -143,20 +143,20 @@ describe('DatastoreClient', () => { describe('beginTransaction', () => { it('invokes beginTransaction without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var request = { + const projectId = 'projectId-1969970175'; + const request = { projectId: projectId, }; // Mock response - var transaction = '-34'; - var expectedResponse = { + const transaction = '-34'; + const expectedResponse = { transaction: transaction, }; @@ -174,14 +174,14 @@ describe('DatastoreClient', () => { }); it('invokes beginTransaction with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var request = { + const projectId = 'projectId-1969970175'; + const request = { projectId: projectId, }; @@ -203,24 +203,24 @@ describe('DatastoreClient', () => { describe('commit', () => { it('invokes commit without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var mode = 'MODE_UNSPECIFIED'; - var mutations = []; - var request = { + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { projectId: projectId, mode: mode, mutations: mutations, }; // Mock response - var indexUpdates = 1425228195; - var expectedResponse = { + const indexUpdates = 1425228195; + const expectedResponse = { indexUpdates: indexUpdates, }; @@ -238,16 +238,16 @@ describe('DatastoreClient', () => { }); it('invokes commit with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var mode = 'MODE_UNSPECIFIED'; - var mutations = []; - var request = { + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { projectId: projectId, mode: mode, mutations: mutations, @@ -267,21 +267,21 @@ describe('DatastoreClient', () => { describe('rollback', () => { it('invokes rollback without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var transaction = '-34'; - var request = { + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { projectId: projectId, transaction: transaction, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.rollback = mockSimpleGrpcMethod( @@ -297,15 +297,15 @@ describe('DatastoreClient', () => { }); it('invokes rollback with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var transaction = '-34'; - var request = { + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { projectId: projectId, transaction: transaction, }; @@ -328,21 +328,21 @@ describe('DatastoreClient', () => { describe('allocateIds', () => { it('invokes allocateIds without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( @@ -358,15 +358,15 @@ describe('DatastoreClient', () => { }); it('invokes allocateIds with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; @@ -389,21 +389,21 @@ describe('DatastoreClient', () => { describe('reserveIds', () => { it('invokes reserveIds without error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; // Mock response - var expectedResponse = {}; + const expectedResponse = {}; // Mock Grpc layer client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( @@ -419,15 +419,15 @@ describe('DatastoreClient', () => { }); it('invokes reserveIds with error', done => { - var client = new datastoreModule.v1.DatastoreClient({ + const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); // Mock request - var projectId = 'projectId-1969970175'; - var keys = []; - var request = { + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { projectId: projectId, keys: keys, }; From 066fa791316057a4ebd45632341e9b3342c1a3a6 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 18 Sep 2018 10:51:59 -0700 Subject: [PATCH 259/820] Enable no-var in eslint (#196) --- handwritten/nodejs-datastore/.eslintrc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.eslintrc.yml b/handwritten/nodejs-datastore/.eslintrc.yml index bed57fbc42c..65f1dce6c0c 100644 --- a/handwritten/nodejs-datastore/.eslintrc.yml +++ b/handwritten/nodejs-datastore/.eslintrc.yml @@ -11,3 +11,4 @@ rules: block-scoped-var: error eqeqeq: error no-warning-comments: warn + no-var: error From a5d5435c114903ab75ec87b7a46f4ecbc32655d2 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 20 Sep 2018 14:20:54 -0700 Subject: [PATCH 260/820] Enable prefer-const in the eslint config (#197) --- handwritten/nodejs-datastore/.eslintrc.yml | 1 + handwritten/nodejs-datastore/package.json | 3 ++- handwritten/nodejs-datastore/samples/concepts.js | 4 ++-- handwritten/nodejs-datastore/src/v1/datastore_client.js | 2 +- handwritten/nodejs-datastore/test/transaction.js | 4 +--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/.eslintrc.yml b/handwritten/nodejs-datastore/.eslintrc.yml index 65f1dce6c0c..73eeec27612 100644 --- a/handwritten/nodejs-datastore/.eslintrc.yml +++ b/handwritten/nodejs-datastore/.eslintrc.yml @@ -12,3 +12,4 @@ rules: eqeqeq: error no-warning-comments: warn no-var: error + prefer-const: error diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index aab123e0727..a5b03b4fda9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -59,7 +59,8 @@ "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", "test-no-cover": "mocha test/*.js", "test": "npm run cover", - "system-test": "mocha system-test/*.js --timeout 600000" + "system-test": "mocha system-test/*.js --timeout 600000", + "fix": "eslint '**/*.js' --fix && npm run prettier" }, "dependencies": { "@google-cloud/projectify": "^0.3.0", diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 6f5ac37050e..c1d1a7ad778 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -560,7 +560,7 @@ class Metadata extends TestHelper { }); console.log('Properties by Kind:'); - for (let key in propertiesByKind) { + for (const key in propertiesByKind) { console.log(key, propertiesByKind[key]); } @@ -599,7 +599,7 @@ class Metadata extends TestHelper { }); console.log('Task property representations:'); - for (let key in representationsByProperty) { + for (const key in representationsByProperty) { console.log(key, representationsByProperty[key]); } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 0e00048c6c2..ab66b76d86b 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -132,7 +132,7 @@ class DatastoreClient { 'allocateIds', 'reserveIds', ]; - for (let methodName of datastoreStubMethods) { + for (const methodName of datastoreStubMethods) { this._innerApiCalls[methodName] = gax.createApiCall( datastoreStub.then( stub => diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.js index a3a7717c0c5..119be065829 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.js @@ -119,8 +119,6 @@ describe('Transaction', function() { }); it('should localize request function', function(done) { - let transaction; - const fakeDataset = { request_: { bind: function(context) { @@ -136,7 +134,7 @@ describe('Transaction', function() { }, }; - transaction = new Transaction(fakeDataset); + const transaction = new Transaction(fakeDataset); }); it('should localize default properties', function() { From e1f41059cf3a34f25b5a050956340cabbd06c1a2 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Fri, 21 Sep 2018 17:57:43 -0700 Subject: [PATCH 261/820] Update the kokoro config (#199) --- handwritten/nodejs-datastore/.circleci/npm-install-retry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/npm-install-retry.js b/handwritten/nodejs-datastore/.circleci/npm-install-retry.js index ae3220d7348..3240aa2cbf2 100755 --- a/handwritten/nodejs-datastore/.circleci/npm-install-retry.js +++ b/handwritten/nodejs-datastore/.circleci/npm-install-retry.js @@ -6,7 +6,7 @@ let spawn = require('child_process').spawn; //USE: ./index.js [... NPM ARGS] // -let timeout = process.argv[2] || 60000; +let timeout = process.argv[2] || process.env.NPM_INSTALL_TIMEOUT || 60000; let attempts = process.argv[3] || 3; let args = process.argv.slice(4); if (args.length === 0) { From 0e3a7c123541be9d2a24a3ffbe99636193b61674 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 24 Sep 2018 17:01:15 -0700 Subject: [PATCH 262/820] test: remove appveyor config (#200) --- handwritten/nodejs-datastore/.appveyor.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.appveyor.yml diff --git a/handwritten/nodejs-datastore/.appveyor.yml b/handwritten/nodejs-datastore/.appveyor.yml deleted file mode 100644 index 24082152655..00000000000 --- a/handwritten/nodejs-datastore/.appveyor.yml +++ /dev/null @@ -1,20 +0,0 @@ -environment: - matrix: - - nodejs_version: 8 - -install: - - ps: Install-Product node $env:nodejs_version - - npm install -g npm # Force using the latest npm to get dedupe during install - - set PATH=%APPDATA%\npm;%PATH% - - npm install --force --ignore-scripts - -test_script: - - node --version - - npm --version - - npm rebuild - - npm test - -build: off - -matrix: - fast_finish: true From fd12dda72c6a9487be248a64110d798616c9dcfc Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 28 Sep 2018 14:33:57 -0700 Subject: [PATCH 263/820] Release v2.0.0 (#204) --- handwritten/nodejs-datastore/CHANGELOG.md | 81 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/CHANGELOG.md diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md new file mode 100644 index 00000000000..fd7e74e753d --- /dev/null +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -0,0 +1,81 @@ +# Changelog + +[npm history][1] + +[1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions + +## v2.0.0 + +### Breaking Changes +- chore: really delete node4 and node9 ([#131](https://github.com/googleapis/nodejs-datastore/pull/131)) +- fix: drop support for node.js 4.x and 9.x ([#129](https://github.com/googleapis/nodejs-datastore/pull/129)) + +### Dependencies +- fix(deps): update dependency google-gax to ^0.20.0 ([#194](https://github.com/googleapis/nodejs-datastore/pull/194)) +- fix(deps): update dependency google-auth-library to v2 ([#184](https://github.com/googleapis/nodejs-datastore/pull/184)) +- fix(deps): update dependency google-gax to ^0.19.0 ([#177](https://github.com/googleapis/nodejs-datastore/pull/177)) +- chore: remove safe-buffer ([#144](https://github.com/googleapis/nodejs-datastore/pull/144)) +- fix(deps): update dependency google-gax to ^0.18.0 ([#154](https://github.com/googleapis/nodejs-datastore/pull/154)) +- chore: drop dependency on common ([#148](https://github.com/googleapis/nodejs-datastore/pull/148)) +- chore: remove propprop ([#145](https://github.com/googleapis/nodejs-datastore/pull/145)) +- refactor: update nodejs-common and google-auth-library ([#112](https://github.com/googleapis/nodejs-datastore/pull/112)) + +### Documentation +- doc: fix namespace causing 404 ([#170](https://github.com/googleapis/nodejs-datastore/pull/170)) + +### Internal / Testing Changes +- build: prevent system/sample-test from leaking credentials +- Update CI config ([#201](https://github.com/googleapis/nodejs-datastore/pull/201)) +- test: remove appveyor config ([#200](https://github.com/googleapis/nodejs-datastore/pull/200)) +- Update the kokoro config ([#199](https://github.com/googleapis/nodejs-datastore/pull/199)) +- Enable prefer-const in the eslint config ([#197](https://github.com/googleapis/nodejs-datastore/pull/197)) +- Enable no-var in eslint ([#196](https://github.com/googleapis/nodejs-datastore/pull/196)) +- Switch to let/const ([#195](https://github.com/googleapis/nodejs-datastore/pull/195)) +- Update CI config ([#193](https://github.com/googleapis/nodejs-datastore/pull/193)) +- Retry npm install in CI ([#191](https://github.com/googleapis/nodejs-datastore/pull/191)) +- Update CI config ([#185](https://github.com/googleapis/nodejs-datastore/pull/185)) +- Update CI config ([#182](https://github.com/googleapis/nodejs-datastore/pull/182)) +- chore(deps): update dependency nyc to v13 ([#181](https://github.com/googleapis/nodejs-datastore/pull/181)) +- Update the CI config ([#180](https://github.com/googleapis/nodejs-datastore/pull/180)) +- chore: use arrow functions ([#176](https://github.com/googleapis/nodejs-datastore/pull/176)) +- chore: make CircleCI config consistent ([#178](https://github.com/googleapis/nodejs-datastore/pull/178)) +- chore: start converting to es classes ([#173](https://github.com/googleapis/nodejs-datastore/pull/173)) +- chore(deps): update dependency eslint-config-prettier to v3 ([#169](https://github.com/googleapis/nodejs-datastore/pull/169)) +- test: use sinon for mocking ([#168](https://github.com/googleapis/nodejs-datastore/pull/168)) +- chore: do not use npm ci ([#166](https://github.com/googleapis/nodejs-datastore/pull/166)) +- fix: fix the samples tests ([#164](https://github.com/googleapis/nodejs-datastore/pull/164)) +- chore: ignore package-lock.json ([#162](https://github.com/googleapis/nodejs-datastore/pull/162)) +- chore(deps): lock file maintenance ([#160](https://github.com/googleapis/nodejs-datastore/pull/160)) +- chore: switch back to auto-generated code +- chore(deps): lock file maintenance ([#159](https://github.com/googleapis/nodejs-datastore/pull/159)) +- chore: use let and const ([#158](https://github.com/googleapis/nodejs-datastore/pull/158)) +- chore: update renovate config ([#157](https://github.com/googleapis/nodejs-datastore/pull/157)) +- Delete reference to non-existent sample. ([#149](https://github.com/googleapis/nodejs-datastore/pull/149)) +- test: throw on deprecation ([#155](https://github.com/googleapis/nodejs-datastore/pull/155)) +- chore: move mocha options to mocha.opts ([#150](https://github.com/googleapis/nodejs-datastore/pull/150)) +- Update CI config ([#151](https://github.com/googleapis/nodejs-datastore/pull/151)) +- chore: add node templates to synth.py ([#143](https://github.com/googleapis/nodejs-datastore/pull/143)) +- chore: please eslint ([#146](https://github.com/googleapis/nodejs-datastore/pull/146)) +- chore(deps): lock file maintenance ([#142](https://github.com/googleapis/nodejs-datastore/pull/142)) +- chore(deps): update dependency eslint-plugin-node to v7 ([#139](https://github.com/googleapis/nodejs-datastore/pull/139)) +- test: use strictEqual in tests ([#140](https://github.com/googleapis/nodejs-datastore/pull/140)) +- chore(deps): lock file maintenance ([#138](https://github.com/googleapis/nodejs-datastore/pull/138)) +- chore(build): use `npm ci` instead of `npm install` ([#134](https://github.com/googleapis/nodejs-datastore/pull/134)) +- chore(deps): lock file maintenance ([#133](https://github.com/googleapis/nodejs-datastore/pull/133)) +- chore(deps): lock file maintenance ([#132](https://github.com/googleapis/nodejs-datastore/pull/132)) +- chore(deps): lock file maintenance ([#130](https://github.com/googleapis/nodejs-datastore/pull/130)) +- chore(deps): lock file maintenance ([#128](https://github.com/googleapis/nodejs-datastore/pull/128)) +- chore(deps): lock file maintenance ([#127](https://github.com/googleapis/nodejs-datastore/pull/127)) +- chore(deps): lock file maintenance ([#126](https://github.com/googleapis/nodejs-datastore/pull/126)) +- chore(deps): lock file maintenance ([#125](https://github.com/googleapis/nodejs-datastore/pull/125)) +- chore(deps): lock file maintenance ([#124](https://github.com/googleapis/nodejs-datastore/pull/124)) +- fix(deps): update dependency yargs to v12 ([#122](https://github.com/googleapis/nodejs-datastore/pull/122)) +- fix(deps): update dependency sinon to v6 ([#120](https://github.com/googleapis/nodejs-datastore/pull/120)) +- Configure Renovate ([#113](https://github.com/googleapis/nodejs-datastore/pull/113)) +- Update google-gax dependency ([#119](https://github.com/googleapis/nodejs-datastore/pull/119)) +- refactor: drop repo-tool as an exec wrapper ([#118](https://github.com/googleapis/nodejs-datastore/pull/118)) +- chore: update sample lockfiles ([#117](https://github.com/googleapis/nodejs-datastore/pull/117)) +- fix: update linking for samples ([#115](https://github.com/googleapis/nodejs-datastore/pull/115)) +- chore(package): update eslint to version 5.0.0 ([#114](https://github.com/googleapis/nodejs-datastore/pull/114)) +- chore(package): Update sinon to the latest version 🚀 ([#104](https://github.com/googleapis/nodejs-datastore/pull/104)) + diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a5b03b4fda9..2d8dd180d09 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "1.4.1", + "version": "2.0.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 9b996b03825..5266f3817e0 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" }, "dependencies": { - "@google-cloud/datastore": "^1.4.1", + "@google-cloud/datastore": "^2.0.0", "sinon": "^6.0.1", "yargs": "^12.0.1" }, From 703c27edc5ae5ede9dfbc999735d8989e36cf593 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 1 Oct 2018 05:03:05 -0700 Subject: [PATCH 264/820] chore(deps): update dependency eslint-plugin-prettier to v3 (#206) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2d8dd180d09..6943d3d54a4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -88,7 +88,7 @@ "eslint": "^5.0.0", "eslint-config-prettier": "^3.0.0", "eslint-plugin-node": "^7.0.0", - "eslint-plugin-prettier": "^2.6.0", + "eslint-plugin-prettier": "^3.0.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", From 02f461ae568c4101880d6e6815f2d0957c13b244 Mon Sep 17 00:00:00 2001 From: DPE bot Date: Tue, 2 Oct 2018 08:13:19 -0700 Subject: [PATCH 265/820] Update kokoro config (#207) --- handwritten/nodejs-datastore/.circleci/config.yml | 2 -- handwritten/nodejs-datastore/codecov.yaml | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/codecov.yaml diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 8af6a4d0489..da54155fc57 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -68,8 +68,6 @@ jobs: environment: NPM_CONFIG_PREFIX: /home/node/.npm-global - run: npm test - - run: node_modules/.bin/codecov - node8: docker: - image: 'node:8' diff --git a/handwritten/nodejs-datastore/codecov.yaml b/handwritten/nodejs-datastore/codecov.yaml new file mode 100644 index 00000000000..5724ea9478d --- /dev/null +++ b/handwritten/nodejs-datastore/codecov.yaml @@ -0,0 +1,4 @@ +--- +codecov: + ci: + - source.cloud.google.com From 8478a96b6fa04fecf3122da64e44b6a7c9f7ca0c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sun, 14 Oct 2018 07:58:13 -0700 Subject: [PATCH 266/820] fix(deps): update dependency sinon to v7 (#212) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6943d3d54a4..8075df14673 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -97,6 +97,6 @@ "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", - "sinon": "^6.0.0" + "sinon": "^7.0.0" } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5266f3817e0..76e1e3895dc 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^2.0.0", - "sinon": "^6.0.1", + "sinon": "^7.0.0", "yargs": "^12.0.1" }, "devDependencies": { From 575d1e040d4a35e10f3beb2799072b9055fdb22f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 15 Oct 2018 14:52:41 -0700 Subject: [PATCH 267/820] fix(deps): update dependency google-proto-files to ^0.17.0 (#210) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8075df14673..9dbed2ff6f8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "extend": "^3.0.1", "google-auth-library": "^2.0.0", "google-gax": "^0.20.0", - "google-proto-files": "^0.16.0", + "google-proto-files": "^0.17.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", "lodash.merge": "^4.6.1", From 6b373a8b6289624ce493bacac9329e6c46dd1634 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sun, 28 Oct 2018 08:34:55 -0700 Subject: [PATCH 268/820] chore(deps): update dependency eslint-plugin-node to v8 (#227) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9dbed2ff6f8..762c9062acc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -87,7 +87,7 @@ "deep-strict-equal": "^0.2.0", "eslint": "^5.0.0", "eslint-config-prettier": "^3.0.0", - "eslint-plugin-node": "^7.0.0", + "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", From cf414ac8129f0ec70450d7f235680fbc54d3a4c0 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 30 Oct 2018 09:33:14 -0700 Subject: [PATCH 269/820] chore: remove unused dependencies (#226) * chore: remove unused dependencies * fixy --- handwritten/nodejs-datastore/package.json | 4 ---- handwritten/nodejs-datastore/src/entity.js | 19 ++++++++++--------- handwritten/nodejs-datastore/src/request.js | 21 ++++++++++++++++----- handwritten/nodejs-datastore/test/entity.js | 6 ------ 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 762c9062acc..e1b7f2cf3ce 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -67,15 +67,12 @@ "@google-cloud/promisify": "^0.3.0", "arrify": "^1.0.1", "concat-stream": "^1.6.2", - "create-error-class": "^3.0.2", "extend": "^3.0.1", "google-auth-library": "^2.0.0", "google-gax": "^0.20.0", - "google-proto-files": "^0.17.0", "is": "^3.2.1", "lodash.flatten": "^4.4.0", "lodash.merge": "^4.6.1", - "prop-assign": "^1.0.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", "through2": "^2.0.3" @@ -84,7 +81,6 @@ "@google-cloud/nodejs-repo-tools": "^2.3.0", "async": "^2.6.1", "codecov": "^3.0.2", - "deep-strict-equal": "^0.2.0", "eslint": "^5.0.0", "eslint-config-prettier": "^3.0.0", "eslint-plugin-node": "^8.0.0", diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.js index 692edc8f611..777690708da 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.js @@ -17,20 +17,21 @@ 'use strict'; const arrify = require('arrify'); -const createErrorClass = require('create-error-class'); const extend = require('extend'); const is = require('is'); const entity = module.exports; -const InvalidKeyError = createErrorClass('InvalidKey', function(opts) { - const errorMessages = { - MISSING_KIND: 'A key should contain at least a kind.', - MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', - }; - - this.message = errorMessages[opts.code]; -}); +class InvalidKeyError extends Error { + constructor(opts) { + const errorMessages = { + MISSING_KIND: 'A key should contain at least a kind.', + MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', + }; + super(errorMessages[opts.code]); + this.name = 'InvalidKey'; + } +} /** * A symbol to access the Key object from an entity object. diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.js index eaedbbf7b72..2b71dbfe2c3 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.js @@ -22,7 +22,6 @@ const {promisifyAll} = require('@google-cloud/promisify'); const concat = require('concat-stream'); const extend = require('extend'); const is = require('is'); -const propAssign = require('prop-assign'); const {split} = require('split-array-stream'); const streamEvents = require('stream-events'); const through = require('through2'); @@ -477,7 +476,10 @@ class DatastoreRequest { insert(entities, callback) { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'insert')); + .map(x => { + x.method = 'insert'; + return x; + }); this.save(entities, callback); } @@ -967,7 +969,10 @@ class DatastoreRequest { let values = value.arrayValue && value.arrayValue.values; if (values) { - values = values.map(propAssign('excludeFromIndexes', excluded)); + values = values.map(x => { + x.excludeFromIndexes = excluded; + return x; + }); } else { value.excludeFromIndexes = data.excludeFromIndexes; } @@ -1045,7 +1050,10 @@ class DatastoreRequest { update(entities, callback) { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'update')); + .map(x => { + x.method = 'update'; + return x; + }); this.save(entities, callback); } @@ -1067,7 +1075,10 @@ class DatastoreRequest { upsert(entities, callback) { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) - .map(propAssign('method', 'upsert')); + .map(x => { + x.method = 'upsert'; + return x; + }); this.save(entities, callback); } diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.js index 3a74ce79778..eebeb7bd44c 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.js @@ -17,12 +17,6 @@ 'use strict'; const assert = require('assert'); -const deepStrictEqual = require('deep-strict-equal'); -assert.deepStrictEqual = - assert.deepStrictEqual || - function() { - return assert(deepStrictEqual.apply(this, arguments)); - }; const extend = require('extend'); const Datastore = require('../'); From aaae2f5ebba0381edf69c1a97b76e2c74414c9a2 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 30 Oct 2018 10:22:29 -0700 Subject: [PATCH 270/820] chore: include build in eslintignore (#232) --- handwritten/nodejs-datastore/.eslintignore | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index f6fac98b0a8..f08b0fd1c65 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -1,3 +1,4 @@ node_modules/* samples/node_modules/* src/**/doc/* +build/ From 08a92a3a71a3330e55df081bb69d10039056bbb7 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 1 Nov 2018 12:04:11 -0700 Subject: [PATCH 271/820] chore: update CircleCI config (#235) --- handwritten/nodejs-datastore/.circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index da54155fc57..6735ebdaaa1 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -159,7 +159,8 @@ jobs: command: npm run system-test environment: GCLOUD_PROJECT: long-door-651 - GOOGLE_APPLICATION_CREDENTIALS: .circleci/key.json + GOOGLE_APPLICATION_CREDENTIALS: /home/node/project/.circleci/key.json + NPM_CONFIG_PREFIX: /home/node/.npm-global - run: name: Remove unencrypted key. command: | From e6ab44f96e22100df3825ceae7f539222d6c81a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Wed, 7 Nov 2018 08:41:23 -0800 Subject: [PATCH 272/820] fix(deps): update dependency through2 to v3 (#237) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e1b7f2cf3ce..cf5de715cf2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -75,7 +75,7 @@ "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", - "through2": "^2.0.3" + "through2": "^3.0.0" }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^2.3.0", From b641d3b23275210d3221c8ea20e537ec8dd8d08d Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 7 Nov 2018 08:44:40 -0800 Subject: [PATCH 273/820] refactor(ts): convert to typescript (#236) --- handwritten/nodejs-datastore/.clang-format | 3 + handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/README.md | 2 +- handwritten/nodejs-datastore/package.json | 35 +- .../nodejs-datastore/samples/concepts.js | 2 +- .../nodejs-datastore/samples/quickstart.js | 2 +- .../samples/system-test/quickstart.test.js | 7 +- .../samples/system-test/tasks.test.js | 10 +- handwritten/nodejs-datastore/samples/tasks.js | 4 +- .../src/{entity.js => entity.ts} | 36 +- .../src/{index.js => index.ts} | 762 +++++++++--------- .../src/{query.js => query.ts} | 37 +- .../src/{request.js => request.ts} | 38 +- .../src/{transaction.js => transaction.ts} | 31 +- .../src/v1/datastore_client.js | 17 +- handwritten/nodejs-datastore/synth.py | 14 +- .../{datastore.js => datastore.ts} | 14 +- .../test/{entity.js => entity.ts} | 6 +- handwritten/nodejs-datastore/test/gapic-v1.js | 13 +- handwritten/nodejs-datastore/test/gapic-v1.ts | 464 +++++++++++ .../test/{index.js => index.ts} | 39 +- .../test/{query.js => query.ts} | 2 +- .../test/{request.js => request.ts} | 24 +- .../test/{transaction.js => transaction.ts} | 30 +- handwritten/nodejs-datastore/tsconfig.json | 14 + handwritten/nodejs-datastore/tslint.json | 3 + 26 files changed, 1092 insertions(+), 519 deletions(-) create mode 100644 handwritten/nodejs-datastore/.clang-format rename handwritten/nodejs-datastore/src/{entity.js => entity.ts} (95%) rename handwritten/nodejs-datastore/src/{index.js => index.ts} (51%) rename handwritten/nodejs-datastore/src/{query.js => query.ts} (93%) rename handwritten/nodejs-datastore/src/{request.js => request.ts} (97%) rename handwritten/nodejs-datastore/src/{transaction.js => transaction.ts} (95%) rename handwritten/nodejs-datastore/system-test/{datastore.js => datastore.ts} (98%) rename handwritten/nodejs-datastore/test/{entity.js => entity.ts} (99%) create mode 100644 handwritten/nodejs-datastore/test/gapic-v1.ts rename handwritten/nodejs-datastore/test/{index.js => index.ts} (95%) rename handwritten/nodejs-datastore/test/{query.js => query.ts} (99%) rename handwritten/nodejs-datastore/test/{request.js => request.ts} (99%) rename handwritten/nodejs-datastore/test/{transaction.js => transaction.ts} (96%) create mode 100644 handwritten/nodejs-datastore/tsconfig.json create mode 100644 handwritten/nodejs-datastore/tslint.json diff --git a/handwritten/nodejs-datastore/.clang-format b/handwritten/nodejs-datastore/.clang-format new file mode 100644 index 00000000000..7d6cf97e108 --- /dev/null +++ b/handwritten/nodejs-datastore/.clang-format @@ -0,0 +1,3 @@ +Language: JavaScript +BasedOnStyle: Google +ColumnLimit: 80 \ No newline at end of file diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index fedb3bda761..044e97d9786 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -31,7 +31,7 @@ module.exports = { source: { excludePattern: '(^|\\/|\\\\)[._]', include: [ - 'src' + 'build/src' ], includePattern: '\\.js$' }, diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 9df21c2a148..0bd8f529d9e 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -66,7 +66,7 @@ Google APIs Client Libraries, in [Client Libraries Explained][explained]. ```javascript // Imports the Google Cloud client library -const Datastore = require('@google-cloud/datastore'); +const {Datastore} = require('@google-cloud/datastore'); // Your Google Cloud Platform project ID const projectId = 'YOUR_PROJECT_ID'; diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index cf5de715cf2..d0c8caa39a0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -8,7 +8,7 @@ "node": ">=6.0.0" }, "repository": "googleapis/nodejs-datastore", - "main": "./src/index.js", + "main": "./build/src/index.js", "files": [ "protos", "src", @@ -53,14 +53,18 @@ "scripts": { "docs": "jsdoc -c .jsdoc.js", "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", - "lint": "eslint src/ samples/ system-test/ test/", - "prettier": "prettier --write src/*.js src/*/*.js samples/*.js samples/*/*.js test/*.js test/*/*.js system-test/*.js system-test/*/*.js", - "cover": "nyc --reporter=lcov mocha test/*.js && nyc report", + "lint": "eslint 'samples/*.js' 'samples/**/*.js'", + "cover": "nyc --reporter=lcov mocha build/test && nyc report", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", - "test-no-cover": "mocha test/*.js", + "test-no-cover": "mocha build/test", "test": "npm run cover", - "system-test": "mocha system-test/*.js --timeout 600000", - "fix": "eslint '**/*.js' --fix && npm run prettier" + "presystem-test": "npm run compile", + "system-test": "mocha build/system-test --timeout 600000", + "fix": "eslint 'samples/*.js' 'samples/**/*.js' --fix", + "clean": "gts clean", + "compile": "tsc -p . && cp -r src/v1/ build/src/v1/ && cp -r protos build/", + "prepare": "npm run compile", + "pretest": "npm run compile" }, "dependencies": { "@google-cloud/projectify": "^0.3.0", @@ -79,12 +83,21 @@ }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^2.3.0", + "@types/arrify": "^1.0.4", + "@types/async": "^2.0.50", + "@types/extend": "^3.0.0", + "@types/is": "0.0.20", + "@types/mocha": "^5.2.5", + "@types/proxyquire": "^1.3.28", + "@types/sinon": "^5.0.5", + "@types/through2": "^2.0.34", "async": "^2.6.1", "codecov": "^3.0.2", "eslint": "^5.0.0", "eslint-config-prettier": "^3.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", + "gts": "^0.8.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", @@ -93,6 +106,12 @@ "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", - "sinon": "^7.0.0" + "sinon": "^7.0.0", + "typescript": "~3.1.5" + }, + "nyc": { + "exclude": [ + "build/test" + ] } } diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index c1d1a7ad778..cb43a002721 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -21,7 +21,7 @@ const sinon = require('sinon'); // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use // the project specified by the GCLOUD_PROJECT environment variable. See // https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication -const Datastore = require('@google-cloud/datastore'); +const {Datastore} = require('@google-cloud/datastore'); function makeStub() { return sinon.stub().returns(Promise.resolve([])); diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 22bb3a4b5fc..cb362feb197 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -17,7 +17,7 @@ // [START datastore_quickstart] // Imports the Google Cloud client library -const Datastore = require('@google-cloud/datastore'); +const {Datastore} = require('@google-cloud/datastore'); // Your Google Cloud Platform project ID const projectId = 'YOUR_PROJECT_ID'; diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js index d624c536e50..d579cda6696 100644 --- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js @@ -20,7 +20,8 @@ const sinon = require(`sinon`); const test = require(`ava`); const tools = require(`@google-cloud/nodejs-repo-tools`); -const datastore = proxyquire(`@google-cloud/datastore`, {})(); +const {Datastore} = proxyquire(`@google-cloud/datastore`, {}); +const datastore = new Datastore(); const entity = {description: `Buy milk`}; const kind = `Task`; @@ -70,6 +71,8 @@ test.cb(`should get a task from Datastore`, t => { }; proxyquire(`../quickstart`, { - '@google-cloud/datastore': sinon.stub().returns(datastoreMock), + '@google-cloud/datastore': { + Datastore: sinon.stub().returns(datastoreMock), + }, }); }); diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js index 739e558ff5a..953f02c02b3 100644 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -15,11 +15,11 @@ 'use strict'; -const Datastore = require(`@google-cloud/datastore`); -const datastore = new Datastore({}); -const path = require(`path`); -const test = require(`ava`); -const tools = require(`@google-cloud/nodejs-repo-tools`); +const {Datastore} = require('@google-cloud/datastore'); +const datastore = new Datastore(); +const path = require('path'); +const test = require('ava'); +const tools = require('@google-cloud/nodejs-repo-tools'); const cmd = `node tasks.js`; const cwd = path.join(__dirname, `..`); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 71e8bf66887..9cfa4f955eb 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -20,10 +20,10 @@ // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use // the project specified by the GCLOUD_PROJECT environment variable. See // https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication -const Datastore = require('@google-cloud/datastore'); +const {Datastore} = require('@google-cloud/datastore'); // Creates a client -const datastore = new Datastore({}); +const datastore = new Datastore(); // [END datastore_build_service] /* diff --git a/handwritten/nodejs-datastore/src/entity.js b/handwritten/nodejs-datastore/src/entity.ts similarity index 95% rename from handwritten/nodejs-datastore/src/entity.js rename to handwritten/nodejs-datastore/src/entity.ts index 777690708da..35715551b33 100644 --- a/handwritten/nodejs-datastore/src/entity.js +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -16,9 +16,9 @@ 'use strict'; -const arrify = require('arrify'); -const extend = require('extend'); -const is = require('is'); +import * as arrify from 'arrify'; +import * as extend from 'extend'; +import * as is from 'is'; const entity = module.exports; @@ -48,7 +48,7 @@ entity.KEY_SYMBOL = Symbol('KEY'); * @param {number} value The double value. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const aDouble = datastore.double(7.3); */ @@ -82,7 +82,7 @@ entity.isDsDouble = isDsDouble; * @param {number|string} value The integer value. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const anInt = datastore.int(7); */ @@ -118,7 +118,7 @@ entity.isDsInt = isDsInt; * @param {number} coordinates.longitude Longitudinal value. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const coordinates = { * latitude: 40.6894, @@ -163,7 +163,7 @@ entity.isDsGeoPoint = isDsGeoPoint; * @param {string} [options.namespace] Optional namespace. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key({ * namespace: 'ns', @@ -268,7 +268,7 @@ function decodeValueProto(valueProto) { } case 'doubleValue': { - return parseFloat(value, 10); + return Number(value); } case 'integerValue': { @@ -310,14 +310,15 @@ entity.decodeValueProto = decodeValueProto; * // } */ function encodeValue(value) { - const valueProto = {}; + // tslint:disable-next-line no-any + const valueProto: any = {}; if (is.boolean(value)) { valueProto.booleanValue = value; return valueProto; } - if (is.nil(value)) { + if (is.null(value)) { valueProto.nullValue = 0; return valueProto; } @@ -642,7 +643,8 @@ entity.isKeyComplete = isKeyComplete; * }); */ function keyFromKeyProto(keyProto) { - const keyOptions = { + // tslint:disable-next-line no-any + const keyOptions: any = { path: [], }; @@ -698,7 +700,8 @@ function keyToKeyProto(key) { }); } - const keyProto = { + // tslint:disable-next-line no-any + const keyProto: any = { path: [], }; @@ -719,7 +722,8 @@ function keyToKeyProto(key) { }); } - const pathElement = { + // tslint:disable-next-line no-any + const pathElement: any = { kind: key.kind, }; @@ -787,7 +791,8 @@ function queryToQueryProto(query) { '+': 'ASCENDING', }; - const queryProto = { + // tslint:disable-next-line no-any + const queryProto: any = { distinctOn: query.groupByVal.map(groupBy => { return { name: groupBy, @@ -838,7 +843,8 @@ function queryToQueryProto(query) { if (query.filters.length > 0) { const filters = query.filters.map(filter => { - let value = {}; + // tslint:disable-next-line no-any + let value: any = {}; if (filter.name === '__key__') { value.keyValue = entity.keyToKeyProto(filter.val); diff --git a/handwritten/nodejs-datastore/src/index.js b/handwritten/nodejs-datastore/src/index.ts similarity index 51% rename from handwritten/nodejs-datastore/src/index.js rename to handwritten/nodejs-datastore/src/index.ts index a2f89d19b1e..ec010bb1ef4 100644 --- a/handwritten/nodejs-datastore/src/index.js +++ b/handwritten/nodejs-datastore/src/index.ts @@ -38,13 +38,12 @@ 'use strict'; -const arrify = require('arrify'); -const extend = require('extend'); +import * as arrify from 'arrify'; +import * as extend from 'extend'; const gax = require('google-gax'); const {grpc} = new gax.GrpcClient(); -const {GoogleAuth} = require('google-auth-library'); -const is = require('is'); -const util = require('util'); +import {GoogleAuth} from 'google-auth-library'; +import * as is from 'is'; const DatastoreRequest = require('./request.js'); const entity = require('./entity.js'); @@ -105,7 +104,7 @@ const gapic = Object.freeze({ * @param {string} [options.namespace] Namespace to isolate transactions to. * * @example Import the client library - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * @example Create a client that uses Application Default Credentials (ADC): * const datastore = new Datastore(); @@ -117,7 +116,7 @@ const gapic = Object.freeze({ * }); * * @example Retrieving Records - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * * // Records, called "entities" in Datastore, are retrieved by using a key. The @@ -308,7 +307,7 @@ const gapic = Object.freeze({ * }); * * @example Queries with Ancestors - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * * const customerId1 = 2993844; @@ -380,397 +379,423 @@ const gapic = Object.freeze({ * console.log(entities); * }); */ -function Datastore(options) { - options = options || {}; - if (!(this instanceof Datastore)) { - return new Datastore(options); +class Datastore extends DatastoreRequest { + constructor(options) { + super(); + options = options || {}; + this.clients_ = new Map(); + this.datastore = this; + + /** + * @name Datastore#namespace + * @type {string} + */ + this.namespace = options.namespace; + + const userProvidedProjectId = + options.projectId || process.env.DATASTORE_PROJECT_ID; + const defaultProjectId = '{{projectId}}'; + + /** + * @name Datastore#projectId + * @type {string} + */ + this.projectId = userProvidedProjectId || defaultProjectId; + + this.defaultBaseUrl_ = 'datastore.googleapis.com'; + this.determineBaseUrl_(options.apiEndpoint); + + this.options = extend( + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: gapic.v1.DatastoreClient.scopes, + servicePath: this.baseUrl_, + port: is.number(this.port_) ? this.port_ : 443, + projectId: userProvidedProjectId, + }, + options + ); + if (this.customEndpoint_) { + this.options.sslCreds = grpc.credentials.createInsecure(); + } + + this.auth = new GoogleAuth(this.options); } - this.clients_ = new Map(); - this.datastore = this; - /** - * @name Datastore#namespace - * @type {string} + * Helper function to get a Datastore Double object. + * + * @param {number} value The double value. + * @returns {object} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const threeDouble = datastore.double(3.0); */ - this.namespace = options.namespace; + static double(value) { + return new entity.Double(value); + } - const userProvidedProjectId = - options.projectId || process.env.DATASTORE_PROJECT_ID; - const defaultProjectId = '{{projectId}}'; + double(value) { + return Datastore.double(value); + } /** - * @name Datastore#projectId - * @type {string} + * Helper function to check if something is a Datastore Double object. + * + * @param {*} value + * @returns {boolean} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * datastore.isDouble(0.42); // false + * datastore.isDouble(datastore.double(0.42)); // true */ - this.projectId = userProvidedProjectId || defaultProjectId; - - this.defaultBaseUrl_ = 'datastore.googleapis.com'; - this.determineBaseUrl_(options.apiEndpoint); - - this.options = extend( - { - libName: 'gccl', - libVersion: require('../package.json').version, - scopes: gapic.v1.DatastoreClient.scopes, - servicePath: this.baseUrl_, - port: is.number(this.port_) ? this.port_ : 443, - projectId: userProvidedProjectId, - }, - options - ); - if (this.customEndpoint_) { - this.options.sslCreds = grpc.credentials.createInsecure(); + static isDouble(value) { + return entity.isDsDouble(value); } - this.auth = new GoogleAuth(this.options); -} - -util.inherits(Datastore, DatastoreRequest); - -/** - * Helper function to get a Datastore Double object. - * - * @param {number} value The double value. - * @returns {object} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const threeDouble = datastore.double(3.0); - */ -Datastore.prototype.double = Datastore.double = function(value) { - return new entity.Double(value); -}; + isDouble(value) { + return Datastore.isDouble(value); + } -/** - * Helper function to check if something is a Datastore Double object. - * - * @param {*} value - * @returns {boolean} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * datastore.isDouble(0.42); // false - * datastore.isDouble(datastore.double(0.42)); // true - */ -Datastore.prototype.isDouble = Datastore.isDouble = function(value) { - return entity.isDsDouble(value); -}; + /** + * Helper function to get a Datastore Geo Point object. + * + * @param {object} coordinates Coordinate value. + * @param {number} coordinates.latitude Latitudinal value. + * @param {number} coordinates.longitude Longitudinal value. + * @returns {object} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { + * latitude: 40.6894, + * longitude: -74.0447 + * }; + * + * const geoPoint = datastore.geoPoint(coordinates); + */ + static geoPoint(coordinates) { + return new entity.GeoPoint(coordinates); + } -/** - * Helper function to get a Datastore Geo Point object. - * - * @param {object} coordinates Coordinate value. - * @param {number} coordinates.latitude Latitudinal value. - * @param {number} coordinates.longitude Longitudinal value. - * @returns {object} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const coordinates = { - * latitude: 40.6894, - * longitude: -74.0447 - * }; - * - * const geoPoint = datastore.geoPoint(coordinates); - */ -Datastore.prototype.geoPoint = Datastore.geoPoint = function(coordinates) { - return new entity.GeoPoint(coordinates); -}; + geoPoint(coordinates) { + return Datastore.geoPoint(coordinates); + } -/** - * Helper function to check if something is a Datastore Geo Point object. - * - * @param {*} value - * @returns {boolean} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const coordinates = { - * latitude: 0, - * longitude: 0 - * }; - * - * datastore.isGeoPoint(coordinates); // false - * datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true - */ -Datastore.prototype.isGeoPoint = Datastore.isGeoPoint = function(value) { - return entity.isDsGeoPoint(value); -}; + /** + * Helper function to check if something is a Datastore Geo Point object. + * + * @param {*} value + * @returns {boolean} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { + * latitude: 0, + * longitude: 0 + * }; + * + * datastore.isGeoPoint(coordinates); // false + * datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true + */ + static isGeoPoint(value) { + return entity.isDsGeoPoint(value); + } -/** - * Helper function to get a Datastore Integer object. - * - * This is also useful when using an ID outside the bounds of a JavaScript - * Number object. - * - * @param {number} value The integer value. - * @returns {object} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const sevenInteger = datastore.int(7); - * - * //- - * // Create an Int to support long Key IDs. - * //- - * const key = datastore.key([ - * 'Kind', - * datastore.int('100000000000001234') - * ]); - */ -Datastore.prototype.int = Datastore.int = function(value) { - return new entity.Int(value); -}; + isGeoPoint(value) { + return Datastore.isGeoPoint(value); + } -/** - * Helper function to check if something is a Datastore Integer object. - * - * @param {*} value - * @returns {boolean} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * datastore.isInt(42); // false - * datastore.isInt(datastore.int(42)); // true - */ -Datastore.prototype.isInt = Datastore.isInt = function(value) { - return entity.isDsInt(value); -}; + /** + * Helper function to get a Datastore Integer object. + * + * This is also useful when using an ID outside the bounds of a JavaScript + * Number object. + * + * @param {number} value The integer value. + * @returns {object} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const sevenInteger = datastore.int(7); + * + * //- + * // Create an Int to support long Key IDs. + * //- + * const key = datastore.key([ + * 'Kind', + * datastore.int('100000000000001234') + * ]); + */ + static int(value) { + return new entity.Int(value); + }; -/** - * Access the Key from an Entity object. - * - * @name Datastore.KEY - * @type {symbol} - */ -/** - * Access the Key from an Entity object. - * - * @name Datastore#KEY - * @type {symbol} - */ -Datastore.prototype.KEY = Datastore.KEY = entity.KEY_SYMBOL; + int(value) { + return Datastore.int(value); + } -/** - * This is one of three values which may be returned from - * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and - * {@link Query#run} as `info.moreResults`. - * - * There *may* be more results after the specified end cursor. - * - * @type {string} - */ -Datastore.prototype.MORE_RESULTS_AFTER_CURSOR = Datastore.MORE_RESULTS_AFTER_CURSOR = - 'MORE_RESULTS_AFTER_CURSOR'; + /** + * Helper function to check if something is a Datastore Integer object. + * + * @param {*} value + * @returns {boolean} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * datastore.isInt(42); // false + * datastore.isInt(datastore.int(42)); // true + */ + static isInt(value) { + return entity.isDsInt(value); + }; -/** - * This is one of three values which may be returned from - * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and - * {@link Query#run} as `info.moreResults`. - * - * There *may* be more results after the specified limit. - * - * @type {string} - */ -Datastore.prototype.MORE_RESULTS_AFTER_LIMIT = Datastore.MORE_RESULTS_AFTER_LIMIT = - 'MORE_RESULTS_AFTER_LIMIT'; + isInt(value) { + return Datastore.isInt(value); + } -/** - * This is one of three values which may be returned from - * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and - * {@link Query#run} as `info.moreResults`. - * - * There are no more results left to query for. - * - * @type {string} - */ -Datastore.prototype.NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS = - 'NO_MORE_RESULTS'; + /** + * Access the Key from an Entity object. + * + * @name Datastore.KEY + * @type {symbol} + */ + /** + * Access the Key from an Entity object. + * + * @name Datastore#KEY + * @type {symbol} + */ + static KEY = entity.KEY_SYMBOL; + KEY = Datastore.KEY; -/** - * Create a query for the specified kind. See {@link Query} for all - * of the available methods. - * - * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} - * @see {@link Query} - * - * @param {string} [namespace] Namespace. - * @param {string} kind The kind to query. - * @returns {Query} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const query = datastore.createQuery('Company'); - */ -Datastore.prototype.createQuery = function(namespace, kind) { - if (arguments.length < 2) { - kind = namespace; - namespace = this.namespace; - } - return new Query(this, namespace, arrify(kind)); -}; + /** + * This is one of three values which may be returned from + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. + * + * There *may* be more results after the specified end cursor. + * + * @type {string} + */ + static MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR'; + MORE_RESULTS_AFTER_CURSOR = Datastore.MORE_RESULTS_AFTER_CURSOR; -/** - * Helper to create a Key object, scoped to the instance's namespace by default. - * - * You may also specify a configuration object to define a namespace and path. - * - * @param {object|string|array} [options] Key path. To specify or override a namespace, - * you must use an object here to explicitly state it. - * @param {string|array} [options.path] Key path. - * @param {string} [options.namespace] Optional namespace. - * @returns {Key} A newly created Key from the options given. - * - * @example - * Create an incomplete key with a kind value of `Company`. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key('Company'); - * - * @example - * Create a complete key with a kind value of `Company` and id `123`. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key(['Company', 123]); - * - * @example - * If the ID integer is outside the bounds of a JavaScript Number object, create an Int. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key([ - * 'Company', - * datastore.int('100000000000001234') - * ]); - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * // Create a complete key with a kind value of `Company` and name `Google`. - * // Note: `id` is used for numeric identifiers and `name` is used otherwise. - * const key = datastore.key(['Company', 'Google']); - * - * @example - * Create a complete key from a provided namespace and path. - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key({ - * namespace: 'My-NS', - * path: ['Company', 123] - * }); - */ -Datastore.prototype.key = function(options) { - options = is.object(options) - ? options - : { - namespace: this.namespace, - path: arrify(options), - }; + /** + * This is one of three values which may be returned from + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. + * + * There *may* be more results after the specified limit. + * + * @type {string} + */ + static MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT'; + MORE_RESULTS_AFTER_LIMIT = Datastore.MORE_RESULTS_AFTER_LIMIT; - return new entity.Key(options); -}; + /** + * This is one of three values which may be returned from + * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and + * {@link Query#run} as `info.moreResults`. + * + * There are no more results left to query for. + * + * @type {string} + */ + static NO_MORE_RESULTS = 'NO_MORE_RESULTS'; + NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS; -/** - * Helper function to check if something is a Datastore Key object. - * - * @param {*} value - * @returns {boolean} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * datastore.isKey({path: ['Company', 123]}); // false - * datastore.isKey(datastore.key(['Company', 123])); // true - */ -Datastore.prototype.isKey = Datastore.isKey = function(value) { - return entity.isDsKey(value); -}; + /** + * Create a query for the specified kind. See {@link Query} for all + * of the available methods. + * + * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * @see {@link Query} + * + * @param {string} [namespace] Namespace. + * @param {string} kind The kind to query. + * @returns {Query} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const query = datastore.createQuery('Company'); + */ + createQuery(namespace, kind) { + if (arguments.length < 2) { + kind = namespace; + namespace = this.namespace; + } + return new Query(this, namespace, arrify(kind)); + }; -/** - * Create a new Transaction object. - * - * @param {object} [options] Configuration object. - * @param {string} [options.id] The ID of a previously run transaction. - * @param {boolean} [options.readOnly=false] A read-only transaction cannot - * modify entities. - * @returns {Transaction} - * - * @example - * const Datastore = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const transaction = datastore.transaction(); - */ -Datastore.prototype.transaction = function(options) { - return new Transaction(this, options); -}; + /** + * Helper to create a Key object, scoped to the instance's namespace by default. + * + * You may also specify a configuration object to define a namespace and path. + * + * @param {object|string|array} [options] Key path. To specify or override a namespace, + * you must use an object here to explicitly state it. + * @param {string|array} [options.path] Key path. + * @param {string} [options.namespace] Optional namespace. + * @returns {Key} A newly created Key from the options given. + * + * @example + * Create an incomplete key with a kind value of `Company`. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key('Company'); + * + * @example + * Create a complete key with a kind value of `Company` and id `123`. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 123]); + * + * @example + * If the ID integer is outside the bounds of a JavaScript Number object, create an Int. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key([ + * 'Company', + * datastore.int('100000000000001234') + * ]); + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * // Create a complete key with a kind value of `Company` and name `Google`. + * // Note: `id` is used for numeric identifiers and `name` is used otherwise. + * const key = datastore.key(['Company', 'Google']); + * + * @example + * Create a complete key from a provided namespace and path. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key({ + * namespace: 'My-NS', + * path: ['Company', 123] + * }); + */ + key(options) { + options = is.object(options) + ? options + : { + namespace: this.namespace, + path: arrify(options), + }; + return new entity.Key(options); + }; -/** - * Determine the appropriate endpoint to use for API requests. If not explicitly - * defined, check for the "DATASTORE_EMULATOR_HOST" environment variable, used - * to connect to a local Datastore server. - * - * @private - * - * @param {string} customApiEndpoint Custom API endpoint. - */ -Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { - let baseUrl = this.defaultBaseUrl_; - const leadingProtocol = new RegExp('^https*://'); - const trailingSlashes = new RegExp('/*$'); - const port = new RegExp(':(\\d+)'); - - if (customApiEndpoint) { - baseUrl = customApiEndpoint; - this.customEndpoint_ = true; - } else if (process.env.DATASTORE_EMULATOR_HOST) { - baseUrl = process.env.DATASTORE_EMULATOR_HOST; - this.customEndpoint_ = true; + /** + * Helper function to check if something is a Datastore Key object. + * + * @param {*} value + * @returns {boolean} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * datastore.isKey({path: ['Company', 123]}); // false + * datastore.isKey(datastore.key(['Company', 123])); // true + */ + static isKey(value) { + return entity.isDsKey(value); + }; + isKey(value) { + return Datastore.isKey(value); } - if (port.test(baseUrl)) { - this.port_ = Number(baseUrl.match(port)[1]); - } + /** + * Create a new Transaction object. + * + * @param {object} [options] Configuration object. + * @param {string} [options.id] The ID of a previously run transaction. + * @param {boolean} [options.readOnly=false] A read-only transaction cannot + * modify entities. + * @returns {Transaction} + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const transaction = datastore.transaction(); + */ + transaction(options) { + return new Transaction(this, options); + }; - this.baseUrl_ = baseUrl - .replace(leadingProtocol, '') - .replace(port, '') - .replace(trailingSlashes, ''); -}; + /** + * Determine the appropriate endpoint to use for API requests. If not explicitly + * defined, check for the "DATASTORE_EMULATOR_HOST" environment variable, used + * to connect to a local Datastore server. + * + * @private + * + * @param {string} customApiEndpoint Custom API endpoint. + */ + determineBaseUrl_(customApiEndpoint) { + let baseUrl = this.defaultBaseUrl_; + const leadingProtocol = new RegExp('^https*://'); + const trailingSlashes = new RegExp('/*$'); + const port = new RegExp(':(\\d+)'); + + if (customApiEndpoint) { + baseUrl = customApiEndpoint; + this.customEndpoint_ = true; + } else if (process.env.DATASTORE_EMULATOR_HOST) { + baseUrl = process.env.DATASTORE_EMULATOR_HOST; + this.customEndpoint_ = true; + } + + if (port.test(baseUrl)) { + this.port_ = Number(baseUrl.match(port)[1]); + } + + this.baseUrl_ = baseUrl + .replace(leadingProtocol, '') + .replace(port, '') + .replace(trailingSlashes, ''); + }; -/** - * {@link DatastoreRequest} class. - * - * @name Datastore.DatastoreRequest - * @see DatastoreRequest - * @type {constructor} - */ -Datastore.DatastoreRequest = DatastoreRequest; + /** + * {@link DatastoreRequest} class. + * + * @name Datastore.DatastoreRequest + * @see DatastoreRequest + * @type {constructor} + */ + DatastoreRequest = DatastoreRequest; -/** - * {@link Query} class. - * - * @name Datastore.Query - * @see Query - * @type {constructor} - */ -Datastore.Query = Query; + /** + * {@link Query} class. + * + * @name Datastore.Query + * @see Query + * @type {constructor} + */ + Query = Query; -/** - * {@link Transaction} class. - * - * @name Datastore.Transaction - * @see Transaction - * @type {constructor} - */ -Datastore.Transaction = Transaction; + /** + * {@link Transaction} class. + * + * @name Datastore.Transaction + * @see Transaction + * @type {constructor} + */ + Transaction = Transaction; +} + +export {Datastore}; /** * The default export of the `@google-cloud/datastore` package is the @@ -785,7 +810,7 @@ Datastore.Transaction = Transaction; * npm install --save @google-cloud/datastore * * @example Import the client library - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * @example Create a client that uses Application Default Credentials (ADC): * const datastore = new Datastore(); @@ -800,7 +825,6 @@ Datastore.Transaction = Transaction; * region_tag:datastore_quickstart * Full quickstart example: */ -module.exports = Datastore; /** * @name Datastore.v1 diff --git a/handwritten/nodejs-datastore/src/query.js b/handwritten/nodejs-datastore/src/query.ts similarity index 93% rename from handwritten/nodejs-datastore/src/query.js rename to handwritten/nodejs-datastore/src/query.ts index 511c72c1b56..b999e092586 100644 --- a/handwritten/nodejs-datastore/src/query.js +++ b/handwritten/nodejs-datastore/src/query.ts @@ -16,7 +16,7 @@ 'use strict'; -const arrify = require('arrify'); +import * as arrify from 'arrify'; /** * Build a Query object. @@ -33,11 +33,22 @@ const arrify = require('arrify'); * @param {string} kind Kind to query. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('AnimalNamespace', 'Lion'); */ class Query { + scope; + namespace?: string; + kinds; + filters; + orders; + groupByVal; + selectVal; + startVal; + endVal; + limitVal; + offsetVal; constructor(scope, namespace, kinds) { if (!kinds) { kinds = namespace; @@ -120,7 +131,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); * @@ -166,7 +177,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('MyKind'); * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); @@ -189,7 +200,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -214,7 +225,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * const groupedQuery = companyQuery.groupBy(['name', 'size']); @@ -236,7 +247,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -260,7 +271,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -283,7 +294,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -306,7 +317,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -327,7 +338,7 @@ class Query { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * @@ -363,7 +374,7 @@ class Query { * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); * @@ -408,7 +419,7 @@ class Query { * @returns {stream} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); * diff --git a/handwritten/nodejs-datastore/src/request.js b/handwritten/nodejs-datastore/src/request.ts similarity index 97% rename from handwritten/nodejs-datastore/src/request.js rename to handwritten/nodejs-datastore/src/request.ts index 2b71dbfe2c3..5b53b97a926 100644 --- a/handwritten/nodejs-datastore/src/request.js +++ b/handwritten/nodejs-datastore/src/request.ts @@ -16,15 +16,15 @@ 'use strict'; -const arrify = require('arrify'); -const {replaceProjectIdToken} = require('@google-cloud/projectify'); -const {promisifyAll} = require('@google-cloud/promisify'); +import * as arrify from 'arrify'; +import {replaceProjectIdToken} from '@google-cloud/projectify'; +import {promisifyAll} from '@google-cloud/promisify'; const concat = require('concat-stream'); -const extend = require('extend'); -const is = require('is'); -const {split} = require('split-array-stream'); -const streamEvents = require('stream-events'); -const through = require('through2'); +import * as extend from 'extend'; +import * as is from 'is'; +import {split} from 'split-array-stream'; +import * as streamEvents from 'stream-events'; +import * as through from 'through2'; // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -55,6 +55,12 @@ const CONSISTENCY_PROTO_CODE = { * @class */ class DatastoreRequest { + + id; + requests_; + requestCallbacks_; + datastore; + /** * Format a user's input to mutation methods. This will create a deep clone of * the input, as well as allow users to pass an object in the format of an @@ -223,7 +229,8 @@ class DatastoreRequest { } const makeRequest = keys => { - const reqOpts = { + // tslint:disable-next-line no-any + const reqOpts: any = { keys: keys, }; @@ -632,7 +639,8 @@ class DatastoreRequest { query = extend(true, new Query(), query); const makeRequest = query => { - const reqOpts = { + // tslint:disable-next-line no-any + const reqOpts: any = { query: entity.queryToQueryProto(query), }; @@ -666,7 +674,8 @@ class DatastoreRequest { return; } - const info = { + // tslint:disable-next-line no-any + const info: any = { moreResults: resp.batch.moreResults, }; @@ -918,7 +927,7 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - save(entities, gaxOptions, callback) { + save(entities, gaxOptions, callback?) { entities = arrify(entities); if (is.fn(gaxOptions)) { @@ -927,7 +936,7 @@ class DatastoreRequest { } const insertIndexes = {}; - const mutations = []; + const mutations: {}[] = []; const methods = { insert: true, update: true, @@ -940,7 +949,8 @@ class DatastoreRequest { .map(DatastoreRequest.prepareEntityObject_) .forEach((entityObject, index) => { const mutation = {}; - let entityProto = {}; + // tslint:disable-next-line no-any + let entityProto: any = {}; let method = 'upsert'; if (entityObject.method) { diff --git a/handwritten/nodejs-datastore/src/transaction.js b/handwritten/nodejs-datastore/src/transaction.ts similarity index 95% rename from handwritten/nodejs-datastore/src/transaction.js rename to handwritten/nodejs-datastore/src/transaction.ts index 9cc2b388098..64419797960 100644 --- a/handwritten/nodejs-datastore/src/transaction.js +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -16,10 +16,10 @@ 'use strict'; -const arrify = require('arrify'); -const {promisifyAll} = require('@google-cloud/promisify'); +import * as arrify from 'arrify'; +import {promisifyAll} from '@google-cloud/promisify'; const flatten = require('lodash.flatten'); -const is = require('is'); +import * as is from 'is'; const entity = require('./entity'); const Request = require('./request'); @@ -38,7 +38,7 @@ const Request = require('./request'); * @mixes module:datastore/request * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); */ @@ -103,7 +103,7 @@ class Transaction extends Request { * @param {object} callback.apiResponse The full API response. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -156,6 +156,8 @@ class Transaction extends Request { keys[stringifiedKey] = true; return true; } + + return false; }) // Group entities together by method: `save` mutations, then `delete`. Note: // `save` mutations being first is required to maintain order when assigning @@ -243,7 +245,7 @@ class Transaction extends Request { * @returns {Query} * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -279,7 +281,7 @@ class Transaction extends Request { * @param {Key|Key[]} key Datastore key object(s). * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -326,7 +328,7 @@ class Transaction extends Request { * @param {object} callback.apiResponse The full API response. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -349,7 +351,7 @@ class Transaction extends Request { * const apiResponse = data[0]; * }); */ - rollback(gaxOptions, callback) { + rollback(gaxOptions, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -388,7 +390,7 @@ class Transaction extends Request { * @param {object} callback.apiResponse The full API response. * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -429,7 +431,8 @@ class Transaction extends Request { options = options || {}; callback = callback || (() => {}); - const reqOpts = { + // tslint:disable-next-line no-any + const reqOpts: any = { transactionOptions: {}, }; @@ -490,7 +493,7 @@ class Transaction extends Request { * * @example * Save a single entity. - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -520,7 +523,7 @@ class Transaction extends Request { * }); * * @example - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * @@ -561,7 +564,7 @@ class Transaction extends Request { * * @example * Save multiple entities at once. - * const Datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); * const companyKey = datastore.key(['Company', 123]); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index ab66b76d86b..4b649f3cacf 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -19,7 +19,7 @@ const gax = require('google-gax'); const merge = require('lodash.merge'); const path = require('path'); -const VERSION = require('../../package.json').version; +const VERSION = require('../../../package.json').version; /** * Each RPC normalizes the partition IDs of the keys in its input entities, @@ -213,7 +213,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -283,7 +283,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -338,7 +338,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -409,7 +409,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -465,7 +465,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -522,7 +522,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -581,7 +581,7 @@ class DatastoreClient { * * @example * - * const datastore = require('@google-cloud/datastore'); + * const {Datastore} = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -613,4 +613,5 @@ class DatastoreClient { } } + module.exports = DatastoreClient; diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index d30213c529b..6d12e60f3f5 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -1,15 +1,11 @@ import synthtool as s import synthtool.gcp as gcp import logging -from pathlib import Path import subprocess logging.basicConfig(level=logging.DEBUG) gapic = gcp.GAPICGenerator() -common_templates = gcp.CommonTemplates() - -# tasks has two product names, and a poorly named artman yaml version = 'v1' library = gapic.node_library( 'datastore', version, @@ -20,11 +16,13 @@ library, excludes=['package.json', 'README.md', 'src/index.js']) -templates = common_templates.node_library(package_name="@google-cloud/datastore") -s.copy(templates) +# Update path discovery due to build/ dir and TypeScript conversion. +s.replace("src/v1/datastore_client.js", "../../package.json", "../../../package.json") +common_templates = gcp.CommonTemplates() +templates = common_templates.node_library(source_location="build/src") +s.copy(templates) # Node.js specific cleanup subprocess.run(['npm', 'install']) -subprocess.run(['npm', 'run', 'prettier']) -subprocess.run(['npm', 'run', 'lint']) +subprocess.run(['npm', 'run', 'fix']) diff --git a/handwritten/nodejs-datastore/system-test/datastore.js b/handwritten/nodejs-datastore/system-test/datastore.ts similarity index 98% rename from handwritten/nodejs-datastore/system-test/datastore.js rename to handwritten/nodejs-datastore/system-test/datastore.ts index 3e1797c5810..2758d186094 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.js +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -16,16 +16,16 @@ 'use strict'; -const assert = require('assert'); -const async = require('async'); -const Datastore = require('../'); +import * as assert from 'assert'; +import * as async from 'async'; +const {Datastore} = require('../src'); const entity = require('../src/entity.js'); describe('Datastore', () => { - const testKinds = []; - const datastore = new Datastore({}); + const testKinds: {}[] = []; + const datastore = new Datastore(); // Override the Key method so we can track what keys are created during the - // tests. They are then deleted in the `after` hook. + // tests. They are then deleted in the `after` hook. const key = datastore.key; datastore.key = function() { const keyObject = key.apply(this, arguments); @@ -322,7 +322,7 @@ describe('Datastore', () => { const post2 = { title: 'How to make the perfect homemade pasta', tags: ['pasta', 'homemade'], - publishedAt: Date('2001-01-01T00:00:00.000Z'), + publishedAt: new Date('2001-01-01T00:00:00.000Z'), author: 'Silvano', isDraft: false, wordCount: 450, diff --git a/handwritten/nodejs-datastore/test/entity.js b/handwritten/nodejs-datastore/test/entity.ts similarity index 99% rename from handwritten/nodejs-datastore/test/entity.js rename to handwritten/nodejs-datastore/test/entity.ts index eebeb7bd44c..7d36c5e99c1 100644 --- a/handwritten/nodejs-datastore/test/entity.js +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -16,10 +16,10 @@ 'use strict'; -const assert = require('assert'); -const extend = require('extend'); +import * as assert from 'assert'; +import * as extend from 'extend'; -const Datastore = require('../'); +const Datastore = require('../src').Datastore; describe('entity', function() { let entity; diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index dc700ab76f9..a2b2746ee0d 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -69,7 +69,11 @@ describe('DatastoreClient', () => { }; // Mock Grpc layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); + client._innerApiCalls.lookup = mockSimpleGrpcMethod( + request, + null, + error + ); client.lookup(request, (err, response) => { assert(err instanceof Error); @@ -254,7 +258,11 @@ describe('DatastoreClient', () => { }; // Mock Grpc layer - client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); + client._innerApiCalls.commit = mockSimpleGrpcMethod( + request, + null, + error + ); client.commit(request, (err, response) => { assert(err instanceof Error); @@ -447,6 +455,7 @@ describe('DatastoreClient', () => { }); }); }); + }); function mockSimpleGrpcMethod(expectedRequest, response, error) { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.ts b/handwritten/nodejs-datastore/test/gapic-v1.ts new file mode 100644 index 00000000000..4ed60a55b69 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-v1.ts @@ -0,0 +1,464 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +import * as assert from 'assert'; + +const datastoreModule = require('../src'); + +const FAKE_STATUS_CODE = 1; +const error = new Error(); +// tslint:disable-next-line no-any +(error as any).code = FAKE_STATUS_CODE; + +describe('DatastoreClient', () => { + describe('lookup', () => { + it('invokes lookup without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + const expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.lookup = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.lookup(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes lookup with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); + + client.lookup(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('runQuery', () => { + it('invokes runQuery without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { + projectId: projectId, + partitionId: partitionId, + }; + + // Mock response + const expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.runQuery = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.runQuery(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes runQuery with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const partitionId = {}; + const request = { + projectId: projectId, + partitionId: partitionId, + }; + + // Mock Grpc layer + client._innerApiCalls.runQuery = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.runQuery(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('beginTransaction', () => { + it('invokes beginTransaction without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const request = { + projectId: projectId, + }; + + // Mock response + const transaction = '-34'; + const expectedResponse = { + transaction: transaction, + }; + + // Mock Grpc layer + client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.beginTransaction(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes beginTransaction with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const request = { + projectId: projectId, + }; + + // Mock Grpc layer + client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.beginTransaction(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('commit', () => { + it('invokes commit without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { + projectId: projectId, + mode: mode, + mutations: mutations, + }; + + // Mock response + const indexUpdates = 1425228195; + const expectedResponse = { + indexUpdates: indexUpdates, + }; + + // Mock Grpc layer + client._innerApiCalls.commit = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.commit(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes commit with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const mode = 'MODE_UNSPECIFIED'; + const mutations = []; + const request = { + projectId: projectId, + mode: mode, + mutations: mutations, + }; + + // Mock Grpc layer + client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); + + client.commit(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('rollback', () => { + it('invokes rollback without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { + projectId: projectId, + transaction: transaction, + }; + + // Mock response + const expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.rollback = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.rollback(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes rollback with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const transaction = '-34'; + const request = { + projectId: projectId, + transaction: transaction, + }; + + // Mock Grpc layer + client._innerApiCalls.rollback = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.rollback(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('allocateIds', () => { + it('invokes allocateIds without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + const expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.allocateIds(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes allocateIds with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.allocateIds(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); + + describe('reserveIds', () => { + it('invokes reserveIds without error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock response + const expectedResponse = {}; + + // Mock Grpc layer + client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( + request, + expectedResponse + ); + + client.reserveIds(request, (err, response) => { + assert.ifError(err); + assert.deepStrictEqual(response, expectedResponse); + done(); + }); + }); + + it('invokes reserveIds with error', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + + // Mock request + const projectId = 'projectId-1969970175'; + const keys = []; + const request = { + projectId: projectId, + keys: keys, + }; + + // Mock Grpc layer + client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( + request, + null, + error + ); + + client.reserveIds(request, (err, response) => { + assert(err instanceof Error); + assert.strictEqual(err.code, FAKE_STATUS_CODE); + assert(typeof response === 'undefined'); + done(); + }); + }); + }); +}); + +function mockSimpleGrpcMethod(expectedRequest, response, error?) { + return function(actualRequest, options, callback) { + assert.deepStrictEqual(actualRequest, expectedRequest); + if (error) { + callback(error); + } else if (response) { + callback(null, response); + } else { + callback(null); + } + }; +} diff --git a/handwritten/nodejs-datastore/test/index.js b/handwritten/nodejs-datastore/test/index.ts similarity index 95% rename from handwritten/nodejs-datastore/test/index.js rename to handwritten/nodejs-datastore/test/index.ts index c506d57802a..1748ab69fce 100644 --- a/handwritten/nodejs-datastore/test/index.js +++ b/handwritten/nodejs-datastore/test/index.ts @@ -16,14 +16,15 @@ 'use strict'; -const assert = require('assert'); -const extend = require('extend'); -const gax = new require('google-gax'); -const proxyquire = require('proxyquire'); +import * as assert from 'assert'; +import * as extend from 'extend'; +import * as gax from 'google-gax'; +import * as proxyquire from 'proxyquire'; const v1 = require('../src/v1/index.js'); -const fakeEntity = { +// tslint:disable-next-line no-any +const fakeEntity: any = { KEY_SYMBOL: Symbol('fake key symbol'), Int: function(value) { this.value = value; @@ -72,7 +73,7 @@ const fakeGoogleGax = { ); }, }, - }; + } as gax.GrpcModule; } }, }; @@ -106,7 +107,7 @@ describe('Datastore', function() { }; before(function() { - Datastore = proxyquire('../', { + Datastore = proxyquire('../src', { './entity.js': fakeEntity, './query.js': FakeQuery, './transaction.js': FakeTransaction, @@ -115,7 +116,7 @@ describe('Datastore', function() { GoogleAuth: fakeGoogleAuth, }, 'google-gax': fakeGoogleGax, - }); + }).Datastore; }); beforeEach(function() { @@ -142,16 +143,10 @@ describe('Datastore', function() { }); it('should export GAX client', function() { - assert.strictEqual(Datastore.v1, FakeV1); + assert.ok(require('../src').v1); }); describe('instantiation', function() { - it('should work without new', function() { - assert.doesNotThrow(function() { - Datastore({projectId: PROJECT_ID}); - }); - }); - it('should initialize an empty Client map', function() { assert(datastore.clients_ instanceof Map); assert.strictEqual(datastore.clients_.size, 0); @@ -225,7 +220,7 @@ describe('Datastore', function() { extend( { libName: 'gccl', - libVersion: require('../package.json').version, + libVersion: require('../../package.json').version, scopes: v1.DatastoreClient.scopes, servicePath: datastore.baseUrl_, port: 443, @@ -288,7 +283,9 @@ describe('Datastore', function() { }); it('should also be on the prototype', function() { - assert.strictEqual(datastore.double, Datastore.double); + const aDouble = 7.0; + const double = datastore.double(aDouble); + assert.strictEqual(double.value, aDouble); }); }); @@ -300,7 +297,9 @@ describe('Datastore', function() { }); it('should also be on the prototype', function() { - assert.strictEqual(datastore.geoPoint, Datastore.geoPoint); + const aGeoPoint = {latitude: 24, longitude: 88}; + const geoPoint = datastore.geoPoint(aGeoPoint); + assert.strictEqual(geoPoint.value, aGeoPoint); }); }); @@ -312,7 +311,9 @@ describe('Datastore', function() { }); it('should also be on the prototype', function() { - assert.strictEqual(datastore.int, Datastore.int); + const anInt = 7; + const int = datastore.int(anInt); + assert.strictEqual(int.value, anInt); }); }); diff --git a/handwritten/nodejs-datastore/test/query.js b/handwritten/nodejs-datastore/test/query.ts similarity index 99% rename from handwritten/nodejs-datastore/test/query.js rename to handwritten/nodejs-datastore/test/query.ts index fbe0648cbe0..c764e1b7afb 100644 --- a/handwritten/nodejs-datastore/test/query.js +++ b/handwritten/nodejs-datastore/test/query.ts @@ -16,7 +16,7 @@ 'use strict'; -const assert = require('assert'); +import * as assert from 'assert'; describe('Query', function() { const SCOPE = {}; diff --git a/handwritten/nodejs-datastore/test/request.js b/handwritten/nodejs-datastore/test/request.ts similarity index 99% rename from handwritten/nodejs-datastore/test/request.js rename to handwritten/nodejs-datastore/test/request.ts index 7fc1af1ba93..240379bf95b 100644 --- a/handwritten/nodejs-datastore/test/request.js +++ b/handwritten/nodejs-datastore/test/request.ts @@ -16,12 +16,12 @@ 'use strict'; -const assert = require('assert'); -const extend = require('extend'); -const is = require('is'); -const proxyquire = require('proxyquire'); +import * as assert from 'assert'; +import * as extend from 'extend'; +import * as is from 'is'; +import * as proxyquire from 'proxyquire'; const sinon = require('sinon'); -const through = require('through2'); +import * as through from 'through2'; const pfy = require('@google-cloud/promisify'); const pjy = require('@google-cloud/projectify'); @@ -163,7 +163,7 @@ describe('Request', function() { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'allocateIds'); - const expectedKeys = []; + const expectedKeys: {}[] = []; expectedKeys.length = ALLOCATIONS; expectedKeys.fill(keyProto); @@ -422,7 +422,8 @@ describe('Request', function() { const entities = apiResponseWithMultiEntities.found; entities.push(entities[0]); - const apiResponseWithDeferred = extend(true, {}, apiResponse); + // tslint:disable-next-line no-any + const apiResponseWithDeferred = extend(true, {}, apiResponse) as any; apiResponseWithDeferred.deferred = [ apiResponseWithDeferred.found[0].entity.key, ]; @@ -861,7 +862,7 @@ describe('Request', function() { return array; }); - const entities = []; + const entities: {}[] = []; request .runQueryStream({}) @@ -960,7 +961,7 @@ describe('Request', function() { return queryProto; }); - const entities = []; + const entities: {}[] = []; let info; request @@ -1406,7 +1407,7 @@ describe('Request', function() { const incompleteKey2 = new entity.Key({path: ['Incomplete']}); const completeKey = new entity.Key({path: ['Complete', 'Key']}); - const keyProtos = []; + const keyProtos: {}[] = []; const ids = [1, 2]; const response = { @@ -1643,7 +1644,8 @@ describe('Request', function() { it('should replace the project ID token', function(done) { const replacedReqOpts = {}; - const expectedReqOpts = extend({}, CONFIG.reqOpts); + // tslint:disable-next-line no-any + const expectedReqOpts: any = extend({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; pjyOverride = function(reqOpts, projectId) { diff --git a/handwritten/nodejs-datastore/test/transaction.js b/handwritten/nodejs-datastore/test/transaction.ts similarity index 96% rename from handwritten/nodejs-datastore/test/transaction.js rename to handwritten/nodejs-datastore/test/transaction.ts index 119be065829..dde73ab4746 100644 --- a/handwritten/nodejs-datastore/test/transaction.js +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -16,12 +16,12 @@ 'use strict'; -const arrify = require('arrify'); -const assert = require('assert'); +import * as arrify from 'arrify'; +import * as assert from 'assert'; const entity = require('../src/entity.js'); -const extend = require('extend'); -const proxyquire = require('proxyquire'); -const pfy = require('@google-cloud/promisify'); +import * as extend from 'extend'; +import * as proxyquire from 'proxyquire'; +import * as pfy from '@google-cloud/promisify'; let promisified = false; const fakePfy = extend({}, pfy, { @@ -34,7 +34,8 @@ const fakePfy = extend({}, pfy, { }, }); -const DatastoreRequestOverride = { +// tslint:disable-next-line no-any +const DatastoreRequestOverride: any = { delete: function() {}, save: function() {}, }; @@ -119,7 +120,8 @@ describe('Transaction', function() { }); it('should localize request function', function(done) { - const fakeDataset = { + // tslint:disable-next-line no-any + const fakeDataset: any = { request_: { bind: function(context) { assert.strictEqual(context, fakeDataset); @@ -230,7 +232,7 @@ describe('Transaction', function() { transaction.delete(deleteArg2); transaction.save(saveArg2); - const args = []; + const args: {}[] = []; let deleteCalled = 0; DatastoreRequestOverride.delete = function() { @@ -362,9 +364,9 @@ describe('Transaction', function() { describe('delete', function() { it('should push entities into a queue', function() { const keys = [ - key('Product', 123), - key('Product', 234), - key('Product', 345), + key('Product123'), + key('Product234'), + key('Product345'), ]; transaction.delete(keys); @@ -611,9 +613,9 @@ describe('Transaction', function() { describe('save', function() { it('should push entities into a queue', function() { const entities = [ - {key: key('Product', 123), data: 123}, - {key: key('Product', 234), data: 234}, - {key: key('Product', 345), data: 345}, + {key: key('Product123'), data: 123}, + {key: key('Product234'), data: 234}, + {key: key('Product345'), data: 345}, ]; transaction.save(entities); diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json new file mode 100644 index 00000000000..1942ae08fa2 --- /dev/null +++ b/handwritten/nodejs-datastore/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./node_modules/gts/tsconfig-google.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "build", + "noImplicitAny": false, + "noImplicitThis": false + }, + "include": [ + "src/*.ts", + "test/*.ts", + "system-test/*.ts" + ] +} diff --git a/handwritten/nodejs-datastore/tslint.json b/handwritten/nodejs-datastore/tslint.json new file mode 100644 index 00000000000..617dc975bae --- /dev/null +++ b/handwritten/nodejs-datastore/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "gts/tslint.json" +} From fd9ad28694e883179c99437b2112b1553fb87ce6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 8 Nov 2018 08:43:33 -0800 Subject: [PATCH 274/820] chore(deps): update dependency @types/is to v0.0.21 (#240) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d0c8caa39a0..efc22804dd3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -86,7 +86,7 @@ "@types/arrify": "^1.0.4", "@types/async": "^2.0.50", "@types/extend": "^3.0.0", - "@types/is": "0.0.20", + "@types/is": "0.0.21", "@types/mocha": "^5.2.5", "@types/proxyquire": "^1.3.28", "@types/sinon": "^5.0.5", From d47952d8b97f2a2277f2f597cd547151b426ca66 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 9 Nov 2018 10:01:31 -0800 Subject: [PATCH 275/820] chore: drop contributors from multiple places (#241) --- handwritten/nodejs-datastore/.mailmap | 6 ------ handwritten/nodejs-datastore/CONTRIBUTORS | 25 ----------------------- handwritten/nodejs-datastore/package.json | 22 -------------------- 3 files changed, 53 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.mailmap delete mode 100644 handwritten/nodejs-datastore/CONTRIBUTORS diff --git a/handwritten/nodejs-datastore/.mailmap b/handwritten/nodejs-datastore/.mailmap deleted file mode 100644 index 6b58e7bf4cb..00000000000 --- a/handwritten/nodejs-datastore/.mailmap +++ /dev/null @@ -1,6 +0,0 @@ -Jason Dobry Jason Dobry -Jason Dobry Jason Dobry -Jun Mukai Jun Mukai -Luke Sneeringer -Stephen Sawchuk Stephen -Stephen Sawchuk Stephen Sawchuk diff --git a/handwritten/nodejs-datastore/CONTRIBUTORS b/handwritten/nodejs-datastore/CONTRIBUTORS deleted file mode 100644 index 3c498cd5818..00000000000 --- a/handwritten/nodejs-datastore/CONTRIBUTORS +++ /dev/null @@ -1,25 +0,0 @@ -# The names of individuals who have contributed to this project. -# -# Names are formatted as: -# name -# -Ace Nassri -Alexander Fenster -Ali Ijaz Sheikh -Dave Gramlich -Dominic Kramer -Eric Uldall -Geoffrey Gowan -Jason Dobry -Jun Mukai -Luke Sneeringer -Luke Sneeringer -Patrick Costello -Philip Irri -Song Wang -Stephen Sawchuk -Tim Swast -Walter Poupore -antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ -greenkeeper[bot] -tcrognon diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index efc22804dd3..876e17e8691 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -28,28 +28,6 @@ "google datastore", "datastore" ], - "contributors": [ - "Ace Nassri ", - "Alexander Fenster ", - "Ali Ijaz Sheikh ", - "Dave Gramlich ", - "Dominic Kramer ", - "Eric Uldall ", - "Geoffrey Gowan ", - "Jason Dobry ", - "Jun Mukai ", - "Luke Sneeringer ", - "Luke Sneeringer ", - "Patrick Costello ", - "Philip Irri ", - "Song Wang ", - "Stephen Sawchuk ", - "Tim Swast ", - "Walter Poupore ", - "antoine beauᵛᵃᴵˢ⁻lacᵃˢˢᵉ ", - "greenkeeper[bot] ", - "tcrognon " - ], "scripts": { "docs": "jsdoc -c .jsdoc.js", "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", From 3c8d56a5f3726a2dfff8528fef8193d34ac0c34f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sat, 10 Nov 2018 10:50:34 -0800 Subject: [PATCH 276/820] chore(deps): update dependency @google-cloud/nodejs-repo-tools to v3 (#243) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 876e17e8691..70e41fd36cb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -60,7 +60,7 @@ "through2": "^3.0.0" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^2.3.0", + "@google-cloud/nodejs-repo-tools": "^3.0.0", "@types/arrify": "^1.0.4", "@types/async": "^2.0.50", "@types/extend": "^3.0.0", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 76e1e3895dc..3df4cace8e2 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -19,7 +19,7 @@ "yargs": "^12.0.1" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^2.3.0", + "@google-cloud/nodejs-repo-tools": "^3.0.0", "ava": "^0.25.0", "nyc": "^13.0.0", "proxyquire": "^2.0.1" From 4b61eeadd2e7460372050482d8baacd5d6c11c99 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 12 Nov 2018 15:10:53 -0800 Subject: [PATCH 277/820] refactor(ts): use es module imports (#244) --- handwritten/nodejs-datastore/package.json | 3 +- handwritten/nodejs-datastore/src/entity.ts | 7 +- handwritten/nodejs-datastore/src/index.ts | 35 +- handwritten/nodejs-datastore/src/query.ts | 14 +- handwritten/nodejs-datastore/src/request.ts | 23 +- .../nodejs-datastore/src/transaction.ts | 27 +- .../system-test/.eslintrc.yml | 6 - .../nodejs-datastore/system-test/datastore.ts | 6 +- handwritten/nodejs-datastore/test/entity.ts | 7 +- handwritten/nodejs-datastore/test/gapic-v1.ts | 464 ------------------ handwritten/nodejs-datastore/test/index.ts | 11 +- handwritten/nodejs-datastore/test/query.ts | 4 +- handwritten/nodejs-datastore/test/request.ts | 36 +- .../nodejs-datastore/test/transaction.ts | 24 +- 14 files changed, 95 insertions(+), 572 deletions(-) delete mode 100644 handwritten/nodejs-datastore/system-test/.eslintrc.yml delete mode 100644 handwritten/nodejs-datastore/test/gapic-v1.ts diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 70e41fd36cb..c1167db0b98 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -40,7 +40,7 @@ "system-test": "mocha build/system-test --timeout 600000", "fix": "eslint 'samples/*.js' 'samples/**/*.js' --fix", "clean": "gts clean", - "compile": "tsc -p . && cp -r src/v1/ build/src/v1/ && cp -r protos build/", + "compile": "tsc -p . && cp -r src/v1/ build/src/v1/ && cp -r protos build/ && cp test/*.js build/test", "prepare": "npm run compile", "pretest": "npm run compile" }, @@ -53,7 +53,6 @@ "google-auth-library": "^2.0.0", "google-gax": "^0.20.0", "is": "^3.2.1", - "lodash.flatten": "^4.4.0", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.4", diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 35715551b33..6eb43bf19be 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -14,13 +14,12 @@ * limitations under the License. */ -'use strict'; - import * as arrify from 'arrify'; import * as extend from 'extend'; import * as is from 'is'; -const entity = module.exports; +// tslint:disable-next-line no-any +const entity: any = {}; class InvalidKeyError extends Error { constructor(opts) { @@ -875,3 +874,5 @@ function queryToQueryProto(query) { } entity.queryToQueryProto = queryToQueryProto; + +export {entity}; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index ec010bb1ef4..8300587696e 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -36,19 +36,17 @@ * @namespace google.type */ -'use strict'; - import * as arrify from 'arrify'; -import * as extend from 'extend'; -const gax = require('google-gax'); -const {grpc} = new gax.GrpcClient(); +import {GrpcClient, GrpcClientOptions} from 'google-gax'; import {GoogleAuth} from 'google-auth-library'; import * as is from 'is'; -const DatastoreRequest = require('./request.js'); -const entity = require('./entity.js'); -const Query = require('./query.js'); -const Transaction = require('./transaction.js'); +import {DatastoreRequest} from './request'; +import {entity} from './entity'; +import {Query} from './query'; +import {Transaction} from './transaction'; + +const {grpc} = new GrpcClient({} as GrpcClientOptions); // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -380,7 +378,16 @@ const gapic = Object.freeze({ * }); */ class Datastore extends DatastoreRequest { - constructor(options) { + clients_; + namespace; + projectId: string; + defaultBaseUrl_: string; + options; + baseUrl_?: string; + port_?: number; + customEndpoint_?: boolean; + auth: GoogleAuth; + constructor(options?) { super(); options = options || {}; this.clients_ = new Map(); @@ -405,7 +412,7 @@ class Datastore extends DatastoreRequest { this.defaultBaseUrl_ = 'datastore.googleapis.com'; this.determineBaseUrl_(options.apiEndpoint); - this.options = extend( + this.options = Object.assign( { libName: 'gccl', libVersion: require('../../package.json').version, @@ -631,7 +638,7 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); */ - createQuery(namespace, kind) { + createQuery(namespace: string, kind?: string) { if (arguments.length < 2) { kind = namespace; namespace = this.namespace; @@ -730,7 +737,7 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const transaction = datastore.transaction(); */ - transaction(options) { + transaction(options?) { return new Transaction(this, options); }; @@ -758,7 +765,7 @@ class Datastore extends DatastoreRequest { } if (port.test(baseUrl)) { - this.port_ = Number(baseUrl.match(port)[1]); + this.port_ = Number(baseUrl.match(port)![1]); } this.baseUrl_ = baseUrl diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index b999e092586..e88ea3d5d12 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -'use strict'; - import * as arrify from 'arrify'; /** @@ -49,7 +47,7 @@ class Query { endVal; limitVal; offsetVal; - constructor(scope, namespace, kinds) { + constructor(scope?, namespace?, kinds?) { if (!kinds) { kinds = namespace; namespace = null; @@ -154,7 +152,7 @@ class Query { * const key = datastore.key(['Company', 'Google']); * const keyQuery = query.filter('__key__', key); */ - filter(property, operator, value) { + filter(property: string, operator: string, value?) { if (arguments.length === 2) { value = operator; operator = '='; @@ -212,7 +210,7 @@ class Query { * descending: true * }); */ - order(property, options) { + order(property: string, options?) { const sign = options && options.descending ? '-' : '+'; this.orders.push({name: property, sign: sign}); return this; @@ -404,9 +402,9 @@ class Query { * const entities = data[0]; * }); */ - run() { + run(...argy) { const query = this; - const args = [query].concat([].slice.call(arguments)); + const args = [query].concat(argy); return this.scope.runQuery.apply(this.scope, args); } @@ -455,4 +453,4 @@ class Query { * @name module:@google-cloud/datastore.Query * @see Query */ -module.exports = Query; +export {Query}; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 5b53b97a926..29f228c19ec 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -'use strict'; - import * as arrify from 'arrify'; import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisifyAll} from '@google-cloud/promisify'; @@ -31,8 +29,9 @@ const gapic = Object.freeze({ v1: require('./v1'), }); -const entity = require('./entity'); -const Query = require('./query'); +import {entity} from './entity'; +import {Query} from './query'; +import { Datastore } from '.'; /** * A map of read consistency values to proto codes. @@ -59,7 +58,7 @@ class DatastoreRequest { id; requests_; requestCallbacks_; - datastore; + datastore!: Datastore; /** * Format a user's input to mutation methods. This will create a deep clone of @@ -221,7 +220,7 @@ class DatastoreRequest { * // All entities retrieved. * }); */ - createReadStream(keys, options) { + createReadStream(keys, options?) { options = options || {}; keys = arrify(keys).map(entity.keyToKeyProto); if (keys.length === 0) { @@ -331,7 +330,7 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - delete(keys, gaxOptions, callback) { + delete(keys, gaxOptions, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -448,7 +447,7 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - get(keys, options, callback) { + get(keys, options, callback?) { if (is.fn(options)) { callback = options; options = {}; @@ -581,7 +580,7 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - runQuery(query, options, callback) { + runQuery(query, options, callback?) { if (is.fn(options)) { callback = options; options = {}; @@ -634,7 +633,7 @@ class DatastoreRequest { * this.end(); * }); */ - runQueryStream(query, options) { + runQueryStream(query, options?) { options = options || {}; query = extend(true, new Query(), query); @@ -1157,7 +1156,7 @@ class DatastoreRequest { ); } const gaxClient = datastore.clients_.get(clientName); - reqOpts = replaceProjectIdToken(reqOpts, projectId); + reqOpts = replaceProjectIdToken(reqOpts, projectId!); const gaxOpts = extend(true, {}, config.gaxOpts, { headers: { 'google-cloud-resource-prefix': `projects/${projectId}`, @@ -1180,4 +1179,4 @@ promisifyAll(DatastoreRequest); * @name module:@google-cloud/datastore.DatastoreRequest * @see DatastoreRequest */ -module.exports = DatastoreRequest; +export {DatastoreRequest}; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 64419797960..6c195fda3d4 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -14,15 +14,12 @@ * limitations under the License. */ -'use strict'; - import * as arrify from 'arrify'; import {promisifyAll} from '@google-cloud/promisify'; -const flatten = require('lodash.flatten'); import * as is from 'is'; -const entity = require('./entity'); -const Request = require('./request'); +import {entity} from './entity'; +import {DatastoreRequest} from './request'; /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -42,7 +39,13 @@ const Request = require('./request'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); */ -class Transaction extends Request { +class Transaction extends DatastoreRequest { + projectId: string; + namespace: string; + readOnly: boolean; + request; + modifiedEntities_; + skipCommit?: boolean; constructor(datastore, options) { super(); /** @@ -120,7 +123,7 @@ class Transaction extends Request { * const apiResponse = data[0]; * }); */ - commit(gaxOptions, callback) { + commit(gaxOptions, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -193,13 +196,13 @@ class Transaction extends Request { .forEach(modifiedEntity => { const method = modifiedEntity.method; const args = modifiedEntity.args.reverse(); - Request.prototype[method].call(this, args, () => {}); + DatastoreRequest.prototype[method].call(this, args, () => {}); }); // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. const reqOpts = { - mutations: flatten(this.requests_.map(x => x.mutations)), + mutations: this.requests_.map(x => x.mutations).reduce((a, b) => a.concat(b), []), }; this.request_( @@ -270,7 +273,7 @@ class Transaction extends Request { * }); * }); */ - createQuery() { + createQuery(namespace: string, kind?: string) { return this.datastore.createQuery.apply(this, arguments); } @@ -422,7 +425,7 @@ class Transaction extends Request { * const apiResponse = data[1]; * }); */ - run(options, callback) { + run(options, callback?) { if (is.fn(options)) { callback = options; options = {}; @@ -624,4 +627,4 @@ promisifyAll(Transaction, { * @name module:@google-cloud/datastore.Transaction * @see Transaction */ -module.exports = Transaction; +export {Transaction}; diff --git a/handwritten/nodejs-datastore/system-test/.eslintrc.yml b/handwritten/nodejs-datastore/system-test/.eslintrc.yml deleted file mode 100644 index 2e6882e46d2..00000000000 --- a/handwritten/nodejs-datastore/system-test/.eslintrc.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -env: - mocha: true -rules: - node/no-unpublished-require: off - no-console: off diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 2758d186094..706cdaaaf15 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -14,12 +14,10 @@ * limitations under the License. */ -'use strict'; - import * as assert from 'assert'; import * as async from 'async'; -const {Datastore} = require('../src'); -const entity = require('../src/entity.js'); +import {Datastore} from '../src'; +import {entity} from '../src/entity'; describe('Datastore', () => { const testKinds: {}[] = []; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 7d36c5e99c1..63e074a4766 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -14,19 +14,16 @@ * limitations under the License. */ -'use strict'; - import * as assert from 'assert'; import * as extend from 'extend'; - -const Datastore = require('../src').Datastore; +import {Datastore} from '../src'; describe('entity', function() { let entity; beforeEach(function() { delete require.cache[require.resolve('../src/entity.js')]; - entity = require('../src/entity.js'); + entity = require('../src/entity.js').entity; }); describe('KEY_SYMBOL', function() { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.ts b/handwritten/nodejs-datastore/test/gapic-v1.ts deleted file mode 100644 index 4ed60a55b69..00000000000 --- a/handwritten/nodejs-datastore/test/gapic-v1.ts +++ /dev/null @@ -1,464 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -import * as assert from 'assert'; - -const datastoreModule = require('../src'); - -const FAKE_STATUS_CODE = 1; -const error = new Error(); -// tslint:disable-next-line no-any -(error as any).code = FAKE_STATUS_CODE; - -describe('DatastoreClient', () => { - describe('lookup', () => { - it('invokes lookup without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock response - const expectedResponse = {}; - - // Mock Grpc layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.lookup(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes lookup with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); - - client.lookup(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('runQuery', () => { - it('invokes runQuery without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const partitionId = {}; - const request = { - projectId: projectId, - partitionId: partitionId, - }; - - // Mock response - const expectedResponse = {}; - - // Mock Grpc layer - client._innerApiCalls.runQuery = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.runQuery(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes runQuery with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const partitionId = {}; - const request = { - projectId: projectId, - partitionId: partitionId, - }; - - // Mock Grpc layer - client._innerApiCalls.runQuery = mockSimpleGrpcMethod( - request, - null, - error - ); - - client.runQuery(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('beginTransaction', () => { - it('invokes beginTransaction without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - - // Mock response - const transaction = '-34'; - const expectedResponse = { - transaction: transaction, - }; - - // Mock Grpc layer - client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.beginTransaction(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes beginTransaction with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - - // Mock Grpc layer - client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( - request, - null, - error - ); - - client.beginTransaction(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('commit', () => { - it('invokes commit without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; - const request = { - projectId: projectId, - mode: mode, - mutations: mutations, - }; - - // Mock response - const indexUpdates = 1425228195; - const expectedResponse = { - indexUpdates: indexUpdates, - }; - - // Mock Grpc layer - client._innerApiCalls.commit = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.commit(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes commit with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; - const request = { - projectId: projectId, - mode: mode, - mutations: mutations, - }; - - // Mock Grpc layer - client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); - - client.commit(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('rollback', () => { - it('invokes rollback without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { - projectId: projectId, - transaction: transaction, - }; - - // Mock response - const expectedResponse = {}; - - // Mock Grpc layer - client._innerApiCalls.rollback = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.rollback(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes rollback with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { - projectId: projectId, - transaction: transaction, - }; - - // Mock Grpc layer - client._innerApiCalls.rollback = mockSimpleGrpcMethod( - request, - null, - error - ); - - client.rollback(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('allocateIds', () => { - it('invokes allocateIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock response - const expectedResponse = {}; - - // Mock Grpc layer - client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.allocateIds(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes allocateIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer - client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( - request, - null, - error - ); - - client.allocateIds(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - - describe('reserveIds', () => { - it('invokes reserveIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock response - const expectedResponse = {}; - - // Mock Grpc layer - client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( - request, - expectedResponse - ); - - client.reserveIds(request, (err, response) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes reserveIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - - // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer - client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( - request, - null, - error - ); - - client.reserveIds(request, (err, response) => { - assert(err instanceof Error); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); -}); - -function mockSimpleGrpcMethod(expectedRequest, response, error?) { - return function(actualRequest, options, callback) { - assert.deepStrictEqual(actualRequest, expectedRequest); - if (error) { - callback(error); - } else if (response) { - callback(null, response); - } else { - callback(null); - } - }; -} diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 1748ab69fce..d293e33fc6f 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -'use strict'; - import * as assert from 'assert'; -import * as extend from 'extend'; import * as gax from 'google-gax'; import * as proxyquire from 'proxyquire'; @@ -108,9 +105,9 @@ describe('Datastore', function() { before(function() { Datastore = proxyquire('../src', { - './entity.js': fakeEntity, - './query.js': FakeQuery, - './transaction.js': FakeTransaction, + './entity.js': {entity: fakeEntity}, + './query.js': {Query: FakeQuery}, + './transaction.js': {Transaction: FakeTransaction}, './v1': FakeV1, 'google-auth-library': { GoogleAuth: fakeGoogleAuth, @@ -217,7 +214,7 @@ describe('Datastore', function() { assert.deepStrictEqual( datastore.options, - extend( + Object.assign( { libName: 'gccl', libVersion: require('../../package.json').version, diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index c764e1b7afb..35ead605ab8 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -'use strict'; - import * as assert from 'assert'; describe('Query', function() { @@ -23,7 +21,7 @@ describe('Query', function() { const NAMESPACE = 'Namespace'; const KINDS = 'Kind'; - const Query = require('../src/query.js'); + const Query = require('../src/query.js').Query; let query; beforeEach(function() { diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 240379bf95b..473973bf3c7 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -14,22 +14,20 @@ * limitations under the License. */ -'use strict'; - import * as assert from 'assert'; import * as extend from 'extend'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; -const sinon = require('sinon'); +import * as sinon from 'sinon'; import * as through from 'through2'; -const pfy = require('@google-cloud/promisify'); -const pjy = require('@google-cloud/projectify'); +import * as pfy from '@google-cloud/promisify'; +import * as pjy from '@google-cloud/projectify'; -const entity = require('../src/entity.js'); -const Query = require('../src/query.js'); +const {entity} = require('../src/entity.js'); +const {Query} = require('../src/query.js'); let promisified = false; -const fakePfy = extend({}, pfy, { +const fakePfy = Object.assign({}, pfy, { promisifyAll: function(Class) { if (Class.name === 'DatastoreRequest') { promisified = true; @@ -67,10 +65,10 @@ describe('Request', function() { Request = proxyquire('../src/request', { '@google-cloud/promisify': fakePfy, '@google-cloud/projectify': fakePjy, - './entity': entity, - './query': FakeQuery, + './entity': {entity}, + './query': {Query: FakeQuery}, './v1': fakeV1, - }); + }).DatastoreRequest; }); after(function() { @@ -190,7 +188,7 @@ describe('Request', function() { it('should allow customization of GAX options', function(done) { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); - const options = extend({}, OPTIONS, { + const options = Object.assign({}, OPTIONS, { gaxOptions: {}, }); @@ -676,7 +674,7 @@ describe('Request', function() { it('should prepare entity objects', function(done) { const entityObject = {}; const preparedEntityObject = {prepared: true}; - const expectedEntityObject = extend({}, preparedEntityObject, { + const expectedEntityObject = Object.assign({}, preparedEntityObject, { method: 'insert', }); @@ -1478,7 +1476,7 @@ describe('Request', function() { it('should prepare entity objects', function(done) { const entityObject = {}; const preparedEntityObject = {prepared: true}; - const expectedEntityObject = extend({}, preparedEntityObject, { + const expectedEntityObject = Object.assign({}, preparedEntityObject, { method: 'update', }); @@ -1520,7 +1518,7 @@ describe('Request', function() { it('should prepare entity objects', function(done) { const entityObject = {}; const preparedEntityObject = {prepared: true}; - const expectedEntityObject = extend({}, preparedEntityObject, { + const expectedEntityObject = Object.assign({}, preparedEntityObject, { method: 'upsert', }); @@ -1645,7 +1643,7 @@ describe('Request', function() { const replacedReqOpts = {}; // tslint:disable-next-line no-any - const expectedReqOpts: any = extend({}, CONFIG.reqOpts); + const expectedReqOpts: any = Object.assign({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; pjyOverride = function(reqOpts, projectId) { @@ -1703,7 +1701,7 @@ describe('Request', function() { }, }); - const config = extend({}, CONFIG, { + const config = Object.assign({}, CONFIG, { method: 'commit', }); @@ -1728,7 +1726,7 @@ describe('Request', function() { }, }); - const config = extend({}, CONFIG, { + const config = Object.assign({}, CONFIG, { method: 'commit', }); @@ -1744,7 +1742,7 @@ describe('Request', function() { }, }); - const config = extend({}, CONFIG, { + const config = Object.assign({}, CONFIG, { method: 'rollback', }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index dde73ab4746..b0001f1871b 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -14,17 +14,15 @@ * limitations under the License. */ -'use strict'; - import * as arrify from 'arrify'; import * as assert from 'assert'; -const entity = require('../src/entity.js'); -import * as extend from 'extend'; import * as proxyquire from 'proxyquire'; import * as pfy from '@google-cloud/promisify'; +const {entity} = require('../src/entity'); + let promisified = false; -const fakePfy = extend({}, pfy, { +const fakePfy = Object.assign({}, pfy, { promisifyAll: function(Class, options) { if (Class.name !== 'Transaction') { return; @@ -76,8 +74,8 @@ describe('Transaction', function() { before(function() { Transaction = proxyquire('../src/transaction.js', { '@google-cloud/promisify': fakePfy, - './request.js': FakeDatastoreRequest, - }); + './request.js': {DatastoreRequest: FakeDatastoreRequest}, + }).Transaction; }); beforeEach(function() { @@ -347,16 +345,16 @@ describe('Transaction', function() { const args = [0, 1, 2, 3]; const createQueryReturnValue = {}; - transaction.datastore.createQuery = function() { + transaction.datastore.createQuery = function(...ags) { assert.strictEqual(this, transaction); - assert.strictEqual(arguments[0], args[0]); - assert.strictEqual(arguments[1], args[1]); - assert.strictEqual(arguments[2], args[2]); - assert.strictEqual(arguments[3], args[3]); + assert.strictEqual(ags[0], args[0]); + assert.strictEqual(ags[1], args[1]); + assert.strictEqual(ags[2], args[2]); + assert.strictEqual(ags[3], args[3]); return createQueryReturnValue; }; - const query = transaction.createQuery.apply(transaction, args); + const query = transaction.createQuery(...args); assert.strictEqual(query, createQueryReturnValue); }); }); From b1a9dbe21704370903bcd2b20540b9defa54e4df Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Mon, 12 Nov 2018 15:12:20 -0800 Subject: [PATCH 278/820] docs: update auto-generated jsdoc comments (#245) --- .../nodejs-datastore/src/v1/datastore_client.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 4b649f3cacf..e5d2319cd0f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -213,7 +213,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -283,7 +283,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -338,7 +338,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -409,7 +409,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -465,7 +465,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -522,7 +522,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. @@ -581,7 +581,7 @@ class DatastoreClient { * * @example * - * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = require('@google-cloud/datastore'); * * const client = new datastore.v1.DatastoreClient({ * // optional auth parameters. From 80bc404edf65ecd46bf0f6f390cc7c2100e24555 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 12 Nov 2018 15:55:06 -0800 Subject: [PATCH 279/820] chore: update eslintignore config (#246) --- handwritten/nodejs-datastore/.eslintignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index f08b0fd1c65..2f642cb6044 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -1,4 +1,3 @@ -node_modules/* -samples/node_modules/* +**/node_modules src/**/doc/* build/ From b8c90d5243b4313bd90fd2f2ff7203763a11a2f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 13 Nov 2018 08:07:19 -0800 Subject: [PATCH 280/820] chore(deps): update dependency gts to ^0.9.0 (#247) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c1167db0b98..77e29682e11 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -74,7 +74,7 @@ "eslint-config-prettier": "^3.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", - "gts": "^0.8.0", + "gts": "^0.9.0", "ink-docstrap": "^1.3.2", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", From 7be55da5b2ae553c7f87118c27efc3480856432e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 13 Nov 2018 08:15:15 -0800 Subject: [PATCH 281/820] fix(deps): update dependency google-gax to ^0.22.0 (#248) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 77e29682e11..b794cdeb838 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -51,7 +51,7 @@ "concat-stream": "^1.6.2", "extend": "^3.0.1", "google-auth-library": "^2.0.0", - "google-gax": "^0.20.0", + "google-gax": "^0.22.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", From 7151e4f5b34487dda9d7b43061c99c72bb43ca4a Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 16 Nov 2018 13:41:04 -0800 Subject: [PATCH 282/820] refactor(ts): enable noImplicitThis (#250) --- handwritten/nodejs-datastore/src/entity.ts | 139 +++++++++++-------- handwritten/nodejs-datastore/test/index.ts | 14 +- handwritten/nodejs-datastore/test/request.ts | 71 ++++------ handwritten/nodejs-datastore/tsconfig.json | 3 +- 4 files changed, 122 insertions(+), 105 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 6eb43bf19be..0deefa5fe47 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -51,12 +51,15 @@ entity.KEY_SYMBOL = Symbol('KEY'); * const datastore = new Datastore(); * const aDouble = datastore.double(7.3); */ -function Double(value) { - /** - * @name Double#value - * @type {number} - */ - this.value = value; +class Double { + value: number; + constructor(value: number) { + /** + * @name Double#value + * @type {number} + */ + this.value = value; + } } entity.Double = Double; @@ -85,12 +88,15 @@ entity.isDsDouble = isDsDouble; * const datastore = new Datastore(); * const anInt = datastore.int(7); */ -function Int(value) { - /** - * @name Int#value - * @type {string} - */ - this.value = value.toString(); +class Int { + value: string; + constructor(value: number|string) { + /** + * @name Int#value + * @type {string} + */ + this.value = value.toString(); + } } entity.Int = Int; @@ -108,6 +114,11 @@ function isDsInt(value) { entity.isDsInt = isDsInt; +export interface Coordinates { + latitude: number; + longitude: number; +} + /** * Build a Datastore Geo Point object. * @@ -126,16 +137,19 @@ entity.isDsInt = isDsInt; * * const geoPoint = datastore.geoPoint(coordinates); */ -function GeoPoint(coordinates) { - /** - * Coordinate value. - * - * @name GeoPoint#coordinates - * @type {object} - * @property {number} latitude Latitudinal value. - * @property {number} longitude Longitudinal value. - */ - this.value = coordinates; +class GeoPoint { + value: Coordinates; + constructor(coordinates: Coordinates) { + /** + * Coordinate value. + * + * @name GeoPoint#coordinates + * @type {object} + * @property {number} latitude Latitudinal value. + * @property {number} longitude Longitudinal value. + */ + this.value = coordinates; + } } entity.GeoPoint = GeoPoint; @@ -169,46 +183,55 @@ entity.isDsGeoPoint = isDsGeoPoint; * path: ['Company', 123] * }); */ -function Key(options) { - /** - * @name Key#namespace - * @type {string} - */ - this.namespace = options.namespace; - - options.path = [].slice.call(options.path); - - if (options.path.length % 2 === 0) { - const identifier = options.path.pop(); - - if (is.number(identifier) || isDsInt(identifier)) { - this.id = identifier.value || identifier; - } else if (is.string(identifier)) { - this.name = identifier; +class Key { + + namespace: string; + id?: string; + name?: string; + kind: string; + parent?: Key; + + constructor(options) { + /** + * @name Key#namespace + * @type {string} + */ + this.namespace = options.namespace; + + options.path = [].slice.call(options.path); + + if (options.path.length % 2 === 0) { + const identifier = options.path.pop(); + + if (is.number(identifier) || isDsInt(identifier)) { + this.id = identifier.value || identifier; + } else if (is.string(identifier)) { + this.name = identifier; + } } - } - this.kind = options.path.pop(); + this.kind = options.path.pop(); - if (options.path.length > 0) { - this.parent = new Key(options); - } + if (options.path.length > 0) { + this.parent = new Key(options); + } - // `path` is computed on demand to consider any changes that may have been - // made to the key. - /** - * @name Key#path - * @type {array} - */ - Object.defineProperty(this, 'path', { - enumerable: true, - get: function() { - return arrify(this.parent && this.parent.path).concat([ - this.kind, - this.name || this.id, - ]); - }, - }); + // `path` is computed on demand to consider any changes that may have been + // made to the key. + /** + * @name Key#path + * @type {array} + */ + Object.defineProperty(this, 'path', { + enumerable: true, + get: function() { + return arrify(this.parent && this.parent.path).concat([ + this.kind, + this.name || this.id, + ]); + }, + }); + } } entity.Key = Key; diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index d293e33fc6f..56a8ee7bccd 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -75,12 +75,18 @@ const fakeGoogleGax = { }, }; -function FakeQuery() { - this.calledWith_ = arguments; +class FakeQuery { + calledWith_: IArguments; + constructor() { + this.calledWith_ = arguments; + } } -function FakeTransaction() { - this.calledWith_ = arguments; +class FakeTransaction { + calledWith_: IArguments; + constructor() { + this.calledWith_ = arguments; + } } function FakeV1() {} diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 473973bf3c7..53b1266e848 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -48,9 +48,7 @@ const fakeV1 = { }, }; -function FakeQuery() { - this.calledWith_ = arguments; -} +class FakeQuery extends Query {} let pjyOverride; @@ -59,7 +57,7 @@ describe('Request', function() { let request; let key; - let sandbox; + const sandbox = sinon.createSandbox(); before(function() { Request = proxyquire('../src/request', { @@ -71,25 +69,21 @@ describe('Request', function() { }).DatastoreRequest; }); - after(function() { + after(() => { v1FakeClientOverride = null; }); beforeEach(function() { - sandbox = sinon.createSandbox(); pjyOverride = null; key = new entity.Key({ namespace: 'namespace', path: ['Company', 123], }); - FakeQuery.prototype = new Query(); v1FakeClientOverride = null; request = new Request(); }); - afterEach(() => { - sandbox.restore(); - }); + afterEach(() => sandbox.restore()); describe('instantiation', function() { it('should promisify all the things', function() { @@ -474,7 +468,7 @@ describe('Request', function() { request .createReadStream(key) .on('error', done) - .on('data', function(entity) { + .on('data', entity => { assert.deepStrictEqual(entity, expectedResult); }) .on('end', done) @@ -484,19 +478,18 @@ describe('Request', function() { it('should not push more results if stream was ended', function(done) { let entitiesEmitted = 0; - request.request_ = function(config, callback) { - setImmediate(function() { + request.request_ = (config, callback) => { + setImmediate(() => { callback(null, apiResponseWithMultiEntities); }); }; - request - .createReadStream([key, key]) - .on('data', function() { + const stream = request.createReadStream([key, key]); + stream.on('data', () => { entitiesEmitted++; - this.end(); + stream.end(); }) - .on('end', function() { + .on('end', () => { assert.strictEqual(entitiesEmitted, 1); done(); }) @@ -513,13 +506,11 @@ describe('Request', function() { }); }; - request - .createReadStream(key) + const stream = request.createReadStream(key); + stream .on('error', done) - .on('data', function() { - this.end(); - }) - .on('end', function() { + .on('data', () => stream.end()) + .on('end', () => { assert.strictEqual(lookupCount, 1); done(); }) @@ -930,16 +921,16 @@ describe('Request', function() { ); startCalled = true; return this; - }; + } - FakeQuery.prototype.offset = function(offset_) { + sandbox.stub(FakeQuery.prototype, 'offset').callsFake(offset_ => { const offset = query.offsetVal - apiResponse.batch.skippedResults; assert.strictEqual(offset_, offset); offsetCalled = true; return this; - }; + }); - FakeQuery.prototype.limit = function(limit_) { + sandbox.stub(FakeQuery.prototype, 'limit').callsFake(limit_ => { if (timesRequestCalled === 1) { assert.strictEqual( limit_, @@ -950,7 +941,7 @@ describe('Request', function() { assert.strictEqual(limit_, query.limitVal); } return this; - }; + }); sandbox.stub(entity, 'queryToQueryProto').callsFake(query_ => { if (timesRequestCalled > 1) { @@ -1012,10 +1003,10 @@ describe('Request', function() { sandbox.stub(entity, 'queryToQueryProto').returns({}); - FakeQuery.prototype.limit = function() { + sandbox.stub(FakeQuery.prototype, 'limit').callsFake(() => { limitCalled = true; return this; - }; + }); request .runQueryStream(query) @@ -1050,13 +1041,13 @@ describe('Request', function() { } }; - request + const stream = request .runQueryStream({}) - .on('data', function() { + .on('data', () => { entitiesEmitted++; - this.end(); + stream.end(); }) - .on('end', function() { + .on('end', () => { assert.strictEqual(entitiesEmitted, 1); done(); }); @@ -1070,13 +1061,11 @@ describe('Request', function() { callback(null, apiResponse); }; - request - .runQueryStream({}) + const stream = request.runQueryStream({}); + stream .on('error', done) - .on('data', function() { - this.end(); - }) - .on('end', function() { + .on('data', () => stream.end()) + .on('end', () => { assert.strictEqual(timesRequestCalled, 1); done(); }); diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json index 1942ae08fa2..5dc9ad65f2c 100644 --- a/handwritten/nodejs-datastore/tsconfig.json +++ b/handwritten/nodejs-datastore/tsconfig.json @@ -3,8 +3,7 @@ "compilerOptions": { "rootDir": ".", "outDir": "build", - "noImplicitAny": false, - "noImplicitThis": false + "noImplicitAny": false }, "include": [ "src/*.ts", From cc4a4b0197db95accd0c6949494e8e6d19d9ee00 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Mon, 19 Nov 2018 12:23:31 -0800 Subject: [PATCH 283/820] chore: add synth.metadata (#254) chore: add synth.metadata --- handwritten/nodejs-datastore/synth.metadata | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 handwritten/nodejs-datastore/synth.metadata diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata new file mode 100644 index 00000000000..f26e69af884 --- /dev/null +++ b/handwritten/nodejs-datastore/synth.metadata @@ -0,0 +1,27 @@ +{ + "sources": [ + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "5a57f0c13a358b2b15452bf2d67453774a5f6d4f", + "internalRef": "221837528" + } + }, + { + "git": { + "name": "googleapis-private", + "remote": "https://github.com/googleapis/googleapis-private.git", + "sha": "6aa8e1a447bb8d0367150356a28cb4d3f2332641", + "internalRef": "221340946" + } + }, + { + "generator": { + "name": "artman", + "version": "0.16.0", + "dockerImage": "googleapis/artman@sha256:90f9d15e9bad675aeecd586725bce48f5667ffe7d5fc4d1e96d51ff34304815b" + } + } + ] +} \ No newline at end of file From a7e8344e7c49d558013951ccd08bfc470e25b893 Mon Sep 17 00:00:00 2001 From: Stephen Date: Tue, 20 Nov 2018 11:21:21 -0500 Subject: [PATCH 284/820] fix: Pin @types/sinon to last compatible version (#256) * fix: Pin @types/sinon to last compatible version * chore: Add trailing whitespace --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b794cdeb838..6d22ee712bb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -66,7 +66,7 @@ "@types/is": "0.0.21", "@types/mocha": "^5.2.5", "@types/proxyquire": "^1.3.28", - "@types/sinon": "^5.0.5", + "@types/sinon": "5.0.5", "@types/through2": "^2.0.34", "async": "^2.6.1", "codecov": "^3.0.2", From 1520f5e7371c1a431609b0112471decbff1c9317 Mon Sep 17 00:00:00 2001 From: nareshqlogic <44403913+nareshqlogic@users.noreply.github.com> Date: Fri, 23 Nov 2018 22:04:30 +0530 Subject: [PATCH 285/820] refactor(samples): convert sample tests from ava to mocha (#259) --- .../nodejs-datastore/samples/concepts.js | 150 ++++++------- .../nodejs-datastore/samples/package.json | 7 +- .../samples/system-test/.eslintrc.yml | 3 +- .../samples/system-test/concepts.test.js | 198 +++++++----------- .../samples/system-test/quickstart.test.js | 65 +++--- .../samples/system-test/tasks.test.js | 45 ++-- handwritten/nodejs-datastore/samples/tasks.js | 2 +- 7 files changed, 200 insertions(+), 270 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index cb43a002721..ec2f9f93289 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -16,6 +16,7 @@ 'use strict'; const sinon = require('sinon'); +const assert = require('assert'); // By default, the client will authenticate using the service account file // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use @@ -117,40 +118,35 @@ class Entity extends TestHelper { return task; } - testIncompleteKey(t) { - t.plan(0); + testIncompleteKey() { return this.datastore.save({ key: this.incompleteKey, data: {}, }); } - testNamedKey(t) { - t.plan(0); + testNamedKey() { return this.datastore.save({ key: this.namedKey, data: {}, }); } - testKeyWithParent(t) { - t.plan(0); + testKeyWithParent() { return this.datastore.save({ key: this.keyWithParent, data: {}, }); } - testKeyWithMultiLevelParent(t) { - t.plan(0); + testKeyWithMultiLevelParent() { return this.datastore.save({ key: this.keyWithMultiLevelParent, data: {}, }); } - testEntityWithParent(t) { - t.plan(0); + testEntityWithParent() { const taskKey = this.keyWithParent; // [START datastore_entity_with_parent] @@ -205,8 +201,7 @@ class Entity extends TestHelper { }); } - testArrayValue(t) { - t.plan(0); + testArrayValue() { // [START datastore_array_value] const task = { tags: ['fun', 'programming'], @@ -220,16 +215,14 @@ class Entity extends TestHelper { }); } - testBasicEntity(t) { - t.plan(0); + testBasicEntity() { return this.datastore.save({ key: this.getIncompleteKey(), data: this.getTask(), }); } - testUpsert(t) { - t.plan(0); + testUpsert() { const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -250,8 +243,7 @@ class Entity extends TestHelper { }); } - testInsert(t) { - t.plan(0); + testInsert() { const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -273,8 +265,7 @@ class Entity extends TestHelper { }); } - testLookup(t) { - t.plan(0); + testLookup() { const taskKey = this.getIncompleteKey(); // [START datastore_lookup] @@ -301,8 +292,7 @@ class Entity extends TestHelper { .then(() => this.datastore.get(taskKey)); } - testUpdate(t) { - t.plan(0); + testUpdate() { const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -326,8 +316,7 @@ class Entity extends TestHelper { .then(() => this.datastore.update({key: taskKey, data: task})); } - testDelete(t) { - t.plan(0); + testDelete() { const taskKey = this.getIncompleteKey(); // [START datastore_delete] @@ -392,8 +381,7 @@ class Entity extends TestHelper { ]); } - testBatchLookup(t) { - t.plan(0); + testBatchLookup() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -411,8 +399,7 @@ class Entity extends TestHelper { return this.datastore.get([taskKey1, taskKey2]); } - testBatchDelete(t) { - t.plan(0); + testBatchDelete() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -429,8 +416,7 @@ class Entity extends TestHelper { } class Index extends TestHelper { - testUnindexedPropertyQuery(t) { - t.plan(0); + testUnindexedPropertyQuery() { const datastore = this.datastore; // [START datastore_unindexed_property_query] @@ -442,7 +428,7 @@ class Index extends TestHelper { return this.datastore.runQuery(query); } - testExplodingProperties(t) { + testExplodingProperties() { const original = datastore.key; datastore.key = this.datastore.key; @@ -461,14 +447,14 @@ class Index extends TestHelper { datastore.key = original; return this.datastore.save(task).then(() => { - t.truthy(task.key); - t.truthy(task.key.id); + assert.ok(task.key); + assert.ok(task.key.id); }); } } class Metadata extends TestHelper { - testNamespaceRunQuery(t) { + testNamespaceRunQuery() { const datastore = this.datastore; const startNamespace = 'Animals'; @@ -511,11 +497,11 @@ class Metadata extends TestHelper { return runNamespaceQuery(startNamespace, endNamespace); }) .then(namespaces => { - t.true(namespaces.includes('Animals')); + assert.strictEqual(namespaces.includes('Animals'), true); }); } - testKindRunQuery(t) { + testKindRunQuery() { const datastore = this.datastore; // [START datastore_kind_run_query] @@ -535,11 +521,11 @@ class Metadata extends TestHelper { // [END datastore_kind_run_query] return runKindQuery().then(kinds => { - t.true(kinds.includes('Account')); + assert.strictEqual(kinds.includes('Account'), true); }); } - testPropertyRunQuery(t) { + testPropertyRunQuery() { const datastore = this.datastore; // [START datastore_property_run_query] @@ -570,11 +556,11 @@ class Metadata extends TestHelper { // [END datastore_property_run_query] return runPropertyQuery().then(propertiesByKind => { - t.deepEqual(propertiesByKind.Account, ['balance']); + assert.deepStrictEqual(propertiesByKind.Account, ['balance']); }); } - testPropertyByKindRunQuery(t) { + testPropertyByKindRunQuery() { const datastore = this.datastore; // [START datastore_property_by_kind_run_query] @@ -609,7 +595,7 @@ class Metadata extends TestHelper { // [END datastore_property_by_kind_run_query] return runPropertyByKindQuery().then(propertiesByKind => { - t.deepEqual(propertiesByKind, { + assert.deepStrictEqual(propertiesByKind, { balance: ['INT64'], }); }); @@ -665,8 +651,7 @@ class Query extends TestHelper { return query; } - testRunQuery(t) { - t.plan(0); + testRunQuery() { const query = this.basicQuery; // [START datastore_run_query] @@ -682,8 +667,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testPropertyFilter(t) { - t.plan(0); + testPropertyFilter() { const datastore = this.datastore; // [START datastore_property_filter] @@ -693,8 +677,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testCompositeFilter(t) { - t.plan(0); + testCompositeFilter() { const datastore = this.datastore; // [START datastore_composite_filter] @@ -707,8 +690,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testKeyFilter(t) { - t.plan(0); + testKeyFilter() { const datastore = this.datastore; // [START datastore_key_filter] @@ -720,8 +702,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testAscendingSort(t) { - t.plan(0); + testAscendingSort() { const datastore = this.datastore; // [START datastore_ascending_sort] @@ -731,8 +712,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testDescendingSort(t) { - t.plan(0); + testDescendingSort() { const datastore = this.datastore; // [START datastore_descending_sort] @@ -744,8 +724,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testMultiSort(t) { - t.plan(0); + testMultiSort() { const datastore = this.datastore; // [START datastore_multi_sort] @@ -760,8 +739,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testKindlessQuery(t) { - t.plan(0); + testKindlessQuery() { const datastore = this.datastore; const lastSeenKey = this.datastore.key(['Task', Date.now()]); @@ -803,8 +781,7 @@ class Query extends TestHelper { return runProjectionQuery(); } - testKeysOnlyQuery(t) { - t.plan(0); + testKeysOnlyQuery() { const datastore = this.datastore; // [START datastore_keys_only_query] @@ -817,8 +794,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testDistinctOnQuery(t) { - t.plan(0); + testDistinctOnQuery() { const datastore = this.datastore; // [START datastore_distinct_on_query] @@ -832,8 +808,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testArrayValueInequalityRange(t) { - t.plan(0); + testArrayValueInequalityRange() { const datastore = this.datastore; // [START datastore_array_value_inequality_range] @@ -846,8 +821,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testArrayValueEquality(t) { - t.plan(0); + testArrayValueEquality() { const datastore = this.datastore; // [START datastore_array_value_equality] @@ -860,8 +834,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalityRange(t) { - t.plan(0); + testInequalityRange() { const datastore = this.datastore; // [START datastore_inequality_range] @@ -887,8 +860,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testEqualAndInequalityRange(t) { - t.plan(0); + testEqualAndInequalityRange() { const datastore = this.datastore; // [START datastore_equal_and_inequality_range] @@ -903,8 +875,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testInequalitySort(t) { - t.plan(0); + testInequalitySort() { const datastore = this.datastore; // [START datastore_inequality_sort] @@ -945,8 +916,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testLimit(t) { - t.plan(0); + testLimit() { const datastore = this.datastore; // [START datastore_limit] @@ -956,7 +926,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testCursorPaging(t) { + testCursorPaging() { const datastore = this.datastore; const pageSize = 1; @@ -993,7 +963,7 @@ class Query extends TestHelper { return runPageQuery().then(results => { const entities = results[0]; - t.true(Array.isArray(entities)); + assert.strictEqual(Array.isArray(entities), true); const info = results[1]; if (!info || !info.endCursor) { throw new Error('An `info` with an `endCursor` is not present.'); @@ -1001,8 +971,7 @@ class Query extends TestHelper { }); } - testEventualConsistentQuery(t) { - t.plan(0); + testEventualConsistentQuery() { const datastoreMock = datastore; datastore = this.datastore; // [START datastore_eventual_consistent_query] @@ -1078,7 +1047,7 @@ class Transaction extends TestHelper { return this.datastore.save(entities); } - testTransactionalUpdate(t) { + testTransactionalUpdate() { const fromKey = this.fromKey; const toKey = this.toKey; const originalBalance = this.originalBalance; @@ -1100,8 +1069,14 @@ class Transaction extends TestHelper { const accounts = results.map(result => result[0]); // Restore `datastore` to the mock API. datastore = datastoreMock; - t.is(accounts[0].balance, originalBalance - amountToTransfer); - t.is(accounts[1].balance, originalBalance + amountToTransfer); + assert.strictEqual( + accounts[0].balance, + originalBalance - amountToTransfer + ); + assert.strictEqual( + accounts[1].balance, + originalBalance + amountToTransfer + ); }) .catch(err => { // Restore `datastore` to the mock API. @@ -1110,8 +1085,7 @@ class Transaction extends TestHelper { }); } - testTransactionalRetry(t) { - t.plan(0); + testTransactionalRetry() { // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; datastore = this.datastore; @@ -1161,7 +1135,7 @@ class Transaction extends TestHelper { }); } - testTransactionalGetOrCreate(t) { + testTransactionalGetOrCreate() { const taskKey = this.datastore.key(['Task', Date.now()]); // Overwrite so the real Datastore instance is used in `transferFunds`. @@ -1198,11 +1172,11 @@ class Transaction extends TestHelper { return getOrCreate(taskKey, {}) .then(task => { - t.truthy(task, 'Should have a task.'); + assert.ok(task, 'Should have a task.'); return getOrCreate(taskKey, {}); }) .then(task => { - t.truthy(task, 'Should have a task.'); + assert.ok(task, 'Should have a task.'); // Restore `datastore` to the mock API. datastore = datastoreMock; }) @@ -1213,7 +1187,7 @@ class Transaction extends TestHelper { }); } - testSingleEntityGroupReadOnly(t) { + testSingleEntityGroupReadOnly() { // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; datastore = this.datastore; @@ -1246,8 +1220,8 @@ class Transaction extends TestHelper { results => { // Restore `datastore` to the mock API. datastore = datastoreMock; - t.is(results.length, 2); - t.true(Array.isArray(results[1])); + assert.strictEqual(results.length, 2); + assert.strictEqual(Array.isArray(results[1]), true); }, err => { // Restore `datastore` to the mock API. diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 3df4cace8e2..8debb5594bd 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -9,9 +9,7 @@ "node": ">=8" }, "scripts": { - "test": "npm run cover", - "ava": "ava -T 20s --verbose test/*.test.js system-test/*.test.js", - "cover": "nyc --reporter=lcov --cache ava -T 20s --verbose test/*.test.js system-test/*.test.js && nyc report" + "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { "@google-cloud/datastore": "^2.0.0", @@ -20,8 +18,7 @@ }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", - "ava": "^0.25.0", - "nyc": "^13.0.0", + "mocha": "^5.2.0", "proxyquire": "^2.0.1" } } diff --git a/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml b/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml index c0289282a68..0ab526f52b2 100644 --- a/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml +++ b/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml @@ -1,5 +1,6 @@ --- +env: + mocha: true rules: node/no-unpublished-require: off - node/no-unsupported-features: off no-empty: off diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js index a2a4aa12f21..45ced36136e 100644 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js @@ -1,5 +1,5 @@ /** - * Copyright 2017, Google, Inc. + * Copyright 2018, Google, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -15,9 +15,9 @@ 'use strict'; -const concepts = require(`../concepts`); -const test = require(`ava`); -const tools = require(`@google-cloud/nodejs-repo-tools`); +const concepts = require('../concepts'); +const assert = require('assert'); +const tools = require('@google-cloud/nodejs-repo-tools'); let transaction; let metadata; @@ -31,10 +31,10 @@ const Index = concepts.Index; const Entity = concepts.Entity; const Query = concepts.Query; -test.before(tools.checkCredentials); -test.before(t => { +before(() => { + tools.checkCredentials(); const projectId = process.env.GCLOUD_PROJECT; - t.truthy(projectId, `You must set the GCLOUD_PROJECT env var!`); + assert.ok(projectId, 'You must set the GCLOUD_PROJECT env var!'); transaction = new Transaction(projectId); metadata = new Metadata(projectId); index = new Index(projectId); @@ -42,150 +42,114 @@ test.before(t => { query = new Query(projectId); }); -test.after.always(async () => { +after(async () => { const datastore = transaction.datastore; - const query = datastore.createQuery(`Task`).select(`__key__`); + const query = datastore.createQuery('Task').select('__key__'); const [entities] = await datastore.runQuery(query); await datastore.delete(entities.map(entity => entity[datastore.KEY])); }); -test.beforeEach(tools.stubConsole); -test.afterEach.always(tools.restoreConsole); +beforeEach(tools.stubConsole); +afterEach(tools.restoreConsole); // Transactions -test.serial(`performs a transactional update`, t => - transaction.testTransactionalUpdate(t) -); -test.serial(`performs retries if necessary`, t => - transaction.testTransactionalRetry(t) -); -test.serial(`performs a get or create`, t => - transaction.testTransactionalGetOrCreate(t) -); -test.serial(`gets a snapshot of task list entities`, t => - transaction.testSingleEntityGroupReadOnly(t) -); +it('performs a transactional update', () => + transaction.testTransactionalUpdate()); +it('performs retries if necessary', () => transaction.testTransactionalRetry()); +it('performs a get or create', () => + transaction.testTransactionalGetOrCreate()); +it('gets a snapshot of task list entities', () => + transaction.testSingleEntityGroupReadOnly()); // Metadata -test.serial(`performs a namespace query`, t => - metadata.testNamespaceRunQuery(t) -); -test.serial(`performs a kind query`, t => metadata.testKindRunQuery(t)); -test.serial(`performs a property query`, t => metadata.testPropertyRunQuery(t)); -test.serial(`performs a property by kind query`, t => - metadata.testPropertyByKindRunQuery(t) -); +it('performs a namespace query', () => metadata.testNamespaceRunQuery()); +it('performs a kind query', () => metadata.testKindRunQuery()); +it('performs a property query', () => metadata.testPropertyRunQuery()); +it('performs a property by kind query', () => + metadata.testPropertyByKindRunQuery()); // Indexes -test.serial(`performs a query with a filter on an unindexed property`, t => - index.testUnindexedPropertyQuery(t) -); -test.serial(`inserts arrays of data`, t => index.testExplodingProperties(t)); +it('performs a query with a filter on an unindexed property', () => + index.testUnindexedPropertyQuery()); +it('inserts arrays of data', () => index.testExplodingProperties()); // Queries -test.serial(`performs a basic query`, t => query.testRunQuery(t)); -test.serial(`performs a query with a property filter`, t => - query.testPropertyFilter(t) -); -test.serial(`performs a query with a composite filter`, t => - query.testCompositeFilter(t) -); -test.serial(`performs a query with a key filter`, t => query.testKeyFilter(t)); -test.serial(`performs a query with ascending sort`, t => - query.testAscendingSort(t) -); -test.serial(`performs a query with descending sort`, t => - query.testDescendingSort(t) -); -test.serial(`performs a query with multi sort`, t => query.testMultiSort(t)); -test.serial(`performs a kindless query`, t => query.testKindlessQuery(t)); -test.serial('performs a projection query', t => { +it('performs a basic query', async () => await query.testRunQuery()); +it('performs a query with a property filter', () => query.testPropertyFilter()); +it('performs a query with a composite filter', () => + query.testCompositeFilter()); +it('performs a query with a key filter', () => query.testKeyFilter()); +it('performs a query with ascending sort', () => query.testAscendingSort()); +it('performs a query with descending sort', () => query.testDescendingSort()); +it('performs a query with multi sort', () => query.testMultiSort()); +it('performs a kindless query', () => query.testKindlessQuery()); +it('performs a projection query', () => { return entity - .testProperties(t) + .testProperties() .then(() => { return new Promise((resolve, reject) => { setTimeout(() => { - query.testRunQueryProjection(t).then(resolve, reject); + query.testRunQueryProjection().then(resolve, reject); }, 1000); }); }) .then(results => { - t.deepEqual(results, { + assert.deepStrictEqual(results, { priorities: [4], percentCompletes: [10], }); }); }); -test.serial(`performs a keys only query`, t => query.testKeysOnlyQuery(t)); -test.serial(`performs a distinct on query`, t => query.testDistinctOnQuery(t)); -test.serial(`performs an array value inequality query`, t => - query.testArrayValueInequalityRange(t) -); -test.serial(`performs an array value equality query`, t => - query.testArrayValueEquality(t) -); -test.serial(`performs an inequality range query`, t => - query.testInequalityRange(t) -); -test.serial(`returns an error from an invalid query`, async t => { - await t.throws(query.testInequalityInvalid(t)); +it('performs a keys only query', () => query.testKeysOnlyQuery()); +it('performs a distinct on query', () => query.testDistinctOnQuery()); +it('performs an array value inequality query', () => + query.testArrayValueInequalityRange()); +it('performs an array value equality query', () => + query.testArrayValueEquality()); +it('performs an inequality range query', () => query.testInequalityRange()); +it('returns an error from an invalid query', async () => { + await assert.throws(query.testInequalityInvalid); }); -test.serial(`performs an equal and inequality range query`, t => - query.testEqualAndInequalityRange(t) -); -test.serial(`performs an equality sort query`, t => - query.testInequalitySort(t) -); -test.serial( - `returns an error when not sorted on filtered property`, - async t => { - await t.throws(query.testInequalitySortInvalidNotSame(t)); - } -); -test.serial( - `returns an error when not sorted on first filter prop`, - async t => { - await t.throws(query.testInequalitySortInvalidNotFirst(t)); - } -); -test.serial(`performs a query with a limit`, t => query.testLimit(t)); -test.serial(`allows manual pagination through results`, t => { - return entity.testBatchUpsert(t).then(() => { +it('performs an equal and inequality range query', () => + query.testEqualAndInequalityRange()); +it('performs an equality sort query', () => query.testInequalitySort()); +it('returns an error when not sorted on filtered property', async () => { + await assert.throws(query.testInequalitySortInvalidNotSame); +}); +it('returns an error when not sorted on first filter prop', async () => { + await assert.throws(query.testInequalitySortInvalidNotFirst); +}); +it('performs a query with a limit', () => query.testLimit()); +it('allows manual pagination through results', () => { + return entity.testBatchUpsert().then(() => { return new Promise((resolve, reject) => { setTimeout(() => { - query.testCursorPaging(t).then(resolve, reject); + query.testCursorPaging().then(resolve, reject); }, 1000); }); }); }); -test.serial(`performs an ancestor query`, t => - query.testEventualConsistentQuery(t) -); +it('performs an ancestor query', () => query.testEventualConsistentQuery()); // Entities -test.serial(`saves with an incomplete key`, t => entity.testIncompleteKey(t)); -test.serial(`saves with a named key`, t => entity.testNamedKey(t)); -test.serial(`saves a key with a parent`, t => entity.testKeyWithParent(t)); -test.serial(`saves a key with multiple parents`, t => - entity.testKeyWithMultiLevelParent(t) -); -test.serial(`saves an entity with a parent`, t => - entity.testEntityWithParent(t) -); -test.serial(`saves an entity with properties`, t => { - t.plan(0); - return entity.testProperties(t); +it('saves with an incomplete key', () => entity.testIncompleteKey()); +it('saves with a named key', () => entity.testNamedKey()); +it('saves a key with a parent', () => entity.testKeyWithParent()); +it('saves a key with multiple parents', () => + entity.testKeyWithMultiLevelParent()); +it('saves an entity with a parent', () => entity.testEntityWithParent()); +it('saves an entity with properties', () => { + return entity.testProperties(); }); -test.serial(`saves an entity with arrays`, t => entity.testArrayValue(t)); -test.serial(`saves a basic entity`, t => entity.testBasicEntity(t)); -test.serial(`saves with an upsert`, t => entity.testUpsert(t)); -test.serial(`saves with an insert`, t => entity.testInsert(t)); -test.serial(`performs a lookup`, t => entity.testLookup(t)); -test.serial(`saves with an update`, t => entity.testUpdate(t)); -test.serial(`deletes an entity`, t => entity.testDelete(t)); -test.serial(`performs a batch upsert`, t => { - t.plan(0); - return entity.testBatchUpsert(t); +it('saves an entity with arrays', () => entity.testArrayValue()); +it('saves a basic entity', () => entity.testBasicEntity()); +it('saves with an upsert', () => entity.testUpsert()); +it('saves with an insert', () => entity.testInsert()); +it('performs a lookup', () => entity.testLookup()); +it('saves with an update', () => entity.testUpdate()); +it('deletes an entity', () => entity.testDelete()); +it('performs a batch upsert', () => { + return entity.testBatchUpsert(); }); -test.serial(`performs a batch lookup`, t => entity.testBatchLookup(t)); -test.serial(`performs a batch delete`, t => entity.testBatchDelete(t)); +it('performs a batch lookup', () => entity.testBatchLookup()); +it('performs a batch delete', () => entity.testBatchDelete()); diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js index d579cda6696..80f85ed04ec 100644 --- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js @@ -1,5 +1,5 @@ /** - * Copyright 2017, Google, Inc. + * Copyright 2018, Google, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -15,62 +15,61 @@ 'use strict'; -const proxyquire = require(`proxyquire`).noPreserveCache(); -const sinon = require(`sinon`); -const test = require(`ava`); -const tools = require(`@google-cloud/nodejs-repo-tools`); +const proxyquire = require('proxyquire').noPreserveCache(); +const sinon = require('sinon'); +const assert = require('assert'); +const tools = require('@google-cloud/nodejs-repo-tools'); -const {Datastore} = proxyquire(`@google-cloud/datastore`, {}); +const {Datastore} = proxyquire('@google-cloud/datastore', {}); const datastore = new Datastore(); -const entity = {description: `Buy milk`}; -const kind = `Task`; -const name = `sampletask1`; +const entity = {description: 'Buy milk'}; +const kind = 'Task'; +const name = 'sampletask1'; const key = datastore.key([kind, name]); const datastoreEntity = Object.assign({}, entity); datastoreEntity[datastore.KEY] = key; -test.before(async () => { +before(async () => { try { await datastore.delete(key); } catch (err) {} // ignore error }); -test.after.always(async () => { +after(async () => { try { await datastore.delete(key); } catch (err) {} // ignore error }); -test.beforeEach(tools.stubConsole); -test.afterEach.always(tools.restoreConsole); +beforeEach(tools.stubConsole); +afterEach(tools.restoreConsole); -test.cb(`should get a task from Datastore`, t => { +it('should get a task from Datastore', () => { const datastoreMock = { key: (...args) => datastore.key(...args), - save: _task => { - t.is(_task.key.kind, kind); - t.is(_task.key.name, name); - t.deepEqual(_task.data, entity); + save: async _task => { + assert.strictEqual(_task.key.kind, kind); + assert.strictEqual(_task.key.name, name); + assert.deepStrictEqual(_task.data, entity); - return datastore.save(_task).then(() => { - setTimeout(() => { - datastore - .get(key) - .then(([task]) => { - t.deepEqual(task, datastoreEntity); - t.true( - console.log.calledWith(`Saved ${name}: ${entity.description}`) - ); - t.end(); - }) - .catch(t.end); - }, 200); - }, t.end); + return await datastore.save(_task).then(async () => { + await new Promise(r => setTimeout(r, 200)); + await datastore + .get(key) + .then(([task]) => { + assert.deepStrictEqual(task, datastoreEntity); + assert.strictEqual( + console.log.calledWith(`Saved ${name}: ${entity.description}`), + true + ); + }) + .catch(); + }); }, }; - proxyquire(`../quickstart`, { + proxyquire('../quickstart', { '@google-cloud/datastore': { Datastore: sinon.stub().returns(datastoreMock), }, diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js index 953f02c02b3..400234b0e51 100644 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js @@ -1,5 +1,5 @@ /** - * Copyright 2017, Google, Inc. + * Copyright 2018, Google, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -18,61 +18,56 @@ const {Datastore} = require('@google-cloud/datastore'); const datastore = new Datastore(); const path = require('path'); -const test = require('ava'); +const assert = require('assert'); const tools = require('@google-cloud/nodejs-repo-tools'); -const cmd = `node tasks.js`; -const cwd = path.join(__dirname, `..`); +const cmd = 'node tasks.js'; +const cwd = path.join(__dirname, '..'); -const description = `description`; +const description = 'description'; let key; -test.after.always(async () => { +after(async () => { try { await datastore.delete(key); } catch (err) {} // ignore error }); -test.before(tools.checkCredentials); -test.beforeEach(tools.stubConsole); -test.afterEach.always(tools.restoreConsole); +before(tools.checkCredentials); +beforeEach(tools.stubConsole); +afterEach(tools.restoreConsole); -test.serial(`should add a task`, async t => { - t.plan(2); +it('should add a task', async () => { const expected = /^Task (\d+) created successfully.$/; const parts = tools.run(`${cmd} new "${description}"`, cwd).match(expected); - t.true(expected.test(parts[0])); + assert.strictEqual(expected.test(parts[0]), true); const [task] = await datastore.get( datastore.key([`Task`, parseInt(parts[1], 10)]) ); key = task[datastore.KEY]; - t.is(task.description, description); + assert.strictEqual(task.description, description); }); -test.serial(`should mark a task as done`, async t => { - t.plan(2); +it('should mark a task as done', async () => { const expected = `Task ${key.id} updated successfully.`; const output = await tools.runAsync(`${cmd} done ${key.id}`, cwd); - t.is(output, expected); + assert.strictEqual(output, expected); const [task] = await datastore.get(key); - t.true(task.done); + assert.strictEqual(task.done, true); }); -test.serial(`should list tasks`, async t => { - t.plan(0); +it('should list tasks', async () => await tools .tryTest(async assert => { const output = await tools.runAsync(`${cmd} list`, cwd); assert(output.includes(key.id)); }) - .start(); -}); + .start()); -test.serial(`should delete a task`, async t => { - t.plan(2); +it('should delete a task', async () => { const expected = `Task ${key.id} deleted successfully.`; const output = await tools.runAsync(`${cmd} delete ${key.id}`, cwd); - t.is(output, expected); + assert.strictEqual(output, expected); const [task] = await datastore.get(key); - t.is(task, undefined); + assert.strictEqual(task, undefined); }); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 9cfa4f955eb..7fa3449e6eb 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -1,5 +1,5 @@ /** - * Copyright 2017, Google, Inc. + * Copyright 2018, Google, Inc. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at From 95563fae901b5a6538fc4aaf45efe70fabe6d5e9 Mon Sep 17 00:00:00 2001 From: muraliQlogic <38901089+muraliQlogic@users.noreply.github.com> Date: Tue, 27 Nov 2018 23:14:56 +0530 Subject: [PATCH 286/820] refactor(samples): Samples to use async/await refactor(samples): Samples to use async/await --- .../nodejs-datastore/samples/concepts.js | 661 ++++++++---------- .../nodejs-datastore/samples/quickstart.js | 53 +- handwritten/nodejs-datastore/samples/tasks.js | 82 +-- 3 files changed, 345 insertions(+), 451 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index ec2f9f93289..2947d655032 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -222,7 +222,7 @@ class Entity extends TestHelper { }); } - testUpsert() { + async testUpsert() { const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -232,9 +232,8 @@ class Entity extends TestHelper { data: task, }; - datastore.upsert(entity).then(() => { - // Task inserted successfully. - }); + await datastore.upsert(entity); + // Task inserted successfully. // [END datastore_upsert] return this.datastore.upsert({ @@ -265,34 +264,29 @@ class Entity extends TestHelper { }); } - testLookup() { + async testLookup() { const taskKey = this.getIncompleteKey(); // [START datastore_lookup] - datastore.get(taskKey).then(results => { - // Task found. - const entity = results[0]; - - // entity = { - // category: 'Personal', - // done: false, - // priority: 4, - // description: 'Learn Cloud Datastore' - // }; - console.log(entity); - }); + const [entity] = await datastore.get(taskKey); + // entity = { + // category: 'Personal', + // done: false, + // priority: 4, + // description: 'Learn Cloud Datastore' + // }; + console.log(entity); // [END datastore_lookup] + await this.datastore.save({ + method: 'insert', + key: taskKey, + data: {}, + }); - return this.datastore - .save({ - method: 'insert', - key: taskKey, - data: {}, - }) - .then(() => this.datastore.get(taskKey)); + return this.datastore.get(taskKey); } - testUpdate() { + async testUpdate() { const taskKey = this.getIncompleteKey(); const task = this.getTask(); @@ -302,39 +296,34 @@ class Entity extends TestHelper { data: task, }; - datastore.update(entity).then(() => { - // Task updated successfully. - }); + await datastore.update(entity); + // Task updated successfully. // [END datastore_update] - return this.datastore - .save({ - method: 'insert', - key: taskKey, - data: {}, - }) - .then(() => this.datastore.update({key: taskKey, data: task})); + await this.datastore.save({ + method: 'insert', + key: taskKey, + data: {}, + }); + return this.datastore.update({key: taskKey, data: task}); } - testDelete() { + async testDelete() { const taskKey = this.getIncompleteKey(); // [START datastore_delete] - datastore.delete(taskKey).then(() => { - // Task deleted successfully. - }); + await datastore.delete(taskKey); + // Task deleted successfully. // [END datastore_delete] - - return this.datastore - .save({ - method: 'insert', - key: taskKey, - data: {}, - }) - .then(() => this.datastore.delete(taskKey)); + await this.datastore.save({ + method: 'insert', + key: taskKey, + data: {}, + }); + return this.datastore.delete(taskKey); } - testBatchUpsert() { + async testBatchUpsert() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -364,9 +353,8 @@ class Entity extends TestHelper { }, ]; - datastore.upsert(entities).then(() => { - // Tasks inserted successfully. - }); + await datastore.upsert(entities); + // Tasks inserted successfully. // [END datastore_batch_upsert] return this.datastore.upsert([ @@ -381,34 +369,30 @@ class Entity extends TestHelper { ]); } - testBatchLookup() { + async testBatchLookup() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); // [START datastore_batch_lookup] const keys = [taskKey1, taskKey2]; - datastore.get(keys).then(results => { - // Tasks retrieved successfully. - const tasks = results[0]; - - console.log(tasks); - }); + const [tasks] = await datastore.get(keys); + // Tasks retrieved successfully. + console.log(tasks); // [END datastore_batch_lookup] return this.datastore.get([taskKey1, taskKey2]); } - testBatchDelete() { + async testBatchDelete() { const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); // [START datastore_batch_delete] const keys = [taskKey1, taskKey2]; - datastore.delete(keys).then(() => { - // Tasks deleted successfully. - }); + await datastore.delete(keys); + // Tasks deleted successfully. // [END datastore_batch_delete] return this.datastore.delete([taskKey1, taskKey2]); @@ -428,7 +412,7 @@ class Index extends TestHelper { return this.datastore.runQuery(query); } - testExplodingProperties() { + async testExplodingProperties() { const original = datastore.key; datastore.key = this.datastore.key; @@ -446,158 +430,137 @@ class Index extends TestHelper { datastore.key = original; - return this.datastore.save(task).then(() => { - assert.ok(task.key); - assert.ok(task.key.id); - }); + await this.datastore.save(task); + assert.ok(task.key); + assert.ok(task.key.id); } } class Metadata extends TestHelper { - testNamespaceRunQuery() { + async testNamespaceRunQuery() { const datastore = this.datastore; const startNamespace = 'Animals'; const endNamespace = 'Zoos'; - return datastore - .save({ - key: datastore.key({ - namespace: 'Animals', - path: ['Ant', 1], - }), - data: {}, - }) - .then(() => { - // [START datastore_namespace_run_query] - function runNamespaceQuery(startNamespace, endNamespace) { - const startKey = datastore.key(['__namespace__', startNamespace]); - const endKey = datastore.key(['__namespace__', endNamespace]); - - const query = datastore - .createQuery('__namespace__') - .select('__key__') - .filter('__key__', '>=', startKey) - .filter('__key__', '<', endKey); - - return datastore.runQuery(query).then(results => { - const entities = results[0]; - const namespaces = entities.map( - entity => entity[datastore.KEY].name - ); - - console.log('Namespaces:'); - namespaces.forEach(namespace => console.log(namespace)); - - return namespaces; - }); - } - // [END datastore_namespace_run_query] + await datastore.save({ + key: datastore.key({ + namespace: 'Animals', + path: ['Ant', 1], + }), + data: {}, + }); - return runNamespaceQuery(startNamespace, endNamespace); - }) - .then(namespaces => { - assert.strictEqual(namespaces.includes('Animals'), true); - }); + // [START datastore_namespace_run_query] + async function runNamespaceQuery(startNamespace, endNamespace) { + const startKey = datastore.key(['__namespace__', startNamespace]); + const endKey = datastore.key(['__namespace__', endNamespace]); + + const query = datastore + .createQuery('__namespace__') + .select('__key__') + .filter('__key__', '>=', startKey) + .filter('__key__', '<', endKey); + + const [entities] = await datastore.runQuery(query); + const namespaces = entities.map(entity => entity[datastore.KEY].name); + + console.log('Namespaces:'); + namespaces.forEach(namespace => console.log(namespace)); + + return namespaces; + } + // [END datastore_namespace_run_query] + + const namespaces = await runNamespaceQuery(startNamespace, endNamespace); + assert.strictEqual(namespaces.includes('Animals'), true); } - testKindRunQuery() { + async testKindRunQuery() { const datastore = this.datastore; // [START datastore_kind_run_query] - function runKindQuery() { + async function runKindQuery() { const query = datastore.createQuery('__kind__').select('__key__'); - return datastore.runQuery(query).then(results => { - const entities = results[0]; - const kinds = entities.map(entity => entity[datastore.KEY].name); + const [entities] = await datastore.runQuery(query); + const kinds = entities.map(entity => entity[datastore.KEY].name); - console.log('Kinds:'); - kinds.forEach(kind => console.log(kind)); + console.log('Kinds:'); + kinds.forEach(kind => console.log(kind)); - return kinds; - }); + return kinds; } // [END datastore_kind_run_query] - - return runKindQuery().then(kinds => { - assert.strictEqual(kinds.includes('Account'), true); - }); + const kinds = await runKindQuery(); + assert.strictEqual(kinds.includes('Account'), true); } - testPropertyRunQuery() { + async testPropertyRunQuery() { const datastore = this.datastore; // [START datastore_property_run_query] - function runPropertyQuery() { + async function runPropertyQuery() { const query = datastore.createQuery('__property__').select('__key__'); + const [entities] = await datastore.runQuery(query); + // @TODO convert below object to map + const propertiesByKind = {}; - return datastore.runQuery(query).then(results => { - const entities = results[0]; - const propertiesByKind = {}; - - entities.forEach(entity => { - const key = entity[datastore.KEY]; - const kind = key.path[1]; - const property = key.path[3]; + entities.forEach(entity => { + const key = entity[datastore.KEY]; + const kind = key.path[1]; + const property = key.path[3]; - propertiesByKind[kind] = propertiesByKind[kind] || []; - propertiesByKind[kind].push(property); - }); + propertiesByKind[kind] = propertiesByKind[kind] || []; + propertiesByKind[kind].push(property); + }); - console.log('Properties by Kind:'); - for (const key in propertiesByKind) { - console.log(key, propertiesByKind[key]); - } + console.log('Properties by Kind:'); + for (const key in propertiesByKind) { + console.log(key, propertiesByKind[key]); + } - return propertiesByKind; - }); + return propertiesByKind; } // [END datastore_property_run_query] - - return runPropertyQuery().then(propertiesByKind => { - assert.deepStrictEqual(propertiesByKind.Account, ['balance']); - }); + const propertiesByKind = await runPropertyQuery(); + assert.deepStrictEqual(propertiesByKind.Account, ['balance']); } - testPropertyByKindRunQuery() { + async testPropertyByKindRunQuery() { const datastore = this.datastore; // [START datastore_property_by_kind_run_query] - function runPropertyByKindQuery() { + async function runPropertyByKindQuery() { const ancestorKey = datastore.key(['__kind__', 'Account']); const query = datastore .createQuery('__property__') .hasAncestor(ancestorKey); + const [entities] = await datastore.runQuery(query); - return datastore.runQuery(query).then(results => { - const entities = results[0]; + const representationsByProperty = {}; - const representationsByProperty = {}; + entities.forEach(entity => { + const key = entity[datastore.KEY]; + const propertyName = key.name; + const propertyType = entity.property_representation; - entities.forEach(entity => { - const key = entity[datastore.KEY]; - const propertyName = key.name; - const propertyType = entity.property_representation; - - representationsByProperty[propertyName] = propertyType; - }); + representationsByProperty[propertyName] = propertyType; + }); - console.log('Task property representations:'); - for (const key in representationsByProperty) { - console.log(key, representationsByProperty[key]); - } + console.log('Task property representations:'); + for (const key in representationsByProperty) { + console.log(key, representationsByProperty[key]); + } - return representationsByProperty; - }); + return representationsByProperty; } // [END datastore_property_by_kind_run_query] - return runPropertyByKindQuery().then(propertiesByKind => { - assert.deepStrictEqual(propertiesByKind, { - balance: ['INT64'], - }); + const propertiesByKind = await runPropertyByKindQuery(); + assert.deepStrictEqual(propertiesByKind, { + balance: ['INT64'], }); } } @@ -651,17 +614,13 @@ class Query extends TestHelper { return query; } - testRunQuery() { + async testRunQuery() { const query = this.basicQuery; // [START datastore_run_query] - datastore.runQuery(query).then(results => { - // Task entities found. - const tasks = results[0]; - - console.log('Tasks:'); - tasks.forEach(task => console.log(task)); - }); + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + tasks.forEach(task => console.log(task)); // [END datastore_run_query] return this.datastore.runQuery(query); @@ -753,32 +712,28 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testRunQueryProjection() { + async testRunQueryProjection() { const datastore = this.datastore; const query = this.projectionQuery; // [START datastore_run_query_projection] - function runProjectionQuery() { + async function runProjectionQuery() { const priorities = []; const percentCompletes = []; - - return datastore.runQuery(query).then(results => { - const tasks = results[0]; - - tasks.forEach(task => { - priorities.push(task.priority); - percentCompletes.push(task.percent_complete); - }); - - return { - priorities: priorities, - percentCompletes: percentCompletes, - }; + const [tasks] = await datastore.runQuery(query); + tasks.forEach(task => { + priorities.push(task.priority); + percentCompletes.push(task.percent_complete); }); + + return { + priorities: priorities, + percentCompletes: percentCompletes, + }; } // [END datastore_run_query_projection] - return runProjectionQuery(); + return await runProjectionQuery(); } testKeysOnlyQuery() { @@ -926,7 +881,7 @@ class Query extends TestHelper { return this.datastore.runQuery(query); } - testCursorPaging() { + async testCursorPaging() { const datastore = this.datastore; const pageSize = 1; @@ -934,44 +889,38 @@ class Query extends TestHelper { // By default, google-cloud-node will automatically paginate through all of // the results that match a query. However, this sample implements manual // pagination using limits and cursor tokens. - function runPageQuery(pageCursor) { + async function runPageQuery(pageCursor) { let query = datastore.createQuery('Task').limit(pageSize); if (pageCursor) { query = query.start(pageCursor); } + const results = await datastore.runQuery(query); + const entities = results[0]; + const info = results[1]; - return datastore.runQuery(query).then(results => { - const entities = results[0]; - const info = results[1]; - - if (info.moreResults !== Datastore.NO_MORE_RESULTS) { - // If there are more results to retrieve, the end cursor is - // automatically set on `info`. To get this value directly, access - // the `endCursor` property. - return runPageQuery(info.endCursor).then(results => { - // Concatenate entities - results[0] = entities.concat(results[0]); - return results; - }); - } + if (info.moreResults !== Datastore.NO_MORE_RESULTS) { + // If there are more results to retrieve, the end cursor is + // automatically set on `info`. To get this value directly, access + // the `endCursor` property. + const results = await runPageQuery(info.endCursor); - return [entities, info]; - }); + // Concatenate entities + results[0] = entities.concat(results[0]); + return results; + } + + return [entities, info]; } // [END datastore_cursor_paging] - - return runPageQuery().then(results => { - const entities = results[0]; - assert.strictEqual(Array.isArray(entities), true); - const info = results[1]; - if (!info || !info.endCursor) { - throw new Error('An `info` with an `endCursor` is not present.'); - } - }); + const [entities, info] = await runPageQuery(); + assert.strictEqual(Array.isArray(entities), true); + if (!info || !info.endCursor) { + throw new Error('An `info` with an `endCursor` is not present.'); + } } - testEventualConsistentQuery() { + async testEventualConsistentQuery() { const datastoreMock = datastore; datastore = this.datastore; // [START datastore_eventual_consistent_query] @@ -980,47 +929,37 @@ class Query extends TestHelper { query.run({consistency: 'eventual'}); // [END datastore_eventual_consistent_query] - return query - .run({consistency: 'eventual'}) - .then(results => { - datastore = datastoreMock; - const entities = results[0]; - return entities; - }) - .catch(err => { - datastore = datastoreMock; - return Promise.reject(err); - }); + const [entities] = await query.run({consistency: 'eventual'}); + datastore = datastoreMock; + return entities; } } // [START datastore_transactional_update] -function transferFunds(fromKey, toKey, amount) { +async function transferFunds(fromKey, toKey, amount) { const transaction = datastore.transaction(); - - return transaction - .run() - .then(() => Promise.all([transaction.get(fromKey), transaction.get(toKey)])) - .then(results => { - const accounts = results.map(result => result[0]); - - accounts[0].balance -= amount; - accounts[1].balance += amount; - - transaction.save([ - { - key: fromKey, - data: accounts[0], - }, - { - key: toKey, - data: accounts[1], - }, - ]); - - return transaction.commit(); - }) - .catch(() => transaction.rollback()); + await transaction.run(); + const results = await Promise.all([ + transaction.get(fromKey), + transaction.get(toKey), + ]); + const accounts = results.map(result => result[0]); + + accounts[0].balance -= amount; + accounts[1].balance += amount; + + transaction.save([ + { + key: fromKey, + data: accounts[0], + }, + { + key: toKey, + data: accounts[1], + }, + ]); + + return transaction.commit(); } // [END datastore_transactional_update] @@ -1047,7 +986,7 @@ class Transaction extends TestHelper { return this.datastore.save(entities); } - testTransactionalUpdate() { + async testTransactionalUpdate() { const fromKey = this.fromKey; const toKey = this.toKey; const originalBalance = this.originalBalance; @@ -1056,86 +995,76 @@ class Transaction extends TestHelper { // Overwrite so the real Datastore instance is used in `transferFunds`. datastore = this.datastore; - - return this.restoreBankAccountBalances({ - keys: [fromKey, toKey], - balance: originalBalance, - }) - .then(() => transferFunds(fromKey, toKey, amountToTransfer)) - .then(() => - Promise.all([this.datastore.get(fromKey), this.datastore.get(toKey)]) - ) - .then(results => { - const accounts = results.map(result => result[0]); - // Restore `datastore` to the mock API. - datastore = datastoreMock; - assert.strictEqual( - accounts[0].balance, - originalBalance - amountToTransfer - ); - assert.strictEqual( - accounts[1].balance, - originalBalance + amountToTransfer - ); - }) - .catch(err => { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - return Promise.reject(err); + try { + await this.restoreBankAccountBalances({ + keys: [fromKey, toKey], + balance: originalBalance, }); + await transferFunds(fromKey, toKey, amountToTransfer); + const results = await Promise.all([ + this.datastore.get(fromKey), + this.datastore.get(toKey), + ]); + const accounts = results.map(result => result[0]); + // Restore `datastore` to the mock API. + datastore = datastoreMock; + assert.strictEqual( + accounts[0].balance, + originalBalance - amountToTransfer + ); + assert.strictEqual( + accounts[1].balance, + originalBalance + amountToTransfer + ); + } catch (err) { + datastore = datastoreMock; + throw err; + } } - testTransactionalRetry() { + async testTransactionalRetry() { // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; datastore = this.datastore; const fromKey = this.fromKey; const toKey = this.toKey; - - return this.restoreBankAccountBalances({ + await this.restoreBankAccountBalances({ keys: [fromKey, toKey], balance: this.originalBalance, - }) - .then(() => { - // [START datastore_transactional_retry] - function transferFundsWithRetry() { - const maxTries = 5; - let currentAttempt = 1; - let delay = 100; - - function tryRequest() { - return transferFunds(fromKey, toKey, 10).catch(err => { - if (currentAttempt <= maxTries) { - // Use exponential backoff - return new Promise((resolve, reject) => { - setTimeout(() => { - currentAttempt++; - delay *= 2; - tryRequest().then(resolve, reject); - }, delay); - }); - } - return Promise.reject(err); - }); - } + }); - return tryRequest(1, 5); + // [START datastore_transactional_retry] + async function transferFundsWithRetry() { + const maxTries = 5; + let currentAttempt = 1; + let delay = 100; + + async function tryRequest() { + try { + await transferFunds(fromKey, toKey, 10); + } catch (err) { + if (currentAttempt <= maxTries) { + // Use exponential backoff + setTimeout(async () => { + currentAttempt++; + delay *= 2; + await tryRequest(); + }, delay); + } + throw err; } - // [END datastore_transactional_retry] - return transferFundsWithRetry(); - }) - .then(() => { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - }) - .catch(() => { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - }); + } + + await tryRequest(1, 5); + } + // [END datastore_transactional_retry] + await transferFundsWithRetry(); + // Restore `datastore` to the mock API. + datastore = datastoreMock; } - testTransactionalGetOrCreate() { + async testTransactionalGetOrCreate() { const taskKey = this.datastore.key(['Task', Date.now()]); // Overwrite so the real Datastore instance is used in `transferFunds`. @@ -1143,76 +1072,64 @@ class Transaction extends TestHelper { datastore = this.datastore; // [START datastore_transactional_get_or_create] - function getOrCreate(taskKey, taskData) { + async function getOrCreate(taskKey, taskData) { const taskEntity = { key: taskKey, data: taskData, }; - const transaction = datastore.transaction(); - return transaction - .run() - .then(() => transaction.get(taskKey)) - .then(results => { - const task = results[0]; - if (task) { - // The task entity already exists. - return transaction.rollback(); - } else { - // Create the task entity. - transaction.save(taskEntity); - return transaction.commit(); - } - }) - .then(() => taskEntity) - .catch(() => transaction.rollback()); + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + if (task) { + // The task entity already exists. + transaction.rollback(); + } else { + // Create the task entity. + transaction.save(taskEntity); + transaction.commit(); + } + return taskEntity; + } catch (err) { + transaction.rollback(); + } } // [END datastore_transactional_get_or_create] - - return getOrCreate(taskKey, {}) - .then(task => { - assert.ok(task, 'Should have a task.'); - return getOrCreate(taskKey, {}); - }) - .then(task => { - assert.ok(task, 'Should have a task.'); - // Restore `datastore` to the mock API. - datastore = datastoreMock; - }) - .catch(err => { - // Restore `datastore` to the mock API. - datastore = datastoreMock; - return Promise.reject(err); - }); + try { + let task = await getOrCreate(taskKey, {}); + assert.ok(task, 'Should have a task.'); + task = await getOrCreate(taskKey, {}); + assert.ok(task, 'Should have a task.'); + // Restore `datastore` to the mock API. + datastore = datastoreMock; + } catch (err) { + // Restore `datastore` to the mock API. + datastore = datastoreMock; + throw err; + } } - testSingleEntityGroupReadOnly() { + async testSingleEntityGroupReadOnly() { // Overwrite so the real Datastore instance is used in `transferFunds`. const datastoreMock = datastore; datastore = this.datastore; // [START datastore_transactional_single_entity_group_read_only] - function getTaskListEntities() { - let taskList, taskListEntities; - + async function getTaskListEntities() { const transaction = datastore.transaction(); - const taskListKey = datastore.key(['TaskList', 'default']); - - return transaction - .run() - .then(() => datastore.get(taskListKey)) - .then(results => { - taskList = results[0]; - const query = datastore.createQuery('Task').hasAncestor(taskListKey); - return datastore.runQuery(query); - }) - .then(results => { - taskListEntities = results[0]; - return transaction.commit(); - }) - .then(() => [taskList, taskListEntities]) - .catch(() => transaction.rollback()); + try { + const taskListKey = datastore.key(['TaskList', 'default']); + + await transaction.run(); + const [taskList] = await datastore.get(taskListKey); + const query = datastore.createQuery('Task').hasAncestor(taskListKey); + const [taskListEntities] = await datastore.runQuery(query); + await transaction.commit(); + return [taskList, taskListEntities]; + } catch (err) { + transaction.rollback(); + } } // [END datastore_transactional_single_entity_group_read_only] diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index cb362feb197..94d627a713c 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -19,36 +19,33 @@ // Imports the Google Cloud client library const {Datastore} = require('@google-cloud/datastore'); -// Your Google Cloud Platform project ID -const projectId = 'YOUR_PROJECT_ID'; +async function quickStart() { + // Your Google Cloud Platform project ID + const projectId = 'YOUR_PROJECT_ID'; -// Creates a client -const datastore = new Datastore({ - projectId: projectId, -}); + // Creates a client + const datastore = new Datastore({ + projectId: projectId, + }); -// The kind for the new entity -const kind = 'Task'; -// The name/ID for the new entity -const name = 'sampletask1'; -// The Cloud Datastore key for the new entity -const taskKey = datastore.key([kind, name]); + // The kind for the new entity + const kind = 'Task'; + // The name/ID for the new entity + const name = 'sampletask1'; + // The Cloud Datastore key for the new entity + const taskKey = datastore.key([kind, name]); -// Prepares the new entity -const task = { - key: taskKey, - data: { - description: 'Buy milk', - }, -}; + // Prepares the new entity + const task = { + key: taskKey, + data: { + description: 'Buy milk', + }, + }; -// Saves the entity -datastore - .save(task) - .then(() => { - console.log(`Saved ${task.key.name}: ${task.data.description}`); - }) - .catch(err => { - console.error('ERROR:', err); - }); + // Saves the entity + await datastore.save(task); + console.log(`Saved ${task.key.name}: ${task.data.description}`); +} +quickStart().catch(console.error); // [END datastore_quickstart] diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 7fa3449e6eb..bb2dcf89885 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -64,7 +64,7 @@ node tasks */ // [START datastore_add_entity] -function addTask(description) { +async function addTask(description) { const taskKey = datastore.key('Task'); const entity = { key: taskKey, @@ -85,75 +85,55 @@ function addTask(description) { ], }; - datastore - .save(entity) - .then(() => { - console.log(`Task ${taskKey.id} created successfully.`); - }) - .catch(err => { - console.error('ERROR:', err); - }); + try { + await datastore.save(entity); + console.log(`Task ${taskKey.id} created successfully.`); + } catch (err) { + console.error('ERROR:', err); + } } // [END datastore_add_entity] // [START datastore_update_entity] -function markDone(taskId) { +async function markDone(taskId) { const transaction = datastore.transaction(); const taskKey = datastore.key(['Task', taskId]); - transaction - .run() - .then(() => transaction.get(taskKey)) - .then(results => { - const task = results[0]; - task.done = true; - transaction.save({ - key: taskKey, - data: task, - }); - return transaction.commit(); - }) - .then(() => { - // The transaction completed successfully. - console.log(`Task ${taskId} updated successfully.`); - }) - .catch(() => transaction.rollback()); + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + task.done = true; + transaction.save({ + key: taskKey, + data: task, + }); + await transaction.commit(); + console.log(`Task ${taskId} updated successfully.`); + } catch (err) { + transaction.rollback(); + } } // [END datastore_update_entity] // [START datastore_retrieve_entities] -function listTasks() { +async function listTasks() { const query = datastore.createQuery('Task').order('created'); - datastore - .runQuery(query) - .then(results => { - const tasks = results[0]; - - console.log('Tasks:'); - tasks.forEach(task => { - const taskKey = task[datastore.KEY]; - console.log(taskKey.id, task); - }); - }) - .catch(err => { - console.error('ERROR:', err); - }); + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + tasks.forEach(task => { + const taskKey = task[datastore.KEY]; + console.log(taskKey.id, task); + }); } // [END datastore_retrieve_entities] // [START datastore_delete_entity] -function deleteTask(taskId) { +async function deleteTask(taskId) { const taskKey = datastore.key(['Task', taskId]); - datastore - .delete(taskKey) - .then(() => { - console.log(`Task ${taskId} deleted successfully.`); - }) - .catch(err => { - console.error('ERROR:', err); - }); + await datastore.delete(taskKey); + console.log(`Task ${taskId} deleted successfully.`); } // [END datastore_delete_entity] From 1ef098c502b6ed48e15b4d791f20e3742a2730ef Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Sat, 1 Dec 2018 14:57:49 -0800 Subject: [PATCH 287/820] fix(build): fix system key decryption (#266) --- handwritten/nodejs-datastore/.circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml index 6735ebdaaa1..86c63432242 100644 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ b/handwritten/nodejs-datastore/.circleci/config.yml @@ -116,7 +116,7 @@ jobs: name: Decrypt credentials. command: | if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - openssl aes-256-cbc -d -in .circleci/key.json.enc \ + openssl aes-256-cbc -d -md md5 -in .circleci/key.json.enc \ -out .circleci/key.json \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" fi @@ -148,7 +148,7 @@ jobs: command: | if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then for encrypted_key in .circleci/*.json.enc; do - openssl aes-256-cbc -d -in $encrypted_key \ + openssl aes-256-cbc -d -md md5 -in $encrypted_key \ -out $(echo $encrypted_key | sed 's/\.enc//') \ -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" done From 84c73309015a83d2cb2f02406d96f3fc4735cbbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sat, 1 Dec 2018 19:59:13 -0800 Subject: [PATCH 288/820] chore(deps): update dependency typescript to ~3.2.0 (#264) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/transaction.ts | 2 +- handwritten/nodejs-datastore/system-test/datastore.ts | 4 ++-- handwritten/nodejs-datastore/test/request.ts | 7 +++---- handwritten/nodejs-datastore/test/transaction.ts | 4 +--- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6d22ee712bb..d78c7aeb888 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -84,7 +84,7 @@ "prettier": "^1.13.5", "proxyquire": "^2.0.1", "sinon": "^7.0.0", - "typescript": "~3.1.5" + "typescript": "~3.2.0" }, "nyc": { "exclude": [ diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 6c195fda3d4..7345d39b8d7 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -274,7 +274,7 @@ class Transaction extends DatastoreRequest { * }); */ createQuery(namespace: string, kind?: string) { - return this.datastore.createQuery.apply(this, arguments); + return this.datastore.createQuery.call(this, namespace, kind); } /** diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 706cdaaaf15..6748c942cd2 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -25,8 +25,8 @@ describe('Datastore', () => { // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. const key = datastore.key; - datastore.key = function() { - const keyObject = key.apply(this, arguments); + datastore.key = function(options) { + const keyObject = key.call(this, options); testKinds.push(keyObject.kind); return keyObject; }; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 53b1266e848..902602d807a 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -22,9 +22,8 @@ import * as sinon from 'sinon'; import * as through from 'through2'; import * as pfy from '@google-cloud/promisify'; import * as pjy from '@google-cloud/projectify'; - -const {entity} = require('../src/entity.js'); -const {Query} = require('../src/query.js'); +import {entity} from '../src/entity.js'; +import {Query} from '../src/query.js'; let promisified = false; const fakePfy = Object.assign({}, pfy, { @@ -963,7 +962,7 @@ describe('Request', function() { entities.push(entity); }) .on('end', function() { - const allResults = [].slice + const allResults = ([] as Array<{}>).slice .call(entityResultsPerApiCall[1]) .concat(entityResultsPerApiCall[2]); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index b0001f1871b..b3a3f145200 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -342,15 +342,13 @@ describe('Transaction', function() { describe('createQuery', function() { it('should return query from datastore.createQuery', function() { - const args = [0, 1, 2, 3]; + const args = [0, 1]; const createQueryReturnValue = {}; transaction.datastore.createQuery = function(...ags) { assert.strictEqual(this, transaction); assert.strictEqual(ags[0], args[0]); assert.strictEqual(ags[1], args[1]); - assert.strictEqual(ags[2], args[2]); - assert.strictEqual(ags[3], args[3]); return createQueryReturnValue; }; From cebb5307aa4cb9b2e715ddc9bcb936e7eb912cb5 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sun, 2 Dec 2018 09:31:08 -0800 Subject: [PATCH 289/820] refactor: run gts fix (#265) --- handwritten/nodejs-datastore/src/entity.ts | 6 +- handwritten/nodejs-datastore/src/index.ts | 14 +- handwritten/nodejs-datastore/src/query.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 14 +- .../nodejs-datastore/src/transaction.ts | 4 +- .../nodejs-datastore/system-test/datastore.ts | 38 +- handwritten/nodejs-datastore/test/entity.ts | 6 +- handwritten/nodejs-datastore/test/index.ts | 36 +- handwritten/nodejs-datastore/test/request.ts | 528 ++++++++---------- .../nodejs-datastore/test/transaction.ts | 14 +- 10 files changed, 317 insertions(+), 345 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 0deefa5fe47..ed289258a3e 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -224,7 +224,7 @@ class Key { */ Object.defineProperty(this, 'path', { enumerable: true, - get: function() { + get() { return arrify(this.parent && this.parent.path).concat([ this.kind, this.name || this.id, @@ -880,14 +880,14 @@ function queryToQueryProto(query) { name: filter.name, }, op: OP_TO_OPERATOR[filter.op], - value: value, + value, }, }; }); queryProto.filter = { compositeFilter: { - filters: filters, + filters, op: 'AND', }, }; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 8300587696e..f8fd84aba6c 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -544,7 +544,7 @@ class Datastore extends DatastoreRequest { */ static int(value) { return new entity.Int(value); - }; + } int(value) { return Datastore.int(value); @@ -564,7 +564,7 @@ class Datastore extends DatastoreRequest { */ static isInt(value) { return entity.isDsInt(value); - }; + } isInt(value) { return Datastore.isInt(value); @@ -644,7 +644,7 @@ class Datastore extends DatastoreRequest { namespace = this.namespace; } return new Query(this, namespace, arrify(kind)); - }; + } /** * Helper to create a Key object, scoped to the instance's namespace by default. @@ -702,7 +702,7 @@ class Datastore extends DatastoreRequest { path: arrify(options), }; return new entity.Key(options); - }; + } /** * Helper function to check if something is a Datastore Key object. @@ -718,7 +718,7 @@ class Datastore extends DatastoreRequest { */ static isKey(value) { return entity.isDsKey(value); - }; + } isKey(value) { return Datastore.isKey(value); } @@ -739,7 +739,7 @@ class Datastore extends DatastoreRequest { */ transaction(options?) { return new Transaction(this, options); - }; + } /** * Determine the appropriate endpoint to use for API requests. If not explicitly @@ -772,7 +772,7 @@ class Datastore extends DatastoreRequest { .replace(leadingProtocol, '') .replace(port, '') .replace(trailingSlashes, ''); - }; + } /** * {@link DatastoreRequest} class. diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index e88ea3d5d12..2079b3076ac 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -212,7 +212,7 @@ class Query { */ order(property: string, options?) { const sign = options && options.descending ? '-' : '+'; - this.orders.push({name: property, sign: sign}); + this.orders.push({name: property, sign}); return this; } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 29f228c19ec..6d5f8980662 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -230,7 +230,7 @@ class DatastoreRequest { const makeRequest = keys => { // tslint:disable-next-line no-any const reqOpts: any = { - keys: keys, + keys, }; if (options.consistency) { @@ -245,7 +245,7 @@ class DatastoreRequest { { client: 'DatastoreClient', method: 'lookup', - reqOpts: reqOpts, + reqOpts, gaxOpts: options.gaxOptions, }, (err, resp) => { @@ -355,7 +355,7 @@ class DatastoreRequest { { client: 'DatastoreClient', method: 'commit', - reqOpts: reqOpts, + reqOpts, gaxOpts: gaxOptions, }, callback @@ -660,7 +660,7 @@ class DatastoreRequest { { client: 'DatastoreClient', method: 'runQuery', - reqOpts: reqOpts, + reqOpts, gaxOpts: options.gaxOptions, }, onResultSet @@ -935,7 +935,7 @@ class DatastoreRequest { } const insertIndexes = {}; - const mutations: {}[] = []; + const mutations: Array<{}> = []; const methods = { insert: true, update: true, @@ -1002,7 +1002,7 @@ class DatastoreRequest { }); const reqOpts = { - mutations: mutations, + mutations, }; function onCommit(err, resp) { @@ -1035,7 +1035,7 @@ class DatastoreRequest { { client: 'DatastoreClient', method: 'commit', - reqOpts: reqOpts, + reqOpts, gaxOpts: gaxOptions, }, onCommit diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 7345d39b8d7..ab34c49915d 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -209,7 +209,7 @@ class Transaction extends DatastoreRequest { { client: 'DatastoreClient', method: 'commit', - reqOpts: reqOpts, + reqOpts, gaxOpts: gaxOptions, }, (err, resp) => { @@ -457,7 +457,7 @@ class Transaction extends DatastoreRequest { { client: 'DatastoreClient', method: 'beginTransaction', - reqOpts: reqOpts, + reqOpts, gaxOpts: options.gaxOptions, }, (err, resp) => { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 6748c942cd2..eaca9431dda 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -20,7 +20,7 @@ import {Datastore} from '../src'; import {entity} from '../src/entity'; describe('Datastore', () => { - const testKinds: {}[] = []; + const testKinds: Array<{}> = []; const datastore = new Datastore(); // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. @@ -81,23 +81,23 @@ describe('Datastore', () => { const postKey = datastore.key(['Post', 'post1']); const data = { - longString: longString, + longString, notMetadata: true, longStringArray: [longString], metadata: { - longString: longString, + longString, otherProperty: 'value', obj: { longStringArray: [ { - longString: longString, + longString, nestedLongStringArray: [ { - longString: longString, + longString, nestedProperty: true, }, { - longString: longString, + longString, }, ], }, @@ -105,14 +105,14 @@ describe('Datastore', () => { }, longStringArray: [ { - longString: longString, + longString, nestedLongStringArray: [ { - longString: longString, + longString, nestedProperty: true, }, { - longString: longString, + longString, }, ], }, @@ -123,7 +123,7 @@ describe('Datastore', () => { datastore.save( { key: postKey, - data: data, + data, excludeFromIndexes: [ 'longString', 'longStringArray[]', @@ -189,7 +189,7 @@ describe('Datastore', () => { buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), }; - datastore.save({key: postKey, data: data}, err => { + datastore.save({key: postKey, data}, err => { assert.ifError(err); const assignedId = postKey.id; @@ -406,7 +406,7 @@ describe('Datastore', () => { datastore.save( { - key: key, + key, data: { year: integerType, }, @@ -431,7 +431,7 @@ describe('Datastore', () => { datastore.save( { - key: key, + key, data: { nines: doubleType, }, @@ -459,7 +459,7 @@ describe('Datastore', () => { datastore.save( { - key: key, + key, data: { location: geoPointType, }, @@ -549,7 +549,7 @@ describe('Datastore', () => { before(done => { const keysToSave = keys.map((key, index) => { return { - key: key, + key, data: characters[index], }; }); @@ -817,7 +817,7 @@ describe('Datastore', () => { assert.ifError(err); transaction.get(key, err => { assert.ifError(err); - transaction.save({key: key, data: obj}); + transaction.save({key, data: obj}); transaction.commit(err => { assert.ifError(err); datastore.get(key, (err, entity) => { @@ -852,7 +852,7 @@ describe('Datastore', () => { transaction.save([ { - key: key, + key, data: {rating: 10}, }, { @@ -906,7 +906,7 @@ describe('Datastore', () => { transaction.save([ { - key: key, + key, data: { rating: 10, }, @@ -969,7 +969,7 @@ describe('Datastore', () => { assert.ifError(err); transaction.get(key, err => { assert.ifError(err); - transaction.save({key: key, data: {}}); + transaction.save({key, data: {}}); transaction.commit(err => { assert(err instanceof Error); done(); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 63e074a4766..fb521f6d851 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -112,7 +112,7 @@ describe('entity', function() { describe('Key', function() { it('should assign the namespace', function() { const namespace = 'NS'; - const key = new entity.Key({namespace: namespace, path: []}); + const key = new entity.Key({namespace, path: []}); assert.strictEqual(key.namespace, namespace); }); @@ -295,7 +295,7 @@ describe('entity', function() { const valueProto = { valueType: 'timestampValue', timestampValue: { - seconds: seconds, + seconds, nanos: ms * 1e6, }, }; @@ -1016,7 +1016,7 @@ describe('entity', function() { const key = {}; const entityProto = { - key: key, + key, }; const results = [ diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 56a8ee7bccd..89d5e7b0580 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -23,28 +23,40 @@ const v1 = require('../src/v1/index.js'); // tslint:disable-next-line no-any const fakeEntity: any = { KEY_SYMBOL: Symbol('fake key symbol'), - Int: function(value) { - this.value = value; + Int: class { + value: {}; + constructor(value) { + this.value = value; + } }, - isDsInt: function() { + isDsInt() { this.calledWith_ = arguments; }, - Double: function(value) { - this.value = value; + Double: class { + value: {}; + constructor(value) { + this.value = value; + } }, - isDsDouble: function() { + isDsDouble() { this.calledWith_ = arguments; }, - GeoPoint: function(value) { - this.value = value; + GeoPoint: class { + value: {}; + constructor(value) { + this.value = value; + } }, - isDsGeoPoint: function() { + isDsGeoPoint() { this.calledWith_ = arguments; }, - Key: function() { - this.calledWith_ = arguments; + Key: class { + calledWith_: IArguments; + constructor() { + this.calledWith_ = arguments; + } }, - isDsKey: function() { + isDsKey() { this.calledWith_ = arguments; }, }; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 902602d807a..b81660c6623 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -27,7 +27,7 @@ import {Query} from '../src/query.js'; let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll: function(Class) { + promisifyAll(Class) { if (Class.name === 'DatastoreRequest') { promisified = true; } @@ -35,15 +35,17 @@ const fakePfy = Object.assign({}, pfy, { }); const fakePjy = { - replaceProjectIdToken: function() { + replaceProjectIdToken() { return (pjyOverride || pjy.replaceProjectIdToken).apply(null, arguments); }, }; let v1FakeClientOverride; const fakeV1 = { - FakeClient: function() { - return (v1FakeClientOverride || function() {}).apply(null, arguments); + FakeClient: class { + constructor() { + return (v1FakeClientOverride || function() {}).apply(null, arguments); + } }, }; @@ -51,14 +53,13 @@ class FakeQuery extends Query {} let pjyOverride; -describe('Request', function() { +describe('Request', () => { let Request; let request; - let key; const sandbox = sinon.createSandbox(); - before(function() { + before(() => { Request = proxyquire('../src/request', { '@google-cloud/promisify': fakePfy, '@google-cloud/projectify': fakePjy, @@ -72,7 +73,7 @@ describe('Request', function() { v1FakeClientOverride = null; }); - beforeEach(function() { + beforeEach(() => { pjyOverride = null; key = new entity.Key({ namespace: 'namespace', @@ -84,14 +85,14 @@ describe('Request', function() { afterEach(() => sandbox.restore()); - describe('instantiation', function() { - it('should promisify all the things', function() { + describe('instantiation', () => { + it('should promisify all the things', () => { assert(promisified); }); }); - describe('prepareEntityObject_', function() { - it('should clone an object', function() { + describe('prepareEntityObject_', () => { + it('should clone an object', () => { const obj = { data: { nested: { @@ -110,7 +111,7 @@ describe('Request', function() { ); }); - it('should format an entity', function() { + it('should format an entity', () => { const key = {}; const entityObject = {data: true}; entityObject[entity.KEY_SYMBOL] = key; @@ -122,7 +123,7 @@ describe('Request', function() { }); }); - describe('allocateIds', function() { + describe('allocateIds', () => { const INCOMPLETE_KEY = {}; const ALLOCATIONS = 2; @@ -130,19 +131,19 @@ describe('Request', function() { allocations: ALLOCATIONS, }; - it('should throw if the key is complete', function() { + it('should throw if the key is complete', () => { sandbox.stub(entity, 'keyToKeyProto'); sandbox.stub(entity, 'isKeyComplete').callsFake(key => { assert.strictEqual(key, INCOMPLETE_KEY); return true; }); - assert.throws(function() { + assert.throws(() => { request.allocateIds(INCOMPLETE_KEY, OPTIONS, assert.ifError); }, new RegExp('An incomplete key should be provided.')); }); - it('should make the correct request', function(done) { + it('should make the correct request', done => { const keyProto = {}; sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto').callsFake(key => { @@ -150,42 +151,39 @@ describe('Request', function() { return keyProto; }); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'allocateIds'); - const expectedKeys: {}[] = []; + const expectedKeys: Array<{}> = []; expectedKeys.length = ALLOCATIONS; expectedKeys.fill(keyProto); - assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); - assert.strictEqual(config.gaxOpts, undefined); - done(); }; request.allocateIds(INCOMPLETE_KEY, OPTIONS, assert.ifError); }); - it('should allow a numeric shorthand for allocations', function(done) { + it('should allow a numeric shorthand for allocations', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.reqOpts.keys.length, ALLOCATIONS); done(); }; request.allocateIds(INCOMPLETE_KEY, ALLOCATIONS, assert.ifError); }); - it('should allow customization of GAX options', function(done) { + it('should allow customization of GAX options', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); const options = Object.assign({}, OPTIONS, { gaxOptions: {}, }); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -193,17 +191,17 @@ describe('Request', function() { request.allocateIds(INCOMPLETE_KEY, options, assert.ifError); }); - describe('error', function() { + describe('error', () => { const ERROR = new Error('Error.'); const API_RESPONSE = {}; - beforeEach(function() { - request.request_ = function(config, callback) { + beforeEach(() => { + request.request_ = (_, callback) => { callback(ERROR, API_RESPONSE); }; }); - it('should exec callback with error & API response', function(done) { + it('should exec callback with error & API response', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { @@ -215,19 +213,19 @@ describe('Request', function() { }); }); - describe('success', function() { + describe('success', () => { const KEY = {}; const API_RESPONSE = { keys: [KEY], }; - beforeEach(function() { - request.request_ = function(config, callback) { + beforeEach(() => { + request.request_ = (_, callback) => { callback(null, API_RESPONSE); }; }); - it('should create and return Keys & API response', function(done) { + it('should create and return Keys & API response', done => { const key = {}; sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); @@ -245,18 +243,18 @@ describe('Request', function() { }); }); - describe('createReadStream', function() { - beforeEach(function() { - request.request_ = function() {}; + describe('createReadStream', () => { + beforeEach(() => { + request.request_ = () => {}; }); - it('should throw if no keys are provided', function() { - assert.throws(function() { + it('should throw if no keys are provided', () => { + assert.throws(() => { request.createReadStream(); }, /At least one Key object is required/); }); - it('should convert key to key proto', function(done) { + it('should convert key to key proto', done => { sandbox.stub(entity, 'keyToKeyProto').callsFake(key_ => { assert.strictEqual(key_, key); done(); @@ -265,30 +263,26 @@ describe('Request', function() { request.createReadStream(key).on('error', done); }); - it('should make correct request when stream is ready', function(done) { - request.request_ = function(config) { + it('should make correct request when stream is ready', done => { + request.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); - assert.deepStrictEqual( config.reqOpts.keys[0], entity.keyToKeyProto(key) ); - done(); }; - const stream = request.createReadStream(key); - stream.emit('reading'); }); - it('should allow customization of GAX options', function(done) { + it('should allow customization of GAX options', done => { const options = { gaxOptions: {}, }; - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -299,8 +293,8 @@ describe('Request', function() { .emit('reading'); }); - it('should allow setting strong read consistency', function(done) { - request.request_ = function(config) { + it('should allow setting strong read consistency', done => { + request.request_ = config => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); }; @@ -311,8 +305,8 @@ describe('Request', function() { .emit('reading'); }); - it('should allow setting strong eventual consistency', function(done) { - request.request_ = function(config) { + it('should allow setting strong eventual consistency', done => { + request.request_ = config => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); }; @@ -323,33 +317,33 @@ describe('Request', function() { .emit('reading'); }); - describe('error', function() { + describe('error', () => { const error = new Error('Error.'); const apiResponse = {a: 'b', c: 'd'}; - beforeEach(function() { - request.request_ = function(config, callback) { - setImmediate(function() { + beforeEach(() => { + request.request_ = (_, callback) => { + setImmediate(() => { callback(error, apiResponse); }); }; }); - it('should emit error', function(done) { + it('should emit error', done => { request .createReadStream(key) - .on('data', function() {}) - .on('error', function(err) { + .on('data', () => {}) + .on('error', err => { assert.strictEqual(err, error); done(); }); }); - it('should end stream', function(done) { + it('should end stream', done => { const stream = request.createReadStream(key); - stream.on('data', function() {}).on('error', function() { - setImmediate(function() { + stream.on('data', () => {}).on('error', () => { + setImmediate(() => { assert.strictEqual(stream._destroyed, true); done(); }); @@ -357,7 +351,7 @@ describe('Request', function() { }); }); - describe('success', function() { + describe('success', () => { const apiResponse = { found: [ { @@ -419,13 +413,13 @@ describe('Request', function() { apiResponseWithDeferred.found[0].entity.key, ]; - beforeEach(function() { - request.request_ = function(config, callback) { + beforeEach(() => { + request.request_ = (_, callback) => { callback(null, apiResponse); }; }); - it('should format the results', function(done) { + it('should format the results', done => { sandbox.stub(entity, 'formatArray').callsFake(arr => { assert.strictEqual(arr, apiResponse.found); setImmediate(done); @@ -438,10 +432,10 @@ describe('Request', function() { .emit('reading'); }); - it('should continue looking for deferred results', function(done) { + it('should continue looking for deferred results', done => { let numTimesCalled = 0; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { numTimesCalled++; if (numTimesCalled === 1) { @@ -463,7 +457,7 @@ describe('Request', function() { .emit('reading'); }); - it('should push results to the stream', function(done) { + it('should push results to the stream', done => { request .createReadStream(key) .on('error', done) @@ -474,7 +468,7 @@ describe('Request', function() { .emit('reading'); }); - it('should not push more results if stream was ended', function(done) { + it('should not push more results if stream was ended', done => { let entitiesEmitted = 0; request.request_ = (config, callback) => { @@ -495,12 +489,12 @@ describe('Request', function() { .emit('reading'); }); - it('should not get more results if stream was ended', function(done) { + it('should not get more results if stream was ended', done => { let lookupCount = 0; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { lookupCount++; - setImmediate(function() { + setImmediate(() => { callback(null, apiResponseWithDeferred); }); }; @@ -518,9 +512,9 @@ describe('Request', function() { }); }); - describe('delete', function() { - it('should delete by key', function(done) { - request.request_ = function(config, callback) { + describe('delete', () => { + it('should delete by key', done => { + request.request_ = (config, callback) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); assert(is.object(config.reqOpts.mutations[0].delete)); @@ -529,30 +523,30 @@ describe('Request', function() { request.delete(key, done); }); - it('should return apiResponse in callback', function(done) { + it('should return apiResponse in callback', done => { const resp = {success: true}; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { callback(null, resp); }; - request.delete(key, function(err, apiResponse) { + request.delete(key, (err, apiResponse) => { assert.ifError(err); assert.deepStrictEqual(resp, apiResponse); done(); }); }); - it('should multi delete by keys', function(done) { - request.request_ = function(config, callback) { + it('should multi delete by keys', done => { + request.request_ = (config, callback) => { assert.strictEqual(config.reqOpts.mutations.length, 2); callback(); }; request.delete([key, key], done); }); - it('should allow customization of GAX options', function(done) { + it('should allow customization of GAX options', done => { const gaxOptions = {}; - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -560,14 +554,14 @@ describe('Request', function() { request.delete(key, gaxOptions, assert.ifError); }); - describe('transactions', function() { - beforeEach(function() { + describe('transactions', () => { + beforeEach(() => { // Trigger transaction mode. request.id = 'transaction-id'; request.requests_ = []; }); - it('should queue request', function() { + it('should queue request', () => { request.delete(key); assert(is.object(request.requests_[0].mutations[0].delete)); @@ -575,34 +569,28 @@ describe('Request', function() { }); }); - describe('get', function() { - describe('success', function() { + describe('get', () => { + describe('success', () => { const keys = [key]; const fakeEntities = [{a: 'a'}, {b: 'b'}]; - beforeEach(function() { - request.createReadStream = sandbox.spy(function() { + beforeEach(() => { + request.createReadStream = sandbox.spy(() => { const stream = through.obj(); - - setImmediate(function() { - fakeEntities.forEach(function(entity) { - stream.push(entity); - }); - + setImmediate(() => { + fakeEntities.forEach(entity => stream.push(entity)); stream.push(null); }); - return stream; }); }); - it('should return an array of entities', function(done) { + it('should return an array of entities', done => { const options = {}; - request.get(keys, options, function(err, entities) { + request.get(keys, options, (err, entities) => { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); - const spy = request.createReadStream.getCall(0); assert.strictEqual(spy.args[0], keys); assert.strictEqual(spy.args[1], options); @@ -610,23 +598,23 @@ describe('Request', function() { }); }); - it('should return a single entity', function(done) { - request.get(key, function(err, entity) { + it('should return a single entity', done => { + request.get(key, (err, entity) => { assert.ifError(err); assert.strictEqual(entity, fakeEntities[0]); done(); }); }); - it('should allow options to be omitted', function(done) { - request.get(keys, function(err) { + it('should allow options to be omitted', done => { + request.get(keys, err => { assert.ifError(err); done(); }); }); - it('should default options to an object', function(done) { - request.get(keys, null, function(err) { + it('should default options to an object', done => { + request.get(keys, null, err => { assert.ifError(err); const spy = request.createReadStream.getCall(0); @@ -636,23 +624,21 @@ describe('Request', function() { }); }); - describe('error', function() { + describe('error', () => { const error = new Error('err'); - beforeEach(function() { - request.createReadStream = sandbox.spy(function() { + beforeEach(() => { + request.createReadStream = sandbox.spy(() => { const stream = through.obj(); - - setImmediate(function() { + setImmediate(() => { stream.emit('error', error); }); - return stream; }); }); - it('send an error to the callback', function(done) { - request.get(key, function(err) { + it('send an error to the callback', done => { + request.get(key, err => { assert.strictEqual(err, error); done(); }); @@ -660,8 +646,8 @@ describe('Request', function() { }); }); - describe('insert', function() { - it('should prepare entity objects', function(done) { + describe('insert', () => { + it('should prepare entity objects', done => { const entityObject = {}; const preparedEntityObject = {prepared: true}; const expectedEntityObject = Object.assign({}, preparedEntityObject, { @@ -673,7 +659,7 @@ describe('Request', function() { return preparedEntityObject; }); - request.save = function(entities) { + request.save = entities => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -681,7 +667,7 @@ describe('Request', function() { request.insert(entityObject, assert.ifError); }); - it('should pass the correct arguments to save', function(done) { + it('should pass the correct arguments to save', done => { request.save = function(entities, callback) { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { @@ -696,18 +682,17 @@ describe('Request', function() { ]); callback(); }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.insert({key: key, data: {}}, done); + request.insert({key, data: {}}, done); }); }); - describe('runQueryStream', function() { - beforeEach(function() { - request.request_ = function() {}; + describe('runQueryStream', () => { + beforeEach(() => { + request.request_ = () => {}; }); - it('should clone the query', function(done) { + it('should clone the query', done => { let query = new FakeQuery(); query.namespace = 'namespace'; query = extend(true, new FakeQuery(), query); @@ -724,13 +709,13 @@ describe('Request', function() { .emit('reading'); }); - it('should make correct request when the stream is ready', function(done) { + it('should make correct request when the stream is ready', done => { const query = {namespace: 'namespace'}; const queryProto = {}; sandbox.stub(entity, 'queryToQueryProto').returns(queryProto); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'runQuery'); assert(is.empty(config.reqOpts.readOptions)); @@ -750,13 +735,13 @@ describe('Request', function() { .emit('reading'); }); - it('should allow customization of GAX options', function(done) { + it('should allow customization of GAX options', done => { sandbox.stub(entity, 'queryToQueryProto'); const options = { gaxOptions: {}, }; - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -767,9 +752,9 @@ describe('Request', function() { .emit('reading'); }); - it('should allow setting strong read consistency', function(done) { + it('should allow setting strong read consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); }; @@ -780,9 +765,9 @@ describe('Request', function() { .emit('reading'); }); - it('should allow setting strong eventual consistency', function(done) { + it('should allow setting strong eventual consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); }; @@ -793,20 +778,20 @@ describe('Request', function() { .emit('reading'); }); - describe('error', function() { + describe('error', () => { const error = new Error('Error.'); - beforeEach(function() { - request.request_ = function(config, callback) { + beforeEach(() => { + request.request_ = (config, callback) => { callback(error); }; }); - it('should emit error on a stream', function(done) { + it('should emit error on a stream', done => { sandbox.stub(entity, 'queryToQueryProto'); request .runQueryStream({}) - .on('error', function(err) { + .on('error', err => { assert.strictEqual(err, error); done(); }) @@ -814,7 +799,7 @@ describe('Request', function() { }); }); - describe('success', function() { + describe('success', () => { const entityResultsPerApiCall = { 1: [{a: true}], 2: [{b: true}, {c: true}], @@ -830,8 +815,8 @@ describe('Request', function() { }; let formatArrayStub; - beforeEach(function() { - request.request_ = function(config, callback) { + beforeEach(() => { + request.request_ = (config, callback) => { callback(null, apiResponse); }; @@ -842,7 +827,7 @@ describe('Request', function() { }); }); - it('should format results', function(done) { + it('should format results', done => { sandbox.stub(entity, 'queryToQueryProto'); formatArrayStub.restore(); sandbox.stub(entity, 'formatArray').callsFake(array => { @@ -850,21 +835,19 @@ describe('Request', function() { return array; }); - const entities: {}[] = []; + const entities: Array<{}> = []; request .runQueryStream({}) .on('error', done) - .on('data', function(entity) { - entities.push(entity); - }) - .on('end', function() { + .on('data', entity => entities.push(entity)) + .on('end', () => { assert.deepStrictEqual(entities, apiResponse.batch.entityResults); done(); }); }); - it('should re-run query if not finished', function(done) { + it('should re-run query if not finished', done => { const query = { limitVal: 1, offsetVal: 8, @@ -888,7 +871,7 @@ describe('Request', function() { return entityResultsPerApiCall[timesRequestCalled]; }); - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { timesRequestCalled++; const resp = extend(true, {}, apiResponse); @@ -898,17 +881,13 @@ describe('Request', function() { if (timesRequestCalled === 1) { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'runQuery'); - resp.batch.moreResults = 'NOT_FINISHED'; - callback(null, resp); } else { assert.strictEqual(startCalled, true); assert.strictEqual(offsetCalled, true); assert.strictEqual(config.reqOpts.query, queryProto); - resp.batch.moreResults = 'MORE_RESULTS_AFTER_LIMIT'; - callback(null, resp); } }; @@ -920,13 +899,12 @@ describe('Request', function() { ); startCalled = true; return this; - } + }; sandbox.stub(FakeQuery.prototype, 'offset').callsFake(offset_ => { const offset = query.offsetVal - apiResponse.batch.skippedResults; assert.strictEqual(offset_, offset); offsetCalled = true; - return this; }); sandbox.stub(FakeQuery.prototype, 'limit').callsFake(limit_ => { @@ -939,7 +917,6 @@ describe('Request', function() { // Should restore the original limit. assert.strictEqual(limit_, query.limitVal); } - return this; }); sandbox.stub(entity, 'queryToQueryProto').callsFake(query_ => { @@ -949,7 +926,7 @@ describe('Request', function() { return queryProto; }); - const entities: {}[] = []; + const entities: Array<{}> = []; let info; request @@ -961,7 +938,7 @@ describe('Request', function() { .on('data', function(entity) { entities.push(entity); }) - .on('end', function() { + .on('end', () => { const allResults = ([] as Array<{}>).slice .call(entityResultsPerApiCall[1]) .concat(entityResultsPerApiCall[2]); @@ -977,7 +954,7 @@ describe('Request', function() { }); }); - it('should handle large limitless queries', function(done) { + it('should handle large limitless queries', done => { let timesRequestCalled = 0; let limitCalled = false; @@ -985,9 +962,8 @@ describe('Request', function() { limitVal: -1, }; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { let batch; - if (++timesRequestCalled === 2) { batch = {}; } else { @@ -996,35 +972,32 @@ describe('Request', function() { endCursor: Buffer.from('abc'), }; } - - callback(null, {batch: batch}); + callback(null, {batch}); }; sandbox.stub(entity, 'queryToQueryProto').returns({}); - sandbox.stub(FakeQuery.prototype, 'limit').callsFake(() => { limitCalled = true; - return this; }); request .runQueryStream(query) .on('error', done) - .on('data', function() {}) - .on('end', function() { + .on('data', () => {}) + .on('end', () => { assert.strictEqual(timesRequestCalled, 2); assert.strictEqual(limitCalled, false); done(); }); }); - it('should not push more results if stream was ended', function(done) { + it('should not push more results if stream was ended', done => { let timesRequestCalled = 0; let entitiesEmitted = 0; sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { timesRequestCalled++; const resp = extend(true, {}, apiResponse); @@ -1052,10 +1025,10 @@ describe('Request', function() { }); }); - it('should not get more results if stream was ended', function(done) { + it('should not get more results if stream was ended', done => { let timesRequestCalled = 0; sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { timesRequestCalled++; callback(null, apiResponse); }; @@ -1072,18 +1045,18 @@ describe('Request', function() { }); }); - describe('runQuery', function() { + describe('runQuery', () => { const query = {}; - describe('success', function() { + describe('success', () => { const fakeInfo = {}; const fakeEntities = [{a: 'a'}, {b: 'b'}]; - beforeEach(function() { - request.runQueryStream = sandbox.spy(function() { + beforeEach(() => { + request.runQueryStream = sandbox.spy(() => { const stream = through.obj(); - setImmediate(function() { + setImmediate(() => { stream.emit('info', fakeInfo); fakeEntities.forEach(function(entity) { @@ -1097,7 +1070,7 @@ describe('Request', function() { }); }); - it('should return an array of entities', function(done) { + it('should return an array of entities', done => { const options = {}; request.runQuery(query, options, function(err, entities, info) { @@ -1112,15 +1085,15 @@ describe('Request', function() { }); }); - it('should allow options to be omitted', function(done) { - request.runQuery(query, function(err) { + it('should allow options to be omitted', done => { + request.runQuery(query, err => { assert.ifError(err); done(); }); }); - it('should default options to an object', function(done) { - request.runQuery(query, null, function(err) { + it('should default options to an object', done => { + request.runQuery(query, null, err => { assert.ifError(err); const spy = request.runQueryStream.getCall(0); @@ -1130,14 +1103,14 @@ describe('Request', function() { }); }); - describe('error', function() { + describe('error', () => { const error = new Error('err'); - beforeEach(function() { - request.runQueryStream = sandbox.spy(function() { + beforeEach(() => { + request.runQueryStream = sandbox.spy(() => { const stream = through.obj(); - setImmediate(function() { + setImmediate(() => { stream.emit('error', error); }); @@ -1145,8 +1118,8 @@ describe('Request', function() { }); }); - it('send an error to the callback', function(done) { - request.runQuery(query, function(err) { + it('send an error to the callback', done => { + request.runQuery(query, err => { assert.strictEqual(err, error); done(); }); @@ -1154,8 +1127,8 @@ describe('Request', function() { }); }); - describe('save', function() { - it('should save with keys', function(done) { + describe('save', () => { + it('should save with keys', done => { const expectedReq = { mutations: [ { @@ -1201,7 +1174,7 @@ describe('Request', function() { ], }; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); @@ -1211,22 +1184,22 @@ describe('Request', function() { callback(); }; request.save( - [{key: key, data: {k: 'v'}}, {key: key, data: {k: 'v'}}], + [{key, data: {k: 'v'}}, {key, data: {k: 'v'}}], done ); }); - it('should allow customization of GAX options', function(done) { + it('should allow customization of GAX options', done => { const gaxOptions = {}; - request.request_ = function(config) { + request.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; request.save( { - key: key, + key, data: {}, }, gaxOptions, @@ -1234,7 +1207,7 @@ describe('Request', function() { ); }); - it('should prepare entity objects', function(done) { + it('should prepare entity objects', done => { const entityObject = {}; let prepared = false; @@ -1242,13 +1215,13 @@ describe('Request', function() { assert.strictEqual(obj, entityObject); prepared = true; return { - key: key, + key, method: 'insert', data: {k: 'v'}, }; }); - request.request_ = function() { + request.request_ = () => { assert.strictEqual(prepared, true); done(); }; @@ -1256,8 +1229,8 @@ describe('Request', function() { request.save(entityObject, assert.ifError); }); - it('should save with specific method', function(done) { - request.request_ = function(config, callback) { + it('should save with specific method', done => { + request.request_ = (config, callback) => { assert.strictEqual(config.reqOpts.mutations.length, 3); assert(is.object(config.reqOpts.mutations[0].insert)); assert(is.object(config.reqOpts.mutations[1].update)); @@ -1277,19 +1250,19 @@ describe('Request', function() { request.save( [ - {key: key, method: 'insert', data: {k: 'v'}}, - {key: key, method: 'update', data: {k2: 'v2'}}, - {key: key, method: 'upsert', data: {k3: 'v3'}}, + {key, method: 'insert', data: {k: 'v'}}, + {key, method: 'update', data: {k2: 'v2'}}, + {key, method: 'upsert', data: {k3: 'v3'}}, ], done ); }); - it('should throw if a given method is not recognized', function() { - assert.throws(function() { + it('should throw if a given method is not recognized', () => { + assert.throws(() => { request.save( { - key: key, + key, method: 'auto_insert_id', data: { k: 'v', @@ -1300,10 +1273,10 @@ describe('Request', function() { }, /Method auto_insert_id not recognized/); }); - it('should not alter the provided data object', function(done) { + it('should not alter the provided data object', done => { const entities = [ { - key: key, + key, method: 'insert', indexed: false, data: { @@ -1316,7 +1289,7 @@ describe('Request', function() { ]; const expectedEntities = entities.map(x => extend(true, {}, x)); - request.request_ = function() { + request.request_ = () => { // By the time the request is made, the original object has already been // transformed into a raw request. assert.deepStrictEqual(entities, expectedEntities); @@ -1326,21 +1299,21 @@ describe('Request', function() { request.save(entities, assert.ifError); }); - it('should return apiResponse in callback', function(done) { + it('should return apiResponse in callback', done => { const key = new entity.Key({namespace: 'ns', path: ['Company']}); const mockCommitResponse = {}; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { callback(null, mockCommitResponse); }; - request.save({key: key, data: {}}, function(err, apiResponse) { + request.save({key, data: {}}, function(err, apiResponse) { assert.ifError(err); assert.strictEqual(mockCommitResponse, apiResponse); done(); }); }); - it('should allow setting the indexed value of a property', function(done) { - request.request_ = function(config) { + it('should allow setting the indexed value of a property', done => { + request.request_ = config => { const property = config.reqOpts.mutations[0].upsert.properties.name; assert.strictEqual(property.stringValue, 'value'); assert.strictEqual(property.excludeFromIndexes, true); @@ -1349,7 +1322,7 @@ describe('Request', function() { request.save( { - key: key, + key, data: [ { name: 'name', @@ -1362,8 +1335,8 @@ describe('Request', function() { ); }); - it('should allow setting the indexed value on arrays', function(done) { - request.request_ = function(config) { + it('should allow setting the indexed value on arrays', done => { + request.request_ = config => { const property = config.reqOpts.mutations[0].upsert.properties.name; property.arrayValue.values.forEach(function(value) { @@ -1375,7 +1348,7 @@ describe('Request', function() { request.save( { - key: key, + key, data: [ { name: 'name', @@ -1388,12 +1361,12 @@ describe('Request', function() { ); }); - it('should assign ID on keys without them', function(done) { + it('should assign ID on keys without them', done => { const incompleteKey = new entity.Key({path: ['Incomplete']}); const incompleteKey2 = new entity.Key({path: ['Incomplete']}); const completeKey = new entity.Key({path: ['Complete', 'Key']}); - const keyProtos: {}[] = []; + const keyProtos: Array<{}> = []; const ids = [1, 2]; const response = { @@ -1408,7 +1381,7 @@ describe('Request', function() { ], }; - request.request_ = function(config, callback) { + request.request_ = (config, callback) => { callback(null, response); }; @@ -1425,7 +1398,7 @@ describe('Request', function() { {key: incompleteKey2, data: {}}, {key: completeKey, data: {}}, ], - function(err) { + err => { assert.ifError(err); assert.strictEqual(incompleteKey.id, ids[0]); @@ -1440,17 +1413,17 @@ describe('Request', function() { ); }); - describe('transactions', function() { - beforeEach(function() { + describe('transactions', () => { + beforeEach(() => { // Trigger transaction mode. request.id = 'transaction-id'; request.requestCallbacks_ = []; request.requests_ = []; }); - it('should queue request & callback', function() { + it('should queue request & callback', () => { request.save({ - key: key, + key, data: [{name: 'name', value: 'value'}], }); @@ -1460,8 +1433,8 @@ describe('Request', function() { }); }); - describe('update', function() { - it('should prepare entity objects', function(done) { + describe('update', () => { + it('should prepare entity objects', done => { const entityObject = {}; const preparedEntityObject = {prepared: true}; const expectedEntityObject = Object.assign({}, preparedEntityObject, { @@ -1473,7 +1446,7 @@ describe('Request', function() { return preparedEntityObject; }); - request.save = function(entities) { + request.save = entities => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1481,7 +1454,7 @@ describe('Request', function() { request.update(entityObject, assert.ifError); }); - it('should pass the correct arguments to save', function(done) { + it('should pass the correct arguments to save', done => { request.save = function(entities, callback) { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { @@ -1498,12 +1471,12 @@ describe('Request', function() { }; const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.update({key: key, data: {}}, done); + request.update({key, data: {}}, done); }); }); - describe('upsert', function() { - it('should prepare entity objects', function(done) { + describe('upsert', () => { + it('should prepare entity objects', done => { const entityObject = {}; const preparedEntityObject = {prepared: true}; const expectedEntityObject = Object.assign({}, preparedEntityObject, { @@ -1515,7 +1488,7 @@ describe('Request', function() { return preparedEntityObject; }); - request.save = function(entities) { + request.save = entities => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1523,7 +1496,7 @@ describe('Request', function() { request.upsert(entityObject, assert.ifError); }); - it('should pass the correct arguments to save', function(done) { + it('should pass the correct arguments to save', done => { request.save = function(entities, callback) { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { @@ -1541,11 +1514,11 @@ describe('Request', function() { }; const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.upsert({key: key, data: {}}, done); + request.upsert({key, data: {}}, done); }); }); - describe('request_', function() { + describe('request_', () => { const CONFIG = { client: 'FakeClient', // name set at top of file method: 'method', @@ -1561,65 +1534,56 @@ describe('Request', function() { const PROJECT_ID = 'project-id'; - beforeEach(function() { + beforeEach(() => { const clients_ = new Map(); clients_.set(CONFIG.client, { - [CONFIG.method]: function() {}, + [CONFIG.method]() {}, }); - request.datastore = { - clients_: clients_, - + clients_, auth: { - getProjectId: function(callback) { + getProjectId(callback) { callback(null, PROJECT_ID); }, }, }; }); - it('should get the project ID', function(done) { - request.datastore.auth.getProjectId = function() { + it('should get the project ID', done => { + request.datastore.auth.getProjectId = () => { done(); }; - request.request_(CONFIG, assert.ifError); }); - it('should return error if getting project ID failed', function(done) { + it('should return error if getting project ID failed', done => { const error = new Error('Error.'); request.datastore.auth.getProjectId = function(callback) { callback(error); }; - - request.request_(CONFIG, function(err) { + request.request_(CONFIG, err => { assert.strictEqual(err, error); done(); }); }); - it('should initiate and cache the client', function() { + it('should initiate and cache the client', () => { const fakeClient = { - [CONFIG.method]: function() {}, + [CONFIG.method]() {}, }; - - v1FakeClientOverride = function(options) { - assert.deepStrictEqual(options, request.datastore.options); - return fakeClient; + v1FakeClientOverride = (options) => { + assert.deepStrictEqual(options, request.datastore.options); + return fakeClient; }; - request.datastore.clients_ = new Map(); - request.request_(CONFIG, assert.ifError); - const client = request.datastore.clients_.get(CONFIG.client); - assert.strictEqual(client, fakeClient); }); - it('should use the cached client', function(done) { - v1FakeClientOverride = function() { + it('should use the cached client', done => { + v1FakeClientOverride = () => { done(new Error('Should not re-instantiate a GAX client.')); }; @@ -1627,7 +1591,7 @@ describe('Request', function() { done(); }); - it('should replace the project ID token', function(done) { + it('should replace the project ID token', done => { const replacedReqOpts = {}; // tslint:disable-next-line no-any @@ -1643,7 +1607,7 @@ describe('Request', function() { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method]: function(reqOpts) { + [CONFIG.method](reqOpts) { assert.strictEqual(reqOpts, replacedReqOpts); done(); }, @@ -1652,10 +1616,10 @@ describe('Request', function() { request.request_(CONFIG, assert.ifError); }); - it('should send gaxOpts', function(done) { + it('should send gaxOpts', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method]: function(_, gaxO) { + [CONFIG.method](_, gaxO) { delete gaxO.headers; assert.deepStrictEqual(gaxO, CONFIG.gaxOpts); done(); @@ -1665,10 +1629,10 @@ describe('Request', function() { request.request_(CONFIG, assert.ifError); }); - it('should send google-cloud-resource-prefix', function(done) { + it('should send google-cloud-resource-prefix', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method]: function(_, gaxO) { + [CONFIG.method](_, gaxO) { assert.deepStrictEqual(gaxO.headers, { 'google-cloud-resource-prefix': 'projects/' + PROJECT_ID, }); @@ -1679,35 +1643,33 @@ describe('Request', function() { request.request_(CONFIG, assert.ifError); }); - describe('commit', function() { - it('should set the mode', function(done) { + describe('commit', () => { + it('should set the mode', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - commit: function(reqOpts) { + commit(reqOpts) { assert.strictEqual(reqOpts.mode, 'NON_TRANSACTIONAL'); done(); }, }); - const config = Object.assign({}, CONFIG, { method: 'commit', }); - request.request_(config, assert.ifError); }); }); - describe('transaction', function() { + describe('transaction', () => { const TRANSACTION_ID = 'transaction'; - beforeEach(function() { + beforeEach(() => { request.id = TRANSACTION_ID; }); - it('should set the commit transaction info', function(done) { + it('should set the commit transaction info', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - commit: function(reqOpts) { + commit(reqOpts) { assert.strictEqual(reqOpts.mode, 'TRANSACTIONAL'); assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); done(); @@ -1717,14 +1679,13 @@ describe('Request', function() { const config = Object.assign({}, CONFIG, { method: 'commit', }); - request.request_(config, assert.ifError); }); - it('should set the rollback transaction info', function(done) { + it('should set the rollback transaction info', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - rollback: function(reqOpts) { + rollback(reqOpts) { assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); done(); }, @@ -1733,18 +1694,17 @@ describe('Request', function() { const config = Object.assign({}, CONFIG, { method: 'rollback', }); - request.request_(config, assert.ifError); }); - it('should set the lookup transaction info', function(done) { + it('should set the lookup transaction info', done => { const config = extend(true, {}, CONFIG, { method: 'lookup', }); request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - lookup: function(reqOpts) { + lookup(reqOpts) { assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); done(); }, @@ -1753,14 +1713,14 @@ describe('Request', function() { request.request_(config, assert.ifError); }); - it('should set the runQuery transaction info', function(done) { + it('should set the runQuery transaction info', done => { const config = extend(true, {}, CONFIG, { method: 'runQuery', }); request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - runQuery: function(reqOpts) { + runQuery(reqOpts) { assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); done(); }, @@ -1769,7 +1729,7 @@ describe('Request', function() { request.request_(config, assert.ifError); }); - it('should throw if read consistency is specified', function() { + it('should throw if read consistency is specified', () => { const config = extend(true, {}, CONFIG, { method: 'runQuery', reqOpts: { @@ -1779,7 +1739,7 @@ describe('Request', function() { }, }); - assert.throws(function() { + assert.throws(() => { request.request_(config, assert.ifError); }, /Read consistency cannot be specified in a transaction\./); }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index b3a3f145200..09dd4b62fe8 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -23,7 +23,7 @@ const {entity} = require('../src/entity'); let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll: function(Class, options) { + promisifyAll(Class, options) { if (Class.name !== 'Transaction') { return; } @@ -34,8 +34,8 @@ const fakePfy = Object.assign({}, pfy, { // tslint:disable-next-line no-any const DatastoreRequestOverride: any = { - delete: function() {}, - save: function() {}, + delete() {}, + save() {}, }; class FakeDatastoreRequest { @@ -62,7 +62,7 @@ describe('Transaction', function() { const NAMESPACE = 'a-namespace'; const DATASTORE = { - request_: function() {}, + request_() {}, projectId: PROJECT_ID, namespace: NAMESPACE, }; @@ -121,7 +121,7 @@ describe('Transaction', function() { // tslint:disable-next-line no-any const fakeDataset: any = { request_: { - bind: function(context) { + bind(context) { assert.strictEqual(context, fakeDataset); setImmediate(function() { @@ -230,7 +230,7 @@ describe('Transaction', function() { transaction.delete(deleteArg2); transaction.save(saveArg2); - const args: {}[] = []; + const args: Array<{}> = []; let deleteCalled = 0; DatastoreRequestOverride.delete = function() { @@ -468,7 +468,7 @@ describe('Transaction', function() { done(); }; - transaction.run({gaxOptions: gaxOptions}); + transaction.run({gaxOptions}); }); describe('options.readOnly', function() { From 4cc1c0e2f9ca956cdd573baa309acd7e68dd4c69 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 3 Dec 2018 15:38:44 -0800 Subject: [PATCH 290/820] docs: update readme badges (#269) --- handwritten/nodejs-datastore/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 0bd8f529d9e..81c5ad5ecb6 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -5,8 +5,7 @@ # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) [![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) -[![CircleCI](https://img.shields.io/circleci/project/github/googleapis/nodejs-datastore.svg?style=flat)](https://circleci.com/gh/googleapis/nodejs-datastore) -[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/googleapis/nodejs-datastore?branch=master&svg=true)](https://ci.appveyor.com/project/googleapis/nodejs-datastore) +[![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) [![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) > Node.js idiomatic client for [Cloud Datastore][product-docs]. @@ -143,3 +142,4 @@ See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ [product-docs]: https://cloud.google.com/datastore/docs [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png + From fe7c2b23725f4d74c8acbf1911acd1f51020f5f4 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 4 Dec 2018 09:25:00 -0800 Subject: [PATCH 291/820] chore: update license file (#271) --- handwritten/nodejs-datastore/LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/LICENSE b/handwritten/nodejs-datastore/LICENSE index 7a4a3ea2424..d6456956733 100644 --- a/handwritten/nodejs-datastore/LICENSE +++ b/handwritten/nodejs-datastore/LICENSE @@ -199,4 +199,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. From f84a1799d9cf207bb96be4807f1397b9c9357435 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 5 Dec 2018 15:55:40 -0800 Subject: [PATCH 292/820] chore: nyc ignore build/test by default (#274) --- handwritten/nodejs-datastore/.nycrc | 3 ++- handwritten/nodejs-datastore/package.json | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index a1a8e6920ce..feb032400d4 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -3,7 +3,8 @@ "exclude": [ "src/*{/*,/**/*}.js", "src/*/v*/*.js", - "test/**/*.js" + "test/**/*.js", + "build/test" ], "watermarks": { "branches": [ diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d78c7aeb888..0d1991a1aa1 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -85,10 +85,5 @@ "proxyquire": "^2.0.1", "sinon": "^7.0.0", "typescript": "~3.2.0" - }, - "nyc": { - "exclude": [ - "build/test" - ] } } From a7be1cd9f4f8ef6fe569babbe7e186e51a875630 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Thu, 6 Dec 2018 15:03:24 -0500 Subject: [PATCH 293/820] Update doc comment showing structure of entity (#276) When a `get` is returned from datastore the schema of the entity has been extended to include the key. The comment showing the expected structure of the entity is being updated to include the key for completeness. --- handwritten/nodejs-datastore/samples/concepts.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 2947d655032..3cc6c089a5d 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -273,7 +273,15 @@ class Entity extends TestHelper { // category: 'Personal', // done: false, // priority: 4, - // description: 'Learn Cloud Datastore' + // description: 'Learn Cloud Datastore', + // [Symbol(KEY)]: + // Key { + // namespace: undefined, + // id: '...', + // kind: 'Task', + // path: [Getter] + // } + // } // }; console.log(entity); // [END datastore_lookup] From a637710194a7f2aa321a0b9c6cd70cab688d4388 Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Mon, 10 Dec 2018 13:35:20 -0800 Subject: [PATCH 294/820] build: add Kokoro configs for autorelease (#280) * build: add Kokoro configs for autorelease * build: add Kokoro configs for autorelease * chore: remove CircleCI config --- .../nodejs-datastore/.circleci/config.yml | 179 ------------------ .../nodejs-datastore/.circleci/key.json.enc | Bin 2368 -> 0 bytes .../.circleci/npm-install-retry.js | 60 ------ 3 files changed, 239 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.circleci/config.yml delete mode 100644 handwritten/nodejs-datastore/.circleci/key.json.enc delete mode 100755 handwritten/nodejs-datastore/.circleci/npm-install-retry.js diff --git a/handwritten/nodejs-datastore/.circleci/config.yml b/handwritten/nodejs-datastore/.circleci/config.yml deleted file mode 100644 index 86c63432242..00000000000 --- a/handwritten/nodejs-datastore/.circleci/config.yml +++ /dev/null @@ -1,179 +0,0 @@ -version: 2 -workflows: - version: 2 - tests: - jobs: &workflow_jobs - - node6: - filters: &all_commits - tags: - only: /.*/ - - node8: - filters: *all_commits - - node10: - filters: *all_commits - - lint: - requires: - - node6 - - node8 - - node10 - filters: *all_commits - - docs: - requires: - - node6 - - node8 - - node10 - filters: *all_commits - - system_tests: - requires: - - lint - - docs - filters: &master_and_releases - branches: - only: master - tags: &releases - only: '/^v[\d.]+$/' - - sample_tests: - requires: - - lint - - docs - filters: *master_and_releases - - publish_npm: - requires: - - system_tests - - sample_tests - filters: - branches: - ignore: /.*/ - tags: *releases - nightly: - triggers: - - schedule: - cron: 0 7 * * * - filters: - branches: - only: master - jobs: *workflow_jobs -jobs: - node6: - docker: - - image: 'node:6' - user: node - steps: &unit_tests_steps - - checkout - - run: &npm_install_and_link - name: Install and link the module - command: |- - mkdir -p /home/node/.npm-global - ./.circleci/npm-install-retry.js - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: npm test - node8: - docker: - - image: 'node:8' - user: node - steps: *unit_tests_steps - node10: - docker: - - image: 'node:10' - user: node - steps: *unit_tests_steps - lint: - docker: - - image: 'node:8' - user: node - steps: - - checkout - - run: *npm_install_and_link - - run: &samples_npm_install_and_link - name: Link the module being tested to the samples. - command: | - cd samples/ - npm link ../ - ./../.circleci/npm-install-retry.js - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: - name: Run linting. - command: npm run lint - environment: - NPM_CONFIG_PREFIX: /home/node/.npm-global - docs: - docker: - - image: 'node:8' - user: node - steps: - - checkout - - run: *npm_install_and_link - - run: npm run docs - sample_tests: - docker: - - image: 'node:8' - user: node - steps: - - checkout - - run: - name: Decrypt credentials. - command: | - if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - openssl aes-256-cbc -d -md md5 -in .circleci/key.json.enc \ - -out .circleci/key.json \ - -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" - fi - - run: *npm_install_and_link - - run: *samples_npm_install_and_link - - run: - name: Run sample tests. - command: npm run samples-test - environment: - GCLOUD_PROJECT: long-door-651 - GOOGLE_APPLICATION_CREDENTIALS: /home/node/samples/.circleci/key.json - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: - name: Remove unencrypted key. - command: | - if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - rm .circleci/key.json - fi - when: always - working_directory: /home/node/samples/ - system_tests: - docker: - - image: 'node:8' - user: node - steps: - - checkout - - run: - name: Decrypt credentials. - command: | - if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - for encrypted_key in .circleci/*.json.enc; do - openssl aes-256-cbc -d -md md5 -in $encrypted_key \ - -out $(echo $encrypted_key | sed 's/\.enc//') \ - -k "${SYSTEM_TESTS_ENCRYPTION_KEY}" - done - fi - - run: *npm_install_and_link - - run: - name: Run system tests. - command: npm run system-test - environment: - GCLOUD_PROJECT: long-door-651 - GOOGLE_APPLICATION_CREDENTIALS: /home/node/project/.circleci/key.json - NPM_CONFIG_PREFIX: /home/node/.npm-global - - run: - name: Remove unencrypted key. - command: | - if ! [[ -z "${SYSTEM_TESTS_ENCRYPTION_KEY}" ]]; then - rm .circleci/*.json - fi - when: always - publish_npm: - docker: - - image: 'node:8' - user: node - steps: - - checkout - - run: ./.circleci/npm-install-retry.js - - run: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc - - run: npm publish --access=public diff --git a/handwritten/nodejs-datastore/.circleci/key.json.enc b/handwritten/nodejs-datastore/.circleci/key.json.enc deleted file mode 100644 index 454e63675d40d07fa050575792d810938fb9aaed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2368 zcmV-G3BUGJVQh3|WM5ym5&dS<7inc^?@qJ6i%o(wG}}5*tz`Oo7t++gn*Di^H@GV2 zb4q0xWo*!qjaMoG^ZKT4Sh}B_`3Wk%YDc?VN*wJVoust|*4br6L({zjPi7Sx z3M%nna%Jiq2#c2G4 z*ly z;UP_g@|wo<-t6;Q`H&_46jFI4V)uU=#M6EW8Q`n`S9YZt^RrbWZN~_s2H}NGGr%Nr ztybYHb8rw)@&1x(lJ{Ng0VBhJGLJ%CbGsoMcjn`=%!CVrPw(PR^=p3dcwXiNr=Y`I z>&TTy)3<15yr7a2-``&(G=6kjpK^D(z49L%MneF`eUOlTWmBc1JU-N25GBgV=fz)Q z8<6f*u(}whhdo+`pc&{&AX{j9NXnnRRBTRlvY&4dP_`8PgrJ+`o44GT~C0gLJ?WdJCpdxCzP&J2G09=MUWu(zA*4c<+ zPvPYi+7wsDzA7RztCeuN={bocrpgXyO0r3_mLL5Naw`}wEu z$t*iE$D?#{ zpv?FsZ9cH^U2B^HYzv@M*@QXH5+A;e{cnMao^4aTPfbh3JnS>hGmfWpH7wQ$Ct5Igs2JzL9uOb~WOdpEXr4EDw$RBZ6@d)(b!9< zKW#`WqehCV0Mzd6_t1hMetqD}-?ty7wM(-I3(R2S;<$yC6W6Ef)VWi=nGZ(z1AK7K zX3g12lh-vEkOue*S=%!yB&1VM=QR7!jfMV`L+!5#A>9nK=GI5MGZVn^4kBvrtiE>3 z+maq*Pln06Nb3yKXJtMg;V0wAKhmu;0&R9=@ExrmTEU$Kn9(k>LsF;rJpD3!EG*N@?dFcjE0+@=$QvZUzt z@w$JmUt`}D&>LvI&rhU5o@7`7AZ^%&FJ@PwnMG~Tg5SfXUOnR_$@;Mo!FODrv~mkr zzfezPsiX|a?@_5Xt2kP+J=TU@*?r43bOBmklk^;I4aG|uu&-m3(*)tHB-72Re}pe` zsVyLfq$%cUqHY`$KO_7-ZQ;B(Ls0tjz^{Jm2uve5&(V#t9Mk!;&r2u8q*KYy6TAL_ zOHTbHLYT ze;t6*2Vv`3Ja*6weaP7L*wVG@LO^E6I`o9ryiDPqNQh*iCs{0D;qP3ekoQRU@dmO5 zp<{hj{xoiuUJun(bmW<7jo0(x-XAPtZ z7G-WqtlB4 z$TwLmAR?P?4FN7u8FR|r^#HfXrmae~U1AAo1kKioRvRm#&)BZ+?^kXGZF5%Ma)vnw zfS^;HE&PeE$dA(wfofW^mf4rIh~~hqd7~m0PJ5mjM#=Jkv1PzzPQ4(9L9bDzW~Idf zII{_{drGl9B^^vwM?&>h%H!%8sc1#wT8UP`0a>52lbnlKLet(~^L1JP;0BqH;S>!* zjy`{#+%>$0mx>dZ)dsw5gI!;+YskeF*={oW0DZ0_nY zvxl1ey|aiJ5KgX>#*TMn0DyQCQ2cE!xo;#1&hG)9)F|BuU+&o|^#BqV%)lXRiuuQ1 zMFe{bvnN?g`k!$EvT0MRel4qxkk%eUbUM^xG?Pb8mXkP4MD|By&t_H}cWw}qSm$%pWw mu({34{gqq2$q5PU1ssO>!lh*M&(;BVz>%P%;z|}#&c{GP#-g+U diff --git a/handwritten/nodejs-datastore/.circleci/npm-install-retry.js b/handwritten/nodejs-datastore/.circleci/npm-install-retry.js deleted file mode 100755 index 3240aa2cbf2..00000000000 --- a/handwritten/nodejs-datastore/.circleci/npm-install-retry.js +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env node - -let spawn = require('child_process').spawn; - -// -//USE: ./index.js [... NPM ARGS] -// - -let timeout = process.argv[2] || process.env.NPM_INSTALL_TIMEOUT || 60000; -let attempts = process.argv[3] || 3; -let args = process.argv.slice(4); -if (args.length === 0) { - args = ['install']; -} - -(function npm() { - let timer; - args.push('--verbose'); - let proc = spawn('npm', args); - proc.stdout.pipe(process.stdout); - proc.stderr.pipe(process.stderr); - proc.stdin.end(); - proc.stdout.on('data', () => { - setTimer(); - }); - proc.stderr.on('data', () => { - setTimer(); - }); - - // side effect: this also restarts when npm exits with a bad code even if it - // didnt timeout - proc.on('close', (code, signal) => { - clearTimeout(timer); - if (code || signal) { - console.log('[npm-are-you-sleeping] npm exited with code ' + code + ''); - - if (--attempts) { - console.log('[npm-are-you-sleeping] restarting'); - npm(); - } else { - console.log('[npm-are-you-sleeping] i tried lots of times. giving up.'); - throw new Error("npm install fails"); - } - } - }); - - function setTimer() { - clearTimeout(timer); - timer = setTimeout(() => { - console.log('[npm-are-you-sleeping] killing npm with SIGTERM'); - proc.kill('SIGTERM'); - // wait a couple seconds - timer = setTimeout(() => { - // its it's still not closed sigkill - console.log('[npm-are-you-sleeping] killing npm with SIGKILL'); - proc.kill('SIGKILL'); - }, 2000); - }, timeout); - } -})(); From e9d8d2a9eed2b978e29bdac6115d34f036256ff5 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 11 Dec 2018 10:34:52 -0800 Subject: [PATCH 295/820] chore: update nyc and eslint configs (#284) --- handwritten/nodejs-datastore/.eslintignore | 1 + handwritten/nodejs-datastore/.nycrc | 1 + 2 files changed, 2 insertions(+) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index 2f642cb6044..f0c7aead4bf 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -1,3 +1,4 @@ **/node_modules src/**/doc/* build/ +docs/ diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index feb032400d4..88b001cb587 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -1,5 +1,6 @@ { "report-dir": "./.coverage", + "reporter": "lcov", "exclude": [ "src/*{/*,/**/*}.js", "src/*/v*/*.js", From 3d18e3758737dcbe56e8ea76d29332b4ef55472c Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 14 Dec 2018 11:22:24 -0800 Subject: [PATCH 296/820] refactor(ts): enable lint and fix (#287) --- handwritten/nodejs-datastore/package.json | 4 +- .../nodejs-datastore/src/.eslintrc.yml | 4 + handwritten/nodejs-datastore/src/entity.ts | 48 +- handwritten/nodejs-datastore/src/index.ts | 106 ++-- handwritten/nodejs-datastore/src/query.ts | 3 +- handwritten/nodejs-datastore/src/request.ts | 354 ++++++------ .../nodejs-datastore/src/transaction.ts | 279 +++++----- .../src/v1/datastore_client.js | 1 - .../nodejs-datastore/system-test/datastore.ts | 519 ++++++++---------- .../nodejs-datastore/test/.eslintrc.yml | 1 + handwritten/nodejs-datastore/test/entity.ts | 301 +++++----- handwritten/nodejs-datastore/test/gapic-v1.js | 13 +- handwritten/nodejs-datastore/test/index.ts | 251 ++++----- handwritten/nodejs-datastore/test/query.ts | 129 +++-- handwritten/nodejs-datastore/test/request.ts | 461 +++++++--------- .../nodejs-datastore/test/transaction.ts | 239 ++++---- 16 files changed, 1303 insertions(+), 1410 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/.eslintrc.yml diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0d1991a1aa1..e91262964c5 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -31,14 +31,14 @@ "scripts": { "docs": "jsdoc -c .jsdoc.js", "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", - "lint": "eslint 'samples/*.js' 'samples/**/*.js'", + "lint": "gts check && eslint '**/*.js'", "cover": "nyc --reporter=lcov mocha build/test && nyc report", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", "test-no-cover": "mocha build/test", "test": "npm run cover", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", - "fix": "eslint 'samples/*.js' 'samples/**/*.js' --fix", + "fix": "gts fix && eslint '**/*.js' --fix", "clean": "gts clean", "compile": "tsc -p . && cp -r src/v1/ build/src/v1/ && cp -r protos build/ && cp test/*.js build/test", "prepare": "npm run compile", diff --git a/handwritten/nodejs-datastore/src/.eslintrc.yml b/handwritten/nodejs-datastore/src/.eslintrc.yml new file mode 100644 index 00000000000..a04a47e416e --- /dev/null +++ b/handwritten/nodejs-datastore/src/.eslintrc.yml @@ -0,0 +1,4 @@ +--- +rules: + node/no-unpublished-require: off + node/no-missing-require: off diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index ed289258a3e..eb9e7283c37 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -184,7 +184,6 @@ entity.isDsGeoPoint = isDsGeoPoint; * }); */ class Key { - namespace: string; id?: string; name?: string; @@ -294,7 +293,7 @@ function decodeValueProto(valueProto) { } case 'integerValue': { - return parseInt(value, 10); + return Number(value); } case 'entityValue': { @@ -306,13 +305,11 @@ function decodeValueProto(valueProto) { } case 'timestampValue': { - const milliseconds = parseInt(value.nanos, 10) / 1e6; - return new Date(parseInt(value.seconds, 10) * 1000 + milliseconds); + const milliseconds = Number(value.nanos) / 1e6; + return new Date(Number(value.seconds) * 1000 + milliseconds); } - default: { - return value; - } + default: { return value; } } } @@ -455,6 +452,7 @@ function entityFromEntityProto(entityProto) { const properties = entityProto.properties || {}; + // tslint:disable-next-line forin for (const property in properties) { const value = properties[property]; entityObject[property] = entity.decodeValueProto(value); @@ -502,10 +500,13 @@ function entityToEntityProto(entityObject) { const entityProto = { key: null, - properties: Object.keys(properties).reduce((encoded, key) => { - encoded[key] = entity.encodeValue(properties[key]); - return encoded; - }, {}), + properties: Object.keys(properties) + .reduce( + (encoded, key) => { + encoded[key] = entity.encodeValue(properties[key]); + return encoded; + }, + {}), }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { @@ -526,11 +527,9 @@ function entityToEntityProto(entityObject) { if (!hasArrayPath && !hasEntityPath) { // This is the path end node. Traversal ends here in either case. if (entity.properties) { - if ( - entity.properties[path] && - // array properties should be excluded with [] syntax: - !entity.properties[path].arrayValue - ) { + if (entity.properties[path] && + // array properties should be excluded with [] syntax: + !entity.properties[path].arrayValue) { // This is the property to exclude! entity.properties[path].excludeFromIndexes = true; } @@ -561,11 +560,9 @@ function entityToEntityProto(entityObject) { return; } - if ( - firstPathPartIsArray && - // check also if the property in question is actually an array value. - entity.properties[firstPathPart].arrayValue - ) { + if (firstPathPartIsArray && + // check also if the property in question is actually an array value. + entity.properties[firstPathPart].arrayValue) { const array = entity.properties[firstPathPart].arrayValue; array.values.forEach(value => { if (remainderPath === '') { @@ -573,15 +570,15 @@ function entityToEntityProto(entityObject) { // equivalent with excluding all its values // (including entity values at their roots): excludePathFromEntity( - value, - remainderPath // === '' + value, + remainderPath // === '' ); } else { // Path traversal continues at value.entityValue, // if it is an entity, or must end at value. excludePathFromEntity( - value.entityValue || value, - remainderPath // !== '' + value.entityValue || value, + remainderPath // !== '' ); } }); @@ -758,6 +755,7 @@ function keyToKeyProto(key) { } keyProto.path.unshift(pathElement); + // tslint:disable-next-line no-conditional-assignment } while ((key = key.parent) && ++numKeysWalked); return keyProto; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f8fd84aba6c..6acf4e6be10 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -37,13 +37,13 @@ */ import * as arrify from 'arrify'; -import {GrpcClient, GrpcClientOptions} from 'google-gax'; import {GoogleAuth} from 'google-auth-library'; +import {GrpcClient, GrpcClientOptions} from 'google-gax'; import * as is from 'is'; -import {DatastoreRequest} from './request'; import {entity} from './entity'; import {Query} from './query'; +import {DatastoreRequest} from './request'; import {Transaction} from './transaction'; const {grpc} = new GrpcClient({} as GrpcClientOptions); @@ -88,7 +88,7 @@ const gapic = Object.freeze({ * * Additionally, `DATASTORE_PROJECT_ID` is recognized. If you have this set, * you don't need to provide a `projectId`. - *- + * * * @class * @extends {DatastoreRequest} @@ -104,13 +104,14 @@ const gapic = Object.freeze({ * @example Import the client library * const {Datastore} = require('@google-cloud/datastore'); * - * @example Create a client that uses Application Default Credentials (ADC): - * const datastore = new Datastore(); + * @example Create a client that uses Application + * Default Credentials (ADC): const datastore = new Datastore(); * - * @example Create a client with explicit credentials: - * const datastore = new Datastore({ - * projectId: 'your-project-id', - * keyFilename: '/path/to/keyfile.json' + * @example Create a client with explicit + * credentials: const datastore = new Datastore({ projectId: + * 'your-project-id', keyFilename: '/path/to/keyfile.json' * }); * * @example Retrieving Records @@ -312,9 +313,11 @@ const gapic = Object.freeze({ * const customerId2 = 4993882; * const customerKey1 = datastore.key(['Customer', customerId1]); * const customerKey2 = datastore.key(['Customer', customerId2]); - * const cookieKey1 = datastore.key(['Customer', customerId1, 'Cookie', 'cookie28839']); // child entity - * const cookieKey2 = datastore.key(['Customer', customerId1, 'Cookie', 'cookie78984']); // child entity - * const cookieKey3 = datastore.key(['Customer', customerId2, 'Cookie', 'cookie93911']); // child entity + * const cookieKey1 = datastore.key(['Customer', customerId1, 'Cookie', + * 'cookie28839']); // child entity const cookieKey2 = + * datastore.key(['Customer', customerId1, 'Cookie', 'cookie78984']); // child + * entity const cookieKey3 = datastore.key(['Customer', customerId2, 'Cookie', + * 'cookie93911']); // child entity * * const entities = []; * @@ -400,7 +403,7 @@ class Datastore extends DatastoreRequest { this.namespace = options.namespace; const userProvidedProjectId = - options.projectId || process.env.DATASTORE_PROJECT_ID; + options.projectId || process.env.DATASTORE_PROJECT_ID; const defaultProjectId = '{{projectId}}'; /** @@ -413,16 +416,15 @@ class Datastore extends DatastoreRequest { this.determineBaseUrl_(options.apiEndpoint); this.options = Object.assign( - { - libName: 'gccl', - libVersion: require('../../package.json').version, - scopes: gapic.v1.DatastoreClient.scopes, - servicePath: this.baseUrl_, - port: is.number(this.port_) ? this.port_ : 443, - projectId: userProvidedProjectId, - }, - options - ); + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: gapic.v1.DatastoreClient.scopes, + servicePath: this.baseUrl_, + port: is.number(this.port_) ? this.port_ : 443, + projectId: userProvidedProjectId, + }, + options); if (this.customEndpoint_) { this.options.sslCreds = grpc.credentials.createInsecure(); } @@ -647,7 +649,8 @@ class Datastore extends DatastoreRequest { } /** - * Helper to create a Key object, scoped to the instance's namespace by default. + * Helper to create a Key object, scoped to the instance's namespace by + * default. * * You may also specify a configuration object to define a namespace and path. * @@ -664,15 +667,15 @@ class Datastore extends DatastoreRequest { * const key = datastore.key('Company'); * * @example - * Create a complete key with a kind value of `Company` and id `123`. - * const {Datastore} = require('@google-cloud/datastore'); + * Create a complete key with a kind value of `Company` and id + * `123`. const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 123]); * * @example - * If the ID integer is outside the bounds of a JavaScript Number object, create an Int. - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); + * If the ID integer is outside the bounds of a JavaScript Number + * object, create an Int. const {Datastore} = + * require('@google-cloud/datastore'); const datastore = new Datastore(); * const key = datastore.key([ * 'Company', * datastore.int('100000000000001234') @@ -686,8 +689,8 @@ class Datastore extends DatastoreRequest { * const key = datastore.key(['Company', 'Google']); * * @example - * Create a complete key from a provided namespace and path. - * const {Datastore} = require('@google-cloud/datastore'); + * Create a complete key from a provided namespace and + * path. const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key({ * namespace: 'My-NS', @@ -695,12 +698,10 @@ class Datastore extends DatastoreRequest { * }); */ key(options) { - options = is.object(options) - ? options - : { - namespace: this.namespace, - path: arrify(options), - }; + options = is.object(options) ? options : { + namespace: this.namespace, + path: arrify(options), + }; return new entity.Key(options); } @@ -742,9 +743,9 @@ class Datastore extends DatastoreRequest { } /** - * Determine the appropriate endpoint to use for API requests. If not explicitly - * defined, check for the "DATASTORE_EMULATOR_HOST" environment variable, used - * to connect to a local Datastore server. + * Determine the appropriate endpoint to use for API requests. If not + * explicitly defined, check for the "DATASTORE_EMULATOR_HOST" environment + * variable, used to connect to a local Datastore server. * * @private * @@ -768,10 +769,9 @@ class Datastore extends DatastoreRequest { this.port_ = Number(baseUrl.match(port)![1]); } - this.baseUrl_ = baseUrl - .replace(leadingProtocol, '') - .replace(port, '') - .replace(trailingSlashes, ''); + this.baseUrl_ = baseUrl.replace(leadingProtocol, '') + .replace(port, '') + .replace(trailingSlashes, ''); } /** @@ -813,19 +813,21 @@ export {Datastore}; * @module {Datastore} @google-cloud/datastore * @alias nodejs-datastore * - * @example Install the client library with npm: - * npm install --save @google-cloud/datastore + * @example Install the client library with npm: npm install --save + * @google-cloud/datastore * * @example Import the client library * const {Datastore} = require('@google-cloud/datastore'); * - * @example Create a client that uses Application Default Credentials (ADC): - * const datastore = new Datastore(); + * @example Create a client that uses Application + * Default Credentials (ADC): const datastore = new Datastore(); * - * @example Create a client with explicit credentials: - * const datastore = new Datastore({ - * projectId: 'your-project-id', - * keyFilename: '/path/to/keyfile.json' + * @example Create a client with explicit + * credentials: const datastore = new Datastore({ projectId: + * 'your-project-id', keyFilename: '/path/to/keyfile.json' * }); * * @example include:samples/quickstart.js diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 2079b3076ac..27d2f136e0e 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -384,7 +384,8 @@ class Query { * }); * * //- - * // A keys-only query returns just the keys of the result entities instead of + * // A keys-only query returns just the keys of the result entities instead + * of * // the entities themselves, at lower latency and cost. * //- * query.select('__key__'); diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 6d5f8980662..42a8a971cc6 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import * as arrify from 'arrify'; import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisifyAll} from '@google-cloud/promisify'; +import * as arrify from 'arrify'; + const concat = require('concat-stream'); import * as extend from 'extend'; import * as is from 'is'; @@ -31,7 +32,7 @@ const gapic = Object.freeze({ import {entity} from './entity'; import {Query} from './query'; -import { Datastore } from '.'; +import {Datastore} from '.'; /** * A map of read consistency values to proto codes. @@ -54,7 +55,6 @@ const CONSISTENCY_PROTO_CODE = { * @class */ class DatastoreRequest { - id; requests_; requestCallbacks_; @@ -143,9 +143,12 @@ class DatastoreRequest { * }); * * //- - * // You may prefer to create IDs from a non-default namespace by providing an - * // incomplete key with a namespace. Similar to the previous example, the call - * // below will create 100 new IDs, but from the Company kind that exists under + * // You may prefer to create IDs from a non-default namespace by providing + * an + * // incomplete key with a namespace. Similar to the previous example, the + * call + * // below will create 100 new IDs, but from the Company kind that exists + * under * // the "ns-test" namespace. * //- * const incompleteKey = datastore.key({ @@ -177,23 +180,23 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'allocateIds', - reqOpts: { - keys: new Array(options.allocations).fill(entity.keyToKeyProto(key)), + { + client: 'DatastoreClient', + method: 'allocateIds', + reqOpts: { + keys: + new Array(options.allocations).fill(entity.keyToKeyProto(key)), + }, + gaxOpts: options.gaxOptions, }, - gaxOpts: options.gaxOptions, - }, - (err, resp) => { - if (err) { - callback(err, null, resp); - return; - } - const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - callback(null, keys, resp); - } - ); + (err, resp) => { + if (err) { + callback(err, null, resp); + return; + } + const keys = arrify(resp.keys).map(entity.keyFromKeyProto); + callback(null, keys, resp); + }); } /** @@ -242,37 +245,36 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'lookup', - reqOpts, - gaxOpts: options.gaxOptions, - }, - (err, resp) => { - if (err) { - stream.destroy(err); - return; - } - - const entities = entity.formatArray(resp.found); - const nextKeys = (resp.deferred || []) - .map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); - - split(entities, stream).then(streamEnded => { - if (streamEnded) { + { + client: 'DatastoreClient', + method: 'lookup', + reqOpts, + gaxOpts: options.gaxOptions, + }, + (err, resp) => { + if (err) { + stream.destroy(err); return; } - if (nextKeys.length > 0) { - makeRequest(nextKeys); - return; - } + const entities = entity.formatArray(resp.found); + const nextKeys = (resp.deferred || []) + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); + + split(entities, stream).then(streamEnded => { + if (streamEnded) { + return; + } - stream.push(null); + if (nextKeys.length > 0) { + makeRequest(nextKeys); + return; + } + + stream.push(null); + }); }); - } - ); }; const stream = streamEvents(through.obj()); @@ -352,14 +354,13 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions, - }, - callback - ); + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions, + }, + callback); } /** @@ -456,13 +457,11 @@ class DatastoreRequest { options = options || {}; this.createReadStream(keys, options) - .on('error', callback) - .pipe( - concat(results => { + .on('error', callback) + .pipe(concat(results => { const isSingleLookup = !is.array(keys); callback(null, isSingleLookup ? results[0] : results); - }) - ); + })); } /** @@ -480,26 +479,25 @@ class DatastoreRequest { * @param {object} callback.apiResponse The full API response. */ insert(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(x => { - x.method = 'insert'; - return x; - }); + entities = + arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { + x.method = 'insert'; + return x; + }); this.save(entities, callback); } /** * Datastore allows you to query entities by kind, filter them by property - * filters, and sort them by a property name. Projection and pagination are also - * supported. + * filters, and sort them by a property name. Projection and pagination are + * also supported. * - * The query is run, and the results are returned as the second argument to your - * callback. A third argument may also exist, which is a query object that uses - * the end cursor from the previous query as the starting cursor for the next - * query. You can pass that object back to this method to see if more results - * exist. + * The query is run, and the results are returned as the second argument to + * your callback. A third argument may also exist, which is a query object + * that uses the end cursor from the previous query as the starting cursor for + * the next query. You can pass that object back to this method to see if more + * results exist. * * @param {Query} query Query object. * @param {object} [options] Optional configuration. @@ -526,7 +524,8 @@ class DatastoreRequest { * * @example * //- - * // Where you see `transaction`, assume this is the context that's relevant to + * // Where you see `transaction`, assume this is the context that's relevant + * to * // your use, whether that be a Datastore or a Transaction object. * //- * const query = datastore.createQuery('Lion'); @@ -562,7 +561,8 @@ class DatastoreRequest { * }); * * //- - * // A keys-only query returns just the keys of the result entities instead of + * // A keys-only query returns just the keys of the result entities instead + * of * // the entities themselves, at lower latency and cost. * //- * const keysOnlyQuery = datastore.createQuery('Lion').select('__key__'); @@ -591,15 +591,14 @@ class DatastoreRequest { let info; this.runQueryStream(query, options) - .on('error', callback) - .on('info', info_ => { - info = info_; - }) - .pipe( - concat(results => { + .on('error', callback) + .on('info', + info_ => { + info = info_; + }) + .pipe(concat(results => { callback(null, results, info); - }) - ); + })); } /** @@ -657,14 +656,13 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'runQuery', - reqOpts, - gaxOpts: options.gaxOptions, - }, - onResultSet - ); + { + client: 'DatastoreClient', + method: 'runQuery', + reqOpts, + gaxOpts: options.gaxOptions, + }, + onResultSet); }; function onResultSet(err, resp) { @@ -726,15 +724,15 @@ class DatastoreRequest { * associated object is inserted and the original Key object is updated to * contain the generated ID. * - * This method will determine the correct Datastore method to execute (`upsert`, - * `insert`, or `update`) by using the key(s) provided. For example, if you - * provide an incomplete key (one without an ID), the request will create a new - * entity and have its ID automatically assigned. If you provide a complete key, - * the entity will be updated with the data specified. + * This method will determine the correct Datastore method to execute + * (`upsert`, `insert`, or `update`) by using the key(s) provided. For + * example, if you provide an incomplete key (one without an ID), the request + * will create a new entity and have its ID automatically assigned. If you + * provide a complete key, the entity will be updated with the data specified. * * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an `excludeFromIndexes` array. See - * below for an example. + * included in *all* indexes, you must supply an `excludeFromIndexes` array. + * See below for an example. * * @borrows {@link Transaction#save} as save * @@ -743,8 +741,8 @@ class DatastoreRequest { * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the example below to see - * how to target properties at different levels of nesting within your + * indexing using a simple JSON path notation. See the example below to + * see how to target properties at different levels of nesting within your * @param {string} [entities.method] Explicit method to use, either 'insert', * 'update', or 'upsert'. * @param {object} entities.data Data to save with the provided key. @@ -759,7 +757,8 @@ class DatastoreRequest { * //- * // Save a single entity. * // - * // Notice that we are providing an incomplete key. After saving, the original + * // Notice that we are providing an incomplete key. After saving, the + * original * // Key object used to save will be updated to contain the path with its * // generated ID. * //- @@ -779,8 +778,10 @@ class DatastoreRequest { * //- * // Save a single entity using a provided name instead of auto-generated ID. * // - * // Here we are providing a key with name instead of an ID. After saving, the - * // original Key object used to save will be updated to contain the path with + * // Here we are providing a key with name instead of an ID. After saving, + * the + * // original Key object used to save will be updated to contain the path + * with * // the name instead of a generated ID. * //- * const key = datastore.key(['Company', 'donutshack']); @@ -826,7 +827,8 @@ class DatastoreRequest { * // Save different types of data, including ints, doubles, dates, booleans, * // blobs, and lists. * // - * // Notice that we are providing an incomplete key. After saving, the original + * // Notice that we are providing an incomplete key. After saving, the + * original * // Key object used to save will be updated to contain the path with its * // generated ID. * //- @@ -944,62 +946,60 @@ class DatastoreRequest { // Iterate over the entity objects, build a proto from all keys and values, // then place in the correct mutation array (insert, update, etc). - entities - .map(DatastoreRequest.prepareEntityObject_) - .forEach((entityObject, index) => { - const mutation = {}; - // tslint:disable-next-line no-any - let entityProto: any = {}; - let method = 'upsert'; - - if (entityObject.method) { - if (methods[entityObject.method]) { - method = entityObject.method; - } else { - throw new Error( - 'Method ' + entityObject.method + ' not recognized.' - ); + entities.map(DatastoreRequest.prepareEntityObject_) + .forEach((entityObject, index) => { + const mutation = {}; + // tslint:disable-next-line no-any + let entityProto: any = {}; + let method = 'upsert'; + + if (entityObject.method) { + if (methods[entityObject.method]) { + method = entityObject.method; + } else { + throw new Error( + 'Method ' + entityObject.method + ' not recognized.'); + } } - } - if (!entity.isKeyComplete(entityObject.key)) { - insertIndexes[index] = true; - } + if (!entity.isKeyComplete(entityObject.key)) { + insertIndexes[index] = true; + } - // @TODO remove in @google-cloud/datastore@2.0.0 - // This was replaced with a more efficient mechanism in the top-level - // `excludeFromIndexes` option. - if (is.array(entityObject.data)) { - entityProto.properties = entityObject.data.reduce((acc, data) => { - const value = entity.encodeValue(data.value); - - if (is.boolean(data.excludeFromIndexes)) { - const excluded = data.excludeFromIndexes; - let values = value.arrayValue && value.arrayValue.values; - - if (values) { - values = values.map(x => { - x.excludeFromIndexes = excluded; - return x; - }); - } else { - value.excludeFromIndexes = data.excludeFromIndexes; + // @TODO remove in @google-cloud/datastore@2.0.0 + // This was replaced with a more efficient mechanism in the top-level + // `excludeFromIndexes` option. + if (is.array(entityObject.data)) { + entityProto.properties = entityObject.data.reduce((acc, data) => { + const value = entity.encodeValue(data.value); + + if (is.boolean(data.excludeFromIndexes)) { + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map(x => { + x.excludeFromIndexes = excluded; + return x; + }); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } } - } - acc[data.name] = value; + acc[data.name] = value; - return acc; - }, {}); - } else { - entityProto = entity.entityToEntityProto(entityObject); - } + return acc; + }, {}); + } else { + entityProto = entity.entityToEntityProto(entityObject); + } - entityProto.key = entity.keyToKeyProto(entityObject.key); + entityProto.key = entity.keyToKeyProto(entityObject.key); - mutation[method] = entityProto; - mutations.push(mutation); - }); + mutation[method] = entityProto; + mutations.push(mutation); + }); const reqOpts = { mutations, @@ -1032,14 +1032,13 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions, - }, - onCommit - ); + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions, + }, + onCommit); } /** @@ -1057,12 +1056,11 @@ class DatastoreRequest { * @param {object} callback.apiResponse The full API response. */ update(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(x => { - x.method = 'update'; - return x; - }); + entities = + arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { + x.method = 'update'; + return x; + }); this.save(entities, callback); } @@ -1082,19 +1080,18 @@ class DatastoreRequest { * @param {object} callback.apiResponse The full API response. */ upsert(entities, callback) { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map(x => { - x.method = 'upsert'; - return x; - }); + entities = + arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { + x.method = 'upsert'; + return x; + }); this.save(entities, callback); } /** - * Make a request to the API endpoint. Properties to indicate a transactional or - * non-transactional operation are added automatically. + * Make a request to the API endpoint. Properties to indicate a transactional + * or non-transactional operation are added automatically. * * @param {object} config Configuration object. * @param {object} config.gaxOpts GAX options. @@ -1132,8 +1129,7 @@ class DatastoreRequest { if (isTransaction && (method === 'lookup' || method === 'runQuery')) { if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { throw new Error( - 'Read consistency cannot be specified in a transaction.' - ); + 'Read consistency cannot be specified in a transaction.'); } reqOpts.readOptions = { @@ -1151,9 +1147,7 @@ class DatastoreRequest { if (!datastore.clients_.has(clientName)) { datastore.clients_.set( - clientName, - new gapic.v1[clientName](datastore.options) - ); + clientName, new gapic.v1[clientName](datastore.options)); } const gaxClient = datastore.clients_.get(clientName); reqOpts = replaceProjectIdToken(reqOpts, projectId!); diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index ab34c49915d..9dab1b61056 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import * as arrify from 'arrify'; import {promisifyAll} from '@google-cloud/promisify'; +import * as arrify from 'arrify'; import * as is from 'is'; import {entity} from './entity'; @@ -83,26 +83,28 @@ class Transaction extends DatastoreRequest { } /*! Developer Documentation - * - * Below, we override two methods that we inherit from DatastoreRequest: - * `delete` and `save`. This is done because: - * - * A) the documentation needs to be different for a transactional save, and - * B) we build up a "modifiedEntities_" array on this object, used to build - * the final commit request with. - */ + * + * Below, we override two methods that we inherit from DatastoreRequest: + * `delete` and `save`. This is done because: + * + * A) the documentation needs to be different for a transactional save, and + * B) we build up a "modifiedEntities_" array on this object, used to build + * the final commit request with. + */ /** - * Commit the remote transaction and finalize the current transaction instance. + * Commit the remote transaction and finalize the current transaction + * instance. * - * If the commit request fails, we will automatically rollback the transaction. + * If the commit request fails, we will automatically rollback the + * transaction. * * @param {object} [gaxOptions] Request configuration options, outlined here: * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. * @param {function} callback The callback function. * @param {?error} callback.err An error returned while making this request. - * If the commit fails, we automatically try to rollback the transaction (see - * {module:datastore/transaction#rollback}). + * If the commit fails, we automatically try to rollback the transaction + * (see {module:datastore/transaction#rollback}). * @param {object} callback.apiResponse The full API response. * * @example @@ -139,100 +141,102 @@ class Transaction extends DatastoreRequest { const keys = {}; this.modifiedEntities_ - // Reverse the order of the queue to respect the "last queued request wins" - // behavior. - .reverse() - // Limit the operations we're going to send through to only the most - // recently queued operations. E.g., if a user tries to save with the same - // key they just asked to be deleted, the delete request will be ignored, - // giving preference to the save operation. - .filter(modifiedEntity => { - const key = modifiedEntity.entity.key; - - if (!entity.isKeyComplete(key)) { - return true; - } - - const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); - - if (!keys[stringifiedKey]) { - keys[stringifiedKey] = true; - return true; - } - - return false; - }) - // Group entities together by method: `save` mutations, then `delete`. Note: - // `save` mutations being first is required to maintain order when assigning - // IDs to incomplete keys. - .sort((a, b) => { - return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; - }) - // Group arguments together so that we only make one call to each method. - // This is important for `DatastoreRequest.save`, especially, as that method - // handles assigning auto-generated IDs to the original keys passed in. When - // we eventually execute the `save` method's API callback, having all the - // keys together is necessary to maintain order. - .reduce((acc, entityObject) => { - const lastEntityObject = acc[acc.length - 1]; - const sameMethod = - lastEntityObject && entityObject.method === lastEntityObject.method; - - if (!lastEntityObject || !sameMethod) { - acc.push(entityObject); - } else { - lastEntityObject.args = lastEntityObject.args.concat( - entityObject.args - ); - } - - return acc; - }, []) - // Call each of the mutational methods (DatastoreRequest[save,delete]) to - // build up a `req` array on this instance. This will also build up a - // `callbacks` array, that is the same callback that would run if we were - // using `save` and `delete` outside of a transaction, to process the - // response from the API. - .forEach(modifiedEntity => { - const method = modifiedEntity.method; - const args = modifiedEntity.args.reverse(); - DatastoreRequest.prototype[method].call(this, args, () => {}); - }); + // Reverse the order of the queue to respect the "last queued request + // wins" behavior. + .reverse() + // Limit the operations we're going to send through to only the most + // recently queued operations. E.g., if a user tries to save with the + // same key they just asked to be deleted, the delete request will be + // ignored, giving preference to the save operation. + .filter(modifiedEntity => { + const key = modifiedEntity.entity.key; + + if (!entity.isKeyComplete(key)) { + return true; + } + + const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); + + if (!keys[stringifiedKey]) { + keys[stringifiedKey] = true; + return true; + } + + return false; + }) + // Group entities together by method: `save` mutations, then `delete`. + // Note: `save` mutations being first is required to maintain order when + // assigning IDs to incomplete keys. + .sort((a, b) => { + return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; + }) + // Group arguments together so that we only make one call to each + // method. This is important for `DatastoreRequest.save`, especially, as + // that method handles assigning auto-generated IDs to the original keys + // passed in. When we eventually execute the `save` method's API + // callback, having all the keys together is necessary to maintain + // order. + .reduce( + (acc, entityObject) => { + const lastEntityObject = acc[acc.length - 1]; + const sameMethod = lastEntityObject && + entityObject.method === lastEntityObject.method; + + if (!lastEntityObject || !sameMethod) { + acc.push(entityObject); + } else { + lastEntityObject.args = + lastEntityObject.args.concat(entityObject.args); + } + + return acc; + }, + []) + // Call each of the mutational methods (DatastoreRequest[save,delete]) + // to build up a `req` array on this instance. This will also build up a + // `callbacks` array, that is the same callback that would run if we + // were using `save` and `delete` outside of a transaction, to process + // the response from the API. + .forEach(modifiedEntity => { + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); + DatastoreRequest.prototype[method].call(this, args, () => {}); + }); // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. const reqOpts = { - mutations: this.requests_.map(x => x.mutations).reduce((a, b) => a.concat(b), []), + mutations: this.requests_.map(x => x.mutations) + .reduce((a, b) => a.concat(b), []), }; this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions, - }, - (err, resp) => { - if (err) { - // Rollback automatically for the user. - this.rollback(() => { - // Provide the error & API response from the failed commit to the user. - // Even a failed rollback should be transparent. - // RE: https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 - callback(err, resp); + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions, + }, + (err, resp) => { + if (err) { + // Rollback automatically for the user. + this.rollback(() => { + // Provide the error & API response from the failed commit to the + // user. Even a failed rollback should be transparent. RE: + // https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } + + // The `callbacks` array was built previously. These are the callbacks + // that handle the API response normally when using the + // DatastoreRequest.save and .delete methods. + this.requestCallbacks_.forEach(cb => { + cb(null, resp); }); - return; - } - - // The `callbacks` array was built previously. These are the callbacks that - // handle the API response normally when using the DatastoreRequest.save and - // .delete methods. - this.requestCallbacks_.forEach(cb => { - cb(null, resp); + callback(null, resp); }); - callback(null, resp); - } - ); } /** @@ -322,7 +326,8 @@ class Transaction extends DatastoreRequest { } /** - * Reverse a transaction remotely and finalize the current transaction instance. + * Reverse a transaction remotely and finalize the current transaction + * instance. * * @param {object} [gaxOptions] Request configuration options, outlined here: * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. @@ -363,21 +368,20 @@ class Transaction extends DatastoreRequest { callback = callback || (() => {}); this.request_( - { - client: 'DatastoreClient', - method: 'rollback', - gaxOpts: gaxOptions, - }, - (err, resp) => { - this.skipCommit = true; - callback(err || null, resp); - } - ); + { + client: 'DatastoreClient', + method: 'rollback', + gaxOpts: gaxOptions, + }, + (err, resp) => { + this.skipCommit = true; + callback(err || null, resp); + }); } /** - * Begin a remote transaction. In the callback provided, run your transactional - * commands. + * Begin a remote transaction. In the callback provided, run your + * transactional commands. * * @param {object} [options] Configuration object. * @param {object} [options.gaxOptions] Request configuration options, outlined @@ -454,43 +458,42 @@ class Transaction extends DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'beginTransaction', - reqOpts, - gaxOpts: options.gaxOptions, - }, - (err, resp) => { - if (err) { - callback(err, null, resp); - return; - } - this.id = resp.transaction; - callback(null, this, resp); - } - ); + { + client: 'DatastoreClient', + method: 'beginTransaction', + reqOpts, + gaxOpts: options.gaxOptions, + }, + (err, resp) => { + if (err) { + callback(err, null, resp); + return; + } + this.id = resp.transaction; + callback(null, this, resp); + }); } /** - * Insert or update the specified object(s) in the current transaction. If a key - * is incomplete, its associated object is inserted and the original Key object - * is updated to contain the generated ID. + * Insert or update the specified object(s) in the current transaction. If a + * key is incomplete, its associated object is inserted and the original Key + * object is updated to contain the generated ID. * - * This method will determine the correct Datastore method to execute (`upsert`, - * `insert`, or `update`) by using the key(s) provided. For example, if you - * provide an incomplete key (one without an ID), the request will create a new - * entity and have its ID automatically assigned. If you provide a complete key, - * the entity will be updated with the data specified. + * This method will determine the correct Datastore method to execute + * (`upsert`, `insert`, or `update`) by using the key(s) provided. For + * example, if you provide an incomplete key (one without an ID), the request + * will create a new entity and have its ID automatically assigned. If you + * provide a complete key, the entity will be updated with the data specified. * * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an `excludeFromIndexes` array. See - * below for an example. + * included in *all* indexes, you must supply an `excludeFromIndexes` array. + * See below for an example. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the example below to see - * how to target properties at different levels of nesting within your + * indexing using a simple JSON path notation. See the example below to + * see how to target properties at different levels of nesting within your * entity. * @param {object} entities.data Data to save with the provided key. * diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index e5d2319cd0f..c76ba04d342 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -613,5 +613,4 @@ class DatastoreClient { } } - module.exports = DatastoreClient; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index eaca9431dda..b540295338e 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -23,7 +23,7 @@ describe('Datastore', () => { const testKinds: Array<{}> = []; const datastore = new Datastore(); // Override the Key method so we can track what keys are created during the - // tests. They are then deleted in the `after` hook. + // tests. They are then deleted in the `after` hook. const key = datastore.key; datastore.key = function(options) { const keyObject = key.call(this, options); @@ -121,33 +121,32 @@ describe('Datastore', () => { }; datastore.save( - { - key: postKey, - data, - excludeFromIndexes: [ - 'longString', - 'longStringArray[]', - 'metadata.obj.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString', - ], - }, - err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { + { + key: postKey, + data, + excludeFromIndexes: [ + 'longString', + 'longStringArray[]', + 'metadata.obj.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ], + }, + err => { assert.ifError(err); - assert.deepStrictEqual(entity, data); - assert.deepStrictEqual(entity[datastore.KEY], postKey); + datastore.get(postKey, (err, entity) => { + assert.ifError(err); + + assert.deepStrictEqual(entity, data); + assert.deepStrictEqual(entity[datastore.KEY], postKey); - datastore.delete(postKey, done); + datastore.delete(postKey, done); + }); }); - } - ); }); it('should save/get/delete with a key name', done => { @@ -255,22 +254,21 @@ describe('Datastore', () => { ]); datastore.save( - { - key: longIdKey, - data: { - test: true, + { + key: longIdKey, + data: { + test: true, + }, }, - }, - err => { - assert.ifError(err); - - datastore.get(longIdKey, (err, entity) => { + err => { assert.ifError(err); - assert.strictEqual(entity.test, true); - done(); + + datastore.get(longIdKey, (err, entity) => { + assert.ifError(err); + assert.strictEqual(entity.test, true); + done(); + }); }); - } - ); }); it('should fail explicitly set second insert on save', done => { @@ -283,20 +281,19 @@ describe('Datastore', () => { assert(postKey.id); datastore.save( - { - key: postKey, - method: 'insert', - data: post, - }, - err => { - assert.notStrictEqual(err, null); // should fail insert - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - assert.deepStrictEqual(entity, post); - datastore.delete(postKey, done); + { + key: postKey, + method: 'insert', + data: post, + }, + err => { + assert.notStrictEqual(err, null); // should fail insert + datastore.get(postKey, (err, entity) => { + assert.ifError(err); + assert.deepStrictEqual(entity, post); + datastore.delete(postKey, done); + }); }); - } - ); }); }); @@ -304,16 +301,15 @@ describe('Datastore', () => { const postKey = datastore.key('Post'); datastore.save( - { - key: postKey, - method: 'update', - data: post, - }, - err => { - assert.notStrictEqual(err, null); - done(); - } - ); + { + key: postKey, + method: 'update', + data: post, + }, + err => { + assert.notStrictEqual(err, null); + done(); + }); }); it('should save/get/delete multiple entities at once', done => { @@ -331,16 +327,14 @@ describe('Datastore', () => { const key2 = datastore.key('Post'); datastore.save( - [{key: key1, data: post}, {key: key2, data: post2}], - err => { - assert.ifError(err); - datastore.get([key1, key2], (err, entities) => { + [{key: key1, data: post}, {key: key2, data: post2}], err => { assert.ifError(err); - assert.strictEqual(entities.length, 2); - datastore.delete([key1, key2], done); + datastore.get([key1, key2], (err, entities) => { + assert.ifError(err); + assert.strictEqual(entities.length, 2); + datastore.delete([key1, key2], done); + }); }); - } - ); }); it('should get multiple entities in a stream', done => { @@ -348,53 +342,49 @@ describe('Datastore', () => { const key2 = datastore.key('Post'); datastore.save( - [{key: key1, data: post}, {key: key2, data: post}], - err => { - assert.ifError(err); - - let numEntitiesEmitted = 0; + [{key: key1, data: post}, {key: key2, data: post}], err => { + assert.ifError(err); - datastore - .createReadStream([key1, key2]) - .on('error', done) - .on('data', () => { - numEntitiesEmitted++; - }) - .on('end', () => { - assert.strictEqual(numEntitiesEmitted, 2); - datastore.delete([key1, key2], done); - }); - } - ); + let numEntitiesEmitted = 0; + + datastore.createReadStream([key1, key2]) + .on('error', done) + .on('data', + () => { + numEntitiesEmitted++; + }) + .on('end', () => { + assert.strictEqual(numEntitiesEmitted, 2); + datastore.delete([key1, key2], done); + }); + }); }); it('should save keys as a part of entity and query by key', done => { const personKey = datastore.key(['People', 'US', 'Person', 'name']); datastore.save( - { - key: personKey, - data: { - fullName: 'Full name', - linkedTo: personKey, // himself + { + key: personKey, + data: { + fullName: 'Full name', + linkedTo: personKey, // himself + }, }, - }, - err => { - assert.ifError(err); + err => { + assert.ifError(err); - const query = datastore - .createQuery('Person') - .hasAncestor(datastore.key(['People', 'US'])) - .filter('linkedTo', personKey); + const query = datastore.createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); - datastore.runQuery(query, (err, results) => { - assert.ifError(err); - assert.strictEqual(results[0].fullName, 'Full name'); - assert.deepStrictEqual(results[0].linkedTo, personKey); - datastore.delete(personKey, done); + datastore.runQuery(query, (err, results) => { + assert.ifError(err); + assert.strictEqual(results[0].fullName, 'Full name'); + assert.deepStrictEqual(results[0].linkedTo, personKey); + datastore.delete(personKey, done); + }); }); - } - ); }); describe('entity types', () => { @@ -405,22 +395,21 @@ describe('Datastore', () => { const key = datastore.key('Person'); datastore.save( - { - key, - data: { - year: integerType, + { + key, + data: { + year: integerType, + }, }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { + err => { assert.ifError(err); - assert.strictEqual(entity.year, integerValue); - done(); + + datastore.get(key, (err, entity) => { + assert.ifError(err); + assert.strictEqual(entity.year, integerValue); + done(); + }); }); - } - ); }); it('should save and decode a double', done => { @@ -430,22 +419,21 @@ describe('Datastore', () => { const key = datastore.key('Person'); datastore.save( - { - key, - data: { - nines: doubleType, + { + key, + data: { + nines: doubleType, + }, }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { + err => { assert.ifError(err); - assert.strictEqual(entity.nines, doubleValue); - done(); + + datastore.get(key, (err, entity) => { + assert.ifError(err); + assert.strictEqual(entity.nines, doubleValue); + done(); + }); }); - } - ); }); it('should save and decode a geo point', done => { @@ -458,22 +446,21 @@ describe('Datastore', () => { const key = datastore.key('Person'); datastore.save( - { - key, - data: { - location: geoPointType, + { + key, + data: { + location: geoPointType, + }, }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { + err => { assert.ifError(err); - assert.deepStrictEqual(entity.location, geoPointValue); - done(); + + datastore.get(key, (err, entity) => { + assert.ifError(err); + assert.deepStrictEqual(entity.location, geoPointValue); + done(); + }); }); - } - ); }); }); }); @@ -562,19 +549,16 @@ describe('Datastore', () => { }); it('should limit queries', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(5); + const q = + datastore.createQuery('Character').hasAncestor(ancestor).limit(5); datastore.runQuery(q, (err, firstEntities, info) => { assert.ifError(err); assert.strictEqual(firstEntities.length, 5); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .start(info.endCursor); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .start(info.endCursor); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); @@ -587,10 +571,8 @@ describe('Datastore', () => { it('should not go over a limit', done => { const limit = 3; - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(limit); + const q = + datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); datastore.runQuery(q, (err, results) => { assert.ifError(err); @@ -602,44 +584,41 @@ describe('Datastore', () => { it('should run a query as a stream', done => { const q = datastore.createQuery('Character').hasAncestor(ancestor); let resultsReturned = 0; - datastore - .runQueryStream(q) - .on('error', done) - .on('data', () => { - resultsReturned++; - }) - .on('end', () => { - assert.strictEqual(resultsReturned, characters.length); - done(); - }); + datastore.runQueryStream(q) + .on('error', done) + .on('data', + () => { + resultsReturned++; + }) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); }); it('should not go over a limit with a stream', done => { const limit = 3; - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(limit); + const q = + datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); let resultsReturned = 0; - datastore - .runQueryStream(q) - .on('error', done) - .on('data', () => { - resultsReturned++; - }) - .on('end', () => { - assert.strictEqual(resultsReturned, limit); - done(); - }); + datastore.runQueryStream(q) + .on('error', done) + .on('data', + () => { + resultsReturned++; + }) + .on('end', () => { + assert.strictEqual(resultsReturned, limit); + done(); + }); }); it('should filter queries with simple indexes', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', '>=', 20); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '>=', 20); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -649,11 +628,10 @@ describe('Datastore', () => { }); it('should filter queries with defined indexes', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('family', 'Stark') - .filter('appearances', '>=', 20); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('family', 'Stark') + .filter('appearances', '>=', 20); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -675,10 +653,9 @@ describe('Datastore', () => { it('should filter by key', done => { const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('__key__', key); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .filter('__key__', key); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -688,10 +665,9 @@ describe('Datastore', () => { }); it('should order queries', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances'); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances'); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -704,10 +680,10 @@ describe('Datastore', () => { }); it('should select projections', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .select(['name', 'family']); + const q = + datastore.createQuery('Character').hasAncestor(ancestor).select([ + 'name', 'family' + ]); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -727,12 +703,11 @@ describe('Datastore', () => { }); it('should paginate with offset and limit', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(3) - .order('appearances'); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(3) + .order('appearances'); datastore.runQuery(q, (err, entities, info) => { assert.ifError(err); @@ -741,11 +716,10 @@ describe('Datastore', () => { assert.strictEqual(entities[0].name, 'Robb'); assert.strictEqual(entities[2].name, 'Catelyn'); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info.endCursor); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info.endCursor); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); @@ -758,21 +732,19 @@ describe('Datastore', () => { }); it('should resume from a start cursor', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(2) - .order('appearances'); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(2) + .order('appearances'); datastore.runQuery(q, (err, entities, info) => { assert.ifError(err); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info.endCursor); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info.endCursor); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); @@ -787,10 +759,9 @@ describe('Datastore', () => { }); it('should group queries', done => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .groupBy('appearances'); + const q = datastore.createQuery('Character') + .hasAncestor(ancestor) + .groupBy('appearances'); datastore.runQuery(q, (err, entities) => { assert.ifError(err); @@ -836,63 +807,61 @@ describe('Datastore', () => { const incompleteKey = datastore.key('Company'); datastore.save( - { - key: deleteKey, - data: {}, - }, - err => { - assert.ifError(err); - - const transaction = datastore.transaction(); - - transaction.run(err => { + { + key: deleteKey, + data: {}, + }, + err => { assert.ifError(err); - transaction.delete(deleteKey); - - transaction.save([ - { - key, - data: {rating: 10}, - }, - { - key: incompleteKey, - data: {rating: 100}, - }, - ]); + const transaction = datastore.transaction(); - transaction.commit(err => { + transaction.run(err => { assert.ifError(err); - // Incomplete key should have been given an ID. - assert.strictEqual(incompleteKey.path.length, 2); - - async.parallel( - [ - // The key queued for deletion should have been deleted. - callback => { - datastore.get(deleteKey, (err, entity) => { - assert.ifError(err); - assert.strictEqual(typeof entity, 'undefined'); - callback(); - }); - }, + transaction.delete(deleteKey); - // Data should have been updated on the key. - callback => { - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.rating, 10); - callback(); - }); - }, - ], - done - ); + transaction.save([ + { + key, + data: {rating: 10}, + }, + { + key: incompleteKey, + data: {rating: 100}, + }, + ]); + + transaction.commit(err => { + assert.ifError(err); + + // Incomplete key should have been given an ID. + assert.strictEqual(incompleteKey.path.length, 2); + + async.parallel( + [ + // The key queued for deletion should have been deleted. + callback => { + datastore.get(deleteKey, (err, entity) => { + assert.ifError(err); + assert.strictEqual(typeof entity, 'undefined'); + callback(); + }); + }, + + // Data should have been updated on the key. + callback => { + datastore.get(key, (err, entity) => { + assert.ifError(err); + assert.strictEqual(entity.rating, 10); + callback(); + }); + }, + ], + done); + }); }); }); - } - ); }); it('should use the last modification to a key', done => { diff --git a/handwritten/nodejs-datastore/test/.eslintrc.yml b/handwritten/nodejs-datastore/test/.eslintrc.yml index 73f7bbc946f..2eb32898bf5 100644 --- a/handwritten/nodejs-datastore/test/.eslintrc.yml +++ b/handwritten/nodejs-datastore/test/.eslintrc.yml @@ -3,3 +3,4 @@ env: mocha: true rules: node/no-unpublished-require: off + node/no-missing-require: off diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index fb521f6d851..d42941f475e 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -18,22 +18,22 @@ import * as assert from 'assert'; import * as extend from 'extend'; import {Datastore} from '../src'; -describe('entity', function() { +describe('entity', () => { let entity; - beforeEach(function() { + beforeEach(() => { delete require.cache[require.resolve('../src/entity.js')]; entity = require('../src/entity.js').entity; }); - describe('KEY_SYMBOL', function() { - it('should export the symbol', function() { + describe('KEY_SYMBOL', () => { + it('should export the symbol', () => { assert.strictEqual(entity.KEY_SYMBOL.toString(), 'Symbol(KEY)'); }); }); - describe('Double', function() { - it('should store the value', function() { + describe('Double', () => { + it('should store the value', () => { const value = 8.3; const double = new entity.Double(value); @@ -41,25 +41,25 @@ describe('entity', function() { }); }); - describe('isDsDouble', function() { - it('should correctly identify a Double', function() { + describe('isDsDouble', () => { + it('should correctly identify a Double', () => { const double = new entity.Double(0.42); assert.strictEqual(entity.isDsDouble(double), true); }); - it('should correctly identify a homomorphic non-Double', function() { + it('should correctly identify a homomorphic non-Double', () => { const nonDouble = Object.assign({}, new entity.Double(42)); assert.strictEqual(entity.isDsDouble(nonDouble), false); }); - it('should correctly identify a primitive', function() { + it('should correctly identify a primitive', () => { const primitiveDouble = 0.42; assert.strictEqual(entity.isDsDouble(primitiveDouble), false); }); }); - describe('Int', function() { - it('should store the stringified value', function() { + describe('Int', () => { + it('should store the stringified value', () => { const value = 8; const int = new entity.Int(value); @@ -67,25 +67,25 @@ describe('entity', function() { }); }); - describe('isDsInt', function() { - it('should correctly identify an Int', function() { + describe('isDsInt', () => { + it('should correctly identify an Int', () => { const int = new entity.Int(42); assert.strictEqual(entity.isDsInt(int), true); }); - it('should correctly identify homomorphic non-Int', function() { + it('should correctly identify homomorphic non-Int', () => { const nonInt = Object.assign({}, new entity.Int(42)); assert.strictEqual(entity.isDsInt(nonInt), false); }); - it('should correctly identify a primitive', function() { + it('should correctly identify a primitive', () => { const primitiveInt = 42; assert.strictEqual(entity.isDsInt(primitiveInt), false); }); }); - describe('GeoPoint', function() { - it('should store the value', function() { + describe('GeoPoint', () => { + it('should store the value', () => { const value = { latitude: 24, longitude: 88, @@ -96,62 +96,62 @@ describe('entity', function() { }); }); - describe('isDsGeoPoint', function() { - it('should correctly identify a GeoPoint', function() { + describe('isDsGeoPoint', () => { + it('should correctly identify a GeoPoint', () => { const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); assert.strictEqual(entity.isDsGeoPoint(geoPoint), true); }); - it('should correctly identify a homomorphic non-GeoPoint', function() { + it('should correctly identify a homomorphic non-GeoPoint', () => { const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); const nonGeoPoint = Object.assign({}, geoPoint); assert.strictEqual(entity.isDsGeoPoint(nonGeoPoint), false); }); }); - describe('Key', function() { - it('should assign the namespace', function() { + describe('Key', () => { + it('should assign the namespace', () => { const namespace = 'NS'; const key = new entity.Key({namespace, path: []}); assert.strictEqual(key.namespace, namespace); }); - it('should assign the kind', function() { + it('should assign the kind', () => { const kind = 'kind'; const key = new entity.Key({path: [kind]}); assert.strictEqual(key.kind, kind); }); - it('should assign the ID', function() { + it('should assign the ID', () => { const id = 11; const key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id); }); - it('should assign the ID from an Int', function() { + it('should assign the ID from an Int', () => { const id = new entity.Int(11); const key = new entity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id.value); }); - it('should assign the name', function() { + it('should assign the name', () => { const name = 'name'; const key = new entity.Key({path: ['Kind', name]}); assert.strictEqual(key.name, name); }); - it('should assign a parent', function() { + it('should assign a parent', () => { const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert(key.parent instanceof entity.Key); }); - it('should not modify input path', function() { + it('should not modify input path', () => { const inputPath = ['ParentKind', 1, 'Kind', 1]; - new entity.Key({path: inputPath}); + const key = new entity.Key({path: inputPath}); assert.deepStrictEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); }); - it('should always compute the correct path', function() { + it('should always compute the correct path', () => { const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert.deepStrictEqual(key.path, ['ParentKind', 1, 'Kind', 1]); @@ -162,20 +162,20 @@ describe('entity', function() { }); }); - describe('isDsKey', function() { - it('should correctly identify a Key', function() { + describe('isDsKey', () => { + it('should correctly identify a Key', () => { const key = new entity.Key({path: ['Kind', 1]}); assert.strictEqual(entity.isDsKey(key), true); }); - it('should correctly identify a homomorphic non-Key', function() { + it('should correctly identify a homomorphic non-Key', () => { const notKey = Object.assign({}, new entity.Key({path: ['Kind', 1]})); assert.strictEqual(entity.isDsKey(notKey), false); }); }); - describe('decodeValueProto', function() { - it('should decode arrays', function() { + describe('decodeValueProto', () => { + it('should decode arrays', () => { const expectedValue = [{}]; const valueProto = { @@ -188,10 +188,10 @@ describe('entity', function() { let run = false; const decodeValueProto = entity.decodeValueProto; - entity.decodeValueProto = function(valueProto) { + entity.decodeValueProto = (valueProto) => { if (!run) { run = true; - return decodeValueProto.apply(null, arguments); + return decodeValueProto(valueProto); } assert.strictEqual(valueProto, expectedValue[0]); @@ -199,12 +199,10 @@ describe('entity', function() { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), - expectedValue - ); + entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode blobs', function() { + it('should decode blobs', () => { const expectedValue = Buffer.from('Hi'); const valueProto = { @@ -213,12 +211,10 @@ describe('entity', function() { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), - expectedValue - ); + entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode null', function() { + it('should decode null', () => { const expectedValue = null; const valueProto = { @@ -230,7 +226,7 @@ describe('entity', function() { assert.deepStrictEqual(decodedValue, expectedValue); }); - it('should decode doubles', function() { + it('should decode doubles', () => { const expectedValue = 8.3; const valueProto = { @@ -241,7 +237,7 @@ describe('entity', function() { assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode ints', function() { + it('should decode ints', () => { const expectedValue = 8; const valueProto = { @@ -252,7 +248,7 @@ describe('entity', function() { assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode entities', function() { + it('should decode entities', () => { const expectedValue = {}; const valueProto = { @@ -260,7 +256,7 @@ describe('entity', function() { entityValue: expectedValue, }; - entity.entityFromEntityProto = function(entityProto) { + entity.entityFromEntityProto = (entityProto) => { assert.strictEqual(entityProto, expectedValue); return expectedValue; }; @@ -268,7 +264,7 @@ describe('entity', function() { assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode keys', function() { + it('should decode keys', () => { const expectedValue = {}; const valueProto = { @@ -276,7 +272,7 @@ describe('entity', function() { keyValue: expectedValue, }; - entity.keyFromKeyProto = function(keyProto) { + entity.keyFromKeyProto = (keyProto) => { assert.strictEqual(keyProto, expectedValue); return expectedValue; }; @@ -284,7 +280,7 @@ describe('entity', function() { assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode timestamps', function() { + it('should decode timestamps', () => { const date = new Date(); const seconds = Math.floor(date.getTime() / 1000); @@ -301,12 +297,10 @@ describe('entity', function() { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), - expectedValue - ); + entity.decodeValueProto(valueProto), expectedValue); }); - it('should return the value if no conversions are necessary', function() { + it('should return the value if no conversions are necessary', () => { const expectedValue = false; const valueProto = { @@ -318,8 +312,8 @@ describe('entity', function() { }); }); - describe('encodeValue', function() { - it('should encode a boolean', function() { + describe('encodeValue', () => { + it('should encode a boolean', () => { const value = true; const expectedValueProto = { @@ -329,7 +323,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode null', function() { + it('should encode null', () => { const value = null; const expectedValueProto = { @@ -339,7 +333,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode an int', function() { + it('should encode an int', () => { const value = 8; const expectedValueProto = { @@ -354,7 +348,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode an Int object', function() { + it('should encode an Int object', () => { const value = new entity.Int(3); const expectedValueProto = { @@ -364,7 +358,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a double', function() { + it('should encode a double', () => { const value = 8.3; const expectedValueProto = { @@ -379,7 +373,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a Double object', function() { + it('should encode a Double object', () => { const value = new entity.Double(3); const expectedValueProto = { @@ -389,7 +383,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a GeoPoint object', function() { + it('should encode a GeoPoint object', () => { const value = new entity.GeoPoint(); const expectedValueProto = { @@ -399,7 +393,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a date', function() { + it('should encode a date', () => { const value = new Date(); const seconds = value.getTime() / 1000; @@ -413,7 +407,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a string', function() { + it('should encode a string', () => { const value = 'Hi'; const expectedValueProto = { @@ -423,7 +417,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a buffer', function() { + it('should encode a buffer', () => { const value = Buffer.from('Hi'); const expectedValueProto = { @@ -433,7 +427,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode an array', function() { + it('should encode an array', () => { const value = [{}]; const expectedValueProto = { @@ -445,10 +439,10 @@ describe('entity', function() { let run = false; const encodeValue = entity.encodeValue; - entity.encodeValue = function(value_) { + entity.encodeValue = (value_) => { if (!run) { run = true; - return encodeValue.apply(null, arguments); + return encodeValue(value_); } assert.strictEqual(value_, value[0]); @@ -458,7 +452,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode a Key', function() { + it('should encode a Key', () => { const value = new entity.Key({ namespace: 'ns', path: ['Kind', 1], @@ -468,7 +462,7 @@ describe('entity', function() { keyValue: value, }; - entity.keyToKeyProto = function(key) { + entity.keyToKeyProto = (key) => { assert.strictEqual(key, value); return value; }; @@ -476,7 +470,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should encode an object', function() { + it('should encode an object', () => { const value = { key: 'value', }; @@ -492,10 +486,10 @@ describe('entity', function() { let run = false; const encodeValue = entity.encodeValue; - entity.encodeValue = function(value_) { + entity.encodeValue = (value_) => { if (!run) { run = true; - return encodeValue.apply(null, arguments); + return encodeValue(value_); } assert.strictEqual(value_, value.key); @@ -505,7 +499,7 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should clone an object', function() { + it('should clone an object', () => { const value = { a: { b: { @@ -522,7 +516,7 @@ describe('entity', function() { assert.notStrictEqual(value, encodedValue); }); - it('should encode an empty object', function() { + it('should encode an empty object', () => { const value = {}; const expectedValueProto = { @@ -534,15 +528,15 @@ describe('entity', function() { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); - it('should throw if an invalid value was provided', function() { - assert.throws(function() { + it('should throw if an invalid value was provided', () => { + assert.throws(() => { entity.encodeValue(); }, /Unsupported field value/); }); }); - describe('entityFromEntityProto', function() { - it('should convert entity proto to entity', function() { + describe('entityFromEntityProto', () => { + it('should convert entity proto to entity', () => { const expectedEntity = { name: 'Stephen', }; @@ -557,14 +551,12 @@ describe('entity', function() { }; assert.deepStrictEqual( - entity.entityFromEntityProto(entityProto), - expectedEntity - ); + entity.entityFromEntityProto(entityProto), expectedEntity); }); }); - describe('entityToEntityProto', function() { - it('should format an entity', function() { + describe('entityToEntityProto', () => { + it('should format an entity', () => { const value = 'Stephen'; const entityObject = { @@ -578,18 +570,16 @@ describe('entity', function() { properties: entityObject.data, }; - entity.encodeValue = function(value_) { + entity.encodeValue = (value_) => { assert.strictEqual(value_, value); return value; }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), - expectedEntityProto - ); + entity.entityToEntityProto(entityObject), expectedEntityProto); }); - it('should respect excludeFromIndexes', function() { + it('should respect excludeFromIndexes', () => { const value1 = 'Stephen'; const value2 = 'Stephen2'; const value3 = 'Stephen3'; @@ -948,8 +938,12 @@ describe('entity', function() { entityValue: { properties: { b: { - // excludeFromIndexes: ['nestedArrayVariants[].a[].b'] does not apply here, - // To exclude this array (= all its elements), we would use ['nestedArrayVariants[].a[].b[]'] + // excludeFromIndexes: + // ['nestedArrayVariants[].a[].b'] does not + // apply here, + // To exclude this array (= all its + // elements), we would use + // ['nestedArrayVariants[].a[].b[]'] arrayValue: { values: [ { @@ -974,7 +968,8 @@ describe('entity', function() { }, }, alpha: { - // `excludeFromIndexes: ['alpha[]']` results in exclusion of all array elements + // `excludeFromIndexes: ['alpha[]']` results in exclusion of all + // array elements arrayValue: { values: [ { @@ -989,7 +984,8 @@ describe('entity', function() { }, }, omega: { - // `excludeFromIndexes: ['omega']` is not applied, because 'omega' is an array. + // `excludeFromIndexes: ['omega']` is not applied, because 'omega' + // is an array. arrayValue: { values: [ { @@ -1005,14 +1001,12 @@ describe('entity', function() { }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), - expectedEntityProto - ); + entity.entityToEntityProto(entityObject), expectedEntityProto); }); }); - describe('formatArray', function() { - it('should convert protos to key/data entity array', function() { + describe('formatArray', () => { + it('should convert protos to key/data entity array', () => { const key = {}; const entityProto = { @@ -1027,12 +1021,12 @@ describe('entity', function() { const expectedResults = entityProto; - entity.keyFromKeyProto = function(key_) { + entity.keyFromKeyProto = (key_) => { assert.strictEqual(key_, key); return key; }; - entity.entityFromEntityProto = function(entityProto_) { + entity.entityFromEntityProto = (entityProto_) => { assert.strictEqual(entityProto_, entityProto); return entityProto; }; @@ -1044,13 +1038,13 @@ describe('entity', function() { }); }); - describe('isKeyComplete', function() { - it('should convert key to key proto', function(done) { + describe('isKeyComplete', () => { + it('should convert key to key proto', (done) => { const key = new entity.Key({ path: ['Kind', 123], }); - entity.keyToKeyProto = function(key_) { + entity.keyToKeyProto = (key_) => { assert.strictEqual(key_, key); setImmediate(done); return key; @@ -1059,7 +1053,7 @@ describe('entity', function() { entity.isKeyComplete(key); }); - it('should return true if key has id', function() { + it('should return true if key has id', () => { const key = new entity.Key({ path: ['Kind', 123], }); @@ -1067,7 +1061,7 @@ describe('entity', function() { assert.strictEqual(entity.isKeyComplete(key), true); }); - it('should return true if key has name', function() { + it('should return true if key has name', () => { const key = new entity.Key({ path: ['Kind', 'name'], }); @@ -1075,7 +1069,7 @@ describe('entity', function() { assert.strictEqual(entity.isKeyComplete(key), true); }); - it('should return false if key does not have name or ID', function() { + it('should return false if key does not have name or ID', () => { const key = new entity.Key({ path: ['Kind'], }); @@ -1084,7 +1078,7 @@ describe('entity', function() { }); }); - describe('keyFromKeyProto', function() { + describe('keyFromKeyProto', () => { const NAMESPACE = 'Namespace'; const keyProto = { @@ -1106,39 +1100,42 @@ describe('entity', function() { ], }; - it('should set the namespace', function(done) { - entity.Key = function(keyOptions) { - assert.strictEqual(keyOptions.namespace, NAMESPACE); - done(); + it('should set the namespace', (done) => { + entity.Key = class { + constructor(keyOptions) { + assert.strictEqual(keyOptions.namespace, NAMESPACE); + done(); + } }; - entity.keyFromKeyProto(keyProto); }); - it('should create a proper Key', function(done) { - entity.Key = function(keyOptions) { - assert.deepStrictEqual(keyOptions, { - namespace: NAMESPACE, - path: ['Kind', new entity.Int(111), 'Kind2', 'name'], - }); - - done(); + it('should create a proper Key', (done) => { + entity.Key = class { + constructor(keyOptions) { + assert.deepStrictEqual(keyOptions, { + namespace: NAMESPACE, + path: ['Kind', new entity.Int(111), 'Kind2', 'name'], + }); + done(); + } }; - entity.keyFromKeyProto(keyProto); }); - it('should return the created Key', function() { + it('should return the created Key', () => { const expectedValue = {}; - entity.Key = function() { - return expectedValue; + entity.Key = class { + constructor() { + return expectedValue; + } }; assert.strictEqual(entity.keyFromKeyProto(keyProto), expectedValue); }); - it('should throw if path is invalid', function(done) { + it('should throw if path is invalid', (done) => { const keyProtoInvalid = { partitionId: { namespaceId: 'Namespace', @@ -1164,8 +1161,8 @@ describe('entity', function() { }); }); - describe('keyToKeyProto', function() { - it('should handle hierarchical key definitions', function() { + describe('keyToKeyProto', () => { + it('should handle hierarchical key definitions', () => { const key = new entity.Key({ path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)], }); @@ -1187,7 +1184,7 @@ describe('entity', function() { assert.strictEqual(keyProto.path[2].name, undefined); }); - it('should detect the namespace of the hierarchical keys', function() { + it('should detect the namespace of the hierarchical keys', () => { const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', 1, 'Kind2', 'name'], @@ -1206,7 +1203,7 @@ describe('entity', function() { assert.strictEqual(keyProto.path[1].name, 'name'); }); - it('should handle incomplete keys with & without namespaces', function() { + it('should handle incomplete keys with & without namespaces', () => { const incompleteKey = new entity.Key({ path: ['Kind'], }); @@ -1230,7 +1227,7 @@ describe('entity', function() { assert.strictEqual(keyProtoWithNs.path[0].name, undefined); }); - it('should throw if key contains 0 items', function(done) { + it('should throw if key contains 0 items', (done) => { const key = new entity.Key({ path: [], }); @@ -1244,7 +1241,7 @@ describe('entity', function() { } }); - it('should throw if key path contains null ids', function(done) { + it('should throw if key path contains null ids', (done) => { const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', null, 'Company'], @@ -1259,19 +1256,19 @@ describe('entity', function() { } }); - it('should not throw if key is incomplete', function() { + it('should not throw if key is incomplete', () => { const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', 123, 'Company', null], }); - assert.doesNotThrow(function() { + assert.doesNotThrow(() => { entity.keyToKeyProto(key); }); }); }); - describe('queryToQueryProto', function() { + describe('queryToQueryProto', () => { const queryProto = { distinctOn: [ { @@ -1342,37 +1339,33 @@ describe('entity', function() { }, }; - it('should support all configurations of a query', function() { + it('should support all configurations of a query', () => { const ancestorKey = new entity.Key({ path: ['Kind2', 'somename'], }); const ds = new Datastore({projectId: 'project-id'}); - const query = ds - .createQuery('Kind1') - .filter('name', 'John') - .start('start') - .end('end') - .groupBy(['name']) - .order('name') - .select('name') - .limit(1) - .offset(1) - .hasAncestor(ancestorKey); + const query = ds.createQuery('Kind1') + .filter('name', 'John') + .start('start') + .end('end') + .groupBy(['name']) + .order('name') + .select('name') + .limit(1) + .offset(1) + .hasAncestor(ancestorKey); assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); }); - it('should handle buffer start and end values', function() { + it('should handle buffer start and end values', () => { const ds = new Datastore({projectId: 'project-id'}); const startVal = Buffer.from('start'); const endVal = Buffer.from('end'); - const query = ds - .createQuery('Kind1') - .start(startVal) - .end(endVal); + const query = ds.createQuery('Kind1').start(startVal).end(endVal); const queryProto = entity.queryToQueryProto(query); assert.strictEqual(queryProto.endCursor, endVal); diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index a2b2746ee0d..dc700ab76f9 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -69,11 +69,7 @@ describe('DatastoreClient', () => { }; // Mock Grpc layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod( - request, - null, - error - ); + client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); client.lookup(request, (err, response) => { assert(err instanceof Error); @@ -258,11 +254,7 @@ describe('DatastoreClient', () => { }; // Mock Grpc layer - client._innerApiCalls.commit = mockSimpleGrpcMethod( - request, - null, - error - ); + client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); client.commit(request, (err, response) => { assert(err instanceof Error); @@ -455,7 +447,6 @@ describe('DatastoreClient', () => { }); }); }); - }); function mockSimpleGrpcMethod(expectedRequest, response, error) { diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 89d5e7b0580..e8543f167d8 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -61,25 +61,23 @@ const fakeEntity: any = { }, }; -let GoogleAuthOverride; +let googleAuthOverride; function fakeGoogleAuth() { - return (GoogleAuthOverride || function() {}).apply(null, arguments); + return (googleAuthOverride || (() => {})).apply(null, arguments); } let createInsecureOverride; const fakeGoogleGax = { - GrpcClient: class extends gax.GrpcClient { + GrpcClient: class extends gax.GrpcClient{ constructor(opts) { // super constructor must be called first! super(opts); this.grpc = { credentials: { createInsecure() { - return (createInsecureOverride || function() {}).apply( - null, - arguments - ); + return (createInsecureOverride || (() => {})) + .apply(null, arguments); }, }, } as gax.GrpcModule; @@ -103,7 +101,8 @@ class FakeTransaction { function FakeV1() {} -describe('Datastore', function() { +describe('Datastore', () => { + // tslint:disable-next-line variable-name let Datastore; let datastore; @@ -121,22 +120,22 @@ describe('Datastore', function() { namespace: NAMESPACE, }; - before(function() { + before(() => { Datastore = proxyquire('../src', { - './entity.js': {entity: fakeEntity}, - './query.js': {Query: FakeQuery}, - './transaction.js': {Transaction: FakeTransaction}, - './v1': FakeV1, - 'google-auth-library': { - GoogleAuth: fakeGoogleAuth, - }, - 'google-gax': fakeGoogleGax, - }).Datastore; + './entity.js': {entity: fakeEntity}, + './query.js': {Query: FakeQuery}, + './transaction.js': {Transaction: FakeTransaction}, + './v1': FakeV1, + 'google-auth-library': { + GoogleAuth: fakeGoogleAuth, + }, + 'google-gax': fakeGoogleGax, + }).Datastore; }); - beforeEach(function() { + beforeEach(() => { createInsecureOverride = null; - GoogleAuthOverride = null; + googleAuthOverride = null; datastore = new Datastore({ projectId: PROJECT_ID, @@ -144,7 +143,7 @@ describe('Datastore', function() { }); }); - afterEach(function() { + afterEach(() => { if (typeof DATASTORE_PROJECT_ID_CACHED === 'string') { process.env.DATASTORE_PROJECT_ID = DATASTORE_PROJECT_ID_CACHED; } else { @@ -152,45 +151,45 @@ describe('Datastore', function() { } }); - after(function() { + after(() => { createInsecureOverride = null; - GoogleAuthOverride = null; + googleAuthOverride = null; }); - it('should export GAX client', function() { + it('should export GAX client', () => { assert.ok(require('../src').v1); }); - describe('instantiation', function() { - it('should initialize an empty Client map', function() { + describe('instantiation', () => { + it('should initialize an empty Client map', () => { assert(datastore.clients_ instanceof Map); assert.strictEqual(datastore.clients_.size, 0); }); - it('should alias itself to the datastore property', function() { + it('should alias itself to the datastore property', () => { assert.strictEqual(datastore.datastore, datastore); }); - it('should localize the namespace', function() { + it('should localize the namespace', () => { assert.strictEqual(datastore.namespace, NAMESPACE); }); - it('should localize the projectId', function() { + it('should localize the projectId', () => { assert.strictEqual(datastore.projectId, PROJECT_ID); assert.strictEqual(datastore.options.projectId, PROJECT_ID); }); - it('should default project ID to placeholder', function() { + it('should default project ID to placeholder', () => { const datastore = new Datastore({}); assert.strictEqual(datastore.projectId, '{{projectId}}'); }); - it('should not default options.projectId to placeholder', function() { + it('should not default options.projectId to placeholder', () => { const datastore = new Datastore({}); assert.strictEqual(datastore.options.projectId, undefined); }); - it('should use DATASTORE_PROJECT_ID', function() { + it('should use DATASTORE_PROJECT_ID', () => { const projectId = 'overridden-project-id'; process.env.DATASTORE_PROJECT_ID = projectId; @@ -201,24 +200,24 @@ describe('Datastore', function() { assert.strictEqual(datastore.options.projectId, projectId); }); - it('should set the default base URL', function() { + it('should set the default base URL', () => { assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com'); }); - it('should set default API connection details', function(done) { + it('should set default API connection details', (done) => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - Datastore.prototype.determineBaseUrl_ = function(customApiEndpoint) { + Datastore.prototype.determineBaseUrl_ = (customApiEndpoint) => { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; assert.strictEqual(customApiEndpoint, OPTIONS.apiEndpoint); done(); }; - new Datastore(OPTIONS); + const d = new Datastore(OPTIONS); }); - it('should localize the options', function() { + it('should localize the options', () => { delete process.env.DATASTORE_PROJECT_ID; const options = { @@ -231,22 +230,20 @@ describe('Datastore', function() { assert.notStrictEqual(datastore.options, options); assert.deepStrictEqual( - datastore.options, - Object.assign( - { - libName: 'gccl', - libVersion: require('../../package.json').version, - scopes: v1.DatastoreClient.scopes, - servicePath: datastore.baseUrl_, - port: 443, - projectId: undefined, - }, - options - ) - ); - }); - - it('should set port if detected', function() { + datastore.options, + Object.assign( + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: v1.DatastoreClient.scopes, + servicePath: datastore.baseUrl_, + port: 443, + projectId: undefined, + }, + options)); + }); + + it('should set port if detected', () => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; const port = 99; @@ -260,7 +257,7 @@ describe('Datastore', function() { assert.strictEqual(datastore.options.port, port); }); - it('should set grpc ssl credentials if custom endpoint', function() { + it('should set grpc ssl credentials if custom endpoint', () => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; Datastore.prototype.determineBaseUrl_ = function() { @@ -269,7 +266,7 @@ describe('Datastore', function() { }; const fakeInsecureCreds = {}; - createInsecureOverride = function() { + createInsecureOverride = () => { return fakeInsecureCreds; }; @@ -278,10 +275,10 @@ describe('Datastore', function() { assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); }); - it('should cache a local GoogleAuth instance', function() { + it('should cache a local GoogleAuth instance', () => { const fakeGoogleAuthInstance = {}; - GoogleAuthOverride = function() { + googleAuthOverride = () => { return fakeGoogleAuthInstance; }; @@ -290,54 +287,54 @@ describe('Datastore', function() { }); }); - describe('double', function() { - it('should expose Double builder', function() { + describe('double', () => { + it('should expose Double builder', () => { const aDouble = 7.0; const double = Datastore.double(aDouble); assert.strictEqual(double.value, aDouble); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { const aDouble = 7.0; const double = datastore.double(aDouble); assert.strictEqual(double.value, aDouble); }); }); - describe('geoPoint', function() { - it('should expose GeoPoint builder', function() { + describe('geoPoint', () => { + it('should expose GeoPoint builder', () => { const aGeoPoint = {latitude: 24, longitude: 88}; const geoPoint = Datastore.geoPoint(aGeoPoint); assert.strictEqual(geoPoint.value, aGeoPoint); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { const aGeoPoint = {latitude: 24, longitude: 88}; const geoPoint = datastore.geoPoint(aGeoPoint); assert.strictEqual(geoPoint.value, aGeoPoint); }); }); - describe('int', function() { - it('should expose Int builder', function() { + describe('int', () => { + it('should expose Int builder', () => { const anInt = 7; const int = Datastore.int(anInt); assert.strictEqual(int.value, anInt); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { const anInt = 7; const int = datastore.int(anInt); assert.strictEqual(int.value, anInt); }); }); - describe('isDouble', function() { - it('should pass value to entity', function() { + describe('isDouble', () => { + it('should pass value to entity', () => { const value = 0.42; let called = false; const saved = fakeEntity.isDsDouble; - fakeEntity.isDsDouble = function(arg) { + fakeEntity.isDsDouble = (arg) => { assert.strictEqual(arg, value); called = true; return false; @@ -347,19 +344,19 @@ describe('Datastore', function() { fakeEntity.isDsDouble = saved; }); - it('should expose Double identifier', function() { + it('should expose Double identifier', () => { const something = {}; Datastore.isDouble(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); }); - describe('isGeoPoint', function() { - it('should pass value to entity', function() { + describe('isGeoPoint', () => { + it('should pass value to entity', () => { const value = {fakeLatitude: 1, fakeLongitude: 2}; let called = false; const saved = fakeEntity.isDsGeoPoint; - fakeEntity.isDsGeoPoint = function(arg) { + fakeEntity.isDsGeoPoint = (arg) => { assert.strictEqual(arg, value); called = true; return false; @@ -369,19 +366,19 @@ describe('Datastore', function() { fakeEntity.isDsGeoPoint = saved; }); - it('should expose GeoPoint identifier', function() { + it('should expose GeoPoint identifier', () => { const something = {}; Datastore.isGeoPoint(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); }); - describe('isInt', function() { - it('should pass value to entity', function() { + describe('isInt', () => { + it('should pass value to entity', () => { const value = 42; let called = false; const saved = fakeEntity.isDsInt; - fakeEntity.isDsInt = function(arg) { + fakeEntity.isDsInt = (arg) => { assert.strictEqual(arg, value); called = true; return false; @@ -391,19 +388,19 @@ describe('Datastore', function() { fakeEntity.isDsInt = saved; }); - it('should expose Int identifier', function() { + it('should expose Int identifier', () => { const something = {}; Datastore.isInt(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); }); - describe('isKey', function() { - it('should pass value to entity', function() { + describe('isKey', () => { + it('should pass value to entity', () => { const value = {zz: true}; let called = false; const saved = fakeEntity.isDsKey; - fakeEntity.isDsKey = function(arg) { + fakeEntity.isDsKey = (arg) => { assert.strictEqual(arg, value); called = true; return false; @@ -413,67 +410,61 @@ describe('Datastore', function() { fakeEntity.isDsKey = saved; }); - it('should expose Key identifier', function() { + it('should expose Key identifier', () => { const something = {}; datastore.isKey(something); assert.strictEqual(fakeEntity.calledWith_[0], something); }); }); - describe('KEY', function() { - it('should expose the KEY symbol', function() { + describe('KEY', () => { + it('should expose the KEY symbol', () => { assert.strictEqual(Datastore.KEY, fakeEntity.KEY_SYMBOL); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { assert.strictEqual(datastore.KEY, Datastore.KEY); }); }); - describe('MORE_RESULTS_AFTER_CURSOR', function() { - it('should expose a MORE_RESULTS_AFTER_CURSOR helper', function() { + describe('MORE_RESULTS_AFTER_CURSOR', () => { + it('should expose a MORE_RESULTS_AFTER_CURSOR helper', () => { assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_CURSOR, - 'MORE_RESULTS_AFTER_CURSOR' - ); + Datastore.MORE_RESULTS_AFTER_CURSOR, 'MORE_RESULTS_AFTER_CURSOR'); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { assert.strictEqual( - datastore.MORE_RESULTS_AFTER_CURSOR, - Datastore.MORE_RESULTS_AFTER_CURSOR - ); + datastore.MORE_RESULTS_AFTER_CURSOR, + Datastore.MORE_RESULTS_AFTER_CURSOR); }); }); - describe('MORE_RESULTS_AFTER_LIMIT', function() { - it('should expose a MORE_RESULTS_AFTER_LIMIT helper', function() { + describe('MORE_RESULTS_AFTER_LIMIT', () => { + it('should expose a MORE_RESULTS_AFTER_LIMIT helper', () => { assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_LIMIT, - 'MORE_RESULTS_AFTER_LIMIT' - ); + Datastore.MORE_RESULTS_AFTER_LIMIT, 'MORE_RESULTS_AFTER_LIMIT'); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { assert.strictEqual( - datastore.MORE_RESULTS_AFTER_LIMIT, - Datastore.MORE_RESULTS_AFTER_LIMIT - ); + datastore.MORE_RESULTS_AFTER_LIMIT, + Datastore.MORE_RESULTS_AFTER_LIMIT); }); }); - describe('NO_MORE_RESULTS', function() { - it('should expose a NO_MORE_RESULTS helper', function() { + describe('NO_MORE_RESULTS', () => { + it('should expose a NO_MORE_RESULTS helper', () => { assert.strictEqual(Datastore.NO_MORE_RESULTS, 'NO_MORE_RESULTS'); }); - it('should also be on the prototype', function() { + it('should also be on the prototype', () => { assert.strictEqual(datastore.NO_MORE_RESULTS, Datastore.NO_MORE_RESULTS); }); }); - describe('createQuery', function() { - it('should return a Query object', function() { + describe('createQuery', () => { + it('should return a Query object', () => { const namespace = 'namespace'; const kind = ['Kind']; @@ -485,7 +476,7 @@ describe('Datastore', function() { assert.deepStrictEqual(query.calledWith_[2], kind); }); - it('should include the default namespace', function() { + it('should include the default namespace', () => { const kind = ['Kind']; const query = datastore.createQuery(kind); @@ -494,7 +485,7 @@ describe('Datastore', function() { assert.deepStrictEqual(query.calledWith_[2], kind); }); - it('should include the default namespace in a kindless query', function() { + it('should include the default namespace in a kindless query', () => { const query = datastore.createQuery(); assert.strictEqual(query.calledWith_[0], datastore); @@ -503,15 +494,15 @@ describe('Datastore', function() { }); }); - describe('key', function() { - it('should return a Key object', function() { + describe('key', () => { + it('should return a Key object', () => { const options = {}; const key = datastore.key(options); assert.strictEqual(key.calledWith_[0], options); }); - it('should use a non-object argument as the path', function() { + it('should use a non-object argument as the path', () => { const options = 'path'; const key = datastore.key(options); @@ -520,29 +511,29 @@ describe('Datastore', function() { }); }); - describe('transaction', function() { - it('should return a Transaction object', function() { + describe('transaction', () => { + it('should return a Transaction object', () => { const transaction = datastore.transaction(); assert.strictEqual(transaction.calledWith_[0], datastore); }); - it('should pass options to the Transaction constructor', function() { + it('should pass options to the Transaction constructor', () => { const options = {}; const transaction = datastore.transaction(options); assert.strictEqual(transaction.calledWith_[1], options); }); }); - describe('determineBaseUrl_', function() { + describe('determineBaseUrl_', () => { function setHost(host) { process.env.DATASTORE_EMULATOR_HOST = host; } - beforeEach(function() { + beforeEach(() => { delete process.env.DATASTORE_EMULATOR_HOST; }); - it('should default to defaultBaseUrl_', function() { + it('should default to defaultBaseUrl_', () => { const defaultBaseUrl_ = 'defaulturl'; datastore.defaultBaseUrl_ = defaultBaseUrl_; @@ -550,7 +541,7 @@ describe('Datastore', function() { assert.strictEqual(datastore.baseUrl_, defaultBaseUrl_); }); - it('should remove slashes from the baseUrl', function() { + it('should remove slashes from the baseUrl', () => { const expectedBaseUrl = 'localhost'; setHost('localhost/'); @@ -562,7 +553,7 @@ describe('Datastore', function() { assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); }); - it('should remove the protocol if specified', function() { + it('should remove the protocol if specified', () => { setHost('http://localhost'); datastore.determineBaseUrl_(); assert.strictEqual(datastore.baseUrl_, 'localhost'); @@ -572,48 +563,48 @@ describe('Datastore', function() { assert.strictEqual(datastore.baseUrl_, 'localhost'); }); - it('should set Numberified port if one was found', function() { + it('should set Numberified port if one was found', () => { setHost('http://localhost:9090'); datastore.determineBaseUrl_(); assert.strictEqual(datastore.port_, 9090); }); - it('should not set customEndpoint_ when using default baseurl', function() { + it('should not set customEndpoint_ when using default baseurl', () => { const datastore = new Datastore({projectId: PROJECT_ID}); datastore.determineBaseUrl_(); assert.strictEqual(datastore.customEndpoint_, undefined); }); - it('should set customEndpoint_ when using custom API endpoint', function() { + it('should set customEndpoint_ when using custom API endpoint', () => { datastore.determineBaseUrl_('apiEndpoint'); assert.strictEqual(datastore.customEndpoint_, true); }); - it('should set baseUrl when using custom API endpoint', function() { + it('should set baseUrl when using custom API endpoint', () => { datastore.determineBaseUrl_('apiEndpoint'); assert.strictEqual(datastore.baseUrl_, 'apiEndpoint'); }); - describe('with DATASTORE_EMULATOR_HOST environment variable', function() { + describe('with DATASTORE_EMULATOR_HOST environment variable', () => { const DATASTORE_EMULATOR_HOST = 'localhost:9090'; const EXPECTED_BASE_URL = 'localhost'; const EXPECTED_PORT = 9090; - beforeEach(function() { + beforeEach(() => { setHost(DATASTORE_EMULATOR_HOST); }); - after(function() { + after(() => { delete process.env.DATASTORE_EMULATOR_HOST; }); - it('should use the DATASTORE_EMULATOR_HOST env var', function() { + it('should use the DATASTORE_EMULATOR_HOST env var', () => { datastore.determineBaseUrl_(); assert.strictEqual(datastore.baseUrl_, EXPECTED_BASE_URL); assert.strictEqual(datastore.port_, EXPECTED_PORT); }); - it('should set customEndpoint_', function() { + it('should set customEndpoint_', () => { datastore.determineBaseUrl_(); assert.strictEqual(datastore.customEndpoint_, true); }); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 35ead605ab8..7afa84e42b7 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -16,7 +16,7 @@ import * as assert from 'assert'; -describe('Query', function() { +describe('Query', () => { const SCOPE = {}; const NAMESPACE = 'Namespace'; const KINDS = 'Kind'; @@ -24,38 +24,37 @@ describe('Query', function() { const Query = require('../src/query.js').Query; let query; - beforeEach(function() { + beforeEach(() => { query = new Query(SCOPE, NAMESPACE, KINDS); }); - describe('instantiation', function() { - it('should localize the scope', function() { + describe('instantiation', () => { + it('should localize the scope', () => { assert.strictEqual(query.scope, SCOPE); }); - it('should localize the namespace', function() { + it('should localize the namespace', () => { assert.strictEqual(query.namespace, NAMESPACE); }); - it('should localize the kind', function() { + it('should localize the kind', () => { assert.strictEqual(query.kinds, KINDS); }); - it('should use null for all falsy namespace values', function() { - [ - new Query(SCOPE, '', KINDS), - new Query(SCOPE, null, KINDS), - new Query(SCOPE, undefined, KINDS), - new Query(SCOPE, 0, KINDS), - new Query(SCOPE, KINDS), - ].forEach(function(query) { + it('should use null for all falsy namespace values', () => { + [new Query(SCOPE, '', KINDS), + new Query(SCOPE, null, KINDS), + new Query(SCOPE, undefined, KINDS), + new Query(SCOPE, 0, KINDS), + new Query(SCOPE, KINDS), + ].forEach((query) => { assert.strictEqual(query.namespace, null); }); }); }); - describe('filter', function() { - it('should support filtering', function() { + describe('filter', () => { + it('should support filtering', () => { const now = new Date(); const query = new Query(['kind1']).filter('date', '<=', now); const filter = query.filters[0]; @@ -65,14 +64,14 @@ describe('Query', function() { assert.strictEqual(filter.val, now); }); - it('should recognize all the different operators', function() { + it('should recognize all the different operators', () => { const now = new Date(); const query = new Query(['kind1']) - .filter('date', '<=', now) - .filter('name', '=', 'Title') - .filter('count', '>', 20) - .filter('size', '<', 10) - .filter('something', '>=', 11); + .filter('date', '<=', now) + .filter('name', '=', 'Title') + .filter('count', '>', 20) + .filter('size', '<', 10) + .filter('something', '>=', 11); assert.strictEqual(query.filters[0].name, 'date'); assert.strictEqual(query.filters[0].op, '<='); @@ -95,30 +94,27 @@ describe('Query', function() { assert.strictEqual(query.filters[4].val, 11); }); - it('should remove any whitespace surrounding the filter name', function() { + it('should remove any whitespace surrounding the filter name', () => { const query = new Query(['kind1']).filter(' count ', '>', 123); assert.strictEqual(query.filters[0].name, 'count'); }); - it('should remove any whitespace surrounding the operator', function() { - const query = new Query(['kind1']).filter( - 'count', - ' < ', - 123 - ); + it('should remove any whitespace surrounding the operator', () => { + const query = + new Query(['kind1']).filter('count', ' < ', 123); assert.strictEqual(query.filters[0].op, '<'); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.filter('count', '<', 5); assert.strictEqual(query, nextQuery); }); - it('should default the operator to "="', function() { + it('should default the operator to "="', () => { const query = new Query(['kind1']).filter('name', 'Stephen'); const filter = query.filters[0]; @@ -128,8 +124,8 @@ describe('Query', function() { }); }); - describe('hasAncestor', function() { - it('should support ancestor filtering', function() { + describe('hasAncestor', () => { + it('should support ancestor filtering', () => { const query = new Query(['kind1']).hasAncestor(['kind2', 123]); assert.strictEqual(query.filters[0].name, '__key__'); @@ -137,7 +133,7 @@ describe('Query', function() { assert.deepStrictEqual(query.filters[0].val, ['kind2', 123]); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.hasAncestor(['kind2', 123]); @@ -145,32 +141,31 @@ describe('Query', function() { }); }); - describe('order', function() { - it('should default ordering to ascending', function() { + describe('order', () => { + it('should default ordering to ascending', () => { const query = new Query(['kind1']).order('name'); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); }); - it('should support ascending order', function() { + it('should support ascending order', () => { const query = new Query(['kind1']).order('name'); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); }); - it('should support descending order', function() { + it('should support descending order', () => { const query = new Query(['kind1']).order('count', {descending: true}); assert.strictEqual(query.orders[0].name, 'count'); assert.strictEqual(query.orders[0].sign, '-'); }); - it('should support both ascending and descending', function() { - const query = new Query(['kind1']) - .order('name') - .order('count', {descending: true}); + it('should support both ascending and descending', () => { + const query = + new Query(['kind1']).order('name').order('count', {descending: true}); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); @@ -178,7 +173,7 @@ describe('Query', function() { assert.strictEqual(query.orders[1].sign, '-'); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.order('name'); @@ -186,20 +181,20 @@ describe('Query', function() { }); }); - describe('groupBy', function() { - it('should store an array of properties to group by', function() { + describe('groupBy', () => { + it('should store an array of properties to group by', () => { const query = new Query(['kind1']).groupBy(['name', 'size']); assert.deepStrictEqual(query.groupByVal, ['name', 'size']); }); - it('should convert a single property into an array', function() { + it('should convert a single property into an array', () => { const query = new Query(['kind1']).groupBy('name'); assert.deepStrictEqual(query.groupByVal, ['name']); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.groupBy(['name', 'size']); @@ -207,20 +202,20 @@ describe('Query', function() { }); }); - describe('select', function() { - it('should store an array of properties to select', function() { + describe('select', () => { + it('should store an array of properties to select', () => { const query = new Query(['kind1']).select(['name', 'size']); assert.deepStrictEqual(query.selectVal, ['name', 'size']); }); - it('should convert a single property into an array', function() { + it('should convert a single property into an array', () => { const query = new Query(['kind1']).select('name'); assert.deepStrictEqual(query.selectVal, ['name']); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.select(['name', 'size']); @@ -228,14 +223,14 @@ describe('Query', function() { }); }); - describe('start', function() { - it('should capture the starting cursor value', function() { + describe('start', () => { + it('should capture the starting cursor value', () => { const query = new Query(['kind1']).start('X'); assert.strictEqual(query.startVal, 'X'); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.start('X'); @@ -243,14 +238,14 @@ describe('Query', function() { }); }); - describe('end', function() { - it('should capture the ending cursor value', function() { + describe('end', () => { + it('should capture the ending cursor value', () => { const query = new Query(['kind1']).end('Z'); assert.strictEqual(query.endVal, 'Z'); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.end('Z'); @@ -258,14 +253,14 @@ describe('Query', function() { }); }); - describe('limit', function() { - it('should capture the number of results to limit to', function() { + describe('limit', () => { + it('should capture the number of results to limit to', () => { const query = new Query(['kind1']).limit(20); assert.strictEqual(query.limitVal, 20); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.limit(20); @@ -273,14 +268,14 @@ describe('Query', function() { }); }); - describe('offset', function() { - it('should capture the number of results to offset by', function() { + describe('offset', () => { + it('should capture the number of results to offset by', () => { const query = new Query(['kind1']).offset(100); assert.strictEqual(query.offsetVal, 100); }); - it('should return the query instance', function() { + it('should return the query instance', () => { const query = new Query(['kind1']); const nextQuery = query.offset(100); @@ -288,8 +283,8 @@ describe('Query', function() { }); }); - describe('run', function() { - it('should call the parent instance runQuery correctly', function(done) { + describe('run', () => { + it('should call the parent instance runQuery correctly', (done) => { const args = [0, 1, 2]; query.scope.runQuery = function() { @@ -305,8 +300,8 @@ describe('Query', function() { }); }); - describe('runStream', function() { - it('should call the parent instance runQueryStream correctly', function() { + describe('runStream', () => { + it('should call the parent instance runQueryStream correctly', () => { const args = [0, 1, 2]; const runQueryReturnValue = {}; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index b81660c6623..4cb7fa8c4d2 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -14,21 +14,22 @@ * limitations under the License. */ +import * as pjy from '@google-cloud/projectify'; +import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import * as extend from 'extend'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; import * as through from 'through2'; -import * as pfy from '@google-cloud/promisify'; -import * as pjy from '@google-cloud/projectify'; + import {entity} from '../src/entity.js'; import {Query} from '../src/query.js'; let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll(Class) { - if (Class.name === 'DatastoreRequest') { + promisifyAll(klass) { + if (klass.name === 'DatastoreRequest') { promisified = true; } }, @@ -44,7 +45,7 @@ let v1FakeClientOverride; const fakeV1 = { FakeClient: class { constructor() { - return (v1FakeClientOverride || function() {}).apply(null, arguments); + return (v1FakeClientOverride || (() => {})).apply(null, arguments); } }, }; @@ -54,6 +55,7 @@ class FakeQuery extends Query {} let pjyOverride; describe('Request', () => { + // tslint:disable-next-line variable-name let Request; let request; let key; @@ -61,12 +63,12 @@ describe('Request', () => { before(() => { Request = proxyquire('../src/request', { - '@google-cloud/promisify': fakePfy, - '@google-cloud/projectify': fakePjy, - './entity': {entity}, - './query': {Query: FakeQuery}, - './v1': fakeV1, - }).DatastoreRequest; + '@google-cloud/promisify': fakePfy, + '@google-cloud/projectify': fakePjy, + './entity': {entity}, + './query': {Query: FakeQuery}, + './v1': fakeV1, + }).DatastoreRequest; }); after(() => { @@ -106,9 +108,7 @@ describe('Request', () => { assert.notStrictEqual(preparedEntityObject, obj); assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); assert.deepStrictEqual( - preparedEntityObject, - expectedPreparedEntityObject - ); + preparedEntityObject, expectedPreparedEntityObject); }); it('should format an entity', () => { @@ -204,7 +204,7 @@ describe('Request', () => { it('should exec callback with error & API response', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); - request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { + request.allocateIds(INCOMPLETE_KEY, OPTIONS, (err, keys, resp) => { assert.strictEqual(err, ERROR); assert.strictEqual(keys, null); assert.strictEqual(resp, API_RESPONSE); @@ -233,7 +233,7 @@ describe('Request', () => { assert.strictEqual(keyProto, API_RESPONSE.keys[0]); return key; }); - request.allocateIds(INCOMPLETE_KEY, OPTIONS, function(err, keys, resp) { + request.allocateIds(INCOMPLETE_KEY, OPTIONS, (err, keys, resp) => { assert.ifError(err); assert.deepStrictEqual(keys, [key]); assert.strictEqual(resp, API_RESPONSE); @@ -268,9 +268,7 @@ describe('Request', () => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); assert.deepStrictEqual( - config.reqOpts.keys[0], - entity.keyToKeyProto(key) - ); + config.reqOpts.keys[0], entity.keyToKeyProto(key)); done(); }; const stream = request.createReadStream(key); @@ -287,10 +285,7 @@ describe('Request', () => { done(); }; - request - .createReadStream(key, options) - .on('error', done) - .emit('reading'); + request.createReadStream(key, options).on('error', done).emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -299,10 +294,9 @@ describe('Request', () => { done(); }; - request - .createReadStream(key, {consistency: 'strong'}) - .on('error', done) - .emit('reading'); + request.createReadStream(key, {consistency: 'strong'}) + .on('error', done) + .emit('reading'); }); it('should allow setting strong eventual consistency', done => { @@ -311,10 +305,9 @@ describe('Request', () => { done(); }; - request - .createReadStream(key, {consistency: 'eventual'}) - .on('error', done) - .emit('reading'); + request.createReadStream(key, {consistency: 'eventual'}) + .on('error', done) + .emit('reading'); }); describe('error', () => { @@ -330,13 +323,10 @@ describe('Request', () => { }); it('should emit error', done => { - request - .createReadStream(key) - .on('data', () => {}) - .on('error', err => { - assert.strictEqual(err, error); - done(); - }); + request.createReadStream(key).on('data', () => {}).on('error', err => { + assert.strictEqual(err, error); + done(); + }); }); it('should end stream', done => { @@ -426,10 +416,7 @@ describe('Request', () => { return arr; }); - request - .createReadStream(key) - .on('error', done) - .emit('reading'); + request.createReadStream(key).on('error', done).emit('reading'); }); it('should continue looking for deferred results', done => { @@ -443,29 +430,26 @@ describe('Request', () => { return; } - const expectedKeys = apiResponseWithDeferred.deferred - .map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); + const expectedKeys = + apiResponseWithDeferred.deferred.map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); done(); }; - request - .createReadStream(key) - .on('error', done) - .emit('reading'); + request.createReadStream(key).on('error', done).emit('reading'); }); it('should push results to the stream', done => { - request - .createReadStream(key) - .on('error', done) - .on('data', entity => { - assert.deepStrictEqual(entity, expectedResult); - }) - .on('end', done) - .emit('reading'); + request.createReadStream(key) + .on('error', done) + .on('data', + entity => { + assert.deepStrictEqual(entity, expectedResult); + }) + .on('end', done) + .emit('reading'); }); it('should not push more results if stream was ended', done => { @@ -478,15 +462,18 @@ describe('Request', () => { }; const stream = request.createReadStream([key, key]); - stream.on('data', () => { - entitiesEmitted++; - stream.end(); - }) - .on('end', () => { - assert.strictEqual(entitiesEmitted, 1); - done(); - }) - .emit('reading'); + stream + .on('data', + () => { + entitiesEmitted++; + stream.end(); + }) + .on('end', + () => { + assert.strictEqual(entitiesEmitted, 1); + done(); + }) + .emit('reading'); }); it('should not get more results if stream was ended', done => { @@ -500,14 +487,14 @@ describe('Request', () => { }; const stream = request.createReadStream(key); - stream - .on('error', done) - .on('data', () => stream.end()) - .on('end', () => { - assert.strictEqual(lookupCount, 1); - done(); - }) - .emit('reading'); + stream.on('error', done) + .on('data', () => stream.end()) + .on('end', + () => { + assert.strictEqual(lookupCount, 1); + done(); + }) + .emit('reading'); }); }); }); @@ -668,7 +655,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = function(entities, callback) { + request.save = (entities, callback) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -703,10 +690,7 @@ describe('Request', () => { done(); }); - request - .runQueryStream(query) - .on('error', done) - .emit('reading'); + request.runQueryStream(query).on('error', done).emit('reading'); }); it('should make correct request when the stream is ready', done => { @@ -721,18 +705,13 @@ describe('Request', () => { assert(is.empty(config.reqOpts.readOptions)); assert.strictEqual(config.reqOpts.query, queryProto); assert.strictEqual( - config.reqOpts.partitionId.namespaceId, - query.namespace - ); + config.reqOpts.partitionId.namespaceId, query.namespace); assert.strictEqual(config.gaxOpts, undefined); done(); }; - request - .runQueryStream(query) - .on('error', done) - .emit('reading'); + request.runQueryStream(query).on('error', done).emit('reading'); }); it('should allow customization of GAX options', done => { @@ -746,10 +725,7 @@ describe('Request', () => { done(); }; - request - .runQueryStream({}, options) - .on('error', done) - .emit('reading'); + request.runQueryStream({}, options).on('error', done).emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -759,10 +735,9 @@ describe('Request', () => { done(); }; - request - .runQueryStream({}, {consistency: 'strong'}) - .on('error', done) - .emit('reading'); + request.runQueryStream({}, {consistency: 'strong'}) + .on('error', done) + .emit('reading'); }); it('should allow setting strong eventual consistency', done => { @@ -772,10 +747,9 @@ describe('Request', () => { done(); }; - request - .runQueryStream({}, {consistency: 'eventual'}) - .on('error', done) - .emit('reading'); + request.runQueryStream({}, {consistency: 'eventual'}) + .on('error', done) + .emit('reading'); }); describe('error', () => { @@ -789,13 +763,13 @@ describe('Request', () => { it('should emit error on a stream', done => { sandbox.stub(entity, 'queryToQueryProto'); - request - .runQueryStream({}) - .on('error', err => { - assert.strictEqual(err, error); - done(); - }) - .emit('reading'); + request.runQueryStream({}) + .on('error', + err => { + assert.strictEqual(err, error); + done(); + }) + .emit('reading'); }); }); @@ -820,11 +794,10 @@ describe('Request', () => { callback(null, apiResponse); }; - formatArrayStub = sandbox - .stub(entity, 'formatArray') - .callsFake(array => { - return array; - }); + formatArrayStub = + sandbox.stub(entity, 'formatArray').callsFake(array => { + return array; + }); }); it('should format results', done => { @@ -837,14 +810,13 @@ describe('Request', () => { const entities: Array<{}> = []; - request - .runQueryStream({}) - .on('error', done) - .on('data', entity => entities.push(entity)) - .on('end', () => { - assert.deepStrictEqual(entities, apiResponse.batch.entityResults); - done(); - }); + request.runQueryStream({}) + .on('error', done) + .on('data', entity => entities.push(entity)) + .on('end', () => { + assert.deepStrictEqual(entities, apiResponse.batch.entityResults); + done(); + }); }); it('should re-run query if not finished', done => { @@ -865,9 +837,7 @@ describe('Request', () => { formatArrayStub.restore(); sandbox.stub(entity, 'formatArray').callsFake(array => { assert.strictEqual( - array, - entityResultsPerApiCall[timesRequestCalled] - ); + array, entityResultsPerApiCall[timesRequestCalled]); return entityResultsPerApiCall[timesRequestCalled]; }); @@ -876,7 +846,7 @@ describe('Request', () => { const resp = extend(true, {}, apiResponse); resp.batch.entityResults = - entityResultsPerApiCall[timesRequestCalled]; + entityResultsPerApiCall[timesRequestCalled]; if (timesRequestCalled === 1) { assert.strictEqual(config.client, 'DatastoreClient'); @@ -894,9 +864,7 @@ describe('Request', () => { FakeQuery.prototype.start = function(endCursor) { assert.strictEqual( - endCursor, - apiResponse.batch.endCursor.toString('base64') - ); + endCursor, apiResponse.batch.endCursor.toString('base64')); startCalled = true; return this; }; @@ -910,9 +878,7 @@ describe('Request', () => { sandbox.stub(FakeQuery.prototype, 'limit').callsFake(limit_ => { if (timesRequestCalled === 1) { assert.strictEqual( - limit_, - entityResultsPerApiCall[1].length - query.limitVal - ); + limit_, entityResultsPerApiCall[1].length - query.limitVal); } else { // Should restore the original limit. assert.strictEqual(limit_, query.limitVal); @@ -929,29 +895,30 @@ describe('Request', () => { const entities: Array<{}> = []; let info; - request - .runQueryStream(query) - .on('error', done) - .on('info', function(_info) { - info = _info; - }) - .on('data', function(entity) { - entities.push(entity); - }) - .on('end', () => { - const allResults = ([] as Array<{}>).slice - .call(entityResultsPerApiCall[1]) - .concat(entityResultsPerApiCall[2]); - - assert.deepStrictEqual(entities, allResults); - - assert.deepStrictEqual(info, { - endCursor: apiResponse.batch.endCursor.toString('base64'), - moreResults: apiResponse.batch.moreResults, + request.runQueryStream(query) + .on('error', done) + .on('info', + (_info) => { + info = _info; + }) + .on('data', + (entity) => { + entities.push(entity); + }) + .on('end', () => { + const allResults = ([] as Array<{}>) + .slice.call(entityResultsPerApiCall[1]) + .concat(entityResultsPerApiCall[2]); + + assert.deepStrictEqual(entities, allResults); + + assert.deepStrictEqual(info, { + endCursor: apiResponse.batch.endCursor.toString('base64'), + moreResults: apiResponse.batch.moreResults, + }); + + done(); }); - - done(); - }); }); it('should handle large limitless queries', done => { @@ -980,15 +947,14 @@ describe('Request', () => { limitCalled = true; }); - request - .runQueryStream(query) - .on('error', done) - .on('data', () => {}) - .on('end', () => { - assert.strictEqual(timesRequestCalled, 2); - assert.strictEqual(limitCalled, false); - done(); - }); + request.runQueryStream(query) + .on('error', done) + .on('data', () => {}) + .on('end', () => { + assert.strictEqual(timesRequestCalled, 2); + assert.strictEqual(limitCalled, false); + done(); + }); }); it('should not push more results if stream was ended', done => { @@ -1002,7 +968,7 @@ describe('Request', () => { const resp = extend(true, {}, apiResponse); resp.batch.entityResults = - entityResultsPerApiCall[timesRequestCalled]; + entityResultsPerApiCall[timesRequestCalled]; if (timesRequestCalled === 1) { resp.batch.moreResults = 'NOT_FINISHED'; @@ -1013,16 +979,16 @@ describe('Request', () => { } }; - const stream = request - .runQueryStream({}) - .on('data', () => { - entitiesEmitted++; - stream.end(); - }) - .on('end', () => { - assert.strictEqual(entitiesEmitted, 1); - done(); - }); + const stream = request.runQueryStream({}) + .on('data', + () => { + entitiesEmitted++; + stream.end(); + }) + .on('end', () => { + assert.strictEqual(entitiesEmitted, 1); + done(); + }); }); it('should not get more results if stream was ended', done => { @@ -1034,13 +1000,12 @@ describe('Request', () => { }; const stream = request.runQueryStream({}); - stream - .on('error', done) - .on('data', () => stream.end()) - .on('end', () => { - assert.strictEqual(timesRequestCalled, 1); - done(); - }); + stream.on('error', done) + .on('data', () => stream.end()) + .on('end', () => { + assert.strictEqual(timesRequestCalled, 1); + done(); + }); }); }); }); @@ -1059,7 +1024,7 @@ describe('Request', () => { setImmediate(() => { stream.emit('info', fakeInfo); - fakeEntities.forEach(function(entity) { + fakeEntities.forEach((entity) => { stream.push(entity); }); @@ -1073,7 +1038,7 @@ describe('Request', () => { it('should return an array of entities', done => { const options = {}; - request.runQuery(query, options, function(err, entities, info) { + request.runQuery(query, options, (err, entities, info) => { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); assert.strictEqual(info, fakeInfo); @@ -1183,10 +1148,7 @@ describe('Request', () => { callback(); }; - request.save( - [{key, data: {k: 'v'}}, {key, data: {k: 'v'}}], - done - ); + request.save([{key, data: {k: 'v'}}, {key, data: {k: 'v'}}], done); }); it('should allow customization of GAX options', done => { @@ -1198,13 +1160,11 @@ describe('Request', () => { }; request.save( - { - key, - data: {}, - }, - gaxOptions, - assert.ifError - ); + { + key, + data: {}, + }, + gaxOptions, assert.ifError); }); it('should prepare entity objects', done => { @@ -1249,27 +1209,25 @@ describe('Request', () => { }; request.save( - [ - {key, method: 'insert', data: {k: 'v'}}, - {key, method: 'update', data: {k2: 'v2'}}, - {key, method: 'upsert', data: {k3: 'v3'}}, - ], - done - ); + [ + {key, method: 'insert', data: {k: 'v'}}, + {key, method: 'update', data: {k2: 'v2'}}, + {key, method: 'upsert', data: {k3: 'v3'}}, + ], + done); }); it('should throw if a given method is not recognized', () => { assert.throws(() => { request.save( - { - key, - method: 'auto_insert_id', - data: { - k: 'v', + { + key, + method: 'auto_insert_id', + data: { + k: 'v', + }, }, - }, - assert.ifError - ); + assert.ifError); }, /Method auto_insert_id not recognized/); }); @@ -1305,7 +1263,7 @@ describe('Request', () => { request.request_ = (config, callback) => { callback(null, mockCommitResponse); }; - request.save({key, data: {}}, function(err, apiResponse) { + request.save({key, data: {}}, (err, apiResponse) => { assert.ifError(err); assert.strictEqual(mockCommitResponse, apiResponse); done(); @@ -1321,25 +1279,24 @@ describe('Request', () => { }; request.save( - { - key, - data: [ - { - name: 'name', - value: 'value', - excludeFromIndexes: true, - }, - ], - }, - assert.ifError - ); + { + key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true, + }, + ], + }, + assert.ifError); }); it('should allow setting the indexed value on arrays', done => { request.request_ = config => { const property = config.reqOpts.mutations[0].upsert.properties.name; - property.arrayValue.values.forEach(function(value) { + property.arrayValue.values.forEach((value) => { assert.strictEqual(value.excludeFromIndexes, true); }); @@ -1347,18 +1304,17 @@ describe('Request', () => { }; request.save( - { - key, - data: [ - { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, - }, - ], - }, - assert.ifError - ); + { + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError); }); it('should assign ID on keys without them', done => { @@ -1393,24 +1349,23 @@ describe('Request', () => { }); request.save( - [ - {key: incompleteKey, data: {}}, - {key: incompleteKey2, data: {}}, - {key: completeKey, data: {}}, - ], - err => { - assert.ifError(err); + [ + {key: incompleteKey, data: {}}, + {key: incompleteKey2, data: {}}, + {key: completeKey, data: {}}, + ], + err => { + assert.ifError(err); - assert.strictEqual(incompleteKey.id, ids[0]); - assert.strictEqual(incompleteKey2.id, ids[1]); + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); - assert.strictEqual(keyProtos.length, 2); - assert.strictEqual(keyProtos[0], response.mutationResults[0].key); - assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); - done(); - } - ); + done(); + }); }); describe('transactions', () => { @@ -1455,7 +1410,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = function(entities, callback) { + request.save = (entities, callback) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -1497,7 +1452,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = function(entities, callback) { + request.save = (entities, callback) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -1520,7 +1475,7 @@ describe('Request', () => { describe('request_', () => { const CONFIG = { - client: 'FakeClient', // name set at top of file + client: 'FakeClient', // name set at top of file method: 'method', reqOpts: { a: 'b', @@ -1559,7 +1514,7 @@ describe('Request', () => { it('should return error if getting project ID failed', done => { const error = new Error('Error.'); - request.datastore.auth.getProjectId = function(callback) { + request.datastore.auth.getProjectId = (callback) => { callback(error); }; request.request_(CONFIG, err => { @@ -1573,8 +1528,8 @@ describe('Request', () => { [CONFIG.method]() {}, }; v1FakeClientOverride = (options) => { - assert.deepStrictEqual(options, request.datastore.options); - return fakeClient; + assert.deepStrictEqual(options, request.datastore.options); + return fakeClient; }; request.datastore.clients_ = new Map(); request.request_(CONFIG, assert.ifError); @@ -1598,7 +1553,7 @@ describe('Request', () => { const expectedReqOpts: any = Object.assign({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; - pjyOverride = function(reqOpts, projectId) { + pjyOverride = (reqOpts, projectId) => { assert.notStrictEqual(reqOpts, CONFIG.reqOpts); assert.deepStrictEqual(reqOpts, expectedReqOpts); assert.strictEqual(projectId, PROJECT_ID); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 09dd4b62fe8..1cce80102f1 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -14,17 +14,17 @@ * limitations under the License. */ +import * as pfy from '@google-cloud/promisify'; import * as arrify from 'arrify'; import * as assert from 'assert'; import * as proxyquire from 'proxyquire'; -import * as pfy from '@google-cloud/promisify'; const {entity} = require('../src/entity'); let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll(Class, options) { - if (Class.name !== 'Transaction') { + promisifyAll(klass, options) { + if (klass.name !== 'Transaction') { return; } promisified = true; @@ -32,9 +32,9 @@ const fakePfy = Object.assign({}, pfy, { }, }); -// tslint:disable-next-line no-any +// tslint:disable-next-line no-any variable-name const DatastoreRequestOverride: any = { - delete() {}, + delete () {}, save() {}, }; @@ -42,19 +42,20 @@ class FakeDatastoreRequest { delete() { const args = [].slice.apply(arguments); const results = DatastoreRequestOverride.delete.apply(null, args); - DatastoreRequestOverride.delete = function() {}; + DatastoreRequestOverride.delete = () => {}; return results; } save() { const args = [].slice.apply(arguments); const results = DatastoreRequestOverride.save.apply(null, args); - DatastoreRequestOverride.save = function() {}; + DatastoreRequestOverride.save = () => {}; return results; } } -describe('Transaction', function() { +describe('Transaction', () => { + // tslint:disable-next-line variable-name let Transaction; let transaction; const TRANSACTION_ID = 'transaction-id'; @@ -71,35 +72,35 @@ describe('Transaction', function() { return new entity.Key({path: arrify(path)}); } - before(function() { + before(() => { Transaction = proxyquire('../src/transaction.js', { - '@google-cloud/promisify': fakePfy, - './request.js': {DatastoreRequest: FakeDatastoreRequest}, - }).Transaction; + '@google-cloud/promisify': fakePfy, + './request.js': {DatastoreRequest: FakeDatastoreRequest}, + }).Transaction; }); - beforeEach(function() { + beforeEach(() => { transaction = new Transaction(DATASTORE); }); - describe('instantiation', function() { - it('should promisify all the things', function() { + describe('instantiation', () => { + it('should promisify all the things', () => { assert(promisified); }); - it('should localize the datastore instance', function() { + it('should localize the datastore instance', () => { assert.strictEqual(transaction.datastore, DATASTORE); }); - it('should localize the project ID', function() { + it('should localize the project ID', () => { assert.strictEqual(transaction.projectId, PROJECT_ID); }); - it('should localize the namespace', function() { + it('should localize the namespace', () => { assert.strictEqual(transaction.namespace, NAMESPACE); }); - it('should localize the transaction ID', function() { + it('should localize the transaction ID', () => { const options = { id: 'transaction-id', }; @@ -108,7 +109,7 @@ describe('Transaction', function() { assert.strictEqual(transaction.id, options.id); }); - it('should localize readOnly', function() { + it('should localize readOnly', () => { const options = { readOnly: true, }; @@ -117,14 +118,14 @@ describe('Transaction', function() { assert.strictEqual(transaction.readOnly, true); }); - it('should localize request function', function(done) { + it('should localize request function', done => { // tslint:disable-next-line no-any const fakeDataset: any = { request_: { bind(context) { assert.strictEqual(context, fakeDataset); - setImmediate(function() { + setImmediate(() => { assert.strictEqual(transaction.request, fakeDataset.request); done(); }); @@ -137,20 +138,20 @@ describe('Transaction', function() { const transaction = new Transaction(fakeDataset); }); - it('should localize default properties', function() { + it('should localize default properties', () => { assert.deepStrictEqual(transaction.modifiedEntities_, []); assert.deepStrictEqual(transaction.requestCallbacks_, []); assert.deepStrictEqual(transaction.requests_, []); }); }); - describe('commit', function() { - beforeEach(function() { + describe('commit', () => { + beforeEach(() => { transaction.id = TRANSACTION_ID; }); - it('should commit', function(done) { - transaction.request_ = function(config) { + it('should commit', done => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); assert.strictEqual(config.gaxOptions, undefined); @@ -159,10 +160,10 @@ describe('Transaction', function() { transaction.commit(); }); - it('should accept gaxOptions', function(done) { + it('should accept gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -170,7 +171,7 @@ describe('Transaction', function() { transaction.commit(gaxOptions); }); - it('should skip the commit', function(done) { + it('should skip the commit', done => { transaction.skipCommit = true; // If called, the test will blow up. @@ -179,25 +180,25 @@ describe('Transaction', function() { transaction.commit(done); }); - describe('errors', function() { + describe('errors', () => { const error = new Error('Error.'); const apiResponse = {}; const rollbackError = new Error('Error.'); const rollbackApiResponse = {}; - beforeEach(function() { - transaction.rollback = function(callback) { + beforeEach(() => { + transaction.rollback = (callback) => { callback(rollbackError, rollbackApiResponse); }; - transaction.request_ = function(config, callback) { + transaction.request_ = (config, callback) => { callback(error, apiResponse); }; }); - it('should pass the commit error to the callback', function(done) { - transaction.commit(function(err, resp) { + it('should pass the commit error to the callback', done => { + transaction.commit((err, resp) => { assert.strictEqual(err, error); assert.strictEqual(resp, apiResponse); done(); @@ -205,19 +206,19 @@ describe('Transaction', function() { }); }); - it('should pass apiResponse to callback', function(done) { + it('should pass apiResponse to callback', done => { const resp = {success: true}; - transaction.request_ = function(config, callback) { + transaction.request_ = (config, callback) => { callback(null, resp); }; - transaction.commit(function(err, apiResponse) { + transaction.commit((err, apiResponse) => { assert.ifError(err); assert.deepStrictEqual(resp, apiResponse); done(); }); }); - it('should group mutations & execute original methods', function() { + it('should group mutations & execute original methods', () => { const deleteArg1 = key(['Product', 123]); const deleteArg2 = key(['Product', 234]); @@ -233,18 +234,18 @@ describe('Transaction', function() { const args: Array<{}> = []; let deleteCalled = 0; - DatastoreRequestOverride.delete = function() { - args.push(arguments[0]); + DatastoreRequestOverride.delete = (a) => { + args.push(a); deleteCalled++; }; let saveCalled = 0; - DatastoreRequestOverride.save = function() { - args.push(arguments[0]); + DatastoreRequestOverride.save = (a) => { + args.push(a); saveCalled++; }; - transaction.request_ = function() {}; + transaction.request_ = () => {}; transaction.commit(); @@ -260,43 +261,43 @@ describe('Transaction', function() { ]); }); - it('should honor ordering of mutations (last wins)', function() { + it('should honor ordering of mutations (last wins)', () => { // The delete should be ignored. transaction.delete(key(['Product', 123])); transaction.save({key: key(['Product', 123]), data: ''}); let deleteCalled = 0; - DatastoreRequestOverride.delete = function() { + DatastoreRequestOverride.delete = () => { deleteCalled++; }; let saveCalled = 0; - DatastoreRequestOverride.save = function() { + DatastoreRequestOverride.save = () => { saveCalled++; }; - transaction.request_ = function() {}; + transaction.request_ = () => {}; transaction.commit(); assert.strictEqual(deleteCalled, 0); assert.strictEqual(saveCalled, 1); }); - it('should not squash key-incomplete mutations', function(done) { + it('should not squash key-incomplete mutations', done => { transaction.save({key: key(['Product']), data: ''}); transaction.save({key: key(['Product']), data: ''}); - DatastoreRequestOverride.save = function(entities) { + DatastoreRequestOverride.save = (entities) => { assert.strictEqual(entities.length, 2); done(); }; - transaction.request_ = function() {}; + transaction.request_ = () => {}; transaction.commit(); }); - it('should send the built request object', function(done) { + it('should send the built request object', done => { transaction.requests_ = [ { mutations: [{a: 'b'}, {c: 'd'}], @@ -306,7 +307,7 @@ describe('Transaction', function() { }, ]; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts, { mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], }); @@ -316,20 +317,20 @@ describe('Transaction', function() { transaction.commit(); }); - it('should execute the queued callbacks', function() { + it('should execute the queued callbacks', () => { let cb1Called = false; let cb2Called = false; transaction.requestCallbacks_ = [ - function() { + () => { cb1Called = true; }, - function() { + () => { cb2Called = true; }, ]; - transaction.request_ = function(config, cb) { + transaction.request_ = (config, cb) => { cb(); }; @@ -340,8 +341,8 @@ describe('Transaction', function() { }); }); - describe('createQuery', function() { - it('should return query from datastore.createQuery', function() { + describe('createQuery', () => { + it('should return query from datastore.createQuery', () => { const args = [0, 1]; const createQueryReturnValue = {}; @@ -357,8 +358,8 @@ describe('Transaction', function() { }); }); - describe('delete', function() { - it('should push entities into a queue', function() { + describe('delete', () => { + it('should push entities into a queue', () => { const keys = [ key('Product123'), key('Product234'), @@ -369,7 +370,7 @@ describe('Transaction', function() { assert.strictEqual(transaction.modifiedEntities_.length, keys.length); - transaction.modifiedEntities_.forEach(function(queuedEntity) { + transaction.modifiedEntities_.forEach((queuedEntity) => { assert.strictEqual(queuedEntity.method, 'delete'); assert(keys.indexOf(queuedEntity.entity.key) > -1); assert.deepStrictEqual(queuedEntity.args, [queuedEntity.entity.key]); @@ -377,13 +378,13 @@ describe('Transaction', function() { }); }); - describe('rollback', function() { - beforeEach(function() { + describe('rollback', () => { + beforeEach(() => { transaction.id = TRANSACTION_ID; }); - it('should rollback', function(done) { - transaction.request_ = function(config) { + it('should rollback', done => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'rollback'); assert.strictEqual(config.gaxOptions, undefined); @@ -392,10 +393,10 @@ describe('Transaction', function() { transaction.rollback(); }); - it('should allow setting gaxOptions', function(done) { + it('should allow setting gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -403,53 +404,53 @@ describe('Transaction', function() { transaction.rollback(gaxOptions); }); - it('should pass error to callback', function(done) { + it('should pass error to callback', done => { const error = new Error('Error.'); - transaction.request_ = function(config, callback) { + transaction.request_ = (config, callback) => { callback(error); }; - transaction.rollback(function(err) { + transaction.rollback((err) => { assert.deepStrictEqual(err, error); done(); }); }); - it('should pass apiResponse to callback', function(done) { + it('should pass apiResponse to callback', done => { const resp = {success: true}; - transaction.request_ = function(config, callback) { + transaction.request_ = (config, callback) => { callback(null, resp); }; - transaction.rollback(function(err, apiResponse) { + transaction.rollback((err, apiResponse) => { assert.ifError(err); assert.deepStrictEqual(resp, apiResponse); done(); }); }); - it('should set skipCommit', function(done) { - transaction.request_ = function(config, callback) { + it('should set skipCommit', done => { + transaction.request_ = (config, callback) => { callback(); }; - transaction.rollback(function() { + transaction.rollback(() => { assert.strictEqual(transaction.skipCommit, true); done(); }); }); - it('should set skipCommit when rollback errors', function(done) { - transaction.request_ = function(config, callback) { + it('should set skipCommit when rollback errors', done => { + transaction.request_ = (config, callback) => { callback(new Error('Error.')); }; - transaction.rollback(function() { + transaction.rollback(() => { assert.strictEqual(transaction.skipCommit, true); done(); }); }); }); - describe('run', function() { - it('should make the correct API request', function(done) { - transaction.request_ = function(config) { + describe('run', () => { + it('should make the correct API request', done => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'beginTransaction'); assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); @@ -460,10 +461,10 @@ describe('Transaction', function() { transaction.run(assert.ifError); }); - it('should allow setting gaxOptions', function(done) { + it('should allow setting gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -471,31 +472,27 @@ describe('Transaction', function() { transaction.run({gaxOptions}); }); - describe('options.readOnly', function() { - it('should respect the readOnly option', function(done) { + describe('options.readOnly', () => { + it('should respect the readOnly option', done => { const options = { readOnly: true, }; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual( - config.reqOpts.transactionOptions.readOnly, - {} - ); + config.reqOpts.transactionOptions.readOnly, {}); done(); }; transaction.run(options, assert.ifError); }); - it('should respect the global readOnly option', function(done) { + it('should respect the global readOnly option', done => { transaction.readOnly = true; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual( - config.reqOpts.transactionOptions.readOnly, - {} - ); + config.reqOpts.transactionOptions.readOnly, {}); done(); }; @@ -503,13 +500,13 @@ describe('Transaction', function() { }); }); - describe('options.transactionId', function() { - it('should respect the transactionId option', function(done) { + describe('options.transactionId', () => { + it('should respect the transactionId option', done => { const options = { transactionId: 'transaction-id', }; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { previousTransaction: options.transactionId, }); @@ -519,10 +516,10 @@ describe('Transaction', function() { transaction.run(options, assert.ifError); }); - it('should respect the global transactionId option', function(done) { + it('should respect the global transactionId option', done => { transaction.id = 'transaction-id'; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { previousTransaction: transaction.id, }); @@ -533,8 +530,8 @@ describe('Transaction', function() { }); }); - describe('options.transactionOptions', function() { - it('should allow full override of transactionOptions', function(done) { + describe('options.transactionOptions', () => { + it('should allow full override of transactionOptions', done => { transaction.readOnly = true; const options = { @@ -545,7 +542,7 @@ describe('Transaction', function() { }, }; - transaction.request_ = function(config) { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts, options); done(); }; @@ -554,18 +551,18 @@ describe('Transaction', function() { }); }); - describe('error', function() { + describe('error', () => { const error = new Error('Error.'); const apiResponse = {}; - beforeEach(function() { - transaction.request_ = function(config, callback) { + beforeEach(() => { + transaction.request_ = (config, callback) => { callback(error, apiResponse); }; }); - it('should pass error & API response to callback', function(done) { - transaction.run(function(err, transaction, apiResponse_) { + it('should pass error & API response to callback', done => { + transaction.run((err, transaction, apiResponse_) => { assert.strictEqual(err, error); assert.strictEqual(transaction, null); assert.strictEqual(apiResponse_, apiResponse); @@ -574,29 +571,29 @@ describe('Transaction', function() { }); }); - describe('success', function() { + describe('success', () => { const apiResponse = { transaction: TRANSACTION_ID, }; - beforeEach(function() { - transaction.request_ = function(config, callback) { + beforeEach(() => { + transaction.request_ = (config, callback) => { callback(null, apiResponse); }; }); - it('should set transaction id', function(done) { + it('should set transaction id', done => { delete transaction.id; - transaction.run(function(err) { + transaction.run((err) => { assert.ifError(err); assert.strictEqual(transaction.id, TRANSACTION_ID); done(); }); }); - it('should exec callback with Transaction & apiResponse', function(done) { - transaction.run(function(err, transaction_, apiResponse_) { + it('should exec callback with Transaction & apiResponse', done => { + transaction.run((err, transaction_, apiResponse_) => { assert.ifError(err); assert.strictEqual(transaction_, transaction); assert.deepStrictEqual(apiResponse_, apiResponse); @@ -606,8 +603,8 @@ describe('Transaction', function() { }); }); - describe('save', function() { - it('should push entities into a queue', function() { + describe('save', () => { + it('should push entities into a queue', () => { const entities = [ {key: key('Product123'), data: 123}, {key: key('Product234'), data: 234}, @@ -618,10 +615,10 @@ describe('Transaction', function() { assert.strictEqual(transaction.modifiedEntities_.length, entities.length); - transaction.modifiedEntities_.forEach(function(queuedEntity) { + transaction.modifiedEntities_.forEach((queuedEntity) => { assert.strictEqual(queuedEntity.method, 'save'); - const match = entities.filter(function(ent) { + const match = entities.filter((ent) => { return ent.key === queuedEntity.entity.key; })[0]; From 1fcd7728676d90d33b2f45235d950e0d09c2e924 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 14 Dec 2018 23:47:50 -0800 Subject: [PATCH 297/820] chore(deps): update dependency @types/sinon to v7 (#286) --- handwritten/nodejs-datastore/package.json | 6 +- handwritten/nodejs-datastore/src/entity.ts | 1494 +++++++++--------- handwritten/nodejs-datastore/src/query.ts | 2 +- handwritten/nodejs-datastore/test/request.ts | 15 +- 4 files changed, 740 insertions(+), 777 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e91262964c5..d426f859f10 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -32,10 +32,8 @@ "docs": "jsdoc -c .jsdoc.js", "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", "lint": "gts check && eslint '**/*.js'", - "cover": "nyc --reporter=lcov mocha build/test && nyc report", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", - "test-no-cover": "mocha build/test", - "test": "npm run cover", + "test": "nyc mocha build/test", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", "fix": "gts fix && eslint '**/*.js' --fix", @@ -66,7 +64,7 @@ "@types/is": "0.0.21", "@types/mocha": "^5.2.5", "@types/proxyquire": "^1.3.28", - "@types/sinon": "5.0.5", + "@types/sinon": "7.0.0", "@types/through2": "^2.0.34", "async": "^2.6.1", "codecov": "^3.0.2", diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index eb9e7283c37..e8abc9b9b81 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -18,882 +18,848 @@ import * as arrify from 'arrify'; import * as extend from 'extend'; import * as is from 'is'; -// tslint:disable-next-line no-any -const entity: any = {}; - -class InvalidKeyError extends Error { - constructor(opts) { - const errorMessages = { - MISSING_KIND: 'A key should contain at least a kind.', - MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', - }; - super(errorMessages[opts.code]); - this.name = 'InvalidKey'; +// tslint:disable-next-line no-namespace +export namespace entity { + export class InvalidKeyError extends Error { + constructor(opts) { + const errorMessages = { + MISSING_KIND: 'A key should contain at least a kind.', + MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', + }; + super(errorMessages[opts.code]); + this.name = 'InvalidKey'; + } } -} -/** - * A symbol to access the Key object from an entity object. - * - * @type {symbol} - * @private - */ -entity.KEY_SYMBOL = Symbol('KEY'); + /** + * A symbol to access the Key object from an entity object. + * + * @type {symbol} + * @private + */ + export const KEY_SYMBOL = Symbol('KEY'); + + /** + * Build a Datastore Double object. For long doubles, a string can be + * provided. + * + * @class + * @param {number} value The double value. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const aDouble = datastore.double(7.3); + */ + export class Double { + value: number; + constructor(value: number) { + /** + * @name Double#value + * @type {number} + */ + this.value = value; + } + } -/** - * Build a Datastore Double object. For long doubles, a string can be provided. - * - * @class - * @param {number} value The double value. - * - * @example - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const aDouble = datastore.double(7.3); - */ -class Double { - value: number; - constructor(value: number) { - /** - * @name Double#value - * @type {number} - */ - this.value = value; + /** + * Check if something is a Datastore Double object. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsDouble(value) { + return value instanceof entity.Double; } -} -entity.Double = Double; + /** + * Build a Datastore Int object. For long integers, a string can be provided. + * + * @class + * @param {number|string} value The integer value. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const anInt = datastore.int(7); + */ + export class Int { + value: string; + constructor(value: number|string) { + /** + * @name Int#value + * @type {string} + */ + this.value = value.toString(); + } + } -/** - * Check if something is a Datastore Double object. - * - * @private - * @param {*} value - * @returns {boolean} - */ -function isDsDouble(value) { - return value instanceof entity.Double; -} + /** + * Check if something is a Datastore Int object. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsInt(value) { + return value instanceof entity.Int; + } -entity.isDsDouble = isDsDouble; + export interface Coordinates { + latitude: number; + longitude: number; + } -/** - * Build a Datastore Int object. For long integers, a string can be provided. - * - * @class - * @param {number|string} value The integer value. - * - * @example - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const anInt = datastore.int(7); - */ -class Int { - value: string; - constructor(value: number|string) { - /** - * @name Int#value - * @type {string} - */ - this.value = value.toString(); + /** + * Build a Datastore Geo Point object. + * + * @class + * @param {object} coordinates Coordinate value. + * @param {number} coordinates.latitude Latitudinal value. + * @param {number} coordinates.longitude Longitudinal value. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const coordinates = { + * latitude: 40.6894, + * longitude: -74.0447 + * }; + * + * const geoPoint = datastore.geoPoint(coordinates); + */ + export class GeoPoint { + value: Coordinates; + constructor(coordinates: Coordinates) { + /** + * Coordinate value. + * + * @name GeoPoint#coordinates + * @type {object} + * @property {number} latitude Latitudinal value. + * @property {number} longitude Longitudinal value. + */ + this.value = coordinates; + } } -} -entity.Int = Int; + /** + * Check if something is a Datastore Geo Point object. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsGeoPoint(value) { + return value instanceof entity.GeoPoint; + } -/** - * Check if something is a Datastore Int object. - * - * @private - * @param {*} value - * @returns {boolean} - */ -function isDsInt(value) { - return value instanceof entity.Int; -} + /** + * Build a Datastore Key object. + * + * @class + * @param {object} options Configuration object. + * @param {array} options.path Key path. + * @param {string} [options.namespace] Optional namespace. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key({ + * namespace: 'ns', + * path: ['Company', 123] + * }); + */ + export class Key { + namespace: string; + id?: string; + name?: string; + kind: string; + parent?: Key; + path; + + constructor(options) { + /** + * @name Key#namespace + * @type {string} + */ + this.namespace = options.namespace; + + options.path = [].slice.call(options.path); + + if (options.path.length % 2 === 0) { + const identifier = options.path.pop(); + + if (is.number(identifier) || isDsInt(identifier)) { + this.id = identifier.value || identifier; + } else if (is.string(identifier)) { + this.name = identifier; + } + } -entity.isDsInt = isDsInt; + this.kind = options.path.pop(); -export interface Coordinates { - latitude: number; - longitude: number; -} + if (options.path.length > 0) { + this.parent = new Key(options); + } -/** - * Build a Datastore Geo Point object. - * - * @class - * @param {object} coordinates Coordinate value. - * @param {number} coordinates.latitude Latitudinal value. - * @param {number} coordinates.longitude Longitudinal value. - * - * @example - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const coordinates = { - * latitude: 40.6894, - * longitude: -74.0447 - * }; - * - * const geoPoint = datastore.geoPoint(coordinates); - */ -class GeoPoint { - value: Coordinates; - constructor(coordinates: Coordinates) { - /** - * Coordinate value. - * - * @name GeoPoint#coordinates - * @type {object} - * @property {number} latitude Latitudinal value. - * @property {number} longitude Longitudinal value. - */ - this.value = coordinates; + // `path` is computed on demand to consider any changes that may have been + // made to the key. + /** + * @name Key#path + * @type {array} + */ + Object.defineProperty(this, 'path', { + enumerable: true, + get() { + return arrify(this.parent && this.parent.path).concat([ + this.kind, + this.name || this.id, + ]); + }, + }); + } } -} - -entity.GeoPoint = GeoPoint; -/** - * Check if something is a Datastore Geo Point object. - * - * @private - * @param {*} value - * @returns {boolean} - */ -function isDsGeoPoint(value) { - return value instanceof entity.GeoPoint; -} - -entity.isDsGeoPoint = isDsGeoPoint; + /** + * Check if something is a Datastore Key object. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsKey(value) { + return value instanceof entity.Key; + } -/** - * Build a Datastore Key object. - * - * @class - * @param {object} options Configuration object. - * @param {array} options.path Key path. - * @param {string} [options.namespace] Optional namespace. - * - * @example - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key({ - * namespace: 'ns', - * path: ['Company', 123] - * }); - */ -class Key { - namespace: string; - id?: string; - name?: string; - kind: string; - parent?: Key; - - constructor(options) { - /** - * @name Key#namespace - * @type {string} - */ - this.namespace = options.namespace; - - options.path = [].slice.call(options.path); - - if (options.path.length % 2 === 0) { - const identifier = options.path.pop(); - - if (is.number(identifier) || isDsInt(identifier)) { - this.id = identifier.value || identifier; - } else if (is.string(identifier)) { - this.name = identifier; + /** + * Convert a protobuf Value message to its native value. + * + * @private + * @param {object} valueProto The protobuf Value message to convert. + * @returns {*} + * + * @example + * decodeValueProto({ + * booleanValue: false + * }); + * // false + * + * decodeValueProto({ + * stringValue: 'Hi' + * }); + * // 'Hi' + * + * decodeValueProto({ + * blobValue: Buffer.from('68656c6c6f') + * }); + * // + */ + export function decodeValueProto(valueProto) { + const valueType = valueProto.valueType; + const value = valueProto[valueType]; + + switch (valueType) { + case 'arrayValue': { + return value.values.map(entity.decodeValueProto); } - } - this.kind = options.path.pop(); + case 'blobValue': { + return Buffer.from(value, 'base64'); + } - if (options.path.length > 0) { - this.parent = new Key(options); - } + case 'nullValue': { + return null; + } - // `path` is computed on demand to consider any changes that may have been - // made to the key. - /** - * @name Key#path - * @type {array} - */ - Object.defineProperty(this, 'path', { - enumerable: true, - get() { - return arrify(this.parent && this.parent.path).concat([ - this.kind, - this.name || this.id, - ]); - }, - }); - } -} + case 'doubleValue': { + return Number(value); + } -entity.Key = Key; + case 'integerValue': { + return Number(value); + } -/** - * Check if something is a Datastore Key object. - * - * @private - * @param {*} value - * @returns {boolean} - */ -function isDsKey(value) { - return value instanceof entity.Key; -} + case 'entityValue': { + return entity.entityFromEntityProto(value); + } -entity.isDsKey = isDsKey; + case 'keyValue': { + return entity.keyFromKeyProto(value); + } -/** - * Convert a protobuf Value message to its native value. - * - * @private - * @param {object} valueProto The protobuf Value message to convert. - * @returns {*} - * - * @example - * decodeValueProto({ - * booleanValue: false - * }); - * // false - * - * decodeValueProto({ - * stringValue: 'Hi' - * }); - * // 'Hi' - * - * decodeValueProto({ - * blobValue: Buffer.from('68656c6c6f') - * }); - * // - */ -function decodeValueProto(valueProto) { - const valueType = valueProto.valueType; - const value = valueProto[valueType]; + case 'timestampValue': { + const milliseconds = Number(value.nanos) / 1e6; + return new Date(Number(value.seconds) * 1000 + milliseconds); + } - switch (valueType) { - case 'arrayValue': { - return value.values.map(entity.decodeValueProto); + default: { return value; } } + } - case 'blobValue': { - return Buffer.from(value, 'base64'); - } + /** + * Convert any native value to a protobuf Value message object. + * + * @private + * @param {*} value Native value. + * @returns {object} + * + * @example + * encodeValue('Hi'); + * // { + * // stringValue: 'Hi' + * // } + */ + export function encodeValue(value) { + // tslint:disable-next-line no-any + const valueProto: any = {}; - case 'nullValue': { - return null; + if (is.boolean(value)) { + valueProto.booleanValue = value; + return valueProto; } - case 'doubleValue': { - return Number(value); + if (is.null(value)) { + valueProto.nullValue = 0; + return valueProto; } - case 'integerValue': { - return Number(value); + if (is.number(value)) { + if (value % 1 === 0) { + value = new entity.Int(value); + } else { + value = new entity.Double(value); + } } - case 'entityValue': { - return entity.entityFromEntityProto(value); + if (isDsInt(value)) { + valueProto.integerValue = value.value; + return valueProto; } - case 'keyValue': { - return entity.keyFromKeyProto(value); + if (isDsDouble(value)) { + valueProto.doubleValue = value.value; + return valueProto; } - case 'timestampValue': { - const milliseconds = Number(value.nanos) / 1e6; - return new Date(Number(value.seconds) * 1000 + milliseconds); + if (isDsGeoPoint(value)) { + valueProto.geoPointValue = value.value; + return valueProto; } - default: { return value; } - } -} + if (value instanceof Date) { + const seconds = value.getTime() / 1000; -entity.decodeValueProto = decodeValueProto; - -/** - * Convert any native value to a protobuf Value message object. - * - * @private - * @param {*} value Native value. - * @returns {object} - * - * @example - * encodeValue('Hi'); - * // { - * // stringValue: 'Hi' - * // } - */ -function encodeValue(value) { - // tslint:disable-next-line no-any - const valueProto: any = {}; - - if (is.boolean(value)) { - valueProto.booleanValue = value; - return valueProto; - } - - if (is.null(value)) { - valueProto.nullValue = 0; - return valueProto; - } + valueProto.timestampValue = { + seconds: Math.floor(seconds), + nanos: value.getMilliseconds() * 1e6, + }; - if (is.number(value)) { - if (value % 1 === 0) { - value = new entity.Int(value); - } else { - value = new entity.Double(value); + return valueProto; } - } - - if (isDsInt(value)) { - valueProto.integerValue = value.value; - return valueProto; - } - - if (isDsDouble(value)) { - valueProto.doubleValue = value.value; - return valueProto; - } - - if (isDsGeoPoint(value)) { - valueProto.geoPointValue = value.value; - return valueProto; - } - - if (value instanceof Date) { - const seconds = value.getTime() / 1000; - - valueProto.timestampValue = { - seconds: Math.floor(seconds), - nanos: value.getMilliseconds() * 1e6, - }; - - return valueProto; - } - if (is.string(value)) { - valueProto.stringValue = value; - return valueProto; - } + if (is.string(value)) { + valueProto.stringValue = value; + return valueProto; + } - if (value instanceof Buffer) { - valueProto.blobValue = value; - return valueProto; - } + if (value instanceof Buffer) { + valueProto.blobValue = value; + return valueProto; + } - if (is.array(value)) { - valueProto.arrayValue = { - values: value.map(entity.encodeValue), - }; - return valueProto; - } + if (is.array(value)) { + valueProto.arrayValue = { + values: value.map(entity.encodeValue), + }; + return valueProto; + } - if (isDsKey(value)) { - valueProto.keyValue = entity.keyToKeyProto(value); - return valueProto; - } + if (isDsKey(value)) { + valueProto.keyValue = entity.keyToKeyProto(value); + return valueProto; + } - if (is.object(value)) { - if (!is.empty(value)) { - value = extend(true, {}, value); + if (is.object(value)) { + if (!is.empty(value)) { + value = extend(true, {}, value); - for (const prop in value) { - if (value.hasOwnProperty(prop)) { - value[prop] = entity.encodeValue(value[prop]); + for (const prop in value) { + if (value.hasOwnProperty(prop)) { + value[prop] = entity.encodeValue(value[prop]); + } } } - } - - valueProto.entityValue = { - properties: value, - }; - - return valueProto; - } - throw new Error('Unsupported field value, ' + value + ', was provided.'); -} - -entity.encodeValue = encodeValue; - -/** - * Convert any entity protocol to a plain object. - * - * @todo Use registered metadata if provided. - * - * @private - * @param {object} entityProto The protocol entity object to convert. - * @returns {object} - * - * @example - * entityFromEntityProto({ - * properties: { - * map: { - * name: { - * value: { - * valueType: 'stringValue', - * stringValue: 'Stephen' - * } - * } - * } - * } - * }); - * // { - * // name: 'Stephen' - * // } - */ -function entityFromEntityProto(entityProto) { - const entityObject = {}; + valueProto.entityValue = { + properties: value, + }; - const properties = entityProto.properties || {}; + return valueProto; + } - // tslint:disable-next-line forin - for (const property in properties) { - const value = properties[property]; - entityObject[property] = entity.decodeValueProto(value); + throw new Error('Unsupported field value, ' + value + ', was provided.'); } - return entityObject; -} - -entity.entityFromEntityProto = entityFromEntityProto; + /** + * Convert any entity protocol to a plain object. + * + * @todo Use registered metadata if provided. + * + * @private + * @param {object} entityProto The protocol entity object to convert. + * @returns {object} + * + * @example + * entityFromEntityProto({ + * properties: { + * map: { + * name: { + * value: { + * valueType: 'stringValue', + * stringValue: 'Stephen' + * } + * } + * } + * } + * }); + * // { + * // name: 'Stephen' + * // } + */ + export function entityFromEntityProto(entityProto) { + const entityObject = {}; + + const properties = entityProto.properties || {}; + + // tslint:disable-next-line forin + for (const property in properties) { + const value = properties[property]; + entityObject[property] = entity.decodeValueProto(value); + } -/** - * Convert an entity object to an entity protocol object. - * - * @private - * @param {object} entityObject The entity object to convert. - * @returns {object} - * - * @example - * entityToEntityProto({ - * excludeFromIndexes: [ - * 'name' - * ], - * data: { - * name: 'Burcu', - * legit: true - * } - * }); - * // { - * // key: null, - * // properties: { - * // name: { - * // stringValue: 'Burcu' - * // excludeFromIndexes: true - * // }, - * // legit: { - * // booleanValue: true - * // } - * // } - * // } - */ -function entityToEntityProto(entityObject) { - const properties = entityObject.data; - const excludeFromIndexes = entityObject.excludeFromIndexes; - - const entityProto = { - key: null, - - properties: Object.keys(properties) - .reduce( - (encoded, key) => { - encoded[key] = entity.encodeValue(properties[key]); - return encoded; - }, - {}), - }; - - if (excludeFromIndexes && excludeFromIndexes.length > 0) { - excludeFromIndexes.forEach(excludePath => { - excludePathFromEntity(entityProto, excludePath); - }); + return entityObject; } - return entityProto; - - function excludePathFromEntity(entity, path) { - const arrayIndex = path.indexOf('[]'); - const entityIndex = path.indexOf('.'); + /** + * Convert an entity object to an entity protocol object. + * + * @private + * @param {object} entityObject The entity object to convert. + * @returns {object} + * + * @example + * entityToEntityProto({ + * excludeFromIndexes: [ + * 'name' + * ], + * data: { + * name: 'Burcu', + * legit: true + * } + * }); + * // { + * // key: null, + * // properties: { + * // name: { + * // stringValue: 'Burcu' + * // excludeFromIndexes: true + * // }, + * // legit: { + * // booleanValue: true + * // } + * // } + * // } + */ + export function entityToEntityProto(entityObject) { + const properties = entityObject.data; + const excludeFromIndexes = entityObject.excludeFromIndexes; + + const entityProto = { + key: null, + + properties: Object.keys(properties) + .reduce( + (encoded, key) => { + encoded[key] = entity.encodeValue(properties[key]); + return encoded; + }, + {}), + }; - const hasArrayPath = arrayIndex > -1; - const hasEntityPath = entityIndex > -1; + if (excludeFromIndexes && excludeFromIndexes.length > 0) { + excludeFromIndexes.forEach(excludePath => { + excludePathFromEntity(entityProto, excludePath); + }); + } - if (!hasArrayPath && !hasEntityPath) { - // This is the path end node. Traversal ends here in either case. - if (entity.properties) { - if (entity.properties[path] && - // array properties should be excluded with [] syntax: - !entity.properties[path].arrayValue) { - // This is the property to exclude! - entity.properties[path].excludeFromIndexes = true; + return entityProto; + + function excludePathFromEntity(entity, path) { + const arrayIndex = path.indexOf('[]'); + const entityIndex = path.indexOf('.'); + + const hasArrayPath = arrayIndex > -1; + const hasEntityPath = entityIndex > -1; + + if (!hasArrayPath && !hasEntityPath) { + // This is the path end node. Traversal ends here in either case. + if (entity.properties) { + if (entity.properties[path] && + // array properties should be excluded with [] syntax: + !entity.properties[path].arrayValue) { + // This is the property to exclude! + entity.properties[path].excludeFromIndexes = true; + } + } else if (!path) { + // This is a primitive or entity root that should be excluded. + entity.excludeFromIndexes = true; } - } else if (!path) { - // This is a primitive or entity root that should be excluded. - entity.excludeFromIndexes = true; + return; } - return; - } - let delimiterIndex; - if (hasArrayPath && hasEntityPath) { - delimiterIndex = Math.min(arrayIndex, entityIndex); - } else { - delimiterIndex = Math.max(arrayIndex, entityIndex); - } + let delimiterIndex; + if (hasArrayPath && hasEntityPath) { + delimiterIndex = Math.min(arrayIndex, entityIndex); + } else { + delimiterIndex = Math.max(arrayIndex, entityIndex); + } - const firstPathPartIsArray = delimiterIndex === arrayIndex; - const firstPathPartIsEntity = delimiterIndex === entityIndex; + const firstPathPartIsArray = delimiterIndex === arrayIndex; + const firstPathPartIsEntity = delimiterIndex === entityIndex; - const delimiter = firstPathPartIsArray ? '[]' : '.'; - const splitPath = path.split(delimiter); - const firstPathPart = splitPath.shift(); - const remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); + const delimiter = firstPathPartIsArray ? '[]' : '.'; + const splitPath = path.split(delimiter); + const firstPathPart = splitPath.shift(); + const remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); - if (!(entity.properties && entity.properties[firstPathPart])) { - // Either a primitive or an entity for which this path doesn't apply. - return; - } + if (!(entity.properties && entity.properties[firstPathPart])) { + // Either a primitive or an entity for which this path doesn't apply. + return; + } - if (firstPathPartIsArray && - // check also if the property in question is actually an array value. - entity.properties[firstPathPart].arrayValue) { - const array = entity.properties[firstPathPart].arrayValue; - array.values.forEach(value => { - if (remainderPath === '') { - // We want to exclude *this* array property, which is - // equivalent with excluding all its values - // (including entity values at their roots): - excludePathFromEntity( - value, - remainderPath // === '' - ); - } else { - // Path traversal continues at value.entityValue, - // if it is an entity, or must end at value. - excludePathFromEntity( - value.entityValue || value, - remainderPath // !== '' - ); - } - }); - } else if (firstPathPartIsEntity) { - const parentEntity = entity.properties[firstPathPart].entityValue; - excludePathFromEntity(parentEntity, remainderPath); + if (firstPathPartIsArray && + // check also if the property in question is actually an array value. + entity.properties[firstPathPart].arrayValue) { + const array = entity.properties[firstPathPart].arrayValue; + array.values.forEach(value => { + if (remainderPath === '') { + // We want to exclude *this* array property, which is + // equivalent with excluding all its values + // (including entity values at their roots): + excludePathFromEntity( + value, + remainderPath // === '' + ); + } else { + // Path traversal continues at value.entityValue, + // if it is an entity, or must end at value. + excludePathFromEntity( + value.entityValue || value, + remainderPath // !== '' + ); + } + }); + } else if (firstPathPartIsEntity) { + const parentEntity = entity.properties[firstPathPart].entityValue; + excludePathFromEntity(parentEntity, remainderPath); + } } } -} - -entity.entityToEntityProto = entityToEntityProto; - -/** - * Convert an API response array to a qualified Key and data object. - * - * @private - * @param {object[]} results The response array. - * @param {object} results.entity An entity object. - * @param {object} results.entity.key The entity's key. - * @returns {object[]} - * - * @example - * request_('runQuery', {}, (err, response) => { - * const entityObjects = formatArray(response.batch.entityResults); - * // { - * // key: {}, - * // data: { - * // fieldName: 'value' - * // } - * // } - * // - * }); - */ -function formatArray(results) { - return results.map(result => { - const ent = entity.entityFromEntityProto(result.entity); - ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key); - return ent; - }); -} - -entity.formatArray = formatArray; - -/** - * Check if a key is complete. - * - * @private - * @param {Key} key The Key object. - * @returns {boolean} - * - * @example - * isKeyComplete(new Key(['Company', 'Google'])); // true - * isKeyComplete(new Key('Company')); // false - */ -function isKeyComplete(key) { - const lastPathElement = entity.keyToKeyProto(key).path.pop(); - return !!(lastPathElement.id || lastPathElement.name); -} - -entity.isKeyComplete = isKeyComplete; -/** - * Convert a key protocol object to a Key object. - * - * @private - * @param {object} keyProto The key protocol object to convert. - * @returns {Key} - * - * @example - * const key = keyFromKeyProto({ - * partitionId: { - * projectId: 'project-id', - * namespaceId: '' - * }, - * path: [ - * { - * kind: 'Kind', - * id: '4790047639339008' - * } - * ] - * }); - */ -function keyFromKeyProto(keyProto) { - // tslint:disable-next-line no-any - const keyOptions: any = { - path: [], - }; - - if (keyProto.partitionId && keyProto.partitionId.namespaceId) { - keyOptions.namespace = keyProto.partitionId.namespaceId; + /** + * Convert an API response array to a qualified Key and data object. + * + * @private + * @param {object[]} results The response array. + * @param {object} results.entity An entity object. + * @param {object} results.entity.key The entity's key. + * @returns {object[]} + * + * @example + * request_('runQuery', {}, (err, response) => { + * const entityObjects = formatArray(response.batch.entityResults); + * // { + * // key: {}, + * // data: { + * // fieldName: 'value' + * // } + * // } + * // + * }); + */ + export function formatArray(results) { + return results.map(result => { + const ent = entity.entityFromEntityProto(result.entity); + ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key); + return ent; + }); } - keyProto.path.forEach((path, index) => { - keyOptions.path.push(path.kind); + /** + * Check if a key is complete. + * + * @private + * @param {Key} key The Key object. + * @returns {boolean} + * + * @example + * isKeyComplete(new Key(['Company', 'Google'])); // true + * isKeyComplete(new Key('Company')); // false + */ + export function isKeyComplete(key) { + const lastPathElement = entity.keyToKeyProto(key).path.pop(); + return !!(lastPathElement.id || lastPathElement.name); + } - let id = path[path.idType]; + /** + * Convert a key protocol object to a Key object. + * + * @private + * @param {object} keyProto The key protocol object to convert. + * @returns {Key} + * + * @example + * const key = keyFromKeyProto({ + * partitionId: { + * projectId: 'project-id', + * namespaceId: '' + * }, + * path: [ + * { + * kind: 'Kind', + * id: '4790047639339008' + * } + * ] + * }); + */ + export function keyFromKeyProto(keyProto) { + // tslint:disable-next-line no-any + const keyOptions: any = { + path: [], + }; - if (path.idType === 'id') { - id = new entity.Int(id); + if (keyProto.partitionId && keyProto.partitionId.namespaceId) { + keyOptions.namespace = keyProto.partitionId.namespaceId; } - if (is.defined(id)) { - keyOptions.path.push(id); - } else if (index < keyProto.path.length - 1) { - throw new InvalidKeyError({ - code: 'MISSING_ANCESTOR_ID', - }); - } - }); + keyProto.path.forEach((path, index) => { + keyOptions.path.push(path.kind); - return new entity.Key(keyOptions); -} + let id = path[path.idType]; -entity.keyFromKeyProto = keyFromKeyProto; + if (path.idType === 'id') { + id = new entity.Int(id); + } -/** - * Convert a Key object to a key protocol object. - * - * @private - * @param {Key} key The Key object to convert. - * @returns {object} - * - * @example - * const keyProto = keyToKeyProto(new Key(['Company', 1])); - * // { - * // path: [ - * // { - * // kind: 'Company', - * // id: 1 - * // } - * // ] - * // } - */ -function keyToKeyProto(key) { - if (is.undefined(key.kind)) { - throw new InvalidKeyError({ - code: 'MISSING_KIND', + if (is.defined(id)) { + keyOptions.path.push(id); + } else if (index < keyProto.path.length - 1) { + throw new InvalidKeyError({ + code: 'MISSING_ANCESTOR_ID', + }); + } }); - } - // tslint:disable-next-line no-any - const keyProto: any = { - path: [], - }; - - if (key.namespace) { - keyProto.partitionId = { - namespaceId: key.namespace, - }; + return new entity.Key(keyOptions); } - let numKeysWalked = 0; - - // Reverse-iterate over the Key objects. - do { - if (numKeysWalked > 0 && is.undefined(key.id) && is.undefined(key.name)) { - // This isn't just an incomplete key. An ancestor key is incomplete. + /** + * Convert a Key object to a key protocol object. + * + * @private + * @param {Key} key The Key object to convert. + * @returns {object} + * + * @example + * const keyProto = keyToKeyProto(new Key(['Company', 1])); + * // { + * // path: [ + * // { + * // kind: 'Company', + * // id: 1 + * // } + * // ] + * // } + */ + export function keyToKeyProto(key) { + if (is.undefined(key.kind)) { throw new InvalidKeyError({ - code: 'MISSING_ANCESTOR_ID', + code: 'MISSING_KIND', }); } // tslint:disable-next-line no-any - const pathElement: any = { - kind: key.kind, + const keyProto: any = { + path: [], }; - if (is.defined(key.id)) { - pathElement.id = key.id; - } - - if (is.defined(key.name)) { - pathElement.name = key.name; + if (key.namespace) { + keyProto.partitionId = { + namespaceId: key.namespace, + }; } - keyProto.path.unshift(pathElement); - // tslint:disable-next-line no-conditional-assignment - } while ((key = key.parent) && ++numKeysWalked); + let numKeysWalked = 0; - return keyProto; -} - -entity.keyToKeyProto = keyToKeyProto; + // Reverse-iterate over the Key objects. + do { + if (numKeysWalked > 0 && is.undefined(key.id) && is.undefined(key.name)) { + // This isn't just an incomplete key. An ancestor key is incomplete. + throw new InvalidKeyError({ + code: 'MISSING_ANCESTOR_ID', + }); + } -/** - * Convert a query object to a query protocol object. - * - * @private - * @param {object} q The query object to convert. - * @returns {object} - * - * @example - * queryToQueryProto({ - * namespace: '', - * kinds: [ - * 'Kind' - * ], - * filters: [], - * orders: [], - * groupByVal: [], - * selectVal: [], - * startVal: null, - * endVal: null, - * limitVal: -1, - * offsetVal: -1 - * }); - * // { - * // projection: [], - * // kinds: [ - * // { - * // name: 'Kind' - * // } - * // ], - * // order: [], - * // groupBy: [] - * // } - */ -function queryToQueryProto(query) { - const OP_TO_OPERATOR = { - '=': 'EQUAL', - '>': 'GREATER_THAN', - '>=': 'GREATER_THAN_OR_EQUAL', - '<': 'LESS_THAN', - '<=': 'LESS_THAN_OR_EQUAL', - HAS_ANCESTOR: 'HAS_ANCESTOR', - }; - - const SIGN_TO_ORDER = { - '-': 'DESCENDING', - '+': 'ASCENDING', - }; - - // tslint:disable-next-line no-any - const queryProto: any = { - distinctOn: query.groupByVal.map(groupBy => { - return { - name: groupBy, + // tslint:disable-next-line no-any + const pathElement: any = { + kind: key.kind, }; - }), - kind: query.kinds.map(kind => { - return { - name: kind, - }; - }), + if (is.defined(key.id)) { + pathElement.id = key.id; + } - order: query.orders.map(order => { - return { - property: { - name: order.name, - }, - direction: SIGN_TO_ORDER[order.sign], - }; - }), + if (is.defined(key.name)) { + pathElement.name = key.name; + } - projection: query.selectVal.map(select => { - return { - property: { - name: select, - }, - }; - }), - }; + keyProto.path.unshift(pathElement); + // tslint:disable-next-line no-conditional-assignment + } while ((key = key.parent) && ++numKeysWalked); - if (query.endVal) { - queryProto.endCursor = query.endVal; + return keyProto; } - if (query.limitVal > 0) { - queryProto.limit = { - value: query.limitVal, + /** + * Convert a query object to a query protocol object. + * + * @private + * @param {object} q The query object to convert. + * @returns {object} + * + * @example + * queryToQueryProto({ + * namespace: '', + * kinds: [ + * 'Kind' + * ], + * filters: [], + * orders: [], + * groupByVal: [], + * selectVal: [], + * startVal: null, + * endVal: null, + * limitVal: -1, + * offsetVal: -1 + * }); + * // { + * // projection: [], + * // kinds: [ + * // { + * // name: 'Kind' + * // } + * // ], + * // order: [], + * // groupBy: [] + * // } + */ + export function queryToQueryProto(query) { + const OP_TO_OPERATOR = { + '=': 'EQUAL', + '>': 'GREATER_THAN', + '>=': 'GREATER_THAN_OR_EQUAL', + '<': 'LESS_THAN', + '<=': 'LESS_THAN_OR_EQUAL', + HAS_ANCESTOR: 'HAS_ANCESTOR', }; - } - if (query.offsetVal > 0) { - queryProto.offset = query.offsetVal; - } + const SIGN_TO_ORDER = { + '-': 'DESCENDING', + '+': 'ASCENDING', + }; - if (query.startVal) { - queryProto.startCursor = query.startVal; - } + // tslint:disable-next-line no-any + const queryProto: any = { + distinctOn: query.groupByVal.map(groupBy => { + return { + name: groupBy, + }; + }), + + kind: query.kinds.map(kind => { + return { + name: kind, + }; + }), + + order: query.orders.map(order => { + return { + property: { + name: order.name, + }, + direction: SIGN_TO_ORDER[order.sign], + }; + }), - if (query.filters.length > 0) { - const filters = query.filters.map(filter => { - // tslint:disable-next-line no-any - let value: any = {}; + projection: query.selectVal.map(select => { + return { + property: { + name: select, + }, + }; + }), + }; - if (filter.name === '__key__') { - value.keyValue = entity.keyToKeyProto(filter.val); - } else { - value = entity.encodeValue(filter.val); - } + if (query.endVal) { + queryProto.endCursor = query.endVal; + } - return { - propertyFilter: { - property: { - name: filter.name, + if (query.limitVal > 0) { + queryProto.limit = { + value: query.limitVal, + }; + } + + if (query.offsetVal > 0) { + queryProto.offset = query.offsetVal; + } + + if (query.startVal) { + queryProto.startCursor = query.startVal; + } + + if (query.filters.length > 0) { + const filters = query.filters.map(filter => { + // tslint:disable-next-line no-any + let value: any = {}; + + if (filter.name === '__key__') { + value.keyValue = entity.keyToKeyProto(filter.val); + } else { + value = entity.encodeValue(filter.val); + } + + return { + propertyFilter: { + property: { + name: filter.name, + }, + op: OP_TO_OPERATOR[filter.op], + value, }, - op: OP_TO_OPERATOR[filter.op], - value, + }; + }); + + queryProto.filter = { + compositeFilter: { + filters, + op: 'AND', }, }; - }); + } - queryProto.filter = { - compositeFilter: { - filters, - op: 'AND', - }, - }; + return queryProto; } - - return queryProto; } - -entity.queryToQueryProto = queryToQueryProto; - -export {entity}; diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 27d2f136e0e..2429f89cc5b 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -152,7 +152,7 @@ class Query { * const key = datastore.key(['Company', 'Google']); * const keyQuery = query.filter('__key__', key); */ - filter(property: string, operator: string, value?) { + filter(property: string, operator, value?) { if (arguments.length === 2) { value = operator; operator = '='; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 4cb7fa8c4d2..315ac11b448 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -226,7 +226,7 @@ describe('Request', () => { }); it('should create and return Keys & API response', done => { - const key = {}; + const key = {} as entity.Key; sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); sandbox.stub(entity, 'keyFromKeyProto').callsFake(keyProto => { @@ -873,6 +873,7 @@ describe('Request', () => { const offset = query.offsetVal - apiResponse.batch.skippedResults; assert.strictEqual(offset_, offset); offsetCalled = true; + return {} as FakeQuery; }); sandbox.stub(FakeQuery.prototype, 'limit').callsFake(limit_ => { @@ -883,6 +884,7 @@ describe('Request', () => { // Should restore the original limit. assert.strictEqual(limit_, query.limitVal); } + return {} as FakeQuery; }); sandbox.stub(entity, 'queryToQueryProto').callsFake(query_ => { @@ -923,13 +925,12 @@ describe('Request', () => { it('should handle large limitless queries', done => { let timesRequestCalled = 0; - let limitCalled = false; const query = { limitVal: -1, }; - request.request_ = (config, callback) => { + request.request_ = (_, callback) => { let batch; if (++timesRequestCalled === 2) { batch = {}; @@ -943,16 +944,14 @@ describe('Request', () => { }; sandbox.stub(entity, 'queryToQueryProto').returns({}); - sandbox.stub(FakeQuery.prototype, 'limit').callsFake(() => { - limitCalled = true; - }); + const limitStub = sandbox.stub(FakeQuery.prototype, 'limit'); request.runQueryStream(query) .on('error', done) .on('data', () => {}) .on('end', () => { assert.strictEqual(timesRequestCalled, 2); - assert.strictEqual(limitCalled, false); + assert.strictEqual(limitStub.called, false); done(); }); }); @@ -1345,7 +1344,7 @@ describe('Request', () => { keyProtos.push(keyProto); return { id: ids[keyProtos.length - 1], - }; + } as {} as entity.Key; }); request.save( From fe03c6d5ca14c6cad50816c0f29805e13c1d9ac7 Mon Sep 17 00:00:00 2001 From: vijay-qlogic <36055624+vijay-qlogic@users.noreply.github.com> Date: Fri, 21 Dec 2018 05:31:33 +0530 Subject: [PATCH 298/820] refactor: remove async module usage (#272) --- handwritten/nodejs-datastore/package.json | 1 - handwritten/nodejs-datastore/src/request.ts | 28 +++-- .../nodejs-datastore/src/transaction.ts | 6 +- .../nodejs-datastore/system-test/datastore.ts | 106 +++++++----------- 4 files changed, 58 insertions(+), 83 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d426f859f10..73c26bf4bb3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -66,7 +66,6 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "7.0.0", "@types/through2": "^2.0.34", - "async": "^2.6.1", "codecov": "^3.0.2", "eslint": "^5.0.0", "eslint-config-prettier": "^3.0.0", diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 42a8a971cc6..fe4bf7ab70b 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -34,6 +34,10 @@ import {entity} from './entity'; import {Query} from './query'; import {Datastore} from '.'; +export interface EntityDataObj { + [key: string]: string; +} + /** * A map of read consistency values to proto codes. * @@ -161,7 +165,7 @@ class DatastoreRequest { * datastore.allocateIds(incompleteKey, 100, callback); * * //- - * // If the callback is omitted, we'll return a Promise. + * // Returns a Promise if callback is omitted. * //- * datastore.allocateIds(incompleteKey, 100).then((data) => { * const keys = data[0]; @@ -326,13 +330,13 @@ class DatastoreRequest { * ], (err, apiResponse) => {}); * * //- - * // If the callback is omitted, we'll return a Promise. + * // Returns a Promise if callback is omitted. * //- * datastore.delete().then((data) => { * const apiResponse = data[0]; * }); */ - delete(keys, gaxOptions, callback?) { + delete(keys, gaxOptions?, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -425,7 +429,7 @@ class DatastoreRequest { * datastore.get(keys, (err, entities) => {}); * * //- - * // Here's how you would update the value of an entity with the help of the + * // Below is how to update the value of an entity with the help of the * // `save` method. * //- * datastore.get(key, (err, entity) => { @@ -442,13 +446,14 @@ class DatastoreRequest { * }); * * //- - * // If the callback is omitted, we'll return a Promise. + * // Returns a Promise if callback is omitted. * //- * datastore.get(keys).then((data) => { * const entities = data[0]; * }); */ - get(keys, options, callback?) { + get(keys, options?): Promise; + get(keys, options?, callback?): void|Promise { if (is.fn(options)) { callback = options; options = {}; @@ -574,13 +579,14 @@ class DatastoreRequest { * }); * * //- - * // If the callback is omitted, we'll return a Promise. + * // Returns a Promise if callback is omitted. * //- * datastore.runQuery(query).then((data) => { * const entities = data[0]; * }); */ - runQuery(query, options, callback?) { + runQuery(query, options?): Promise>>; + runQuery(query, options?, callback?): void|Promise>> { if (is.fn(options)) { callback = options; options = {}; @@ -922,13 +928,13 @@ class DatastoreRequest { * datastore.save(entity, (err, apiResponse) => {}); * * //- - * // If the callback is omitted, we'll return a Promise. + * // Returns a Promise if callback is omitted. * //- * datastore.save(entity).then((data) => { * const apiResponse = data[0]; * }); */ - save(entities, gaxOptions, callback?) { + save(entities, gaxOptions?, callback?) { entities = arrify(entities); if (is.fn(gaxOptions)) { @@ -1036,7 +1042,7 @@ class DatastoreRequest { client: 'DatastoreClient', method: 'commit', reqOpts, - gaxOpts: gaxOptions, + gaxOpts: gaxOptions || {}, }, onCommit); } diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 9dab1b61056..c38419c494f 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -125,7 +125,7 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - commit(gaxOptions, callback?) { + commit(gaxOptions?, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -215,7 +215,7 @@ class Transaction extends DatastoreRequest { client: 'DatastoreClient', method: 'commit', reqOpts, - gaxOpts: gaxOptions, + gaxOpts: gaxOptions || {}, }, (err, resp) => { if (err) { @@ -429,7 +429,7 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[1]; * }); */ - run(options, callback?) { + run(options?, callback?) { if (is.fn(options)) { callback = options; options = {}; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index b540295338e..5dd666a3edc 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -15,7 +15,6 @@ */ import * as assert from 'assert'; -import * as async from 'async'; import {Datastore} from '../src'; import {entity} from '../src/entity'; @@ -31,25 +30,19 @@ describe('Datastore', () => { return keyObject; }; - after(done => { - function deleteEntities(kind, callback) { + after(async () => { + async function deleteEntities(kind) { const query = datastore.createQuery(kind).select('__key__'); - datastore.runQuery(query, (err, entities) => { - if (err) { - callback(err); - return; - } - - const keys = entities.map(entity => { - return entity[datastore.KEY]; - }); - - datastore.delete(keys, callback); + const [entities] = await datastore.runQuery(query); + const keys = entities.map(entity => { + return entity[datastore.KEY]; }); + + await datastore.delete(keys); } - async.each(testKinds, deleteEntities, done); + await Promise.all(testKinds.map(kind => deleteEntities(kind))); }); it('should allocate IDs', done => { @@ -287,7 +280,7 @@ describe('Datastore', () => { data: post, }, err => { - assert.notStrictEqual(err, null); // should fail insert + assert.notStrictEqual(err, null); // should fail insert. datastore.get(postKey, (err, entity) => { assert.ifError(err); assert.deepStrictEqual(entity, post); @@ -801,67 +794,44 @@ describe('Datastore', () => { }); }); - it('should commit all saves and deletes at the end', done => { + it('should commit all saves and deletes at the end', async () => { const deleteKey = datastore.key(['Company', 'Subway']); const key = datastore.key(['Company', 'Google']); const incompleteKey = datastore.key('Company'); - datastore.save( - { - key: deleteKey, - data: {}, - }, - err => { - assert.ifError(err); - - const transaction = datastore.transaction(); + await datastore.save({ + key: deleteKey, + data: {}, + }); + const transaction = datastore.transaction(); - transaction.run(err => { - assert.ifError(err); + await transaction.run(); + transaction.delete(deleteKey); - transaction.delete(deleteKey); + await transaction.save([ + { + key, + data: {rating: 10}, + }, + { + key: incompleteKey, + data: {rating: 100}, + }, + ]); - transaction.save([ - { - key, - data: {rating: 10}, - }, - { - key: incompleteKey, - data: {rating: 100}, - }, - ]); + await transaction.commit(); - transaction.commit(err => { - assert.ifError(err); + // Incomplete key should have been given an ID. + assert.strictEqual(incompleteKey.path.length, 2); - // Incomplete key should have been given an ID. - assert.strictEqual(incompleteKey.path.length, 2); - - async.parallel( - [ - // The key queued for deletion should have been deleted. - callback => { - datastore.get(deleteKey, (err, entity) => { - assert.ifError(err); - assert.strictEqual(typeof entity, 'undefined'); - callback(); - }); - }, - - // Data should have been updated on the key. - callback => { - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.rating, 10); - callback(); - }); - }, - ], - done); - }); - }); - }); + const [[deletedEntity], [fetchedEntity]] = await Promise.all([ + // Deletes the key that is in the deletion queue. + datastore.get(deleteKey), + // Updates data on the key. + datastore.get(key) + ]); + assert.strictEqual(typeof deletedEntity, 'undefined'); + assert.strictEqual(fetchedEntity.rating, 10); }); it('should use the last modification to a key', done => { From af6c00f7047827e20d3dbe027aa0171c557d5269 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 20 Dec 2018 16:30:09 -0800 Subject: [PATCH 299/820] chore(deps): update dependency @types/sinon to v7.0.2 (#289) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 73c26bf4bb3..0b9132e131f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "@types/is": "0.0.21", "@types/mocha": "^5.2.5", "@types/proxyquire": "^1.3.28", - "@types/sinon": "7.0.0", + "@types/sinon": "^7.0.2", "@types/through2": "^2.0.34", "codecov": "^3.0.2", "eslint": "^5.0.0", From 9f6ff75010cfedacae0b584812f484aa5b56f8ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 21 Dec 2018 08:13:16 -0800 Subject: [PATCH 300/820] fix(deps): update dependency concat-stream to v2 (#290) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0b9132e131f..2257e49abb7 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "@google-cloud/projectify": "^0.3.0", "@google-cloud/promisify": "^0.3.0", "arrify": "^1.0.1", - "concat-stream": "^1.6.2", + "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^2.0.0", "google-gax": "^0.22.0", From c1093206ceecf00be7082f559aebc161367ef4d5 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 2 Jan 2019 14:22:40 -0600 Subject: [PATCH 301/820] refactor: sprinkle some types about (#291) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/entity.ts | 131 +++++++++++------ handwritten/nodejs-datastore/src/index.ts | 66 +++++---- handwritten/nodejs-datastore/src/query.ts | 132 ++++++++++++++---- handwritten/nodejs-datastore/src/request.ts | 36 ++--- .../nodejs-datastore/src/transaction.ts | 5 +- .../nodejs-datastore/system-test/datastore.ts | 56 ++++---- handwritten/nodejs-datastore/test/query.ts | 4 +- handwritten/nodejs-datastore/test/request.ts | 19 +-- 9 files changed, 295 insertions(+), 156 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2257e49abb7..813c8eedbc9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -38,7 +38,7 @@ "system-test": "mocha build/system-test --timeout 600000", "fix": "gts fix && eslint '**/*.js' --fix", "clean": "gts clean", - "compile": "tsc -p . && cp -r src/v1/ build/src/v1/ && cp -r protos build/ && cp test/*.js build/test", + "compile": "tsc -p . && cp -r src/v1 build/src && cp -r protos build && cp test/*.js build/test", "prepare": "npm run compile", "pretest": "npm run compile" }, diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index e8abc9b9b81..e89d572cfc1 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -17,15 +17,20 @@ import * as arrify from 'arrify'; import * as extend from 'extend'; import * as is from 'is'; +import {Query, QueryProto} from './query'; // tslint:disable-next-line no-namespace export namespace entity { + export interface InvalidKeyErrorOptions { + code: string; + } + export class InvalidKeyError extends Error { - constructor(opts) { + constructor(opts: InvalidKeyErrorOptions) { const errorMessages = { MISSING_KIND: 'A key should contain at least a kind.', MISSING_ANCESTOR_ID: 'Ancestor keys require an id or name.', - }; + } as {[index: string]: string}; super(errorMessages[opts.code]); this.name = 'InvalidKey'; } @@ -69,7 +74,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsDouble(value) { + export function isDsDouble(value?: {}) { return value instanceof entity.Double; } @@ -102,7 +107,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsInt(value) { + export function isDsInt(value?: {}) { return value instanceof entity.Int; } @@ -151,10 +156,15 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsGeoPoint(value) { + export function isDsGeoPoint(value?: {}) { return value instanceof entity.GeoPoint; } + export interface KeyOptions { + namespace?: string; + path: Array; + } + /** * Build a Datastore Key object. * @@ -172,14 +182,14 @@ export namespace entity { * }); */ export class Key { - namespace: string; + namespace?: string; id?: string; name?: string; kind: string; parent?: Key; - path; + path!: Array; - constructor(options) { + constructor(options: KeyOptions) { /** * @name Key#namespace * @type {string} @@ -192,13 +202,13 @@ export namespace entity { const identifier = options.path.pop(); if (is.number(identifier) || isDsInt(identifier)) { - this.id = identifier.value || identifier; + this.id = ((identifier as {} as Int).value || identifier) as string; } else if (is.string(identifier)) { - this.name = identifier; + this.name = identifier as string; } } - this.kind = options.path.pop(); + this.kind = options.path.pop() as string; if (options.path.length > 0) { this.parent = new Key(options); @@ -229,7 +239,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsKey(value) { + export function isDsKey(value?: {}) { return value instanceof entity.Key; } @@ -256,8 +266,8 @@ export namespace entity { * }); * // */ - export function decodeValueProto(valueProto) { - const valueType = valueProto.valueType; + export function decodeValueProto(valueProto: ValueProto) { + const valueType = valueProto.valueType!; const value = valueProto[valueType]; switch (valueType) { @@ -311,9 +321,9 @@ export namespace entity { * // stringValue: 'Hi' * // } */ - export function encodeValue(value) { - // tslint:disable-next-line no-any - const valueProto: any = {}; + // tslint:disable-next-line no-any + export function encodeValue(value?: any): ValueProto { + const valueProto: ValueProto = {}; if (is.boolean(value)) { valueProto.booleanValue = value; @@ -325,7 +335,7 @@ export namespace entity { return valueProto; } - if (is.number(value)) { + if (typeof value === 'number') { if (value % 1 === 0) { value = new entity.Int(value); } else { @@ -334,17 +344,17 @@ export namespace entity { } if (isDsInt(value)) { - valueProto.integerValue = value.value; + valueProto.integerValue = (value as Int).value; return valueProto; } if (isDsDouble(value)) { - valueProto.doubleValue = value.value; + valueProto.doubleValue = (value as Double).value; return valueProto; } if (isDsGeoPoint(value)) { - valueProto.geoPointValue = value.value; + valueProto.geoPointValue = (value as GeoPoint).value; return valueProto; } @@ -369,7 +379,7 @@ export namespace entity { return valueProto; } - if (is.array(value)) { + if (Array.isArray(value)) { valueProto.arrayValue = { values: value.map(entity.encodeValue), }; @@ -428,9 +438,10 @@ export namespace entity { * // name: 'Stephen' * // } */ - export function entityFromEntityProto(entityProto) { - const entityObject = {}; - + // tslint:disable-next-line no-any + export function entityFromEntityProto(entityProto: EntityProto): any { + // tslint:disable-next-line no-any + const entityObject: any = {}; const properties = entityProto.properties || {}; // tslint:disable-next-line forin @@ -472,11 +483,11 @@ export namespace entity { * // } * // } */ - export function entityToEntityProto(entityObject) { + export function entityToEntityProto(entityObject: Entity): EntityProto { const properties = entityObject.data; const excludeFromIndexes = entityObject.excludeFromIndexes; - const entityProto = { + const entityProto: EntityProto = { key: null, properties: Object.keys(properties) @@ -485,7 +496,8 @@ export namespace entity { encoded[key] = entity.encodeValue(properties[key]); return encoded; }, - {}), + // tslint:disable-next-line no-any + {} as any), }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { @@ -496,7 +508,7 @@ export namespace entity { return entityProto; - function excludePathFromEntity(entity, path) { + function excludePathFromEntity(entity: EntityProto, path: string) { const arrayIndex = path.indexOf('[]'); const entityIndex = path.indexOf('.'); @@ -531,7 +543,7 @@ export namespace entity { const delimiter = firstPathPartIsArray ? '[]' : '.'; const splitPath = path.split(delimiter); - const firstPathPart = splitPath.shift(); + const firstPathPart = splitPath.shift()!; const remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); if (!(entity.properties && entity.properties[firstPathPart])) { @@ -543,7 +555,8 @@ export namespace entity { // check also if the property in question is actually an array value. entity.properties[firstPathPart].arrayValue) { const array = entity.properties[firstPathPart].arrayValue; - array.values.forEach(value => { + // tslint:disable-next-line no-any + array.values.forEach((value: any) => { if (remainderPath === '') { // We want to exclude *this* array property, which is // equivalent with excluding all its values @@ -589,10 +602,10 @@ export namespace entity { * // * }); */ - export function formatArray(results) { + export function formatArray(results: ResponseResult[]) { return results.map(result => { const ent = entity.entityFromEntityProto(result.entity); - ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key); + ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key!); return ent; }); } @@ -608,8 +621,8 @@ export namespace entity { * isKeyComplete(new Key(['Company', 'Google'])); // true * isKeyComplete(new Key('Company')); // false */ - export function isKeyComplete(key) { - const lastPathElement = entity.keyToKeyProto(key).path.pop(); + export function isKeyComplete(key: Key) { + const lastPathElement = entity.keyToKeyProto(key).path.pop()!; return !!(lastPathElement.id || lastPathElement.name); } @@ -634,7 +647,7 @@ export namespace entity { * ] * }); */ - export function keyFromKeyProto(keyProto) { + export function keyFromKeyProto(keyProto: KeyProto): Key { // tslint:disable-next-line no-any const keyOptions: any = { path: [], @@ -647,7 +660,7 @@ export namespace entity { keyProto.path.forEach((path, index) => { keyOptions.path.push(path.kind); - let id = path[path.idType]; + let id = path[path.idType!]; if (path.idType === 'id') { id = new entity.Int(id); @@ -683,7 +696,7 @@ export namespace entity { * // ] * // } */ - export function keyToKeyProto(key) { + export function keyToKeyProto(key: Key): KeyProto { if (is.undefined(key.kind)) { throw new InvalidKeyError({ code: 'MISSING_KIND', @@ -691,7 +704,7 @@ export namespace entity { } // tslint:disable-next-line no-any - const keyProto: any = { + const keyProto: KeyProto = { path: [], }; @@ -727,7 +740,7 @@ export namespace entity { keyProto.path.unshift(pathElement); // tslint:disable-next-line no-conditional-assignment - } while ((key = key.parent) && ++numKeysWalked); + } while ((key = key.parent!) && ++numKeysWalked); return keyProto; } @@ -765,7 +778,7 @@ export namespace entity { * // groupBy: [] * // } */ - export function queryToQueryProto(query) { + export function queryToQueryProto(query: Query): QueryProto { const OP_TO_OPERATOR = { '=': 'EQUAL', '>': 'GREATER_THAN', @@ -780,8 +793,7 @@ export namespace entity { '+': 'ASCENDING', }; - // tslint:disable-next-line no-any - const queryProto: any = { + const queryProto: QueryProto = { distinctOn: query.groupByVal.map(groupBy => { return { name: groupBy, @@ -863,3 +875,36 @@ export namespace entity { return queryProto; } } + +export interface ValueProto { + // tslint:disable-next-line no-any + [index: string]: any; + valueType?: string; + values?: ValueProto[]; + // tslint:disable-next-line no-any + value?: any; +} + +export interface EntityProto { + key: KeyProto|null; + // tslint:disable-next-line no-any + properties: any; + excludeFromIndexes?: boolean; +} + +// tslint:disable-next-line no-any +export type Entity = any; + +export interface KeyProto { + path: Array<{ + // tslint:disable-next-line no-any + [index: string]: any; id: string; name: string; + kind?: string; + idType?: string; + }>; + partitionId?: {namespaceId: {}}; +} + +export interface ResponseResult { + entity: EntityProto; +} diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 6acf4e6be10..37c17ba105e 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -37,8 +37,9 @@ */ import * as arrify from 'arrify'; -import {GoogleAuth} from 'google-auth-library'; +import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; import {GrpcClient, GrpcClientOptions} from 'google-gax'; +import {ChannelCredentials} from 'grpc'; import * as is from 'is'; import {entity} from './entity'; @@ -48,6 +49,9 @@ import {Transaction} from './transaction'; const {grpc} = new GrpcClient({} as GrpcClientOptions); +// tslint:disable-next-line: no-any +export type PathType = any; + // Import the clients for each version supported by this package. const gapic = Object.freeze({ v1: require('./v1'), @@ -381,16 +385,16 @@ const gapic = Object.freeze({ * }); */ class Datastore extends DatastoreRequest { - clients_; - namespace; + clients_: Map; + namespace?: string; projectId: string; defaultBaseUrl_: string; - options; + options: DatastoreOptions; baseUrl_?: string; port_?: number; customEndpoint_?: boolean; auth: GoogleAuth; - constructor(options?) { + constructor(options?: DatastoreOptions) { super(); options = options || {}; this.clients_ = new Map(); @@ -443,11 +447,11 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const threeDouble = datastore.double(3.0); */ - static double(value) { + static double(value: number) { return new entity.Double(value); } - double(value) { + double(value: number) { return Datastore.double(value); } @@ -463,11 +467,11 @@ class Datastore extends DatastoreRequest { * datastore.isDouble(0.42); // false * datastore.isDouble(datastore.double(0.42)); // true */ - static isDouble(value) { + static isDouble(value?: {}) { return entity.isDsDouble(value); } - isDouble(value) { + isDouble(value?: {}) { return Datastore.isDouble(value); } @@ -489,11 +493,11 @@ class Datastore extends DatastoreRequest { * * const geoPoint = datastore.geoPoint(coordinates); */ - static geoPoint(coordinates) { + static geoPoint(coordinates: entity.Coordinates) { return new entity.GeoPoint(coordinates); } - geoPoint(coordinates) { + geoPoint(coordinates: entity.Coordinates) { return Datastore.geoPoint(coordinates); } @@ -514,11 +518,11 @@ class Datastore extends DatastoreRequest { * datastore.isGeoPoint(coordinates); // false * datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true */ - static isGeoPoint(value) { + static isGeoPoint(value?: {}) { return entity.isDsGeoPoint(value); } - isGeoPoint(value) { + isGeoPoint(value?: {}) { return Datastore.isGeoPoint(value); } @@ -544,11 +548,11 @@ class Datastore extends DatastoreRequest { * datastore.int('100000000000001234') * ]); */ - static int(value) { + static int(value: number|string) { return new entity.Int(value); } - int(value) { + int(value: number|string) { return Datastore.int(value); } @@ -564,11 +568,11 @@ class Datastore extends DatastoreRequest { * datastore.isInt(42); // false * datastore.isInt(datastore.int(42)); // true */ - static isInt(value) { + static isInt(value?: {}) { return entity.isDsInt(value); } - isInt(value) { + isInt(value?: {}) { return Datastore.isInt(value); } @@ -643,7 +647,7 @@ class Datastore extends DatastoreRequest { createQuery(namespace: string, kind?: string) { if (arguments.length < 2) { kind = namespace; - namespace = this.namespace; + namespace = this.namespace!; } return new Query(this, namespace, arrify(kind)); } @@ -697,12 +701,15 @@ class Datastore extends DatastoreRequest { * path: ['Company', 123] * }); */ - key(options) { + key(options: entity.KeyOptions): entity.Key; + key(path: PathType[]): entity.Key; + key(path: string): entity.Key; + key(options: string|entity.KeyOptions|PathType[]): entity.Key { options = is.object(options) ? options : { namespace: this.namespace, path: arrify(options), }; - return new entity.Key(options); + return new entity.Key(options as entity.KeyOptions); } /** @@ -717,10 +724,10 @@ class Datastore extends DatastoreRequest { * datastore.isKey({path: ['Company', 123]}); // false * datastore.isKey(datastore.key(['Company', 123])); // true */ - static isKey(value) { + static isKey(value?: {}) { return entity.isDsKey(value); } - isKey(value) { + isKey(value?: {}) { return Datastore.isKey(value); } @@ -738,7 +745,7 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const transaction = datastore.transaction(); */ - transaction(options?) { + transaction(options?: TransactionOptions) { return new Transaction(this, options); } @@ -751,7 +758,7 @@ class Datastore extends DatastoreRequest { * * @param {string} customApiEndpoint Custom API endpoint. */ - determineBaseUrl_(customApiEndpoint) { + determineBaseUrl_(customApiEndpoint?: string) { let baseUrl = this.defaultBaseUrl_; const leadingProtocol = new RegExp('^https*://'); const trailingSlashes = new RegExp('/*$'); @@ -851,3 +858,14 @@ export {Datastore}; * Reference to {@link v1.DatastoreClient}. */ module.exports.v1 = gapic.v1; + +export interface TransactionOptions { + id?: string; + readOnly?: boolean; +} + +export interface DatastoreOptions extends GoogleAuthOptions { + namespace?: string; + apiEndpoint?: string; + sslCreds?: ChannelCredentials; +} diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 2429f89cc5b..fbb94279d08 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -15,6 +15,29 @@ */ import * as arrify from 'arrify'; +import {Key} from 'readline'; + +import {Datastore} from '.'; +import {Entity} from './entity'; +import {Transaction} from './transaction'; + +export type Operator = '='|'<'|'>'|'<='|'>='|'HAS_ANCESTOR'; + +export interface OrderOptions { + descending?: boolean; +} + +export interface Order { + name: string; + sign: '-'|'+'; +} + +export interface Filter { + name: string; + // tslint:disable-next-line no-any + val: any; + op: Operator; +} /** * Build a Query object. @@ -28,7 +51,7 @@ import * as arrify from 'arrify'; * @param {Datastore|Transaction} scope The parent scope the query was created * from. * @param {string} [namespace] Namespace to query entities from. - * @param {string} kind Kind to query. + * @param {string[]} kinds Kind to query. * * @example * const {Datastore} = require('@google-cloud/datastore'); @@ -36,20 +59,27 @@ import * as arrify from 'arrify'; * const query = datastore.createQuery('AnimalNamespace', 'Lion'); */ class Query { - scope; - namespace?: string; - kinds; - filters; - orders; - groupByVal; - selectVal; - startVal; - endVal; - limitVal; - offsetVal; - constructor(scope?, namespace?, kinds?) { + scope?: Datastore|Transaction; + namespace?: string|null; + kinds: string[]; + filters: Filter[]; + orders: Order[]; + groupByVal: Array<{}>; + selectVal: Array<{}>; + startVal: string|Buffer|null; + endVal: string|Buffer|null; + limitVal: number; + offsetVal: number; + + constructor(scope?: Datastore|Transaction, kinds?: string[]); + constructor( + scope?: Datastore|Transaction, namespace?: string, kinds?: string[]); + constructor( + scope?: Datastore|Transaction, namespaceOrKinds?: string|string[], + kinds?: string[]) { + let namespace = namespaceOrKinds as string | null; if (!kinds) { - kinds = namespace; + kinds = namespaceOrKinds as string[]; namespace = null; } @@ -152,15 +182,18 @@ class Query { * const key = datastore.key(['Company', 'Google']); * const keyQuery = query.filter('__key__', key); */ - filter(property: string, operator, value?) { + filter(property: string, value: {}): Query; + filter(property: string, operator: Operator, value: {}): Query; + filter(property: string, operatorOrValue: Operator, value?: {}): Query { + let operator = operatorOrValue as Operator; if (arguments.length === 2) { - value = operator; + value = operatorOrValue as {}; operator = '='; } this.filters.push({ name: property.trim(), - op: operator.trim(), + op: operator.trim() as Operator, val: value, }); return this; @@ -180,7 +213,7 @@ class Query { * const query = datastore.createQuery('MyKind'); * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); */ - hasAncestor(key) { + hasAncestor(key: Key) { this.filters.push({name: '__key__', op: 'HAS_ANCESTOR', val: key}); return this; } @@ -210,7 +243,7 @@ class Query { * descending: true * }); */ - order(property: string, options?) { + order(property: string, options?: OrderOptions) { const sign = options && options.descending ? '-' : '+'; this.orders.push({name: property, sign}); return this; @@ -228,7 +261,7 @@ class Query { * const companyQuery = datastore.createQuery('Company'); * const groupedQuery = companyQuery.groupBy(['name', 'size']); */ - groupBy(fieldNames) { + groupBy(fieldNames: string|string[]) { this.groupByVal = arrify(fieldNames); return this; } @@ -255,7 +288,7 @@ class Query { * // Only retrieve the name and size properties. * const selectQuery = companyQuery.select(['name', 'size']); */ - select(fieldNames) { + select(fieldNames: string|string[]) { this.selectVal = arrify(fieldNames); return this; } @@ -278,7 +311,7 @@ class Query { * // Retrieve results starting from cursorToken. * const startQuery = companyQuery.start(cursorToken); */ - start(start) { + start(start: string|Buffer) { this.startVal = start; return this; } @@ -301,7 +334,7 @@ class Query { * // Retrieve results limited to the extent of cursorToken. * const endQuery = companyQuery.end(cursorToken); */ - end(end) { + end(end: string|Buffer) { this.endVal = end; return this; } @@ -322,7 +355,7 @@ class Query { * // Limit the results to 10 entities. * const limitQuery = companyQuery.limit(10); */ - limit(n) { + limit(n: number) { this.limitVal = n; return this; } @@ -343,7 +376,7 @@ class Query { * // Start from the 101st result. * const offsetQuery = companyQuery.offset(100); */ - offset(n) { + offset(n: number) { this.offsetVal = n; return this; } @@ -403,10 +436,18 @@ class Query { * const entities = data[0]; * }); */ - run(...argy) { - const query = this; - const args = [query].concat(argy); - return this.scope.runQuery.apply(this.scope, args); + run(options?: RunQueryOptions): Promise; + run(options: RunQueryOptions, callback: RunQueryCallback): void; + run(callback: RunQueryCallback): void; + run(optionsOrCallback?: RunQueryOptions|RunQueryCallback, + cb?: RunQueryCallback): void|Promise { + const query = this as Query; + const options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + const runQuery = this.scope!.runQuery.bind(this.scope); + return (runQuery as Function)(query, options, callback); } /** @@ -444,14 +485,43 @@ class Query { */ runStream() { const query = this; - const args = [query].concat([].slice.call(arguments)); - return this.scope.runQueryStream.apply(this.scope, args); + // tslint:disable-next-line no-any + const args: any = [query].concat([].slice.call(arguments)); + return this.scope!.runQueryStream.apply(this.scope, args); } } +export interface QueryProto { + startCursor?: string|Buffer; + distinctOn: {}; + kind: {}; + order: {}; + projection: {}; + endCursor?: string|Buffer; + limit?: {}; + offset?: number; + filter?: {}; +} + /** * Reference to the {@link Query} class. * @name module:@google-cloud/datastore.Query * @see Query */ export {Query}; + +export interface RunQueryOptions { + consistency?: 'strong'|'eventual'; +} + +export interface RunQueryCallback { + (err: Error|null, entities?: Entity[], info?: RunQueryInfo): void; +} + +export type RunQueryResponse = [Entity[], RunQueryInfo]; + +export interface RunQueryInfo { + endCursor?: string; + moreResults?: 'MORE_RESULTS_AFTER_LIMIT'|'MORE_RESULTS_AFTER_CURSOR'| + 'NO_MORE_RESULTS'; +} diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index fe4bf7ab70b..c878e57225b 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -30,8 +30,8 @@ const gapic = Object.freeze({ v1: require('./v1'), }); -import {entity} from './entity'; -import {Query} from './query'; +import {entity, Entity} from './entity'; +import {Query, RunQueryInfo, RunQueryOptions, RunQueryResponse, RunQueryCallback} from './query'; import {Datastore} from '.'; export interface EntityDataObj { @@ -585,16 +585,19 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - runQuery(query, options?): Promise>>; - runQuery(query, options?, callback?): void|Promise>> { - if (is.fn(options)) { - callback = options; - options = {}; - } - - options = options || {}; - - let info; + runQuery(query: Query, options?: RunQueryOptions): Promise; + runQuery(query: Query, options: RunQueryOptions, callback: RunQueryCallback): + void; + runQuery(query: Query, callback: RunQueryCallback): void; + runQuery( + query: Query, optionsOrCallback?: RunQueryOptions|RunQueryCallback, + cb?: RunQueryCallback): void|Promise { + const options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + + let info: RunQueryInfo; this.runQueryStream(query, options) .on('error', callback) @@ -602,7 +605,7 @@ class DatastoreRequest { info_ => { info = info_; }) - .pipe(concat(results => { + .pipe(concat((results: Entity[]) => { callback(null, results, info); })); } @@ -638,7 +641,7 @@ class DatastoreRequest { * this.end(); * }); */ - runQueryStream(query, options?) { + runQueryStream(query: Query, options?) { options = options || {}; query = extend(true, new Query(), query); @@ -686,7 +689,8 @@ class DatastoreRequest { info.endCursor = resp.batch.endCursor.toString('base64'); } - let entities = []; + // tslint:disable-next-line no-any + let entities: any[] = []; if (resp.batch.entityResults) { entities = entity.formatArray(resp.batch.entityResults); @@ -1162,7 +1166,7 @@ class DatastoreRequest { 'google-cloud-resource-prefix': `projects/${projectId}`, }, }); - gaxClient[method](reqOpts, gaxOpts, callback); + gaxClient![method](reqOpts, gaxOpts, callback); }); } } diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index c38419c494f..ce8418fa4a7 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -18,6 +18,7 @@ import {promisifyAll} from '@google-cloud/promisify'; import * as arrify from 'arrify'; import * as is from 'is'; +import {Datastore} from '.'; import {entity} from './entity'; import {DatastoreRequest} from './request'; @@ -41,12 +42,12 @@ import {DatastoreRequest} from './request'; */ class Transaction extends DatastoreRequest { projectId: string; - namespace: string; + namespace?: string; readOnly: boolean; request; modifiedEntities_; skipCommit?: boolean; - constructor(datastore, options) { + constructor(datastore: Datastore, options) { super(); /** * @name Transaction#datastore diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 5dd666a3edc..4ec29f84b7d 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -19,7 +19,7 @@ import {Datastore} from '../src'; import {entity} from '../src/entity'; describe('Datastore', () => { - const testKinds: Array<{}> = []; + const testKinds: string[] = []; const datastore = new Datastore(); // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. @@ -373,8 +373,8 @@ describe('Datastore', () => { datastore.runQuery(query, (err, results) => { assert.ifError(err); - assert.strictEqual(results[0].fullName, 'Full name'); - assert.deepStrictEqual(results[0].linkedTo, personKey); + assert.strictEqual(results![0].fullName, 'Full name'); + assert.deepStrictEqual(results![0].linkedTo, personKey); datastore.delete(personKey, done); }); }); @@ -547,15 +547,15 @@ describe('Datastore', () => { datastore.runQuery(q, (err, firstEntities, info) => { assert.ifError(err); - assert.strictEqual(firstEntities.length, 5); + assert.strictEqual(firstEntities!.length, 5); const secondQ = datastore.createQuery('Character') .hasAncestor(ancestor) - .start(info.endCursor); + .start(info!.endCursor!); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); - assert.strictEqual(secondEntities.length, 3); + assert.strictEqual(secondEntities!.length, 3); done(); }); }); @@ -569,7 +569,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, results) => { assert.ifError(err); - assert.strictEqual(results.length, limit); + assert.strictEqual(results!.length, limit); done(); }); }); @@ -615,7 +615,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities.length, 6); + assert.strictEqual(entities!.length, 6); done(); }); }); @@ -628,7 +628,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities.length, 6); + assert.strictEqual(entities!.length, 6); done(); }); }); @@ -638,7 +638,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities.length, characters.length); + assert.strictEqual(entities!.length, characters.length); done(); }); }); @@ -652,7 +652,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities.length, 1); + assert.strictEqual(entities!.length, 1); done(); }); }); @@ -665,8 +665,8 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities[0].name, characters[0].name); - assert.strictEqual(entities[7].name, characters[3].name); + assert.strictEqual(entities![0].name, characters[0].name); + assert.strictEqual(entities![7].name, characters[3].name); done(); }); @@ -681,12 +681,12 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.deepStrictEqual(entities[0], { + assert.deepStrictEqual(entities![0], { name: 'Arya', family: 'Stark', }); - assert.deepStrictEqual(entities[8], { + assert.deepStrictEqual(entities![8], { name: 'Sansa', family: 'Stark', }); @@ -705,20 +705,20 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities, info) => { assert.ifError(err); - assert.strictEqual(entities.length, 3); - assert.strictEqual(entities[0].name, 'Robb'); - assert.strictEqual(entities[2].name, 'Catelyn'); + assert.strictEqual(entities!.length, 3); + assert.strictEqual(entities![0].name, 'Robb'); + assert.strictEqual(entities![2].name, 'Catelyn'); const secondQ = datastore.createQuery('Character') .hasAncestor(ancestor) .order('appearances') - .start(info.endCursor); + .start(info!.endCursor!); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); - assert.strictEqual(secondEntities.length, 3); - assert.strictEqual(secondEntities[0].name, 'Sansa'); - assert.strictEqual(secondEntities[2].name, 'Arya'); + assert.strictEqual(secondEntities!.length, 3); + assert.strictEqual(secondEntities![0].name, 'Sansa'); + assert.strictEqual(secondEntities![2].name, 'Arya'); done(); }); }); @@ -737,14 +737,14 @@ describe('Datastore', () => { const secondQ = datastore.createQuery('Character') .hasAncestor(ancestor) .order('appearances') - .start(info.endCursor); + .start(info!.endCursor!); datastore.runQuery(secondQ, (err, secondEntities) => { assert.ifError(err); - assert.strictEqual(secondEntities.length, 4); - assert.strictEqual(secondEntities[0].name, 'Catelyn'); - assert.strictEqual(secondEntities[3].name, 'Arya'); + assert.strictEqual(secondEntities!.length, 4); + assert.strictEqual(secondEntities![0].name, 'Catelyn'); + assert.strictEqual(secondEntities![3].name, 'Arya'); done(); }); @@ -758,7 +758,7 @@ describe('Datastore', () => { datastore.runQuery(q, (err, entities) => { assert.ifError(err); - assert.strictEqual(entities.length, characters.length - 1); + assert.strictEqual(entities!.length, characters.length - 1); done(); }); }); @@ -886,7 +886,7 @@ describe('Datastore', () => { transaction.rollback(done); return; } - assert(entities.length > 0); + assert(entities!.length > 0); transaction.commit(done); }); }); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 7afa84e42b7..8c72b4036c8 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -285,14 +285,12 @@ describe('Query', () => { describe('run', () => { it('should call the parent instance runQuery correctly', (done) => { - const args = [0, 1, 2]; + const args = [{}, () => {}]; query.scope.runQuery = function() { assert.strictEqual(this, query.scope); assert.strictEqual(arguments[0], query); assert.strictEqual(arguments[1], args[0]); - assert.strictEqual(arguments[2], args[1]); - assert.strictEqual(arguments[3], args[2]); done(); }; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 315ac11b448..8f037f3949a 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -23,8 +23,8 @@ import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; import * as through from 'through2'; -import {entity} from '../src/entity.js'; -import {Query} from '../src/query.js'; +import {entity, KeyProto} from '../src/entity.js'; +import {Query, QueryProto} from '../src/query.js'; let promisified = false; const fakePfy = Object.assign({}, pfy, { @@ -144,7 +144,7 @@ describe('Request', () => { }); it('should make the correct request', done => { - const keyProto = {}; + const keyProto = {} as KeyProto; sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto').callsFake(key => { assert.strictEqual(key, INCOMPLETE_KEY); @@ -258,6 +258,7 @@ describe('Request', () => { sandbox.stub(entity, 'keyToKeyProto').callsFake(key_ => { assert.strictEqual(key_, key); done(); + return {} as KeyProto; }); request.createReadStream(key).on('error', done); @@ -391,7 +392,8 @@ describe('Request', () => { ], }; - const expectedResult = entity.formatArray(apiResponse.found)[0]; + // tslint:disable-next-line no-any + const expectedResult = entity.formatArray(apiResponse.found as any)[0]; const apiResponseWithMultiEntities = extend(true, {}, apiResponse); const entities = apiResponseWithMultiEntities.found; @@ -688,6 +690,7 @@ describe('Request', () => { assert.notStrictEqual(query_, query); assert.deepStrictEqual(query_, query); done(); + return {} as QueryProto; }); request.runQueryStream(query).on('error', done).emit('reading'); @@ -695,7 +698,7 @@ describe('Request', () => { it('should make correct request when the stream is ready', done => { const query = {namespace: 'namespace'}; - const queryProto = {}; + const queryProto = {} as QueryProto; sandbox.stub(entity, 'queryToQueryProto').returns(queryProto); @@ -828,7 +831,7 @@ describe('Request', () => { limit: { value: query.limitVal, }, - }; + } as {} as QueryProto; let timesRequestCalled = 0; let startCalled = false; @@ -943,7 +946,7 @@ describe('Request', () => { callback(null, {batch}); }; - sandbox.stub(entity, 'queryToQueryProto').returns({}); + sandbox.stub(entity, 'queryToQueryProto').returns({} as QueryProto); const limitStub = sandbox.stub(FakeQuery.prototype, 'limit'); request.runQueryStream(query) @@ -1061,7 +1064,7 @@ describe('Request', () => { assert.ifError(err); const spy = request.runQueryStream.getCall(0); - assert.deepStrictEqual(spy.args[1], {}); + assert.deepStrictEqual(spy.args[0], {}); done(); }); }); From 327469a0c9b4fb0d53fd8c3739f1f0fe3f176174 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Fri, 4 Jan 2019 15:02:02 -0800 Subject: [PATCH 302/820] fix(docs): remove unused long running operations types fix(docs): remove unused long running operations types --- .../v1/doc/google/protobuf/doc_wrappers.js | 128 ------------------ handwritten/nodejs-datastore/synth.metadata | 36 +++-- 2 files changed, 24 insertions(+), 140 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index 363b6391ac1..a71823dfa38 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -15,70 +15,6 @@ // Note: this file is purely for documentation. Any contents are not expected // to be loaded as the JS file. -/** - * Wrapper message for `double`. - * - * The JSON representation for `DoubleValue` is JSON number. - * - * @property {number} value - * The double value. - * - * @typedef DoubleValue - * @memberof google.protobuf - * @see [google.protobuf.DoubleValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const DoubleValue = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `float`. - * - * The JSON representation for `FloatValue` is JSON number. - * - * @property {number} value - * The float value. - * - * @typedef FloatValue - * @memberof google.protobuf - * @see [google.protobuf.FloatValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const FloatValue = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `int64`. - * - * The JSON representation for `Int64Value` is JSON string. - * - * @property {number} value - * The int64 value. - * - * @typedef Int64Value - * @memberof google.protobuf - * @see [google.protobuf.Int64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const Int64Value = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `uint64`. - * - * The JSON representation for `UInt64Value` is JSON string. - * - * @property {number} value - * The uint64 value. - * - * @typedef UInt64Value - * @memberof google.protobuf - * @see [google.protobuf.UInt64Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const UInt64Value = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - /** * Wrapper message for `int32`. * @@ -93,68 +29,4 @@ const UInt64Value = { */ const Int32Value = { // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `uint32`. - * - * The JSON representation for `UInt32Value` is JSON number. - * - * @property {number} value - * The uint32 value. - * - * @typedef UInt32Value - * @memberof google.protobuf - * @see [google.protobuf.UInt32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const UInt32Value = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `bool`. - * - * The JSON representation for `BoolValue` is JSON `true` and `false`. - * - * @property {boolean} value - * The bool value. - * - * @typedef BoolValue - * @memberof google.protobuf - * @see [google.protobuf.BoolValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const BoolValue = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `string`. - * - * The JSON representation for `StringValue` is JSON string. - * - * @property {string} value - * The string value. - * - * @typedef StringValue - * @memberof google.protobuf - * @see [google.protobuf.StringValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const StringValue = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * Wrapper message for `bytes`. - * - * The JSON representation for `BytesValue` is JSON string. - * - * @property {string} value - * The bytes value. - * - * @typedef BytesValue - * @memberof google.protobuf - * @see [google.protobuf.BytesValue definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const BytesValue = { - // This is for documentation. Actual contents will be loaded by gRPC. }; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index f26e69af884..7194a453213 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,26 +1,38 @@ { + "updateTime": "2019-01-03T17:52:45.953619Z", "sources": [ + { + "generator": { + "name": "artman", + "version": "0.16.4", + "dockerImage": "googleapis/artman@sha256:8b45fae963557c3299921037ecbb86f0689f41b1b4aea73408ebc50562cb2857" + } + }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "5a57f0c13a358b2b15452bf2d67453774a5f6d4f", - "internalRef": "221837528" + "sha": "2a5caab4315cb5ab3d5c97c90c6d4e9441052b16", + "internalRef": "227195651" } }, { - "git": { - "name": "googleapis-private", - "remote": "https://github.com/googleapis/googleapis-private.git", - "sha": "6aa8e1a447bb8d0367150356a28cb4d3f2332641", - "internalRef": "221340946" + "template": { + "name": "node_library", + "origin": "synthtool.gcp", + "version": "2018.12.6" } - }, + } + ], + "destinations": [ { - "generator": { - "name": "artman", - "version": "0.16.0", - "dockerImage": "googleapis/artman@sha256:90f9d15e9bad675aeecd586725bce48f5667ffe7d5fc4d1e96d51ff34304815b" + "client": { + "source": "googleapis", + "apiName": "datastore", + "apiVersion": "v1", + "language": "nodejs", + "generator": "gapic", + "config": "google/datastore/artman_datastore.yaml" } } ] From 893f0e9e345f851091bc1c5061488b2570c4c66a Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Mon, 7 Jan 2019 12:49:16 -0800 Subject: [PATCH 303/820] fix(docs): fix namespace causing 404s (#294) --- handwritten/nodejs-datastore/src/index.ts | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 37c17ba105e..c414cf0d522 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -18,23 +18,11 @@ * @namespace google */ /** - * @namespace google.cloud - */ -/** - * @namespace google.cloud.datastore - */ -/** - * @namespace google.cloud.datastore.v1 + * @namespace google.datastore.v1 */ /** * @namespace google.protobuf */ -/** - * @namespace google.rpc - */ -/** - * @namespace google.type - */ import * as arrify from 'arrify'; import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; From 0d33e61268b340592406155c33330568abb6003d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 14 Jan 2019 12:23:58 -0800 Subject: [PATCH 304/820] fix(deps): update dependency google-gax to ^0.23.0 (#296) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 813c8eedbc9..1a3a3c98b67 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -49,7 +49,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^2.0.0", - "google-gax": "^0.22.0", + "google-gax": "^0.23.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", From 82bbb286604f13e39b3f5351229a42d3ac613252 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 15 Jan 2019 09:57:50 -0800 Subject: [PATCH 305/820] Release v3.0.0 (#298) --- handwritten/nodejs-datastore/CHANGELOG.md | 81 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index fd7e74e753d..8ba869a2bc6 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,87 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## v3.0.0 + +01-14-2019 20:31 PST + +**This release has breaking changes!** The import style of this library has changed to be consistent with [es modules](https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/). + +#### Old busted code +```js +const Datastore = require('@google-cloud/datastore')(); +// or... +const Datastore = require('@google-cloud/datastore'); +const ds = new Datastore(); +``` + +#### New hot code +```js +const {Datastore} = require('@google-cloud/datastore'); +const ds = new Datastore(); +``` + +Please take care to update your imports accordingly! + +### Dependencies +- fix(deps): update dependency google-gax to ^0.23.0 ([#296](https://github.com/googleapis/nodejs-datastore/pull/296)) +- fix(deps): update dependency google-gax to ^0.22.0 ([#248](https://github.com/googleapis/nodejs-datastore/pull/248)) +- fix(deps): update dependency concat-stream to v2 ([#290](https://github.com/googleapis/nodejs-datastore/pull/290)) +- refactor: remove async module usage ([#272](https://github.com/googleapis/nodejs-datastore/pull/272)) +- fix(deps): update dependency through2 to v3 ([#237](https://github.com/googleapis/nodejs-datastore/pull/237)) +- chore: remove unused dependencies ([#226](https://github.com/googleapis/nodejs-datastore/pull/226)) +- fix(deps): update dependency google-proto-files to ^0.17.0 ([#210](https://github.com/googleapis/nodejs-datastore/pull/210)) + +### Documentation +- fix(docs): fix namespace causing 404s ([#294](https://github.com/googleapis/nodejs-datastore/pull/294)) +- fix(docs): remove unused long running operations types +- docs: Update doc comment showing structure of entity ([#276](https://github.com/googleapis/nodejs-datastore/pull/276)) +- docs: update readme badges ([#269](https://github.com/googleapis/nodejs-datastore/pull/269)) +- refactor(samples): Samples to use async/await +- docs: update auto-generated jsdoc comments ([#245](https://github.com/googleapis/nodejs-datastore/pull/245)) + +### Internal / Testing Changes +- refactor: sprinkle some types about ([#291](https://github.com/googleapis/nodejs-datastore/pull/291)) +- chore(deps): update dependency @types/sinon to v7.0.2 ([#289](https://github.com/googleapis/nodejs-datastore/pull/289)) +- chore(deps): update dependency @types/sinon to v7 ([#286](https://github.com/googleapis/nodejs-datastore/pull/286)) +- refactor(ts): enable lint and fix ([#287](https://github.com/googleapis/nodejs-datastore/pull/287)) +- chore(build): inject yoshi automation key ([#285](https://github.com/googleapis/nodejs-datastore/pull/285)) +- chore: update nyc and eslint configs ([#284](https://github.com/googleapis/nodejs-datastore/pull/284)) +- chore: fix publish.sh permission +x ([#282](https://github.com/googleapis/nodejs-datastore/pull/282)) +- fix(build): fix Kokoro release script ([#281](https://github.com/googleapis/nodejs-datastore/pull/281)) +- build: add Kokoro configs for autorelease ([#280](https://github.com/googleapis/nodejs-datastore/pull/280)) +- chore: always nyc report before calling codecov ([#275](https://github.com/googleapis/nodejs-datastore/pull/275)) +- chore: nyc ignore build/test by default ([#274](https://github.com/googleapis/nodejs-datastore/pull/274)) +- chore: update license file ([#271](https://github.com/googleapis/nodejs-datastore/pull/271)) +- refactor: run gts fix ([#265](https://github.com/googleapis/nodejs-datastore/pull/265)) +- chore(deps): update dependency typescript to ~3.2.0 ([#264](https://github.com/googleapis/nodejs-datastore/pull/264)) +- fix(build): fix system key decryption ([#266](https://github.com/googleapis/nodejs-datastore/pull/266)) +- refactor(samples): convert sample tests from ava to mocha ([#259](https://github.com/googleapis/nodejs-datastore/pull/259)) +- fix: Pin @types/sinon to last compatible version ([#256](https://github.com/googleapis/nodejs-datastore/pull/256)) +- chore: add synth.metadata ([#254](https://github.com/googleapis/nodejs-datastore/pull/254)) +- refactor(ts): enable noImplicitThis ([#250](https://github.com/googleapis/nodejs-datastore/pull/250)) +- chore(deps): update dependency gts to ^0.9.0 ([#247](https://github.com/googleapis/nodejs-datastore/pull/247)) +- chore: update eslintignore config ([#246](https://github.com/googleapis/nodejs-datastore/pull/246)) +- refactor(ts): use es module imports ([#244](https://github.com/googleapis/nodejs-datastore/pull/244)) +- chore(deps): update dependency @google-cloud/nodejs-repo-tools to v3 ([#243](https://github.com/googleapis/nodejs-datastore/pull/243)) +- chore: drop contributors from multiple places ([#241](https://github.com/googleapis/nodejs-datastore/pull/241)) +- chore(deps): update dependency @types/is to v0.0.21 ([#240](https://github.com/googleapis/nodejs-datastore/pull/240)) +- chore: use latest npm on Windows ([#239](https://github.com/googleapis/nodejs-datastore/pull/239)) +- refactor(ts): convert to typescript ([#236](https://github.com/googleapis/nodejs-datastore/pull/236)) +- chore: update CircleCI config ([#235](https://github.com/googleapis/nodejs-datastore/pull/235)) +- chore: include build in eslintignore ([#232](https://github.com/googleapis/nodejs-datastore/pull/232)) +- chore(deps): update dependency eslint-plugin-node to v8 ([#227](https://github.com/googleapis/nodejs-datastore/pull/227)) +- chore: update issue templates ([#225](https://github.com/googleapis/nodejs-datastore/pull/225)) +- chore: remove old issue template ([#223](https://github.com/googleapis/nodejs-datastore/pull/223)) +- build: run tests on node11 ([#222](https://github.com/googleapis/nodejs-datastore/pull/222)) +- chores(build): do not collect sponge.xml from windows builds ([#221](https://github.com/googleapis/nodejs-datastore/pull/221)) +- chores(build): run codecov on continuous builds ([#220](https://github.com/googleapis/nodejs-datastore/pull/220)) +- chore: update new issue template ([#219](https://github.com/googleapis/nodejs-datastore/pull/219)) +- build: fix codecov uploading on Kokoro ([#213](https://github.com/googleapis/nodejs-datastore/pull/213)) +- fix(deps): update dependency sinon to v7 ([#212](https://github.com/googleapis/nodejs-datastore/pull/212)) +- Update kokoro config ([#207](https://github.com/googleapis/nodejs-datastore/pull/207)) +- chore(deps): update dependency eslint-plugin-prettier to v3 ([#206](https://github.com/googleapis/nodejs-datastore/pull/206)) + ## v2.0.0 ### Breaking Changes diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1a3a3c98b67..a250850908e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "2.0.0", + "version": "3.0.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8debb5594bd..bce78b74883 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -12,7 +12,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^2.0.0", + "@google-cloud/datastore": "^3.0.0", "sinon": "^7.0.0", "yargs": "^12.0.1" }, From 60e74bfe19fba1c050c28b0a3697c687aa1e6e7f Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Tue, 15 Jan 2019 10:44:59 -0800 Subject: [PATCH 306/820] build: check broken links in generated docs (#292) --- handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/README.md | 121 +++++++++------------- handwritten/nodejs-datastore/package.json | 2 +- 3 files changed, 53 insertions(+), 72 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 044e97d9786..9c8ec970d8b 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -20,7 +20,7 @@ module.exports = { opts: { readme: './README.md', package: './package.json', - template: './node_modules/ink-docstrap/template', + template: './node_modules/jsdoc-baseline', recurse: true, verbose: true, destination: './docs/' diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 81c5ad5ecb6..b261a91b04e 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -8,97 +8,65 @@ [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) [![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) -> Node.js idiomatic client for [Cloud Datastore][product-docs]. - [Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects. -* [Cloud Datastore Node.js Client API Reference][client-docs] -* [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) -* [Cloud Datastore Documentation][product-docs] - -Read more about the client libraries for Cloud APIs, including the older -Google APIs Client Libraries, in [Client Libraries Explained][explained]. - -[explained]: https://cloud.google.com/apis/docs/client-libraries-explained - -**Table of contents:** - -* [Quickstart](#quickstart) - * [Before you begin](#before-you-begin) - * [Installing the client library](#installing-the-client-library) - * [Using the client library](#using-the-client-library) +* [Using the client library](#using-the-client-library) * [Samples](#samples) * [Versioning](#versioning) * [Contributing](#contributing) * [License](#license) -## Quickstart - -### Before you begin - -1. Select or create a Cloud Platform project. - - [Go to the projects page][projects] - -1. Enable billing for your project. +## Using the client library - [Enable billing][billing] +1. [Select or create a Cloud Platform project][projects]. -1. Enable the Google Cloud Datastore API. +1. [Enable billing for your project][billing]. - [Enable the API][enable_api] +1. [Enable the Google Cloud Datastore API][enable_api]. 1. [Set up authentication with a service account][auth] so you can access the API from your local workstation. -[projects]: https://console.cloud.google.com/project -[billing]: https://support.google.com/cloud/answer/6293499#enable-billing -[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com -[auth]: https://cloud.google.com/docs/authentication/getting-started +1. Install the client library: -### Installing the client library + npm install --save @google-cloud/datastore - npm install --save @google-cloud/datastore - -### Using the client library +1. Try an example: ```javascript // Imports the Google Cloud client library const {Datastore} = require('@google-cloud/datastore'); -// Your Google Cloud Platform project ID -const projectId = 'YOUR_PROJECT_ID'; - -// Creates a client -const datastore = new Datastore({ - projectId: projectId, -}); - -// The kind for the new entity -const kind = 'Task'; -// The name/ID for the new entity -const name = 'sampletask1'; -// The Cloud Datastore key for the new entity -const taskKey = datastore.key([kind, name]); - -// Prepares the new entity -const task = { - key: taskKey, - data: { - description: 'Buy milk', - }, -}; - -// Saves the entity -datastore - .save(task) - .then(() => { - console.log(`Saved ${task.key.name}: ${task.data.description}`); - }) - .catch(err => { - console.error('ERROR:', err); +async function quickStart() { + // Your Google Cloud Platform project ID + const projectId = 'YOUR_PROJECT_ID'; + + // Creates a client + const datastore = new Datastore({ + projectId: projectId, }); + + // The kind for the new entity + const kind = 'Task'; + // The name/ID for the new entity + const name = 'sampletask1'; + // The Cloud Datastore key for the new entity + const taskKey = datastore.key([kind, name]); + + // Prepares the new entity + const task = { + key: taskKey, + data: { + description: 'Buy milk', + }, + }; + + // Saves the entity + await datastore.save(task); + console.log(`Saved ${task.key.name}: ${task.data.description}`); +} +quickStart().catch(console.error); ``` ## Samples @@ -110,7 +78,6 @@ has instructions for running the samples. | --------------------------- | --------------------------------- | ------ | | Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | -| Errors and Error Handling | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | The [Cloud Datastore Node.js Client API Reference][client-docs] documentation also contains samples. @@ -139,7 +106,21 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) +## What's Next + +* [Cloud Datastore Documentation][product-docs] +* [Cloud Datastore Node.js Client API Reference][client-docs] +* [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) + +Read more about the client libraries for Cloud APIs, including the older +Google APIs Client Libraries, in [Client Libraries Explained][explained]. + +[explained]: https://cloud.google.com/apis/docs/client-libraries-explained + [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ [product-docs]: https://cloud.google.com/datastore/docs [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png - +[projects]: https://console.cloud.google.com/project +[billing]: https://support.google.com/cloud/answer/6293499#enable-billing +[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com +[auth]: https://cloud.google.com/docs/authentication/getting-started diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a250850908e..a58573f5777 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -72,7 +72,7 @@ "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", "gts": "^0.9.0", - "ink-docstrap": "^1.3.2", + "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "mocha": "^5.2.0", From 9369a4c36bf6b2d024f84a28495d0d436481ce60 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 15 Jan 2019 13:19:30 -0800 Subject: [PATCH 307/820] fix: ship the build directory (#300) --- handwritten/nodejs-datastore/package.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a58573f5777..810286f1bb3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -10,11 +10,8 @@ "repository": "googleapis/nodejs-datastore", "main": "./build/src/index.js", "files": [ - "protos", - "src", - "AUTHORS", - "CONTRIBUTORS", - "LICENSE" + "build/protos", + "build/src" ], "keywords": [ "google apis client", From ac51388db7d419486b5d6ad686b51fbd4cd1ec3f Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 15 Jan 2019 13:31:39 -0800 Subject: [PATCH 308/820] Release v3.0.1 (#301) --- handwritten/nodejs-datastore/CHANGELOG.md | 10 ++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 8ba869a2bc6..31097c6db4e 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,16 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## v3.0.1 + +01-15-2019 13:20 PST + +### Bug fixes +- fix: ship the build directory ([#300](https://github.com/googleapis/nodejs-datastore/pull/300)) + +### Internal / Testing Changes +- build: check broken links in generated docs ([#292](https://github.com/googleapis/nodejs-datastore/pull/292)) + ## v3.0.0 01-14-2019 20:31 PST diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 810286f1bb3..310c5474693 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "3.0.0", + "version": "3.0.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index bce78b74883..2851cd9ffe9 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -12,7 +12,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^3.0.0", + "@google-cloud/datastore": "^3.0.1", "sinon": "^7.0.0", "yargs": "^12.0.1" }, From 90ddfbd733e4a69ece53b4ad92f18eb81ff00871 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Thu, 17 Jan 2019 08:36:12 -0800 Subject: [PATCH 309/820] chore: update year in the license headers. (#304) chore: update year in the license headers --- .../nodejs-datastore/src/v1/datastore_client.js | 2 +- .../src/v1/doc/google/datastore/v1/doc_datastore.js | 2 +- .../src/v1/doc/google/datastore/v1/doc_entity.js | 2 +- .../src/v1/doc/google/datastore/v1/doc_query.js | 2 +- .../src/v1/doc/google/protobuf/doc_wrappers.js | 2 +- handwritten/nodejs-datastore/src/v1/index.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 12 ++++++------ handwritten/nodejs-datastore/test/gapic-v1.js | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index c76ba04d342..a559cdeb5f3 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index ba2b01b361f..f888ea71901 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index bd7848ddd33..183929ba554 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 2010d79c2da..9e9f15718a6 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index a71823dfa38..1a1895883a1 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/src/v1/index.js index cc1397887db..35e214bb94a 100644 --- a/handwritten/nodejs-datastore/src/v1/index.js +++ b/handwritten/nodejs-datastore/src/v1/index.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 7194a453213..96f7248c9ca 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,26 +1,26 @@ { - "updateTime": "2019-01-03T17:52:45.953619Z", + "updateTime": "2019-01-17T12:54:14.696232Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.4", - "dockerImage": "googleapis/artman@sha256:8b45fae963557c3299921037ecbb86f0689f41b1b4aea73408ebc50562cb2857" + "version": "0.16.6", + "dockerImage": "googleapis/artman@sha256:12722f2ca3fbc3b53cc6aa5f0e569d7d221b46bd876a2136497089dec5e3634e" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "2a5caab4315cb5ab3d5c97c90c6d4e9441052b16", - "internalRef": "227195651" + "sha": "0ac60e21a1aa86c07c1836865b35308ba8178b05", + "internalRef": "229626798" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2018.12.6" + "version": "2019.1.16" } } ], diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index dc700ab76f9..b82802e74da 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 858642544ce433472aa25f22815cebe00b4bb992 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 17 Jan 2019 08:47:41 -0800 Subject: [PATCH 310/820] fix(deps): update dependency google-auth-library to v3 (#302) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 310c5474693..64c6ccf5a9c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^1.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.1", - "google-auth-library": "^2.0.0", + "google-auth-library": "^3.0.0", "google-gax": "^0.23.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", From 172f18d2a61774e7be5f69459894d7ecf4365262 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Mon, 21 Jan 2019 09:22:04 -0800 Subject: [PATCH 311/820] docs(key): copy Datastore#key examples to Key ctor (#306) --- handwritten/nodejs-datastore/src/entity.ts | 31 +++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index e89d572cfc1..b20f51d4bb6 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -174,10 +174,39 @@ export namespace entity { * @param {string} [options.namespace] Optional namespace. * * @example + * Create an incomplete key with a kind value of `Company`. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); + * const key = datastore.key('Company'); + * + * @example + * Create a complete key with a kind value of `Company` and id + * `123`. const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 123]); + * + * @example + * If the ID integer is outside the bounds of a JavaScript Number + * object, create an Int. const {Datastore} = + * require('@google-cloud/datastore'); const datastore = new Datastore(); + * const key = datastore.key([ + * 'Company', + * datastore.int('100000000000001234') + * ]); + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * // Create a complete key with a kind value of `Company` and name `Google`. + * // Note: `id` is used for numeric identifiers and `name` is used otherwise. + * const key = datastore.key(['Company', 'Google']); + * + * @example + * Create a complete key from a provided namespace and + * path. const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * const key = datastore.key({ - * namespace: 'ns', + * namespace: 'My-NS', * path: ['Company', 123] * }); */ From e4a9f345ec68a8f9f40990034ce827dad034f154 Mon Sep 17 00:00:00 2001 From: Evgenii Abduzhapparov Date: Thu, 24 Jan 2019 00:23:07 +0100 Subject: [PATCH 312/820] fix(types): Make gaxOptions optional in Transaction.rollback() (#310) --- handwritten/nodejs-datastore/src/transaction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index ce8418fa4a7..a5014519085 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -360,7 +360,7 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(gaxOptions, callback?) { + rollback(gaxOptions?, callback?) { if (is.fn(gaxOptions)) { callback = gaxOptions; gaxOptions = {}; @@ -372,7 +372,7 @@ class Transaction extends DatastoreRequest { { client: 'DatastoreClient', method: 'rollback', - gaxOpts: gaxOptions, + gaxOpts: gaxOptions || {}, }, (err, resp) => { this.skipCommit = true; From 9de9cfc59b6bedcc3d5d380f5fa09697546ceb93 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 25 Jan 2019 09:52:42 -0800 Subject: [PATCH 313/820] fix(deps): update dependency google-gax to ^0.24.0 (#312) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 64c6ccf5a9c..d5f87cb4011 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^3.0.0", - "google-gax": "^0.23.0", + "google-gax": "^0.24.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", From 51f209aae916388776ab134cd00171fcb47abd18 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Fri, 25 Jan 2019 22:15:41 -0800 Subject: [PATCH 314/820] feat: typings for gapic files (#307) --- .../src/v1/datastore_client.d.ts | 372 ++++++++++++++++++ .../nodejs-datastore/src/v1/index.d.ts | 17 + 2 files changed, 389 insertions(+) create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client.d.ts create mode 100644 handwritten/nodejs-datastore/src/v1/index.d.ts diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts new file mode 100644 index 00000000000..4dbba3912d6 --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts @@ -0,0 +1,372 @@ +/*! + * Copyright 2019 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {CallOptions, GrpcClientOptions} from 'google-gax'; +import {ServiceError} from 'grpc'; +import {common as protobuf} from 'protobufjs'; + +declare class DatastoreClient { + static servicePath: string; + static port: number; + static scopes: string[]; + + constructor(opts?: GrpcClientOptions); + + getProjectId(callback: DatastoreClient.GetProjectIdCallback): void; + + lookup(request: DatastoreClient.LookupRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.LookupResponse]>; + lookup(request: DatastoreClient.LookupRequest, callback: DatastoreClient.LookupCallback): void; + lookup(request: DatastoreClient.LookupRequest, options: CallOptions, callback: DatastoreClient.LookupCallback): void; + + runQuery(request: DatastoreClient.RunQueryRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.RunQueryResponse]>; + runQuery(request: DatastoreClient.RunQueryRequest, callback: DatastoreClient.RunQueryCallback): void; + runQuery(request: DatastoreClient.RunQueryRequest, options: CallOptions, callback: DatastoreClient.RunQueryCallback): void; + + beginTransaction(request: DatastoreClient.BeginTransactionRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.BeginTransactionResponse]>; + beginTransaction(request: DatastoreClient.BeginTransactionRequest, callback: DatastoreClient.BeginTransactionCallback): void; + beginTransaction(request: DatastoreClient.BeginTransactionRequest, options: CallOptions, callback: DatastoreClient.BeginTransactionCallback): void; + + commit(request: DatastoreClient.CommitRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.CommitResponse]>; + commit(request: DatastoreClient.CommitRequest, callback: DatastoreClient.CommitCallback): void; + commit(request: DatastoreClient.CommitRequest, options: CallOptions, callback: DatastoreClient.CommitCallback): void; + + rollback(request: DatastoreClient.RollbackRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.RollbackResponse]>; + rollback(request: DatastoreClient.RollbackRequest, callback: DatastoreClient.RollbackCallback): void; + rollback(request: DatastoreClient.RollbackRequest, options: CallOptions, callback: DatastoreClient.RollbackCallback): void; + + allocateIds(request: DatastoreClient.AllocateIdsRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.AllocateIdsResponse]>; + allocateIds(request: DatastoreClient.AllocateIdsRequest, callback: DatastoreClient.AllocateIdsCallback): void; + allocateIds(request: DatastoreClient.AllocateIdsRequest, options: CallOptions, callback: DatastoreClient.AllocateIdsCallback): void; + + reserveIds(request: DatastoreClient.ReserveIdsRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.ReserveIdsResponse]>; + reserveIds(request: DatastoreClient.ReserveIdsRequest, callback: DatastoreClient.ReserveIdsCallback): void; + reserveIds(request: DatastoreClient.ReserveIdsRequest, options: CallOptions, callback: DatastoreClient.ReserveIdsCallback): void; +} + +declare namespace DatastoreClient { + interface CancelablePromise extends Promise { + cancel(): void; + } + + interface GetProjectIdCallback { + (error: null|Error, projectId: string): void; + } + + interface LookupRequest { + projectId: string; + readOptions?: ReadOptions; + keys: Key[]; + } + + interface LookupResponse { + found: EntityResult[]; + missing: EntityResult[]; + deferred: Key[]; + } + + interface LookupCallback { + (err: null|ServiceError, response: LookupResponse): void; + } + + interface RunQueryRequest { + projectId: string; + partitionId?: PartitionId; + readOptions?: ReadOptions; + queryType?: string; + query?: Query; + gqlQuery?: GqlQuery; + } + + interface RunQueryResponse { + batch: QueryResultBatch; + query: Query; + } + + interface RunQueryCallback { + (err: null|ServiceError, response: RunQueryResponse): void; + } + + interface BeginTransactionRequest { + projectId: string; + transactionOptions?: TransactionOptions; + } + + interface BeginTransactionResponse { + transaction: string|Buffer; + } + + interface BeginTransactionCallback { + (err: null|ServiceError, response: BeginTransactionResponse): void; + } + + const enum CommitRequestMode { + MODE_UNSPECIFIED = 'MODE_UNSPECIFIED', + TRANSACTIONAL = 'TRANSACTIONAL', + NON_TRANSACTIONAL = 'NON_TRANSACTIONAL' + } + + interface CommitRequest { + projectId: string; + mode: CommitRequestMode; + transactionSelector?: string; + transaction?: string|Buffer; + mutations: Mutation[]; + } + + interface CommitResponse { + mutationResults: MutationResult[]; + indexUpdates: number; + } + + interface CommitCallback { + (err: null|ServiceError, response: CommitResponse): void; + } + + interface RollbackRequest { + projectId: string; + transaction: string|Buffer; + } + + interface RollbackResponse {} + + interface RollbackCallback { + (err: null|ServiceError, response: RollbackResponse): void; + } + + interface AllocateIdsRequest { + projectId: string; + keys: Key[]; + } + + interface AllocateIdsResponse { + keys: Key[]; + } + + interface AllocateIdsCallback { + (err: null|ServiceError, response: AllocateIdsResponse): void; + } + + interface ReserveIdsRequest { + projectId: string; + databaseId?: string; + keys: Key[]; + } + + interface ReserveIdsResponse {} + + interface ReserveIdsCallback { + (err: null|ServiceError, response: ReserveIdsResponse): void; + } + + interface Mutation { + insert?: Entity; + update?: Entity; + upsert?: Entity; + delete?: Key; + operation?: string; + conflictDetectionStrategy?: string; + baseVersion?: number; + } + + interface MutationResult { + key: null|Key; + version: number; + conflictDetected: boolean; + } + + const enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 'READ_CONSISTENCY_UNSPECIFIED', + STRONG = 'STRONG', + EVENTUAL = 'EVENTUAL' + } + + interface ReadOptions { + consistencyType?: string; + readConsistency?: ReadConsistency; + transaction?: string|Buffer; + } + + interface ReadWrite { + previousTransaction?: string|Buffer; + } + + interface ReadOnly {} + + interface TransactionOptions { + mode?: string; + readWrite?: ReadWrite; + readOnly?: ReadOnly; + } + + interface PartitionId { + projectId: string; + namespaceId?: string; + } + + interface PathElement { + kind: string; + id?: number; + name?: string; + idType?: string; + } + + interface Key { + partitionId?: PartitionId; + path: PathElement[]; + } + + interface ArrayValue { + values: Value[]; + } + + interface Value { + nullValue?: 0; + booleanValue?: boolean; + integerValue?: number; + doubleValue?: number; + timestampValue?: protobuf.ITimestamp; + keyValue?: Key; + stringValue?: string; + blobValue?: string|Buffer; + geoPointValue?: LatLng; + entityValue?: Entity; + arrayValue?: ArrayValue; + valueType?: string; + meaning?: number; + excludeFromIndexes?: boolean; + } + + interface Entity { + key: null|Key; + properties: {[name: string]: Value}; + } + + const enum ResultType { + RESULT_TYPE_UNSPECIFIED = 'RESULT_TYPE_UNSPECIFIED', + FULL = 'FULL', + PROJECTION = 'PROJECTION', + KEY_ONLY = 'KEY_ONLY' + } + + interface EntityResult { + entity: Entity; + version: number; + cursor: string|Buffer; + } + + interface Query { + pojection: Projection[]; + kind: KindExpression[]; + filter?: Filter; + order: PropertyOrder[]; + distinctOn: PropertyReference[]; + startCursor?: string|Buffer; + endCursor?: string|Buffer; + offset?: number; + limit?: protobuf.IInt32Value; + } + + interface KindExpression { + name: string; + } + + interface PropertyReference { + name: string; + } + + interface Projection { + property: PropertyReference; + } + + const enum Direction { + DIRECTION_UNSPECIFIED = 'DIRECTION_UNSPECIFIED', + ASCENDING = 'ASCENDING', + DESCENDING = 'DESCENDING' + } + + interface PropertyOrder { + property: PropertyReference; + direction: Direction; + } + + interface Filter { + filterType?: string; + compositeFilter?: CompositeFilter; + propertyFilter?: PropertyFilter; + } + + const enum CompositeFilterOperator { + OPERATOR_UNSPECIFIED = 'OPERATOR_UNSPECIFIED', + AND = 'AND' + } + + interface CompositeFilter { + op: CompositeFilterOperator; + filters: Filter[]; + } + + const enum PropertyFilterOperator { + OPERATOR_UNSPECIFIED = 'OPERATOR_UNSPECIFIED', + LESS_THAN = 'LESS_THAN', + LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL', + GREATER_THAN = 'GREATER_THAN', + GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL', + EQUAL = 'EQUAL', + HAS_ANCESTOR = 'HAS_ANCESTOR' + } + + interface PropertyFilter { + property: PropertyReference; + op: PropertyFilterOperator; + value: Value; + } + + interface GqlQuery { + queryString: string; + allowLiterals?: boolean; + namedBindings?: {[name: string]: GqlQueryParameter}; + positionalBindings?: GqlQueryParameter[]; + } + + interface GqlQueryParameter { + parameterType?: string; + value?: Value; + cursor?: string|Buffer; + } + + const enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 'MORE_RESULTS_TYPE_UNSPECIFIED', + NOT_FINISHED = 'NOT_FINISHED', + MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT', + NO_MORE_RESULTS = 'NO_MORE_RESULTS', + MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR' + } + + interface QueryResultBatch { + skippedResults: number; + skippedCursor: string|Buffer; + entityResultType: ResultType; + entityResults: EntityResult[]; + endCursor: string|Buffer; + moreResults: MoreResultsType; + snapshotVersion: number; + } + + interface LatLng { + latitude: number; + longitude: number; + } +} diff --git a/handwritten/nodejs-datastore/src/v1/index.d.ts b/handwritten/nodejs-datastore/src/v1/index.d.ts new file mode 100644 index 00000000000..3e99a59618f --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/index.d.ts @@ -0,0 +1,17 @@ +/*! + * Copyright 2019 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export {DatastoreClient} from './datastore_client'; From 0b008c1f7952f0bdd3cc615b2340454ccd2c7a8f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sat, 26 Jan 2019 12:55:12 -0500 Subject: [PATCH 315/820] chore(deps): update dependency eslint-config-prettier to v4 (#313) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d5f87cb4011..9f0a332156f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "@types/through2": "^2.0.34", "codecov": "^3.0.2", "eslint": "^5.0.0", - "eslint-config-prettier": "^3.0.0", + "eslint-config-prettier": "^4.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", "gts": "^0.9.0", From 1fb4b8c1afe14d7147591881cb36a3963cfd10e0 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Tue, 29 Jan 2019 19:49:00 -0500 Subject: [PATCH 316/820] docs(samples): Update Datastore snippet for read only transaction --- handwritten/nodejs-datastore/samples/concepts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 3cc6c089a5d..91887917805 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1125,7 +1125,7 @@ class Transaction extends TestHelper { // [START datastore_transactional_single_entity_group_read_only] async function getTaskListEntities() { - const transaction = datastore.transaction(); + const transaction = datastore.transaction({readOnly: true}); try { const taskListKey = datastore.key(['TaskList', 'default']); From 0c31ef3d736605290895da995d17cd29fc3c9bb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Wed, 30 Jan 2019 11:46:10 -0800 Subject: [PATCH 317/820] fix(deps): update dependency google-gax to ^0.25.0 (#316) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9f0a332156f..3a762ce154d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^3.0.0", - "google-gax": "^0.24.0", + "google-gax": "^0.25.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", From f94210034a2e5d17bc6ca5de89a4be64fac36a2e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 1 Feb 2019 10:10:15 -0800 Subject: [PATCH 318/820] Automerge by dpebot Automerge by dpebot --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 3a762ce154d..d23525a56fb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -78,6 +78,6 @@ "prettier": "^1.13.5", "proxyquire": "^2.0.1", "sinon": "^7.0.0", - "typescript": "~3.2.0" + "typescript": "~3.3.0" } } From 593790f7bde35aee25ccff907129f037a09a96fd Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Thu, 7 Feb 2019 15:34:15 -0800 Subject: [PATCH 319/820] chore: move CONTRIBUTING.md to root (#321) --- handwritten/nodejs-datastore/CONTRIBUTING.md | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 handwritten/nodejs-datastore/CONTRIBUTING.md diff --git a/handwritten/nodejs-datastore/CONTRIBUTING.md b/handwritten/nodejs-datastore/CONTRIBUTING.md new file mode 100644 index 00000000000..b958f235007 --- /dev/null +++ b/handwritten/nodejs-datastore/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# How to become a contributor and submit your own code + +**Table of contents** + +* [Contributor License Agreements](#contributor-license-agreements) +* [Contributing a patch](#contributing-a-patch) +* [Running the tests](#running-the-tests) +* [Releasing the library](#releasing-the-library) + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement +(CLA). + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual CLA] + (https://developers.google.com/open-source/cla/individual). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://developers.google.com/open-source/cla/corporate). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the code to which + you are contributing. +1. Ensure that your code has an appropriate set of tests which all pass. +1. Submit a pull request. + +## Running the tests + +1. [Prepare your environment for Node.js setup][setup]. + +1. Install dependencies: + + npm install + +1. Run the tests: + + npm test + +1. Lint (and maybe fix) any changes: + + npm run fix + +[setup]: https://cloud.google.com/nodejs/docs/setup From 50ea5574653c606b490afaf696c391dd71e2d434 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Thu, 7 Feb 2019 18:46:26 -0800 Subject: [PATCH 320/820] docs: update contributing path in README (#322) --- handwritten/nodejs-datastore/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index b261a91b04e..15032ab23ed 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -98,7 +98,7 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages] ## Contributing -Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/master/.github/CONTRIBUTING.md). +Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/master/CONTRIBUTING.md). ## License From 2e0ab267f03f156d3e2024f268de0e1aebef9e0b Mon Sep 17 00:00:00 2001 From: Joe Cervino Date: Fri, 8 Feb 2019 16:45:04 -0500 Subject: [PATCH 321/820] refactor(types): enable noImplicitAny for transaction.ts & request.ts (#305) --- handwritten/nodejs-datastore/package.json | 7 +- .../nodejs-datastore/proto/datastore.d.ts | 8865 +++++++++++++++++ .../nodejs-datastore/proto/entity.d.ts | 4613 +++++++++ handwritten/nodejs-datastore/src/entity.ts | 4 +- handwritten/nodejs-datastore/src/index.ts | 1 - handwritten/nodejs-datastore/src/request.ts | 358 +- .../nodejs-datastore/src/transaction.ts | 144 +- .../nodejs-datastore/system-test/datastore.ts | 3 +- .../nodejs-datastore/test/transaction.ts | 2 +- 9 files changed, 13818 insertions(+), 179 deletions(-) create mode 100644 handwritten/nodejs-datastore/proto/datastore.d.ts create mode 100644 handwritten/nodejs-datastore/proto/entity.d.ts diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d23525a56fb..f0a9673ef18 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -37,10 +37,12 @@ "clean": "gts clean", "compile": "tsc -p . && cp -r src/v1 build/src && cp -r protos build && cp test/*.js build/test", "prepare": "npm run compile", - "pretest": "npm run compile" + "pretest": "npm run compile", + "proto": "npm run proto:datastore", + "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -o proto/datastore.d.ts -" }, "dependencies": { - "@google-cloud/projectify": "^0.3.0", + "@google-cloud/projectify": "^0.3.2", "@google-cloud/promisify": "^0.3.0", "arrify": "^1.0.1", "concat-stream": "^2.0.0", @@ -68,6 +70,7 @@ "eslint-config-prettier": "^4.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", + "google-proto-files": "^0.18.0", "gts": "^0.9.0", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "intelli-espower-loader": "^1.0.1", diff --git a/handwritten/nodejs-datastore/proto/datastore.d.ts b/handwritten/nodejs-datastore/proto/datastore.d.ts new file mode 100644 index 00000000000..4f2f6398d1f --- /dev/null +++ b/handwritten/nodejs-datastore/proto/datastore.d.ts @@ -0,0 +1,8865 @@ +import * as $protobuf from "protobufjs"; +/** Namespace google. */ +export namespace google { + + /** Namespace datastore. */ + namespace datastore { + + /** Namespace v1. */ + namespace v1 { + + /** Represents a Datastore */ + class Datastore extends $protobuf.rpc.Service { + + /** + * Constructs a new Datastore service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new Datastore service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @param callback Node-style callback called with the error, if any, and LookupResponse + */ + public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @returns Promise + */ + public lookup(request: google.datastore.v1.ILookupRequest): Promise; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunQueryResponse + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @returns Promise + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @returns Promise + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CommitResponse + */ + public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @returns Promise + */ + public commit(request: google.datastore.v1.ICommitRequest): Promise; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RollbackResponse + */ + public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @returns Promise + */ + public rollback(request: google.datastore.v1.IRollbackRequest): Promise; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @returns Promise + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @returns Promise + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; + } + + namespace Datastore { + + /** + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @param error Error, if any + * @param [response] LookupResponse + */ + type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @param error Error, if any + * @param [response] RunQueryResponse + */ + type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @param error Error, if any + * @param [response] BeginTransactionResponse + */ + type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @param error Error, if any + * @param [response] CommitResponse + */ + type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @param error Error, if any + * @param [response] RollbackResponse + */ + type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @param error Error, if any + * @param [response] AllocateIdsResponse + */ + type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @param error Error, if any + * @param [response] ReserveIdsResponse + */ + type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; + } + + /** Properties of a LookupRequest. */ + interface ILookupRequest { + + /** LookupRequest projectId */ + projectId?: (string|null); + + /** LookupRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a LookupRequest. */ + class LookupRequest implements ILookupRequest { + + /** + * Constructs a new LookupRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupRequest); + + /** LookupRequest projectId. */ + public projectId: string; + + /** LookupRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupRequest instance + */ + public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; + + /** + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookupRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; + + /** + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; + + /** + * Verifies a LookupRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; + + /** + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @param message LookupRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LookupRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a LookupResponse. */ + interface ILookupResponse { + + /** LookupResponse found */ + found?: (google.datastore.v1.IEntityResult[]|null); + + /** LookupResponse missing */ + missing?: (google.datastore.v1.IEntityResult[]|null); + + /** LookupResponse deferred */ + deferred?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a LookupResponse. */ + class LookupResponse implements ILookupResponse { + + /** + * Constructs a new LookupResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupResponse); + + /** LookupResponse found. */ + public found: google.datastore.v1.IEntityResult[]; + + /** LookupResponse missing. */ + public missing: google.datastore.v1.IEntityResult[]; + + /** LookupResponse deferred. */ + public deferred: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupResponse instance + */ + public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; + + /** + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookupResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; + + /** + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; + + /** + * Verifies a LookupResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; + + /** + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @param message LookupResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LookupResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RunQueryRequest. */ + interface IRunQueryRequest { + + /** RunQueryRequest projectId */ + projectId?: (string|null); + + /** RunQueryRequest partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query */ + query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery */ + gqlQuery?: (google.datastore.v1.IGqlQuery|null); + } + + /** Represents a RunQueryRequest. */ + class RunQueryRequest implements IRunQueryRequest { + + /** + * Constructs a new RunQueryRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryRequest); + + /** RunQueryRequest projectId. */ + public projectId: string; + + /** RunQueryRequest partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query. */ + public query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery. */ + public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunQueryRequest queryType. */ + public queryType?: ("query"|"gqlQuery"); + + /** + * Creates a new RunQueryRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryRequest instance + */ + public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; + + /** + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; + + /** + * Verifies a RunQueryRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; + + /** + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @param message RunQueryRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RunQueryRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RunQueryResponse. */ + interface IRunQueryResponse { + + /** RunQueryResponse batch */ + batch?: (google.datastore.v1.IQueryResultBatch|null); + + /** RunQueryResponse query */ + query?: (google.datastore.v1.IQuery|null); + } + + /** Represents a RunQueryResponse. */ + class RunQueryResponse implements IRunQueryResponse { + + /** + * Constructs a new RunQueryResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryResponse); + + /** RunQueryResponse batch. */ + public batch?: (google.datastore.v1.IQueryResultBatch|null); + + /** RunQueryResponse query. */ + public query?: (google.datastore.v1.IQuery|null); + + /** + * Creates a new RunQueryResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryResponse instance + */ + public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; + + /** + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; + + /** + * Verifies a RunQueryResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; + + /** + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @param message RunQueryResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RunQueryResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BeginTransactionRequest. */ + interface IBeginTransactionRequest { + + /** BeginTransactionRequest projectId */ + projectId?: (string|null); + + /** BeginTransactionRequest transactionOptions */ + transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + } + + /** Represents a BeginTransactionRequest. */ + class BeginTransactionRequest implements IBeginTransactionRequest { + + /** + * Constructs a new BeginTransactionRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionRequest); + + /** BeginTransactionRequest projectId. */ + public projectId: string; + + /** BeginTransactionRequest transactionOptions. */ + public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + + /** + * Creates a new BeginTransactionRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionRequest instance + */ + public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; + + /** + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; + + /** + * Verifies a BeginTransactionRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; + + /** + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @param message BeginTransactionRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BeginTransactionRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BeginTransactionResponse. */ + interface IBeginTransactionResponse { + + /** BeginTransactionResponse transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a BeginTransactionResponse. */ + class BeginTransactionResponse implements IBeginTransactionResponse { + + /** + * Constructs a new BeginTransactionResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionResponse); + + /** BeginTransactionResponse transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new BeginTransactionResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionResponse instance + */ + public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; + + /** + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; + + /** + * Verifies a BeginTransactionResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; + + /** + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @param message BeginTransactionResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BeginTransactionResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RollbackRequest. */ + interface IRollbackRequest { + + /** RollbackRequest projectId */ + projectId?: (string|null); + + /** RollbackRequest transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a RollbackRequest. */ + class RollbackRequest implements IRollbackRequest { + + /** + * Constructs a new RollbackRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackRequest); + + /** RollbackRequest projectId. */ + public projectId: string; + + /** RollbackRequest transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new RollbackRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackRequest instance + */ + public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; + + /** + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; + + /** + * Verifies a RollbackRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; + + /** + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @param message RollbackRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RollbackRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RollbackResponse. */ + interface IRollbackResponse { + } + + /** Represents a RollbackResponse. */ + class RollbackResponse implements IRollbackResponse { + + /** + * Constructs a new RollbackResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackResponse); + + /** + * Creates a new RollbackResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackResponse instance + */ + public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; + + /** + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; + + /** + * Verifies a RollbackResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; + + /** + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @param message RollbackResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RollbackResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CommitRequest. */ + interface ICommitRequest { + + /** CommitRequest projectId */ + projectId?: (string|null); + + /** CommitRequest mode */ + mode?: (google.datastore.v1.CommitRequest.Mode|null); + + /** CommitRequest transaction */ + transaction?: (Uint8Array|null); + + /** CommitRequest mutations */ + mutations?: (google.datastore.v1.IMutation[]|null); + } + + /** Represents a CommitRequest. */ + class CommitRequest implements ICommitRequest { + + /** + * Constructs a new CommitRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitRequest); + + /** CommitRequest projectId. */ + public projectId: string; + + /** CommitRequest mode. */ + public mode: google.datastore.v1.CommitRequest.Mode; + + /** CommitRequest transaction. */ + public transaction: Uint8Array; + + /** CommitRequest mutations. */ + public mutations: google.datastore.v1.IMutation[]; + + /** CommitRequest transactionSelector. */ + public transactionSelector?: "transaction"; + + /** + * Creates a new CommitRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitRequest instance + */ + public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; + + /** + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CommitRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; + + /** + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; + + /** + * Verifies a CommitRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; + + /** + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @param message CommitRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CommitRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace CommitRequest { + + /** Mode enum. */ + enum Mode { + MODE_UNSPECIFIED = 0, + TRANSACTIONAL = 1, + NON_TRANSACTIONAL = 2 + } + } + + /** Properties of a CommitResponse. */ + interface ICommitResponse { + + /** CommitResponse mutationResults */ + mutationResults?: (google.datastore.v1.IMutationResult[]|null); + + /** CommitResponse indexUpdates */ + indexUpdates?: (number|null); + } + + /** Represents a CommitResponse. */ + class CommitResponse implements ICommitResponse { + + /** + * Constructs a new CommitResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitResponse); + + /** CommitResponse mutationResults. */ + public mutationResults: google.datastore.v1.IMutationResult[]; + + /** CommitResponse indexUpdates. */ + public indexUpdates: number; + + /** + * Creates a new CommitResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitResponse instance + */ + public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; + + /** + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CommitResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; + + /** + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; + + /** + * Verifies a CommitResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; + + /** + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @param message CommitResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CommitResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an AllocateIdsRequest. */ + interface IAllocateIdsRequest { + + /** AllocateIdsRequest projectId */ + projectId?: (string|null); + + /** AllocateIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents an AllocateIdsRequest. */ + class AllocateIdsRequest implements IAllocateIdsRequest { + + /** + * Constructs a new AllocateIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsRequest); + + /** AllocateIdsRequest projectId. */ + public projectId: string; + + /** AllocateIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsRequest instance + */ + public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; + + /** + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; + + /** + * Verifies an AllocateIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; + + /** + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @param message AllocateIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this AllocateIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an AllocateIdsResponse. */ + interface IAllocateIdsResponse { + + /** AllocateIdsResponse keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents an AllocateIdsResponse. */ + class AllocateIdsResponse implements IAllocateIdsResponse { + + /** + * Constructs a new AllocateIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsResponse); + + /** AllocateIdsResponse keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsResponse instance + */ + public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; + + /** + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; + + /** + * Verifies an AllocateIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; + + /** + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @param message AllocateIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this AllocateIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReserveIdsRequest. */ + interface IReserveIdsRequest { + + /** ReserveIdsRequest projectId */ + projectId?: (string|null); + + /** ReserveIdsRequest databaseId */ + databaseId?: (string|null); + + /** ReserveIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a ReserveIdsRequest. */ + class ReserveIdsRequest implements IReserveIdsRequest { + + /** + * Constructs a new ReserveIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsRequest); + + /** ReserveIdsRequest projectId. */ + public projectId: string; + + /** ReserveIdsRequest databaseId. */ + public databaseId: string; + + /** ReserveIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new ReserveIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsRequest instance + */ + public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; + + /** + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; + + /** + * Verifies a ReserveIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; + + /** + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @param message ReserveIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReserveIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReserveIdsResponse. */ + interface IReserveIdsResponse { + } + + /** Represents a ReserveIdsResponse. */ + class ReserveIdsResponse implements IReserveIdsResponse { + + /** + * Constructs a new ReserveIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsResponse); + + /** + * Creates a new ReserveIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsResponse instance + */ + public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; + + /** + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; + + /** + * Verifies a ReserveIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; + + /** + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @param message ReserveIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReserveIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Mutation. */ + interface IMutation { + + /** Mutation insert */ + insert?: (google.datastore.v1.IEntity|null); + + /** Mutation update */ + update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert */ + upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete */ + "delete"?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion */ + baseVersion?: (number|Long|null); + } + + /** Represents a Mutation. */ + class Mutation implements IMutation { + + /** + * Constructs a new Mutation. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutation); + + /** Mutation insert. */ + public insert?: (google.datastore.v1.IEntity|null); + + /** Mutation update. */ + public update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert. */ + public upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete. */ + public delete?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion. */ + public baseVersion: (number|Long); + + /** Mutation operation. */ + public operation?: ("insert"|"update"|"upsert"|"delete"); + + /** Mutation conflictDetectionStrategy. */ + public conflictDetectionStrategy?: "baseVersion"; + + /** + * Creates a new Mutation instance using the specified properties. + * @param [properties] Properties to set + * @returns Mutation instance + */ + public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; + + /** + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Mutation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; + + /** + * Decodes a Mutation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; + + /** + * Verifies a Mutation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Mutation + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; + + /** + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @param message Mutation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Mutation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MutationResult. */ + interface IMutationResult { + + /** MutationResult key */ + key?: (google.datastore.v1.IKey|null); + + /** MutationResult version */ + version?: (number|Long|null); + + /** MutationResult conflictDetected */ + conflictDetected?: (boolean|null); + } + + /** Represents a MutationResult. */ + class MutationResult implements IMutationResult { + + /** + * Constructs a new MutationResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutationResult); + + /** MutationResult key. */ + public key?: (google.datastore.v1.IKey|null); + + /** MutationResult version. */ + public version: (number|Long); + + /** MutationResult conflictDetected. */ + public conflictDetected: boolean; + + /** + * Creates a new MutationResult instance using the specified properties. + * @param [properties] Properties to set + * @returns MutationResult instance + */ + public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; + + /** + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutationResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; + + /** + * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; + + /** + * Verifies a MutationResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutationResult + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; + + /** + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @param message MutationResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutationResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReadOptions. */ + interface IReadOptions { + + /** ReadOptions readConsistency */ + readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|null); + + /** ReadOptions transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a ReadOptions. */ + class ReadOptions implements IReadOptions { + + /** + * Constructs a new ReadOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReadOptions); + + /** ReadOptions readConsistency. */ + public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; + + /** ReadOptions transaction. */ + public transaction: Uint8Array; + + /** ReadOptions consistencyType. */ + public consistencyType?: ("readConsistency"|"transaction"); + + /** + * Creates a new ReadOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOptions instance + */ + public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; + + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; + + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; + + /** + * Verifies a ReadOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @param message ReadOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ReadOptions { + + /** ReadConsistency enum. */ + enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 0, + STRONG = 1, + EVENTUAL = 2 + } + } + + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { + + /** TransactionOptions readWrite */ + readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly */ + readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + } + + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { + + /** + * Constructs a new TransactionOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ITransactionOptions); + + /** TransactionOptions readWrite. */ + public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly. */ + public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + + /** TransactionOptions mode. */ + public mode?: ("readWrite"|"readOnly"); + + /** + * Creates a new TransactionOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns TransactionOptions instance + */ + public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; + + /** + * Verifies a TransactionOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TransactionOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TransactionOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace TransactionOptions { + + /** Properties of a ReadWrite. */ + interface IReadWrite { + + /** ReadWrite previousTransaction */ + previousTransaction?: (Uint8Array|null); + } + + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { + + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); + + /** ReadWrite previousTransaction. */ + public previousTransaction: Uint8Array; + + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReadOnly. */ + interface IReadOnly { + } + + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { + + /** + * Constructs a new ReadOnly. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + + /** + * Creates a new ReadOnly instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOnly instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Verifies a ReadOnly message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOnly + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOnly to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a PartitionId. */ + interface IPartitionId { + + /** PartitionId projectId */ + projectId?: (string|null); + + /** PartitionId namespaceId */ + namespaceId?: (string|null); + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Key. */ + interface IKey { + + /** Key partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path */ + path?: (google.datastore.v1.Key.IPathElement[]|null); + } + + /** Represents a Key. */ + class Key implements IKey { + + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Key { + + /** Properties of a PathElement. */ + interface IPathElement { + + /** PathElement kind */ + kind?: (string|null); + + /** PathElement id */ + id?: (number|Long|null); + + /** PathElement name */ + name?: (string|null); + } + + /** Represents a PathElement. */ + class PathElement implements IPathElement { + + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: (number|Long); + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: ("id"|"name"); + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + + /** ArrayValue values */ + values?: (google.datastore.v1.IValue[]|null); + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value booleanValue */ + booleanValue?: (boolean|null); + + /** Value integerValue */ + integerValue?: (number|Long|null); + + /** Value doubleValue */ + doubleValue?: (number|null); + + /** Value timestampValue */ + timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue */ + keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value blobValue */ + blobValue?: (Uint8Array|null); + + /** Value geoPointValue */ + geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue */ + entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue */ + arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning */ + meaning?: (number|null); + + /** Value excludeFromIndexes */ + excludeFromIndexes?: (boolean|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: (number|Long); + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue. */ + public keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: Uint8Array; + + /** Value geoPointValue. */ + public geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue. */ + public entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue. */ + public arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Entity. */ + interface IEntity { + + /** Entity key */ + key?: (google.datastore.v1.IKey|null); + + /** Entity properties */ + properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + } + + /** Represents an Entity. */ + class Entity implements IEntity { + + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: (google.datastore.v1.IKey|null); + + /** Entity properties. */ + public properties: { [k: string]: google.datastore.v1.IValue }; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EntityResult. */ + interface IEntityResult { + + /** EntityResult entity */ + entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version */ + version?: (number|Long|null); + + /** EntityResult cursor */ + cursor?: (Uint8Array|null); + } + + /** Represents an EntityResult. */ + class EntityResult implements IEntityResult { + + /** + * Constructs a new EntityResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntityResult); + + /** EntityResult entity. */ + public entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version. */ + public version: (number|Long); + + /** EntityResult cursor. */ + public cursor: Uint8Array; + + /** + * Creates a new EntityResult instance using the specified properties. + * @param [properties] Properties to set + * @returns EntityResult instance + */ + public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; + + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; + + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; + + /** + * Verifies an EntityResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EntityResult + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; + + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @param message EntityResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EntityResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EntityResult { + + /** ResultType enum. */ + enum ResultType { + RESULT_TYPE_UNSPECIFIED = 0, + FULL = 1, + PROJECTION = 2, + KEY_ONLY = 3 + } + } + + /** Properties of a Query. */ + interface IQuery { + + /** Query projection */ + projection?: (google.datastore.v1.IProjection[]|null); + + /** Query kind */ + kind?: (google.datastore.v1.IKindExpression[]|null); + + /** Query filter */ + filter?: (google.datastore.v1.IFilter|null); + + /** Query order */ + order?: (google.datastore.v1.IPropertyOrder[]|null); + + /** Query distinctOn */ + distinctOn?: (google.datastore.v1.IPropertyReference[]|null); + + /** Query startCursor */ + startCursor?: (Uint8Array|null); + + /** Query endCursor */ + endCursor?: (Uint8Array|null); + + /** Query offset */ + offset?: (number|null); + + /** Query limit */ + limit?: (google.protobuf.IInt32Value|null); + } + + /** Represents a Query. */ + class Query implements IQuery { + + /** + * Constructs a new Query. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQuery); + + /** Query projection. */ + public projection: google.datastore.v1.IProjection[]; + + /** Query kind. */ + public kind: google.datastore.v1.IKindExpression[]; + + /** Query filter. */ + public filter?: (google.datastore.v1.IFilter|null); + + /** Query order. */ + public order: google.datastore.v1.IPropertyOrder[]; + + /** Query distinctOn. */ + public distinctOn: google.datastore.v1.IPropertyReference[]; + + /** Query startCursor. */ + public startCursor: Uint8Array; + + /** Query endCursor. */ + public endCursor: Uint8Array; + + /** Query offset. */ + public offset: number; + + /** Query limit. */ + public limit?: (google.protobuf.IInt32Value|null); + + /** + * Creates a new Query instance using the specified properties. + * @param [properties] Properties to set + * @returns Query instance + */ + public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Query message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; + + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; + + /** + * Verifies a Query message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Query + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @param message Query + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Query to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a KindExpression. */ + interface IKindExpression { + + /** KindExpression name */ + name?: (string|null); + } + + /** Represents a KindExpression. */ + class KindExpression implements IKindExpression { + + /** + * Constructs a new KindExpression. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKindExpression); + + /** KindExpression name. */ + public name: string; + + /** + * Creates a new KindExpression instance using the specified properties. + * @param [properties] Properties to set + * @returns KindExpression instance + */ + public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; + + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; + + /** + * Verifies a KindExpression message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns KindExpression + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; + + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @param message KindExpression + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this KindExpression to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyReference. */ + interface IPropertyReference { + + /** PropertyReference name */ + name?: (string|null); + } + + /** Represents a PropertyReference. */ + class PropertyReference implements IPropertyReference { + + /** + * Constructs a new PropertyReference. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyReference); + + /** PropertyReference name. */ + public name: string; + + /** + * Creates a new PropertyReference instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyReference instance + */ + public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; + + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; + + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; + + /** + * Verifies a PropertyReference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyReference + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; + + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @param message PropertyReference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyReference to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Projection. */ + interface IProjection { + + /** Projection property */ + property?: (google.datastore.v1.IPropertyReference|null); + } + + /** Represents a Projection. */ + class Projection implements IProjection { + + /** + * Constructs a new Projection. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IProjection); + + /** Projection property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** + * Creates a new Projection instance using the specified properties. + * @param [properties] Properties to set + * @returns Projection instance + */ + public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; + + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Projection message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; + + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; + + /** + * Verifies a Projection message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Projection + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; + + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @param message Projection + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Projection to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyOrder. */ + interface IPropertyOrder { + + /** PropertyOrder property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction */ + direction?: (google.datastore.v1.PropertyOrder.Direction|null); + } + + /** Represents a PropertyOrder. */ + class PropertyOrder implements IPropertyOrder { + + /** + * Constructs a new PropertyOrder. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyOrder); + + /** PropertyOrder property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction. */ + public direction: google.datastore.v1.PropertyOrder.Direction; + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyOrder instance + */ + public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; + + /** + * Verifies a PropertyOrder message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyOrder + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; + + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @param message PropertyOrder + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyOrder to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyOrder { + + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + } + + /** Properties of a Filter. */ + interface IFilter { + + /** Filter compositeFilter */ + compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter */ + propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + } + + /** Represents a Filter. */ + class Filter implements IFilter { + + /** + * Constructs a new Filter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IFilter); + + /** Filter compositeFilter. */ + public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter. */ + public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + + /** Filter filterType. */ + public filterType?: ("compositeFilter"|"propertyFilter"); + + /** + * Creates a new Filter instance using the specified properties. + * @param [properties] Properties to set + * @returns Filter instance + */ + public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; + + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Filter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; + + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; + + /** + * Verifies a Filter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Filter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; + + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @param message Filter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Filter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CompositeFilter. */ + interface ICompositeFilter { + + /** CompositeFilter op */ + op?: (google.datastore.v1.CompositeFilter.Operator|null); + + /** CompositeFilter filters */ + filters?: (google.datastore.v1.IFilter[]|null); + } + + /** Represents a CompositeFilter. */ + class CompositeFilter implements ICompositeFilter { + + /** + * Constructs a new CompositeFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICompositeFilter); + + /** CompositeFilter op. */ + public op: google.datastore.v1.CompositeFilter.Operator; + + /** CompositeFilter filters. */ + public filters: google.datastore.v1.IFilter[]; + + /** + * Creates a new CompositeFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns CompositeFilter instance + */ + public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; + + /** + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; + + /** + * Verifies a CompositeFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CompositeFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; + + /** + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @param message CompositeFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CompositeFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace CompositeFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + AND = 1 + } + } + + /** Properties of a PropertyFilter. */ + interface IPropertyFilter { + + /** PropertyFilter property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op */ + op?: (google.datastore.v1.PropertyFilter.Operator|null); + + /** PropertyFilter value */ + value?: (google.datastore.v1.IValue|null); + } + + /** Represents a PropertyFilter. */ + class PropertyFilter implements IPropertyFilter { + + /** + * Constructs a new PropertyFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyFilter); + + /** PropertyFilter property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op. */ + public op: google.datastore.v1.PropertyFilter.Operator; + + /** PropertyFilter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** + * Creates a new PropertyFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyFilter instance + */ + public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; + + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; + + /** + * Verifies a PropertyFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; + + /** + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @param message PropertyFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + LESS_THAN = 1, + LESS_THAN_OR_EQUAL = 2, + GREATER_THAN = 3, + GREATER_THAN_OR_EQUAL = 4, + EQUAL = 5, + HAS_ANCESTOR = 11 + } + } + + /** Properties of a GqlQuery. */ + interface IGqlQuery { + + /** GqlQuery queryString */ + queryString?: (string|null); + + /** GqlQuery allowLiterals */ + allowLiterals?: (boolean|null); + + /** GqlQuery namedBindings */ + namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + + /** GqlQuery positionalBindings */ + positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); + } + + /** Represents a GqlQuery. */ + class GqlQuery implements IGqlQuery { + + /** + * Constructs a new GqlQuery. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQuery); + + /** GqlQuery queryString. */ + public queryString: string; + + /** GqlQuery allowLiterals. */ + public allowLiterals: boolean; + + /** GqlQuery namedBindings. */ + public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; + + /** GqlQuery positionalBindings. */ + public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + + /** + * Creates a new GqlQuery instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQuery instance + */ + public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; + + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; + + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; + + /** + * Verifies a GqlQuery message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQuery + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; + + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @param message GqlQuery + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQuery to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a GqlQueryParameter. */ + interface IGqlQueryParameter { + + /** GqlQueryParameter value */ + value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor */ + cursor?: (Uint8Array|null); + } + + /** Represents a GqlQueryParameter. */ + class GqlQueryParameter implements IGqlQueryParameter { + + /** + * Constructs a new GqlQueryParameter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQueryParameter); + + /** GqlQueryParameter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor. */ + public cursor: Uint8Array; + + /** GqlQueryParameter parameterType. */ + public parameterType?: ("value"|"cursor"); + + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQueryParameter instance + */ + public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; + + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; + + /** + * Verifies a GqlQueryParameter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQueryParameter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @param message GqlQueryParameter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQueryParameter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a QueryResultBatch. */ + interface IQueryResultBatch { + + /** QueryResultBatch skippedResults */ + skippedResults?: (number|null); + + /** QueryResultBatch skippedCursor */ + skippedCursor?: (Uint8Array|null); + + /** QueryResultBatch entityResultType */ + entityResultType?: (google.datastore.v1.EntityResult.ResultType|null); + + /** QueryResultBatch entityResults */ + entityResults?: (google.datastore.v1.IEntityResult[]|null); + + /** QueryResultBatch endCursor */ + endCursor?: (Uint8Array|null); + + /** QueryResultBatch moreResults */ + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|null); + + /** QueryResultBatch snapshotVersion */ + snapshotVersion?: (number|Long|null); + } + + /** Represents a QueryResultBatch. */ + class QueryResultBatch implements IQueryResultBatch { + + /** + * Constructs a new QueryResultBatch. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQueryResultBatch); + + /** QueryResultBatch skippedResults. */ + public skippedResults: number; + + /** QueryResultBatch skippedCursor. */ + public skippedCursor: Uint8Array; + + /** QueryResultBatch entityResultType. */ + public entityResultType: google.datastore.v1.EntityResult.ResultType; + + /** QueryResultBatch entityResults. */ + public entityResults: google.datastore.v1.IEntityResult[]; + + /** QueryResultBatch endCursor. */ + public endCursor: Uint8Array; + + /** QueryResultBatch moreResults. */ + public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; + + /** QueryResultBatch snapshotVersion. */ + public snapshotVersion: (number|Long); + + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @param [properties] Properties to set + * @returns QueryResultBatch instance + */ + public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; + + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + + /** + * Verifies a QueryResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryResultBatch + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @param message QueryResultBatch + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this QueryResultBatch to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace QueryResultBatch { + + /** MoreResultsType enum. */ + enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 0, + NOT_FINISHED = 1, + MORE_RESULTS_AFTER_LIMIT = 2, + MORE_RESULTS_AFTER_CURSOR = 4, + NO_MORE_RESULTS = 3 + } + } + } + } + + /** Namespace api. */ + namespace api { + + /** Properties of a Http. */ + interface IHttp { + + /** Http rules */ + rules?: (google.api.IHttpRule[]|null); + + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: (boolean|null); + } + + /** Represents a Http. */ + class Http implements IHttp { + + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: { [k: string]: any }): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a HttpRule. */ + interface IHttpRule { + + /** HttpRule selector */ + selector?: (string|null); + + /** HttpRule get */ + get?: (string|null); + + /** HttpRule put */ + put?: (string|null); + + /** HttpRule post */ + post?: (string|null); + + /** HttpRule delete */ + "delete"?: (string|null); + + /** HttpRule patch */ + patch?: (string|null); + + /** HttpRule custom */ + custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body */ + body?: (string|null); + + /** HttpRule responseBody */ + responseBody?: (string|null); + + /** HttpRule additionalBindings */ + additionalBindings?: (google.api.IHttpRule[]|null); + } + + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create(properties?: google.api.IHttpRule): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: { [k: string]: any }): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + + /** CustomHttpPattern kind */ + kind?: (string|null); + + /** CustomHttpPattern path */ + path?: (string|null); + } + + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace protobuf. */ + namespace protobuf { + + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + + /** FileDescriptorSet file */ + file?: (google.protobuf.IFileDescriptorProto[]|null); + } + + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + + /** FileDescriptorProto name */ + name?: (string|null); + + /** FileDescriptorProto package */ + "package"?: (string|null); + + /** FileDescriptorProto dependency */ + dependency?: (string[]|null); + + /** FileDescriptorProto publicDependency */ + publicDependency?: (number[]|null); + + /** FileDescriptorProto weakDependency */ + weakDependency?: (number[]|null); + + /** FileDescriptorProto messageType */ + messageType?: (google.protobuf.IDescriptorProto[]|null); + + /** FileDescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** FileDescriptorProto service */ + service?: (google.protobuf.IServiceDescriptorProto[]|null); + + /** FileDescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** FileDescriptorProto options */ + options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax */ + syntax?: (string|null); + } + + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + + /** DescriptorProto name */ + name?: (string|null); + + /** DescriptorProto field */ + field?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto nestedType */ + nestedType?: (google.protobuf.IDescriptorProto[]|null); + + /** DescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** DescriptorProto extensionRange */ + extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + + /** DescriptorProto oneofDecl */ + oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + + /** DescriptorProto options */ + options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange */ + reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + + /** DescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DescriptorProto { + + /** Properties of an ExtensionRange. */ + interface IExtensionRange { + + /** ExtensionRange start */ + start?: (number|null); + + /** ExtensionRange end */ + end?: (number|null); + + /** ExtensionRange options */ + options?: (google.protobuf.IExtensionRangeOptions|null); + } + + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { + + /** + * Constructs a new ExtensionRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); + + /** ExtensionRange start. */ + public start: number; + + /** ExtensionRange end. */ + public end: number; + + /** ExtensionRange options. */ + public options?: (google.protobuf.IExtensionRangeOptions|null); + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReservedRange. */ + interface IReservedRange { + + /** ReservedRange start */ + start?: (number|null); + + /** ReservedRange end */ + end?: (number|null); + } + + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { + + /** + * Constructs a new ReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); + + /** ReservedRange start. */ + public start: number; + + /** ReservedRange end. */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ReservedRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { + + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { + + /** + * Constructs a new ExtensionRangeOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IExtensionRangeOptions); + + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRangeOptions instance + */ + public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; + + /** + * Verifies an ExtensionRangeOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRangeOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { + + /** FieldDescriptorProto name */ + name?: (string|null); + + /** FieldDescriptorProto number */ + number?: (number|null); + + /** FieldDescriptorProto label */ + label?: (google.protobuf.FieldDescriptorProto.Label|null); + + /** FieldDescriptorProto type */ + type?: (google.protobuf.FieldDescriptorProto.Type|null); + + /** FieldDescriptorProto typeName */ + typeName?: (string|null); + + /** FieldDescriptorProto extendee */ + extendee?: (string|null); + + /** FieldDescriptorProto defaultValue */ + defaultValue?: (string|null); + + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: (number|null); + + /** FieldDescriptorProto jsonName */ + jsonName?: (string|null); + + /** FieldDescriptorProto options */ + options?: (google.protobuf.IFieldOptions|null); + } + + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { + + /** + * Constructs a new FieldDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldDescriptorProto); + + /** FieldDescriptorProto name. */ + public name: string; + + /** FieldDescriptorProto number. */ + public number: number; + + /** FieldDescriptorProto label. */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** FieldDescriptorProto type. */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: (google.protobuf.IFieldOptions|null); + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } + } + + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { + + /** OneofDescriptorProto name */ + name?: (string|null); + + /** OneofDescriptorProto options */ + options?: (google.protobuf.IOneofOptions|null); + } + + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { + + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); + + /** OneofDescriptorProto name. */ + public name: string; + + /** OneofDescriptorProto options. */ + public options?: (google.protobuf.IOneofOptions|null); + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofDescriptorProto instance + */ + public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { + + /** EnumDescriptorProto name */ + name?: (string|null); + + /** EnumDescriptorProto value */ + value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + + /** EnumDescriptorProto options */ + options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange */ + reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + + /** EnumDescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { + + /** + * Constructs a new EnumDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumDescriptorProto); + + /** EnumDescriptorProto name. */ + public name: string; + + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EnumDescriptorProto { + + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + + /** EnumReservedRange start */ + start?: (number|null); + + /** EnumReservedRange end */ + end?: (number|null); + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { + + /** EnumValueDescriptorProto name */ + name?: (string|null); + + /** EnumValueDescriptorProto number */ + number?: (number|null); + + /** EnumValueDescriptorProto options */ + options?: (google.protobuf.IEnumValueOptions|null); + } + + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + + /** + * Constructs a new EnumValueDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); + + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: (google.protobuf.IEnumValueOptions|null); + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { + + /** ServiceDescriptorProto name */ + name?: (string|null); + + /** ServiceDescriptorProto method */ + method?: (google.protobuf.IMethodDescriptorProto[]|null); + + /** ServiceDescriptorProto options */ + options?: (google.protobuf.IServiceOptions|null); + } + + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { + + /** + * Constructs a new ServiceDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceDescriptorProto); + + /** ServiceDescriptorProto name. */ + public name: string; + + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; + + /** ServiceDescriptorProto options. */ + public options?: (google.protobuf.IServiceOptions|null); + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceDescriptorProto instance + */ + public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { + + /** MethodDescriptorProto name */ + name?: (string|null); + + /** MethodDescriptorProto inputType */ + inputType?: (string|null); + + /** MethodDescriptorProto outputType */ + outputType?: (string|null); + + /** MethodDescriptorProto options */ + options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: (boolean|null); + + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: (boolean|null); + } + + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { + + /** + * Constructs a new MethodDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodDescriptorProto); + + /** MethodDescriptorProto name. */ + public name: string; + + /** MethodDescriptorProto inputType. */ + public inputType: string; + + /** MethodDescriptorProto outputType. */ + public outputType: string; + + /** MethodDescriptorProto options. */ + public options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; + + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodDescriptorProto instance + */ + public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileOptions. */ + interface IFileOptions { + + /** FileOptions javaPackage */ + javaPackage?: (string|null); + + /** FileOptions javaOuterClassname */ + javaOuterClassname?: (string|null); + + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: (boolean|null); + + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: (boolean|null); + + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: (boolean|null); + + /** FileOptions optimizeFor */ + optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + + /** FileOptions goPackage */ + goPackage?: (string|null); + + /** FileOptions ccGenericServices */ + ccGenericServices?: (boolean|null); + + /** FileOptions javaGenericServices */ + javaGenericServices?: (boolean|null); + + /** FileOptions pyGenericServices */ + pyGenericServices?: (boolean|null); + + /** FileOptions phpGenericServices */ + phpGenericServices?: (boolean|null); + + /** FileOptions deprecated */ + deprecated?: (boolean|null); + + /** FileOptions ccEnableArenas */ + ccEnableArenas?: (boolean|null); + + /** FileOptions objcClassPrefix */ + objcClassPrefix?: (string|null); + + /** FileOptions csharpNamespace */ + csharpNamespace?: (string|null); + + /** FileOptions swiftPrefix */ + swiftPrefix?: (string|null); + + /** FileOptions phpClassPrefix */ + phpClassPrefix?: (string|null); + + /** FileOptions phpNamespace */ + phpNamespace?: (string|null); + + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: (string|null); + + /** FileOptions rubyPackage */ + rubyPackage?: (string|null); + + /** FileOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; + + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; + + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; + + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; + + /** FileOptions deprecated. */ + public deprecated: boolean; + + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; + + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; + + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; + + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; + + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; + + /** FileOptions phpNamespace. */ + public phpNamespace: string; + + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; + + /** FileOptions rubyPackage. */ + public rubyPackage: string; + + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FileOptions { + + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } + } + + /** Properties of a MessageOptions. */ + interface IMessageOptions { + + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: (boolean|null); + + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: (boolean|null); + + /** MessageOptions deprecated */ + deprecated?: (boolean|null); + + /** MessageOptions mapEntry */ + mapEntry?: (boolean|null); + + /** MessageOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { + + /** + * Constructs a new MessageOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMessageOptions); + + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageOptions instance + */ + public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldOptions. */ + interface IFieldOptions { + + /** FieldOptions ctype */ + ctype?: (google.protobuf.FieldOptions.CType|null); + + /** FieldOptions packed */ + packed?: (boolean|null); + + /** FieldOptions jstype */ + jstype?: (google.protobuf.FieldOptions.JSType|null); + + /** FieldOptions lazy */ + lazy?: (boolean|null); + + /** FieldOptions deprecated */ + deprecated?: (boolean|null); + + /** FieldOptions weak */ + weak?: (boolean|null); + + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { + + /** + * Constructs a new FieldOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldOptions); + + /** FieldOptions ctype. */ + public ctype: google.protobuf.FieldOptions.CType; + + /** FieldOptions packed. */ + public packed: boolean; + + /** FieldOptions jstype. */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** FieldOptions lazy. */ + public lazy: boolean; + + /** FieldOptions deprecated. */ + public deprecated: boolean; + + /** FieldOptions weak. */ + public weak: boolean; + + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldOptions instance + */ + public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldOptions { + + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } + } + + /** Properties of an OneofOptions. */ + interface IOneofOptions { + + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { + + /** + * Constructs a new OneofOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofOptions); + + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofOptions instance + */ + public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumOptions. */ + interface IEnumOptions { + + /** EnumOptions allowAlias */ + allowAlias?: (boolean|null); + + /** EnumOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { + + /** + * Constructs a new EnumOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumOptions); + + /** EnumOptions allowAlias. */ + public allowAlias: boolean; + + /** EnumOptions deprecated. */ + public deprecated: boolean; + + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumOptions instance + */ + public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { + + /** EnumValueOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { + + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); + + /** EnumValueOptions deprecated. */ + public deprecated: boolean; + + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceOptions. */ + interface IServiceOptions { + + /** ServiceOptions deprecated */ + deprecated?: (boolean|null); + + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { + + /** + * Constructs a new ServiceOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceOptions); + + /** ServiceOptions deprecated. */ + public deprecated: boolean; + + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceOptions instance + */ + public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodOptions. */ + interface IMethodOptions { + + /** MethodOptions deprecated */ + deprecated?: (boolean|null); + + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** MethodOptions .google.api.http */ + ".google.api.http"?: (google.api.IHttpRule|null); + } + + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { + + /** + * Constructs a new MethodOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodOptions); + + /** MethodOptions deprecated. */ + public deprecated: boolean; + + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodOptions instance + */ + public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MethodOptions { + + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } + } + + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { + + /** UninterpretedOption name */ + name?: (google.protobuf.UninterpretedOption.INamePart[]|null); + + /** UninterpretedOption identifierValue */ + identifierValue?: (string|null); + + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: (number|Long|null); + + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: (number|Long|null); + + /** UninterpretedOption doubleValue */ + doubleValue?: (number|null); + + /** UninterpretedOption stringValue */ + stringValue?: (Uint8Array|null); + + /** UninterpretedOption aggregateValue */ + aggregateValue?: (string|null); + } + + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { + + /** + * Constructs a new UninterpretedOption. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; + + /** UninterpretedOption identifierValue. */ + public identifierValue: string; + + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: (number|Long); + + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: (number|Long); + + /** UninterpretedOption doubleValue. */ + public doubleValue: number; + + /** UninterpretedOption stringValue. */ + public stringValue: Uint8Array; + + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param [properties] Properties to set + * @returns UninterpretedOption instance + */ + public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UninterpretedOption + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UninterpretedOption to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace UninterpretedOption { + + /** Properties of a NamePart. */ + interface INamePart { + + /** NamePart namePart */ + namePart: string; + + /** NamePart isExtension */ + isExtension: boolean; + } + + /** Represents a NamePart. */ + class NamePart implements INamePart { + + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); + + /** NamePart namePart. */ + public namePart: string; + + /** NamePart isExtension. */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { + + /** SourceCodeInfo location */ + location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); + } + + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { + + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); + + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns SourceCodeInfo instance + */ + public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SourceCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SourceCodeInfo { + + /** Properties of a Location. */ + interface ILocation { + + /** Location path */ + path?: (number[]|null); + + /** Location span */ + span?: (number[]|null); + + /** Location leadingComments */ + leadingComments?: (string|null); + + /** Location trailingComments */ + trailingComments?: (string|null); + + /** Location leadingDetachedComments */ + leadingDetachedComments?: (string[]|null); + } + + /** Represents a Location. */ + class Location implements ILocation { + + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + + /** Location path. */ + public path: number[]; + + /** Location span. */ + public span: number[]; + + /** Location leadingComments. */ + public leadingComments: string; + + /** Location trailingComments. */ + public trailingComments: string; + + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + + /** GeneratedCodeInfo annotation */ + annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); + } + + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { + + /** + * Constructs a new GeneratedCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GeneratedCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GeneratedCodeInfo { + + /** Properties of an Annotation. */ + interface IAnnotation { + + /** Annotation path */ + path?: (number[]|null); + + /** Annotation sourceFile */ + sourceFile?: (string|null); + + /** Annotation begin */ + begin?: (number|null); + + /** Annotation end */ + end?: (number|null); + } + + /** Represents an Annotation. */ + class Annotation implements IAnnotation { + + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); + + /** Annotation path. */ + public path: number[]; + + /** Annotation sourceFile. */ + public sourceFile: string; + + /** Annotation begin. */ + public begin: number; + + /** Annotation end. */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a Struct. */ + interface IStruct { + + /** Struct fields */ + fields?: ({ [k: string]: google.protobuf.IValue }|null); + } + + /** Represents a Struct. */ + class Struct implements IStruct { + + /** + * Constructs a new Struct. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStruct); + + /** Struct fields. */ + public fields: { [k: string]: google.protobuf.IValue }; + + /** + * Creates a new Struct instance using the specified properties. + * @param [properties] Properties to set + * @returns Struct instance + */ + public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; + + /** + * Verifies a Struct message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Struct + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Struct to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value numberValue */ + numberValue?: (number|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value boolValue */ + boolValue?: (boolean|null); + + /** Value structValue */ + structValue?: (google.protobuf.IStruct|null); + + /** Value listValue */ + listValue?: (google.protobuf.IListValue|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value numberValue. */ + public numberValue: number; + + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: (google.protobuf.IStruct|null); + + /** Value listValue. */ + public listValue?: (google.protobuf.IListValue|null); + + /** Value kind. */ + public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.protobuf.IValue): google.protobuf.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0 + } + + /** Properties of a ListValue. */ + interface IListValue { + + /** ListValue values */ + values?: (google.protobuf.IValue[]|null); + } + + /** Represents a ListValue. */ + class ListValue implements IListValue { + + /** + * Constructs a new ListValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IListValue); + + /** ListValue values. */ + public values: google.protobuf.IValue[]; + + /** + * Creates a new ListValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ListValue instance + */ + public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; + + /** + * Verifies a ListValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Timestamp. */ + interface ITimestamp { + + /** Timestamp seconds */ + seconds?: (number|Long|null); + + /** Timestamp nanos */ + nanos?: (number|null); + } + + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { + + /** + * Constructs a new Timestamp. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ITimestamp); + + /** Timestamp seconds. */ + public seconds: (number|Long); + + /** Timestamp nanos. */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param [properties] Properties to set + * @returns Timestamp instance + */ + public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Timestamp + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Timestamp to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DoubleValue. */ + interface IDoubleValue { + + /** DoubleValue value */ + value?: (number|null); + } + + /** Represents a DoubleValue. */ + class DoubleValue implements IDoubleValue { + + /** + * Constructs a new DoubleValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDoubleValue); + + /** DoubleValue value. */ + public value: number; + + /** + * Creates a new DoubleValue instance using the specified properties. + * @param [properties] Properties to set + * @returns DoubleValue instance + */ + public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue; + + /** + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DoubleValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue; + + /** + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue; + + /** + * Verifies a DoubleValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DoubleValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue; + + /** + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @param message DoubleValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DoubleValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FloatValue. */ + interface IFloatValue { + + /** FloatValue value */ + value?: (number|null); + } + + /** Represents a FloatValue. */ + class FloatValue implements IFloatValue { + + /** + * Constructs a new FloatValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFloatValue); + + /** FloatValue value. */ + public value: number; + + /** + * Creates a new FloatValue instance using the specified properties. + * @param [properties] Properties to set + * @returns FloatValue instance + */ + public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue; + + /** + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FloatValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue; + + /** + * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue; + + /** + * Verifies a FloatValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FloatValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue; + + /** + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * @param message FloatValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FloatValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Int64Value. */ + interface IInt64Value { + + /** Int64Value value */ + value?: (number|Long|null); + } + + /** Represents an Int64Value. */ + class Int64Value implements IInt64Value { + + /** + * Constructs a new Int64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt64Value); + + /** Int64Value value. */ + public value: (number|Long); + + /** + * Creates a new Int64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int64Value instance + */ + public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value; + + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value; + + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value; + + /** + * Verifies an Int64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int64Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value; + + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @param message Int64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int64Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a UInt64Value. */ + interface IUInt64Value { + + /** UInt64Value value */ + value?: (number|Long|null); + } + + /** Represents a UInt64Value. */ + class UInt64Value implements IUInt64Value { + + /** + * Constructs a new UInt64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt64Value); + + /** UInt64Value value. */ + public value: (number|Long); + + /** + * Creates a new UInt64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt64Value instance + */ + public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value; + + /** + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a UInt64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value; + + /** + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value; + + /** + * Verifies a UInt64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt64Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value; + + /** + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * @param message UInt64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UInt64Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Int32Value. */ + interface IInt32Value { + + /** Int32Value value */ + value?: (number|null); + } + + /** Represents an Int32Value. */ + class Int32Value implements IInt32Value { + + /** + * Constructs a new Int32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt32Value); + + /** Int32Value value. */ + public value: number; + + /** + * Creates a new Int32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int32Value instance + */ + public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value; + + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value; + + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value; + + /** + * Verifies an Int32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int32Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value; + + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @param message Int32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int32Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a UInt32Value. */ + interface IUInt32Value { + + /** UInt32Value value */ + value?: (number|null); + } + + /** Represents a UInt32Value. */ + class UInt32Value implements IUInt32Value { + + /** + * Constructs a new UInt32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt32Value); + + /** UInt32Value value. */ + public value: number; + + /** + * Creates a new UInt32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt32Value instance + */ + public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value; + + /** + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a UInt32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value; + + /** + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value; + + /** + * Verifies a UInt32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt32Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value; + + /** + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * @param message UInt32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UInt32Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BoolValue. */ + interface IBoolValue { + + /** BoolValue value */ + value?: (boolean|null); + } + + /** Represents a BoolValue. */ + class BoolValue implements IBoolValue { + + /** + * Constructs a new BoolValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBoolValue); + + /** BoolValue value. */ + public value: boolean; + + /** + * Creates a new BoolValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BoolValue instance + */ + public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue; + + /** + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BoolValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue; + + /** + * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue; + + /** + * Verifies a BoolValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BoolValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue; + + /** + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @param message BoolValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BoolValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a StringValue. */ + interface IStringValue { + + /** StringValue value */ + value?: (string|null); + } + + /** Represents a StringValue. */ + class StringValue implements IStringValue { + + /** + * Constructs a new StringValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStringValue); + + /** StringValue value. */ + public value: string; + + /** + * Creates a new StringValue instance using the specified properties. + * @param [properties] Properties to set + * @returns StringValue instance + */ + public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue; + + /** + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a StringValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue; + + /** + * Decodes a StringValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue; + + /** + * Verifies a StringValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns StringValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue; + + /** + * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * @param message StringValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this StringValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BytesValue. */ + interface IBytesValue { + + /** BytesValue value */ + value?: (Uint8Array|null); + } + + /** Represents a BytesValue. */ + class BytesValue implements IBytesValue { + + /** + * Constructs a new BytesValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBytesValue); + + /** BytesValue value. */ + public value: Uint8Array; + + /** + * Creates a new BytesValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BytesValue instance + */ + public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue; + + /** + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BytesValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue; + + /** + * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue; + + /** + * Verifies a BytesValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BytesValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue; + + /** + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * @param message BytesValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BytesValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace type. */ + namespace type { + + /** Properties of a LatLng. */ + interface ILatLng { + + /** LatLng latitude */ + latitude?: (number|null); + + /** LatLng longitude */ + longitude?: (number|null); + } + + /** Represents a LatLng. */ + class LatLng implements ILatLng { + + /** + * Constructs a new LatLng. + * @param [properties] Properties to set + */ + constructor(properties?: google.type.ILatLng); + + /** LatLng latitude. */ + public latitude: number; + + /** LatLng longitude. */ + public longitude: number; + + /** + * Creates a new LatLng instance using the specified properties. + * @param [properties] Properties to set + * @returns LatLng instance + */ + public static create(properties?: google.type.ILatLng): google.type.LatLng; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.LatLng; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.LatLng; + + /** + * Verifies a LatLng message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LatLng + */ + public static fromObject(object: { [k: string]: any }): google.type.LatLng; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @param message LatLng + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.type.LatLng, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LatLng to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } +} diff --git a/handwritten/nodejs-datastore/proto/entity.d.ts b/handwritten/nodejs-datastore/proto/entity.d.ts new file mode 100644 index 00000000000..752fdc28371 --- /dev/null +++ b/handwritten/nodejs-datastore/proto/entity.d.ts @@ -0,0 +1,4613 @@ +import * as $protobuf from "protobufjs"; +/** Namespace google. */ +export namespace google { + + /** Namespace datastore. */ + namespace datastore { + + /** Namespace v1. */ + namespace v1 { + + /** Properties of a PartitionId. */ + interface IPartitionId { + + /** PartitionId projectId */ + projectId?: (string|null); + + /** PartitionId namespaceId */ + namespaceId?: (string|null); + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Key. */ + interface IKey { + + /** Key partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path */ + path?: (google.datastore.v1.Key.IPathElement[]|null); + } + + /** Represents a Key. */ + class Key implements IKey { + + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Key { + + /** Properties of a PathElement. */ + interface IPathElement { + + /** PathElement kind */ + kind?: (string|null); + + /** PathElement id */ + id?: (number|Long|null); + + /** PathElement name */ + name?: (string|null); + } + + /** Represents a PathElement. */ + class PathElement implements IPathElement { + + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: (number|Long); + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: ("id"|"name"); + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + + /** ArrayValue values */ + values?: (google.datastore.v1.IValue[]|null); + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value booleanValue */ + booleanValue?: (boolean|null); + + /** Value integerValue */ + integerValue?: (number|Long|null); + + /** Value doubleValue */ + doubleValue?: (number|null); + + /** Value timestampValue */ + timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue */ + keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value blobValue */ + blobValue?: (Uint8Array|null); + + /** Value geoPointValue */ + geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue */ + entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue */ + arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning */ + meaning?: (number|null); + + /** Value excludeFromIndexes */ + excludeFromIndexes?: (boolean|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: (number|Long); + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue. */ + public keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: Uint8Array; + + /** Value geoPointValue. */ + public geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue. */ + public entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue. */ + public arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Entity. */ + interface IEntity { + + /** Entity key */ + key?: (google.datastore.v1.IKey|null); + + /** Entity properties */ + properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + } + + /** Represents an Entity. */ + class Entity implements IEntity { + + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: (google.datastore.v1.IKey|null); + + /** Entity properties. */ + public properties: { [k: string]: google.datastore.v1.IValue }; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** Namespace api. */ + namespace api { + + /** Properties of a Http. */ + interface IHttp { + + /** Http rules */ + rules?: (google.api.IHttpRule[]|null); + + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: (boolean|null); + } + + /** Represents a Http. */ + class Http implements IHttp { + + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: { [k: string]: any }): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a HttpRule. */ + interface IHttpRule { + + /** HttpRule selector */ + selector?: (string|null); + + /** HttpRule get */ + get?: (string|null); + + /** HttpRule put */ + put?: (string|null); + + /** HttpRule post */ + post?: (string|null); + + /** HttpRule delete */ + "delete"?: (string|null); + + /** HttpRule patch */ + patch?: (string|null); + + /** HttpRule custom */ + custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body */ + body?: (string|null); + + /** HttpRule responseBody */ + responseBody?: (string|null); + + /** HttpRule additionalBindings */ + additionalBindings?: (google.api.IHttpRule[]|null); + } + + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create(properties?: google.api.IHttpRule): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: { [k: string]: any }): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + + /** CustomHttpPattern kind */ + kind?: (string|null); + + /** CustomHttpPattern path */ + path?: (string|null); + } + + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace protobuf. */ + namespace protobuf { + + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + + /** FileDescriptorSet file */ + file?: (google.protobuf.IFileDescriptorProto[]|null); + } + + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + + /** FileDescriptorProto name */ + name?: (string|null); + + /** FileDescriptorProto package */ + "package"?: (string|null); + + /** FileDescriptorProto dependency */ + dependency?: (string[]|null); + + /** FileDescriptorProto publicDependency */ + publicDependency?: (number[]|null); + + /** FileDescriptorProto weakDependency */ + weakDependency?: (number[]|null); + + /** FileDescriptorProto messageType */ + messageType?: (google.protobuf.IDescriptorProto[]|null); + + /** FileDescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** FileDescriptorProto service */ + service?: (google.protobuf.IServiceDescriptorProto[]|null); + + /** FileDescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** FileDescriptorProto options */ + options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax */ + syntax?: (string|null); + } + + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + + /** DescriptorProto name */ + name?: (string|null); + + /** DescriptorProto field */ + field?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto nestedType */ + nestedType?: (google.protobuf.IDescriptorProto[]|null); + + /** DescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** DescriptorProto extensionRange */ + extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + + /** DescriptorProto oneofDecl */ + oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + + /** DescriptorProto options */ + options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange */ + reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + + /** DescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DescriptorProto { + + /** Properties of an ExtensionRange. */ + interface IExtensionRange { + + /** ExtensionRange start */ + start?: (number|null); + + /** ExtensionRange end */ + end?: (number|null); + + /** ExtensionRange options */ + options?: (google.protobuf.IExtensionRangeOptions|null); + } + + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { + + /** + * Constructs a new ExtensionRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); + + /** ExtensionRange start. */ + public start: number; + + /** ExtensionRange end. */ + public end: number; + + /** ExtensionRange options. */ + public options?: (google.protobuf.IExtensionRangeOptions|null); + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReservedRange. */ + interface IReservedRange { + + /** ReservedRange start */ + start?: (number|null); + + /** ReservedRange end */ + end?: (number|null); + } + + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { + + /** + * Constructs a new ReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); + + /** ReservedRange start. */ + public start: number; + + /** ReservedRange end. */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ReservedRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { + + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { + + /** + * Constructs a new ExtensionRangeOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IExtensionRangeOptions); + + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRangeOptions instance + */ + public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; + + /** + * Verifies an ExtensionRangeOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRangeOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { + + /** FieldDescriptorProto name */ + name?: (string|null); + + /** FieldDescriptorProto number */ + number?: (number|null); + + /** FieldDescriptorProto label */ + label?: (google.protobuf.FieldDescriptorProto.Label|null); + + /** FieldDescriptorProto type */ + type?: (google.protobuf.FieldDescriptorProto.Type|null); + + /** FieldDescriptorProto typeName */ + typeName?: (string|null); + + /** FieldDescriptorProto extendee */ + extendee?: (string|null); + + /** FieldDescriptorProto defaultValue */ + defaultValue?: (string|null); + + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: (number|null); + + /** FieldDescriptorProto jsonName */ + jsonName?: (string|null); + + /** FieldDescriptorProto options */ + options?: (google.protobuf.IFieldOptions|null); + } + + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { + + /** + * Constructs a new FieldDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldDescriptorProto); + + /** FieldDescriptorProto name. */ + public name: string; + + /** FieldDescriptorProto number. */ + public number: number; + + /** FieldDescriptorProto label. */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** FieldDescriptorProto type. */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: (google.protobuf.IFieldOptions|null); + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } + } + + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { + + /** OneofDescriptorProto name */ + name?: (string|null); + + /** OneofDescriptorProto options */ + options?: (google.protobuf.IOneofOptions|null); + } + + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { + + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); + + /** OneofDescriptorProto name. */ + public name: string; + + /** OneofDescriptorProto options. */ + public options?: (google.protobuf.IOneofOptions|null); + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofDescriptorProto instance + */ + public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { + + /** EnumDescriptorProto name */ + name?: (string|null); + + /** EnumDescriptorProto value */ + value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + + /** EnumDescriptorProto options */ + options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange */ + reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + + /** EnumDescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { + + /** + * Constructs a new EnumDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumDescriptorProto); + + /** EnumDescriptorProto name. */ + public name: string; + + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EnumDescriptorProto { + + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + + /** EnumReservedRange start */ + start?: (number|null); + + /** EnumReservedRange end */ + end?: (number|null); + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { + + /** EnumValueDescriptorProto name */ + name?: (string|null); + + /** EnumValueDescriptorProto number */ + number?: (number|null); + + /** EnumValueDescriptorProto options */ + options?: (google.protobuf.IEnumValueOptions|null); + } + + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + + /** + * Constructs a new EnumValueDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); + + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: (google.protobuf.IEnumValueOptions|null); + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { + + /** ServiceDescriptorProto name */ + name?: (string|null); + + /** ServiceDescriptorProto method */ + method?: (google.protobuf.IMethodDescriptorProto[]|null); + + /** ServiceDescriptorProto options */ + options?: (google.protobuf.IServiceOptions|null); + } + + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { + + /** + * Constructs a new ServiceDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceDescriptorProto); + + /** ServiceDescriptorProto name. */ + public name: string; + + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; + + /** ServiceDescriptorProto options. */ + public options?: (google.protobuf.IServiceOptions|null); + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceDescriptorProto instance + */ + public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { + + /** MethodDescriptorProto name */ + name?: (string|null); + + /** MethodDescriptorProto inputType */ + inputType?: (string|null); + + /** MethodDescriptorProto outputType */ + outputType?: (string|null); + + /** MethodDescriptorProto options */ + options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: (boolean|null); + + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: (boolean|null); + } + + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { + + /** + * Constructs a new MethodDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodDescriptorProto); + + /** MethodDescriptorProto name. */ + public name: string; + + /** MethodDescriptorProto inputType. */ + public inputType: string; + + /** MethodDescriptorProto outputType. */ + public outputType: string; + + /** MethodDescriptorProto options. */ + public options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; + + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodDescriptorProto instance + */ + public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileOptions. */ + interface IFileOptions { + + /** FileOptions javaPackage */ + javaPackage?: (string|null); + + /** FileOptions javaOuterClassname */ + javaOuterClassname?: (string|null); + + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: (boolean|null); + + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: (boolean|null); + + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: (boolean|null); + + /** FileOptions optimizeFor */ + optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + + /** FileOptions goPackage */ + goPackage?: (string|null); + + /** FileOptions ccGenericServices */ + ccGenericServices?: (boolean|null); + + /** FileOptions javaGenericServices */ + javaGenericServices?: (boolean|null); + + /** FileOptions pyGenericServices */ + pyGenericServices?: (boolean|null); + + /** FileOptions phpGenericServices */ + phpGenericServices?: (boolean|null); + + /** FileOptions deprecated */ + deprecated?: (boolean|null); + + /** FileOptions ccEnableArenas */ + ccEnableArenas?: (boolean|null); + + /** FileOptions objcClassPrefix */ + objcClassPrefix?: (string|null); + + /** FileOptions csharpNamespace */ + csharpNamespace?: (string|null); + + /** FileOptions swiftPrefix */ + swiftPrefix?: (string|null); + + /** FileOptions phpClassPrefix */ + phpClassPrefix?: (string|null); + + /** FileOptions phpNamespace */ + phpNamespace?: (string|null); + + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: (string|null); + + /** FileOptions rubyPackage */ + rubyPackage?: (string|null); + + /** FileOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; + + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; + + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; + + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; + + /** FileOptions deprecated. */ + public deprecated: boolean; + + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; + + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; + + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; + + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; + + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; + + /** FileOptions phpNamespace. */ + public phpNamespace: string; + + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; + + /** FileOptions rubyPackage. */ + public rubyPackage: string; + + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FileOptions { + + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } + } + + /** Properties of a MessageOptions. */ + interface IMessageOptions { + + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: (boolean|null); + + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: (boolean|null); + + /** MessageOptions deprecated */ + deprecated?: (boolean|null); + + /** MessageOptions mapEntry */ + mapEntry?: (boolean|null); + + /** MessageOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { + + /** + * Constructs a new MessageOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMessageOptions); + + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageOptions instance + */ + public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldOptions. */ + interface IFieldOptions { + + /** FieldOptions ctype */ + ctype?: (google.protobuf.FieldOptions.CType|null); + + /** FieldOptions packed */ + packed?: (boolean|null); + + /** FieldOptions jstype */ + jstype?: (google.protobuf.FieldOptions.JSType|null); + + /** FieldOptions lazy */ + lazy?: (boolean|null); + + /** FieldOptions deprecated */ + deprecated?: (boolean|null); + + /** FieldOptions weak */ + weak?: (boolean|null); + + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { + + /** + * Constructs a new FieldOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldOptions); + + /** FieldOptions ctype. */ + public ctype: google.protobuf.FieldOptions.CType; + + /** FieldOptions packed. */ + public packed: boolean; + + /** FieldOptions jstype. */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** FieldOptions lazy. */ + public lazy: boolean; + + /** FieldOptions deprecated. */ + public deprecated: boolean; + + /** FieldOptions weak. */ + public weak: boolean; + + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldOptions instance + */ + public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldOptions { + + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } + } + + /** Properties of an OneofOptions. */ + interface IOneofOptions { + + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { + + /** + * Constructs a new OneofOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofOptions); + + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofOptions instance + */ + public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumOptions. */ + interface IEnumOptions { + + /** EnumOptions allowAlias */ + allowAlias?: (boolean|null); + + /** EnumOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { + + /** + * Constructs a new EnumOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumOptions); + + /** EnumOptions allowAlias. */ + public allowAlias: boolean; + + /** EnumOptions deprecated. */ + public deprecated: boolean; + + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumOptions instance + */ + public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { + + /** EnumValueOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { + + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); + + /** EnumValueOptions deprecated. */ + public deprecated: boolean; + + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceOptions. */ + interface IServiceOptions { + + /** ServiceOptions deprecated */ + deprecated?: (boolean|null); + + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { + + /** + * Constructs a new ServiceOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceOptions); + + /** ServiceOptions deprecated. */ + public deprecated: boolean; + + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceOptions instance + */ + public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodOptions. */ + interface IMethodOptions { + + /** MethodOptions deprecated */ + deprecated?: (boolean|null); + + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** MethodOptions .google.api.http */ + ".google.api.http"?: (google.api.IHttpRule|null); + } + + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { + + /** + * Constructs a new MethodOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodOptions); + + /** MethodOptions deprecated. */ + public deprecated: boolean; + + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodOptions instance + */ + public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MethodOptions { + + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } + } + + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { + + /** UninterpretedOption name */ + name?: (google.protobuf.UninterpretedOption.INamePart[]|null); + + /** UninterpretedOption identifierValue */ + identifierValue?: (string|null); + + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: (number|Long|null); + + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: (number|Long|null); + + /** UninterpretedOption doubleValue */ + doubleValue?: (number|null); + + /** UninterpretedOption stringValue */ + stringValue?: (Uint8Array|null); + + /** UninterpretedOption aggregateValue */ + aggregateValue?: (string|null); + } + + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { + + /** + * Constructs a new UninterpretedOption. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; + + /** UninterpretedOption identifierValue. */ + public identifierValue: string; + + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: (number|Long); + + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: (number|Long); + + /** UninterpretedOption doubleValue. */ + public doubleValue: number; + + /** UninterpretedOption stringValue. */ + public stringValue: Uint8Array; + + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param [properties] Properties to set + * @returns UninterpretedOption instance + */ + public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UninterpretedOption + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UninterpretedOption to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace UninterpretedOption { + + /** Properties of a NamePart. */ + interface INamePart { + + /** NamePart namePart */ + namePart: string; + + /** NamePart isExtension */ + isExtension: boolean; + } + + /** Represents a NamePart. */ + class NamePart implements INamePart { + + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); + + /** NamePart namePart. */ + public namePart: string; + + /** NamePart isExtension. */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { + + /** SourceCodeInfo location */ + location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); + } + + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { + + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); + + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns SourceCodeInfo instance + */ + public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SourceCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SourceCodeInfo { + + /** Properties of a Location. */ + interface ILocation { + + /** Location path */ + path?: (number[]|null); + + /** Location span */ + span?: (number[]|null); + + /** Location leadingComments */ + leadingComments?: (string|null); + + /** Location trailingComments */ + trailingComments?: (string|null); + + /** Location leadingDetachedComments */ + leadingDetachedComments?: (string[]|null); + } + + /** Represents a Location. */ + class Location implements ILocation { + + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + + /** Location path. */ + public path: number[]; + + /** Location span. */ + public span: number[]; + + /** Location leadingComments. */ + public leadingComments: string; + + /** Location trailingComments. */ + public trailingComments: string; + + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + + /** GeneratedCodeInfo annotation */ + annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); + } + + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { + + /** + * Constructs a new GeneratedCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GeneratedCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GeneratedCodeInfo { + + /** Properties of an Annotation. */ + interface IAnnotation { + + /** Annotation path */ + path?: (number[]|null); + + /** Annotation sourceFile */ + sourceFile?: (string|null); + + /** Annotation begin */ + begin?: (number|null); + + /** Annotation end */ + end?: (number|null); + } + + /** Represents an Annotation. */ + class Annotation implements IAnnotation { + + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); + + /** Annotation path. */ + public path: number[]; + + /** Annotation sourceFile. */ + public sourceFile: string; + + /** Annotation begin. */ + public begin: number; + + /** Annotation end. */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a Struct. */ + interface IStruct { + + /** Struct fields */ + fields?: ({ [k: string]: google.protobuf.IValue }|null); + } + + /** Represents a Struct. */ + class Struct implements IStruct { + + /** + * Constructs a new Struct. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStruct); + + /** Struct fields. */ + public fields: { [k: string]: google.protobuf.IValue }; + + /** + * Creates a new Struct instance using the specified properties. + * @param [properties] Properties to set + * @returns Struct instance + */ + public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; + + /** + * Verifies a Struct message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Struct + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Struct to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value numberValue */ + numberValue?: (number|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value boolValue */ + boolValue?: (boolean|null); + + /** Value structValue */ + structValue?: (google.protobuf.IStruct|null); + + /** Value listValue */ + listValue?: (google.protobuf.IListValue|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value numberValue. */ + public numberValue: number; + + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: (google.protobuf.IStruct|null); + + /** Value listValue. */ + public listValue?: (google.protobuf.IListValue|null); + + /** Value kind. */ + public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.protobuf.IValue): google.protobuf.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0 + } + + /** Properties of a ListValue. */ + interface IListValue { + + /** ListValue values */ + values?: (google.protobuf.IValue[]|null); + } + + /** Represents a ListValue. */ + class ListValue implements IListValue { + + /** + * Constructs a new ListValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IListValue); + + /** ListValue values. */ + public values: google.protobuf.IValue[]; + + /** + * Creates a new ListValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ListValue instance + */ + public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; + + /** + * Verifies a ListValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Timestamp. */ + interface ITimestamp { + + /** Timestamp seconds */ + seconds?: (number|Long|null); + + /** Timestamp nanos */ + nanos?: (number|null); + } + + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { + + /** + * Constructs a new Timestamp. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ITimestamp); + + /** Timestamp seconds. */ + public seconds: (number|Long); + + /** Timestamp nanos. */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param [properties] Properties to set + * @returns Timestamp instance + */ + public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Timestamp + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Timestamp to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace type. */ + namespace type { + + /** Properties of a LatLng. */ + interface ILatLng { + + /** LatLng latitude */ + latitude?: (number|null); + + /** LatLng longitude */ + longitude?: (number|null); + } + + /** Represents a LatLng. */ + class LatLng implements ILatLng { + + /** + * Constructs a new LatLng. + * @param [properties] Properties to set + */ + constructor(properties?: google.type.ILatLng); + + /** LatLng latitude. */ + public latitude: number; + + /** LatLng longitude. */ + public longitude: number; + + /** + * Creates a new LatLng instance using the specified properties. + * @param [properties] Properties to set + * @returns LatLng instance + */ + public static create(properties?: google.type.ILatLng): google.type.LatLng; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.LatLng; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.LatLng; + + /** + * Verifies a LatLng message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LatLng + */ + public static fromObject(object: { [k: string]: any }): google.type.LatLng; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @param message LatLng + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.type.LatLng, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LatLng to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } +} diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index b20f51d4bb6..4b02d62e0a3 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -42,7 +42,7 @@ export namespace entity { * @type {symbol} * @private */ - export const KEY_SYMBOL = Symbol('KEY'); + export const KEY_SYMBOL: unique symbol = Symbol('KEY'); /** * Build a Datastore Double object. For long doubles, a string can be @@ -530,7 +530,7 @@ export namespace entity { }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { - excludeFromIndexes.forEach(excludePath => { + excludeFromIndexes.forEach((excludePath: string) => { excludePathFromEntity(entityProto, excludePath); }); } diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index c414cf0d522..58e3ffeb21f 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -579,7 +579,6 @@ class Datastore extends DatastoreRequest { static KEY = entity.KEY_SYMBOL; KEY = Datastore.KEY; - /** * This is one of three values which may be returned from * {@link Datastore#runQuery}, {@link Transaction#runQuery}, and diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index c878e57225b..dc7727235e6 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -20,31 +20,29 @@ import * as arrify from 'arrify'; const concat = require('concat-stream'); import * as extend from 'extend'; -import * as is from 'is'; import {split} from 'split-array-stream'; import * as streamEvents from 'stream-events'; import * as through from 'through2'; +import {google} from '../proto/datastore'; +import {CallOptions} from 'google-gax'; +import {Stream} from 'stream'; // Import the clients for each version supported by this package. const gapic = Object.freeze({ v1: require('./v1'), }); -import {entity, Entity} from './entity'; +import {entity, Entity, KeyProto, ValueProto} from './entity'; import {Query, RunQueryInfo, RunQueryOptions, RunQueryResponse, RunQueryCallback} from './query'; import {Datastore} from '.'; -export interface EntityDataObj { - [key: string]: string; -} - /** * A map of read consistency values to proto codes. * * @type {object} * @private */ -const CONSISTENCY_PROTO_CODE = { +const CONSISTENCY_PROTO_CODE: ConsistencyProtoCode = { eventual: 2, strong: 1, }; @@ -59,10 +57,13 @@ const CONSISTENCY_PROTO_CODE = { * @class */ class DatastoreRequest { - id; - requests_; - requestCallbacks_; + id: string|number|undefined; + requests_: Entity|{ + mutations: Array<{}>; + }; + requestCallbacks_: Array<(err: Error|null, resp: Entity|null) => void>|Entity; datastore!: Datastore; + [key: string]: Entity; /** * Format a user's input to mutation methods. This will create a deep clone of @@ -86,7 +87,7 @@ class DatastoreRequest { * * @param {object} obj The user's input object. */ - static prepareEntityObject_(obj) { + static prepareEntityObject_(obj: Entity): PrepareEntityObjectResponse { const entityObject = extend(true, {}, obj); // Entity objects are also supported. @@ -172,16 +173,19 @@ class DatastoreRequest { * const apiResponse = data[1]; * }); */ - allocateIds(key, options, callback) { + allocateIds(key: entity.Key, options: AllocateIdsOptions|number): + Promise; + allocateIds( + key: entity.Key, options: AllocateIdsOptions|number, + callback: AllocateIdsCallback): void; + allocateIds( + key: entity.Key, options: AllocateIdsOptions|number, + callback?: AllocateIdsCallback): + void|Promise { if (entity.isKeyComplete(key)) { throw new Error('An incomplete key should be provided.'); } - - if (is.number(options)) { - options = { - allocations: options, - }; - } + options = typeof options === 'number' ? {allocations: options} : options; this.request_( { @@ -193,13 +197,13 @@ class DatastoreRequest { }, gaxOpts: options.gaxOptions, }, - (err, resp) => { + (err: Error, resp: AllocateIdsRequestResponse) => { if (err) { - callback(err, null, resp); + callback!(err, null, resp); return; } const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - callback(null, keys, resp); + callback!(null, keys, resp); }); } @@ -227,16 +231,15 @@ class DatastoreRequest { * // All entities retrieved. * }); */ - createReadStream(keys, options?) { - options = options || {}; + createReadStream(keys: Entities, options: CreateReadStreamOptions = {}): + Stream { keys = arrify(keys).map(entity.keyToKeyProto); if (keys.length === 0) { throw new Error('At least one Key object is required.'); } - const makeRequest = keys => { - // tslint:disable-next-line no-any - const reqOpts: any = { + const makeRequest = (keys: entity.Key[]|KeyProto[]) => { + const reqOpts: RequestOptions = { keys, }; @@ -255,7 +258,7 @@ class DatastoreRequest { reqOpts, gaxOpts: options.gaxOptions, }, - (err, resp) => { + (err: Error, resp: Entity) => { if (err) { stream.destroy(err); return; @@ -336,13 +339,24 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - delete(keys, gaxOptions?, callback?) { - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } - - callback = callback || (() => {}); + delete(keys: Entities): + void|Promise; + delete( + keys: Entities, + callback: google.datastore.v1.Datastore.CommitCallback): void; + delete( + keys: Entities, gaxOptions: CallOptions, + callback: google.datastore.v1.Datastore.CommitCallback): void; + delete( + keys: Entities, + gaxOptionsOrCallback?: CallOptions| + google.datastore.v1.Datastore.CommitCallback, + cb?: google.datastore.v1.Datastore.CommitCallback): + void|Promise { + const gaxOptions = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; const reqOpts = { mutations: arrify(keys).map(key => { @@ -452,19 +466,24 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - get(keys, options?): Promise; - get(keys, options?, callback?): void|Promise { - if (is.fn(options)) { - callback = options; - options = {}; - } - - options = options || {}; + get(keys: Entities, + options?: CreateReadStreamOptions): Promise; + get(keys: Entities, callback: GetCallback): void; + get(keys: Entities, options: CreateReadStreamOptions, + callback: GetCallback): void; + get(keys: Entities, optionsOrCallback?: CreateReadStreamOptions|GetCallback, + cb?: GetCallback): void|Promise { + const options = + typeof optionsOrCallback === 'object' && optionsOrCallback !== null ? + optionsOrCallback : + {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; this.createReadStream(keys, options) .on('error', callback) - .pipe(concat(results => { - const isSingleLookup = !is.array(keys); + .pipe(concat((results: Entity[]) => { + const isSingleLookup = !Array.isArray(keys); callback(null, isSingleLookup ? results[0] : results); })); } @@ -483,7 +502,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - insert(entities, callback) { + insert(entities: Entities): Promise; + insert(entities: Entities, callback: CallOptions): void; + insert(entities: Entities, callback?: CallOptions): + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'insert'; @@ -641,11 +663,10 @@ class DatastoreRequest { * this.end(); * }); */ - runQueryStream(query: Query, options?) { - options = options || {}; + runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Stream { query = extend(true, new Query(), query); - const makeRequest = query => { + const makeRequest = (query: Query) => { // tslint:disable-next-line no-any const reqOpts: any = { query: entity.queryToQueryProto(query), @@ -674,7 +695,7 @@ class DatastoreRequest { onResultSet); }; - function onResultSet(err, resp) { + function onResultSet(err: Error, resp: Entity) { if (err) { stream.destroy(err); return; @@ -938,17 +959,21 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - save(entities, gaxOptions?, callback?) { + save(entities: Entities, gaxOptions?: CallOptions): + void|Promise; + save(entities: Entities, callback: SaveCallback): void; + save( + entities: Entities, gaxOptionsOrCallback?: CallOptions|SaveCallback, + cb?: SaveCallback): void|Promise { entities = arrify(entities); + const gaxOptions = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } - - const insertIndexes = {}; - const mutations: Array<{}> = []; - const methods = { + const insertIndexes: BooleanObject = {}; + const mutations: google.datastore.v1.IMutation[] = []; + const methods: BooleanObject = { insert: true, update: true, upsert: true, @@ -957,10 +982,9 @@ class DatastoreRequest { // Iterate over the entity objects, build a proto from all keys and values, // then place in the correct mutation array (insert, update, etc). entities.map(DatastoreRequest.prepareEntityObject_) - .forEach((entityObject, index) => { - const mutation = {}; - // tslint:disable-next-line no-any - let entityProto: any = {}; + .forEach((entityObject: Entity, index: number) => { + const mutation: Mutation = {}; + let entityProto: EntityProtoObject = {}; let method = 'upsert'; if (entityObject.method) { @@ -979,28 +1003,31 @@ class DatastoreRequest { // @TODO remove in @google-cloud/datastore@2.0.0 // This was replaced with a more efficient mechanism in the top-level // `excludeFromIndexes` option. - if (is.array(entityObject.data)) { - entityProto.properties = entityObject.data.reduce((acc, data) => { - const value = entity.encodeValue(data.value); - - if (is.boolean(data.excludeFromIndexes)) { - const excluded = data.excludeFromIndexes; - let values = value.arrayValue && value.arrayValue.values; - - if (values) { - values = values.map(x => { - x.excludeFromIndexes = excluded; - return x; - }); - } else { - value.excludeFromIndexes = data.excludeFromIndexes; - } - } - - acc[data.name] = value; - - return acc; - }, {}); + if (Array.isArray(entityObject.data)) { + entityProto.properties = entityObject.data.reduce( + (acc: EntityProtoReduceAccumulator, + data: EntityProtoReduceData) => { + const value = entity.encodeValue(data.value); + + if (typeof data.excludeFromIndexes === 'boolean') { + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map((x: ValueProto) => { + x.excludeFromIndexes = excluded; + return x; + }); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } + } + + acc[data.name] = value; + + return acc; + }, + {}); } else { entityProto = entity.entityToEntityProto(entityObject); } @@ -1015,22 +1042,23 @@ class DatastoreRequest { mutations, }; - function onCommit(err, resp) { + function onCommit(err: Error|null, resp: {mutationResults: Entity;}) { if (err || !resp) { callback(err, resp); return; } - arrify(resp.mutationResults).forEach((result, index) => { - if (!result.key) { - return; - } + arrify(resp.mutationResults) + .forEach((result: Entity, index: number) => { //! Entity malo + if (!result.key) { + return; + } - if (insertIndexes[index]) { - const id = entity.keyFromKeyProto(result.key).id; - entities[index].key.id = id; - } - }); + if (insertIndexes[index]) { + const id = entity.keyFromKeyProto(result.key).id; + entities[index].key.id = id; + } + }); callback(null, resp); } @@ -1065,7 +1093,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - update(entities, callback) { + update(entities: Entities): Promise; + update(entities: Entities, callback: CallOptions): void; + update(entities: Entities, callback?: CallOptions): + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'update'; @@ -1089,7 +1120,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - upsert(entities, callback) { + upsert(entities: Entities): Promise; + upsert(entities: Entities, callback: CallOptions): void; + upsert(entities: Entities, callback?: CallOptions): + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'upsert'; @@ -1111,12 +1145,11 @@ class DatastoreRequest { * * @private */ - request_(config, callback) { + request_(config: RequestConfig, callback: RequestCallback): void; + request_(config: RequestConfig, callback?: RequestCallback): void { const datastore = this.datastore; - callback = callback || (() => {}); - - const isTransaction = is.defined(this.id); + const isTransaction = this.id ? true : false; const method = config.method; let reqOpts = extend(true, {}, config.reqOpts); @@ -1147,30 +1180,117 @@ class DatastoreRequest { }; } - datastore.auth.getProjectId((err, projectId) => { - if (err) { - callback(err); - return; - } + datastore.auth.getProjectId( + (err: GetProjectIdErr, projectId: ProjectId) => { + if (err) { + callback!(err); + return; + } - const clientName = config.client; + const clientName = config.client; - if (!datastore.clients_.has(clientName)) { - datastore.clients_.set( - clientName, new gapic.v1[clientName](datastore.options)); - } - const gaxClient = datastore.clients_.get(clientName); - reqOpts = replaceProjectIdToken(reqOpts, projectId!); - const gaxOpts = extend(true, {}, config.gaxOpts, { - headers: { - 'google-cloud-resource-prefix': `projects/${projectId}`, - }, - }); - gaxClient![method](reqOpts, gaxOpts, callback); - }); + if (!datastore.clients_.has(clientName)) { + datastore.clients_.set( + clientName, new gapic.v1[clientName](datastore.options)); + } + const gaxClient: Entities|undefined = + datastore.clients_.get(clientName); + reqOpts = replaceProjectIdToken(reqOpts, projectId!); + const gaxOpts = extend(true, {}, config.gaxOpts, { + headers: { + 'google-cloud-resource-prefix': `projects/${projectId}`, + }, + }); + gaxClient![method](reqOpts, gaxOpts, callback); + }); } } +export interface BooleanObject { + [key: string]: boolean; +} +export interface ConsistencyProtoCode { + [key: string]: number; +} +export type Entities = Entity|Entity[]; +export interface EntityProtoObject { + method?: string; + properties?: {[key: string]: ValueProto}; + key?: Keys; +} +export interface EntityProtoReduceAccumulator { + [key: string]: ValueProto; +} +export interface EntityProtoReduceData { + value: ValueProto; + excludeFromIndexes: ValueProto; + name: string|number; +} + +export interface AllocateIdsRequestResponse { + keys: KeyProto[]; + mutationResults?: Entities; +} +export interface AllocateIdsCallback { + (a: Error|null, b: entity.Key[]|null, c: AllocateIdsRequestResponse): void; +} +export interface AllocateIdsOptions { + allocations?: number; + gaxOptions?: CallOptions; +} +export interface CreateReadStreamOptions { + consistency?: string; + gaxOptions?: CallOptions; +} +export interface GetCallback { + (...args: Entity[]): void; +} +export type GetProjectIdErr = Error|null|undefined; +export type Keys = Entity|Entity[]; +export interface Mutation extends google.datastore.v1.IMutation { + [key: string]: Entity; +} +export interface PrepareEntityObject { + [key: string]: google.datastore.v1.Key| + undefined; // TODO: Fix "Symbol cannot be key" TS error +} +export interface PrepareEntityObjectResponse { + key?: google.datastore.v1.Key; + data?: google.datastore.v1.Entity; + method?: string; +} +export type ProjectId = string|null|undefined; +export interface RequestCallback { + (a: Error, + b?: AllocateIdsRequestResponse&google.datastore.v1.ILookupResponse& + Entities): void; +} +export interface RequestConfig { + client: string; + gaxOpts?: number|CallOptions|KeyProto|undefined; + method: string; + prepared?: boolean; + reqOpts?: RequestOptions; +} +export interface RequestOptions { + mutations?: []|Array<{delete: KeyProto;}>|Array<{}>; + keys?: Entity; + readOptions?: {readConsistency?: number + transaction?: string|number; + }; + transaction?: string|number; + mode?: string; + projectId?: string; +} +export interface RequestResponse extends google.datastore.v1.ICommitResponse {} +export interface RunQueryStreamOptions { + gaxOptions?: CallOptions; + consistency?: 'strong'|'eventual'; +} +export interface SaveCallback { + (a?: Error|null, b?: Entity): void; +} + /*! Developer Documentation * * All async methods (except for streams) will return a Promise in the event diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index a5014519085..69cf27c276c 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -16,10 +16,14 @@ import {promisifyAll} from '@google-cloud/promisify'; import * as arrify from 'arrify'; -import * as is from 'is'; +import {CallOptions} from 'google-gax'; +import * as r from 'request'; -import {Datastore} from '.'; -import {entity} from './entity'; +import {google} from '../proto/datastore'; + +import {Datastore, TransactionOptions} from '.'; +import {entity, Entity} from './entity'; +import {Query} from './query'; import {DatastoreRequest} from './request'; /** @@ -44,10 +48,10 @@ class Transaction extends DatastoreRequest { projectId: string; namespace?: string; readOnly: boolean; - request; - modifiedEntities_; + request: Function; + modifiedEntities_: ModifiedEntities; skipCommit?: boolean; - constructor(datastore: Datastore, options) { + constructor(datastore: Datastore, options?: TransactionOptions) { super(); /** * @name Transaction#datastore @@ -126,20 +130,28 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - commit(gaxOptions?, callback?) { - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } - - callback = callback || (() => {}); + commit(gaxOptions?: CallOptions): Promise; + commit(callback: google.datastore.v1.Datastore.CommitCallback): void; + commit( + gaxOptions: CallOptions, + callback: google.datastore.v1.Datastore.CommitCallback): void; + commit( + gaxOptionsOrCallback?: CallOptions| + google.datastore.v1.Datastore.CommitCallback, + cb?: google.datastore.v1.Datastore.CommitCallback): + void|Promise { + const callback = typeof gaxOptionsOrCallback === 'function' ? + gaxOptionsOrCallback : + typeof cb === 'function' ? cb : (() => {}); + const gaxOptions = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; if (this.skipCommit) { setImmediate(callback); return; } - const keys = {}; + const keys: Entities = {}; this.modifiedEntities_ // Reverse the order of the queue to respect the "last queued request @@ -149,12 +161,10 @@ class Transaction extends DatastoreRequest { // recently queued operations. E.g., if a user tries to save with the // same key they just asked to be deleted, the delete request will be // ignored, giving preference to the save operation. - .filter(modifiedEntity => { + .filter((modifiedEntity: Entity) => { const key = modifiedEntity.entity.key; - if (!entity.isKeyComplete(key)) { - return true; - } + if (!entity.isKeyComplete(key)) return true; const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); @@ -178,7 +188,7 @@ class Transaction extends DatastoreRequest { // callback, having all the keys together is necessary to maintain // order. .reduce( - (acc, entityObject) => { + (acc: Entities, entityObject: Entity) => { const lastEntityObject = acc[acc.length - 1]; const sameMethod = lastEntityObject && entityObject.method === lastEntityObject.method; @@ -198,17 +208,24 @@ class Transaction extends DatastoreRequest { // `callbacks` array, that is the same callback that would run if we // were using `save` and `delete` outside of a transaction, to process // the response from the API. - .forEach(modifiedEntity => { - const method = modifiedEntity.method; - const args = modifiedEntity.args.reverse(); - DatastoreRequest.prototype[method].call(this, args, () => {}); - }); + .forEach( + (modifiedEntity: {method: string; args: {reverse: () => void}}) => { + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); + DatastoreRequest.prototype[method].call(this, args, () => {}); + }); // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. const reqOpts = { - mutations: this.requests_.map(x => x.mutations) - .reduce((a, b) => a.concat(b), []), + mutations: + this.requests_ + .map( + (x: {mutations: google.datastore.v1.Mutation}) => x.mutations) + .reduce( + (a: {concat: (arg0: Entity) => void}, b: Entity) => + a.concat(b), + []), }; this.request_( @@ -218,7 +235,7 @@ class Transaction extends DatastoreRequest { reqOpts, gaxOpts: gaxOptions || {}, }, - (err, resp) => { + (err: Error, resp: r.Response) => { if (err) { // Rollback automatically for the user. this.rollback(() => { @@ -233,9 +250,10 @@ class Transaction extends DatastoreRequest { // The `callbacks` array was built previously. These are the callbacks // that handle the API response normally when using the // DatastoreRequest.save and .delete methods. - this.requestCallbacks_.forEach(cb => { - cb(null, resp); - }); + this.requestCallbacks_.forEach( + (cb: (arg0: null, arg1: Entity) => void) => { + cb(null, resp); + }); callback(null, resp); }); } @@ -278,7 +296,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - createQuery(namespace: string, kind?: string) { + createQuery(namespace: string, kind?: string): Query { return this.datastore.createQuery.call(this, namespace, kind); } @@ -314,8 +332,8 @@ class Transaction extends DatastoreRequest { * }); * }); */ - delete(entities) { - arrify(entities).forEach(ent => { + delete(entities: Entity): void { + arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { key: ent, @@ -360,13 +378,18 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(gaxOptions?, callback?) { - if (is.fn(gaxOptions)) { - callback = gaxOptions; - gaxOptions = {}; - } - - callback = callback || (() => {}); + rollback(gaxOptions: CallOptions): + Promise; + rollback(callback: google.datastore.v1.Datastore.RollbackCallback): void; + rollback( + gaxOptionsOrCallback: CallOptions| + google.datastore.v1.Datastore.RollbackCallback, + cb?: google.datastore.v1.Datastore.RollbackCallback): + void|Promise { + const gaxOptions = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; this.request_( { @@ -374,7 +397,7 @@ class Transaction extends DatastoreRequest { method: 'rollback', gaxOpts: gaxOptions || {}, }, - (err, resp) => { + (err: Error, resp: r.Response) => { this.skipCommit = true; callback(err || null, resp); }); @@ -430,14 +453,16 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[1]; * }); */ - run(options?, callback?) { - if (is.fn(options)) { - callback = options; - options = {}; - } - - options = options || {}; - callback = callback || (() => {}); + run(options?: RunOptions): + Promise; + run(callback?: RunCallback): void; + run(options?: RunOptions, callback?: RunCallback): void; + run(optionsOrCallback?: RunOptions|RunCallback|Entity, cb?: RunCallback): + void|Promise { + const options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; // tslint:disable-next-line no-any const reqOpts: any = { @@ -450,7 +475,7 @@ class Transaction extends DatastoreRequest { if (options.transactionId || this.id) { reqOpts.transactionOptions.readWrite = { - previousTransaction: options.transactionId || this.id, + previousTransaction: options.transactionId || this.id }; } @@ -465,7 +490,7 @@ class Transaction extends DatastoreRequest { reqOpts, gaxOpts: options.gaxOptions, }, - (err, resp) => { + (err: Error, resp: r.Response) => { if (err) { callback(err, null, resp); return; @@ -604,7 +629,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - save(entities) { + save(entities: Entities): void { arrify(entities).forEach(ent => { this.modifiedEntities_.push({ entity: { @@ -617,6 +642,21 @@ class Transaction extends DatastoreRequest { } } +export type Entities = Entity|Entity[]; +export type ModifiedEntities = + Array<{entity: {key: Entity}; method: string; args: Entity[];}>; +export interface RunCallback extends + google.datastore.v1.Datastore.BeginTransactionCallback { + (transaction: Transaction|null): void; +} + +export interface RunOptions { + readOnly?: boolean; + transactionId?: string; + transactionOptions?: TransactionOptions; + gaxOptions?: CallOptions; +} + /*! Developer Documentation * * All async methods (except for streams) will return a Promise in the event diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 4ec29f84b7d..def719e716b 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -48,8 +48,7 @@ describe('Datastore', () => { it('should allocate IDs', done => { datastore.allocateIds(datastore.key('Kind'), 10, (err, keys) => { assert.ifError(err); - assert.strictEqual(keys.length, 10); - assert.strictEqual(entity.isKeyComplete(keys[0]), true); + assert.ok(keys); done(); }); }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 1cce80102f1..6c3eb15b49e 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -164,7 +164,7 @@ describe('Transaction', () => { const gaxOptions = {}; transaction.request_ = config => { - assert.strictEqual(config.gaxOpts, gaxOptions); + assert.deepEqual(config.gaxOpts, {}); done(); }; From 75402b662d39c647e5167bc079bc680fa13dd1c0 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 8 Feb 2019 20:42:01 -0800 Subject: [PATCH 322/820] refactor: asyncify the system test (#324) --- handwritten/nodejs-datastore/package.json | 3 +- handwritten/nodejs-datastore/src/index.ts | 2 +- handwritten/nodejs-datastore/src/query.ts | 1 - handwritten/nodejs-datastore/src/request.ts | 6 +- .../nodejs-datastore/src/transaction.ts | 27 +- .../nodejs-datastore/system-test/datastore.ts | 744 ++++++------------ 6 files changed, 274 insertions(+), 509 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f0a9673ef18..142899c1e8b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,6 +65,7 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^7.0.2", "@types/through2": "^2.0.34", + "assert-rejects": "^1.0.0", "codecov": "^3.0.2", "eslint": "^5.0.0", "eslint-config-prettier": "^4.0.0", @@ -72,9 +73,9 @@ "eslint-plugin-prettier": "^3.0.0", "google-proto-files": "^0.18.0", "gts": "^0.9.0", - "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", + "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "mocha": "^5.2.0", "nyc": "^13.0.0", "power-assert": "^1.5.0", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 58e3ffeb21f..0d74705896e 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -35,7 +35,7 @@ import {Query} from './query'; import {DatastoreRequest} from './request'; import {Transaction} from './transaction'; -const {grpc} = new GrpcClient({} as GrpcClientOptions); +const {grpc} = new GrpcClient(); // tslint:disable-next-line: no-any export type PathType = any; diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index fbb94279d08..a2a05f3400c 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -16,7 +16,6 @@ import * as arrify from 'arrify'; import {Key} from 'readline'; - import {Datastore} from '.'; import {Entity} from './entity'; import {Transaction} from './transaction'; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index dc7727235e6..c46d6a2c039 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -197,7 +197,7 @@ class DatastoreRequest { }, gaxOpts: options.gaxOptions, }, - (err: Error, resp: AllocateIdsRequestResponse) => { + (err, resp) => { if (err) { callback!(err, null, resp); return; @@ -960,7 +960,9 @@ class DatastoreRequest { * }); */ save(entities: Entities, gaxOptions?: CallOptions): - void|Promise; + Promise; + save(entities: Entities, gaxOptions: CallOptions, callback: SaveCallback): + void; save(entities: Entities, callback: SaveCallback): void; save( entities: Entities, gaxOptionsOrCallback?: CallOptions|SaveCallback, diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 69cf27c276c..7af163f34f6 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -17,15 +17,15 @@ import {promisifyAll} from '@google-cloud/promisify'; import * as arrify from 'arrify'; import {CallOptions} from 'google-gax'; -import * as r from 'request'; - import {google} from '../proto/datastore'; - import {Datastore, TransactionOptions} from '.'; import {entity, Entity} from './entity'; import {Query} from './query'; import {DatastoreRequest} from './request'; +type RollbackCallback = google.datastore.v1.Datastore.RollbackCallback; +type RollbackResponse = google.datastore.v1.RollbackResponse; + /** * A transaction is a set of Datastore operations on one or more entities. Each * transaction is guaranteed to be atomic, which means that transactions are @@ -235,7 +235,7 @@ class Transaction extends DatastoreRequest { reqOpts, gaxOpts: gaxOptions || {}, }, - (err: Error, resp: r.Response) => { + (err, resp) => { if (err) { // Rollback automatically for the user. this.rollback(() => { @@ -378,14 +378,12 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(gaxOptions: CallOptions): - Promise; - rollback(callback: google.datastore.v1.Datastore.RollbackCallback): void; + rollback(gaxOptions?: CallOptions): Promise; + rollback(callback: RollbackCallback): void; + rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; rollback( - gaxOptionsOrCallback: CallOptions| - google.datastore.v1.Datastore.RollbackCallback, - cb?: google.datastore.v1.Datastore.RollbackCallback): - void|Promise { + gaxOptionsOrCallback?: CallOptions|RollbackCallback, + cb?: RollbackCallback): void|Promise { const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = @@ -397,7 +395,7 @@ class Transaction extends DatastoreRequest { method: 'rollback', gaxOpts: gaxOptions || {}, }, - (err: Error, resp: r.Response) => { + (err, resp) => { this.skipCommit = true; callback(err || null, resp); }); @@ -490,7 +488,7 @@ class Transaction extends DatastoreRequest { reqOpts, gaxOpts: options.gaxOptions, }, - (err: Error, resp: r.Response) => { + (err, resp) => { if (err) { callback(err, null, resp); return; @@ -629,7 +627,8 @@ class Transaction extends DatastoreRequest { * }); * }); */ - save(entities: Entities): void { + // tslint:disable-next-line no-any + save(entities: Entities): any { arrify(entities).forEach(ent => { this.modifiedEntities_.push({ entity: { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index def719e716b..f1a89266560 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -16,7 +16,7 @@ import * as assert from 'assert'; import {Datastore} from '../src'; -import {entity} from '../src/entity'; +const assertRejects = require('assert-rejects'); describe('Datastore', () => { const testKinds: string[] = []; @@ -33,24 +33,18 @@ describe('Datastore', () => { after(async () => { async function deleteEntities(kind) { const query = datastore.createQuery(kind).select('__key__'); - const [entities] = await datastore.runQuery(query); const keys = entities.map(entity => { return entity[datastore.KEY]; }); - await datastore.delete(keys); } - await Promise.all(testKinds.map(kind => deleteEntities(kind))); }); - it('should allocate IDs', done => { - datastore.allocateIds(datastore.key('Kind'), 10, (err, keys) => { - assert.ifError(err); - assert.ok(keys); - done(); - }); + it('should allocate IDs', async () => { + const keys = await datastore.allocateIds(datastore.key('Kind'), 10); + assert.ok(keys); }); describe('create, retrieve and delete', () => { @@ -68,10 +62,9 @@ describe('Datastore', () => { }, }; - it('should excludeFromIndexes correctly', done => { + it('should excludeFromIndexes correctly', async () => { const longString = Buffer.alloc(1501, '.').toString(); const postKey = datastore.key(['Post', 'post1']); - const data = { longString, notMetadata: true, @@ -112,199 +105,121 @@ describe('Datastore', () => { }, }; - datastore.save( - { - key: postKey, - data, - excludeFromIndexes: [ - 'longString', - 'longStringArray[]', - 'metadata.obj.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString', - ], - }, - err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - - assert.deepStrictEqual(entity, data); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - - datastore.delete(postKey, done); - }); - }); + await datastore.save({ + key: postKey, + data, + excludeFromIndexes: [ + 'longString', + 'longStringArray[]', + 'metadata.obj.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ], + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, data); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + await datastore.delete(postKey); }); - it('should save/get/delete with a key name', done => { + it('should save/get/delete with a key name', async () => { const postKey = datastore.key(['Post', 'post1']); - - datastore.save({key: postKey, data: post}, err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - - assert.deepStrictEqual(entity, post); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - - datastore.delete(postKey, done); - }); - }); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, post); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + await datastore.delete(postKey); }); - it('should save/get/delete with a numeric key id', done => { + it('should save/get/delete with a numeric key id', async () => { const postKey = datastore.key(['Post', 123456789]); - - datastore.save({key: postKey, data: post}, err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - - assert.deepStrictEqual(entity, post); - - datastore.delete(postKey, done); - }); - }); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); }); - it('should save/get/delete a buffer', done => { + it('should save/get/delete a buffer', async () => { const postKey = datastore.key(['Post']); const data = { buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), }; - - datastore.save({key: postKey, data}, err => { - assert.ifError(err); - - const assignedId = postKey.id; - assert(assignedId); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - assert.deepStrictEqual(entity, data); - datastore.delete(datastore.key(['Post', assignedId]), done); - }); - }); + await datastore.save({key: postKey, data}); + const assignedId = postKey.id; + assert(assignedId); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, data); + await datastore.delete(datastore.key(['Post', assignedId])); }); - it('should save/get/delete with a generated key id', done => { + it('should save/get/delete with a generated key id', async () => { const postKey = datastore.key('Post'); + await datastore.save({key: postKey, data: post}); - datastore.save({key: postKey, data: post}, err => { - assert.ifError(err); + // The key's path should now be complete. + assert(postKey.id); - // The key's path should now be complete. - assert(postKey.id); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - - assert.deepStrictEqual(entity, post); - - datastore.delete(postKey, done); - }); - }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); }); - it('should save/get/update', done => { + it('should save/get/update', async () => { const postKey = datastore.key('Post'); - - datastore.save({key: postKey, data: post}, err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - - assert.strictEqual(entity.title, post.title); - - entity.title = 'Updated'; - - datastore.save(entity, err => { - assert.ifError(err); - - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.title, 'Updated'); - datastore.delete(postKey, done); - }); - }); - }); - }); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + assert.strictEqual(entity.title, post.title); + entity.title = 'Updated'; + await datastore.save(entity); + const [entity2] = await datastore.get(postKey); + assert.strictEqual(entity2.title, 'Updated'); + await datastore.delete(postKey); }); - it('should save and get with a string ID', done => { + it('should save and get with a string ID', async () => { const longIdKey = datastore.key([ 'Post', datastore.int('100000000000001234'), ]); - - datastore.save( - { - key: longIdKey, - data: { - test: true, - }, - }, - err => { - assert.ifError(err); - - datastore.get(longIdKey, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.test, true); - done(); - }); - }); + await datastore.save({ + key: longIdKey, + data: { + test: true, + }, + }); + const [entity] = await datastore.get(longIdKey); + assert.strictEqual(entity.test, true); }); - it('should fail explicitly set second insert on save', done => { + it('should fail explicitly set second insert on save', async () => { const postKey = datastore.key('Post'); + await datastore.save({key: postKey, data: post}); - datastore.save({key: postKey, data: post}, err => { - assert.ifError(err); - - // The key's path should now be complete. - assert(postKey.id); - - datastore.save( - { - key: postKey, - method: 'insert', - data: post, - }, - err => { - assert.notStrictEqual(err, null); // should fail insert. - datastore.get(postKey, (err, entity) => { - assert.ifError(err); - assert.deepStrictEqual(entity, post); - datastore.delete(postKey, done); - }); - }); - }); + // The key's path should now be complete. + assert(postKey.id); + await assertRejects(datastore.save({ + key: postKey, + method: 'insert', + data: post, + })); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); }); - it('should fail explicitly set first update on save', done => { + it('should fail explicitly set first update on save', async () => { const postKey = datastore.key('Post'); - - datastore.save( - { - key: postKey, - method: 'update', - data: post, - }, - err => { - assert.notStrictEqual(err, null); - done(); - }); + await assertRejects(datastore.save({ + key: postKey, + method: 'update', + data: post, + })); }); - it('should save/get/delete multiple entities at once', done => { + it('should save/get/delete multiple entities at once', async () => { const post2 = { title: 'How to make the perfect homemade pasta', tags: ['pasta', 'homemade'], @@ -314,19 +229,12 @@ describe('Datastore', () => { wordCount: 450, rating: 4.5, }; - const key1 = datastore.key('Post'); const key2 = datastore.key('Post'); - - datastore.save( - [{key: key1, data: post}, {key: key2, data: post2}], err => { - assert.ifError(err); - datastore.get([key1, key2], (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities.length, 2); - datastore.delete([key1, key2], done); - }); - }); + await datastore.save([{key: key1, data: post}, {key: key2, data: post2}]); + const [entities] = await datastore.get([key1, key2]); + assert.strictEqual(entities.length, 2); + await datastore.delete([key1, key2]); }); it('should get multiple entities in a stream', done => { @@ -352,107 +260,68 @@ describe('Datastore', () => { }); }); - it('should save keys as a part of entity and query by key', done => { + it('should save keys as a part of entity and query by key', async () => { const personKey = datastore.key(['People', 'US', 'Person', 'name']); - - datastore.save( - { - key: personKey, - data: { - fullName: 'Full name', - linkedTo: personKey, // himself - }, - }, - err => { - assert.ifError(err); - - const query = datastore.createQuery('Person') - .hasAncestor(datastore.key(['People', 'US'])) - .filter('linkedTo', personKey); - - datastore.runQuery(query, (err, results) => { - assert.ifError(err); - assert.strictEqual(results![0].fullName, 'Full name'); - assert.deepStrictEqual(results![0].linkedTo, personKey); - datastore.delete(personKey, done); - }); - }); + await datastore.save({ + key: personKey, + data: { + fullName: 'Full name', + linkedTo: personKey, // himself + }, + }); + const query = datastore.createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); + const [results] = await datastore.runQuery(query); + assert.strictEqual(results![0].fullName, 'Full name'); + assert.deepStrictEqual(results![0].linkedTo, personKey); + await datastore.delete(personKey); }); describe('entity types', () => { - it('should save and decode an int', done => { + it('should save and decode an int', async () => { const integerValue = 2015; const integerType = Datastore.int(integerValue); - const key = datastore.key('Person'); - - datastore.save( - { - key, - data: { - year: integerType, - }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.year, integerValue); - done(); - }); - }); + await datastore.save({ + key, + data: { + year: integerType, + }, + }); + const [entity] = await datastore.get(key); + assert.strictEqual(entity.year, integerValue); }); - it('should save and decode a double', done => { + it('should save and decode a double', async () => { const doubleValue = 99.99; const doubleType = Datastore.double(doubleValue); - const key = datastore.key('Person'); - - datastore.save( - { - key, - data: { - nines: doubleType, - }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity.nines, doubleValue); - done(); - }); - }); + await datastore.save({ + key, + data: { + nines: doubleType, + }, + }); + const [entity] = await datastore.get(key); + assert.strictEqual(entity.nines, doubleValue); }); - it('should save and decode a geo point', done => { + it('should save and decode a geo point', async () => { const geoPointValue = { latitude: 40.6894, longitude: -74.0447, }; const geoPointType = Datastore.geoPoint(geoPointValue); - const key = datastore.key('Person'); - - datastore.save( - { - key, - data: { - location: geoPointType, - }, - }, - err => { - assert.ifError(err); - - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.deepStrictEqual(entity.location, geoPointValue); - done(); - }); - }); + await datastore.save({ + key, + data: { + location: geoPointType, + }, + }); + const [entity] = await datastore.get(key); + assert.deepStrictEqual(entity.location, geoPointValue); }); }); }); @@ -525,52 +394,38 @@ describe('Datastore', () => { }, ]; - before(done => { + before(async () => { const keysToSave = keys.map((key, index) => { return { key, data: characters[index], }; }); - - datastore.save(keysToSave, done); + await datastore.save(keysToSave); }); - after(done => { - datastore.delete(keys, done); + after(async () => { + await datastore.delete(keys); }); - it('should limit queries', done => { + it('should limit queries', async () => { const q = datastore.createQuery('Character').hasAncestor(ancestor).limit(5); - - datastore.runQuery(q, (err, firstEntities, info) => { - assert.ifError(err); - assert.strictEqual(firstEntities!.length, 5); - - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .start(info!.endCursor!); - - datastore.runQuery(secondQ, (err, secondEntities) => { - assert.ifError(err); - assert.strictEqual(secondEntities!.length, 3); - done(); - }); - }); + const [firstEntities, info] = await datastore.runQuery(q); + assert.strictEqual(firstEntities!.length, 5); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 3); }); - it('should not go over a limit', done => { + it('should not go over a limit', async () => { const limit = 3; - const q = datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); - - datastore.runQuery(q, (err, results) => { - assert.ifError(err); - assert.strictEqual(results!.length, limit); - done(); - }); + const [results] = await datastore.runQuery(q); + assert.strictEqual(results!.length, limit); }); it('should run a query as a stream', done => { @@ -578,10 +433,7 @@ describe('Datastore', () => { let resultsReturned = 0; datastore.runQueryStream(q) .on('error', done) - .on('data', - () => { - resultsReturned++; - }) + .on('data', () => resultsReturned++) .on('end', () => { assert.strictEqual(resultsReturned, characters.length); done(); @@ -592,205 +444,139 @@ describe('Datastore', () => { const limit = 3; const q = datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); - let resultsReturned = 0; - datastore.runQueryStream(q) .on('error', done) - .on('data', - () => { - resultsReturned++; - }) + .on('data', () => resultsReturned++) .on('end', () => { assert.strictEqual(resultsReturned, limit); done(); }); }); - it('should filter queries with simple indexes', done => { + it('should filter queries with simple indexes', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .filter('appearances', '>=', 20); - - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities!.length, 6); - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); }); - it('should filter queries with defined indexes', done => { + it('should filter queries with defined indexes', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .filter('family', 'Stark') .filter('appearances', '>=', 20); - - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities!.length, 6); - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); }); - it('should filter by ancestor', done => { + it('should filter by ancestor', async () => { const q = datastore.createQuery('Character').hasAncestor(ancestor); - - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities!.length, characters.length); - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities.length, characters.length); }); - it('should filter by key', done => { + it('should filter by key', async () => { const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - const q = datastore.createQuery('Character') .hasAncestor(ancestor) .filter('__key__', key); - - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities!.length, 1); - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 1); }); - it('should order queries', done => { + it('should order queries', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .order('appearances'); - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - - assert.strictEqual(entities![0].name, characters[0].name); - assert.strictEqual(entities![7].name, characters[3].name); - - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities![0].name, characters[0].name); + assert.strictEqual(entities![7].name, characters[3].name); }); - it('should select projections', done => { + it('should select projections', async () => { const q = datastore.createQuery('Character').hasAncestor(ancestor).select([ 'name', 'family' ]); - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - - assert.deepStrictEqual(entities![0], { - name: 'Arya', - family: 'Stark', - }); - - assert.deepStrictEqual(entities![8], { - name: 'Sansa', - family: 'Stark', - }); - - done(); + const [entities] = await datastore.runQuery(q); + assert.deepStrictEqual(entities![0], { + name: 'Arya', + family: 'Stark', + }); + assert.deepStrictEqual(entities![8], { + name: 'Sansa', + family: 'Stark', }); }); - it('should paginate with offset and limit', done => { + it('should paginate with offset and limit', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .offset(2) .limit(3) .order('appearances'); - datastore.runQuery(q, (err, entities, info) => { - assert.ifError(err); - - assert.strictEqual(entities!.length, 3); - assert.strictEqual(entities![0].name, 'Robb'); - assert.strictEqual(entities![2].name, 'Catelyn'); - - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); - - datastore.runQuery(secondQ, (err, secondEntities) => { - assert.ifError(err); - assert.strictEqual(secondEntities!.length, 3); - assert.strictEqual(secondEntities![0].name, 'Sansa'); - assert.strictEqual(secondEntities![2].name, 'Arya'); - done(); - }); - }); - }); - - it('should resume from a start cursor', done => { + const [entities, info] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + assert.strictEqual(entities![0].name, 'Robb'); + assert.strictEqual(entities![2].name, 'Catelyn'); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 3); + assert.strictEqual(secondEntities![0].name, 'Sansa'); + assert.strictEqual(secondEntities![2].name, 'Arya'); + }); + + it('should resume from a start cursor', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .offset(2) .limit(2) .order('appearances'); - - datastore.runQuery(q, (err, entities, info) => { - assert.ifError(err); - - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); - - datastore.runQuery(secondQ, (err, secondEntities) => { - assert.ifError(err); - - assert.strictEqual(secondEntities!.length, 4); - assert.strictEqual(secondEntities![0].name, 'Catelyn'); - assert.strictEqual(secondEntities![3].name, 'Arya'); - - done(); - }); - }); - }); - - it('should group queries', done => { + const [, info] = await datastore.runQuery(q); + const secondQ = datastore.createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 4); + assert.strictEqual(secondEntities![0].name, 'Catelyn'); + assert.strictEqual(secondEntities![3].name, 'Arya'); + }); + + it('should group queries', async () => { const q = datastore.createQuery('Character') .hasAncestor(ancestor) .groupBy('appearances'); - - datastore.runQuery(q, (err, entities) => { - assert.ifError(err); - assert.strictEqual(entities!.length, characters.length - 1); - done(); - }); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, characters.length - 1); }); - it('should query from the Query object', done => { - const q = datastore.createQuery('Character'); - q.run(done); + it('should query from the Query object', async () => { + await datastore.createQuery('Character').run(); }); }); - describe('transactions', () => { - it('should run in a transaction', done => { + describe('transactions', async () => { + it('should run in a transaction', async () => { const key = datastore.key(['Company', 'Google']); const obj = { url: 'www.google.com', }; - const transaction = datastore.transaction(); - transaction.run(err => { - assert.ifError(err); - transaction.get(key, err => { - assert.ifError(err); - transaction.save({key, data: obj}); - transaction.commit(err => { - assert.ifError(err); - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.deepStrictEqual(entity, obj); - done(); - }); - }); - }); - }); + await transaction.run(); + await transaction.get(key); + transaction.save({key, data: obj}); + await transaction.commit(); + const [entity] = await datastore.get(key); + assert.deepStrictEqual(entity, obj); }); it('should commit all saves and deletes at the end', async () => { @@ -833,87 +619,65 @@ describe('Datastore', () => { assert.strictEqual(fetchedEntity.rating, 10); }); - it('should use the last modification to a key', done => { + it('should use the last modification to a key', async () => { const incompleteKey = datastore.key('Company'); const key = datastore.key(['Company', 'Google']); - const transaction = datastore.transaction(); - - transaction.run(err => { - assert.ifError(err); - - transaction.save([ - { - key, - data: { - rating: 10, - }, + await transaction.run(); + transaction.save([ + { + key, + data: { + rating: 10, }, - { - key: incompleteKey, - data: { - rating: 100, - }, + }, + { + key: incompleteKey, + data: { + rating: 100, }, - ]); - - transaction.delete(key); - - transaction.commit(err => { - assert.ifError(err); + }, + ]); + transaction.delete(key); + await transaction.commit(); - // Should not return a result. - datastore.get(key, (err, entity) => { - assert.ifError(err); - assert.strictEqual(entity, undefined); + // Should not return a result. + const [entity] = await datastore.get(key); + assert.strictEqual(entity, undefined); - // Incomplete key should have been given an id. - assert.strictEqual(incompleteKey.path.length, 2); - done(); - }); - }); - }); + // Incomplete key should have been given an id. + assert.strictEqual(incompleteKey.path.length, 2); }); - it('should query within a transaction', done => { + it('should query within a transaction', async () => { const transaction = datastore.transaction(); - transaction.run(err => { - assert.ifError(err); - const query = transaction.createQuery('Company'); - query.run((err, entities) => { - if (err) { - transaction.rollback(done); - return; - } - assert(entities!.length > 0); - transaction.commit(done); - }); - }); + await transaction.run(); + const query = transaction.createQuery('Company'); + let entities; + try { + [entities] = await query.run(); + } catch (e) { + await transaction.rollback(); + return; + } + assert(entities!.length > 0); + await transaction.commit(); }); - it('should read in a readOnly transaction', done => { + it('should read in a readOnly transaction', async () => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); - transaction.run(err => { - assert.ifError(err); - transaction.get(key, done); - }); + await transaction.run(); + await transaction.get(key); }); - it('should not write in a readOnly transaction', done => { + it('should not write in a readOnly transaction', async () => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); - transaction.run(err => { - assert.ifError(err); - transaction.get(key, err => { - assert.ifError(err); - transaction.save({key, data: {}}); - transaction.commit(err => { - assert(err instanceof Error); - done(); - }); - }); - }); + await transaction.run(); + await transaction.get(key); + transaction.save({key, data: {}}); + await assertRejects(transaction.commit()); }); }); }); From 9bb6aa586deb916fa5ce73fbede3a3b994631ff7 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sat, 9 Feb 2019 17:56:23 -0800 Subject: [PATCH 323/820] refactor: clean up types for tests (#325) --- handwritten/nodejs-datastore/src/index.ts | 14 ++- handwritten/nodejs-datastore/src/query.ts | 6 +- handwritten/nodejs-datastore/src/request.ts | 10 +-- .../nodejs-datastore/src/transaction.ts | 4 +- .../nodejs-datastore/system-test/datastore.ts | 5 +- handwritten/nodejs-datastore/test/entity.ts | 31 +++---- handwritten/nodejs-datastore/test/index.ts | 59 +++++++------ handwritten/nodejs-datastore/test/query.ts | 10 ++- handwritten/nodejs-datastore/test/request.ts | 87 ++++++++++--------- .../nodejs-datastore/test/transaction.ts | 6 -- 10 files changed, 121 insertions(+), 111 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 0d74705896e..268005ab6ce 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -26,7 +26,7 @@ import * as arrify from 'arrify'; import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; -import {GrpcClient, GrpcClientOptions} from 'google-gax'; +import {GrpcClient} from 'google-gax'; import {ChannelCredentials} from 'grpc'; import * as is from 'is'; @@ -631,9 +631,15 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); */ - createQuery(namespace: string, kind?: string) { + createQuery(kind?: string): Query; + createQuery(kind?: string[]): Query; + createQuery(namespace: string, kind: string): Query; + createQuery(namespace: string, kind: string[]): Query; + createQuery(namespaceOrKind?: string|string[], kind?: string|string[]): + Query { + let namespace = namespaceOrKind as string; if (arguments.length < 2) { - kind = namespace; + kind = namespaceOrKind; namespace = this.namespace!; } return new Query(this, namespace, arrify(kind)); @@ -851,6 +857,8 @@ export interface TransactionOptions { readOnly?: boolean; } +export {DatastoreRequest, Query, Transaction}; + export interface DatastoreOptions extends GoogleAuthOptions { namespace?: string; apiEndpoint?: string; diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index a2a05f3400c..6bb1e1c3efc 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -70,11 +70,11 @@ class Query { limitVal: number; offsetVal: number; - constructor(scope?: Datastore|Transaction, kinds?: string[]); + constructor(scope?: Datastore|Transaction, kinds?: string[]|null); constructor( - scope?: Datastore|Transaction, namespace?: string, kinds?: string[]); + scope?: Datastore|Transaction, namespace?: string|null, kinds?: string[]); constructor( - scope?: Datastore|Transaction, namespaceOrKinds?: string|string[], + scope?: Datastore|Transaction, namespaceOrKinds?: string|string[]|null, kinds?: string[]) { let namespace = namespaceOrKinds as string | null; if (!kinds) { diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index c46d6a2c039..95b5dd0c11c 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -25,7 +25,7 @@ import * as streamEvents from 'stream-events'; import * as through from 'through2'; import {google} from '../proto/datastore'; import {CallOptions} from 'google-gax'; -import {Stream} from 'stream'; +import {Transform} from 'stream'; // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -232,7 +232,7 @@ class DatastoreRequest { * }); */ createReadStream(keys: Entities, options: CreateReadStreamOptions = {}): - Stream { + Transform { keys = arrify(keys).map(entity.keyToKeyProto); if (keys.length === 0) { throw new Error('At least one Key object is required.'); @@ -467,12 +467,12 @@ class DatastoreRequest { * }); */ get(keys: Entities, - options?: CreateReadStreamOptions): Promise; + options?: CreateReadStreamOptions): Promise; get(keys: Entities, callback: GetCallback): void; get(keys: Entities, options: CreateReadStreamOptions, callback: GetCallback): void; get(keys: Entities, optionsOrCallback?: CreateReadStreamOptions|GetCallback, - cb?: GetCallback): void|Promise { + cb?: GetCallback): void|Promise { const options = typeof optionsOrCallback === 'object' && optionsOrCallback !== null ? optionsOrCallback : @@ -663,7 +663,7 @@ class DatastoreRequest { * this.end(); * }); */ - runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Stream { + runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Transform { query = extend(true, new Query(), query); const makeRequest = (query: Query) => { diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 7af163f34f6..10356483e7a 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -296,8 +296,8 @@ class Transaction extends DatastoreRequest { * }); * }); */ - createQuery(namespace: string, kind?: string): Query { - return this.datastore.createQuery.call(this, namespace, kind); + createQuery(namespace: string, kind?: string|string[]): Query { + return this.datastore.createQuery.call(this, namespace, kind as string[]); } /** diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index f1a89266560..1cd42ce7685 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -24,14 +24,15 @@ describe('Datastore', () => { // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. const key = datastore.key; - datastore.key = function(options) { + // tslint:disable-next-line no-any + datastore.key = function(options: any) { const keyObject = key.call(this, options); testKinds.push(keyObject.kind); return keyObject; }; after(async () => { - async function deleteEntities(kind) { + async function deleteEntities(kind: string) { const query = datastore.createQuery(kind).select('__key__'); const [entities] = await datastore.runQuery(query); const keys = entities.map(entity => { diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index d42941f475e..8854ae54755 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -17,9 +17,10 @@ import * as assert from 'assert'; import * as extend from 'extend'; import {Datastore} from '../src'; +import {Entity, entity} from '../src/entity'; describe('entity', () => { - let entity; + let entity: Entity; beforeEach(() => { delete require.cache[require.resolve('../src/entity.js')]; @@ -188,7 +189,7 @@ describe('entity', () => { let run = false; const decodeValueProto = entity.decodeValueProto; - entity.decodeValueProto = (valueProto) => { + entity.decodeValueProto = (valueProto: {}) => { if (!run) { run = true; return decodeValueProto(valueProto); @@ -256,7 +257,7 @@ describe('entity', () => { entityValue: expectedValue, }; - entity.entityFromEntityProto = (entityProto) => { + entity.entityFromEntityProto = (entityProto: {}) => { assert.strictEqual(entityProto, expectedValue); return expectedValue; }; @@ -272,7 +273,7 @@ describe('entity', () => { keyValue: expectedValue, }; - entity.keyFromKeyProto = (keyProto) => { + entity.keyFromKeyProto = (keyProto: {}) => { assert.strictEqual(keyProto, expectedValue); return expectedValue; }; @@ -340,7 +341,7 @@ describe('entity', () => { integerValue: value, }; - entity.Int = function(value_) { + entity.Int = function(value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; @@ -365,7 +366,7 @@ describe('entity', () => { doubleValue: value, }; - entity.Double = function(value_) { + entity.Double = function(value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; @@ -439,7 +440,7 @@ describe('entity', () => { let run = false; const encodeValue = entity.encodeValue; - entity.encodeValue = (value_) => { + entity.encodeValue = (value_: {}) => { if (!run) { run = true; return encodeValue(value_); @@ -462,7 +463,7 @@ describe('entity', () => { keyValue: value, }; - entity.keyToKeyProto = (key) => { + entity.keyToKeyProto = (key: {}) => { assert.strictEqual(key, value); return value; }; @@ -486,7 +487,7 @@ describe('entity', () => { let run = false; const encodeValue = entity.encodeValue; - entity.encodeValue = (value_) => { + entity.encodeValue = (value_: {}) => { if (!run) { run = true; return encodeValue(value_); @@ -570,7 +571,7 @@ describe('entity', () => { properties: entityObject.data, }; - entity.encodeValue = (value_) => { + entity.encodeValue = (value_: {}) => { assert.strictEqual(value_, value); return value; }; @@ -1021,12 +1022,12 @@ describe('entity', () => { const expectedResults = entityProto; - entity.keyFromKeyProto = (key_) => { + entity.keyFromKeyProto = (key_: {}) => { assert.strictEqual(key_, key); return key; }; - entity.entityFromEntityProto = (entityProto_) => { + entity.entityFromEntityProto = (entityProto_: {}) => { assert.strictEqual(entityProto_, entityProto); return entityProto; }; @@ -1044,7 +1045,7 @@ describe('entity', () => { path: ['Kind', 123], }); - entity.keyToKeyProto = (key_) => { + entity.keyToKeyProto = (key_: {}) => { assert.strictEqual(key_, key); setImmediate(done); return key; @@ -1102,7 +1103,7 @@ describe('entity', () => { it('should set the namespace', (done) => { entity.Key = class { - constructor(keyOptions) { + constructor(keyOptions: entity.KeyOptions) { assert.strictEqual(keyOptions.namespace, NAMESPACE); done(); } @@ -1112,7 +1113,7 @@ describe('entity', () => { it('should create a proper Key', (done) => { entity.Key = class { - constructor(keyOptions) { + constructor(keyOptions: entity.KeyOptions) { assert.deepStrictEqual(keyOptions, { namespace: NAMESPACE, path: ['Kind', new entity.Int(111), 'Kind2', 'name'], diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index e8543f167d8..481d729100c 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -18,6 +18,10 @@ import * as assert from 'assert'; import * as gax from 'google-gax'; import * as proxyquire from 'proxyquire'; +import * as ds from '../src'; +import {Datastore, DatastoreOptions} from '../src'; +import {entity} from '../src/entity'; + const v1 = require('../src/v1/index.js'); // tslint:disable-next-line no-any @@ -25,7 +29,7 @@ const fakeEntity: any = { KEY_SYMBOL: Symbol('fake key symbol'), Int: class { value: {}; - constructor(value) { + constructor(value: {}) { this.value = value; } }, @@ -34,7 +38,7 @@ const fakeEntity: any = { }, Double: class { value: {}; - constructor(value) { + constructor(value: {}) { this.value = value; } }, @@ -43,7 +47,7 @@ const fakeEntity: any = { }, GeoPoint: class { value: {}; - constructor(value) { + constructor(value: {}) { this.value = value; } }, @@ -61,16 +65,16 @@ const fakeEntity: any = { }, }; -let googleAuthOverride; +let googleAuthOverride: Function|null; function fakeGoogleAuth() { return (googleAuthOverride || (() => {})).apply(null, arguments); } -let createInsecureOverride; +let createInsecureOverride: Function|null; const fakeGoogleGax = { GrpcClient: class extends gax.GrpcClient{ - constructor(opts) { + constructor(opts: gax.GrpcClientOptions) { // super constructor must be called first! super(opts); this.grpc = { @@ -103,8 +107,8 @@ function FakeV1() {} describe('Datastore', () => { // tslint:disable-next-line variable-name - let Datastore; - let datastore; + let Datastore: typeof ds.Datastore; + let datastore: Datastore; const PROJECT_ID = 'project-id'; const NAMESPACE = 'namespace'; @@ -223,7 +227,7 @@ describe('Datastore', () => { const options = { a: 'b', c: 'd', - }; + } as DatastoreOptions; const datastore = new Datastore(options); @@ -245,16 +249,14 @@ describe('Datastore', () => { it('should set port if detected', () => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - const port = 99; Datastore.prototype.determineBaseUrl_ = function() { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; this.port_ = port; }; - const datastore = new Datastore(OPTIONS); - - assert.strictEqual(datastore.options.port, port); + // tslint:disable-next-line no-any + assert.strictEqual((datastore.options as any).port, port); }); it('should set grpc ssl credentials if custom endpoint', () => { @@ -334,7 +336,7 @@ describe('Datastore', () => { const value = 0.42; let called = false; const saved = fakeEntity.isDsDouble; - fakeEntity.isDsDouble = (arg) => { + fakeEntity.isDsDouble = (arg: {}) => { assert.strictEqual(arg, value); called = true; return false; @@ -356,7 +358,7 @@ describe('Datastore', () => { const value = {fakeLatitude: 1, fakeLongitude: 2}; let called = false; const saved = fakeEntity.isDsGeoPoint; - fakeEntity.isDsGeoPoint = (arg) => { + fakeEntity.isDsGeoPoint = (arg: {}) => { assert.strictEqual(arg, value); called = true; return false; @@ -378,7 +380,7 @@ describe('Datastore', () => { const value = 42; let called = false; const saved = fakeEntity.isDsInt; - fakeEntity.isDsInt = (arg) => { + fakeEntity.isDsInt = (arg: {}) => { assert.strictEqual(arg, value); called = true; return false; @@ -400,7 +402,7 @@ describe('Datastore', () => { const value = {zz: true}; let called = false; const saved = fakeEntity.isDsKey; - fakeEntity.isDsKey = (arg) => { + fakeEntity.isDsKey = (arg: {}) => { assert.strictEqual(arg, value); called = true; return false; @@ -468,7 +470,8 @@ describe('Datastore', () => { const namespace = 'namespace'; const kind = ['Kind']; - const query = datastore.createQuery(namespace, kind); + // tslint:disable-next-line no-any + const query: any = datastore.createQuery(namespace, kind); assert(query instanceof FakeQuery); assert.strictEqual(query.calledWith_[0], datastore); @@ -478,16 +481,16 @@ describe('Datastore', () => { it('should include the default namespace', () => { const kind = ['Kind']; - const query = datastore.createQuery(kind); - + // tslint:disable-next-line no-any + const query: any = datastore.createQuery(kind); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); assert.deepStrictEqual(query.calledWith_[2], kind); }); it('should include the default namespace in a kindless query', () => { - const query = datastore.createQuery(); - + // tslint:disable-next-line no-any + const query: any = datastore.createQuery(); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); assert.deepStrictEqual(query.calledWith_[2], []); @@ -496,16 +499,16 @@ describe('Datastore', () => { describe('key', () => { it('should return a Key object', () => { - const options = {}; - const key = datastore.key(options); - + const options = {} as entity.KeyOptions; + // tslint:disable-next-line no-any + const key: any = datastore.key(options); assert.strictEqual(key.calledWith_[0], options); }); it('should use a non-object argument as the path', () => { const options = 'path'; - const key = datastore.key(options); - + // tslint:disable-next-line no-any + const key: any = datastore.key(options); assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); assert.deepStrictEqual(key.calledWith_[0].path, [options]); }); @@ -525,7 +528,7 @@ describe('Datastore', () => { }); describe('determineBaseUrl_', () => { - function setHost(host) { + function setHost(host: string) { process.env.DATASTORE_EMULATOR_HOST = host; } diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 8c72b4036c8..5847574004d 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -15,13 +15,15 @@ */ import * as assert from 'assert'; +const {Query} = require('../src/query'); +import {Datastore} from '../src'; describe('Query', () => { - const SCOPE = {}; + const SCOPE = {} as Datastore; const NAMESPACE = 'Namespace'; - const KINDS = 'Kind'; + const KINDS = ['Kind']; + - const Query = require('../src/query.js').Query; let query; beforeEach(() => { @@ -45,7 +47,7 @@ describe('Query', () => { [new Query(SCOPE, '', KINDS), new Query(SCOPE, null, KINDS), new Query(SCOPE, undefined, KINDS), - new Query(SCOPE, 0, KINDS), + new Query(SCOPE, 0 as {} as string, KINDS), new Query(SCOPE, KINDS), ].forEach((query) => { assert.strictEqual(query.namespace, null); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 8f037f3949a..fe870f9de66 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -22,13 +22,13 @@ import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; import * as through from 'through2'; - +import * as ds from '../src'; import {entity, KeyProto} from '../src/entity.js'; import {Query, QueryProto} from '../src/query.js'; let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll(klass) { + promisifyAll(klass: Function) { if (klass.name === 'DatastoreRequest') { promisified = true; } @@ -41,7 +41,7 @@ const fakePjy = { }, }; -let v1FakeClientOverride; +let v1FakeClientOverride: Function|null; const fakeV1 = { FakeClient: class { constructor() { @@ -52,13 +52,14 @@ const fakeV1 = { class FakeQuery extends Query {} -let pjyOverride; +let pjyOverride: Function|null; describe('Request', () => { // tslint:disable-next-line variable-name - let Request; - let request; - let key; + let Request: typeof ds.DatastoreRequest; + // tslint:disable-next-line no-any + let request: any; + let key: entity.Key; const sandbox = sinon.createSandbox(); before(() => { @@ -104,7 +105,8 @@ describe('Request', () => { method: 'insert', }; const expectedPreparedEntityObject = extend(true, {}, obj); - const preparedEntityObject = Request.prepareEntityObject_(obj); + // tslint:disable-next-line no-any + const preparedEntityObject = Request.prepareEntityObject_(obj) as any; assert.notStrictEqual(preparedEntityObject, obj); assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); assert.deepStrictEqual( @@ -115,17 +117,16 @@ describe('Request', () => { const key = {}; const entityObject = {data: true}; entityObject[entity.KEY_SYMBOL] = key; - - const preparedEntityObject = Request.prepareEntityObject_(entityObject); - + const preparedEntityObject = + // tslint:disable-next-line no-any + Request.prepareEntityObject_(entityObject) as any; assert.strictEqual(preparedEntityObject.key, key); assert.strictEqual(preparedEntityObject.data.data, entityObject.data); }); }); describe('allocateIds', () => { - const INCOMPLETE_KEY = {}; - + const INCOMPLETE_KEY = {} as entity.Key; const ALLOCATIONS = 2; const OPTIONS = { allocations: ALLOCATIONS, @@ -158,7 +159,7 @@ describe('Request', () => { const expectedKeys: Array<{}> = []; expectedKeys.length = ALLOCATIONS; expectedKeys.fill(keyProto); - assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); + assert.deepStrictEqual(config.reqOpts!.keys, expectedKeys); assert.strictEqual(config.gaxOpts, undefined); done(); }; @@ -170,7 +171,7 @@ describe('Request', () => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); request.request_ = config => { - assert.strictEqual(config.reqOpts.keys.length, ALLOCATIONS); + assert.strictEqual(config.reqOpts!.keys.length, ALLOCATIONS); done(); }; request.allocateIds(INCOMPLETE_KEY, ALLOCATIONS, assert.ifError); @@ -221,7 +222,7 @@ describe('Request', () => { beforeEach(() => { request.request_ = (_, callback) => { - callback(null, API_RESPONSE); + callback(null!, API_RESPONSE); }; }); @@ -250,7 +251,7 @@ describe('Request', () => { it('should throw if no keys are provided', () => { assert.throws(() => { - request.createReadStream(); + request.createReadStream(null!); }, /At least one Key object is required/); }); @@ -269,7 +270,7 @@ describe('Request', () => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); assert.deepStrictEqual( - config.reqOpts.keys[0], entity.keyToKeyProto(key)); + config.reqOpts!.keys[0], entity.keyToKeyProto(key)); done(); }; const stream = request.createReadStream(key); @@ -291,7 +292,7 @@ describe('Request', () => { it('should allow setting strong read consistency', done => { request.request_ = config => { - assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); + assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 1); done(); }; @@ -302,7 +303,7 @@ describe('Request', () => { it('should allow setting strong eventual consistency', done => { request.request_ = config => { - assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); + assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 2); done(); }; @@ -335,7 +336,8 @@ describe('Request', () => { stream.on('data', () => {}).on('error', () => { setImmediate(() => { - assert.strictEqual(stream._destroyed, true); + // tslint:disable-next-line no-any + assert.strictEqual((stream as any)._destroyed, true); done(); }); }); @@ -407,7 +409,7 @@ describe('Request', () => { beforeEach(() => { request.request_ = (_, callback) => { - callback(null, apiResponse); + callback(null!, apiResponse); }; }); @@ -428,7 +430,7 @@ describe('Request', () => { numTimesCalled++; if (numTimesCalled === 1) { - callback(null, apiResponseWithDeferred); + callback(null!, apiResponseWithDeferred); return; } @@ -436,7 +438,7 @@ describe('Request', () => { apiResponseWithDeferred.deferred.map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); - assert.deepStrictEqual(config.reqOpts.keys, expectedKeys); + assert.deepStrictEqual(config.reqOpts!.keys, expectedKeys); done(); }; @@ -459,7 +461,7 @@ describe('Request', () => { request.request_ = (config, callback) => { setImmediate(() => { - callback(null, apiResponseWithMultiEntities); + callback(null!, apiResponseWithMultiEntities); }); }; @@ -484,7 +486,7 @@ describe('Request', () => { request.request_ = (config, callback) => { lookupCount++; setImmediate(() => { - callback(null, apiResponseWithDeferred); + callback(null!, apiResponseWithDeferred); }); }; @@ -506,8 +508,9 @@ describe('Request', () => { request.request_ = (config, callback) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); - assert(is.object(config.reqOpts.mutations[0].delete)); - callback(); + // tslint:disable-next-line no-any + assert(is.object((config.reqOpts as any).mutations[0].delete)); + callback(null!); }; request.delete(key, done); }); @@ -515,7 +518,7 @@ describe('Request', () => { it('should return apiResponse in callback', done => { const resp = {success: true}; request.request_ = (config, callback) => { - callback(null, resp); + callback(null!, resp); }; request.delete(key, (err, apiResponse) => { assert.ifError(err); @@ -526,20 +529,18 @@ describe('Request', () => { it('should multi delete by keys', done => { request.request_ = (config, callback) => { - assert.strictEqual(config.reqOpts.mutations.length, 2); - callback(); + assert.strictEqual(config.reqOpts!.mutations!.length, 2); + callback(null!); }; request.delete([key, key], done); }); it('should allow customization of GAX options', done => { const gaxOptions = {}; - request.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; - request.delete(key, gaxOptions, assert.ifError); }); @@ -552,7 +553,6 @@ describe('Request', () => { it('should queue request', () => { request.delete(key); - assert(is.object(request.requests_[0].mutations[0].delete)); }); }); @@ -580,7 +580,8 @@ describe('Request', () => { request.get(keys, options, (err, entities) => { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); - const spy = request.createReadStream.getCall(0); + // tslint:disable-next-line no-any + const spy = (request.createReadStream as any).getCall(0); assert.strictEqual(spy.args[0], keys); assert.strictEqual(spy.args[1], options); done(); @@ -603,10 +604,10 @@ describe('Request', () => { }); it('should default options to an object', done => { - request.get(keys, null, err => { + request.get(keys, null!, err => { assert.ifError(err); - - const spy = request.createReadStream.getCall(0); + // tslint:disable-next-line no-any + const spy = (request.createReadStream as any).getCall(0); assert.deepStrictEqual(spy.args[1], {}); done(); }); @@ -645,7 +646,7 @@ describe('Request', () => { sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); - return preparedEntityObject; + return preparedEntityObject as {}; }); request.save = entities => { @@ -998,7 +999,7 @@ describe('Request', () => { sandbox.stub(entity, 'queryToQueryProto'); request.request_ = (config, callback) => { timesRequestCalled++; - callback(null, apiResponse); + callback(null!, apiResponse); }; const stream = request.runQueryStream({}); @@ -1180,7 +1181,7 @@ describe('Request', () => { key, method: 'insert', data: {k: 'v'}, - }; + } as {}; }); request.request_ = () => { @@ -1400,7 +1401,7 @@ describe('Request', () => { sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); - return preparedEntityObject; + return preparedEntityObject as {}; }); request.save = entities => { @@ -1442,7 +1443,7 @@ describe('Request', () => { sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { assert.strictEqual(obj, entityObject); - return preparedEntityObject; + return preparedEntityObject as {}; }); request.save = entities => { diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 6c3eb15b49e..fd25c9355fa 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -584,7 +584,6 @@ describe('Transaction', () => { it('should set transaction id', done => { delete transaction.id; - transaction.run((err) => { assert.ifError(err); assert.strictEqual(transaction.id, TRANSACTION_ID); @@ -610,18 +609,13 @@ describe('Transaction', () => { {key: key('Product234'), data: 234}, {key: key('Product345'), data: 345}, ]; - transaction.save(entities); - assert.strictEqual(transaction.modifiedEntities_.length, entities.length); - transaction.modifiedEntities_.forEach((queuedEntity) => { assert.strictEqual(queuedEntity.method, 'save'); - const match = entities.filter((ent) => { return ent.key === queuedEntity.entity.key; })[0]; - assert.deepStrictEqual(queuedEntity.args, [match]); }); }); From 746d5f62c9e980e0fefe2dc51033b7b8ca119dc0 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sun, 10 Feb 2019 20:53:13 -0800 Subject: [PATCH 324/820] build: create docs test npm scripts (#328) --- handwritten/nodejs-datastore/package.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 142899c1e8b..60c6a12b7d5 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -39,7 +39,9 @@ "prepare": "npm run compile", "pretest": "npm run compile", "proto": "npm run proto:datastore", - "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -o proto/datastore.d.ts -" + "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -o proto/datastore.d.ts -", + "docs-test": "blcl docs -r --exclude www.googleapis.com", + "predocs-test": "npm run docs" }, "dependencies": { "@google-cloud/projectify": "^0.3.2", @@ -82,6 +84,7 @@ "prettier": "^1.13.5", "proxyquire": "^2.0.1", "sinon": "^7.0.0", - "typescript": "~3.3.0" + "typescript": "~3.3.0", + "broken-link-checker-local": "^0.2.0" } } From 8c5d3a9eb03acb7f16299fe4b62a14da8304cec4 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 11 Feb 2019 09:53:48 -0800 Subject: [PATCH 325/820] Release v3.1.0 (#327) --- handwritten/nodejs-datastore/CHANGELOG.md | 33 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 31097c6db4e..77db12642f2 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,39 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## v3.1.0 + +02-09-2019 17:57 PST + +This one's coming hot with fresh new TypeScript types 🔥 + +### New Features +- feat: typings for gapic files ([#307](https://github.com/googleapis/nodejs-datastore/pull/307)) + +### Bug fixes +- fix(types): Make gaxOptions optional in Transaction.rollback() ([#310](https://github.com/googleapis/nodejs-datastore/pull/310)) + +### Dependencies +- fix(deps): update dependency google-auth-library to v3 ([#302](https://github.com/googleapis/nodejs-datastore/pull/302)) +- fix(deps): update dependency google-gax to ^0.25.0 ([#316](https://github.com/googleapis/nodejs-datastore/pull/316)) +- fix(deps): update dependency google-gax to ^0.24.0 ([#312](https://github.com/googleapis/nodejs-datastore/pull/312)) + +### Documentation +- docs: update contributing path in README ([#322](https://github.com/googleapis/nodejs-datastore/pull/322)) +- chore: move CONTRIBUTING.md to root ([#321](https://github.com/googleapis/nodejs-datastore/pull/321)) +- docs: add lint/fix example to contributing guide ([#319](https://github.com/googleapis/nodejs-datastore/pull/319)) +- docs(samples): Update Datastore snippet for read only transaction +- docs(key): copy Datastore#key examples to Key ctor ([#306](https://github.com/googleapis/nodejs-datastore/pull/306)) + +### Internal / Testing Changes +- refactor: clean up types for tests ([#325](https://github.com/googleapis/nodejs-datastore/pull/325)) +- refactor: asyncify the system test ([#324](https://github.com/googleapis/nodejs-datastore/pull/324)) +- build: test using @grpc/grpc-js in CI ([#323](https://github.com/googleapis/nodejs-datastore/pull/323)) +- refactor(types): enable noImplicitAny for transaction.ts & request.ts ([#305](https://github.com/googleapis/nodejs-datastore/pull/305)) +- chore(deps): update dependency eslint-config-prettier to v4 ([#313](https://github.com/googleapis/nodejs-datastore/pull/313)) +- build: ignore googleapis.com in doc link check ([#311](https://github.com/googleapis/nodejs-datastore/pull/311)) +- chore: update year in the license headers. ([#304](https://github.com/googleapis/nodejs-datastore/pull/304)) + ## v3.0.1 01-15-2019 13:20 PST diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 60c6a12b7d5..f73c9960c76 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "3.0.1", + "version": "3.1.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 2851cd9ffe9..d004ecdc10a 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -12,7 +12,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^3.0.1", + "@google-cloud/datastore": "^3.1.0", "sinon": "^7.0.0", "yargs": "^12.0.1" }, From bb60fff57d2884b376e1bc4ea450ed4c8fcb84b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 12 Feb 2019 12:09:26 -0500 Subject: [PATCH 326/820] fix(deps): update dependency yargs to v13 (#329) --- handwritten/nodejs-datastore/samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d004ecdc10a..f2ce46deee7 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "dependencies": { "@google-cloud/datastore": "^3.1.0", "sinon": "^7.0.0", - "yargs": "^12.0.1" + "yargs": "^13.0.0" }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", From 6901dc04886c2f778b4fbc786305afdc34a0d306 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Thu, 14 Feb 2019 07:44:23 -0800 Subject: [PATCH 327/820] fix: throw on invalid credentials (#331) --- .../nodejs-datastore/src/v1/datastore_client.js | 4 ++++ handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index a559cdeb5f3..3ce9946ae22 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -139,6 +139,10 @@ class DatastoreClient { function() { const args = Array.prototype.slice.call(arguments, 0); return stub[methodName].apply(stub, args); + }, + err => + function() { + throw err; } ), defaults[methodName], diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 96f7248c9ca..ca66d44ad23 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-01-17T12:54:14.696232Z", + "updateTime": "2019-02-13T12:12:48.775500Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.6", - "dockerImage": "googleapis/artman@sha256:12722f2ca3fbc3b53cc6aa5f0e569d7d221b46bd876a2136497089dec5e3634e" + "version": "0.16.13", + "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0ac60e21a1aa86c07c1836865b35308ba8178b05", - "internalRef": "229626798" + "sha": "ca61898878f0926dd9dcc68ba90764f17133efe4", + "internalRef": "233680013" } }, { From aeccd38b9a2bf92fb43f3f67bbe3dbdf5ccf823e Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 14 Feb 2019 08:48:38 -0800 Subject: [PATCH 328/820] docs: update links in contrib guide (#334) --- handwritten/nodejs-datastore/CONTRIBUTING.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/CONTRIBUTING.md b/handwritten/nodejs-datastore/CONTRIBUTING.md index b958f235007..78aaa61b269 100644 --- a/handwritten/nodejs-datastore/CONTRIBUTING.md +++ b/handwritten/nodejs-datastore/CONTRIBUTING.md @@ -16,11 +16,9 @@ Please fill out either the individual or corporate Contributor License Agreement (CLA). * If you are an individual writing original source code and you're sure you - own the intellectual property, then you'll need to sign an [individual CLA] - (https://developers.google.com/open-source/cla/individual). + own the intellectual property, then you'll need to sign an [individual CLA](https://developers.google.com/open-source/cla/individual). * If you work for a company that wants to allow you to contribute your work, - then you'll need to sign a [corporate CLA] - (https://developers.google.com/open-source/cla/corporate). + then you'll need to sign a [corporate CLA](https://developers.google.com/open-source/cla/corporate). Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to From 9f65c081036ee8d1a131d259ac621f6176cf3a33 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 14 Feb 2019 12:08:38 -0800 Subject: [PATCH 329/820] build: use linkinator for docs test (#332) --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f73c9960c76..6322759e3d8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -40,7 +40,7 @@ "pretest": "npm run compile", "proto": "npm run proto:datastore", "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -o proto/datastore.d.ts -", - "docs-test": "blcl docs -r --exclude www.googleapis.com", + "docs-test": "linkinator docs -r --skip www.googleapis.com", "predocs-test": "npm run docs" }, "dependencies": { @@ -85,6 +85,6 @@ "proxyquire": "^2.0.1", "sinon": "^7.0.0", "typescript": "~3.3.0", - "broken-link-checker-local": "^0.2.0" + "linkinator": "^1.1.2" } } From 554c34b99970ef068b7c267a51fbf9af571d0339 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 14 Feb 2019 12:08:57 -0800 Subject: [PATCH 330/820] fix(deps): update dependency @google-cloud/promisify to ^0.4.0 (#333) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6322759e3d8..48750825b6b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@google-cloud/projectify": "^0.3.2", - "@google-cloud/promisify": "^0.3.0", + "@google-cloud/promisify": "^0.4.0", "arrify": "^1.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.1", From df8f7ca9cf98e2c3ba1558b7e720edef42bbfaec Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 18 Feb 2019 22:46:01 -0800 Subject: [PATCH 331/820] fix: include proto d.ts in the build (#335) --- handwritten/nodejs-datastore/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 48750825b6b..b8f36d9d78f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -10,6 +10,7 @@ "repository": "googleapis/nodejs-datastore", "main": "./build/src/index.js", "files": [ + "build/proto", "build/protos", "build/src" ], @@ -35,7 +36,7 @@ "system-test": "mocha build/system-test --timeout 600000", "fix": "gts fix && eslint '**/*.js' --fix", "clean": "gts clean", - "compile": "tsc -p . && cp -r src/v1 build/src && cp -r protos build && cp test/*.js build/test", + "compile": "tsc -p . && cp -r src/v1 build/src && cp -r proto* build && cp test/*.js build/test", "prepare": "npm run compile", "pretest": "npm run compile", "proto": "npm run proto:datastore", From f6171c3dee6a23b6c3d1c05fecb5c2fe9a44ecc9 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 18 Feb 2019 22:53:01 -0800 Subject: [PATCH 332/820] Release v3.1.1 (#336) --- handwritten/nodejs-datastore/CHANGELOG.md | 14 ++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 77db12642f2..a39b8c19ab9 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,20 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## v3.1.1 + +02-18-2019 22:46 PST + +### Bug fixes +- fix: include proto d.ts in the build ([#335](https://github.com/googleapis/nodejs-datastore/pull/335)) +- fix(deps): update dependency @google-cloud/promisify to ^0.4.0 ([#333](https://github.com/googleapis/nodejs-datastore/pull/333)) +- fix: throw on invalid credentials ([#331](https://github.com/googleapis/nodejs-datastore/pull/331)) +- fix(deps): update dependency yargs to v13 ([#329](https://github.com/googleapis/nodejs-datastore/pull/329)) + +### Documentation +- build: use linkinator for docs test ([#332](https://github.com/googleapis/nodejs-datastore/pull/332)) +- docs: update links in contrib guide ([#334](https://github.com/googleapis/nodejs-datastore/pull/334)) + ## v3.1.0 02-09-2019 17:57 PST diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b8f36d9d78f..9a386cc4b26 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "3.1.0", + "version": "3.1.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index f2ce46deee7..dc35669c89b 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -12,7 +12,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^3.1.0", + "@google-cloud/datastore": "^3.1.1", "sinon": "^7.0.0", "yargs": "^13.0.0" }, From b59da433d6e2ccf98cd47524ae671f738528422c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 19 Feb 2019 13:48:16 -0800 Subject: [PATCH 333/820] chore(deps): update dependency mocha to v6 (#338) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/system-test/datastore.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9a386cc4b26..e17b69b2998 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -79,7 +79,7 @@ "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", - "mocha": "^5.2.0", + "mocha": "^6.0.0", "nyc": "^13.0.0", "power-assert": "^1.5.0", "prettier": "^1.13.5", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index dc35669c89b..bd088d6f4be 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", - "mocha": "^5.2.0", + "mocha": "^6.0.0", "proxyquire": "^2.0.1" } } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 1cd42ce7685..73efa92cef7 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -565,7 +565,7 @@ describe('Datastore', () => { }); }); - describe('transactions', async () => { + describe('transactions', () => { it('should run in a transaction', async () => { const key = datastore.key(['Company', 'Google']); const obj = { From 3d4cb1fc46132db5b49b5cab51701c014d916413 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Wed, 20 Feb 2019 12:45:02 -0500 Subject: [PATCH 334/820] docs(samples): Update datastore_transaction_retry sample to use function arguments rather than closed variables. (#339) --- handwritten/nodejs-datastore/samples/concepts.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 91887917805..6192a419e2f 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1045,26 +1045,22 @@ class Transaction extends TestHelper { // [START datastore_transactional_retry] async function transferFundsWithRetry() { const maxTries = 5; - let currentAttempt = 1; - let delay = 100; - async function tryRequest() { + async function tryRequest(currentAttempt, delay) { try { await transferFunds(fromKey, toKey, 10); } catch (err) { if (currentAttempt <= maxTries) { // Use exponential backoff setTimeout(async () => { - currentAttempt++; - delay *= 2; - await tryRequest(); + await tryRequest(currentAttempt + 1, delay * 2); }, delay); } throw err; } } - await tryRequest(1, 5); + await tryRequest(1, 100); } // [END datastore_transactional_retry] await transferFundsWithRetry(); From a3681bf2bae9f69fe2f9fb3deb8c1345577c63fb Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Tue, 26 Feb 2019 05:53:12 -0800 Subject: [PATCH 335/820] chore: update proto docs and code style --- .../google/datastore/v1/datastore.proto | 51 ++++++++++--------- .../protos/google/datastore/v1/entity.proto | 8 +-- .../protos/google/datastore/v1/query.proto | 20 ++++---- .../doc/google/datastore/v1/doc_datastore.js | 35 ++++++++----- .../v1/doc/google/datastore/v1/doc_entity.js | 7 +-- .../v1/doc/google/datastore/v1/doc_query.js | 19 ++++--- handwritten/nodejs-datastore/synth.metadata | 10 ++-- 7 files changed, 86 insertions(+), 64 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 2a29a58cec7..51d69acb9db 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -27,7 +27,6 @@ option java_outer_classname = "DatastoreProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; - // Each RPC normalizes the partition IDs of the keys in its input entities, // and always returns entities with keys with normalized partition IDs. // This applies to all keys and entities, including those in values, except keys @@ -53,7 +52,8 @@ service Datastore { } // Begins a new transaction. - rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { + rpc BeginTransaction(BeginTransactionRequest) + returns (BeginTransactionResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:beginTransaction" body: "*" @@ -150,7 +150,8 @@ message RunQueryRequest { } } -// The response for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +// The response for +// [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. message RunQueryResponse { // A batch of query results (always present). QueryResultBatch batch = 1; @@ -159,7 +160,8 @@ message RunQueryResponse { Query query = 2; } -// The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The request for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionRequest { // The ID of the project against which to make the request. string project_id = 8; @@ -168,7 +170,8 @@ message BeginTransactionRequest { TransactionOptions transaction_options = 10; } -// The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The response for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionResponse { // The transaction identifier (always present). bytes transaction = 1; @@ -184,11 +187,10 @@ message RollbackRequest { bytes transaction = 1; } -// The response for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. -// (an empty message). -message RollbackResponse { - -} +// The response for +// [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. (an empty +// message). +message RollbackResponse {} // The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. message CommitRequest { @@ -198,7 +200,8 @@ message CommitRequest { MODE_UNSPECIFIED = 0; // Transactional: The mutations are either all applied, or none are applied. - // Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions). + // Learn about transactions + // [here](https://cloud.google.com/datastore/docs/concepts/transactions). TRANSACTIONAL = 1; // Non-transactional: The mutations may not apply as all or none. @@ -246,7 +249,8 @@ message CommitResponse { int32 index_updates = 4; } -// The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The request for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsRequest { // The ID of the project against which to make the request. string project_id = 8; @@ -256,14 +260,16 @@ message AllocateIdsRequest { repeated Key keys = 1; } -// The response for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The response for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsResponse { // The keys specified in the request (in the same order), each with // its key path completed with a newly allocated ID. repeated Key keys = 1; } -// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +// The request for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. message ReserveIdsRequest { // The ID of the project against which to make the request. string project_id = 8; @@ -276,10 +282,9 @@ message ReserveIdsRequest { repeated Key keys = 1; } -// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. -message ReserveIdsResponse { - -} +// The response for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { @@ -369,8 +374,10 @@ message ReadOptions { // Options for beginning a new transaction. // // Transactions can be created explicitly with calls to -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting -// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests. +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] +// or implicitly by setting +// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] +// in read requests. message TransactionOptions { // Options specific to read / write transactions. message ReadWrite { @@ -379,9 +386,7 @@ message TransactionOptions { } // Options specific to read-only transactions. - message ReadOnly { - - } + message ReadOnly {} // The `mode` of the transaction, indicating whether write operations are // supported. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index bab7953d62e..9decd2b5380 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -28,7 +28,6 @@ option java_outer_classname = "EntityProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; - // A partition ID identifies a grouping of entities. The grouping is always // by project and namespace, however the namespace ID may be empty. // @@ -47,7 +46,8 @@ option php_namespace = "Google\\Cloud\\Datastore\\V1"; // // Foreign partition IDs (in which the project ID does // not match the context project ID ) are discouraged. -// Reads and writes of foreign partition IDs may fail if the project is not in an active state. +// Reads and writes of foreign partition IDs may fail if the project is not in +// an active state. message PartitionId { // The ID of the project to which the entities belong. string project_id = 2; @@ -145,8 +145,8 @@ message Value { Key key_value = 5; // A UTF-8 encoded string value. - // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. - // Otherwise, may be set to at least 1,000,000 bytes. + // When `exclude_from_indexes` is false (it is indexed) , may have at most + // 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes. string string_value = 17; // A blob value. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 2efed915a74..872612c5dd2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -28,7 +28,6 @@ option java_outer_classname = "QueryProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; - // The result of fetching an entity from Datastore. message EntityResult { // Specifies what data the 'entity' field contains. @@ -56,12 +55,12 @@ message EntityResult { // The version of the entity, a strictly positive number that monotonically // increases with changes to the entity. // - // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity - // results. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. // - // For [missing][google.datastore.v1.LookupResponse.missing] entities in `LookupResponse`, this - // is the version of the snapshot that was used to look up the entity, and it - // is always set except for eventually consistent reads. + // For [missing][google.datastore.v1.LookupResponse.missing] entities in + // `LookupResponse`, this is the version of the snapshot that was used to look + // up the entity, and it is always set except for eventually consistent reads. int64 version = 4; // A cursor that points to the position after the result entity. @@ -91,12 +90,14 @@ message Query { // A starting point for the query results. Query cursors are // returned in query result batches and - // [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + // [can only be used to continue the same + // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). bytes start_cursor = 7; // An ending point for the query results. Query cursors are // returned in query result batches and - // [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + // [can only be used to limit the same + // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). bytes end_cursor = 8; // The number of results to skip. Applies before limit, but after all other @@ -217,7 +218,8 @@ message PropertyFilter { Value value = 3; } -// A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). +// A [GQL +// query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). message GqlQuery { // A string of the format described // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index f888ea71901..737b81518dc 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -109,7 +109,8 @@ const RunQueryRequest = { }; /** - * The response for Datastore.RunQuery. + * The response for + * Datastore.RunQuery. * * @property {Object} batch * A batch of query results (always present). @@ -130,7 +131,8 @@ const RunQueryResponse = { }; /** - * The request for Datastore.BeginTransaction. + * The request for + * Datastore.BeginTransaction. * * @property {string} projectId * The ID of the project against which to make the request. @@ -149,7 +151,8 @@ const BeginTransactionRequest = { }; /** - * The response for Datastore.BeginTransaction. + * The response for + * Datastore.BeginTransaction. * * @property {string} transaction * The transaction identifier (always present). @@ -181,8 +184,9 @@ const RollbackRequest = { }; /** - * The response for Datastore.Rollback. - * (an empty message). + * The response for + * Datastore.Rollback. (an empty + * message). * @typedef RollbackResponse * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} @@ -246,7 +250,8 @@ const CommitRequest = { /** * Transactional: The mutations are either all applied, or none are applied. - * Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions). + * Learn about transactions + * [here](https://cloud.google.com/datastore/docs/concepts/transactions). */ TRANSACTIONAL: 1, @@ -279,7 +284,8 @@ const CommitResponse = { }; /** - * The request for Datastore.AllocateIds. + * The request for + * Datastore.AllocateIds. * * @property {string} projectId * The ID of the project against which to make the request. @@ -299,7 +305,8 @@ const AllocateIdsRequest = { }; /** - * The response for Datastore.AllocateIds. + * The response for + * Datastore.AllocateIds. * * @property {Object[]} keys * The keys specified in the request (in the same order), each with @@ -316,7 +323,8 @@ const AllocateIdsResponse = { }; /** - * The request for Datastore.ReserveIds. + * The request for + * Datastore.ReserveIds. * * @property {string} projectId * The ID of the project against which to make the request. @@ -339,7 +347,8 @@ const ReserveIdsRequest = { }; /** - * The response for Datastore.ReserveIds. + * The response for + * Datastore.ReserveIds. * @typedef ReserveIdsResponse * @memberof google.datastore.v1 * @see [google.datastore.v1.ReserveIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} @@ -465,8 +474,10 @@ const ReadOptions = { * Options for beginning a new transaction. * * Transactions can be created explicitly with calls to - * Datastore.BeginTransaction or implicitly by setting - * ReadOptions.new_transaction in read requests. + * Datastore.BeginTransaction + * or implicitly by setting + * ReadOptions.new_transaction + * in read requests. * * @property {Object} readWrite * The transaction should allow both reads and writes. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index 183929ba554..b7575337aa5 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -34,7 +34,8 @@ * * Foreign partition IDs (in which the project ID does * not match the context project ID ) are discouraged. - * Reads and writes of foreign partition IDs may fail if the project is not in an active state. + * Reads and writes of foreign partition IDs may fail if the project is not in + * an active state. * * @property {string} projectId * The ID of the project to which the entities belong. @@ -172,8 +173,8 @@ const ArrayValue = { * * @property {string} stringValue * A UTF-8 encoded string value. - * When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. - * Otherwise, may be set to at least 1,000,000 bytes. + * When `exclude_from_indexes` is false (it is indexed) , may have at most + * 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes. * * @property {string} blobValue * A blob value. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 9e9f15718a6..7b0b766acd6 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -27,12 +27,12 @@ * The version of the entity, a strictly positive number that monotonically * increases with changes to the entity. * - * This field is set for `FULL` entity - * results. + * This field is set for + * `FULL` entity results. * - * For missing entities in `LookupResponse`, this - * is the version of the snapshot that was used to look up the entity, and it - * is always set except for eventually consistent reads. + * For missing entities in + * `LookupResponse`, this is the version of the snapshot that was used to look + * up the entity, and it is always set except for eventually consistent reads. * * @property {string} cursor * A cursor that points to the position after the result entity. @@ -113,12 +113,14 @@ const EntityResult = { * @property {string} startCursor * A starting point for the query results. Query cursors are * returned in query result batches and - * [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + * [can only be used to continue the same + * query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). * * @property {string} endCursor * An ending point for the query results. Query cursors are * returned in query result batches and - * [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + * [can only be used to limit the same + * query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). * * @property {number} offset * The number of results to skip. Applies before limit, but after all other @@ -363,7 +365,8 @@ const PropertyFilter = { }; /** - * A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). + * A [GQL + * query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). * * @property {string} queryString * A string of the format described diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index ca66d44ad23..3a20d1e533a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-02-13T12:12:48.775500Z", + "updateTime": "2019-02-26T12:27:48.396151Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.13", - "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" + "version": "0.16.14", + "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "ca61898878f0926dd9dcc68ba90764f17133efe4", - "internalRef": "233680013" + "sha": "29f098cb03a9983cc9cb15993de5da64419046f2", + "internalRef": "235621085" } }, { From 7cf6867f04a82882adfbc8263e8dc92c52087137 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Tue, 5 Mar 2019 05:41:03 -0800 Subject: [PATCH 336/820] build: update release configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR was generated using Autosynth. :rainbow: Here's the log from Synthtool: ``` synthtool > Executing /tmpfs/src/git/autosynth/working_repo/synth.py. synthtool > Ensuring dependencies. synthtool > Pulling artman image. latest: Pulling from googleapis/artman Digest: sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7 Status: Image is up to date for googleapis/artman:latest synthtool > Cloning googleapis. synthtool > Running generator for google/datastore/artman_datastore.yaml. synthtool > Generated code into /home/kbuilder/.cache/synthtool/googleapis/artman-genfiles/js/datastore-v1. synthtool > Replaced '../../package.json' in src/v1/datastore_client.js. .eslintignore .eslintrc.yml .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md .github/ISSUE_TEMPLATE/support_request.md .jsdoc.js .kokoro/common.cfg .kokoro/continuous/node10/common.cfg .kokoro/continuous/node10/test.cfg .kokoro/continuous/node11/common.cfg .kokoro/continuous/node11/test.cfg .kokoro/continuous/node6/common.cfg .kokoro/continuous/node6/test.cfg .kokoro/continuous/node8/common.cfg .kokoro/continuous/node8/docs.cfg .kokoro/continuous/node8/lint.cfg .kokoro/continuous/node8/samples-test.cfg .kokoro/continuous/node8/system-test-grpcjs.cfg .kokoro/continuous/node8/system-test.cfg .kokoro/continuous/node8/test.cfg .kokoro/docs.sh .kokoro/lint.sh .kokoro/presubmit/node10/common.cfg .kokoro/presubmit/node10/test.cfg .kokoro/presubmit/node11/common.cfg .kokoro/presubmit/node11/test.cfg .kokoro/presubmit/node6/common.cfg .kokoro/presubmit/node6/test.cfg .kokoro/presubmit/node8/common.cfg .kokoro/presubmit/node8/docs.cfg .kokoro/presubmit/node8/lint.cfg .kokoro/presubmit/node8/samples-test.cfg .kokoro/presubmit/node8/system-test-grpcjs.cfg .kokoro/presubmit/node8/system-test.cfg .kokoro/presubmit/node8/test.cfg .kokoro/presubmit/windows/common.cfg .kokoro/presubmit/windows/test.cfg .kokoro/publish.sh .kokoro/release/publish.cfg .kokoro/samples-test.sh .kokoro/system-test.sh .kokoro/test.bat .kokoro/test.sh .kokoro/trampoline.sh .nycrc .prettierignore .prettierrc CODE_OF_CONDUCT.md CONTRIBUTING.md LICENSE codecov.yaml renovate.json > grpc@1.19.0 install /tmpfs/src/git/autosynth/working_repo/node_modules/grpc > node-pre-gyp install --fallback-to-build --library=static_library node-pre-gyp WARN Using needle for node-pre-gyp https download [grpc] Success: "/tmpfs/src/git/autosynth/working_repo/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" is installed via remote > protobufjs@6.8.8 postinstall /tmpfs/src/git/autosynth/working_repo/node_modules/protobufjs > node scripts/postinstall > @google-cloud/datastore@3.1.1 prepare /tmpfs/src/git/autosynth/working_repo > npm run compile > @google-cloud/datastore@3.1.1 compile /tmpfs/src/git/autosynth/working_repo > tsc -p . && cp -r src/v1 build/src && cp -r proto* build && cp test/*.js build/test npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) added 1146 packages from 1337 contributors and audited 7192 packages in 30.676s found 1 low severity vulnerability run `npm audit fix` to fix them, or `npm audit` for details > @google-cloud/datastore@3.1.1 fix /tmpfs/src/git/autosynth/working_repo > gts fix && eslint '**/*.js' --fix /tmpfs/src/git/autosynth/working_repo/samples/concepts.js 25:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/quickstart.js 20:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/system-test/tasks.test.js 18:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.js 23:29 error "@google-cloud/datastore" is not found node/no-missing-require ✖ 4 problems (4 errors, 0 warnings) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @google-cloud/datastore@3.1.1 fix: `gts fix && eslint '**/*.js' --fix` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @google-cloud/datastore@3.1.1 fix script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/kbuilder/.npm/_logs/2019-03-05T12_12_21_214Z-debug.log synthtool > Cleaned up 2 temporary directories. synthtool > Wrote metadata to synth.metadata. ``` --- handwritten/nodejs-datastore/synth.metadata | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 3a20d1e533a..8779cdf2954 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-02-26T12:27:48.396151Z", + "updateTime": "2019-03-05T12:12:21.223816Z", "sources": [ { "generator": { @@ -12,15 +12,15 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "29f098cb03a9983cc9cb15993de5da64419046f2", - "internalRef": "235621085" + "sha": "b4a22569c88f1f0444e889d8139ddacb799f287c", + "internalRef": "236712632" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.1.16" + "version": "2019.2.26" } } ], From cff53eeb3d38a5c5f86e70325a41a9a887c27e8e Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 5 Mar 2019 21:40:52 -0800 Subject: [PATCH 337/820] fix: add missing package, and add install test (#346) --- handwritten/nodejs-datastore/package.json | 13 ++++- .../system-test/fixtures/sample/package.json | 23 ++++++++ .../system-test/fixtures/sample/src/index.ts | 6 ++ .../system-test/fixtures/sample/tsconfig.json | 10 ++++ .../nodejs-datastore/system-test/install.ts | 56 +++++++++++++++++++ 5 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/package.json create mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts create mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json create mode 100644 handwritten/nodejs-datastore/system-test/install.ts diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e17b69b2998..bd9a3692559 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,6 +47,7 @@ "dependencies": { "@google-cloud/projectify": "^0.3.2", "@google-cloud/promisify": "^0.4.0", + "@types/duplexify": "^3.6.0", "arrify": "^1.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.1", @@ -62,30 +63,38 @@ "@google-cloud/nodejs-repo-tools": "^3.0.0", "@types/arrify": "^1.0.4", "@types/async": "^2.0.50", + "@types/execa": "^0.9.0", "@types/extend": "^3.0.0", "@types/is": "0.0.21", "@types/mocha": "^5.2.5", + "@types/mv": "^2.1.0", + "@types/ncp": "^2.0.1", "@types/proxyquire": "^1.3.28", "@types/sinon": "^7.0.2", "@types/through2": "^2.0.34", + "@types/tmp": "0.0.34", "assert-rejects": "^1.0.0", "codecov": "^3.0.2", "eslint": "^5.0.0", "eslint-config-prettier": "^4.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", + "execa": "^1.0.0", "google-proto-files": "^0.18.0", "gts": "^0.9.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", + "linkinator": "^1.1.2", "mocha": "^6.0.0", + "mv": "^2.1.1", + "npc": "0.0.1", "nyc": "^13.0.0", "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", "sinon": "^7.0.0", - "typescript": "~3.3.0", - "linkinator": "^1.1.2" + "tmp": "0.0.33", + "typescript": "~3.3.0" } } diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json b/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json new file mode 100644 index 00000000000..8535d6bd888 --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json @@ -0,0 +1,23 @@ +{ + "name": "datastore-sample-fixture", + "description": "An app we're using to test the library.", + "scripts": { + "check": "gts check", + "clean": "gts clean", + "compile": "tsc -p .", + "fix": "gts fix", + "prepare": "npm run compile", + "pretest": "npm run compile", + "posttest": "npm run check", + "start": "node build/src/index.js" + }, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/datastore": "file:./datastore.tgz" + }, + "devDependencies": { + "@types/node": "^10.3.0", + "typescript": "^3.0.0", + "gts": "^0.9.0" + } +} diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts new file mode 100644 index 00000000000..f6bd17e90fc --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -0,0 +1,6 @@ +import {Datastore} from '@google-cloud/datastore'; +async function main() { + const datastore = new Datastore(); + console.log(datastore); +} +main(); diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json b/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json new file mode 100644 index 00000000000..f893d7afb9b --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "./node_modules/gts/tsconfig-google.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/*.ts" + ] +} diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts new file mode 100644 index 00000000000..6afae6c235f --- /dev/null +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -0,0 +1,56 @@ +/** + * Copyright 2019 Google LLC. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as execa from 'execa'; +import * as mv from 'mv'; +import {ncp} from 'ncp'; +import * as tmp from 'tmp'; +import {promisify} from 'util'; + +const keep = false; +const mvp = promisify(mv) as {} as (...args: string[]) => Promise; +const ncpp = promisify(ncp); +const stagingDir = tmp.dirSync({keep, unsafeCleanup: true}); +const stagingPath = stagingDir.name; +const pkg = require('../../package.json'); + +describe('📦 pack and install', () => { + /** + * Create a staging directory with temp fixtures used to test on a fresh + * application. + */ + it('should be able to use the d.ts', async () => { + await execa('npm', ['pack', '--unsafe-perm']); + const tarball = `google-cloud-datastore-${pkg.version}.tgz`; + await mvp(tarball, `${stagingPath}/datastore.tgz`); + await ncpp('system-test/fixtures/sample', `${stagingPath}/`); + await execa( + 'npm', ['install', '--unsafe-perm'], + {cwd: `${stagingPath}/`, stdio: 'inherit'}); + await execa( + 'node', ['--throw-deprecation', 'build/src/index.js'], + {cwd: `${stagingPath}/`, stdio: 'inherit'}); + }); + + /** + * CLEAN UP - remove the staging directory when done. + */ + after('cleanup staging', () => { + if (!keep) { + stagingDir.removeCallback(); + } + }); +}); From b942fceeb6cf0e07ca6f5923f7ab21d8f4da7a3d Mon Sep 17 00:00:00 2001 From: Joe Cervino Date: Wed, 6 Mar 2019 14:33:19 -0500 Subject: [PATCH 338/820] refactor(ts): enable noImplicitAny on test/query.ts (#342) --- handwritten/nodejs-datastore/test/query.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 5847574004d..a8bcb817c9f 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -23,8 +23,8 @@ describe('Query', () => { const NAMESPACE = 'Namespace'; const KINDS = ['Kind']; - - let query; + // tslint:disable-next-line no-any + let query: any; beforeEach(() => { query = new Query(SCOPE, NAMESPACE, KINDS); From 08d452f5c28f3bc21ed604b092dc4aa4b2b3d5f6 Mon Sep 17 00:00:00 2001 From: Joe Cervino Date: Wed, 6 Mar 2019 14:33:54 -0500 Subject: [PATCH 339/820] refactor(ts): enable noImplicitAny on test/request.ts (#343) --- handwritten/nodejs-datastore/src/request.ts | 41 ++- handwritten/nodejs-datastore/test/request.ts | 262 ++++++++++--------- 2 files changed, 153 insertions(+), 150 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 95b5dd0c11c..6e13fe10c04 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -473,8 +473,7 @@ class DatastoreRequest { callback: GetCallback): void; get(keys: Entities, optionsOrCallback?: CreateReadStreamOptions|GetCallback, cb?: GetCallback): void|Promise { - const options = - typeof optionsOrCallback === 'object' && optionsOrCallback !== null ? + const options = typeof optionsOrCallback === 'object' && optionsOrCallback ? optionsOrCallback : {}; const callback = @@ -667,8 +666,7 @@ class DatastoreRequest { query = extend(true, new Query(), query); const makeRequest = (query: Query) => { - // tslint:disable-next-line no-any - const reqOpts: any = { + const reqOpts: Any = { query: entity.queryToQueryProto(query), }; @@ -701,8 +699,7 @@ class DatastoreRequest { return; } - // tslint:disable-next-line no-any - const info: any = { + const info: Any = { moreResults: resp.batch.moreResults, }; @@ -710,8 +707,7 @@ class DatastoreRequest { info.endCursor = resp.batch.endCursor.toString('base64'); } - // tslint:disable-next-line no-any - let entities: any[] = []; + let entities: Any[] = []; if (resp.batch.entityResults) { entities = entity.formatArray(resp.batch.entityResults); @@ -1050,17 +1046,16 @@ class DatastoreRequest { return; } - arrify(resp.mutationResults) - .forEach((result: Entity, index: number) => { //! Entity malo - if (!result.key) { - return; - } + arrify(resp.mutationResults).forEach((result, index) => { + if (!result.key) { + return; + } - if (insertIndexes[index]) { - const id = entity.keyFromKeyProto(result.key).id; - entities[index].key.id = id; - } - }); + if (insertIndexes[index]) { + const id = entity.keyFromKeyProto(result.key).id; + entities[index].key.id = id; + } + }); callback(null, resp); } @@ -1208,6 +1203,8 @@ class DatastoreRequest { } } +// tslint:disable-next-line no-any +type Any = any; export interface BooleanObject { [key: string]: boolean; } @@ -1253,8 +1250,7 @@ export interface Mutation extends google.datastore.v1.IMutation { [key: string]: Entity; } export interface PrepareEntityObject { - [key: string]: google.datastore.v1.Key| - undefined; // TODO: Fix "Symbol cannot be key" TS error + [key: string]: google.datastore.v1.Key|undefined; } export interface PrepareEntityObjectResponse { key?: google.datastore.v1.Key; @@ -1269,10 +1265,10 @@ export interface RequestCallback { } export interface RequestConfig { client: string; - gaxOpts?: number|CallOptions|KeyProto|undefined; + gaxOpts?: number|CallOptions|KeyProto; method: string; prepared?: boolean; - reqOpts?: RequestOptions; + reqOpts?: Entity|RequestOptions; } export interface RequestOptions { mutations?: []|Array<{delete: KeyProto;}>|Array<{}>; @@ -1284,7 +1280,6 @@ export interface RequestOptions { mode?: string; projectId?: string; } -export interface RequestResponse extends google.datastore.v1.ICommitResponse {} export interface RunQueryStreamOptions { gaxOptions?: CallOptions; consistency?: 'strong'|'eventual'; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index fe870f9de66..81f392ce0fd 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -18,13 +18,20 @@ import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import * as extend from 'extend'; +import {CallOptions} from 'grpc'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; import * as through from 'through2'; + +import {google} from '../proto/datastore'; import * as ds from '../src'; -import {entity, KeyProto} from '../src/entity.js'; +import {entity, Entity, KeyProto} from '../src/entity.js'; import {Query, QueryProto} from '../src/query.js'; +import {AllocateIdsRequestResponse, RequestConfig, RequestOptions} from '../src/request'; + +// tslint:disable-next-line no-any +type Any = any; let promisified = false; const fakePfy = Object.assign({}, pfy, { @@ -57,8 +64,7 @@ let pjyOverride: Function|null; describe('Request', () => { // tslint:disable-next-line variable-name let Request: typeof ds.DatastoreRequest; - // tslint:disable-next-line no-any - let request: any; + let request: Any; let key: entity.Key; const sandbox = sinon.createSandbox(); @@ -105,8 +111,7 @@ describe('Request', () => { method: 'insert', }; const expectedPreparedEntityObject = extend(true, {}, obj); - // tslint:disable-next-line no-any - const preparedEntityObject = Request.prepareEntityObject_(obj) as any; + const preparedEntityObject = Request.prepareEntityObject_(obj) as Any; assert.notStrictEqual(preparedEntityObject, obj); assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); assert.deepStrictEqual( @@ -118,8 +123,7 @@ describe('Request', () => { const entityObject = {data: true}; entityObject[entity.KEY_SYMBOL] = key; const preparedEntityObject = - // tslint:disable-next-line no-any - Request.prepareEntityObject_(entityObject) as any; + Request.prepareEntityObject_(entityObject) as Any; assert.strictEqual(preparedEntityObject.key, key); assert.strictEqual(preparedEntityObject.data.data, entityObject.data); }); @@ -152,7 +156,7 @@ describe('Request', () => { return keyProto; }); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'allocateIds'); @@ -170,7 +174,7 @@ describe('Request', () => { it('should allow a numeric shorthand for allocations', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.reqOpts!.keys.length, ALLOCATIONS); done(); }; @@ -184,7 +188,7 @@ describe('Request', () => { gaxOptions: {}, }); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -197,7 +201,7 @@ describe('Request', () => { const API_RESPONSE = {}; beforeEach(() => { - request.request_ = (_, callback) => { + request.request_ = (_: object, callback: Function) => { callback(ERROR, API_RESPONSE); }; }); @@ -205,12 +209,13 @@ describe('Request', () => { it('should exec callback with error & API response', done => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); - request.allocateIds(INCOMPLETE_KEY, OPTIONS, (err, keys, resp) => { - assert.strictEqual(err, ERROR); - assert.strictEqual(keys, null); - assert.strictEqual(resp, API_RESPONSE); - done(); - }); + request.allocateIds( + INCOMPLETE_KEY, OPTIONS, (err: Error, keys: null, resp: {}) => { + assert.strictEqual(err, ERROR); + assert.strictEqual(keys, null); + assert.strictEqual(resp, API_RESPONSE); + done(); + }); }); }); @@ -221,7 +226,7 @@ describe('Request', () => { }; beforeEach(() => { - request.request_ = (_, callback) => { + request.request_ = (_: object, callback: Function) => { callback(null!, API_RESPONSE); }; }); @@ -234,12 +239,15 @@ describe('Request', () => { assert.strictEqual(keyProto, API_RESPONSE.keys[0]); return key; }); - request.allocateIds(INCOMPLETE_KEY, OPTIONS, (err, keys, resp) => { - assert.ifError(err); - assert.deepStrictEqual(keys, [key]); - assert.strictEqual(resp, API_RESPONSE); - done(); - }); + request.allocateIds( + INCOMPLETE_KEY, OPTIONS, + (err: Error, keys: entity.Key[], + resp: AllocateIdsRequestResponse) => { + assert.ifError(err); + assert.deepStrictEqual(keys, [key]); + assert.strictEqual(resp, API_RESPONSE); + done(); + }); }); }); }); @@ -266,7 +274,7 @@ describe('Request', () => { }); it('should make correct request when stream is ready', done => { - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); assert.deepStrictEqual( @@ -282,7 +290,7 @@ describe('Request', () => { gaxOptions: {}, }; - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -291,7 +299,7 @@ describe('Request', () => { }); it('should allow setting strong read consistency', done => { - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 1); done(); }; @@ -302,7 +310,7 @@ describe('Request', () => { }); it('should allow setting strong eventual consistency', done => { - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 2); done(); }; @@ -317,7 +325,7 @@ describe('Request', () => { const apiResponse = {a: 'b', c: 'd'}; beforeEach(() => { - request.request_ = (_, callback) => { + request.request_ = (_: object, callback: Function) => { setImmediate(() => { callback(error, apiResponse); }); @@ -325,10 +333,12 @@ describe('Request', () => { }); it('should emit error', done => { - request.createReadStream(key).on('data', () => {}).on('error', err => { - assert.strictEqual(err, error); - done(); - }); + request.createReadStream(key) + .on('data', () => {}) + .on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }); }); it('should end stream', done => { @@ -336,8 +346,7 @@ describe('Request', () => { stream.on('data', () => {}).on('error', () => { setImmediate(() => { - // tslint:disable-next-line no-any - assert.strictEqual((stream as any)._destroyed, true); + assert.strictEqual((stream as Any)._destroyed, true); done(); }); }); @@ -394,21 +403,19 @@ describe('Request', () => { ], }; - // tslint:disable-next-line no-any - const expectedResult = entity.formatArray(apiResponse.found as any)[0]; + const expectedResult = entity.formatArray(apiResponse.found as Any)[0]; const apiResponseWithMultiEntities = extend(true, {}, apiResponse); const entities = apiResponseWithMultiEntities.found; entities.push(entities[0]); - // tslint:disable-next-line no-any - const apiResponseWithDeferred = extend(true, {}, apiResponse) as any; + const apiResponseWithDeferred = extend(true, {}, apiResponse) as Any; apiResponseWithDeferred.deferred = [ apiResponseWithDeferred.found[0].entity.key, ]; beforeEach(() => { - request.request_ = (_, callback) => { + request.request_ = (_: object, callback: Function) => { callback(null!, apiResponse); }; }); @@ -426,7 +433,7 @@ describe('Request', () => { it('should continue looking for deferred results', done => { let numTimesCalled = 0; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { numTimesCalled++; if (numTimesCalled === 1) { @@ -449,7 +456,7 @@ describe('Request', () => { request.createReadStream(key) .on('error', done) .on('data', - entity => { + (entity: Entity) => { assert.deepStrictEqual(entity, expectedResult); }) .on('end', done) @@ -459,7 +466,7 @@ describe('Request', () => { it('should not push more results if stream was ended', done => { let entitiesEmitted = 0; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { setImmediate(() => { callback(null!, apiResponseWithMultiEntities); }); @@ -483,7 +490,7 @@ describe('Request', () => { it('should not get more results if stream was ended', done => { let lookupCount = 0; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { lookupCount++; setImmediate(() => { callback(null!, apiResponseWithDeferred); @@ -505,11 +512,10 @@ describe('Request', () => { describe('delete', () => { it('should delete by key', done => { - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); - // tslint:disable-next-line no-any - assert(is.object((config.reqOpts as any).mutations[0].delete)); + assert(is.object((config.reqOpts as Any).mutations[0].delete)); callback(null!); }; request.delete(key, done); @@ -517,18 +523,20 @@ describe('Request', () => { it('should return apiResponse in callback', done => { const resp = {success: true}; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { callback(null!, resp); }; - request.delete(key, (err, apiResponse) => { - assert.ifError(err); - assert.deepStrictEqual(resp, apiResponse); - done(); - }); + request.delete( + key, + (err: Error, apiResponse: [google.datastore.v1.CommitResponse]) => { + assert.ifError(err); + assert.deepStrictEqual(resp, apiResponse); + done(); + }); }); it('should multi delete by keys', done => { - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { assert.strictEqual(config.reqOpts!.mutations!.length, 2); callback(null!); }; @@ -537,7 +545,7 @@ describe('Request', () => { it('should allow customization of GAX options', done => { const gaxOptions = {}; - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -577,11 +585,10 @@ describe('Request', () => { it('should return an array of entities', done => { const options = {}; - request.get(keys, options, (err, entities) => { + request.get(keys, options, (err: Error, entities: Entity[]) => { assert.ifError(err); assert.deepStrictEqual(entities, fakeEntities); - // tslint:disable-next-line no-any - const spy = (request.createReadStream as any).getCall(0); + const spy = (request.createReadStream as Any).getCall(0); assert.strictEqual(spy.args[0], keys); assert.strictEqual(spy.args[1], options); done(); @@ -589,7 +596,7 @@ describe('Request', () => { }); it('should return a single entity', done => { - request.get(key, (err, entity) => { + request.get(key, (err: Error, entity: Entity) => { assert.ifError(err); assert.strictEqual(entity, fakeEntities[0]); done(); @@ -597,17 +604,16 @@ describe('Request', () => { }); it('should allow options to be omitted', done => { - request.get(keys, err => { + request.get(keys, (err: Error) => { assert.ifError(err); done(); }); }); it('should default options to an object', done => { - request.get(keys, null!, err => { + request.get(keys, null!, (err: Error) => { assert.ifError(err); - // tslint:disable-next-line no-any - const spy = (request.createReadStream as any).getCall(0); + const spy = (request.createReadStream as Any).getCall(0); assert.deepStrictEqual(spy.args[1], {}); done(); }); @@ -628,7 +634,7 @@ describe('Request', () => { }); it('send an error to the callback', done => { - request.get(key, err => { + request.get(key, (err: Error) => { assert.strictEqual(err, error); done(); }); @@ -649,7 +655,7 @@ describe('Request', () => { return preparedEntityObject as {}; }); - request.save = entities => { + request.save = (entities: Entity[]) => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -658,7 +664,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = (entities, callback) => { + request.save = (entities: Entity[], callback: Function) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -703,10 +709,10 @@ describe('Request', () => { sandbox.stub(entity, 'queryToQueryProto').returns(queryProto); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'runQuery'); - assert(is.empty(config.reqOpts.readOptions)); + assert(is.empty(config.reqOpts!.readOptions)); assert.strictEqual(config.reqOpts.query, queryProto); assert.strictEqual( config.reqOpts.partitionId.namespaceId, query.namespace); @@ -724,7 +730,7 @@ describe('Request', () => { gaxOptions: {}, }; - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.gaxOpts, options.gaxOptions); done(); }; @@ -734,7 +740,7 @@ describe('Request', () => { it('should allow setting strong read consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); done(); }; @@ -746,7 +752,7 @@ describe('Request', () => { it('should allow setting strong eventual consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); done(); }; @@ -760,7 +766,7 @@ describe('Request', () => { const error = new Error('Error.'); beforeEach(() => { - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { callback(error); }; }); @@ -769,7 +775,7 @@ describe('Request', () => { sandbox.stub(entity, 'queryToQueryProto'); request.runQueryStream({}) .on('error', - err => { + (err: Error) => { assert.strictEqual(err, error); done(); }) @@ -778,7 +784,7 @@ describe('Request', () => { }); describe('success', () => { - const entityResultsPerApiCall = { + const entityResultsPerApiCall: Any = { 1: [{a: true}], 2: [{b: true}, {c: true}], }; @@ -792,9 +798,9 @@ describe('Request', () => { }, }; - let formatArrayStub; + let formatArrayStub: Any; beforeEach(() => { - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { callback(null, apiResponse); }; @@ -816,7 +822,7 @@ describe('Request', () => { request.runQueryStream({}) .on('error', done) - .on('data', entity => entities.push(entity)) + .on('data', (entity: Entity) => entities.push(entity)) .on('end', () => { assert.deepStrictEqual(entities, apiResponse.batch.entityResults); done(); @@ -845,7 +851,7 @@ describe('Request', () => { return entityResultsPerApiCall[timesRequestCalled]; }); - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { timesRequestCalled++; const resp = extend(true, {}, apiResponse); @@ -899,16 +905,16 @@ describe('Request', () => { }); const entities: Array<{}> = []; - let info; + let info: Any; request.runQueryStream(query) .on('error', done) .on('info', - (_info) => { + (_info: object) => { info = _info; }) .on('data', - (entity) => { + (entity: Entity) => { entities.push(entity); }) .on('end', () => { @@ -934,7 +940,7 @@ describe('Request', () => { limitVal: -1, }; - request.request_ = (_, callback) => { + request.request_ = (_: object, callback: Function) => { let batch; if (++timesRequestCalled === 2) { batch = {}; @@ -966,7 +972,7 @@ describe('Request', () => { sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { timesRequestCalled++; const resp = extend(true, {}, apiResponse); @@ -997,7 +1003,7 @@ describe('Request', () => { it('should not get more results if stream was ended', done => { let timesRequestCalled = 0; sandbox.stub(entity, 'queryToQueryProto'); - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { timesRequestCalled++; callback(null!, apiResponse); }; @@ -1041,27 +1047,28 @@ describe('Request', () => { it('should return an array of entities', done => { const options = {}; - request.runQuery(query, options, (err, entities, info) => { - assert.ifError(err); - assert.deepStrictEqual(entities, fakeEntities); - assert.strictEqual(info, fakeInfo); + request.runQuery( + query, options, (err: Error|null, entities: Entity[], info: {}) => { + assert.ifError(err); + assert.deepStrictEqual(entities, fakeEntities); + assert.strictEqual(info, fakeInfo); - const spy = request.runQueryStream.getCall(0); - assert.strictEqual(spy.args[0], query); - assert.strictEqual(spy.args[1], options); - done(); - }); + const spy = request.runQueryStream.getCall(0); + assert.strictEqual(spy.args[0], query); + assert.strictEqual(spy.args[1], options); + done(); + }); }); it('should allow options to be omitted', done => { - request.runQuery(query, err => { + request.runQuery(query, (err: Error) => { assert.ifError(err); done(); }); }); it('should default options to an object', done => { - request.runQuery(query, null, err => { + request.runQuery(query, null, (err: Error) => { assert.ifError(err); const spy = request.runQueryStream.getCall(0); @@ -1087,7 +1094,7 @@ describe('Request', () => { }); it('send an error to the callback', done => { - request.runQuery(query, err => { + request.runQuery(query, (err: Error) => { assert.strictEqual(err, error); done(); }); @@ -1142,7 +1149,7 @@ describe('Request', () => { ], }; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); @@ -1157,7 +1164,7 @@ describe('Request', () => { it('should allow customization of GAX options', done => { const gaxOptions = {}; - request.request_ = config => { + request.request_ = (config: RequestConfig) => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -1193,7 +1200,7 @@ describe('Request', () => { }); it('should save with specific method', done => { - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { assert.strictEqual(config.reqOpts.mutations.length, 3); assert(is.object(config.reqOpts.mutations[0].insert)); assert(is.object(config.reqOpts.mutations[1].update)); @@ -1263,10 +1270,10 @@ describe('Request', () => { it('should return apiResponse in callback', done => { const key = new entity.Key({namespace: 'ns', path: ['Company']}); const mockCommitResponse = {}; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { callback(null, mockCommitResponse); }; - request.save({key, data: {}}, (err, apiResponse) => { + request.save({key, data: {}}, (err: Error|null, apiResponse: Entity) => { assert.ifError(err); assert.strictEqual(mockCommitResponse, apiResponse); done(); @@ -1274,7 +1281,7 @@ describe('Request', () => { }); it('should allow setting the indexed value of a property', done => { - request.request_ = config => { + request.request_ = (config: RequestConfig) => { const property = config.reqOpts.mutations[0].upsert.properties.name; assert.strictEqual(property.stringValue, 'value'); assert.strictEqual(property.excludeFromIndexes, true); @@ -1296,10 +1303,10 @@ describe('Request', () => { }); it('should allow setting the indexed value on arrays', done => { - request.request_ = config => { + request.request_ = (config: RequestConfig) => { const property = config.reqOpts.mutations[0].upsert.properties.name; - property.arrayValue.values.forEach((value) => { + property.arrayValue.values.forEach((value: Any) => { assert.strictEqual(value.excludeFromIndexes, true); }); @@ -1340,7 +1347,7 @@ describe('Request', () => { ], }; - request.request_ = (config, callback) => { + request.request_ = (config: RequestConfig, callback: Function) => { callback(null, response); }; @@ -1357,7 +1364,7 @@ describe('Request', () => { {key: incompleteKey2, data: {}}, {key: completeKey, data: {}}, ], - err => { + (err: Error) => { assert.ifError(err); assert.strictEqual(incompleteKey.id, ids[0]); @@ -1404,7 +1411,7 @@ describe('Request', () => { return preparedEntityObject as {}; }); - request.save = entities => { + request.save = (entities: Entity[]) => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1413,7 +1420,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = (entities, callback) => { + request.save = (entities: Entity[], callback: Function) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -1446,7 +1453,7 @@ describe('Request', () => { return preparedEntityObject as {}; }); - request.save = entities => { + request.save = (entities: Entity[]) => { assert.deepStrictEqual(entities[0], expectedEntityObject); done(); }; @@ -1455,7 +1462,7 @@ describe('Request', () => { }); it('should pass the correct arguments to save', done => { - request.save = (entities, callback) => { + request.save = (entities: Entity[], callback: Function) => { assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ { key: { @@ -1500,7 +1507,7 @@ describe('Request', () => { request.datastore = { clients_, auth: { - getProjectId(callback) { + getProjectId(callback: Function) { callback(null, PROJECT_ID); }, }, @@ -1517,10 +1524,10 @@ describe('Request', () => { it('should return error if getting project ID failed', done => { const error = new Error('Error.'); - request.datastore.auth.getProjectId = (callback) => { + request.datastore.auth.getProjectId = (callback: Function) => { callback(error); }; - request.request_(CONFIG, err => { + request.request_(CONFIG, (err: Error) => { assert.strictEqual(err, error); done(); }); @@ -1530,7 +1537,7 @@ describe('Request', () => { const fakeClient = { [CONFIG.method]() {}, }; - v1FakeClientOverride = (options) => { + v1FakeClientOverride = (options: object) => { assert.deepStrictEqual(options, request.datastore.options); return fakeClient; }; @@ -1552,11 +1559,10 @@ describe('Request', () => { it('should replace the project ID token', done => { const replacedReqOpts = {}; - // tslint:disable-next-line no-any - const expectedReqOpts: any = Object.assign({}, CONFIG.reqOpts); + const expectedReqOpts: Any = Object.assign({}, CONFIG.reqOpts); expectedReqOpts.projectId = request.projectId; - pjyOverride = (reqOpts, projectId) => { + pjyOverride = (reqOpts: RequestOptions, projectId: string) => { assert.notStrictEqual(reqOpts, CONFIG.reqOpts); assert.deepStrictEqual(reqOpts, expectedReqOpts); assert.strictEqual(projectId, PROJECT_ID); @@ -1565,7 +1571,7 @@ describe('Request', () => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](reqOpts) { + [CONFIG.method](reqOpts: RequestOptions) { assert.strictEqual(reqOpts, replacedReqOpts); done(); }, @@ -1577,7 +1583,7 @@ describe('Request', () => { it('should send gaxOpts', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](_, gaxO) { + [CONFIG.method](_: object, gaxO: CallOptions) { delete gaxO.headers; assert.deepStrictEqual(gaxO, CONFIG.gaxOpts); done(); @@ -1590,7 +1596,7 @@ describe('Request', () => { it('should send google-cloud-resource-prefix', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](_, gaxO) { + [CONFIG.method](_: object, gaxO: CallOptions) { assert.deepStrictEqual(gaxO.headers, { 'google-cloud-resource-prefix': 'projects/' + PROJECT_ID, }); @@ -1605,7 +1611,7 @@ describe('Request', () => { it('should set the mode', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - commit(reqOpts) { + commit(reqOpts: RequestOptions) { assert.strictEqual(reqOpts.mode, 'NON_TRANSACTIONAL'); done(); }, @@ -1627,7 +1633,7 @@ describe('Request', () => { it('should set the commit transaction info', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - commit(reqOpts) { + commit(reqOpts: RequestOptions) { assert.strictEqual(reqOpts.mode, 'TRANSACTIONAL'); assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); done(); @@ -1643,7 +1649,7 @@ describe('Request', () => { it('should set the rollback transaction info', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - rollback(reqOpts) { + rollback(reqOpts: RequestOptions) { assert.strictEqual(reqOpts.transaction, TRANSACTION_ID); done(); }, @@ -1662,8 +1668,9 @@ describe('Request', () => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - lookup(reqOpts) { - assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); + lookup(reqOpts: RequestOptions) { + assert.strictEqual( + reqOpts.readOptions!.transaction, TRANSACTION_ID); done(); }, }); @@ -1678,8 +1685,9 @@ describe('Request', () => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - runQuery(reqOpts) { - assert.strictEqual(reqOpts.readOptions.transaction, TRANSACTION_ID); + runQuery(reqOpts: RequestOptions) { + assert.strictEqual( + reqOpts.readOptions!.transaction, TRANSACTION_ID); done(); }, }); From 02f930427c9276451b3e2832d41a84aa30d1f89d Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 6 Mar 2019 11:52:46 -0800 Subject: [PATCH 340/820] fix: include types in package (#351) --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index bd9a3692559..2224fb73100 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -14,6 +14,7 @@ "build/protos", "build/src" ], + "types": "build/src/index.d.ts", "keywords": [ "google apis client", "google api client", @@ -62,7 +63,6 @@ "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", "@types/arrify": "^1.0.4", - "@types/async": "^2.0.50", "@types/execa": "^0.9.0", "@types/extend": "^3.0.0", "@types/is": "0.0.21", @@ -88,7 +88,7 @@ "linkinator": "^1.1.2", "mocha": "^6.0.0", "mv": "^2.1.1", - "npc": "0.0.1", + "ncp": "^2.0.0", "nyc": "^13.0.0", "power-assert": "^1.5.0", "prettier": "^1.13.5", From 5ac261e36ebfa3027fe924d64deb1bb29122ae13 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 6 Mar 2019 12:24:11 -0800 Subject: [PATCH 341/820] fix: make an explicit dependency on long (#352) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/proto/datastore.d.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2224fb73100..fe016bcee37 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -41,7 +41,7 @@ "prepare": "npm run compile", "pretest": "npm run compile", "proto": "npm run proto:datastore", - "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -o proto/datastore.d.ts -", + "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", "docs-test": "linkinator docs -r --skip www.googleapis.com", "predocs-test": "npm run docs" }, diff --git a/handwritten/nodejs-datastore/proto/datastore.d.ts b/handwritten/nodejs-datastore/proto/datastore.d.ts index 4f2f6398d1f..ce6b761e15b 100644 --- a/handwritten/nodejs-datastore/proto/datastore.d.ts +++ b/handwritten/nodejs-datastore/proto/datastore.d.ts @@ -1,4 +1,5 @@ import * as $protobuf from "protobufjs"; +import * as long from "long"; /** Namespace google. */ export namespace google { From 09a1cfdb41ce370c6278157b3dace476810017c6 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 6 Mar 2019 13:11:53 -0800 Subject: [PATCH 342/820] Release v3.1.2 (#353) --- handwritten/nodejs-datastore/CHANGELOG.md | 19 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index a39b8c19ab9..e8df791833f 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,25 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## v3.1.2 + +03-06-2019 12:24 PST + +### Bug fixes +- fix: make an explicit dependency on long ([#352](https://github.com/googleapis/nodejs-datastore/pull/352)) +- fix: include types in package ([#351](https://github.com/googleapis/nodejs-datastore/pull/351)) +- fix: add missing package, and add install test ([#346](https://github.com/googleapis/nodejs-datastore/pull/346)) + +### Documentation +- docs(samples): Update datastore_transaction_retry sample to use function arguments rather than closed variables. ([#339](https://github.com/googleapis/nodejs-datastore/pull/339)) + +### Internal / Testing Changes +- refactor(ts): enable noImplicitAny on test/request.ts ([#343](https://github.com/googleapis/nodejs-datastore/pull/343)) +- refactor(ts): enable noImplicitAny on test/query.ts ([#342](https://github.com/googleapis/nodejs-datastore/pull/342)) +- build: update release configuration +- chore: update proto docs and code style +- chore(deps): update dependency mocha to v6 ([#338](https://github.com/googleapis/nodejs-datastore/pull/338)) + ## v3.1.1 02-18-2019 22:46 PST diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fe016bcee37..ab2ebbaa3fd 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "3.1.1", + "version": "3.1.2", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index bd088d6f4be..8b43fd1f13f 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -12,7 +12,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^3.1.1", + "@google-cloud/datastore": "^3.1.2", "sinon": "^7.0.0", "yargs": "^13.0.0" }, From 74daf2d196c9a15977f1519f3877b9e23990f880 Mon Sep 17 00:00:00 2001 From: Joe Cervino Date: Wed, 6 Mar 2019 22:02:08 -0500 Subject: [PATCH 343/820] refactor(ts): enable noImplicitAny on test/transaction.ts (#344) --- handwritten/nodejs-datastore/src/request.ts | 59 ++++---- .../nodejs-datastore/src/transaction.ts | 62 ++++---- .../nodejs-datastore/test/transaction.ts | 138 ++++++++++-------- 3 files changed, 136 insertions(+), 123 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 6e13fe10c04..d04d077fa64 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -174,14 +174,13 @@ class DatastoreRequest { * }); */ allocateIds(key: entity.Key, options: AllocateIdsOptions|number): - Promise; + Promise; allocateIds( key: entity.Key, options: AllocateIdsOptions|number, callback: AllocateIdsCallback): void; allocateIds( key: entity.Key, options: AllocateIdsOptions|number, - callback?: AllocateIdsCallback): - void|Promise { + callback?: AllocateIdsCallback): void|Promise { if (entity.isKeyComplete(key)) { throw new Error('An incomplete key should be provided.'); } @@ -258,7 +257,7 @@ class DatastoreRequest { reqOpts, gaxOpts: options.gaxOptions, }, - (err: Error, resp: Entity) => { + (err, resp) => { if (err) { stream.destroy(err); return; @@ -339,20 +338,14 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - delete(keys: Entities): - void|Promise; - delete( - keys: Entities, - callback: google.datastore.v1.Datastore.CommitCallback): void; - delete( - keys: Entities, gaxOptions: CallOptions, - callback: google.datastore.v1.Datastore.CommitCallback): void; + delete(): Promise; + delete(keys: Entities): void; + delete(keys: Entities, callback: CommitCallback): void; + delete(keys: Entities, gaxOptions: CallOptions, callback: CommitCallback): + void; delete( - keys: Entities, - gaxOptionsOrCallback?: CallOptions| - google.datastore.v1.Datastore.CommitCallback, - cb?: google.datastore.v1.Datastore.CommitCallback): - void|Promise { + keys?: Entities, gaxOptionsOrCallback?: CallOptions|CommitCallback, + cb?: CommitCallback): void|Promise { const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = @@ -501,10 +494,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - insert(entities: Entities): Promise; + insert(entities: Entities): Promise; insert(entities: Entities, callback: CallOptions): void; insert(entities: Entities, callback?: CallOptions): - void|Promise { + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'insert'; @@ -693,7 +686,7 @@ class DatastoreRequest { onResultSet); }; - function onResultSet(err: Error, resp: Entity) { + function onResultSet(err?: Error|null, resp?: Entity) { if (err) { stream.destroy(err); return; @@ -955,14 +948,14 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - save(entities: Entities, gaxOptions?: CallOptions): - Promise; + save(entities: Entities): Promise; + save(entities: Entities, gaxOptions?: CallOptions): Promise; save(entities: Entities, gaxOptions: CallOptions, callback: SaveCallback): void; save(entities: Entities, callback: SaveCallback): void; save( entities: Entities, gaxOptionsOrCallback?: CallOptions|SaveCallback, - cb?: SaveCallback): void|Promise { + cb?: SaveCallback): void|Promise { entities = arrify(entities); const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; @@ -1040,7 +1033,7 @@ class DatastoreRequest { mutations, }; - function onCommit(err: Error|null, resp: {mutationResults: Entity;}) { + function onCommit(err?: Error|null, resp?: {mutationResults: Entity;}) { if (err || !resp) { callback(err, resp); return; @@ -1090,10 +1083,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - update(entities: Entities): Promise; + update(entities: Entities): Promise; update(entities: Entities, callback: CallOptions): void; update(entities: Entities, callback?: CallOptions): - void|Promise { + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'update'; @@ -1117,10 +1110,10 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - upsert(entities: Entities): Promise; + upsert(entities: Entities): Promise; upsert(entities: Entities, callback: CallOptions): void; upsert(entities: Entities, callback?: CallOptions): - void|Promise { + void|Promise { entities = arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { x.method = 'upsert'; @@ -1211,6 +1204,7 @@ export interface BooleanObject { export interface ConsistencyProtoCode { [key: string]: number; } +export type CommitResponse = [google.datastore.v1.ICommitResponse]; export type Entities = Entity|Entity[]; export interface EntityProtoObject { method?: string; @@ -1230,6 +1224,7 @@ export interface AllocateIdsRequestResponse { keys: KeyProto[]; mutationResults?: Entities; } +export type AllocateIdsResponse = [google.datastore.v1.AllocateIdsResponse]; export interface AllocateIdsCallback { (a: Error|null, b: entity.Key[]|null, c: AllocateIdsRequestResponse): void; } @@ -1241,6 +1236,9 @@ export interface CreateReadStreamOptions { consistency?: string; gaxOptions?: CallOptions; } +export interface CommitCallback { + (err?: Error|null, resp?: google.datastore.v1.CommitResponse): void; +} export interface GetCallback { (...args: Entity[]): void; } @@ -1259,7 +1257,7 @@ export interface PrepareEntityObjectResponse { } export type ProjectId = string|null|undefined; export interface RequestCallback { - (a: Error, + (a?: Error|null, b?: AllocateIdsRequestResponse&google.datastore.v1.ILookupResponse& Entities): void; } @@ -1269,6 +1267,7 @@ export interface RequestConfig { method: string; prepared?: boolean; reqOpts?: Entity|RequestOptions; + gaxOptions?: never; } export interface RequestOptions { mutations?: []|Array<{delete: KeyProto;}>|Array<{}>; @@ -1276,6 +1275,8 @@ export interface RequestOptions { readOptions?: {readConsistency?: number transaction?: string|number; }; + transactionOptions?: + {readOnly?: {}; readWrite?: {previousTransaction?: string;};}; transaction?: string|number; mode?: string; projectId?: string; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 10356483e7a..cc8b0b2aaba 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -17,14 +17,13 @@ import {promisifyAll} from '@google-cloud/promisify'; import * as arrify from 'arrify'; import {CallOptions} from 'google-gax'; + import {google} from '../proto/datastore'; + import {Datastore, TransactionOptions} from '.'; import {entity, Entity} from './entity'; import {Query} from './query'; -import {DatastoreRequest} from './request'; - -type RollbackCallback = google.datastore.v1.Datastore.RollbackCallback; -type RollbackResponse = google.datastore.v1.RollbackResponse; +import {CommitResponse, DatastoreRequest, RequestOptions} from './request'; /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -130,16 +129,12 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - commit(gaxOptions?: CallOptions): Promise; - commit(callback: google.datastore.v1.Datastore.CommitCallback): void; - commit( - gaxOptions: CallOptions, - callback: google.datastore.v1.Datastore.CommitCallback): void; + commit(gaxOptions?: CallOptions): Promise; + commit(callback: CommitCallback): void; + commit(gaxOptions: CallOptions, callback: CommitCallback): void; commit( - gaxOptionsOrCallback?: CallOptions| - google.datastore.v1.Datastore.CommitCallback, - cb?: google.datastore.v1.Datastore.CommitCallback): - void|Promise { + gaxOptionsOrCallback?: CallOptions|CommitCallback, + cb?: CommitCallback): void|Promise { const callback = typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : typeof cb === 'function' ? cb : (() => {}); @@ -332,7 +327,9 @@ class Transaction extends DatastoreRequest { * }); * }); */ - delete(entities: Entity): void { + delete(): Promise; + delete(entities: Entities): void; + delete(entities?: Entities): void|Promise { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { @@ -378,12 +375,12 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(gaxOptions?: CallOptions): Promise; + rollback(): void; rollback(callback: RollbackCallback): void; + rollback(gaxOptions: CallOptions): Promise; rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; - rollback( - gaxOptionsOrCallback?: CallOptions|RollbackCallback, - cb?: RollbackCallback): void|Promise { + rollback(gaxOptionsOrCallback?: CallOptions|RollbackCallback, cb?: Function): + void|Promise { const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = @@ -451,28 +448,26 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[1]; * }); */ - run(options?: RunOptions): - Promise; + run(options?: RunOptions): Promise; run(callback?: RunCallback): void; run(options?: RunOptions, callback?: RunCallback): void; - run(optionsOrCallback?: RunOptions|RunCallback|Entity, cb?: RunCallback): - void|Promise { + run(optionsOrCallback?: RunOptions|RunCallback|Entity, + cb?: RunCallback): void|Promise { const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; - // tslint:disable-next-line no-any - const reqOpts: any = { + const reqOpts = { transactionOptions: {}, - }; + } as RequestOptions; if (options.readOnly || this.readOnly) { - reqOpts.transactionOptions.readOnly = {}; + reqOpts.transactionOptions!.readOnly = {}; } if (options.transactionId || this.id) { - reqOpts.transactionOptions.readWrite = { + reqOpts.transactionOptions!.readWrite = { previousTransaction: options.transactionId || this.id }; } @@ -644,18 +639,21 @@ class Transaction extends DatastoreRequest { export type Entities = Entity|Entity[]; export type ModifiedEntities = Array<{entity: {key: Entity}; method: string; args: Entity[];}>; -export interface RunCallback extends - google.datastore.v1.Datastore.BeginTransactionCallback { - (transaction: Transaction|null): void; +export type CommitCallback = google.datastore.v1.Datastore.CommitCallback; +export type BeginTransactionResponse = + [google.datastore.v1.BeginTransactionResponse]; +export interface RunCallback { + (error: Error|null, transaction: Transaction|null, + response?: google.datastore.v1.BeginTransactionResponse): void; } - +export type RollbackCallback = google.datastore.v1.Datastore.RollbackCallback; +export type RollbackResponse = [google.datastore.v1.RollbackResponse]; export interface RunOptions { readOnly?: boolean; transactionId?: string; transactionOptions?: TransactionOptions; gaxOptions?: CallOptions; } - /*! Developer Documentation * * All async methods (except for streams) will return a Promise in the event diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index fd25c9355fa..71389e3ce7d 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -18,12 +18,23 @@ import * as pfy from '@google-cloud/promisify'; import * as arrify from 'arrify'; import * as assert from 'assert'; import * as proxyquire from 'proxyquire'; +import * as sinon from 'sinon'; + +// import {google} from '../proto/datastore'; +import {Datastore, Query, TransactionOptions} from '../src'; +import {Entity} from '../src/entity'; +import {CommitResponse, DatastoreRequest} from '../src/request'; +import * as tsTypes from '../src/transaction'; + +// tslint:disable-next-line no-any +type Any = any; +type Path = string|[string]|[string, number]; const {entity} = require('../src/entity'); let promisified = false; const fakePfy = Object.assign({}, pfy, { - promisifyAll(klass, options) { + promisifyAll(klass: Function, options: pfy.PromisifyAllOptions) { if (klass.name !== 'Transaction') { return; } @@ -32,32 +43,32 @@ const fakePfy = Object.assign({}, pfy, { }, }); -// tslint:disable-next-line no-any variable-name -const DatastoreRequestOverride: any = { +// tslint:disable-next-line variable-name +const DatastoreRequestOverride = { delete () {}, save() {}, -}; +} as {} as DatastoreRequest; class FakeDatastoreRequest { delete() { const args = [].slice.apply(arguments); - const results = DatastoreRequestOverride.delete.apply(null, args); - DatastoreRequestOverride.delete = () => {}; + const results = DatastoreRequestOverride.delete.apply(null, args as Any); + DatastoreRequestOverride.delete = (() => {}) as Any; return results; } save() { const args = [].slice.apply(arguments); - const results = DatastoreRequestOverride.save.apply(null, args); - DatastoreRequestOverride.save = () => {}; + const results = DatastoreRequestOverride.save.apply(null, args as Any); + DatastoreRequestOverride.save = (() => {}) as Any; return results; } } describe('Transaction', () => { // tslint:disable-next-line variable-name - let Transaction; - let transaction; + let Transaction: typeof tsTypes.Transaction; + let transaction: tsTypes.Transaction; const TRANSACTION_ID = 'transaction-id'; const PROJECT_ID = 'project-id'; const NAMESPACE = 'a-namespace'; @@ -66,9 +77,9 @@ describe('Transaction', () => { request_() {}, projectId: PROJECT_ID, namespace: NAMESPACE, - }; + } as {} as Datastore; - function key(path) { + function key(path: Path) { return new entity.Key({path: arrify(path)}); } @@ -119,10 +130,9 @@ describe('Transaction', () => { }); it('should localize request function', done => { - // tslint:disable-next-line no-any - const fakeDataset: any = { + const fakeDataset: Any = { request_: { - bind(context) { + bind(context: {}) { assert.strictEqual(context, fakeDataset); setImmediate(() => { @@ -151,7 +161,7 @@ describe('Transaction', () => { }); it('should commit', done => { - transaction.request_ = config => { + transaction.request_ = (config) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); assert.strictEqual(config.gaxOptions, undefined); @@ -163,7 +173,7 @@ describe('Transaction', () => { it('should accept gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = config => { + transaction.request_ = (config) => { assert.deepEqual(config.gaxOpts, {}); done(); }; @@ -188,9 +198,9 @@ describe('Transaction', () => { const rollbackApiResponse = {}; beforeEach(() => { - transaction.rollback = (callback) => { - callback(rollbackError, rollbackApiResponse); - }; + transaction.rollback = ((callback: Function) => { + callback(rollbackError, rollbackApiResponse); + }) as Any; transaction.request_ = (config, callback) => { callback(error, apiResponse); @@ -234,16 +244,16 @@ describe('Transaction', () => { const args: Array<{}> = []; let deleteCalled = 0; - DatastoreRequestOverride.delete = (a) => { - args.push(a); - deleteCalled++; - }; + DatastoreRequestOverride.delete = ((a: {}) => { + args.push(a); + deleteCalled++; + }) as Any; let saveCalled = 0; - DatastoreRequestOverride.save = (a) => { - args.push(a); - saveCalled++; - }; + DatastoreRequestOverride.save = ((a: {}) => { + args.push(a); + saveCalled++; + }) as Any; transaction.request_ = () => {}; @@ -267,14 +277,14 @@ describe('Transaction', () => { transaction.save({key: key(['Product', 123]), data: ''}); let deleteCalled = 0; - DatastoreRequestOverride.delete = () => { - deleteCalled++; - }; + DatastoreRequestOverride.delete = (() => { + deleteCalled++; + }) as Any; let saveCalled = 0; - DatastoreRequestOverride.save = () => { - saveCalled++; - }; + DatastoreRequestOverride.save = (() => { + saveCalled++; + }) as Any; transaction.request_ = () => {}; @@ -287,10 +297,10 @@ describe('Transaction', () => { transaction.save({key: key(['Product']), data: ''}); transaction.save({key: key(['Product']), data: ''}); - DatastoreRequestOverride.save = (entities) => { - assert.strictEqual(entities.length, 2); - done(); - }; + DatastoreRequestOverride.save = ((entities: Entity[]) => { + assert.strictEqual(entities.length, 2); + done(); + }) as Any; transaction.request_ = () => {}; @@ -307,7 +317,7 @@ describe('Transaction', () => { }, ]; - transaction.request_ = config => { + transaction.request_ = (config) => { assert.deepStrictEqual(config.reqOpts, { mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], }); @@ -343,17 +353,19 @@ describe('Transaction', () => { describe('createQuery', () => { it('should return query from datastore.createQuery', () => { - const args = [0, 1]; + const args = + ['0', '1']; // Query only accepts to accept string||null values const createQueryReturnValue = {}; - transaction.datastore.createQuery = function(...ags) { + transaction.datastore.createQuery = function(...ags: Any) { assert.strictEqual(this, transaction); assert.strictEqual(ags[0], args[0]); assert.strictEqual(ags[1], args[1]); - return createQueryReturnValue; + return createQueryReturnValue as Query; }; - const query = transaction.createQuery(...args); + const query = + transaction.createQuery(args[0], args[1]); // verbose de-structure assert.strictEqual(query, createQueryReturnValue); }); }); @@ -370,7 +382,7 @@ describe('Transaction', () => { assert.strictEqual(transaction.modifiedEntities_.length, keys.length); - transaction.modifiedEntities_.forEach((queuedEntity) => { + transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { assert.strictEqual(queuedEntity.method, 'delete'); assert(keys.indexOf(queuedEntity.entity.key) > -1); assert.deepStrictEqual(queuedEntity.args, [queuedEntity.entity.key]); @@ -384,7 +396,7 @@ describe('Transaction', () => { }); it('should rollback', done => { - transaction.request_ = config => { + transaction.request_ = (config) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'rollback'); assert.strictEqual(config.gaxOptions, undefined); @@ -450,7 +462,7 @@ describe('Transaction', () => { describe('run', () => { it('should make the correct API request', done => { - transaction.request_ = config => { + transaction.request_ = (config) => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'beginTransaction'); assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); @@ -464,7 +476,7 @@ describe('Transaction', () => { it('should allow setting gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = config => { + transaction.request_ = (config) => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -478,7 +490,7 @@ describe('Transaction', () => { readOnly: true, }; - transaction.request_ = config => { + transaction.request_ = (config: Any) => { assert.deepStrictEqual( config.reqOpts.transactionOptions.readOnly, {}); done(); @@ -490,9 +502,9 @@ describe('Transaction', () => { it('should respect the global readOnly option', done => { transaction.readOnly = true; - transaction.request_ = config => { + transaction.request_ = (config) => { assert.deepStrictEqual( - config.reqOpts.transactionOptions.readOnly, {}); + config.reqOpts!.transactionOptions!.readOnly, {}); done(); }; @@ -506,10 +518,11 @@ describe('Transaction', () => { transactionId: 'transaction-id', }; - transaction.request_ = config => { - assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { - previousTransaction: options.transactionId, - }); + transaction.request_ = (config) => { + assert.deepStrictEqual( + config.reqOpts!.transactionOptions!.readWrite, { + previousTransaction: options.transactionId, + }); done(); }; @@ -519,10 +532,11 @@ describe('Transaction', () => { it('should respect the global transactionId option', done => { transaction.id = 'transaction-id'; - transaction.request_ = config => { - assert.deepStrictEqual(config.reqOpts.transactionOptions.readWrite, { - previousTransaction: transaction.id, - }); + transaction.request_ = (config) => { + assert.deepStrictEqual( + config.reqOpts!.transactionOptions!.readWrite, { + previousTransaction: transaction.id, + }); done(); }; @@ -540,9 +554,9 @@ describe('Transaction', () => { previousTransaction: 'transaction-id', }, }, - }; + } as {} as TransactionOptions; - transaction.request_ = config => { + transaction.request_ = (config) => { assert.deepStrictEqual(config.reqOpts, options); done(); }; @@ -584,7 +598,7 @@ describe('Transaction', () => { it('should set transaction id', done => { delete transaction.id; - transaction.run((err) => { + transaction.run((err: Error|null) => { assert.ifError(err); assert.strictEqual(transaction.id, TRANSACTION_ID); done(); @@ -611,7 +625,7 @@ describe('Transaction', () => { ]; transaction.save(entities); assert.strictEqual(transaction.modifiedEntities_.length, entities.length); - transaction.modifiedEntities_.forEach((queuedEntity) => { + transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { assert.strictEqual(queuedEntity.method, 'save'); const match = entities.filter((ent) => { return ent.key === queuedEntity.entity.key; From 71b19fc526c5f1f200df10b4b853b6e593120a33 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Thu, 7 Mar 2019 13:50:00 -0800 Subject: [PATCH 344/820] fix(docs): move ts overloads above doc string (#356) --- handwritten/nodejs-datastore/src/index.ts | 14 ++--- handwritten/nodejs-datastore/src/query.ts | 10 +-- handwritten/nodejs-datastore/src/request.ts | 62 +++++++++---------- .../nodejs-datastore/src/transaction.ts | 24 +++---- 4 files changed, 55 insertions(+), 55 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 268005ab6ce..db1ff431615 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -615,6 +615,10 @@ class Datastore extends DatastoreRequest { static NO_MORE_RESULTS = 'NO_MORE_RESULTS'; NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS; + createQuery(kind?: string): Query; + createQuery(kind?: string[]): Query; + createQuery(namespace: string, kind: string): Query; + createQuery(namespace: string, kind: string[]): Query; /** * Create a query for the specified kind. See {@link Query} for all * of the available methods. @@ -631,10 +635,6 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); */ - createQuery(kind?: string): Query; - createQuery(kind?: string[]): Query; - createQuery(namespace: string, kind: string): Query; - createQuery(namespace: string, kind: string[]): Query; createQuery(namespaceOrKind?: string|string[], kind?: string|string[]): Query { let namespace = namespaceOrKind as string; @@ -645,6 +645,9 @@ class Datastore extends DatastoreRequest { return new Query(this, namespace, arrify(kind)); } + key(options: entity.KeyOptions): entity.Key; + key(path: PathType[]): entity.Key; + key(path: string): entity.Key; /** * Helper to create a Key object, scoped to the instance's namespace by * default. @@ -694,9 +697,6 @@ class Datastore extends DatastoreRequest { * path: ['Company', 123] * }); */ - key(options: entity.KeyOptions): entity.Key; - key(path: PathType[]): entity.Key; - key(path: string): entity.Key; key(options: string|entity.KeyOptions|PathType[]): entity.Key { options = is.object(options) ? options : { namespace: this.namespace, diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 6bb1e1c3efc..e3da5ae7df7 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -143,6 +143,8 @@ class Query { this.offsetVal = -1; } + filter(property: string, value: {}): Query; + filter(property: string, operator: Operator, value: {}): Query; /** * Datastore allows querying on properties. Supported comparison operators * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are @@ -181,8 +183,6 @@ class Query { * const key = datastore.key(['Company', 'Google']); * const keyQuery = query.filter('__key__', key); */ - filter(property: string, value: {}): Query; - filter(property: string, operator: Operator, value: {}): Query; filter(property: string, operatorOrValue: Operator, value?: {}): Query { let operator = operatorOrValue as Operator; if (arguments.length === 2) { @@ -380,6 +380,9 @@ class Query { return this; } + run(options?: RunQueryOptions): Promise; + run(options: RunQueryOptions, callback: RunQueryCallback): void; + run(callback: RunQueryCallback): void; /** * Run the query. * @@ -435,9 +438,6 @@ class Query { * const entities = data[0]; * }); */ - run(options?: RunQueryOptions): Promise; - run(options: RunQueryOptions, callback: RunQueryCallback): void; - run(callback: RunQueryCallback): void; run(optionsOrCallback?: RunQueryOptions|RunQueryCallback, cb?: RunQueryCallback): void|Promise { const query = this as Query; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index d04d077fa64..fd1c25f7bdc 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -101,6 +101,11 @@ class DatastoreRequest { return entityObject; } + allocateIds(key: entity.Key, options: AllocateIdsOptions|number): + Promise; + allocateIds( + key: entity.Key, options: AllocateIdsOptions|number, + callback: AllocateIdsCallback): void; /** * Generate IDs without creating entities. * @@ -173,11 +178,6 @@ class DatastoreRequest { * const apiResponse = data[1]; * }); */ - allocateIds(key: entity.Key, options: AllocateIdsOptions|number): - Promise; - allocateIds( - key: entity.Key, options: AllocateIdsOptions|number, - callback: AllocateIdsCallback): void; allocateIds( key: entity.Key, options: AllocateIdsOptions|number, callback?: AllocateIdsCallback): void|Promise { @@ -290,6 +290,11 @@ class DatastoreRequest { return stream; } + delete(): Promise; + delete(keys: Entities): void; + delete(keys: Entities, callback: CommitCallback): void; + delete(keys: Entities, gaxOptions: CallOptions, callback: CommitCallback): + void; /** * Delete all entities identified with the specified key(s). * @@ -338,11 +343,6 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - delete(): Promise; - delete(keys: Entities): void; - delete(keys: Entities, callback: CommitCallback): void; - delete(keys: Entities, gaxOptions: CallOptions, callback: CommitCallback): - void; delete( keys?: Entities, gaxOptionsOrCallback?: CallOptions|CommitCallback, cb?: CommitCallback): void|Promise { @@ -374,6 +374,11 @@ class DatastoreRequest { callback); } + get(keys: Entities, + options?: CreateReadStreamOptions): Promise; + get(keys: Entities, callback: GetCallback): void; + get(keys: Entities, options: CreateReadStreamOptions, + callback: GetCallback): void; /** * Retrieve the entities identified with the specified key(s) in the current * transaction. Get operations require a valid key to retrieve the @@ -459,11 +464,6 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - get(keys: Entities, - options?: CreateReadStreamOptions): Promise; - get(keys: Entities, callback: GetCallback): void; - get(keys: Entities, options: CreateReadStreamOptions, - callback: GetCallback): void; get(keys: Entities, optionsOrCallback?: CreateReadStreamOptions|GetCallback, cb?: GetCallback): void|Promise { const options = typeof optionsOrCallback === 'object' && optionsOrCallback ? @@ -480,6 +480,8 @@ class DatastoreRequest { })); } + insert(entities: Entities): Promise; + insert(entities: Entities, callback: CallOptions): void; /** * Maps to {@link Datastore#save}, forcing the method to be `insert`. * @@ -494,8 +496,6 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - insert(entities: Entities): Promise; - insert(entities: Entities, callback: CallOptions): void; insert(entities: Entities, callback?: CallOptions): void|Promise { entities = @@ -507,6 +507,10 @@ class DatastoreRequest { this.save(entities, callback); } + runQuery(query: Query, options?: RunQueryOptions): Promise; + runQuery(query: Query, options: RunQueryOptions, callback: RunQueryCallback): + void; + runQuery(query: Query, callback: RunQueryCallback): void; /** * Datastore allows you to query entities by kind, filter them by property * filters, and sort them by a property name. Projection and pagination are @@ -599,10 +603,6 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - runQuery(query: Query, options?: RunQueryOptions): Promise; - runQuery(query: Query, options: RunQueryOptions, callback: RunQueryCallback): - void; - runQuery(query: Query, callback: RunQueryCallback): void; runQuery( query: Query, optionsOrCallback?: RunQueryOptions|RunQueryCallback, cb?: RunQueryCallback): void|Promise { @@ -739,6 +739,11 @@ class DatastoreRequest { return stream; } + save(entities: Entities): Promise; + save(entities: Entities, gaxOptions?: CallOptions): Promise; + save(entities: Entities, gaxOptions: CallOptions, callback: SaveCallback): + void; + save(entities: Entities, callback: SaveCallback): void; /** * Insert or update the specified object(s). If a key is incomplete, its * associated object is inserted and the original Key object is updated to @@ -948,11 +953,6 @@ class DatastoreRequest { * const apiResponse = data[0]; * }); */ - save(entities: Entities): Promise; - save(entities: Entities, gaxOptions?: CallOptions): Promise; - save(entities: Entities, gaxOptions: CallOptions, callback: SaveCallback): - void; - save(entities: Entities, callback: SaveCallback): void; save( entities: Entities, gaxOptionsOrCallback?: CallOptions|SaveCallback, cb?: SaveCallback): void|Promise { @@ -1069,6 +1069,8 @@ class DatastoreRequest { onCommit); } + update(entities: Entities): Promise; + update(entities: Entities, callback: CallOptions): void; /** * Maps to {@link Datastore#save}, forcing the method to be `update`. * @@ -1083,8 +1085,6 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - update(entities: Entities): Promise; - update(entities: Entities, callback: CallOptions): void; update(entities: Entities, callback?: CallOptions): void|Promise { entities = @@ -1096,6 +1096,8 @@ class DatastoreRequest { this.save(entities, callback); } + upsert(entities: Entities): Promise; + upsert(entities: Entities, callback: CallOptions): void; /** * Maps to {@link Datastore#save}, forcing the method to be `upsert`. * @@ -1110,8 +1112,6 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - upsert(entities: Entities): Promise; - upsert(entities: Entities, callback: CallOptions): void; upsert(entities: Entities, callback?: CallOptions): void|Promise { entities = @@ -1123,6 +1123,7 @@ class DatastoreRequest { this.save(entities, callback); } + request_(config: RequestConfig, callback: RequestCallback): void; /** * Make a request to the API endpoint. Properties to indicate a transactional * or non-transactional operation are added automatically. @@ -1135,7 +1136,6 @@ class DatastoreRequest { * * @private */ - request_(config: RequestConfig, callback: RequestCallback): void; request_(config: RequestConfig, callback?: RequestCallback): void { const datastore = this.datastore; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index cc8b0b2aaba..30195c8b26f 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -96,6 +96,9 @@ class Transaction extends DatastoreRequest { * the final commit request with. */ + commit(gaxOptions?: CallOptions): Promise; + commit(callback: CommitCallback): void; + commit(gaxOptions: CallOptions, callback: CommitCallback): void; /** * Commit the remote transaction and finalize the current transaction * instance. @@ -129,9 +132,6 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - commit(gaxOptions?: CallOptions): Promise; - commit(callback: CommitCallback): void; - commit(gaxOptions: CallOptions, callback: CommitCallback): void; commit( gaxOptionsOrCallback?: CallOptions|CommitCallback, cb?: CommitCallback): void|Promise { @@ -295,6 +295,8 @@ class Transaction extends DatastoreRequest { return this.datastore.createQuery.call(this, namespace, kind as string[]); } + delete(): Promise; + delete(entities: Entities): void; /** * Delete all entities identified with the specified key(s) in the current * transaction. @@ -327,8 +329,6 @@ class Transaction extends DatastoreRequest { * }); * }); */ - delete(): Promise; - delete(entities: Entities): void; delete(entities?: Entities): void|Promise { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ @@ -341,6 +341,10 @@ class Transaction extends DatastoreRequest { }); } + rollback(): void; + rollback(callback: RollbackCallback): void; + rollback(gaxOptions: CallOptions): Promise; + rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; /** * Reverse a transaction remotely and finalize the current transaction * instance. @@ -375,10 +379,6 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(): void; - rollback(callback: RollbackCallback): void; - rollback(gaxOptions: CallOptions): Promise; - rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; rollback(gaxOptionsOrCallback?: CallOptions|RollbackCallback, cb?: Function): void|Promise { const gaxOptions = @@ -398,6 +398,9 @@ class Transaction extends DatastoreRequest { }); } + run(options?: RunOptions): Promise; + run(callback?: RunCallback): void; + run(options?: RunOptions, callback?: RunCallback): void; /** * Begin a remote transaction. In the callback provided, run your * transactional commands. @@ -448,9 +451,6 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[1]; * }); */ - run(options?: RunOptions): Promise; - run(callback?: RunCallback): void; - run(options?: RunOptions, callback?: RunCallback): void; run(optionsOrCallback?: RunOptions|RunCallback|Entity, cb?: RunCallback): void|Promise { const options = From bb1c0732add6efd3d8f1e99af7764f219c00c9c6 Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Thu, 7 Mar 2019 18:04:27 -0800 Subject: [PATCH 345/820] build: Add docuploader credentials to node publish jobs (#359) --- handwritten/nodejs-datastore/synth.metadata | 28 +++------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 8779cdf2954..58c0fb4da8c 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,38 +1,18 @@ { - "updateTime": "2019-03-05T12:12:21.223816Z", + "updateTime": "2019-03-08T00:45:38.995407Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.14", - "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" + "version": "0.16.15", + "dockerImage": "googleapis/artman@sha256:9caadfa59d48224cba5f3217eb9d61a155b78ccf31e628abef385bc5b7ed3bd2" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "b4a22569c88f1f0444e889d8139ddacb799f287c", - "internalRef": "236712632" - } - }, - { - "template": { - "name": "node_library", - "origin": "synthtool.gcp", - "version": "2019.2.26" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "datastore", - "apiVersion": "v1", - "language": "nodejs", - "generator": "gapic", - "config": "google/datastore/artman_datastore.yaml" + "sha": "c986e1d9618ac41343962b353d136201d72626ae" } } ] From 8c4cffe3caf0afb1daaed52641462dd785592c0b Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 8 Mar 2019 08:21:22 -0800 Subject: [PATCH 346/820] refactor(ts): enable noImplicitAny in tsconfig (#355) --- handwritten/nodejs-datastore/test/request.ts | 3 ++- handwritten/nodejs-datastore/tsconfig.json | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 81f392ce0fd..13ca2afbfbf 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -120,7 +120,8 @@ describe('Request', () => { it('should format an entity', () => { const key = {}; - const entityObject = {data: true}; + // tslint:disable-next-line:no-any + const entityObject: any = {data: true}; entityObject[entity.KEY_SYMBOL] = key; const preparedEntityObject = Request.prepareEntityObject_(entityObject) as Any; diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json index 5dc9ad65f2c..b10ee498aef 100644 --- a/handwritten/nodejs-datastore/tsconfig.json +++ b/handwritten/nodejs-datastore/tsconfig.json @@ -2,8 +2,7 @@ "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "noImplicitAny": false + "outDir": "build" }, "include": [ "src/*.ts", From 10bdb9f3fd5fe5a7d486241174b29c90cb641c7c Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 11 Mar 2019 15:20:37 -0400 Subject: [PATCH 347/820] build: fix system tests (#361) Fixes #357 --- .../nodejs-datastore/system-test/datastore.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 73efa92cef7..20155abdefd 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -20,7 +20,9 @@ const assertRejects = require('assert-rejects'); describe('Datastore', () => { const testKinds: string[] = []; - const datastore = new Datastore(); + const datastore = new Datastore({ + namespace: `${Date.now()}`, + }); // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. const key = datastore.key; @@ -121,8 +123,9 @@ describe('Datastore', () => { ], }); const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity, data); assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); await datastore.delete(postKey); }); @@ -130,8 +133,9 @@ describe('Datastore', () => { const postKey = datastore.key(['Post', 'post1']); await datastore.save({key: postKey, data: post}); const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity, post); assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); await datastore.delete(postKey); }); @@ -139,6 +143,7 @@ describe('Datastore', () => { const postKey = datastore.key(['Post', 123456789]); await datastore.save({key: postKey, data: post}); const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; assert.deepStrictEqual(entity, post); await datastore.delete(postKey); }); @@ -152,6 +157,7 @@ describe('Datastore', () => { const assignedId = postKey.id; assert(assignedId); const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; assert.deepStrictEqual(entity, data); await datastore.delete(datastore.key(['Post', assignedId])); }); @@ -164,6 +170,7 @@ describe('Datastore', () => { assert(postKey.id); const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; assert.deepStrictEqual(entity, post); await datastore.delete(postKey); }); @@ -207,6 +214,7 @@ describe('Datastore', () => { data: post, })); const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; assert.deepStrictEqual(entity, post); await datastore.delete(postKey); }); @@ -504,10 +512,12 @@ describe('Datastore', () => { ]); const [entities] = await datastore.runQuery(q); + delete entities[0][datastore.KEY]; assert.deepStrictEqual(entities![0], { name: 'Arya', family: 'Stark', }); + delete entities[8][datastore.KEY]; assert.deepStrictEqual(entities![8], { name: 'Sansa', family: 'Stark', @@ -577,6 +587,7 @@ describe('Datastore', () => { transaction.save({key, data: obj}); await transaction.commit(); const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; assert.deepStrictEqual(entity, obj); }); From 5208b807de08f7de22ace0e8fdaab23c194dd073 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Tue, 12 Mar 2019 06:44:55 -0700 Subject: [PATCH 348/820] chore: update require statement code style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR was generated using Autosynth. :rainbow: Here's the log from Synthtool: ``` synthtool > Executing /tmpfs/src/git/autosynth/working_repo/synth.py. synthtool > Ensuring dependencies. synthtool > Pulling artman image. latest: Pulling from googleapis/artman Digest: sha256:30babbfce7f05a62b1892c63c575aa2c8c502eb4bcc8f3bb90ec83e955d5d319 Status: Image is up to date for googleapis/artman:latest synthtool > Cloning googleapis. synthtool > Running generator for google/datastore/artman_datastore.yaml. synthtool > Generated code into /home/kbuilder/.cache/synthtool/googleapis/artman-genfiles/js/datastore-v1. synthtool > Replaced '../../package.json' in src/v1/datastore_client.js. .eslintignore .eslintrc.yml .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md .github/ISSUE_TEMPLATE/support_request.md .jsdoc.js .kokoro/common.cfg .kokoro/continuous/node10/common.cfg .kokoro/continuous/node10/docs.cfg .kokoro/continuous/node10/lint.cfg .kokoro/continuous/node10/samples-test.cfg .kokoro/continuous/node10/system-test-grpcjs.cfg .kokoro/continuous/node10/system-test.cfg .kokoro/continuous/node10/test.cfg .kokoro/continuous/node11/common.cfg .kokoro/continuous/node11/test.cfg .kokoro/continuous/node6/common.cfg .kokoro/continuous/node6/test.cfg .kokoro/continuous/node8/common.cfg .kokoro/continuous/node8/test.cfg .kokoro/docs.sh .kokoro/lint.sh .kokoro/presubmit/node10/common.cfg .kokoro/presubmit/node10/docs.cfg .kokoro/presubmit/node10/lint.cfg .kokoro/presubmit/node10/samples-test.cfg .kokoro/presubmit/node10/system-test-grpcjs.cfg .kokoro/presubmit/node10/system-test.cfg .kokoro/presubmit/node10/test.cfg .kokoro/presubmit/node11/common.cfg .kokoro/presubmit/node11/test.cfg .kokoro/presubmit/node6/common.cfg .kokoro/presubmit/node6/test.cfg .kokoro/presubmit/node8/common.cfg .kokoro/presubmit/node8/test.cfg .kokoro/presubmit/windows/common.cfg .kokoro/presubmit/windows/test.cfg .kokoro/publish.sh .kokoro/release/publish.cfg .kokoro/samples-test.sh .kokoro/system-test.sh .kokoro/test.bat .kokoro/test.sh .kokoro/trampoline.sh .nycrc .prettierignore .prettierrc CODE_OF_CONDUCT.md CONTRIBUTING.md LICENSE codecov.yaml renovate.json > grpc@1.19.0 install /tmpfs/src/git/autosynth/working_repo/node_modules/grpc > node-pre-gyp install --fallback-to-build --library=static_library node-pre-gyp WARN Using needle for node-pre-gyp https download [grpc] Success: "/tmpfs/src/git/autosynth/working_repo/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" is installed via remote > protobufjs@6.8.8 postinstall /tmpfs/src/git/autosynth/working_repo/node_modules/protobufjs > node scripts/postinstall > @google-cloud/datastore@3.1.2 prepare /tmpfs/src/git/autosynth/working_repo > npm run compile > @google-cloud/datastore@3.1.2 compile /tmpfs/src/git/autosynth/working_repo > tsc -p . && cp -r src/v1 build/src && cp -r proto* build && cp test/*.js build/test npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) added 1146 packages from 1345 contributors and audited 7243 packages in 31.669s found 1 low severity vulnerability run `npm audit fix` to fix them, or `npm audit` for details > @google-cloud/datastore@3.1.2 fix /tmpfs/src/git/autosynth/working_repo > gts fix && eslint '**/*.js' --fix /tmpfs/src/git/autosynth/working_repo/samples/concepts.js 25:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/quickstart.js 20:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/system-test/tasks.test.js 18:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.js 23:29 error "@google-cloud/datastore" is not found node/no-missing-require ✖ 4 problems (4 errors, 0 warnings) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @google-cloud/datastore@3.1.2 fix: `gts fix && eslint '**/*.js' --fix` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @google-cloud/datastore@3.1.2 fix script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/kbuilder/.npm/_logs/2019-03-12T11_11_58_249Z-debug.log synthtool > Cleaned up 2 temporary directories. synthtool > Wrote metadata to synth.metadata. ``` --- .../src/v1/datastore_client.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 28 ++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 3ce9946ae22..e8272563d6e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -14,7 +14,7 @@ 'use strict'; -const gapicConfig = require('./datastore_client_config'); +const gapicConfig = require('./datastore_client_config.json'); const gax = require('google-gax'); const merge = require('lodash.merge'); const path = require('path'); diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 58c0fb4da8c..041e54d30dd 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,18 +1,38 @@ { - "updateTime": "2019-03-08T00:45:38.995407Z", + "updateTime": "2019-03-12T11:11:58.261704Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.15", - "dockerImage": "googleapis/artman@sha256:9caadfa59d48224cba5f3217eb9d61a155b78ccf31e628abef385bc5b7ed3bd2" + "version": "0.16.16", + "dockerImage": "googleapis/artman@sha256:30babbfce7f05a62b1892c63c575aa2c8c502eb4bcc8f3bb90ec83e955d5d319" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "c986e1d9618ac41343962b353d136201d72626ae" + "sha": "abd1c9a99c5cd7179d8e5e0c8d4c8e761054cc78", + "internalRef": "237945492" + } + }, + { + "template": { + "name": "node_library", + "origin": "synthtool.gcp", + "version": "2019.2.26" + } + } + ], + "destinations": [ + { + "client": { + "source": "googleapis", + "apiName": "datastore", + "apiVersion": "v1", + "language": "nodejs", + "generator": "gapic", + "config": "google/datastore/artman_datastore.yaml" } } ] From a95e4c9bb1a3ca927b2592fa46a0ecefbfc1e49e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 14 Mar 2019 09:01:19 -0700 Subject: [PATCH 349/820] chore(deps): update dependency google-proto-files to ^0.19.0 (#363) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ab2ebbaa3fd..b3bb09db845 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,7 +80,7 @@ "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", "execa": "^1.0.0", - "google-proto-files": "^0.18.0", + "google-proto-files": "^0.19.0", "gts": "^0.9.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", From 78fa84aba2cf03428303781aacbc4b7c1c4296f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 18 Mar 2019 06:33:43 -0400 Subject: [PATCH 350/820] chore(deps): update dependency google-proto-files to ^0.20.0 (#366) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b3bb09db845..c5e3a36778a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,7 +80,7 @@ "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", "execa": "^1.0.0", - "google-proto-files": "^0.19.0", + "google-proto-files": "^0.20.0", "gts": "^0.9.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", From b158f5f71a256cce4f686c4e9018730e9c57e949 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 26 Mar 2019 05:58:43 -0400 Subject: [PATCH 351/820] chore(deps): update dependency tmp to v0.1.0 (#370) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c5e3a36778a..8aa248a09d2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -94,7 +94,7 @@ "prettier": "^1.13.5", "proxyquire": "^2.0.1", "sinon": "^7.0.0", - "tmp": "0.0.33", + "tmp": "0.1.0", "typescript": "~3.3.0" } } From 8e0a5eaf92c1f003575d6310e81aa653f0b781e0 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Thu, 28 Mar 2019 15:18:00 -0700 Subject: [PATCH 352/820] fix: include 'x-goog-request-params' header in requests (#372) --- .../src/v1/datastore_client.js | 49 +++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 10 ++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index e8272563d6e..790949ea4a2 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -244,6 +244,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.lookup(request, options, callback); } @@ -314,6 +321,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.runQuery(request, options, callback); } @@ -364,6 +378,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.beginTransaction(request, options, callback); } @@ -442,6 +463,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.commit(request, options, callback); } @@ -496,6 +524,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.rollback(request, options, callback); } @@ -553,6 +588,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.allocateIds(request, options, callback); } @@ -612,6 +654,13 @@ class DatastoreClient { options = {}; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId, + }); return this._innerApiCalls.reserveIds(request, options, callback); } diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 041e54d30dd..7e85bd91731 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-03-12T11:11:58.261704Z", + "updateTime": "2019-03-28T11:29:26.139079Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.16", - "dockerImage": "googleapis/artman@sha256:30babbfce7f05a62b1892c63c575aa2c8c502eb4bcc8f3bb90ec83e955d5d319" + "version": "0.16.20", + "dockerImage": "googleapis/artman@sha256:e3c054a2fb85a12481c722af616c7fb6f1d02d862248385eecbec3e4240ebd1e" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "abd1c9a99c5cd7179d8e5e0c8d4c8e761054cc78", - "internalRef": "237945492" + "sha": "6a84b3267b0a95e922608b9891219075047eee29", + "internalRef": "240640999" } }, { From 0d60729c0bc1de046d06d44827d4769eabe6b05f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 1 Apr 2019 09:19:40 -0700 Subject: [PATCH 353/820] chore(deps): update dependency typescript to ~3.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chore(deps): update dependency typescript to ~3.4.0 This PR contains the following updates: | Package | Type | Update | Change | References | |---|---|---|---|---| | typescript | devDependencies | minor | [`~3.3.0` -> `~3.4.0`](https://diff.intrinsic.com/typescript/3.3.4000/3.4.1) | [homepage](https://www.typescriptlang.org/), [source](https://togithub.com/Microsoft/TypeScript) | --- ### Release Notes
Microsoft/TypeScript ### [`v3.4.1`](https://togithub.com/Microsoft/TypeScript/releases/v3.4.1) [Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v3.3.4000...v3.4.1) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-3-4/). For the complete list of fixed issues, check out the - [fixed issues query for Typescript v3.4 RC](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A%22TypeScript+3.4%22+is%3Aclosed+). - [fixed issues query for Typescript v3.4.1](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A%22TypeScript+3.4.1%22+is%3Aclosed+). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) - [Visual Studio 2017](https://marketplace.visualstudio.com/items?itemName=TypeScriptTeam.typescript-341-vs2017) ([Select new version in project options](https://togithub.com/Microsoft/TypeScript/wiki/Updating-TypeScript-in-Visual-Studio-2017)) - [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild) Special thanks to all of our contributors this release: - [@​AnyhowStep](https://togithub.com/AnyhowStep) - Alan Pierce - Alexander Tarasyuk - Anders Hejlsberg - Andy Hanson - Benedikt Meurer - Benjamin Lichtman - Collins Abitekaniza - Daniel Krom - Daniel Rosenwasser - [@​fullheightcoding](https://togithub.com/fullheightcoding) - Gabriela Araujo Britto - [@​ispedals](https://togithub.com/ispedals) - Jack Williams - Jesse Trinity - Jordi Oliveras Rovira - Joseph Wunderlich - K. Preißer - Kagami Sascha Rosylight - Klaus Meinhardt - Masahiro Wakame - Matt McCutchen - Matthew Aynalem - Mine Starks - Nathan Shively-Sanders - Ron Buckton - Ryan Cavanaugh - Sheetal Nandi - Titian Cernicova-Dragomir - [@​tomholub](https://togithub.com/tomholub) - Wenlu Wang - Wesley Wigham
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is stale, or if you modify the PR title to begin with "`rebase!`". :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#googleapis/nodejs-datastore). #375 automerged by dpebot --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8aa248a09d2..217b91cc843 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -95,6 +95,6 @@ "proxyquire": "^2.0.1", "sinon": "^7.0.0", "tmp": "0.1.0", - "typescript": "~3.3.0" + "typescript": "~3.4.0" } } From 2c596d401ea8957655ec9403d1e1ddd6f5383c9b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 2 Apr 2019 08:49:43 -0700 Subject: [PATCH 354/820] chore(deps): update dependency @types/tmp to v0.1.0 chore(deps): update dependency @types/tmp to v0.1.0 This PR contains the following updates: | Package | Type | Update | Change | References | |---|---|---|---|---| | @​types/tmp | devDependencies | minor | [`0.0.34` -> `0.1.0`](https://diff.intrinsic.com/@types/tmp/0.0.34/0.1.0) | [source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/tmp) | --- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is stale, or if you modify the PR title to begin with "`rebase!`". :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#googleapis/nodejs-datastore). #377 automerged by dpebot --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 217b91cc843..92207d69f74 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -72,7 +72,7 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^7.0.2", "@types/through2": "^2.0.34", - "@types/tmp": "0.0.34", + "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", "codecov": "^3.0.2", "eslint": "^5.0.0", From bb14b43a13564036834ec81b1776d7535c373cf8 Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Thu, 4 Apr 2019 18:37:24 -0700 Subject: [PATCH 355/820] refactor: wrap execSync with encoding: utf-8 (#379) --- handwritten/nodejs-datastore/package.json | 2 -- .../nodejs-datastore/system-test/install.ts | 15 +++++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 92207d69f74..7c1e604cdc2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -63,7 +63,6 @@ "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", "@types/arrify": "^1.0.4", - "@types/execa": "^0.9.0", "@types/extend": "^3.0.0", "@types/is": "0.0.21", "@types/mocha": "^5.2.5", @@ -79,7 +78,6 @@ "eslint-config-prettier": "^4.0.0", "eslint-plugin-node": "^8.0.0", "eslint-plugin-prettier": "^3.0.0", - "execa": "^1.0.0", "google-proto-files": "^0.20.0", "gts": "^0.9.0", "intelli-espower-loader": "^1.0.1", diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 6afae6c235f..baa62e7a464 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -14,12 +14,15 @@ * limitations under the License. */ -import * as execa from 'execa'; +import * as cp from 'child_process'; import * as mv from 'mv'; import {ncp} from 'ncp'; import * as tmp from 'tmp'; import {promisify} from 'util'; +const execSync = (cmd: string, opts?: object) => + cp.execSync(cmd, {encoding: 'utf-8', ...opts}); + const keep = false; const mvp = promisify(mv) as {} as (...args: string[]) => Promise; const ncpp = promisify(ncp); @@ -33,15 +36,15 @@ describe('📦 pack and install', () => { * application. */ it('should be able to use the d.ts', async () => { - await execa('npm', ['pack', '--unsafe-perm']); + execSync('npm pack --unsafe-perm'); const tarball = `google-cloud-datastore-${pkg.version}.tgz`; await mvp(tarball, `${stagingPath}/datastore.tgz`); await ncpp('system-test/fixtures/sample', `${stagingPath}/`); - await execa( - 'npm', ['install', '--unsafe-perm'], + execSync( + 'npm install --unsafe-perm', {cwd: `${stagingPath}/`, stdio: 'inherit'}); - await execa( - 'node', ['--throw-deprecation', 'build/src/index.js'], + execSync( + 'node --throw-deprecation build/src/index.js', {cwd: `${stagingPath}/`, stdio: 'inherit'}); }); From 1ffe963cd8f226f94f59cf04a5c955004785a8b4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 5 Apr 2019 11:19:32 -0700 Subject: [PATCH 356/820] fix(deps): update dependency arrify to v2 fix(deps): update dependency arrify to v2 This PR contains the following updates: | Package | Type | Update | Change | References | |---|---|---|---|---| | arrify | dependencies | major | [`^1.0.1` -> `^2.0.0`](https://diff.intrinsic.com/arrify/1.0.1/2.0.0) | [source](https://togithub.com/sindresorhus/arrify) | --- ### Release Notes
sindresorhus/arrify ### [`v2.0.0`](https://togithub.com/sindresorhus/arrify/releases/v2.0.0) [Compare Source](https://togithub.com/sindresorhus/arrify/compare/v1.0.1...v2.0.0) Breaking: - Require Node.js 8 ([#​6](https://togithub.com/sindresorhus/arrify/issues/6)) [`8d6734f`](https://togithub.com/sindresorhus/arrify/commit/8d6734f) Enhancements: - Add TypeScript definition ([#​6](https://togithub.com/sindresorhus/arrify/issues/6)) [`8d6734f`](https://togithub.com/sindresorhus/arrify/commit/8d6734f)
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is stale, or if you modify the PR title to begin with "`rebase!`". :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#googleapis/nodejs-datastore). #380 automerged by dpebot --- handwritten/nodejs-datastore/package.json | 3 +-- handwritten/nodejs-datastore/src/entity.ts | 2 +- handwritten/nodejs-datastore/src/index.ts | 6 +++--- handwritten/nodejs-datastore/src/query.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 2 +- handwritten/nodejs-datastore/src/transaction.ts | 2 +- handwritten/nodejs-datastore/test/transaction.ts | 2 +- 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7c1e604cdc2..c8039eb0f73 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -49,7 +49,7 @@ "@google-cloud/projectify": "^0.3.2", "@google-cloud/promisify": "^0.4.0", "@types/duplexify": "^3.6.0", - "arrify": "^1.0.1", + "arrify": "^2.0.0", "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^3.0.0", @@ -62,7 +62,6 @@ }, "devDependencies": { "@google-cloud/nodejs-repo-tools": "^3.0.0", - "@types/arrify": "^1.0.4", "@types/extend": "^3.0.0", "@types/is": "0.0.21", "@types/mocha": "^5.2.5", diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 4b02d62e0a3..06e523de9ef 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import * as arrify from 'arrify'; +import arrify = require('arrify'); import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto} from './query'; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index db1ff431615..c4b7821403b 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -24,7 +24,7 @@ * @namespace google.protobuf */ -import * as arrify from 'arrify'; +import arrify = require('arrify'); import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; import {GrpcClient} from 'google-gax'; import {ChannelCredentials} from 'grpc'; @@ -642,7 +642,7 @@ class Datastore extends DatastoreRequest { kind = namespaceOrKind; namespace = this.namespace!; } - return new Query(this, namespace, arrify(kind)); + return new Query(this, namespace, arrify(kind) as string[]); } key(options: entity.KeyOptions): entity.Key; @@ -700,7 +700,7 @@ class Datastore extends DatastoreRequest { key(options: string|entity.KeyOptions|PathType[]): entity.Key { options = is.object(options) ? options : { namespace: this.namespace, - path: arrify(options), + path: arrify(options) as PathType[], }; return new entity.Key(options as entity.KeyOptions); } diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index e3da5ae7df7..d4094f0d9eb 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import * as arrify from 'arrify'; +import arrify = require('arrify'); import {Key} from 'readline'; import {Datastore} from '.'; import {Entity} from './entity'; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index fd1c25f7bdc..b161dff8cf8 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -16,7 +16,7 @@ import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisifyAll} from '@google-cloud/promisify'; -import * as arrify from 'arrify'; +import arrify = require('arrify'); const concat = require('concat-stream'); import * as extend from 'extend'; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 30195c8b26f..a75a83105d0 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -15,7 +15,7 @@ */ import {promisifyAll} from '@google-cloud/promisify'; -import * as arrify from 'arrify'; +import arrify = require('arrify'); import {CallOptions} from 'google-gax'; import {google} from '../proto/datastore'; diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 71389e3ce7d..464e80895eb 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -15,7 +15,7 @@ */ import * as pfy from '@google-cloud/promisify'; -import * as arrify from 'arrify'; +import arrify = require('arrify'); import * as assert from 'assert'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; From d62b73a36ca67f96722b6e0fec40e882f41e7f0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 26 Apr 2019 12:54:00 -0700 Subject: [PATCH 357/820] chore(deps): update dependency nyc to v14 (#382) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c8039eb0f73..5f67175d0bc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -86,7 +86,7 @@ "mocha": "^6.0.0", "mv": "^2.1.1", "ncp": "^2.0.0", - "nyc": "^13.0.0", + "nyc": "^14.0.0", "power-assert": "^1.5.0", "prettier": "^1.13.5", "proxyquire": "^2.0.1", From b16b2d5547d89bf47c41b4448fd9bb3d6c27ff67 Mon Sep 17 00:00:00 2001 From: Stephen Date: Mon, 29 Apr 2019 17:02:46 -0400 Subject: [PATCH 358/820] fix: lint (#384) --- handwritten/nodejs-datastore/src/request.ts | 37 ++++++++++--------- .../nodejs-datastore/src/transaction.ts | 2 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index b161dff8cf8..6b456ba32d7 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -352,7 +352,7 @@ class DatastoreRequest { typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; const reqOpts = { - mutations: arrify(keys).map(key => { + mutations: arrify(keys).map((key: entity.Key) => { return { delete: entity.keyToKeyProto(key), }; @@ -498,11 +498,12 @@ class DatastoreRequest { */ insert(entities: Entities, callback?: CallOptions): void|Promise { - entities = - arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { - x.method = 'insert'; - return x; - }); + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'insert'; + return x; + }); this.save(entities, callback); } @@ -1033,7 +1034,7 @@ class DatastoreRequest { mutations, }; - function onCommit(err?: Error|null, resp?: {mutationResults: Entity;}) { + function onCommit(err?: Error|null, resp?: {mutationResults: [Entity];}) { if (err || !resp) { callback(err, resp); return; @@ -1087,11 +1088,12 @@ class DatastoreRequest { */ update(entities: Entities, callback?: CallOptions): void|Promise { - entities = - arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { - x.method = 'update'; - return x; - }); + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'update'; + return x; + }); this.save(entities, callback); } @@ -1114,11 +1116,12 @@ class DatastoreRequest { */ upsert(entities: Entities, callback?: CallOptions): void|Promise { - entities = - arrify(entities).map(DatastoreRequest.prepareEntityObject_).map(x => { - x.method = 'upsert'; - return x; - }); + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'upsert'; + return x; + }); this.save(entities, callback); } diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index a75a83105d0..5bf6a050b5c 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -624,7 +624,7 @@ class Transaction extends DatastoreRequest { */ // tslint:disable-next-line no-any save(entities: Entities): any { - arrify(entities).forEach(ent => { + arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { key: ent.key, From d58e911c753f860e92a03870d330d050309a44ab Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 29 Apr 2019 15:03:04 -0700 Subject: [PATCH 359/820] update to .nycrc with --all enabled (#385) --- handwritten/nodejs-datastore/.nycrc | 40 ++++++++++++----------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index 88b001cb587..bfe4073a6ab 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -1,28 +1,22 @@ { "report-dir": "./.coverage", - "reporter": "lcov", + "reporter": ["text", "lcov"], "exclude": [ - "src/*{/*,/**/*}.js", - "src/*/v*/*.js", - "test/**/*.js", - "build/test" + "**/*-test", + "**/.coverage", + "**/apis", + "**/benchmark", + "**/docs", + "**/samples", + "**/scripts", + "**/src/**/v*/**/*.js", + "**/test", + ".jsdoc.js", + "**/.jsdoc.js", + "karma.conf.js", + "webpack-tests.config.js", + "webpack.config.js" ], - "watermarks": { - "branches": [ - 95, - 100 - ], - "functions": [ - 95, - 100 - ], - "lines": [ - 95, - 100 - ], - "statements": [ - 95, - 100 - ] - } + "exclude-after-remap": false, + "all": true } From 47e5e3313daa75fa5f5d81b1e800f5403202baad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 2 May 2019 09:14:45 -0700 Subject: [PATCH 360/820] fix(deps): update dependency google-gax to ^0.26.0 (#386) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5f67175d0bc..26434eaed04 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^3.0.0", - "google-gax": "^0.25.0", + "google-gax": "^0.26.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", From 66f81c9ae613838dd2a5fb7ea06518b6e16875a0 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Thu, 2 May 2019 11:29:00 -0700 Subject: [PATCH 361/820] build!: upgrade engines field to >=8.10.0 (#388) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 26434eaed04..7e6efcb336f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -5,7 +5,7 @@ "license": "Apache-2.0", "author": "Google Inc.", "engines": { - "node": ">=6.0.0" + "node": ">=8.10.0" }, "repository": "googleapis/nodejs-datastore", "main": "./build/src/index.js", From 093b89178097e3d6a3bed4b6188924fcdaced375 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 3 May 2019 07:29:53 -0700 Subject: [PATCH 362/820] fix(deps): update dependency @google-cloud/promisify to v1 (#392) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7e6efcb336f..1921d2e0e0a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,7 +47,7 @@ }, "dependencies": { "@google-cloud/projectify": "^0.3.2", - "@google-cloud/promisify": "^0.4.0", + "@google-cloud/promisify": "^1.0.0", "@types/duplexify": "^3.6.0", "arrify": "^2.0.0", "concat-stream": "^2.0.0", From 6b51a4f3215a81cb5525318c17037237d4665831 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 3 May 2019 07:36:45 -0700 Subject: [PATCH 363/820] fix(deps): update dependency @google-cloud/projectify to v1 (#391) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1921d2e0e0a..23d04e14a44 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "predocs-test": "npm run docs" }, "dependencies": { - "@google-cloud/projectify": "^0.3.2", + "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", "@types/duplexify": "^3.6.0", "arrify": "^2.0.0", From 82b66f4c3141d39d167a3b1f8a945268cc9ac8d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 3 May 2019 08:19:43 -0700 Subject: [PATCH 364/820] chore(deps): update dependency eslint-plugin-node to v9 (#390) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 23d04e14a44..ee9f809c72d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -75,7 +75,7 @@ "codecov": "^3.0.2", "eslint": "^5.0.0", "eslint-config-prettier": "^4.0.0", - "eslint-plugin-node": "^8.0.0", + "eslint-plugin-node": "^9.0.0", "eslint-plugin-prettier": "^3.0.0", "google-proto-files": "^0.20.0", "gts": "^0.9.0", From d58836fab3cc06d8933e6fb2ed6d61345569981a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Fri, 3 May 2019 11:10:47 -0700 Subject: [PATCH 365/820] chore(deps): update dependency gts to v1 (#383) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/src/entity.ts | 58 +- handwritten/nodejs-datastore/src/index.ts | 50 +- handwritten/nodejs-datastore/src/query.ts | 57 +- handwritten/nodejs-datastore/src/request.ts | 536 +++++++++-------- .../nodejs-datastore/src/transaction.ts | 299 +++++----- .../nodejs-datastore/system-test/datastore.ts | 209 ++++--- .../system-test/fixtures/sample/package.json | 2 +- .../nodejs-datastore/system-test/install.ts | 18 +- handwritten/nodejs-datastore/test/entity.ts | 62 +- handwritten/nodejs-datastore/test/index.ts | 76 +-- handwritten/nodejs-datastore/test/query.ts | 37 +- handwritten/nodejs-datastore/test/request.ts | 549 ++++++++++-------- .../nodejs-datastore/test/transaction.ts | 116 ++-- 14 files changed, 1156 insertions(+), 915 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ee9f809c72d..f0af7d05a3a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -78,7 +78,7 @@ "eslint-plugin-node": "^9.0.0", "eslint-plugin-prettier": "^3.0.0", "google-proto-files": "^0.20.0", - "gts": "^0.9.0", + "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.5.5", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 06e523de9ef..d2bf5066db7 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -91,7 +91,7 @@ export namespace entity { */ export class Int { value: string; - constructor(value: number|string) { + constructor(value: number | string) { /** * @name Int#value * @type {string} @@ -162,7 +162,7 @@ export namespace entity { export interface KeyOptions { namespace?: string; - path: Array; + path: Array; } /** @@ -216,7 +216,7 @@ export namespace entity { name?: string; kind: string; parent?: Key; - path!: Array; + path!: Array; constructor(options: KeyOptions) { /** @@ -231,7 +231,7 @@ export namespace entity { const identifier = options.path.pop(); if (is.number(identifier) || isDsInt(identifier)) { - this.id = ((identifier as {} as Int).value || identifier) as string; + this.id = (((identifier as {}) as Int).value || identifier) as string; } else if (is.string(identifier)) { this.name = identifier as string; } @@ -333,7 +333,9 @@ export namespace entity { return new Date(Number(value.seconds) * 1000 + milliseconds); } - default: { return value; } + default: { + return value; + } } } @@ -519,14 +521,14 @@ export namespace entity { const entityProto: EntityProto = { key: null, - properties: Object.keys(properties) - .reduce( - (encoded, key) => { - encoded[key] = entity.encodeValue(properties[key]); - return encoded; - }, - // tslint:disable-next-line no-any - {} as any), + properties: Object.keys(properties).reduce( + (encoded, key) => { + encoded[key] = entity.encodeValue(properties[key]); + return encoded; + }, + // tslint:disable-next-line no-any + {} as any + ), }; if (excludeFromIndexes && excludeFromIndexes.length > 0) { @@ -547,9 +549,11 @@ export namespace entity { if (!hasArrayPath && !hasEntityPath) { // This is the path end node. Traversal ends here in either case. if (entity.properties) { - if (entity.properties[path] && - // array properties should be excluded with [] syntax: - !entity.properties[path].arrayValue) { + if ( + entity.properties[path] && + // array properties should be excluded with [] syntax: + !entity.properties[path].arrayValue + ) { // This is the property to exclude! entity.properties[path].excludeFromIndexes = true; } @@ -580,9 +584,11 @@ export namespace entity { return; } - if (firstPathPartIsArray && - // check also if the property in question is actually an array value. - entity.properties[firstPathPart].arrayValue) { + if ( + firstPathPartIsArray && + // check also if the property in question is actually an array value. + entity.properties[firstPathPart].arrayValue + ) { const array = entity.properties[firstPathPart].arrayValue; // tslint:disable-next-line no-any array.values.forEach((value: any) => { @@ -591,15 +597,15 @@ export namespace entity { // equivalent with excluding all its values // (including entity values at their roots): excludePathFromEntity( - value, - remainderPath // === '' + value, + remainderPath // === '' ); } else { // Path traversal continues at value.entityValue, // if it is an entity, or must end at value. excludePathFromEntity( - value.entityValue || value, - remainderPath // !== '' + value.entityValue || value, + remainderPath // !== '' ); } }); @@ -915,7 +921,7 @@ export interface ValueProto { } export interface EntityProto { - key: KeyProto|null; + key: KeyProto | null; // tslint:disable-next-line no-any properties: any; excludeFromIndexes?: boolean; @@ -927,7 +933,9 @@ export type Entity = any; export interface KeyProto { path: Array<{ // tslint:disable-next-line no-any - [index: string]: any; id: string; name: string; + [index: string]: any; + id: string; + name: string; kind?: string; idType?: string; }>; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index c4b7821403b..8b618a08e36 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -395,7 +395,7 @@ class Datastore extends DatastoreRequest { this.namespace = options.namespace; const userProvidedProjectId = - options.projectId || process.env.DATASTORE_PROJECT_ID; + options.projectId || process.env.DATASTORE_PROJECT_ID; const defaultProjectId = '{{projectId}}'; /** @@ -408,15 +408,16 @@ class Datastore extends DatastoreRequest { this.determineBaseUrl_(options.apiEndpoint); this.options = Object.assign( - { - libName: 'gccl', - libVersion: require('../../package.json').version, - scopes: gapic.v1.DatastoreClient.scopes, - servicePath: this.baseUrl_, - port: is.number(this.port_) ? this.port_ : 443, - projectId: userProvidedProjectId, - }, - options); + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: gapic.v1.DatastoreClient.scopes, + servicePath: this.baseUrl_, + port: is.number(this.port_) ? this.port_ : 443, + projectId: userProvidedProjectId, + }, + options + ); if (this.customEndpoint_) { this.options.sslCreds = grpc.credentials.createInsecure(); } @@ -536,11 +537,11 @@ class Datastore extends DatastoreRequest { * datastore.int('100000000000001234') * ]); */ - static int(value: number|string) { + static int(value: number | string) { return new entity.Int(value); } - int(value: number|string) { + int(value: number | string) { return Datastore.int(value); } @@ -635,8 +636,10 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); */ - createQuery(namespaceOrKind?: string|string[], kind?: string|string[]): - Query { + createQuery( + namespaceOrKind?: string | string[], + kind?: string | string[] + ): Query { let namespace = namespaceOrKind as string; if (arguments.length < 2) { kind = namespaceOrKind; @@ -697,11 +700,13 @@ class Datastore extends DatastoreRequest { * path: ['Company', 123] * }); */ - key(options: string|entity.KeyOptions|PathType[]): entity.Key { - options = is.object(options) ? options : { - namespace: this.namespace, - path: arrify(options) as PathType[], - }; + key(options: string | entity.KeyOptions | PathType[]): entity.Key { + options = is.object(options) + ? options + : { + namespace: this.namespace, + path: arrify(options) as PathType[], + }; return new entity.Key(options as entity.KeyOptions); } @@ -769,9 +774,10 @@ class Datastore extends DatastoreRequest { this.port_ = Number(baseUrl.match(port)![1]); } - this.baseUrl_ = baseUrl.replace(leadingProtocol, '') - .replace(port, '') - .replace(trailingSlashes, ''); + this.baseUrl_ = baseUrl + .replace(leadingProtocol, '') + .replace(port, '') + .replace(trailingSlashes, ''); } /** diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index d4094f0d9eb..e74760cc26c 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -20,7 +20,7 @@ import {Datastore} from '.'; import {Entity} from './entity'; import {Transaction} from './transaction'; -export type Operator = '='|'<'|'>'|'<='|'>='|'HAS_ANCESTOR'; +export type Operator = '=' | '<' | '>' | '<=' | '>=' | 'HAS_ANCESTOR'; export interface OrderOptions { descending?: boolean; @@ -28,7 +28,7 @@ export interface OrderOptions { export interface Order { name: string; - sign: '-'|'+'; + sign: '-' | '+'; } export interface Filter { @@ -58,24 +58,29 @@ export interface Filter { * const query = datastore.createQuery('AnimalNamespace', 'Lion'); */ class Query { - scope?: Datastore|Transaction; - namespace?: string|null; + scope?: Datastore | Transaction; + namespace?: string | null; kinds: string[]; filters: Filter[]; orders: Order[]; groupByVal: Array<{}>; selectVal: Array<{}>; - startVal: string|Buffer|null; - endVal: string|Buffer|null; + startVal: string | Buffer | null; + endVal: string | Buffer | null; limitVal: number; offsetVal: number; - constructor(scope?: Datastore|Transaction, kinds?: string[]|null); + constructor(scope?: Datastore | Transaction, kinds?: string[] | null); constructor( - scope?: Datastore|Transaction, namespace?: string|null, kinds?: string[]); + scope?: Datastore | Transaction, + namespace?: string | null, + kinds?: string[] + ); constructor( - scope?: Datastore|Transaction, namespaceOrKinds?: string|string[]|null, - kinds?: string[]) { + scope?: Datastore | Transaction, + namespaceOrKinds?: string | string[] | null, + kinds?: string[] + ) { let namespace = namespaceOrKinds as string | null; if (!kinds) { kinds = namespaceOrKinds as string[]; @@ -260,7 +265,7 @@ class Query { * const companyQuery = datastore.createQuery('Company'); * const groupedQuery = companyQuery.groupBy(['name', 'size']); */ - groupBy(fieldNames: string|string[]) { + groupBy(fieldNames: string | string[]) { this.groupByVal = arrify(fieldNames); return this; } @@ -287,7 +292,7 @@ class Query { * // Only retrieve the name and size properties. * const selectQuery = companyQuery.select(['name', 'size']); */ - select(fieldNames: string|string[]) { + select(fieldNames: string | string[]) { this.selectVal = arrify(fieldNames); return this; } @@ -310,7 +315,7 @@ class Query { * // Retrieve results starting from cursorToken. * const startQuery = companyQuery.start(cursorToken); */ - start(start: string|Buffer) { + start(start: string | Buffer) { this.startVal = start; return this; } @@ -333,7 +338,7 @@ class Query { * // Retrieve results limited to the extent of cursorToken. * const endQuery = companyQuery.end(cursorToken); */ - end(end: string|Buffer) { + end(end: string | Buffer) { this.endVal = end; return this; } @@ -438,13 +443,15 @@ class Query { * const entities = data[0]; * }); */ - run(optionsOrCallback?: RunQueryOptions|RunQueryCallback, - cb?: RunQueryCallback): void|Promise { + run( + optionsOrCallback?: RunQueryOptions | RunQueryCallback, + cb?: RunQueryCallback + ): void | Promise { const query = this as Query; const options = - typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = - typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; const runQuery = this.scope!.runQuery.bind(this.scope); return (runQuery as Function)(query, options, callback); } @@ -491,12 +498,12 @@ class Query { } export interface QueryProto { - startCursor?: string|Buffer; + startCursor?: string | Buffer; distinctOn: {}; kind: {}; order: {}; projection: {}; - endCursor?: string|Buffer; + endCursor?: string | Buffer; limit?: {}; offset?: number; filter?: {}; @@ -510,17 +517,19 @@ export interface QueryProto { export {Query}; export interface RunQueryOptions { - consistency?: 'strong'|'eventual'; + consistency?: 'strong' | 'eventual'; } export interface RunQueryCallback { - (err: Error|null, entities?: Entity[], info?: RunQueryInfo): void; + (err: Error | null, entities?: Entity[], info?: RunQueryInfo): void; } export type RunQueryResponse = [Entity[], RunQueryInfo]; export interface RunQueryInfo { endCursor?: string; - moreResults?: 'MORE_RESULTS_AFTER_LIMIT'|'MORE_RESULTS_AFTER_CURSOR'| - 'NO_MORE_RESULTS'; + moreResults?: + | 'MORE_RESULTS_AFTER_LIMIT' + | 'MORE_RESULTS_AFTER_CURSOR' + | 'NO_MORE_RESULTS'; } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 6b456ba32d7..a6c7533a1ca 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -33,7 +33,13 @@ const gapic = Object.freeze({ }); import {entity, Entity, KeyProto, ValueProto} from './entity'; -import {Query, RunQueryInfo, RunQueryOptions, RunQueryResponse, RunQueryCallback} from './query'; +import { + Query, + RunQueryInfo, + RunQueryOptions, + RunQueryResponse, + RunQueryCallback, +} from './query'; import {Datastore} from '.'; /** @@ -57,11 +63,15 @@ const CONSISTENCY_PROTO_CODE: ConsistencyProtoCode = { * @class */ class DatastoreRequest { - id: string|number|undefined; - requests_: Entity|{ - mutations: Array<{}>; - }; - requestCallbacks_: Array<(err: Error|null, resp: Entity|null) => void>|Entity; + id: string | number | undefined; + requests_: + | Entity + | { + mutations: Array<{}>; + }; + requestCallbacks_: + | Array<(err: Error | null, resp: Entity | null) => void> + | Entity; datastore!: Datastore; [key: string]: Entity; @@ -101,11 +111,15 @@ class DatastoreRequest { return entityObject; } - allocateIds(key: entity.Key, options: AllocateIdsOptions|number): - Promise; allocateIds( - key: entity.Key, options: AllocateIdsOptions|number, - callback: AllocateIdsCallback): void; + key: entity.Key, + options: AllocateIdsOptions | number + ): Promise; + allocateIds( + key: entity.Key, + options: AllocateIdsOptions | number, + callback: AllocateIdsCallback + ): void; /** * Generate IDs without creating entities. * @@ -179,31 +193,33 @@ class DatastoreRequest { * }); */ allocateIds( - key: entity.Key, options: AllocateIdsOptions|number, - callback?: AllocateIdsCallback): void|Promise { + key: entity.Key, + options: AllocateIdsOptions | number, + callback?: AllocateIdsCallback + ): void | Promise { if (entity.isKeyComplete(key)) { throw new Error('An incomplete key should be provided.'); } options = typeof options === 'number' ? {allocations: options} : options; this.request_( - { - client: 'DatastoreClient', - method: 'allocateIds', - reqOpts: { - keys: - new Array(options.allocations).fill(entity.keyToKeyProto(key)), - }, - gaxOpts: options.gaxOptions, + { + client: 'DatastoreClient', + method: 'allocateIds', + reqOpts: { + keys: new Array(options.allocations).fill(entity.keyToKeyProto(key)), }, - (err, resp) => { - if (err) { - callback!(err, null, resp); - return; - } - const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - callback!(null, keys, resp); - }); + gaxOpts: options.gaxOptions, + }, + (err, resp) => { + if (err) { + callback!(err, null, resp); + return; + } + const keys = arrify(resp.keys).map(entity.keyFromKeyProto); + callback!(null, keys, resp); + } + ); } /** @@ -230,14 +246,16 @@ class DatastoreRequest { * // All entities retrieved. * }); */ - createReadStream(keys: Entities, options: CreateReadStreamOptions = {}): - Transform { + createReadStream( + keys: Entities, + options: CreateReadStreamOptions = {} + ): Transform { keys = arrify(keys).map(entity.keyToKeyProto); if (keys.length === 0) { throw new Error('At least one Key object is required.'); } - const makeRequest = (keys: entity.Key[]|KeyProto[]) => { + const makeRequest = (keys: entity.Key[] | KeyProto[]) => { const reqOpts: RequestOptions = { keys, }; @@ -251,36 +269,37 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'lookup', - reqOpts, - gaxOpts: options.gaxOptions, - }, - (err, resp) => { - if (err) { - stream.destroy(err); - return; - } + { + client: 'DatastoreClient', + method: 'lookup', + reqOpts, + gaxOpts: options.gaxOptions, + }, + (err, resp) => { + if (err) { + stream.destroy(err); + return; + } - const entities = entity.formatArray(resp.found); - const nextKeys = (resp.deferred || []) - .map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); + const entities = entity.formatArray(resp.found); + const nextKeys = (resp.deferred || []) + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); - split(entities, stream).then(streamEnded => { - if (streamEnded) { - return; - } + split(entities, stream).then(streamEnded => { + if (streamEnded) { + return; + } - if (nextKeys.length > 0) { - makeRequest(nextKeys); - return; - } + if (nextKeys.length > 0) { + makeRequest(nextKeys); + return; + } - stream.push(null); - }); + stream.push(null); }); + } + ); }; const stream = streamEvents(through.obj()); @@ -293,8 +312,11 @@ class DatastoreRequest { delete(): Promise; delete(keys: Entities): void; delete(keys: Entities, callback: CommitCallback): void; - delete(keys: Entities, gaxOptions: CallOptions, callback: CommitCallback): - void; + delete( + keys: Entities, + gaxOptions: CallOptions, + callback: CommitCallback + ): void; /** * Delete all entities identified with the specified key(s). * @@ -344,12 +366,14 @@ class DatastoreRequest { * }); */ delete( - keys?: Entities, gaxOptionsOrCallback?: CallOptions|CommitCallback, - cb?: CommitCallback): void|Promise { + keys?: Entities, + gaxOptionsOrCallback?: CallOptions | CommitCallback, + cb?: CommitCallback + ): void | Promise { const gaxOptions = - typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = - typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; const reqOpts = { mutations: arrify(keys).map((key: entity.Key) => { @@ -365,20 +389,26 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions, - }, - callback); + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions, + }, + callback + ); } - get(keys: Entities, - options?: CreateReadStreamOptions): Promise; + get( + keys: Entities, + options?: CreateReadStreamOptions + ): Promise; get(keys: Entities, callback: GetCallback): void; - get(keys: Entities, options: CreateReadStreamOptions, - callback: GetCallback): void; + get( + keys: Entities, + options: CreateReadStreamOptions, + callback: GetCallback + ): void; /** * Retrieve the entities identified with the specified key(s) in the current * transaction. Get operations require a valid key to retrieve the @@ -464,20 +494,26 @@ class DatastoreRequest { * const entities = data[0]; * }); */ - get(keys: Entities, optionsOrCallback?: CreateReadStreamOptions|GetCallback, - cb?: GetCallback): void|Promise { - const options = typeof optionsOrCallback === 'object' && optionsOrCallback ? - optionsOrCallback : - {}; + get( + keys: Entities, + optionsOrCallback?: CreateReadStreamOptions | GetCallback, + cb?: GetCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' && optionsOrCallback + ? optionsOrCallback + : {}; const callback = - typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; this.createReadStream(keys, options) - .on('error', callback) - .pipe(concat((results: Entity[]) => { + .on('error', callback) + .pipe( + concat((results: Entity[]) => { const isSingleLookup = !Array.isArray(keys); callback(null, isSingleLookup ? results[0] : results); - })); + }) + ); } insert(entities: Entities): Promise; @@ -496,21 +532,26 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - insert(entities: Entities, callback?: CallOptions): - void|Promise { + insert( + entities: Entities, + callback?: CallOptions + ): void | Promise { entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'insert'; - return x; - }); + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'insert'; + return x; + }); this.save(entities, callback); } runQuery(query: Query, options?: RunQueryOptions): Promise; - runQuery(query: Query, options: RunQueryOptions, callback: RunQueryCallback): - void; + runQuery( + query: Query, + options: RunQueryOptions, + callback: RunQueryCallback + ): void; runQuery(query: Query, callback: RunQueryCallback): void; /** * Datastore allows you to query entities by kind, filter them by property @@ -605,24 +646,27 @@ class DatastoreRequest { * }); */ runQuery( - query: Query, optionsOrCallback?: RunQueryOptions|RunQueryCallback, - cb?: RunQueryCallback): void|Promise { + query: Query, + optionsOrCallback?: RunQueryOptions | RunQueryCallback, + cb?: RunQueryCallback + ): void | Promise { const options = - typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = - typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; let info: RunQueryInfo; this.runQueryStream(query, options) - .on('error', callback) - .on('info', - info_ => { - info = info_; - }) - .pipe(concat((results: Entity[]) => { + .on('error', callback) + .on('info', info_ => { + info = info_; + }) + .pipe( + concat((results: Entity[]) => { callback(null, results, info); - })); + }) + ); } /** @@ -678,16 +722,17 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'runQuery', - reqOpts, - gaxOpts: options.gaxOptions, - }, - onResultSet); + { + client: 'DatastoreClient', + method: 'runQuery', + reqOpts, + gaxOpts: options.gaxOptions, + }, + onResultSet + ); }; - function onResultSet(err?: Error|null, resp?: Entity) { + function onResultSet(err?: Error | null, resp?: Entity) { if (err) { stream.destroy(err); return; @@ -742,8 +787,11 @@ class DatastoreRequest { save(entities: Entities): Promise; save(entities: Entities, gaxOptions?: CallOptions): Promise; - save(entities: Entities, gaxOptions: CallOptions, callback: SaveCallback): - void; + save( + entities: Entities, + gaxOptions: CallOptions, + callback: SaveCallback + ): void; save(entities: Entities, callback: SaveCallback): void; /** * Insert or update the specified object(s). If a key is incomplete, its @@ -955,13 +1003,15 @@ class DatastoreRequest { * }); */ save( - entities: Entities, gaxOptionsOrCallback?: CallOptions|SaveCallback, - cb?: SaveCallback): void|Promise { + entities: Entities, + gaxOptionsOrCallback?: CallOptions | SaveCallback, + cb?: SaveCallback + ): void | Promise { entities = arrify(entities); const gaxOptions = - typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = - typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; const insertIndexes: BooleanObject = {}; const mutations: google.datastore.v1.IMutation[] = []; @@ -973,68 +1023,73 @@ class DatastoreRequest { // Iterate over the entity objects, build a proto from all keys and values, // then place in the correct mutation array (insert, update, etc). - entities.map(DatastoreRequest.prepareEntityObject_) - .forEach((entityObject: Entity, index: number) => { - const mutation: Mutation = {}; - let entityProto: EntityProtoObject = {}; - let method = 'upsert'; - - if (entityObject.method) { - if (methods[entityObject.method]) { - method = entityObject.method; - } else { - throw new Error( - 'Method ' + entityObject.method + ' not recognized.'); - } + entities + .map(DatastoreRequest.prepareEntityObject_) + .forEach((entityObject: Entity, index: number) => { + const mutation: Mutation = {}; + let entityProto: EntityProtoObject = {}; + let method = 'upsert'; + + if (entityObject.method) { + if (methods[entityObject.method]) { + method = entityObject.method; + } else { + throw new Error( + 'Method ' + entityObject.method + ' not recognized.' + ); } + } - if (!entity.isKeyComplete(entityObject.key)) { - insertIndexes[index] = true; - } + if (!entity.isKeyComplete(entityObject.key)) { + insertIndexes[index] = true; + } - // @TODO remove in @google-cloud/datastore@2.0.0 - // This was replaced with a more efficient mechanism in the top-level - // `excludeFromIndexes` option. - if (Array.isArray(entityObject.data)) { - entityProto.properties = entityObject.data.reduce( - (acc: EntityProtoReduceAccumulator, - data: EntityProtoReduceData) => { - const value = entity.encodeValue(data.value); - - if (typeof data.excludeFromIndexes === 'boolean') { - const excluded = data.excludeFromIndexes; - let values = value.arrayValue && value.arrayValue.values; - - if (values) { - values = values.map((x: ValueProto) => { - x.excludeFromIndexes = excluded; - return x; - }); - } else { - value.excludeFromIndexes = data.excludeFromIndexes; - } - } - - acc[data.name] = value; - - return acc; - }, - {}); - } else { - entityProto = entity.entityToEntityProto(entityObject); - } + // @TODO remove in @google-cloud/datastore@2.0.0 + // This was replaced with a more efficient mechanism in the top-level + // `excludeFromIndexes` option. + if (Array.isArray(entityObject.data)) { + entityProto.properties = entityObject.data.reduce( + ( + acc: EntityProtoReduceAccumulator, + data: EntityProtoReduceData + ) => { + const value = entity.encodeValue(data.value); + + if (typeof data.excludeFromIndexes === 'boolean') { + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map((x: ValueProto) => { + x.excludeFromIndexes = excluded; + return x; + }); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } + } - entityProto.key = entity.keyToKeyProto(entityObject.key); + acc[data.name] = value; - mutation[method] = entityProto; - mutations.push(mutation); - }); + return acc; + }, + {} + ); + } else { + entityProto = entity.entityToEntityProto(entityObject); + } + + entityProto.key = entity.keyToKeyProto(entityObject.key); + + mutation[method] = entityProto; + mutations.push(mutation); + }); const reqOpts = { mutations, }; - function onCommit(err?: Error|null, resp?: {mutationResults: [Entity];}) { + function onCommit(err?: Error | null, resp?: {mutationResults: [Entity]}) { if (err || !resp) { callback(err, resp); return; @@ -1061,13 +1116,14 @@ class DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions || {}, - }, - onCommit); + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions || {}, + }, + onCommit + ); } update(entities: Entities): Promise; @@ -1086,14 +1142,16 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - update(entities: Entities, callback?: CallOptions): - void|Promise { + update( + entities: Entities, + callback?: CallOptions + ): void | Promise { entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'update'; - return x; - }); + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'update'; + return x; + }); this.save(entities, callback); } @@ -1114,14 +1172,16 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ - upsert(entities: Entities, callback?: CallOptions): - void|Promise { + upsert( + entities: Entities, + callback?: CallOptions + ): void | Promise { entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'upsert'; - return x; - }); + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'upsert'; + return x; + }); this.save(entities, callback); } @@ -1165,7 +1225,8 @@ class DatastoreRequest { if (isTransaction && (method === 'lookup' || method === 'runQuery')) { if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { throw new Error( - 'Read consistency cannot be specified in a transaction.'); + 'Read consistency cannot be specified in a transaction.' + ); } reqOpts.readOptions = { @@ -1174,28 +1235,32 @@ class DatastoreRequest { } datastore.auth.getProjectId( - (err: GetProjectIdErr, projectId: ProjectId) => { - if (err) { - callback!(err); - return; - } + (err: GetProjectIdErr, projectId: ProjectId) => { + if (err) { + callback!(err); + return; + } - const clientName = config.client; + const clientName = config.client; - if (!datastore.clients_.has(clientName)) { - datastore.clients_.set( - clientName, new gapic.v1[clientName](datastore.options)); - } - const gaxClient: Entities|undefined = - datastore.clients_.get(clientName); - reqOpts = replaceProjectIdToken(reqOpts, projectId!); - const gaxOpts = extend(true, {}, config.gaxOpts, { - headers: { - 'google-cloud-resource-prefix': `projects/${projectId}`, - }, - }); - gaxClient![method](reqOpts, gaxOpts, callback); + if (!datastore.clients_.has(clientName)) { + datastore.clients_.set( + clientName, + new gapic.v1[clientName](datastore.options) + ); + } + const gaxClient: Entities | undefined = datastore.clients_.get( + clientName + ); + reqOpts = replaceProjectIdToken(reqOpts, projectId!); + const gaxOpts = extend(true, {}, config.gaxOpts, { + headers: { + 'google-cloud-resource-prefix': `projects/${projectId}`, + }, }); + gaxClient![method](reqOpts, gaxOpts, callback); + } + ); } } @@ -1208,7 +1273,7 @@ export interface ConsistencyProtoCode { [key: string]: number; } export type CommitResponse = [google.datastore.v1.ICommitResponse]; -export type Entities = Entity|Entity[]; +export type Entities = Entity | Entity[]; export interface EntityProtoObject { method?: string; properties?: {[key: string]: ValueProto}; @@ -1220,7 +1285,7 @@ export interface EntityProtoReduceAccumulator { export interface EntityProtoReduceData { value: ValueProto; excludeFromIndexes: ValueProto; - name: string|number; + name: string | number; } export interface AllocateIdsRequestResponse { @@ -1229,7 +1294,11 @@ export interface AllocateIdsRequestResponse { } export type AllocateIdsResponse = [google.datastore.v1.AllocateIdsResponse]; export interface AllocateIdsCallback { - (a: Error|null, b: entity.Key[]|null, c: AllocateIdsRequestResponse): void; + ( + a: Error | null, + b: entity.Key[] | null, + c: AllocateIdsRequestResponse + ): void; } export interface AllocateIdsOptions { allocations?: number; @@ -1240,56 +1309,59 @@ export interface CreateReadStreamOptions { gaxOptions?: CallOptions; } export interface CommitCallback { - (err?: Error|null, resp?: google.datastore.v1.CommitResponse): void; + (err?: Error | null, resp?: google.datastore.v1.CommitResponse): void; } export interface GetCallback { (...args: Entity[]): void; } -export type GetProjectIdErr = Error|null|undefined; -export type Keys = Entity|Entity[]; +export type GetProjectIdErr = Error | null | undefined; +export type Keys = Entity | Entity[]; export interface Mutation extends google.datastore.v1.IMutation { [key: string]: Entity; } export interface PrepareEntityObject { - [key: string]: google.datastore.v1.Key|undefined; + [key: string]: google.datastore.v1.Key | undefined; } export interface PrepareEntityObjectResponse { key?: google.datastore.v1.Key; data?: google.datastore.v1.Entity; method?: string; } -export type ProjectId = string|null|undefined; +export type ProjectId = string | null | undefined; export interface RequestCallback { - (a?: Error|null, - b?: AllocateIdsRequestResponse&google.datastore.v1.ILookupResponse& - Entities): void; + ( + a?: Error | null, + b?: AllocateIdsRequestResponse & + google.datastore.v1.ILookupResponse & + Entities + ): void; } export interface RequestConfig { client: string; - gaxOpts?: number|CallOptions|KeyProto; + gaxOpts?: number | CallOptions | KeyProto; method: string; prepared?: boolean; - reqOpts?: Entity|RequestOptions; + reqOpts?: Entity | RequestOptions; gaxOptions?: never; } export interface RequestOptions { - mutations?: []|Array<{delete: KeyProto;}>|Array<{}>; + mutations?: [] | Array<{delete: KeyProto}> | Array<{}>; keys?: Entity; - readOptions?: {readConsistency?: number - transaction?: string|number; + readOptions?: {readConsistency?: number; transaction?: string | number}; + transactionOptions?: { + readOnly?: {}; + readWrite?: {previousTransaction?: string}; }; - transactionOptions?: - {readOnly?: {}; readWrite?: {previousTransaction?: string;};}; - transaction?: string|number; - mode?: string; - projectId?: string; + transaction?: string | number; + mode?: string; + projectId?: string; } export interface RunQueryStreamOptions { gaxOptions?: CallOptions; - consistency?: 'strong'|'eventual'; + consistency?: 'strong' | 'eventual'; } export interface SaveCallback { - (a?: Error|null, b?: Entity): void; + (a?: Error | null, b?: Entity): void; } /*! Developer Documentation diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 5bf6a050b5c..53803e48a27 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -133,13 +133,17 @@ class Transaction extends DatastoreRequest { * }); */ commit( - gaxOptionsOrCallback?: CallOptions|CommitCallback, - cb?: CommitCallback): void|Promise { - const callback = typeof gaxOptionsOrCallback === 'function' ? - gaxOptionsOrCallback : - typeof cb === 'function' ? cb : (() => {}); + gaxOptionsOrCallback?: CallOptions | CommitCallback, + cb?: CommitCallback + ): void | Promise { + const callback = + typeof gaxOptionsOrCallback === 'function' + ? gaxOptionsOrCallback + : typeof cb === 'function' + ? cb + : () => {}; const gaxOptions = - typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; if (this.skipCommit) { setImmediate(callback); @@ -149,108 +153,108 @@ class Transaction extends DatastoreRequest { const keys: Entities = {}; this.modifiedEntities_ - // Reverse the order of the queue to respect the "last queued request - // wins" behavior. - .reverse() - // Limit the operations we're going to send through to only the most - // recently queued operations. E.g., if a user tries to save with the - // same key they just asked to be deleted, the delete request will be - // ignored, giving preference to the save operation. - .filter((modifiedEntity: Entity) => { - const key = modifiedEntity.entity.key; - - if (!entity.isKeyComplete(key)) return true; - - const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); - - if (!keys[stringifiedKey]) { - keys[stringifiedKey] = true; - return true; - } - - return false; - }) - // Group entities together by method: `save` mutations, then `delete`. - // Note: `save` mutations being first is required to maintain order when - // assigning IDs to incomplete keys. - .sort((a, b) => { - return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; - }) - // Group arguments together so that we only make one call to each - // method. This is important for `DatastoreRequest.save`, especially, as - // that method handles assigning auto-generated IDs to the original keys - // passed in. When we eventually execute the `save` method's API - // callback, having all the keys together is necessary to maintain - // order. - .reduce( - (acc: Entities, entityObject: Entity) => { - const lastEntityObject = acc[acc.length - 1]; - const sameMethod = lastEntityObject && - entityObject.method === lastEntityObject.method; - - if (!lastEntityObject || !sameMethod) { - acc.push(entityObject); - } else { - lastEntityObject.args = - lastEntityObject.args.concat(entityObject.args); - } - - return acc; - }, - []) - // Call each of the mutational methods (DatastoreRequest[save,delete]) - // to build up a `req` array on this instance. This will also build up a - // `callbacks` array, that is the same callback that would run if we - // were using `save` and `delete` outside of a transaction, to process - // the response from the API. - .forEach( - (modifiedEntity: {method: string; args: {reverse: () => void}}) => { - const method = modifiedEntity.method; - const args = modifiedEntity.args.reverse(); - DatastoreRequest.prototype[method].call(this, args, () => {}); - }); + // Reverse the order of the queue to respect the "last queued request + // wins" behavior. + .reverse() + // Limit the operations we're going to send through to only the most + // recently queued operations. E.g., if a user tries to save with the + // same key they just asked to be deleted, the delete request will be + // ignored, giving preference to the save operation. + .filter((modifiedEntity: Entity) => { + const key = modifiedEntity.entity.key; + + if (!entity.isKeyComplete(key)) return true; + + const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); + + if (!keys[stringifiedKey]) { + keys[stringifiedKey] = true; + return true; + } + + return false; + }) + // Group entities together by method: `save` mutations, then `delete`. + // Note: `save` mutations being first is required to maintain order when + // assigning IDs to incomplete keys. + .sort((a, b) => { + return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; + }) + // Group arguments together so that we only make one call to each + // method. This is important for `DatastoreRequest.save`, especially, as + // that method handles assigning auto-generated IDs to the original keys + // passed in. When we eventually execute the `save` method's API + // callback, having all the keys together is necessary to maintain + // order. + .reduce((acc: Entities, entityObject: Entity) => { + const lastEntityObject = acc[acc.length - 1]; + const sameMethod = + lastEntityObject && entityObject.method === lastEntityObject.method; + + if (!lastEntityObject || !sameMethod) { + acc.push(entityObject); + } else { + lastEntityObject.args = lastEntityObject.args.concat( + entityObject.args + ); + } + + return acc; + }, []) + // Call each of the mutational methods (DatastoreRequest[save,delete]) + // to build up a `req` array on this instance. This will also build up a + // `callbacks` array, that is the same callback that would run if we + // were using `save` and `delete` outside of a transaction, to process + // the response from the API. + .forEach( + (modifiedEntity: {method: string; args: {reverse: () => void}}) => { + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); + DatastoreRequest.prototype[method].call(this, args, () => {}); + } + ); // Take the `req` array built previously, and merge them into one request to // send as the final transactional commit. const reqOpts = { - mutations: - this.requests_ - .map( - (x: {mutations: google.datastore.v1.Mutation}) => x.mutations) - .reduce( - (a: {concat: (arg0: Entity) => void}, b: Entity) => - a.concat(b), - []), + mutations: this.requests_ + .map((x: {mutations: google.datastore.v1.Mutation}) => x.mutations) + .reduce( + (a: {concat: (arg0: Entity) => void}, b: Entity) => a.concat(b), + [] + ), }; this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions || {}, - }, - (err, resp) => { - if (err) { - // Rollback automatically for the user. - this.rollback(() => { - // Provide the error & API response from the failed commit to the - // user. Even a failed rollback should be transparent. RE: - // https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 - callback(err, resp); - }); - return; + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions || {}, + }, + (err, resp) => { + if (err) { + // Rollback automatically for the user. + this.rollback(() => { + // Provide the error & API response from the failed commit to the + // user. Even a failed rollback should be transparent. RE: + // https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } + + // The `callbacks` array was built previously. These are the callbacks + // that handle the API response normally when using the + // DatastoreRequest.save and .delete methods. + this.requestCallbacks_.forEach( + (cb: (arg0: null, arg1: Entity) => void) => { + cb(null, resp); } - - // The `callbacks` array was built previously. These are the callbacks - // that handle the API response normally when using the - // DatastoreRequest.save and .delete methods. - this.requestCallbacks_.forEach( - (cb: (arg0: null, arg1: Entity) => void) => { - cb(null, resp); - }); - callback(null, resp); - }); + ); + callback(null, resp); + } + ); } /** @@ -291,7 +295,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - createQuery(namespace: string, kind?: string|string[]): Query { + createQuery(namespace: string, kind?: string | string[]): Query { return this.datastore.createQuery.call(this, namespace, kind as string[]); } @@ -329,7 +333,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - delete(entities?: Entities): void|Promise { + delete(entities?: Entities): void | Promise { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { @@ -379,23 +383,26 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[0]; * }); */ - rollback(gaxOptionsOrCallback?: CallOptions|RollbackCallback, cb?: Function): - void|Promise { + rollback( + gaxOptionsOrCallback?: CallOptions | RollbackCallback, + cb?: Function + ): void | Promise { const gaxOptions = - typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = - typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; this.request_( - { - client: 'DatastoreClient', - method: 'rollback', - gaxOpts: gaxOptions || {}, - }, - (err, resp) => { - this.skipCommit = true; - callback(err || null, resp); - }); + { + client: 'DatastoreClient', + method: 'rollback', + gaxOpts: gaxOptions || {}, + }, + (err, resp) => { + this.skipCommit = true; + callback(err || null, resp); + } + ); } run(options?: RunOptions): Promise; @@ -451,12 +458,14 @@ class Transaction extends DatastoreRequest { * const apiResponse = data[1]; * }); */ - run(optionsOrCallback?: RunOptions|RunCallback|Entity, - cb?: RunCallback): void|Promise { + run( + optionsOrCallback?: RunOptions | RunCallback | Entity, + cb?: RunCallback + ): void | Promise { const options = - typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = - typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; const reqOpts = { transactionOptions: {}, @@ -468,7 +477,7 @@ class Transaction extends DatastoreRequest { if (options.transactionId || this.id) { reqOpts.transactionOptions!.readWrite = { - previousTransaction: options.transactionId || this.id + previousTransaction: options.transactionId || this.id, }; } @@ -477,20 +486,21 @@ class Transaction extends DatastoreRequest { } this.request_( - { - client: 'DatastoreClient', - method: 'beginTransaction', - reqOpts, - gaxOpts: options.gaxOptions, - }, - (err, resp) => { - if (err) { - callback(err, null, resp); - return; - } - this.id = resp.transaction; - callback(null, this, resp); - }); + { + client: 'DatastoreClient', + method: 'beginTransaction', + reqOpts, + gaxOpts: options.gaxOptions, + }, + (err, resp) => { + if (err) { + callback(err, null, resp); + return; + } + this.id = resp.transaction; + callback(null, this, resp); + } + ); } /** @@ -636,15 +646,22 @@ class Transaction extends DatastoreRequest { } } -export type Entities = Entity|Entity[]; -export type ModifiedEntities = - Array<{entity: {key: Entity}; method: string; args: Entity[];}>; +export type Entities = Entity | Entity[]; +export type ModifiedEntities = Array<{ + entity: {key: Entity}; + method: string; + args: Entity[]; +}>; export type CommitCallback = google.datastore.v1.Datastore.CommitCallback; -export type BeginTransactionResponse = - [google.datastore.v1.BeginTransactionResponse]; +export type BeginTransactionResponse = [ + google.datastore.v1.BeginTransactionResponse +]; export interface RunCallback { - (error: Error|null, transaction: Transaction|null, - response?: google.datastore.v1.BeginTransactionResponse): void; + ( + error: Error | null, + transaction: Transaction | null, + response?: google.datastore.v1.BeginTransactionResponse + ): void; } export type RollbackCallback = google.datastore.v1.Datastore.RollbackCallback; export type RollbackResponse = [google.datastore.v1.RollbackResponse]; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 20155abdefd..c6b52a4fee0 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -208,11 +208,13 @@ describe('Datastore', () => { // The key's path should now be complete. assert(postKey.id); - await assertRejects(datastore.save({ - key: postKey, - method: 'insert', - data: post, - })); + await assertRejects( + datastore.save({ + key: postKey, + method: 'insert', + data: post, + }) + ); const [entity] = await datastore.get(postKey); delete entity[datastore.KEY]; assert.deepStrictEqual(entity, post); @@ -221,11 +223,13 @@ describe('Datastore', () => { it('should fail explicitly set first update on save', async () => { const postKey = datastore.key('Post'); - await assertRejects(datastore.save({ - key: postKey, - method: 'update', - data: post, - })); + await assertRejects( + datastore.save({ + key: postKey, + method: 'update', + data: post, + }) + ); }); it('should save/get/delete multiple entities at once', async () => { @@ -251,22 +255,24 @@ describe('Datastore', () => { const key2 = datastore.key('Post'); datastore.save( - [{key: key1, data: post}, {key: key2, data: post}], err => { - assert.ifError(err); - - let numEntitiesEmitted = 0; - - datastore.createReadStream([key1, key2]) - .on('error', done) - .on('data', - () => { - numEntitiesEmitted++; - }) - .on('end', () => { - assert.strictEqual(numEntitiesEmitted, 2); - datastore.delete([key1, key2], done); - }); - }); + [{key: key1, data: post}, {key: key2, data: post}], + err => { + assert.ifError(err); + + let numEntitiesEmitted = 0; + + datastore + .createReadStream([key1, key2]) + .on('error', done) + .on('data', () => { + numEntitiesEmitted++; + }) + .on('end', () => { + assert.strictEqual(numEntitiesEmitted, 2); + datastore.delete([key1, key2], done); + }); + } + ); }); it('should save keys as a part of entity and query by key', async () => { @@ -275,12 +281,13 @@ describe('Datastore', () => { key: personKey, data: { fullName: 'Full name', - linkedTo: personKey, // himself + linkedTo: personKey, // himself }, }); - const query = datastore.createQuery('Person') - .hasAncestor(datastore.key(['People', 'US'])) - .filter('linkedTo', personKey); + const query = datastore + .createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); const [results] = await datastore.runQuery(query); assert.strictEqual(results![0].fullName, 'Full name'); assert.deepStrictEqual(results![0].linkedTo, personKey); @@ -418,21 +425,26 @@ describe('Datastore', () => { }); it('should limit queries', async () => { - const q = - datastore.createQuery('Character').hasAncestor(ancestor).limit(5); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(5); const [firstEntities, info] = await datastore.runQuery(q); assert.strictEqual(firstEntities!.length, 5); - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .start(info!.endCursor!); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .start(info!.endCursor!); const [secondEntities] = await datastore.runQuery(secondQ); assert.strictEqual(secondEntities!.length, 3); }); it('should not go over a limit', async () => { const limit = 3; - const q = - datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); const [results] = await datastore.runQuery(q); assert.strictEqual(results!.length, limit); }); @@ -440,42 +452,48 @@ describe('Datastore', () => { it('should run a query as a stream', done => { const q = datastore.createQuery('Character').hasAncestor(ancestor); let resultsReturned = 0; - datastore.runQueryStream(q) - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, characters.length); - done(); - }); + datastore + .runQueryStream(q) + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); }); it('should not go over a limit with a stream', done => { const limit = 3; - const q = - datastore.createQuery('Character').hasAncestor(ancestor).limit(limit); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); let resultsReturned = 0; - datastore.runQueryStream(q) - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, limit); - done(); - }); + datastore + .runQueryStream(q) + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, limit); + done(); + }); }); it('should filter queries with simple indexes', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', '>=', 20); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '>=', 20); const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 6); }); it('should filter queries with defined indexes', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .filter('family', 'Stark') - .filter('appearances', '>=', 20); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('family', 'Stark') + .filter('appearances', '>=', 20); const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 6); }); @@ -488,17 +506,19 @@ describe('Datastore', () => { it('should filter by key', async () => { const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .filter('__key__', key); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('__key__', key); const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 1); }); it('should order queries', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .order('appearances'); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .order('appearances'); const [entities] = await datastore.runQuery(q); assert.strictEqual(entities![0].name, characters[0].name); @@ -506,10 +526,10 @@ describe('Datastore', () => { }); it('should select projections', async () => { - const q = - datastore.createQuery('Character').hasAncestor(ancestor).select([ - 'name', 'family' - ]); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .select(['name', 'family']); const [entities] = await datastore.runQuery(q); delete entities[0][datastore.KEY]; @@ -525,20 +545,22 @@ describe('Datastore', () => { }); it('should paginate with offset and limit', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(3) - .order('appearances'); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(3) + .order('appearances'); const [entities, info] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 3); assert.strictEqual(entities![0].name, 'Robb'); assert.strictEqual(entities![2].name, 'Catelyn'); - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); const [secondEntities] = await datastore.runQuery(secondQ); assert.strictEqual(secondEntities!.length, 3); assert.strictEqual(secondEntities![0].name, 'Sansa'); @@ -546,16 +568,18 @@ describe('Datastore', () => { }); it('should resume from a start cursor', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(2) - .order('appearances'); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(2) + .order('appearances'); const [, info] = await datastore.runQuery(q); - const secondQ = datastore.createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); const [secondEntities] = await datastore.runQuery(secondQ); assert.strictEqual(secondEntities!.length, 4); assert.strictEqual(secondEntities![0].name, 'Catelyn'); @@ -563,9 +587,10 @@ describe('Datastore', () => { }); it('should group queries', async () => { - const q = datastore.createQuery('Character') - .hasAncestor(ancestor) - .groupBy('appearances'); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .groupBy('appearances'); const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, characters.length - 1); }); @@ -625,7 +650,7 @@ describe('Datastore', () => { // Deletes the key that is in the deletion queue. datastore.get(deleteKey), // Updates data on the key. - datastore.get(key) + datastore.get(key), ]); assert.strictEqual(typeof deletedEntity, 'undefined'); assert.strictEqual(fetchedEntity.rating, 10); diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json b/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json index 8535d6bd888..fa50af0ff4d 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json @@ -18,6 +18,6 @@ "devDependencies": { "@types/node": "^10.3.0", "typescript": "^3.0.0", - "gts": "^0.9.0" + "gts": "^1.0.0" } } diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index baa62e7a464..07be6ac570e 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -21,10 +21,10 @@ import * as tmp from 'tmp'; import {promisify} from 'util'; const execSync = (cmd: string, opts?: object) => - cp.execSync(cmd, {encoding: 'utf-8', ...opts}); + cp.execSync(cmd, {encoding: 'utf-8', ...opts}); const keep = false; -const mvp = promisify(mv) as {} as (...args: string[]) => Promise; +const mvp = (promisify(mv) as {}) as (...args: string[]) => Promise; const ncpp = promisify(ncp); const stagingDir = tmp.dirSync({keep, unsafeCleanup: true}); const stagingPath = stagingDir.name; @@ -40,12 +40,14 @@ describe('📦 pack and install', () => { const tarball = `google-cloud-datastore-${pkg.version}.tgz`; await mvp(tarball, `${stagingPath}/datastore.tgz`); await ncpp('system-test/fixtures/sample', `${stagingPath}/`); - execSync( - 'npm install --unsafe-perm', - {cwd: `${stagingPath}/`, stdio: 'inherit'}); - execSync( - 'node --throw-deprecation build/src/index.js', - {cwd: `${stagingPath}/`, stdio: 'inherit'}); + execSync('npm install --unsafe-perm', { + cwd: `${stagingPath}/`, + stdio: 'inherit', + }); + execSync('node --throw-deprecation build/src/index.js', { + cwd: `${stagingPath}/`, + stdio: 'inherit', + }); }); /** diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 8854ae54755..adac54ee89a 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -200,7 +200,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), expectedValue); + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode blobs', () => { @@ -212,7 +214,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), expectedValue); + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode null', () => { @@ -298,7 +302,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), expectedValue); + entity.decodeValueProto(valueProto), + expectedValue + ); }); it('should return the value if no conversions are necessary', () => { @@ -552,7 +558,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.entityFromEntityProto(entityProto), expectedEntity); + entity.entityFromEntityProto(entityProto), + expectedEntity + ); }); }); @@ -577,7 +585,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), expectedEntityProto); + entity.entityToEntityProto(entityObject), + expectedEntityProto + ); }); it('should respect excludeFromIndexes', () => { @@ -1002,7 +1012,9 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), expectedEntityProto); + entity.entityToEntityProto(entityObject), + expectedEntityProto + ); }); }); @@ -1040,7 +1052,7 @@ describe('entity', () => { }); describe('isKeyComplete', () => { - it('should convert key to key proto', (done) => { + it('should convert key to key proto', done => { const key = new entity.Key({ path: ['Kind', 123], }); @@ -1101,7 +1113,7 @@ describe('entity', () => { ], }; - it('should set the namespace', (done) => { + it('should set the namespace', done => { entity.Key = class { constructor(keyOptions: entity.KeyOptions) { assert.strictEqual(keyOptions.namespace, NAMESPACE); @@ -1111,7 +1123,7 @@ describe('entity', () => { entity.keyFromKeyProto(keyProto); }); - it('should create a proper Key', (done) => { + it('should create a proper Key', done => { entity.Key = class { constructor(keyOptions: entity.KeyOptions) { assert.deepStrictEqual(keyOptions, { @@ -1136,7 +1148,7 @@ describe('entity', () => { assert.strictEqual(entity.keyFromKeyProto(keyProto), expectedValue); }); - it('should throw if path is invalid', (done) => { + it('should throw if path is invalid', done => { const keyProtoInvalid = { partitionId: { namespaceId: 'Namespace', @@ -1228,7 +1240,7 @@ describe('entity', () => { assert.strictEqual(keyProtoWithNs.path[0].name, undefined); }); - it('should throw if key contains 0 items', (done) => { + it('should throw if key contains 0 items', done => { const key = new entity.Key({ path: [], }); @@ -1242,7 +1254,7 @@ describe('entity', () => { } }); - it('should throw if key path contains null ids', (done) => { + it('should throw if key path contains null ids', done => { const key = new entity.Key({ namespace: 'Namespace', path: ['Kind1', null, 'Company'], @@ -1347,16 +1359,17 @@ describe('entity', () => { const ds = new Datastore({projectId: 'project-id'}); - const query = ds.createQuery('Kind1') - .filter('name', 'John') - .start('start') - .end('end') - .groupBy(['name']) - .order('name') - .select('name') - .limit(1) - .offset(1) - .hasAncestor(ancestorKey); + const query = ds + .createQuery('Kind1') + .filter('name', 'John') + .start('start') + .end('end') + .groupBy(['name']) + .order('name') + .select('name') + .limit(1) + .offset(1) + .hasAncestor(ancestorKey); assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); }); @@ -1366,7 +1379,10 @@ describe('entity', () => { const startVal = Buffer.from('start'); const endVal = Buffer.from('end'); - const query = ds.createQuery('Kind1').start(startVal).end(endVal); + const query = ds + .createQuery('Kind1') + .start(startVal) + .end(endVal); const queryProto = entity.queryToQueryProto(query); assert.strictEqual(queryProto.endCursor, endVal); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 481d729100c..afab2a32370 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -65,23 +65,25 @@ const fakeEntity: any = { }, }; -let googleAuthOverride: Function|null; +let googleAuthOverride: Function | null; function fakeGoogleAuth() { return (googleAuthOverride || (() => {})).apply(null, arguments); } -let createInsecureOverride: Function|null; +let createInsecureOverride: Function | null; const fakeGoogleGax = { - GrpcClient: class extends gax.GrpcClient{ + GrpcClient: class extends gax.GrpcClient { constructor(opts: gax.GrpcClientOptions) { // super constructor must be called first! super(opts); this.grpc = { credentials: { createInsecure() { - return (createInsecureOverride || (() => {})) - .apply(null, arguments); + return (createInsecureOverride || (() => {})).apply( + null, + arguments + ); }, }, } as gax.GrpcModule; @@ -126,15 +128,15 @@ describe('Datastore', () => { before(() => { Datastore = proxyquire('../src', { - './entity.js': {entity: fakeEntity}, - './query.js': {Query: FakeQuery}, - './transaction.js': {Transaction: FakeTransaction}, - './v1': FakeV1, - 'google-auth-library': { - GoogleAuth: fakeGoogleAuth, - }, - 'google-gax': fakeGoogleGax, - }).Datastore; + './entity.js': {entity: fakeEntity}, + './query.js': {Query: FakeQuery}, + './transaction.js': {Transaction: FakeTransaction}, + './v1': FakeV1, + 'google-auth-library': { + GoogleAuth: fakeGoogleAuth, + }, + 'google-gax': fakeGoogleGax, + }).Datastore; }); beforeEach(() => { @@ -208,10 +210,10 @@ describe('Datastore', () => { assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com'); }); - it('should set default API connection details', (done) => { + it('should set default API connection details', done => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - Datastore.prototype.determineBaseUrl_ = (customApiEndpoint) => { + Datastore.prototype.determineBaseUrl_ = customApiEndpoint => { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; assert.strictEqual(customApiEndpoint, OPTIONS.apiEndpoint); @@ -234,17 +236,19 @@ describe('Datastore', () => { assert.notStrictEqual(datastore.options, options); assert.deepStrictEqual( - datastore.options, - Object.assign( - { - libName: 'gccl', - libVersion: require('../../package.json').version, - scopes: v1.DatastoreClient.scopes, - servicePath: datastore.baseUrl_, - port: 443, - projectId: undefined, - }, - options)); + datastore.options, + Object.assign( + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: v1.DatastoreClient.scopes, + servicePath: datastore.baseUrl_, + port: 443, + projectId: undefined, + }, + options + ) + ); }); it('should set port if detected', () => { @@ -432,26 +436,32 @@ describe('Datastore', () => { describe('MORE_RESULTS_AFTER_CURSOR', () => { it('should expose a MORE_RESULTS_AFTER_CURSOR helper', () => { assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_CURSOR, 'MORE_RESULTS_AFTER_CURSOR'); + Datastore.MORE_RESULTS_AFTER_CURSOR, + 'MORE_RESULTS_AFTER_CURSOR' + ); }); it('should also be on the prototype', () => { assert.strictEqual( - datastore.MORE_RESULTS_AFTER_CURSOR, - Datastore.MORE_RESULTS_AFTER_CURSOR); + datastore.MORE_RESULTS_AFTER_CURSOR, + Datastore.MORE_RESULTS_AFTER_CURSOR + ); }); }); describe('MORE_RESULTS_AFTER_LIMIT', () => { it('should expose a MORE_RESULTS_AFTER_LIMIT helper', () => { assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_LIMIT, 'MORE_RESULTS_AFTER_LIMIT'); + Datastore.MORE_RESULTS_AFTER_LIMIT, + 'MORE_RESULTS_AFTER_LIMIT' + ); }); it('should also be on the prototype', () => { assert.strictEqual( - datastore.MORE_RESULTS_AFTER_LIMIT, - Datastore.MORE_RESULTS_AFTER_LIMIT); + datastore.MORE_RESULTS_AFTER_LIMIT, + Datastore.MORE_RESULTS_AFTER_LIMIT + ); }); }); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index a8bcb817c9f..be1cdc2d4ca 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -44,12 +44,13 @@ describe('Query', () => { }); it('should use null for all falsy namespace values', () => { - [new Query(SCOPE, '', KINDS), - new Query(SCOPE, null, KINDS), - new Query(SCOPE, undefined, KINDS), - new Query(SCOPE, 0 as {} as string, KINDS), - new Query(SCOPE, KINDS), - ].forEach((query) => { + [ + new Query(SCOPE, '', KINDS), + new Query(SCOPE, null, KINDS), + new Query(SCOPE, undefined, KINDS), + new Query(SCOPE, (0 as {}) as string, KINDS), + new Query(SCOPE, KINDS), + ].forEach(query => { assert.strictEqual(query.namespace, null); }); }); @@ -69,11 +70,11 @@ describe('Query', () => { it('should recognize all the different operators', () => { const now = new Date(); const query = new Query(['kind1']) - .filter('date', '<=', now) - .filter('name', '=', 'Title') - .filter('count', '>', 20) - .filter('size', '<', 10) - .filter('something', '>=', 11); + .filter('date', '<=', now) + .filter('name', '=', 'Title') + .filter('count', '>', 20) + .filter('size', '<', 10) + .filter('something', '>=', 11); assert.strictEqual(query.filters[0].name, 'date'); assert.strictEqual(query.filters[0].op, '<='); @@ -103,8 +104,11 @@ describe('Query', () => { }); it('should remove any whitespace surrounding the operator', () => { - const query = - new Query(['kind1']).filter('count', ' < ', 123); + const query = new Query(['kind1']).filter( + 'count', + ' < ', + 123 + ); assert.strictEqual(query.filters[0].op, '<'); }); @@ -166,8 +170,9 @@ describe('Query', () => { }); it('should support both ascending and descending', () => { - const query = - new Query(['kind1']).order('name').order('count', {descending: true}); + const query = new Query(['kind1']) + .order('name') + .order('count', {descending: true}); assert.strictEqual(query.orders[0].name, 'name'); assert.strictEqual(query.orders[0].sign, '+'); @@ -286,7 +291,7 @@ describe('Query', () => { }); describe('run', () => { - it('should call the parent instance runQuery correctly', (done) => { + it('should call the parent instance runQuery correctly', done => { const args = [{}, () => {}]; query.scope.runQuery = function() { diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 13ca2afbfbf..ee69e5c882f 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -28,7 +28,11 @@ import {google} from '../proto/datastore'; import * as ds from '../src'; import {entity, Entity, KeyProto} from '../src/entity.js'; import {Query, QueryProto} from '../src/query.js'; -import {AllocateIdsRequestResponse, RequestConfig, RequestOptions} from '../src/request'; +import { + AllocateIdsRequestResponse, + RequestConfig, + RequestOptions, +} from '../src/request'; // tslint:disable-next-line no-any type Any = any; @@ -48,7 +52,7 @@ const fakePjy = { }, }; -let v1FakeClientOverride: Function|null; +let v1FakeClientOverride: Function | null; const fakeV1 = { FakeClient: class { constructor() { @@ -59,7 +63,7 @@ const fakeV1 = { class FakeQuery extends Query {} -let pjyOverride: Function|null; +let pjyOverride: Function | null; describe('Request', () => { // tslint:disable-next-line variable-name @@ -70,12 +74,12 @@ describe('Request', () => { before(() => { Request = proxyquire('../src/request', { - '@google-cloud/promisify': fakePfy, - '@google-cloud/projectify': fakePjy, - './entity': {entity}, - './query': {Query: FakeQuery}, - './v1': fakeV1, - }).DatastoreRequest; + '@google-cloud/promisify': fakePfy, + '@google-cloud/projectify': fakePjy, + './entity': {entity}, + './query': {Query: FakeQuery}, + './v1': fakeV1, + }).DatastoreRequest; }); after(() => { @@ -115,7 +119,9 @@ describe('Request', () => { assert.notStrictEqual(preparedEntityObject, obj); assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested); assert.deepStrictEqual( - preparedEntityObject, expectedPreparedEntityObject); + preparedEntityObject, + expectedPreparedEntityObject + ); }); it('should format an entity', () => { @@ -123,8 +129,9 @@ describe('Request', () => { // tslint:disable-next-line:no-any const entityObject: any = {data: true}; entityObject[entity.KEY_SYMBOL] = key; - const preparedEntityObject = - Request.prepareEntityObject_(entityObject) as Any; + const preparedEntityObject = Request.prepareEntityObject_( + entityObject + ) as Any; assert.strictEqual(preparedEntityObject.key, key); assert.strictEqual(preparedEntityObject.data.data, entityObject.data); }); @@ -211,12 +218,15 @@ describe('Request', () => { sandbox.stub(entity, 'isKeyComplete'); sandbox.stub(entity, 'keyToKeyProto'); request.allocateIds( - INCOMPLETE_KEY, OPTIONS, (err: Error, keys: null, resp: {}) => { - assert.strictEqual(err, ERROR); - assert.strictEqual(keys, null); - assert.strictEqual(resp, API_RESPONSE); - done(); - }); + INCOMPLETE_KEY, + OPTIONS, + (err: Error, keys: null, resp: {}) => { + assert.strictEqual(err, ERROR); + assert.strictEqual(keys, null); + assert.strictEqual(resp, API_RESPONSE); + done(); + } + ); }); }); @@ -241,14 +251,19 @@ describe('Request', () => { return key; }); request.allocateIds( - INCOMPLETE_KEY, OPTIONS, - (err: Error, keys: entity.Key[], - resp: AllocateIdsRequestResponse) => { - assert.ifError(err); - assert.deepStrictEqual(keys, [key]); - assert.strictEqual(resp, API_RESPONSE); - done(); - }); + INCOMPLETE_KEY, + OPTIONS, + ( + err: Error, + keys: entity.Key[], + resp: AllocateIdsRequestResponse + ) => { + assert.ifError(err); + assert.deepStrictEqual(keys, [key]); + assert.strictEqual(resp, API_RESPONSE); + done(); + } + ); }); }); }); @@ -279,7 +294,9 @@ describe('Request', () => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'lookup'); assert.deepStrictEqual( - config.reqOpts!.keys[0], entity.keyToKeyProto(key)); + config.reqOpts!.keys[0], + entity.keyToKeyProto(key) + ); done(); }; const stream = request.createReadStream(key); @@ -296,7 +313,10 @@ describe('Request', () => { done(); }; - request.createReadStream(key, options).on('error', done).emit('reading'); + request + .createReadStream(key, options) + .on('error', done) + .emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -305,9 +325,10 @@ describe('Request', () => { done(); }; - request.createReadStream(key, {consistency: 'strong'}) - .on('error', done) - .emit('reading'); + request + .createReadStream(key, {consistency: 'strong'}) + .on('error', done) + .emit('reading'); }); it('should allow setting strong eventual consistency', done => { @@ -316,9 +337,10 @@ describe('Request', () => { done(); }; - request.createReadStream(key, {consistency: 'eventual'}) - .on('error', done) - .emit('reading'); + request + .createReadStream(key, {consistency: 'eventual'}) + .on('error', done) + .emit('reading'); }); describe('error', () => { @@ -334,23 +356,26 @@ describe('Request', () => { }); it('should emit error', done => { - request.createReadStream(key) - .on('data', () => {}) - .on('error', (err: Error) => { - assert.strictEqual(err, error); - done(); - }); + request + .createReadStream(key) + .on('data', () => {}) + .on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }); }); it('should end stream', done => { const stream = request.createReadStream(key); - stream.on('data', () => {}).on('error', () => { - setImmediate(() => { - assert.strictEqual((stream as Any)._destroyed, true); - done(); + stream + .on('data', () => {}) + .on('error', () => { + setImmediate(() => { + assert.strictEqual((stream as Any)._destroyed, true); + done(); + }); }); - }); }); }); @@ -428,7 +453,10 @@ describe('Request', () => { return arr; }); - request.createReadStream(key).on('error', done).emit('reading'); + request + .createReadStream(key) + .on('error', done) + .emit('reading'); }); it('should continue looking for deferred results', done => { @@ -442,26 +470,29 @@ describe('Request', () => { return; } - const expectedKeys = - apiResponseWithDeferred.deferred.map(entity.keyFromKeyProto) - .map(entity.keyToKeyProto); + const expectedKeys = apiResponseWithDeferred.deferred + .map(entity.keyFromKeyProto) + .map(entity.keyToKeyProto); assert.deepStrictEqual(config.reqOpts!.keys, expectedKeys); done(); }; - request.createReadStream(key).on('error', done).emit('reading'); + request + .createReadStream(key) + .on('error', done) + .emit('reading'); }); it('should push results to the stream', done => { - request.createReadStream(key) - .on('error', done) - .on('data', - (entity: Entity) => { - assert.deepStrictEqual(entity, expectedResult); - }) - .on('end', done) - .emit('reading'); + request + .createReadStream(key) + .on('error', done) + .on('data', (entity: Entity) => { + assert.deepStrictEqual(entity, expectedResult); + }) + .on('end', done) + .emit('reading'); }); it('should not push more results if stream was ended', done => { @@ -475,17 +506,15 @@ describe('Request', () => { const stream = request.createReadStream([key, key]); stream - .on('data', - () => { - entitiesEmitted++; - stream.end(); - }) - .on('end', - () => { - assert.strictEqual(entitiesEmitted, 1); - done(); - }) - .emit('reading'); + .on('data', () => { + entitiesEmitted++; + stream.end(); + }) + .on('end', () => { + assert.strictEqual(entitiesEmitted, 1); + done(); + }) + .emit('reading'); }); it('should not get more results if stream was ended', done => { @@ -499,14 +528,14 @@ describe('Request', () => { }; const stream = request.createReadStream(key); - stream.on('error', done) - .on('data', () => stream.end()) - .on('end', - () => { - assert.strictEqual(lookupCount, 1); - done(); - }) - .emit('reading'); + stream + .on('error', done) + .on('data', () => stream.end()) + .on('end', () => { + assert.strictEqual(lookupCount, 1); + done(); + }) + .emit('reading'); }); }); }); @@ -528,12 +557,13 @@ describe('Request', () => { callback(null!, resp); }; request.delete( - key, - (err: Error, apiResponse: [google.datastore.v1.CommitResponse]) => { - assert.ifError(err); - assert.deepStrictEqual(resp, apiResponse); - done(); - }); + key, + (err: Error, apiResponse: [google.datastore.v1.CommitResponse]) => { + assert.ifError(err); + assert.deepStrictEqual(resp, apiResponse); + done(); + } + ); }); it('should multi delete by keys', done => { @@ -701,7 +731,10 @@ describe('Request', () => { return {} as QueryProto; }); - request.runQueryStream(query).on('error', done).emit('reading'); + request + .runQueryStream(query) + .on('error', done) + .emit('reading'); }); it('should make correct request when the stream is ready', done => { @@ -716,13 +749,18 @@ describe('Request', () => { assert(is.empty(config.reqOpts!.readOptions)); assert.strictEqual(config.reqOpts.query, queryProto); assert.strictEqual( - config.reqOpts.partitionId.namespaceId, query.namespace); + config.reqOpts.partitionId.namespaceId, + query.namespace + ); assert.strictEqual(config.gaxOpts, undefined); done(); }; - request.runQueryStream(query).on('error', done).emit('reading'); + request + .runQueryStream(query) + .on('error', done) + .emit('reading'); }); it('should allow customization of GAX options', done => { @@ -736,7 +774,10 @@ describe('Request', () => { done(); }; - request.runQueryStream({}, options).on('error', done).emit('reading'); + request + .runQueryStream({}, options) + .on('error', done) + .emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -746,9 +787,10 @@ describe('Request', () => { done(); }; - request.runQueryStream({}, {consistency: 'strong'}) - .on('error', done) - .emit('reading'); + request + .runQueryStream({}, {consistency: 'strong'}) + .on('error', done) + .emit('reading'); }); it('should allow setting strong eventual consistency', done => { @@ -758,9 +800,10 @@ describe('Request', () => { done(); }; - request.runQueryStream({}, {consistency: 'eventual'}) - .on('error', done) - .emit('reading'); + request + .runQueryStream({}, {consistency: 'eventual'}) + .on('error', done) + .emit('reading'); }); describe('error', () => { @@ -774,13 +817,13 @@ describe('Request', () => { it('should emit error on a stream', done => { sandbox.stub(entity, 'queryToQueryProto'); - request.runQueryStream({}) - .on('error', - (err: Error) => { - assert.strictEqual(err, error); - done(); - }) - .emit('reading'); + request + .runQueryStream({}) + .on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }) + .emit('reading'); }); }); @@ -805,10 +848,11 @@ describe('Request', () => { callback(null, apiResponse); }; - formatArrayStub = - sandbox.stub(entity, 'formatArray').callsFake(array => { - return array; - }); + formatArrayStub = sandbox + .stub(entity, 'formatArray') + .callsFake(array => { + return array; + }); }); it('should format results', done => { @@ -821,13 +865,14 @@ describe('Request', () => { const entities: Array<{}> = []; - request.runQueryStream({}) - .on('error', done) - .on('data', (entity: Entity) => entities.push(entity)) - .on('end', () => { - assert.deepStrictEqual(entities, apiResponse.batch.entityResults); - done(); - }); + request + .runQueryStream({}) + .on('error', done) + .on('data', (entity: Entity) => entities.push(entity)) + .on('end', () => { + assert.deepStrictEqual(entities, apiResponse.batch.entityResults); + done(); + }); }); it('should re-run query if not finished', done => { @@ -835,11 +880,11 @@ describe('Request', () => { limitVal: 1, offsetVal: 8, }; - const queryProto = { + const queryProto = ({ limit: { value: query.limitVal, }, - } as {} as QueryProto; + } as {}) as QueryProto; let timesRequestCalled = 0; let startCalled = false; @@ -848,7 +893,9 @@ describe('Request', () => { formatArrayStub.restore(); sandbox.stub(entity, 'formatArray').callsFake(array => { assert.strictEqual( - array, entityResultsPerApiCall[timesRequestCalled]); + array, + entityResultsPerApiCall[timesRequestCalled] + ); return entityResultsPerApiCall[timesRequestCalled]; }); @@ -857,7 +904,7 @@ describe('Request', () => { const resp = extend(true, {}, apiResponse); resp.batch.entityResults = - entityResultsPerApiCall[timesRequestCalled]; + entityResultsPerApiCall[timesRequestCalled]; if (timesRequestCalled === 1) { assert.strictEqual(config.client, 'DatastoreClient'); @@ -875,7 +922,9 @@ describe('Request', () => { FakeQuery.prototype.start = function(endCursor) { assert.strictEqual( - endCursor, apiResponse.batch.endCursor.toString('base64')); + endCursor, + apiResponse.batch.endCursor.toString('base64') + ); startCalled = true; return this; }; @@ -890,7 +939,9 @@ describe('Request', () => { sandbox.stub(FakeQuery.prototype, 'limit').callsFake(limit_ => { if (timesRequestCalled === 1) { assert.strictEqual( - limit_, entityResultsPerApiCall[1].length - query.limitVal); + limit_, + entityResultsPerApiCall[1].length - query.limitVal + ); } else { // Should restore the original limit. assert.strictEqual(limit_, query.limitVal); @@ -908,30 +959,29 @@ describe('Request', () => { const entities: Array<{}> = []; let info: Any; - request.runQueryStream(query) - .on('error', done) - .on('info', - (_info: object) => { - info = _info; - }) - .on('data', - (entity: Entity) => { - entities.push(entity); - }) - .on('end', () => { - const allResults = ([] as Array<{}>) - .slice.call(entityResultsPerApiCall[1]) - .concat(entityResultsPerApiCall[2]); - - assert.deepStrictEqual(entities, allResults); - - assert.deepStrictEqual(info, { - endCursor: apiResponse.batch.endCursor.toString('base64'), - moreResults: apiResponse.batch.moreResults, - }); - - done(); + request + .runQueryStream(query) + .on('error', done) + .on('info', (_info: object) => { + info = _info; + }) + .on('data', (entity: Entity) => { + entities.push(entity); + }) + .on('end', () => { + const allResults = ([] as Array<{}>).slice + .call(entityResultsPerApiCall[1]) + .concat(entityResultsPerApiCall[2]); + + assert.deepStrictEqual(entities, allResults); + + assert.deepStrictEqual(info, { + endCursor: apiResponse.batch.endCursor.toString('base64'), + moreResults: apiResponse.batch.moreResults, }); + + done(); + }); }); it('should handle large limitless queries', done => { @@ -957,14 +1007,15 @@ describe('Request', () => { sandbox.stub(entity, 'queryToQueryProto').returns({} as QueryProto); const limitStub = sandbox.stub(FakeQuery.prototype, 'limit'); - request.runQueryStream(query) - .on('error', done) - .on('data', () => {}) - .on('end', () => { - assert.strictEqual(timesRequestCalled, 2); - assert.strictEqual(limitStub.called, false); - done(); - }); + request + .runQueryStream(query) + .on('error', done) + .on('data', () => {}) + .on('end', () => { + assert.strictEqual(timesRequestCalled, 2); + assert.strictEqual(limitStub.called, false); + done(); + }); }); it('should not push more results if stream was ended', done => { @@ -978,7 +1029,7 @@ describe('Request', () => { const resp = extend(true, {}, apiResponse); resp.batch.entityResults = - entityResultsPerApiCall[timesRequestCalled]; + entityResultsPerApiCall[timesRequestCalled]; if (timesRequestCalled === 1) { resp.batch.moreResults = 'NOT_FINISHED'; @@ -989,16 +1040,16 @@ describe('Request', () => { } }; - const stream = request.runQueryStream({}) - .on('data', - () => { - entitiesEmitted++; - stream.end(); - }) - .on('end', () => { - assert.strictEqual(entitiesEmitted, 1); - done(); - }); + const stream = request + .runQueryStream({}) + .on('data', () => { + entitiesEmitted++; + stream.end(); + }) + .on('end', () => { + assert.strictEqual(entitiesEmitted, 1); + done(); + }); }); it('should not get more results if stream was ended', done => { @@ -1010,12 +1061,13 @@ describe('Request', () => { }; const stream = request.runQueryStream({}); - stream.on('error', done) - .on('data', () => stream.end()) - .on('end', () => { - assert.strictEqual(timesRequestCalled, 1); - done(); - }); + stream + .on('error', done) + .on('data', () => stream.end()) + .on('end', () => { + assert.strictEqual(timesRequestCalled, 1); + done(); + }); }); }); }); @@ -1034,7 +1086,7 @@ describe('Request', () => { setImmediate(() => { stream.emit('info', fakeInfo); - fakeEntities.forEach((entity) => { + fakeEntities.forEach(entity => { stream.push(entity); }); @@ -1049,16 +1101,19 @@ describe('Request', () => { const options = {}; request.runQuery( - query, options, (err: Error|null, entities: Entity[], info: {}) => { - assert.ifError(err); - assert.deepStrictEqual(entities, fakeEntities); - assert.strictEqual(info, fakeInfo); - - const spy = request.runQueryStream.getCall(0); - assert.strictEqual(spy.args[0], query); - assert.strictEqual(spy.args[1], options); - done(); - }); + query, + options, + (err: Error | null, entities: Entity[], info: {}) => { + assert.ifError(err); + assert.deepStrictEqual(entities, fakeEntities); + assert.strictEqual(info, fakeInfo); + + const spy = request.runQueryStream.getCall(0); + assert.strictEqual(spy.args[0], query); + assert.strictEqual(spy.args[1], options); + done(); + } + ); }); it('should allow options to be omitted', done => { @@ -1171,11 +1226,13 @@ describe('Request', () => { }; request.save( - { - key, - data: {}, - }, - gaxOptions, assert.ifError); + { + key, + data: {}, + }, + gaxOptions, + assert.ifError + ); }); it('should prepare entity objects', done => { @@ -1220,25 +1277,27 @@ describe('Request', () => { }; request.save( - [ - {key, method: 'insert', data: {k: 'v'}}, - {key, method: 'update', data: {k2: 'v2'}}, - {key, method: 'upsert', data: {k3: 'v3'}}, - ], - done); + [ + {key, method: 'insert', data: {k: 'v'}}, + {key, method: 'update', data: {k2: 'v2'}}, + {key, method: 'upsert', data: {k3: 'v3'}}, + ], + done + ); }); it('should throw if a given method is not recognized', () => { assert.throws(() => { request.save( - { - key, - method: 'auto_insert_id', - data: { - k: 'v', - }, + { + key, + method: 'auto_insert_id', + data: { + k: 'v', }, - assert.ifError); + }, + assert.ifError + ); }, /Method auto_insert_id not recognized/); }); @@ -1274,11 +1333,14 @@ describe('Request', () => { request.request_ = (config: RequestConfig, callback: Function) => { callback(null, mockCommitResponse); }; - request.save({key, data: {}}, (err: Error|null, apiResponse: Entity) => { - assert.ifError(err); - assert.strictEqual(mockCommitResponse, apiResponse); - done(); - }); + request.save( + {key, data: {}}, + (err: Error | null, apiResponse: Entity) => { + assert.ifError(err); + assert.strictEqual(mockCommitResponse, apiResponse); + done(); + } + ); }); it('should allow setting the indexed value of a property', done => { @@ -1290,17 +1352,18 @@ describe('Request', () => { }; request.save( - { - key, - data: [ - { - name: 'name', - value: 'value', - excludeFromIndexes: true, - }, - ], - }, - assert.ifError); + { + key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); }); it('should allow setting the indexed value on arrays', done => { @@ -1315,17 +1378,18 @@ describe('Request', () => { }; request.save( - { - key, - data: [ - { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, - }, - ], - }, - assert.ifError); + { + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); }); it('should assign ID on keys without them', done => { @@ -1354,29 +1418,30 @@ describe('Request', () => { sandbox.stub(entity, 'keyFromKeyProto').callsFake(keyProto => { keyProtos.push(keyProto); - return { + return ({ id: ids[keyProtos.length - 1], - } as {} as entity.Key; + } as {}) as entity.Key; }); request.save( - [ - {key: incompleteKey, data: {}}, - {key: incompleteKey2, data: {}}, - {key: completeKey, data: {}}, - ], - (err: Error) => { - assert.ifError(err); + [ + {key: incompleteKey, data: {}}, + {key: incompleteKey2, data: {}}, + {key: completeKey, data: {}}, + ], + (err: Error) => { + assert.ifError(err); - assert.strictEqual(incompleteKey.id, ids[0]); - assert.strictEqual(incompleteKey2.id, ids[1]); + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); - assert.strictEqual(keyProtos.length, 2); - assert.strictEqual(keyProtos[0], response.mutationResults[0].key); - assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); - done(); - }); + done(); + } + ); }); describe('transactions', () => { @@ -1486,7 +1551,7 @@ describe('Request', () => { describe('request_', () => { const CONFIG = { - client: 'FakeClient', // name set at top of file + client: 'FakeClient', // name set at top of file method: 'method', reqOpts: { a: 'b', @@ -1671,7 +1736,9 @@ describe('Request', () => { request.datastore.clients_.set(CONFIG.client, { lookup(reqOpts: RequestOptions) { assert.strictEqual( - reqOpts.readOptions!.transaction, TRANSACTION_ID); + reqOpts.readOptions!.transaction, + TRANSACTION_ID + ); done(); }, }); @@ -1688,7 +1755,9 @@ describe('Request', () => { request.datastore.clients_.set(CONFIG.client, { runQuery(reqOpts: RequestOptions) { assert.strictEqual( - reqOpts.readOptions!.transaction, TRANSACTION_ID); + reqOpts.readOptions!.transaction, + TRANSACTION_ID + ); done(); }, }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 464e80895eb..ffad3fcae91 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -28,7 +28,7 @@ import * as tsTypes from '../src/transaction'; // tslint:disable-next-line no-any type Any = any; -type Path = string|[string]|[string, number]; +type Path = string | [string] | [string, number]; const {entity} = require('../src/entity'); @@ -44,10 +44,10 @@ const fakePfy = Object.assign({}, pfy, { }); // tslint:disable-next-line variable-name -const DatastoreRequestOverride = { - delete () {}, +const DatastoreRequestOverride = ({ + delete() {}, save() {}, -} as {} as DatastoreRequest; +} as {}) as DatastoreRequest; class FakeDatastoreRequest { delete() { @@ -73,11 +73,11 @@ describe('Transaction', () => { const PROJECT_ID = 'project-id'; const NAMESPACE = 'a-namespace'; - const DATASTORE = { + const DATASTORE = ({ request_() {}, projectId: PROJECT_ID, namespace: NAMESPACE, - } as {} as Datastore; + } as {}) as Datastore; function key(path: Path) { return new entity.Key({path: arrify(path)}); @@ -85,9 +85,9 @@ describe('Transaction', () => { before(() => { Transaction = proxyquire('../src/transaction.js', { - '@google-cloud/promisify': fakePfy, - './request.js': {DatastoreRequest: FakeDatastoreRequest}, - }).Transaction; + '@google-cloud/promisify': fakePfy, + './request.js': {DatastoreRequest: FakeDatastoreRequest}, + }).Transaction; }); beforeEach(() => { @@ -161,7 +161,7 @@ describe('Transaction', () => { }); it('should commit', done => { - transaction.request_ = (config) => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); assert.strictEqual(config.gaxOptions, undefined); @@ -173,8 +173,8 @@ describe('Transaction', () => { it('should accept gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = (config) => { - assert.deepEqual(config.gaxOpts, {}); + transaction.request_ = config => { + assert.deepStrictEqual(config.gaxOpts, {}); done(); }; @@ -199,8 +199,8 @@ describe('Transaction', () => { beforeEach(() => { transaction.rollback = ((callback: Function) => { - callback(rollbackError, rollbackApiResponse); - }) as Any; + callback(rollbackError, rollbackApiResponse); + }) as Any; transaction.request_ = (config, callback) => { callback(error, apiResponse); @@ -245,15 +245,15 @@ describe('Transaction', () => { let deleteCalled = 0; DatastoreRequestOverride.delete = ((a: {}) => { - args.push(a); - deleteCalled++; - }) as Any; + args.push(a); + deleteCalled++; + }) as Any; let saveCalled = 0; DatastoreRequestOverride.save = ((a: {}) => { - args.push(a); - saveCalled++; - }) as Any; + args.push(a); + saveCalled++; + }) as Any; transaction.request_ = () => {}; @@ -278,13 +278,13 @@ describe('Transaction', () => { let deleteCalled = 0; DatastoreRequestOverride.delete = (() => { - deleteCalled++; - }) as Any; + deleteCalled++; + }) as Any; let saveCalled = 0; DatastoreRequestOverride.save = (() => { - saveCalled++; - }) as Any; + saveCalled++; + }) as Any; transaction.request_ = () => {}; @@ -298,9 +298,9 @@ describe('Transaction', () => { transaction.save({key: key(['Product']), data: ''}); DatastoreRequestOverride.save = ((entities: Entity[]) => { - assert.strictEqual(entities.length, 2); - done(); - }) as Any; + assert.strictEqual(entities.length, 2); + done(); + }) as Any; transaction.request_ = () => {}; @@ -317,7 +317,7 @@ describe('Transaction', () => { }, ]; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts, { mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], }); @@ -353,8 +353,7 @@ describe('Transaction', () => { describe('createQuery', () => { it('should return query from datastore.createQuery', () => { - const args = - ['0', '1']; // Query only accepts to accept string||null values + const args = ['0', '1']; // Query only accepts to accept string||null values const createQueryReturnValue = {}; transaction.datastore.createQuery = function(...ags: Any) { @@ -364,19 +363,14 @@ describe('Transaction', () => { return createQueryReturnValue as Query; }; - const query = - transaction.createQuery(args[0], args[1]); // verbose de-structure + const query = transaction.createQuery(args[0], args[1]); // verbose de-structure assert.strictEqual(query, createQueryReturnValue); }); }); describe('delete', () => { it('should push entities into a queue', () => { - const keys = [ - key('Product123'), - key('Product234'), - key('Product345'), - ]; + const keys = [key('Product123'), key('Product234'), key('Product345')]; transaction.delete(keys); @@ -396,7 +390,7 @@ describe('Transaction', () => { }); it('should rollback', done => { - transaction.request_ = (config) => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'rollback'); assert.strictEqual(config.gaxOptions, undefined); @@ -421,7 +415,7 @@ describe('Transaction', () => { transaction.request_ = (config, callback) => { callback(error); }; - transaction.rollback((err) => { + transaction.rollback(err => { assert.deepStrictEqual(err, error); done(); }); @@ -462,7 +456,7 @@ describe('Transaction', () => { describe('run', () => { it('should make the correct API request', done => { - transaction.request_ = (config) => { + transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'beginTransaction'); assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); @@ -476,7 +470,7 @@ describe('Transaction', () => { it('should allow setting gaxOptions', done => { const gaxOptions = {}; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.strictEqual(config.gaxOpts, gaxOptions); done(); }; @@ -492,7 +486,9 @@ describe('Transaction', () => { transaction.request_ = (config: Any) => { assert.deepStrictEqual( - config.reqOpts.transactionOptions.readOnly, {}); + config.reqOpts.transactionOptions.readOnly, + {} + ); done(); }; @@ -502,9 +498,11 @@ describe('Transaction', () => { it('should respect the global readOnly option', done => { transaction.readOnly = true; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readOnly, {}); + config.reqOpts!.transactionOptions!.readOnly, + {} + ); done(); }; @@ -518,11 +516,13 @@ describe('Transaction', () => { transactionId: 'transaction-id', }; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readWrite, { - previousTransaction: options.transactionId, - }); + config.reqOpts!.transactionOptions!.readWrite, + { + previousTransaction: options.transactionId, + } + ); done(); }; @@ -532,11 +532,13 @@ describe('Transaction', () => { it('should respect the global transactionId option', done => { transaction.id = 'transaction-id'; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readWrite, { - previousTransaction: transaction.id, - }); + config.reqOpts!.transactionOptions!.readWrite, + { + previousTransaction: transaction.id, + } + ); done(); }; @@ -548,15 +550,15 @@ describe('Transaction', () => { it('should allow full override of transactionOptions', done => { transaction.readOnly = true; - const options = { + const options = ({ transactionOptions: { readWrite: { previousTransaction: 'transaction-id', }, }, - } as {} as TransactionOptions; + } as {}) as TransactionOptions; - transaction.request_ = (config) => { + transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts, options); done(); }; @@ -598,7 +600,7 @@ describe('Transaction', () => { it('should set transaction id', done => { delete transaction.id; - transaction.run((err: Error|null) => { + transaction.run((err: Error | null) => { assert.ifError(err); assert.strictEqual(transaction.id, TRANSACTION_ID); done(); @@ -627,7 +629,7 @@ describe('Transaction', () => { assert.strictEqual(transaction.modifiedEntities_.length, entities.length); transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { assert.strictEqual(queuedEntity.method, 'save'); - const match = entities.filter((ent) => { + const match = entities.filter(ent => { return ent.key === queuedEntity.entity.key; })[0]; assert.deepStrictEqual(queuedEntity.args, [match]); From 1fced8da1ccdf0116c9e0f7f4085037f5c91842d Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 6 May 2019 21:56:39 -0700 Subject: [PATCH 366/820] build: patch Windows container, fixing Node 10 (#395) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f0af7d05a3a..255538d6f84 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,7 +80,7 @@ "google-proto-files": "^0.20.0", "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", - "jsdoc": "^3.5.5", + "jsdoc": "3.5.5", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "linkinator": "^1.1.2", "mocha": "^6.0.0", From 887d1c5b478519a5149c8fcb7c17fbf7ebbc21af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Tue, 7 May 2019 13:40:52 -0400 Subject: [PATCH 367/820] chore(deps): update dependency google-proto-files to v1 (#393) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 255538d6f84..e0929f133b0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -77,7 +77,7 @@ "eslint-config-prettier": "^4.0.0", "eslint-plugin-node": "^9.0.0", "eslint-plugin-prettier": "^3.0.0", - "google-proto-files": "^0.20.0", + "google-proto-files": "^1.0.0", "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "3.5.5", From 53ef5098c54ed2299fad8570163e98a43b4e7f1a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Tue, 7 May 2019 22:59:24 -0700 Subject: [PATCH 368/820] build: only pipe to codecov if tests run on Node 10 (#394) --- handwritten/nodejs-datastore/synth.metadata | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 7e85bd91731..4418a29afb2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,26 +1,26 @@ { - "updateTime": "2019-03-28T11:29:26.139079Z", + "updateTime": "2019-05-04T11:13:20.998701Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.20", - "dockerImage": "googleapis/artman@sha256:e3c054a2fb85a12481c722af616c7fb6f1d02d862248385eecbec3e4240ebd1e" + "version": "0.18.0", + "dockerImage": "googleapis/artman@sha256:29bd82cc42c43825fde408e63fc955f3f9d07ff9989243d7aa0f91a35c7884dc" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "6a84b3267b0a95e922608b9891219075047eee29", - "internalRef": "240640999" + "sha": "39c876cca5403e7e8282ce2229033cc3cc02962c", + "internalRef": "246561601" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.2.26" + "version": "2019.5.2" } } ], From 9a601c92763477b5298d11676497314dbe7aa5b9 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Wed, 8 May 2019 17:58:52 -0700 Subject: [PATCH 369/820] fix: DEADLINE_EXCEEDED is no longer retried --- .../src/v1/datastore_client_config.json | 1 - handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index fb7c2c4498e..f55f17df08f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -3,7 +3,6 @@ "google.datastore.v1.Datastore": { "retry_codes": { "idempotent": [ - "DEADLINE_EXCEEDED", "UNAVAILABLE" ], "non_idempotent": [] diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 4418a29afb2..1e2777d49bb 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-05-04T11:13:20.998701Z", + "updateTime": "2019-05-08T11:58:34.101456Z", "sources": [ { "generator": { "name": "artman", - "version": "0.18.0", - "dockerImage": "googleapis/artman@sha256:29bd82cc42c43825fde408e63fc955f3f9d07ff9989243d7aa0f91a35c7884dc" + "version": "0.19.0", + "dockerImage": "googleapis/artman@sha256:d3df563538225ac6caac45d8ad86499500211d1bcb2536955a6dbda15e1b368e" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "39c876cca5403e7e8282ce2229033cc3cc02962c", - "internalRef": "246561601" + "sha": "51145ff7812d2bb44c1219d0b76dac92a8bd94b2", + "internalRef": "247143125" } }, { From 5cf086077486284608c496bd2b45e006588936c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 9 May 2019 13:50:28 -0400 Subject: [PATCH 370/820] fix(deps): update dependency google-auth-library to v4 (#400) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e0929f133b0..26f0773e700 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -52,7 +52,7 @@ "arrify": "^2.0.0", "concat-stream": "^2.0.0", "extend": "^3.0.1", - "google-auth-library": "^3.0.0", + "google-auth-library": "^4.0.0", "google-gax": "^0.26.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", From edfdebcb82e4827a2c13f20aa6253b9b0cb908d8 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Thu, 9 May 2019 20:16:24 +0200 Subject: [PATCH 371/820] fix: correct Long types import (#358) --- handwritten/nodejs-datastore/package.json | 1 + handwritten/nodejs-datastore/proto/datastore.d.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 26f0773e700..fcbb33e0af5 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -49,6 +49,7 @@ "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", "@types/duplexify": "^3.6.0", + "@types/long": "^4.0.0", "arrify": "^2.0.0", "concat-stream": "^2.0.0", "extend": "^3.0.1", diff --git a/handwritten/nodejs-datastore/proto/datastore.d.ts b/handwritten/nodejs-datastore/proto/datastore.d.ts index ce6b761e15b..5dae888b41b 100644 --- a/handwritten/nodejs-datastore/proto/datastore.d.ts +++ b/handwritten/nodejs-datastore/proto/datastore.d.ts @@ -1,5 +1,5 @@ import * as $protobuf from "protobufjs"; -import * as long from "long"; +import * as Long from "long"; /** Namespace google. */ export namespace google { From 8199abd12e8895bf59424a3db6b78a1b0a807762 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot <44816363+yoshi-automation@users.noreply.github.com> Date: Fri, 10 May 2019 15:10:34 -0700 Subject: [PATCH 372/820] fix: DEADLINE_EXCEEDED retry code is idempotent (#403) --- .../nodejs-datastore/src/v1/datastore_client_config.json | 1 + handwritten/nodejs-datastore/synth.metadata | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index f55f17df08f..fb7c2c4498e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -3,6 +3,7 @@ "google.datastore.v1.Datastore": { "retry_codes": { "idempotent": [ + "DEADLINE_EXCEEDED", "UNAVAILABLE" ], "non_idempotent": [] diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 1e2777d49bb..1a538b3ff95 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-05-08T11:58:34.101456Z", + "updateTime": "2019-05-10T12:01:53.705538Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "51145ff7812d2bb44c1219d0b76dac92a8bd94b2", - "internalRef": "247143125" + "sha": "07883be5bf3c3233095e99d8e92b8094f5d7084a", + "internalRef": "247530843" } }, { From 0a93b13bdd77a3fc373fab12a05f5851dcd83742 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sat, 11 May 2019 16:10:14 -0700 Subject: [PATCH 373/820] fix(deps): update dependency google-gax to v1 (#402) --- handwritten/nodejs-datastore/package.json | 3 ++- handwritten/nodejs-datastore/src/index.ts | 2 +- handwritten/nodejs-datastore/test/index.ts | 4 ++-- handwritten/nodejs-datastore/test/request.ts | 8 +++++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fcbb33e0af5..f6b9fece741 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,13 +48,14 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", + "@grpc/grpc-js": "^0.4.0", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.0", "concat-stream": "^2.0.0", "extend": "^3.0.1", "google-auth-library": "^4.0.0", - "google-gax": "^0.26.0", + "google-gax": "^1.0.0", "is": "^3.2.1", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 8b618a08e36..a15083338c9 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -27,7 +27,7 @@ import arrify = require('arrify'); import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; import {GrpcClient} from 'google-gax'; -import {ChannelCredentials} from 'grpc'; +import {ChannelCredentials} from '@grpc/grpc-js'; import * as is from 'is'; import {entity} from './entity'; diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index afab2a32370..1c96a061dfa 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -77,7 +77,7 @@ const fakeGoogleGax = { constructor(opts: gax.GrpcClientOptions) { // super constructor must be called first! super(opts); - this.grpc = { + this.grpc = ({ credentials: { createInsecure() { return (createInsecureOverride || (() => {})).apply( @@ -86,7 +86,7 @@ const fakeGoogleGax = { ); }, }, - } as gax.GrpcModule; + } as {}) as gax.GrpcModule; } }, }; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index ee69e5c882f..246c409214c 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -18,7 +18,7 @@ import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import * as extend from 'extend'; -import {CallOptions} from 'grpc'; +import {CallOptions} from '@grpc/grpc-js'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; @@ -1649,7 +1649,8 @@ describe('Request', () => { it('should send gaxOpts', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](_: object, gaxO: CallOptions) { + // tslint:disable-next-line no-any + [CONFIG.method](_: object, gaxO: any) { delete gaxO.headers; assert.deepStrictEqual(gaxO, CONFIG.gaxOpts); done(); @@ -1662,7 +1663,8 @@ describe('Request', () => { it('should send google-cloud-resource-prefix', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](_: object, gaxO: CallOptions) { + // tslint:disable-next-line no-any + [CONFIG.method](_: object, gaxO: any) { assert.deepStrictEqual(gaxO.headers, { 'google-cloud-resource-prefix': 'projects/' + PROJECT_ID, }); From 9d9953c32655a7e8fb89e72c157c8ce8305e1785 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Mon, 13 May 2019 09:46:54 -0700 Subject: [PATCH 374/820] chore(deps): update dependency jsdoc to v3.6.2 (#404) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f6b9fece741..71325821713 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -82,7 +82,7 @@ "google-proto-files": "^1.0.0", "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", - "jsdoc": "3.5.5", + "jsdoc": "^3.6.2", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", "linkinator": "^1.1.2", "mocha": "^6.0.0", From 6be8b8543777e4818fe665df44241d5957e777a6 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 15 May 2019 18:04:10 +0000 Subject: [PATCH 375/820] refactor: use repo-metadata to generate readme (#405) --- handwritten/nodejs-datastore/.clang-format | 3 - .../nodejs-datastore/.cloud-repo-tools.json | 22 ------ handwritten/nodejs-datastore/.gitignore | 3 +- .../nodejs-datastore/.repo-metadata.json | 12 +++ handwritten/nodejs-datastore/README.md | 73 ++++++++++++------- handwritten/nodejs-datastore/package.json | 44 ++++++----- .../nodejs-datastore/samples/README.md | 69 ++++++++++++------ .../nodejs-datastore/samples/package.json | 1 - handwritten/nodejs-datastore/synth.metadata | 6 +- 9 files changed, 130 insertions(+), 103 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.clang-format delete mode 100644 handwritten/nodejs-datastore/.cloud-repo-tools.json create mode 100644 handwritten/nodejs-datastore/.repo-metadata.json diff --git a/handwritten/nodejs-datastore/.clang-format b/handwritten/nodejs-datastore/.clang-format deleted file mode 100644 index 7d6cf97e108..00000000000 --- a/handwritten/nodejs-datastore/.clang-format +++ /dev/null @@ -1,3 +0,0 @@ -Language: JavaScript -BasedOnStyle: Google -ColumnLimit: 80 \ No newline at end of file diff --git a/handwritten/nodejs-datastore/.cloud-repo-tools.json b/handwritten/nodejs-datastore/.cloud-repo-tools.json deleted file mode 100644 index a16d6ff5501..00000000000 --- a/handwritten/nodejs-datastore/.cloud-repo-tools.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "requiresKeyFile": true, - "requiresProjectId": true, - "product": "datastore", - "client_reference_url": "https://cloud.google.com/nodejs/docs/reference/datastore/latest/", - "release_quality": "ga", - "samples": [ - { - "id": "tasks", - "name": "Tasks", - "file": "tasks.js", - "docs_link": "https://cloud.google.com/datastore/docs/datastore-api-tutorial", - "usage": "node tasks.js --help" - }, - { - "id": "concepts", - "name": "Concepts", - "file": "concepts.js", - "docs_link": "https://cloud.google.com/datastore/docs/concepts/entities" - } - ] -} diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 5ee54dbfbcf..e869cd90bbc 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -9,7 +9,6 @@ system-test/secrets.js system-test/*key.json *.lock .DS_Store -google-cloud-logging-winston-*.tgz -google-cloud-logging-bunyan-*.tgz +__pycache__ .vscode package-lock.json diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json new file mode 100644 index 00000000000..dd40ada73e2 --- /dev/null +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -0,0 +1,12 @@ +{ + "name": "datastore", + "name_pretty": "Google Cloud Datastore", + "product_documentation": "https://cloud.google.com/datastore", + "client_documentation": "https://cloud.google.com/nodejs/docs/reference/datastore/latest/", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", + "release_level": "ga", + "language": "nodejs", + "repo": "googleapis/nodejs-datastore", + "distribution_name": "@google-cloud/datastore", + "api_id": "datastore.googleapis.com" +} diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 15032ab23ed..54be5fc59f3 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -1,38 +1,57 @@ [//]: # "This README.md file is auto-generated, all changes to this file will be lost." -[//]: # "To regenerate it, use `npm run generate-scaffolding`." +[//]: # "To regenerate it, use `python -m synthtool`." Google Cloud Platform logo # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) -[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) +[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) [![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) -[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects. -* [Using the client library](#using-the-client-library) + +Cloud Datastore Client Library for Node.js + + +* [Google Cloud Datastore Node.js Client API Reference][client-docs] +* [Google Cloud Datastore Documentation][product-docs] +* [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) + +Read more about the client libraries for Cloud APIs, including the older +Google APIs Client Libraries, in [Client Libraries Explained][explained]. + +[explained]: https://cloud.google.com/apis/docs/client-libraries-explained + +**Table of contents:** + + +* [Quickstart](#quickstart) + * [Before you begin](#before-you-begin) + * [Installing the client library](#installing-the-client-library) + * [Using the client library](#using-the-client-library) * [Samples](#samples) * [Versioning](#versioning) * [Contributing](#contributing) * [License](#license) -## Using the client library +## Quickstart -1. [Select or create a Cloud Platform project][projects]. - -1. [Enable billing for your project][billing]. +### Before you begin +1. [Select or create a Cloud Platform project][projects]. 1. [Enable the Google Cloud Datastore API][enable_api]. - 1. [Set up authentication with a service account][auth] so you can access the API from your local workstation. -1. Install the client library: +### Installing the client library + +```bash +npm install @google-cloud/datastore +``` - npm install --save @google-cloud/datastore -1. Try an example: +### Using the client library ```javascript // Imports the Google Cloud client library @@ -67,8 +86,11 @@ async function quickStart() { console.log(`Saved ${task.key.name}: ${task.data.description}`); } quickStart().catch(console.error); + ``` + + ## Samples Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/master/samples) directory. The samples' `README.md` @@ -76,22 +98,30 @@ has instructions for running the samples. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | -| Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | +| Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | +| Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | + -The [Cloud Datastore Node.js Client API Reference][client-docs] documentation + +The [Google Cloud Datastore Node.js Client API Reference][client-docs] documentation also contains samples. ## Versioning This library follows [Semantic Versioning](http://semver.org/). + This library is considered to be **General Availability (GA)**. This means it is stable; the code surface will not change in backwards-incompatible ways unless absolutely necessary (e.g. because of critical security issues) or with an extensive deprecation period. Issues and requests against **GA** libraries are addressed with the highest priority. + + + + More Information: [Google Cloud Platform Launch Stages][launch_stages] [launch_stages]: https://cloud.google.com/terms/launch-stages @@ -106,21 +136,10 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -## What's Next - -* [Cloud Datastore Documentation][product-docs] -* [Cloud Datastore Node.js Client API Reference][client-docs] -* [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) - -Read more about the client libraries for Cloud APIs, including the older -Google APIs Client Libraries, in [Client Libraries Explained][explained]. - -[explained]: https://cloud.google.com/apis/docs/client-libraries-explained - [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ -[product-docs]: https://cloud.google.com/datastore/docs +[product-docs]: https://cloud.google.com/datastore [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project [billing]: https://support.google.com/cloud/answer/6293499#enable-billing [enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com -[auth]: https://cloud.google.com/docs/authentication/getting-started +[auth]: https://cloud.google.com/docs/authentication/getting-started \ No newline at end of file diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 71325821713..5e4c33e0a5f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -29,7 +29,6 @@ ], "scripts": { "docs": "jsdoc -c .jsdoc.js", - "generate-scaffolding": "repo-tools generate all && repo-tools generate lib_samples_readme -l samples/ --config ../.cloud-repo-tools.json", "lint": "gts check && eslint '**/*.js'", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", "test": "nyc mocha build/test", @@ -51,49 +50,48 @@ "@grpc/grpc-js": "^0.4.0", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", - "arrify": "^2.0.0", + "arrify": "^2.0.1", "concat-stream": "^2.0.0", - "extend": "^3.0.1", + "extend": "^3.0.2", "google-auth-library": "^4.0.0", "google-gax": "^1.0.0", - "is": "^3.2.1", + "is": "^3.3.0", "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4", - "through2": "^3.0.0" + "stream-events": "^1.0.5", + "through2": "^3.0.1" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^3.0.0", - "@types/extend": "^3.0.0", + "@types/extend": "^3.0.1", "@types/is": "0.0.21", - "@types/mocha": "^5.2.5", + "@types/mocha": "^5.2.6", "@types/mv": "^2.1.0", "@types/ncp": "^2.0.1", "@types/proxyquire": "^1.3.28", - "@types/sinon": "^7.0.2", + "@types/sinon": "^7.0.11", "@types/through2": "^2.0.34", "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", - "codecov": "^3.0.2", - "eslint": "^5.0.0", - "eslint-config-prettier": "^4.0.0", - "eslint-plugin-node": "^9.0.0", - "eslint-plugin-prettier": "^3.0.0", + "codecov": "^3.5.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-plugin-node": "^9.0.1", + "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", - "linkinator": "^1.1.2", - "mocha": "^6.0.0", + "linkinator": "^1.4.2", + "mocha": "^6.1.4", "mv": "^2.1.1", "ncp": "^2.0.0", - "nyc": "^14.0.0", - "power-assert": "^1.5.0", - "prettier": "^1.13.5", - "proxyquire": "^2.0.1", - "sinon": "^7.0.0", + "nyc": "^14.1.1", + "power-assert": "^1.6.1", + "prettier": "^1.17.1", + "proxyquire": "^2.1.0", + "sinon": "^7.3.2", "tmp": "0.1.0", - "typescript": "~3.4.0" + "typescript": "~3.4.5" } } diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 75f28de9413..25d73ab13dc 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -1,55 +1,80 @@ [//]: # "This README.md file is auto-generated, all changes to this file will be lost." -[//]: # "To regenerate it, use `npm run generate-scaffolding`." +[//]: # "To regenerate it, use `python -m synthtool`." Google Cloud Platform logo -# Google Cloud Datastore: Node.js Samples +# [Google Cloud Datastore: Node.js Samples](https://github.com/googleapis/nodejs-datastore) [![Open in Cloud Shell][shell_img]][shell_link] -[Cloud Datastore](https://cloud.google.com/datastore/docs) is a NoSQL document database built for automatic scaling, high performance, and ease of application development. While the Cloud Datastore interface has many of the same features as traditional databases, as a NoSQL database it differs from them in the way it describes relationships between data objects. + ## Table of Contents * [Before you begin](#before-you-begin) * [Samples](#samples) - * [Tasks](#tasks) * [Concepts](#concepts) - * [Errors and Error Handling](#errors-and-error-handling) + * [Quickstart](#quickstart) + * [Tasks](#tasks) ## Before you begin -Before running the samples, make sure you've followed the steps in the -[Before you begin section](../README.md#before-you-begin) of the client -library's README. +Before running the samples, make sure you've followed the steps outlined in +[Using the client library](https://github.com/googleapis/nodejs-datastore#using-the-client-library). ## Samples + + +### Concepts + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) + +__Usage:__ + + +`node concepts.js` + + +----- + + + + +### Quickstart + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) + +__Usage:__ + + +`node quickstart.js` + + +----- + + + + ### Tasks -View the [source code][tasks_0_code]. +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) -__Usage:__ `node tasks.js --help` -[tasks_0_docs]: https://cloud.google.com/datastore/docs/datastore-api-tutorial -[tasks_0_code]: tasks.js +__Usage:__ -### Concepts -View the [source code][concepts_1_code]. +`node tasks.js` -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md)[concepts_1_docs]: https://cloud.google.com/datastore/docs/concepts/entities -[concepts_1_code]: concepts.js -### Errors and Error Handling -View the [source code][error_2_code]. -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) -__Usage:__ `node error.js` -[error_2_docs]: https://cloud.google.com/datastore/docs/concepts/errors -[error_2_code]: error.js [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md +[product-docs]: https://cloud.google.com/datastore \ No newline at end of file diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8b43fd1f13f..8ddb94516ac 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -1,6 +1,5 @@ { "name": "nodejs-docs-samples-datastore", - "version": "0.0.1", "private": true, "license": "Apache-2.0", "author": "Google Inc.", diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 1a538b3ff95..451bcfa10af 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-05-10T12:01:53.705538Z", + "updateTime": "2019-05-15T05:46:46.853335Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "07883be5bf3c3233095e99d8e92b8094f5d7084a", - "internalRef": "247530843" + "sha": "275cdfcdc3188a60456f43acd139b8cc037379f4", + "internalRef": "248217300" } }, { From 117b595b1f0191f2a863e7797cf9fc7159077f62 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Wed, 15 May 2019 11:38:32 -0700 Subject: [PATCH 376/820] chore: release 4.0.0 (#407) --- handwritten/nodejs-datastore/CHANGELOG.md | 29 ++++++++++++++++++- handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index e8df791833f..03aea936107 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,34 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v3.1.2...v4.0.0) (2019-05-15) + + +### Bug Fixes + +* **deps:** update dependency google-gax to v1 ([#402](https://www.github.com/googleapis/nodejs-datastore/issues/402)) ([547f1a1](https://www.github.com/googleapis/nodejs-datastore/commit/547f1a1)) +* correct Long types import ([#358](https://www.github.com/googleapis/nodejs-datastore/issues/358)) ([dfe1def](https://www.github.com/googleapis/nodejs-datastore/commit/dfe1def)) +* DEADLINE_EXCEEDED is no longer retried ([47eedf0](https://www.github.com/googleapis/nodejs-datastore/commit/47eedf0)) +* DEADLINE_EXCEEDED retry code is idempotent ([#403](https://www.github.com/googleapis/nodejs-datastore/issues/403)) ([2a7c3ab](https://www.github.com/googleapis/nodejs-datastore/commit/2a7c3ab)) +* **deps:** update dependency @google-cloud/projectify to v1 ([#391](https://www.github.com/googleapis/nodejs-datastore/issues/391)) ([761896b](https://www.github.com/googleapis/nodejs-datastore/commit/761896b)) +* **deps:** update dependency @google-cloud/promisify to v1 ([#392](https://www.github.com/googleapis/nodejs-datastore/issues/392)) ([94a45bd](https://www.github.com/googleapis/nodejs-datastore/commit/94a45bd)) +* **deps:** update dependency arrify to v2 ([2b47d10](https://www.github.com/googleapis/nodejs-datastore/commit/2b47d10)) +* **deps:** update dependency google-auth-library to v4 ([#400](https://www.github.com/googleapis/nodejs-datastore/issues/400)) ([19bc787](https://www.github.com/googleapis/nodejs-datastore/commit/19bc787)) +* **deps:** update dependency google-gax to ^0.26.0 ([#386](https://www.github.com/googleapis/nodejs-datastore/issues/386)) ([29b81e3](https://www.github.com/googleapis/nodejs-datastore/commit/29b81e3)) +* include 'x-goog-request-params' header in requests ([#372](https://www.github.com/googleapis/nodejs-datastore/issues/372)) ([d91be05](https://www.github.com/googleapis/nodejs-datastore/commit/d91be05)) +* lint ([#384](https://www.github.com/googleapis/nodejs-datastore/issues/384)) ([9a4d746](https://www.github.com/googleapis/nodejs-datastore/commit/9a4d746)) +* **docs:** move ts overloads above doc string ([#356](https://www.github.com/googleapis/nodejs-datastore/issues/356)) ([a7f1123](https://www.github.com/googleapis/nodejs-datastore/commit/a7f1123)) + + +### Build System + +* upgrade engines field to >=8.10.0 ([#388](https://www.github.com/googleapis/nodejs-datastore/issues/388)) ([a8cf59f](https://www.github.com/googleapis/nodejs-datastore/commit/a8cf59f)) + + +### BREAKING CHANGES + +* upgrade engines field to >=8.10.0 (#388) + ## v3.1.2 03-06-2019 12:24 PST @@ -235,4 +263,3 @@ Please take care to update your imports accordingly! - fix: update linking for samples ([#115](https://github.com/googleapis/nodejs-datastore/pull/115)) - chore(package): update eslint to version 5.0.0 ([#114](https://github.com/googleapis/nodejs-datastore/pull/114)) - chore(package): Update sinon to the latest version 🚀 ([#104](https://github.com/googleapis/nodejs-datastore/pull/104)) - diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5e4c33e0a5f..832f5aa2e93 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "3.1.2", + "version": "4.0.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8ddb94516ac..006cd1589ba 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -11,7 +11,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^3.1.2", + "@google-cloud/datastore": "^4.0.0", "sinon": "^7.0.0", "yargs": "^13.0.0" }, From 25289e6bd22f1bdd3457caa93c44ed992560a178 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Fri, 17 May 2019 08:24:07 -0700 Subject: [PATCH 377/820] build: add new kokoro config for coverage and release-please (#408) --- handwritten/nodejs-datastore/synth.metadata | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 451bcfa10af..c6856f941fb 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-05-15T05:46:46.853335Z", + "updateTime": "2019-05-17T01:04:37.480469Z", "sources": [ { "generator": { @@ -12,15 +12,15 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "275cdfcdc3188a60456f43acd139b8cc037379f4", - "internalRef": "248217300" + "sha": "03269e767cff9dd644d7784a4d4350b2ba6daf69", + "internalRef": "248524261" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.5.2" + "version": "2019.4.10" } } ], From d820dc4857073fc60f6c7ec2e898bad8d5dd96d7 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Fri, 17 May 2019 16:48:42 -0700 Subject: [PATCH 378/820] build: updated kokoro config for coverage and release-please (#409) --- handwritten/nodejs-datastore/synth.metadata | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index c6856f941fb..02bd8b2929d 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-05-17T01:04:37.480469Z", + "updateTime": "2019-05-17T19:44:14.683953Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "03269e767cff9dd644d7784a4d4350b2ba6daf69", - "internalRef": "248524261" + "sha": "99efb1441b7c2aeb75c69f8baf9b61d4221bb744", + "internalRef": "248724297" } }, { From a1fd861102735610180f312c8a550696c134e720 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 21 May 2019 12:20:02 -0700 Subject: [PATCH 379/820] refactor: drop dependency on lodash.merge and update links (#410) --- handwritten/nodejs-datastore/package.json | 1 - .../nodejs-datastore/samples/addTask.js | 119 ++++++++++++++++++ .../src/v1/datastore_client.js | 24 ++-- handwritten/nodejs-datastore/synth.metadata | 12 +- 4 files changed, 135 insertions(+), 21 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/addTask.js diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 832f5aa2e93..a2d57addde4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -56,7 +56,6 @@ "google-auth-library": "^4.0.0", "google-gax": "^1.0.0", "is": "^3.3.0", - "lodash.merge": "^4.6.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5", "through2": "^3.0.1" diff --git a/handwritten/nodejs-datastore/samples/addTask.js b/handwritten/nodejs-datastore/samples/addTask.js new file mode 100644 index 00000000000..5192d057d33 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/addTask.js @@ -0,0 +1,119 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// [START datastore_build_service] +const {Datastore} = require('@google-cloud/datastore'); + +// Creates a client +const datastore = new Datastore(); +// [END datastore_build_service] + +// [START datastore_add_entity] +async function addTask(description) { + const taskKey = datastore.key('Task'); + const entity = { + key: taskKey, + data: [ + { + name: 'created', + value: new Date().toJSON(), + }, + { + name: 'description', + value: description, + excludeFromIndexes: true, + }, + { + name: 'done', + value: false, + }, + ], + }; + + try { + await datastore.save(entity); + console.log(`Task ${taskKey.id} created successfully.`); + } catch (err) { + console.error('ERROR:', err); + } +} +// [END datastore_add_entity] + +// [START datastore_update_entity] +async function markDone(taskId) { + const transaction = datastore.transaction(); + const taskKey = datastore.key(['Task', taskId]); + + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + task.done = true; + transaction.save({ + key: taskKey, + data: task, + }); + await transaction.commit(); + console.log(`Task ${taskId} updated successfully.`); + } catch (err) { + transaction.rollback(); + } +} +// [END datastore_update_entity] + +// [START datastore_retrieve_entities] +async function listTasks() { + const query = datastore.createQuery('Task').order('created'); + + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + tasks.forEach(task => { + const taskKey = task[datastore.KEY]; + console.log(taskKey.id, task); + }); +} +// [END datastore_retrieve_entities] + +// [START datastore_delete_entity] +async function deleteTask(taskId) { + const taskKey = datastore.key(['Task', taskId]); + + await datastore.delete(taskKey); + console.log(`Task ${taskId} deleted successfully.`); +} +// [END datastore_delete_entity] + +require(`yargs`) // eslint-disable-line + .command( + `new `, + `Adds a task with a description .`, + {}, + opts => addTask(opts.description) + ) + .command(`done `, `Marks the specified task as done.`, {}, opts => + markDone(opts.taskId) + ) + .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) + .command(`delete `, `Deletes a task.`, {}, opts => + deleteTask(opts.taskId) + ) + .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) + .example(`node $0 done 12345`, `Marks task 12345 as Done.`) + .example(`node $0 list`, `Lists all tasks ordered by creation time`) + .example(`node $0 delete 12345`, `Deletes task 12345.`) + .wrap(120) + .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) + .help().argv; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 790949ea4a2..eb7d9cd42e8 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -16,7 +16,6 @@ const gapicConfig = require('./datastore_client_config.json'); const gax = require('google-gax'); -const merge = require('lodash.merge'); const path = require('path'); const VERSION = require('../../../package.json').version; @@ -93,12 +92,9 @@ class DatastoreClient { } // Load the applicable protos. - const protos = merge( - {}, - gaxGrpc.loadProto( - path.join(__dirname, '..', '..', 'protos'), - 'google/datastore/v1/datastore.proto' - ) + const protos = gaxGrpc.loadProto( + path.join(__dirname, '..', '..', 'protos'), + ['google/datastore/v1/datastore.proto'] ); // Put together the default options sent with requests. @@ -206,7 +202,7 @@ class DatastoreClient { * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -283,7 +279,7 @@ class DatastoreClient { * This object should have the same structure as [GqlQuery]{@link google.datastore.v1.GqlQuery} * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -345,7 +341,7 @@ class DatastoreClient { * This object should have the same structure as [TransactionOptions]{@link google.datastore.v1.TransactionOptions} * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -423,7 +419,7 @@ class DatastoreClient { * Datastore.BeginTransaction. * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -486,7 +482,7 @@ class DatastoreClient { * Datastore.BeginTransaction. * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -550,7 +546,7 @@ class DatastoreClient { * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * @@ -616,7 +612,7 @@ class DatastoreClient { * If not empty, the ID of the database against which to make the request. * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the details. + * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. * @param {function(?Error, ?Object)} [callback] * The function which will be called with the result of the API call. * diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 02bd8b2929d..b574513fe94 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,26 +1,26 @@ { - "updateTime": "2019-05-17T19:44:14.683953Z", + "updateTime": "2019-05-21T11:13:01.299132Z", "sources": [ { "generator": { "name": "artman", - "version": "0.19.0", - "dockerImage": "googleapis/artman@sha256:d3df563538225ac6caac45d8ad86499500211d1bcb2536955a6dbda15e1b368e" + "version": "0.20.0", + "dockerImage": "googleapis/artman@sha256:3246adac900f4bdbd62920e80de2e5877380e44036b3feae13667ec255ebf5ec" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "99efb1441b7c2aeb75c69f8baf9b61d4221bb744", - "internalRef": "248724297" + "sha": "32a10f69e2c9ce15bba13ab1ff928bacebb25160", + "internalRef": "249058354" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.4.10" + "version": "2019.5.2" } } ], From 4df08e472b10d2d9aeedc510259df7414cc4b5b1 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 23 May 2019 02:38:15 +0000 Subject: [PATCH 380/820] chore: use published jsdoc-baseline package (#412) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a2d57addde4..ae8736fff12 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,7 +80,7 @@ "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", - "jsdoc-baseline": "git+https://github.com/hegemonic/jsdoc-baseline.git", + "jsdoc-baseline": "^0.1.0", "linkinator": "^1.4.2", "mocha": "^6.1.4", "mv": "^2.1.1", From ae36b1a00e9170ed8efc29f9883acf276691627a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 23 May 2019 16:51:59 -0700 Subject: [PATCH 381/820] docs: add `Add Task` sample to index in README (#411) --- handwritten/nodejs-datastore/README.md | 1 + handwritten/nodejs-datastore/samples/README.md | 18 ++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 6 +++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 54be5fc59f3..19cba5a62af 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -98,6 +98,7 @@ has instructions for running the samples. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | +| Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/addTask.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/addTask.js,samples/README.md) | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 25d73ab13dc..b94d4bb878e 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -12,6 +12,7 @@ * [Before you begin](#before-you-begin) * [Samples](#samples) + * [Add Task](#add-task) * [Concepts](#concepts) * [Quickstart](#quickstart) * [Tasks](#tasks) @@ -25,6 +26,23 @@ Before running the samples, make sure you've followed the steps outlined in +### Add Task + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/addTask.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/addTask.js,samples/README.md) + +__Usage:__ + + +`node addTask.js` + + +----- + + + + ### Concepts View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js). diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index b574513fe94..f06804db81a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-05-21T11:13:01.299132Z", + "updateTime": "2019-05-22T11:11:48.365770Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "32a10f69e2c9ce15bba13ab1ff928bacebb25160", - "internalRef": "249058354" + "sha": "6ea045ad2ed95863557b9856760fa8760d8daee0", + "internalRef": "249345152" } }, { From 9cdea29e4804c634d9bd61e6daf553e0f393e3ad Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 28 May 2019 20:38:24 +0000 Subject: [PATCH 382/820] build: ignore proto files in test coverage (#418) --- handwritten/nodejs-datastore/.nycrc | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index bfe4073a6ab..83a421a0628 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -10,6 +10,7 @@ "**/samples", "**/scripts", "**/src/**/v*/**/*.js", + "**/protos", "**/test", ".jsdoc.js", "**/.jsdoc.js", From fa4da3541c0a8c77a5826ac4baddb5ea4928f217 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 30 May 2019 11:07:24 -0700 Subject: [PATCH 383/820] chore(deps): update dependency typescript to ~3.5.0 (#420) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ae8736fff12..b8c19421725 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -91,6 +91,6 @@ "proxyquire": "^2.1.0", "sinon": "^7.3.2", "tmp": "0.1.0", - "typescript": "~3.4.5" + "typescript": "~3.5.0" } } From 5f5727c1712a6612c39259298efc55fdd36593e4 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 4 Jun 2019 13:30:45 -0700 Subject: [PATCH 384/820] feat: support apiEndpoint override in client constructor (#422) --- .../nodejs-datastore/src/v1/datastore_client.js | 13 ++++++++++++- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- handwritten/nodejs-datastore/test/gapic-v1.js | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index eb7d9cd42e8..cf13ffb9c1b 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -62,12 +62,15 @@ class DatastoreClient { constructor(opts) { this._descriptors = {}; + const servicePath = + opts.servicePath || opts.apiEndpoint || this.constructor.servicePath; + // Ensure that options include the service address and port. opts = Object.assign( { clientConfig: {}, port: this.constructor.port, - servicePath: this.constructor.servicePath, + servicePath, }, opts ); @@ -154,6 +157,14 @@ class DatastoreClient { return 'datastore.googleapis.com'; } + /** + * The DNS address for this API service - same as servicePath(), + * exists for compatibility reasons. + */ + static get apiEndpoint() { + return 'datastore.googleapis.com'; + } + /** * The port for this API service. */ diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index f06804db81a..a3ea73a3c66 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-05-22T11:11:48.365770Z", + "updateTime": "2019-06-04T19:30:55.849433Z", "sources": [ { "generator": { "name": "artman", - "version": "0.20.0", - "dockerImage": "googleapis/artman@sha256:3246adac900f4bdbd62920e80de2e5877380e44036b3feae13667ec255ebf5ec" + "version": "0.23.0", + "dockerImage": "googleapis/artman@sha256:846102ebf7ea2239162deea69f64940443b4147f7c2e68d64b332416f74211ba" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "6ea045ad2ed95863557b9856760fa8760d8daee0", - "internalRef": "249345152" + "sha": "0026f4b890ed9e2388fb0573c0727defa6f5b82e", + "internalRef": "251265049" } }, { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index b82802e74da..f1df1c55183 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -23,6 +23,22 @@ const error = new Error(); error.code = FAKE_STATUS_CODE; describe('DatastoreClient', () => { + it('has servicePath', () => { + const servicePath = datastoreModule.v1.DatastoreClient.servicePath; + assert(servicePath); + }); + + it('has apiEndpoint', () => { + const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; + assert(apiEndpoint); + }); + + it('has port', () => { + const port = datastoreModule.v1.DatastoreClient.port; + assert(port); + assert(typeof port === 'number'); + }); + describe('lookup', () => { it('invokes lookup without error', done => { const client = new datastoreModule.v1.DatastoreClient({ From dfc073a452d1c58fe5f67836fda2798f4b04b4be Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 5 Jun 2019 05:33:32 -0700 Subject: [PATCH 385/820] fix: default options to empty object --- .../nodejs-datastore/src/v1/datastore_client.js | 1 + handwritten/nodejs-datastore/synth.metadata | 10 +++++----- handwritten/nodejs-datastore/test/gapic-v1.js | 5 +++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index cf13ffb9c1b..e68f873e3be 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -60,6 +60,7 @@ class DatastoreClient { * API remote host. */ constructor(opts) { + opts = opts || {}; this._descriptors = {}; const servicePath = diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index a3ea73a3c66..bf505af7414 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-06-04T19:30:55.849433Z", + "updateTime": "2019-06-05T11:08:22.444988Z", "sources": [ { "generator": { "name": "artman", - "version": "0.23.0", - "dockerImage": "googleapis/artman@sha256:846102ebf7ea2239162deea69f64940443b4147f7c2e68d64b332416f74211ba" + "version": "0.23.1", + "dockerImage": "googleapis/artman@sha256:9d5cae1454da64ac3a87028f8ef486b04889e351c83bb95e83b8fab3959faed0" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0026f4b890ed9e2388fb0573c0727defa6f5b82e", - "internalRef": "251265049" + "sha": "4f3516a6f96dac182973a3573ff5117e8e4f76c7", + "internalRef": "251559960" } }, { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index f1df1c55183..000067e4024 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -39,6 +39,11 @@ describe('DatastoreClient', () => { assert(typeof port === 'number'); }); + it('should create a client with no options', () => { + const client = new datastoreModule.v1.DatastoreClient(); + assert(client); + }); + describe('lookup', () => { it('invokes lookup without error', done => { const client = new datastoreModule.v1.DatastoreClient({ From 2d705c1331e77f10b5afabf1950747b81ad88db1 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 5 Jun 2019 09:50:36 -0700 Subject: [PATCH 386/820] chore: release 4.1.0 (#423) * updated CHANGELOG.md * updated package.json * updated samples/package.json --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 03aea936107..700563df938 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.0.0...v4.1.0) (2019-06-05) + + +### Bug Fixes + +* default options to empty object ([c04777d](https://www.github.com/googleapis/nodejs-datastore/commit/c04777d)) + + +### Features + +* support apiEndpoint override in client constructor ([#422](https://www.github.com/googleapis/nodejs-datastore/issues/422)) ([0f75d38](https://www.github.com/googleapis/nodejs-datastore/commit/0f75d38)) + ## [4.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v3.1.2...v4.0.0) (2019-05-15) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b8c19421725..ef41c55a848 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.0.0", + "version": "4.1.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 006cd1589ba..c62771c6211 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -11,7 +11,7 @@ "test": "mocha system-test/*.test.js --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.0.0", + "@google-cloud/datastore": "^4.1.0", "sinon": "^7.0.0", "yargs": "^13.0.0" }, From 255a557f77e6dcaa643ced1132ef28ed86fa2472 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 7 Jun 2019 07:28:39 -0700 Subject: [PATCH 387/820] refactor: changes formatting of various statements --- handwritten/nodejs-datastore/src/transaction.ts | 2 +- handwritten/nodejs-datastore/synth.metadata | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 53803e48a27..f562229cbb7 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -654,7 +654,7 @@ export type ModifiedEntities = Array<{ }>; export type CommitCallback = google.datastore.v1.Datastore.CommitCallback; export type BeginTransactionResponse = [ - google.datastore.v1.BeginTransactionResponse + google.datastore.v1.BeginTransactionResponse, ]; export interface RunCallback { ( diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index bf505af7414..468977351c6 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-06-05T11:08:22.444988Z", + "updateTime": "2019-06-07T11:11:39.949339Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "4f3516a6f96dac182973a3573ff5117e8e4f76c7", - "internalRef": "251559960" + "sha": "15fdbe57306e3a56069af5e2595e9b1bb33b6123", + "internalRef": "251960694" } }, { From efea71397b79c6664111f4ff43b6aa39a35c5339 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Sat, 8 Jun 2019 16:39:38 -0700 Subject: [PATCH 388/820] refactor: update formatting (#426) --- handwritten/nodejs-datastore/src/transaction.ts | 2 +- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index f562229cbb7..53803e48a27 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -654,7 +654,7 @@ export type ModifiedEntities = Array<{ }>; export type CommitCallback = google.datastore.v1.Datastore.CommitCallback; export type BeginTransactionResponse = [ - google.datastore.v1.BeginTransactionResponse, + google.datastore.v1.BeginTransactionResponse ]; export interface RunCallback { ( diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 468977351c6..84f3c50a8ab 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-06-07T11:11:39.949339Z", + "updateTime": "2019-06-08T11:10:52.330879Z", "sources": [ { "generator": { "name": "artman", - "version": "0.23.1", - "dockerImage": "googleapis/artman@sha256:9d5cae1454da64ac3a87028f8ef486b04889e351c83bb95e83b8fab3959faed0" + "version": "0.24.0", + "dockerImage": "googleapis/artman@sha256:ce425884865f57f18307e597bca1a74a3619b7098688d4995261f3ffb3488681" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "15fdbe57306e3a56069af5e2595e9b1bb33b6123", - "internalRef": "251960694" + "sha": "a12347ec47a7f3d18e35f2effc4295c0b0983213", + "internalRef": "252108410" } }, { From 85f50980c7f6365e4a257fa367517ddf52c94ca4 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 11 Jun 2019 09:50:43 -0700 Subject: [PATCH 389/820] refactor: remove usage of nodejs-repo-tools in samples (#427) --- handwritten/nodejs-datastore/README.md | 21 ++- handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/README.md | 78 +++++++-- .../nodejs-datastore/samples/addTask.js | 119 ------------- .../nodejs-datastore/samples/package.json | 13 +- .../nodejs-datastore/samples/quickstart.js | 15 +- .../samples/system-test/.eslintrc.yml | 6 - .../samples/system-test/concepts.test.js | 155 ----------------- .../samples/system-test/quickstart.test.js | 77 --------- .../samples/system-test/tasks.test.js | 73 -------- .../nodejs-datastore/samples/tasks.add.js | 56 ++++++ .../nodejs-datastore/samples/tasks.delete.js | 42 +++++ handwritten/nodejs-datastore/samples/tasks.js | 160 ------------------ .../nodejs-datastore/samples/tasks.list.js | 38 +++++ .../samples/tasks.markdone.js | 55 ++++++ .../samples/test/.eslintrc.yml | 3 + .../samples/test/concepts.test.js | 154 +++++++++++++++++ .../samples/{system-test => test}/index.yaml | 0 .../samples/test/quickstart.test.js | 28 +++ .../samples/test/tasks.test.js | 61 +++++++ handwritten/nodejs-datastore/synth.metadata | 6 +- 21 files changed, 525 insertions(+), 637 deletions(-) delete mode 100644 handwritten/nodejs-datastore/samples/addTask.js delete mode 100644 handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml delete mode 100644 handwritten/nodejs-datastore/samples/system-test/concepts.test.js delete mode 100644 handwritten/nodejs-datastore/samples/system-test/quickstart.test.js delete mode 100644 handwritten/nodejs-datastore/samples/system-test/tasks.test.js create mode 100644 handwritten/nodejs-datastore/samples/tasks.add.js create mode 100644 handwritten/nodejs-datastore/samples/tasks.delete.js delete mode 100644 handwritten/nodejs-datastore/samples/tasks.js create mode 100644 handwritten/nodejs-datastore/samples/tasks.list.js create mode 100644 handwritten/nodejs-datastore/samples/tasks.markdone.js create mode 100644 handwritten/nodejs-datastore/samples/test/.eslintrc.yml create mode 100644 handwritten/nodejs-datastore/samples/test/concepts.test.js rename handwritten/nodejs-datastore/samples/{system-test => test}/index.yaml (100%) create mode 100644 handwritten/nodejs-datastore/samples/test/quickstart.test.js create mode 100644 handwritten/nodejs-datastore/samples/test/tasks.test.js diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 19cba5a62af..bb451877451 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -57,19 +57,16 @@ npm install @google-cloud/datastore // Imports the Google Cloud client library const {Datastore} = require('@google-cloud/datastore'); -async function quickStart() { - // Your Google Cloud Platform project ID - const projectId = 'YOUR_PROJECT_ID'; - - // Creates a client - const datastore = new Datastore({ - projectId: projectId, - }); +// Creates a client +const datastore = new Datastore(); +async function quickstart() { // The kind for the new entity const kind = 'Task'; + // The name/ID for the new entity const name = 'sampletask1'; + // The Cloud Datastore key for the new entity const taskKey = datastore.key([kind, name]); @@ -85,7 +82,7 @@ async function quickStart() { await datastore.save(task); console.log(`Saved ${task.key.name}: ${task.data.description}`); } -quickStart().catch(console.error); +quickstart(); ``` @@ -98,10 +95,12 @@ has instructions for running the samples. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | -| Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/addTask.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/addTask.js,samples/README.md) | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | -| Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | +| Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | +| Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | +| List Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) | +| Update Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ef41c55a848..afdebd5d3bf 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -41,7 +41,7 @@ "pretest": "npm run compile", "proto": "npm run proto:datastore", "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", - "docs-test": "linkinator docs -r --skip www.googleapis.com", + "docs-test": "linkinator docs -r --skip https://github.com/googleapis/nodejs-datastore/blob/master/samples/.+", "predocs-test": "npm run docs" }, "dependencies": { diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index b94d4bb878e..2e6ce373911 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -12,10 +12,12 @@ * [Before you begin](#before-you-begin) * [Samples](#samples) - * [Add Task](#add-task) * [Concepts](#concepts) * [Quickstart](#quickstart) - * [Tasks](#tasks) + * [Add Task](#add-task) + * [Delete Task](#delete-task) + * [List Tasks](#list-tasks) + * [Update Task](#update-task) ## Before you begin @@ -26,16 +28,52 @@ Before running the samples, make sure you've followed the steps outlined in +### Concepts + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) + +__Usage:__ + + +`node concepts.js` + + +----- + + + + +### Quickstart + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) + +__Usage:__ + + +`node quickstart.js` + + +----- + + + + ### Add Task -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/addTask.js). +Adds a task with a description . -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/addTask.js,samples/README.md) +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) __Usage:__ -`node addTask.js` +`node tasks.add.js ` ----- @@ -43,16 +81,18 @@ __Usage:__ -### Concepts +### Delete Task -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js). +Deletes task . -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) __Usage:__ -`node concepts.js` +`node tasks.delete.js ` ----- @@ -60,16 +100,18 @@ __Usage:__ -### Quickstart +### List Tasks -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). +Lists all tasks ordered by creation time. -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) __Usage:__ -`node quickstart.js` +`node tasks.list.js` ----- @@ -77,16 +119,18 @@ __Usage:__ -### Tasks +### Update Task + +Marks task as Done. -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js). -[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) __Usage:__ -`node tasks.js` +`node tasks.markdone.js ` diff --git a/handwritten/nodejs-datastore/samples/addTask.js b/handwritten/nodejs-datastore/samples/addTask.js deleted file mode 100644 index 5192d057d33..00000000000 --- a/handwritten/nodejs-datastore/samples/addTask.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Copyright 2018, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -// [START datastore_build_service] -const {Datastore} = require('@google-cloud/datastore'); - -// Creates a client -const datastore = new Datastore(); -// [END datastore_build_service] - -// [START datastore_add_entity] -async function addTask(description) { - const taskKey = datastore.key('Task'); - const entity = { - key: taskKey, - data: [ - { - name: 'created', - value: new Date().toJSON(), - }, - { - name: 'description', - value: description, - excludeFromIndexes: true, - }, - { - name: 'done', - value: false, - }, - ], - }; - - try { - await datastore.save(entity); - console.log(`Task ${taskKey.id} created successfully.`); - } catch (err) { - console.error('ERROR:', err); - } -} -// [END datastore_add_entity] - -// [START datastore_update_entity] -async function markDone(taskId) { - const transaction = datastore.transaction(); - const taskKey = datastore.key(['Task', taskId]); - - try { - await transaction.run(); - const [task] = await transaction.get(taskKey); - task.done = true; - transaction.save({ - key: taskKey, - data: task, - }); - await transaction.commit(); - console.log(`Task ${taskId} updated successfully.`); - } catch (err) { - transaction.rollback(); - } -} -// [END datastore_update_entity] - -// [START datastore_retrieve_entities] -async function listTasks() { - const query = datastore.createQuery('Task').order('created'); - - const [tasks] = await datastore.runQuery(query); - console.log('Tasks:'); - tasks.forEach(task => { - const taskKey = task[datastore.KEY]; - console.log(taskKey.id, task); - }); -} -// [END datastore_retrieve_entities] - -// [START datastore_delete_entity] -async function deleteTask(taskId) { - const taskKey = datastore.key(['Task', taskId]); - - await datastore.delete(taskKey); - console.log(`Task ${taskId} deleted successfully.`); -} -// [END datastore_delete_entity] - -require(`yargs`) // eslint-disable-line - .command( - `new `, - `Adds a task with a description .`, - {}, - opts => addTask(opts.description) - ) - .command(`done `, `Marks the specified task as done.`, {}, opts => - markDone(opts.taskId) - ) - .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) - .command(`delete `, `Deletes a task.`, {}, opts => - deleteTask(opts.taskId) - ) - .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) - .example(`node $0 done 12345`, `Marks task 12345 as Done.`) - .example(`node $0 list`, `Lists all tasks ordered by creation time`) - .example(`node $0 delete 12345`, `Deletes task 12345.`) - .wrap(120) - .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) - .help().argv; diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index c62771c6211..0ecf478d105 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -3,21 +3,22 @@ "private": true, "license": "Apache-2.0", "author": "Google Inc.", + "files": [ + "*.js" + ], "repository": "googleapis/nodejs-datastore", "engines": { "node": ">=8" }, "scripts": { - "test": "mocha system-test/*.test.js --timeout=600000" + "test": "mocha --timeout=600000" }, "dependencies": { "@google-cloud/datastore": "^4.1.0", - "sinon": "^7.0.0", - "yargs": "^13.0.0" + "sinon": "^7.3.2" }, "devDependencies": { - "@google-cloud/nodejs-repo-tools": "^3.0.0", - "mocha": "^6.0.0", - "proxyquire": "^2.0.1" + "chai": "^4.2.0", + "mocha": "^6.1.4" } } diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 94d627a713c..8746b0b61cf 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -19,19 +19,16 @@ // Imports the Google Cloud client library const {Datastore} = require('@google-cloud/datastore'); -async function quickStart() { - // Your Google Cloud Platform project ID - const projectId = 'YOUR_PROJECT_ID'; - - // Creates a client - const datastore = new Datastore({ - projectId: projectId, - }); +// Creates a client +const datastore = new Datastore(); +async function quickstart() { // The kind for the new entity const kind = 'Task'; + // The name/ID for the new entity const name = 'sampletask1'; + // The Cloud Datastore key for the new entity const taskKey = datastore.key([kind, name]); @@ -47,5 +44,5 @@ async function quickStart() { await datastore.save(task); console.log(`Saved ${task.key.name}: ${task.data.description}`); } -quickStart().catch(console.error); +quickstart(); // [END datastore_quickstart] diff --git a/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml b/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml deleted file mode 100644 index 0ab526f52b2..00000000000 --- a/handwritten/nodejs-datastore/samples/system-test/.eslintrc.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -env: - mocha: true -rules: - node/no-unpublished-require: off - no-empty: off diff --git a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js b/handwritten/nodejs-datastore/samples/system-test/concepts.test.js deleted file mode 100644 index 45ced36136e..00000000000 --- a/handwritten/nodejs-datastore/samples/system-test/concepts.test.js +++ /dev/null @@ -1,155 +0,0 @@ -/** - * Copyright 2018, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const concepts = require('../concepts'); -const assert = require('assert'); -const tools = require('@google-cloud/nodejs-repo-tools'); - -let transaction; -let metadata; -let index; -let query; -let entity; - -const Transaction = concepts.Transaction; -const Metadata = concepts.Metadata; -const Index = concepts.Index; -const Entity = concepts.Entity; -const Query = concepts.Query; - -before(() => { - tools.checkCredentials(); - const projectId = process.env.GCLOUD_PROJECT; - assert.ok(projectId, 'You must set the GCLOUD_PROJECT env var!'); - transaction = new Transaction(projectId); - metadata = new Metadata(projectId); - index = new Index(projectId); - entity = new Entity(projectId); - query = new Query(projectId); -}); - -after(async () => { - const datastore = transaction.datastore; - const query = datastore.createQuery('Task').select('__key__'); - const [entities] = await datastore.runQuery(query); - await datastore.delete(entities.map(entity => entity[datastore.KEY])); -}); - -beforeEach(tools.stubConsole); -afterEach(tools.restoreConsole); - -// Transactions -it('performs a transactional update', () => - transaction.testTransactionalUpdate()); -it('performs retries if necessary', () => transaction.testTransactionalRetry()); -it('performs a get or create', () => - transaction.testTransactionalGetOrCreate()); -it('gets a snapshot of task list entities', () => - transaction.testSingleEntityGroupReadOnly()); - -// Metadata -it('performs a namespace query', () => metadata.testNamespaceRunQuery()); -it('performs a kind query', () => metadata.testKindRunQuery()); -it('performs a property query', () => metadata.testPropertyRunQuery()); -it('performs a property by kind query', () => - metadata.testPropertyByKindRunQuery()); - -// Indexes -it('performs a query with a filter on an unindexed property', () => - index.testUnindexedPropertyQuery()); -it('inserts arrays of data', () => index.testExplodingProperties()); - -// Queries -it('performs a basic query', async () => await query.testRunQuery()); -it('performs a query with a property filter', () => query.testPropertyFilter()); -it('performs a query with a composite filter', () => - query.testCompositeFilter()); -it('performs a query with a key filter', () => query.testKeyFilter()); -it('performs a query with ascending sort', () => query.testAscendingSort()); -it('performs a query with descending sort', () => query.testDescendingSort()); -it('performs a query with multi sort', () => query.testMultiSort()); -it('performs a kindless query', () => query.testKindlessQuery()); -it('performs a projection query', () => { - return entity - .testProperties() - .then(() => { - return new Promise((resolve, reject) => { - setTimeout(() => { - query.testRunQueryProjection().then(resolve, reject); - }, 1000); - }); - }) - .then(results => { - assert.deepStrictEqual(results, { - priorities: [4], - percentCompletes: [10], - }); - }); -}); -it('performs a keys only query', () => query.testKeysOnlyQuery()); -it('performs a distinct on query', () => query.testDistinctOnQuery()); -it('performs an array value inequality query', () => - query.testArrayValueInequalityRange()); -it('performs an array value equality query', () => - query.testArrayValueEquality()); -it('performs an inequality range query', () => query.testInequalityRange()); -it('returns an error from an invalid query', async () => { - await assert.throws(query.testInequalityInvalid); -}); -it('performs an equal and inequality range query', () => - query.testEqualAndInequalityRange()); -it('performs an equality sort query', () => query.testInequalitySort()); -it('returns an error when not sorted on filtered property', async () => { - await assert.throws(query.testInequalitySortInvalidNotSame); -}); -it('returns an error when not sorted on first filter prop', async () => { - await assert.throws(query.testInequalitySortInvalidNotFirst); -}); -it('performs a query with a limit', () => query.testLimit()); -it('allows manual pagination through results', () => { - return entity.testBatchUpsert().then(() => { - return new Promise((resolve, reject) => { - setTimeout(() => { - query.testCursorPaging().then(resolve, reject); - }, 1000); - }); - }); -}); -it('performs an ancestor query', () => query.testEventualConsistentQuery()); - -// Entities -it('saves with an incomplete key', () => entity.testIncompleteKey()); -it('saves with a named key', () => entity.testNamedKey()); -it('saves a key with a parent', () => entity.testKeyWithParent()); -it('saves a key with multiple parents', () => - entity.testKeyWithMultiLevelParent()); -it('saves an entity with a parent', () => entity.testEntityWithParent()); -it('saves an entity with properties', () => { - return entity.testProperties(); -}); -it('saves an entity with arrays', () => entity.testArrayValue()); -it('saves a basic entity', () => entity.testBasicEntity()); -it('saves with an upsert', () => entity.testUpsert()); -it('saves with an insert', () => entity.testInsert()); -it('performs a lookup', () => entity.testLookup()); -it('saves with an update', () => entity.testUpdate()); -it('deletes an entity', () => entity.testDelete()); -it('performs a batch upsert', () => { - return entity.testBatchUpsert(); -}); -it('performs a batch lookup', () => entity.testBatchLookup()); -it('performs a batch delete', () => entity.testBatchDelete()); diff --git a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js b/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js deleted file mode 100644 index 80f85ed04ec..00000000000 --- a/handwritten/nodejs-datastore/samples/system-test/quickstart.test.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2018, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const proxyquire = require('proxyquire').noPreserveCache(); -const sinon = require('sinon'); -const assert = require('assert'); -const tools = require('@google-cloud/nodejs-repo-tools'); - -const {Datastore} = proxyquire('@google-cloud/datastore', {}); -const datastore = new Datastore(); - -const entity = {description: 'Buy milk'}; -const kind = 'Task'; -const name = 'sampletask1'; -const key = datastore.key([kind, name]); -const datastoreEntity = Object.assign({}, entity); -datastoreEntity[datastore.KEY] = key; - -before(async () => { - try { - await datastore.delete(key); - } catch (err) {} // ignore error -}); -after(async () => { - try { - await datastore.delete(key); - } catch (err) {} // ignore error -}); - -beforeEach(tools.stubConsole); -afterEach(tools.restoreConsole); - -it('should get a task from Datastore', () => { - const datastoreMock = { - key: (...args) => datastore.key(...args), - - save: async _task => { - assert.strictEqual(_task.key.kind, kind); - assert.strictEqual(_task.key.name, name); - assert.deepStrictEqual(_task.data, entity); - - return await datastore.save(_task).then(async () => { - await new Promise(r => setTimeout(r, 200)); - await datastore - .get(key) - .then(([task]) => { - assert.deepStrictEqual(task, datastoreEntity); - assert.strictEqual( - console.log.calledWith(`Saved ${name}: ${entity.description}`), - true - ); - }) - .catch(); - }); - }, - }; - - proxyquire('../quickstart', { - '@google-cloud/datastore': { - Datastore: sinon.stub().returns(datastoreMock), - }, - }); -}); diff --git a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js b/handwritten/nodejs-datastore/samples/system-test/tasks.test.js deleted file mode 100644 index 400234b0e51..00000000000 --- a/handwritten/nodejs-datastore/samples/system-test/tasks.test.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright 2018, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const {Datastore} = require('@google-cloud/datastore'); -const datastore = new Datastore(); -const path = require('path'); -const assert = require('assert'); -const tools = require('@google-cloud/nodejs-repo-tools'); - -const cmd = 'node tasks.js'; -const cwd = path.join(__dirname, '..'); - -const description = 'description'; -let key; - -after(async () => { - try { - await datastore.delete(key); - } catch (err) {} // ignore error -}); - -before(tools.checkCredentials); -beforeEach(tools.stubConsole); -afterEach(tools.restoreConsole); - -it('should add a task', async () => { - const expected = /^Task (\d+) created successfully.$/; - const parts = tools.run(`${cmd} new "${description}"`, cwd).match(expected); - assert.strictEqual(expected.test(parts[0]), true); - const [task] = await datastore.get( - datastore.key([`Task`, parseInt(parts[1], 10)]) - ); - key = task[datastore.KEY]; - assert.strictEqual(task.description, description); -}); - -it('should mark a task as done', async () => { - const expected = `Task ${key.id} updated successfully.`; - const output = await tools.runAsync(`${cmd} done ${key.id}`, cwd); - assert.strictEqual(output, expected); - const [task] = await datastore.get(key); - assert.strictEqual(task.done, true); -}); - -it('should list tasks', async () => - await tools - .tryTest(async assert => { - const output = await tools.runAsync(`${cmd} list`, cwd); - assert(output.includes(key.id)); - }) - .start()); - -it('should delete a task', async () => { - const expected = `Task ${key.id} deleted successfully.`; - const output = await tools.runAsync(`${cmd} delete ${key.id}`, cwd); - assert.strictEqual(output, expected); - const [task] = await datastore.get(key); - assert.strictEqual(task, undefined); -}); diff --git a/handwritten/nodejs-datastore/samples/tasks.add.js b/handwritten/nodejs-datastore/samples/tasks.add.js new file mode 100644 index 00000000000..2da33942ab2 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.add.js @@ -0,0 +1,56 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata: +// title: Add Task +// description: Adds a task with a description . +// usage: node tasks.add.js + +async function main(description) { + // [START datastore_add_entity] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function addTask() { + // TODO(developer): uncomment the following line, and add a description + // const description = 'description'; + const taskKey = datastore.key('Task'); + const entity = { + key: taskKey, + data: [ + { + name: 'created', + value: new Date().toJSON(), + }, + { + name: 'description', + value: description, + excludeFromIndexes: true, + }, + { + name: 'done', + value: false, + }, + ], + }; + await datastore.save(entity); + console.log(`Task ${taskKey.id} created successfully.`); + } + addTask(); + // [END datastore_add_entity] +} +main(...process.argv.slice(2)).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/tasks.delete.js b/handwritten/nodejs-datastore/samples/tasks.delete.js new file mode 100644 index 00000000000..126ef0520d7 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.delete.js @@ -0,0 +1,42 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata: +// title: Delete Task +// description: Deletes task . +// usage: node tasks.delete.js + +async function main(taskId) { + taskId = Number(taskId); + // [START datastore_delete_entity] + const {Datastore} = require('@google-cloud/datastore'); + + const datastore = new Datastore(); + + async function deleteTask() { + // TODO(developer): uncomment the following line and define a taskId + // const taskId = 'task123'; + const taskKey = datastore.key(['Task', taskId]); + console.log(taskKey); + await datastore.delete(taskKey); + console.log(`Task ${taskId} deleted successfully.`); + } + deleteTask(); + // [END datastore_delete_entity] +} + +main(...process.argv.slice(2)).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js deleted file mode 100644 index bb2dcf89885..00000000000 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright 2018, Google, Inc. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -// [START datastore_build_service] -// By default, the client will authenticate using the service account file -// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use -// the project specified by the GCLOUD_PROJECT environment variable. See -// https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication -const {Datastore} = require('@google-cloud/datastore'); - -// Creates a client -const datastore = new Datastore(); -// [END datastore_build_service] - -/* -Installation and setup instructions. -1. Download the TaskList sample application from [here] -(https://github.com/GoogleCloudPlatform/nodejs-docs-samples/archive/master.zip). - -2. Unzip the download: -```sh -unzip nodejs-docs-samples-master.zip -``` - -3. Change directories to the TaskList application: -```sh -cd nodejs-docs-samples-master/datastore -``` - -4. Install the dependencies and link the application: -```sh -npm install -``` - -5. With the gcloud SDK, be sure you are authenticated: -```sh -gcloud beta auth application-default login -``` - -6. At a command prompt, run the following, where `` is the ID of -your Google Cloud Platform project. -```sh -export GCLOUD_PROJECT= -``` - -7. Run the application! -```sh -node tasks -``` -*/ - -// [START datastore_add_entity] -async function addTask(description) { - const taskKey = datastore.key('Task'); - const entity = { - key: taskKey, - data: [ - { - name: 'created', - value: new Date().toJSON(), - }, - { - name: 'description', - value: description, - excludeFromIndexes: true, - }, - { - name: 'done', - value: false, - }, - ], - }; - - try { - await datastore.save(entity); - console.log(`Task ${taskKey.id} created successfully.`); - } catch (err) { - console.error('ERROR:', err); - } -} -// [END datastore_add_entity] - -// [START datastore_update_entity] -async function markDone(taskId) { - const transaction = datastore.transaction(); - const taskKey = datastore.key(['Task', taskId]); - - try { - await transaction.run(); - const [task] = await transaction.get(taskKey); - task.done = true; - transaction.save({ - key: taskKey, - data: task, - }); - await transaction.commit(); - console.log(`Task ${taskId} updated successfully.`); - } catch (err) { - transaction.rollback(); - } -} -// [END datastore_update_entity] - -// [START datastore_retrieve_entities] -async function listTasks() { - const query = datastore.createQuery('Task').order('created'); - - const [tasks] = await datastore.runQuery(query); - console.log('Tasks:'); - tasks.forEach(task => { - const taskKey = task[datastore.KEY]; - console.log(taskKey.id, task); - }); -} -// [END datastore_retrieve_entities] - -// [START datastore_delete_entity] -async function deleteTask(taskId) { - const taskKey = datastore.key(['Task', taskId]); - - await datastore.delete(taskKey); - console.log(`Task ${taskId} deleted successfully.`); -} -// [END datastore_delete_entity] - -require(`yargs`) // eslint-disable-line - .command( - `new `, - `Adds a task with a description .`, - {}, - opts => addTask(opts.description) - ) - .command(`done `, `Marks the specified task as done.`, {}, opts => - markDone(opts.taskId) - ) - .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) - .command(`delete `, `Deletes a task.`, {}, opts => - deleteTask(opts.taskId) - ) - .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) - .example(`node $0 done 12345`, `Marks task 12345 as Done.`) - .example(`node $0 list`, `Lists all tasks ordered by creation time`) - .example(`node $0 delete 12345`, `Deletes task 12345.`) - .wrap(120) - .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) - .help().argv; diff --git a/handwritten/nodejs-datastore/samples/tasks.list.js b/handwritten/nodejs-datastore/samples/tasks.list.js new file mode 100644 index 00000000000..7c0f934d9ff --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.list.js @@ -0,0 +1,38 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata: +// title: List Tasks +// description: Lists all tasks ordered by creation time. +// usage: node tasks.list.js + +// [START datastore_retrieve_entities] +const {Datastore} = require('@google-cloud/datastore'); + +const datastore = new Datastore(); + +async function listTasks() { + const query = datastore.createQuery('Task').order('created'); + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + for (const task of tasks) { + const taskKey = task[datastore.KEY]; + console.log(taskKey.id, task); + } +} +listTasks(); +// [END datastore_retrieve_entities] diff --git a/handwritten/nodejs-datastore/samples/tasks.markdone.js b/handwritten/nodejs-datastore/samples/tasks.markdone.js new file mode 100644 index 00000000000..3cc990f2e10 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.markdone.js @@ -0,0 +1,55 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata: +// title: Update Task +// description: Marks task as Done. +// usage: node tasks.markdone.js + +async function main(taskId) { + taskId = Number(taskId); + // [START datastore_update_entity] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function markDone() { + // TODO(developer): uncomment the following line and define a taskId + // const taskId = 'task123'; + const transaction = datastore.transaction(); + const taskKey = datastore.key(['Task', taskId]); + console.log(taskKey); + console.log(taskKey.path); + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + task.done = true; + transaction.save({ + key: taskKey, + data: task, + }); + await transaction.commit(); + console.log(`Task ${taskId} updated successfully.`); + } catch (err) { + transaction.rollback(); + throw err; + } + } + markDone(); + // [END datastore_update_entity] +} + +main(...process.argv.slice(2)).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/test/.eslintrc.yml b/handwritten/nodejs-datastore/samples/test/.eslintrc.yml new file mode 100644 index 00000000000..6db2a46c535 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/.eslintrc.yml @@ -0,0 +1,3 @@ +--- +env: + mocha: true diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js new file mode 100644 index 00000000000..369ae34d811 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -0,0 +1,154 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const concepts = require('../concepts'); +const assert = require('assert'); + +let transaction; +let metadata; +let index; +let query; +let entity; + +const Transaction = concepts.Transaction; +const Metadata = concepts.Metadata; +const Index = concepts.Index; +const Entity = concepts.Entity; +const Query = concepts.Query; + +describe('concepts', () => { + before(() => { + const projectId = process.env.GCLOUD_PROJECT; + assert.ok(projectId, 'You must set the GCLOUD_PROJECT env var!'); + transaction = new Transaction(projectId); + metadata = new Metadata(projectId); + index = new Index(projectId); + entity = new Entity(projectId); + query = new Query(projectId); + }); + + after(async () => { + const datastore = transaction.datastore; + const query = datastore.createQuery('Task').select('__key__'); + const [entities] = await datastore.runQuery(query); + await datastore.delete(entities.map(entity => entity[datastore.KEY])); + }); + + // Transactions + it('performs a transactional update', () => + transaction.testTransactionalUpdate()); + it('performs retries if necessary', () => + transaction.testTransactionalRetry()); + it('performs a get or create', () => + transaction.testTransactionalGetOrCreate()); + it('gets a snapshot of task list entities', () => + transaction.testSingleEntityGroupReadOnly()); + + // Metadata + it('performs a namespace query', () => metadata.testNamespaceRunQuery()); + it('performs a kind query', () => metadata.testKindRunQuery()); + it('performs a property query', () => metadata.testPropertyRunQuery()); + it('performs a property by kind query', () => + metadata.testPropertyByKindRunQuery()); + + // Indexes + it('performs a query with a filter on an unindexed property', () => + index.testUnindexedPropertyQuery()); + it('inserts arrays of data', () => index.testExplodingProperties()); + + // Queries + it('performs a basic query', async () => await query.testRunQuery()); + it('performs a query with a property filter', () => + query.testPropertyFilter()); + it('performs a query with a composite filter', () => + query.testCompositeFilter()); + it('performs a query with a key filter', () => query.testKeyFilter()); + it('performs a query with ascending sort', () => query.testAscendingSort()); + it('performs a query with descending sort', () => query.testDescendingSort()); + it('performs a query with multi sort', () => query.testMultiSort()); + it('performs a kindless query', () => query.testKindlessQuery()); + it('performs a projection query', () => { + return entity + .testProperties() + .then(() => { + return new Promise((resolve, reject) => { + setTimeout(() => { + query.testRunQueryProjection().then(resolve, reject); + }, 1000); + }); + }) + .then(results => { + assert.deepStrictEqual(results, { + priorities: [4], + percentCompletes: [10], + }); + }); + }); + it('performs a keys only query', () => query.testKeysOnlyQuery()); + it('performs a distinct on query', () => query.testDistinctOnQuery()); + it('performs an array value inequality query', () => + query.testArrayValueInequalityRange()); + it('performs an array value equality query', () => + query.testArrayValueEquality()); + it('performs an inequality range query', () => query.testInequalityRange()); + it('returns an error from an invalid query', async () => { + await assert.throws(query.testInequalityInvalid); + }); + it('performs an equal and inequality range query', () => + query.testEqualAndInequalityRange()); + it('performs an equality sort query', () => query.testInequalitySort()); + it('returns an error when not sorted on filtered property', async () => { + await assert.throws(query.testInequalitySortInvalidNotSame); + }); + it('returns an error when not sorted on first filter prop', async () => { + await assert.throws(query.testInequalitySortInvalidNotFirst); + }); + it('performs a query with a limit', () => query.testLimit()); + it('allows manual pagination through results', () => { + return entity.testBatchUpsert().then(() => { + return new Promise((resolve, reject) => { + setTimeout(() => { + query.testCursorPaging().then(resolve, reject); + }, 1000); + }); + }); + }); + it('performs an ancestor query', () => query.testEventualConsistentQuery()); + + // Entities + it('saves with an incomplete key', () => entity.testIncompleteKey()); + it('saves with a named key', () => entity.testNamedKey()); + it('saves a key with a parent', () => entity.testKeyWithParent()); + it('saves a key with multiple parents', () => + entity.testKeyWithMultiLevelParent()); + it('saves an entity with a parent', () => entity.testEntityWithParent()); + it('saves an entity with properties', () => { + return entity.testProperties(); + }); + it('saves an entity with arrays', () => entity.testArrayValue()); + it('saves a basic entity', () => entity.testBasicEntity()); + it('saves with an upsert', () => entity.testUpsert()); + it('saves with an insert', () => entity.testInsert()); + it('performs a lookup', () => entity.testLookup()); + it('saves with an update', () => entity.testUpdate()); + it('deletes an entity', () => entity.testDelete()); + it('performs a batch upsert', () => { + return entity.testBatchUpsert(); + }); + it('performs a batch lookup', () => entity.testBatchLookup()); + it('performs a batch delete', () => entity.testBatchDelete()); +}); diff --git a/handwritten/nodejs-datastore/samples/system-test/index.yaml b/handwritten/nodejs-datastore/samples/test/index.yaml similarity index 100% rename from handwritten/nodejs-datastore/samples/system-test/index.yaml rename to handwritten/nodejs-datastore/samples/test/index.yaml diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js new file mode 100644 index 00000000000..1617ed74bee --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -0,0 +1,28 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const {assert} = require('chai'); +const {execSync} = require('child_process'); + +const exec = cmd => execSync(cmd, {encoding: 'utf8'}); + +describe('quickstart', () => { + it('should run the quickstart', () => { + const output = exec('node quickstart.js'); + assert.include(output, 'Saved sampletask1: Buy milk'); + }); +}); diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js new file mode 100644 index 00000000000..13b7853fbdd --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -0,0 +1,61 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const {Datastore} = require('@google-cloud/datastore'); +const {assert} = require('chai'); +const {execSync} = require('child_process'); + +const exec = cmd => execSync(cmd, {encoding: 'utf8'}); +const datastore = new Datastore(); +const description = 'description'; +let key; + +describe('task samples', () => { + after(() => datastore.delete(key).catch()); + + it('should add a task', async () => { + const expected = /^Task (\d+) created successfully.$/; + const output = exec(`node tasks.add.js "${description}"`).trim(); + const parts = output.match(expected); + assert.match(parts[0], expected); + const keyId = Number(parts[1]); + const [task] = await datastore.get(datastore.key([`Task`, keyId])); + key = task[datastore.KEY]; + assert.strictEqual(task.description, description); + }); + + it('should mark a task as done', async () => { + const expected = `Task ${key.id} updated successfully.`; + const output = exec(`node tasks.markdone.js ${key.id}`); + assert.include(output, expected); + const [task] = await datastore.get(key); + assert.strictEqual(task.done, true); + }); + + it('should list tasks', () => { + const output = exec('node tasks.list.js'); + assert.include(output, key.id); + }); + + it('should delete a task', async () => { + const expected = `Task ${key.id} deleted successfully.`; + const output = exec(`node tasks.delete.js ${key.id}`); + assert.include(output, expected); + const [task] = await datastore.get(key); + assert.strictEqual(task, undefined); + }); +}); diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 84f3c50a8ab..0b5d9a52657 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-06-08T11:10:52.330879Z", + "updateTime": "2019-06-11T16:06:41.204768Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "a12347ec47a7f3d18e35f2effc4295c0b0983213", - "internalRef": "252108410" + "sha": "744feb9660b3194fcde37dea50038bde204f3573", + "internalRef": "252553801" } }, { From 090d5c4954d0424aa6e13e349d60bca07bfeeffa Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 11 Jun 2019 10:22:28 -0700 Subject: [PATCH 390/820] fix: added legacy samples back, until we can update external references (#428) --- handwritten/nodejs-datastore/README.md | 1 + .../nodejs-datastore/samples/README.md | 18 ++ handwritten/nodejs-datastore/samples/tasks.js | 163 ++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 2 +- .../nodejs-datastore/test/.eslintrc.yml | 1 + 5 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 handwritten/nodejs-datastore/samples/tasks.js diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index bb451877451..3a586756539 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -99,6 +99,7 @@ has instructions for running the samples. | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | +| Legacy Samples | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | | List Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) | | Update Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 2e6ce373911..26cc9a0a4ba 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -16,6 +16,7 @@ * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) + * [Legacy Samples](#legacy-samples) * [List Tasks](#list-tasks) * [Update Task](#update-task) @@ -100,6 +101,23 @@ __Usage:__ +### Legacy Samples + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) + +__Usage:__ + + +`node tasks.js` + + +----- + + + + ### List Tasks Lists all tasks ordered by creation time. diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js new file mode 100644 index 00000000000..53907b60bd8 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -0,0 +1,163 @@ +/** + * Copyright 2018, Google, Inc. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata: +// title: Legacy Samples + +// [START datastore_build_service] +// By default, the client will authenticate using the service account file +// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use +// the project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication +const {Datastore} = require('@google-cloud/datastore'); + +// Creates a client +const datastore = new Datastore(); +// [END datastore_build_service] + +/* +Installation and setup instructions. +1. Download the TaskList sample application from [here] +(https://github.com/GoogleCloudPlatform/nodejs-docs-samples/archive/master.zip). + +2. Unzip the download: +```sh +unzip nodejs-docs-samples-master.zip +``` + +3. Change directories to the TaskList application: +```sh +cd nodejs-docs-samples-master/datastore +``` + +4. Install the dependencies and link the application: +```sh +npm install +``` + +5. With the gcloud SDK, be sure you are authenticated: +```sh +gcloud beta auth application-default login +``` + +6. At a command prompt, run the following, where `` is the ID of +your Google Cloud Platform project. +```sh +export GCLOUD_PROJECT= +``` + +7. Run the application! +```sh +node tasks +``` +*/ + +// [START datastore_add_entity] +async function addTask(description) { + const taskKey = datastore.key('Task'); + const entity = { + key: taskKey, + data: [ + { + name: 'created', + value: new Date().toJSON(), + }, + { + name: 'description', + value: description, + excludeFromIndexes: true, + }, + { + name: 'done', + value: false, + }, + ], + }; + + try { + await datastore.save(entity); + console.log(`Task ${taskKey.id} created successfully.`); + } catch (err) { + console.error('ERROR:', err); + } +} +// [END datastore_add_entity] + +// [START datastore_update_entity] +async function markDone(taskId) { + const transaction = datastore.transaction(); + const taskKey = datastore.key(['Task', taskId]); + + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + task.done = true; + transaction.save({ + key: taskKey, + data: task, + }); + await transaction.commit(); + console.log(`Task ${taskId} updated successfully.`); + } catch (err) { + transaction.rollback(); + } +} +// [END datastore_update_entity] + +// [START datastore_retrieve_entities] +async function listTasks() { + const query = datastore.createQuery('Task').order('created'); + + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + tasks.forEach(task => { + const taskKey = task[datastore.KEY]; + console.log(taskKey.id, task); + }); +} +// [END datastore_retrieve_entities] + +// [START datastore_delete_entity] +async function deleteTask(taskId) { + const taskKey = datastore.key(['Task', taskId]); + + await datastore.delete(taskKey); + console.log(`Task ${taskId} deleted successfully.`); +} +// [END datastore_delete_entity] + +require(`yargs`) // eslint-disable-line + .command( + `new `, + `Adds a task with a description .`, + {}, + opts => addTask(opts.description) + ) + .command(`done `, `Marks the specified task as done.`, {}, opts => + markDone(opts.taskId) + ) + .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) + .command(`delete `, `Deletes a task.`, {}, opts => + deleteTask(opts.taskId) + ) + .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) + .example(`node $0 done 12345`, `Marks task 12345 as Done.`) + .example(`node $0 list`, `Lists all tasks ordered by creation time`) + .example(`node $0 delete 12345`, `Deletes task 12345.`) + .wrap(120) + .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) + .help().argv; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0b5d9a52657..d1b0386680f 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-06-11T16:06:41.204768Z", + "updateTime": "2019-06-11T17:04:02.783050Z", "sources": [ { "generator": { diff --git a/handwritten/nodejs-datastore/test/.eslintrc.yml b/handwritten/nodejs-datastore/test/.eslintrc.yml index 2eb32898bf5..40babe32121 100644 --- a/handwritten/nodejs-datastore/test/.eslintrc.yml +++ b/handwritten/nodejs-datastore/test/.eslintrc.yml @@ -4,3 +4,4 @@ env: rules: node/no-unpublished-require: off node/no-missing-require: off + no-warning-comments: off From 8da04fc4c8719720fa907ed85db2f42f92508602 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 11 Jun 2019 10:36:17 -0700 Subject: [PATCH 391/820] fix(docs): link to up-to-date googleapis.dev doc site (#431) --- handwritten/nodejs-datastore/.repo-metadata.json | 2 +- handwritten/nodejs-datastore/README.md | 2 +- handwritten/nodejs-datastore/synth.metadata | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index dd40ada73e2..9c751eb28cd 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -2,7 +2,7 @@ "name": "datastore", "name_pretty": "Google Cloud Datastore", "product_documentation": "https://cloud.google.com/datastore", - "client_documentation": "https://cloud.google.com/nodejs/docs/reference/datastore/latest/", + "client_documentation": "https://googleapis.dev/nodejs/datastore/latest/", "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", "release_level": "ga", "language": "nodejs", diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 3a586756539..1d56e90da04 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -137,7 +137,7 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest/ +[client-docs]: https://googleapis.dev/nodejs/datastore/latest/ [product-docs]: https://cloud.google.com/datastore [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index d1b0386680f..dc8b3dcf02c 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-06-11T17:04:02.783050Z", + "updateTime": "2019-06-11T17:23:47.759048Z", "sources": [ { "generator": { From 08edf5015848836683a3e809f798df474d65916b Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 11 Jun 2019 10:56:20 -0700 Subject: [PATCH 392/820] chore: release 4.1.1 (#430) --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 700563df938..1aa837fe1a4 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.1.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.0...v4.1.1) (2019-06-11) + + +### Bug Fixes + +* added legacy samples back, until we can update external references ([#428](https://www.github.com/googleapis/nodejs-datastore/issues/428)) ([c282ff7](https://www.github.com/googleapis/nodejs-datastore/commit/c282ff7)) +* **docs:** link to up-to-date googleapis.dev doc site ([#431](https://www.github.com/googleapis/nodejs-datastore/issues/431)) ([58d41a5](https://www.github.com/googleapis/nodejs-datastore/commit/58d41a5)) + ## [4.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.0.0...v4.1.0) (2019-06-05) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index afdebd5d3bf..0cbef0f3fa3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.1.0", + "version": "4.1.1", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 0ecf478d105..b39e702435d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.1.0", + "@google-cloud/datastore": "^4.1.1", "sinon": "^7.3.2" }, "devDependencies": { From eb962ab96b3840404737663bf0f939de8cb12ab5 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 12 Jun 2019 09:59:25 -0700 Subject: [PATCH 393/820] docs: update return type in jsdoc for Buffers (#432) --- .../nodejs-datastore/src/v1/datastore_client.js | 6 +++--- .../src/v1/doc/google/datastore/v1/doc_datastore.js | 10 +++++----- .../src/v1/doc/google/datastore/v1/doc_entity.js | 2 +- .../src/v1/doc/google/datastore/v1/doc_query.js | 12 ++++++------ handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index e68f873e3be..57db1f9d112 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -425,7 +425,7 @@ class DatastoreClient { * entity. * * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} - * @param {string} [request.transaction] + * @param {Buffer} [request.transaction] * The identifier of the transaction associated with the commit. A * transaction identifier is returned by a call to * Datastore.BeginTransaction. @@ -489,7 +489,7 @@ class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * The ID of the project against which to make the request. - * @param {string} request.transaction + * @param {Buffer} request.transaction * The transaction identifier, returned by a call to * Datastore.BeginTransaction. * @param {Object} [options] @@ -512,7 +512,7 @@ class DatastoreClient { * }); * * const projectId = ''; - * const transaction = ''; + * const transaction = Buffer.from(''); * const request = { * projectId: projectId, * transaction: transaction, diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index 737b81518dc..39c1a880acd 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -154,7 +154,7 @@ const BeginTransactionRequest = { * The response for * Datastore.BeginTransaction. * - * @property {string} transaction + * @property {Buffer} transaction * The transaction identifier (always present). * * @typedef BeginTransactionResponse @@ -171,7 +171,7 @@ const BeginTransactionResponse = { * @property {string} projectId * The ID of the project against which to make the request. * - * @property {string} transaction + * @property {Buffer} transaction * The transaction identifier, returned by a call to * Datastore.BeginTransaction. * @@ -206,7 +206,7 @@ const RollbackResponse = { * * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} * - * @property {string} transaction + * @property {Buffer} transaction * The identifier of the transaction associated with the commit. A * transaction identifier is returned by a call to * Datastore.BeginTransaction. @@ -433,7 +433,7 @@ const MutationResult = { * * The number should be among the values of [ReadConsistency]{@link google.datastore.v1.ReadConsistency} * - * @property {string} transaction + * @property {Buffer} transaction * The identifier of the transaction in which to read. A * transaction identifier is returned by a call to * Datastore.BeginTransaction. @@ -499,7 +499,7 @@ const TransactionOptions = { /** * Options specific to read / write transactions. * - * @property {string} previousTransaction + * @property {Buffer} previousTransaction * The transaction identifier of the transaction being retried. * * @typedef ReadWrite diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index b7575337aa5..daa0e9fdf8c 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -176,7 +176,7 @@ const ArrayValue = { * When `exclude_from_indexes` is false (it is indexed) , may have at most * 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes. * - * @property {string} blobValue + * @property {Buffer} blobValue * A blob value. * May have at most 1,000,000 bytes. * When `exclude_from_indexes` is false, may have at most 1500 bytes. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 7b0b766acd6..0229db202bd 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -34,7 +34,7 @@ * `LookupResponse`, this is the version of the snapshot that was used to look * up the entity, and it is always set except for eventually consistent reads. * - * @property {string} cursor + * @property {Buffer} cursor * A cursor that points to the position after the result entity. * Set only when the `EntityResult` is part of a `QueryResultBatch` message. * @@ -110,13 +110,13 @@ const EntityResult = { * * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} * - * @property {string} startCursor + * @property {Buffer} startCursor * A starting point for the query results. Query cursors are * returned in query result batches and * [can only be used to continue the same * query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). * - * @property {string} endCursor + * @property {Buffer} endCursor * An ending point for the query results. Query cursors are * returned in query result batches and * [can only be used to limit the same @@ -410,7 +410,7 @@ const GqlQuery = { * * This object should have the same structure as [Value]{@link google.datastore.v1.Value} * - * @property {string} cursor + * @property {Buffer} cursor * A query cursor. Query cursors are returned in query * result batches. * @@ -428,7 +428,7 @@ const GqlQueryParameter = { * @property {number} skippedResults * The number of results skipped, typically because of an offset. * - * @property {string} skippedCursor + * @property {Buffer} skippedCursor * A cursor that points to the position after the last skipped result. * Will be set when `skipped_results` != 0. * @@ -442,7 +442,7 @@ const GqlQueryParameter = { * * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} * - * @property {string} endCursor + * @property {Buffer} endCursor * A cursor that points to the position after the last result in the batch. * * @property {number} moreResults diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index dc8b3dcf02c..05368d96b5d 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-06-11T17:23:47.759048Z", + "updateTime": "2019-06-12T11:13:06.532088Z", "sources": [ { "generator": { "name": "artman", - "version": "0.24.0", - "dockerImage": "googleapis/artman@sha256:ce425884865f57f18307e597bca1a74a3619b7098688d4995261f3ffb3488681" + "version": "0.24.1", + "dockerImage": "googleapis/artman@sha256:6018498e15310260dc9b03c9d576608908ed9fbabe42e1494ff3d827fea27b19" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "744feb9660b3194fcde37dea50038bde204f3573", - "internalRef": "252553801" + "sha": "f117dac435e96ebe58d85280a3faf2350c4d4219", + "internalRef": "252714985" } }, { From 66eaefd444b417c417860770e79b75f5a808bf37 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Wed, 12 Jun 2019 22:10:15 -0700 Subject: [PATCH 394/820] fix(docs): move to new client docs URL (#437) --- handwritten/nodejs-datastore/.repo-metadata.json | 4 ++-- handwritten/nodejs-datastore/README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index 9c751eb28cd..3dc8a39e9e4 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -2,11 +2,11 @@ "name": "datastore", "name_pretty": "Google Cloud Datastore", "product_documentation": "https://cloud.google.com/datastore", - "client_documentation": "https://googleapis.dev/nodejs/datastore/latest/", + "client_documentation": "https://googleapis.dev/nodejs/datastore/latest", "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", "release_level": "ga", "language": "nodejs", "repo": "googleapis/nodejs-datastore", "distribution_name": "@google-cloud/datastore", "api_id": "datastore.googleapis.com" -} +} \ No newline at end of file diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 1d56e90da04..8e3e5679781 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -137,7 +137,7 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://googleapis.dev/nodejs/datastore/latest/ +[client-docs]: https://googleapis.dev/nodejs/datastore/latest [product-docs]: https://cloud.google.com/datastore [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project From c111b306b9b5aab28635f65a1bc29552a541efc4 Mon Sep 17 00:00:00 2001 From: Jonathan Lui Date: Thu, 13 Jun 2019 11:30:47 -0700 Subject: [PATCH 395/820] fix(docs): fix tag rendering in Key doc (#439) --- handwritten/nodejs-datastore/src/entity.ts | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index d2bf5066db7..125de6288c4 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -174,21 +174,28 @@ export namespace entity { * @param {string} [options.namespace] Optional namespace. * * @example - * Create an incomplete key with a kind value of `Company`. + * //- + * // Create an incomplete key with a kind value of `Company`. + * //- * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key('Company'); * * @example - * Create a complete key with a kind value of `Company` and id - * `123`. const {Datastore} = require('@google-cloud/datastore'); + * //- + * // Create a complete key with a kind value of `Company` and id`123`. + * //- + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 123]); * * @example - * If the ID integer is outside the bounds of a JavaScript Number - * object, create an Int. const {Datastore} = - * require('@google-cloud/datastore'); const datastore = new Datastore(); + * //- + * // If the ID integer is outside the bounds of a JavaScript Number + * // object, create an Int. + * //- + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * const key = datastore.key([ * 'Company', * datastore.int('100000000000001234') @@ -202,8 +209,10 @@ export namespace entity { * const key = datastore.key(['Company', 'Google']); * * @example - * Create a complete key from a provided namespace and - * path. const {Datastore} = require('@google-cloud/datastore'); + * //- + * // Create a complete key from a provided namespace and path. + * //- + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key({ * namespace: 'My-NS', From c67ebf651f3c1e0a3201f9d20173c956d18c26bd Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Fri, 14 Jun 2019 12:59:30 -0400 Subject: [PATCH 396/820] fix: add `parseInt` to constructor of task keys (#436) The `id` property of `Key` is a string, update the use site of the key to parse it as an int when being used to create a key. --- handwritten/nodejs-datastore/samples/tasks.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 53907b60bd8..083a38b87e9 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -100,7 +100,7 @@ async function addTask(description) { // [START datastore_update_entity] async function markDone(taskId) { const transaction = datastore.transaction(); - const taskKey = datastore.key(['Task', taskId]); + const taskKey = datastore.key(['Task', datastore.int(taskId)]); try { await transaction.run(); @@ -133,7 +133,7 @@ async function listTasks() { // [START datastore_delete_entity] async function deleteTask(taskId) { - const taskKey = datastore.key(['Task', taskId]); + const taskKey = datastore.key(['Task', datastore.int(taskId)]); await datastore.delete(taskKey); console.log(`Task ${taskId} deleted successfully.`); From 6f647166c6e95f9e6183780efddb7ad7d325c6b1 Mon Sep 17 00:00:00 2001 From: Pavlo Mykhalov <2944963+growtofill@users.noreply.github.com> Date: Tue, 18 Jun 2019 19:03:30 +0300 Subject: [PATCH 397/820] fix: assign more restrictive type to PathType (#433) (#435) This prevents `Key path element must not be incomplete` runtime error, and also allows using big int (datastore.Int) when creating a key using KeyOptions object as an argument. --- handwritten/nodejs-datastore/src/entity.ts | 3 ++- handwritten/nodejs-datastore/src/index.ts | 9 ++++----- handwritten/nodejs-datastore/system-test/datastore.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 125de6288c4..6cc0d3b18a8 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -18,6 +18,7 @@ import arrify = require('arrify'); import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto} from './query'; +import {PathType} from '.'; // tslint:disable-next-line no-namespace export namespace entity { @@ -162,7 +163,7 @@ export namespace entity { export interface KeyOptions { namespace?: string; - path: Array; + path: PathType[]; } /** diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index a15083338c9..f142933cae7 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -37,8 +37,7 @@ import {Transaction} from './transaction'; const {grpc} = new GrpcClient(); -// tslint:disable-next-line: no-any -export type PathType = any; +export type PathType = string | number | entity.Int; // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -701,13 +700,13 @@ class Datastore extends DatastoreRequest { * }); */ key(options: string | entity.KeyOptions | PathType[]): entity.Key { - options = is.object(options) - ? options + const keyOptions = is.object(options) + ? (options as entity.KeyOptions) : { namespace: this.namespace, path: arrify(options) as PathType[], }; - return new entity.Key(options as entity.KeyOptions); + return new entity.Key(keyOptions); } /** diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index c6b52a4fee0..3feb0390c3e 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -159,7 +159,7 @@ describe('Datastore', () => { const [entity] = await datastore.get(postKey); delete entity[datastore.KEY]; assert.deepStrictEqual(entity, data); - await datastore.delete(datastore.key(['Post', assignedId])); + await datastore.delete(datastore.key(['Post', assignedId as string])); }); it('should save/get/delete with a generated key id', async () => { From 9e931a46b35bbd0d54cabff15d31e45475867dec Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 18 Jun 2019 10:18:58 -0700 Subject: [PATCH 398/820] build: switch to GitHub magic proxy (#440) --- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 05368d96b5d..d04b29b74d4 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-06-12T11:13:06.532088Z", + "updateTime": "2019-06-18T01:00:06.903003Z", "sources": [ { "generator": { "name": "artman", - "version": "0.24.1", - "dockerImage": "googleapis/artman@sha256:6018498e15310260dc9b03c9d576608908ed9fbabe42e1494ff3d827fea27b19" + "version": "0.26.0", + "dockerImage": "googleapis/artman@sha256:6db0735b0d3beec5b887153a2a7c7411fc7bb53f73f6f389a822096bd14a3a15" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "f117dac435e96ebe58d85280a3faf2350c4d4219", - "internalRef": "252714985" + "sha": "384aa843867c4d17756d14a01f047b6368494d32", + "internalRef": "253675319" } }, { From fd5750dc3f7286a56e13827aec87058c3cffd85d Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 20 Jun 2019 07:49:21 -0700 Subject: [PATCH 399/820] chore: release 4.1.2 (#438) * updated CHANGELOG.md * updated package.json * updated samples/package.json --- handwritten/nodejs-datastore/CHANGELOG.md | 10 ++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 1aa837fe1a4..f3a82c5d587 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,16 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.1.2](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.1...v4.1.2) (2019-06-20) + + +### Bug Fixes + +* **docs:** fix tag rendering in Key doc ([#439](https://www.github.com/googleapis/nodejs-datastore/issues/439)) ([2edd95c](https://www.github.com/googleapis/nodejs-datastore/commit/2edd95c)) +* **docs:** move to new client docs URL ([#437](https://www.github.com/googleapis/nodejs-datastore/issues/437)) ([278c1c5](https://www.github.com/googleapis/nodejs-datastore/commit/278c1c5)) +* add `parseInt` to constructor of task keys ([#436](https://www.github.com/googleapis/nodejs-datastore/issues/436)) ([7ee76b3](https://www.github.com/googleapis/nodejs-datastore/commit/7ee76b3)) +* assign more restrictive type to PathType ([#433](https://www.github.com/googleapis/nodejs-datastore/issues/433)) ([#435](https://www.github.com/googleapis/nodejs-datastore/issues/435)) ([a93ef91](https://www.github.com/googleapis/nodejs-datastore/commit/a93ef91)) + ### [4.1.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.0...v4.1.1) (2019-06-11) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0cbef0f3fa3..42e06b20c63 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.1.1", + "version": "4.1.2", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index b39e702435d..b16931646ef 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.1.1", + "@google-cloud/datastore": "^4.1.2", "sinon": "^7.3.2" }, "devDependencies": { From 5f67527b4d4eed6d1d674fdb345756b01e010e64 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Thu, 20 Jun 2019 08:00:16 -0700 Subject: [PATCH 400/820] chore(deps): update dependency eslint-config-prettier to v5 (#442) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 42e06b20c63..d8f95cd07bb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -73,7 +73,7 @@ "assert-rejects": "^1.0.0", "codecov": "^3.5.0", "eslint": "^5.16.0", - "eslint-config-prettier": "^4.2.0", + "eslint-config-prettier": "^5.0.0", "eslint-plugin-node": "^9.0.1", "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", From e714573c86df299a1228d95145a4f7d0007ea190 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 25 Jun 2019 16:42:26 -0700 Subject: [PATCH 401/820] fix(docs): link to reference docs section on googleapis.dev (#444) * fix(docs): reference docs should link to section of googleapis.dev with API reference * fix(docs): make anchors work in jsdoc --- handwritten/nodejs-datastore/.jsdoc.js | 3 +++ handwritten/nodejs-datastore/README.md | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 9c8ec970d8b..eb527b3ae9d 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -41,5 +41,8 @@ module.exports = { sourceFiles: false, systemName: '@google-cloud/datastore', theme: 'lumen' + }, + markdown: { + idInHeadings: true } }; diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 8e3e5679781..c0f756189ce 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -137,10 +137,12 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://googleapis.dev/nodejs/datastore/latest +[client-docs]: https://googleapis.dev/nodejs/datastore/latest#reference [product-docs]: https://cloud.google.com/datastore [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project [billing]: https://support.google.com/cloud/answer/6293499#enable-billing [enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com -[auth]: https://cloud.google.com/docs/authentication/getting-started \ No newline at end of file +[auth]: https://cloud.google.com/docs/authentication/getting-started + + From f8c1416d8766571600172d49317e3dce86abc56f Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Wed, 26 Jun 2019 16:05:51 -0400 Subject: [PATCH 402/820] fix(typescript): query pojection -> projection (#445) --- handwritten/nodejs-datastore/src/v1/datastore_client.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts index 4dbba3912d6..a2ae3185079 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts @@ -268,7 +268,7 @@ declare namespace DatastoreClient { } interface Query { - pojection: Projection[]; + projection: Projection[]; kind: KindExpression[]; filter?: Filter; order: PropertyOrder[]; From 3952f57e74e4346516195030f7ea64a649f76be6 Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Wed, 26 Jun 2019 18:33:51 -0400 Subject: [PATCH 403/820] fix(typescript): grpc->@grpc-js (#446) --- handwritten/nodejs-datastore/src/v1/datastore_client.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts index a2ae3185079..a1347e368b9 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts @@ -15,7 +15,7 @@ */ import {CallOptions, GrpcClientOptions} from 'google-gax'; -import {ServiceError} from 'grpc'; +import {ServiceError} from '@grpc/grpc-js'; import {common as protobuf} from 'protobufjs'; declare class DatastoreClient { From e3184d65a3f937bea1bda7208907cf1650b6347e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 27 Jun 2019 06:51:29 -0700 Subject: [PATCH 404/820] chore: release 4.1.3 (#447) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 9 +++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index f3a82c5d587..4c4d91480b5 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,15 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.1.3](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.2...v4.1.3) (2019-06-27) + + +### Bug Fixes + +* **docs:** link to reference docs section on googleapis.dev ([#444](https://www.github.com/googleapis/nodejs-datastore/issues/444)) ([0fd5492](https://www.github.com/googleapis/nodejs-datastore/commit/0fd5492)) +* **typescript:** grpc->[@grpc-js](https://www.github.com/grpc-js) ([#446](https://www.github.com/googleapis/nodejs-datastore/issues/446)) ([d8a8c81](https://www.github.com/googleapis/nodejs-datastore/commit/d8a8c81)) +* **typescript:** query pojection -> projection ([#445](https://www.github.com/googleapis/nodejs-datastore/issues/445)) ([32b6311](https://www.github.com/googleapis/nodejs-datastore/commit/32b6311)) + ### [4.1.2](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.1...v4.1.2) (2019-06-20) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d8f95cd07bb..9bbc2cef908 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.1.2", + "version": "4.1.3", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index b16931646ef..8ef9093c982 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.1.2", + "@google-cloud/datastore": "^4.1.3", "sinon": "^7.3.2" }, "devDependencies": { From 7fd85a696a18a325d20e7e945fc0d57d5d22a107 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 28 Jun 2019 10:05:48 -0700 Subject: [PATCH 405/820] build: use config file for linkinator (#450) --- handwritten/nodejs-datastore/linkinator.config.json | 7 +++++++ handwritten/nodejs-datastore/package.json | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/linkinator.config.json diff --git a/handwritten/nodejs-datastore/linkinator.config.json b/handwritten/nodejs-datastore/linkinator.config.json new file mode 100644 index 00000000000..d780d6bfff5 --- /dev/null +++ b/handwritten/nodejs-datastore/linkinator.config.json @@ -0,0 +1,7 @@ +{ + "recurse": true, + "skip": [ + "https://codecov.io/gh/googleapis/", + "www.googleapis.com" + ] +} diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9bbc2cef908..d3d94e66447 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -41,7 +41,7 @@ "pretest": "npm run compile", "proto": "npm run proto:datastore", "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", - "docs-test": "linkinator docs -r --skip https://github.com/googleapis/nodejs-datastore/blob/master/samples/.+", + "docs-test": "linkinator docs", "predocs-test": "npm run docs" }, "dependencies": { @@ -81,7 +81,7 @@ "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", "jsdoc-baseline": "^0.1.0", - "linkinator": "^1.4.2", + "linkinator": "^1.5.0", "mocha": "^6.1.4", "mv": "^2.1.1", "ncp": "^2.0.0", From 9d79e4c7be58794df78a15ccc0e978a72b3bf8e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2019 08:57:26 -0700 Subject: [PATCH 406/820] chore(deps): update linters (#449) --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d3d94e66447..c028184db53 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -72,8 +72,8 @@ "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", "codecov": "^3.5.0", - "eslint": "^5.16.0", - "eslint-config-prettier": "^5.0.0", + "eslint": "^6.0.0", + "eslint-config-prettier": "^6.0.0", "eslint-plugin-node": "^9.0.1", "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", From 459c5697d4ad6d4b00e0ce443a069cefdec04a91 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 19 Jul 2019 16:09:35 -0700 Subject: [PATCH 407/820] fix(deps): drop dependency on through2 (#457) --- handwritten/nodejs-datastore/package.json | 4 +--- handwritten/nodejs-datastore/samples/.eslintrc.yml | 1 + handwritten/nodejs-datastore/src/request.ts | 5 ++--- handwritten/nodejs-datastore/test/request.ts | 14 ++++++-------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c028184db53..100a5ed4c2c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -57,8 +57,7 @@ "google-gax": "^1.0.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", - "stream-events": "^1.0.5", - "through2": "^3.0.1" + "stream-events": "^1.0.5" }, "devDependencies": { "@types/extend": "^3.0.1", @@ -68,7 +67,6 @@ "@types/ncp": "^2.0.1", "@types/proxyquire": "^1.3.28", "@types/sinon": "^7.0.11", - "@types/through2": "^2.0.34", "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", "codecov": "^3.5.0", diff --git a/handwritten/nodejs-datastore/samples/.eslintrc.yml b/handwritten/nodejs-datastore/samples/.eslintrc.yml index 282535f55f6..aee43ae4b0a 100644 --- a/handwritten/nodejs-datastore/samples/.eslintrc.yml +++ b/handwritten/nodejs-datastore/samples/.eslintrc.yml @@ -1,3 +1,4 @@ --- rules: no-console: off + require-atomic-updates: off diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index a6c7533a1ca..7bec273973f 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -22,7 +22,6 @@ const concat = require('concat-stream'); import * as extend from 'extend'; import {split} from 'split-array-stream'; import * as streamEvents from 'stream-events'; -import * as through from 'through2'; import {google} from '../proto/datastore'; import {CallOptions} from 'google-gax'; import {Transform} from 'stream'; @@ -302,7 +301,7 @@ class DatastoreRequest { ); }; - const stream = streamEvents(through.obj()); + const stream = streamEvents(new Transform({objectMode: true})); stream.once('reading', () => { makeRequest(keys); }); @@ -778,7 +777,7 @@ class DatastoreRequest { }); } - const stream = streamEvents(through.obj()); + const stream = streamEvents(new Transform({objectMode: true})); stream.once('reading', () => { makeRequest(query); }); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 246c409214c..a6a1d0db365 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -18,11 +18,10 @@ import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import * as extend from 'extend'; -import {CallOptions} from '@grpc/grpc-js'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; -import * as through from 'through2'; +import {Transform} from 'stream'; import {google} from '../proto/datastore'; import * as ds from '../src'; @@ -367,12 +366,11 @@ describe('Request', () => { it('should end stream', done => { const stream = request.createReadStream(key); - stream .on('data', () => {}) .on('error', () => { setImmediate(() => { - assert.strictEqual((stream as Any)._destroyed, true); + assert.strictEqual(stream.destroyed, true); done(); }); }); @@ -604,7 +602,7 @@ describe('Request', () => { beforeEach(() => { request.createReadStream = sandbox.spy(() => { - const stream = through.obj(); + const stream = new Transform({objectMode: true}); setImmediate(() => { fakeEntities.forEach(entity => stream.push(entity)); stream.push(null); @@ -656,7 +654,7 @@ describe('Request', () => { beforeEach(() => { request.createReadStream = sandbox.spy(() => { - const stream = through.obj(); + const stream = new Transform({objectMode: true}); setImmediate(() => { stream.emit('error', error); }); @@ -1081,7 +1079,7 @@ describe('Request', () => { beforeEach(() => { request.runQueryStream = sandbox.spy(() => { - const stream = through.obj(); + const stream = new Transform({objectMode: true}); setImmediate(() => { stream.emit('info', fakeInfo); @@ -1139,7 +1137,7 @@ describe('Request', () => { beforeEach(() => { request.runQueryStream = sandbox.spy(() => { - const stream = through.obj(); + const stream = new Transform({objectMode: true}); setImmediate(() => { stream.emit('error', error); From 8539a87584dde30fc8ff5a1041c944d2558465e6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 23 Jul 2019 08:08:16 -0700 Subject: [PATCH 408/820] chore: release 4.1.4 (#458) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 4c4d91480b5..cdabbfd992f 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.1.4](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.3...v4.1.4) (2019-07-23) + + +### Bug Fixes + +* **deps:** drop dependency on through2 ([#457](https://www.github.com/googleapis/nodejs-datastore/issues/457)) ([e57ed63](https://www.github.com/googleapis/nodejs-datastore/commit/e57ed63)) + ### [4.1.3](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.2...v4.1.3) (2019-06-27) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 100a5ed4c2c..cb08e32e2b0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.1.3", + "version": "4.1.4", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8ef9093c982..d2b363ddeef 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.1.3", + "@google-cloud/datastore": "^4.1.4", "sinon": "^7.3.2" }, "devDependencies": { From 956d159407d3db6fdac0210fd11976df842a1115 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 26 Jul 2019 18:17:32 +0300 Subject: [PATCH 409/820] fix(deps): update dependency google-auth-library to v5 (#462) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index cb08e32e2b0..72588280f53 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-auth-library": "^4.0.0", + "google-auth-library": "^5.0.0", "google-gax": "^1.0.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", From 43c93b69a745581f96cdeed26cb81feeacdee12a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 26 Jul 2019 19:18:55 +0300 Subject: [PATCH 410/820] fix(deps): update dependency @grpc/grpc-js to ^0.5.0 (#461) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 72588280f53..41a6c9b6e7e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,7 +47,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "^0.4.0", + "@grpc/grpc-js": "^0.5.0", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 06064da780e9c7e4a7de05f2808e4fac6fe2bf64 Mon Sep 17 00:00:00 2001 From: praveenqlogic01 <50827134+praveenqlogic01@users.noreply.github.com> Date: Fri, 26 Jul 2019 22:51:35 +0530 Subject: [PATCH 411/820] feat: excludeFromIndex allow for '*' wildcard to catch all properties on object (#451) --- handwritten/nodejs-datastore/src/entity.ts | 49 +++++- .../nodejs-datastore/system-test/datastore.ts | 63 +++++++ handwritten/nodejs-datastore/test/request.ts | 158 +++++++++++++++++- 3 files changed, 265 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 6cc0d3b18a8..8df1c12f892 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -552,9 +552,11 @@ export namespace entity { function excludePathFromEntity(entity: EntityProto, path: string) { const arrayIndex = path.indexOf('[]'); const entityIndex = path.indexOf('.'); + const wildcardIndex = path.indexOf('.*'); const hasArrayPath = arrayIndex > -1; const hasEntityPath = entityIndex > -1; + const hasWildCard = wildcardIndex > -1; if (!hasArrayPath && !hasEntityPath) { // This is the path end node. Traversal ends here in either case. @@ -589,7 +591,10 @@ export namespace entity { const firstPathPart = splitPath.shift()!; const remainderPath = splitPath.join(delimiter).replace(/^(\.|\[\])/, ''); - if (!(entity.properties && entity.properties[firstPathPart])) { + if ( + !(entity.properties && entity.properties[firstPathPart]) && + !hasWildCard + ) { // Either a primitive or an entity for which this path doesn't apply. return; } @@ -597,7 +602,9 @@ export namespace entity { if ( firstPathPartIsArray && // check also if the property in question is actually an array value. - entity.properties[firstPathPart].arrayValue + entity.properties[firstPathPart].arrayValue && + // check if wildcard is not applied + !hasWildCard ) { const array = entity.properties[firstPathPart].arrayValue; // tslint:disable-next-line no-any @@ -619,9 +626,43 @@ export namespace entity { ); } }); + } else if (firstPathPartIsArray && hasWildCard && remainderPath === '*') { + const array = entity.properties[firstPathPart].arrayValue; + // tslint:disable-next-line no-any + array.values.forEach((value: any) => { + if (value.entityValue) { + excludePathFromEntity(value.entityValue, '.*'); + } else { + excludePathFromEntity(value, ''); + } + }); } else if (firstPathPartIsEntity) { - const parentEntity = entity.properties[firstPathPart].entityValue; - excludePathFromEntity(parentEntity, remainderPath); + if (firstPathPart === '') { + Object.keys(entity.properties).forEach(path => { + const newPath = entity.properties[path].arrayValue + ? path + '[].*' + : path + '.*'; + excludePathFromEntity(entity, newPath); + }); + } else { + if (hasWildCard && remainderPath === '*') { + const parentEntity = entity.properties[firstPathPart].entityValue; + + if (parentEntity) { + Object.keys(parentEntity.properties).forEach(path => { + const newPath = parentEntity.properties[path].arrayValue + ? path + '[].*' + : path + '.*'; + excludePathFromEntity(parentEntity, newPath); + }); + } else { + excludePathFromEntity(entity, firstPathPart); + } + } else { + const parentEntity = entity.properties[firstPathPart].entityValue; + excludePathFromEntity(parentEntity, remainderPath); + } + } } } } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 3feb0390c3e..8fa7a66bea0 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -129,6 +129,69 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should remove index with using wildcard in excludeFromIndexes', async () => { + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post3']); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const excludeFromIndexes = [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.*', + 'metadata.longStringArray[].*', + ]; + + await datastore.save({ + key: postKey, + data, + excludeFromIndexes, + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(postKey); + }); + it('should save/get/delete with a key name', async () => { const postKey = datastore.key(['Post', 'post1']); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index a6a1d0db365..ccbfa674078 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -25,7 +25,7 @@ import {Transform} from 'stream'; import {google} from '../proto/datastore'; import * as ds from '../src'; -import {entity, Entity, KeyProto} from '../src/entity.js'; +import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; import {Query, QueryProto} from '../src/query.js'; import { AllocateIdsRequestResponse, @@ -1390,6 +1390,162 @@ describe('Request', () => { ); }); + it('should allow exclude property indexed with "*" wildcard from root', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + request.request_ = (config: RequestConfig) => { + const properties = config.reqOpts.mutations[0].upsert.properties; + Object.keys(properties).forEach(path => { + validateIndex(properties[path]); + }); + done(); + }; + + request.save( + { + key, + data, + excludeFromIndexes: ['.*'], + }, + assert.ifError + ); + }); + + it('should allow exclude property indexed with "*" wildcard for object and array', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + request.request_ = (config: RequestConfig) => { + const properties = config.reqOpts.mutations[0].upsert.properties; + Object.keys(properties).forEach(path => { + validateIndex(properties[path]); + }); + done(); + }; + + request.save( + { + key, + data, + excludeFromIndexes: [ + 'longString', + 'notMetadata', + 'longStringArray[]', + 'metadata.longString', + 'metadata.otherProperty', + 'metadata.obj.*', + 'metadata.longStringArray[].*', + ], + }, + assert.ifError + ); + }); + it('should assign ID on keys without them', done => { const incompleteKey = new entity.Key({path: ['Incomplete']}); const incompleteKey2 = new entity.Key({path: ['Incomplete']}); From 5e5cecc8ab18f9efcf719c056413fc9f5e8d459f Mon Sep 17 00:00:00 2001 From: Cameron Knight Date: Mon, 29 Jul 2019 17:53:07 -0700 Subject: [PATCH 412/820] fix(types): correct type of Datastore.KEY (#459) `entity.KEY_SYMBOL` is defined as a `unique symbol` and without explicit reference back to the original type, the `unique symbol` flows into a regular `symbol`, which loses some of its semantic meaning. This guarantees that `Datastore.KEY` and `entity.KEY_SYMBOL` (and `new Datastore().KEY`) are truly equivalent within the type system. --- handwritten/nodejs-datastore/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f142933cae7..c71b3563dbf 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -576,8 +576,8 @@ class Datastore extends DatastoreRequest { * @name Datastore#KEY * @type {symbol} */ - static KEY = entity.KEY_SYMBOL; - KEY = Datastore.KEY; + static KEY: typeof entity.KEY_SYMBOL = entity.KEY_SYMBOL; + KEY: typeof entity.KEY_SYMBOL = Datastore.KEY; /** * This is one of three values which may be returned from From 53d0e85244095a8d34dd0d14ba9309451476fd86 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 31 Jul 2019 08:33:03 -0700 Subject: [PATCH 413/820] docs: use the jsdoc-fresh theme (#467) --- handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index eb527b3ae9d..b41aff5d4ef 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -20,7 +20,7 @@ module.exports = { opts: { readme: './README.md', package: './package.json', - template: './node_modules/jsdoc-baseline', + template: './node_modules/jsdoc-fresh', recurse: true, verbose: true, destination: './docs/' diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 41a6c9b6e7e..5c0ca1b5c1c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -78,7 +78,7 @@ "gts": "^1.0.0", "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", - "jsdoc-baseline": "^0.1.0", + "jsdoc-fresh": "^1.0.1", "linkinator": "^1.5.0", "mocha": "^6.1.4", "mv": "^2.1.1", From b77f23f2f7265b4fdd1e9d1ddf2c596a3ee2756c Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 31 Jul 2019 16:07:06 -0700 Subject: [PATCH 414/820] docs: document apiEndpoint over servicePath (#468) --- handwritten/nodejs-datastore/src/v1/datastore_client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 57db1f9d112..d9495d77516 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -56,7 +56,7 @@ class DatastoreClient { * your project ID will be detected automatically. * @param {function} [options.promise] - Custom promise module to use instead * of native Promises. - * @param {string} [options.servicePath] - The domain name of the + * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. */ constructor(opts) { From 2d4ea24f3ae3ff4ade439ee2d0a081c612b5f007 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 2 Aug 2019 10:52:54 -0700 Subject: [PATCH 415/820] fix: allow calls with no request, add JSON proto --- .../nodejs-datastore/protos/protos.json | 1988 +++++++++++++++++ .../src/service_proto_list.json | 1 + .../src/v1/datastore_client.js | 7 + handwritten/nodejs-datastore/synth.metadata | 10 +- 4 files changed, 2001 insertions(+), 5 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/protos.json create mode 100644 handwritten/nodejs-datastore/src/service_proto_list.json diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json new file mode 100644 index 00000000000..ea8371e1a65 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -0,0 +1,1988 @@ +{ + "nested": { + "google": { + "nested": { + "datastore": { + "nested": { + "v1": { + "options": { + "csharp_namespace": "Google.Cloud.Datastore.V1", + "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", + "java_multiple_files": true, + "java_outer_classname": "QueryProto", + "java_package": "com.google.datastore.v1", + "php_namespace": "Google\\Cloud\\Datastore\\V1" + }, + "nested": { + "PartitionId": { + "fields": { + "projectId": { + "type": "string", + "id": 2 + }, + "namespaceId": { + "type": "string", + "id": 4 + } + } + }, + "Key": { + "fields": { + "partitionId": { + "type": "PartitionId", + "id": 1 + }, + "path": { + "rule": "repeated", + "type": "PathElement", + "id": 2 + } + }, + "nested": { + "PathElement": { + "oneofs": { + "idType": { + "oneof": [ + "id", + "name" + ] + } + }, + "fields": { + "kind": { + "type": "string", + "id": 1 + }, + "id": { + "type": "int64", + "id": 2 + }, + "name": { + "type": "string", + "id": 3 + } + } + } + } + }, + "ArrayValue": { + "fields": { + "values": { + "rule": "repeated", + "type": "Value", + "id": 1 + } + } + }, + "Value": { + "oneofs": { + "valueType": { + "oneof": [ + "nullValue", + "booleanValue", + "integerValue", + "doubleValue", + "timestampValue", + "keyValue", + "stringValue", + "blobValue", + "geoPointValue", + "entityValue", + "arrayValue" + ] + } + }, + "fields": { + "nullValue": { + "type": "google.protobuf.NullValue", + "id": 11 + }, + "booleanValue": { + "type": "bool", + "id": 1 + }, + "integerValue": { + "type": "int64", + "id": 2 + }, + "doubleValue": { + "type": "double", + "id": 3 + }, + "timestampValue": { + "type": "google.protobuf.Timestamp", + "id": 10 + }, + "keyValue": { + "type": "Key", + "id": 5 + }, + "stringValue": { + "type": "string", + "id": 17 + }, + "blobValue": { + "type": "bytes", + "id": 18 + }, + "geoPointValue": { + "type": "google.type.LatLng", + "id": 8 + }, + "entityValue": { + "type": "Entity", + "id": 6 + }, + "arrayValue": { + "type": "ArrayValue", + "id": 9 + }, + "meaning": { + "type": "int32", + "id": 14 + }, + "excludeFromIndexes": { + "type": "bool", + "id": 19 + } + } + }, + "Entity": { + "fields": { + "key": { + "type": "Key", + "id": 1 + }, + "properties": { + "keyType": "string", + "type": "Value", + "id": 3 + } + } + }, + "Datastore": { + "methods": { + "Lookup": { + "requestType": "LookupRequest", + "responseType": "LookupResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:lookup", + "(google.api.http).body": "*" + } + }, + "RunQuery": { + "requestType": "RunQueryRequest", + "responseType": "RunQueryResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:runQuery", + "(google.api.http).body": "*" + } + }, + "BeginTransaction": { + "requestType": "BeginTransactionRequest", + "responseType": "BeginTransactionResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:beginTransaction", + "(google.api.http).body": "*" + } + }, + "Commit": { + "requestType": "CommitRequest", + "responseType": "CommitResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:commit", + "(google.api.http).body": "*" + } + }, + "Rollback": { + "requestType": "RollbackRequest", + "responseType": "RollbackResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:rollback", + "(google.api.http).body": "*" + } + }, + "AllocateIds": { + "requestType": "AllocateIdsRequest", + "responseType": "AllocateIdsResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:allocateIds", + "(google.api.http).body": "*" + } + }, + "ReserveIds": { + "requestType": "ReserveIdsRequest", + "responseType": "ReserveIdsResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", + "(google.api.http).body": "*" + } + } + } + }, + "LookupRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "readOptions": { + "type": "ReadOptions", + "id": 1 + }, + "keys": { + "rule": "repeated", + "type": "Key", + "id": 3 + } + } + }, + "LookupResponse": { + "fields": { + "found": { + "rule": "repeated", + "type": "EntityResult", + "id": 1 + }, + "missing": { + "rule": "repeated", + "type": "EntityResult", + "id": 2 + }, + "deferred": { + "rule": "repeated", + "type": "Key", + "id": 3 + } + } + }, + "RunQueryRequest": { + "oneofs": { + "queryType": { + "oneof": [ + "query", + "gqlQuery" + ] + } + }, + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "partitionId": { + "type": "PartitionId", + "id": 2 + }, + "readOptions": { + "type": "ReadOptions", + "id": 1 + }, + "query": { + "type": "Query", + "id": 3 + }, + "gqlQuery": { + "type": "GqlQuery", + "id": 7 + } + } + }, + "RunQueryResponse": { + "fields": { + "batch": { + "type": "QueryResultBatch", + "id": 1 + }, + "query": { + "type": "Query", + "id": 2 + } + } + }, + "BeginTransactionRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "transactionOptions": { + "type": "TransactionOptions", + "id": 10 + } + } + }, + "BeginTransactionResponse": { + "fields": { + "transaction": { + "type": "bytes", + "id": 1 + } + } + }, + "RollbackRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "transaction": { + "type": "bytes", + "id": 1 + } + } + }, + "RollbackResponse": { + "fields": {} + }, + "CommitRequest": { + "oneofs": { + "transactionSelector": { + "oneof": [ + "transaction" + ] + } + }, + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "mode": { + "type": "Mode", + "id": 5 + }, + "transaction": { + "type": "bytes", + "id": 1 + }, + "mutations": { + "rule": "repeated", + "type": "Mutation", + "id": 6 + } + }, + "nested": { + "Mode": { + "values": { + "MODE_UNSPECIFIED": 0, + "TRANSACTIONAL": 1, + "NON_TRANSACTIONAL": 2 + } + } + } + }, + "CommitResponse": { + "fields": { + "mutationResults": { + "rule": "repeated", + "type": "MutationResult", + "id": 3 + }, + "indexUpdates": { + "type": "int32", + "id": 4 + } + } + }, + "AllocateIdsRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "keys": { + "rule": "repeated", + "type": "Key", + "id": 1 + } + } + }, + "AllocateIdsResponse": { + "fields": { + "keys": { + "rule": "repeated", + "type": "Key", + "id": 1 + } + } + }, + "ReserveIdsRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8 + }, + "databaseId": { + "type": "string", + "id": 9 + }, + "keys": { + "rule": "repeated", + "type": "Key", + "id": 1 + } + } + }, + "ReserveIdsResponse": { + "fields": {} + }, + "Mutation": { + "oneofs": { + "operation": { + "oneof": [ + "insert", + "update", + "upsert", + "delete" + ] + }, + "conflictDetectionStrategy": { + "oneof": [ + "baseVersion" + ] + } + }, + "fields": { + "insert": { + "type": "Entity", + "id": 4 + }, + "update": { + "type": "Entity", + "id": 5 + }, + "upsert": { + "type": "Entity", + "id": 6 + }, + "delete": { + "type": "Key", + "id": 7 + }, + "baseVersion": { + "type": "int64", + "id": 8 + } + } + }, + "MutationResult": { + "fields": { + "key": { + "type": "Key", + "id": 3 + }, + "version": { + "type": "int64", + "id": 4 + }, + "conflictDetected": { + "type": "bool", + "id": 5 + } + } + }, + "ReadOptions": { + "oneofs": { + "consistencyType": { + "oneof": [ + "readConsistency", + "transaction" + ] + } + }, + "fields": { + "readConsistency": { + "type": "ReadConsistency", + "id": 1 + }, + "transaction": { + "type": "bytes", + "id": 2 + } + }, + "nested": { + "ReadConsistency": { + "values": { + "READ_CONSISTENCY_UNSPECIFIED": 0, + "STRONG": 1, + "EVENTUAL": 2 + } + } + } + }, + "TransactionOptions": { + "oneofs": { + "mode": { + "oneof": [ + "readWrite", + "readOnly" + ] + } + }, + "fields": { + "readWrite": { + "type": "ReadWrite", + "id": 1 + }, + "readOnly": { + "type": "ReadOnly", + "id": 2 + } + }, + "nested": { + "ReadWrite": { + "fields": { + "previousTransaction": { + "type": "bytes", + "id": 1 + } + } + }, + "ReadOnly": { + "fields": {} + } + } + }, + "EntityResult": { + "fields": { + "entity": { + "type": "Entity", + "id": 1 + }, + "version": { + "type": "int64", + "id": 4 + }, + "cursor": { + "type": "bytes", + "id": 3 + } + }, + "nested": { + "ResultType": { + "values": { + "RESULT_TYPE_UNSPECIFIED": 0, + "FULL": 1, + "PROJECTION": 2, + "KEY_ONLY": 3 + } + } + } + }, + "Query": { + "fields": { + "projection": { + "rule": "repeated", + "type": "Projection", + "id": 2 + }, + "kind": { + "rule": "repeated", + "type": "KindExpression", + "id": 3 + }, + "filter": { + "type": "Filter", + "id": 4 + }, + "order": { + "rule": "repeated", + "type": "PropertyOrder", + "id": 5 + }, + "distinctOn": { + "rule": "repeated", + "type": "PropertyReference", + "id": 6 + }, + "startCursor": { + "type": "bytes", + "id": 7 + }, + "endCursor": { + "type": "bytes", + "id": 8 + }, + "offset": { + "type": "int32", + "id": 10 + }, + "limit": { + "type": "google.protobuf.Int32Value", + "id": 12 + } + } + }, + "KindExpression": { + "fields": { + "name": { + "type": "string", + "id": 1 + } + } + }, + "PropertyReference": { + "fields": { + "name": { + "type": "string", + "id": 2 + } + } + }, + "Projection": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + } + } + }, + "PropertyOrder": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + }, + "direction": { + "type": "Direction", + "id": 2 + } + }, + "nested": { + "Direction": { + "values": { + "DIRECTION_UNSPECIFIED": 0, + "ASCENDING": 1, + "DESCENDING": 2 + } + } + } + }, + "Filter": { + "oneofs": { + "filterType": { + "oneof": [ + "compositeFilter", + "propertyFilter" + ] + } + }, + "fields": { + "compositeFilter": { + "type": "CompositeFilter", + "id": 1 + }, + "propertyFilter": { + "type": "PropertyFilter", + "id": 2 + } + } + }, + "CompositeFilter": { + "fields": { + "op": { + "type": "Operator", + "id": 1 + }, + "filters": { + "rule": "repeated", + "type": "Filter", + "id": 2 + } + }, + "nested": { + "Operator": { + "values": { + "OPERATOR_UNSPECIFIED": 0, + "AND": 1 + } + } + } + }, + "PropertyFilter": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + }, + "op": { + "type": "Operator", + "id": 2 + }, + "value": { + "type": "Value", + "id": 3 + } + }, + "nested": { + "Operator": { + "values": { + "OPERATOR_UNSPECIFIED": 0, + "LESS_THAN": 1, + "LESS_THAN_OR_EQUAL": 2, + "GREATER_THAN": 3, + "GREATER_THAN_OR_EQUAL": 4, + "EQUAL": 5, + "HAS_ANCESTOR": 11 + } + } + } + }, + "GqlQuery": { + "fields": { + "queryString": { + "type": "string", + "id": 1 + }, + "allowLiterals": { + "type": "bool", + "id": 2 + }, + "namedBindings": { + "keyType": "string", + "type": "GqlQueryParameter", + "id": 5 + }, + "positionalBindings": { + "rule": "repeated", + "type": "GqlQueryParameter", + "id": 4 + } + } + }, + "GqlQueryParameter": { + "oneofs": { + "parameterType": { + "oneof": [ + "value", + "cursor" + ] + } + }, + "fields": { + "value": { + "type": "Value", + "id": 2 + }, + "cursor": { + "type": "bytes", + "id": 3 + } + } + }, + "QueryResultBatch": { + "fields": { + "skippedResults": { + "type": "int32", + "id": 6 + }, + "skippedCursor": { + "type": "bytes", + "id": 3 + }, + "entityResultType": { + "type": "EntityResult.ResultType", + "id": 1 + }, + "entityResults": { + "rule": "repeated", + "type": "EntityResult", + "id": 2 + }, + "endCursor": { + "type": "bytes", + "id": 4 + }, + "moreResults": { + "type": "MoreResultsType", + "id": 5 + }, + "snapshotVersion": { + "type": "int64", + "id": 7 + } + }, + "nested": { + "MoreResultsType": { + "values": { + "MORE_RESULTS_TYPE_UNSPECIFIED": 0, + "NOT_FINISHED": 1, + "MORE_RESULTS_AFTER_LIMIT": 2, + "MORE_RESULTS_AFTER_CURSOR": 4, + "NO_MORE_RESULTS": 3 + } + } + } + } + } + } + } + }, + "api": { + "options": { + "go_package": "google.golang.org/genproto/googleapis/api/annotations;annotations", + "java_multiple_files": true, + "java_outer_classname": "HttpProto", + "java_package": "com.google.api", + "objc_class_prefix": "GAPI", + "cc_enable_arenas": true + }, + "nested": { + "http": { + "type": "HttpRule", + "id": 72295728, + "extend": "google.protobuf.MethodOptions" + }, + "Http": { + "fields": { + "rules": { + "rule": "repeated", + "type": "HttpRule", + "id": 1 + }, + "fullyDecodeReservedExpansion": { + "type": "bool", + "id": 2 + } + } + }, + "HttpRule": { + "oneofs": { + "pattern": { + "oneof": [ + "get", + "put", + "post", + "delete", + "patch", + "custom" + ] + } + }, + "fields": { + "selector": { + "type": "string", + "id": 1 + }, + "get": { + "type": "string", + "id": 2 + }, + "put": { + "type": "string", + "id": 3 + }, + "post": { + "type": "string", + "id": 4 + }, + "delete": { + "type": "string", + "id": 5 + }, + "patch": { + "type": "string", + "id": 6 + }, + "custom": { + "type": "CustomHttpPattern", + "id": 8 + }, + "body": { + "type": "string", + "id": 7 + }, + "responseBody": { + "type": "string", + "id": 12 + }, + "additionalBindings": { + "rule": "repeated", + "type": "HttpRule", + "id": 11 + } + } + }, + "CustomHttpPattern": { + "fields": { + "kind": { + "type": "string", + "id": 1 + }, + "path": { + "type": "string", + "id": 2 + } + } + } + } + }, + "protobuf": { + "options": { + "go_package": "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor", + "java_package": "com.google.protobuf", + "java_outer_classname": "DescriptorProtos", + "csharp_namespace": "Google.Protobuf.Reflection", + "objc_class_prefix": "GPB", + "cc_enable_arenas": true, + "optimize_for": "SPEED" + }, + "nested": { + "FileDescriptorSet": { + "fields": { + "file": { + "rule": "repeated", + "type": "FileDescriptorProto", + "id": 1 + } + } + }, + "FileDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "package": { + "type": "string", + "id": 2 + }, + "dependency": { + "rule": "repeated", + "type": "string", + "id": 3 + }, + "publicDependency": { + "rule": "repeated", + "type": "int32", + "id": 10, + "options": { + "packed": false + } + }, + "weakDependency": { + "rule": "repeated", + "type": "int32", + "id": 11, + "options": { + "packed": false + } + }, + "messageType": { + "rule": "repeated", + "type": "DescriptorProto", + "id": 4 + }, + "enumType": { + "rule": "repeated", + "type": "EnumDescriptorProto", + "id": 5 + }, + "service": { + "rule": "repeated", + "type": "ServiceDescriptorProto", + "id": 6 + }, + "extension": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 7 + }, + "options": { + "type": "FileOptions", + "id": 8 + }, + "sourceCodeInfo": { + "type": "SourceCodeInfo", + "id": 9 + }, + "syntax": { + "type": "string", + "id": 12 + } + } + }, + "DescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "field": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 2 + }, + "extension": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 6 + }, + "nestedType": { + "rule": "repeated", + "type": "DescriptorProto", + "id": 3 + }, + "enumType": { + "rule": "repeated", + "type": "EnumDescriptorProto", + "id": 4 + }, + "extensionRange": { + "rule": "repeated", + "type": "ExtensionRange", + "id": 5 + }, + "oneofDecl": { + "rule": "repeated", + "type": "OneofDescriptorProto", + "id": 8 + }, + "options": { + "type": "MessageOptions", + "id": 7 + }, + "reservedRange": { + "rule": "repeated", + "type": "ReservedRange", + "id": 9 + }, + "reservedName": { + "rule": "repeated", + "type": "string", + "id": 10 + } + }, + "nested": { + "ExtensionRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + }, + "options": { + "type": "ExtensionRangeOptions", + "id": 3 + } + } + }, + "ReservedRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + } + } + } + } + }, + "ExtensionRangeOptions": { + "fields": { + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "FieldDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "number": { + "type": "int32", + "id": 3 + }, + "label": { + "type": "Label", + "id": 4 + }, + "type": { + "type": "Type", + "id": 5 + }, + "typeName": { + "type": "string", + "id": 6 + }, + "extendee": { + "type": "string", + "id": 2 + }, + "defaultValue": { + "type": "string", + "id": 7 + }, + "oneofIndex": { + "type": "int32", + "id": 9 + }, + "jsonName": { + "type": "string", + "id": 10 + }, + "options": { + "type": "FieldOptions", + "id": 8 + } + }, + "nested": { + "Type": { + "values": { + "TYPE_DOUBLE": 1, + "TYPE_FLOAT": 2, + "TYPE_INT64": 3, + "TYPE_UINT64": 4, + "TYPE_INT32": 5, + "TYPE_FIXED64": 6, + "TYPE_FIXED32": 7, + "TYPE_BOOL": 8, + "TYPE_STRING": 9, + "TYPE_GROUP": 10, + "TYPE_MESSAGE": 11, + "TYPE_BYTES": 12, + "TYPE_UINT32": 13, + "TYPE_ENUM": 14, + "TYPE_SFIXED32": 15, + "TYPE_SFIXED64": 16, + "TYPE_SINT32": 17, + "TYPE_SINT64": 18 + } + }, + "Label": { + "values": { + "LABEL_OPTIONAL": 1, + "LABEL_REQUIRED": 2, + "LABEL_REPEATED": 3 + } + } + } + }, + "OneofDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "options": { + "type": "OneofOptions", + "id": 2 + } + } + }, + "EnumDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "value": { + "rule": "repeated", + "type": "EnumValueDescriptorProto", + "id": 2 + }, + "options": { + "type": "EnumOptions", + "id": 3 + }, + "reservedRange": { + "rule": "repeated", + "type": "EnumReservedRange", + "id": 4 + }, + "reservedName": { + "rule": "repeated", + "type": "string", + "id": 5 + } + }, + "nested": { + "EnumReservedRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + } + } + } + } + }, + "EnumValueDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "number": { + "type": "int32", + "id": 2 + }, + "options": { + "type": "EnumValueOptions", + "id": 3 + } + } + }, + "ServiceDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "method": { + "rule": "repeated", + "type": "MethodDescriptorProto", + "id": 2 + }, + "options": { + "type": "ServiceOptions", + "id": 3 + } + } + }, + "MethodDescriptorProto": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "inputType": { + "type": "string", + "id": 2 + }, + "outputType": { + "type": "string", + "id": 3 + }, + "options": { + "type": "MethodOptions", + "id": 4 + }, + "clientStreaming": { + "type": "bool", + "id": 5, + "options": { + "default": false + } + }, + "serverStreaming": { + "type": "bool", + "id": 6, + "options": { + "default": false + } + } + } + }, + "FileOptions": { + "fields": { + "javaPackage": { + "type": "string", + "id": 1 + }, + "javaOuterClassname": { + "type": "string", + "id": 8 + }, + "javaMultipleFiles": { + "type": "bool", + "id": 10, + "options": { + "default": false + } + }, + "javaGenerateEqualsAndHash": { + "type": "bool", + "id": 20, + "options": { + "deprecated": true + } + }, + "javaStringCheckUtf8": { + "type": "bool", + "id": 27, + "options": { + "default": false + } + }, + "optimizeFor": { + "type": "OptimizeMode", + "id": 9, + "options": { + "default": "SPEED" + } + }, + "goPackage": { + "type": "string", + "id": 11 + }, + "ccGenericServices": { + "type": "bool", + "id": 16, + "options": { + "default": false + } + }, + "javaGenericServices": { + "type": "bool", + "id": 17, + "options": { + "default": false + } + }, + "pyGenericServices": { + "type": "bool", + "id": 18, + "options": { + "default": false + } + }, + "phpGenericServices": { + "type": "bool", + "id": 42, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 23, + "options": { + "default": false + } + }, + "ccEnableArenas": { + "type": "bool", + "id": 31, + "options": { + "default": false + } + }, + "objcClassPrefix": { + "type": "string", + "id": 36 + }, + "csharpNamespace": { + "type": "string", + "id": 37 + }, + "swiftPrefix": { + "type": "string", + "id": 39 + }, + "phpClassPrefix": { + "type": "string", + "id": 40 + }, + "phpNamespace": { + "type": "string", + "id": 41 + }, + "phpMetadataNamespace": { + "type": "string", + "id": 44 + }, + "rubyPackage": { + "type": "string", + "id": 45 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 38, + 38 + ] + ], + "nested": { + "OptimizeMode": { + "values": { + "SPEED": 1, + "CODE_SIZE": 2, + "LITE_RUNTIME": 3 + } + } + } + }, + "MessageOptions": { + "fields": { + "messageSetWireFormat": { + "type": "bool", + "id": 1, + "options": { + "default": false + } + }, + "noStandardDescriptorAccessor": { + "type": "bool", + "id": 2, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "mapEntry": { + "type": "bool", + "id": 7 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 8, + 8 + ], + [ + 9, + 9 + ] + ] + }, + "FieldOptions": { + "fields": { + "ctype": { + "type": "CType", + "id": 1, + "options": { + "default": "STRING" + } + }, + "packed": { + "type": "bool", + "id": 2 + }, + "jstype": { + "type": "JSType", + "id": 6, + "options": { + "default": "JS_NORMAL" + } + }, + "lazy": { + "type": "bool", + "id": 5, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "weak": { + "type": "bool", + "id": 10, + "options": { + "default": false + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 4, + 4 + ] + ], + "nested": { + "CType": { + "values": { + "STRING": 0, + "CORD": 1, + "STRING_PIECE": 2 + } + }, + "JSType": { + "values": { + "JS_NORMAL": 0, + "JS_STRING": 1, + "JS_NUMBER": 2 + } + } + } + }, + "OneofOptions": { + "fields": { + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "EnumOptions": { + "fields": { + "allowAlias": { + "type": "bool", + "id": 2 + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 5, + 5 + ] + ] + }, + "EnumValueOptions": { + "fields": { + "deprecated": { + "type": "bool", + "id": 1, + "options": { + "default": false + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "ServiceOptions": { + "fields": { + "deprecated": { + "type": "bool", + "id": 33, + "options": { + "default": false + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "MethodOptions": { + "fields": { + "deprecated": { + "type": "bool", + "id": 33, + "options": { + "default": false + } + }, + "idempotencyLevel": { + "type": "IdempotencyLevel", + "id": 34, + "options": { + "default": "IDEMPOTENCY_UNKNOWN" + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "nested": { + "IdempotencyLevel": { + "values": { + "IDEMPOTENCY_UNKNOWN": 0, + "NO_SIDE_EFFECTS": 1, + "IDEMPOTENT": 2 + } + } + } + }, + "UninterpretedOption": { + "fields": { + "name": { + "rule": "repeated", + "type": "NamePart", + "id": 2 + }, + "identifierValue": { + "type": "string", + "id": 3 + }, + "positiveIntValue": { + "type": "uint64", + "id": 4 + }, + "negativeIntValue": { + "type": "int64", + "id": 5 + }, + "doubleValue": { + "type": "double", + "id": 6 + }, + "stringValue": { + "type": "bytes", + "id": 7 + }, + "aggregateValue": { + "type": "string", + "id": 8 + } + }, + "nested": { + "NamePart": { + "fields": { + "namePart": { + "rule": "required", + "type": "string", + "id": 1 + }, + "isExtension": { + "rule": "required", + "type": "bool", + "id": 2 + } + } + } + } + }, + "SourceCodeInfo": { + "fields": { + "location": { + "rule": "repeated", + "type": "Location", + "id": 1 + } + }, + "nested": { + "Location": { + "fields": { + "path": { + "rule": "repeated", + "type": "int32", + "id": 1 + }, + "span": { + "rule": "repeated", + "type": "int32", + "id": 2 + }, + "leadingComments": { + "type": "string", + "id": 3 + }, + "trailingComments": { + "type": "string", + "id": 4 + }, + "leadingDetachedComments": { + "rule": "repeated", + "type": "string", + "id": 6 + } + } + } + } + }, + "GeneratedCodeInfo": { + "fields": { + "annotation": { + "rule": "repeated", + "type": "Annotation", + "id": 1 + } + }, + "nested": { + "Annotation": { + "fields": { + "path": { + "rule": "repeated", + "type": "int32", + "id": 1 + }, + "sourceFile": { + "type": "string", + "id": 2 + }, + "begin": { + "type": "int32", + "id": 3 + }, + "end": { + "type": "int32", + "id": 4 + } + } + } + } + }, + "Struct": { + "fields": { + "fields": { + "keyType": "string", + "type": "Value", + "id": 1 + } + } + }, + "Value": { + "oneofs": { + "kind": { + "oneof": [ + "nullValue", + "numberValue", + "stringValue", + "boolValue", + "structValue", + "listValue" + ] + } + }, + "fields": { + "nullValue": { + "type": "NullValue", + "id": 1 + }, + "numberValue": { + "type": "double", + "id": 2 + }, + "stringValue": { + "type": "string", + "id": 3 + }, + "boolValue": { + "type": "bool", + "id": 4 + }, + "structValue": { + "type": "Struct", + "id": 5 + }, + "listValue": { + "type": "ListValue", + "id": 6 + } + } + }, + "NullValue": { + "values": { + "NULL_VALUE": 0 + } + }, + "ListValue": { + "fields": { + "values": { + "rule": "repeated", + "type": "Value", + "id": 1 + } + } + }, + "Timestamp": { + "fields": { + "seconds": { + "type": "int64", + "id": 1 + }, + "nanos": { + "type": "int32", + "id": 2 + } + } + }, + "DoubleValue": { + "fields": { + "value": { + "type": "double", + "id": 1 + } + } + }, + "FloatValue": { + "fields": { + "value": { + "type": "float", + "id": 1 + } + } + }, + "Int64Value": { + "fields": { + "value": { + "type": "int64", + "id": 1 + } + } + }, + "UInt64Value": { + "fields": { + "value": { + "type": "uint64", + "id": 1 + } + } + }, + "Int32Value": { + "fields": { + "value": { + "type": "int32", + "id": 1 + } + } + }, + "UInt32Value": { + "fields": { + "value": { + "type": "uint32", + "id": 1 + } + } + }, + "BoolValue": { + "fields": { + "value": { + "type": "bool", + "id": 1 + } + } + }, + "StringValue": { + "fields": { + "value": { + "type": "string", + "id": 1 + } + } + }, + "BytesValue": { + "fields": { + "value": { + "type": "bytes", + "id": 1 + } + } + } + } + }, + "type": { + "options": { + "cc_enable_arenas": true, + "go_package": "google.golang.org/genproto/googleapis/type/latlng;latlng", + "java_multiple_files": true, + "java_outer_classname": "LatLngProto", + "java_package": "com.google.type", + "objc_class_prefix": "GTP" + }, + "nested": { + "LatLng": { + "fields": { + "latitude": { + "type": "double", + "id": 1 + }, + "longitude": { + "type": "double", + "id": 2 + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/service_proto_list.json b/handwritten/nodejs-datastore/src/service_proto_list.json new file mode 100644 index 00000000000..fe654d46fe7 --- /dev/null +++ b/handwritten/nodejs-datastore/src/service_proto_list.json @@ -0,0 +1 @@ +["../protos/google/datastore/v1/entity.proto", "../protos/google/datastore/v1/datastore.proto", "../protos/google/datastore/v1/query.proto"] \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index d9495d77516..10a9483ef16 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -251,6 +251,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -328,6 +329,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -385,6 +387,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -470,6 +473,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -531,6 +535,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -595,6 +600,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; @@ -661,6 +667,7 @@ class DatastoreClient { callback = options; options = {}; } + request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index d04b29b74d4..0bacd67c2ea 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-06-18T01:00:06.903003Z", + "updateTime": "2019-08-02T11:13:13.739342Z", "sources": [ { "generator": { "name": "artman", - "version": "0.26.0", - "dockerImage": "googleapis/artman@sha256:6db0735b0d3beec5b887153a2a7c7411fc7bb53f73f6f389a822096bd14a3a15" + "version": "0.32.0", + "dockerImage": "googleapis/artman@sha256:6929f343c400122d85818195b18613330a12a014bffc1e08499550d40571479d" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "384aa843867c4d17756d14a01f047b6368494d32", - "internalRef": "253675319" + "sha": "3a40d3a5f5e5a33fd49888a8a33ed021f65c0ccf", + "internalRef": "261297518" } }, { From 7231553cda95c125bf30f4a54879a40a1f173c73 Mon Sep 17 00:00:00 2001 From: Jiren Patel Date: Mon, 5 Aug 2019 22:25:30 +0530 Subject: [PATCH 416/820] feat: add support for appengine legacy url encoding (#456) --- handwritten/nodejs-datastore/package.json | 3 +- .../proto/app_engine_key.d.ts | 303 ++++++++++++++++++ .../protos/app_engine_key.proto | 16 + handwritten/nodejs-datastore/src/entity.ts | 165 ++++++++++ handwritten/nodejs-datastore/src/index.ts | 63 ++++ handwritten/nodejs-datastore/test/entity.ts | 145 +++++++++ handwritten/nodejs-datastore/test/index.ts | 22 ++ 7 files changed, 716 insertions(+), 1 deletion(-) create mode 100644 handwritten/nodejs-datastore/proto/app_engine_key.d.ts create mode 100644 handwritten/nodejs-datastore/protos/app_engine_key.proto diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5c0ca1b5c1c..763a590c36e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -39,8 +39,9 @@ "compile": "tsc -p . && cp -r src/v1 build/src && cp -r proto* build && cp test/*.js build/test", "prepare": "npm run compile", "pretest": "npm run compile", - "proto": "npm run proto:datastore", + "proto": "npm run proto:datastore && npm run proto:appenginekey", "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", + "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", "docs-test": "linkinator docs", "predocs-test": "npm run docs" }, diff --git a/handwritten/nodejs-datastore/proto/app_engine_key.d.ts b/handwritten/nodejs-datastore/proto/app_engine_key.d.ts new file mode 100644 index 00000000000..8f56d7f2cb6 --- /dev/null +++ b/handwritten/nodejs-datastore/proto/app_engine_key.d.ts @@ -0,0 +1,303 @@ +import * as $protobuf from "protobufjs"; +/** Properties of a Reference. */ +export interface IReference { + + /** Reference app */ + app: string; + + /** Reference namespace */ + namespace?: (string|null); + + /** Reference path */ + path: IPath; + + /** Reference databaseId */ + databaseId?: (string|null); +} + +/** Represents a Reference. */ +export class Reference implements IReference { + + /** + * Constructs a new Reference. + * @param [properties] Properties to set + */ + constructor(properties?: IReference); + + /** Reference app. */ + public app: string; + + /** Reference namespace. */ + public namespace: string; + + /** Reference path. */ + public path: IPath; + + /** Reference databaseId. */ + public databaseId: string; + + /** + * Creates a new Reference instance using the specified properties. + * @param [properties] Properties to set + * @returns Reference instance + */ + public static create(properties?: IReference): Reference; + + /** + * Encodes the specified Reference message. Does not implicitly {@link Reference.verify|verify} messages. + * @param message Reference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: IReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Reference message, length delimited. Does not implicitly {@link Reference.verify|verify} messages. + * @param message Reference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: IReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Reference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Reference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Reference; + + /** + * Decodes a Reference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Reference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Reference; + + /** + * Verifies a Reference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Reference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Reference + */ + public static fromObject(object: { [k: string]: any }): Reference; + + /** + * Creates a plain object from a Reference message. Also converts values to other types if specified. + * @param message Reference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: Reference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Reference to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; +} + +/** Properties of a Path. */ +export interface IPath { + + /** Path element */ + element?: (Path.IElement[]|null); +} + +/** Represents a Path. */ +export class Path implements IPath { + + /** + * Constructs a new Path. + * @param [properties] Properties to set + */ + constructor(properties?: IPath); + + /** Path element. */ + public element: Path.IElement[]; + + /** + * Creates a new Path instance using the specified properties. + * @param [properties] Properties to set + * @returns Path instance + */ + public static create(properties?: IPath): Path; + + /** + * Encodes the specified Path message. Does not implicitly {@link Path.verify|verify} messages. + * @param message Path message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: IPath, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Path message, length delimited. Does not implicitly {@link Path.verify|verify} messages. + * @param message Path message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: IPath, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Path message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Path; + + /** + * Decodes a Path message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Path; + + /** + * Verifies a Path message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Path + */ + public static fromObject(object: { [k: string]: any }): Path; + + /** + * Creates a plain object from a Path message. Also converts values to other types if specified. + * @param message Path + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: Path, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Path to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; +} + +export namespace Path { + + /** Properties of an Element. */ + interface IElement { + + /** Element type */ + type: string; + + /** Element id */ + id?: (number|Long|null); + + /** Element name */ + name?: (string|null); + } + + /** Represents an Element. */ + class Element implements IElement { + + /** + * Constructs a new Element. + * @param [properties] Properties to set + */ + constructor(properties?: Path.IElement); + + /** Element type. */ + public type: string; + + /** Element id. */ + public id: (number|Long); + + /** Element name. */ + public name: string; + + /** + * Creates a new Element instance using the specified properties. + * @param [properties] Properties to set + * @returns Element instance + */ + public static create(properties?: Path.IElement): Path.Element; + + /** + * Encodes the specified Element message. Does not implicitly {@link Path.Element.verify|verify} messages. + * @param message Element message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: Path.IElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Element message, length delimited. Does not implicitly {@link Path.Element.verify|verify} messages. + * @param message Element message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: Path.IElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Element message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Element + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Path.Element; + + /** + * Decodes an Element message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Element + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Path.Element; + + /** + * Verifies an Element message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Element message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Element + */ + public static fromObject(object: { [k: string]: any }): Path.Element; + + /** + * Creates a plain object from an Element message. Also converts values to other types if specified. + * @param message Element + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: Path.Element, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Element to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } +} diff --git a/handwritten/nodejs-datastore/protos/app_engine_key.proto b/handwritten/nodejs-datastore/protos/app_engine_key.proto new file mode 100644 index 00000000000..0f62d0124c0 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/app_engine_key.proto @@ -0,0 +1,16 @@ +syntax = "proto2"; + +message Reference { + required string app = 13; + optional string namespace = 20; + required Path path = 14; + optional string database_id = 23; +} + +message Path { + repeated group Element = 1 { + required string type = 2; + optional int64 id = 3; + optional string name = 4; + } +} diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 8df1c12f892..42fe4ffd8cc 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -19,6 +19,9 @@ import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto} from './query'; import {PathType} from '.'; +import * as Protobuf from 'protobufjs'; +import * as path from 'path'; +import * as appengine from '../proto/app_engine_key'; // tslint:disable-next-line no-namespace export namespace entity { @@ -960,6 +963,168 @@ export namespace entity { return queryProto; } + + /** + * URL safe key encoding and decoding helper utility. + * + * This is intended to work with the "legacy" representation of a + * datastore "Key" used within Google App Engine (a so-called "Reference"). + * + * @private + * @class + */ + export class URLSafeKey { + // tslint:disable-next-line no-any + protos: any; + + constructor() { + this.protos = this.loadProtos_(); + } + + /** + * Load AppEngine protobuf file. + * + * @private + */ + loadProtos_() { + const root = new Protobuf.Root(); + const loadedRoot = root.loadSync( + path.join(__dirname, '..', 'protos', 'app_engine_key.proto') + ); + loadedRoot.resolveAll(); + return loadedRoot.nested; + } + + /** + * Convert key to url safe base64 encoded string. + * + * @private + * @param {string} projectId Project Id. + * @param {entity.Key} key Entity key object. + * @param {string} locationPrefix Optional . + * The location prefix of an App Engine project ID. + * Often this value is 's~', but may also be 'e~', or other location prefixes + * currently unknown. + * @returns {string} base64 endocded urlsafe key. + */ + + legacyEncode( + projectId: string, + key: entity.Key, + locationPrefix?: string + ): string { + const elements: appengine.Path.IElement[] = []; + let currentKey = key; + + do { + // tslint:disable-next-line no-any + const element: any = { + type: currentKey.kind, + }; + + if (is.defined(currentKey.id)) { + element.id = currentKey.id; + } + + if (is.defined(currentKey.name)) { + element.name = currentKey.name; + } + + elements.unshift(element); + currentKey = currentKey.parent!; + } while (currentKey); + + if (locationPrefix) { + projectId = `${locationPrefix}${projectId}`; + } + + const reference: appengine.IReference = { + app: projectId, + namespace: key.namespace, + path: {element: elements}, + }; + + const buffer = this.protos.Reference.encode(reference).finish(); + return this.convertToBase64_(buffer); + } + + /** + * Helper to convert URL safe key string to entity key object + * + * This is intended to work with the "legacy" representation of a + * datastore "Key" used within Google App Engine (a so-called "Reference"). + * + * @private + * @param {entity.Key} key Entity key object. + * @param {string} locationPrefix Optional . + * The location prefix of an App Engine project ID. + * Often this value is 's~', but may also be 'e~', or other location prefixes + * currently unknown. + * @returns {string} Created urlsafe key. + */ + + legacyDecode(key: string): entity.Key { + const buffer = this.convertToBuffer_(key); + const message = this.protos.Reference.decode(buffer); + const reference = this.protos.Reference.toObject(message, { + longs: String, + }); + const pathElements: PathType[] = []; + + reference.path.element.forEach((element: appengine.Path.Element) => { + pathElements.push(element.type); + + if (is.defined(element.name)) { + pathElements.push(element.name); + } + + if (is.defined(element.id)) { + pathElements.push(new entity.Int(element.id as number)); + } + }); + + const keyOptions: entity.KeyOptions = { + path: pathElements, + }; + + if (!is.empty(reference.namespace)) { + keyOptions.namespace = reference.namespace; + } + + return new entity.Key(keyOptions); + } + + /** + * Convert buffer to base64 encoding. + * + * @private + * @param {Buffer} buffer + * @returns {string} Base64 encoded string. + */ + convertToBase64_(buffer: Buffer): string { + return buffer + .toString('base64') + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+$/, ''); + } + + /** + * Rebuild base64 from encoded url safe string and convert to buffer. + * + * @private + * @param {string} val Encoded url safe string. + * @returns {string} Base64 encoded string. + */ + convertToBuffer_(val: string): Buffer { + val = val.replace(/-/g, '+').replace(/_/g, '/'); + while (val.length % 4) { + val += '='; + } + + return Buffer.from(val, 'base64'); + } + } } export interface ValueProto { diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index c71b3563dbf..f690e2b7080 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -44,6 +44,8 @@ const gapic = Object.freeze({ v1: require('./v1'), }); +const urlSafeKey = new entity.URLSafeKey(); + /** * Idiomatic class for interacting with Cloud Datastore. Uses the lower-level * {@link v1.DatastoreClient} class under the hood. @@ -728,6 +730,67 @@ class Datastore extends DatastoreRequest { return Datastore.isKey(value); } + /** + * Helper to create a URL safe key. + * + * This is intended to work with the "legacy" representation of a + * datastore "Key" used within Google App Engine (a so-called "Reference"). + * The returned string can be used as the "urlsafe" + * The base64 encoded values will have padding removed. + * + * + * @param {entity.Key} key Entity key object. + * @param {string} locationPrefix Optional . + * The location prefix of an App Engine project ID. + * Often this value is 's~', but may also be 'e~', or other location prefixes + * currently unknown. + * @returns {string} base64 endocded urlsafe key. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 'Google']); + * + * datastore.keyToLegacyUrlsafe(key) //ag9ncmFzcy1jbHVtcC00NzlyEwsSB0NvbXBhbnkiBkdvb2dsZQw + * + * @example + * Create a complete url safe key using location prefix + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Task', 123]); + * const locationPrefix = 's~'; + * + * datastore.keyToLegacyUrlsafe(key, locationPrefix) //ahFzfmdyYXNzLWNsdW1wLTQ3OXIKCxIEVGFzaxh7DA + */ + keyToLegacyUrlsafe(key: entity.Key, locationPrefix?: string): string { + return urlSafeKey.legacyEncode(this.projectId, key, locationPrefix); + } + + /** + * Helper to convert URL safe key string to entity key object + * + * This is intended to work with the "legacy" representation of a + * datastore "Key" used within Google App Engine (a so-called "Reference"). + * + * @param {entity.Key} key Entity key object. + * @param {string} locationPrefix Optional . + * The location prefix of an App Engine project ID. + * Often this value is 's~', but may also be 'e~', or other location prefixes + * currently unknown. + * @returns {string} Created urlsafe key. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const urlSafeKey = 'ag9ncmFzcy1jbHVtcC00NzlyEwsSB0NvbXBhbnkiBkdvb2dsZQw'; + * + * datastore.keyFromLegacyUrlsafe(key); + * + */ + keyFromLegacyUrlsafe(key: string): entity.Key { + return urlSafeKey.legacyDecode(key); + } + /** * Create a new Transaction object. * diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index adac54ee89a..9631945f9cf 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1389,4 +1389,149 @@ describe('entity', () => { assert.strictEqual(queryProto.startCursor, startVal); }); }); + + describe('UrlSafeKey', () => { + const PROJECT_ID = 'grass-clump-479'; + const LOCATION_PREFIX = 's~'; + let urlSafeKey: entity.URLSafeKey; + + beforeEach(() => { + urlSafeKey = new entity.URLSafeKey(); + }); + + describe('convertToBase64_', () => { + it('should convert buffer to base64 and cleanup', () => { + const buffer = Buffer.from('Hello World'); + + assert.strictEqual( + urlSafeKey.convertToBase64_(buffer), + 'SGVsbG8gV29ybGQ' + ); + }); + }); + + describe('convertToBuffer_', () => { + it('should convert encoded url safe key to buffer', () => { + assert.deepStrictEqual( + urlSafeKey.convertToBuffer_('aGVsbG8gd29ybGQgZnJvbSBkYXRhc3RvcmU'), + Buffer.from('hello world from datastore') + ); + }); + }); + + describe('legacyEncode', () => { + it('should encode with namespace', () => { + const kind = 'Task'; + const name = 'sampletask1'; + const key = new entity.Key({ + namespace: 'NS', + path: [kind, name], + }); + + const encodedKey = + 'ahFzfmdyYXNzLWNsdW1wLTQ3OXIVCxIEVGFzayILc2FtcGxldGFzazEMogECTlM'; + assert.strictEqual( + urlSafeKey.legacyEncode(PROJECT_ID, key, LOCATION_PREFIX), + encodedKey + ); + }); + + it('should encode key with single path element string string type', () => { + const kind = 'Task'; + const name = 'sampletask1'; + const key = new entity.Key({ + path: [kind, name], + }); + + const encodedKey = + 'ag9ncmFzcy1jbHVtcC00NzlyFQsSBFRhc2siC3NhbXBsZXRhc2sxDA'; + assert.strictEqual( + urlSafeKey.legacyEncode(PROJECT_ID, key), + encodedKey + ); + }); + + it('should encode key with single path element long int type', () => { + const kind = 'Task'; + const id = 5754248394440704; + const key = new entity.Key({ + path: [kind, id], + }); + + const encodedKey = 'ag9ncmFzcy1jbHVtcC00NzlyEQsSBFRhc2sYgICA3NWunAoM'; + assert.strictEqual( + urlSafeKey.legacyEncode(PROJECT_ID, key), + encodedKey + ); + }); + + it('should encode key with single path element entity int type', () => { + const kind = 'Task'; + const id = new entity.Int('5754248394440704'); + const key = new entity.Key({ + path: [kind, id], + }); + + const encodedKey = 'ag9ncmFzcy1jbHVtcC00NzlyEQsSBFRhc2sYgICA3NWunAoM'; + assert.strictEqual( + urlSafeKey.legacyEncode(PROJECT_ID, key), + encodedKey + ); + }); + + it('should encode key with parent', () => { + const key = new entity.Key({ + path: ['Task', 'sampletask1', 'Task', 'sampletask2'], + }); + + const encodedKey = + 'ahFzfmdyYXNzLWNsdW1wLTQ3OXIqCxIEVGFzayILc2FtcGxldGFzazEMCxIEVGFzayILc2FtcGxldGFzazIM'; + assert.strictEqual( + urlSafeKey.legacyEncode(PROJECT_ID, key, LOCATION_PREFIX), + encodedKey + ); + }); + }); + + describe('legacyDecode', () => { + it('should decode key with namespace', () => { + const encodedKey = + 'ahFzfmdyYXNzLWNsdW1wLTQ3OXIVCxIEVGFzayILc2FtcGxldGFzazEMogECTlM'; + const key = urlSafeKey.legacyDecode(encodedKey); + assert.strictEqual(key.namespace, 'NS'); + assert.deepStrictEqual(key.path, ['Task', 'sampletask1']); + }); + + it('should decode key with single path element string type', () => { + const encodedKey = + 'ag9ncmFzcy1jbHVtcC00NzlyFQsSBFRhc2siC3NhbXBsZXRhc2sxDA'; + const key = urlSafeKey.legacyDecode(encodedKey); + assert.strictEqual(key.namespace, undefined); + assert.deepStrictEqual(key.path, ['Task', 'sampletask1']); + }); + + it('should decode key with single path element long int type', () => { + const encodedKey = + 'ahFzfmdyYXNzLWNsdW1wLTQ3OXIRCxIEVGFzaxiAgIDc1a6cCgw'; + const key = urlSafeKey.legacyDecode(encodedKey); + assert.strictEqual(key.namespace, undefined); + assert.deepStrictEqual(key.path, ['Task', '5754248394440704']); + }); + + it('should decode key with parent path', () => { + const encodedKey = + 'ahFzfmdyYXNzLWNsdW1wLTQ3OXIqCxIEVGFzayILc2FtcGxldGFzazEMCxIEVGFzayILc2FtcGxldGFzazIM'; + const key = urlSafeKey.legacyDecode(encodedKey); + assert.strictEqual(key.namespace, undefined); + assert.deepStrictEqual(key.path, [ + 'Task', + 'sampletask1', + 'Task', + 'sampletask2', + ]); + assert.strictEqual(key.parent!.name, 'sampletask1'); + assert.deepStrictEqual(key.parent!.path, ['Task', 'sampletask1']); + }); + }); + }); }); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 1c96a061dfa..3886eec6262 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -63,6 +63,7 @@ const fakeEntity: any = { isDsKey() { this.calledWith_ = arguments; }, + URLSafeKey: entity.URLSafeKey, }; let googleAuthOverride: Function | null; @@ -623,4 +624,25 @@ describe('Datastore', () => { }); }); }); + + describe('keyToLegacyUrlsafe', () => { + it('should convert key to url safe base64 string', () => { + const key = new entity.Key({ + path: ['Task', 'Test'], + }); + assert.strictEqual( + datastore.keyToLegacyUrlsafe(key), + 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA' + ); + }); + }); + + describe('keyFromLegacyUrlsafe', () => { + it('should convert key to url safe base64 string', () => { + const encodedKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; + const key = datastore.keyFromLegacyUrlsafe(encodedKey); + assert.strictEqual(key.kind, 'Task'); + assert.strictEqual(key.name, 'Test'); + }); + }); }); From 95897027dc006abe9692ea94b96e110aaf3fc105 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 9 Aug 2019 08:25:56 -0700 Subject: [PATCH 417/820] chore: release 4.2.0 (#464) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 16 ++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index cdabbfd992f..1885f198bbd 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,22 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.2.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.4...v4.2.0) (2019-08-09) + + +### Bug Fixes + +* **deps:** update dependency @grpc/grpc-js to ^0.5.0 ([#461](https://www.github.com/googleapis/nodejs-datastore/issues/461)) ([1850f25](https://www.github.com/googleapis/nodejs-datastore/commit/1850f25)) +* **deps:** update dependency google-auth-library to v5 ([#462](https://www.github.com/googleapis/nodejs-datastore/issues/462)) ([1f97053](https://www.github.com/googleapis/nodejs-datastore/commit/1f97053)) +* **types:** correct type of Datastore.KEY ([#459](https://www.github.com/googleapis/nodejs-datastore/issues/459)) ([09def6d](https://www.github.com/googleapis/nodejs-datastore/commit/09def6d)) +* allow calls with no request, add JSON proto ([771b634](https://www.github.com/googleapis/nodejs-datastore/commit/771b634)) + + +### Features + +* add support for appengine legacy url encoding ([#456](https://www.github.com/googleapis/nodejs-datastore/issues/456)) ([357a9cf](https://www.github.com/googleapis/nodejs-datastore/commit/357a9cf)) +* excludeFromIndex allow for '*' wildcard to catch all properties on object ([#451](https://www.github.com/googleapis/nodejs-datastore/issues/451)) ([215cbee](https://www.github.com/googleapis/nodejs-datastore/commit/215cbee)) + ### [4.1.4](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.3...v4.1.4) (2019-07-23) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 763a590c36e..0a1d341e2e0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.1.4", + "version": "4.2.0", "license": "Apache-2.0", "author": "Google Inc.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d2b363ddeef..02544127859 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.1.4", + "@google-cloud/datastore": "^4.2.0", "sinon": "^7.3.2" }, "devDependencies": { From eba4dd0ae3f64a2dccb89b6db0a03edf65e2710b Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Thu, 22 Aug 2019 15:27:31 -0400 Subject: [PATCH 418/820] chore: fix the headers (#477) --- handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/package.json | 2 +- .../protos/google/datastore/v1/datastore.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/entity.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/query.proto | 2 +- handwritten/nodejs-datastore/samples/concepts.js | 5 +++-- handwritten/nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/samples/quickstart.js | 5 +++-- handwritten/nodejs-datastore/samples/tasks.add.js | 5 +++-- handwritten/nodejs-datastore/samples/tasks.delete.js | 5 +++-- handwritten/nodejs-datastore/samples/tasks.js | 5 +++-- handwritten/nodejs-datastore/samples/tasks.list.js | 5 +++-- handwritten/nodejs-datastore/samples/tasks.markdone.js | 5 +++-- handwritten/nodejs-datastore/samples/test/concepts.test.js | 2 +- handwritten/nodejs-datastore/samples/test/quickstart.test.js | 5 +++-- handwritten/nodejs-datastore/samples/test/tasks.test.js | 5 +++-- handwritten/nodejs-datastore/src/entity.ts | 2 +- handwritten/nodejs-datastore/src/index.ts | 2 +- handwritten/nodejs-datastore/src/query.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 2 +- handwritten/nodejs-datastore/src/transaction.ts | 2 +- handwritten/nodejs-datastore/src/v1/datastore_client.d.ts | 2 +- handwritten/nodejs-datastore/src/v1/index.d.ts | 2 +- handwritten/nodejs-datastore/system-test/datastore.ts | 2 +- handwritten/nodejs-datastore/system-test/install.ts | 2 +- handwritten/nodejs-datastore/test/entity.ts | 2 +- handwritten/nodejs-datastore/test/index.ts | 2 +- handwritten/nodejs-datastore/test/query.ts | 2 +- handwritten/nodejs-datastore/test/request.ts | 2 +- handwritten/nodejs-datastore/test/transaction.ts | 2 +- 30 files changed, 48 insertions(+), 39 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index b41aff5d4ef..492f309f2bc 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,5 +1,5 @@ /*! - * Copyright 2018 Google LLC. All Rights Reserved. + * Copyright 2018 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0a1d341e2e0..e571dd39b2c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -3,7 +3,7 @@ "description": "Cloud Datastore Client Library for Node.js", "version": "4.2.0", "license": "Apache-2.0", - "author": "Google Inc.", + "author": "Google LLC.", "engines": { "node": ">=8.10.0" }, diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 51d69acb9db..1fe73f1c8a0 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 9decd2b5380..b778b95cfba 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 872612c5dd2..341de6f9ac6 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 6192a419e2f..55947d59b99 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1,10 +1,11 @@ /** - * Copyright 2017, Google, Inc. + * Copyright 2017 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 02544127859..640c4dfc756 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -2,7 +2,7 @@ "name": "nodejs-docs-samples-datastore", "private": true, "license": "Apache-2.0", - "author": "Google Inc.", + "author": "Google LLC.", "files": [ "*.js" ], diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 8746b0b61cf..1ca2cdbeb9e 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -1,10 +1,11 @@ /** - * Copyright 2016, Google, Inc. + * Copyright 2016 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/tasks.add.js b/handwritten/nodejs-datastore/samples/tasks.add.js index 2da33942ab2..2a9e087e846 100644 --- a/handwritten/nodejs-datastore/samples/tasks.add.js +++ b/handwritten/nodejs-datastore/samples/tasks.add.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/tasks.delete.js b/handwritten/nodejs-datastore/samples/tasks.delete.js index 126ef0520d7..93d3630e7f4 100644 --- a/handwritten/nodejs-datastore/samples/tasks.delete.js +++ b/handwritten/nodejs-datastore/samples/tasks.delete.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 083a38b87e9..33521a54f42 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/tasks.list.js b/handwritten/nodejs-datastore/samples/tasks.list.js index 7c0f934d9ff..19a511fd76a 100644 --- a/handwritten/nodejs-datastore/samples/tasks.list.js +++ b/handwritten/nodejs-datastore/samples/tasks.list.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/tasks.markdone.js b/handwritten/nodejs-datastore/samples/tasks.markdone.js index 3cc990f2e10..54cbc53a81a 100644 --- a/handwritten/nodejs-datastore/samples/tasks.markdone.js +++ b/handwritten/nodejs-datastore/samples/tasks.markdone.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js index 369ae34d811..a42b6a635e5 100644 --- a/handwritten/nodejs-datastore/samples/test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -1,5 +1,5 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js index 1617ed74bee..d80e8e48e77 100644 --- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js index 13b7853fbdd..1cae0375b48 100644 --- a/handwritten/nodejs-datastore/samples/test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -1,10 +1,11 @@ /** - * Copyright 2018, Google, Inc. + * Copyright 2018 Google LLC. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 42fe4ffd8cc..3afd257baf1 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f690e2b7080..d9241d735fb 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2018 Google LLC. All Rights Reserved. + * Copyright 2018 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index e74760cc26c..1c056fe8ac1 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 7bec273973f..a86d47df917 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 53803e48a27..5dccf58487e 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts index a1347e368b9..502f0e77b33 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2019 Google Inc. All Rights Reserved. + * Copyright 2019 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/index.d.ts b/handwritten/nodejs-datastore/src/v1/index.d.ts index 3e99a59618f..b4342d0710b 100644 --- a/handwritten/nodejs-datastore/src/v1/index.d.ts +++ b/handwritten/nodejs-datastore/src/v1/index.d.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2019 Google Inc. All Rights Reserved. + * Copyright 2019 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 8fa7a66bea0..2b1dddf76ae 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 07be6ac570e..1c5f1c2fffc 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,5 +1,5 @@ /** - * Copyright 2019 Google LLC. All Rights Reserved. + * Copyright 2019 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 9631945f9cf..f1df934707a 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 3886eec6262..f4d303e8c49 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index be1cdc2d4ca..65375b7fcf6 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index ccbfa674078..6ea9f50edde 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index ffad3fcae91..439f65bed13 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -1,5 +1,5 @@ /** - * Copyright 2014 Google Inc. All Rights Reserved. + * Copyright 2014 Google LLC. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 74f369f39d996db776042f9c95db414711ad4ed0 Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Fri, 23 Aug 2019 17:21:10 -0400 Subject: [PATCH 419/820] fix(types): fix and clean up types for request.ts (#472) --- handwritten/nodejs-datastore/src/entity.ts | 56 +++--- handwritten/nodejs-datastore/src/index.ts | 4 +- handwritten/nodejs-datastore/src/query.ts | 4 + handwritten/nodejs-datastore/src/request.ts | 181 +++++++++--------- .../nodejs-datastore/src/transaction.ts | 10 +- handwritten/nodejs-datastore/test/request.ts | 56 +++--- .../nodejs-datastore/test/transaction.ts | 4 +- 7 files changed, 162 insertions(+), 153 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 3afd257baf1..134f1aeec72 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -22,6 +22,7 @@ import {PathType} from '.'; import * as Protobuf from 'protobufjs'; import * as path from 'path'; import * as appengine from '../proto/app_engine_key'; +import {google} from '../proto/datastore'; // tslint:disable-next-line no-namespace export namespace entity { @@ -527,7 +528,7 @@ export namespace entity { * // } * // } */ - export function entityToEntityProto(entityObject: Entity): EntityProto { + export function entityToEntityProto(entityObject: EntityObject): EntityProto { const properties = entityObject.data; const excludeFromIndexes = entityObject.excludeFromIndexes; @@ -605,11 +606,11 @@ export namespace entity { if ( firstPathPartIsArray && // check also if the property in question is actually an array value. - entity.properties[firstPathPart].arrayValue && + entity.properties![firstPathPart].arrayValue && // check if wildcard is not applied !hasWildCard ) { - const array = entity.properties[firstPathPart].arrayValue; + const array = entity.properties![firstPathPart].arrayValue; // tslint:disable-next-line no-any array.values.forEach((value: any) => { if (remainderPath === '') { @@ -630,7 +631,7 @@ export namespace entity { } }); } else if (firstPathPartIsArray && hasWildCard && remainderPath === '*') { - const array = entity.properties[firstPathPart].arrayValue; + const array = entity.properties![firstPathPart].arrayValue; // tslint:disable-next-line no-any array.values.forEach((value: any) => { if (value.entityValue) { @@ -641,15 +642,15 @@ export namespace entity { }); } else if (firstPathPartIsEntity) { if (firstPathPart === '') { - Object.keys(entity.properties).forEach(path => { - const newPath = entity.properties[path].arrayValue + Object.keys(entity.properties!).forEach(path => { + const newPath = entity.properties![path].arrayValue ? path + '[].*' : path + '.*'; excludePathFromEntity(entity, newPath); }); } else { if (hasWildCard && remainderPath === '*') { - const parentEntity = entity.properties[firstPathPart].entityValue; + const parentEntity = entity.properties![firstPathPart].entityValue; if (parentEntity) { Object.keys(parentEntity.properties).forEach(path => { @@ -662,7 +663,7 @@ export namespace entity { excludePathFromEntity(entity, firstPathPart); } } else { - const parentEntity = entity.properties[firstPathPart].entityValue; + const parentEntity = entity.properties![firstPathPart].entityValue; excludePathFromEntity(parentEntity, remainderPath); } } @@ -693,8 +694,8 @@ export namespace entity { */ export function formatArray(results: ResponseResult[]) { return results.map(result => { - const ent = entity.entityFromEntityProto(result.entity); - ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity.key!); + const ent = entity.entityFromEntityProto(result.entity!); + ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity!.key!); return ent; }); } @@ -711,7 +712,7 @@ export namespace entity { * isKeyComplete(new Key('Company')); // false */ export function isKeyComplete(key: Key) { - const lastPathElement = entity.keyToKeyProto(key).path.pop()!; + const lastPathElement = entity.keyToKeyProto(key).path!.pop()!; return !!(lastPathElement.id || lastPathElement.name); } @@ -746,7 +747,7 @@ export namespace entity { keyOptions.namespace = keyProto.partitionId.namespaceId; } - keyProto.path.forEach((path, index) => { + keyProto.path!.forEach((path, index) => { keyOptions.path.push(path.kind); let id = path[path.idType!]; @@ -757,7 +758,7 @@ export namespace entity { if (is.defined(id)) { keyOptions.path.push(id); - } else if (index < keyProto.path.length - 1) { + } else if (index < keyProto.path!.length - 1) { throw new InvalidKeyError({ code: 'MISSING_ANCESTOR_ID', }); @@ -827,7 +828,7 @@ export namespace entity { pathElement.name = key.name; } - keyProto.path.unshift(pathElement); + keyProto.path!.unshift(pathElement); // tslint:disable-next-line no-conditional-assignment } while ((key = key.parent!) && ++numKeysWalked); @@ -1137,27 +1138,30 @@ export interface ValueProto { } export interface EntityProto { - key: KeyProto | null; - // tslint:disable-next-line no-any - properties: any; + key?: KeyProto | null; + properties?: {[k: string]: ValueProto}; excludeFromIndexes?: boolean; } // tslint:disable-next-line no-any export type Entity = any; +interface KeyProtoPathElement extends google.datastore.v1.Key.IPathElement { + // tslint:disable-next-line no-any + [index: string]: any; + idType?: string; +} + export interface KeyProto { - path: Array<{ - // tslint:disable-next-line no-any - [index: string]: any; - id: string; - name: string; - kind?: string; - idType?: string; - }>; - partitionId?: {namespaceId: {}}; + partitionId?: google.datastore.v1.IPartitionId | null; + path?: KeyProtoPathElement[] | null; } export interface ResponseResult { entity: EntityProto; } + +export interface EntityObject { + data: {[k: string]: Entity}; + excludeFromIndexes: string[]; +} diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index d9241d735fb..f8464b3a9fc 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -26,7 +26,7 @@ import arrify = require('arrify'); import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; -import {GrpcClient} from 'google-gax'; +import {GrpcClient, ClientStub} from 'google-gax'; import {ChannelCredentials} from '@grpc/grpc-js'; import * as is from 'is'; @@ -374,7 +374,7 @@ const urlSafeKey = new entity.URLSafeKey(); * }); */ class Datastore extends DatastoreRequest { - clients_: Map; + clients_: Map; namespace?: string; projectId: string; defaultBaseUrl_: string; diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 1c056fe8ac1..2b3037a998f 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -19,6 +19,7 @@ import {Key} from 'readline'; import {Datastore} from '.'; import {Entity} from './entity'; import {Transaction} from './transaction'; +import {CallOptions} from 'google-gax'; export type Operator = '=' | '<' | '>' | '<=' | '>=' | 'HAS_ANCESTOR'; @@ -518,6 +519,7 @@ export {Query}; export interface RunQueryOptions { consistency?: 'strong' | 'eventual'; + gaxOptions?: CallOptions; } export interface RunQueryCallback { @@ -529,6 +531,8 @@ export type RunQueryResponse = [Entity[], RunQueryInfo]; export interface RunQueryInfo { endCursor?: string; moreResults?: + | 'MORE_RESULTS_TYPE_UNSPECIFIED' + | 'NOT_FINISHED' | 'MORE_RESULTS_AFTER_LIMIT' | 'MORE_RESULTS_AFTER_CURSOR' | 'NO_MORE_RESULTS'; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index a86d47df917..83748f98233 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -31,9 +31,17 @@ const gapic = Object.freeze({ v1: require('./v1'), }); -import {entity, Entity, KeyProto, ValueProto} from './entity'; +import { + entity, + Entity, + EntityProto, + KeyProto, + ValueProto, + ResponseResult, +} from './entity'; import { Query, + QueryProto, RunQueryInfo, RunQueryOptions, RunQueryResponse, @@ -62,7 +70,7 @@ const CONSISTENCY_PROTO_CODE: ConsistencyProtoCode = { * @class */ class DatastoreRequest { - id: string | number | undefined; + id: string | undefined; requests_: | Entity | { @@ -212,11 +220,11 @@ class DatastoreRequest { }, (err, resp) => { if (err) { - callback!(err, null, resp); + callback!(err, null, resp!); return; } - const keys = arrify(resp.keys).map(entity.keyFromKeyProto); - callback!(null, keys, resp); + const keys = arrify(resp!.keys!).map(entity.keyFromKeyProto); + callback!(null, keys, resp!); } ); } @@ -280,8 +288,8 @@ class DatastoreRequest { return; } - const entities = entity.formatArray(resp.found); - const nextKeys = (resp.deferred || []) + const entities = entity.formatArray(resp!.found! as ResponseResult[]); + const nextKeys = (resp!.deferred || []) .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); @@ -308,13 +316,12 @@ class DatastoreRequest { return stream; } - delete(): Promise; - delete(keys: Entities): void; - delete(keys: Entities, callback: CommitCallback): void; + delete(keys: Entities, gaxOptions?: CallOptions): Promise; + delete(keys: Entities, callback: DeleteCallback): void; delete( keys: Entities, gaxOptions: CallOptions, - callback: CommitCallback + callback: DeleteCallback ): void; /** * Delete all entities identified with the specified key(s). @@ -365,17 +372,17 @@ class DatastoreRequest { * }); */ delete( - keys?: Entities, - gaxOptionsOrCallback?: CallOptions | CommitCallback, - cb?: CommitCallback - ): void | Promise { + keys: entity.Key | entity.Key[], + gaxOptionsOrCallback?: CallOptions | DeleteCallback, + cb?: DeleteCallback + ): void | Promise { const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; const reqOpts = { - mutations: arrify(keys).map((key: entity.Key) => { + mutations: arrify(keys).map(key => { return { delete: entity.keyToKeyProto(key), }; @@ -399,12 +406,12 @@ class DatastoreRequest { } get( - keys: Entities, + keys: entity.Key | entity.Key[], options?: CreateReadStreamOptions - ): Promise; - get(keys: Entities, callback: GetCallback): void; + ): Promise; + get(keys: entity.Key | entity.Key[], callback: GetCallback): void; get( - keys: Entities, + keys: entity.Key | entity.Key[], options: CreateReadStreamOptions, callback: GetCallback ): void; @@ -494,10 +501,10 @@ class DatastoreRequest { * }); */ get( - keys: Entities, + keys: entity.Key | entity.Key[], optionsOrCallback?: CreateReadStreamOptions | GetCallback, cb?: GetCallback - ): void | Promise { + ): void | Promise { const options = typeof optionsOrCallback === 'object' && optionsOrCallback ? optionsOrCallback @@ -515,8 +522,8 @@ class DatastoreRequest { ); } - insert(entities: Entities): Promise; - insert(entities: Entities, callback: CallOptions): void; + insert(entities: Entities): Promise; + insert(entities: Entities, callback: InsertCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `insert`. * @@ -533,8 +540,8 @@ class DatastoreRequest { */ insert( entities: Entities, - callback?: CallOptions - ): void | Promise { + callback?: InsertCallback + ): void | Promise { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) .map((x: PrepareEntityObjectResponse) => { @@ -542,7 +549,7 @@ class DatastoreRequest { return x; }); - this.save(entities, callback); + this.save(entities, callback!); } runQuery(query: Query, options?: RunQueryOptions): Promise; @@ -703,7 +710,7 @@ class DatastoreRequest { query = extend(true, new Query(), query); const makeRequest = (query: Query) => { - const reqOpts: Any = { + const reqOpts: RequestOptions = { query: entity.queryToQueryProto(query), }; @@ -737,7 +744,7 @@ class DatastoreRequest { return; } - const info: Any = { + const info: RunQueryInfo = { moreResults: resp.batch.moreResults, }; @@ -745,7 +752,7 @@ class DatastoreRequest { info.endCursor = resp.batch.endCursor.toString('base64'); } - let entities: Any[] = []; + let entities: Entity[] = []; if (resp.batch.entityResults) { entities = entity.formatArray(resp.batch.entityResults); @@ -766,7 +773,7 @@ class DatastoreRequest { // The query is "NOT_FINISHED". Get the rest of the results. const offset = query.offsetVal === -1 ? 0 : query.offsetVal; - query.start(info.endCursor).offset(offset - resp.batch.skippedResults); + query.start(info.endCursor!).offset(offset - resp.batch.skippedResults); const limit = query.limitVal; if (limit && limit > -1) { @@ -784,8 +791,7 @@ class DatastoreRequest { return stream; } - save(entities: Entities): Promise; - save(entities: Entities, gaxOptions?: CallOptions): Promise; + save(entities: Entities, gaxOptions?: CallOptions): Promise; save( entities: Entities, gaxOptions: CallOptions, @@ -1005,7 +1011,7 @@ class DatastoreRequest { entities: Entities, gaxOptionsOrCallback?: CallOptions | SaveCallback, cb?: SaveCallback - ): void | Promise { + ): void | Promise { entities = arrify(entities); const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; @@ -1026,7 +1032,7 @@ class DatastoreRequest { .map(DatastoreRequest.prepareEntityObject_) .forEach((entityObject: Entity, index: number) => { const mutation: Mutation = {}; - let entityProto: EntityProtoObject = {}; + let entityProto: EntityProto = {}; let method = 'upsert'; if (entityObject.method) { @@ -1088,7 +1094,10 @@ class DatastoreRequest { mutations, }; - function onCommit(err?: Error | null, resp?: {mutationResults: [Entity]}) { + function onCommit( + err?: Error | null, + resp?: google.datastore.v1.ICommitResponse + ) { if (err || !resp) { callback(err, resp); return; @@ -1125,8 +1134,8 @@ class DatastoreRequest { ); } - update(entities: Entities): Promise; - update(entities: Entities, callback: CallOptions): void; + update(entities: Entities): Promise; + update(entities: Entities, callback: UpdateCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `update`. * @@ -1143,8 +1152,8 @@ class DatastoreRequest { */ update( entities: Entities, - callback?: CallOptions - ): void | Promise { + callback?: UpdateCallback + ): void | Promise { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) .map((x: PrepareEntityObjectResponse) => { @@ -1152,11 +1161,11 @@ class DatastoreRequest { return x; }); - this.save(entities, callback); + this.save(entities, callback!); } - upsert(entities: Entities): Promise; - upsert(entities: Entities, callback: CallOptions): void; + upsert(entities: Entities): Promise; + upsert(entities: Entities, callback: UpsertCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `upsert`. * @@ -1173,8 +1182,8 @@ class DatastoreRequest { */ upsert( entities: Entities, - callback?: CallOptions - ): void | Promise { + callback?: UpsertCallback + ): void | Promise { entities = arrify(entities) .map(DatastoreRequest.prepareEntityObject_) .map((x: PrepareEntityObjectResponse) => { @@ -1182,10 +1191,9 @@ class DatastoreRequest { return x; }); - this.save(entities, callback); + this.save(entities, callback!); } - request_(config: RequestConfig, callback: RequestCallback): void; /** * Make a request to the API endpoint. Properties to indicate a transactional * or non-transactional operation are added automatically. @@ -1198,7 +1206,7 @@ class DatastoreRequest { * * @private */ - request_(config: RequestConfig, callback?: RequestCallback): void { + request_(config: RequestConfig, callback: RequestCallback): void { const datastore = this.datastore; const isTransaction = this.id ? true : false; @@ -1248,9 +1256,7 @@ class DatastoreRequest { new gapic.v1[clientName](datastore.options) ); } - const gaxClient: Entities | undefined = datastore.clients_.get( - clientName - ); + const gaxClient = datastore.clients_.get(clientName); reqOpts = replaceProjectIdToken(reqOpts, projectId!); const gaxOpts = extend(true, {}, config.gaxOpts, { headers: { @@ -1263,21 +1269,13 @@ class DatastoreRequest { } } -// tslint:disable-next-line no-any -type Any = any; export interface BooleanObject { [key: string]: boolean; } export interface ConsistencyProtoCode { [key: string]: number; } -export type CommitResponse = [google.datastore.v1.ICommitResponse]; export type Entities = Entity | Entity[]; -export interface EntityProtoObject { - method?: string; - properties?: {[key: string]: ValueProto}; - key?: Keys; -} export interface EntityProtoReduceAccumulator { [key: string]: ValueProto; } @@ -1286,17 +1284,15 @@ export interface EntityProtoReduceData { excludeFromIndexes: ValueProto; name: string | number; } - -export interface AllocateIdsRequestResponse { - keys: KeyProto[]; - mutationResults?: Entities; -} -export type AllocateIdsResponse = [google.datastore.v1.AllocateIdsResponse]; +export type AllocateIdsResponse = [ + entity.Key[], + google.datastore.v1.IAllocateIdsResponse +]; export interface AllocateIdsCallback { ( a: Error | null, b: entity.Key[] | null, - c: AllocateIdsRequestResponse + c: google.datastore.v1.IAllocateIdsResponse ): void; } export interface AllocateIdsOptions { @@ -1307,16 +1303,13 @@ export interface CreateReadStreamOptions { consistency?: string; gaxOptions?: CallOptions; } -export interface CommitCallback { - (err?: Error | null, resp?: google.datastore.v1.CommitResponse): void; -} export interface GetCallback { - (...args: Entity[]): void; + (err?: Error | null, entity?: Entities): void; } +export type GetResponse = [Entities]; export type GetProjectIdErr = Error | null | undefined; -export type Keys = Entity | Entity[]; -export interface Mutation extends google.datastore.v1.IMutation { - [key: string]: Entity; +export interface Mutation { + [key: string]: EntityProto; } export interface PrepareEntityObject { [key: string]: google.datastore.v1.Key | undefined; @@ -1330,38 +1323,46 @@ export type ProjectId = string | null | undefined; export interface RequestCallback { ( a?: Error | null, - b?: AllocateIdsRequestResponse & - google.datastore.v1.ILookupResponse & - Entities + // tslint:disable-next-line no-any + b?: any ): void; } export interface RequestConfig { client: string; - gaxOpts?: number | CallOptions | KeyProto; + gaxOpts?: CallOptions; method: string; prepared?: boolean; - reqOpts?: Entity | RequestOptions; - gaxOptions?: never; + reqOpts?: RequestOptions; } export interface RequestOptions { - mutations?: [] | Array<{delete: KeyProto}> | Array<{}>; + mutations?: google.datastore.v1.IMutation[]; keys?: Entity; - readOptions?: {readConsistency?: number; transaction?: string | number}; + readOptions?: {readConsistency?: number; transaction?: string}; + partitionId?: google.datastore.v1.IPartitionId | null; transactionOptions?: { readOnly?: {}; readWrite?: {previousTransaction?: string}; - }; - transaction?: string | number; + } | null; + transaction?: string | null; mode?: string; - projectId?: string; + projectId?: ProjectId; + query?: QueryProto; } -export interface RunQueryStreamOptions { - gaxOptions?: CallOptions; - consistency?: 'strong' | 'eventual'; -} -export interface SaveCallback { - (a?: Error | null, b?: Entity): void; +export interface RunQueryStreamOptions extends RunQueryOptions {} +export interface CommitCallback { + (err?: Error | null, resp?: google.datastore.v1.ICommitResponse): void; } +export type CommitResponse = [google.datastore.v1.ICommitResponse]; +export interface SaveCallback extends CommitCallback {} +export type SaveResponse = CommitResponse; +export interface UpdateCallback extends CommitCallback {} +export type UpdateResponse = CommitResponse; +export interface UpsertCallback extends CommitCallback {} +export type UpsertResponse = CommitResponse; +export interface DeleteCallback extends CommitCallback {} +export type DeleteResponse = CommitResponse; +export interface InsertCallback extends CommitCallback {} +export type InsertResponse = CommitResponse; /*! Developer Documentation * diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 5dccf58487e..238ef06b3cf 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -23,7 +23,12 @@ import {google} from '../proto/datastore'; import {Datastore, TransactionOptions} from '.'; import {entity, Entity} from './entity'; import {Query} from './query'; -import {CommitResponse, DatastoreRequest, RequestOptions} from './request'; +import { + CommitCallback, + CommitResponse, + DatastoreRequest, + RequestOptions, +} from './request'; /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -497,7 +502,7 @@ class Transaction extends DatastoreRequest { callback(err, null, resp); return; } - this.id = resp.transaction; + this.id = resp!.transaction; callback(null, this, resp); } ); @@ -652,7 +657,6 @@ export type ModifiedEntities = Array<{ method: string; args: Entity[]; }>; -export type CommitCallback = google.datastore.v1.Datastore.CommitCallback; export type BeginTransactionResponse = [ google.datastore.v1.BeginTransactionResponse ]; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 6ea9f50edde..cbc763446d7 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -28,7 +28,7 @@ import * as ds from '../src'; import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; import {Query, QueryProto} from '../src/query.js'; import { - AllocateIdsRequestResponse, + AllocateIdsResponse, RequestConfig, RequestOptions, } from '../src/request'; @@ -252,11 +252,7 @@ describe('Request', () => { request.allocateIds( INCOMPLETE_KEY, OPTIONS, - ( - err: Error, - keys: entity.Key[], - resp: AllocateIdsRequestResponse - ) => { + (err: Error, keys: entity.Key[], resp: AllocateIdsResponse) => { assert.ifError(err); assert.deepStrictEqual(keys, [key]); assert.strictEqual(resp, API_RESPONSE); @@ -745,9 +741,9 @@ describe('Request', () => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'runQuery'); assert(is.empty(config.reqOpts!.readOptions)); - assert.strictEqual(config.reqOpts.query, queryProto); + assert.strictEqual(config.reqOpts!.query, queryProto); assert.strictEqual( - config.reqOpts.partitionId.namespaceId, + config.reqOpts!.partitionId!.namespaceId, query.namespace ); assert.strictEqual(config.gaxOpts, undefined); @@ -781,7 +777,7 @@ describe('Request', () => { it('should allow setting strong read consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); request.request_ = (config: RequestConfig) => { - assert.strictEqual(config.reqOpts.readOptions.readConsistency, 1); + assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 1); done(); }; @@ -794,7 +790,7 @@ describe('Request', () => { it('should allow setting strong eventual consistency', done => { sandbox.stub(entity, 'queryToQueryProto'); request.request_ = (config: RequestConfig) => { - assert.strictEqual(config.reqOpts.readOptions.readConsistency, 2); + assert.strictEqual(config.reqOpts!.readOptions!.readConsistency, 2); done(); }; @@ -912,7 +908,7 @@ describe('Request', () => { } else { assert.strictEqual(startCalled, true); assert.strictEqual(offsetCalled, true); - assert.strictEqual(config.reqOpts.query, queryProto); + assert.strictEqual(config.reqOpts!.query, queryProto); resp.batch.moreResults = 'MORE_RESULTS_AFTER_LIMIT'; callback(null, resp); } @@ -1257,19 +1253,19 @@ describe('Request', () => { it('should save with specific method', done => { request.request_ = (config: RequestConfig, callback: Function) => { - assert.strictEqual(config.reqOpts.mutations.length, 3); - assert(is.object(config.reqOpts.mutations[0].insert)); - assert(is.object(config.reqOpts.mutations[1].update)); - assert(is.object(config.reqOpts.mutations[2].upsert)); + assert.strictEqual(config.reqOpts!.mutations!.length, 3); + assert(is.object(config.reqOpts!.mutations![0].insert)); + assert(is.object(config.reqOpts!.mutations![1].update)); + assert(is.object(config.reqOpts!.mutations![2].upsert)); - const insert = config.reqOpts.mutations[0].insert; - assert.deepStrictEqual(insert.properties.k, {stringValue: 'v'}); + const insert = config.reqOpts!.mutations![0].insert!; + assert.deepStrictEqual(insert.properties!.k, {stringValue: 'v'}); - const update = config.reqOpts.mutations[1].update; - assert.deepStrictEqual(update.properties.k2, {stringValue: 'v2'}); + const update = config.reqOpts!.mutations![1].update!; + assert.deepStrictEqual(update.properties!.k2, {stringValue: 'v2'}); - const upsert = config.reqOpts.mutations[2].upsert; - assert.deepStrictEqual(upsert.properties.k3, {stringValue: 'v3'}); + const upsert = config.reqOpts!.mutations![2].upsert!; + assert.deepStrictEqual(upsert.properties!.k3, {stringValue: 'v3'}); callback(); }; @@ -1343,7 +1339,7 @@ describe('Request', () => { it('should allow setting the indexed value of a property', done => { request.request_ = (config: RequestConfig) => { - const property = config.reqOpts.mutations[0].upsert.properties.name; + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; assert.strictEqual(property.stringValue, 'value'); assert.strictEqual(property.excludeFromIndexes, true); done(); @@ -1366,9 +1362,9 @@ describe('Request', () => { it('should allow setting the indexed value on arrays', done => { request.request_ = (config: RequestConfig) => { - const property = config.reqOpts.mutations[0].upsert.properties.name; + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; - property.arrayValue.values.forEach((value: Any) => { + property.arrayValue!.values!.forEach((value: Any) => { assert.strictEqual(value.excludeFromIndexes, true); }); @@ -1447,9 +1443,9 @@ describe('Request', () => { }; request.request_ = (config: RequestConfig) => { - const properties = config.reqOpts.mutations[0].upsert.properties; - Object.keys(properties).forEach(path => { - validateIndex(properties[path]); + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); }); done(); }; @@ -1521,9 +1517,9 @@ describe('Request', () => { }; request.request_ = (config: RequestConfig) => { - const properties = config.reqOpts.mutations[0].upsert.properties; - Object.keys(properties).forEach(path => { - validateIndex(properties[path]); + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); }); done(); }; diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 439f65bed13..66eecaf263e 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -164,7 +164,7 @@ describe('Transaction', () => { transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'commit'); - assert.strictEqual(config.gaxOptions, undefined); + assert.deepStrictEqual(config.gaxOpts, {}); done(); }; transaction.commit(); @@ -393,7 +393,7 @@ describe('Transaction', () => { transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); assert.strictEqual(config.method, 'rollback'); - assert.strictEqual(config.gaxOptions, undefined); + assert.deepStrictEqual(config.gaxOpts, {}); done(); }; transaction.rollback(); From 53d108c26ef05c0c6f33a8093efd3c0e2bd72a41 Mon Sep 17 00:00:00 2001 From: Stephen Date: Sun, 25 Aug 2019 21:27:49 -0400 Subject: [PATCH 420/820] feat: support key re-use from serialized path (#474) --- handwritten/nodejs-datastore/src/entity.ts | 40 +++++++++++++++++++++ handwritten/nodejs-datastore/test/entity.ts | 26 ++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 134f1aeec72..cd2c7d02208 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -223,6 +223,16 @@ export namespace entity { * namespace: 'My-NS', * path: ['Company', 123] * }); + * + * @example Serialize the key for later re-use. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key({ + * namespace: 'My-NS', + * path: ['Company', 123] + * }); + * // Later... + * const key = datastore.key(key.serialized); */ export class Key { namespace?: string; @@ -273,6 +283,36 @@ export namespace entity { }, }); } + + /** + * Access the `serialized` property for a library-compatible way to re-use a + * key. + * + * @returns {object} + * + * @example + * const key = datastore.key({ + * namespace: 'My-NS', + * path: ['Company', 123] + * }); + * + * // Later... + * const key = datastore.key(key.serialized); + */ + get serialized() { + const serializedKey = { + namespace: this.namespace, + path: [this.kind, this.name || new Int(this.id!)], + }; + + if (this.parent) { + serializedKey.path = this.parent.serialized.path.concat( + serializedKey.path + ); + } + + return serializedKey; + } } /** diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index f1df934707a..d89b0845a46 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -161,6 +161,32 @@ describe('entity', () => { assert.deepStrictEqual(key.path, ['GrandParentKind', 1, 'ParentKind', 1]); }); + + it('should always compute the correct serialized path', () => { + const key = new entity.Key({ + namespace: 'namespace', + path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + }); + assert.deepStrictEqual(key.serialized, { + namespace: 'namespace', + path: [ + 'ParentKind', + 'name', + 'Kind', + new entity.Int(1).valueOf(), + 'SubKind', + new entity.Int('1').valueOf(), + ], + }); + }); + + it('should allow re-creating a Key from the serialized path', () => { + const key = new entity.Key({ + path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + }); + const key2 = new entity.Key(key.serialized); + assert.deepStrictEqual(key.serialized, key2.serialized); + }); }); describe('isDsKey', () => { From bee16cdaf3493a5cb2c91699d7dc3765a99c2c86 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 28 Aug 2019 13:51:40 -0700 Subject: [PATCH 421/820] fix: update node version in HTTP headers (#475) --- .../nodejs-datastore/src/v1/datastore_client.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 10a9483ef16..27c4f608921 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -86,7 +86,7 @@ class DatastoreClient { // Determine the client header string. const clientHeader = [ - `gl-node/${process.version}`, + `gl-node/${process.versions.node}`, `grpc/${gaxGrpc.grpcVersion}`, `gax/${gax.version}`, `gapic/${VERSION}`, diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0bacd67c2ea..4c6f5e87af6 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-08-02T11:13:13.739342Z", + "updateTime": "2019-08-21T11:13:01.476057Z", "sources": [ { "generator": { "name": "artman", - "version": "0.32.0", - "dockerImage": "googleapis/artman@sha256:6929f343c400122d85818195b18613330a12a014bffc1e08499550d40571479d" + "version": "0.34.0", + "dockerImage": "googleapis/artman@sha256:38a27ba6245f96c3e86df7acb2ebcc33b4f186d9e475efe2d64303aec3d4e0ea" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "3a40d3a5f5e5a33fd49888a8a33ed021f65c0ccf", - "internalRef": "261297518" + "sha": "11592a15391951348a64f5c303399733b1c5b3b2", + "internalRef": "264425502" } }, { From 31c513221afd2489e1e0ed33b885236a15455c94 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 29 Aug 2019 18:36:06 +0300 Subject: [PATCH 422/820] chore(deps): update dependency typescript to ~3.6.0 (#482) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e571dd39b2c..c69988c6e57 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -90,6 +90,6 @@ "proxyquire": "^2.1.0", "sinon": "^7.3.2", "tmp": "0.1.0", - "typescript": "~3.5.0" + "typescript": "~3.6.0" } } From fbf9322d6414d81bdf5d9c0c3258b961d0538378 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 3 Sep 2019 14:17:52 -0700 Subject: [PATCH 423/820] docs: update link to client docs --- handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/README.md | 4 +--- .../protos/google/datastore/v1/datastore.proto | 2 +- .../protos/google/datastore/v1/entity.proto | 2 +- .../protos/google/datastore/v1/query.proto | 2 +- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 492f309f2bc..b41aff5d4ef 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,5 +1,5 @@ /*! - * Copyright 2018 Google LLC. + * Copyright 2018 Google LLC. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index c0f756189ce..80f46ee03f9 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -137,12 +137,10 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://googleapis.dev/nodejs/datastore/latest#reference +[client-docs]: https://googleapis.dev/nodejs/datastore/latest [product-docs]: https://cloud.google.com/datastore [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project [billing]: https://support.google.com/cloud/answer/6293499#enable-billing [enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com [auth]: https://cloud.google.com/docs/authentication/getting-started - - diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 1fe73f1c8a0..51d69acb9db 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index b778b95cfba..9decd2b5380 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 341de6f9ac6..872612c5dd2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 4c6f5e87af6..3e61a8b549d 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-08-21T11:13:01.476057Z", + "updateTime": "2019-08-29T11:13:16.620675Z", "sources": [ { "generator": { "name": "artman", - "version": "0.34.0", - "dockerImage": "googleapis/artman@sha256:38a27ba6245f96c3e86df7acb2ebcc33b4f186d9e475efe2d64303aec3d4e0ea" + "version": "0.35.1", + "dockerImage": "googleapis/artman@sha256:b11c7ea0d0831c54016fb50f4b796d24d1971439b30fbc32a369ba1ac887c384" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "11592a15391951348a64f5c303399733b1c5b3b2", - "internalRef": "264425502" + "sha": "e121a35579e73377f998c11bcc09ba0486736404", + "internalRef": "265953539" } }, { From f809162b9aaa7948aeb22288c40188727b2ffaf6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 4 Sep 2019 08:51:29 -0700 Subject: [PATCH 424/820] feat: load protos from JSON, grpc-fallback support (#485) --- .../nodejs-datastore/protos/protos.json | 292 +++++++++--------- handwritten/nodejs-datastore/src/browser.js | 21 ++ .../src/v1/datastore_client.js | 69 +++-- .../src/v1/datastore_proto_list.json | 3 + handwritten/nodejs-datastore/synth.metadata | 10 +- handwritten/nodejs-datastore/test/gapic-v1.js | 5 + .../nodejs-datastore/webpack.config.js | 46 +++ 7 files changed, 273 insertions(+), 173 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/browser.js create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_proto_list.json create mode 100644 handwritten/nodejs-datastore/webpack.config.js diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index ea8371e1a65..69acf8213f0 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -14,152 +14,6 @@ "php_namespace": "Google\\Cloud\\Datastore\\V1" }, "nested": { - "PartitionId": { - "fields": { - "projectId": { - "type": "string", - "id": 2 - }, - "namespaceId": { - "type": "string", - "id": 4 - } - } - }, - "Key": { - "fields": { - "partitionId": { - "type": "PartitionId", - "id": 1 - }, - "path": { - "rule": "repeated", - "type": "PathElement", - "id": 2 - } - }, - "nested": { - "PathElement": { - "oneofs": { - "idType": { - "oneof": [ - "id", - "name" - ] - } - }, - "fields": { - "kind": { - "type": "string", - "id": 1 - }, - "id": { - "type": "int64", - "id": 2 - }, - "name": { - "type": "string", - "id": 3 - } - } - } - } - }, - "ArrayValue": { - "fields": { - "values": { - "rule": "repeated", - "type": "Value", - "id": 1 - } - } - }, - "Value": { - "oneofs": { - "valueType": { - "oneof": [ - "nullValue", - "booleanValue", - "integerValue", - "doubleValue", - "timestampValue", - "keyValue", - "stringValue", - "blobValue", - "geoPointValue", - "entityValue", - "arrayValue" - ] - } - }, - "fields": { - "nullValue": { - "type": "google.protobuf.NullValue", - "id": 11 - }, - "booleanValue": { - "type": "bool", - "id": 1 - }, - "integerValue": { - "type": "int64", - "id": 2 - }, - "doubleValue": { - "type": "double", - "id": 3 - }, - "timestampValue": { - "type": "google.protobuf.Timestamp", - "id": 10 - }, - "keyValue": { - "type": "Key", - "id": 5 - }, - "stringValue": { - "type": "string", - "id": 17 - }, - "blobValue": { - "type": "bytes", - "id": 18 - }, - "geoPointValue": { - "type": "google.type.LatLng", - "id": 8 - }, - "entityValue": { - "type": "Entity", - "id": 6 - }, - "arrayValue": { - "type": "ArrayValue", - "id": 9 - }, - "meaning": { - "type": "int32", - "id": 14 - }, - "excludeFromIndexes": { - "type": "bool", - "id": 19 - } - } - }, - "Entity": { - "fields": { - "key": { - "type": "Key", - "id": 1 - }, - "properties": { - "keyType": "string", - "type": "Value", - "id": 3 - } - } - }, "Datastore": { "methods": { "Lookup": { @@ -544,6 +398,152 @@ } } }, + "PartitionId": { + "fields": { + "projectId": { + "type": "string", + "id": 2 + }, + "namespaceId": { + "type": "string", + "id": 4 + } + } + }, + "Key": { + "fields": { + "partitionId": { + "type": "PartitionId", + "id": 1 + }, + "path": { + "rule": "repeated", + "type": "PathElement", + "id": 2 + } + }, + "nested": { + "PathElement": { + "oneofs": { + "idType": { + "oneof": [ + "id", + "name" + ] + } + }, + "fields": { + "kind": { + "type": "string", + "id": 1 + }, + "id": { + "type": "int64", + "id": 2 + }, + "name": { + "type": "string", + "id": 3 + } + } + } + } + }, + "ArrayValue": { + "fields": { + "values": { + "rule": "repeated", + "type": "Value", + "id": 1 + } + } + }, + "Value": { + "oneofs": { + "valueType": { + "oneof": [ + "nullValue", + "booleanValue", + "integerValue", + "doubleValue", + "timestampValue", + "keyValue", + "stringValue", + "blobValue", + "geoPointValue", + "entityValue", + "arrayValue" + ] + } + }, + "fields": { + "nullValue": { + "type": "google.protobuf.NullValue", + "id": 11 + }, + "booleanValue": { + "type": "bool", + "id": 1 + }, + "integerValue": { + "type": "int64", + "id": 2 + }, + "doubleValue": { + "type": "double", + "id": 3 + }, + "timestampValue": { + "type": "google.protobuf.Timestamp", + "id": 10 + }, + "keyValue": { + "type": "Key", + "id": 5 + }, + "stringValue": { + "type": "string", + "id": 17 + }, + "blobValue": { + "type": "bytes", + "id": 18 + }, + "geoPointValue": { + "type": "google.type.LatLng", + "id": 8 + }, + "entityValue": { + "type": "Entity", + "id": 6 + }, + "arrayValue": { + "type": "ArrayValue", + "id": 9 + }, + "meaning": { + "type": "int32", + "id": 14 + }, + "excludeFromIndexes": { + "type": "bool", + "id": 19 + } + } + }, + "Entity": { + "fields": { + "key": { + "type": "Key", + "id": 1 + }, + "properties": { + "keyType": "string", + "type": "Value", + "id": 3 + } + } + }, "EntityResult": { "fields": { "entity": { diff --git a/handwritten/nodejs-datastore/src/browser.js b/handwritten/nodejs-datastore/src/browser.js new file mode 100644 index 00000000000..ddbcd7ecb9a --- /dev/null +++ b/handwritten/nodejs-datastore/src/browser.js @@ -0,0 +1,21 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// Set a flag that we are running in a browser bundle. +global.isBrowser = true; + +// Re-export all exports from ./index.js. +module.exports = require('./index'); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 27c4f608921..017c323f3b8 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -63,6 +63,16 @@ class DatastoreClient { opts = opts || {}; this._descriptors = {}; + if (global.isBrowser) { + // If we're in browser, we use gRPC fallback. + opts.fallback = true; + } + + // If we are in browser, we are already using fallback because of the + // "browser" field in package.json. + // But if we were explicitly requested to use fallback, let's do it now. + const gaxModule = !global.isBrowser && opts.fallback ? gax.fallback : gax; + const servicePath = opts.servicePath || opts.apiEndpoint || this.constructor.servicePath; @@ -79,26 +89,41 @@ class DatastoreClient { // Create a `gaxGrpc` object, with any grpc-specific options // sent to the client. opts.scopes = this.constructor.scopes; - const gaxGrpc = new gax.GrpcClient(opts); + const gaxGrpc = new gaxModule.GrpcClient(opts); // Save the auth object to the client, for use by other methods. this.auth = gaxGrpc.auth; // Determine the client header string. - const clientHeader = [ - `gl-node/${process.versions.node}`, - `grpc/${gaxGrpc.grpcVersion}`, - `gax/${gax.version}`, - `gapic/${VERSION}`, - ]; + const clientHeader = []; + + if (typeof process !== 'undefined' && 'versions' in process) { + clientHeader.push(`gl-node/${process.versions.node}`); + } + clientHeader.push(`gax/${gaxModule.version}`); + if (opts.fallback) { + clientHeader.push(`gl-web/${gaxModule.version}`); + } else { + clientHeader.push(`grpc/${gaxGrpc.grpcVersion}`); + } + clientHeader.push(`gapic/${VERSION}`); if (opts.libName && opts.libVersion) { clientHeader.push(`${opts.libName}/${opts.libVersion}`); } // Load the applicable protos. + // For Node.js, pass the path to JSON proto file. + // For browsers, pass the JSON content. + + const nodejsProtoPath = path.join( + __dirname, + '..', + '..', + 'protos', + 'protos.json' + ); const protos = gaxGrpc.loadProto( - path.join(__dirname, '..', '..', 'protos'), - ['google/datastore/v1/datastore.proto'] + opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath ); // Put together the default options sent with requests. @@ -117,7 +142,9 @@ class DatastoreClient { // Put together the "service stub" for // google.datastore.v1.Datastore. const datastoreStub = gaxGrpc.createStub( - protos.google.datastore.v1.Datastore, + opts.fallback + ? protos.lookupService('google.datastore.v1.Datastore') + : protos.google.datastore.v1.Datastore, opts ); @@ -133,18 +160,16 @@ class DatastoreClient { 'reserveIds', ]; for (const methodName of datastoreStubMethods) { - this._innerApiCalls[methodName] = gax.createApiCall( - datastoreStub.then( - stub => - function() { - const args = Array.prototype.slice.call(arguments, 0); - return stub[methodName].apply(stub, args); - }, - err => - function() { - throw err; - } - ), + const innerCallPromise = datastoreStub.then( + stub => (...args) => { + return stub[methodName].apply(stub, args); + }, + err => () => { + throw err; + } + ); + this._innerApiCalls[methodName] = gaxModule.createApiCall( + innerCallPromise, defaults[methodName], null ); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json new file mode 100644 index 00000000000..5004dc2330e --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -0,0 +1,3 @@ +[ + "../../protos/google/datastore/v1/datastore.proto" +] diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 3e61a8b549d..cf7385866fa 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-08-29T11:13:16.620675Z", + "updateTime": "2019-09-04T11:12:58.794290Z", "sources": [ { "generator": { "name": "artman", - "version": "0.35.1", - "dockerImage": "googleapis/artman@sha256:b11c7ea0d0831c54016fb50f4b796d24d1971439b30fbc32a369ba1ac887c384" + "version": "0.36.2", + "dockerImage": "googleapis/artman@sha256:0e6f3a668cd68afc768ecbe08817cf6e56a0e64fcbdb1c58c3b97492d12418a1" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "e121a35579e73377f998c11bcc09ba0486736404", - "internalRef": "265953539" + "sha": "a2158681f6e30c5fd9446eb1fd7b5021a6d48bfa", + "internalRef": "266999433" } }, { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 000067e4024..02f55d91115 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -44,6 +44,11 @@ describe('DatastoreClient', () => { assert(client); }); + it('should create a client with gRPC fallback', () => { + const client = new datastoreModule.v1.DatastoreClient({fallback: true}); + assert(client); + }); + describe('lookup', () => { it('invokes lookup without error', done => { const client = new datastoreModule.v1.DatastoreClient({ diff --git a/handwritten/nodejs-datastore/webpack.config.js b/handwritten/nodejs-datastore/webpack.config.js new file mode 100644 index 00000000000..1d87f606641 --- /dev/null +++ b/handwritten/nodejs-datastore/webpack.config.js @@ -0,0 +1,46 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module.exports = { + entry: './src/browser.js', + output: { + library: 'datastore', + filename: './datastore.js', + }, + node: { + child_process: 'empty', + fs: 'empty', + crypto: 'empty', + }, + resolve: { + extensions: ['.js', '.json'], + }, + module: { + rules: [ + { + test: /node_modules[\\/]retry-request[\\/]/, + use: 'null-loader', + }, + { + test: /node_modules[\\/]https-proxy-agent[\\/]/, + use: 'null-loader', + }, + { + test: /node_modules[\\/]gtoken[\\/]/, + use: 'null-loader', + }, + ], + }, + mode: 'production', +}; From 532494e3547075f76d55776c0927a8fbefffde6e Mon Sep 17 00:00:00 2001 From: vishald123 <44579906+vishald123@users.noreply.github.com> Date: Thu, 5 Sep 2019 10:50:50 -0400 Subject: [PATCH 425/820] chore(docs): add an Error handling sample (#466) --- handwritten/nodejs-datastore/samples/error.js | 52 +++++++++++++++++++ .../samples/test/error.test.js | 33 ++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 handwritten/nodejs-datastore/samples/error.js create mode 100644 handwritten/nodejs-datastore/samples/test/error.test.js diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js new file mode 100644 index 00000000000..78932567ef4 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/error.js @@ -0,0 +1,52 @@ +/** + * Copyright 2019 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +// sample-metadata +// title: error sample +// description: sample show how to handle and process error +// usage: node error.js + +const {Datastore} = require('@google-cloud/datastore'); + +// [START error] +function main() { + // Creates a client + const datastore = new Datastore(); + + const query = datastore.createQuery(['Company']).start('badrequest'); + + async function runQuery() { + try { + const [result] = await datastore.runQuery(query); + // etc., etc. + return result; + } catch (error) { + // do something with error. + console.log(error.code); // 3 + //Forward the error to caller + throw error; + } + } + + runQuery().catch(err => { + console.log(err.message); // "Error parsing protocol message" + }); + // [END error] +} + +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js new file mode 100644 index 00000000000..87b9138cd43 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -0,0 +1,33 @@ +/** + * Copyright 2019 Google LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const assert = require('assert'); +const {execSync} = require('child_process'); +const exec = cmd => + execSync(cmd, { + encoding: 'utf8', + }); + +describe('error', () => { + it('should have an error', done => { + const errorCode = 3; + const output = exec(`node error.js`); + assert.strictEqual(parseInt(output[0]), errorCode); + done(); + }); +}); From 94d595d5ad1840bc80e2d6c47784be0f23a2efa5 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 6 Sep 2019 11:18:32 -0700 Subject: [PATCH 426/820] docs: update README with new error.js sample --- handwritten/nodejs-datastore/README.md | 1 + handwritten/nodejs-datastore/samples/README.md | 18 ++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 6 +++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 80f46ee03f9..b1971d412a8 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -96,6 +96,7 @@ has instructions for running the samples. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | +| Error | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 26cc9a0a4ba..46a186b323a 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -13,6 +13,7 @@ * [Before you begin](#before-you-begin) * [Samples](#samples) * [Concepts](#concepts) + * [Error](#error) * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) @@ -46,6 +47,23 @@ __Usage:__ +### Error + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) + +__Usage:__ + + +`node error.js` + + +----- + + + + ### Quickstart View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index cf7385866fa..14381994258 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-09-04T11:12:58.794290Z", + "updateTime": "2019-09-06T11:11:58.081659Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "a2158681f6e30c5fd9446eb1fd7b5021a6d48bfa", - "internalRef": "266999433" + "sha": "960b76b1f0c46d12610088977d1129cc7405f3dc", + "internalRef": "267478864" } }, { From 72064e103a99819e237587a52c90a083e919f313 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 6 Sep 2019 23:10:57 +0300 Subject: [PATCH 427/820] chore(deps): update dependency eslint-plugin-node to v10 (#487) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c69988c6e57..0eda1167a54 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -73,7 +73,7 @@ "codecov": "^3.5.0", "eslint": "^6.0.0", "eslint-config-prettier": "^6.0.0", - "eslint-plugin-node": "^9.0.1", + "eslint-plugin-node": "^10.0.0", "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", "gts": "^1.0.0", From ee062e599802526019c17a5e784c461f1950f413 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Fri, 6 Sep 2019 18:11:39 -0400 Subject: [PATCH 428/820] update .nycrc ignore rules (#490) --- handwritten/nodejs-datastore/.nycrc | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index 83a421a0628..23e322204ec 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -6,6 +6,7 @@ "**/.coverage", "**/apis", "**/benchmark", + "**/conformance", "**/docs", "**/samples", "**/scripts", From 392b8b03d2787b0cfab7f0b0553f911e297706e7 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Mon, 9 Sep 2019 23:08:06 +0530 Subject: [PATCH 429/820] fix: added overload method for transaction.createQuery to handle namespace issue (#486) --- handwritten/nodejs-datastore/src/index.ts | 2 +- .../nodejs-datastore/src/transaction.ts | 42 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f8464b3a9fc..34589c24d9d 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -642,7 +642,7 @@ class Datastore extends DatastoreRequest { kind?: string | string[] ): Query { let namespace = namespaceOrKind as string; - if (arguments.length < 2) { + if (!kind) { kind = namespaceOrKind; namespace = this.namespace!; } diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 238ef06b3cf..8e0daad8758 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -262,6 +262,10 @@ class Transaction extends DatastoreRequest { ); } + createQuery(kind?: string): Query; + createQuery(kind?: string[]): Query; + createQuery(namespace: string, kind: string): Query; + createQuery(namespace: string, kind: string[]): Query; /** * Create a query for the specified kind. See {module:datastore/query} for all * of the available methods. @@ -284,8 +288,33 @@ class Transaction extends DatastoreRequest { * if (err) { * // Error handling omitted. * } + * const ancestorKey = datastore.key(['ParentCompany', 'Alphabet']); * - * const query = transaction.createQuery('Company'); + * const query = transaction.createQuery('Company') + * .hasAncestor(ancestorKey); + * + * query.run((err, entities) => { + * if (err) { + * // Error handling omitted. + * } + * + * transaction.commit((err) => { + * if (!err) { + * // Transaction committed successfully. + * } + * }); + * }); + * }); + * + * // Run the query inside the transaction.with namespace + * transaction.run((err) => { + * if (err) { + * // Error handling omitted. + * } + * const ancestorKey = datastore.key(['ParentCompany', 'Alphabet']); + * + * const query = transaction.createQuery('CompanyNamespace', 'Company') + * .hasAncestor(ancestorKey); * * query.run((err, entities) => { * if (err) { @@ -300,8 +329,15 @@ class Transaction extends DatastoreRequest { * }); * }); */ - createQuery(namespace: string, kind?: string | string[]): Query { - return this.datastore.createQuery.call(this, namespace, kind as string[]); + createQuery( + namespaceOrKind?: string | string[], + kind?: string | string[] + ): Query { + return this.datastore.createQuery.call( + this, + namespaceOrKind as string, + kind as string[] + ); } delete(): Promise; From 261a360f36779a4a160f3d50606c9a434013f4fb Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Wed, 11 Sep 2019 15:13:36 -0400 Subject: [PATCH 430/820] fix: refactor and clean up types (#476) --- handwritten/nodejs-datastore/src/entity.ts | 1 + handwritten/nodejs-datastore/src/query.ts | 4 +-- .../nodejs-datastore/src/transaction.ts | 32 +++++++++---------- .../nodejs-datastore/system-test/datastore.ts | 2 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index cd2c7d02208..1be2e2e7fba 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -1185,6 +1185,7 @@ export interface EntityProto { // tslint:disable-next-line no-any export type Entity = any; +export type Entities = Entity | Entity[]; interface KeyProtoPathElement extends google.datastore.v1.Key.IPathElement { // tslint:disable-next-line no-any diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 2b3037a998f..521f9d0a0cd 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -448,13 +448,13 @@ class Query { optionsOrCallback?: RunQueryOptions | RunQueryCallback, cb?: RunQueryCallback ): void | Promise { - const query = this as Query; + const query = this; const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; const runQuery = this.scope!.runQuery.bind(this.scope); - return (runQuery as Function)(query, options, callback); + return runQuery(query, options, callback); } /** diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 8e0daad8758..d6a5fd55119 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -21,7 +21,7 @@ import {CallOptions} from 'google-gax'; import {google} from '../proto/datastore'; import {Datastore, TransactionOptions} from '.'; -import {entity, Entity} from './entity'; +import {entity, Entity, Entities} from './entity'; import {Query} from './query'; import { CommitCallback, @@ -340,8 +340,6 @@ class Transaction extends DatastoreRequest { ); } - delete(): Promise; - delete(entities: Entities): void; /** * Delete all entities identified with the specified key(s) in the current * transaction. @@ -374,7 +372,8 @@ class Transaction extends DatastoreRequest { * }); * }); */ - delete(entities?: Entities): void | Promise { + // tslint:disable-next-line no-any + delete(entities?: Entities): any { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { @@ -386,9 +385,8 @@ class Transaction extends DatastoreRequest { }); } - rollback(): void; rollback(callback: RollbackCallback): void; - rollback(gaxOptions: CallOptions): Promise; + rollback(gaxOptions?: CallOptions): Promise; rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; /** * Reverse a transaction remotely and finalize the current transaction @@ -426,7 +424,7 @@ class Transaction extends DatastoreRequest { */ rollback( gaxOptionsOrCallback?: CallOptions | RollbackCallback, - cb?: Function + cb?: RollbackCallback ): void | Promise { const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; @@ -446,7 +444,7 @@ class Transaction extends DatastoreRequest { ); } - run(options?: RunOptions): Promise; + run(options?: RunOptions): Promise; run(callback?: RunCallback): void; run(options?: RunOptions, callback?: RunCallback): void; /** @@ -500,9 +498,9 @@ class Transaction extends DatastoreRequest { * }); */ run( - optionsOrCallback?: RunOptions | RunCallback | Entity, + optionsOrCallback?: RunOptions | RunCallback, cb?: RunCallback - ): void | Promise { + ): void | Promise { const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = @@ -687,24 +685,26 @@ class Transaction extends DatastoreRequest { } } -export type Entities = Entity | Entity[]; export type ModifiedEntities = Array<{ entity: {key: Entity}; method: string; args: Entity[]; }>; -export type BeginTransactionResponse = [ - google.datastore.v1.BeginTransactionResponse +export type RunResponse = [ + Transaction, + google.datastore.v1.IBeginTransactionResponse ]; export interface RunCallback { ( error: Error | null, transaction: Transaction | null, - response?: google.datastore.v1.BeginTransactionResponse + response?: google.datastore.v1.IBeginTransactionResponse ): void; } -export type RollbackCallback = google.datastore.v1.Datastore.RollbackCallback; -export type RollbackResponse = [google.datastore.v1.RollbackResponse]; +export interface RollbackCallback { + (error: Error | null, response?: google.datastore.v1.IRollbackResponse): void; +} +export type RollbackResponse = [google.datastore.v1.IRollbackResponse]; export interface RunOptions { readOnly?: boolean; transactionId?: string; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 2b1dddf76ae..4b4510f227d 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -693,7 +693,7 @@ describe('Datastore', () => { await transaction.run(); transaction.delete(deleteKey); - await transaction.save([ + transaction.save([ { key, data: {rating: 10}, From ea511497b7b2d2c6e8ddf48d38418aabc6d67744 Mon Sep 17 00:00:00 2001 From: praveenqlogic01 <50827134+praveenqlogic01@users.noreply.github.com> Date: Thu, 12 Sep 2019 01:27:41 +0530 Subject: [PATCH 431/820] feat: add support for auto-unindex (#453) --- handwritten/nodejs-datastore/src/entity.ts | 50 +++++++ handwritten/nodejs-datastore/src/request.ts | 40 +++++- .../nodejs-datastore/system-test/datastore.ts | 55 +++++++ handwritten/nodejs-datastore/test/request.ts | 136 ++++++++++++++++++ 4 files changed, 278 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 1be2e2e7fba..56d5b11093c 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -19,6 +19,7 @@ import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto} from './query'; import {PathType} from '.'; +import {Entities} from './request'; import * as Protobuf from 'protobufjs'; import * as path from 'path'; import * as appengine from '../proto/app_engine_key'; @@ -740,6 +741,55 @@ export namespace entity { }); } + /** + * Find the properties which value size is large than 1500 bytes, + * with excludeLargeProperties enabled, automatically exclude properties from indexing. + * This will allow storing string values larger than 1500 bytes + * + * @param entities Datastore key object(s). + * @param path namespace of provided entity properties + * @param properties properties which value size is large than 1500 bytes + */ + export function findLargeProperties_( + entities: Entities, + path: string, + properties: string[] = [] + ) { + const MAX_DATASTORE_VALUE_LENGTH = 1500; + if (Array.isArray(entities)) { + for (const entry of entities) { + if (entry.name && entry.value) { + if ( + is.string(entry.value) && + Buffer.from(entry.value).length > MAX_DATASTORE_VALUE_LENGTH + ) { + entry.excludeFromIndexes = true; + } else { + continue; + } + } + findLargeProperties_(entry, path.concat('[]'), properties); + } + } else if (is.object(entities)) { + const keys = Object.keys(entities); + for (const key of keys) { + findLargeProperties_( + entities[key], + path.concat(`${path ? '.' : ''}${key}`), + properties + ); + } + } else if ( + is.string(entities) && + Buffer.from(entities).length > MAX_DATASTORE_VALUE_LENGTH + ) { + if (properties.indexOf(path) < 0) { + properties.push(path); + } + } + return properties; + } + /** * Check if a key is complete. * diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 83748f98233..46d9cfde0df 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -811,7 +811,10 @@ class DatastoreRequest { * * By default, all properties are indexed. To prevent a property from being * included in *all* indexes, you must supply an `excludeFromIndexes` array. - * See below for an example. + * + * To prevent large properties from being included in *all* indexes, you must supply + * `excludeLargeProperties: true`. + * See below for an example. * * @borrows {@link Transaction#save} as save * @@ -822,6 +825,8 @@ class DatastoreRequest { * @param {string[]} [entities.excludeFromIndexes] Exclude properties from * indexing using a simple JSON path notation. See the example below to * see how to target properties at different levels of nesting within your + * @param {boolean} [entities.excludeLargeProperties] Automatically exclude + * large properties from indexing. It help in storing large values. * @param {string} [entities.method] Explicit method to use, either 'insert', * 'update', or 'upsert'. * @param {object} entities.data Data to save with the provided key. @@ -963,6 +968,28 @@ class DatastoreRequest { * }; * * datastore.save(entity, (err, apiResponse) => {}); + * //- + * // Use boolean `excludeLargeProperties`, to auto exclude Large properties from indexing. + * // This will allow storing string values larger than 1500 bytes. + * //- + * const entity = { + * key: datastore.key('Company'), + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * 'Long string (...)', + * { + * description: 'Long string (...)' + * } + * ] + * }, + * excludeLargeProperties: true + * }; + * + * datastore.save(entity, (err, apiResponse) => {}); * * //- * // Save multiple entities at once. @@ -1045,6 +1072,14 @@ class DatastoreRequest { } } + if (entityObject.excludeLargeProperties) { + entityObject.excludeFromIndexes = entity.findLargeProperties_( + entityObject.data, + '', + entityObject.excludeFromIndexes + ); + } + if (!entity.isKeyComplete(entityObject.key)) { insertIndexes[index] = true; } @@ -1107,7 +1142,6 @@ class DatastoreRequest { if (!result.key) { return; } - if (insertIndexes[index]) { const id = entity.keyFromKeyProto(result.key).id; entities[index].key.id = id; @@ -1128,7 +1162,7 @@ class DatastoreRequest { client: 'DatastoreClient', method: 'commit', reqOpts, - gaxOpts: gaxOptions || {}, + gaxOpts: gaxOptions, }, onCommit ); diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 4b4510f227d..a781a228535 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -192,6 +192,61 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should auto remove index with excludeLargeProperties enabled', async () => { + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post2']); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + await datastore.save({ + key: postKey, + data, + excludeLargeProperties: true, + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(postKey); + }); + it('should save/get/delete with a key name', async () => { const postKey = datastore.key(['Post', 'post1']); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index cbc763446d7..ae2f07b6b51 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -1542,6 +1542,142 @@ describe('Request', () => { ); }); + it('should allow setting the indexed value on arrays', done => { + request.request_ = (config: RequestConfig) => { + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + + property.arrayValue!.values!.forEach((value: Any) => { + assert.strictEqual(value.excludeFromIndexes, true); + }); + + done(); + }; + + request.save( + { + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); + }); + + it('should prepare excludeFromIndexes array for large values', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const excludeFromIndexes = [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ]; + + entity.entityToEntityProto = entity => { + return (entity as unknown) as EntityProto; + }; + request.request_ = (config: RequestConfig) => { + assert.strictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity) + .excludeLargeProperties, + true + ); + assert.deepStrictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity).excludeFromIndexes, + excludeFromIndexes + ); + done(); + }; + + request.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); + + it('should allow auto setting the indexed value of a property with excludeLargeProperties', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = [ + { + name: 'name', + value: longString, + }, + { + name: 'description', + value: 'value', + }, + ]; + + request.request_ = (config: RequestConfig) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties!.name + .excludeFromIndexes, + true + ); + done(); + }; + + request.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); + it('should assign ID on keys without them', done => { const incompleteKey = new entity.Key({path: ['Incomplete']}); const incompleteKey2 = new entity.Key({path: ['Incomplete']}); From d02ee2247eb8c8286ee8637549069326268cabe8 Mon Sep 17 00:00:00 2001 From: Dave Gramlich Date: Wed, 11 Sep 2019 16:23:16 -0400 Subject: [PATCH 432/820] fix: emit encoding errors on user stream (#492) --- handwritten/nodejs-datastore/src/request.ts | 13 ++++++++++--- handwritten/nodejs-datastore/test/request.ts | 12 ++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 46d9cfde0df..8ff47e1a023 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -710,9 +710,16 @@ class DatastoreRequest { query = extend(true, new Query(), query); const makeRequest = (query: Query) => { - const reqOpts: RequestOptions = { - query: entity.queryToQueryProto(query), - }; + const reqOpts = {} as RequestOptions; + + try { + reqOpts.query = entity.queryToQueryProto(query); + } catch (e) { + // using setImmediate here to make sure this doesn't throw a + // synchronous error + setImmediate(onResultSet, e); + return; + } if (options.consistency) { const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index ae2f07b6b51..d06ad2761ca 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -819,6 +819,18 @@ describe('Request', () => { }) .emit('reading'); }); + + it('should emit an error when encoding fails', done => { + const error = new Error('Encoding error.'); + sandbox.stub(entity, 'queryToQueryProto').throws(error); + request + .runQueryStream({}) + .on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }) + .emit('reading'); + }); }); describe('success', () => { From fedfa9b3bfa96a54b914780b95d062a913c3ac7c Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 12 Sep 2019 06:17:32 -0700 Subject: [PATCH 433/820] chore: release 4.3.0 (#479) --- handwritten/nodejs-datastore/CHANGELOG.md | 18 ++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 1885f198bbd..019e018b269 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,24 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.3.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.2.0...v4.3.0) (2019-09-12) + + +### Bug Fixes + +* **types:** fix and clean up types for request.ts ([#472](https://www.github.com/googleapis/nodejs-datastore/issues/472)) ([928f237](https://www.github.com/googleapis/nodejs-datastore/commit/928f237)) +* added overload method for transaction.createQuery to handle namespace issue ([#486](https://www.github.com/googleapis/nodejs-datastore/issues/486)) ([28568c1](https://www.github.com/googleapis/nodejs-datastore/commit/28568c1)) +* emit encoding errors on user stream ([#492](https://www.github.com/googleapis/nodejs-datastore/issues/492)) ([8d3b552](https://www.github.com/googleapis/nodejs-datastore/commit/8d3b552)) +* refactor and clean up types ([#476](https://www.github.com/googleapis/nodejs-datastore/issues/476)) ([5971c4a](https://www.github.com/googleapis/nodejs-datastore/commit/5971c4a)) +* update node version in HTTP headers ([#475](https://www.github.com/googleapis/nodejs-datastore/issues/475)) ([b6e65bb](https://www.github.com/googleapis/nodejs-datastore/commit/b6e65bb)) + + +### Features + +* add support for auto-unindex ([#453](https://www.github.com/googleapis/nodejs-datastore/issues/453)) ([33292d2](https://www.github.com/googleapis/nodejs-datastore/commit/33292d2)) +* load protos from JSON, grpc-fallback support ([#485](https://www.github.com/googleapis/nodejs-datastore/issues/485)) ([1cf85ea](https://www.github.com/googleapis/nodejs-datastore/commit/1cf85ea)) +* support key re-use from serialized path ([#474](https://www.github.com/googleapis/nodejs-datastore/issues/474)) ([b36c90f](https://www.github.com/googleapis/nodejs-datastore/commit/b36c90f)) + ## [4.2.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.1.4...v4.2.0) (2019-08-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0eda1167a54..a0ac55c9e4d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.2.0", + "version": "4.3.0", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 640c4dfc756..c74a7e2b892 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.2.0", + "@google-cloud/datastore": "^4.3.0", "sinon": "^7.3.2" }, "devDependencies": { From 185573bb0a7d1d3fae0e17854a85a398fbcfaefc Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Wed, 25 Sep 2019 11:14:17 -0400 Subject: [PATCH 434/820] fix: transaction#run overloads' param types correction (#501) --- handwritten/nodejs-datastore/src/transaction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index d6a5fd55119..8a761278572 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -445,8 +445,8 @@ class Transaction extends DatastoreRequest { } run(options?: RunOptions): Promise; - run(callback?: RunCallback): void; - run(options?: RunOptions, callback?: RunCallback): void; + run(callback: RunCallback): void; + run(options: RunOptions, callback: RunCallback): void; /** * Begin a remote transaction. In the callback provided, run your * transactional commands. From 45e5c23ff7ecd6d3cc57e6f0281a7ed15ed4e236 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 25 Sep 2019 18:35:47 +0300 Subject: [PATCH 435/820] fix(deps): update dependency @grpc/grpc-js to ^0.6.0 (#503) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a0ac55c9e4d..ec4643c3c93 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "^0.5.0", + "@grpc/grpc-js": "^0.6.0", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 2c786445c958dabc29a369346ce3a5967ceb1db8 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Fri, 27 Sep 2019 02:04:32 -0400 Subject: [PATCH 436/820] chore: add protos/ to .eslintignore --- handwritten/nodejs-datastore/.eslintignore | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index f0c7aead4bf..09b31fe735a 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -2,3 +2,4 @@ src/**/doc/* build/ docs/ +protos/ From 8466f69f20c4a03b298f7862c3339b02b6456ebc Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 27 Sep 2019 10:20:35 -0700 Subject: [PATCH 437/820] feat: .d.ts for protos (#506) --- .../nodejs-datastore/protos/protos.d.ts | 8865 ++++++ handwritten/nodejs-datastore/protos/protos.js | 22505 ++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 10 +- 3 files changed, 31375 insertions(+), 5 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/protos.d.ts create mode 100644 handwritten/nodejs-datastore/protos/protos.js diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts new file mode 100644 index 00000000000..4f2f6398d1f --- /dev/null +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -0,0 +1,8865 @@ +import * as $protobuf from "protobufjs"; +/** Namespace google. */ +export namespace google { + + /** Namespace datastore. */ + namespace datastore { + + /** Namespace v1. */ + namespace v1 { + + /** Represents a Datastore */ + class Datastore extends $protobuf.rpc.Service { + + /** + * Constructs a new Datastore service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new Datastore service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @param callback Node-style callback called with the error, if any, and LookupResponse + */ + public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @returns Promise + */ + public lookup(request: google.datastore.v1.ILookupRequest): Promise; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunQueryResponse + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @returns Promise + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @returns Promise + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CommitResponse + */ + public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @returns Promise + */ + public commit(request: google.datastore.v1.ICommitRequest): Promise; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RollbackResponse + */ + public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @returns Promise + */ + public rollback(request: google.datastore.v1.IRollbackRequest): Promise; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @returns Promise + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @returns Promise + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; + } + + namespace Datastore { + + /** + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @param error Error, if any + * @param [response] LookupResponse + */ + type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @param error Error, if any + * @param [response] RunQueryResponse + */ + type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @param error Error, if any + * @param [response] BeginTransactionResponse + */ + type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @param error Error, if any + * @param [response] CommitResponse + */ + type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @param error Error, if any + * @param [response] RollbackResponse + */ + type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @param error Error, if any + * @param [response] AllocateIdsResponse + */ + type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @param error Error, if any + * @param [response] ReserveIdsResponse + */ + type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; + } + + /** Properties of a LookupRequest. */ + interface ILookupRequest { + + /** LookupRequest projectId */ + projectId?: (string|null); + + /** LookupRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a LookupRequest. */ + class LookupRequest implements ILookupRequest { + + /** + * Constructs a new LookupRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupRequest); + + /** LookupRequest projectId. */ + public projectId: string; + + /** LookupRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupRequest instance + */ + public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; + + /** + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookupRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; + + /** + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; + + /** + * Verifies a LookupRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; + + /** + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @param message LookupRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LookupRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a LookupResponse. */ + interface ILookupResponse { + + /** LookupResponse found */ + found?: (google.datastore.v1.IEntityResult[]|null); + + /** LookupResponse missing */ + missing?: (google.datastore.v1.IEntityResult[]|null); + + /** LookupResponse deferred */ + deferred?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a LookupResponse. */ + class LookupResponse implements ILookupResponse { + + /** + * Constructs a new LookupResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupResponse); + + /** LookupResponse found. */ + public found: google.datastore.v1.IEntityResult[]; + + /** LookupResponse missing. */ + public missing: google.datastore.v1.IEntityResult[]; + + /** LookupResponse deferred. */ + public deferred: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupResponse instance + */ + public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; + + /** + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookupResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; + + /** + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; + + /** + * Verifies a LookupResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; + + /** + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @param message LookupResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LookupResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RunQueryRequest. */ + interface IRunQueryRequest { + + /** RunQueryRequest projectId */ + projectId?: (string|null); + + /** RunQueryRequest partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query */ + query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery */ + gqlQuery?: (google.datastore.v1.IGqlQuery|null); + } + + /** Represents a RunQueryRequest. */ + class RunQueryRequest implements IRunQueryRequest { + + /** + * Constructs a new RunQueryRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryRequest); + + /** RunQueryRequest projectId. */ + public projectId: string; + + /** RunQueryRequest partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query. */ + public query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery. */ + public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunQueryRequest queryType. */ + public queryType?: ("query"|"gqlQuery"); + + /** + * Creates a new RunQueryRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryRequest instance + */ + public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; + + /** + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; + + /** + * Verifies a RunQueryRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; + + /** + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @param message RunQueryRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RunQueryRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RunQueryResponse. */ + interface IRunQueryResponse { + + /** RunQueryResponse batch */ + batch?: (google.datastore.v1.IQueryResultBatch|null); + + /** RunQueryResponse query */ + query?: (google.datastore.v1.IQuery|null); + } + + /** Represents a RunQueryResponse. */ + class RunQueryResponse implements IRunQueryResponse { + + /** + * Constructs a new RunQueryResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryResponse); + + /** RunQueryResponse batch. */ + public batch?: (google.datastore.v1.IQueryResultBatch|null); + + /** RunQueryResponse query. */ + public query?: (google.datastore.v1.IQuery|null); + + /** + * Creates a new RunQueryResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryResponse instance + */ + public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; + + /** + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; + + /** + * Verifies a RunQueryResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; + + /** + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @param message RunQueryResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RunQueryResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BeginTransactionRequest. */ + interface IBeginTransactionRequest { + + /** BeginTransactionRequest projectId */ + projectId?: (string|null); + + /** BeginTransactionRequest transactionOptions */ + transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + } + + /** Represents a BeginTransactionRequest. */ + class BeginTransactionRequest implements IBeginTransactionRequest { + + /** + * Constructs a new BeginTransactionRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionRequest); + + /** BeginTransactionRequest projectId. */ + public projectId: string; + + /** BeginTransactionRequest transactionOptions. */ + public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + + /** + * Creates a new BeginTransactionRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionRequest instance + */ + public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; + + /** + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; + + /** + * Verifies a BeginTransactionRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; + + /** + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @param message BeginTransactionRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BeginTransactionRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BeginTransactionResponse. */ + interface IBeginTransactionResponse { + + /** BeginTransactionResponse transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a BeginTransactionResponse. */ + class BeginTransactionResponse implements IBeginTransactionResponse { + + /** + * Constructs a new BeginTransactionResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionResponse); + + /** BeginTransactionResponse transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new BeginTransactionResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionResponse instance + */ + public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; + + /** + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; + + /** + * Verifies a BeginTransactionResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; + + /** + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @param message BeginTransactionResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BeginTransactionResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RollbackRequest. */ + interface IRollbackRequest { + + /** RollbackRequest projectId */ + projectId?: (string|null); + + /** RollbackRequest transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a RollbackRequest. */ + class RollbackRequest implements IRollbackRequest { + + /** + * Constructs a new RollbackRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackRequest); + + /** RollbackRequest projectId. */ + public projectId: string; + + /** RollbackRequest transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new RollbackRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackRequest instance + */ + public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; + + /** + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; + + /** + * Verifies a RollbackRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; + + /** + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @param message RollbackRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RollbackRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RollbackResponse. */ + interface IRollbackResponse { + } + + /** Represents a RollbackResponse. */ + class RollbackResponse implements IRollbackResponse { + + /** + * Constructs a new RollbackResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackResponse); + + /** + * Creates a new RollbackResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackResponse instance + */ + public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; + + /** + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; + + /** + * Verifies a RollbackResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; + + /** + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @param message RollbackResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RollbackResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CommitRequest. */ + interface ICommitRequest { + + /** CommitRequest projectId */ + projectId?: (string|null); + + /** CommitRequest mode */ + mode?: (google.datastore.v1.CommitRequest.Mode|null); + + /** CommitRequest transaction */ + transaction?: (Uint8Array|null); + + /** CommitRequest mutations */ + mutations?: (google.datastore.v1.IMutation[]|null); + } + + /** Represents a CommitRequest. */ + class CommitRequest implements ICommitRequest { + + /** + * Constructs a new CommitRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitRequest); + + /** CommitRequest projectId. */ + public projectId: string; + + /** CommitRequest mode. */ + public mode: google.datastore.v1.CommitRequest.Mode; + + /** CommitRequest transaction. */ + public transaction: Uint8Array; + + /** CommitRequest mutations. */ + public mutations: google.datastore.v1.IMutation[]; + + /** CommitRequest transactionSelector. */ + public transactionSelector?: "transaction"; + + /** + * Creates a new CommitRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitRequest instance + */ + public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; + + /** + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CommitRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; + + /** + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; + + /** + * Verifies a CommitRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; + + /** + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @param message CommitRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CommitRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace CommitRequest { + + /** Mode enum. */ + enum Mode { + MODE_UNSPECIFIED = 0, + TRANSACTIONAL = 1, + NON_TRANSACTIONAL = 2 + } + } + + /** Properties of a CommitResponse. */ + interface ICommitResponse { + + /** CommitResponse mutationResults */ + mutationResults?: (google.datastore.v1.IMutationResult[]|null); + + /** CommitResponse indexUpdates */ + indexUpdates?: (number|null); + } + + /** Represents a CommitResponse. */ + class CommitResponse implements ICommitResponse { + + /** + * Constructs a new CommitResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitResponse); + + /** CommitResponse mutationResults. */ + public mutationResults: google.datastore.v1.IMutationResult[]; + + /** CommitResponse indexUpdates. */ + public indexUpdates: number; + + /** + * Creates a new CommitResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitResponse instance + */ + public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; + + /** + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CommitResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; + + /** + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; + + /** + * Verifies a CommitResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; + + /** + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @param message CommitResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CommitResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an AllocateIdsRequest. */ + interface IAllocateIdsRequest { + + /** AllocateIdsRequest projectId */ + projectId?: (string|null); + + /** AllocateIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents an AllocateIdsRequest. */ + class AllocateIdsRequest implements IAllocateIdsRequest { + + /** + * Constructs a new AllocateIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsRequest); + + /** AllocateIdsRequest projectId. */ + public projectId: string; + + /** AllocateIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsRequest instance + */ + public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; + + /** + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; + + /** + * Verifies an AllocateIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; + + /** + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @param message AllocateIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this AllocateIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an AllocateIdsResponse. */ + interface IAllocateIdsResponse { + + /** AllocateIdsResponse keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents an AllocateIdsResponse. */ + class AllocateIdsResponse implements IAllocateIdsResponse { + + /** + * Constructs a new AllocateIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsResponse); + + /** AllocateIdsResponse keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsResponse instance + */ + public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; + + /** + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; + + /** + * Verifies an AllocateIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; + + /** + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @param message AllocateIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this AllocateIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReserveIdsRequest. */ + interface IReserveIdsRequest { + + /** ReserveIdsRequest projectId */ + projectId?: (string|null); + + /** ReserveIdsRequest databaseId */ + databaseId?: (string|null); + + /** ReserveIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a ReserveIdsRequest. */ + class ReserveIdsRequest implements IReserveIdsRequest { + + /** + * Constructs a new ReserveIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsRequest); + + /** ReserveIdsRequest projectId. */ + public projectId: string; + + /** ReserveIdsRequest databaseId. */ + public databaseId: string; + + /** ReserveIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new ReserveIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsRequest instance + */ + public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; + + /** + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; + + /** + * Verifies a ReserveIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; + + /** + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @param message ReserveIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReserveIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReserveIdsResponse. */ + interface IReserveIdsResponse { + } + + /** Represents a ReserveIdsResponse. */ + class ReserveIdsResponse implements IReserveIdsResponse { + + /** + * Constructs a new ReserveIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsResponse); + + /** + * Creates a new ReserveIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsResponse instance + */ + public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; + + /** + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; + + /** + * Verifies a ReserveIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; + + /** + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @param message ReserveIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReserveIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Mutation. */ + interface IMutation { + + /** Mutation insert */ + insert?: (google.datastore.v1.IEntity|null); + + /** Mutation update */ + update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert */ + upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete */ + "delete"?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion */ + baseVersion?: (number|Long|null); + } + + /** Represents a Mutation. */ + class Mutation implements IMutation { + + /** + * Constructs a new Mutation. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutation); + + /** Mutation insert. */ + public insert?: (google.datastore.v1.IEntity|null); + + /** Mutation update. */ + public update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert. */ + public upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete. */ + public delete?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion. */ + public baseVersion: (number|Long); + + /** Mutation operation. */ + public operation?: ("insert"|"update"|"upsert"|"delete"); + + /** Mutation conflictDetectionStrategy. */ + public conflictDetectionStrategy?: "baseVersion"; + + /** + * Creates a new Mutation instance using the specified properties. + * @param [properties] Properties to set + * @returns Mutation instance + */ + public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; + + /** + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Mutation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; + + /** + * Decodes a Mutation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; + + /** + * Verifies a Mutation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Mutation + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; + + /** + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @param message Mutation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Mutation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MutationResult. */ + interface IMutationResult { + + /** MutationResult key */ + key?: (google.datastore.v1.IKey|null); + + /** MutationResult version */ + version?: (number|Long|null); + + /** MutationResult conflictDetected */ + conflictDetected?: (boolean|null); + } + + /** Represents a MutationResult. */ + class MutationResult implements IMutationResult { + + /** + * Constructs a new MutationResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutationResult); + + /** MutationResult key. */ + public key?: (google.datastore.v1.IKey|null); + + /** MutationResult version. */ + public version: (number|Long); + + /** MutationResult conflictDetected. */ + public conflictDetected: boolean; + + /** + * Creates a new MutationResult instance using the specified properties. + * @param [properties] Properties to set + * @returns MutationResult instance + */ + public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; + + /** + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutationResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; + + /** + * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; + + /** + * Verifies a MutationResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutationResult + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; + + /** + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @param message MutationResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutationResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReadOptions. */ + interface IReadOptions { + + /** ReadOptions readConsistency */ + readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|null); + + /** ReadOptions transaction */ + transaction?: (Uint8Array|null); + } + + /** Represents a ReadOptions. */ + class ReadOptions implements IReadOptions { + + /** + * Constructs a new ReadOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReadOptions); + + /** ReadOptions readConsistency. */ + public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; + + /** ReadOptions transaction. */ + public transaction: Uint8Array; + + /** ReadOptions consistencyType. */ + public consistencyType?: ("readConsistency"|"transaction"); + + /** + * Creates a new ReadOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOptions instance + */ + public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; + + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; + + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; + + /** + * Verifies a ReadOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @param message ReadOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ReadOptions { + + /** ReadConsistency enum. */ + enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 0, + STRONG = 1, + EVENTUAL = 2 + } + } + + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { + + /** TransactionOptions readWrite */ + readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly */ + readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + } + + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { + + /** + * Constructs a new TransactionOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ITransactionOptions); + + /** TransactionOptions readWrite. */ + public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly. */ + public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + + /** TransactionOptions mode. */ + public mode?: ("readWrite"|"readOnly"); + + /** + * Creates a new TransactionOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns TransactionOptions instance + */ + public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; + + /** + * Verifies a TransactionOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TransactionOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TransactionOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace TransactionOptions { + + /** Properties of a ReadWrite. */ + interface IReadWrite { + + /** ReadWrite previousTransaction */ + previousTransaction?: (Uint8Array|null); + } + + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { + + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); + + /** ReadWrite previousTransaction. */ + public previousTransaction: Uint8Array; + + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReadOnly. */ + interface IReadOnly { + } + + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { + + /** + * Constructs a new ReadOnly. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + + /** + * Creates a new ReadOnly instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOnly instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Verifies a ReadOnly message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOnly + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOnly to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a PartitionId. */ + interface IPartitionId { + + /** PartitionId projectId */ + projectId?: (string|null); + + /** PartitionId namespaceId */ + namespaceId?: (string|null); + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Key. */ + interface IKey { + + /** Key partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path */ + path?: (google.datastore.v1.Key.IPathElement[]|null); + } + + /** Represents a Key. */ + class Key implements IKey { + + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Key { + + /** Properties of a PathElement. */ + interface IPathElement { + + /** PathElement kind */ + kind?: (string|null); + + /** PathElement id */ + id?: (number|Long|null); + + /** PathElement name */ + name?: (string|null); + } + + /** Represents a PathElement. */ + class PathElement implements IPathElement { + + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: (number|Long); + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: ("id"|"name"); + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + + /** ArrayValue values */ + values?: (google.datastore.v1.IValue[]|null); + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value booleanValue */ + booleanValue?: (boolean|null); + + /** Value integerValue */ + integerValue?: (number|Long|null); + + /** Value doubleValue */ + doubleValue?: (number|null); + + /** Value timestampValue */ + timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue */ + keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value blobValue */ + blobValue?: (Uint8Array|null); + + /** Value geoPointValue */ + geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue */ + entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue */ + arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning */ + meaning?: (number|null); + + /** Value excludeFromIndexes */ + excludeFromIndexes?: (boolean|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: (number|Long); + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue. */ + public keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: Uint8Array; + + /** Value geoPointValue. */ + public geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue. */ + public entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue. */ + public arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Entity. */ + interface IEntity { + + /** Entity key */ + key?: (google.datastore.v1.IKey|null); + + /** Entity properties */ + properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + } + + /** Represents an Entity. */ + class Entity implements IEntity { + + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: (google.datastore.v1.IKey|null); + + /** Entity properties. */ + public properties: { [k: string]: google.datastore.v1.IValue }; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EntityResult. */ + interface IEntityResult { + + /** EntityResult entity */ + entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version */ + version?: (number|Long|null); + + /** EntityResult cursor */ + cursor?: (Uint8Array|null); + } + + /** Represents an EntityResult. */ + class EntityResult implements IEntityResult { + + /** + * Constructs a new EntityResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntityResult); + + /** EntityResult entity. */ + public entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version. */ + public version: (number|Long); + + /** EntityResult cursor. */ + public cursor: Uint8Array; + + /** + * Creates a new EntityResult instance using the specified properties. + * @param [properties] Properties to set + * @returns EntityResult instance + */ + public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; + + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; + + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; + + /** + * Verifies an EntityResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EntityResult + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; + + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @param message EntityResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EntityResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EntityResult { + + /** ResultType enum. */ + enum ResultType { + RESULT_TYPE_UNSPECIFIED = 0, + FULL = 1, + PROJECTION = 2, + KEY_ONLY = 3 + } + } + + /** Properties of a Query. */ + interface IQuery { + + /** Query projection */ + projection?: (google.datastore.v1.IProjection[]|null); + + /** Query kind */ + kind?: (google.datastore.v1.IKindExpression[]|null); + + /** Query filter */ + filter?: (google.datastore.v1.IFilter|null); + + /** Query order */ + order?: (google.datastore.v1.IPropertyOrder[]|null); + + /** Query distinctOn */ + distinctOn?: (google.datastore.v1.IPropertyReference[]|null); + + /** Query startCursor */ + startCursor?: (Uint8Array|null); + + /** Query endCursor */ + endCursor?: (Uint8Array|null); + + /** Query offset */ + offset?: (number|null); + + /** Query limit */ + limit?: (google.protobuf.IInt32Value|null); + } + + /** Represents a Query. */ + class Query implements IQuery { + + /** + * Constructs a new Query. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQuery); + + /** Query projection. */ + public projection: google.datastore.v1.IProjection[]; + + /** Query kind. */ + public kind: google.datastore.v1.IKindExpression[]; + + /** Query filter. */ + public filter?: (google.datastore.v1.IFilter|null); + + /** Query order. */ + public order: google.datastore.v1.IPropertyOrder[]; + + /** Query distinctOn. */ + public distinctOn: google.datastore.v1.IPropertyReference[]; + + /** Query startCursor. */ + public startCursor: Uint8Array; + + /** Query endCursor. */ + public endCursor: Uint8Array; + + /** Query offset. */ + public offset: number; + + /** Query limit. */ + public limit?: (google.protobuf.IInt32Value|null); + + /** + * Creates a new Query instance using the specified properties. + * @param [properties] Properties to set + * @returns Query instance + */ + public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Query message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; + + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; + + /** + * Verifies a Query message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Query + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @param message Query + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Query to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a KindExpression. */ + interface IKindExpression { + + /** KindExpression name */ + name?: (string|null); + } + + /** Represents a KindExpression. */ + class KindExpression implements IKindExpression { + + /** + * Constructs a new KindExpression. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKindExpression); + + /** KindExpression name. */ + public name: string; + + /** + * Creates a new KindExpression instance using the specified properties. + * @param [properties] Properties to set + * @returns KindExpression instance + */ + public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; + + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; + + /** + * Verifies a KindExpression message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns KindExpression + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; + + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @param message KindExpression + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this KindExpression to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyReference. */ + interface IPropertyReference { + + /** PropertyReference name */ + name?: (string|null); + } + + /** Represents a PropertyReference. */ + class PropertyReference implements IPropertyReference { + + /** + * Constructs a new PropertyReference. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyReference); + + /** PropertyReference name. */ + public name: string; + + /** + * Creates a new PropertyReference instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyReference instance + */ + public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; + + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; + + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; + + /** + * Verifies a PropertyReference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyReference + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; + + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @param message PropertyReference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyReference to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Projection. */ + interface IProjection { + + /** Projection property */ + property?: (google.datastore.v1.IPropertyReference|null); + } + + /** Represents a Projection. */ + class Projection implements IProjection { + + /** + * Constructs a new Projection. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IProjection); + + /** Projection property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** + * Creates a new Projection instance using the specified properties. + * @param [properties] Properties to set + * @returns Projection instance + */ + public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; + + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Projection message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; + + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; + + /** + * Verifies a Projection message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Projection + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; + + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @param message Projection + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Projection to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyOrder. */ + interface IPropertyOrder { + + /** PropertyOrder property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction */ + direction?: (google.datastore.v1.PropertyOrder.Direction|null); + } + + /** Represents a PropertyOrder. */ + class PropertyOrder implements IPropertyOrder { + + /** + * Constructs a new PropertyOrder. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyOrder); + + /** PropertyOrder property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction. */ + public direction: google.datastore.v1.PropertyOrder.Direction; + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyOrder instance + */ + public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; + + /** + * Verifies a PropertyOrder message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyOrder + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; + + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @param message PropertyOrder + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyOrder to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyOrder { + + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + } + + /** Properties of a Filter. */ + interface IFilter { + + /** Filter compositeFilter */ + compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter */ + propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + } + + /** Represents a Filter. */ + class Filter implements IFilter { + + /** + * Constructs a new Filter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IFilter); + + /** Filter compositeFilter. */ + public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter. */ + public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + + /** Filter filterType. */ + public filterType?: ("compositeFilter"|"propertyFilter"); + + /** + * Creates a new Filter instance using the specified properties. + * @param [properties] Properties to set + * @returns Filter instance + */ + public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; + + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Filter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; + + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; + + /** + * Verifies a Filter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Filter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; + + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @param message Filter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Filter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CompositeFilter. */ + interface ICompositeFilter { + + /** CompositeFilter op */ + op?: (google.datastore.v1.CompositeFilter.Operator|null); + + /** CompositeFilter filters */ + filters?: (google.datastore.v1.IFilter[]|null); + } + + /** Represents a CompositeFilter. */ + class CompositeFilter implements ICompositeFilter { + + /** + * Constructs a new CompositeFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICompositeFilter); + + /** CompositeFilter op. */ + public op: google.datastore.v1.CompositeFilter.Operator; + + /** CompositeFilter filters. */ + public filters: google.datastore.v1.IFilter[]; + + /** + * Creates a new CompositeFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns CompositeFilter instance + */ + public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; + + /** + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; + + /** + * Verifies a CompositeFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CompositeFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; + + /** + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @param message CompositeFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CompositeFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace CompositeFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + AND = 1 + } + } + + /** Properties of a PropertyFilter. */ + interface IPropertyFilter { + + /** PropertyFilter property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op */ + op?: (google.datastore.v1.PropertyFilter.Operator|null); + + /** PropertyFilter value */ + value?: (google.datastore.v1.IValue|null); + } + + /** Represents a PropertyFilter. */ + class PropertyFilter implements IPropertyFilter { + + /** + * Constructs a new PropertyFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyFilter); + + /** PropertyFilter property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op. */ + public op: google.datastore.v1.PropertyFilter.Operator; + + /** PropertyFilter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** + * Creates a new PropertyFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyFilter instance + */ + public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; + + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; + + /** + * Verifies a PropertyFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; + + /** + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @param message PropertyFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + LESS_THAN = 1, + LESS_THAN_OR_EQUAL = 2, + GREATER_THAN = 3, + GREATER_THAN_OR_EQUAL = 4, + EQUAL = 5, + HAS_ANCESTOR = 11 + } + } + + /** Properties of a GqlQuery. */ + interface IGqlQuery { + + /** GqlQuery queryString */ + queryString?: (string|null); + + /** GqlQuery allowLiterals */ + allowLiterals?: (boolean|null); + + /** GqlQuery namedBindings */ + namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + + /** GqlQuery positionalBindings */ + positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); + } + + /** Represents a GqlQuery. */ + class GqlQuery implements IGqlQuery { + + /** + * Constructs a new GqlQuery. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQuery); + + /** GqlQuery queryString. */ + public queryString: string; + + /** GqlQuery allowLiterals. */ + public allowLiterals: boolean; + + /** GqlQuery namedBindings. */ + public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; + + /** GqlQuery positionalBindings. */ + public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + + /** + * Creates a new GqlQuery instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQuery instance + */ + public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; + + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; + + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; + + /** + * Verifies a GqlQuery message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQuery + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; + + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @param message GqlQuery + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQuery to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a GqlQueryParameter. */ + interface IGqlQueryParameter { + + /** GqlQueryParameter value */ + value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor */ + cursor?: (Uint8Array|null); + } + + /** Represents a GqlQueryParameter. */ + class GqlQueryParameter implements IGqlQueryParameter { + + /** + * Constructs a new GqlQueryParameter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQueryParameter); + + /** GqlQueryParameter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor. */ + public cursor: Uint8Array; + + /** GqlQueryParameter parameterType. */ + public parameterType?: ("value"|"cursor"); + + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQueryParameter instance + */ + public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; + + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; + + /** + * Verifies a GqlQueryParameter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQueryParameter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @param message GqlQueryParameter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQueryParameter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a QueryResultBatch. */ + interface IQueryResultBatch { + + /** QueryResultBatch skippedResults */ + skippedResults?: (number|null); + + /** QueryResultBatch skippedCursor */ + skippedCursor?: (Uint8Array|null); + + /** QueryResultBatch entityResultType */ + entityResultType?: (google.datastore.v1.EntityResult.ResultType|null); + + /** QueryResultBatch entityResults */ + entityResults?: (google.datastore.v1.IEntityResult[]|null); + + /** QueryResultBatch endCursor */ + endCursor?: (Uint8Array|null); + + /** QueryResultBatch moreResults */ + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|null); + + /** QueryResultBatch snapshotVersion */ + snapshotVersion?: (number|Long|null); + } + + /** Represents a QueryResultBatch. */ + class QueryResultBatch implements IQueryResultBatch { + + /** + * Constructs a new QueryResultBatch. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQueryResultBatch); + + /** QueryResultBatch skippedResults. */ + public skippedResults: number; + + /** QueryResultBatch skippedCursor. */ + public skippedCursor: Uint8Array; + + /** QueryResultBatch entityResultType. */ + public entityResultType: google.datastore.v1.EntityResult.ResultType; + + /** QueryResultBatch entityResults. */ + public entityResults: google.datastore.v1.IEntityResult[]; + + /** QueryResultBatch endCursor. */ + public endCursor: Uint8Array; + + /** QueryResultBatch moreResults. */ + public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; + + /** QueryResultBatch snapshotVersion. */ + public snapshotVersion: (number|Long); + + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @param [properties] Properties to set + * @returns QueryResultBatch instance + */ + public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; + + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + + /** + * Verifies a QueryResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryResultBatch + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @param message QueryResultBatch + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this QueryResultBatch to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace QueryResultBatch { + + /** MoreResultsType enum. */ + enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 0, + NOT_FINISHED = 1, + MORE_RESULTS_AFTER_LIMIT = 2, + MORE_RESULTS_AFTER_CURSOR = 4, + NO_MORE_RESULTS = 3 + } + } + } + } + + /** Namespace api. */ + namespace api { + + /** Properties of a Http. */ + interface IHttp { + + /** Http rules */ + rules?: (google.api.IHttpRule[]|null); + + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: (boolean|null); + } + + /** Represents a Http. */ + class Http implements IHttp { + + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: { [k: string]: any }): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a HttpRule. */ + interface IHttpRule { + + /** HttpRule selector */ + selector?: (string|null); + + /** HttpRule get */ + get?: (string|null); + + /** HttpRule put */ + put?: (string|null); + + /** HttpRule post */ + post?: (string|null); + + /** HttpRule delete */ + "delete"?: (string|null); + + /** HttpRule patch */ + patch?: (string|null); + + /** HttpRule custom */ + custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body */ + body?: (string|null); + + /** HttpRule responseBody */ + responseBody?: (string|null); + + /** HttpRule additionalBindings */ + additionalBindings?: (google.api.IHttpRule[]|null); + } + + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create(properties?: google.api.IHttpRule): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: { [k: string]: any }): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + + /** CustomHttpPattern kind */ + kind?: (string|null); + + /** CustomHttpPattern path */ + path?: (string|null); + } + + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace protobuf. */ + namespace protobuf { + + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + + /** FileDescriptorSet file */ + file?: (google.protobuf.IFileDescriptorProto[]|null); + } + + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + + /** FileDescriptorProto name */ + name?: (string|null); + + /** FileDescriptorProto package */ + "package"?: (string|null); + + /** FileDescriptorProto dependency */ + dependency?: (string[]|null); + + /** FileDescriptorProto publicDependency */ + publicDependency?: (number[]|null); + + /** FileDescriptorProto weakDependency */ + weakDependency?: (number[]|null); + + /** FileDescriptorProto messageType */ + messageType?: (google.protobuf.IDescriptorProto[]|null); + + /** FileDescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** FileDescriptorProto service */ + service?: (google.protobuf.IServiceDescriptorProto[]|null); + + /** FileDescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** FileDescriptorProto options */ + options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax */ + syntax?: (string|null); + } + + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + + /** DescriptorProto name */ + name?: (string|null); + + /** DescriptorProto field */ + field?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto nestedType */ + nestedType?: (google.protobuf.IDescriptorProto[]|null); + + /** DescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** DescriptorProto extensionRange */ + extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + + /** DescriptorProto oneofDecl */ + oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + + /** DescriptorProto options */ + options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange */ + reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + + /** DescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DescriptorProto { + + /** Properties of an ExtensionRange. */ + interface IExtensionRange { + + /** ExtensionRange start */ + start?: (number|null); + + /** ExtensionRange end */ + end?: (number|null); + + /** ExtensionRange options */ + options?: (google.protobuf.IExtensionRangeOptions|null); + } + + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { + + /** + * Constructs a new ExtensionRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); + + /** ExtensionRange start. */ + public start: number; + + /** ExtensionRange end. */ + public end: number; + + /** ExtensionRange options. */ + public options?: (google.protobuf.IExtensionRangeOptions|null); + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReservedRange. */ + interface IReservedRange { + + /** ReservedRange start */ + start?: (number|null); + + /** ReservedRange end */ + end?: (number|null); + } + + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { + + /** + * Constructs a new ReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); + + /** ReservedRange start. */ + public start: number; + + /** ReservedRange end. */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ReservedRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { + + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { + + /** + * Constructs a new ExtensionRangeOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IExtensionRangeOptions); + + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRangeOptions instance + */ + public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; + + /** + * Verifies an ExtensionRangeOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRangeOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { + + /** FieldDescriptorProto name */ + name?: (string|null); + + /** FieldDescriptorProto number */ + number?: (number|null); + + /** FieldDescriptorProto label */ + label?: (google.protobuf.FieldDescriptorProto.Label|null); + + /** FieldDescriptorProto type */ + type?: (google.protobuf.FieldDescriptorProto.Type|null); + + /** FieldDescriptorProto typeName */ + typeName?: (string|null); + + /** FieldDescriptorProto extendee */ + extendee?: (string|null); + + /** FieldDescriptorProto defaultValue */ + defaultValue?: (string|null); + + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: (number|null); + + /** FieldDescriptorProto jsonName */ + jsonName?: (string|null); + + /** FieldDescriptorProto options */ + options?: (google.protobuf.IFieldOptions|null); + } + + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { + + /** + * Constructs a new FieldDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldDescriptorProto); + + /** FieldDescriptorProto name. */ + public name: string; + + /** FieldDescriptorProto number. */ + public number: number; + + /** FieldDescriptorProto label. */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** FieldDescriptorProto type. */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: (google.protobuf.IFieldOptions|null); + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } + } + + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { + + /** OneofDescriptorProto name */ + name?: (string|null); + + /** OneofDescriptorProto options */ + options?: (google.protobuf.IOneofOptions|null); + } + + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { + + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); + + /** OneofDescriptorProto name. */ + public name: string; + + /** OneofDescriptorProto options. */ + public options?: (google.protobuf.IOneofOptions|null); + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofDescriptorProto instance + */ + public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { + + /** EnumDescriptorProto name */ + name?: (string|null); + + /** EnumDescriptorProto value */ + value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + + /** EnumDescriptorProto options */ + options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange */ + reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + + /** EnumDescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { + + /** + * Constructs a new EnumDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumDescriptorProto); + + /** EnumDescriptorProto name. */ + public name: string; + + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EnumDescriptorProto { + + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + + /** EnumReservedRange start */ + start?: (number|null); + + /** EnumReservedRange end */ + end?: (number|null); + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { + + /** EnumValueDescriptorProto name */ + name?: (string|null); + + /** EnumValueDescriptorProto number */ + number?: (number|null); + + /** EnumValueDescriptorProto options */ + options?: (google.protobuf.IEnumValueOptions|null); + } + + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + + /** + * Constructs a new EnumValueDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); + + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: (google.protobuf.IEnumValueOptions|null); + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueDescriptorProto instance + */ + public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { + + /** ServiceDescriptorProto name */ + name?: (string|null); + + /** ServiceDescriptorProto method */ + method?: (google.protobuf.IMethodDescriptorProto[]|null); + + /** ServiceDescriptorProto options */ + options?: (google.protobuf.IServiceOptions|null); + } + + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { + + /** + * Constructs a new ServiceDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceDescriptorProto); + + /** ServiceDescriptorProto name. */ + public name: string; + + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; + + /** ServiceDescriptorProto options. */ + public options?: (google.protobuf.IServiceOptions|null); + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceDescriptorProto instance + */ + public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { + + /** MethodDescriptorProto name */ + name?: (string|null); + + /** MethodDescriptorProto inputType */ + inputType?: (string|null); + + /** MethodDescriptorProto outputType */ + outputType?: (string|null); + + /** MethodDescriptorProto options */ + options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: (boolean|null); + + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: (boolean|null); + } + + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { + + /** + * Constructs a new MethodDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodDescriptorProto); + + /** MethodDescriptorProto name. */ + public name: string; + + /** MethodDescriptorProto inputType. */ + public inputType: string; + + /** MethodDescriptorProto outputType. */ + public outputType: string; + + /** MethodDescriptorProto options. */ + public options?: (google.protobuf.IMethodOptions|null); + + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; + + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodDescriptorProto instance + */ + public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileOptions. */ + interface IFileOptions { + + /** FileOptions javaPackage */ + javaPackage?: (string|null); + + /** FileOptions javaOuterClassname */ + javaOuterClassname?: (string|null); + + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: (boolean|null); + + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: (boolean|null); + + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: (boolean|null); + + /** FileOptions optimizeFor */ + optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + + /** FileOptions goPackage */ + goPackage?: (string|null); + + /** FileOptions ccGenericServices */ + ccGenericServices?: (boolean|null); + + /** FileOptions javaGenericServices */ + javaGenericServices?: (boolean|null); + + /** FileOptions pyGenericServices */ + pyGenericServices?: (boolean|null); + + /** FileOptions phpGenericServices */ + phpGenericServices?: (boolean|null); + + /** FileOptions deprecated */ + deprecated?: (boolean|null); + + /** FileOptions ccEnableArenas */ + ccEnableArenas?: (boolean|null); + + /** FileOptions objcClassPrefix */ + objcClassPrefix?: (string|null); + + /** FileOptions csharpNamespace */ + csharpNamespace?: (string|null); + + /** FileOptions swiftPrefix */ + swiftPrefix?: (string|null); + + /** FileOptions phpClassPrefix */ + phpClassPrefix?: (string|null); + + /** FileOptions phpNamespace */ + phpNamespace?: (string|null); + + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: (string|null); + + /** FileOptions rubyPackage */ + rubyPackage?: (string|null); + + /** FileOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; + + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; + + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; + + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; + + /** FileOptions deprecated. */ + public deprecated: boolean; + + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; + + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; + + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; + + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; + + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; + + /** FileOptions phpNamespace. */ + public phpNamespace: string; + + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; + + /** FileOptions rubyPackage. */ + public rubyPackage: string; + + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FileOptions { + + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } + } + + /** Properties of a MessageOptions. */ + interface IMessageOptions { + + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: (boolean|null); + + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: (boolean|null); + + /** MessageOptions deprecated */ + deprecated?: (boolean|null); + + /** MessageOptions mapEntry */ + mapEntry?: (boolean|null); + + /** MessageOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { + + /** + * Constructs a new MessageOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMessageOptions); + + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageOptions instance + */ + public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FieldOptions. */ + interface IFieldOptions { + + /** FieldOptions ctype */ + ctype?: (google.protobuf.FieldOptions.CType|null); + + /** FieldOptions packed */ + packed?: (boolean|null); + + /** FieldOptions jstype */ + jstype?: (google.protobuf.FieldOptions.JSType|null); + + /** FieldOptions lazy */ + lazy?: (boolean|null); + + /** FieldOptions deprecated */ + deprecated?: (boolean|null); + + /** FieldOptions weak */ + weak?: (boolean|null); + + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { + + /** + * Constructs a new FieldOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldOptions); + + /** FieldOptions ctype. */ + public ctype: google.protobuf.FieldOptions.CType; + + /** FieldOptions packed. */ + public packed: boolean; + + /** FieldOptions jstype. */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** FieldOptions lazy. */ + public lazy: boolean; + + /** FieldOptions deprecated. */ + public deprecated: boolean; + + /** FieldOptions weak. */ + public weak: boolean; + + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldOptions instance + */ + public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldOptions { + + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } + } + + /** Properties of an OneofOptions. */ + interface IOneofOptions { + + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { + + /** + * Constructs a new OneofOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofOptions); + + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofOptions instance + */ + public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumOptions. */ + interface IEnumOptions { + + /** EnumOptions allowAlias */ + allowAlias?: (boolean|null); + + /** EnumOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { + + /** + * Constructs a new EnumOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumOptions); + + /** EnumOptions allowAlias. */ + public allowAlias: boolean; + + /** EnumOptions deprecated. */ + public deprecated: boolean; + + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumOptions instance + */ + public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { + + /** EnumValueOptions deprecated */ + deprecated?: (boolean|null); + + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { + + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); + + /** EnumValueOptions deprecated. */ + public deprecated: boolean; + + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ServiceOptions. */ + interface IServiceOptions { + + /** ServiceOptions deprecated */ + deprecated?: (boolean|null); + + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { + + /** + * Constructs a new ServiceOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceOptions); + + /** ServiceOptions deprecated. */ + public deprecated: boolean; + + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceOptions instance + */ + public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MethodOptions. */ + interface IMethodOptions { + + /** MethodOptions deprecated */ + deprecated?: (boolean|null); + + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** MethodOptions .google.api.http */ + ".google.api.http"?: (google.api.IHttpRule|null); + } + + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { + + /** + * Constructs a new MethodOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodOptions); + + /** MethodOptions deprecated. */ + public deprecated: boolean; + + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodOptions instance + */ + public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MethodOptions { + + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } + } + + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { + + /** UninterpretedOption name */ + name?: (google.protobuf.UninterpretedOption.INamePart[]|null); + + /** UninterpretedOption identifierValue */ + identifierValue?: (string|null); + + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: (number|Long|null); + + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: (number|Long|null); + + /** UninterpretedOption doubleValue */ + doubleValue?: (number|null); + + /** UninterpretedOption stringValue */ + stringValue?: (Uint8Array|null); + + /** UninterpretedOption aggregateValue */ + aggregateValue?: (string|null); + } + + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { + + /** + * Constructs a new UninterpretedOption. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; + + /** UninterpretedOption identifierValue. */ + public identifierValue: string; + + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: (number|Long); + + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: (number|Long); + + /** UninterpretedOption doubleValue. */ + public doubleValue: number; + + /** UninterpretedOption stringValue. */ + public stringValue: Uint8Array; + + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param [properties] Properties to set + * @returns UninterpretedOption instance + */ + public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UninterpretedOption + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UninterpretedOption to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace UninterpretedOption { + + /** Properties of a NamePart. */ + interface INamePart { + + /** NamePart namePart */ + namePart: string; + + /** NamePart isExtension */ + isExtension: boolean; + } + + /** Represents a NamePart. */ + class NamePart implements INamePart { + + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); + + /** NamePart namePart. */ + public namePart: string; + + /** NamePart isExtension. */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { + + /** SourceCodeInfo location */ + location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); + } + + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { + + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); + + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns SourceCodeInfo instance + */ + public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SourceCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SourceCodeInfo { + + /** Properties of a Location. */ + interface ILocation { + + /** Location path */ + path?: (number[]|null); + + /** Location span */ + span?: (number[]|null); + + /** Location leadingComments */ + leadingComments?: (string|null); + + /** Location trailingComments */ + trailingComments?: (string|null); + + /** Location leadingDetachedComments */ + leadingDetachedComments?: (string[]|null); + } + + /** Represents a Location. */ + class Location implements ILocation { + + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + + /** Location path. */ + public path: number[]; + + /** Location span. */ + public span: number[]; + + /** Location leadingComments. */ + public leadingComments: string; + + /** Location trailingComments. */ + public trailingComments: string; + + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + + /** GeneratedCodeInfo annotation */ + annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); + } + + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { + + /** + * Constructs a new GeneratedCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GeneratedCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GeneratedCodeInfo { + + /** Properties of an Annotation. */ + interface IAnnotation { + + /** Annotation path */ + path?: (number[]|null); + + /** Annotation sourceFile */ + sourceFile?: (string|null); + + /** Annotation begin */ + begin?: (number|null); + + /** Annotation end */ + end?: (number|null); + } + + /** Represents an Annotation. */ + class Annotation implements IAnnotation { + + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); + + /** Annotation path. */ + public path: number[]; + + /** Annotation sourceFile. */ + public sourceFile: string; + + /** Annotation begin. */ + public begin: number; + + /** Annotation end. */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a Struct. */ + interface IStruct { + + /** Struct fields */ + fields?: ({ [k: string]: google.protobuf.IValue }|null); + } + + /** Represents a Struct. */ + class Struct implements IStruct { + + /** + * Constructs a new Struct. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStruct); + + /** Struct fields. */ + public fields: { [k: string]: google.protobuf.IValue }; + + /** + * Creates a new Struct instance using the specified properties. + * @param [properties] Properties to set + * @returns Struct instance + */ + public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; + + /** + * Verifies a Struct message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Struct + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Struct to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|null); + + /** Value numberValue */ + numberValue?: (number|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value boolValue */ + boolValue?: (boolean|null); + + /** Value structValue */ + structValue?: (google.protobuf.IStruct|null); + + /** Value listValue */ + listValue?: (google.protobuf.IListValue|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value numberValue. */ + public numberValue: number; + + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: (google.protobuf.IStruct|null); + + /** Value listValue. */ + public listValue?: (google.protobuf.IListValue|null); + + /** Value kind. */ + public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.protobuf.IValue): google.protobuf.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0 + } + + /** Properties of a ListValue. */ + interface IListValue { + + /** ListValue values */ + values?: (google.protobuf.IValue[]|null); + } + + /** Represents a ListValue. */ + class ListValue implements IListValue { + + /** + * Constructs a new ListValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IListValue); + + /** ListValue values. */ + public values: google.protobuf.IValue[]; + + /** + * Creates a new ListValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ListValue instance + */ + public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; + + /** + * Verifies a ListValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Timestamp. */ + interface ITimestamp { + + /** Timestamp seconds */ + seconds?: (number|Long|null); + + /** Timestamp nanos */ + nanos?: (number|null); + } + + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { + + /** + * Constructs a new Timestamp. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ITimestamp); + + /** Timestamp seconds. */ + public seconds: (number|Long); + + /** Timestamp nanos. */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param [properties] Properties to set + * @returns Timestamp instance + */ + public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Timestamp + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Timestamp to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DoubleValue. */ + interface IDoubleValue { + + /** DoubleValue value */ + value?: (number|null); + } + + /** Represents a DoubleValue. */ + class DoubleValue implements IDoubleValue { + + /** + * Constructs a new DoubleValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDoubleValue); + + /** DoubleValue value. */ + public value: number; + + /** + * Creates a new DoubleValue instance using the specified properties. + * @param [properties] Properties to set + * @returns DoubleValue instance + */ + public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue; + + /** + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DoubleValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue; + + /** + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue; + + /** + * Verifies a DoubleValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DoubleValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue; + + /** + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @param message DoubleValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DoubleValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FloatValue. */ + interface IFloatValue { + + /** FloatValue value */ + value?: (number|null); + } + + /** Represents a FloatValue. */ + class FloatValue implements IFloatValue { + + /** + * Constructs a new FloatValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFloatValue); + + /** FloatValue value. */ + public value: number; + + /** + * Creates a new FloatValue instance using the specified properties. + * @param [properties] Properties to set + * @returns FloatValue instance + */ + public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue; + + /** + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FloatValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue; + + /** + * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue; + + /** + * Verifies a FloatValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FloatValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue; + + /** + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * @param message FloatValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FloatValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Int64Value. */ + interface IInt64Value { + + /** Int64Value value */ + value?: (number|Long|null); + } + + /** Represents an Int64Value. */ + class Int64Value implements IInt64Value { + + /** + * Constructs a new Int64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt64Value); + + /** Int64Value value. */ + public value: (number|Long); + + /** + * Creates a new Int64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int64Value instance + */ + public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value; + + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value; + + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value; + + /** + * Verifies an Int64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int64Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value; + + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @param message Int64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int64Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a UInt64Value. */ + interface IUInt64Value { + + /** UInt64Value value */ + value?: (number|Long|null); + } + + /** Represents a UInt64Value. */ + class UInt64Value implements IUInt64Value { + + /** + * Constructs a new UInt64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt64Value); + + /** UInt64Value value. */ + public value: (number|Long); + + /** + * Creates a new UInt64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt64Value instance + */ + public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value; + + /** + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a UInt64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value; + + /** + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value; + + /** + * Verifies a UInt64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt64Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value; + + /** + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * @param message UInt64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UInt64Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Int32Value. */ + interface IInt32Value { + + /** Int32Value value */ + value?: (number|null); + } + + /** Represents an Int32Value. */ + class Int32Value implements IInt32Value { + + /** + * Constructs a new Int32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt32Value); + + /** Int32Value value. */ + public value: number; + + /** + * Creates a new Int32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int32Value instance + */ + public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value; + + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value; + + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value; + + /** + * Verifies an Int32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int32Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value; + + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @param message Int32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int32Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a UInt32Value. */ + interface IUInt32Value { + + /** UInt32Value value */ + value?: (number|null); + } + + /** Represents a UInt32Value. */ + class UInt32Value implements IUInt32Value { + + /** + * Constructs a new UInt32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt32Value); + + /** UInt32Value value. */ + public value: number; + + /** + * Creates a new UInt32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt32Value instance + */ + public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value; + + /** + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a UInt32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value; + + /** + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value; + + /** + * Verifies a UInt32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt32Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value; + + /** + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * @param message UInt32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this UInt32Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BoolValue. */ + interface IBoolValue { + + /** BoolValue value */ + value?: (boolean|null); + } + + /** Represents a BoolValue. */ + class BoolValue implements IBoolValue { + + /** + * Constructs a new BoolValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBoolValue); + + /** BoolValue value. */ + public value: boolean; + + /** + * Creates a new BoolValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BoolValue instance + */ + public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue; + + /** + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BoolValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue; + + /** + * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue; + + /** + * Verifies a BoolValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BoolValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue; + + /** + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @param message BoolValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BoolValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a StringValue. */ + interface IStringValue { + + /** StringValue value */ + value?: (string|null); + } + + /** Represents a StringValue. */ + class StringValue implements IStringValue { + + /** + * Constructs a new StringValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStringValue); + + /** StringValue value. */ + public value: string; + + /** + * Creates a new StringValue instance using the specified properties. + * @param [properties] Properties to set + * @returns StringValue instance + */ + public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue; + + /** + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a StringValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue; + + /** + * Decodes a StringValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue; + + /** + * Verifies a StringValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns StringValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue; + + /** + * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * @param message StringValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this StringValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a BytesValue. */ + interface IBytesValue { + + /** BytesValue value */ + value?: (Uint8Array|null); + } + + /** Represents a BytesValue. */ + class BytesValue implements IBytesValue { + + /** + * Constructs a new BytesValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBytesValue); + + /** BytesValue value. */ + public value: Uint8Array; + + /** + * Creates a new BytesValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BytesValue instance + */ + public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue; + + /** + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BytesValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue; + + /** + * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue; + + /** + * Verifies a BytesValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BytesValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue; + + /** + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * @param message BytesValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BytesValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Namespace type. */ + namespace type { + + /** Properties of a LatLng. */ + interface ILatLng { + + /** LatLng latitude */ + latitude?: (number|null); + + /** LatLng longitude */ + longitude?: (number|null); + } + + /** Represents a LatLng. */ + class LatLng implements ILatLng { + + /** + * Constructs a new LatLng. + * @param [properties] Properties to set + */ + constructor(properties?: google.type.ILatLng); + + /** LatLng latitude. */ + public latitude: number; + + /** LatLng longitude. */ + public longitude: number; + + /** + * Creates a new LatLng instance using the specified properties. + * @param [properties] Properties to set + * @returns LatLng instance + */ + public static create(properties?: google.type.ILatLng): google.type.LatLng; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.LatLng; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.LatLng; + + /** + * Verifies a LatLng message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LatLng + */ + public static fromObject(object: { [k: string]: any }): google.type.LatLng; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @param message LatLng + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.type.LatLng, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LatLng to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } +} diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js new file mode 100644 index 00000000000..e1ffa8a0b45 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -0,0 +1,22505 @@ +/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ +(function(global, factory) { /* global define, require, module */ + + /* AMD */ if (typeof define === 'function' && define.amd) + define(["protobufjs/minimal"], factory); + + /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports) + module.exports = factory(require("protobufjs/minimal")); + +})(this, function($protobuf) { + "use strict"; + + // Common aliases + var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; + + // Exported root namespace + var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + + $root.google = (function() { + + /** + * Namespace google. + * @exports google + * @namespace + */ + var google = {}; + + google.datastore = (function() { + + /** + * Namespace datastore. + * @memberof google + * @namespace + */ + var datastore = {}; + + datastore.v1 = (function() { + + /** + * Namespace v1. + * @memberof google.datastore + * @namespace + */ + var v1 = {}; + + v1.Datastore = (function() { + + /** + * Constructs a new Datastore service. + * @memberof google.datastore.v1 + * @classdesc Represents a Datastore + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + function Datastore(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (Datastore.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Datastore; + + /** + * Creates new Datastore service using the specified rpc implementation. + * @function create + * @memberof google.datastore.v1.Datastore + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {Datastore} RPC service. Useful where requests and/or responses are streamed. + */ + Datastore.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @memberof google.datastore.v1.Datastore + * @typedef LookupCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.LookupResponse} [response] LookupResponse + */ + + /** + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @param {google.datastore.v1.Datastore.LookupCallback} callback Node-style callback called with the error, if any, and LookupResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.lookup = function lookup(request, callback) { + return this.rpcCall(lookup, $root.google.datastore.v1.LookupRequest, $root.google.datastore.v1.LookupResponse, request, callback); + }, "name", { value: "Lookup" }); + + /** + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @memberof google.datastore.v1.Datastore + * @typedef RunQueryCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RunQueryResponse} [response] RunQueryResponse + */ + + /** + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @param {google.datastore.v1.Datastore.RunQueryCallback} callback Node-style callback called with the error, if any, and RunQueryResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.runQuery = function runQuery(request, callback) { + return this.rpcCall(runQuery, $root.google.datastore.v1.RunQueryRequest, $root.google.datastore.v1.RunQueryResponse, request, callback); + }, "name", { value: "RunQuery" }); + + /** + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @memberof google.datastore.v1.Datastore + * @typedef BeginTransactionCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.BeginTransactionResponse} [response] BeginTransactionResponse + */ + + /** + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @param {google.datastore.v1.Datastore.BeginTransactionCallback} callback Node-style callback called with the error, if any, and BeginTransactionResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.beginTransaction = function beginTransaction(request, callback) { + return this.rpcCall(beginTransaction, $root.google.datastore.v1.BeginTransactionRequest, $root.google.datastore.v1.BeginTransactionResponse, request, callback); + }, "name", { value: "BeginTransaction" }); + + /** + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @memberof google.datastore.v1.Datastore + * @typedef CommitCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.CommitResponse} [response] CommitResponse + */ + + /** + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @param {google.datastore.v1.Datastore.CommitCallback} callback Node-style callback called with the error, if any, and CommitResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.commit = function commit(request, callback) { + return this.rpcCall(commit, $root.google.datastore.v1.CommitRequest, $root.google.datastore.v1.CommitResponse, request, callback); + }, "name", { value: "Commit" }); + + /** + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @memberof google.datastore.v1.Datastore + * @typedef RollbackCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RollbackResponse} [response] RollbackResponse + */ + + /** + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @param {google.datastore.v1.Datastore.RollbackCallback} callback Node-style callback called with the error, if any, and RollbackResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.rollback = function rollback(request, callback) { + return this.rpcCall(rollback, $root.google.datastore.v1.RollbackRequest, $root.google.datastore.v1.RollbackResponse, request, callback); + }, "name", { value: "Rollback" }); + + /** + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @memberof google.datastore.v1.Datastore + * @typedef AllocateIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.AllocateIdsResponse} [response] AllocateIdsResponse + */ + + /** + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.AllocateIdsCallback} callback Node-style callback called with the error, if any, and AllocateIdsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.allocateIds = function allocateIds(request, callback) { + return this.rpcCall(allocateIds, $root.google.datastore.v1.AllocateIdsRequest, $root.google.datastore.v1.AllocateIdsResponse, request, callback); + }, "name", { value: "AllocateIds" }); + + /** + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @memberof google.datastore.v1.Datastore + * @typedef ReserveIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.ReserveIdsResponse} [response] ReserveIdsResponse + */ + + /** + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.ReserveIdsCallback} callback Node-style callback called with the error, if any, and ReserveIdsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.reserveIds = function reserveIds(request, callback) { + return this.rpcCall(reserveIds, $root.google.datastore.v1.ReserveIdsRequest, $root.google.datastore.v1.ReserveIdsResponse, request, callback); + }, "name", { value: "ReserveIds" }); + + /** + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return Datastore; + })(); + + v1.LookupRequest = (function() { + + /** + * Properties of a LookupRequest. + * @memberof google.datastore.v1 + * @interface ILookupRequest + * @property {string|null} [projectId] LookupRequest projectId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions + * @property {Array.|null} [keys] LookupRequest keys + */ + + /** + * Constructs a new LookupRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a LookupRequest. + * @implements ILookupRequest + * @constructor + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set + */ + function LookupRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LookupRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.projectId = ""; + + /** + * LookupRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.readOptions = null; + + /** + * LookupRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new LookupRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set + * @returns {google.datastore.v1.LookupRequest} LookupRequest instance + */ + LookupRequest.create = function create(properties) { + return new LookupRequest(properties); + }; + + /** + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookupRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + return writer; + }; + + /** + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookupRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LookupRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.LookupRequest} LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookupRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 1: + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + case 3: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.LookupRequest} LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookupRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LookupRequest message. + * @function verify + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LookupRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; + } + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.LookupRequest} LookupRequest + */ + LookupRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupRequest) + return object; + var message = new $root.google.datastore.v1.LookupRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); + } + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.LookupRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {google.datastore.v1.LookupRequest} message LookupRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookupRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) { + object.readOptions = null; + object.projectId = ""; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; + + /** + * Converts this LookupRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.LookupRequest + * @instance + * @returns {Object.} JSON object + */ + LookupRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LookupRequest; + })(); + + v1.LookupResponse = (function() { + + /** + * Properties of a LookupResponse. + * @memberof google.datastore.v1 + * @interface ILookupResponse + * @property {Array.|null} [found] LookupResponse found + * @property {Array.|null} [missing] LookupResponse missing + * @property {Array.|null} [deferred] LookupResponse deferred + */ + + /** + * Constructs a new LookupResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a LookupResponse. + * @implements ILookupResponse + * @constructor + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set + */ + function LookupResponse(properties) { + this.found = []; + this.missing = []; + this.deferred = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LookupResponse found. + * @member {Array.} found + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.found = $util.emptyArray; + + /** + * LookupResponse missing. + * @member {Array.} missing + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.missing = $util.emptyArray; + + /** + * LookupResponse deferred. + * @member {Array.} deferred + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.deferred = $util.emptyArray; + + /** + * Creates a new LookupResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set + * @returns {google.datastore.v1.LookupResponse} LookupResponse instance + */ + LookupResponse.create = function create(properties) { + return new LookupResponse(properties); + }; + + /** + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookupResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.found != null && message.found.length) + for (var i = 0; i < message.found.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.found[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.missing != null && message.missing.length) + for (var i = 0; i < message.missing.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.missing[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.deferred != null && message.deferred.length) + for (var i = 0; i < message.deferred.length; ++i) + $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookupResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LookupResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.LookupResponse} LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookupResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.found && message.found.length)) + message.found = []; + message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + case 2: + if (!(message.missing && message.missing.length)) + message.missing = []; + message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.deferred && message.deferred.length)) + message.deferred = []; + message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.LookupResponse} LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookupResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LookupResponse message. + * @function verify + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LookupResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.found != null && message.hasOwnProperty("found")) { + if (!Array.isArray(message.found)) + return "found: array expected"; + for (var i = 0; i < message.found.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.found[i]); + if (error) + return "found." + error; + } + } + if (message.missing != null && message.hasOwnProperty("missing")) { + if (!Array.isArray(message.missing)) + return "missing: array expected"; + for (var i = 0; i < message.missing.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.missing[i]); + if (error) + return "missing." + error; + } + } + if (message.deferred != null && message.hasOwnProperty("deferred")) { + if (!Array.isArray(message.deferred)) + return "deferred: array expected"; + for (var i = 0; i < message.deferred.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.deferred[i]); + if (error) + return "deferred." + error; + } + } + return null; + }; + + /** + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.LookupResponse} LookupResponse + */ + LookupResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupResponse) + return object; + var message = new $root.google.datastore.v1.LookupResponse(); + if (object.found) { + if (!Array.isArray(object.found)) + throw TypeError(".google.datastore.v1.LookupResponse.found: array expected"); + message.found = []; + for (var i = 0; i < object.found.length; ++i) { + if (typeof object.found[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.found: object expected"); + message.found[i] = $root.google.datastore.v1.EntityResult.fromObject(object.found[i]); + } + } + if (object.missing) { + if (!Array.isArray(object.missing)) + throw TypeError(".google.datastore.v1.LookupResponse.missing: array expected"); + message.missing = []; + for (var i = 0; i < object.missing.length; ++i) { + if (typeof object.missing[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.missing: object expected"); + message.missing[i] = $root.google.datastore.v1.EntityResult.fromObject(object.missing[i]); + } + } + if (object.deferred) { + if (!Array.isArray(object.deferred)) + throw TypeError(".google.datastore.v1.LookupResponse.deferred: array expected"); + message.deferred = []; + for (var i = 0; i < object.deferred.length; ++i) { + if (typeof object.deferred[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.deferred: object expected"); + message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.LookupResponse} message LookupResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookupResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.found = []; + object.missing = []; + object.deferred = []; + } + if (message.found && message.found.length) { + object.found = []; + for (var j = 0; j < message.found.length; ++j) + object.found[j] = $root.google.datastore.v1.EntityResult.toObject(message.found[j], options); + } + if (message.missing && message.missing.length) { + object.missing = []; + for (var j = 0; j < message.missing.length; ++j) + object.missing[j] = $root.google.datastore.v1.EntityResult.toObject(message.missing[j], options); + } + if (message.deferred && message.deferred.length) { + object.deferred = []; + for (var j = 0; j < message.deferred.length; ++j) + object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); + } + return object; + }; + + /** + * Converts this LookupResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.LookupResponse + * @instance + * @returns {Object.} JSON object + */ + LookupResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LookupResponse; + })(); + + v1.RunQueryRequest = (function() { + + /** + * Properties of a RunQueryRequest. + * @memberof google.datastore.v1 + * @interface IRunQueryRequest + * @property {string|null} [projectId] RunQueryRequest projectId + * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions + * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query + * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery + */ + + /** + * Constructs a new RunQueryRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a RunQueryRequest. + * @implements IRunQueryRequest + * @constructor + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set + */ + function RunQueryRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RunQueryRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.projectId = ""; + + /** + * RunQueryRequest partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.partitionId = null; + + /** + * RunQueryRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.readOptions = null; + + /** + * RunQueryRequest query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.query = null; + + /** + * RunQueryRequest gqlQuery. + * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.gqlQuery = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * RunQueryRequest queryType. + * @member {"query"|"gqlQuery"|undefined} queryType + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + Object.defineProperty(RunQueryRequest.prototype, "queryType", { + get: $util.oneOfGetter($oneOfFields = ["query", "gqlQuery"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new RunQueryRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest instance + */ + RunQueryRequest.create = function create(properties) { + return new RunQueryRequest(properties); + }; + + /** + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RunQueryRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.query != null && message.hasOwnProperty("query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) + $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + return writer; + }; + + /** + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RunQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RunQueryRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 2: + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + case 1: + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + case 3: + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + case 7: + message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RunQueryRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RunQueryRequest message. + * @function verify + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RunQueryRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); + if (error) + return "partitionId." + error; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + properties.queryType = 1; + { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; + } + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + if (properties.queryType === 1) + return "queryType: multiple values"; + properties.queryType = 1; + { + var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (error) + return "gqlQuery." + error; + } + } + return null; + }; + + /** + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + */ + RunQueryRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryRequest) + return object; + var message = new $root.google.datastore.v1.RunQueryRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + } + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); + } + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); + } + if (object.gqlQuery != null) { + if (typeof object.gqlQuery !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); + message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); + } + return message; + }; + + /** + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {google.datastore.v1.RunQueryRequest} message RunQueryRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RunQueryRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.readOptions = null; + object.partitionId = null; + object.projectId = ""; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.query != null && message.hasOwnProperty("query")) { + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); + if (options.oneofs) + object.queryType = "query"; + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); + if (options.oneofs) + object.queryType = "gqlQuery"; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; + + /** + * Converts this RunQueryRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.RunQueryRequest + * @instance + * @returns {Object.} JSON object + */ + RunQueryRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RunQueryRequest; + })(); + + v1.RunQueryResponse = (function() { + + /** + * Properties of a RunQueryResponse. + * @memberof google.datastore.v1 + * @interface IRunQueryResponse + * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch + * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query + */ + + /** + * Constructs a new RunQueryResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a RunQueryResponse. + * @implements IRunQueryResponse + * @constructor + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set + */ + function RunQueryResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RunQueryResponse batch. + * @member {google.datastore.v1.IQueryResultBatch|null|undefined} batch + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.batch = null; + + /** + * RunQueryResponse query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.query = null; + + /** + * Creates a new RunQueryResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse instance + */ + RunQueryResponse.create = function create(properties) { + return new RunQueryResponse(properties); + }; + + /** + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RunQueryResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.batch != null && message.hasOwnProperty("batch")) + $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.query != null && message.hasOwnProperty("query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RunQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RunQueryResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); + break; + case 2: + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RunQueryResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RunQueryResponse message. + * @function verify + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RunQueryResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.batch != null && message.hasOwnProperty("batch")) { + var error = $root.google.datastore.v1.QueryResultBatch.verify(message.batch); + if (error) + return "batch." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; + } + return null; + }; + + /** + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse + */ + RunQueryResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryResponse) + return object; + var message = new $root.google.datastore.v1.RunQueryResponse(); + if (object.batch != null) { + if (typeof object.batch !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.batch: object expected"); + message.batch = $root.google.datastore.v1.QueryResultBatch.fromObject(object.batch); + } + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); + } + return message; + }; + + /** + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {google.datastore.v1.RunQueryResponse} message RunQueryResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RunQueryResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.batch = null; + object.query = null; + } + if (message.batch != null && message.hasOwnProperty("batch")) + object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); + if (message.query != null && message.hasOwnProperty("query")) + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); + return object; + }; + + /** + * Converts this RunQueryResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.RunQueryResponse + * @instance + * @returns {Object.} JSON object + */ + RunQueryResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RunQueryResponse; + })(); + + v1.BeginTransactionRequest = (function() { + + /** + * Properties of a BeginTransactionRequest. + * @memberof google.datastore.v1 + * @interface IBeginTransactionRequest + * @property {string|null} [projectId] BeginTransactionRequest projectId + * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions + */ + + /** + * Constructs a new BeginTransactionRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a BeginTransactionRequest. + * @implements IBeginTransactionRequest + * @constructor + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + */ + function BeginTransactionRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BeginTransactionRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.projectId = ""; + + /** + * BeginTransactionRequest transactionOptions. + * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.transactionOptions = null; + + /** + * Creates a new BeginTransactionRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest instance + */ + BeginTransactionRequest.create = function create(properties) { + return new BeginTransactionRequest(properties); + }; + + /** + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) + $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 10: + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BeginTransactionRequest message. + * @function verify + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BeginTransactionRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { + var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); + if (error) + return "transactionOptions." + error; + } + return null; + }; + + /** + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + */ + BeginTransactionRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionRequest) + return object; + var message = new $root.google.datastore.v1.BeginTransactionRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.transactionOptions != null) { + if (typeof object.transactionOptions !== "object") + throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.fromObject(object.transactionOptions); + } + return message; + }; + + /** + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.BeginTransactionRequest} message BeginTransactionRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BeginTransactionRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.transactionOptions = null; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) + object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); + return object; + }; + + /** + * Converts this BeginTransactionRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + * @returns {Object.} JSON object + */ + BeginTransactionRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BeginTransactionRequest; + })(); + + v1.BeginTransactionResponse = (function() { + + /** + * Properties of a BeginTransactionResponse. + * @memberof google.datastore.v1 + * @interface IBeginTransactionResponse + * @property {Uint8Array|null} [transaction] BeginTransactionResponse transaction + */ + + /** + * Constructs a new BeginTransactionResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a BeginTransactionResponse. + * @implements IBeginTransactionResponse + * @constructor + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + */ + function BeginTransactionResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BeginTransactionResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.BeginTransactionResponse + * @instance + */ + BeginTransactionResponse.prototype.transaction = $util.newBuffer([]); + + /** + * Creates a new BeginTransactionResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse instance + */ + BeginTransactionResponse.create = function create(properties) { + return new BeginTransactionResponse(properties); + }; + + /** + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.transaction != null && message.hasOwnProperty("transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + return writer; + }; + + /** + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.transaction = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BeginTransactionResponse message. + * @function verify + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BeginTransactionResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + return null; + }; + + /** + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse + */ + BeginTransactionResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionResponse) + return object; + var message = new $root.google.datastore.v1.BeginTransactionResponse(); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; + return message; + }; + + /** + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {google.datastore.v1.BeginTransactionResponse} message BeginTransactionResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BeginTransactionResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + return object; + }; + + /** + * Converts this BeginTransactionResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.BeginTransactionResponse + * @instance + * @returns {Object.} JSON object + */ + BeginTransactionResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BeginTransactionResponse; + })(); + + v1.RollbackRequest = (function() { + + /** + * Properties of a RollbackRequest. + * @memberof google.datastore.v1 + * @interface IRollbackRequest + * @property {string|null} [projectId] RollbackRequest projectId + * @property {Uint8Array|null} [transaction] RollbackRequest transaction + */ + + /** + * Constructs a new RollbackRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a RollbackRequest. + * @implements IRollbackRequest + * @constructor + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set + */ + function RollbackRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RollbackRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RollbackRequest + * @instance + */ + RollbackRequest.prototype.projectId = ""; + + /** + * RollbackRequest transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.RollbackRequest + * @instance + */ + RollbackRequest.prototype.transaction = $util.newBuffer([]); + + /** + * Creates a new RollbackRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest instance + */ + RollbackRequest.create = function create(properties) { + return new RollbackRequest(properties); + }; + + /** + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.transaction != null && message.hasOwnProperty("transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + return writer; + }; + + /** + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 1: + message.transaction = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RollbackRequest message. + * @function verify + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RollbackRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + return null; + }; + + /** + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + */ + RollbackRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackRequest) + return object; + var message = new $root.google.datastore.v1.RollbackRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; + return message; + }; + + /** + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {google.datastore.v1.RollbackRequest} message RollbackRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RollbackRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + object.projectId = ""; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; + + /** + * Converts this RollbackRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.RollbackRequest + * @instance + * @returns {Object.} JSON object + */ + RollbackRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RollbackRequest; + })(); + + v1.RollbackResponse = (function() { + + /** + * Properties of a RollbackResponse. + * @memberof google.datastore.v1 + * @interface IRollbackResponse + */ + + /** + * Constructs a new RollbackResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a RollbackResponse. + * @implements IRollbackResponse + * @constructor + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set + */ + function RollbackResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new RollbackResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse instance + */ + RollbackResponse.create = function create(properties) { + return new RollbackResponse(properties); + }; + + /** + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RollbackResponse message. + * @function verify + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RollbackResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + */ + RollbackResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackResponse) + return object; + return new $root.google.datastore.v1.RollbackResponse(); + }; + + /** + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.RollbackResponse} message RollbackResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RollbackResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this RollbackResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.RollbackResponse + * @instance + * @returns {Object.} JSON object + */ + RollbackResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RollbackResponse; + })(); + + v1.CommitRequest = (function() { + + /** + * Properties of a CommitRequest. + * @memberof google.datastore.v1 + * @interface ICommitRequest + * @property {string|null} [projectId] CommitRequest projectId + * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode + * @property {Uint8Array|null} [transaction] CommitRequest transaction + * @property {Array.|null} [mutations] CommitRequest mutations + */ + + /** + * Constructs a new CommitRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a CommitRequest. + * @implements ICommitRequest + * @constructor + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set + */ + function CommitRequest(properties) { + this.mutations = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CommitRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.projectId = ""; + + /** + * CommitRequest mode. + * @member {google.datastore.v1.CommitRequest.Mode} mode + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.mode = 0; + + /** + * CommitRequest transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.transaction = $util.newBuffer([]); + + /** + * CommitRequest mutations. + * @member {Array.} mutations + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.mutations = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * CommitRequest transactionSelector. + * @member {"transaction"|undefined} transactionSelector + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + Object.defineProperty(CommitRequest.prototype, "transactionSelector", { + get: $util.oneOfGetter($oneOfFields = ["transaction"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new CommitRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set + * @returns {google.datastore.v1.CommitRequest} CommitRequest instance + */ + CommitRequest.create = function create(properties) { + return new CommitRequest(properties); + }; + + /** + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommitRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.transaction != null && message.hasOwnProperty("transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.mode != null && message.hasOwnProperty("mode")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); + if (message.mutations != null && message.mutations.length) + for (var i = 0; i < message.mutations.length; ++i) + $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + return writer; + }; + + /** + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommitRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CommitRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.CommitRequest} CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommitRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 5: + message.mode = reader.int32(); + break; + case 1: + message.transaction = reader.bytes(); + break; + case 6: + if (!(message.mutations && message.mutations.length)) + message.mutations = []; + message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.CommitRequest} CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommitRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CommitRequest message. + * @function verify + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CommitRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + properties.transactionSelector = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + } + if (message.mutations != null && message.hasOwnProperty("mutations")) { + if (!Array.isArray(message.mutations)) + return "mutations: array expected"; + for (var i = 0; i < message.mutations.length; ++i) { + var error = $root.google.datastore.v1.Mutation.verify(message.mutations[i]); + if (error) + return "mutations." + error; + } + } + return null; + }; + + /** + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.CommitRequest} CommitRequest + */ + CommitRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitRequest) + return object; + var message = new $root.google.datastore.v1.CommitRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + switch (object.mode) { + case "MODE_UNSPECIFIED": + case 0: + message.mode = 0; + break; + case "TRANSACTIONAL": + case 1: + message.mode = 1; + break; + case "NON_TRANSACTIONAL": + case 2: + message.mode = 2; + break; + } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; + if (object.mutations) { + if (!Array.isArray(object.mutations)) + throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); + message.mutations = []; + for (var i = 0; i < object.mutations.length; ++i) { + if (typeof object.mutations[i] !== "object") + throw TypeError(".google.datastore.v1.CommitRequest.mutations: object expected"); + message.mutations[i] = $root.google.datastore.v1.Mutation.fromObject(object.mutations[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.CommitRequest} message CommitRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CommitRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.mutations = []; + if (options.defaults) { + object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; + object.projectId = ""; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (options.oneofs) + object.transactionSelector = "transaction"; + } + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; + if (message.mutations && message.mutations.length) { + object.mutations = []; + for (var j = 0; j < message.mutations.length; ++j) + object.mutations[j] = $root.google.datastore.v1.Mutation.toObject(message.mutations[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; + + /** + * Converts this CommitRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.CommitRequest + * @instance + * @returns {Object.} JSON object + */ + CommitRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Mode enum. + * @name google.datastore.v1.CommitRequest.Mode + * @enum {string} + * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value + * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value + * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value + */ + CommitRequest.Mode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "TRANSACTIONAL"] = 1; + values[valuesById[2] = "NON_TRANSACTIONAL"] = 2; + return values; + })(); + + return CommitRequest; + })(); + + v1.CommitResponse = (function() { + + /** + * Properties of a CommitResponse. + * @memberof google.datastore.v1 + * @interface ICommitResponse + * @property {Array.|null} [mutationResults] CommitResponse mutationResults + * @property {number|null} [indexUpdates] CommitResponse indexUpdates + */ + + /** + * Constructs a new CommitResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a CommitResponse. + * @implements ICommitResponse + * @constructor + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set + */ + function CommitResponse(properties) { + this.mutationResults = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CommitResponse mutationResults. + * @member {Array.} mutationResults + * @memberof google.datastore.v1.CommitResponse + * @instance + */ + CommitResponse.prototype.mutationResults = $util.emptyArray; + + /** + * CommitResponse indexUpdates. + * @member {number} indexUpdates + * @memberof google.datastore.v1.CommitResponse + * @instance + */ + CommitResponse.prototype.indexUpdates = 0; + + /** + * Creates a new CommitResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set + * @returns {google.datastore.v1.CommitResponse} CommitResponse instance + */ + CommitResponse.create = function create(properties) { + return new CommitResponse(properties); + }; + + /** + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommitResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.mutationResults != null && message.mutationResults.length) + for (var i = 0; i < message.mutationResults.length; ++i) + $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); + return writer; + }; + + /** + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommitResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CommitResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommitResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 3: + if (!(message.mutationResults && message.mutationResults.length)) + message.mutationResults = []; + message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); + break; + case 4: + message.indexUpdates = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommitResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CommitResponse message. + * @function verify + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CommitResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.mutationResults != null && message.hasOwnProperty("mutationResults")) { + if (!Array.isArray(message.mutationResults)) + return "mutationResults: array expected"; + for (var i = 0; i < message.mutationResults.length; ++i) { + var error = $root.google.datastore.v1.MutationResult.verify(message.mutationResults[i]); + if (error) + return "mutationResults." + error; + } + } + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + if (!$util.isInteger(message.indexUpdates)) + return "indexUpdates: integer expected"; + return null; + }; + + /** + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.CommitResponse} CommitResponse + */ + CommitResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitResponse) + return object; + var message = new $root.google.datastore.v1.CommitResponse(); + if (object.mutationResults) { + if (!Array.isArray(object.mutationResults)) + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: array expected"); + message.mutationResults = []; + for (var i = 0; i < object.mutationResults.length; ++i) { + if (typeof object.mutationResults[i] !== "object") + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: object expected"); + message.mutationResults[i] = $root.google.datastore.v1.MutationResult.fromObject(object.mutationResults[i]); + } + } + if (object.indexUpdates != null) + message.indexUpdates = object.indexUpdates | 0; + return message; + }; + + /** + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.CommitResponse} message CommitResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CommitResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.mutationResults = []; + if (options.defaults) + object.indexUpdates = 0; + if (message.mutationResults && message.mutationResults.length) { + object.mutationResults = []; + for (var j = 0; j < message.mutationResults.length; ++j) + object.mutationResults[j] = $root.google.datastore.v1.MutationResult.toObject(message.mutationResults[j], options); + } + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + object.indexUpdates = message.indexUpdates; + return object; + }; + + /** + * Converts this CommitResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.CommitResponse + * @instance + * @returns {Object.} JSON object + */ + CommitResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CommitResponse; + })(); + + v1.AllocateIdsRequest = (function() { + + /** + * Properties of an AllocateIdsRequest. + * @memberof google.datastore.v1 + * @interface IAllocateIdsRequest + * @property {string|null} [projectId] AllocateIdsRequest projectId + * @property {Array.|null} [keys] AllocateIdsRequest keys + */ + + /** + * Constructs a new AllocateIdsRequest. + * @memberof google.datastore.v1 + * @classdesc Represents an AllocateIdsRequest. + * @implements IAllocateIdsRequest + * @constructor + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + */ + function AllocateIdsRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AllocateIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.projectId = ""; + + /** + * AllocateIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new AllocateIdsRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest instance + */ + AllocateIdsRequest.create = function create(properties) { + return new AllocateIdsRequest(properties); + }; + + /** + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + return writer; + }; + + /** + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 1: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllocateIdsRequest message. + * @function verify + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllocateIdsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + */ + AllocateIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsRequest) + return object; + var message = new $root.google.datastore.v1.AllocateIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.AllocateIdsRequest} message AllocateIdsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllocateIdsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) + object.projectId = ""; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; + + /** + * Converts this AllocateIdsRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + * @returns {Object.} JSON object + */ + AllocateIdsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return AllocateIdsRequest; + })(); + + v1.AllocateIdsResponse = (function() { + + /** + * Properties of an AllocateIdsResponse. + * @memberof google.datastore.v1 + * @interface IAllocateIdsResponse + * @property {Array.|null} [keys] AllocateIdsResponse keys + */ + + /** + * Constructs a new AllocateIdsResponse. + * @memberof google.datastore.v1 + * @classdesc Represents an AllocateIdsResponse. + * @implements IAllocateIdsResponse + * @constructor + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set + */ + function AllocateIdsResponse(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AllocateIdsResponse keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsResponse + * @instance + */ + AllocateIdsResponse.prototype.keys = $util.emptyArray; + + /** + * Creates a new AllocateIdsResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse instance + */ + AllocateIdsResponse.create = function create(properties) { + return new AllocateIdsResponse(properties); + }; + + /** + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllocateIdsResponse message. + * @function verify + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllocateIdsResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + */ + AllocateIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsResponse) + return object; + var message = new $root.google.datastore.v1.AllocateIdsResponse(); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.AllocateIdsResponse} message AllocateIdsResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllocateIdsResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + return object; + }; + + /** + * Converts this AllocateIdsResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.AllocateIdsResponse + * @instance + * @returns {Object.} JSON object + */ + AllocateIdsResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return AllocateIdsResponse; + })(); + + v1.ReserveIdsRequest = (function() { + + /** + * Properties of a ReserveIdsRequest. + * @memberof google.datastore.v1 + * @interface IReserveIdsRequest + * @property {string|null} [projectId] ReserveIdsRequest projectId + * @property {string|null} [databaseId] ReserveIdsRequest databaseId + * @property {Array.|null} [keys] ReserveIdsRequest keys + */ + + /** + * Constructs a new ReserveIdsRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a ReserveIdsRequest. + * @implements IReserveIdsRequest + * @constructor + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + */ + function ReserveIdsRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReserveIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.projectId = ""; + + /** + * ReserveIdsRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.databaseId = ""; + + /** + * ReserveIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new ReserveIdsRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest instance + */ + ReserveIdsRequest.create = function create(properties) { + return new ReserveIdsRequest(properties); + }; + + /** + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + return writer; + }; + + /** + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 9: + message.databaseId = reader.string(); + break; + case 1: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReserveIdsRequest message. + * @function verify + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReserveIdsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + */ + ReserveIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsRequest) + return object; + var message = new $root.google.datastore.v1.ReserveIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.ReserveIdsRequest} message ReserveIdsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReserveIdsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) { + object.projectId = ""; + object.databaseId = ""; + } + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; + return object; + }; + + /** + * Converts this ReserveIdsRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + * @returns {Object.} JSON object + */ + ReserveIdsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReserveIdsRequest; + })(); + + v1.ReserveIdsResponse = (function() { + + /** + * Properties of a ReserveIdsResponse. + * @memberof google.datastore.v1 + * @interface IReserveIdsResponse + */ + + /** + * Constructs a new ReserveIdsResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a ReserveIdsResponse. + * @implements IReserveIdsResponse + * @constructor + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + */ + function ReserveIdsResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ReserveIdsResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse instance + */ + ReserveIdsResponse.create = function create(properties) { + return new ReserveIdsResponse(properties); + }; + + /** + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReserveIdsResponse message. + * @function verify + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReserveIdsResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + */ + ReserveIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsResponse) + return object; + return new $root.google.datastore.v1.ReserveIdsResponse(); + }; + + /** + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.ReserveIdsResponse} message ReserveIdsResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReserveIdsResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this ReserveIdsResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReserveIdsResponse + * @instance + * @returns {Object.} JSON object + */ + ReserveIdsResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReserveIdsResponse; + })(); + + v1.Mutation = (function() { + + /** + * Properties of a Mutation. + * @memberof google.datastore.v1 + * @interface IMutation + * @property {google.datastore.v1.IEntity|null} [insert] Mutation insert + * @property {google.datastore.v1.IEntity|null} [update] Mutation update + * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert + * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete + * @property {number|Long|null} [baseVersion] Mutation baseVersion + */ + + /** + * Constructs a new Mutation. + * @memberof google.datastore.v1 + * @classdesc Represents a Mutation. + * @implements IMutation + * @constructor + * @param {google.datastore.v1.IMutation=} [properties] Properties to set + */ + function Mutation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Mutation insert. + * @member {google.datastore.v1.IEntity|null|undefined} insert + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.insert = null; + + /** + * Mutation update. + * @member {google.datastore.v1.IEntity|null|undefined} update + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.update = null; + + /** + * Mutation upsert. + * @member {google.datastore.v1.IEntity|null|undefined} upsert + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.upsert = null; + + /** + * Mutation delete. + * @member {google.datastore.v1.IKey|null|undefined} delete + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype["delete"] = null; + + /** + * Mutation baseVersion. + * @member {number|Long} baseVersion + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.baseVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Mutation operation. + * @member {"insert"|"update"|"upsert"|"delete"|undefined} operation + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "operation", { + get: $util.oneOfGetter($oneOfFields = ["insert", "update", "upsert", "delete"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Mutation conflictDetectionStrategy. + * @member {"baseVersion"|undefined} conflictDetectionStrategy + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { + get: $util.oneOfGetter($oneOfFields = ["baseVersion"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Mutation instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation=} [properties] Properties to set + * @returns {google.datastore.v1.Mutation} Mutation instance + */ + Mutation.create = function create(properties) { + return new Mutation(properties); + }; + + /** + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Mutation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.insert != null && message.hasOwnProperty("insert")) + $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.update != null && message.hasOwnProperty("update")) + $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.upsert != null && message.hasOwnProperty("upsert")) + $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message["delete"] != null && message.hasOwnProperty("delete")) + $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) + writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); + return writer; + }; + + /** + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Mutation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Mutation message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Mutation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Mutation} Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Mutation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Mutation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 4: + message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 5: + message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 6: + message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 7: + message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 8: + message.baseVersion = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Mutation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Mutation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Mutation} Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Mutation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Mutation message. + * @function verify + * @memberof google.datastore.v1.Mutation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Mutation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.insert != null && message.hasOwnProperty("insert")) { + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.insert); + if (error) + return "insert." + error; + } + } + if (message.update != null && message.hasOwnProperty("update")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.update); + if (error) + return "update." + error; + } + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.upsert); + if (error) + return "upsert." + error; + } + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Key.verify(message["delete"]); + if (error) + return "delete." + error; + } + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + properties.conflictDetectionStrategy = 1; + if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) + return "baseVersion: integer|Long expected"; + } + return null; + }; + + /** + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Mutation + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Mutation} Mutation + */ + Mutation.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Mutation) + return object; + var message = new $root.google.datastore.v1.Mutation(); + if (object.insert != null) { + if (typeof object.insert !== "object") + throw TypeError(".google.datastore.v1.Mutation.insert: object expected"); + message.insert = $root.google.datastore.v1.Entity.fromObject(object.insert); + } + if (object.update != null) { + if (typeof object.update !== "object") + throw TypeError(".google.datastore.v1.Mutation.update: object expected"); + message.update = $root.google.datastore.v1.Entity.fromObject(object.update); + } + if (object.upsert != null) { + if (typeof object.upsert !== "object") + throw TypeError(".google.datastore.v1.Mutation.upsert: object expected"); + message.upsert = $root.google.datastore.v1.Entity.fromObject(object.upsert); + } + if (object["delete"] != null) { + if (typeof object["delete"] !== "object") + throw TypeError(".google.datastore.v1.Mutation.delete: object expected"); + message["delete"] = $root.google.datastore.v1.Key.fromObject(object["delete"]); + } + if (object.baseVersion != null) + if ($util.Long) + (message.baseVersion = $util.Long.fromValue(object.baseVersion)).unsigned = false; + else if (typeof object.baseVersion === "string") + message.baseVersion = parseInt(object.baseVersion, 10); + else if (typeof object.baseVersion === "number") + message.baseVersion = object.baseVersion; + else if (typeof object.baseVersion === "object") + message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.Mutation} message Mutation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Mutation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.insert != null && message.hasOwnProperty("insert")) { + object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); + if (options.oneofs) + object.operation = "insert"; + } + if (message.update != null && message.hasOwnProperty("update")) { + object.update = $root.google.datastore.v1.Entity.toObject(message.update, options); + if (options.oneofs) + object.operation = "update"; + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + object.upsert = $root.google.datastore.v1.Entity.toObject(message.upsert, options); + if (options.oneofs) + object.operation = "upsert"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + object["delete"] = $root.google.datastore.v1.Key.toObject(message["delete"], options); + if (options.oneofs) + object.operation = "delete"; + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + if (typeof message.baseVersion === "number") + object.baseVersion = options.longs === String ? String(message.baseVersion) : message.baseVersion; + else + object.baseVersion = options.longs === String ? $util.Long.prototype.toString.call(message.baseVersion) : options.longs === Number ? new $util.LongBits(message.baseVersion.low >>> 0, message.baseVersion.high >>> 0).toNumber() : message.baseVersion; + if (options.oneofs) + object.conflictDetectionStrategy = "baseVersion"; + } + return object; + }; + + /** + * Converts this Mutation to JSON. + * @function toJSON + * @memberof google.datastore.v1.Mutation + * @instance + * @returns {Object.} JSON object + */ + Mutation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Mutation; + })(); + + v1.MutationResult = (function() { + + /** + * Properties of a MutationResult. + * @memberof google.datastore.v1 + * @interface IMutationResult + * @property {google.datastore.v1.IKey|null} [key] MutationResult key + * @property {number|Long|null} [version] MutationResult version + * @property {boolean|null} [conflictDetected] MutationResult conflictDetected + */ + + /** + * Constructs a new MutationResult. + * @memberof google.datastore.v1 + * @classdesc Represents a MutationResult. + * @implements IMutationResult + * @constructor + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + */ + function MutationResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutationResult key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.key = null; + + /** + * MutationResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * MutationResult conflictDetected. + * @member {boolean} conflictDetected + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.conflictDetected = false; + + /** + * Creates a new MutationResult instance using the specified properties. + * @function create + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + * @returns {google.datastore.v1.MutationResult} MutationResult instance + */ + MutationResult.create = function create(properties) { + return new MutationResult(properties); + }; + + /** + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutationResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && message.hasOwnProperty("key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.version != null && message.hasOwnProperty("version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); + return writer; + }; + + /** + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutationResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutationResult message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.MutationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.MutationResult} MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutationResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.MutationResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 3: + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 4: + message.version = reader.int64(); + break; + case 5: + message.conflictDetected = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.MutationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.MutationResult} MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutationResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutationResult message. + * @function verify + * @memberof google.datastore.v1.MutationResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutationResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + if (typeof message.conflictDetected !== "boolean") + return "conflictDetected: boolean expected"; + return null; + }; + + /** + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.MutationResult + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.MutationResult} MutationResult + */ + MutationResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.MutationResult) + return object; + var message = new $root.google.datastore.v1.MutationResult(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.MutationResult.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); + } + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.conflictDetected != null) + message.conflictDetected = Boolean(object.conflictDetected); + return message; + }; + + /** + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.MutationResult} message MutationResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutationResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.key = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + object.conflictDetected = false; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + object.conflictDetected = message.conflictDetected; + return object; + }; + + /** + * Converts this MutationResult to JSON. + * @function toJSON + * @memberof google.datastore.v1.MutationResult + * @instance + * @returns {Object.} JSON object + */ + MutationResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MutationResult; + })(); + + v1.ReadOptions = (function() { + + /** + * Properties of a ReadOptions. + * @memberof google.datastore.v1 + * @interface IReadOptions + * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency + * @property {Uint8Array|null} [transaction] ReadOptions transaction + */ + + /** + * Constructs a new ReadOptions. + * @memberof google.datastore.v1 + * @classdesc Represents a ReadOptions. + * @implements IReadOptions + * @constructor + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + */ + function ReadOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadOptions readConsistency. + * @member {google.datastore.v1.ReadOptions.ReadConsistency} readConsistency + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.readConsistency = 0; + + /** + * ReadOptions transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.transaction = $util.newBuffer([]); + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * ReadOptions consistencyType. + * @member {"readConsistency"|"transaction"|undefined} consistencyType + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + Object.defineProperty(ReadOptions.prototype, "consistencyType", { + get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new ReadOptions instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + * @returns {google.datastore.v1.ReadOptions} ReadOptions instance + */ + ReadOptions.create = function create(properties) { + return new ReadOptions(properties); + }; + + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); + if (message.transaction != null && message.hasOwnProperty("transaction")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); + return writer; + }; + + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReadOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.readConsistency = reader.int32(); + break; + case 2: + message.transaction = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOptions message. + * @function verify + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + properties.consistencyType = 1; + switch (message.readConsistency) { + default: + return "readConsistency: enum value expected"; + case 0: + case 1: + case 2: + break; + } + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + } + return null; + }; + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReadOptions} ReadOptions + */ + ReadOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReadOptions) + return object; + var message = new $root.google.datastore.v1.ReadOptions(); + switch (object.readConsistency) { + case "READ_CONSISTENCY_UNSPECIFIED": + case 0: + message.readConsistency = 0; + break; + case "STRONG": + case 1: + message.readConsistency = 1; + break; + case "EVENTUAL": + case 2: + message.readConsistency = 2; + break; + } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; + return message; + }; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.ReadOptions} message ReadOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; + if (options.oneofs) + object.consistencyType = "readConsistency"; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (options.oneofs) + object.consistencyType = "transaction"; + } + return object; + }; + + /** + * Converts this ReadOptions to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReadOptions + * @instance + * @returns {Object.} JSON object + */ + ReadOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * ReadConsistency enum. + * @name google.datastore.v1.ReadOptions.ReadConsistency + * @enum {string} + * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value + * @property {number} STRONG=1 STRONG value + * @property {number} EVENTUAL=2 EVENTUAL value + */ + ReadOptions.ReadConsistency = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "READ_CONSISTENCY_UNSPECIFIED"] = 0; + values[valuesById[1] = "STRONG"] = 1; + values[valuesById[2] = "EVENTUAL"] = 2; + return values; + })(); + + return ReadOptions; + })(); + + v1.TransactionOptions = (function() { + + /** + * Properties of a TransactionOptions. + * @memberof google.datastore.v1 + * @interface ITransactionOptions + * @property {google.datastore.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite + * @property {google.datastore.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly + */ + + /** + * Constructs a new TransactionOptions. + * @memberof google.datastore.v1 + * @classdesc Represents a TransactionOptions. + * @implements ITransactionOptions + * @constructor + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + */ + function TransactionOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TransactionOptions readWrite. + * @member {google.datastore.v1.TransactionOptions.IReadWrite|null|undefined} readWrite + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + TransactionOptions.prototype.readWrite = null; + + /** + * TransactionOptions readOnly. + * @member {google.datastore.v1.TransactionOptions.IReadOnly|null|undefined} readOnly + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + TransactionOptions.prototype.readOnly = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * TransactionOptions mode. + * @member {"readWrite"|"readOnly"|undefined} mode + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + Object.defineProperty(TransactionOptions.prototype, "mode", { + get: $util.oneOfGetter($oneOfFields = ["readWrite", "readOnly"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new TransactionOptions instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions instance + */ + TransactionOptions.create = function create(properties) { + return new TransactionOptions(properties); + }; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TransactionOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readWrite != null && message.hasOwnProperty("readWrite")) + $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readOnly != null && message.hasOwnProperty("readOnly")) + $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TransactionOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + break; + case 2: + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TransactionOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TransactionOptions message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TransactionOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadWrite.verify(message.readWrite); + if (error) + return "readWrite." + error; + } + } + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + if (properties.mode === 1) + return "mode: multiple values"; + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadOnly.verify(message.readOnly); + if (error) + return "readOnly." + error; + } + } + return null; + }; + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + */ + TransactionOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions) + return object; + var message = new $root.google.datastore.v1.TransactionOptions(); + if (object.readWrite != null) { + if (typeof object.readWrite !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readWrite: object expected"); + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); + } + if (object.readOnly != null) { + if (typeof object.readOnly !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readOnly: object expected"); + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); + } + return message; + }; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.TransactionOptions} message TransactionOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TransactionOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + object.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); + if (options.oneofs) + object.mode = "readWrite"; + } + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + object.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); + if (options.oneofs) + object.mode = "readOnly"; + } + return object; + }; + + /** + * Converts this TransactionOptions to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions + * @instance + * @returns {Object.} JSON object + */ + TransactionOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + TransactionOptions.ReadWrite = (function() { + + /** + * Properties of a ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadWrite + * @property {Uint8Array|null} [previousTransaction] ReadWrite previousTransaction + */ + + /** + * Constructs a new ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadWrite. + * @implements IReadWrite + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + */ + function ReadWrite(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadWrite previousTransaction. + * @member {Uint8Array} previousTransaction + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + */ + ReadWrite.prototype.previousTransaction = $util.newBuffer([]); + + /** + * Creates a new ReadWrite instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite instance + */ + ReadWrite.create = function create(properties) { + return new ReadWrite(properties); + }; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); + return writer; + }; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.previousTransaction = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadWrite message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadWrite.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + if (!(message.previousTransaction && typeof message.previousTransaction.length === "number" || $util.isString(message.previousTransaction))) + return "previousTransaction: buffer expected"; + return null; + }; + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + */ + ReadWrite.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadWrite) + return object; + var message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + if (object.previousTransaction != null) + if (typeof object.previousTransaction === "string") + $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); + else if (object.previousTransaction.length) + message.previousTransaction = object.previousTransaction; + return message; + }; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.ReadWrite} message ReadWrite + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadWrite.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.previousTransaction = ""; + else { + object.previousTransaction = []; + if (options.bytes !== Array) + object.previousTransaction = $util.newBuffer(object.previousTransaction); + } + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + object.previousTransaction = options.bytes === String ? $util.base64.encode(message.previousTransaction, 0, message.previousTransaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.previousTransaction) : message.previousTransaction; + return object; + }; + + /** + * Converts this ReadWrite to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + * @returns {Object.} JSON object + */ + ReadWrite.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReadWrite; + })(); + + TransactionOptions.ReadOnly = (function() { + + /** + * Properties of a ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadOnly + */ + + /** + * Constructs a new ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadOnly. + * @implements IReadOnly + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + */ + function ReadOnly(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ReadOnly instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly instance + */ + ReadOnly.create = function create(properties) { + return new ReadOnly(properties); + }; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOnly message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOnly.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + */ + ReadOnly.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) + return object; + return new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + }; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.ReadOnly} message ReadOnly + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOnly.toObject = function toObject() { + return {}; + }; + + /** + * Converts this ReadOnly to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @instance + * @returns {Object.} JSON object + */ + ReadOnly.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReadOnly; + })(); + + return TransactionOptions; + })(); + + v1.PartitionId = (function() { + + /** + * Properties of a PartitionId. + * @memberof google.datastore.v1 + * @interface IPartitionId + * @property {string|null} [projectId] PartitionId projectId + * @property {string|null} [namespaceId] PartitionId namespaceId + */ + + /** + * Constructs a new PartitionId. + * @memberof google.datastore.v1 + * @classdesc Represents a PartitionId. + * @implements IPartitionId + * @constructor + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + */ + function PartitionId(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PartitionId projectId. + * @member {string} projectId + * @memberof google.datastore.v1.PartitionId + * @instance + */ + PartitionId.prototype.projectId = ""; + + /** + * PartitionId namespaceId. + * @member {string} namespaceId + * @memberof google.datastore.v1.PartitionId + * @instance + */ + PartitionId.prototype.namespaceId = ""; + + /** + * Creates a new PartitionId instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PartitionId + * @static + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + * @returns {google.datastore.v1.PartitionId} PartitionId instance + */ + PartitionId.create = function create(properties) { + return new PartitionId(properties); + }; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PartitionId + * @static + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PartitionId.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && message.hasOwnProperty("projectId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); + return writer; + }; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PartitionId + * @static + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PartitionId.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PartitionId + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PartitionId} PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PartitionId.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PartitionId(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.projectId = reader.string(); + break; + case 4: + message.namespaceId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PartitionId + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PartitionId} PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PartitionId.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PartitionId message. + * @function verify + * @memberof google.datastore.v1.PartitionId + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PartitionId.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + if (!$util.isString(message.namespaceId)) + return "namespaceId: string expected"; + return null; + }; + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PartitionId + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PartitionId} PartitionId + */ + PartitionId.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PartitionId) + return object; + var message = new $root.google.datastore.v1.PartitionId(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.namespaceId != null) + message.namespaceId = String(object.namespaceId); + return message; + }; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PartitionId + * @static + * @param {google.datastore.v1.PartitionId} message PartitionId + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PartitionId.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.namespaceId = ""; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + object.namespaceId = message.namespaceId; + return object; + }; + + /** + * Converts this PartitionId to JSON. + * @function toJSON + * @memberof google.datastore.v1.PartitionId + * @instance + * @returns {Object.} JSON object + */ + PartitionId.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PartitionId; + })(); + + v1.Key = (function() { + + /** + * Properties of a Key. + * @memberof google.datastore.v1 + * @interface IKey + * @property {google.datastore.v1.IPartitionId|null} [partitionId] Key partitionId + * @property {Array.|null} [path] Key path + */ + + /** + * Constructs a new Key. + * @memberof google.datastore.v1 + * @classdesc Represents a Key. + * @implements IKey + * @constructor + * @param {google.datastore.v1.IKey=} [properties] Properties to set + */ + function Key(properties) { + this.path = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Key partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.Key + * @instance + */ + Key.prototype.partitionId = null; + + /** + * Key path. + * @member {Array.} path + * @memberof google.datastore.v1.Key + * @instance + */ + Key.prototype.path = $util.emptyArray; + + /** + * Creates a new Key instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Key + * @static + * @param {google.datastore.v1.IKey=} [properties] Properties to set + * @returns {google.datastore.v1.Key} Key instance + */ + Key.create = function create(properties) { + return new Key(properties); + }; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Key + * @static + * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Key.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.path != null && message.path.length) + for (var i = 0; i < message.path.length; ++i) + $root.google.datastore.v1.Key.PathElement.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Key + * @static + * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Key.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Key message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Key + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Key} Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Key.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + case 2: + if (!(message.path && message.path.length)) + message.path = []; + message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Key + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Key} Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Key.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Key message. + * @function verify + * @memberof google.datastore.v1.Key + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Key.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); + if (error) + return "partitionId." + error; + } + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) { + var error = $root.google.datastore.v1.Key.PathElement.verify(message.path[i]); + if (error) + return "path." + error; + } + } + return null; + }; + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Key + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Key} Key + */ + Key.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key) + return object; + var message = new $root.google.datastore.v1.Key(); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.Key.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + } + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.datastore.v1.Key.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) { + if (typeof object.path[i] !== "object") + throw TypeError(".google.datastore.v1.Key.path: object expected"); + message.path[i] = $root.google.datastore.v1.Key.PathElement.fromObject(object.path[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Key + * @static + * @param {google.datastore.v1.Key} message Key + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Key.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) + object.partitionId = null; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = $root.google.datastore.v1.Key.PathElement.toObject(message.path[j], options); + } + return object; + }; + + /** + * Converts this Key to JSON. + * @function toJSON + * @memberof google.datastore.v1.Key + * @instance + * @returns {Object.} JSON object + */ + Key.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Key.PathElement = (function() { + + /** + * Properties of a PathElement. + * @memberof google.datastore.v1.Key + * @interface IPathElement + * @property {string|null} [kind] PathElement kind + * @property {number|Long|null} [id] PathElement id + * @property {string|null} [name] PathElement name + */ + + /** + * Constructs a new PathElement. + * @memberof google.datastore.v1.Key + * @classdesc Represents a PathElement. + * @implements IPathElement + * @constructor + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + */ + function PathElement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PathElement kind. + * @member {string} kind + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.kind = ""; + + /** + * PathElement id. + * @member {number|Long} id + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * PathElement name. + * @member {string} name + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.name = ""; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PathElement idType. + * @member {"id"|"name"|undefined} idType + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + Object.defineProperty(PathElement.prototype, "idType", { + get: $util.oneOfGetter($oneOfFields = ["id", "name"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PathElement instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + * @returns {google.datastore.v1.Key.PathElement} PathElement instance + */ + PathElement.create = function create(properties) { + return new PathElement(properties); + }; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kind != null && message.hasOwnProperty("kind")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + return writer; + }; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key.PathElement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.kind = reader.string(); + break; + case 2: + message.id = reader.int64(); + break; + case 3: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PathElement message. + * @function verify + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PathElement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.id != null && message.hasOwnProperty("id")) { + properties.idType = 1; + if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) + return "id: integer|Long expected"; + } + if (message.name != null && message.hasOwnProperty("name")) { + if (properties.idType === 1) + return "idType: multiple values"; + properties.idType = 1; + if (!$util.isString(message.name)) + return "name: string expected"; + } + return null; + }; + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Key.PathElement} PathElement + */ + PathElement.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key.PathElement) + return object; + var message = new $root.google.datastore.v1.Key.PathElement(); + if (object.kind != null) + message.kind = String(object.kind); + if (object.id != null) + if ($util.Long) + (message.id = $util.Long.fromValue(object.id)).unsigned = false; + else if (typeof object.id === "string") + message.id = parseInt(object.id, 10); + else if (typeof object.id === "number") + message.id = object.id; + else if (typeof object.id === "object") + message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(); + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.PathElement} message PathElement + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PathElement.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.kind = ""; + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.id != null && message.hasOwnProperty("id")) { + if (typeof message.id === "number") + object.id = options.longs === String ? String(message.id) : message.id; + else + object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id; + if (options.oneofs) + object.idType = "id"; + } + if (message.name != null && message.hasOwnProperty("name")) { + object.name = message.name; + if (options.oneofs) + object.idType = "name"; + } + return object; + }; + + /** + * Converts this PathElement to JSON. + * @function toJSON + * @memberof google.datastore.v1.Key.PathElement + * @instance + * @returns {Object.} JSON object + */ + PathElement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PathElement; + })(); + + return Key; + })(); + + v1.ArrayValue = (function() { + + /** + * Properties of an ArrayValue. + * @memberof google.datastore.v1 + * @interface IArrayValue + * @property {Array.|null} [values] ArrayValue values + */ + + /** + * Constructs a new ArrayValue. + * @memberof google.datastore.v1 + * @classdesc Represents an ArrayValue. + * @implements IArrayValue + * @constructor + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + */ + function ArrayValue(properties) { + this.values = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ArrayValue values. + * @member {Array.} values + * @memberof google.datastore.v1.ArrayValue + * @instance + */ + ArrayValue.prototype.values = $util.emptyArray; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + * @returns {google.datastore.v1.ArrayValue} ArrayValue instance + */ + ArrayValue.create = function create(properties) { + return new ArrayValue(properties); + }; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ArrayValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.datastore.v1.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ArrayValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ArrayValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ArrayValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ArrayValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ArrayValue message. + * @function verify + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ArrayValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.values[i]); + if (error) + return "values." + error; + } + } + return null; + }; + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ArrayValue} ArrayValue + */ + ArrayValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ArrayValue) + return object; + var message = new $root.google.datastore.v1.ArrayValue(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.datastore.v1.ArrayValue.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.datastore.v1.ArrayValue.values: object expected"); + message.values[i] = $root.google.datastore.v1.Value.fromObject(object.values[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {google.datastore.v1.ArrayValue} message ArrayValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ArrayValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.datastore.v1.Value.toObject(message.values[j], options); + } + return object; + }; + + /** + * Converts this ArrayValue to JSON. + * @function toJSON + * @memberof google.datastore.v1.ArrayValue + * @instance + * @returns {Object.} JSON object + */ + ArrayValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ArrayValue; + })(); + + v1.Value = (function() { + + /** + * Properties of a Value. + * @memberof google.datastore.v1 + * @interface IValue + * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue + * @property {boolean|null} [booleanValue] Value booleanValue + * @property {number|Long|null} [integerValue] Value integerValue + * @property {number|null} [doubleValue] Value doubleValue + * @property {google.protobuf.ITimestamp|null} [timestampValue] Value timestampValue + * @property {google.datastore.v1.IKey|null} [keyValue] Value keyValue + * @property {string|null} [stringValue] Value stringValue + * @property {Uint8Array|null} [blobValue] Value blobValue + * @property {google.type.ILatLng|null} [geoPointValue] Value geoPointValue + * @property {google.datastore.v1.IEntity|null} [entityValue] Value entityValue + * @property {google.datastore.v1.IArrayValue|null} [arrayValue] Value arrayValue + * @property {number|null} [meaning] Value meaning + * @property {boolean|null} [excludeFromIndexes] Value excludeFromIndexes + */ + + /** + * Constructs a new Value. + * @memberof google.datastore.v1 + * @classdesc Represents a Value. + * @implements IValue + * @constructor + * @param {google.datastore.v1.IValue=} [properties] Properties to set + */ + function Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Value nullValue. + * @member {google.protobuf.NullValue} nullValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.nullValue = 0; + + /** + * Value booleanValue. + * @member {boolean} booleanValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.booleanValue = false; + + /** + * Value integerValue. + * @member {number|Long} integerValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.integerValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Value doubleValue. + * @member {number} doubleValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.doubleValue = 0; + + /** + * Value timestampValue. + * @member {google.protobuf.ITimestamp|null|undefined} timestampValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.timestampValue = null; + + /** + * Value keyValue. + * @member {google.datastore.v1.IKey|null|undefined} keyValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.keyValue = null; + + /** + * Value stringValue. + * @member {string} stringValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.stringValue = ""; + + /** + * Value blobValue. + * @member {Uint8Array} blobValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.blobValue = $util.newBuffer([]); + + /** + * Value geoPointValue. + * @member {google.type.ILatLng|null|undefined} geoPointValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.geoPointValue = null; + + /** + * Value entityValue. + * @member {google.datastore.v1.IEntity|null|undefined} entityValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.entityValue = null; + + /** + * Value arrayValue. + * @member {google.datastore.v1.IArrayValue|null|undefined} arrayValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.arrayValue = null; + + /** + * Value meaning. + * @member {number} meaning + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.meaning = 0; + + /** + * Value excludeFromIndexes. + * @member {boolean} excludeFromIndexes + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.excludeFromIndexes = false; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Value valueType. + * @member {"nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"|undefined} valueType + * @memberof google.datastore.v1.Value + * @instance + */ + Object.defineProperty(Value.prototype, "valueType", { + get: $util.oneOfGetter($oneOfFields = ["nullValue", "booleanValue", "integerValue", "doubleValue", "timestampValue", "keyValue", "stringValue", "blobValue", "geoPointValue", "entityValue", "arrayValue"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Value instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue=} [properties] Properties to set + * @returns {google.datastore.v1.Value} Value instance + */ + Value.create = function create(properties) { + return new Value(properties); + }; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); + if (message.integerValue != null && message.hasOwnProperty("integerValue")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); + if (message.keyValue != null && message.hasOwnProperty("keyValue")) + $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.entityValue != null && message.hasOwnProperty("entityValue")) + $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) + $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) + $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) + $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.nullValue != null && message.hasOwnProperty("nullValue")) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); + if (message.meaning != null && message.hasOwnProperty("meaning")) + writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); + if (message.blobValue != null && message.hasOwnProperty("blobValue")) + writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); + return writer; + }; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Value message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Value} Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 11: + message.nullValue = reader.int32(); + break; + case 1: + message.booleanValue = reader.bool(); + break; + case 2: + message.integerValue = reader.int64(); + break; + case 3: + message.doubleValue = reader.double(); + break; + case 10: + message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 5: + message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 17: + message.stringValue = reader.string(); + break; + case 18: + message.blobValue = reader.bytes(); + break; + case 8: + message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); + break; + case 6: + message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 9: + message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); + break; + case 14: + message.meaning = reader.int32(); + break; + case 19: + message.excludeFromIndexes = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Value} Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Value message. + * @function verify + * @memberof google.datastore.v1.Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + properties.valueType = 1; + switch (message.nullValue) { + default: + return "nullValue: enum value expected"; + case 0: + break; + } + } + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.booleanValue !== "boolean") + return "booleanValue: boolean expected"; + } + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isInteger(message.integerValue) && !(message.integerValue && $util.isInteger(message.integerValue.low) && $util.isInteger(message.integerValue.high))) + return "integerValue: integer|Long expected"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.timestampValue); + if (error) + return "timestampValue." + error; + } + } + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Key.verify(message.keyValue); + if (error) + return "keyValue." + error; + } + } + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!(message.blobValue && typeof message.blobValue.length === "number" || $util.isString(message.blobValue))) + return "blobValue: buffer expected"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.type.LatLng.verify(message.geoPointValue); + if (error) + return "geoPointValue." + error; + } + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.entityValue); + if (error) + return "entityValue." + error; + } + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.ArrayValue.verify(message.arrayValue); + if (error) + return "arrayValue." + error; + } + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + if (!$util.isInteger(message.meaning)) + return "meaning: integer expected"; + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + if (typeof message.excludeFromIndexes !== "boolean") + return "excludeFromIndexes: boolean expected"; + return null; + }; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Value + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Value} Value + */ + Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Value) + return object; + var message = new $root.google.datastore.v1.Value(); + switch (object.nullValue) { + case "NULL_VALUE": + case 0: + message.nullValue = 0; + break; + } + if (object.booleanValue != null) + message.booleanValue = Boolean(object.booleanValue); + if (object.integerValue != null) + if ($util.Long) + (message.integerValue = $util.Long.fromValue(object.integerValue)).unsigned = false; + else if (typeof object.integerValue === "string") + message.integerValue = parseInt(object.integerValue, 10); + else if (typeof object.integerValue === "number") + message.integerValue = object.integerValue; + else if (typeof object.integerValue === "object") + message.integerValue = new $util.LongBits(object.integerValue.low >>> 0, object.integerValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.timestampValue != null) { + if (typeof object.timestampValue !== "object") + throw TypeError(".google.datastore.v1.Value.timestampValue: object expected"); + message.timestampValue = $root.google.protobuf.Timestamp.fromObject(object.timestampValue); + } + if (object.keyValue != null) { + if (typeof object.keyValue !== "object") + throw TypeError(".google.datastore.v1.Value.keyValue: object expected"); + message.keyValue = $root.google.datastore.v1.Key.fromObject(object.keyValue); + } + if (object.stringValue != null) + message.stringValue = String(object.stringValue); + if (object.blobValue != null) + if (typeof object.blobValue === "string") + $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); + else if (object.blobValue.length) + message.blobValue = object.blobValue; + if (object.geoPointValue != null) { + if (typeof object.geoPointValue !== "object") + throw TypeError(".google.datastore.v1.Value.geoPointValue: object expected"); + message.geoPointValue = $root.google.type.LatLng.fromObject(object.geoPointValue); + } + if (object.entityValue != null) { + if (typeof object.entityValue !== "object") + throw TypeError(".google.datastore.v1.Value.entityValue: object expected"); + message.entityValue = $root.google.datastore.v1.Entity.fromObject(object.entityValue); + } + if (object.arrayValue != null) { + if (typeof object.arrayValue !== "object") + throw TypeError(".google.datastore.v1.Value.arrayValue: object expected"); + message.arrayValue = $root.google.datastore.v1.ArrayValue.fromObject(object.arrayValue); + } + if (object.meaning != null) + message.meaning = object.meaning | 0; + if (object.excludeFromIndexes != null) + message.excludeFromIndexes = Boolean(object.excludeFromIndexes); + return message; + }; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.Value} message Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.meaning = 0; + object.excludeFromIndexes = false; + } + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + object.booleanValue = message.booleanValue; + if (options.oneofs) + object.valueType = "booleanValue"; + } + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (typeof message.integerValue === "number") + object.integerValue = options.longs === String ? String(message.integerValue) : message.integerValue; + else + object.integerValue = options.longs === String ? $util.Long.prototype.toString.call(message.integerValue) : options.longs === Number ? new $util.LongBits(message.integerValue.low >>> 0, message.integerValue.high >>> 0).toNumber() : message.integerValue; + if (options.oneofs) + object.valueType = "integerValue"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; + if (options.oneofs) + object.valueType = "doubleValue"; + } + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + object.keyValue = $root.google.datastore.v1.Key.toObject(message.keyValue, options); + if (options.oneofs) + object.valueType = "keyValue"; + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + object.entityValue = $root.google.datastore.v1.Entity.toObject(message.entityValue, options); + if (options.oneofs) + object.valueType = "entityValue"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + object.geoPointValue = $root.google.type.LatLng.toObject(message.geoPointValue, options); + if (options.oneofs) + object.valueType = "geoPointValue"; + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + object.arrayValue = $root.google.datastore.v1.ArrayValue.toObject(message.arrayValue, options); + if (options.oneofs) + object.valueType = "arrayValue"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + object.timestampValue = $root.google.protobuf.Timestamp.toObject(message.timestampValue, options); + if (options.oneofs) + object.valueType = "timestampValue"; + } + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + if (options.oneofs) + object.valueType = "nullValue"; + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + object.meaning = message.meaning; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + object.stringValue = message.stringValue; + if (options.oneofs) + object.valueType = "stringValue"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + object.blobValue = options.bytes === String ? $util.base64.encode(message.blobValue, 0, message.blobValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.blobValue) : message.blobValue; + if (options.oneofs) + object.valueType = "blobValue"; + } + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + object.excludeFromIndexes = message.excludeFromIndexes; + return object; + }; + + /** + * Converts this Value to JSON. + * @function toJSON + * @memberof google.datastore.v1.Value + * @instance + * @returns {Object.} JSON object + */ + Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Value; + })(); + + v1.Entity = (function() { + + /** + * Properties of an Entity. + * @memberof google.datastore.v1 + * @interface IEntity + * @property {google.datastore.v1.IKey|null} [key] Entity key + * @property {Object.|null} [properties] Entity properties + */ + + /** + * Constructs a new Entity. + * @memberof google.datastore.v1 + * @classdesc Represents an Entity. + * @implements IEntity + * @constructor + * @param {google.datastore.v1.IEntity=} [properties] Properties to set + */ + function Entity(properties) { + this.properties = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Entity key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.Entity + * @instance + */ + Entity.prototype.key = null; + + /** + * Entity properties. + * @member {Object.} properties + * @memberof google.datastore.v1.Entity + * @instance + */ + Entity.prototype.properties = $util.emptyObject; + + /** + * Creates a new Entity instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Entity + * @static + * @param {google.datastore.v1.IEntity=} [properties] Properties to set + * @returns {google.datastore.v1.Entity} Entity instance + */ + Entity.create = function create(properties) { + return new Entity(properties); + }; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Entity + * @static + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Entity.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && message.hasOwnProperty("key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.properties != null && message.hasOwnProperty("properties")) + for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + return writer; + }; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Entity + * @static + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Entity.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Entity + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Entity} Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Entity.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 3: + reader.skip().pos++; + if (message.properties === $util.emptyObject) + message.properties = {}; + key = reader.string(); + reader.pos++; + message.properties[key] = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Entity + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Entity} Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Entity.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Entity message. + * @function verify + * @memberof google.datastore.v1.Entity + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Entity.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.properties != null && message.hasOwnProperty("properties")) { + if (!$util.isObject(message.properties)) + return "properties: object expected"; + var key = Object.keys(message.properties); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.properties[key[i]]); + if (error) + return "properties." + error; + } + } + return null; + }; + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Entity + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Entity} Entity + */ + Entity.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Entity) + return object; + var message = new $root.google.datastore.v1.Entity(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.Entity.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); + } + if (object.properties) { + if (typeof object.properties !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties = {}; + for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) { + if (typeof object.properties[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.properties[keys[i]]); + } + } + return message; + }; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Entity + * @static + * @param {google.datastore.v1.Entity} message Entity + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Entity.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.properties = {}; + if (options.defaults) + object.key = null; + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + var keys2; + if (message.properties && (keys2 = Object.keys(message.properties)).length) { + object.properties = {}; + for (var j = 0; j < keys2.length; ++j) + object.properties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.properties[keys2[j]], options); + } + return object; + }; + + /** + * Converts this Entity to JSON. + * @function toJSON + * @memberof google.datastore.v1.Entity + * @instance + * @returns {Object.} JSON object + */ + Entity.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Entity; + })(); + + v1.EntityResult = (function() { + + /** + * Properties of an EntityResult. + * @memberof google.datastore.v1 + * @interface IEntityResult + * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity + * @property {number|Long|null} [version] EntityResult version + * @property {Uint8Array|null} [cursor] EntityResult cursor + */ + + /** + * Constructs a new EntityResult. + * @memberof google.datastore.v1 + * @classdesc Represents an EntityResult. + * @implements IEntityResult + * @constructor + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + */ + function EntityResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EntityResult entity. + * @member {google.datastore.v1.IEntity|null|undefined} entity + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.entity = null; + + /** + * EntityResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * EntityResult cursor. + * @member {Uint8Array} cursor + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.cursor = $util.newBuffer([]); + + /** + * Creates a new EntityResult instance using the specified properties. + * @function create + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + * @returns {google.datastore.v1.EntityResult} EntityResult instance + */ + EntityResult.create = function create(properties) { + return new EntityResult(properties); + }; + + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.entity != null && message.hasOwnProperty("entity")) + $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.cursor != null && message.hasOwnProperty("cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + if (message.version != null && message.hasOwnProperty("version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + return writer; + }; + + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.EntityResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.EntityResult} EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.EntityResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 4: + message.version = reader.int64(); + break; + case 3: + message.cursor = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.EntityResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.EntityResult} EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EntityResult message. + * @function verify + * @memberof google.datastore.v1.EntityResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EntityResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.entity != null && message.hasOwnProperty("entity")) { + var error = $root.google.datastore.v1.Entity.verify(message.entity); + if (error) + return "entity." + error; + } + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.cursor != null && message.hasOwnProperty("cursor")) + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; + return null; + }; + + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.EntityResult + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.EntityResult} EntityResult + */ + EntityResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.EntityResult) + return object; + var message = new $root.google.datastore.v1.EntityResult(); + if (object.entity != null) { + if (typeof object.entity !== "object") + throw TypeError(".google.datastore.v1.EntityResult.entity: object expected"); + message.entity = $root.google.datastore.v1.Entity.fromObject(object.entity); + } + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length) + message.cursor = object.cursor; + return message; + }; + + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.EntityResult} message EntityResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EntityResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.entity = null; + if (options.bytes === String) + object.cursor = ""; + else { + object.cursor = []; + if (options.bytes !== Array) + object.cursor = $util.newBuffer(object.cursor); + } + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + } + if (message.entity != null && message.hasOwnProperty("entity")) + object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); + if (message.cursor != null && message.hasOwnProperty("cursor")) + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + return object; + }; + + /** + * Converts this EntityResult to JSON. + * @function toJSON + * @memberof google.datastore.v1.EntityResult + * @instance + * @returns {Object.} JSON object + */ + EntityResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * ResultType enum. + * @name google.datastore.v1.EntityResult.ResultType + * @enum {string} + * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value + * @property {number} FULL=1 FULL value + * @property {number} PROJECTION=2 PROJECTION value + * @property {number} KEY_ONLY=3 KEY_ONLY value + */ + EntityResult.ResultType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "RESULT_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "FULL"] = 1; + values[valuesById[2] = "PROJECTION"] = 2; + values[valuesById[3] = "KEY_ONLY"] = 3; + return values; + })(); + + return EntityResult; + })(); + + v1.Query = (function() { + + /** + * Properties of a Query. + * @memberof google.datastore.v1 + * @interface IQuery + * @property {Array.|null} [projection] Query projection + * @property {Array.|null} [kind] Query kind + * @property {google.datastore.v1.IFilter|null} [filter] Query filter + * @property {Array.|null} [order] Query order + * @property {Array.|null} [distinctOn] Query distinctOn + * @property {Uint8Array|null} [startCursor] Query startCursor + * @property {Uint8Array|null} [endCursor] Query endCursor + * @property {number|null} [offset] Query offset + * @property {google.protobuf.IInt32Value|null} [limit] Query limit + */ + + /** + * Constructs a new Query. + * @memberof google.datastore.v1 + * @classdesc Represents a Query. + * @implements IQuery + * @constructor + * @param {google.datastore.v1.IQuery=} [properties] Properties to set + */ + function Query(properties) { + this.projection = []; + this.kind = []; + this.order = []; + this.distinctOn = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Query projection. + * @member {Array.} projection + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.projection = $util.emptyArray; + + /** + * Query kind. + * @member {Array.} kind + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.kind = $util.emptyArray; + + /** + * Query filter. + * @member {google.datastore.v1.IFilter|null|undefined} filter + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.filter = null; + + /** + * Query order. + * @member {Array.} order + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.order = $util.emptyArray; + + /** + * Query distinctOn. + * @member {Array.} distinctOn + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.distinctOn = $util.emptyArray; + + /** + * Query startCursor. + * @member {Uint8Array} startCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.startCursor = $util.newBuffer([]); + + /** + * Query endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.endCursor = $util.newBuffer([]); + + /** + * Query offset. + * @member {number} offset + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.offset = 0; + + /** + * Query limit. + * @member {google.protobuf.IInt32Value|null|undefined} limit + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.limit = null; + + /** + * Creates a new Query instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery=} [properties] Properties to set + * @returns {google.datastore.v1.Query} Query instance + */ + Query.create = function create(properties) { + return new Query(properties); + }; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projection != null && message.projection.length) + for (var i = 0; i < message.projection.length; ++i) + $root.google.datastore.v1.Projection.encode(message.projection[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kind != null && message.kind.length) + for (var i = 0; i < message.kind.length; ++i) + $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.filter != null && message.hasOwnProperty("filter")) + $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.order != null && message.order.length) + for (var i = 0; i < message.order.length; ++i) + $root.google.datastore.v1.PropertyOrder.encode(message.order[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.distinctOn != null && message.distinctOn.length) + for (var i = 0; i < message.distinctOn.length; ++i) + $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); + if (message.offset != null && message.hasOwnProperty("offset")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); + if (message.limit != null && message.hasOwnProperty("limit")) + $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Query message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Query + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Query} Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Query.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Query(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (!(message.projection && message.projection.length)) + message.projection = []; + message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.kind && message.kind.length)) + message.kind = []; + message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); + break; + case 4: + message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.order && message.order.length)) + message.order = []; + message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.distinctOn && message.distinctOn.length)) + message.distinctOn = []; + message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); + break; + case 7: + message.startCursor = reader.bytes(); + break; + case 8: + message.endCursor = reader.bytes(); + break; + case 10: + message.offset = reader.int32(); + break; + case 12: + message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Query + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Query} Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Query.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Query message. + * @function verify + * @memberof google.datastore.v1.Query + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Query.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projection != null && message.hasOwnProperty("projection")) { + if (!Array.isArray(message.projection)) + return "projection: array expected"; + for (var i = 0; i < message.projection.length; ++i) { + var error = $root.google.datastore.v1.Projection.verify(message.projection[i]); + if (error) + return "projection." + error; + } + } + if (message.kind != null && message.hasOwnProperty("kind")) { + if (!Array.isArray(message.kind)) + return "kind: array expected"; + for (var i = 0; i < message.kind.length; ++i) { + var error = $root.google.datastore.v1.KindExpression.verify(message.kind[i]); + if (error) + return "kind." + error; + } + } + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.google.datastore.v1.Filter.verify(message.filter); + if (error) + return "filter." + error; + } + if (message.order != null && message.hasOwnProperty("order")) { + if (!Array.isArray(message.order)) + return "order: array expected"; + for (var i = 0; i < message.order.length; ++i) { + var error = $root.google.datastore.v1.PropertyOrder.verify(message.order[i]); + if (error) + return "order." + error; + } + } + if (message.distinctOn != null && message.hasOwnProperty("distinctOn")) { + if (!Array.isArray(message.distinctOn)) + return "distinctOn: array expected"; + for (var i = 0; i < message.distinctOn.length; ++i) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.distinctOn[i]); + if (error) + return "distinctOn." + error; + } + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + if (!(message.startCursor && typeof message.startCursor.length === "number" || $util.isString(message.startCursor))) + return "startCursor: buffer expected"; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.offset != null && message.hasOwnProperty("offset")) + if (!$util.isInteger(message.offset)) + return "offset: integer expected"; + if (message.limit != null && message.hasOwnProperty("limit")) { + var error = $root.google.protobuf.Int32Value.verify(message.limit); + if (error) + return "limit." + error; + } + return null; + }; + + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Query + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Query} Query + */ + Query.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Query) + return object; + var message = new $root.google.datastore.v1.Query(); + if (object.projection) { + if (!Array.isArray(object.projection)) + throw TypeError(".google.datastore.v1.Query.projection: array expected"); + message.projection = []; + for (var i = 0; i < object.projection.length; ++i) { + if (typeof object.projection[i] !== "object") + throw TypeError(".google.datastore.v1.Query.projection: object expected"); + message.projection[i] = $root.google.datastore.v1.Projection.fromObject(object.projection[i]); + } + } + if (object.kind) { + if (!Array.isArray(object.kind)) + throw TypeError(".google.datastore.v1.Query.kind: array expected"); + message.kind = []; + for (var i = 0; i < object.kind.length; ++i) { + if (typeof object.kind[i] !== "object") + throw TypeError(".google.datastore.v1.Query.kind: object expected"); + message.kind[i] = $root.google.datastore.v1.KindExpression.fromObject(object.kind[i]); + } + } + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".google.datastore.v1.Query.filter: object expected"); + message.filter = $root.google.datastore.v1.Filter.fromObject(object.filter); + } + if (object.order) { + if (!Array.isArray(object.order)) + throw TypeError(".google.datastore.v1.Query.order: array expected"); + message.order = []; + for (var i = 0; i < object.order.length; ++i) { + if (typeof object.order[i] !== "object") + throw TypeError(".google.datastore.v1.Query.order: object expected"); + message.order[i] = $root.google.datastore.v1.PropertyOrder.fromObject(object.order[i]); + } + } + if (object.distinctOn) { + if (!Array.isArray(object.distinctOn)) + throw TypeError(".google.datastore.v1.Query.distinctOn: array expected"); + message.distinctOn = []; + for (var i = 0; i < object.distinctOn.length; ++i) { + if (typeof object.distinctOn[i] !== "object") + throw TypeError(".google.datastore.v1.Query.distinctOn: object expected"); + message.distinctOn[i] = $root.google.datastore.v1.PropertyReference.fromObject(object.distinctOn[i]); + } + } + if (object.startCursor != null) + if (typeof object.startCursor === "string") + $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); + else if (object.startCursor.length) + message.startCursor = object.startCursor; + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length) + message.endCursor = object.endCursor; + if (object.offset != null) + message.offset = object.offset | 0; + if (object.limit != null) { + if (typeof object.limit !== "object") + throw TypeError(".google.datastore.v1.Query.limit: object expected"); + message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); + } + return message; + }; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.Query} message Query + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Query.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.projection = []; + object.kind = []; + object.order = []; + object.distinctOn = []; + } + if (options.defaults) { + object.filter = null; + if (options.bytes === String) + object.startCursor = ""; + else { + object.startCursor = []; + if (options.bytes !== Array) + object.startCursor = $util.newBuffer(object.startCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.offset = 0; + object.limit = null; + } + if (message.projection && message.projection.length) { + object.projection = []; + for (var j = 0; j < message.projection.length; ++j) + object.projection[j] = $root.google.datastore.v1.Projection.toObject(message.projection[j], options); + } + if (message.kind && message.kind.length) { + object.kind = []; + for (var j = 0; j < message.kind.length; ++j) + object.kind[j] = $root.google.datastore.v1.KindExpression.toObject(message.kind[j], options); + } + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.google.datastore.v1.Filter.toObject(message.filter, options); + if (message.order && message.order.length) { + object.order = []; + for (var j = 0; j < message.order.length; ++j) + object.order[j] = $root.google.datastore.v1.PropertyOrder.toObject(message.order[j], options); + } + if (message.distinctOn && message.distinctOn.length) { + object.distinctOn = []; + for (var j = 0; j < message.distinctOn.length; ++j) + object.distinctOn[j] = $root.google.datastore.v1.PropertyReference.toObject(message.distinctOn[j], options); + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + object.startCursor = options.bytes === String ? $util.base64.encode(message.startCursor, 0, message.startCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.startCursor) : message.startCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.offset != null && message.hasOwnProperty("offset")) + object.offset = message.offset; + if (message.limit != null && message.hasOwnProperty("limit")) + object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); + return object; + }; + + /** + * Converts this Query to JSON. + * @function toJSON + * @memberof google.datastore.v1.Query + * @instance + * @returns {Object.} JSON object + */ + Query.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Query; + })(); + + v1.KindExpression = (function() { + + /** + * Properties of a KindExpression. + * @memberof google.datastore.v1 + * @interface IKindExpression + * @property {string|null} [name] KindExpression name + */ + + /** + * Constructs a new KindExpression. + * @memberof google.datastore.v1 + * @classdesc Represents a KindExpression. + * @implements IKindExpression + * @constructor + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + */ + function KindExpression(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KindExpression name. + * @member {string} name + * @memberof google.datastore.v1.KindExpression + * @instance + */ + KindExpression.prototype.name = ""; + + /** + * Creates a new KindExpression instance using the specified properties. + * @function create + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + * @returns {google.datastore.v1.KindExpression} KindExpression instance + */ + KindExpression.create = function create(properties) { + return new KindExpression(properties); + }; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KindExpression.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + return writer; + }; + + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KindExpression.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.KindExpression + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.KindExpression} KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KindExpression.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.KindExpression(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.KindExpression + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.KindExpression} KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KindExpression.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KindExpression message. + * @function verify + * @memberof google.datastore.v1.KindExpression + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + KindExpression.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; + + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.KindExpression + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.KindExpression} KindExpression + */ + KindExpression.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.KindExpression) + return object; + var message = new $root.google.datastore.v1.KindExpression(); + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.KindExpression} message KindExpression + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KindExpression.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; + + /** + * Converts this KindExpression to JSON. + * @function toJSON + * @memberof google.datastore.v1.KindExpression + * @instance + * @returns {Object.} JSON object + */ + KindExpression.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KindExpression; + })(); + + v1.PropertyReference = (function() { + + /** + * Properties of a PropertyReference. + * @memberof google.datastore.v1 + * @interface IPropertyReference + * @property {string|null} [name] PropertyReference name + */ + + /** + * Constructs a new PropertyReference. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyReference. + * @implements IPropertyReference + * @constructor + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + */ + function PropertyReference(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PropertyReference name. + * @member {string} name + * @memberof google.datastore.v1.PropertyReference + * @instance + */ + PropertyReference.prototype.name = ""; + + /** + * Creates a new PropertyReference instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyReference} PropertyReference instance + */ + PropertyReference.create = function create(properties) { + return new PropertyReference(properties); + }; + + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyReference.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + return writer; + }; + + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyReference.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyReference.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyReference(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyReference.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyReference message. + * @function verify + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyReference.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; + + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyReference} PropertyReference + */ + PropertyReference.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyReference) + return object; + var message = new $root.google.datastore.v1.PropertyReference(); + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.PropertyReference} message PropertyReference + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyReference.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; + + /** + * Converts this PropertyReference to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyReference + * @instance + * @returns {Object.} JSON object + */ + PropertyReference.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PropertyReference; + })(); + + v1.Projection = (function() { + + /** + * Properties of a Projection. + * @memberof google.datastore.v1 + * @interface IProjection + * @property {google.datastore.v1.IPropertyReference|null} [property] Projection property + */ + + /** + * Constructs a new Projection. + * @memberof google.datastore.v1 + * @classdesc Represents a Projection. + * @implements IProjection + * @constructor + * @param {google.datastore.v1.IProjection=} [properties] Properties to set + */ + function Projection(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Projection property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.Projection + * @instance + */ + Projection.prototype.property = null; + + /** + * Creates a new Projection instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection=} [properties] Properties to set + * @returns {google.datastore.v1.Projection} Projection instance + */ + Projection.create = function create(properties) { + return new Projection(properties); + }; + + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Projection.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && message.hasOwnProperty("property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Projection.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Projection message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Projection + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Projection} Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Projection.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Projection(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Projection + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Projection} Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Projection.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Projection message. + * @function verify + * @memberof google.datastore.v1.Projection + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Projection.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + return null; + }; + + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Projection + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Projection} Projection + */ + Projection.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Projection) + return object; + var message = new $root.google.datastore.v1.Projection(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.Projection.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + return message; + }; + + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.Projection} message Projection + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Projection.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.property = null; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + return object; + }; + + /** + * Converts this Projection to JSON. + * @function toJSON + * @memberof google.datastore.v1.Projection + * @instance + * @returns {Object.} JSON object + */ + Projection.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Projection; + })(); + + v1.PropertyOrder = (function() { + + /** + * Properties of a PropertyOrder. + * @memberof google.datastore.v1 + * @interface IPropertyOrder + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyOrder property + * @property {google.datastore.v1.PropertyOrder.Direction|null} [direction] PropertyOrder direction + */ + + /** + * Constructs a new PropertyOrder. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyOrder. + * @implements IPropertyOrder + * @constructor + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + */ + function PropertyOrder(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PropertyOrder property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyOrder + * @instance + */ + PropertyOrder.prototype.property = null; + + /** + * PropertyOrder direction. + * @member {google.datastore.v1.PropertyOrder.Direction} direction + * @memberof google.datastore.v1.PropertyOrder + * @instance + */ + PropertyOrder.prototype.direction = 0; + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder instance + */ + PropertyOrder.create = function create(properties) { + return new PropertyOrder(properties); + }; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyOrder.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && message.hasOwnProperty("property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.direction != null && message.hasOwnProperty("direction")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); + return writer; + }; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyOrder.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyOrder.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyOrder(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + case 2: + message.direction = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyOrder.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyOrder message. + * @function verify + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyOrder.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + if (message.direction != null && message.hasOwnProperty("direction")) + switch (message.direction) { + default: + return "direction: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + */ + PropertyOrder.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyOrder) + return object; + var message = new $root.google.datastore.v1.PropertyOrder(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyOrder.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + switch (object.direction) { + case "DIRECTION_UNSPECIFIED": + case 0: + message.direction = 0; + break; + case "ASCENDING": + case 1: + message.direction = 1; + break; + case "DESCENDING": + case 2: + message.direction = 2; + break; + } + return message; + }; + + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.PropertyOrder} message PropertyOrder + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyOrder.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.property = null; + object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; + } + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; + return object; + }; + + /** + * Converts this PropertyOrder to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyOrder + * @instance + * @returns {Object.} JSON object + */ + PropertyOrder.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Direction enum. + * @name google.datastore.v1.PropertyOrder.Direction + * @enum {string} + * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + PropertyOrder.Direction = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); + + return PropertyOrder; + })(); + + v1.Filter = (function() { + + /** + * Properties of a Filter. + * @memberof google.datastore.v1 + * @interface IFilter + * @property {google.datastore.v1.ICompositeFilter|null} [compositeFilter] Filter compositeFilter + * @property {google.datastore.v1.IPropertyFilter|null} [propertyFilter] Filter propertyFilter + */ + + /** + * Constructs a new Filter. + * @memberof google.datastore.v1 + * @classdesc Represents a Filter. + * @implements IFilter + * @constructor + * @param {google.datastore.v1.IFilter=} [properties] Properties to set + */ + function Filter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Filter compositeFilter. + * @member {google.datastore.v1.ICompositeFilter|null|undefined} compositeFilter + * @memberof google.datastore.v1.Filter + * @instance + */ + Filter.prototype.compositeFilter = null; + + /** + * Filter propertyFilter. + * @member {google.datastore.v1.IPropertyFilter|null|undefined} propertyFilter + * @memberof google.datastore.v1.Filter + * @instance + */ + Filter.prototype.propertyFilter = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Filter filterType. + * @member {"compositeFilter"|"propertyFilter"|undefined} filterType + * @memberof google.datastore.v1.Filter + * @instance + */ + Object.defineProperty(Filter.prototype, "filterType", { + get: $util.oneOfGetter($oneOfFields = ["compositeFilter", "propertyFilter"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Filter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter=} [properties] Properties to set + * @returns {google.datastore.v1.Filter} Filter instance + */ + Filter.create = function create(properties) { + return new Filter(properties); + }; + + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Filter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) + $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) + $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Filter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Filter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Filter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Filter} Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Filter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Filter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); + break; + case 2: + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Filter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Filter} Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Filter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Filter message. + * @function verify + * @memberof google.datastore.v1.Filter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Filter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + properties.filterType = 1; + { + var error = $root.google.datastore.v1.CompositeFilter.verify(message.compositeFilter); + if (error) + return "compositeFilter." + error; + } + } + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + if (properties.filterType === 1) + return "filterType: multiple values"; + properties.filterType = 1; + { + var error = $root.google.datastore.v1.PropertyFilter.verify(message.propertyFilter); + if (error) + return "propertyFilter." + error; + } + } + return null; + }; + + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Filter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Filter} Filter + */ + Filter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Filter) + return object; + var message = new $root.google.datastore.v1.Filter(); + if (object.compositeFilter != null) { + if (typeof object.compositeFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.compositeFilter: object expected"); + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.fromObject(object.compositeFilter); + } + if (object.propertyFilter != null) { + if (typeof object.propertyFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.propertyFilter: object expected"); + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.fromObject(object.propertyFilter); + } + return message; + }; + + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.Filter} message Filter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Filter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + object.compositeFilter = $root.google.datastore.v1.CompositeFilter.toObject(message.compositeFilter, options); + if (options.oneofs) + object.filterType = "compositeFilter"; + } + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + object.propertyFilter = $root.google.datastore.v1.PropertyFilter.toObject(message.propertyFilter, options); + if (options.oneofs) + object.filterType = "propertyFilter"; + } + return object; + }; + + /** + * Converts this Filter to JSON. + * @function toJSON + * @memberof google.datastore.v1.Filter + * @instance + * @returns {Object.} JSON object + */ + Filter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Filter; + })(); + + v1.CompositeFilter = (function() { + + /** + * Properties of a CompositeFilter. + * @memberof google.datastore.v1 + * @interface ICompositeFilter + * @property {google.datastore.v1.CompositeFilter.Operator|null} [op] CompositeFilter op + * @property {Array.|null} [filters] CompositeFilter filters + */ + + /** + * Constructs a new CompositeFilter. + * @memberof google.datastore.v1 + * @classdesc Represents a CompositeFilter. + * @implements ICompositeFilter + * @constructor + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + */ + function CompositeFilter(properties) { + this.filters = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CompositeFilter op. + * @member {google.datastore.v1.CompositeFilter.Operator} op + * @memberof google.datastore.v1.CompositeFilter + * @instance + */ + CompositeFilter.prototype.op = 0; + + /** + * CompositeFilter filters. + * @member {Array.} filters + * @memberof google.datastore.v1.CompositeFilter + * @instance + */ + CompositeFilter.prototype.filters = $util.emptyArray; + + /** + * Creates a new CompositeFilter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter instance + */ + CompositeFilter.create = function create(properties) { + return new CompositeFilter(properties); + }; + + /** + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CompositeFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.op != null && message.hasOwnProperty("op")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); + if (message.filters != null && message.filters.length) + for (var i = 0; i < message.filters.length; ++i) + $root.google.datastore.v1.Filter.encode(message.filters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CompositeFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CompositeFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CompositeFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.op = reader.int32(); + break; + case 2: + if (!(message.filters && message.filters.length)) + message.filters = []; + message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CompositeFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CompositeFilter message. + * @function verify + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CompositeFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + break; + } + if (message.filters != null && message.hasOwnProperty("filters")) { + if (!Array.isArray(message.filters)) + return "filters: array expected"; + for (var i = 0; i < message.filters.length; ++i) { + var error = $root.google.datastore.v1.Filter.verify(message.filters[i]); + if (error) + return "filters." + error; + } + } + return null; + }; + + /** + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + */ + CompositeFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CompositeFilter) + return object; + var message = new $root.google.datastore.v1.CompositeFilter(); + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "AND": + case 1: + message.op = 1; + break; + } + if (object.filters) { + if (!Array.isArray(object.filters)) + throw TypeError(".google.datastore.v1.CompositeFilter.filters: array expected"); + message.filters = []; + for (var i = 0; i < object.filters.length; ++i) { + if (typeof object.filters[i] !== "object") + throw TypeError(".google.datastore.v1.CompositeFilter.filters: object expected"); + message.filters[i] = $root.google.datastore.v1.Filter.fromObject(object.filters[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {google.datastore.v1.CompositeFilter} message CompositeFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CompositeFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.filters = []; + if (options.defaults) + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; + if (message.filters && message.filters.length) { + object.filters = []; + for (var j = 0; j < message.filters.length; ++j) + object.filters[j] = $root.google.datastore.v1.Filter.toObject(message.filters[j], options); + } + return object; + }; + + /** + * Converts this CompositeFilter to JSON. + * @function toJSON + * @memberof google.datastore.v1.CompositeFilter + * @instance + * @returns {Object.} JSON object + */ + CompositeFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Operator enum. + * @name google.datastore.v1.CompositeFilter.Operator + * @enum {string} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} AND=1 AND value + */ + CompositeFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "AND"] = 1; + return values; + })(); + + return CompositeFilter; + })(); + + v1.PropertyFilter = (function() { + + /** + * Properties of a PropertyFilter. + * @memberof google.datastore.v1 + * @interface IPropertyFilter + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyFilter property + * @property {google.datastore.v1.PropertyFilter.Operator|null} [op] PropertyFilter op + * @property {google.datastore.v1.IValue|null} [value] PropertyFilter value + */ + + /** + * Constructs a new PropertyFilter. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyFilter. + * @implements IPropertyFilter + * @constructor + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + */ + function PropertyFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PropertyFilter property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.property = null; + + /** + * PropertyFilter op. + * @member {google.datastore.v1.PropertyFilter.Operator} op + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.op = 0; + + /** + * PropertyFilter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.value = null; + + /** + * Creates a new PropertyFilter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter instance + */ + PropertyFilter.create = function create(properties) { + return new PropertyFilter(properties); + }; + + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && message.hasOwnProperty("property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.op != null && message.hasOwnProperty("op")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); + if (message.value != null && message.hasOwnProperty("value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + case 2: + message.op = reader.int32(); + break; + case 3: + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyFilter message. + * @function verify + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + break; + } + if (message.value != null && message.hasOwnProperty("value")) { + var error = $root.google.datastore.v1.Value.verify(message.value); + if (error) + return "value." + error; + } + return null; + }; + + /** + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + */ + PropertyFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyFilter) + return object; + var message = new $root.google.datastore.v1.PropertyFilter(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "LESS_THAN": + case 1: + message.op = 1; + break; + case "LESS_THAN_OR_EQUAL": + case 2: + message.op = 2; + break; + case "GREATER_THAN": + case 3: + message.op = 3; + break; + case "GREATER_THAN_OR_EQUAL": + case 4: + message.op = 4; + break; + case "EQUAL": + case 5: + message.op = 5; + break; + case "HAS_ANCESTOR": + case 11: + message.op = 11; + break; + } + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); + } + return message; + }; + + /** + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.PropertyFilter} message PropertyFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.property = null; + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + object.value = null; + } + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; + if (message.value != null && message.hasOwnProperty("value")) + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + return object; + }; + + /** + * Converts this PropertyFilter to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyFilter + * @instance + * @returns {Object.} JSON object + */ + PropertyFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Operator enum. + * @name google.datastore.v1.PropertyFilter.Operator + * @enum {string} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} LESS_THAN=1 LESS_THAN value + * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value + * @property {number} GREATER_THAN=3 GREATER_THAN value + * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value + * @property {number} EQUAL=5 EQUAL value + * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value + */ + PropertyFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "LESS_THAN"] = 1; + values[valuesById[2] = "LESS_THAN_OR_EQUAL"] = 2; + values[valuesById[3] = "GREATER_THAN"] = 3; + values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; + values[valuesById[5] = "EQUAL"] = 5; + values[valuesById[11] = "HAS_ANCESTOR"] = 11; + return values; + })(); + + return PropertyFilter; + })(); + + v1.GqlQuery = (function() { + + /** + * Properties of a GqlQuery. + * @memberof google.datastore.v1 + * @interface IGqlQuery + * @property {string|null} [queryString] GqlQuery queryString + * @property {boolean|null} [allowLiterals] GqlQuery allowLiterals + * @property {Object.|null} [namedBindings] GqlQuery namedBindings + * @property {Array.|null} [positionalBindings] GqlQuery positionalBindings + */ + + /** + * Constructs a new GqlQuery. + * @memberof google.datastore.v1 + * @classdesc Represents a GqlQuery. + * @implements IGqlQuery + * @constructor + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + */ + function GqlQuery(properties) { + this.namedBindings = {}; + this.positionalBindings = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GqlQuery queryString. + * @member {string} queryString + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.queryString = ""; + + /** + * GqlQuery allowLiterals. + * @member {boolean} allowLiterals + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.allowLiterals = false; + + /** + * GqlQuery namedBindings. + * @member {Object.} namedBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.namedBindings = $util.emptyObject; + + /** + * GqlQuery positionalBindings. + * @member {Array.} positionalBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.positionalBindings = $util.emptyArray; + + /** + * Creates a new GqlQuery instance using the specified properties. + * @function create + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQuery} GqlQuery instance + */ + GqlQuery.create = function create(properties) { + return new GqlQuery(properties); + }; + + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQuery.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.queryString != null && message.hasOwnProperty("queryString")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); + if (message.positionalBindings != null && message.positionalBindings.length) + for (var i = 0; i < message.positionalBindings.length; ++i) + $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) + for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + return writer; + }; + + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQuery.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQuery.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.queryString = reader.string(); + break; + case 2: + message.allowLiterals = reader.bool(); + break; + case 5: + reader.skip().pos++; + if (message.namedBindings === $util.emptyObject) + message.namedBindings = {}; + key = reader.string(); + reader.pos++; + message.namedBindings[key] = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.positionalBindings && message.positionalBindings.length)) + message.positionalBindings = []; + message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQuery.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GqlQuery message. + * @function verify + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GqlQuery.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.queryString != null && message.hasOwnProperty("queryString")) + if (!$util.isString(message.queryString)) + return "queryString: string expected"; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + if (typeof message.allowLiterals !== "boolean") + return "allowLiterals: boolean expected"; + if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) { + if (!$util.isObject(message.namedBindings)) + return "namedBindings: object expected"; + var key = Object.keys(message.namedBindings); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.namedBindings[key[i]]); + if (error) + return "namedBindings." + error; + } + } + if (message.positionalBindings != null && message.hasOwnProperty("positionalBindings")) { + if (!Array.isArray(message.positionalBindings)) + return "positionalBindings: array expected"; + for (var i = 0; i < message.positionalBindings.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.positionalBindings[i]); + if (error) + return "positionalBindings." + error; + } + } + return null; + }; + + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.GqlQuery} GqlQuery + */ + GqlQuery.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQuery) + return object; + var message = new $root.google.datastore.v1.GqlQuery(); + if (object.queryString != null) + message.queryString = String(object.queryString); + if (object.allowLiterals != null) + message.allowLiterals = Boolean(object.allowLiterals); + if (object.namedBindings) { + if (typeof object.namedBindings !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings = {}; + for (var keys = Object.keys(object.namedBindings), i = 0; i < keys.length; ++i) { + if (typeof object.namedBindings[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings[keys[i]] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.namedBindings[keys[i]]); + } + } + if (object.positionalBindings) { + if (!Array.isArray(object.positionalBindings)) + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: array expected"); + message.positionalBindings = []; + for (var i = 0; i < object.positionalBindings.length; ++i) { + if (typeof object.positionalBindings[i] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: object expected"); + message.positionalBindings[i] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.positionalBindings[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.GqlQuery} message GqlQuery + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GqlQuery.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.positionalBindings = []; + if (options.objects || options.defaults) + object.namedBindings = {}; + if (options.defaults) { + object.queryString = ""; + object.allowLiterals = false; + } + if (message.queryString != null && message.hasOwnProperty("queryString")) + object.queryString = message.queryString; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + object.allowLiterals = message.allowLiterals; + if (message.positionalBindings && message.positionalBindings.length) { + object.positionalBindings = []; + for (var j = 0; j < message.positionalBindings.length; ++j) + object.positionalBindings[j] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.positionalBindings[j], options); + } + var keys2; + if (message.namedBindings && (keys2 = Object.keys(message.namedBindings)).length) { + object.namedBindings = {}; + for (var j = 0; j < keys2.length; ++j) + object.namedBindings[keys2[j]] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.namedBindings[keys2[j]], options); + } + return object; + }; + + /** + * Converts this GqlQuery to JSON. + * @function toJSON + * @memberof google.datastore.v1.GqlQuery + * @instance + * @returns {Object.} JSON object + */ + GqlQuery.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GqlQuery; + })(); + + v1.GqlQueryParameter = (function() { + + /** + * Properties of a GqlQueryParameter. + * @memberof google.datastore.v1 + * @interface IGqlQueryParameter + * @property {google.datastore.v1.IValue|null} [value] GqlQueryParameter value + * @property {Uint8Array|null} [cursor] GqlQueryParameter cursor + */ + + /** + * Constructs a new GqlQueryParameter. + * @memberof google.datastore.v1 + * @classdesc Represents a GqlQueryParameter. + * @implements IGqlQueryParameter + * @constructor + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + */ + function GqlQueryParameter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GqlQueryParameter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.value = null; + + /** + * GqlQueryParameter cursor. + * @member {Uint8Array} cursor + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.cursor = $util.newBuffer([]); + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * GqlQueryParameter parameterType. + * @member {"value"|"cursor"|undefined} parameterType + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + Object.defineProperty(GqlQueryParameter.prototype, "parameterType", { + get: $util.oneOfGetter($oneOfFields = ["value", "cursor"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter instance + */ + GqlQueryParameter.create = function create(properties) { + return new GqlQueryParameter(properties); + }; + + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.cursor != null && message.hasOwnProperty("cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + return writer; + }; + + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQueryParameter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQueryParameter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + case 3: + message.cursor = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQueryParameter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GqlQueryParameter message. + * @function verify + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GqlQueryParameter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.value != null && message.hasOwnProperty("value")) { + properties.parameterType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.value); + if (error) + return "value." + error; + } + } + if (message.cursor != null && message.hasOwnProperty("cursor")) { + if (properties.parameterType === 1) + return "parameterType: multiple values"; + properties.parameterType = 1; + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; + } + return null; + }; + + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + */ + GqlQueryParameter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQueryParameter) + return object; + var message = new $root.google.datastore.v1.GqlQueryParameter(); + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.GqlQueryParameter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); + } + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length) + message.cursor = object.cursor; + return message; + }; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.GqlQueryParameter} message GqlQueryParameter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GqlQueryParameter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.value != null && message.hasOwnProperty("value")) { + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + if (options.oneofs) + object.parameterType = "value"; + } + if (message.cursor != null && message.hasOwnProperty("cursor")) { + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (options.oneofs) + object.parameterType = "cursor"; + } + return object; + }; + + /** + * Converts this GqlQueryParameter to JSON. + * @function toJSON + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + * @returns {Object.} JSON object + */ + GqlQueryParameter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GqlQueryParameter; + })(); + + v1.QueryResultBatch = (function() { + + /** + * Properties of a QueryResultBatch. + * @memberof google.datastore.v1 + * @interface IQueryResultBatch + * @property {number|null} [skippedResults] QueryResultBatch skippedResults + * @property {Uint8Array|null} [skippedCursor] QueryResultBatch skippedCursor + * @property {google.datastore.v1.EntityResult.ResultType|null} [entityResultType] QueryResultBatch entityResultType + * @property {Array.|null} [entityResults] QueryResultBatch entityResults + * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor + * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults + * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion + */ + + /** + * Constructs a new QueryResultBatch. + * @memberof google.datastore.v1 + * @classdesc Represents a QueryResultBatch. + * @implements IQueryResultBatch + * @constructor + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + */ + function QueryResultBatch(properties) { + this.entityResults = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * QueryResultBatch skippedResults. + * @member {number} skippedResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.skippedResults = 0; + + /** + * QueryResultBatch skippedCursor. + * @member {Uint8Array} skippedCursor + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.skippedCursor = $util.newBuffer([]); + + /** + * QueryResultBatch entityResultType. + * @member {google.datastore.v1.EntityResult.ResultType} entityResultType + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.entityResultType = 0; + + /** + * QueryResultBatch entityResults. + * @member {Array.} entityResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.entityResults = $util.emptyArray; + + /** + * QueryResultBatch endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.endCursor = $util.newBuffer([]); + + /** + * QueryResultBatch moreResults. + * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.moreResults = 0; + + /** + * QueryResultBatch snapshotVersion. + * @member {number|Long} snapshotVersion + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @function create + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch instance + */ + QueryResultBatch.create = function create(properties) { + return new QueryResultBatch(properties); + }; + + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryResultBatch.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); + if (message.entityResults != null && message.entityResults.length) + for (var i = 0; i < message.entityResults.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); + return writer; + }; + + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryResultBatch.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryResultBatch.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryResultBatch(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 6: + message.skippedResults = reader.int32(); + break; + case 3: + message.skippedCursor = reader.bytes(); + break; + case 1: + message.entityResultType = reader.int32(); + break; + case 2: + if (!(message.entityResults && message.entityResults.length)) + message.entityResults = []; + message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + case 4: + message.endCursor = reader.bytes(); + break; + case 5: + message.moreResults = reader.int32(); + break; + case 7: + message.snapshotVersion = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryResultBatch.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a QueryResultBatch message. + * @function verify + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + QueryResultBatch.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + if (!$util.isInteger(message.skippedResults)) + return "skippedResults: integer expected"; + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + if (!(message.skippedCursor && typeof message.skippedCursor.length === "number" || $util.isString(message.skippedCursor))) + return "skippedCursor: buffer expected"; + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + switch (message.entityResultType) { + default: + return "entityResultType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.entityResults != null && message.hasOwnProperty("entityResults")) { + if (!Array.isArray(message.entityResults)) + return "entityResults: array expected"; + for (var i = 0; i < message.entityResults.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.entityResults[i]); + if (error) + return "entityResults." + error; + } + } + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + switch (message.moreResults) { + default: + return "moreResults: enum value expected"; + case 0: + case 1: + case 2: + case 4: + case 3: + break; + } + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) + return "snapshotVersion: integer|Long expected"; + return null; + }; + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + */ + QueryResultBatch.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.QueryResultBatch) + return object; + var message = new $root.google.datastore.v1.QueryResultBatch(); + if (object.skippedResults != null) + message.skippedResults = object.skippedResults | 0; + if (object.skippedCursor != null) + if (typeof object.skippedCursor === "string") + $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); + else if (object.skippedCursor.length) + message.skippedCursor = object.skippedCursor; + switch (object.entityResultType) { + case "RESULT_TYPE_UNSPECIFIED": + case 0: + message.entityResultType = 0; + break; + case "FULL": + case 1: + message.entityResultType = 1; + break; + case "PROJECTION": + case 2: + message.entityResultType = 2; + break; + case "KEY_ONLY": + case 3: + message.entityResultType = 3; + break; + } + if (object.entityResults) { + if (!Array.isArray(object.entityResults)) + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: array expected"); + message.entityResults = []; + for (var i = 0; i < object.entityResults.length; ++i) { + if (typeof object.entityResults[i] !== "object") + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: object expected"); + message.entityResults[i] = $root.google.datastore.v1.EntityResult.fromObject(object.entityResults[i]); + } + } + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length) + message.endCursor = object.endCursor; + switch (object.moreResults) { + case "MORE_RESULTS_TYPE_UNSPECIFIED": + case 0: + message.moreResults = 0; + break; + case "NOT_FINISHED": + case 1: + message.moreResults = 1; + break; + case "MORE_RESULTS_AFTER_LIMIT": + case 2: + message.moreResults = 2; + break; + case "MORE_RESULTS_AFTER_CURSOR": + case 4: + message.moreResults = 4; + break; + case "NO_MORE_RESULTS": + case 3: + message.moreResults = 3; + break; + } + if (object.snapshotVersion != null) + if ($util.Long) + (message.snapshotVersion = $util.Long.fromValue(object.snapshotVersion)).unsigned = false; + else if (typeof object.snapshotVersion === "string") + message.snapshotVersion = parseInt(object.snapshotVersion, 10); + else if (typeof object.snapshotVersion === "number") + message.snapshotVersion = object.snapshotVersion; + else if (typeof object.snapshotVersion === "object") + message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.QueryResultBatch} message QueryResultBatch + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + QueryResultBatch.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.entityResults = []; + if (options.defaults) { + object.entityResultType = options.enums === String ? "RESULT_TYPE_UNSPECIFIED" : 0; + if (options.bytes === String) + object.skippedCursor = ""; + else { + object.skippedCursor = []; + if (options.bytes !== Array) + object.skippedCursor = $util.newBuffer(object.skippedCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; + object.skippedResults = 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.snapshotVersion = options.longs === String ? "0" : 0; + } + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; + if (message.entityResults && message.entityResults.length) { + object.entityResults = []; + for (var j = 0; j < message.entityResults.length; ++j) + object.entityResults[j] = $root.google.datastore.v1.EntityResult.toObject(message.entityResults[j], options); + } + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + object.skippedCursor = options.bytes === String ? $util.base64.encode(message.skippedCursor, 0, message.skippedCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.skippedCursor) : message.skippedCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + object.skippedResults = message.skippedResults; + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (typeof message.snapshotVersion === "number") + object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; + else + object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; + return object; + }; + + /** + * Converts this QueryResultBatch to JSON. + * @function toJSON + * @memberof google.datastore.v1.QueryResultBatch + * @instance + * @returns {Object.} JSON object + */ + QueryResultBatch.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * MoreResultsType enum. + * @name google.datastore.v1.QueryResultBatch.MoreResultsType + * @enum {string} + * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value + * @property {number} NOT_FINISHED=1 NOT_FINISHED value + * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value + * @property {number} MORE_RESULTS_AFTER_CURSOR=4 MORE_RESULTS_AFTER_CURSOR value + * @property {number} NO_MORE_RESULTS=3 NO_MORE_RESULTS value + */ + QueryResultBatch.MoreResultsType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MORE_RESULTS_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "NOT_FINISHED"] = 1; + values[valuesById[2] = "MORE_RESULTS_AFTER_LIMIT"] = 2; + values[valuesById[4] = "MORE_RESULTS_AFTER_CURSOR"] = 4; + values[valuesById[3] = "NO_MORE_RESULTS"] = 3; + return values; + })(); + + return QueryResultBatch; + })(); + + return v1; + })(); + + return datastore; + })(); + + google.api = (function() { + + /** + * Namespace api. + * @memberof google + * @namespace + */ + var api = {}; + + api.Http = (function() { + + /** + * Properties of a Http. + * @memberof google.api + * @interface IHttp + * @property {Array.|null} [rules] Http rules + * @property {boolean|null} [fullyDecodeReservedExpansion] Http fullyDecodeReservedExpansion + */ + + /** + * Constructs a new Http. + * @memberof google.api + * @classdesc Represents a Http. + * @implements IHttp + * @constructor + * @param {google.api.IHttp=} [properties] Properties to set + */ + function Http(properties) { + this.rules = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Http rules. + * @member {Array.} rules + * @memberof google.api.Http + * @instance + */ + Http.prototype.rules = $util.emptyArray; + + /** + * Http fullyDecodeReservedExpansion. + * @member {boolean} fullyDecodeReservedExpansion + * @memberof google.api.Http + * @instance + */ + Http.prototype.fullyDecodeReservedExpansion = false; + + /** + * Creates a new Http instance using the specified properties. + * @function create + * @memberof google.api.Http + * @static + * @param {google.api.IHttp=} [properties] Properties to set + * @returns {google.api.Http} Http instance + */ + Http.create = function create(properties) { + return new Http(properties); + }; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @function encode + * @memberof google.api.Http + * @static + * @param {google.api.IHttp} message Http message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Http.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rules != null && message.rules.length) + for (var i = 0; i < message.rules.length; ++i) + $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion); + return writer; + }; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.Http + * @static + * @param {google.api.IHttp} message Http message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Http.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Http message from the specified reader or buffer. + * @function decode + * @memberof google.api.Http + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.Http} Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Http.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.rules && message.rules.length)) + message.rules = []; + message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + break; + case 2: + message.fullyDecodeReservedExpansion = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.Http + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.Http} Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Http.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Http message. + * @function verify + * @memberof google.api.Http + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Http.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rules != null && message.hasOwnProperty("rules")) { + if (!Array.isArray(message.rules)) + return "rules: array expected"; + for (var i = 0; i < message.rules.length; ++i) { + var error = $root.google.api.HttpRule.verify(message.rules[i]); + if (error) + return "rules." + error; + } + } + if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + if (typeof message.fullyDecodeReservedExpansion !== "boolean") + return "fullyDecodeReservedExpansion: boolean expected"; + return null; + }; + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.Http + * @static + * @param {Object.} object Plain object + * @returns {google.api.Http} Http + */ + Http.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.Http) + return object; + var message = new $root.google.api.Http(); + if (object.rules) { + if (!Array.isArray(object.rules)) + throw TypeError(".google.api.Http.rules: array expected"); + message.rules = []; + for (var i = 0; i < object.rules.length; ++i) { + if (typeof object.rules[i] !== "object") + throw TypeError(".google.api.Http.rules: object expected"); + message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]); + } + } + if (object.fullyDecodeReservedExpansion != null) + message.fullyDecodeReservedExpansion = Boolean(object.fullyDecodeReservedExpansion); + return message; + }; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.Http + * @static + * @param {google.api.Http} message Http + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Http.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.rules = []; + if (options.defaults) + object.fullyDecodeReservedExpansion = false; + if (message.rules && message.rules.length) { + object.rules = []; + for (var j = 0; j < message.rules.length; ++j) + object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options); + } + if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion; + return object; + }; + + /** + * Converts this Http to JSON. + * @function toJSON + * @memberof google.api.Http + * @instance + * @returns {Object.} JSON object + */ + Http.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Http; + })(); + + api.HttpRule = (function() { + + /** + * Properties of a HttpRule. + * @memberof google.api + * @interface IHttpRule + * @property {string|null} [selector] HttpRule selector + * @property {string|null} [get] HttpRule get + * @property {string|null} [put] HttpRule put + * @property {string|null} [post] HttpRule post + * @property {string|null} ["delete"] HttpRule delete + * @property {string|null} [patch] HttpRule patch + * @property {google.api.ICustomHttpPattern|null} [custom] HttpRule custom + * @property {string|null} [body] HttpRule body + * @property {string|null} [responseBody] HttpRule responseBody + * @property {Array.|null} [additionalBindings] HttpRule additionalBindings + */ + + /** + * Constructs a new HttpRule. + * @memberof google.api + * @classdesc Represents a HttpRule. + * @implements IHttpRule + * @constructor + * @param {google.api.IHttpRule=} [properties] Properties to set + */ + function HttpRule(properties) { + this.additionalBindings = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * HttpRule selector. + * @member {string} selector + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.selector = ""; + + /** + * HttpRule get. + * @member {string} get + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.get = ""; + + /** + * HttpRule put. + * @member {string} put + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.put = ""; + + /** + * HttpRule post. + * @member {string} post + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.post = ""; + + /** + * HttpRule delete. + * @member {string} delete + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype["delete"] = ""; + + /** + * HttpRule patch. + * @member {string} patch + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.patch = ""; + + /** + * HttpRule custom. + * @member {google.api.ICustomHttpPattern|null|undefined} custom + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.custom = null; + + /** + * HttpRule body. + * @member {string} body + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.body = ""; + + /** + * HttpRule responseBody. + * @member {string} responseBody + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.responseBody = ""; + + /** + * HttpRule additionalBindings. + * @member {Array.} additionalBindings + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.additionalBindings = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * HttpRule pattern. + * @member {"get"|"put"|"post"|"delete"|"patch"|"custom"|undefined} pattern + * @memberof google.api.HttpRule + * @instance + */ + Object.defineProperty(HttpRule.prototype, "pattern", { + get: $util.oneOfGetter($oneOfFields = ["get", "put", "post", "delete", "patch", "custom"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new HttpRule instance using the specified properties. + * @function create + * @memberof google.api.HttpRule + * @static + * @param {google.api.IHttpRule=} [properties] Properties to set + * @returns {google.api.HttpRule} HttpRule instance + */ + HttpRule.create = function create(properties) { + return new HttpRule(properties); + }; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @function encode + * @memberof google.api.HttpRule + * @static + * @param {google.api.IHttpRule} message HttpRule message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HttpRule.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.selector != null && message.hasOwnProperty("selector")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); + if (message.get != null && message.hasOwnProperty("get")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.get); + if (message.put != null && message.hasOwnProperty("put")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.put); + if (message.post != null && message.hasOwnProperty("post")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.post); + if (message["delete"] != null && message.hasOwnProperty("delete")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]); + if (message.patch != null && message.hasOwnProperty("patch")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch); + if (message.body != null && message.hasOwnProperty("body")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.body); + if (message.custom != null && message.hasOwnProperty("custom")) + $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.additionalBindings != null && message.additionalBindings.length) + for (var i = 0; i < message.additionalBindings.length; ++i) + $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.responseBody != null && message.hasOwnProperty("responseBody")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody); + return writer; + }; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.HttpRule + * @static + * @param {google.api.IHttpRule} message HttpRule message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HttpRule.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @function decode + * @memberof google.api.HttpRule + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.HttpRule} HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HttpRule.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.selector = reader.string(); + break; + case 2: + message.get = reader.string(); + break; + case 3: + message.put = reader.string(); + break; + case 4: + message.post = reader.string(); + break; + case 5: + message["delete"] = reader.string(); + break; + case 6: + message.patch = reader.string(); + break; + case 8: + message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); + break; + case 7: + message.body = reader.string(); + break; + case 12: + message.responseBody = reader.string(); + break; + case 11: + if (!(message.additionalBindings && message.additionalBindings.length)) + message.additionalBindings = []; + message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.HttpRule + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.HttpRule} HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HttpRule.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HttpRule message. + * @function verify + * @memberof google.api.HttpRule + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + HttpRule.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.selector != null && message.hasOwnProperty("selector")) + if (!$util.isString(message.selector)) + return "selector: string expected"; + if (message.get != null && message.hasOwnProperty("get")) { + properties.pattern = 1; + if (!$util.isString(message.get)) + return "get: string expected"; + } + if (message.put != null && message.hasOwnProperty("put")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.put)) + return "put: string expected"; + } + if (message.post != null && message.hasOwnProperty("post")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.post)) + return "post: string expected"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message["delete"])) + return "delete: string expected"; + } + if (message.patch != null && message.hasOwnProperty("patch")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.patch)) + return "patch: string expected"; + } + if (message.custom != null && message.hasOwnProperty("custom")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + { + var error = $root.google.api.CustomHttpPattern.verify(message.custom); + if (error) + return "custom." + error; + } + } + if (message.body != null && message.hasOwnProperty("body")) + if (!$util.isString(message.body)) + return "body: string expected"; + if (message.responseBody != null && message.hasOwnProperty("responseBody")) + if (!$util.isString(message.responseBody)) + return "responseBody: string expected"; + if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) { + if (!Array.isArray(message.additionalBindings)) + return "additionalBindings: array expected"; + for (var i = 0; i < message.additionalBindings.length; ++i) { + var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]); + if (error) + return "additionalBindings." + error; + } + } + return null; + }; + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.HttpRule + * @static + * @param {Object.} object Plain object + * @returns {google.api.HttpRule} HttpRule + */ + HttpRule.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.HttpRule) + return object; + var message = new $root.google.api.HttpRule(); + if (object.selector != null) + message.selector = String(object.selector); + if (object.get != null) + message.get = String(object.get); + if (object.put != null) + message.put = String(object.put); + if (object.post != null) + message.post = String(object.post); + if (object["delete"] != null) + message["delete"] = String(object["delete"]); + if (object.patch != null) + message.patch = String(object.patch); + if (object.custom != null) { + if (typeof object.custom !== "object") + throw TypeError(".google.api.HttpRule.custom: object expected"); + message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom); + } + if (object.body != null) + message.body = String(object.body); + if (object.responseBody != null) + message.responseBody = String(object.responseBody); + if (object.additionalBindings) { + if (!Array.isArray(object.additionalBindings)) + throw TypeError(".google.api.HttpRule.additionalBindings: array expected"); + message.additionalBindings = []; + for (var i = 0; i < object.additionalBindings.length; ++i) { + if (typeof object.additionalBindings[i] !== "object") + throw TypeError(".google.api.HttpRule.additionalBindings: object expected"); + message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.HttpRule + * @static + * @param {google.api.HttpRule} message HttpRule + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HttpRule.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.additionalBindings = []; + if (options.defaults) { + object.selector = ""; + object.body = ""; + object.responseBody = ""; + } + if (message.selector != null && message.hasOwnProperty("selector")) + object.selector = message.selector; + if (message.get != null && message.hasOwnProperty("get")) { + object.get = message.get; + if (options.oneofs) + object.pattern = "get"; + } + if (message.put != null && message.hasOwnProperty("put")) { + object.put = message.put; + if (options.oneofs) + object.pattern = "put"; + } + if (message.post != null && message.hasOwnProperty("post")) { + object.post = message.post; + if (options.oneofs) + object.pattern = "post"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + object["delete"] = message["delete"]; + if (options.oneofs) + object.pattern = "delete"; + } + if (message.patch != null && message.hasOwnProperty("patch")) { + object.patch = message.patch; + if (options.oneofs) + object.pattern = "patch"; + } + if (message.body != null && message.hasOwnProperty("body")) + object.body = message.body; + if (message.custom != null && message.hasOwnProperty("custom")) { + object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options); + if (options.oneofs) + object.pattern = "custom"; + } + if (message.additionalBindings && message.additionalBindings.length) { + object.additionalBindings = []; + for (var j = 0; j < message.additionalBindings.length; ++j) + object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options); + } + if (message.responseBody != null && message.hasOwnProperty("responseBody")) + object.responseBody = message.responseBody; + return object; + }; + + /** + * Converts this HttpRule to JSON. + * @function toJSON + * @memberof google.api.HttpRule + * @instance + * @returns {Object.} JSON object + */ + HttpRule.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HttpRule; + })(); + + api.CustomHttpPattern = (function() { + + /** + * Properties of a CustomHttpPattern. + * @memberof google.api + * @interface ICustomHttpPattern + * @property {string|null} [kind] CustomHttpPattern kind + * @property {string|null} [path] CustomHttpPattern path + */ + + /** + * Constructs a new CustomHttpPattern. + * @memberof google.api + * @classdesc Represents a CustomHttpPattern. + * @implements ICustomHttpPattern + * @constructor + * @param {google.api.ICustomHttpPattern=} [properties] Properties to set + */ + function CustomHttpPattern(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CustomHttpPattern kind. + * @member {string} kind + * @memberof google.api.CustomHttpPattern + * @instance + */ + CustomHttpPattern.prototype.kind = ""; + + /** + * CustomHttpPattern path. + * @member {string} path + * @memberof google.api.CustomHttpPattern + * @instance + */ + CustomHttpPattern.prototype.path = ""; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @function create + * @memberof google.api.CustomHttpPattern + * @static + * @param {google.api.ICustomHttpPattern=} [properties] Properties to set + * @returns {google.api.CustomHttpPattern} CustomHttpPattern instance + */ + CustomHttpPattern.create = function create(properties) { + return new CustomHttpPattern(properties); + }; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @function encode + * @memberof google.api.CustomHttpPattern + * @static + * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CustomHttpPattern.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kind != null && message.hasOwnProperty("kind")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); + if (message.path != null && message.hasOwnProperty("path")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.path); + return writer; + }; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.CustomHttpPattern + * @static + * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @function decode + * @memberof google.api.CustomHttpPattern + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.CustomHttpPattern} CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CustomHttpPattern.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.kind = reader.string(); + break; + case 2: + message.path = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.CustomHttpPattern + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.CustomHttpPattern} CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CustomHttpPattern.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CustomHttpPattern message. + * @function verify + * @memberof google.api.CustomHttpPattern + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CustomHttpPattern.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; + return null; + }; + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.CustomHttpPattern + * @static + * @param {Object.} object Plain object + * @returns {google.api.CustomHttpPattern} CustomHttpPattern + */ + CustomHttpPattern.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.CustomHttpPattern) + return object; + var message = new $root.google.api.CustomHttpPattern(); + if (object.kind != null) + message.kind = String(object.kind); + if (object.path != null) + message.path = String(object.path); + return message; + }; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.CustomHttpPattern + * @static + * @param {google.api.CustomHttpPattern} message CustomHttpPattern + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CustomHttpPattern.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.kind = ""; + object.path = ""; + } + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; + return object; + }; + + /** + * Converts this CustomHttpPattern to JSON. + * @function toJSON + * @memberof google.api.CustomHttpPattern + * @instance + * @returns {Object.} JSON object + */ + CustomHttpPattern.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CustomHttpPattern; + })(); + + return api; + })(); + + google.protobuf = (function() { + + /** + * Namespace protobuf. + * @memberof google + * @namespace + */ + var protobuf = {}; + + protobuf.FileDescriptorSet = (function() { + + /** + * Properties of a FileDescriptorSet. + * @memberof google.protobuf + * @interface IFileDescriptorSet + * @property {Array.|null} [file] FileDescriptorSet file + */ + + /** + * Constructs a new FileDescriptorSet. + * @memberof google.protobuf + * @classdesc Represents a FileDescriptorSet. + * @implements IFileDescriptorSet + * @constructor + * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set + */ + function FileDescriptorSet(properties) { + this.file = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileDescriptorSet file. + * @member {Array.} file + * @memberof google.protobuf.FileDescriptorSet + * @instance + */ + FileDescriptorSet.prototype.file = $util.emptyArray; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @function create + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance + */ + FileDescriptorSet.create = function create(properties) { + return new FileDescriptorSet(properties); + }; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorSet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.file != null && message.file.length) + for (var i = 0; i < message.file.length; ++i) + $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorSet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.file && message.file.length)) + message.file = []; + message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorSet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileDescriptorSet message. + * @function verify + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileDescriptorSet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.file != null && message.hasOwnProperty("file")) { + if (!Array.isArray(message.file)) + return "file: array expected"; + for (var i = 0; i < message.file.length; ++i) { + var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]); + if (error) + return "file." + error; + } + } + return null; + }; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + FileDescriptorSet.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorSet) + return object; + var message = new $root.google.protobuf.FileDescriptorSet(); + if (object.file) { + if (!Array.isArray(object.file)) + throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected"); + message.file = []; + for (var i = 0; i < object.file.length; ++i) { + if (typeof object.file[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); + message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorSet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.file = []; + if (message.file && message.file.length) { + object.file = []; + for (var j = 0; j < message.file.length; ++j) + object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options); + } + return object; + }; + + /** + * Converts this FileDescriptorSet to JSON. + * @function toJSON + * @memberof google.protobuf.FileDescriptorSet + * @instance + * @returns {Object.} JSON object + */ + FileDescriptorSet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileDescriptorSet; + })(); + + protobuf.FileDescriptorProto = (function() { + + /** + * Properties of a FileDescriptorProto. + * @memberof google.protobuf + * @interface IFileDescriptorProto + * @property {string|null} [name] FileDescriptorProto name + * @property {string|null} ["package"] FileDescriptorProto package + * @property {Array.|null} [dependency] FileDescriptorProto dependency + * @property {Array.|null} [publicDependency] FileDescriptorProto publicDependency + * @property {Array.|null} [weakDependency] FileDescriptorProto weakDependency + * @property {Array.|null} [messageType] FileDescriptorProto messageType + * @property {Array.|null} [enumType] FileDescriptorProto enumType + * @property {Array.|null} [service] FileDescriptorProto service + * @property {Array.|null} [extension] FileDescriptorProto extension + * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options + * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo + * @property {string|null} [syntax] FileDescriptorProto syntax + */ + + /** + * Constructs a new FileDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a FileDescriptorProto. + * @implements IFileDescriptorProto + * @constructor + * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set + */ + function FileDescriptorProto(properties) { + this.dependency = []; + this.publicDependency = []; + this.weakDependency = []; + this.messageType = []; + this.enumType = []; + this.service = []; + this.extension = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.name = ""; + + /** + * FileDescriptorProto package. + * @member {string} package + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype["package"] = ""; + + /** + * FileDescriptorProto dependency. + * @member {Array.} dependency + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.dependency = $util.emptyArray; + + /** + * FileDescriptorProto publicDependency. + * @member {Array.} publicDependency + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.publicDependency = $util.emptyArray; + + /** + * FileDescriptorProto weakDependency. + * @member {Array.} weakDependency + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.weakDependency = $util.emptyArray; + + /** + * FileDescriptorProto messageType. + * @member {Array.} messageType + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.messageType = $util.emptyArray; + + /** + * FileDescriptorProto enumType. + * @member {Array.} enumType + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.enumType = $util.emptyArray; + + /** + * FileDescriptorProto service. + * @member {Array.} service + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.service = $util.emptyArray; + + /** + * FileDescriptorProto extension. + * @member {Array.} extension + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.extension = $util.emptyArray; + + /** + * FileDescriptorProto options. + * @member {google.protobuf.IFileOptions|null|undefined} options + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.options = null; + + /** + * FileDescriptorProto sourceCodeInfo. + * @member {google.protobuf.ISourceCodeInfo|null|undefined} sourceCodeInfo + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.sourceCodeInfo = null; + + /** + * FileDescriptorProto syntax. + * @member {string} syntax + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.syntax = ""; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance + */ + FileDescriptorProto.create = function create(properties) { + return new FileDescriptorProto(properties); + }; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message["package"] != null && message.hasOwnProperty("package")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]); + if (message.dependency != null && message.dependency.length) + for (var i = 0; i < message.dependency.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]); + if (message.messageType != null && message.messageType.length) + for (var i = 0; i < message.messageType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.service != null && message.service.length) + for (var i = 0; i < message.service.length; ++i) + $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.publicDependency != null && message.publicDependency.length) + for (var i = 0; i < message.publicDependency.length; ++i) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]); + if (message.weakDependency != null && message.weakDependency.length) + for (var i = 0; i < message.weakDependency.length; ++i) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); + if (message.syntax != null && message.hasOwnProperty("syntax")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); + return writer; + }; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message["package"] = reader.string(); + break; + case 3: + if (!(message.dependency && message.dependency.length)) + message.dependency = []; + message.dependency.push(reader.string()); + break; + case 10: + if (!(message.publicDependency && message.publicDependency.length)) + message.publicDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.publicDependency.push(reader.int32()); + } else + message.publicDependency.push(reader.int32()); + break; + case 11: + if (!(message.weakDependency && message.weakDependency.length)) + message.weakDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.weakDependency.push(reader.int32()); + } else + message.weakDependency.push(reader.int32()); + break; + case 4: + if (!(message.messageType && message.messageType.length)) + message.messageType = []; + message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.service && message.service.length)) + message.service = []; + message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); + break; + case 7: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 8: + message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); + break; + case 9: + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); + break; + case 12: + message.syntax = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileDescriptorProto message. + * @function verify + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message["package"] != null && message.hasOwnProperty("package")) + if (!$util.isString(message["package"])) + return "package: string expected"; + if (message.dependency != null && message.hasOwnProperty("dependency")) { + if (!Array.isArray(message.dependency)) + return "dependency: array expected"; + for (var i = 0; i < message.dependency.length; ++i) + if (!$util.isString(message.dependency[i])) + return "dependency: string[] expected"; + } + if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) { + if (!Array.isArray(message.publicDependency)) + return "publicDependency: array expected"; + for (var i = 0; i < message.publicDependency.length; ++i) + if (!$util.isInteger(message.publicDependency[i])) + return "publicDependency: integer[] expected"; + } + if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) { + if (!Array.isArray(message.weakDependency)) + return "weakDependency: array expected"; + for (var i = 0; i < message.weakDependency.length; ++i) + if (!$util.isInteger(message.weakDependency[i])) + return "weakDependency: integer[] expected"; + } + if (message.messageType != null && message.hasOwnProperty("messageType")) { + if (!Array.isArray(message.messageType)) + return "messageType: array expected"; + for (var i = 0; i < message.messageType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]); + if (error) + return "messageType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.service != null && message.hasOwnProperty("service")) { + if (!Array.isArray(message.service)) + return "service: array expected"; + for (var i = 0; i < message.service.length; ++i) { + var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]); + if (error) + return "service." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FileOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { + var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo); + if (error) + return "sourceCodeInfo." + error; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + if (!$util.isString(message.syntax)) + return "syntax: string expected"; + return null; + }; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + FileDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorProto) + return object; + var message = new $root.google.protobuf.FileDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object["package"] != null) + message["package"] = String(object["package"]); + if (object.dependency) { + if (!Array.isArray(object.dependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.dependency: array expected"); + message.dependency = []; + for (var i = 0; i < object.dependency.length; ++i) + message.dependency[i] = String(object.dependency[i]); + } + if (object.publicDependency) { + if (!Array.isArray(object.publicDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.publicDependency: array expected"); + message.publicDependency = []; + for (var i = 0; i < object.publicDependency.length; ++i) + message.publicDependency[i] = object.publicDependency[i] | 0; + } + if (object.weakDependency) { + if (!Array.isArray(object.weakDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.weakDependency: array expected"); + message.weakDependency = []; + for (var i = 0; i < object.weakDependency.length; ++i) + message.weakDependency[i] = object.weakDependency[i] | 0; + } + if (object.messageType) { + if (!Array.isArray(object.messageType)) + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); + message.messageType = []; + for (var i = 0; i < object.messageType.length; ++i) { + if (typeof object.messageType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); + message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.service) { + if (!Array.isArray(object.service)) + throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected"); + message.service = []; + for (var i = 0; i < object.service.length; ++i) { + if (typeof object.service[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); + message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FileOptions.fromObject(object.options); + } + if (object.sourceCodeInfo != null) { + if (typeof object.sourceCodeInfo !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo); + } + if (object.syntax != null) + message.syntax = String(object.syntax); + return message; + }; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.dependency = []; + object.messageType = []; + object.enumType = []; + object.service = []; + object.extension = []; + object.publicDependency = []; + object.weakDependency = []; + } + if (options.defaults) { + object.name = ""; + object["package"] = ""; + object.options = null; + object.sourceCodeInfo = null; + object.syntax = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message["package"] != null && message.hasOwnProperty("package")) + object["package"] = message["package"]; + if (message.dependency && message.dependency.length) { + object.dependency = []; + for (var j = 0; j < message.dependency.length; ++j) + object.dependency[j] = message.dependency[j]; + } + if (message.messageType && message.messageType.length) { + object.messageType = []; + for (var j = 0; j < message.messageType.length; ++j) + object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.service && message.service.length) { + object.service = []; + for (var j = 0; j < message.service.length; ++j) + object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FileOptions.toObject(message.options, options); + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options); + if (message.publicDependency && message.publicDependency.length) { + object.publicDependency = []; + for (var j = 0; j < message.publicDependency.length; ++j) + object.publicDependency[j] = message.publicDependency[j]; + } + if (message.weakDependency && message.weakDependency.length) { + object.weakDependency = []; + for (var j = 0; j < message.weakDependency.length; ++j) + object.weakDependency[j] = message.weakDependency[j]; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + object.syntax = message.syntax; + return object; + }; + + /** + * Converts this FileDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.FileDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + FileDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileDescriptorProto; + })(); + + protobuf.DescriptorProto = (function() { + + /** + * Properties of a DescriptorProto. + * @memberof google.protobuf + * @interface IDescriptorProto + * @property {string|null} [name] DescriptorProto name + * @property {Array.|null} [field] DescriptorProto field + * @property {Array.|null} [extension] DescriptorProto extension + * @property {Array.|null} [nestedType] DescriptorProto nestedType + * @property {Array.|null} [enumType] DescriptorProto enumType + * @property {Array.|null} [extensionRange] DescriptorProto extensionRange + * @property {Array.|null} [oneofDecl] DescriptorProto oneofDecl + * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options + * @property {Array.|null} [reservedRange] DescriptorProto reservedRange + * @property {Array.|null} [reservedName] DescriptorProto reservedName + */ + + /** + * Constructs a new DescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a DescriptorProto. + * @implements IDescriptorProto + * @constructor + * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set + */ + function DescriptorProto(properties) { + this.field = []; + this.extension = []; + this.nestedType = []; + this.enumType = []; + this.extensionRange = []; + this.oneofDecl = []; + this.reservedRange = []; + this.reservedName = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptorProto name. + * @member {string} name + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.name = ""; + + /** + * DescriptorProto field. + * @member {Array.} field + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.field = $util.emptyArray; + + /** + * DescriptorProto extension. + * @member {Array.} extension + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.extension = $util.emptyArray; + + /** + * DescriptorProto nestedType. + * @member {Array.} nestedType + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.nestedType = $util.emptyArray; + + /** + * DescriptorProto enumType. + * @member {Array.} enumType + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.enumType = $util.emptyArray; + + /** + * DescriptorProto extensionRange. + * @member {Array.} extensionRange + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.extensionRange = $util.emptyArray; + + /** + * DescriptorProto oneofDecl. + * @member {Array.} oneofDecl + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.oneofDecl = $util.emptyArray; + + /** + * DescriptorProto options. + * @member {google.protobuf.IMessageOptions|null|undefined} options + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.options = null; + + /** + * DescriptorProto reservedRange. + * @member {Array.} reservedRange + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.reservedRange = $util.emptyArray; + + /** + * DescriptorProto reservedName. + * @member {Array.} reservedName + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.reservedName = $util.emptyArray; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto} DescriptorProto instance + */ + DescriptorProto.create = function create(properties) { + return new DescriptorProto(properties); + }; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.field != null && message.field.length) + for (var i = 0; i < message.field.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.nestedType != null && message.nestedType.length) + for (var i = 0; i < message.nestedType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.extensionRange != null && message.extensionRange.length) + for (var i = 0; i < message.extensionRange.length; ++i) + $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.oneofDecl != null && message.oneofDecl.length) + for (var i = 0; i < message.oneofDecl.length; ++i) + $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.reservedRange != null && message.reservedRange.length) + for (var i = 0; i < message.reservedRange.length; ++i) + $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.reservedName != null && message.reservedName.length) + for (var i = 0; i < message.reservedName.length; ++i) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); + return writer; + }; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.field && message.field.length)) + message.field = []; + message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.nestedType && message.nestedType.length)) + message.nestedType = []; + message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + case 4: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.extensionRange && message.extensionRange.length)) + message.extensionRange = []; + message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); + break; + case 8: + if (!(message.oneofDecl && message.oneofDecl.length)) + message.oneofDecl = []; + message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); + break; + case 7: + message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); + break; + case 9: + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); + break; + case 10: + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DescriptorProto message. + * @function verify + * @memberof google.protobuf.DescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.field != null && message.hasOwnProperty("field")) { + if (!Array.isArray(message.field)) + return "field: array expected"; + for (var i = 0; i < message.field.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]); + if (error) + return "field." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.nestedType != null && message.hasOwnProperty("nestedType")) { + if (!Array.isArray(message.nestedType)) + return "nestedType: array expected"; + for (var i = 0; i < message.nestedType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]); + if (error) + return "nestedType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) { + if (!Array.isArray(message.extensionRange)) + return "extensionRange: array expected"; + for (var i = 0; i < message.extensionRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]); + if (error) + return "extensionRange." + error; + } + } + if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) { + if (!Array.isArray(message.oneofDecl)) + return "oneofDecl: array expected"; + for (var i = 0; i < message.oneofDecl.length; ++i) { + var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]); + if (error) + return "oneofDecl." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MessageOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (!Array.isArray(message.reservedRange)) + return "reservedRange: array expected"; + for (var i = 0; i < message.reservedRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]); + if (error) + return "reservedRange." + error; + } + } + if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (!Array.isArray(message.reservedName)) + return "reservedName: array expected"; + for (var i = 0; i < message.reservedName.length; ++i) + if (!$util.isString(message.reservedName[i])) + return "reservedName: string[] expected"; + } + return null; + }; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + DescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto) + return object; + var message = new $root.google.protobuf.DescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.field) { + if (!Array.isArray(object.field)) + throw TypeError(".google.protobuf.DescriptorProto.field: array expected"); + message.field = []; + for (var i = 0; i < object.field.length; ++i) { + if (typeof object.field[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); + message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.DescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.nestedType) { + if (!Array.isArray(object.nestedType)) + throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected"); + message.nestedType = []; + for (var i = 0; i < object.nestedType.length; ++i) { + if (typeof object.nestedType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); + message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.extensionRange) { + if (!Array.isArray(object.extensionRange)) + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected"); + message.extensionRange = []; + for (var i = 0; i < object.extensionRange.length; ++i) { + if (typeof object.extensionRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); + message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]); + } + } + if (object.oneofDecl) { + if (!Array.isArray(object.oneofDecl)) + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected"); + message.oneofDecl = []; + for (var i = 0; i < object.oneofDecl.length; ++i) { + if (typeof object.oneofDecl[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); + message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MessageOptions.fromObject(object.options); + } + if (object.reservedRange) { + if (!Array.isArray(object.reservedRange)) + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected"); + message.reservedRange = []; + for (var i = 0; i < object.reservedRange.length; ++i) { + if (typeof object.reservedRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); + message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]); + } + } + if (object.reservedName) { + if (!Array.isArray(object.reservedName)) + throw TypeError(".google.protobuf.DescriptorProto.reservedName: array expected"); + message.reservedName = []; + for (var i = 0; i < object.reservedName.length; ++i) + message.reservedName[i] = String(object.reservedName[i]); + } + return message; + }; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.DescriptorProto} message DescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.field = []; + object.nestedType = []; + object.enumType = []; + object.extensionRange = []; + object.extension = []; + object.oneofDecl = []; + object.reservedRange = []; + object.reservedName = []; + } + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.field && message.field.length) { + object.field = []; + for (var j = 0; j < message.field.length; ++j) + object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options); + } + if (message.nestedType && message.nestedType.length) { + object.nestedType = []; + for (var j = 0; j < message.nestedType.length; ++j) + object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.extensionRange && message.extensionRange.length) { + object.extensionRange = []; + for (var j = 0; j < message.extensionRange.length; ++j) + object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options); + if (message.oneofDecl && message.oneofDecl.length) { + object.oneofDecl = []; + for (var j = 0; j < message.oneofDecl.length; ++j) + object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options); + } + if (message.reservedRange && message.reservedRange.length) { + object.reservedRange = []; + for (var j = 0; j < message.reservedRange.length; ++j) + object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options); + } + if (message.reservedName && message.reservedName.length) { + object.reservedName = []; + for (var j = 0; j < message.reservedName.length; ++j) + object.reservedName[j] = message.reservedName[j]; + } + return object; + }; + + /** + * Converts this DescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto + * @instance + * @returns {Object.} JSON object + */ + DescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + DescriptorProto.ExtensionRange = (function() { + + /** + * Properties of an ExtensionRange. + * @memberof google.protobuf.DescriptorProto + * @interface IExtensionRange + * @property {number|null} [start] ExtensionRange start + * @property {number|null} [end] ExtensionRange end + * @property {google.protobuf.IExtensionRangeOptions|null} [options] ExtensionRange options + */ + + /** + * Constructs a new ExtensionRange. + * @memberof google.protobuf.DescriptorProto + * @classdesc Represents an ExtensionRange. + * @implements IExtensionRange + * @constructor + * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set + */ + function ExtensionRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExtensionRange start. + * @member {number} start + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.start = 0; + + /** + * ExtensionRange end. + * @member {number} end + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.end = 0; + + /** + * ExtensionRange options. + * @member {google.protobuf.IExtensionRangeOptions|null|undefined} options + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.options = null; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance + */ + ExtensionRange.create = function create(properties) { + return new ExtensionRange(properties); + }; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + case 3: + message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExtensionRange message. + * @function verify + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExtensionRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + ExtensionRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected"); + message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + object.options = null; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this ExtensionRange to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + * @returns {Object.} JSON object + */ + ExtensionRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExtensionRange; + })(); + + DescriptorProto.ReservedRange = (function() { + + /** + * Properties of a ReservedRange. + * @memberof google.protobuf.DescriptorProto + * @interface IReservedRange + * @property {number|null} [start] ReservedRange start + * @property {number|null} [end] ReservedRange end + */ + + /** + * Constructs a new ReservedRange. + * @memberof google.protobuf.DescriptorProto + * @classdesc Represents a ReservedRange. + * @implements IReservedRange + * @constructor + * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set + */ + function ReservedRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReservedRange start. + * @member {number} start + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + */ + ReservedRange.prototype.start = 0; + + /** + * ReservedRange end. + * @member {number} end + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + */ + ReservedRange.prototype.end = 0; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance + */ + ReservedRange.create = function create(properties) { + return new ReservedRange(properties); + }; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReservedRange message. + * @function verify + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReservedRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + ReservedRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReservedRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Converts this ReservedRange to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + * @returns {Object.} JSON object + */ + ReservedRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReservedRange; + })(); + + return DescriptorProto; + })(); + + protobuf.ExtensionRangeOptions = (function() { + + /** + * Properties of an ExtensionRangeOptions. + * @memberof google.protobuf + * @interface IExtensionRangeOptions + * @property {Array.|null} [uninterpretedOption] ExtensionRangeOptions uninterpretedOption + */ + + /** + * Constructs a new ExtensionRangeOptions. + * @memberof google.protobuf + * @classdesc Represents an ExtensionRangeOptions. + * @implements IExtensionRangeOptions + * @constructor + * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set + */ + function ExtensionRangeOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExtensionRangeOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + */ + ExtensionRangeOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions instance + */ + ExtensionRangeOptions.create = function create(properties) { + return new ExtensionRangeOptions(properties); + }; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRangeOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRangeOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRangeOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRangeOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExtensionRangeOptions message. + * @function verify + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExtensionRangeOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + */ + ExtensionRangeOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ExtensionRangeOptions) + return object; + var message = new $root.google.protobuf.ExtensionRangeOptions(); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.ExtensionRangeOptions} message ExtensionRangeOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRangeOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @function toJSON + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + * @returns {Object.} JSON object + */ + ExtensionRangeOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExtensionRangeOptions; + })(); + + protobuf.FieldDescriptorProto = (function() { + + /** + * Properties of a FieldDescriptorProto. + * @memberof google.protobuf + * @interface IFieldDescriptorProto + * @property {string|null} [name] FieldDescriptorProto name + * @property {number|null} [number] FieldDescriptorProto number + * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label + * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type + * @property {string|null} [typeName] FieldDescriptorProto typeName + * @property {string|null} [extendee] FieldDescriptorProto extendee + * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue + * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex + * @property {string|null} [jsonName] FieldDescriptorProto jsonName + * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options + */ + + /** + * Constructs a new FieldDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a FieldDescriptorProto. + * @implements IFieldDescriptorProto + * @constructor + * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set + */ + function FieldDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.name = ""; + + /** + * FieldDescriptorProto number. + * @member {number} number + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.number = 0; + + /** + * FieldDescriptorProto label. + * @member {google.protobuf.FieldDescriptorProto.Label} label + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.label = 1; + + /** + * FieldDescriptorProto type. + * @member {google.protobuf.FieldDescriptorProto.Type} type + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.type = 1; + + /** + * FieldDescriptorProto typeName. + * @member {string} typeName + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.typeName = ""; + + /** + * FieldDescriptorProto extendee. + * @member {string} extendee + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.extendee = ""; + + /** + * FieldDescriptorProto defaultValue. + * @member {string} defaultValue + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.defaultValue = ""; + + /** + * FieldDescriptorProto oneofIndex. + * @member {number} oneofIndex + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.oneofIndex = 0; + + /** + * FieldDescriptorProto jsonName. + * @member {string} jsonName + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.jsonName = ""; + + /** + * FieldDescriptorProto options. + * @member {google.protobuf.IFieldOptions|null|undefined} options + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.options = null; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance + */ + FieldDescriptorProto.create = function create(properties) { + return new FieldDescriptorProto(properties); + }; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.extendee != null && message.hasOwnProperty("extendee")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee); + if (message.number != null && message.hasOwnProperty("number")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number); + if (message.label != null && message.hasOwnProperty("label")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.label); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.type); + if (message.typeName != null && message.hasOwnProperty("typeName")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName); + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); + return writer; + }; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 3: + message.number = reader.int32(); + break; + case 4: + message.label = reader.int32(); + break; + case 5: + message.type = reader.int32(); + break; + case 6: + message.typeName = reader.string(); + break; + case 2: + message.extendee = reader.string(); + break; + case 7: + message.defaultValue = reader.string(); + break; + case 9: + message.oneofIndex = reader.int32(); + break; + case 10: + message.jsonName = reader.string(); + break; + case 8: + message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldDescriptorProto message. + * @function verify + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FieldDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.label != null && message.hasOwnProperty("label")) + switch (message.label) { + default: + return "label: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + break; + } + if (message.typeName != null && message.hasOwnProperty("typeName")) + if (!$util.isString(message.typeName)) + return "typeName: string expected"; + if (message.extendee != null && message.hasOwnProperty("extendee")) + if (!$util.isString(message.extendee)) + return "extendee: string expected"; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (!$util.isString(message.defaultValue)) + return "defaultValue: string expected"; + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (!$util.isInteger(message.oneofIndex)) + return "oneofIndex: integer expected"; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (!$util.isString(message.jsonName)) + return "jsonName: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FieldOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + FieldDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldDescriptorProto) + return object; + var message = new $root.google.protobuf.FieldDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + switch (object.label) { + case "LABEL_OPTIONAL": + case 1: + message.label = 1; + break; + case "LABEL_REQUIRED": + case 2: + message.label = 2; + break; + case "LABEL_REPEATED": + case 3: + message.label = 3; + break; + } + switch (object.type) { + case "TYPE_DOUBLE": + case 1: + message.type = 1; + break; + case "TYPE_FLOAT": + case 2: + message.type = 2; + break; + case "TYPE_INT64": + case 3: + message.type = 3; + break; + case "TYPE_UINT64": + case 4: + message.type = 4; + break; + case "TYPE_INT32": + case 5: + message.type = 5; + break; + case "TYPE_FIXED64": + case 6: + message.type = 6; + break; + case "TYPE_FIXED32": + case 7: + message.type = 7; + break; + case "TYPE_BOOL": + case 8: + message.type = 8; + break; + case "TYPE_STRING": + case 9: + message.type = 9; + break; + case "TYPE_GROUP": + case 10: + message.type = 10; + break; + case "TYPE_MESSAGE": + case 11: + message.type = 11; + break; + case "TYPE_BYTES": + case 12: + message.type = 12; + break; + case "TYPE_UINT32": + case 13: + message.type = 13; + break; + case "TYPE_ENUM": + case 14: + message.type = 14; + break; + case "TYPE_SFIXED32": + case 15: + message.type = 15; + break; + case "TYPE_SFIXED64": + case 16: + message.type = 16; + break; + case "TYPE_SINT32": + case 17: + message.type = 17; + break; + case "TYPE_SINT64": + case 18: + message.type = 18; + break; + } + if (object.typeName != null) + message.typeName = String(object.typeName); + if (object.extendee != null) + message.extendee = String(object.extendee); + if (object.defaultValue != null) + message.defaultValue = String(object.defaultValue); + if (object.oneofIndex != null) + message.oneofIndex = object.oneofIndex | 0; + if (object.jsonName != null) + message.jsonName = String(object.jsonName); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.extendee = ""; + object.number = 0; + object.label = options.enums === String ? "LABEL_OPTIONAL" : 1; + object.type = options.enums === String ? "TYPE_DOUBLE" : 1; + object.typeName = ""; + object.defaultValue = ""; + object.options = null; + object.oneofIndex = 0; + object.jsonName = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.extendee != null && message.hasOwnProperty("extendee")) + object.extendee = message.extendee; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.label != null && message.hasOwnProperty("label")) + object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; + if (message.typeName != null && message.hasOwnProperty("typeName")) + object.typeName = message.typeName; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + object.defaultValue = message.defaultValue; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options); + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + object.oneofIndex = message.oneofIndex; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + object.jsonName = message.jsonName; + return object; + }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.FieldDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + FieldDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Type enum. + * @name google.protobuf.FieldDescriptorProto.Type + * @enum {string} + * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value + * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value + * @property {number} TYPE_INT64=3 TYPE_INT64 value + * @property {number} TYPE_UINT64=4 TYPE_UINT64 value + * @property {number} TYPE_INT32=5 TYPE_INT32 value + * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value + * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value + * @property {number} TYPE_BOOL=8 TYPE_BOOL value + * @property {number} TYPE_STRING=9 TYPE_STRING value + * @property {number} TYPE_GROUP=10 TYPE_GROUP value + * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value + * @property {number} TYPE_BYTES=12 TYPE_BYTES value + * @property {number} TYPE_UINT32=13 TYPE_UINT32 value + * @property {number} TYPE_ENUM=14 TYPE_ENUM value + * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value + * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value + * @property {number} TYPE_SINT32=17 TYPE_SINT32 value + * @property {number} TYPE_SINT64=18 TYPE_SINT64 value + */ + FieldDescriptorProto.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "TYPE_DOUBLE"] = 1; + values[valuesById[2] = "TYPE_FLOAT"] = 2; + values[valuesById[3] = "TYPE_INT64"] = 3; + values[valuesById[4] = "TYPE_UINT64"] = 4; + values[valuesById[5] = "TYPE_INT32"] = 5; + values[valuesById[6] = "TYPE_FIXED64"] = 6; + values[valuesById[7] = "TYPE_FIXED32"] = 7; + values[valuesById[8] = "TYPE_BOOL"] = 8; + values[valuesById[9] = "TYPE_STRING"] = 9; + values[valuesById[10] = "TYPE_GROUP"] = 10; + values[valuesById[11] = "TYPE_MESSAGE"] = 11; + values[valuesById[12] = "TYPE_BYTES"] = 12; + values[valuesById[13] = "TYPE_UINT32"] = 13; + values[valuesById[14] = "TYPE_ENUM"] = 14; + values[valuesById[15] = "TYPE_SFIXED32"] = 15; + values[valuesById[16] = "TYPE_SFIXED64"] = 16; + values[valuesById[17] = "TYPE_SINT32"] = 17; + values[valuesById[18] = "TYPE_SINT64"] = 18; + return values; + })(); + + /** + * Label enum. + * @name google.protobuf.FieldDescriptorProto.Label + * @enum {string} + * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value + * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + */ + FieldDescriptorProto.Label = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "LABEL_OPTIONAL"] = 1; + values[valuesById[2] = "LABEL_REQUIRED"] = 2; + values[valuesById[3] = "LABEL_REPEATED"] = 3; + return values; + })(); + + return FieldDescriptorProto; + })(); + + protobuf.OneofDescriptorProto = (function() { + + /** + * Properties of an OneofDescriptorProto. + * @memberof google.protobuf + * @interface IOneofDescriptorProto + * @property {string|null} [name] OneofDescriptorProto name + * @property {google.protobuf.IOneofOptions|null} [options] OneofDescriptorProto options + */ + + /** + * Constructs a new OneofDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an OneofDescriptorProto. + * @implements IOneofDescriptorProto + * @constructor + * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set + */ + function OneofDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.OneofDescriptorProto + * @instance + */ + OneofDescriptorProto.prototype.name = ""; + + /** + * OneofDescriptorProto options. + * @member {google.protobuf.IOneofOptions|null|undefined} options + * @memberof google.protobuf.OneofDescriptorProto + * @instance + */ + OneofDescriptorProto.prototype.options = null; + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance + */ + OneofDescriptorProto.create = function create(properties) { + return new OneofDescriptorProto(properties); + }; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofDescriptorProto message. + * @function verify + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + OneofDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.OneofOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + OneofDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofDescriptorProto) + return object; + var message = new $root.google.protobuf.OneofDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.OneofOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.OneofDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + OneofDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofDescriptorProto; + })(); + + protobuf.EnumDescriptorProto = (function() { + + /** + * Properties of an EnumDescriptorProto. + * @memberof google.protobuf + * @interface IEnumDescriptorProto + * @property {string|null} [name] EnumDescriptorProto name + * @property {Array.|null} [value] EnumDescriptorProto value + * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options + * @property {Array.|null} [reservedRange] EnumDescriptorProto reservedRange + * @property {Array.|null} [reservedName] EnumDescriptorProto reservedName + */ + + /** + * Constructs a new EnumDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an EnumDescriptorProto. + * @implements IEnumDescriptorProto + * @constructor + * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set + */ + function EnumDescriptorProto(properties) { + this.value = []; + this.reservedRange = []; + this.reservedName = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.name = ""; + + /** + * EnumDescriptorProto value. + * @member {Array.} value + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.value = $util.emptyArray; + + /** + * EnumDescriptorProto options. + * @member {google.protobuf.IEnumOptions|null|undefined} options + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.options = null; + + /** + * EnumDescriptorProto reservedRange. + * @member {Array.} reservedRange + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.reservedRange = $util.emptyArray; + + /** + * EnumDescriptorProto reservedName. + * @member {Array.} reservedName + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.reservedName = $util.emptyArray; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance + */ + EnumDescriptorProto.create = function create(properties) { + return new EnumDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.value != null && message.value.length) + for (var i = 0; i < message.value.length; ++i) + $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.reservedRange != null && message.reservedRange.length) + for (var i = 0; i < message.reservedRange.length; ++i) + $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.reservedName != null && message.reservedName.length) + for (var i = 0; i < message.reservedName.length; ++i) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]); + return writer; + }; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.value && message.value.length)) + message.value = []; + message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumDescriptorProto message. + * @function verify + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.value != null && message.hasOwnProperty("value")) { + if (!Array.isArray(message.value)) + return "value: array expected"; + for (var i = 0; i < message.value.length; ++i) { + var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]); + if (error) + return "value." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (!Array.isArray(message.reservedRange)) + return "reservedRange: array expected"; + for (var i = 0; i < message.reservedRange.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]); + if (error) + return "reservedRange." + error; + } + } + if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (!Array.isArray(message.reservedName)) + return "reservedName: array expected"; + for (var i = 0; i < message.reservedName.length; ++i) + if (!$util.isString(message.reservedName[i])) + return "reservedName: string[] expected"; + } + return null; + }; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + EnumDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.value) { + if (!Array.isArray(object.value)) + throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected"); + message.value = []; + for (var i = 0; i < object.value.length; ++i) { + if (typeof object.value[i] !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); + message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumOptions.fromObject(object.options); + } + if (object.reservedRange) { + if (!Array.isArray(object.reservedRange)) + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: array expected"); + message.reservedRange = []; + for (var i = 0; i < object.reservedRange.length; ++i) { + if (typeof object.reservedRange[i] !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected"); + message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]); + } + } + if (object.reservedName) { + if (!Array.isArray(object.reservedName)) + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedName: array expected"); + message.reservedName = []; + for (var i = 0; i < object.reservedName.length; ++i) + message.reservedName[i] = String(object.reservedName[i]); + } + return message; + }; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.value = []; + object.reservedRange = []; + object.reservedName = []; + } + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.value && message.value.length) { + object.value = []; + for (var j = 0; j < message.value.length; ++j) + object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options); + if (message.reservedRange && message.reservedRange.length) { + object.reservedRange = []; + for (var j = 0; j < message.reservedRange.length; ++j) + object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options); + } + if (message.reservedName && message.reservedName.length) { + object.reservedName = []; + for (var j = 0; j < message.reservedName.length; ++j) + object.reservedName[j] = message.reservedName[j]; + } + return object; + }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.EnumDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + EnumDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + EnumDescriptorProto.EnumReservedRange = (function() { + + /** + * Properties of an EnumReservedRange. + * @memberof google.protobuf.EnumDescriptorProto + * @interface IEnumReservedRange + * @property {number|null} [start] EnumReservedRange start + * @property {number|null} [end] EnumReservedRange end + */ + + /** + * Constructs a new EnumReservedRange. + * @memberof google.protobuf.EnumDescriptorProto + * @classdesc Represents an EnumReservedRange. + * @implements IEnumReservedRange + * @constructor + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set + */ + function EnumReservedRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumReservedRange start. + * @member {number} start + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + */ + EnumReservedRange.prototype.start = 0; + + /** + * EnumReservedRange end. + * @member {number} end + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + */ + EnumReservedRange.prototype.end = 0; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange instance + */ + EnumReservedRange.create = function create(properties) { + return new EnumReservedRange(properties); + }; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumReservedRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumReservedRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumReservedRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumReservedRange message. + * @function verify + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumReservedRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + */ + EnumReservedRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange) + return object; + var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.EnumReservedRange} message EnumReservedRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumReservedRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Converts this EnumReservedRange to JSON. + * @function toJSON + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + * @returns {Object.} JSON object + */ + EnumReservedRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumReservedRange; + })(); + + return EnumDescriptorProto; + })(); + + protobuf.EnumValueDescriptorProto = (function() { + + /** + * Properties of an EnumValueDescriptorProto. + * @memberof google.protobuf + * @interface IEnumValueDescriptorProto + * @property {string|null} [name] EnumValueDescriptorProto name + * @property {number|null} [number] EnumValueDescriptorProto number + * @property {google.protobuf.IEnumValueOptions|null} [options] EnumValueDescriptorProto options + */ + + /** + * Constructs a new EnumValueDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an EnumValueDescriptorProto. + * @implements IEnumValueDescriptorProto + * @constructor + * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set + */ + function EnumValueDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.name = ""; + + /** + * EnumValueDescriptorProto number. + * @member {number} number + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.number = 0; + + /** + * EnumValueDescriptorProto options. + * @member {google.protobuf.IEnumValueOptions|null|undefined} options + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.options = null; + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance + */ + EnumValueDescriptorProto.create = function create(properties) { + return new EnumValueDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.number != null && message.hasOwnProperty("number")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.number = reader.int32(); + break; + case 3: + message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueDescriptorProto message. + * @function verify + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumValueDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumValueOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + EnumValueDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumValueDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.number = 0; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + EnumValueDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueDescriptorProto; + })(); + + protobuf.ServiceDescriptorProto = (function() { + + /** + * Properties of a ServiceDescriptorProto. + * @memberof google.protobuf + * @interface IServiceDescriptorProto + * @property {string|null} [name] ServiceDescriptorProto name + * @property {Array.|null} [method] ServiceDescriptorProto method + * @property {google.protobuf.IServiceOptions|null} [options] ServiceDescriptorProto options + */ + + /** + * Constructs a new ServiceDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a ServiceDescriptorProto. + * @implements IServiceDescriptorProto + * @constructor + * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set + */ + function ServiceDescriptorProto(properties) { + this.method = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.name = ""; + + /** + * ServiceDescriptorProto method. + * @member {Array.} method + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.method = $util.emptyArray; + + /** + * ServiceDescriptorProto options. + * @member {google.protobuf.IServiceOptions|null|undefined} options + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.options = null; + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance + */ + ServiceDescriptorProto.create = function create(properties) { + return new ServiceDescriptorProto(properties); + }; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.method != null && message.method.length) + for (var i = 0; i < message.method.length; ++i) + $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.method && message.method.length)) + message.method = []; + message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceDescriptorProto message. + * @function verify + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ServiceDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.method != null && message.hasOwnProperty("method")) { + if (!Array.isArray(message.method)) + return "method: array expected"; + for (var i = 0; i < message.method.length; ++i) { + var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]); + if (error) + return "method." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.ServiceOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + ServiceDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceDescriptorProto) + return object; + var message = new $root.google.protobuf.ServiceDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.method) { + if (!Array.isArray(object.method)) + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected"); + message.method = []; + for (var i = 0; i < object.method.length; ++i) { + if (typeof object.method[i] !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); + message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.method = []; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.method && message.method.length) { + object.method = []; + for (var j = 0; j < message.method.length; ++j) + object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + ServiceDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceDescriptorProto; + })(); + + protobuf.MethodDescriptorProto = (function() { + + /** + * Properties of a MethodDescriptorProto. + * @memberof google.protobuf + * @interface IMethodDescriptorProto + * @property {string|null} [name] MethodDescriptorProto name + * @property {string|null} [inputType] MethodDescriptorProto inputType + * @property {string|null} [outputType] MethodDescriptorProto outputType + * @property {google.protobuf.IMethodOptions|null} [options] MethodDescriptorProto options + * @property {boolean|null} [clientStreaming] MethodDescriptorProto clientStreaming + * @property {boolean|null} [serverStreaming] MethodDescriptorProto serverStreaming + */ + + /** + * Constructs a new MethodDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a MethodDescriptorProto. + * @implements IMethodDescriptorProto + * @constructor + * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set + */ + function MethodDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.name = ""; + + /** + * MethodDescriptorProto inputType. + * @member {string} inputType + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.inputType = ""; + + /** + * MethodDescriptorProto outputType. + * @member {string} outputType + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.outputType = ""; + + /** + * MethodDescriptorProto options. + * @member {google.protobuf.IMethodOptions|null|undefined} options + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.options = null; + + /** + * MethodDescriptorProto clientStreaming. + * @member {boolean} clientStreaming + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.clientStreaming = false; + + /** + * MethodDescriptorProto serverStreaming. + * @member {boolean} serverStreaming + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.serverStreaming = false; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance + */ + MethodDescriptorProto.create = function create(properties) { + return new MethodDescriptorProto(properties); + }; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.inputType != null && message.hasOwnProperty("inputType")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType); + if (message.outputType != null && message.hasOwnProperty("outputType")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming); + return writer; + }; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.inputType = reader.string(); + break; + case 3: + message.outputType = reader.string(); + break; + case 4: + message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); + break; + case 5: + message.clientStreaming = reader.bool(); + break; + case 6: + message.serverStreaming = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodDescriptorProto message. + * @function verify + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MethodDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.inputType != null && message.hasOwnProperty("inputType")) + if (!$util.isString(message.inputType)) + return "inputType: string expected"; + if (message.outputType != null && message.hasOwnProperty("outputType")) + if (!$util.isString(message.outputType)) + return "outputType: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MethodOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (typeof message.clientStreaming !== "boolean") + return "clientStreaming: boolean expected"; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (typeof message.serverStreaming !== "boolean") + return "serverStreaming: boolean expected"; + return null; + }; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + MethodDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodDescriptorProto) + return object; + var message = new $root.google.protobuf.MethodDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.inputType != null) + message.inputType = String(object.inputType); + if (object.outputType != null) + message.outputType = String(object.outputType); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MethodOptions.fromObject(object.options); + } + if (object.clientStreaming != null) + message.clientStreaming = Boolean(object.clientStreaming); + if (object.serverStreaming != null) + message.serverStreaming = Boolean(object.serverStreaming); + return message; + }; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.inputType = ""; + object.outputType = ""; + object.options = null; + object.clientStreaming = false; + object.serverStreaming = false; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.inputType != null && message.hasOwnProperty("inputType")) + object.inputType = message.inputType; + if (message.outputType != null && message.hasOwnProperty("outputType")) + object.outputType = message.outputType; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options); + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + object.clientStreaming = message.clientStreaming; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + object.serverStreaming = message.serverStreaming; + return object; + }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.MethodDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + MethodDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MethodDescriptorProto; + })(); + + protobuf.FileOptions = (function() { + + /** + * Properties of a FileOptions. + * @memberof google.protobuf + * @interface IFileOptions + * @property {string|null} [javaPackage] FileOptions javaPackage + * @property {string|null} [javaOuterClassname] FileOptions javaOuterClassname + * @property {boolean|null} [javaMultipleFiles] FileOptions javaMultipleFiles + * @property {boolean|null} [javaGenerateEqualsAndHash] FileOptions javaGenerateEqualsAndHash + * @property {boolean|null} [javaStringCheckUtf8] FileOptions javaStringCheckUtf8 + * @property {google.protobuf.FileOptions.OptimizeMode|null} [optimizeFor] FileOptions optimizeFor + * @property {string|null} [goPackage] FileOptions goPackage + * @property {boolean|null} [ccGenericServices] FileOptions ccGenericServices + * @property {boolean|null} [javaGenericServices] FileOptions javaGenericServices + * @property {boolean|null} [pyGenericServices] FileOptions pyGenericServices + * @property {boolean|null} [phpGenericServices] FileOptions phpGenericServices + * @property {boolean|null} [deprecated] FileOptions deprecated + * @property {boolean|null} [ccEnableArenas] FileOptions ccEnableArenas + * @property {string|null} [objcClassPrefix] FileOptions objcClassPrefix + * @property {string|null} [csharpNamespace] FileOptions csharpNamespace + * @property {string|null} [swiftPrefix] FileOptions swiftPrefix + * @property {string|null} [phpClassPrefix] FileOptions phpClassPrefix + * @property {string|null} [phpNamespace] FileOptions phpNamespace + * @property {string|null} [phpMetadataNamespace] FileOptions phpMetadataNamespace + * @property {string|null} [rubyPackage] FileOptions rubyPackage + * @property {Array.|null} [uninterpretedOption] FileOptions uninterpretedOption + */ + + /** + * Constructs a new FileOptions. + * @memberof google.protobuf + * @classdesc Represents a FileOptions. + * @implements IFileOptions + * @constructor + * @param {google.protobuf.IFileOptions=} [properties] Properties to set + */ + function FileOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileOptions javaPackage. + * @member {string} javaPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaPackage = ""; + + /** + * FileOptions javaOuterClassname. + * @member {string} javaOuterClassname + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaOuterClassname = ""; + + /** + * FileOptions javaMultipleFiles. + * @member {boolean} javaMultipleFiles + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaMultipleFiles = false; + + /** + * FileOptions javaGenerateEqualsAndHash. + * @member {boolean} javaGenerateEqualsAndHash + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaGenerateEqualsAndHash = false; + + /** + * FileOptions javaStringCheckUtf8. + * @member {boolean} javaStringCheckUtf8 + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaStringCheckUtf8 = false; + + /** + * FileOptions optimizeFor. + * @member {google.protobuf.FileOptions.OptimizeMode} optimizeFor + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.optimizeFor = 1; + + /** + * FileOptions goPackage. + * @member {string} goPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.goPackage = ""; + + /** + * FileOptions ccGenericServices. + * @member {boolean} ccGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.ccGenericServices = false; + + /** + * FileOptions javaGenericServices. + * @member {boolean} javaGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaGenericServices = false; + + /** + * FileOptions pyGenericServices. + * @member {boolean} pyGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.pyGenericServices = false; + + /** + * FileOptions phpGenericServices. + * @member {boolean} phpGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpGenericServices = false; + + /** + * FileOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.deprecated = false; + + /** + * FileOptions ccEnableArenas. + * @member {boolean} ccEnableArenas + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.ccEnableArenas = false; + + /** + * FileOptions objcClassPrefix. + * @member {string} objcClassPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.objcClassPrefix = ""; + + /** + * FileOptions csharpNamespace. + * @member {string} csharpNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.csharpNamespace = ""; + + /** + * FileOptions swiftPrefix. + * @member {string} swiftPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.swiftPrefix = ""; + + /** + * FileOptions phpClassPrefix. + * @member {string} phpClassPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpClassPrefix = ""; + + /** + * FileOptions phpNamespace. + * @member {string} phpNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpNamespace = ""; + + /** + * FileOptions phpMetadataNamespace. + * @member {string} phpMetadataNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpMetadataNamespace = ""; + + /** + * FileOptions rubyPackage. + * @member {string} rubyPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.rubyPackage = ""; + + /** + * FileOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new FileOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions=} [properties] Properties to set + * @returns {google.protobuf.FileOptions} FileOptions instance + */ + FileOptions.create = function create(properties) { + return new FileOptions(properties); + }; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname); + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.optimizeFor); + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles); + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage); + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices); + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices); + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices); + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated); + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8); + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas); + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix); + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace); + if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + writer.uint32(/* id 39, wireType 2 =*/314).string(message.swiftPrefix); + if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix); + if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace); + if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + writer.uint32(/* id 42, wireType 0 =*/336).bool(message.phpGenericServices); + if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); + if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FileOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.javaPackage = reader.string(); + break; + case 8: + message.javaOuterClassname = reader.string(); + break; + case 10: + message.javaMultipleFiles = reader.bool(); + break; + case 20: + message.javaGenerateEqualsAndHash = reader.bool(); + break; + case 27: + message.javaStringCheckUtf8 = reader.bool(); + break; + case 9: + message.optimizeFor = reader.int32(); + break; + case 11: + message.goPackage = reader.string(); + break; + case 16: + message.ccGenericServices = reader.bool(); + break; + case 17: + message.javaGenericServices = reader.bool(); + break; + case 18: + message.pyGenericServices = reader.bool(); + break; + case 42: + message.phpGenericServices = reader.bool(); + break; + case 23: + message.deprecated = reader.bool(); + break; + case 31: + message.ccEnableArenas = reader.bool(); + break; + case 36: + message.objcClassPrefix = reader.string(); + break; + case 37: + message.csharpNamespace = reader.string(); + break; + case 39: + message.swiftPrefix = reader.string(); + break; + case 40: + message.phpClassPrefix = reader.string(); + break; + case 41: + message.phpNamespace = reader.string(); + break; + case 44: + message.phpMetadataNamespace = reader.string(); + break; + case 45: + message.rubyPackage = reader.string(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FileOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileOptions message. + * @function verify + * @memberof google.protobuf.FileOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (!$util.isString(message.javaPackage)) + return "javaPackage: string expected"; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (!$util.isString(message.javaOuterClassname)) + return "javaOuterClassname: string expected"; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (typeof message.javaMultipleFiles !== "boolean") + return "javaMultipleFiles: boolean expected"; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (typeof message.javaGenerateEqualsAndHash !== "boolean") + return "javaGenerateEqualsAndHash: boolean expected"; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (typeof message.javaStringCheckUtf8 !== "boolean") + return "javaStringCheckUtf8: boolean expected"; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + switch (message.optimizeFor) { + default: + return "optimizeFor: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (!$util.isString(message.goPackage)) + return "goPackage: string expected"; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (typeof message.ccGenericServices !== "boolean") + return "ccGenericServices: boolean expected"; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (typeof message.javaGenericServices !== "boolean") + return "javaGenericServices: boolean expected"; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (typeof message.pyGenericServices !== "boolean") + return "pyGenericServices: boolean expected"; + if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + if (typeof message.phpGenericServices !== "boolean") + return "phpGenericServices: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (typeof message.ccEnableArenas !== "boolean") + return "ccEnableArenas: boolean expected"; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (!$util.isString(message.objcClassPrefix)) + return "objcClassPrefix: string expected"; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (!$util.isString(message.csharpNamespace)) + return "csharpNamespace: string expected"; + if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + if (!$util.isString(message.swiftPrefix)) + return "swiftPrefix: string expected"; + if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + if (!$util.isString(message.phpClassPrefix)) + return "phpClassPrefix: string expected"; + if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + if (!$util.isString(message.phpNamespace)) + return "phpNamespace: string expected"; + if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + if (!$util.isString(message.phpMetadataNamespace)) + return "phpMetadataNamespace: string expected"; + if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + if (!$util.isString(message.rubyPackage)) + return "rubyPackage: string expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FileOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + FileOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileOptions) + return object; + var message = new $root.google.protobuf.FileOptions(); + if (object.javaPackage != null) + message.javaPackage = String(object.javaPackage); + if (object.javaOuterClassname != null) + message.javaOuterClassname = String(object.javaOuterClassname); + if (object.javaMultipleFiles != null) + message.javaMultipleFiles = Boolean(object.javaMultipleFiles); + if (object.javaGenerateEqualsAndHash != null) + message.javaGenerateEqualsAndHash = Boolean(object.javaGenerateEqualsAndHash); + if (object.javaStringCheckUtf8 != null) + message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8); + switch (object.optimizeFor) { + case "SPEED": + case 1: + message.optimizeFor = 1; + break; + case "CODE_SIZE": + case 2: + message.optimizeFor = 2; + break; + case "LITE_RUNTIME": + case 3: + message.optimizeFor = 3; + break; + } + if (object.goPackage != null) + message.goPackage = String(object.goPackage); + if (object.ccGenericServices != null) + message.ccGenericServices = Boolean(object.ccGenericServices); + if (object.javaGenericServices != null) + message.javaGenericServices = Boolean(object.javaGenericServices); + if (object.pyGenericServices != null) + message.pyGenericServices = Boolean(object.pyGenericServices); + if (object.phpGenericServices != null) + message.phpGenericServices = Boolean(object.phpGenericServices); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.ccEnableArenas != null) + message.ccEnableArenas = Boolean(object.ccEnableArenas); + if (object.objcClassPrefix != null) + message.objcClassPrefix = String(object.objcClassPrefix); + if (object.csharpNamespace != null) + message.csharpNamespace = String(object.csharpNamespace); + if (object.swiftPrefix != null) + message.swiftPrefix = String(object.swiftPrefix); + if (object.phpClassPrefix != null) + message.phpClassPrefix = String(object.phpClassPrefix); + if (object.phpNamespace != null) + message.phpNamespace = String(object.phpNamespace); + if (object.phpMetadataNamespace != null) + message.phpMetadataNamespace = String(object.phpMetadataNamespace); + if (object.rubyPackage != null) + message.rubyPackage = String(object.rubyPackage); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.FileOptions} message FileOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.javaPackage = ""; + object.javaOuterClassname = ""; + object.optimizeFor = options.enums === String ? "SPEED" : 1; + object.javaMultipleFiles = false; + object.goPackage = ""; + object.ccGenericServices = false; + object.javaGenericServices = false; + object.pyGenericServices = false; + object.javaGenerateEqualsAndHash = false; + object.deprecated = false; + object.javaStringCheckUtf8 = false; + object.ccEnableArenas = false; + object.objcClassPrefix = ""; + object.csharpNamespace = ""; + object.swiftPrefix = ""; + object.phpClassPrefix = ""; + object.phpNamespace = ""; + object.phpGenericServices = false; + object.phpMetadataNamespace = ""; + object.rubyPackage = ""; + } + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + object.javaPackage = message.javaPackage; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + object.javaOuterClassname = message.javaOuterClassname; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + object.javaMultipleFiles = message.javaMultipleFiles; + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + object.goPackage = message.goPackage; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + object.ccGenericServices = message.ccGenericServices; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + object.javaGenericServices = message.javaGenericServices; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + object.pyGenericServices = message.pyGenericServices; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + object.javaStringCheckUtf8 = message.javaStringCheckUtf8; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + object.ccEnableArenas = message.ccEnableArenas; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + object.objcClassPrefix = message.objcClassPrefix; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + object.csharpNamespace = message.csharpNamespace; + if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + object.swiftPrefix = message.swiftPrefix; + if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + object.phpClassPrefix = message.phpClassPrefix; + if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + object.phpNamespace = message.phpNamespace; + if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + object.phpGenericServices = message.phpGenericServices; + if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + object.phpMetadataNamespace = message.phpMetadataNamespace; + if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + object.rubyPackage = message.rubyPackage; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this FileOptions to JSON. + * @function toJSON + * @memberof google.protobuf.FileOptions + * @instance + * @returns {Object.} JSON object + */ + FileOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * OptimizeMode enum. + * @name google.protobuf.FileOptions.OptimizeMode + * @enum {string} + * @property {number} SPEED=1 SPEED value + * @property {number} CODE_SIZE=2 CODE_SIZE value + * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value + */ + FileOptions.OptimizeMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "SPEED"] = 1; + values[valuesById[2] = "CODE_SIZE"] = 2; + values[valuesById[3] = "LITE_RUNTIME"] = 3; + return values; + })(); + + return FileOptions; + })(); + + protobuf.MessageOptions = (function() { + + /** + * Properties of a MessageOptions. + * @memberof google.protobuf + * @interface IMessageOptions + * @property {boolean|null} [messageSetWireFormat] MessageOptions messageSetWireFormat + * @property {boolean|null} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor + * @property {boolean|null} [deprecated] MessageOptions deprecated + * @property {boolean|null} [mapEntry] MessageOptions mapEntry + * @property {Array.|null} [uninterpretedOption] MessageOptions uninterpretedOption + */ + + /** + * Constructs a new MessageOptions. + * @memberof google.protobuf + * @classdesc Represents a MessageOptions. + * @implements IMessageOptions + * @constructor + * @param {google.protobuf.IMessageOptions=} [properties] Properties to set + */ + function MessageOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MessageOptions messageSetWireFormat. + * @member {boolean} messageSetWireFormat + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.messageSetWireFormat = false; + + /** + * MessageOptions noStandardDescriptorAccessor. + * @member {boolean} noStandardDescriptorAccessor + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.noStandardDescriptorAccessor = false; + + /** + * MessageOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.deprecated = false; + + /** + * MessageOptions mapEntry. + * @member {boolean} mapEntry + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.mapEntry = false; + + /** + * MessageOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions=} [properties] Properties to set + * @returns {google.protobuf.MessageOptions} MessageOptions instance + */ + MessageOptions.create = function create(properties) { + return new MessageOptions(properties); + }; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MessageOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageSetWireFormat = reader.bool(); + break; + case 2: + message.noStandardDescriptorAccessor = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 7: + message.mapEntry = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MessageOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MessageOptions message. + * @function verify + * @memberof google.protobuf.MessageOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MessageOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (typeof message.messageSetWireFormat !== "boolean") + return "messageSetWireFormat: boolean expected"; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (typeof message.noStandardDescriptorAccessor !== "boolean") + return "noStandardDescriptorAccessor: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (typeof message.mapEntry !== "boolean") + return "mapEntry: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MessageOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + MessageOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MessageOptions) + return object; + var message = new $root.google.protobuf.MessageOptions(); + if (object.messageSetWireFormat != null) + message.messageSetWireFormat = Boolean(object.messageSetWireFormat); + if (object.noStandardDescriptorAccessor != null) + message.noStandardDescriptorAccessor = Boolean(object.noStandardDescriptorAccessor); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.mapEntry != null) + message.mapEntry = Boolean(object.mapEntry); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.MessageOptions} message MessageOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.messageSetWireFormat = false; + object.noStandardDescriptorAccessor = false; + object.deprecated = false; + object.mapEntry = false; + } + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + object.messageSetWireFormat = message.messageSetWireFormat; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + object.mapEntry = message.mapEntry; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this MessageOptions to JSON. + * @function toJSON + * @memberof google.protobuf.MessageOptions + * @instance + * @returns {Object.} JSON object + */ + MessageOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MessageOptions; + })(); + + protobuf.FieldOptions = (function() { + + /** + * Properties of a FieldOptions. + * @memberof google.protobuf + * @interface IFieldOptions + * @property {google.protobuf.FieldOptions.CType|null} [ctype] FieldOptions ctype + * @property {boolean|null} [packed] FieldOptions packed + * @property {google.protobuf.FieldOptions.JSType|null} [jstype] FieldOptions jstype + * @property {boolean|null} [lazy] FieldOptions lazy + * @property {boolean|null} [deprecated] FieldOptions deprecated + * @property {boolean|null} [weak] FieldOptions weak + * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption + */ + + /** + * Constructs a new FieldOptions. + * @memberof google.protobuf + * @classdesc Represents a FieldOptions. + * @implements IFieldOptions + * @constructor + * @param {google.protobuf.IFieldOptions=} [properties] Properties to set + */ + function FieldOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldOptions ctype. + * @member {google.protobuf.FieldOptions.CType} ctype + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.ctype = 0; + + /** + * FieldOptions packed. + * @member {boolean} packed + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.packed = false; + + /** + * FieldOptions jstype. + * @member {google.protobuf.FieldOptions.JSType} jstype + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.jstype = 0; + + /** + * FieldOptions lazy. + * @member {boolean} lazy + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.lazy = false; + + /** + * FieldOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.deprecated = false; + + /** + * FieldOptions weak. + * @member {boolean} weak + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.weak = false; + + /** + * FieldOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions} FieldOptions instance + */ + FieldOptions.create = function create(properties) { + return new FieldOptions(properties); + }; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ctype != null && message.hasOwnProperty("ctype")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype); + if (message.packed != null && message.hasOwnProperty("packed")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.lazy != null && message.hasOwnProperty("lazy")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy); + if (message.jstype != null && message.hasOwnProperty("jstype")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype); + if (message.weak != null && message.hasOwnProperty("weak")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ctype = reader.int32(); + break; + case 2: + message.packed = reader.bool(); + break; + case 6: + message.jstype = reader.int32(); + break; + case 5: + message.lazy = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 10: + message.weak = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldOptions message. + * @function verify + * @memberof google.protobuf.FieldOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FieldOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ctype != null && message.hasOwnProperty("ctype")) + switch (message.ctype) { + default: + return "ctype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.packed != null && message.hasOwnProperty("packed")) + if (typeof message.packed !== "boolean") + return "packed: boolean expected"; + if (message.jstype != null && message.hasOwnProperty("jstype")) + switch (message.jstype) { + default: + return "jstype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.lazy != null && message.hasOwnProperty("lazy")) + if (typeof message.lazy !== "boolean") + return "lazy: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.weak != null && message.hasOwnProperty("weak")) + if (typeof message.weak !== "boolean") + return "weak: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + FieldOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldOptions) + return object; + var message = new $root.google.protobuf.FieldOptions(); + switch (object.ctype) { + case "STRING": + case 0: + message.ctype = 0; + break; + case "CORD": + case 1: + message.ctype = 1; + break; + case "STRING_PIECE": + case 2: + message.ctype = 2; + break; + } + if (object.packed != null) + message.packed = Boolean(object.packed); + switch (object.jstype) { + case "JS_NORMAL": + case 0: + message.jstype = 0; + break; + case "JS_STRING": + case 1: + message.jstype = 1; + break; + case "JS_NUMBER": + case 2: + message.jstype = 2; + break; + } + if (object.lazy != null) + message.lazy = Boolean(object.lazy); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.weak != null) + message.weak = Boolean(object.weak); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.FieldOptions} message FieldOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.ctype = options.enums === String ? "STRING" : 0; + object.packed = false; + object.deprecated = false; + object.lazy = false; + object.jstype = options.enums === String ? "JS_NORMAL" : 0; + object.weak = false; + } + if (message.ctype != null && message.hasOwnProperty("ctype")) + object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; + if (message.packed != null && message.hasOwnProperty("packed")) + object.packed = message.packed; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.lazy != null && message.hasOwnProperty("lazy")) + object.lazy = message.lazy; + if (message.jstype != null && message.hasOwnProperty("jstype")) + object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; + if (message.weak != null && message.hasOwnProperty("weak")) + object.weak = message.weak; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this FieldOptions to JSON. + * @function toJSON + * @memberof google.protobuf.FieldOptions + * @instance + * @returns {Object.} JSON object + */ + FieldOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * CType enum. + * @name google.protobuf.FieldOptions.CType + * @enum {string} + * @property {number} STRING=0 STRING value + * @property {number} CORD=1 CORD value + * @property {number} STRING_PIECE=2 STRING_PIECE value + */ + FieldOptions.CType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STRING"] = 0; + values[valuesById[1] = "CORD"] = 1; + values[valuesById[2] = "STRING_PIECE"] = 2; + return values; + })(); + + /** + * JSType enum. + * @name google.protobuf.FieldOptions.JSType + * @enum {string} + * @property {number} JS_NORMAL=0 JS_NORMAL value + * @property {number} JS_STRING=1 JS_STRING value + * @property {number} JS_NUMBER=2 JS_NUMBER value + */ + FieldOptions.JSType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "JS_NORMAL"] = 0; + values[valuesById[1] = "JS_STRING"] = 1; + values[valuesById[2] = "JS_NUMBER"] = 2; + return values; + })(); + + return FieldOptions; + })(); + + protobuf.OneofOptions = (function() { + + /** + * Properties of an OneofOptions. + * @memberof google.protobuf + * @interface IOneofOptions + * @property {Array.|null} [uninterpretedOption] OneofOptions uninterpretedOption + */ + + /** + * Constructs a new OneofOptions. + * @memberof google.protobuf + * @classdesc Represents an OneofOptions. + * @implements IOneofOptions + * @constructor + * @param {google.protobuf.IOneofOptions=} [properties] Properties to set + */ + function OneofOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.OneofOptions + * @instance + */ + OneofOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions=} [properties] Properties to set + * @returns {google.protobuf.OneofOptions} OneofOptions instance + */ + OneofOptions.create = function create(properties) { + return new OneofOptions(properties); + }; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.OneofOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.OneofOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofOptions message. + * @function verify + * @memberof google.protobuf.OneofOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + OneofOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.OneofOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + OneofOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofOptions) + return object; + var message = new $root.google.protobuf.OneofOptions(); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.OneofOptions} message OneofOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this OneofOptions to JSON. + * @function toJSON + * @memberof google.protobuf.OneofOptions + * @instance + * @returns {Object.} JSON object + */ + OneofOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofOptions; + })(); + + protobuf.EnumOptions = (function() { + + /** + * Properties of an EnumOptions. + * @memberof google.protobuf + * @interface IEnumOptions + * @property {boolean|null} [allowAlias] EnumOptions allowAlias + * @property {boolean|null} [deprecated] EnumOptions deprecated + * @property {Array.|null} [uninterpretedOption] EnumOptions uninterpretedOption + */ + + /** + * Constructs a new EnumOptions. + * @memberof google.protobuf + * @classdesc Represents an EnumOptions. + * @implements IEnumOptions + * @constructor + * @param {google.protobuf.IEnumOptions=} [properties] Properties to set + */ + function EnumOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumOptions allowAlias. + * @member {boolean} allowAlias + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.allowAlias = false; + + /** + * EnumOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.deprecated = false; + + /** + * EnumOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions=} [properties] Properties to set + * @returns {google.protobuf.EnumOptions} EnumOptions instance + */ + EnumOptions.create = function create(properties) { + return new EnumOptions(properties); + }; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.allowAlias = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumOptions message. + * @function verify + * @memberof google.protobuf.EnumOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (typeof message.allowAlias !== "boolean") + return "allowAlias: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + EnumOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumOptions) + return object; + var message = new $root.google.protobuf.EnumOptions(); + if (object.allowAlias != null) + message.allowAlias = Boolean(object.allowAlias); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.EnumOptions} message EnumOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.allowAlias = false; + object.deprecated = false; + } + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + object.allowAlias = message.allowAlias; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this EnumOptions to JSON. + * @function toJSON + * @memberof google.protobuf.EnumOptions + * @instance + * @returns {Object.} JSON object + */ + EnumOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumOptions; + })(); + + protobuf.EnumValueOptions = (function() { + + /** + * Properties of an EnumValueOptions. + * @memberof google.protobuf + * @interface IEnumValueOptions + * @property {boolean|null} [deprecated] EnumValueOptions deprecated + * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption + */ + + /** + * Constructs a new EnumValueOptions. + * @memberof google.protobuf + * @classdesc Represents an EnumValueOptions. + * @implements IEnumValueOptions + * @constructor + * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set + */ + function EnumValueOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.deprecated = false; + + /** + * EnumValueOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance + */ + EnumValueOptions.create = function create(properties) { + return new EnumValueOptions(properties); + }; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueOptions message. + * @function verify + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumValueOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + EnumValueOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueOptions) + return object; + var message = new $root.google.protobuf.EnumValueOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.EnumValueOptions} message EnumValueOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this EnumValueOptions to JSON. + * @function toJSON + * @memberof google.protobuf.EnumValueOptions + * @instance + * @returns {Object.} JSON object + */ + EnumValueOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueOptions; + })(); + + protobuf.ServiceOptions = (function() { + + /** + * Properties of a ServiceOptions. + * @memberof google.protobuf + * @interface IServiceOptions + * @property {boolean|null} [deprecated] ServiceOptions deprecated + * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption + */ + + /** + * Constructs a new ServiceOptions. + * @memberof google.protobuf + * @classdesc Represents a ServiceOptions. + * @implements IServiceOptions + * @constructor + * @param {google.protobuf.IServiceOptions=} [properties] Properties to set + */ + function ServiceOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype.deprecated = false; + + /** + * ServiceOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions=} [properties] Properties to set + * @returns {google.protobuf.ServiceOptions} ServiceOptions instance + */ + ServiceOptions.create = function create(properties) { + return new ServiceOptions(properties); + }; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ServiceOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ServiceOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceOptions message. + * @function verify + * @memberof google.protobuf.ServiceOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ServiceOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ServiceOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + ServiceOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceOptions) + return object; + var message = new $root.google.protobuf.ServiceOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.ServiceOptions} message ServiceOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this ServiceOptions to JSON. + * @function toJSON + * @memberof google.protobuf.ServiceOptions + * @instance + * @returns {Object.} JSON object + */ + ServiceOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceOptions; + })(); + + protobuf.MethodOptions = (function() { + + /** + * Properties of a MethodOptions. + * @memberof google.protobuf + * @interface IMethodOptions + * @property {boolean|null} [deprecated] MethodOptions deprecated + * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel + * @property {Array.|null} [uninterpretedOption] MethodOptions uninterpretedOption + * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http + */ + + /** + * Constructs a new MethodOptions. + * @memberof google.protobuf + * @classdesc Represents a MethodOptions. + * @implements IMethodOptions + * @constructor + * @param {google.protobuf.IMethodOptions=} [properties] Properties to set + */ + function MethodOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.deprecated = false; + + /** + * MethodOptions idempotencyLevel. + * @member {google.protobuf.MethodOptions.IdempotencyLevel} idempotencyLevel + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.idempotencyLevel = 0; + + /** + * MethodOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * MethodOptions .google.api.http. + * @member {google.api.IHttpRule|null|undefined} .google.api.http + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.api.http"] = null; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions=} [properties] Properties to set + * @returns {google.protobuf.MethodOptions} MethodOptions instance + */ + MethodOptions.create = function create(properties) { + return new MethodOptions(properties); + }; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) + $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MethodOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 34: + message.idempotencyLevel = reader.int32(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + case 72295728: + message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MethodOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodOptions message. + * @function verify + * @memberof google.protobuf.MethodOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MethodOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + switch (message.idempotencyLevel) { + default: + return "idempotencyLevel: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) { + var error = $root.google.api.HttpRule.verify(message[".google.api.http"]); + if (error) + return ".google.api.http." + error; + } + return null; + }; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MethodOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + MethodOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodOptions) + return object; + var message = new $root.google.protobuf.MethodOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + switch (object.idempotencyLevel) { + case "IDEMPOTENCY_UNKNOWN": + case 0: + message.idempotencyLevel = 0; + break; + case "NO_SIDE_EFFECTS": + case 1: + message.idempotencyLevel = 1; + break; + case "IDEMPOTENT": + case 2: + message.idempotencyLevel = 2; + break; + } + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + if (object[".google.api.http"] != null) { + if (typeof object[".google.api.http"] !== "object") + throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); + message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]); + } + return message; + }; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.MethodOptions} message MethodOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.deprecated = false; + object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; + object[".google.api.http"] = null; + } + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) + object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); + return object; + }; + + /** + * Converts this MethodOptions to JSON. + * @function toJSON + * @memberof google.protobuf.MethodOptions + * @instance + * @returns {Object.} JSON object + */ + MethodOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * IdempotencyLevel enum. + * @name google.protobuf.MethodOptions.IdempotencyLevel + * @enum {string} + * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value + * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value + * @property {number} IDEMPOTENT=2 IDEMPOTENT value + */ + MethodOptions.IdempotencyLevel = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "IDEMPOTENCY_UNKNOWN"] = 0; + values[valuesById[1] = "NO_SIDE_EFFECTS"] = 1; + values[valuesById[2] = "IDEMPOTENT"] = 2; + return values; + })(); + + return MethodOptions; + })(); + + protobuf.UninterpretedOption = (function() { + + /** + * Properties of an UninterpretedOption. + * @memberof google.protobuf + * @interface IUninterpretedOption + * @property {Array.|null} [name] UninterpretedOption name + * @property {string|null} [identifierValue] UninterpretedOption identifierValue + * @property {number|Long|null} [positiveIntValue] UninterpretedOption positiveIntValue + * @property {number|Long|null} [negativeIntValue] UninterpretedOption negativeIntValue + * @property {number|null} [doubleValue] UninterpretedOption doubleValue + * @property {Uint8Array|null} [stringValue] UninterpretedOption stringValue + * @property {string|null} [aggregateValue] UninterpretedOption aggregateValue + */ + + /** + * Constructs a new UninterpretedOption. + * @memberof google.protobuf + * @classdesc Represents an UninterpretedOption. + * @implements IUninterpretedOption + * @constructor + * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set + */ + function UninterpretedOption(properties) { + this.name = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UninterpretedOption name. + * @member {Array.} name + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.name = $util.emptyArray; + + /** + * UninterpretedOption identifierValue. + * @member {string} identifierValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.identifierValue = ""; + + /** + * UninterpretedOption positiveIntValue. + * @member {number|Long} positiveIntValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.positiveIntValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * UninterpretedOption negativeIntValue. + * @member {number|Long} negativeIntValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.negativeIntValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * UninterpretedOption doubleValue. + * @member {number} doubleValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.doubleValue = 0; + + /** + * UninterpretedOption stringValue. + * @member {Uint8Array} stringValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.stringValue = $util.newBuffer([]); + + /** + * UninterpretedOption aggregateValue. + * @member {string} aggregateValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.aggregateValue = ""; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @function create + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance + */ + UninterpretedOption.create = function create(properties) { + return new UninterpretedOption(properties); + }; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.name.length) + for (var i = 0; i < message.name.length; ++i) + $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue); + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue); + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue); + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue); + return writer; + }; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (!(message.name && message.name.length)) + message.name = []; + message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); + break; + case 3: + message.identifierValue = reader.string(); + break; + case 4: + message.positiveIntValue = reader.uint64(); + break; + case 5: + message.negativeIntValue = reader.int64(); + break; + case 6: + message.doubleValue = reader.double(); + break; + case 7: + message.stringValue = reader.bytes(); + break; + case 8: + message.aggregateValue = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an UninterpretedOption message. + * @function verify + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UninterpretedOption.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) { + if (!Array.isArray(message.name)) + return "name: array expected"; + for (var i = 0; i < message.name.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]); + if (error) + return "name." + error; + } + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (!$util.isString(message.identifierValue)) + return "identifierValue: string expected"; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high))) + return "positiveIntValue: integer|Long expected"; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high))) + return "negativeIntValue: integer|Long expected"; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue))) + return "stringValue: buffer expected"; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (!$util.isString(message.aggregateValue)) + return "aggregateValue: string expected"; + return null; + }; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + UninterpretedOption.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption) + return object; + var message = new $root.google.protobuf.UninterpretedOption(); + if (object.name) { + if (!Array.isArray(object.name)) + throw TypeError(".google.protobuf.UninterpretedOption.name: array expected"); + message.name = []; + for (var i = 0; i < object.name.length; ++i) { + if (typeof object.name[i] !== "object") + throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); + message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]); + } + } + if (object.identifierValue != null) + message.identifierValue = String(object.identifierValue); + if (object.positiveIntValue != null) + if ($util.Long) + (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true; + else if (typeof object.positiveIntValue === "string") + message.positiveIntValue = parseInt(object.positiveIntValue, 10); + else if (typeof object.positiveIntValue === "number") + message.positiveIntValue = object.positiveIntValue; + else if (typeof object.positiveIntValue === "object") + message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true); + if (object.negativeIntValue != null) + if ($util.Long) + (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false; + else if (typeof object.negativeIntValue === "string") + message.negativeIntValue = parseInt(object.negativeIntValue, 10); + else if (typeof object.negativeIntValue === "number") + message.negativeIntValue = object.negativeIntValue; + else if (typeof object.negativeIntValue === "object") + message.negativeIntValue = new $util.LongBits(object.negativeIntValue.low >>> 0, object.negativeIntValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.stringValue != null) + if (typeof object.stringValue === "string") + $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0); + else if (object.stringValue.length) + message.stringValue = object.stringValue; + if (object.aggregateValue != null) + message.aggregateValue = String(object.aggregateValue); + return message; + }; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.UninterpretedOption} message UninterpretedOption + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UninterpretedOption.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.name = []; + if (options.defaults) { + object.identifierValue = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.positiveIntValue = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.negativeIntValue = options.longs === String ? "0" : 0; + object.doubleValue = 0; + if (options.bytes === String) + object.stringValue = ""; + else { + object.stringValue = []; + if (options.bytes !== Array) + object.stringValue = $util.newBuffer(object.stringValue); + } + object.aggregateValue = ""; + } + if (message.name && message.name.length) { + object.name = []; + for (var j = 0; j < message.name.length; ++j) + object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options); + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + object.identifierValue = message.identifierValue; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (typeof message.positiveIntValue === "number") + object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue; + else + object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (typeof message.negativeIntValue === "number") + object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue; + else + object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + object.aggregateValue = message.aggregateValue; + return object; + }; + + /** + * Converts this UninterpretedOption to JSON. + * @function toJSON + * @memberof google.protobuf.UninterpretedOption + * @instance + * @returns {Object.} JSON object + */ + UninterpretedOption.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + UninterpretedOption.NamePart = (function() { + + /** + * Properties of a NamePart. + * @memberof google.protobuf.UninterpretedOption + * @interface INamePart + * @property {string} namePart NamePart namePart + * @property {boolean} isExtension NamePart isExtension + */ + + /** + * Constructs a new NamePart. + * @memberof google.protobuf.UninterpretedOption + * @classdesc Represents a NamePart. + * @implements INamePart + * @constructor + * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set + */ + function NamePart(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NamePart namePart. + * @member {string} namePart + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + */ + NamePart.prototype.namePart = ""; + + /** + * NamePart isExtension. + * @member {boolean} isExtension + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + */ + NamePart.prototype.isExtension = false; + + /** + * Creates a new NamePart instance using the specified properties. + * @function create + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance + */ + NamePart.create = function create(properties) { + return new NamePart(properties); + }; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart); + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension); + return writer; + }; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.namePart = reader.string(); + break; + case 2: + message.isExtension = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + if (!message.hasOwnProperty("namePart")) + throw $util.ProtocolError("missing required 'namePart'", { instance: message }); + if (!message.hasOwnProperty("isExtension")) + throw $util.ProtocolError("missing required 'isExtension'", { instance: message }); + return message; + }; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NamePart message. + * @function verify + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + NamePart.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (!$util.isString(message.namePart)) + return "namePart: string expected"; + if (typeof message.isExtension !== "boolean") + return "isExtension: boolean expected"; + return null; + }; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + NamePart.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) + return object; + var message = new $root.google.protobuf.UninterpretedOption.NamePart(); + if (object.namePart != null) + message.namePart = String(object.namePart); + if (object.isExtension != null) + message.isExtension = Boolean(object.isExtension); + return message; + }; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NamePart.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.namePart = ""; + object.isExtension = false; + } + if (message.namePart != null && message.hasOwnProperty("namePart")) + object.namePart = message.namePart; + if (message.isExtension != null && message.hasOwnProperty("isExtension")) + object.isExtension = message.isExtension; + return object; + }; + + /** + * Converts this NamePart to JSON. + * @function toJSON + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + * @returns {Object.} JSON object + */ + NamePart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NamePart; + })(); + + return UninterpretedOption; + })(); + + protobuf.SourceCodeInfo = (function() { + + /** + * Properties of a SourceCodeInfo. + * @memberof google.protobuf + * @interface ISourceCodeInfo + * @property {Array.|null} [location] SourceCodeInfo location + */ + + /** + * Constructs a new SourceCodeInfo. + * @memberof google.protobuf + * @classdesc Represents a SourceCodeInfo. + * @implements ISourceCodeInfo + * @constructor + * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set + */ + function SourceCodeInfo(properties) { + this.location = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SourceCodeInfo location. + * @member {Array.} location + * @memberof google.protobuf.SourceCodeInfo + * @instance + */ + SourceCodeInfo.prototype.location = $util.emptyArray; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @function create + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance + */ + SourceCodeInfo.create = function create(properties) { + return new SourceCodeInfo(properties); + }; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @function encode + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.location != null && message.location.length) + for (var i = 0; i < message.location.length; ++i) + $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.location && message.location.length)) + message.location = []; + message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SourceCodeInfo message. + * @function verify + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SourceCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.location != null && message.hasOwnProperty("location")) { + if (!Array.isArray(message.location)) + return "location: array expected"; + for (var i = 0; i < message.location.length; ++i) { + var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]); + if (error) + return "location." + error; + } + } + return null; + }; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + SourceCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo) + return object; + var message = new $root.google.protobuf.SourceCodeInfo(); + if (object.location) { + if (!Array.isArray(object.location)) + throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected"); + message.location = []; + for (var i = 0; i < object.location.length; ++i) { + if (typeof object.location[i] !== "object") + throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); + message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SourceCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.location = []; + if (message.location && message.location.length) { + object.location = []; + for (var j = 0; j < message.location.length; ++j) + object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options); + } + return object; + }; + + /** + * Converts this SourceCodeInfo to JSON. + * @function toJSON + * @memberof google.protobuf.SourceCodeInfo + * @instance + * @returns {Object.} JSON object + */ + SourceCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + SourceCodeInfo.Location = (function() { + + /** + * Properties of a Location. + * @memberof google.protobuf.SourceCodeInfo + * @interface ILocation + * @property {Array.|null} [path] Location path + * @property {Array.|null} [span] Location span + * @property {string|null} [leadingComments] Location leadingComments + * @property {string|null} [trailingComments] Location trailingComments + * @property {Array.|null} [leadingDetachedComments] Location leadingDetachedComments + */ + + /** + * Constructs a new Location. + * @memberof google.protobuf.SourceCodeInfo + * @classdesc Represents a Location. + * @implements ILocation + * @constructor + * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set + */ + function Location(properties) { + this.path = []; + this.span = []; + this.leadingDetachedComments = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Location path. + * @member {Array.} path + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.path = $util.emptyArray; + + /** + * Location span. + * @member {Array.} span + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.span = $util.emptyArray; + + /** + * Location leadingComments. + * @member {string} leadingComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.leadingComments = ""; + + /** + * Location trailingComments. + * @member {string} trailingComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.trailingComments = ""; + + /** + * Location leadingDetachedComments. + * @member {Array.} leadingDetachedComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.leadingDetachedComments = $util.emptyArray; + + /** + * Creates a new Location instance using the specified properties. + * @function create + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo.Location} Location instance + */ + Location.create = function create(properties) { + return new Location(properties); + }; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @function encode + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.span != null && message.span.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.span.length; ++i) + writer.int32(message.span[i]); + writer.ldelim(); + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments); + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments); + if (message.leadingDetachedComments != null && message.leadingDetachedComments.length) + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.leadingDetachedComments[i]); + return writer; + }; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Location message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + if (!(message.span && message.span.length)) + message.span = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.span.push(reader.int32()); + } else + message.span.push(reader.int32()); + break; + case 3: + message.leadingComments = reader.string(); + break; + case 4: + message.trailingComments = reader.string(); + break; + case 6: + if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) + message.leadingDetachedComments = []; + message.leadingDetachedComments.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Location message. + * @function verify + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Location.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; + } + if (message.span != null && message.hasOwnProperty("span")) { + if (!Array.isArray(message.span)) + return "span: array expected"; + for (var i = 0; i < message.span.length; ++i) + if (!$util.isInteger(message.span[i])) + return "span: integer[] expected"; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (!$util.isString(message.leadingComments)) + return "leadingComments: string expected"; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (!$util.isString(message.trailingComments)) + return "trailingComments: string expected"; + if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) { + if (!Array.isArray(message.leadingDetachedComments)) + return "leadingDetachedComments: array expected"; + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + if (!$util.isString(message.leadingDetachedComments[i])) + return "leadingDetachedComments: string[] expected"; + } + return null; + }; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + Location.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) + return object; + var message = new $root.google.protobuf.SourceCodeInfo.Location(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; + } + if (object.span) { + if (!Array.isArray(object.span)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.span: array expected"); + message.span = []; + for (var i = 0; i < object.span.length; ++i) + message.span[i] = object.span[i] | 0; + } + if (object.leadingComments != null) + message.leadingComments = String(object.leadingComments); + if (object.trailingComments != null) + message.trailingComments = String(object.trailingComments); + if (object.leadingDetachedComments) { + if (!Array.isArray(object.leadingDetachedComments)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected"); + message.leadingDetachedComments = []; + for (var i = 0; i < object.leadingDetachedComments.length; ++i) + message.leadingDetachedComments[i] = String(object.leadingDetachedComments[i]); + } + return message; + }; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.Location} message Location + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Location.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.path = []; + object.span = []; + object.leadingDetachedComments = []; + } + if (options.defaults) { + object.leadingComments = ""; + object.trailingComments = ""; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.span && message.span.length) { + object.span = []; + for (var j = 0; j < message.span.length; ++j) + object.span[j] = message.span[j]; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + object.leadingComments = message.leadingComments; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + object.trailingComments = message.trailingComments; + if (message.leadingDetachedComments && message.leadingDetachedComments.length) { + object.leadingDetachedComments = []; + for (var j = 0; j < message.leadingDetachedComments.length; ++j) + object.leadingDetachedComments[j] = message.leadingDetachedComments[j]; + } + return object; + }; + + /** + * Converts this Location to JSON. + * @function toJSON + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + * @returns {Object.} JSON object + */ + Location.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Location; + })(); + + return SourceCodeInfo; + })(); + + protobuf.GeneratedCodeInfo = (function() { + + /** + * Properties of a GeneratedCodeInfo. + * @memberof google.protobuf + * @interface IGeneratedCodeInfo + * @property {Array.|null} [annotation] GeneratedCodeInfo annotation + */ + + /** + * Constructs a new GeneratedCodeInfo. + * @memberof google.protobuf + * @classdesc Represents a GeneratedCodeInfo. + * @implements IGeneratedCodeInfo + * @constructor + * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set + */ + function GeneratedCodeInfo(properties) { + this.annotation = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GeneratedCodeInfo annotation. + * @member {Array.} annotation + * @memberof google.protobuf.GeneratedCodeInfo + * @instance + */ + GeneratedCodeInfo.prototype.annotation = $util.emptyArray; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @function create + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance + */ + GeneratedCodeInfo.create = function create(properties) { + return new GeneratedCodeInfo(properties); + }; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @function encode + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GeneratedCodeInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.annotation != null && message.annotation.length) + for (var i = 0; i < message.annotation.length; ++i) + $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GeneratedCodeInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.annotation && message.annotation.length)) + message.annotation = []; + message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GeneratedCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GeneratedCodeInfo message. + * @function verify + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GeneratedCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.annotation != null && message.hasOwnProperty("annotation")) { + if (!Array.isArray(message.annotation)) + return "annotation: array expected"; + for (var i = 0; i < message.annotation.length; ++i) { + var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]); + if (error) + return "annotation." + error; + } + } + return null; + }; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + GeneratedCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo(); + if (object.annotation) { + if (!Array.isArray(object.annotation)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected"); + message.annotation = []; + for (var i = 0; i < object.annotation.length; ++i) { + if (typeof object.annotation[i] !== "object") + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); + message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GeneratedCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.annotation = []; + if (message.annotation && message.annotation.length) { + object.annotation = []; + for (var j = 0; j < message.annotation.length; ++j) + object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options); + } + return object; + }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @function toJSON + * @memberof google.protobuf.GeneratedCodeInfo + * @instance + * @returns {Object.} JSON object + */ + GeneratedCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + GeneratedCodeInfo.Annotation = (function() { + + /** + * Properties of an Annotation. + * @memberof google.protobuf.GeneratedCodeInfo + * @interface IAnnotation + * @property {Array.|null} [path] Annotation path + * @property {string|null} [sourceFile] Annotation sourceFile + * @property {number|null} [begin] Annotation begin + * @property {number|null} [end] Annotation end + */ + + /** + * Constructs a new Annotation. + * @memberof google.protobuf.GeneratedCodeInfo + * @classdesc Represents an Annotation. + * @implements IAnnotation + * @constructor + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set + */ + function Annotation(properties) { + this.path = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Annotation path. + * @member {Array.} path + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.path = $util.emptyArray; + + /** + * Annotation sourceFile. + * @member {string} sourceFile + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.sourceFile = ""; + + /** + * Annotation begin. + * @member {number} begin + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.begin = 0; + + /** + * Annotation end. + * @member {number} end + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.end = 0; + + /** + * Creates a new Annotation instance using the specified properties. + * @function create + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance + */ + Annotation.create = function create(properties) { + return new Annotation(properties); + }; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @function encode + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile); + if (message.begin != null && message.hasOwnProperty("begin")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); + return writer; + }; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + message.sourceFile = reader.string(); + break; + case 3: + message.begin = reader.int32(); + break; + case 4: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Annotation message. + * @function verify + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Annotation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (!$util.isString(message.sourceFile)) + return "sourceFile: string expected"; + if (message.begin != null && message.hasOwnProperty("begin")) + if (!$util.isInteger(message.begin)) + return "begin: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + Annotation.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; + } + if (object.sourceFile != null) + message.sourceFile = String(object.sourceFile); + if (object.begin != null) + message.begin = object.begin | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Annotation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) { + object.sourceFile = ""; + object.begin = 0; + object.end = 0; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + object.sourceFile = message.sourceFile; + if (message.begin != null && message.hasOwnProperty("begin")) + object.begin = message.begin; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Converts this Annotation to JSON. + * @function toJSON + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + * @returns {Object.} JSON object + */ + Annotation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Annotation; + })(); + + return GeneratedCodeInfo; + })(); + + protobuf.Struct = (function() { + + /** + * Properties of a Struct. + * @memberof google.protobuf + * @interface IStruct + * @property {Object.|null} [fields] Struct fields + */ + + /** + * Constructs a new Struct. + * @memberof google.protobuf + * @classdesc Represents a Struct. + * @implements IStruct + * @constructor + * @param {google.protobuf.IStruct=} [properties] Properties to set + */ + function Struct(properties) { + this.fields = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Struct fields. + * @member {Object.} fields + * @memberof google.protobuf.Struct + * @instance + */ + Struct.prototype.fields = $util.emptyObject; + + /** + * Creates a new Struct instance using the specified properties. + * @function create + * @memberof google.protobuf.Struct + * @static + * @param {google.protobuf.IStruct=} [properties] Properties to set + * @returns {google.protobuf.Struct} Struct instance + */ + Struct.create = function create(properties) { + return new Struct(properties); + }; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Struct + * @static + * @param {google.protobuf.IStruct} message Struct message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Struct.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fields != null && message.hasOwnProperty("fields")) + for (var keys = Object.keys(message.fields), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + return writer; + }; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Struct + * @static + * @param {google.protobuf.IStruct} message Struct message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Struct.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Struct + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Struct} Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Struct.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + reader.skip().pos++; + if (message.fields === $util.emptyObject) + message.fields = {}; + key = reader.string(); + reader.pos++; + message.fields[key] = $root.google.protobuf.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Struct + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Struct} Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Struct.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Struct message. + * @function verify + * @memberof google.protobuf.Struct + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Struct.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fields != null && message.hasOwnProperty("fields")) { + if (!$util.isObject(message.fields)) + return "fields: object expected"; + var key = Object.keys(message.fields); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.protobuf.Value.verify(message.fields[key[i]]); + if (error) + return "fields." + error; + } + } + return null; + }; + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Struct + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Struct} Struct + */ + Struct.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Struct) + return object; + var message = new $root.google.protobuf.Struct(); + if (object.fields) { + if (typeof object.fields !== "object") + throw TypeError(".google.protobuf.Struct.fields: object expected"); + message.fields = {}; + for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) { + if (typeof object.fields[keys[i]] !== "object") + throw TypeError(".google.protobuf.Struct.fields: object expected"); + message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]]); + } + } + return message; + }; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Struct + * @static + * @param {google.protobuf.Struct} message Struct + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Struct.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.fields = {}; + var keys2; + if (message.fields && (keys2 = Object.keys(message.fields)).length) { + object.fields = {}; + for (var j = 0; j < keys2.length; ++j) + object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options); + } + return object; + }; + + /** + * Converts this Struct to JSON. + * @function toJSON + * @memberof google.protobuf.Struct + * @instance + * @returns {Object.} JSON object + */ + Struct.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Struct; + })(); + + protobuf.Value = (function() { + + /** + * Properties of a Value. + * @memberof google.protobuf + * @interface IValue + * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue + * @property {number|null} [numberValue] Value numberValue + * @property {string|null} [stringValue] Value stringValue + * @property {boolean|null} [boolValue] Value boolValue + * @property {google.protobuf.IStruct|null} [structValue] Value structValue + * @property {google.protobuf.IListValue|null} [listValue] Value listValue + */ + + /** + * Constructs a new Value. + * @memberof google.protobuf + * @classdesc Represents a Value. + * @implements IValue + * @constructor + * @param {google.protobuf.IValue=} [properties] Properties to set + */ + function Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Value nullValue. + * @member {google.protobuf.NullValue} nullValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.nullValue = 0; + + /** + * Value numberValue. + * @member {number} numberValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.numberValue = 0; + + /** + * Value stringValue. + * @member {string} stringValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.stringValue = ""; + + /** + * Value boolValue. + * @member {boolean} boolValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.boolValue = false; + + /** + * Value structValue. + * @member {google.protobuf.IStruct|null|undefined} structValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.structValue = null; + + /** + * Value listValue. + * @member {google.protobuf.IListValue|null|undefined} listValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.listValue = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Value kind. + * @member {"nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"|undefined} kind + * @memberof google.protobuf.Value + * @instance + */ + Object.defineProperty(Value.prototype, "kind", { + get: $util.oneOfGetter($oneOfFields = ["nullValue", "numberValue", "stringValue", "boolValue", "structValue", "listValue"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Value instance using the specified properties. + * @function create + * @memberof google.protobuf.Value + * @static + * @param {google.protobuf.IValue=} [properties] Properties to set + * @returns {google.protobuf.Value} Value instance + */ + Value.create = function create(properties) { + return new Value(properties); + }; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Value + * @static + * @param {google.protobuf.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.nullValue != null && message.hasOwnProperty("nullValue")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.nullValue); + if (message.numberValue != null && message.hasOwnProperty("numberValue")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.numberValue); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); + if (message.boolValue != null && message.hasOwnProperty("boolValue")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolValue); + if (message.structValue != null && message.hasOwnProperty("structValue")) + $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.listValue != null && message.hasOwnProperty("listValue")) + $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Value + * @static + * @param {google.protobuf.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Value} Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.nullValue = reader.int32(); + break; + case 2: + message.numberValue = reader.double(); + break; + case 3: + message.stringValue = reader.string(); + break; + case 4: + message.boolValue = reader.bool(); + break; + case 5: + message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + case 6: + message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Value} Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Value message. + * @function verify + * @memberof google.protobuf.Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + properties.kind = 1; + switch (message.nullValue) { + default: + return "nullValue: enum value expected"; + case 0: + break; + } + } + if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.numberValue !== "number") + return "numberValue: number expected"; + } + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; + } + if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.boolValue !== "boolean") + return "boolValue: boolean expected"; + } + if (message.structValue != null && message.hasOwnProperty("structValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.google.protobuf.Struct.verify(message.structValue); + if (error) + return "structValue." + error; + } + } + if (message.listValue != null && message.hasOwnProperty("listValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.listValue); + if (error) + return "listValue." + error; + } + } + return null; + }; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Value} Value + */ + Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Value) + return object; + var message = new $root.google.protobuf.Value(); + switch (object.nullValue) { + case "NULL_VALUE": + case 0: + message.nullValue = 0; + break; + } + if (object.numberValue != null) + message.numberValue = Number(object.numberValue); + if (object.stringValue != null) + message.stringValue = String(object.stringValue); + if (object.boolValue != null) + message.boolValue = Boolean(object.boolValue); + if (object.structValue != null) { + if (typeof object.structValue !== "object") + throw TypeError(".google.protobuf.Value.structValue: object expected"); + message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue); + } + if (object.listValue != null) { + if (typeof object.listValue !== "object") + throw TypeError(".google.protobuf.Value.listValue: object expected"); + message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue); + } + return message; + }; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Value + * @static + * @param {google.protobuf.Value} message Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + if (options.oneofs) + object.kind = "nullValue"; + } + if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + object.numberValue = options.json && !isFinite(message.numberValue) ? String(message.numberValue) : message.numberValue; + if (options.oneofs) + object.kind = "numberValue"; + } + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + object.stringValue = message.stringValue; + if (options.oneofs) + object.kind = "stringValue"; + } + if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + object.boolValue = message.boolValue; + if (options.oneofs) + object.kind = "boolValue"; + } + if (message.structValue != null && message.hasOwnProperty("structValue")) { + object.structValue = $root.google.protobuf.Struct.toObject(message.structValue, options); + if (options.oneofs) + object.kind = "structValue"; + } + if (message.listValue != null && message.hasOwnProperty("listValue")) { + object.listValue = $root.google.protobuf.ListValue.toObject(message.listValue, options); + if (options.oneofs) + object.kind = "listValue"; + } + return object; + }; + + /** + * Converts this Value to JSON. + * @function toJSON + * @memberof google.protobuf.Value + * @instance + * @returns {Object.} JSON object + */ + Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Value; + })(); + + /** + * NullValue enum. + * @name google.protobuf.NullValue + * @enum {string} + * @property {number} NULL_VALUE=0 NULL_VALUE value + */ + protobuf.NullValue = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NULL_VALUE"] = 0; + return values; + })(); + + protobuf.ListValue = (function() { + + /** + * Properties of a ListValue. + * @memberof google.protobuf + * @interface IListValue + * @property {Array.|null} [values] ListValue values + */ + + /** + * Constructs a new ListValue. + * @memberof google.protobuf + * @classdesc Represents a ListValue. + * @implements IListValue + * @constructor + * @param {google.protobuf.IListValue=} [properties] Properties to set + */ + function ListValue(properties) { + this.values = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ListValue values. + * @member {Array.} values + * @memberof google.protobuf.ListValue + * @instance + */ + ListValue.prototype.values = $util.emptyArray; + + /** + * Creates a new ListValue instance using the specified properties. + * @function create + * @memberof google.protobuf.ListValue + * @static + * @param {google.protobuf.IListValue=} [properties] Properties to set + * @returns {google.protobuf.ListValue} ListValue instance + */ + ListValue.create = function create(properties) { + return new ListValue(properties); + }; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ListValue + * @static + * @param {google.protobuf.IListValue} message ListValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.protobuf.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ListValue + * @static + * @param {google.protobuf.IListValue} message ListValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ListValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ListValue} ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ListValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ListValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ListValue} ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ListValue message. + * @function verify + * @memberof google.protobuf.ListValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ListValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.protobuf.Value.verify(message.values[i]); + if (error) + return "values." + error; + } + } + return null; + }; + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ListValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ListValue} ListValue + */ + ListValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ListValue) + return object; + var message = new $root.google.protobuf.ListValue(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.protobuf.ListValue.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.protobuf.ListValue.values: object expected"); + message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ListValue + * @static + * @param {google.protobuf.ListValue} message ListValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ListValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.protobuf.Value.toObject(message.values[j], options); + } + return object; + }; + + /** + * Converts this ListValue to JSON. + * @function toJSON + * @memberof google.protobuf.ListValue + * @instance + * @returns {Object.} JSON object + */ + ListValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ListValue; + })(); + + protobuf.Timestamp = (function() { + + /** + * Properties of a Timestamp. + * @memberof google.protobuf + * @interface ITimestamp + * @property {number|Long|null} [seconds] Timestamp seconds + * @property {number|null} [nanos] Timestamp nanos + */ + + /** + * Constructs a new Timestamp. + * @memberof google.protobuf + * @classdesc Represents a Timestamp. + * @implements ITimestamp + * @constructor + * @param {google.protobuf.ITimestamp=} [properties] Properties to set + */ + function Timestamp(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Timestamp seconds. + * @member {number|Long} seconds + * @memberof google.protobuf.Timestamp + * @instance + */ + Timestamp.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Timestamp nanos. + * @member {number} nanos + * @memberof google.protobuf.Timestamp + * @instance + */ + Timestamp.prototype.nanos = 0; + + /** + * Creates a new Timestamp instance using the specified properties. + * @function create + * @memberof google.protobuf.Timestamp + * @static + * @param {google.protobuf.ITimestamp=} [properties] Properties to set + * @returns {google.protobuf.Timestamp} Timestamp instance + */ + Timestamp.create = function create(properties) { + return new Timestamp(properties); + }; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Timestamp + * @static + * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Timestamp.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.seconds != null && message.hasOwnProperty("seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && message.hasOwnProperty("nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); + return writer; + }; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Timestamp + * @static + * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Timestamp.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Timestamp + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Timestamp.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.seconds = reader.int64(); + break; + case 2: + message.nanos = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Timestamp + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Timestamp.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Timestamp message. + * @function verify + * @memberof google.protobuf.Timestamp + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Timestamp.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; + return null; + }; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Timestamp + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Timestamp} Timestamp + */ + Timestamp.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Timestamp) + return object; + var message = new $root.google.protobuf.Timestamp(); + if (object.seconds != null) + if ($util.Long) + (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + else if (typeof object.seconds === "string") + message.seconds = parseInt(object.seconds, 10); + else if (typeof object.seconds === "number") + message.seconds = object.seconds; + else if (typeof object.seconds === "object") + message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); + if (object.nanos != null) + message.nanos = object.nanos | 0; + return message; + }; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Timestamp + * @static + * @param {google.protobuf.Timestamp} message Timestamp + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Timestamp.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.seconds = options.longs === String ? "0" : 0; + object.nanos = 0; + } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (typeof message.seconds === "number") + object.seconds = options.longs === String ? String(message.seconds) : message.seconds; + else + object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; + if (message.nanos != null && message.hasOwnProperty("nanos")) + object.nanos = message.nanos; + return object; + }; + + /** + * Converts this Timestamp to JSON. + * @function toJSON + * @memberof google.protobuf.Timestamp + * @instance + * @returns {Object.} JSON object + */ + Timestamp.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Timestamp; + })(); + + protobuf.DoubleValue = (function() { + + /** + * Properties of a DoubleValue. + * @memberof google.protobuf + * @interface IDoubleValue + * @property {number|null} [value] DoubleValue value + */ + + /** + * Constructs a new DoubleValue. + * @memberof google.protobuf + * @classdesc Represents a DoubleValue. + * @implements IDoubleValue + * @constructor + * @param {google.protobuf.IDoubleValue=} [properties] Properties to set + */ + function DoubleValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DoubleValue value. + * @member {number} value + * @memberof google.protobuf.DoubleValue + * @instance + */ + DoubleValue.prototype.value = 0; + + /** + * Creates a new DoubleValue instance using the specified properties. + * @function create + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue=} [properties] Properties to set + * @returns {google.protobuf.DoubleValue} DoubleValue instance + */ + DoubleValue.create = function create(properties) { + return new DoubleValue(properties); + }; + + /** + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DoubleValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.value); + return writer; + }; + + /** + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DoubleValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DoubleValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DoubleValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DoubleValue} DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DoubleValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DoubleValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DoubleValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DoubleValue} DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DoubleValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DoubleValue message. + * @function verify + * @memberof google.protobuf.DoubleValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DoubleValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "number") + return "value: number expected"; + return null; + }; + + /** + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DoubleValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DoubleValue} DoubleValue + */ + DoubleValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DoubleValue) + return object; + var message = new $root.google.protobuf.DoubleValue(); + if (object.value != null) + message.value = Number(object.value); + return message; + }; + + /** + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.DoubleValue} message DoubleValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DoubleValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; + return object; + }; + + /** + * Converts this DoubleValue to JSON. + * @function toJSON + * @memberof google.protobuf.DoubleValue + * @instance + * @returns {Object.} JSON object + */ + DoubleValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DoubleValue; + })(); + + protobuf.FloatValue = (function() { + + /** + * Properties of a FloatValue. + * @memberof google.protobuf + * @interface IFloatValue + * @property {number|null} [value] FloatValue value + */ + + /** + * Constructs a new FloatValue. + * @memberof google.protobuf + * @classdesc Represents a FloatValue. + * @implements IFloatValue + * @constructor + * @param {google.protobuf.IFloatValue=} [properties] Properties to set + */ + function FloatValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FloatValue value. + * @member {number} value + * @memberof google.protobuf.FloatValue + * @instance + */ + FloatValue.prototype.value = 0; + + /** + * Creates a new FloatValue instance using the specified properties. + * @function create + * @memberof google.protobuf.FloatValue + * @static + * @param {google.protobuf.IFloatValue=} [properties] Properties to set + * @returns {google.protobuf.FloatValue} FloatValue instance + */ + FloatValue.create = function create(properties) { + return new FloatValue(properties); + }; + + /** + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FloatValue + * @static + * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FloatValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.value); + return writer; + }; + + /** + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FloatValue + * @static + * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FloatValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FloatValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FloatValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FloatValue} FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FloatValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FloatValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FloatValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FloatValue} FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FloatValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FloatValue message. + * @function verify + * @memberof google.protobuf.FloatValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FloatValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "number") + return "value: number expected"; + return null; + }; + + /** + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FloatValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FloatValue} FloatValue + */ + FloatValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FloatValue) + return object; + var message = new $root.google.protobuf.FloatValue(); + if (object.value != null) + message.value = Number(object.value); + return message; + }; + + /** + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FloatValue + * @static + * @param {google.protobuf.FloatValue} message FloatValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FloatValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; + return object; + }; + + /** + * Converts this FloatValue to JSON. + * @function toJSON + * @memberof google.protobuf.FloatValue + * @instance + * @returns {Object.} JSON object + */ + FloatValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FloatValue; + })(); + + protobuf.Int64Value = (function() { + + /** + * Properties of an Int64Value. + * @memberof google.protobuf + * @interface IInt64Value + * @property {number|Long|null} [value] Int64Value value + */ + + /** + * Constructs a new Int64Value. + * @memberof google.protobuf + * @classdesc Represents an Int64Value. + * @implements IInt64Value + * @constructor + * @param {google.protobuf.IInt64Value=} [properties] Properties to set + */ + function Int64Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Int64Value value. + * @member {number|Long} value + * @memberof google.protobuf.Int64Value + * @instance + */ + Int64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Creates a new Int64Value instance using the specified properties. + * @function create + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value=} [properties] Properties to set + * @returns {google.protobuf.Int64Value} Int64Value instance + */ + Int64Value.create = function create(properties) { + return new Int64Value(properties); + }; + + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int64Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.value); + return writer; + }; + + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int64Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Int64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Int64Value} Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int64Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int64Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Int64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Int64Value} Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int64Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Int64Value message. + * @function verify + * @memberof google.protobuf.Int64Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Int64Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) + return "value: integer|Long expected"; + return null; + }; + + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Int64Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Int64Value} Int64Value + */ + Int64Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Int64Value) + return object; + var message = new $root.google.protobuf.Int64Value(); + if (object.value != null) + if ($util.Long) + (message.value = $util.Long.fromValue(object.value)).unsigned = false; + else if (typeof object.value === "string") + message.value = parseInt(object.value, 10); + else if (typeof object.value === "number") + message.value = object.value; + else if (typeof object.value === "object") + message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.Int64Value} message Int64Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Int64Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.value = options.longs === String ? "0" : 0; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value === "number") + object.value = options.longs === String ? String(message.value) : message.value; + else + object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber() : message.value; + return object; + }; + + /** + * Converts this Int64Value to JSON. + * @function toJSON + * @memberof google.protobuf.Int64Value + * @instance + * @returns {Object.} JSON object + */ + Int64Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Int64Value; + })(); + + protobuf.UInt64Value = (function() { + + /** + * Properties of a UInt64Value. + * @memberof google.protobuf + * @interface IUInt64Value + * @property {number|Long|null} [value] UInt64Value value + */ + + /** + * Constructs a new UInt64Value. + * @memberof google.protobuf + * @classdesc Represents a UInt64Value. + * @implements IUInt64Value + * @constructor + * @param {google.protobuf.IUInt64Value=} [properties] Properties to set + */ + function UInt64Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UInt64Value value. + * @member {number|Long} value + * @memberof google.protobuf.UInt64Value + * @instance + */ + UInt64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new UInt64Value instance using the specified properties. + * @function create + * @memberof google.protobuf.UInt64Value + * @static + * @param {google.protobuf.IUInt64Value=} [properties] Properties to set + * @returns {google.protobuf.UInt64Value} UInt64Value instance + */ + UInt64Value.create = function create(properties) { + return new UInt64Value(properties); + }; + + /** + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UInt64Value + * @static + * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UInt64Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.value); + return writer; + }; + + /** + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UInt64Value + * @static + * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UInt64Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a UInt64Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UInt64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UInt64Value} UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UInt64Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt64Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UInt64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UInt64Value} UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UInt64Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a UInt64Value message. + * @function verify + * @memberof google.protobuf.UInt64Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UInt64Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) + return "value: integer|Long expected"; + return null; + }; + + /** + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UInt64Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UInt64Value} UInt64Value + */ + UInt64Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UInt64Value) + return object; + var message = new $root.google.protobuf.UInt64Value(); + if (object.value != null) + if ($util.Long) + (message.value = $util.Long.fromValue(object.value)).unsigned = true; + else if (typeof object.value === "string") + message.value = parseInt(object.value, 10); + else if (typeof object.value === "number") + message.value = object.value; + else if (typeof object.value === "object") + message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UInt64Value + * @static + * @param {google.protobuf.UInt64Value} message UInt64Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UInt64Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.value = options.longs === String ? "0" : 0; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value === "number") + object.value = options.longs === String ? String(message.value) : message.value; + else + object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber(true) : message.value; + return object; + }; + + /** + * Converts this UInt64Value to JSON. + * @function toJSON + * @memberof google.protobuf.UInt64Value + * @instance + * @returns {Object.} JSON object + */ + UInt64Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return UInt64Value; + })(); + + protobuf.Int32Value = (function() { + + /** + * Properties of an Int32Value. + * @memberof google.protobuf + * @interface IInt32Value + * @property {number|null} [value] Int32Value value + */ + + /** + * Constructs a new Int32Value. + * @memberof google.protobuf + * @classdesc Represents an Int32Value. + * @implements IInt32Value + * @constructor + * @param {google.protobuf.IInt32Value=} [properties] Properties to set + */ + function Int32Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Int32Value value. + * @member {number} value + * @memberof google.protobuf.Int32Value + * @instance + */ + Int32Value.prototype.value = 0; + + /** + * Creates a new Int32Value instance using the specified properties. + * @function create + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value=} [properties] Properties to set + * @returns {google.protobuf.Int32Value} Int32Value instance + */ + Int32Value.create = function create(properties) { + return new Int32Value(properties); + }; + + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int32Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value); + return writer; + }; + + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int32Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Int32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Int32Value} Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int32Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int32Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Int32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Int32Value} Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int32Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Int32Value message. + * @function verify + * @memberof google.protobuf.Int32Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Int32Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value)) + return "value: integer expected"; + return null; + }; + + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Int32Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Int32Value} Int32Value + */ + Int32Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Int32Value) + return object; + var message = new $root.google.protobuf.Int32Value(); + if (object.value != null) + message.value = object.value | 0; + return message; + }; + + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.Int32Value} message Int32Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Int32Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Converts this Int32Value to JSON. + * @function toJSON + * @memberof google.protobuf.Int32Value + * @instance + * @returns {Object.} JSON object + */ + Int32Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Int32Value; + })(); + + protobuf.UInt32Value = (function() { + + /** + * Properties of a UInt32Value. + * @memberof google.protobuf + * @interface IUInt32Value + * @property {number|null} [value] UInt32Value value + */ + + /** + * Constructs a new UInt32Value. + * @memberof google.protobuf + * @classdesc Represents a UInt32Value. + * @implements IUInt32Value + * @constructor + * @param {google.protobuf.IUInt32Value=} [properties] Properties to set + */ + function UInt32Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UInt32Value value. + * @member {number} value + * @memberof google.protobuf.UInt32Value + * @instance + */ + UInt32Value.prototype.value = 0; + + /** + * Creates a new UInt32Value instance using the specified properties. + * @function create + * @memberof google.protobuf.UInt32Value + * @static + * @param {google.protobuf.IUInt32Value=} [properties] Properties to set + * @returns {google.protobuf.UInt32Value} UInt32Value instance + */ + UInt32Value.create = function create(properties) { + return new UInt32Value(properties); + }; + + /** + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UInt32Value + * @static + * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UInt32Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); + return writer; + }; + + /** + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UInt32Value + * @static + * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UInt32Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a UInt32Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UInt32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UInt32Value} UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UInt32Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt32Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UInt32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UInt32Value} UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UInt32Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a UInt32Value message. + * @function verify + * @memberof google.protobuf.UInt32Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UInt32Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value)) + return "value: integer expected"; + return null; + }; + + /** + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UInt32Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UInt32Value} UInt32Value + */ + UInt32Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UInt32Value) + return object; + var message = new $root.google.protobuf.UInt32Value(); + if (object.value != null) + message.value = object.value >>> 0; + return message; + }; + + /** + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UInt32Value + * @static + * @param {google.protobuf.UInt32Value} message UInt32Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UInt32Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Converts this UInt32Value to JSON. + * @function toJSON + * @memberof google.protobuf.UInt32Value + * @instance + * @returns {Object.} JSON object + */ + UInt32Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return UInt32Value; + })(); + + protobuf.BoolValue = (function() { + + /** + * Properties of a BoolValue. + * @memberof google.protobuf + * @interface IBoolValue + * @property {boolean|null} [value] BoolValue value + */ + + /** + * Constructs a new BoolValue. + * @memberof google.protobuf + * @classdesc Represents a BoolValue. + * @implements IBoolValue + * @constructor + * @param {google.protobuf.IBoolValue=} [properties] Properties to set + */ + function BoolValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BoolValue value. + * @member {boolean} value + * @memberof google.protobuf.BoolValue + * @instance + */ + BoolValue.prototype.value = false; + + /** + * Creates a new BoolValue instance using the specified properties. + * @function create + * @memberof google.protobuf.BoolValue + * @static + * @param {google.protobuf.IBoolValue=} [properties] Properties to set + * @returns {google.protobuf.BoolValue} BoolValue instance + */ + BoolValue.create = function create(properties) { + return new BoolValue(properties); + }; + + /** + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.BoolValue + * @static + * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BoolValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value); + return writer; + }; + + /** + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.BoolValue + * @static + * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BoolValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BoolValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.BoolValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.BoolValue} BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BoolValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BoolValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.BoolValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.BoolValue} BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BoolValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BoolValue message. + * @function verify + * @memberof google.protobuf.BoolValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BoolValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "boolean") + return "value: boolean expected"; + return null; + }; + + /** + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.BoolValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.BoolValue} BoolValue + */ + BoolValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.BoolValue) + return object; + var message = new $root.google.protobuf.BoolValue(); + if (object.value != null) + message.value = Boolean(object.value); + return message; + }; + + /** + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.BoolValue + * @static + * @param {google.protobuf.BoolValue} message BoolValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BoolValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = false; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Converts this BoolValue to JSON. + * @function toJSON + * @memberof google.protobuf.BoolValue + * @instance + * @returns {Object.} JSON object + */ + BoolValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BoolValue; + })(); + + protobuf.StringValue = (function() { + + /** + * Properties of a StringValue. + * @memberof google.protobuf + * @interface IStringValue + * @property {string|null} [value] StringValue value + */ + + /** + * Constructs a new StringValue. + * @memberof google.protobuf + * @classdesc Represents a StringValue. + * @implements IStringValue + * @constructor + * @param {google.protobuf.IStringValue=} [properties] Properties to set + */ + function StringValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StringValue value. + * @member {string} value + * @memberof google.protobuf.StringValue + * @instance + */ + StringValue.prototype.value = ""; + + /** + * Creates a new StringValue instance using the specified properties. + * @function create + * @memberof google.protobuf.StringValue + * @static + * @param {google.protobuf.IStringValue=} [properties] Properties to set + * @returns {google.protobuf.StringValue} StringValue instance + */ + StringValue.create = function create(properties) { + return new StringValue(properties); + }; + + /** + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.StringValue + * @static + * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StringValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + return writer; + }; + + /** + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.StringValue + * @static + * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StringValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StringValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.StringValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.StringValue} StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StringValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.StringValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StringValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.StringValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.StringValue} StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StringValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StringValue message. + * @function verify + * @memberof google.protobuf.StringValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StringValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; + return null; + }; + + /** + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.StringValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.StringValue} StringValue + */ + StringValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.StringValue) + return object; + var message = new $root.google.protobuf.StringValue(); + if (object.value != null) + message.value = String(object.value); + return message; + }; + + /** + * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.StringValue + * @static + * @param {google.protobuf.StringValue} message StringValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StringValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = ""; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Converts this StringValue to JSON. + * @function toJSON + * @memberof google.protobuf.StringValue + * @instance + * @returns {Object.} JSON object + */ + StringValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StringValue; + })(); + + protobuf.BytesValue = (function() { + + /** + * Properties of a BytesValue. + * @memberof google.protobuf + * @interface IBytesValue + * @property {Uint8Array|null} [value] BytesValue value + */ + + /** + * Constructs a new BytesValue. + * @memberof google.protobuf + * @classdesc Represents a BytesValue. + * @implements IBytesValue + * @constructor + * @param {google.protobuf.IBytesValue=} [properties] Properties to set + */ + function BytesValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BytesValue value. + * @member {Uint8Array} value + * @memberof google.protobuf.BytesValue + * @instance + */ + BytesValue.prototype.value = $util.newBuffer([]); + + /** + * Creates a new BytesValue instance using the specified properties. + * @function create + * @memberof google.protobuf.BytesValue + * @static + * @param {google.protobuf.IBytesValue=} [properties] Properties to set + * @returns {google.protobuf.BytesValue} BytesValue instance + */ + BytesValue.create = function create(properties) { + return new BytesValue(properties); + }; + + /** + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.BytesValue + * @static + * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BytesValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); + return writer; + }; + + /** + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.BytesValue + * @static + * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BytesValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BytesValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.BytesValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.BytesValue} BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BytesValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BytesValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.BytesValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.BytesValue} BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BytesValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BytesValue message. + * @function verify + * @memberof google.protobuf.BytesValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BytesValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; + return null; + }; + + /** + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.BytesValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.BytesValue} BytesValue + */ + BytesValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.BytesValue) + return object; + var message = new $root.google.protobuf.BytesValue(); + if (object.value != null) + if (typeof object.value === "string") + $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); + else if (object.value.length) + message.value = object.value; + return message; + }; + + /** + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.BytesValue + * @static + * @param {google.protobuf.BytesValue} message BytesValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BytesValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.value = ""; + else { + object.value = []; + if (options.bytes !== Array) + object.value = $util.newBuffer(object.value); + } + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; + return object; + }; + + /** + * Converts this BytesValue to JSON. + * @function toJSON + * @memberof google.protobuf.BytesValue + * @instance + * @returns {Object.} JSON object + */ + BytesValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BytesValue; + })(); + + return protobuf; + })(); + + google.type = (function() { + + /** + * Namespace type. + * @memberof google + * @namespace + */ + var type = {}; + + type.LatLng = (function() { + + /** + * Properties of a LatLng. + * @memberof google.type + * @interface ILatLng + * @property {number|null} [latitude] LatLng latitude + * @property {number|null} [longitude] LatLng longitude + */ + + /** + * Constructs a new LatLng. + * @memberof google.type + * @classdesc Represents a LatLng. + * @implements ILatLng + * @constructor + * @param {google.type.ILatLng=} [properties] Properties to set + */ + function LatLng(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LatLng latitude. + * @member {number} latitude + * @memberof google.type.LatLng + * @instance + */ + LatLng.prototype.latitude = 0; + + /** + * LatLng longitude. + * @member {number} longitude + * @memberof google.type.LatLng + * @instance + */ + LatLng.prototype.longitude = 0; + + /** + * Creates a new LatLng instance using the specified properties. + * @function create + * @memberof google.type.LatLng + * @static + * @param {google.type.ILatLng=} [properties] Properties to set + * @returns {google.type.LatLng} LatLng instance + */ + LatLng.create = function create(properties) { + return new LatLng(properties); + }; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @function encode + * @memberof google.type.LatLng + * @static + * @param {google.type.ILatLng} message LatLng message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LatLng.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.latitude != null && message.hasOwnProperty("latitude")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.latitude); + if (message.longitude != null && message.hasOwnProperty("longitude")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.longitude); + return writer; + }; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @function encodeDelimited + * @memberof google.type.LatLng + * @static + * @param {google.type.ILatLng} message LatLng message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LatLng.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @function decode + * @memberof google.type.LatLng + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.type.LatLng} LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LatLng.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.LatLng(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.latitude = reader.double(); + break; + case 2: + message.longitude = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.type.LatLng + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.type.LatLng} LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LatLng.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LatLng message. + * @function verify + * @memberof google.type.LatLng + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LatLng.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.latitude != null && message.hasOwnProperty("latitude")) + if (typeof message.latitude !== "number") + return "latitude: number expected"; + if (message.longitude != null && message.hasOwnProperty("longitude")) + if (typeof message.longitude !== "number") + return "longitude: number expected"; + return null; + }; + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.type.LatLng + * @static + * @param {Object.} object Plain object + * @returns {google.type.LatLng} LatLng + */ + LatLng.fromObject = function fromObject(object) { + if (object instanceof $root.google.type.LatLng) + return object; + var message = new $root.google.type.LatLng(); + if (object.latitude != null) + message.latitude = Number(object.latitude); + if (object.longitude != null) + message.longitude = Number(object.longitude); + return message; + }; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @function toObject + * @memberof google.type.LatLng + * @static + * @param {google.type.LatLng} message LatLng + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LatLng.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.latitude = 0; + object.longitude = 0; + } + if (message.latitude != null && message.hasOwnProperty("latitude")) + object.latitude = options.json && !isFinite(message.latitude) ? String(message.latitude) : message.latitude; + if (message.longitude != null && message.hasOwnProperty("longitude")) + object.longitude = options.json && !isFinite(message.longitude) ? String(message.longitude) : message.longitude; + return object; + }; + + /** + * Converts this LatLng to JSON. + * @function toJSON + * @memberof google.type.LatLng + * @instance + * @returns {Object.} JSON object + */ + LatLng.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LatLng; + })(); + + return type; + })(); + + return google; + })(); + + return $root; +}); diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 14381994258..2c7544d2c12 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-09-06T11:11:58.081659Z", + "updateTime": "2019-09-27T11:15:21.496945Z", "sources": [ { "generator": { "name": "artman", - "version": "0.36.2", - "dockerImage": "googleapis/artman@sha256:0e6f3a668cd68afc768ecbe08817cf6e56a0e64fcbdb1c58c3b97492d12418a1" + "version": "0.37.1", + "dockerImage": "googleapis/artman@sha256:6068f67900a3f0bdece596b97bda8fc70406ca0e137a941f4c81d3217c994a80" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "960b76b1f0c46d12610088977d1129cc7405f3dc", - "internalRef": "267478864" + "sha": "cd112d8d255e0099df053643d4bd12c228ef7b1b", + "internalRef": "271468707" } }, { From b2ee8f06674a88d5babdda178dd84afd9d4c8aea Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 1 Oct 2019 20:15:00 -0700 Subject: [PATCH 438/820] fix: use compatible version of google-gax * fix: use compatible version of google-gax * fix: use gax v1.6.3 --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ec4643c3c93..66153aef288 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -55,7 +55,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-auth-library": "^5.0.0", - "google-gax": "^1.0.0", + "google-gax": "^1.6.3", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" From 21f77b7a548a5a38486da8f38573c2154576cc16 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 3 Oct 2019 06:14:03 -0700 Subject: [PATCH 439/820] chore: update pull request template (#510) --- handwritten/nodejs-datastore/synth.metadata | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 2c7544d2c12..dcb45e45a9c 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-09-27T11:15:21.496945Z", + "updateTime": "2019-10-01T11:16:26.606293Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "cd112d8d255e0099df053643d4bd12c228ef7b1b", - "internalRef": "271468707" + "sha": "ce3c574d1266026cebea3a893247790bd68191c2", + "internalRef": "272147209" } }, { From 082da8d962837cb3719cc914e11f1250118fda9a Mon Sep 17 00:00:00 2001 From: praveenqlogic01 <50827134+praveenqlogic01@users.noreply.github.com> Date: Mon, 7 Oct 2019 23:17:29 +0530 Subject: [PATCH 440/820] feat: add merge method for merging an object into an existing entity (#452) --- handwritten/nodejs-datastore/samples/tasks.js | 25 ++++ handwritten/nodejs-datastore/src/request.ts | 60 ++++++++ .../nodejs-datastore/system-test/datastore.ts | 23 +++ handwritten/nodejs-datastore/test/request.ts | 135 ++++++++++++++++++ 4 files changed, 243 insertions(+) diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 33521a54f42..99cb51a77c7 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -119,6 +119,24 @@ async function markDone(taskId) { } // [END datastore_update_entity] +// [START datastore_merge_entity] +async function merge(taskId, description) { + const taskKey = datastore.key(['Task', taskId]); + const task = { + description, + }; + try { + await datastore.merge({ + key: taskKey, + data: task, + }); + console.log(`Task ${taskId} description updated successfully.`); + } catch (err) { + console.error('ERROR:', err); + } +} +// [END datastore_merge_entity] + // [START datastore_retrieve_entities] async function listTasks() { const query = datastore.createQuery('Task').order('created'); @@ -151,12 +169,19 @@ require(`yargs`) // eslint-disable-line .command(`done `, `Marks the specified task as done.`, {}, opts => markDone(opts.taskId) ) + .command(`merge `, `Marks the specified task as done.`, {}, opts => + merge(opts.taskId, opts.description) + ) .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) .command(`delete `, `Deletes a task.`, {}, opts => deleteTask(opts.taskId) ) .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) .example(`node $0 done 12345`, `Marks task 12345 as Done.`) + .example( + `node $0 merge 12345`, + `update task 12345 with description "Buy food".` + ) .example(`node $0 list`, `Lists all tasks ordered by creation time`) .example(`node $0 delete 12345`, `Deletes task 12345.`) .wrap(120) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 8ff47e1a023..7b57bdbe641 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -48,6 +48,7 @@ import { RunQueryCallback, } from './query'; import {Datastore} from '.'; +import {ServiceError} from '@grpc/grpc-js'; /** * A map of read consistency values to proto codes. @@ -1235,6 +1236,65 @@ class DatastoreRequest { this.save(entities, callback!); } + merge(entities: Entities): Promise; + merge(entities: Entities, callback: SaveCallback): void; + /** + * Merge the specified object(s). If a key is incomplete, its associated object + * is inserted and the original Key object is updated to contain the generated ID. + * For example, if you provide an incomplete key (one without an ID), + * the request will create a new entity and have its ID automatically assigned. + * If you provide a complete key, the entity will be get the data from datastore + * and merge with the data specified. + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an `excludeFromIndexes` array. + * + * Maps to {@link Datastore#save}, forcing the method to be `merge`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to merge to the same for provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + merge( + entities: Entities, + callback?: SaveCallback + ): void | Promise { + const transaction = this.datastore.transaction(); + transaction.run(async err => { + if (err) { + transaction.rollback(); + callback!(err); + return; + } + try { + await Promise.all( + arrify(entities).map(async (objEntity: Entity) => { + const obj: Entity = DatastoreRequest.prepareEntityObject_( + objEntity + ); + const [data] = await transaction.get(obj.key); + obj.method = 'upsert'; + obj.data = Object.assign({}, data, obj.data); + transaction.save(obj); + }) + ); + + const [response] = await transaction.commit(); + callback!(null, response); + } catch (err) { + transaction.rollback(); + callback!(err); + } + }); + } + + request_(config: RequestConfig, callback: RequestCallback): void; /** * Make a request to the API endpoint. Properties to indicate a transactional * or non-transactional operation are added automatically. diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index a781a228535..63db932a60e 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -305,6 +305,29 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should save/get/merge', async () => { + const postKey = datastore.key(['Post', 1]); + const originalData = { + key: postKey, + data: { + title: 'Original', + status: 'neat', + }, + }; + await datastore.save(originalData); + const updatedData = { + key: postKey, + data: { + title: 'Updated', + }, + }; + await datastore.merge(updatedData); + const [entity] = await datastore.get(postKey); + assert.strictEqual(entity.title, updatedData.data.title); + assert.strictEqual(entity.status, originalData.data.status); + await datastore.delete(postKey); + }); + it('should save and get with a string ID', async () => { const longIdKey = datastore.key([ 'Post', diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index d06ad2761ca..f2037228371 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -31,6 +31,9 @@ import { AllocateIdsResponse, RequestConfig, RequestOptions, + PrepareEntityObjectResponse, + CommitResponse, + GetResponse, } from '../src/request'; // tslint:disable-next-line no-any @@ -1847,6 +1850,138 @@ describe('Request', () => { }); }); + describe('merge', () => { + // tslint:disable-next-line: variable-name + let Transaction: typeof ds.Transaction; + let transaction: ds.Transaction; + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'a-namespace'; + + const DATASTORE = ({ + request_() {}, + projectId: PROJECT_ID, + namespace: NAMESPACE, + } as {}) as ds.Datastore; + + const key = { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }; + const entityObject = {}; + + before(() => { + Transaction = proxyquire('../src/transaction.js', { + '@google-cloud/promisify': fakePfy, + }).Transaction; + }); + + beforeEach(() => { + transaction = new Transaction(DATASTORE); + + transaction.request_ = () => {}; + + transaction.commit = async () => { + return [{}] as CommitResponse; + }; + request.datastore = { + transaction: () => transaction, + }; + // tslint:disable-next-line: no-any + (transaction as any).run = (callback?: Function) => { + callback!(null); + }; + + transaction.get = async () => { + return [entityObject] as GetResponse; + }; + + transaction.commit = async () => { + return [{}] as CommitResponse; + }; + }); + + afterEach(() => sandbox.restore()); + + it('should return merge object for entity', done => { + const updatedEntityObject = { + status: 'merged', + }; + + transaction.save = (modifiedData: PrepareEntityObjectResponse) => { + assert.deepStrictEqual( + modifiedData.data, + Object.assign({}, entityObject, updatedEntityObject) + ); + }; + + request.merge({key, data: updatedEntityObject}, done); + }); + + it('should return merge objects for entities', done => { + const updatedEntityObject = [ + { + id: 1, + status: 'merged', + }, + { + id: 2, + status: 'merged', + }, + ]; + + transaction.commit = async () => { + transaction.modifiedEntities_.forEach((entity, index) => { + assert.deepStrictEqual( + entity.args[0].data, + Object.assign({}, entityObject, updatedEntityObject[index]) + ); + }); + return [{}] as CommitResponse; + }; + + request.merge( + [ + {key, data: updatedEntityObject[0]}, + {key, data: updatedEntityObject[1]}, + ], + done + ); + }); + + it('transaction should rollback if error on transaction run!', done => { + sandbox + .stub(transaction, 'run') + .callsFake((gaxOption, callback?: Function) => { + callback = typeof gaxOption === 'function' ? gaxOption : callback!; + callback(new Error('Error')); + }); + + request.merge({key, data: null}, (err: Error) => { + assert.strictEqual(err.message, 'Error'); + done(); + }); + }); + + it('transaction should rollback if error for for transaction get!', done => { + sandbox.stub(transaction, 'get').rejects(new Error('Error')); + + request.merge({key, data: null}, (err: Error) => { + assert.strictEqual(err.message, 'Error'); + done(); + }); + }); + + it('transaction should rollback if error for for transaction commit!', done => { + sandbox.stub(transaction, 'commit').rejects(new Error('Error')); + + request.merge({key, data: null}, (err: Error) => { + assert.strictEqual(err.message, 'Error'); + done(); + }); + }); + }); + describe('request_', () => { const CONFIG = { client: 'FakeClient', // name set at top of file From aed4632cc1869c9738a6168b6b73314ffca0d8ca Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 8 Oct 2019 17:09:39 -0700 Subject: [PATCH 441/820] chore: update CONTRIBUTING.md and make releaseType node (#515) --- handwritten/nodejs-datastore/CONTRIBUTING.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/handwritten/nodejs-datastore/CONTRIBUTING.md b/handwritten/nodejs-datastore/CONTRIBUTING.md index 78aaa61b269..f6c4cf010e3 100644 --- a/handwritten/nodejs-datastore/CONTRIBUTING.md +++ b/handwritten/nodejs-datastore/CONTRIBUTING.md @@ -34,6 +34,7 @@ accept your pull requests. 1. Ensure that your code adheres to the existing style in the code to which you are contributing. 1. Ensure that your code has an appropriate set of tests which all pass. +1. Title your pull request following [Conventional Commits](https://www.conventionalcommits.org/) styling. 1. Submit a pull request. ## Running the tests @@ -46,8 +47,17 @@ accept your pull requests. 1. Run the tests: + # Run unit tests. npm test + # Run sample integration tests. + gcloud auth application-default login + npm run samples-test + + # Run all system tests. + gcloud auth application-default login + npm run system-test + 1. Lint (and maybe fix) any changes: npm run fix From 9e2a767c6d1be856ab9c9dcd418c0eb671c7cc49 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Sat, 12 Oct 2019 11:53:49 -0700 Subject: [PATCH 442/820] chore: release 4.4.0 (#507) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 15 +++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 019e018b269..22b4a0fc53d 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,21 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.4.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.3.0...v4.4.0) (2019-10-09) + + +### Bug Fixes + +* transaction#run overloads' param types correction ([#501](https://www.github.com/googleapis/nodejs-datastore/issues/501)) ([c88e66e](https://www.github.com/googleapis/nodejs-datastore/commit/c88e66e)) +* **deps:** update dependency @grpc/grpc-js to ^0.6.0 ([#503](https://www.github.com/googleapis/nodejs-datastore/issues/503)) ([7c3c213](https://www.github.com/googleapis/nodejs-datastore/commit/7c3c213)) +* use compatible version of google-gax ([567e9dd](https://www.github.com/googleapis/nodejs-datastore/commit/567e9dd)) + + +### Features + +* .d.ts for protos ([#506](https://www.github.com/googleapis/nodejs-datastore/issues/506)) ([869e673](https://www.github.com/googleapis/nodejs-datastore/commit/869e673)) +* add merge method for merging an object into an existing entity ([#452](https://www.github.com/googleapis/nodejs-datastore/issues/452)) ([8e026af](https://www.github.com/googleapis/nodejs-datastore/commit/8e026af)) + ## [4.3.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.2.0...v4.3.0) (2019-09-12) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 66153aef288..6fb4e31df48 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.3.0", + "version": "4.4.0", "license": "Apache-2.0", "author": "Google LLC.", "engines": { From 2a511974f17014665a60fb6a746cd7ad69f7236f Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 21 Oct 2019 18:12:37 -0700 Subject: [PATCH 443/820] fix(deps): bump google-gax to 1.7.5 (#518) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6fb4e31df48..1ea6016d956 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -55,7 +55,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-auth-library": "^5.0.0", - "google-gax": "^1.6.3", + "google-gax": "^1.7.5", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" From a717ac542196776caef345c2dec017330405d04b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2019 12:18:02 -0700 Subject: [PATCH 444/820] chore: release 4.4.1 (#519) --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 22b4a0fc53d..703a2fb2883 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.4.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.4.0...v4.4.1) (2019-10-22) + + +### Bug Fixes + +* **deps:** bump google-gax to 1.7.5 ([#518](https://www.github.com/googleapis/nodejs-datastore/issues/518)) ([3bb56c1](https://www.github.com/googleapis/nodejs-datastore/commit/3bb56c15462892d7afcc0ca3be7064cfd1cec745)) + ## [4.4.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.3.0...v4.4.0) (2019-10-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1ea6016d956..a67211a3f33 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.4.0", + "version": "4.4.1", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index c74a7e2b892..f90c72e1f40 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.3.0", + "@google-cloud/datastore": "^4.4.1", "sinon": "^7.3.2" }, "devDependencies": { From 110b42da653936a49f89bae82fa155b30d50881f Mon Sep 17 00:00:00 2001 From: Herman Date: Mon, 28 Oct 2019 14:08:29 +0100 Subject: [PATCH 445/820] feat: support DSInt / DSDouble recognition from JSON (#480) * feat: allow JSON serialization + deserialization of Keys * introduce type property --- handwritten/nodejs-datastore/src/entity.ts | 52 ++++++++++++++++++++- handwritten/nodejs-datastore/test/entity.ts | 35 ++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 56d5b11093c..25f4402f9d8 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -63,8 +63,14 @@ export namespace entity { * const aDouble = datastore.double(7.3); */ export class Double { + type: string; value: number; constructor(value: number) { + /** + * @name Double#type + * @type {string} + */ + this.type = 'DatastoreDouble'; /** * @name Double#value * @type {number} @@ -84,6 +90,23 @@ export namespace entity { return value instanceof entity.Double; } + /** + * Check if a value is a Datastore Double object converted from JSON. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsDoubleLike(value: unknown) { + const maybeDsDouble = value as Double; + return ( + isDsDouble(maybeDsDouble) || + (is.object(maybeDsDouble) && + is.number(maybeDsDouble.value) && + maybeDsDouble.type === 'DatastoreDouble') + ); + } + /** * Build a Datastore Int object. For long integers, a string can be provided. * @@ -96,8 +119,14 @@ export namespace entity { * const anInt = datastore.int(7); */ export class Int { + type: string; value: string; constructor(value: number | string) { + /** + * @name Int#type + * @type {string} + */ + this.type = 'DatastoreInt'; /** * @name Int#value * @type {string} @@ -117,6 +146,23 @@ export namespace entity { return value instanceof entity.Int; } + /** + * Check if a value is a Datastore Int object converted from JSON. + * + * @private + * @param {*} value + * @returns {boolean} + */ + export function isDsIntLike(value: unknown) { + const maybeDsInt = value as Int; + return ( + isDsInt(maybeDsInt) || + (is.object(maybeDsInt) && + is.string(maybeDsInt.value) && + maybeDsInt.type === 'DatastoreInt') + ); + } + export interface Coordinates { latitude: number; longitude: number; @@ -255,7 +301,11 @@ export namespace entity { if (options.path.length % 2 === 0) { const identifier = options.path.pop(); - if (is.number(identifier) || isDsInt(identifier)) { + if ( + is.number(identifier) || + isDsInt(identifier) || + isDsIntLike(identifier) + ) { this.id = (((identifier as {}) as Int).value || identifier) as string; } else if (is.string(identifier)) { this.name = identifier as string; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index d89b0845a46..8baa2dacfd5 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -59,6 +59,19 @@ describe('entity', () => { }); }); + describe('isDsDoubleLike', () => { + it('should correctly identify a Double', () => { + const double = new entity.Double(0.42); + assert.strictEqual(entity.isDsDoubleLike(double), true); + }); + + it('should correctly identify a POJO Double', () => { + const double = new entity.Double(0.42); + const pojoDouble = JSON.parse(JSON.stringify(double)); + assert.strictEqual(entity.isDsDoubleLike(pojoDouble), true); + }); + }); + describe('Int', () => { it('should store the stringified value', () => { const value = 8; @@ -85,6 +98,19 @@ describe('entity', () => { }); }); + describe('isDsIntLike', () => { + it('should correctly identify an Int', () => { + const int = new entity.Int(42); + assert.strictEqual(entity.isDsIntLike(int), true); + }); + + it('should correctly identify a POJO Int', () => { + const int = new entity.Int(42); + const pojoInt = JSON.parse(JSON.stringify(int)); + assert.strictEqual(entity.isDsIntLike(pojoInt), true); + }); + }); + describe('GeoPoint', () => { it('should store the value', () => { const value = { @@ -187,6 +213,15 @@ describe('entity', () => { const key2 = new entity.Key(key.serialized); assert.deepStrictEqual(key.serialized, key2.serialized); }); + + it('should allow re-creating a Key from the JSON serialized path', () => { + const key = new entity.Key({ + path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + }); + const toPOJO = (v: object) => JSON.parse(JSON.stringify(v)); + const key2 = new entity.Key(toPOJO(key.serialized)); + assert.deepStrictEqual(key.serialized, key2.serialized); + }); }); describe('isDsKey', () => { From c06624e99ace5dd5e5565f9e1102aeee6fdf72a3 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Mon, 4 Nov 2019 23:43:34 +0530 Subject: [PATCH 446/820] fix(types): removed duplicate declaration (#524) --- handwritten/nodejs-datastore/src/entity.ts | 1 - handwritten/nodejs-datastore/src/request.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 25f4402f9d8..8d6a1f21e0c 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -19,7 +19,6 @@ import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto} from './query'; import {PathType} from '.'; -import {Entities} from './request'; import * as Protobuf from 'protobufjs'; import * as path from 'path'; import * as appengine from '../proto/app_engine_key'; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 7b57bdbe641..adbb63f3bc0 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -38,6 +38,7 @@ import { KeyProto, ValueProto, ResponseResult, + Entities, } from './entity'; import { Query, @@ -1376,7 +1377,6 @@ export interface BooleanObject { export interface ConsistencyProtoCode { [key: string]: number; } -export type Entities = Entity | Entity[]; export interface EntityProtoReduceAccumulator { [key: string]: ValueProto; } From f9202c38b821e8e6e03f0e7b295730b5d563f66e Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 4 Nov 2019 12:44:41 -0800 Subject: [PATCH 447/820] fix: upgrade and pin to @grpc/grpc-js@0.6.9 (#526) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a67211a3f33..24b09047843 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "^0.6.0", + "@grpc/grpc-js": "0.6.9", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 0d39c2d490d98e7c83741e4403390b3dff80733a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2019 13:41:09 -0800 Subject: [PATCH 448/820] chore: release 4.5.0 (#521) --- handwritten/nodejs-datastore/CHANGELOG.md | 13 +++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 703a2fb2883..e14681c6bd5 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,19 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [4.5.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.4.1...v4.5.0) (2019-11-04) + + +### Features + +* support DSInt / DSDouble recognition from JSON ([#480](https://www.github.com/googleapis/nodejs-datastore/issues/480)) ([9f2fb3c](https://www.github.com/googleapis/nodejs-datastore/commit/9f2fb3cf6fa0672ef2bc252c0765dd84dbbc977a)) + + +### Bug Fixes + +* **types:** removed duplicate declaration ([#524](https://www.github.com/googleapis/nodejs-datastore/issues/524)) ([26cbb67](https://www.github.com/googleapis/nodejs-datastore/commit/26cbb67dd9d81900960363e20a9df545ba0c5675)) +* upgrade and pin to @grpc/grpc-js@0.6.9 ([#526](https://www.github.com/googleapis/nodejs-datastore/issues/526)) ([3b85eab](https://www.github.com/googleapis/nodejs-datastore/commit/3b85eabec858c98f16edd5f04416495f248fc68a)) + ### [4.4.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.4.0...v4.4.1) (2019-10-22) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 24b09047843..7a4e3473133 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.4.1", + "version": "4.5.0", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index f90c72e1f40..207010921b9 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.4.1", + "@google-cloud/datastore": "^4.5.0", "sinon": "^7.3.2" }, "devDependencies": { From 492e78acd200ad1ad6354c80e091daec15bc65c0 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 5 Nov 2019 11:36:20 -0800 Subject: [PATCH 449/820] chore: exclude gapic files from code coverage (#528) --- handwritten/nodejs-datastore/.nycrc | 1 - handwritten/nodejs-datastore/synth.metadata | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index 23e322204ec..367688844eb 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -10,7 +10,6 @@ "**/docs", "**/samples", "**/scripts", - "**/src/**/v*/**/*.js", "**/protos", "**/test", ".jsdoc.js", diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index dcb45e45a9c..08ef2c37377 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,26 +1,26 @@ { - "updateTime": "2019-10-01T11:16:26.606293Z", + "updateTime": "2019-11-05T12:12:06.663433Z", "sources": [ { "generator": { "name": "artman", - "version": "0.37.1", - "dockerImage": "googleapis/artman@sha256:6068f67900a3f0bdece596b97bda8fc70406ca0e137a941f4c81d3217c994a80" + "version": "0.41.0", + "dockerImage": "googleapis/artman@sha256:75b38a3b073a7b243545f2332463096624c802bb1e56b8cb6f22ba1ecd325fa9" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "ce3c574d1266026cebea3a893247790bd68191c2", - "internalRef": "272147209" + "sha": "8c6569ced063c08a48272de2e887860d0c40d388", + "internalRef": "278552094" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.5.2" + "version": "2019.10.17" } } ], From 2b746fe21489afb81224014918c8a7addf26fb9a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 5 Nov 2019 22:59:44 +0200 Subject: [PATCH 450/820] fix(deps): update dependency @grpc/grpc-js to v0.6.10 (#527) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7a4e3473133..2f34e939999 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.9", + "@grpc/grpc-js": "0.6.10", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 3a68592d09274bb99c0035f53ad9b48b2f4d3eee Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 7 Nov 2019 21:46:27 +0200 Subject: [PATCH 451/820] chore(deps): update dependency typescript to ~3.7.0 (#530) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2f34e939999..bdcc4b28c2f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -90,6 +90,6 @@ "proxyquire": "^2.1.0", "sinon": "^7.3.2", "tmp": "0.1.0", - "typescript": "~3.6.0" + "typescript": "~3.7.0" } } From b663902b5bd87afb06e6d12715888ec72f4b1311 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2019 20:06:34 -0800 Subject: [PATCH 452/820] chore: release 4.5.1 (#529) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index e14681c6bd5..2126f79ddc3 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.5.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.0...v4.5.1) (2019-11-07) + + +### Bug Fixes + +* **deps:** update dependency @grpc/grpc-js to v0.6.10 ([#527](https://www.github.com/googleapis/nodejs-datastore/issues/527)) ([beb3bcc](https://www.github.com/googleapis/nodejs-datastore/commit/beb3bcc92fd6f3a09d970cb4d66cbb04dae06353)) + ## [4.5.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.4.1...v4.5.0) (2019-11-04) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index bdcc4b28c2f..c3558131f85 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.5.0", + "version": "4.5.1", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 207010921b9..d24a53f73d1 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.5.0", + "@google-cloud/datastore": "^4.5.1", "sinon": "^7.3.2" }, "devDependencies": { From cc73014b0af2239d7f868d303380725f04cfc1a2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 8 Nov 2019 17:30:06 +0100 Subject: [PATCH 453/820] fix(deps): update dependency @grpc/grpc-js to v0.6.11 (#532) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c3558131f85..0d7d93027a2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.10", + "@grpc/grpc-js": "0.6.11", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 2b64bcf5eac63045316ee6c39d688ac765acbde5 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2019 09:26:04 -0800 Subject: [PATCH 454/820] chore: release 4.5.2 (#533) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 2126f79ddc3..5c7f135f8cb 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [4.5.2](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.1...v4.5.2) (2019-11-08) + + +### Bug Fixes + +* **deps:** update dependency @grpc/grpc-js to v0.6.11 ([#532](https://www.github.com/googleapis/nodejs-datastore/issues/532)) ([95cded0](https://www.github.com/googleapis/nodejs-datastore/commit/95cded0d9ec365dc091bb0182ea8fe142d93cd64)) + ### [4.5.1](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.0...v4.5.1) (2019-11-07) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0d7d93027a2..829fe1ce036 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.5.1", + "version": "4.5.2", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d24a53f73d1..d4002d2cfaa 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.5.1", + "@google-cloud/datastore": "^4.5.2", "sinon": "^7.3.2" }, "devDependencies": { From e121631d807ba844c84b42b42c3fa25137c06d89 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Sat, 9 Nov 2019 15:47:11 -0800 Subject: [PATCH 455/820] refactor: run prettier (#534) --- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- handwritten/nodejs-datastore/system-test/datastore.ts | 10 ++++++++-- handwritten/nodejs-datastore/test/request.ts | 8 +++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 08ef2c37377..fdd85038269 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-11-05T12:12:06.663433Z", + "updateTime": "2019-11-09T12:13:20.338243Z", "sources": [ { "generator": { "name": "artman", - "version": "0.41.0", - "dockerImage": "googleapis/artman@sha256:75b38a3b073a7b243545f2332463096624c802bb1e56b8cb6f22ba1ecd325fa9" + "version": "0.41.1", + "dockerImage": "googleapis/artman@sha256:545c758c76c3f779037aa259023ec3d1ef2d57d2c8cd00a222cb187d63ceac5e" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "8c6569ced063c08a48272de2e887860d0c40d388", - "internalRef": "278552094" + "sha": "34e661f58d58fa57da8ed113a3d8bb3de26b307d", + "internalRef": "279417429" } }, { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 63db932a60e..d97d7fd72b8 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -385,7 +385,10 @@ describe('Datastore', () => { }; const key1 = datastore.key('Post'); const key2 = datastore.key('Post'); - await datastore.save([{key: key1, data: post}, {key: key2, data: post2}]); + await datastore.save([ + {key: key1, data: post}, + {key: key2, data: post2}, + ]); const [entities] = await datastore.get([key1, key2]); assert.strictEqual(entities.length, 2); await datastore.delete([key1, key2]); @@ -396,7 +399,10 @@ describe('Datastore', () => { const key2 = datastore.key('Post'); datastore.save( - [{key: key1, data: post}, {key: key2, data: post}], + [ + {key: key1, data: post}, + {key: key2, data: post}, + ], err => { assert.ifError(err); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index f2037228371..17d5ee05cca 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -1223,7 +1223,13 @@ describe('Request', () => { callback(); }; - request.save([{key, data: {k: 'v'}}, {key, data: {k: 'v'}}], done); + request.save( + [ + {key, data: {k: 'v'}}, + {key, data: {k: 'v'}}, + ], + done + ); }); it('should allow customization of GAX options', done => { From 722b75fb13596cd6641a5e56456bd0d8a74a6462 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Wed, 13 Nov 2019 11:46:04 -0800 Subject: [PATCH 456/820] fix(docs): snippets are now replaced in jsdoc comments (#535) --- handwritten/nodejs-datastore/.jsdoc.js | 3 ++- handwritten/nodejs-datastore/package.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index b41aff5d4ef..5bbf2b4a534 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -26,7 +26,8 @@ module.exports = { destination: './docs/' }, plugins: [ - 'plugins/markdown' + 'plugins/markdown', + 'jsdoc-region-tag' ], source: { excludePattern: '(^|\\/|\\\\)[._]', diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 829fe1ce036..5faf6f03183 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,6 +80,7 @@ "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", "jsdoc-fresh": "^1.0.1", + "jsdoc-region-tag": "^1.0.2", "linkinator": "^1.5.0", "mocha": "^6.1.4", "mv": "^2.1.1", From df9948c264015d0e6d6afe645f867079d270c49a Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Thu, 14 Nov 2019 12:38:25 -0500 Subject: [PATCH 457/820] feat!: throw error with out of bounds integer values, optionally wrap into DsInt or provide a custom 'integerValue' type cast options #516 --- handwritten/nodejs-datastore/src/entity.ts | 158 +++++- handwritten/nodejs-datastore/src/query.ts | 14 + handwritten/nodejs-datastore/src/request.ts | 28 +- handwritten/nodejs-datastore/test/entity.ts | 534 +++++++++++++++++-- handwritten/nodejs-datastore/test/request.ts | 227 +++++++- 5 files changed, 894 insertions(+), 67 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 8d6a1f21e0c..8e6e2742a2e 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -17,7 +17,7 @@ import arrify = require('arrify'); import * as extend from 'extend'; import * as is from 'is'; -import {Query, QueryProto} from './query'; +import {Query, QueryProto, IntegerTypeCastOptions} from './query'; import {PathType} from '.'; import * as Protobuf from 'protobufjs'; import * as path from 'path'; @@ -111,16 +111,36 @@ export namespace entity { * * @class * @param {number|string} value The integer value. + * @param {object} [typeCastOptions] Configuration to convert + * values of `integerValue` type to a custom value. Must provide an + * `integerTypeCastFunction` to handle `integerValue` conversion. + * @param {function} typeCastOptions.integerTypeCastFunction A custom user + * provided function to convert `integerValue`. + * @param {sting|string[]} [typeCastOptions.properties] `Entity` property + * names to be converted using `integerTypeCastFunction`. * * @example * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const anInt = datastore.int(7); */ - export class Int { + export class Int extends Number { type: string; value: string; - constructor(value: number | string) { + typeCastFunction?: Function; + typeCastProperties?: string[]; + private _entityPropertyName: string | undefined; + constructor( + value: number | string | ValueProto, + typeCastOptions?: IntegerTypeCastOptions + ) { + super(typeof value === 'object' ? value.integerValue : value); + this._entityPropertyName = + typeof value === 'object' ? value.propertyName : undefined; + this.value = + typeof value === 'object' + ? value.integerValue.toString() + : value.toString(); /** * @name Int#type * @type {string} @@ -130,7 +150,46 @@ export namespace entity { * @name Int#value * @type {string} */ - this.value = value.toString(); + if (typeCastOptions) { + this.typeCastFunction = typeCastOptions.integerTypeCastFunction; + if (typeof typeCastOptions.integerTypeCastFunction !== 'function') { + throw new Error( + `integerTypeCastFunction is not a function or was not provided.` + ); + } + + this.typeCastProperties = typeCastOptions.properties + ? arrify(typeCastOptions.properties) + : undefined; + } + } + // tslint:disable-next-line no-any + valueOf(): any { + let shouldCustomCast = this.typeCastFunction ? true : false; + if ( + this.typeCastProperties && + !this.typeCastProperties.includes(this._entityPropertyName!) + ) { + shouldCustomCast = false; + } + + if (shouldCustomCast) { + try { + return this.typeCastFunction!(this.value); + } catch (error) { + error.message = `integerTypeCastFunction threw an error:\n\n - ${error.message}`; + throw error; + } + } else { + return decodeIntegerValue({ + integerValue: this.value, + propertyName: this._entityPropertyName, + }); + } + } + + toJSON(): Json { + return {type: this.type, value: this.value}; } } @@ -376,11 +435,52 @@ export namespace entity { return value instanceof entity.Key; } + /** + * Convert a protobuf `integerValue`. + * + * @private + * @param {object} value The `integerValue` to convert. + */ + function decodeIntegerValue(value: ValueProto) { + const num = Number(value.integerValue); + if (!Number.isSafeInteger(num)) { + throw new Error( + 'We attempted to return all of the numeric values, but ' + + (value.propertyName ? value.propertyName + ' ' : '') + + 'value ' + + value.integerValue + + " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + + "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + + "'options.wrapNumbers' as\n" + + '{\n' + + ' integerTypeCastFunction: provide \n' + + ' properties: optionally specify property name(s) to be cutom casted' + + '}\n' + ); + } + return num; + } + + /** + * @typedef {object} IntegerTypeCastOptions Configuration to convert + * values of `integerValue` type to a custom value. Must provide an + * `integerTypeCastFunction` to handle `integerValue` conversion. + * @property {function} integerTypeCastFunction A custom user + * provided function to convert `integerValue`. + * @property {string | string[]} [properties] `Entity` property + * names to be converted using `integerTypeCastFunction`. + */ /** * Convert a protobuf Value message to its native value. * * @private * @param {object} valueProto The protobuf Value message to convert. + * @param {boolean | IntegerTypeCastOptions} [wrapNumbers=false] Wrap values of integerValue type in + * {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * @returns {*} * * @example @@ -399,13 +499,19 @@ export namespace entity { * }); * // */ - export function decodeValueProto(valueProto: ValueProto) { + export function decodeValueProto( + valueProto: ValueProto, + wrapNumbers?: boolean | IntegerTypeCastOptions + ) { const valueType = valueProto.valueType!; const value = valueProto[valueType]; switch (valueType) { case 'arrayValue': { - return value.values.map(entity.decodeValueProto); + // tslint:disable-next-line no-any + return value.values.map((val: any) => + entity.decodeValueProto(val, wrapNumbers) + ); } case 'blobValue': { @@ -421,11 +527,15 @@ export namespace entity { } case 'integerValue': { - return Number(value); + return wrapNumbers + ? typeof wrapNumbers === 'object' + ? new entity.Int(valueProto, wrapNumbers).valueOf() + : new entity.Int(valueProto, undefined) + : decodeIntegerValue(valueProto); } case 'entityValue': { - return entity.entityFromEntityProto(value); + return entity.entityFromEntityProto(value, wrapNumbers); } case 'keyValue': { @@ -554,6 +664,12 @@ export namespace entity { * * @private * @param {object} entityProto The protocol entity object to convert. + * @param {boolean | IntegerTypeCastOptions} [wrapNumbers=false] Wrap values of integerValue type in + * {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * @returns {object} * * @example @@ -574,7 +690,10 @@ export namespace entity { * // } */ // tslint:disable-next-line no-any - export function entityFromEntityProto(entityProto: EntityProto): any { + export function entityFromEntityProto( + entityProto: EntityProto, + wrapNumbers?: boolean | IntegerTypeCastOptions + ) { // tslint:disable-next-line no-any const entityObject: any = {}; const properties = entityProto.properties || {}; @@ -582,7 +701,7 @@ export namespace entity { // tslint:disable-next-line forin for (const property in properties) { const value = properties[property]; - entityObject[property] = entity.decodeValueProto(value); + entityObject[property] = entity.decodeValueProto(value, wrapNumbers); } return entityObject; @@ -768,7 +887,12 @@ export namespace entity { * @param {object[]} results The response array. * @param {object} results.entity An entity object. * @param {object} results.entity.key The entity's key. - * @returns {object[]} + * @param {boolean | IntegerTypeCastOptions} [wrapNumbers=false] Wrap values of integerValue type in + * {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * * @example * request_('runQuery', {}, (err, response) => { @@ -782,9 +906,12 @@ export namespace entity { * // * }); */ - export function formatArray(results: ResponseResult[]) { + export function formatArray( + results: ResponseResult[], + wrapNumbers?: boolean | IntegerTypeCastOptions + ) { return results.map(result => { - const ent = entity.entityFromEntityProto(result.entity!); + const ent = entity.entityFromEntityProto(result.entity!, wrapNumbers); ent[entity.KEY_SYMBOL] = entity.keyFromKeyProto(result.entity!.key!); return ent; }); @@ -1274,6 +1401,7 @@ export interface ValueProto { values?: ValueProto[]; // tslint:disable-next-line no-any value?: any; + propertyName?: string; } export interface EntityProto { @@ -1305,3 +1433,7 @@ export interface EntityObject { data: {[k: string]: Entity}; excludeFromIndexes: string[]; } + +export interface Json { + [field: string]: string; +} diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 521f9d0a0cd..38147176f76 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -397,6 +397,14 @@ class Query { * If not specified, default values are chosen by Datastore for the * operation. Learn more about strong and eventual consistency * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). + * @param {object} [options.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {boolean | IntegerTypeCastOptions} [options.wrapNumbers=false] + * Wrap values of integerValue type in {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * @param {function} [callback] The callback function. If omitted, a readable * stream instance is returned. * @param {?error} callback.err An error returned while making this request @@ -517,9 +525,15 @@ export interface QueryProto { */ export {Query}; +export interface IntegerTypeCastOptions { + integerTypeCastFunction: Function; + properties?: string | string[]; +} + export interface RunQueryOptions { consistency?: 'strong' | 'eventual'; gaxOptions?: CallOptions; + wrapNumbers?: boolean | IntegerTypeCastOptions; } export interface RunQueryCallback { diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index adbb63f3bc0..c06f50cf6aa 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -290,7 +290,10 @@ class DatastoreRequest { return; } - const entities = entity.formatArray(resp!.found! as ResponseResult[]); + const entities = entity.formatArray( + resp!.found! as ResponseResult[], + options.wrapNumbers + ); const nextKeys = (resp!.deferred || []) .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); @@ -432,6 +435,12 @@ class DatastoreRequest { * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). * @param {object} [options.gaxOptions] Request configuration options, outlined * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {boolean | IntegerTypeCastOptions} [options.wrapNumbers=false] + * Wrap values of integerValue type in {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * @param {function} callback The callback function. * @param {?error} callback.err An error returned while making this request * @param {object|object[]} callback.entity The entity object(s) which match @@ -571,7 +580,6 @@ class DatastoreRequest { * that uses the end cursor from the previous query as the starting cursor for * the next query. You can pass that object back to this method to see if more * results exist. - * * @param {Query} query Query object. * @param {object} [options] Optional configuration. * @param {string} [options.consistency] Specify either `strong` or `eventual`. @@ -580,6 +588,12 @@ class DatastoreRequest { * [here](https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore). * @param {object} [options.gaxOptions] Request configuration options, outlined * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {boolean | IntegerTypeCastOptions} [options.wrapNumbers=false] + * Wrap values of integerValue type in {@link Datastore#Int} objects. + * If a `boolean`, this will wrap values in {@link Datastore#Int} objects. + * If an `object`, this will return a value returned by + * `wrapNumbers.integerTypeCastFunction`. + * Please see {@link IntegerTypeCastOptions} for options descriptions. * @param {function} [callback] The callback function. If omitted, a readable * stream instance is returned. * @param {?error} callback.err An error returned while making this request @@ -764,7 +778,10 @@ class DatastoreRequest { let entities: Entity[] = []; if (resp.batch.entityResults) { - entities = entity.formatArray(resp.batch.entityResults); + entities = entity.formatArray( + resp.batch.entityResults, + options.wrapNumbers + ); } // Emit each result right away, then get the rest if necessary. @@ -1400,10 +1417,7 @@ export interface AllocateIdsOptions { allocations?: number; gaxOptions?: CallOptions; } -export interface CreateReadStreamOptions { - consistency?: string; - gaxOptions?: CallOptions; -} +export interface CreateReadStreamOptions extends RunQueryOptions {} export interface GetCallback { (err?: Error | null, entity?: Entities): void; } diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 8baa2dacfd5..beb5f72e712 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -16,8 +16,11 @@ import * as assert from 'assert'; import * as extend from 'extend'; +import * as sinon from 'sinon'; import {Datastore} from '../src'; -import {Entity, entity} from '../src/entity'; +import {Entity, entity, ValueProto} from '../src/entity'; +import {IntegerTypeCastOptions} from '../src/query'; +import {AnyARecord} from 'dns'; describe('entity', () => { let entity: Entity; @@ -79,6 +82,151 @@ describe('entity', () => { const int = new entity.Int(value); assert.strictEqual(int.value, value.toString()); }); + + it('should store the stringified value from valueProto object', () => { + const valueProto = { + valueType: 'integerValue', + integerValue: 8, + }; + const int = new entity.Int(valueProto); + assert.strictEqual(int.value, valueProto.integerValue.toString()); + }); + + describe('valueOf', () => { + let valueProto: {}; + beforeEach(() => { + valueProto = { + valueType: 'integerValue', + integerValue: 8, + }; + }); + + describe('integerTypeCastFunction is not provided', () => { + const expectedError = (opts: { + integerValue?: number; + propertyName?: string; + }) => { + return new Error( + 'We attempted to return all of the numeric values, but ' + + (opts.propertyName ? opts.propertyName + ' ' : '') + + 'value ' + + opts.integerValue + + " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + + "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + + "'options.wrapNumbers' as\n" + + '{\n' + + ' integerTypeCastFunction: provide \n' + + ' properties: optionally specify property name(s) to be cutom casted' + + '}\n' + ); + }; + it('should throw if integerTypeCastOptions is provided but integerTypeCastFunction is not', () => { + assert.throws( + () => new entity.Int(valueProto, {}).valueOf(), + /integerTypeCastFunction is not a function or was not provided\./ + ); + }); + + it('should throw if integer value is outside of bounds passing objects', () => { + const largeIntegerValue = Number.MAX_SAFE_INTEGER + 1; + const smallIntegerValue = Number.MIN_SAFE_INTEGER - 1; + + const valueProto = { + integerValue: largeIntegerValue, + propertyName: 'phoneNumber', + }; + + const valueProto2 = { + integerValue: smallIntegerValue, + propertyName: 'phoneNumber', + }; + + assert.throws(() => { + new entity.Int(valueProto).valueOf(); + }, expectedError(valueProto)); + + assert.throws(() => { + new entity.Int(valueProto2).valueOf(); + }, expectedError(valueProto2)); + }); + + it('should throw if integer value is outside of bounds passing strings or Numbers', () => { + const largeIntegerValue = Number.MAX_SAFE_INTEGER + 1; + const smallIntegerValue = Number.MIN_SAFE_INTEGER - 1; + + // should throw when Number is passed + assert.throws(() => { + new entity.Int(largeIntegerValue).valueOf(); + }, expectedError({integerValue: largeIntegerValue})); + + // should throw when string is passed + assert.throws(() => { + new entity.Int(smallIntegerValue.toString()).valueOf(); + }, expectedError({integerValue: smallIntegerValue})); + }); + + it('should not auto throw on initialization', () => { + const largeIntegerValue = Number.MAX_SAFE_INTEGER + 1; + + const valueProto = { + valueType: 'integerValue', + integerValue: largeIntegerValue, + }; + + assert.doesNotThrow(() => { + const a = new entity.Int(valueProto); + }, new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`)); + }); + }); + + describe('integerTypeCastFunction is provided', () => { + it('should throw if integerTypeCastFunction is not a function', () => { + assert.throws( + () => + new entity.Int(valueProto, { + integerTypeCastFunction: {}, + }).valueOf(), + /integerTypeCastFunction is not a function or was not provided\./ + ); + }); + + it('should custom-cast integerValue when integerTypeCastFunction is provided', () => { + const stub = sinon.stub(); + + new entity.Int(valueProto, { + integerTypeCastFunction: stub, + }).valueOf(); + assert.ok(stub.calledOnce); + }); + + it('should custom-cast integerValue if `properties` specified by user', () => { + const stub = sinon.stub(); + Object.assign(valueProto, { + propertyName: 'thisValue', + }); + + new entity.Int(valueProto, { + integerTypeCastFunction: stub, + properties: 'thisValue', + }).valueOf(); + assert.ok(stub.calledOnce); + }); + + it('should not custom-cast integerValue if `properties` not specified by user', () => { + const stub = sinon.stub(); + + Object.assign(valueProto, { + propertyName: 'thisValue', + }); + + new entity.Int(valueProto, { + integerTypeCastFunction: stub, + properties: 'thatValue', + }).valueOf(); + assert.ok(stub.notCalled); + }); + }); + }); }); describe('isDsInt', () => { @@ -199,9 +347,9 @@ describe('entity', () => { 'ParentKind', 'name', 'Kind', - new entity.Int(1).valueOf(), + new entity.Int(1), 'SubKind', - new entity.Int('1').valueOf(), + new entity.Int('1'), ], }); }); @@ -237,9 +385,14 @@ describe('entity', () => { }); describe('decodeValueProto', () => { - it('should decode arrays', () => { - const expectedValue = [{}]; - + describe('arrays', () => { + const intValue = 8; + const expectedValue = [ + { + valueType: 'integerValue', + integerValue: intValue, + }, + ]; const valueProto = { valueType: 'arrayValue', arrayValue: { @@ -247,23 +400,259 @@ describe('entity', () => { }, }; - let run = false; + it('should decode arrays', () => { + const expectedValue = [{}]; - const decodeValueProto = entity.decodeValueProto; - entity.decodeValueProto = (valueProto: {}) => { - if (!run) { - run = true; - return decodeValueProto(valueProto); - } + const valueProto = { + valueType: 'arrayValue', + arrayValue: { + values: expectedValue, + }, + }; + + let run = false; + + const decodeValueProto = entity.decodeValueProto; + entity.decodeValueProto = (valueProto: {}) => { + if (!run) { + run = true; + return decodeValueProto(valueProto); + } + + assert.strictEqual(valueProto, expectedValue[0]); + return valueProto; + }; + + assert.deepStrictEqual( + entity.decodeValueProto(valueProto), + expectedValue + ); + }); + + it('should not wrap numbers by default', () => { + const decodeValueProto = entity.decodeValueProto; + entity.decodeValueProto = ( + valueProto: {}, + wrapNumbers?: boolean | {} + ) => { + assert.strictEqual(wrapNumbers, undefined); + + return decodeValueProto(valueProto, wrapNumbers); + }; + + assert.deepStrictEqual(entity.decodeValueProto(valueProto), [intValue]); + }); + + it('should wrap numbers with an option', () => { + const wrapNumbersBoolean = true; + const wrapNumbersObject = {}; + const decodeValueProto = entity.decodeValueProto; + let run = false; + entity.decodeValueProto = ( + valueProto: {}, + wrapNumbers?: boolean | {} + ) => { + if (!run) { + run = true; + return decodeValueProto(valueProto, wrapNumbers); + } + + // verify that `wrapNumbers`param is passed (boolean or object) + assert.ok(wrapNumbers); + return valueProto; + }; + + assert.deepStrictEqual( + entity.decodeValueProto(valueProto, wrapNumbersBoolean), + expectedValue + ); + + // reset the run flag. + run = false; + assert.deepStrictEqual( + entity.decodeValueProto(valueProto, wrapNumbersObject), + expectedValue + ); + }); + }); + + describe('entities', () => { + it('should decode entities', () => { + const expectedValue = {}; + + const valueProto = { + valueType: 'entityValue', + entityValue: expectedValue, + }; + + entity.entityFromEntityProto = (entityProto: {}) => { + assert.strictEqual(entityProto, expectedValue); + return expectedValue; + }; + + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should not wrap numbers by default', () => { + const expectedValue = {}; + + const valueProto = { + valueType: 'entityValue', + entityValue: expectedValue, + }; + + entity.entityFromEntityProto = ( + entityProto: {}, + wrapNumbers?: boolean | {} + ) => { + assert.strictEqual(wrapNumbers, undefined); + assert.strictEqual(entityProto, expectedValue); + return expectedValue; + }; - assert.strictEqual(valueProto, expectedValue[0]); - return valueProto; + assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + }); + + it('should wrap numbers with an option', () => { + const expectedValue = {}; + const wrapNumbersBoolean = true; + const wrapNumbersObject = {}; + + const valueProto = { + valueType: 'entityValue', + entityValue: expectedValue, + }; + + entity.entityFromEntityProto = ( + entityProto: {}, + wrapNumbers?: boolean | {} + ) => { + // verify that `wrapNumbers`param is passed (boolean or object) + assert.ok(wrapNumbers); + assert.strictEqual(entityProto, expectedValue); + return expectedValue; + }; + + assert.strictEqual( + entity.decodeValueProto(valueProto, wrapNumbersBoolean), + expectedValue + ); + + assert.strictEqual( + entity.decodeValueProto(valueProto, wrapNumbersObject), + expectedValue + ); + }); + }); + + describe('integerValues', () => { + const valueProto = { + valueType: 'integerValue', + integerValue: 8, }; - assert.deepStrictEqual( - entity.decodeValueProto(valueProto), - expectedValue - ); + describe('default `wrapNumbers: undefined`', () => { + it('should not wrap ints by default', () => { + assert.strictEqual( + typeof entity.decodeValueProto(valueProto), + 'number' + ); + }); + + it('should throw if integer value is outside of bounds', () => { + const expectedError = (opts: { + integerValue: number; + propertyName: string; + }) => { + return new Error( + 'We attempted to return all of the numeric values, but ' + + (opts.propertyName ? opts.propertyName + ' ' : '') + + 'value ' + + opts.integerValue + + " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + + "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + + "'options.wrapNumbers' as\n" + + '{\n' + + ' integerTypeCastFunction: provide \n' + + ' properties: optionally specify property name(s) to be cutom casted' + + '}\n' + ); + }; + const largeIntegerValue = Number.MAX_SAFE_INTEGER + 1; + const smallIntegerValue = Number.MIN_SAFE_INTEGER - 1; + + const valueProto = { + valueType: 'integerValue', + integerValue: largeIntegerValue, + propertyName: 'phoneNumber', + }; + + const valueProto2 = { + valueType: 'integerValue', + integerValue: smallIntegerValue, + propertyName: 'phoneNumber', + }; + + assert.throws(() => { + entity.decodeValueProto(valueProto); + }, expectedError(valueProto)); + + assert.throws(() => { + entity.decodeValueProto(valueProto2); + }, expectedError(valueProto2)); + }); + }); + + describe('should wrap ints with option', () => { + it('should wrap ints with wrapNumbers as boolean', () => { + const wrapNumbers = true; + const stub = sinon.spy(entity, 'Int'); + + entity.decodeValueProto(valueProto, wrapNumbers); + assert.strictEqual(stub.called, true); + }); + + it('should wrap ints with wrapNumbers as object', () => { + const wrapNumbers = {integerTypeCastFunction: () => {}}; + const stub = sinon.spy(entity, 'Int'); + + entity.decodeValueProto(valueProto, wrapNumbers); + assert.strictEqual(stub.called, true); + }); + + it('should call #valueOf if integerTypeCastFunction is provided', () => { + Object.assign(valueProto, {integerValue: Number.MAX_SAFE_INTEGER}); + const takeFirstTen = sinon + .stub() + .callsFake((value: string) => value.toString().substr(0, 10)); + const wrapNumbers = {integerTypeCastFunction: takeFirstTen}; + + assert.strictEqual( + entity.decodeValueProto(valueProto, wrapNumbers), + takeFirstTen(Number.MAX_SAFE_INTEGER) + ); + assert.strictEqual(takeFirstTen.called, true); + }); + + it('should propagate error from typeCastfunction', () => { + const errorMessage = 'some error from type casting function'; + const error = new Error(errorMessage); + const stub = sinon.stub().throws(error); + assert.throws( + () => + entity + .decodeValueProto(valueProto, { + integerTypeCastFunction: stub, + }) + .valueOf(), + (err: Error) => { + return new RegExp( + `integerTypeCastFunction threw an error:\n\n - ${errorMessage}` + ).test(err.message); + } + ); + }); + }); }); it('should decode blobs', () => { @@ -303,33 +692,6 @@ describe('entity', () => { assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); }); - it('should decode ints', () => { - const expectedValue = 8; - - const valueProto = { - valueType: 'integerValue', - integerValue: expectedValue, - }; - - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); - }); - - it('should decode entities', () => { - const expectedValue = {}; - - const valueProto = { - valueType: 'entityValue', - entityValue: expectedValue, - }; - - entity.entityFromEntityProto = (entityProto: {}) => { - assert.strictEqual(entityProto, expectedValue); - return expectedValue; - }; - - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); - }); - it('should decode keys', () => { const expectedValue = {}; @@ -623,6 +985,44 @@ describe('entity', () => { expectedEntity ); }); + + describe('should pass `wrapNumbers` to decodeValueProto', () => { + const entityProto = {properties: {number: {}}}; + let decodeValueProtoStub: sinon.SinonStub; + let wrapNumbers: boolean | IntegerTypeCastOptions | undefined; + + beforeEach(() => { + decodeValueProtoStub = sinon.stub(entity, 'decodeValueProto'); + }); + + afterEach(() => { + decodeValueProtoStub.restore(); + }); + + it('should pass `wrapNumbers` to decodeValueProto as undefined by default', () => { + entity.entityFromEntityProto(entityProto); + wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbers, undefined); + }); + + it('should pass `wrapNumbers` to decodeValueProto as boolean', () => { + entity.entityFromEntityProto(entityProto, true); + wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; + assert.strictEqual(typeof wrapNumbers, 'boolean'); + }); + + it('should pass `wrapNumbers` to decodeValueProto as IntegerTypeCastOptions', () => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + entity.entityFromEntityProto(entityProto, integerTypeCastOptions); + wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbers, integerTypeCastOptions); + assert.deepStrictEqual(wrapNumbers, integerTypeCastOptions); + }); + }); }); describe('entityToEntityProto', () => { @@ -1110,6 +1510,48 @@ describe('entity', () => { assert.deepStrictEqual(ent, expectedResults); assert.strictEqual(ent[entity.KEY_SYMBOL], key); }); + + describe('should pass `wrapNumbers` to entityFromEntityProto', () => { + const results = [{entity: {}}]; + // tslint:disable-next-line no-any + let entityFromEntityProtoStub: any; + let wrapNumbers: boolean | IntegerTypeCastOptions | undefined; + + beforeEach(() => { + entityFromEntityProtoStub = sinon + .stub(entity, 'entityFromEntityProto') + .callsFake(() => ({})); + sinon.stub(entity, 'keyFromKeyProto'); + }); + + afterEach(() => { + entityFromEntityProtoStub.restore(); + }); + + it('should pass `wrapNumbers` to entityFromEntityProto as undefined by default', () => { + entity.formatArray(results); + wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbers, undefined); + }); + + it('should pass `wrapNumbers` to entityFromEntityProto as boolean', () => { + entity.formatArray(results, true); + wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; + assert.strictEqual(typeof wrapNumbers, 'boolean'); + }); + + it('should pass `wrapNumbers` to entityFromEntityProto as IntegerTypeCastOptions', () => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + entity.formatArray(results, integerTypeCastOptions); + wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbers, integerTypeCastOptions); + assert.deepStrictEqual(wrapNumbers, integerTypeCastOptions); + }); + }); }); describe('isKeyComplete', () => { diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 17d5ee05cca..eb67aa2dbd0 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -26,7 +26,7 @@ import {Transform} from 'stream'; import {google} from '../proto/datastore'; import * as ds from '../src'; import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; -import {Query, QueryProto} from '../src/query.js'; +import {IntegerTypeCastOptions, Query, QueryProto} from '../src/query.js'; import { AllocateIdsResponse, RequestConfig, @@ -456,6 +456,69 @@ describe('Request', () => { .emit('reading'); }); + describe('should pass `wrapNumbers` to formatArray', () => { + let wrapNumbersOpts: boolean | IntegerTypeCastOptions | undefined; + let formtArrayStub: Any; + + beforeEach(() => { + formtArrayStub = sandbox + .stub(entity, 'formatArray') + .callsFake(arr => { + assert.strictEqual(arr, apiResponse.found); + return arr; + }); + }); + + afterEach(() => { + formtArrayStub.restore(); + }); + + it('should pass `wrapNumbers` to formatArray as undefined by default', done => { + request + .createReadStream(key) + .on('error', done) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formtArrayStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbersOpts, undefined); + done(); + }); + }); + + it('should pass `wrapNumbers` to formatArray as bolean', done => { + request + .createReadStream(key, {wrapNumbers: true}) + .on('error', done) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formtArrayStub.getCall(0).args[1]; + assert.strictEqual(typeof wrapNumbersOpts, 'boolean'); + done(); + }); + }); + + it('should pass `wrapNumbers` to formatArray as IntegerTypeCastOptions', done => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + request + .createReadStream(key, {wrapNumbers: integerTypeCastOptions}) + .on('error', done) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formtArrayStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbersOpts, integerTypeCastOptions); + assert.deepStrictEqual(wrapNumbersOpts, integerTypeCastOptions); + done(); + }); + }); + }); + it('should continue looking for deferred results', done => { let numTimesCalled = 0; @@ -646,6 +709,61 @@ describe('Request', () => { done(); }); }); + + describe('should pass `wrapNumbers` to createReadStream', () => { + it('should pass `wrapNumbers` to createReadStream as undefined by default', done => { + request.get(keys, (err: Error) => { + assert.ifError(err); + + const createReadStreamOptions = request.createReadStream.getCall(0) + .args[1]; + assert.strictEqual(createReadStreamOptions.wrapNumbers, undefined); + done(); + }); + }); + + it('should pass `wrapNumbers` to createReadStream as boolean', done => { + request.get(keys, {wrapNumbers: true}, (err: Error) => { + assert.ifError(err); + + const createReadStreamOptions = request.createReadStream.getCall(0) + .args[1]; + assert.strictEqual( + typeof createReadStreamOptions.wrapNumbers, + 'boolean' + ); + done(); + }); + }); + + it('should pass `wrapNumbers` to createReadStream as IntegerTypeCastOptions', done => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + request.get( + keys, + {wrapNumbers: integerTypeCastOptions}, + (err: Error) => { + assert.ifError(err); + + const createReadStreamOptions = request.createReadStream.getCall( + 0 + ).args[1]; + assert.strictEqual( + createReadStreamOptions.wrapNumbers, + integerTypeCastOptions + ); + assert.deepStrictEqual( + createReadStreamOptions.wrapNumbers, + integerTypeCastOptions + ); + done(); + } + ); + }); + }); }); describe('error', () => { @@ -884,6 +1002,65 @@ describe('Request', () => { }); }); + describe('should pass `wrapNumbers` to formatArray', () => { + let wrapNumbersOpts: boolean | IntegerTypeCastOptions | undefined; + + beforeEach(() => { + sandbox.stub(entity, 'queryToQueryProto'); + formatArrayStub.restore(); + formatArrayStub = sandbox + .stub(entity, 'formatArray') + .callsFake((array, wrapNumbers) => { + return array; + }); + }); + + it('should pass `wrapNumbers` to formatArray as undefined by default', done => { + request + .runQueryStream({}) + .on('error', assert.ifError) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formatArrayStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbersOpts, undefined); + done(); + }); + }); + + it('should pass `wrapNumbers` to formatArray as boolean', done => { + request + .runQueryStream({}, {wrapNumbers: true}) + .on('error', assert.ifError) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formatArrayStub.getCall(0).args[1]; + assert.strictEqual(typeof wrapNumbersOpts, 'boolean'); + done(); + }); + }); + + it('should pass `wrapNumbers` to formatArray as IntegerTypeCastOptions', done => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + request + .runQueryStream({}, {wrapNumbers: integerTypeCastOptions}) + .on('error', assert.ifError) + .resume(); + + setImmediate(() => { + wrapNumbersOpts = formatArrayStub.getCall(0).args[1]; + assert.strictEqual(wrapNumbersOpts, integerTypeCastOptions); + assert.deepStrictEqual(wrapNumbersOpts, integerTypeCastOptions); + done(); + }); + }); + }); + it('should re-run query if not finished', done => { const query = { limitVal: 1, @@ -1125,6 +1302,54 @@ describe('Request', () => { ); }); + describe('should pass `wrapNumbers` to runQueryStream', () => { + it('should pass `wrapNumbers` to runQueryStream as undefined by default', done => { + request.runQuery(query, (err: Error) => { + assert.ifError(err); + + const runQueryOptions = request.runQueryStream.getCall(0).args[1]; + assert.strictEqual(runQueryOptions.wrapNumbers, undefined); + done(); + }); + }); + + it('should pass `wrapNumbers` to runQueryStream boolean', done => { + request.runQuery(query, {wrapNumbers: true}, (err: Error) => { + assert.ifError(err); + + const runQueryOptions = request.runQueryStream.getCall(0).args[1]; + assert.strictEqual(typeof runQueryOptions.wrapNumbers, 'boolean'); + done(); + }); + }); + + it('should pass `wrapNumbers` to runQueryStream as IntegerTypeCastOptions', done => { + const integerTypeCastOptions = { + integerTypeCastFunction: () => {}, + properties: 'that', + }; + + request.runQuery( + query, + {wrapNumbers: integerTypeCastOptions}, + (err: Error) => { + assert.ifError(err); + + const runQueryOptions = request.runQueryStream.getCall(0).args[1]; + assert.strictEqual( + runQueryOptions.wrapNumbers, + integerTypeCastOptions + ); + assert.deepStrictEqual( + runQueryOptions.wrapNumbers, + integerTypeCastOptions + ); + done(); + } + ); + }); + }); + it('should allow options to be omitted', done => { request.runQuery(query, (err: Error) => { assert.ifError(err); From 94b7b57ae86da3882d643aa27278c44846a456f3 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Thu, 14 Nov 2019 23:38:39 +0530 Subject: [PATCH 458/820] fix!: keyToLegacyUrlsafe is now an async method (#496) --- handwritten/nodejs-datastore/src/index.ts | 92 +++++++++++++++++++--- handwritten/nodejs-datastore/test/index.ts | 46 +++++++++-- 2 files changed, 122 insertions(+), 16 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 34589c24d9d..b91e2fa3e13 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -34,6 +34,7 @@ import {entity} from './entity'; import {Query} from './query'; import {DatastoreRequest} from './request'; import {Transaction} from './transaction'; +import {promisifyAll} from '@google-cloud/promisify'; const {grpc} = new GrpcClient(); @@ -730,6 +731,16 @@ class Datastore extends DatastoreRequest { return Datastore.isKey(value); } + keyToLegacyUrlSafe(key: entity.Key, locationPrefix?: string): Promise; + keyToLegacyUrlSafe( + key: entity.Key, + callback: KeyToLegacyUrlSafeCallback + ): void; + keyToLegacyUrlSafe( + key: entity.Key, + locationPrefix: string, + callback: KeyToLegacyUrlSafeCallback + ): void; /** * Helper to create a URL safe key. * @@ -744,26 +755,62 @@ class Datastore extends DatastoreRequest { * The location prefix of an App Engine project ID. * Often this value is 's~', but may also be 'e~', or other location prefixes * currently unknown. - * @returns {string} base64 endocded urlsafe key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {string} callback.urlSafeKey A Base64-encoded URL-safe key. * * @example * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 'Google']); * - * datastore.keyToLegacyUrlsafe(key) //ag9ncmFzcy1jbHVtcC00NzlyEwsSB0NvbXBhbnkiBkdvb2dsZQw + * datastore.keyToLegacyUrlSafe(key, (err, urlSafeKey) => { + * if (err) { + * // Error handling omitted. + * } + * console.log(urlSafeKey); + * }); * - * @example - * Create a complete url safe key using location prefix - * const {Datastore} = require('@google-cloud/datastore'); - * const datastore = new Datastore(); - * const key = datastore.key(['Task', 123]); + * //- + * // Create a complete URL-safe key using a location prefix. + * //- * const locationPrefix = 's~'; * - * datastore.keyToLegacyUrlsafe(key, locationPrefix) //ahFzfmdyYXNzLWNsdW1wLTQ3OXIKCxIEVGFzaxh7DA + * datastore.keyToLegacyUrlSafe(key, locationPrefix, (err, urlSafeKey) => { + * if (err) { + * // Error handling omitted. + * } + * console.log(urlSafeKey); + * }); + * + * //- + * // If the callback is omitted, we'll return a Promise. + * //- + * datastore.keyToLegacyUrlSafe(key).then((data) => { + * const urlSafeKey = data[0]; + * console.log(urlSafeKey); + * }); */ - keyToLegacyUrlsafe(key: entity.Key, locationPrefix?: string): string { - return urlSafeKey.legacyEncode(this.projectId, key, locationPrefix); + keyToLegacyUrlSafe( + key: entity.Key, + locationPrefixOrCallback?: string | KeyToLegacyUrlSafeCallback, + callback?: KeyToLegacyUrlSafeCallback + ): Promise | void { + const locationPrefix = + typeof locationPrefixOrCallback === 'string' + ? locationPrefixOrCallback + : ''; + callback = + typeof locationPrefixOrCallback === 'function' + ? locationPrefixOrCallback + : callback; + this.auth.getProjectId((err, projectId) => { + if (err) { + callback!(err); + return; + } + callback!(null, urlSafeKey.legacyEncode(projectId!, key, locationPrefix)); + }); } /** @@ -870,6 +917,27 @@ class Datastore extends DatastoreRequest { Transaction = Transaction; } +/*! Developer Documentation + * + * All async methods (except for streams) will return a Promise in the event + * that a callback is omitted. + */ +promisifyAll(Datastore, { + exclude: [ + 'double', + 'isDouble', + 'geoPoint', + 'isGeoPoint', + 'int', + 'isInt', + 'createQuery', + 'key', + 'isKey', + 'keyFromLegacyUrlsafe', + 'transaction', + ], +}); + export {Datastore}; /** @@ -932,3 +1000,7 @@ export interface DatastoreOptions extends GoogleAuthOptions { apiEndpoint?: string; sslCreds?: ChannelCredentials; } + +export interface KeyToLegacyUrlSafeCallback { + (err?: Error | null, urlSafeKey?: string): void; +} diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index f4d303e8c49..cc1ea54b178 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -625,15 +625,49 @@ describe('Datastore', () => { }); }); - describe('keyToLegacyUrlsafe', () => { - it('should convert key to url safe base64 string', () => { + describe('keyToLegacyUrlSafe', () => { + it('should convert key to URL-safe base64 string', () => { const key = new entity.Key({ path: ['Task', 'Test'], }); - assert.strictEqual( - datastore.keyToLegacyUrlsafe(key), - 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA' - ); + const base64EndocdedUrlSafeKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; + // tslint:disable-next-line: no-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(null, 'project-id'); + }; + datastore.keyToLegacyUrlSafe(key, (err, urlSafeKey) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + }); + }); + + it('should convert key to URL-safe base64 string with location prefix', () => { + const key = new entity.Key({ + path: ['Task', 'Test'], + }); + const locationPrefix = 's~'; + const base64EndocdedUrlSafeKey = + 'agxzfnByb2plY3QtaWRyDgsSBFRhc2siBFRlc3QM'; + // tslint:disable-next-line: no-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(null, 'project-id'); + }; + datastore.keyToLegacyUrlSafe(key, locationPrefix, (err, urlSafeKey) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + }); + }); + + it('should not return URL-safe key to user if auth.getProjectId errors', () => { + const error = new Error('Error.'); + // tslint:disable-next-line: no-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(error); + }; + datastore.keyToLegacyUrlSafe({} as entity.Key, (err, urlSafeKey) => { + assert.strictEqual(err, error); + assert.strictEqual(urlSafeKey, undefined); + }); }); }); From 188253c64bf1617b29153e2293893152613cb682 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2019 07:55:13 -0800 Subject: [PATCH 459/820] chore: release 5.0.0 (#538) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json [ci skip] --- handwritten/nodejs-datastore/CHANGELOG.md | 18 ++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 5c7f135f8cb..f9071c1df5a 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,24 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [5.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.2...v5.0.0) (2019-11-14) + + +### ⚠ BREAKING CHANGES + +* keyToLegacyUrlsafe is now an async method (#496) +* throw error with out of bounds integer values, optionally wrap into DsInt or provide a custom 'integerValue' type cast options #516 + +### Features + +* throw error with out of bounds integer values, optionally wrap into DsInt or provide a custom 'integerValue' type cast options [#516](https://www.github.com/googleapis/nodejs-datastore/issues/516) ([6c8cc74](https://www.github.com/googleapis/nodejs-datastore/commit/6c8cc74820ca7eaab0e08b9cefac11095c466256)) + + +### Bug Fixes + +* **docs:** snippets are now replaced in jsdoc comments ([#535](https://www.github.com/googleapis/nodejs-datastore/issues/535)) ([53ddc21](https://www.github.com/googleapis/nodejs-datastore/commit/53ddc21f3b1545e660433b3805948dfc862ba792)) +* keyToLegacyUrlsafe is now an async method ([#496](https://www.github.com/googleapis/nodejs-datastore/issues/496)) ([bbd1ebe](https://www.github.com/googleapis/nodejs-datastore/commit/bbd1ebe82e302155b80ac801f892a7f12ad17e13)) + ### [4.5.2](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.1...v4.5.2) (2019-11-08) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5faf6f03183..bee88d17aaa 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "4.5.2", + "version": "5.0.0", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d4002d2cfaa..fb217153fae 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^4.5.2", + "@google-cloud/datastore": "^5.0.0", "sinon": "^7.3.2" }, "devDependencies": { From 7624967eb8566b57b3669bd50a12d8970917dd0d Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 20 Nov 2019 00:45:11 +0100 Subject: [PATCH 460/820] fix(deps): update dependency @grpc/grpc-js to v0.6.12 (#541) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index bee88d17aaa..e9b627b1687 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.11", + "@grpc/grpc-js": "0.6.12", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From a05dd5c8950978b5dddaf6c17d8c6687d04e8725 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 22 Nov 2019 08:16:45 -0800 Subject: [PATCH 461/820] docs: add additional license headers (#542) --- handwritten/nodejs-datastore/protos/protos.d.ts | 15 +++++++++++++++ handwritten/nodejs-datastore/protos/protos.js | 14 ++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 4f2f6398d1f..96525ea68bc 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,3 +1,18 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as Long from "long"; import * as $protobuf from "protobufjs"; /** Namespace google. */ export namespace google { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index e1ffa8a0b45..efa104cd397 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,3 +1,17 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ (function(global, factory) { /* global define, require, module */ diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index fdd85038269..f5471bc53c6 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-11-09T12:13:20.338243Z", + "updateTime": "2019-11-19T12:14:52.278512Z", "sources": [ { "generator": { "name": "artman", - "version": "0.41.1", - "dockerImage": "googleapis/artman@sha256:545c758c76c3f779037aa259023ec3d1ef2d57d2c8cd00a222cb187d63ceac5e" + "version": "0.42.1", + "dockerImage": "googleapis/artman@sha256:c773192618c608a7a0415dd95282f841f8e6bcdef7dd760a988c93b77a64bd57" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "34e661f58d58fa57da8ed113a3d8bb3de26b307d", - "internalRef": "279417429" + "sha": "d8dd7fe8d5304f7bd1c52207703d7f27d5328c5a", + "internalRef": "281088257" } }, { From 648793930b895ec90e5eb75d46438c8d00092784 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 25 Nov 2019 08:54:42 -0800 Subject: [PATCH 462/820] chore: update license headers --- .../nodejs-datastore/samples/concepts.js | 28 +++++++++---------- handwritten/nodejs-datastore/samples/error.js | 28 +++++++++---------- .../nodejs-datastore/samples/quickstart.js | 28 +++++++++---------- .../nodejs-datastore/samples/tasks.add.js | 28 +++++++++---------- .../nodejs-datastore/samples/tasks.delete.js | 28 +++++++++---------- handwritten/nodejs-datastore/samples/tasks.js | 28 +++++++++---------- .../nodejs-datastore/samples/tasks.list.js | 28 +++++++++---------- .../samples/tasks.markdone.js | 28 +++++++++---------- .../samples/test/concepts.test.js | 27 +++++++++--------- .../samples/test/error.test.js | 28 +++++++++---------- .../samples/test/quickstart.test.js | 28 +++++++++---------- .../samples/test/tasks.test.js | 28 +++++++++---------- handwritten/nodejs-datastore/src/entity.ts | 28 +++++++++---------- .../nodejs-datastore/system-test/datastore.ts | 28 +++++++++---------- .../nodejs-datastore/system-test/install.ts | 28 +++++++++---------- handwritten/nodejs-datastore/test/entity.ts | 28 +++++++++---------- handwritten/nodejs-datastore/test/index.ts | 28 +++++++++---------- handwritten/nodejs-datastore/test/query.ts | 28 +++++++++---------- handwritten/nodejs-datastore/test/request.ts | 28 +++++++++---------- .../nodejs-datastore/test/transaction.ts | 28 +++++++++---------- 20 files changed, 260 insertions(+), 299 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 55947d59b99..940ee736fda 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1,18 +1,16 @@ -/** - * Copyright 2017 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2017 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index 78932567ef4..bc6b8150eb9 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -1,18 +1,16 @@ -/** - * Copyright 2019 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/quickstart.js b/handwritten/nodejs-datastore/samples/quickstart.js index 1ca2cdbeb9e..62ccaec0612 100644 --- a/handwritten/nodejs-datastore/samples/quickstart.js +++ b/handwritten/nodejs-datastore/samples/quickstart.js @@ -1,18 +1,16 @@ -/** - * Copyright 2016 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2016 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/tasks.add.js b/handwritten/nodejs-datastore/samples/tasks.add.js index 2a9e087e846..a6d17c47021 100644 --- a/handwritten/nodejs-datastore/samples/tasks.add.js +++ b/handwritten/nodejs-datastore/samples/tasks.add.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/tasks.delete.js b/handwritten/nodejs-datastore/samples/tasks.delete.js index 93d3630e7f4..8e09ada9c62 100644 --- a/handwritten/nodejs-datastore/samples/tasks.delete.js +++ b/handwritten/nodejs-datastore/samples/tasks.delete.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 99cb51a77c7..00f516df280 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/tasks.list.js b/handwritten/nodejs-datastore/samples/tasks.list.js index 19a511fd76a..d31633c9565 100644 --- a/handwritten/nodejs-datastore/samples/tasks.list.js +++ b/handwritten/nodejs-datastore/samples/tasks.list.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/tasks.markdone.js b/handwritten/nodejs-datastore/samples/tasks.markdone.js index 54cbc53a81a..61c9b3b90f4 100644 --- a/handwritten/nodejs-datastore/samples/tasks.markdone.js +++ b/handwritten/nodejs-datastore/samples/tasks.markdone.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js index a42b6a635e5..735eaca973e 100644 --- a/handwritten/nodejs-datastore/samples/test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -1,17 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js index 87b9138cd43..b984a6021ad 100644 --- a/handwritten/nodejs-datastore/samples/test/error.test.js +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -1,18 +1,16 @@ -/** - * Copyright 2019 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js index d80e8e48e77..0899f46cafe 100644 --- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js index 1cae0375b48..1722b2bc7eb 100644 --- a/handwritten/nodejs-datastore/samples/test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -1,18 +1,16 @@ -/** - * Copyright 2018 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. 'use strict'; diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 8e6e2742a2e..df32a586636 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import arrify = require('arrify'); import * as extend from 'extend'; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index d97d7fd72b8..c6ad84d24ea 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as assert from 'assert'; import {Datastore} from '../src'; diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 1c5f1c2fffc..e55207d76c4 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2019 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as cp from 'child_process'; import * as mv from 'mv'; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index beb5f72e712..8cce3128ea8 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as assert from 'assert'; import * as extend from 'extend'; diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index cc1ea54b178..653c53f7d2f 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as assert from 'assert'; import * as gax from 'google-gax'; diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 65375b7fcf6..4da58d7d7d7 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as assert from 'assert'; const {Query} = require('../src/query'); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index eb67aa2dbd0..607646145a8 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 66eecaf263e..a4ef55772a0 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -1,18 +1,16 @@ -/** - * Copyright 2014 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2014 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. import * as pfy from '@google-cloud/promisify'; import arrify = require('arrify'); From e8fca97c686eecca9d30384c9dc1e2717184c4a2 Mon Sep 17 00:00:00 2001 From: Stephen Date: Tue, 26 Nov 2019 08:37:06 -0500 Subject: [PATCH 463/820] docs(readme): explain emulator side effects (#544) --- handwritten/nodejs-datastore/.readme-partials.yml | 8 ++++++++ handwritten/nodejs-datastore/README.md | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 handwritten/nodejs-datastore/.readme-partials.yml diff --git a/handwritten/nodejs-datastore/.readme-partials.yml b/handwritten/nodejs-datastore/.readme-partials.yml new file mode 100644 index 00000000000..95804f1480e --- /dev/null +++ b/handwritten/nodejs-datastore/.readme-partials.yml @@ -0,0 +1,8 @@ +body: |- + ### Troubleshooting + #### Emulator returning `DEADLINE_EXCEEDED`, `java.lang.OutOfMemoryError` + *Reference Issue: [#95](https://github.com/googleapis/nodejs-datastore/issues/95)* + + When using the emulator, you may experience errors such as "DEADLINE_EXCEEDED" within your application, corresponding to an error in the emulator: "java.lang.OutOfMemoryError". These errors are unique to the emulator environment and will not persist in production. + + A workaround is available, provided by [@ohmpatel1997](https://github.com/ohmpatel1997) [here](https://github.com/googleapis/nodejs-datastore/issues/95#issuecomment-554387312). diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index b1971d412a8..d8208f4f57e 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -85,7 +85,12 @@ async function quickstart() { quickstart(); ``` +### Troubleshooting +#### Emulator returning `DEADLINE_EXCEEDED`, `java.lang.OutOfMemoryError` +*Reference Issue: [#95](https://github.com/googleapis/nodejs-datastore/issues/95)* +When using the emulator, you may experience errors such as "DEADLINE_EXCEEDED" within your application, corresponding to an error in the emulator: "java.lang.OutOfMemoryError". These errors are unique to the emulator environment and will not persist in production. +A workaround is available, provided by [@ohmpatel1997](https://github.com/ohmpatel1997) [here](https://github.com/googleapis/nodejs-datastore/issues/95#issuecomment-554387312). ## Samples From 3c5d5e4a242a284a53ba1c3aee84ec6583da7e4d Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 27 Nov 2019 15:40:27 -0800 Subject: [PATCH 464/820] build: migrates library to GAPIC v2 annotations --- handwritten/nodejs-datastore/README.md | 1 + .../google/datastore/v1/datastore.proto | 107 +++++----- .../protos/google/datastore/v1/entity.proto | 10 +- .../protos/google/datastore/v1/query.proto | 12 +- .../nodejs-datastore/protos/protos.d.ts | 22 ++ handwritten/nodejs-datastore/protos/protos.js | 194 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 111 ++++++++-- .../src/v1/datastore_client.js | 52 ++--- .../src/v1/datastore_client_config.json | 10 +- .../doc/google/datastore/v1/doc_datastore.js | 54 ++--- .../v1/doc/google/datastore/v1/doc_entity.js | 8 +- .../v1/doc/google/datastore/v1/doc_query.js | 10 +- handwritten/nodejs-datastore/synth.metadata | 6 +- handwritten/nodejs-datastore/test/gapic-v1.js | 12 -- 14 files changed, 435 insertions(+), 174 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index d8208f4f57e..d6c040ab0a2 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -88,6 +88,7 @@ quickstart(); ### Troubleshooting #### Emulator returning `DEADLINE_EXCEEDED`, `java.lang.OutOfMemoryError` *Reference Issue: [#95](https://github.com/googleapis/nodejs-datastore/issues/95)* + When using the emulator, you may experience errors such as "DEADLINE_EXCEEDED" within your application, corresponding to an error in the emulator: "java.lang.OutOfMemoryError". These errors are unique to the emulator environment and will not persist in production. A workaround is available, provided by [@ohmpatel1997](https://github.com/ohmpatel1997) [here](https://github.com/googleapis/nodejs-datastore/issues/95#issuecomment-554387312). diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 51d69acb9db..0df65c4473c 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,6 +17,8 @@ syntax = "proto3"; package google.datastore.v1; import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; @@ -35,12 +37,18 @@ option php_namespace = "Google\\Cloud\\Datastore\\V1"; // the request. // service Datastore { + option (google.api.default_host) = "datastore.googleapis.com"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform," + "https://www.googleapis.com/auth/datastore"; + // Looks up entities by key. rpc Lookup(LookupRequest) returns (LookupResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:lookup" body: "*" }; + option (google.api.method_signature) = "project_id,read_options,keys"; } // Queries for entities. @@ -52,12 +60,12 @@ service Datastore { } // Begins a new transaction. - rpc BeginTransaction(BeginTransactionRequest) - returns (BeginTransactionResponse) { + rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:beginTransaction" body: "*" }; + option (google.api.method_signature) = "project_id"; } // Commits a transaction, optionally creating, deleting or modifying some @@ -67,6 +75,8 @@ service Datastore { post: "/v1/projects/{project_id}:commit" body: "*" }; + option (google.api.method_signature) = "project_id,mode,transaction,mutations"; + option (google.api.method_signature) = "project_id,mode,mutations"; } // Rolls back a transaction. @@ -75,6 +85,7 @@ service Datastore { post: "/v1/projects/{project_id}:rollback" body: "*" }; + option (google.api.method_signature) = "project_id,transaction"; } // Allocates IDs for the given keys, which is useful for referencing an entity @@ -84,6 +95,7 @@ service Datastore { post: "/v1/projects/{project_id}:allocateIds" body: "*" }; + option (google.api.method_signature) = "project_id,keys"; } // Prevents the supplied keys' IDs from being auto-allocated by Cloud @@ -93,19 +105,20 @@ service Datastore { post: "/v1/projects/{project_id}:reserveIds" body: "*" }; + option (google.api.method_signature) = "project_id,keys"; } } // The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. message LookupRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; // The options for this lookup request. ReadOptions read_options = 1; - // Keys of entities to look up. - repeated Key keys = 3; + // Required. Keys of entities to look up. + repeated Key keys = 3 [(google.api.field_behavior) = REQUIRED]; } // The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. @@ -128,8 +141,8 @@ message LookupResponse { // The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. message RunQueryRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; // Entities are partitioned into subsets, identified by a partition ID. // Queries are scoped to a single partition. @@ -150,8 +163,7 @@ message RunQueryRequest { } } -// The response for -// [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +// The response for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. message RunQueryResponse { // A batch of query results (always present). QueryResultBatch batch = 1; @@ -160,18 +172,16 @@ message RunQueryResponse { Query query = 2; } -// The request for -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; // Options for a new transaction. TransactionOptions transaction_options = 10; } -// The response for -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionResponse { // The transaction identifier (always present). bytes transaction = 1; @@ -179,18 +189,19 @@ message BeginTransactionResponse { // The request for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. message RollbackRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; - // The transaction identifier, returned by a call to + // Required. The transaction identifier, returned by a call to // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. - bytes transaction = 1; + bytes transaction = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for -// [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. (an empty -// message). -message RollbackResponse {} +// The response for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. +// (an empty message). +message RollbackResponse { + +} // The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. message CommitRequest { @@ -208,8 +219,8 @@ message CommitRequest { NON_TRANSACTIONAL = 2; } - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; // The type of commit to perform. Defaults to `TRANSACTIONAL`. Mode mode = 5; @@ -249,42 +260,40 @@ message CommitResponse { int32 index_updates = 4; } -// The request for -// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; - // A list of keys with incomplete key paths for which to allocate IDs. + // Required. A list of keys with incomplete key paths for which to allocate IDs. // No key may be reserved/read-only. - repeated Key keys = 1; + repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for -// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The response for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsResponse { // The keys specified in the request (in the same order), each with // its key path completed with a newly allocated ID. repeated Key keys = 1; } -// The request for -// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. message ReserveIdsRequest { - // The ID of the project against which to make the request. - string project_id = 8; + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; // If not empty, the ID of the database against which to make the request. string database_id = 9; - // A list of keys with complete key paths whose numeric IDs should not be + // Required. A list of keys with complete key paths whose numeric IDs should not be // auto-allocated. - repeated Key keys = 1; + repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for -// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. -message ReserveIdsResponse {} +// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +message ReserveIdsResponse { + +} // A mutation to apply to an entity. message Mutation { @@ -374,10 +383,8 @@ message ReadOptions { // Options for beginning a new transaction. // // Transactions can be created explicitly with calls to -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] -// or implicitly by setting -// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] -// in read requests. +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting +// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests. message TransactionOptions { // Options specific to read / write transactions. message ReadWrite { @@ -386,7 +393,9 @@ message TransactionOptions { } // Options specific to read-only transactions. - message ReadOnly {} + message ReadOnly { + + } // The `mode` of the transaction, indicating whether write operations are // supported. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 9decd2b5380..96d13ecccc1 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -114,8 +114,8 @@ message Key { // An array value. message ArrayValue { // Values in the array. - // The order of this array may not be preserved if it contains a mix of - // indexed and unindexed values. + // The order of values in an array is preserved as long as all values have + // identical settings for 'exclude_from_indexes'. repeated Value values = 1; } @@ -145,8 +145,8 @@ message Value { Key key_value = 5; // A UTF-8 encoded string value. - // When `exclude_from_indexes` is false (it is indexed) , may have at most - // 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes. + // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. + // Otherwise, may be set to at least 1,000,000 bytes. string string_value = 17; // A blob value. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 872612c5dd2..ef9f1c658c1 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google Inc. +// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -55,12 +55,12 @@ message EntityResult { // The version of the entity, a strictly positive number that monotonically // increases with changes to the entity. // - // This field is set for - // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. + // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity + // results. // - // For [missing][google.datastore.v1.LookupResponse.missing] entities in - // `LookupResponse`, this is the version of the snapshot that was used to look - // up the entity, and it is always set except for eventually consistent reads. + // For [missing][google.datastore.v1.LookupResponse.missing] entities in `LookupResponse`, this + // is the version of the snapshot that was used to look up the entity, and it + // is always set except for eventually consistent reads. int64 version = 4; // A cursor that points to the position after the result entity. diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 96525ea68bc..4f116bf1510 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -4459,6 +4459,16 @@ export namespace google { */ public toJSON(): { [k: string]: any }; } + + /** FieldBehavior enum. */ + enum FieldBehavior { + FIELD_BEHAVIOR_UNSPECIFIED = 0, + OPTIONAL = 1, + REQUIRED = 2, + OUTPUT_ONLY = 3, + INPUT_ONLY = 4, + IMMUTABLE = 5 + } } /** Namespace protobuf. */ @@ -6311,6 +6321,9 @@ export namespace google { /** FieldOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** FieldOptions .google.api.fieldBehavior */ + ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null); } /** Represents a FieldOptions. */ @@ -6727,6 +6740,12 @@ export namespace google { /** ServiceOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** ServiceOptions .google.api.defaultHost */ + ".google.api.defaultHost"?: (string|null); + + /** ServiceOptions .google.api.oauthScopes */ + ".google.api.oauthScopes"?: (string|null); } /** Represents a ServiceOptions. */ @@ -6829,6 +6848,9 @@ export namespace google { /** MethodOptions .google.api.http */ ".google.api.http"?: (google.api.IHttpRule|null); + + /** MethodOptions .google.api.methodSignature */ + ".google.api.methodSignature"?: (string[]|null); } /** Represents a MethodOptions. */ diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index efa104cd397..1cb508eee63 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -11142,6 +11142,28 @@ return CustomHttpPattern; })(); + /** + * FieldBehavior enum. + * @name google.api.FieldBehavior + * @enum {string} + * @property {number} FIELD_BEHAVIOR_UNSPECIFIED=0 FIELD_BEHAVIOR_UNSPECIFIED value + * @property {number} OPTIONAL=1 OPTIONAL value + * @property {number} REQUIRED=2 REQUIRED value + * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value + * @property {number} INPUT_ONLY=4 INPUT_ONLY value + * @property {number} IMMUTABLE=5 IMMUTABLE value + */ + api.FieldBehavior = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FIELD_BEHAVIOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "OPTIONAL"] = 1; + values[valuesById[2] = "REQUIRED"] = 2; + values[valuesById[3] = "OUTPUT_ONLY"] = 3; + values[valuesById[4] = "INPUT_ONLY"] = 4; + values[valuesById[5] = "IMMUTABLE"] = 5; + return values; + })(); + return api; })(); @@ -16281,6 +16303,7 @@ * @property {boolean|null} [deprecated] FieldOptions deprecated * @property {boolean|null} [weak] FieldOptions weak * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption + * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior */ /** @@ -16293,6 +16316,7 @@ */ function FieldOptions(properties) { this.uninterpretedOption = []; + this[".google.api.fieldBehavior"] = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16355,6 +16379,14 @@ */ FieldOptions.prototype.uninterpretedOption = $util.emptyArray; + /** + * FieldOptions .google.api.fieldBehavior. + * @member {Array.} .google.api.fieldBehavior + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype[".google.api.fieldBehavior"] = $util.emptyArray; + /** * Creates a new FieldOptions instance using the specified properties. * @function create @@ -16394,6 +16426,12 @@ if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) { + writer.uint32(/* id 1052, wireType 2 =*/8418).fork(); + for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) + writer.int32(message[".google.api.fieldBehavior"][i]); + writer.ldelim(); + } return writer; }; @@ -16451,6 +16489,16 @@ message.uninterpretedOption = []; message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); break; + case 1052: + if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length)) + message[".google.api.fieldBehavior"] = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message[".google.api.fieldBehavior"].push(reader.int32()); + } else + message[".google.api.fieldBehavior"].push(reader.int32()); + break; default: reader.skipType(tag & 7); break; @@ -16525,6 +16573,22 @@ return "uninterpretedOption." + error; } } + if (message[".google.api.fieldBehavior"] != null && message.hasOwnProperty(".google.api.fieldBehavior")) { + if (!Array.isArray(message[".google.api.fieldBehavior"])) + return ".google.api.fieldBehavior: array expected"; + for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) + switch (message[".google.api.fieldBehavior"][i]) { + default: + return ".google.api.fieldBehavior: enum value[] expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + break; + } + } return null; }; @@ -16586,6 +16650,39 @@ message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); } } + if (object[".google.api.fieldBehavior"]) { + if (!Array.isArray(object[".google.api.fieldBehavior"])) + throw TypeError(".google.protobuf.FieldOptions..google.api.fieldBehavior: array expected"); + message[".google.api.fieldBehavior"] = []; + for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i) + switch (object[".google.api.fieldBehavior"][i]) { + default: + case "FIELD_BEHAVIOR_UNSPECIFIED": + case 0: + message[".google.api.fieldBehavior"][i] = 0; + break; + case "OPTIONAL": + case 1: + message[".google.api.fieldBehavior"][i] = 1; + break; + case "REQUIRED": + case 2: + message[".google.api.fieldBehavior"][i] = 2; + break; + case "OUTPUT_ONLY": + case 3: + message[".google.api.fieldBehavior"][i] = 3; + break; + case "INPUT_ONLY": + case 4: + message[".google.api.fieldBehavior"][i] = 4; + break; + case "IMMUTABLE": + case 5: + message[".google.api.fieldBehavior"][i] = 5; + break; + } + } return message; }; @@ -16602,8 +16699,10 @@ if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) + if (options.arrays || options.defaults) { object.uninterpretedOption = []; + object[".google.api.fieldBehavior"] = []; + } if (options.defaults) { object.ctype = options.enums === String ? "STRING" : 0; object.packed = false; @@ -16629,6 +16728,11 @@ for (var j = 0; j < message.uninterpretedOption.length; ++j) object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); } + if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) { + object[".google.api.fieldBehavior"] = []; + for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j) + object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; + } return object; }; @@ -17379,6 +17483,8 @@ * @interface IServiceOptions * @property {boolean|null} [deprecated] ServiceOptions deprecated * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption + * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost + * @property {string|null} [".google.api.oauthScopes"] ServiceOptions .google.api.oauthScopes */ /** @@ -17413,6 +17519,22 @@ */ ServiceOptions.prototype.uninterpretedOption = $util.emptyArray; + /** + * ServiceOptions .google.api.defaultHost. + * @member {string} .google.api.defaultHost + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype[".google.api.defaultHost"] = ""; + + /** + * ServiceOptions .google.api.oauthScopes. + * @member {string} .google.api.oauthScopes + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype[".google.api.oauthScopes"] = ""; + /** * Creates a new ServiceOptions instance using the specified properties. * @function create @@ -17442,6 +17564,10 @@ if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); + if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]); return writer; }; @@ -17484,6 +17610,12 @@ message.uninterpretedOption = []; message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); break; + case 1049: + message[".google.api.defaultHost"] = reader.string(); + break; + case 1050: + message[".google.api.oauthScopes"] = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -17531,6 +17663,12 @@ return "uninterpretedOption." + error; } } + if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + if (!$util.isString(message[".google.api.defaultHost"])) + return ".google.api.defaultHost: string expected"; + if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + if (!$util.isString(message[".google.api.oauthScopes"])) + return ".google.api.oauthScopes: string expected"; return null; }; @@ -17558,6 +17696,10 @@ message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); } } + if (object[".google.api.defaultHost"] != null) + message[".google.api.defaultHost"] = String(object[".google.api.defaultHost"]); + if (object[".google.api.oauthScopes"] != null) + message[".google.api.oauthScopes"] = String(object[".google.api.oauthScopes"]); return message; }; @@ -17576,8 +17718,11 @@ var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; - if (options.defaults) + if (options.defaults) { object.deprecated = false; + object[".google.api.defaultHost"] = ""; + object[".google.api.oauthScopes"] = ""; + } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; if (message.uninterpretedOption && message.uninterpretedOption.length) { @@ -17585,6 +17730,10 @@ for (var j = 0; j < message.uninterpretedOption.length; ++j) object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); } + if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + object[".google.api.defaultHost"] = message[".google.api.defaultHost"]; + if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"]; return object; }; @@ -17612,6 +17761,7 @@ * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel * @property {Array.|null} [uninterpretedOption] MethodOptions uninterpretedOption * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http + * @property {Array.|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature */ /** @@ -17624,6 +17774,7 @@ */ function MethodOptions(properties) { this.uninterpretedOption = []; + this[".google.api.methodSignature"] = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -17662,6 +17813,14 @@ */ MethodOptions.prototype[".google.api.http"] = null; + /** + * MethodOptions .google.api.methodSignature. + * @member {Array.} .google.api.methodSignature + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.api.methodSignature"] = $util.emptyArray; + /** * Creates a new MethodOptions instance using the specified properties. * @function create @@ -17693,6 +17852,9 @@ if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length) + for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) + writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); return writer; @@ -17743,6 +17905,11 @@ case 72295728: message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); break; + case 1051: + if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length)) + message[".google.api.methodSignature"] = []; + message[".google.api.methodSignature"].push(reader.string()); + break; default: reader.skipType(tag & 7); break; @@ -17804,6 +17971,13 @@ if (error) return ".google.api.http." + error; } + if (message[".google.api.methodSignature"] != null && message.hasOwnProperty(".google.api.methodSignature")) { + if (!Array.isArray(message[".google.api.methodSignature"])) + return ".google.api.methodSignature: array expected"; + for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) + if (!$util.isString(message[".google.api.methodSignature"][i])) + return ".google.api.methodSignature: string[] expected"; + } return null; }; @@ -17850,6 +18024,13 @@ throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]); } + if (object[".google.api.methodSignature"]) { + if (!Array.isArray(object[".google.api.methodSignature"])) + throw TypeError(".google.protobuf.MethodOptions..google.api.methodSignature: array expected"); + message[".google.api.methodSignature"] = []; + for (var i = 0; i < object[".google.api.methodSignature"].length; ++i) + message[".google.api.methodSignature"][i] = String(object[".google.api.methodSignature"][i]); + } return message; }; @@ -17866,8 +18047,10 @@ if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) + if (options.arrays || options.defaults) { object.uninterpretedOption = []; + object[".google.api.methodSignature"] = []; + } if (options.defaults) { object.deprecated = false; object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; @@ -17882,6 +18065,11 @@ for (var j = 0; j < message.uninterpretedOption.length; ++j) object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); } + if (message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length) { + object[".google.api.methodSignature"] = []; + for (var j = 0; j < message[".google.api.methodSignature"].length; ++j) + object[".google.api.methodSignature"][j] = message[".google.api.methodSignature"][j]; + } if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); return object; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 69acf8213f0..72bfffc81b1 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -15,13 +15,18 @@ }, "nested": { "Datastore": { + "options": { + "(google.api.default_host)": "datastore.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore" + }, "methods": { "Lookup": { "requestType": "LookupRequest", "responseType": "LookupResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:lookup", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,read_options,keys" } }, "RunQuery": { @@ -37,7 +42,8 @@ "responseType": "BeginTransactionResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:beginTransaction", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id" } }, "Commit": { @@ -45,7 +51,8 @@ "responseType": "CommitResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:commit", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,mode,mutations" } }, "Rollback": { @@ -53,7 +60,8 @@ "responseType": "RollbackResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:rollback", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,transaction" } }, "AllocateIds": { @@ -61,7 +69,8 @@ "responseType": "AllocateIdsResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:allocateIds", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,keys" } }, "ReserveIds": { @@ -69,7 +78,8 @@ "responseType": "ReserveIdsResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,keys" } } } @@ -78,7 +88,10 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "readOptions": { "type": "ReadOptions", @@ -87,7 +100,10 @@ "keys": { "rule": "repeated", "type": "Key", - "id": 3 + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -122,7 +138,10 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "partitionId": { "type": "PartitionId", @@ -158,7 +177,10 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "transactionOptions": { "type": "TransactionOptions", @@ -178,11 +200,17 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "transaction": { "type": "bytes", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -200,7 +228,10 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "mode": { "type": "Mode", @@ -243,12 +274,18 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "keys": { "rule": "repeated", "type": "Key", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -265,7 +302,10 @@ "fields": { "projectId": { "type": "string", - "id": 8 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "databaseId": { "type": "string", @@ -274,7 +314,10 @@ "keys": { "rule": "repeated", "type": "Key", - "id": 1 + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, @@ -823,7 +866,7 @@ "options": { "go_package": "google.golang.org/genproto/googleapis/api/annotations;annotations", "java_multiple_files": true, - "java_outer_classname": "HttpProto", + "java_outer_classname": "FieldBehaviorProto", "java_package": "com.google.api", "objc_class_prefix": "GAPI", "cc_enable_arenas": true @@ -915,6 +958,38 @@ "id": 2 } } + }, + "methodSignature": { + "rule": "repeated", + "type": "string", + "id": 1051, + "extend": "google.protobuf.MethodOptions" + }, + "defaultHost": { + "type": "string", + "id": 1049, + "extend": "google.protobuf.ServiceOptions" + }, + "oauthScopes": { + "type": "string", + "id": 1050, + "extend": "google.protobuf.ServiceOptions" + }, + "fieldBehavior": { + "rule": "repeated", + "type": "google.api.FieldBehavior", + "id": 1052, + "extend": "google.protobuf.FieldOptions" + }, + "FieldBehavior": { + "values": { + "FIELD_BEHAVIOR_UNSPECIFIED": 0, + "OPTIONAL": 1, + "REQUIRED": 2, + "OUTPUT_ONLY": 3, + "INPUT_ONLY": 4, + "IMMUTABLE": 5 + } } } }, diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 017c323f3b8..942917eddac 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -228,9 +228,9 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * @param {Object[]} request.keys - * Keys of entities to look up. + * Required. Keys of entities to look up. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * @param {Object} [request.readOptions] @@ -295,8 +295,8 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {Object} request.partitionId + * Required. The ID of the project against which to make the request. + * @param {Object} [request.partitionId] * Entities are partitioned into subsets, identified by a partition ID. * Queries are scoped to a single partition. * This partition ID is normalized with the standard default context @@ -335,12 +335,7 @@ class DatastoreClient { * }); * * const projectId = ''; - * const partitionId = {}; - * const request = { - * projectId: projectId, - * partitionId: partitionId, - * }; - * client.runQuery(request) + * client.runQuery({projectId: projectId}) * .then(responses => { * const response = responses[0]; * // doThingsWith(response) @@ -373,7 +368,7 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * @param {Object} [request.transactionOptions] * Options for a new transaction. * @@ -432,12 +427,16 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. - * @param {number} request.mode + * Required. The ID of the project against which to make the request. + * @param {number} [request.mode] * The type of commit to perform. Defaults to `TRANSACTIONAL`. * * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} - * @param {Object[]} request.mutations + * @param {Buffer} [request.transaction] + * The identifier of the transaction associated with the commit. A + * transaction identifier is returned by a call to + * Datastore.BeginTransaction. + * @param {Object[]} [request.mutations] * The mutations to perform. * * When mode is `TRANSACTIONAL`, mutations affecting a single entity are @@ -453,10 +452,6 @@ class DatastoreClient { * entity. * * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} - * @param {Buffer} [request.transaction] - * The identifier of the transaction associated with the commit. A - * transaction identifier is returned by a call to - * Datastore.BeginTransaction. * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. @@ -477,14 +472,7 @@ class DatastoreClient { * }); * * const projectId = ''; - * const mode = 'MODE_UNSPECIFIED'; - * const mutations = []; - * const request = { - * projectId: projectId, - * mode: mode, - * mutations: mutations, - * }; - * client.commit(request) + * client.commit({projectId: projectId}) * .then(responses => { * const response = responses[0]; * // doThingsWith(response) @@ -517,9 +505,9 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * @param {Buffer} request.transaction - * The transaction identifier, returned by a call to + * Required. The transaction identifier, returned by a call to * Datastore.BeginTransaction. * @param {Object} [options] * Optional parameters. You can override the default settings for this call, e.g, timeout, @@ -580,9 +568,9 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * @param {Object[]} request.keys - * A list of keys with incomplete key paths for which to allocate IDs. + * Required. A list of keys with incomplete key paths for which to allocate IDs. * No key may be reserved/read-only. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} @@ -645,9 +633,9 @@ class DatastoreClient { * @param {Object} request * The request object that will be sent. * @param {string} request.projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * @param {Object[]} request.keys - * A list of keys with complete key paths whose numeric IDs should not be + * Required. A list of keys with complete key paths whose numeric IDs should not be * auto-allocated. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index fb7c2c4498e..18d34a4d062 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -13,21 +13,21 @@ "initial_retry_delay_millis": 100, "retry_delay_multiplier": 1.3, "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 60000, + "initial_rpc_timeout_millis": 20000, "rpc_timeout_multiplier": 1.0, - "max_rpc_timeout_millis": 60000, + "max_rpc_timeout_millis": 20000, "total_timeout_millis": 600000 } }, "methods": { "Lookup": { "timeout_millis": 60000, - "retry_codes_name": "idempotent", + "retry_codes_name": "non_idempotent", "retry_params_name": "default" }, "RunQuery": { "timeout_millis": 60000, - "retry_codes_name": "idempotent", + "retry_codes_name": "non_idempotent", "retry_params_name": "default" }, "BeginTransaction": { @@ -52,7 +52,7 @@ }, "ReserveIds": { "timeout_millis": 60000, - "retry_codes_name": "idempotent", + "retry_codes_name": "non_idempotent", "retry_params_name": "default" } } diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index 39c1a880acd..c50b8bea2b1 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -19,7 +19,7 @@ * The request for Datastore.Lookup. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {Object} readOptions * The options for this lookup request. @@ -27,7 +27,7 @@ * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} * * @property {Object[]} keys - * Keys of entities to look up. + * Required. Keys of entities to look up. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} * @@ -75,7 +75,7 @@ const LookupResponse = { * The request for Datastore.RunQuery. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {Object} partitionId * Entities are partitioned into subsets, identified by a partition ID. @@ -109,8 +109,7 @@ const RunQueryRequest = { }; /** - * The response for - * Datastore.RunQuery. + * The response for Datastore.RunQuery. * * @property {Object} batch * A batch of query results (always present). @@ -131,11 +130,10 @@ const RunQueryResponse = { }; /** - * The request for - * Datastore.BeginTransaction. + * The request for Datastore.BeginTransaction. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {Object} transactionOptions * Options for a new transaction. @@ -151,8 +149,7 @@ const BeginTransactionRequest = { }; /** - * The response for - * Datastore.BeginTransaction. + * The response for Datastore.BeginTransaction. * * @property {Buffer} transaction * The transaction identifier (always present). @@ -169,10 +166,10 @@ const BeginTransactionResponse = { * The request for Datastore.Rollback. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {Buffer} transaction - * The transaction identifier, returned by a call to + * Required. The transaction identifier, returned by a call to * Datastore.BeginTransaction. * * @typedef RollbackRequest @@ -184,9 +181,8 @@ const RollbackRequest = { }; /** - * The response for - * Datastore.Rollback. (an empty - * message). + * The response for Datastore.Rollback. + * (an empty message). * @typedef RollbackResponse * @memberof google.datastore.v1 * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} @@ -199,7 +195,7 @@ const RollbackResponse = { * The request for Datastore.Commit. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {number} mode * The type of commit to perform. Defaults to `TRANSACTIONAL`. @@ -284,14 +280,13 @@ const CommitResponse = { }; /** - * The request for - * Datastore.AllocateIds. + * The request for Datastore.AllocateIds. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {Object[]} keys - * A list of keys with incomplete key paths for which to allocate IDs. + * Required. A list of keys with incomplete key paths for which to allocate IDs. * No key may be reserved/read-only. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} @@ -305,8 +300,7 @@ const AllocateIdsRequest = { }; /** - * The response for - * Datastore.AllocateIds. + * The response for Datastore.AllocateIds. * * @property {Object[]} keys * The keys specified in the request (in the same order), each with @@ -323,17 +317,16 @@ const AllocateIdsResponse = { }; /** - * The request for - * Datastore.ReserveIds. + * The request for Datastore.ReserveIds. * * @property {string} projectId - * The ID of the project against which to make the request. + * Required. The ID of the project against which to make the request. * * @property {string} databaseId * If not empty, the ID of the database against which to make the request. * * @property {Object[]} keys - * A list of keys with complete key paths whose numeric IDs should not be + * Required. A list of keys with complete key paths whose numeric IDs should not be * auto-allocated. * * This object should have the same structure as [Key]{@link google.datastore.v1.Key} @@ -347,8 +340,7 @@ const ReserveIdsRequest = { }; /** - * The response for - * Datastore.ReserveIds. + * The response for Datastore.ReserveIds. * @typedef ReserveIdsResponse * @memberof google.datastore.v1 * @see [google.datastore.v1.ReserveIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} @@ -474,10 +466,8 @@ const ReadOptions = { * Options for beginning a new transaction. * * Transactions can be created explicitly with calls to - * Datastore.BeginTransaction - * or implicitly by setting - * ReadOptions.new_transaction - * in read requests. + * Datastore.BeginTransaction or implicitly by setting + * ReadOptions.new_transaction in read requests. * * @property {Object} readWrite * The transaction should allow both reads and writes. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index daa0e9fdf8c..865a5d647df 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -128,8 +128,8 @@ const Key = { * * @property {Object[]} values * Values in the array. - * The order of this array may not be preserved if it contains a mix of - * indexed and unindexed values. + * The order of values in an array is preserved as long as all values have + * identical settings for 'exclude_from_indexes'. * * This object should have the same structure as [Value]{@link google.datastore.v1.Value} * @@ -173,8 +173,8 @@ const ArrayValue = { * * @property {string} stringValue * A UTF-8 encoded string value. - * When `exclude_from_indexes` is false (it is indexed) , may have at most - * 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes. + * When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. + * Otherwise, may be set to at least 1,000,000 bytes. * * @property {Buffer} blobValue * A blob value. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 0229db202bd..04dfd14dffe 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -27,12 +27,12 @@ * The version of the entity, a strictly positive number that monotonically * increases with changes to the entity. * - * This field is set for - * `FULL` entity results. + * This field is set for `FULL` entity + * results. * - * For missing entities in - * `LookupResponse`, this is the version of the snapshot that was used to look - * up the entity, and it is always set except for eventually consistent reads. + * For missing entities in `LookupResponse`, this + * is the version of the snapshot that was used to look up the entity, and it + * is always set except for eventually consistent reads. * * @property {Buffer} cursor * A cursor that points to the position after the result entity. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index f5471bc53c6..834fa57fa57 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-11-19T12:14:52.278512Z", + "updateTime": "2019-11-27T12:14:30.142623Z", "sources": [ { "generator": { @@ -12,8 +12,8 @@ "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "d8dd7fe8d5304f7bd1c52207703d7f27d5328c5a", - "internalRef": "281088257" + "sha": "d8896a3d8a191702a9e39f29cf4c2e16fa05f76d", + "internalRef": "282674885" } }, { diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 02f55d91115..2395fb12152 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -115,10 +115,8 @@ describe('DatastoreClient', () => { // Mock request const projectId = 'projectId-1969970175'; - const partitionId = {}; const request = { projectId: projectId, - partitionId: partitionId, }; // Mock response @@ -145,10 +143,8 @@ describe('DatastoreClient', () => { // Mock request const projectId = 'projectId-1969970175'; - const partitionId = {}; const request = { projectId: projectId, - partitionId: partitionId, }; // Mock Grpc layer @@ -236,12 +232,8 @@ describe('DatastoreClient', () => { // Mock request const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; const request = { projectId: projectId, - mode: mode, - mutations: mutations, }; // Mock response @@ -271,12 +263,8 @@ describe('DatastoreClient', () => { // Mock request const projectId = 'projectId-1969970175'; - const mode = 'MODE_UNSPECIFIED'; - const mutations = []; const request = { projectId: projectId, - mode: mode, - mutations: mutations, }; // Mock Grpc layer From f9a198893285a2709fb6f3a275ca3af03edd4c6c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 3 Dec 2019 22:26:57 +0100 Subject: [PATCH 465/820] fix(deps): update dependency @grpc/grpc-js to v0.6.13 (#548) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e9b627b1687..914d04950fe 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.12", + "@grpc/grpc-js": "0.6.13", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 0334fdbed7633ba05e2d5cd8433409c2ef29a727 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Wed, 4 Dec 2019 15:28:18 -0500 Subject: [PATCH 466/820] docs(samples): update datastore samples to include keys in sample region tags (#549) Fixes b/115566664 --- .../nodejs-datastore/samples/concepts.js | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 940ee736fda..0a1147de099 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -146,9 +146,14 @@ class Entity extends TestHelper { } testEntityWithParent() { - const taskKey = this.keyWithParent; - // [START datastore_entity_with_parent] + const taskKey = datastore.key([ + 'TaskList', + 'default', + 'Task', + 'sampleTask', + ]); + const task = { key: taskKey, data: { @@ -222,10 +227,15 @@ class Entity extends TestHelper { } async testUpsert() { - const taskKey = this.getIncompleteKey(); - const task = this.getTask(); - // [START datastore_upsert] + const taskKey = datastore.key('Task'); + const task = { + category: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore', + }; + const entity = { key: taskKey, data: task, @@ -242,10 +252,15 @@ class Entity extends TestHelper { } testInsert() { - const taskKey = this.getIncompleteKey(); - const task = this.getTask(); - // [START datastore_insert] + const taskKey = datastore.key('Task'); + const task = { + category: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore', + }; + const entity = { key: taskKey, data: task, @@ -264,9 +279,8 @@ class Entity extends TestHelper { } async testLookup() { - const taskKey = this.getIncompleteKey(); - // [START datastore_lookup] + const taskKey = datastore.key('Task'); const [entity] = await datastore.get(taskKey); // entity = { // category: 'Personal', @@ -294,10 +308,15 @@ class Entity extends TestHelper { } async testUpdate() { - const taskKey = this.getIncompleteKey(); - const task = this.getTask(); - // [START datastore_update] + const taskKey = datastore.key('Task'); + const task = { + category: 'Personal', + done: false, + priority: 4, + description: 'Learn Cloud Datastore', + }; + const entity = { key: taskKey, data: task, @@ -316,9 +335,8 @@ class Entity extends TestHelper { } async testDelete() { - const taskKey = this.getIncompleteKey(); - // [START datastore_delete] + const taskKey = datastore.key('Task'); await datastore.delete(taskKey); // Task deleted successfully. // [END datastore_delete] @@ -331,6 +349,7 @@ class Entity extends TestHelper { } async testBatchUpsert() { + // [START datastore_batch_upsert] const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); @@ -348,7 +367,6 @@ class Entity extends TestHelper { description: 'Integrate Cloud Datastore', }; - // [START datastore_batch_upsert] const entities = [ { key: taskKey1, @@ -377,10 +395,10 @@ class Entity extends TestHelper { } async testBatchLookup() { + // [START datastore_batch_lookup] const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); - // [START datastore_batch_lookup] const keys = [taskKey1, taskKey2]; const [tasks] = await datastore.get(keys); @@ -392,10 +410,10 @@ class Entity extends TestHelper { } async testBatchDelete() { + // [START datastore_batch_delete] const taskKey1 = this.datastore.key(['Task', 1]); const taskKey2 = this.datastore.key(['Task', 2]); - // [START datastore_batch_delete] const keys = [taskKey1, taskKey2]; await datastore.delete(keys); From e5cd25b28157f64c7c653f8d75fbff1f237329d6 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Thu, 5 Dec 2019 10:44:16 -0800 Subject: [PATCH 467/820] fix(deps): pin TypeScript below 3.7.0 --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 914d04950fe..e5d99ae3471 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -91,6 +91,6 @@ "proxyquire": "^2.1.0", "sinon": "^7.3.2", "tmp": "0.1.0", - "typescript": "~3.7.0" + "typescript": "3.6.4" } } From fd6128594401ab7c6cadeda1691d50abd8ce9fea Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2019 14:16:11 -0800 Subject: [PATCH 468/820] chore: release 5.0.1 (#543) --- handwritten/nodejs-datastore/CHANGELOG.md | 9 +++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index f9071c1df5a..6a0c9ebc632 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,15 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.1](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.0...v5.0.1) (2019-12-05) + + +### Bug Fixes + +* **deps:** pin TypeScript below 3.7.0 ([eeebcf6](https://www.github.com/googleapis/nodejs-datastore/commit/eeebcf6d53fd4040b536fe3537d8a4c9a3bdd5c3)) +* **deps:** update dependency @grpc/grpc-js to v0.6.12 ([#541](https://www.github.com/googleapis/nodejs-datastore/issues/541)) ([972d3e7](https://www.github.com/googleapis/nodejs-datastore/commit/972d3e7e37b161ca8404975e4f9f80887609268f)) +* **deps:** update dependency @grpc/grpc-js to v0.6.13 ([#548](https://www.github.com/googleapis/nodejs-datastore/issues/548)) ([f8948c6](https://www.github.com/googleapis/nodejs-datastore/commit/f8948c63924225866130eb81e7ed26becbc3e1a9)) + ## [5.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v4.5.2...v5.0.0) (2019-11-14) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e5d99ae3471..d877cb0d738 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.0", + "version": "5.0.1", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index fb217153fae..b637546af81 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.0", + "@google-cloud/datastore": "^5.0.1", "sinon": "^7.3.2" }, "devDependencies": { From f9af874ced4603532efa42018e22ff8cabbb5d39 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Thu, 12 Dec 2019 16:02:15 -0500 Subject: [PATCH 469/820] fix: update datastore_transactional_single_entity_group_read_only to consistently use transaction (#551) Fixes b/143866692 --- handwritten/nodejs-datastore/samples/concepts.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 0a1147de099..099d620bc64 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1143,13 +1143,13 @@ class Transaction extends TestHelper { const taskListKey = datastore.key(['TaskList', 'default']); await transaction.run(); - const [taskList] = await datastore.get(taskListKey); + const [taskList] = await transaction.get(taskListKey); const query = datastore.createQuery('Task').hasAncestor(taskListKey); - const [taskListEntities] = await datastore.runQuery(query); + const [taskListEntities] = await transaction.runQuery(query); await transaction.commit(); return [taskList, taskListEntities]; } catch (err) { - transaction.rollback(); + await transaction.rollback(); } } // [END datastore_transactional_single_entity_group_read_only] From 5c178c8db88edf738a17501ba8ad43e99d94047e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 13 Dec 2019 00:05:38 +0200 Subject: [PATCH 470/820] fix(deps): update dependency @grpc/grpc-js to v0.6.14 (#552) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d877cb0d738..f3bc5bb4c79 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.13", + "@grpc/grpc-js": "0.6.14", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 20f5074075153fb57e6996046609465838e08184 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2019 14:52:35 -0800 Subject: [PATCH 471/820] chore: release 5.0.2 (#554) --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 6a0c9ebc632..ed9774c00a0 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.2](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.1...v5.0.2) (2019-12-12) + + +### Bug Fixes + +* update datastore_transactional_single_entity_group_read_only to consistently use transaction ([#551](https://www.github.com/googleapis/nodejs-datastore/issues/551)) ([fbff2e7](https://www.github.com/googleapis/nodejs-datastore/commit/fbff2e7d2f054b157cc669c979a9e5acb09dd7a1)) +* **deps:** update dependency @grpc/grpc-js to v0.6.14 ([#552](https://www.github.com/googleapis/nodejs-datastore/issues/552)) ([f4df89c](https://www.github.com/googleapis/nodejs-datastore/commit/f4df89c50059541c75a7576c7264e3b7818871ea)) + ### [5.0.1](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.0...v5.0.1) (2019-12-05) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f3bc5bb4c79..80dbdce38e4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.1", + "version": "5.0.2", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index b637546af81..571e75f153a 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.1", + "@google-cloud/datastore": "^5.0.2", "sinon": "^7.3.2" }, "devDependencies": { From d2edcfa343b43784bff024f2c31ad03d7d01b88f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 20 Dec 2019 19:48:03 +0200 Subject: [PATCH 472/820] fix(deps): update dependency @grpc/grpc-js to v0.6.15 (#555) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 80dbdce38e4..4cadd1b5995 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.14", + "@grpc/grpc-js": "0.6.15", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 5443190077cd17c7a0b3532e3087bf3f8ec82b73 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 23 Dec 2019 21:17:59 -0500 Subject: [PATCH 473/820] docs: update jsdoc license/samples-README (#557) --- handwritten/nodejs-datastore/.jsdoc.js | 29 +++++++++---------- .../nodejs-datastore/samples/README.md | 16 ++++++---- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 5bbf2b4a534..afb05e3a0dc 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,18 +1,17 @@ -/*! - * Copyright 2018 Google LLC. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// 'use strict'; diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 46a186b323a..337cd27c473 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -26,6 +26,12 @@ Before running the samples, make sure you've followed the steps outlined in [Using the client library](https://github.com/googleapis/nodejs-datastore#using-the-client-library). +`cd samples` + +`npm install` + +`cd ..` + ## Samples @@ -39,7 +45,7 @@ View the [source code](https://github.com/googleapis/nodejs-datastore/blob/maste __Usage:__ -`node concepts.js` +`node samples/concepts.js` ----- @@ -56,7 +62,7 @@ View the [source code](https://github.com/googleapis/nodejs-datastore/blob/maste __Usage:__ -`node error.js` +`node samples/error.js` ----- @@ -73,7 +79,7 @@ View the [source code](https://github.com/googleapis/nodejs-datastore/blob/maste __Usage:__ -`node quickstart.js` +`node samples/quickstart.js` ----- @@ -128,7 +134,7 @@ View the [source code](https://github.com/googleapis/nodejs-datastore/blob/maste __Usage:__ -`node tasks.js` +`node samples/tasks.js` ----- @@ -175,4 +181,4 @@ __Usage:__ [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md -[product-docs]: https://cloud.google.com/datastore \ No newline at end of file +[product-docs]: https://cloud.google.com/datastore From 7e7c8d0011088f332510beda9636e19958da2228 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 27 Dec 2019 18:17:47 +0200 Subject: [PATCH 474/820] fix(deps): update dependency sinon to v8 (#560) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4cadd1b5995..7297660fce4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -89,7 +89,7 @@ "power-assert": "^1.6.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", - "sinon": "^7.3.2", + "sinon": "^8.0.0", "tmp": "0.1.0", "typescript": "3.6.4" } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 571e75f153a..5205501921f 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^5.0.2", - "sinon": "^7.3.2" + "sinon": "^8.0.0" }, "devDependencies": { "chai": "^4.2.0", From 90311714d392f7117485e101d6ebd9262d712d5c Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 27 Dec 2019 10:53:26 -0800 Subject: [PATCH 475/820] build: use c8 for coverage (#561) --- handwritten/nodejs-datastore/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7297660fce4..75710ceb490 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -31,7 +31,7 @@ "docs": "jsdoc -c .jsdoc.js", "lint": "gts check && eslint '**/*.js'", "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", - "test": "nyc mocha build/test", + "test": "c8 mocha build/test", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", "fix": "gts fix && eslint '**/*.js' --fix", @@ -85,7 +85,7 @@ "mocha": "^6.1.4", "mv": "^2.1.1", "ncp": "^2.0.0", - "nyc": "^14.1.1", + "c8": "^7.0.0", "power-assert": "^1.6.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", From 2b238dfa4d7b2cbed554277a49d7d9419ecd60af Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 30 Dec 2019 10:15:35 -0800 Subject: [PATCH 476/820] refactor: use explicit mocha imports (#563) --- handwritten/nodejs-datastore/samples/test/.eslintrc.yml | 3 --- handwritten/nodejs-datastore/samples/test/concepts.test.js | 1 + handwritten/nodejs-datastore/samples/test/error.test.js | 1 + handwritten/nodejs-datastore/samples/test/quickstart.test.js | 1 + handwritten/nodejs-datastore/samples/test/tasks.test.js | 1 + handwritten/nodejs-datastore/system-test/datastore.ts | 1 + handwritten/nodejs-datastore/test/.eslintrc.yml | 2 -- handwritten/nodejs-datastore/test/entity.ts | 1 + handwritten/nodejs-datastore/test/gapic-v1.js | 1 + handwritten/nodejs-datastore/test/index.ts | 1 + handwritten/nodejs-datastore/test/query.ts | 1 + handwritten/nodejs-datastore/test/request.ts | 1 + handwritten/nodejs-datastore/test/transaction.ts | 1 + 13 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 handwritten/nodejs-datastore/samples/test/.eslintrc.yml diff --git a/handwritten/nodejs-datastore/samples/test/.eslintrc.yml b/handwritten/nodejs-datastore/samples/test/.eslintrc.yml deleted file mode 100644 index 6db2a46c535..00000000000 --- a/handwritten/nodejs-datastore/samples/test/.eslintrc.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -env: - mocha: true diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js index 735eaca973e..d5a76d59e3c 100644 --- a/handwritten/nodejs-datastore/samples/test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -16,6 +16,7 @@ const concepts = require('../concepts'); const assert = require('assert'); +const {describe, it, before, after} = require('mocha'); let transaction; let metadata; diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js index b984a6021ad..e46de0bbadb 100644 --- a/handwritten/nodejs-datastore/samples/test/error.test.js +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -15,6 +15,7 @@ 'use strict'; const assert = require('assert'); +const {describe, it} = require('mocha'); const {execSync} = require('child_process'); const exec = cmd => execSync(cmd, { diff --git a/handwritten/nodejs-datastore/samples/test/quickstart.test.js b/handwritten/nodejs-datastore/samples/test/quickstart.test.js index 0899f46cafe..1334edf96aa 100644 --- a/handwritten/nodejs-datastore/samples/test/quickstart.test.js +++ b/handwritten/nodejs-datastore/samples/test/quickstart.test.js @@ -15,6 +15,7 @@ 'use strict'; const {assert} = require('chai'); +const {describe, it} = require('mocha'); const {execSync} = require('child_process'); const exec = cmd => execSync(cmd, {encoding: 'utf8'}); diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js index 1722b2bc7eb..10bf34bdfaa 100644 --- a/handwritten/nodejs-datastore/samples/test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -16,6 +16,7 @@ const {Datastore} = require('@google-cloud/datastore'); const {assert} = require('chai'); +const {describe, it, after} = require('mocha'); const {execSync} = require('child_process'); const exec = cmd => execSync(cmd, {encoding: 'utf8'}); diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index c6ad84d24ea..102c12a4007 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -13,6 +13,7 @@ // limitations under the License. import * as assert from 'assert'; +import {describe, it} from 'mocha'; import {Datastore} from '../src'; const assertRejects = require('assert-rejects'); diff --git a/handwritten/nodejs-datastore/test/.eslintrc.yml b/handwritten/nodejs-datastore/test/.eslintrc.yml index 40babe32121..5c38ea0d540 100644 --- a/handwritten/nodejs-datastore/test/.eslintrc.yml +++ b/handwritten/nodejs-datastore/test/.eslintrc.yml @@ -1,6 +1,4 @@ --- -env: - mocha: true rules: node/no-unpublished-require: off node/no-missing-require: off diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 8cce3128ea8..41aba414204 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -13,6 +13,7 @@ // limitations under the License. import * as assert from 'assert'; +import {describe, it} from 'mocha'; import * as extend from 'extend'; import * as sinon from 'sinon'; import {Datastore} from '../src'; diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index 2395fb12152..e2c90d594fe 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -15,6 +15,7 @@ 'use strict'; const assert = require('assert'); +const {describe, it} = require('mocha'); const datastoreModule = require('../src'); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 653c53f7d2f..93eca1d744a 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -13,6 +13,7 @@ // limitations under the License. import * as assert from 'assert'; +import {describe, it} from 'mocha'; import * as gax from 'google-gax'; import * as proxyquire from 'proxyquire'; diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 4da58d7d7d7..f93f346c6ed 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -13,6 +13,7 @@ // limitations under the License. import * as assert from 'assert'; +import {describe, it} from 'mocha'; const {Query} = require('../src/query'); import {Datastore} from '../src'; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 607646145a8..c562bd7c407 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -15,6 +15,7 @@ import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; +import {describe, it} from 'mocha'; import * as extend from 'extend'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index a4ef55772a0..cf8ef7d0a8c 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -15,6 +15,7 @@ import * as pfy from '@google-cloud/promisify'; import arrify = require('arrify'); import * as assert from 'assert'; +import {describe, it} from 'mocha'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; From 8699bec94e92c102be7c25b30f602b2b5da202c6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 31 Dec 2019 20:04:22 +0200 Subject: [PATCH 477/820] chore(deps): update dependency eslint-plugin-node to v11 (#562) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 75710ceb490..94d8ea2d107 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -73,7 +73,7 @@ "codecov": "^3.5.0", "eslint": "^6.0.0", "eslint-config-prettier": "^6.0.0", - "eslint-plugin-node": "^10.0.0", + "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", "gts": "^1.0.0", From ac35ced8584739d06f9fc0fa38c0c702896c896c Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2020 13:46:53 -0800 Subject: [PATCH 478/820] chore: release 5.0.3 (#556) --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index ed9774c00a0..0341271fd27 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.3](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.2...v5.0.3) (2019-12-31) + + +### Bug Fixes + +* **deps:** update dependency @grpc/grpc-js to v0.6.15 ([#555](https://www.github.com/googleapis/nodejs-datastore/issues/555)) ([c015c1c](https://www.github.com/googleapis/nodejs-datastore/commit/c015c1c9142a7f3ad5cb26799fbd533aeae09b23)) +* **deps:** update dependency sinon to v8 ([#560](https://www.github.com/googleapis/nodejs-datastore/issues/560)) ([2d78de4](https://www.github.com/googleapis/nodejs-datastore/commit/2d78de40ab0866f773ea756b8e4b101ea8901b39)) + ### [5.0.2](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.1...v5.0.2) (2019-12-12) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 94d8ea2d107..7aa15d4b730 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.2", + "version": "5.0.3", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5205501921f..8e17b8ba83d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.2", + "@google-cloud/datastore": "^5.0.3", "sinon": "^8.0.0" }, "devDependencies": { From 225798aa430880656e650b0574f7cdabe7c154b2 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 3 Jan 2020 10:26:46 -0800 Subject: [PATCH 479/820] build: add "**/*.d.ts" to coverage ignore rules --- handwritten/nodejs-datastore/.nycrc | 1 + .../nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 2739 ++++++++++++++++- 4 files changed, 2737 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/.nycrc b/handwritten/nodejs-datastore/.nycrc index 367688844eb..b18d5472b62 100644 --- a/handwritten/nodejs-datastore/.nycrc +++ b/handwritten/nodejs-datastore/.nycrc @@ -12,6 +12,7 @@ "**/scripts", "**/protos", "**/test", + "**/*.d.ts", ".jsdoc.js", "**/.jsdoc.js", "karma.conf.js", diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 4f116bf1510..58e6b592abd 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 1cb508eee63..31a6fb94921 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 834fa57fa57..20f57b3e820 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-11-27T12:14:30.142623Z", + "updateTime": "2020-01-03T12:13:04.574836Z", "sources": [ { "generator": { "name": "artman", - "version": "0.42.1", - "dockerImage": "googleapis/artman@sha256:c773192618c608a7a0415dd95282f841f8e6bcdef7dd760a988c93b77a64bd57" + "version": "0.43.0", + "dockerImage": "googleapis/artman@sha256:264654a37596a44b0668b8ce6ac41082d713f6ee150b3fc6425fa78cc64e4f20" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "d8896a3d8a191702a9e39f29cf4c2e16fa05f76d", - "internalRef": "282674885" + "sha": "4d45a6399e9444fbddaeb1c86aabfde210723714", + "internalRef": "287908369" } }, { @@ -35,5 +35,2734 @@ "config": "google/datastore/artman_datastore.yaml" } } + ], + "newFiles": [ + { + "path": "synth.metadata" + }, + { + "path": ".repo-metadata.json" + }, + { + "path": "CONTRIBUTING.md" + }, + { + "path": "linkinator.config.json" + }, + { + "path": ".prettierignore" + }, + { + "path": "tsconfig.json" + }, + { + "path": ".jsdoc.js" + }, + { + "path": ".gitignore" + }, + { + "path": "synth.py" + }, + { + "path": "CODE_OF_CONDUCT.md" + }, + { + "path": "README.md" + }, + { + "path": "package-lock.json" + }, + { + "path": ".prettierrc" + }, + { + "path": ".readme-partials.yml" + }, + { + "path": "codecov.yaml" + }, + { + "path": ".nycrc" + }, + { + "path": "package.json" + }, + { + "path": "webpack.config.js" + }, + { + "path": ".eslintrc.yml" + }, + { + "path": "tslint.json" + }, + { + "path": "renovate.json" + }, + { + "path": "LICENSE" + }, + { + "path": "CHANGELOG.md" + }, + { + "path": ".eslintignore" + }, + { + "path": ".github/PULL_REQUEST_TEMPLATE.md" + }, + { + "path": ".github/release-please.yml" + }, + { + "path": ".github/ISSUE_TEMPLATE/support_request.md" + }, + { + "path": ".github/ISSUE_TEMPLATE/bug_report.md" + }, + { + "path": ".github/ISSUE_TEMPLATE/feature_request.md" + }, + { + "path": ".kokoro/samples-test.sh" + }, + { + "path": ".kokoro/system-test.sh" + }, + { + "path": ".kokoro/docs.sh" + }, + { + "path": ".kokoro/lint.sh" + }, + { + "path": ".kokoro/.gitattributes" + }, + { + "path": ".kokoro/publish.sh" + }, + { + "path": ".kokoro/trampoline.sh" + }, + { + "path": ".kokoro/common.cfg" + }, + { + "path": ".kokoro/test.bat" + }, + { + "path": ".kokoro/test.sh" + }, + { + "path": ".kokoro/release/docs.sh" + }, + { + "path": ".kokoro/release/docs.cfg" + }, + { + "path": ".kokoro/release/common.cfg" + }, + { + "path": ".kokoro/release/publish.cfg" + }, + { + "path": ".kokoro/presubmit/node12/test.cfg" + }, + { + "path": ".kokoro/presubmit/node12/common.cfg" + }, + { + "path": ".kokoro/presubmit/node8/test.cfg" + }, + { + "path": ".kokoro/presubmit/node8/common.cfg" + }, + { + "path": ".kokoro/presubmit/windows/test.cfg" + }, + { + "path": ".kokoro/presubmit/windows/common.cfg" + }, + { + "path": ".kokoro/presubmit/node10/lint.cfg" + }, + { + "path": ".kokoro/presubmit/node10/system-test.cfg" + }, + { + "path": ".kokoro/presubmit/node10/test.cfg" + }, + { + "path": ".kokoro/presubmit/node10/docs.cfg" + }, + { + "path": ".kokoro/presubmit/node10/common.cfg" + }, + { + "path": ".kokoro/presubmit/node10/samples-test.cfg" + }, + { + "path": ".kokoro/continuous/node12/test.cfg" + }, + { + "path": ".kokoro/continuous/node12/common.cfg" + }, + { + "path": ".kokoro/continuous/node8/test.cfg" + }, + { + "path": ".kokoro/continuous/node8/common.cfg" + }, + { + "path": ".kokoro/continuous/node10/lint.cfg" + }, + { + "path": ".kokoro/continuous/node10/system-test.cfg" + }, + { + "path": ".kokoro/continuous/node10/test.cfg" + }, + { + "path": ".kokoro/continuous/node10/docs.cfg" + }, + { + "path": ".kokoro/continuous/node10/common.cfg" + }, + { + "path": ".kokoro/continuous/node10/samples-test.cfg" + }, + { + "path": "test/request.ts" + }, + { + "path": "test/gapic-v1.js" + }, + { + "path": "test/entity.ts" + }, + { + "path": "test/mocha.opts" + }, + { + "path": "test/index.ts" + }, + { + "path": "test/query.ts" + }, + { + "path": "test/.eslintrc.yml" + }, + { + "path": "test/transaction.ts" + }, + { + "path": "system-test/install.ts" + }, + { + "path": "system-test/datastore.ts" + }, + { + "path": "system-test/data/index.yaml" + }, + { + "path": "system-test/fixtures/sample/tsconfig.json" + }, + { + "path": "system-test/fixtures/sample/package.json" + }, + { + "path": "system-test/fixtures/sample/src/index.ts" + }, + { + "path": "build/test/request.d.ts" + }, + { + "path": "build/test/entity.d.ts" + }, + { + "path": "build/test/gapic-v1.js" + }, + { + "path": "build/test/transaction.js.map" + }, + { + "path": "build/test/index.js" + }, + { + "path": "build/test/request.js" + }, + { + "path": "build/test/entity.js" + }, + { + "path": "build/test/entity.js.map" + }, + { + "path": "build/test/transaction.js" + }, + { + "path": "build/test/query.js.map" + }, + { + "path": "build/test/index.js.map" + }, + { + "path": "build/test/transaction.d.ts" + }, + { + "path": "build/test/query.d.ts" + }, + { + "path": "build/test/query.js" + }, + { + "path": "build/test/index.d.ts" + }, + { + "path": "build/test/request.js.map" + }, + { + "path": "build/system-test/datastore.d.ts" + }, + { + "path": "build/system-test/install.d.ts" + }, + { + "path": "build/system-test/datastore.js.map" + }, + { + "path": "build/system-test/install.js" + }, + { + "path": "build/system-test/install.js.map" + }, + { + "path": "build/system-test/datastore.js" + }, + { + "path": "build/protos/protos.d.ts" + }, + { + "path": "build/protos/protos.js" + }, + { + "path": "build/protos/protos.json" + }, + { + "path": "build/protos/app_engine_key.proto" + }, + { + "path": "build/protos/google/datastore/v1/entity.proto" + }, + { + "path": "build/protos/google/datastore/v1/query.proto" + }, + { + "path": "build/protos/google/datastore/v1/datastore.proto" + }, + { + "path": "build/proto/datastore.d.ts" + }, + { + "path": "build/proto/entity.d.ts" + }, + { + "path": "build/proto/app_engine_key.d.ts" + }, + { + "path": "build/src/request.d.ts" + }, + { + "path": "build/src/entity.d.ts" + }, + { + "path": "build/src/transaction.js.map" + }, + { + "path": "build/src/index.js" + }, + { + "path": "build/src/request.js" + }, + { + "path": "build/src/entity.js" + }, + { + "path": "build/src/entity.js.map" + }, + { + "path": "build/src/transaction.js" + }, + { + "path": "build/src/query.js.map" + }, + { + "path": "build/src/index.js.map" + }, + { + "path": "build/src/transaction.d.ts" + }, + { + "path": "build/src/query.d.ts" + }, + { + "path": "build/src/query.js" + }, + { + "path": "build/src/index.d.ts" + }, + { + "path": "build/src/request.js.map" + }, + { + "path": "build/src/v1/datastore_client_config.json" + }, + { + "path": "build/src/v1/index.js" + }, + { + "path": "build/src/v1/datastore_proto_list.json" + }, + { + "path": "build/src/v1/datastore_client.d.ts" + }, + { + "path": "build/src/v1/datastore_client.js" + }, + { + "path": "build/src/v1/index.d.ts" + }, + { + "path": "build/src/v1/doc/google/protobuf/doc_wrappers.js" + }, + { + "path": "build/src/v1/doc/google/datastore/v1/doc_entity.js" + }, + { + "path": "build/src/v1/doc/google/datastore/v1/doc_query.js" + }, + { + "path": "build/src/v1/doc/google/datastore/v1/doc_datastore.js" + }, + { + "path": "protos/protos.d.ts" + }, + { + "path": "protos/protos.js" + }, + { + "path": "protos/protos.json" + }, + { + "path": "protos/app_engine_key.proto" + }, + { + "path": "protos/google/datastore/v1/entity.proto" + }, + { + "path": "protos/google/datastore/v1/query.proto" + }, + { + "path": "protos/google/datastore/v1/datastore.proto" + }, + { + "path": ".git/shallow" + }, + { + "path": ".git/HEAD" + }, + { + "path": ".git/config" + }, + { + "path": ".git/packed-refs" + }, + { + "path": ".git/index" + }, + { + "path": ".git/objects/pack/pack-b568922c81c3efa2395cb33352a3f2693f0e1afd.pack" + }, + { + "path": ".git/objects/pack/pack-b568922c81c3efa2395cb33352a3f2693f0e1afd.idx" + }, + { + "path": ".git/logs/HEAD" + }, + { + "path": ".git/logs/refs/heads/master" + }, + { + "path": ".git/logs/refs/heads/autosynth" + }, + { + "path": ".git/logs/refs/remotes/origin/HEAD" + }, + { + "path": ".git/refs/heads/master" + }, + { + "path": ".git/refs/heads/autosynth" + }, + { + "path": ".git/refs/remotes/origin/HEAD" + }, + { + "path": ".git/refs/tags/v5.0.3" + }, + { + "path": "proto/datastore.d.ts" + }, + { + "path": "proto/entity.d.ts" + }, + { + "path": "proto/app_engine_key.d.ts" + }, + { + "path": "src/service_proto_list.json" + }, + { + "path": "src/request.ts" + }, + { + "path": "src/entity.ts" + }, + { + "path": "src/index.ts" + }, + { + "path": "src/query.ts" + }, + { + "path": "src/browser.js" + }, + { + "path": "src/.eslintrc.yml" + }, + { + "path": "src/transaction.ts" + }, + { + "path": "src/v1/datastore_client_config.json" + }, + { + "path": "src/v1/index.js" + }, + { + "path": "src/v1/datastore_proto_list.json" + }, + { + "path": "src/v1/datastore_client.d.ts" + }, + { + "path": "src/v1/datastore_client.js" + }, + { + "path": "src/v1/index.d.ts" + }, + { + "path": "src/v1/doc/google/protobuf/doc_wrappers.js" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_entity.js" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_query.js" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_datastore.js" + }, + { + "path": "node_modules/progress/package.json" + }, + { + "path": "node_modules/is-ci/package.json" + }, + { + "path": "node_modules/lolex/package.json" + }, + { + "path": "node_modules/module-not-found-error/package.json" + }, + { + "path": "node_modules/lru-cache/package.json" + }, + { + "path": "node_modules/destroy/package.json" + }, + { + "path": "node_modules/power-assert-context-formatter/package.json" + }, + { + "path": "node_modules/fast-json-stable-stringify/package.json" + }, + { + "path": "node_modules/nice-try/package.json" + }, + { + "path": "node_modules/which-module/package.json" + }, + { + "path": "node_modules/array-find/package.json" + }, + { + "path": "node_modules/catharsis/package.json" + }, + { + "path": "node_modules/is-promise/package.json" + }, + { + "path": "node_modules/v8-compile-cache/package.json" + }, + { + "path": "node_modules/doctrine/package.json" + }, + { + "path": "node_modules/callsites/package.json" + }, + { + "path": "node_modules/diff/package.json" + }, + { + "path": "node_modules/hosted-git-info/package.json" + }, + { + "path": "node_modules/color-name/package.json" + }, + { + "path": "node_modules/defer-to-connect/package.json" + }, + { + "path": "node_modules/unpipe/package.json" + }, + { + "path": "node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/http-errors/package.json" + }, + { + "path": "node_modules/eventemitter3/package.json" + }, + { + "path": "node_modules/esutils/package.json" + }, + { + "path": "node_modules/npm-run-path/package.json" + }, + { + "path": "node_modules/npm-run-path/node_modules/path-key/package.json" + }, + { + "path": "node_modules/he/package.json" + }, + { + "path": "node_modules/on-finished/package.json" + }, + { + "path": "node_modules/linkinator/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/update-notifier/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/dot-prop/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/redent/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/semver-diff/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/map-obj/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/meow/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/term-size/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/crypto-random-string/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/indent-string/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/camelcase-keys/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/is-obj/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/read-pkg-up/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/is-path-inside/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/boxen/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/chalk/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/arrify/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/widest-line/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/global-dirs/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/parse-json/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/xdg-basedir/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/is-npm/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/read-pkg/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/read-pkg/node_modules/type-fest/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/is-installed-globally/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/trim-newlines/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/unique-string/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/strip-indent/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/quick-lru/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/minimist-options/package.json" + }, + { + "path": "node_modules/linkinator/node_modules/configstore/package.json" + }, + { + "path": "node_modules/update-notifier/package.json" + }, + { + "path": "node_modules/p-cancelable/package.json" + }, + { + "path": "node_modules/markdown-it/package.json" + }, + { + "path": "node_modules/dot-prop/package.json" + }, + { + "path": "node_modules/require-main-filename/package.json" + }, + { + "path": "node_modules/fast-diff/package.json" + }, + { + "path": "node_modules/lodash.camelcase/package.json" + }, + { + "path": "node_modules/mv/package.json" + }, + { + "path": "node_modules/mv/node_modules/rimraf/package.json" + }, + { + "path": "node_modules/mv/node_modules/glob/package.json" + }, + { + "path": "node_modules/redent/package.json" + }, + { + "path": "node_modules/resolve/package.json" + }, + { + "path": "node_modules/globals/package.json" + }, + { + "path": "node_modules/range-parser/package.json" + }, + { + "path": "node_modules/string.prototype.trimright/package.json" + }, + { + "path": "node_modules/inflight/package.json" + }, + { + "path": "node_modules/debug/package.json" + }, + { + "path": "node_modules/htmlparser2/package.json" + }, + { + "path": "node_modules/semver-diff/package.json" + }, + { + "path": "node_modules/semver-diff/node_modules/semver/package.json" + }, + { + "path": "node_modules/tsutils/package.json" + }, + { + "path": "node_modules/multi-stage-sourcemap/package.json" + }, + { + "path": "node_modules/multi-stage-sourcemap/node_modules/source-map/package.json" + }, + { + "path": "node_modules/ms/package.json" + }, + { + "path": "node_modules/linkify-it/package.json" + }, + { + "path": "node_modules/through/package.json" + }, + { + "path": "node_modules/power-assert-renderer-file/package.json" + }, + { + "path": "node_modules/string-width/package.json" + }, + { + "path": "node_modules/html-escaper/package.json" + }, + { + "path": "node_modules/type/package.json" + }, + { + "path": "node_modules/type-fest/package.json" + }, + { + "path": "node_modules/is/package.json" + }, + { + "path": "node_modules/intelli-espower-loader/package.json" + }, + { + "path": "node_modules/parseurl/package.json" + }, + { + "path": "node_modules/buffer-from/package.json" + }, + { + "path": "node_modules/google-p12-pem/package.json" + }, + { + "path": "node_modules/get-caller-file/package.json" + }, + { + "path": "node_modules/klaw/package.json" + }, + { + "path": "node_modules/map-obj/package.json" + }, + { + "path": "node_modules/node-fetch/package.json" + }, + { + "path": "node_modules/jsonexport/package.json" + }, + { + "path": "node_modules/isexe/package.json" + }, + { + "path": "node_modules/split-array-stream/readme.md" + }, + { + "path": "node_modules/split-array-stream/package.json" + }, + { + "path": "node_modules/split-array-stream/license" + }, + { + "path": "node_modules/split-array-stream/build/src/index.js" + }, + { + "path": "node_modules/split-array-stream/build/src/index.js.map" + }, + { + "path": "node_modules/split-array-stream/build/src/index.d.ts" + }, + { + "path": "node_modules/escallmatch/package.json" + }, + { + "path": "node_modules/escallmatch/node_modules/esprima/package.json" + }, + { + "path": "node_modules/espower/package.json" + }, + { + "path": "node_modules/espower/node_modules/source-map/package.json" + }, + { + "path": "node_modules/run-async/package.json" + }, + { + "path": "node_modules/validate-npm-package-license/package.json" + }, + { + "path": "node_modules/file-entry-cache/package.json" + }, + { + "path": "node_modules/meow/package.json" + }, + { + "path": "node_modules/meow/node_modules/camelcase/package.json" + }, + { + "path": "node_modules/meow/node_modules/yargs-parser/package.json" + }, + { + "path": "node_modules/concat-map/package.json" + }, + { + "path": "node_modules/term-size/package.json" + }, + { + "path": "node_modules/xmlcreate/package.json" + }, + { + "path": "node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/yallist/package.json" + }, + { + "path": "node_modules/json-bigint/package.json" + }, + { + "path": "node_modules/stream-events/package.json" + }, + { + "path": "node_modules/resolve-from/package.json" + }, + { + "path": "node_modules/is-buffer/package.json" + }, + { + "path": "node_modules/cliui/package.json" + }, + { + "path": "node_modules/toidentifier/package.json" + }, + { + "path": "node_modules/balanced-match/package.json" + }, + { + "path": "node_modules/assert-rejects/package.json" + }, + { + "path": "node_modules/marked/package.json" + }, + { + "path": "node_modules/wrappy/package.json" + }, + { + "path": "node_modules/jsdoc-region-tag/package.json" + }, + { + "path": "node_modules/json-stable-stringify-without-jsonify/package.json" + }, + { + "path": "node_modules/glob-parent/package.json" + }, + { + "path": "node_modules/xtend/package.json" + }, + { + "path": "node_modules/is-arguments/package.json" + }, + { + "path": "node_modules/set-blocking/package.json" + }, + { + "path": "node_modules/istanbul-lib-report/package.json" + }, + { + "path": "node_modules/load-json-file/package.json" + }, + { + "path": "node_modules/ansi-align/package.json" + }, + { + "path": "node_modules/ansi-align/node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/ansi-align/node_modules/string-width/package.json" + }, + { + "path": "node_modules/ansi-align/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/ansi-align/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/ansi-align/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/duplexer3/package.json" + }, + { + "path": "node_modules/esprima/package.json" + }, + { + "path": "node_modules/is-stream-ended/package.json" + }, + { + "path": "node_modules/minimatch/package.json" + }, + { + "path": "node_modules/crypto-random-string/package.json" + }, + { + "path": "node_modules/growl/package.json" + }, + { + "path": "node_modules/string.prototype.trimleft/package.json" + }, + { + "path": "node_modules/istanbul-lib-coverage/package.json" + }, + { + "path": "node_modules/normalize-package-data/package.json" + }, + { + "path": "node_modules/normalize-package-data/node_modules/semver/package.json" + }, + { + "path": "node_modules/fast-text-encoding/package.json" + }, + { + "path": "node_modules/server-destroy/package.json" + }, + { + "path": "node_modules/prelude-ls/package.json" + }, + { + "path": "node_modules/d/package.json" + }, + { + "path": "node_modules/protobufjs/package.json" + }, + { + "path": "node_modules/protobufjs/node_modules/@types/node/package.json" + }, + { + "path": "node_modules/domhandler/package.json" + }, + { + "path": "node_modules/ansi-escapes/package.json" + }, + { + "path": "node_modules/power-assert-renderer-base/package.json" + }, + { + "path": "node_modules/boolbase/package.json" + }, + { + "path": "node_modules/indent-string/package.json" + }, + { + "path": "node_modules/lodash/package.json" + }, + { + "path": "node_modules/taffydb/package.json" + }, + { + "path": "node_modules/extend/package.json" + }, + { + "path": "node_modules/is-yarn-global/package.json" + }, + { + "path": "node_modules/dom-serializer/package.json" + }, + { + "path": "node_modules/end-of-stream/package.json" + }, + { + "path": "node_modules/log-symbols/package.json" + }, + { + "path": "node_modules/is-callable/package.json" + }, + { + "path": "node_modules/es5-ext/package.json" + }, + { + "path": "node_modules/stringifier/package.json" + }, + { + "path": "node_modules/es6-weak-map/package.json" + }, + { + "path": "node_modules/camelcase-keys/package.json" + }, + { + "path": "node_modules/camelcase-keys/node_modules/camelcase/package.json" + }, + { + "path": "node_modules/decompress-response/package.json" + }, + { + "path": "node_modules/js-yaml/package.json" + }, + { + "path": "node_modules/cli-boxes/package.json" + }, + { + "path": "node_modules/is-obj/package.json" + }, + { + "path": "node_modules/is-typedarray/package.json" + }, + { + "path": "node_modules/registry-auth-token/package.json" + }, + { + "path": "node_modules/read-pkg-up/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/p-locate/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/locate-path/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/p-try/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/p-limit/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/find-up/package.json" + }, + { + "path": "node_modules/read-pkg-up/node_modules/path-exists/package.json" + }, + { + "path": "node_modules/buffer-equal-constant-time/package.json" + }, + { + "path": "node_modules/@bcoe/v8-coverage/package.json" + }, + { + "path": "node_modules/eslint-scope/package.json" + }, + { + "path": "node_modules/stream-shift/package.json" + }, + { + "path": "node_modules/is-extglob/package.json" + }, + { + "path": "node_modules/typedarray-to-buffer/index.js" + }, + { + "path": "node_modules/typedarray-to-buffer/README.md" + }, + { + "path": "node_modules/typedarray-to-buffer/.airtap.yml" + }, + { + "path": "node_modules/typedarray-to-buffer/.travis.yml" + }, + { + "path": "node_modules/typedarray-to-buffer/package.json" + }, + { + "path": "node_modules/typedarray-to-buffer/LICENSE" + }, + { + "path": "node_modules/typedarray-to-buffer/test/basic.js" + }, + { + "path": "node_modules/restore-cursor/package.json" + }, + { + "path": "node_modules/mimic-response/package.json" + }, + { + "path": "node_modules/normalize-url/package.json" + }, + { + "path": "node_modules/fresh/package.json" + }, + { + "path": "node_modules/imurmurhash/package.json" + }, + { + "path": "node_modules/indexof/package.json" + }, + { + "path": "node_modules/codecov/package.json" + }, + { + "path": "node_modules/ajv/package.json" + }, + { + "path": "node_modules/is-path-inside/package.json" + }, + { + "path": "node_modules/import-lazy/package.json" + }, + { + "path": "node_modules/json-schema-traverse/package.json" + }, + { + "path": "node_modules/ncp/package.json" + }, + { + "path": "node_modules/rxjs/package.json" + }, + { + "path": "node_modules/p-locate/package.json" + }, + { + "path": "node_modules/figures/package.json" + }, + { + "path": "node_modules/underscore/package.json" + }, + { + "path": "node_modules/finalhandler/package.json" + }, + { + "path": "node_modules/finalhandler/node_modules/debug/package.json" + }, + { + "path": "node_modules/finalhandler/node_modules/ms/package.json" + }, + { + "path": "node_modules/ignore/package.json" + }, + { + "path": "node_modules/argv/package.json" + }, + { + "path": "node_modules/path-is-absolute/package.json" + }, + { + "path": "node_modules/graceful-fs/package.json" + }, + { + "path": "node_modules/currently-unhandled/package.json" + }, + { + "path": "node_modules/google-gax/package.json" + }, + { + "path": "node_modules/google-gax/node_modules/semver/package.json" + }, + { + "path": "node_modules/onetime/package.json" + }, + { + "path": "node_modules/path-key/package.json" + }, + { + "path": "node_modules/core-util-is/package.json" + }, + { + "path": "node_modules/array-filter/package.json" + }, + { + "path": "node_modules/prepend-http/package.json" + }, + { + "path": "node_modules/write/package.json" + }, + { + "path": "node_modules/duplexify/package.json" + }, + { + "path": "node_modules/duplexify/node_modules/readable-stream/package.json" + }, + { + "path": "node_modules/duplexify/node_modules/string_decoder/package.json" + }, + { + "path": "node_modules/duplexify/node_modules/safe-buffer/package.json" + }, + { + "path": "node_modules/camelcase/package.json" + }, + { + "path": "node_modules/error-ex/package.json" + }, + { + "path": "node_modules/empower-assert/package.json" + }, + { + "path": "node_modules/boxen/package.json" + }, + { + "path": "node_modules/boxen/node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/boxen/node_modules/string-width/package.json" + }, + { + "path": "node_modules/boxen/node_modules/type-fest/package.json" + }, + { + "path": "node_modules/boxen/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/boxen/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/boxen/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/node-environment-flags/package.json" + }, + { + "path": "node_modules/node-environment-flags/node_modules/semver/package.json" + }, + { + "path": "node_modules/c8/package.json" + }, + { + "path": "node_modules/gcp-metadata/package.json" + }, + { + "path": "node_modules/json-buffer/package.json" + }, + { + "path": "node_modules/mkdirp/package.json" + }, + { + "path": "node_modules/bluebird/package.json" + }, + { + "path": "node_modules/shebang-command/package.json" + }, + { + "path": "node_modules/serve-static/package.json" + }, + { + "path": "node_modules/path-parse/package.json" + }, + { + "path": "node_modules/mime/package.json" + }, + { + "path": "node_modules/yargs-unparser/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/color-name/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/string-width/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/cliui/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/p-locate/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/locate-path/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/ansi-styles/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/find-up/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/wrap-ansi/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/path-exists/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/yargs/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/color-convert/package.json" + }, + { + "path": "node_modules/yargs-unparser/node_modules/yargs-parser/package.json" + }, + { + "path": "node_modules/lines-and-columns/package.json" + }, + { + "path": "node_modules/is-url/package.json" + }, + { + "path": "node_modules/chalk/package.json" + }, + { + "path": "node_modules/chalk/node_modules/color-name/package.json" + }, + { + "path": "node_modules/chalk/node_modules/has-flag/package.json" + }, + { + "path": "node_modules/chalk/node_modules/ansi-styles/package.json" + }, + { + "path": "node_modules/chalk/node_modules/supports-color/package.json" + }, + { + "path": "node_modules/chalk/node_modules/color-convert/package.json" + }, + { + "path": "node_modules/path-to-regexp/package.json" + }, + { + "path": "node_modules/path-to-regexp/node_modules/isarray/package.json" + }, + { + "path": "node_modules/locate-path/package.json" + }, + { + "path": "node_modules/spdx-expression-parse/package.json" + }, + { + "path": "node_modules/power-assert-util-string-width/package.json" + }, + { + "path": "node_modules/esquery/package.json" + }, + { + "path": "node_modules/to-readable-stream/package.json" + }, + { + "path": "node_modules/jsdoc-fresh/package.json" + }, + { + "path": "node_modules/jsdoc-fresh/node_modules/taffydb/package.json" + }, + { + "path": "node_modules/espower-location-detector/package.json" + }, + { + "path": "node_modules/espower-location-detector/node_modules/source-map/package.json" + }, + { + "path": "node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/is-arrayish/package.json" + }, + { + "path": "node_modules/prettier-linter-helpers/package.json" + }, + { + "path": "node_modules/chardet/package.json" + }, + { + "path": "node_modules/amdefine/package.json" + }, + { + "path": "node_modules/http-cache-semantics/package.json" + }, + { + "path": "node_modules/concat-stream/package.json" + }, + { + "path": "node_modules/has-flag/package.json" + }, + { + "path": "node_modules/cheerio/package.json" + }, + { + "path": "node_modules/domelementtype/package.json" + }, + { + "path": "node_modules/@szmarczak/http-timer/package.json" + }, + { + "path": "node_modules/tmp/package.json" + }, + { + "path": "node_modules/tmp/node_modules/rimraf/package.json" + }, + { + "path": "node_modules/entities/package.json" + }, + { + "path": "node_modules/execa/package.json" + }, + { + "path": "node_modules/execa/node_modules/lru-cache/package.json" + }, + { + "path": "node_modules/execa/node_modules/yallist/package.json" + }, + { + "path": "node_modules/execa/node_modules/shebang-command/package.json" + }, + { + "path": "node_modules/execa/node_modules/is-stream/package.json" + }, + { + "path": "node_modules/execa/node_modules/which/package.json" + }, + { + "path": "node_modules/execa/node_modules/shebang-regex/package.json" + }, + { + "path": "node_modules/execa/node_modules/cross-spawn/package.json" + }, + { + "path": "node_modules/strip-bom/package.json" + }, + { + "path": "node_modules/is-regexp/package.json" + }, + { + "path": "node_modules/argparse/package.json" + }, + { + "path": "node_modules/has/package.json" + }, + { + "path": "node_modules/ee-first/package.json" + }, + { + "path": "node_modules/object-inspect/package.json" + }, + { + "path": "node_modules/deep-equal/package.json" + }, + { + "path": "node_modules/table/package.json" + }, + { + "path": "node_modules/table/node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/table/node_modules/string-width/package.json" + }, + { + "path": "node_modules/table/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/table/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/table/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/spdx-correct/package.json" + }, + { + "path": "node_modules/get-stream/package.json" + }, + { + "path": "node_modules/sinon/package.json" + }, + { + "path": "node_modules/power-assert/package.json" + }, + { + "path": "node_modules/statuses/package.json" + }, + { + "path": "node_modules/@istanbuljs/schema/package.json" + }, + { + "path": "node_modules/es6-set/package.json" + }, + { + "path": "node_modules/es6-set/node_modules/es6-symbol/package.json" + }, + { + "path": "node_modules/proxyquire/package.json" + }, + { + "path": "node_modules/istanbul-reports/package.json" + }, + { + "path": "node_modules/@grpc/grpc-js/package.json" + }, + { + "path": "node_modules/@grpc/proto-loader/package.json" + }, + { + "path": "node_modules/lowercase-keys/package.json" + }, + { + "path": "node_modules/etag/package.json" + }, + { + "path": "node_modules/y18n/package.json" + }, + { + "path": "node_modules/diff-match-patch/package.json" + }, + { + "path": "node_modules/merge-descriptors/package.json" + }, + { + "path": "node_modules/es6-iterator/package.json" + }, + { + "path": "node_modules/eslint-plugin-node/package.json" + }, + { + "path": "node_modules/eslint-plugin-node/node_modules/ignore/package.json" + }, + { + "path": "node_modules/eslint-plugin-node/node_modules/eslint-utils/package.json" + }, + { + "path": "node_modules/natural-compare/package.json" + }, + { + "path": "node_modules/uuid/package.json" + }, + { + "path": "node_modules/event-target-shim/package.json" + }, + { + "path": "node_modules/arrify/package.json" + }, + { + "path": "node_modules/widest-line/package.json" + }, + { + "path": "node_modules/widest-line/node_modules/string-width/package.json" + }, + { + "path": "node_modules/widest-line/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/widest-line/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/widest-line/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/ignore-walk/package.json" + }, + { + "path": "node_modules/util-deprecate/package.json" + }, + { + "path": "node_modules/function-bind/package.json" + }, + { + "path": "node_modules/object-is/package.json" + }, + { + "path": "node_modules/@types/color-name/package.json" + }, + { + "path": "node_modules/@types/mv/package.json" + }, + { + "path": "node_modules/@types/is/package.json" + }, + { + "path": "node_modules/@types/node/package.json" + }, + { + "path": "node_modules/@types/istanbul-lib-coverage/package.json" + }, + { + "path": "node_modules/@types/normalize-package-data/package.json" + }, + { + "path": "node_modules/@types/extend/package.json" + }, + { + "path": "node_modules/@types/ncp/package.json" + }, + { + "path": "node_modules/@types/duplexify/package.json" + }, + { + "path": "node_modules/@types/tmp/package.json" + }, + { + "path": "node_modules/@types/sinon/package.json" + }, + { + "path": "node_modules/@types/proxyquire/package.json" + }, + { + "path": "node_modules/@types/is-windows/package.json" + }, + { + "path": "node_modules/@types/mocha/package.json" + }, + { + "path": "node_modules/@types/minimist/package.json" + }, + { + "path": "node_modules/@types/fs-extra/package.json" + }, + { + "path": "node_modules/@types/long/package.json" + }, + { + "path": "node_modules/is-windows/package.json" + }, + { + "path": "node_modules/levn/package.json" + }, + { + "path": "node_modules/google-proto-files/package.json" + }, + { + "path": "node_modules/pseudomap/package.json" + }, + { + "path": "node_modules/global-dirs/package.json" + }, + { + "path": "node_modules/power-assert-renderer-diagram/package.json" + }, + { + "path": "node_modules/is-stream/package.json" + }, + { + "path": "node_modules/es6-symbol/package.json" + }, + { + "path": "node_modules/parse-json/package.json" + }, + { + "path": "node_modules/xdg-basedir/package.json" + }, + { + "path": "node_modules/spdx-license-ids/package.json" + }, + { + "path": "node_modules/google-auth-library/package.json" + }, + { + "path": "node_modules/brace-expansion/package.json" + }, + { + "path": "node_modules/builtin-modules/package.json" + }, + { + "path": "node_modules/tslint/package.json" + }, + { + "path": "node_modules/tslint/node_modules/semver/package.json" + }, + { + "path": "node_modules/type-name/package.json" + }, + { + "path": "node_modules/define-properties/package.json" + }, + { + "path": "node_modules/universal-deep-strict-equal/package.json" + }, + { + "path": "node_modules/jws/package.json" + }, + { + "path": "node_modules/nth-check/package.json" + }, + { + "path": "node_modules/empower/package.json" + }, + { + "path": "node_modules/send/package.json" + }, + { + "path": "node_modules/send/node_modules/debug/package.json" + }, + { + "path": "node_modules/send/node_modules/debug/node_modules/ms/package.json" + }, + { + "path": "node_modules/send/node_modules/ms/package.json" + }, + { + "path": "node_modules/send/node_modules/mime/package.json" + }, + { + "path": "node_modules/require-directory/package.json" + }, + { + "path": "node_modules/object.assign/package.json" + }, + { + "path": "node_modules/is-npm/package.json" + }, + { + "path": "node_modules/min-indent/package.json" + }, + { + "path": "node_modules/functional-red-black-tree/package.json" + }, + { + "path": "node_modules/read-pkg/package.json" + }, + { + "path": "node_modules/registry-url/package.json" + }, + { + "path": "node_modules/is-regex/package.json" + }, + { + "path": "node_modules/es-abstract/package.json" + }, + { + "path": "node_modules/parent-module/package.json" + }, + { + "path": "node_modules/type-detect/package.json" + }, + { + "path": "node_modules/signal-exit/package.json" + }, + { + "path": "node_modules/import-fresh/package.json" + }, + { + "path": "node_modules/keyv/package.json" + }, + { + "path": "node_modules/estraverse/package.json" + }, + { + "path": "node_modules/fast-deep-equal/package.json" + }, + { + "path": "node_modules/mute-stream/package.json" + }, + { + "path": "node_modules/power-assert-context-traversal/package.json" + }, + { + "path": "node_modules/rimraf/package.json" + }, + { + "path": "node_modules/is-installed-globally/package.json" + }, + { + "path": "node_modules/get-stdin/package.json" + }, + { + "path": "node_modules/make-dir/package.json" + }, + { + "path": "node_modules/es6-promise/package.json" + }, + { + "path": "node_modules/os-tmpdir/package.json" + }, + { + "path": "node_modules/retry-request/package.json" + }, + { + "path": "node_modules/retry-request/node_modules/debug/package.json" + }, + { + "path": "node_modules/cli-cursor/package.json" + }, + { + "path": "node_modules/ext/package.json" + }, + { + "path": "node_modules/ext/node_modules/type/package.json" + }, + { + "path": "node_modules/is-symbol/package.json" + }, + { + "path": "node_modules/css-what/package.json" + }, + { + "path": "node_modules/punycode/package.json" + }, + { + "path": "node_modules/setprototypeof/package.json" + }, + { + "path": "node_modules/word-wrap/package.json" + }, + { + "path": "node_modules/foreground-child/package.json" + }, + { + "path": "node_modules/@sinonjs/text-encoding/package.json" + }, + { + "path": "node_modules/@sinonjs/samsam/package.json" + }, + { + "path": "node_modules/@sinonjs/commons/package.json" + }, + { + "path": "node_modules/@sinonjs/formatio/package.json" + }, + { + "path": "node_modules/es6-map/package.json" + }, + { + "path": "node_modules/call-signature/package.json" + }, + { + "path": "node_modules/package-json/package.json" + }, + { + "path": "node_modules/css-select/package.json" + }, + { + "path": "node_modules/path-is-inside/package.json" + }, + { + "path": "node_modules/eslint-plugin-prettier/package.json" + }, + { + "path": "node_modules/p-finally/package.json" + }, + { + "path": "node_modules/inquirer/package.json" + }, + { + "path": "node_modules/inquirer/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/inquirer/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/acorn-jsx/package.json" + }, + { + "path": "node_modules/glob/package.json" + }, + { + "path": "node_modules/mocha/package.json" + }, + { + "path": "node_modules/mocha/node_modules/diff/package.json" + }, + { + "path": "node_modules/mocha/node_modules/color-name/package.json" + }, + { + "path": "node_modules/mocha/node_modules/emoji-regex/package.json" + }, + { + "path": "node_modules/mocha/node_modules/ms/package.json" + }, + { + "path": "node_modules/mocha/node_modules/string-width/package.json" + }, + { + "path": "node_modules/mocha/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/mocha/node_modules/cliui/package.json" + }, + { + "path": "node_modules/mocha/node_modules/p-locate/package.json" + }, + { + "path": "node_modules/mocha/node_modules/locate-path/package.json" + }, + { + "path": "node_modules/mocha/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/mocha/node_modules/has-flag/package.json" + }, + { + "path": "node_modules/mocha/node_modules/glob/package.json" + }, + { + "path": "node_modules/mocha/node_modules/ansi-styles/package.json" + }, + { + "path": "node_modules/mocha/node_modules/which/package.json" + }, + { + "path": "node_modules/mocha/node_modules/supports-color/package.json" + }, + { + "path": "node_modules/mocha/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/mocha/node_modules/find-up/package.json" + }, + { + "path": "node_modules/mocha/node_modules/wrap-ansi/package.json" + }, + { + "path": "node_modules/mocha/node_modules/path-exists/package.json" + }, + { + "path": "node_modules/mocha/node_modules/yargs/package.json" + }, + { + "path": "node_modules/mocha/node_modules/color-convert/package.json" + }, + { + "path": "node_modules/mocha/node_modules/strip-json-comments/package.json" + }, + { + "path": "node_modules/mocha/node_modules/yargs-parser/package.json" + }, + { + "path": "node_modules/loud-rejection/package.json" + }, + { + "path": "node_modules/event-emitter/package.json" + }, + { + "path": "node_modules/@protobufjs/codegen/package.json" + }, + { + "path": "node_modules/@protobufjs/base64/package.json" + }, + { + "path": "node_modules/@protobufjs/utf8/package.json" + }, + { + "path": "node_modules/@protobufjs/pool/package.json" + }, + { + "path": "node_modules/@protobufjs/float/package.json" + }, + { + "path": "node_modules/@protobufjs/fetch/package.json" + }, + { + "path": "node_modules/@protobufjs/path/package.json" + }, + { + "path": "node_modules/@protobufjs/aspromise/package.json" + }, + { + "path": "node_modules/@protobufjs/inquire/package.json" + }, + { + "path": "node_modules/@protobufjs/eventemitter/package.json" + }, + { + "path": "node_modules/node-forge/package.json" + }, + { + "path": "node_modules/lodash.has/package.json" + }, + { + "path": "node_modules/source-map-support/package.json" + }, + { + "path": "node_modules/source-map-support/node_modules/source-map/package.json" + }, + { + "path": "node_modules/has-symbols/package.json" + }, + { + "path": "node_modules/just-extend/package.json" + }, + { + "path": "node_modules/stubs/package.json" + }, + { + "path": "node_modules/espurify/package.json" + }, + { + "path": "node_modules/lodash.at/package.json" + }, + { + "path": "node_modules/ansi-styles/package.json" + }, + { + "path": "node_modules/merge-estraverse-visitors/package.json" + }, + { + "path": "node_modules/ansi-colors/package.json" + }, + { + "path": "node_modules/p-try/package.json" + }, + { + "path": "node_modules/is-object/package.json" + }, + { + "path": "node_modules/escope/package.json" + }, + { + "path": "node_modules/json-parse-better-errors/package.json" + }, + { + "path": "node_modules/readable-stream/package.json" + }, + { + "path": "node_modules/abort-controller/package.json" + }, + { + "path": "node_modules/which/package.json" + }, + { + "path": "node_modules/astral-regex/package.json" + }, + { + "path": "node_modules/escodegen/package.json" + }, + { + "path": "node_modules/escodegen/node_modules/esprima/package.json" + }, + { + "path": "node_modules/escodegen/node_modules/source-map/package.json" + }, + { + "path": "node_modules/minimist/package.json" + }, + { + "path": "node_modules/clone-response/package.json" + }, + { + "path": "node_modules/ecdsa-sig-formatter/package.json" + }, + { + "path": "node_modules/requizzle/package.json" + }, + { + "path": "node_modules/base64-js/package.json" + }, + { + "path": "node_modules/pify/package.json" + }, + { + "path": "node_modules/object-keys/package.json" + }, + { + "path": "node_modules/trim-newlines/package.json" + }, + { + "path": "node_modules/deep-is/package.json" + }, + { + "path": "node_modules/fast-levenshtein/package.json" + }, + { + "path": "node_modules/typescript/package.json" + }, + { + "path": "node_modules/shebang-regex/package.json" + }, + { + "path": "node_modules/eslint-plugin-es/package.json" + }, + { + "path": "node_modules/eslint-plugin-es/node_modules/eslint-utils/package.json" + }, + { + "path": "node_modules/eslint-plugin-es/node_modules/regexpp/package.json" + }, + { + "path": "node_modules/semver/package.json" + }, + { + "path": "node_modules/unique-string/package.json" + }, + { + "path": "node_modules/decamelize/package.json" + }, + { + "path": "node_modules/acorn/package.json" + }, + { + "path": "node_modules/wide-align/package.json" + }, + { + "path": "node_modules/wide-align/node_modules/string-width/package.json" + }, + { + "path": "node_modules/wide-align/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/wide-align/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/wide-align/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/got/package.json" + }, + { + "path": "node_modules/got/node_modules/get-stream/package.json" + }, + { + "path": "node_modules/sprintf-js/package.json" + }, + { + "path": "node_modules/@google-cloud/projectify/package.json" + }, + { + "path": "node_modules/@google-cloud/promisify/package.json" + }, + { + "path": "node_modules/isarray/package.json" + }, + { + "path": "node_modules/string_decoder/package.json" + }, + { + "path": "node_modules/strip-eof/package.json" + }, + { + "path": "node_modules/p-limit/package.json" + }, + { + "path": "node_modules/url-parse-lax/package.json" + }, + { + "path": "node_modules/gts/package.json" + }, + { + "path": "node_modules/gts/node_modules/chalk/package.json" + }, + { + "path": "node_modules/commander/package.json" + }, + { + "path": "node_modules/mimic-fn/package.json" + }, + { + "path": "node_modules/https-proxy-agent/package.json" + }, + { + "path": "node_modules/ini/package.json" + }, + { + "path": "node_modules/js2xmlparser/package.json" + }, + { + "path": "node_modules/spdx-exceptions/package.json" + }, + { + "path": "node_modules/external-editor/package.json" + }, + { + "path": "node_modules/external-editor/node_modules/tmp/package.json" + }, + { + "path": "node_modules/power-assert-formatter/package.json" + }, + { + "path": "node_modules/eslint-utils/package.json" + }, + { + "path": "node_modules/text-table/package.json" + }, + { + "path": "node_modules/domutils/package.json" + }, + { + "path": "node_modules/supports-color/package.json" + }, + { + "path": "node_modules/strip-indent/package.json" + }, + { + "path": "node_modules/fs.realpath/package.json" + }, + { + "path": "node_modules/parse5/package.json" + }, + { + "path": "node_modules/decamelize-keys/package.json" + }, + { + "path": "node_modules/decamelize-keys/node_modules/map-obj/package.json" + }, + { + "path": "node_modules/empower-core/package.json" + }, + { + "path": "node_modules/acorn-es7-plugin/package.json" + }, + { + "path": "node_modules/p-timeout/package.json" + }, + { + "path": "node_modules/espree/package.json" + }, + { + "path": "node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/responselike/package.json" + }, + { + "path": "node_modules/next-tick/package.json" + }, + { + "path": "node_modules/esrecurse/package.json" + }, + { + "path": "node_modules/bignumber.js/package.json" + }, + { + "path": "node_modules/source-map/package.json" + }, + { + "path": "node_modules/find-up/package.json" + }, + { + "path": "node_modules/traverse/package.json" + }, + { + "path": "node_modules/es-to-primitive/package.json" + }, + { + "path": "node_modules/rc/package.json" + }, + { + "path": "node_modules/rc/node_modules/minimist/package.json" + }, + { + "path": "node_modules/rc/node_modules/strip-json-comments/package.json" + }, + { + "path": "node_modules/safe-buffer/package.json" + }, + { + "path": "node_modules/uc.micro/package.json" + }, + { + "path": "node_modules/flat-cache/package.json" + }, + { + "path": "node_modules/flat-cache/node_modules/rimraf/package.json" + }, + { + "path": "node_modules/once/package.json" + }, + { + "path": "node_modules/gtoken/package.json" + }, + { + "path": "node_modules/urlgrey/package.json" + }, + { + "path": "node_modules/convert-source-map/package.json" + }, + { + "path": "node_modules/convert-source-map/node_modules/safe-buffer/package.json" + }, + { + "path": "node_modules/is-date-object/package.json" + }, + { + "path": "node_modules/tslint-config-prettier/package.json" + }, + { + "path": "node_modules/escape-string-regexp/package.json" + }, + { + "path": "node_modules/iconv-lite/package.json" + }, + { + "path": "node_modules/is-glob/package.json" + }, + { + "path": "node_modules/furi/package.json" + }, + { + "path": "node_modules/tslib/package.json" + }, + { + "path": "node_modules/markdown-it-anchor/package.json" + }, + { + "path": "node_modules/browser-stdout/package.json" + }, + { + "path": "node_modules/path-type/package.json" + }, + { + "path": "node_modules/pump/package.json" + }, + { + "path": "node_modules/process-nextick-args/package.json" + }, + { + "path": "node_modules/deep-extend/package.json" + }, + { + "path": "node_modules/power-assert-context-reducer-ast/package.json" + }, + { + "path": "node_modules/power-assert-context-reducer-ast/node_modules/acorn/package.json" + }, + { + "path": "node_modules/type-check/package.json" + }, + { + "path": "node_modules/teeny-request/package.json" + }, + { + "path": "node_modules/teeny-request/node_modules/https-proxy-agent/package.json" + }, + { + "path": "node_modules/jwa/package.json" + }, + { + "path": "node_modules/walkdir/package.json" + }, + { + "path": "node_modules/hard-rejection/package.json" + }, + { + "path": "node_modules/espower-source/package.json" + }, + { + "path": "node_modules/espower-source/node_modules/acorn/package.json" + }, + { + "path": "node_modules/cross-spawn/package.json" + }, + { + "path": "node_modules/@sindresorhus/is/package.json" + }, + { + "path": "node_modules/wrap-ansi/package.json" + }, + { + "path": "node_modules/quick-lru/package.json" + }, + { + "path": "node_modules/path-exists/package.json" + }, + { + "path": "node_modules/jsdoc/package.json" + }, + { + "path": "node_modules/jsdoc/node_modules/escape-string-regexp/package.json" + }, + { + "path": "node_modules/cacheable-request/package.json" + }, + { + "path": "node_modules/cacheable-request/node_modules/get-stream/package.json" + }, + { + "path": "node_modules/cacheable-request/node_modules/lowercase-keys/package.json" + }, + { + "path": "node_modules/escape-html/package.json" + }, + { + "path": "node_modules/power-assert-renderer-assertion/package.json" + }, + { + "path": "node_modules/minimist-options/package.json" + }, + { + "path": "node_modules/minimist-options/node_modules/arrify/package.json" + }, + { + "path": "node_modules/latest-version/package.json" + }, + { + "path": "node_modules/nise/package.json" + }, + { + "path": "node_modules/optionator/package.json" + }, + { + "path": "node_modules/slice-ansi/package.json" + }, + { + "path": "node_modules/slice-ansi/node_modules/color-name/package.json" + }, + { + "path": "node_modules/slice-ansi/node_modules/ansi-styles/package.json" + }, + { + "path": "node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json" + }, + { + "path": "node_modules/slice-ansi/node_modules/color-convert/package.json" + }, + { + "path": "node_modules/power-assert-renderer-comparison/package.json" + }, + { + "path": "node_modules/flatted/package.json" + }, + { + "path": "node_modules/inherits/package.json" + }, + { + "path": "node_modules/depd/package.json" + }, + { + "path": "node_modules/es6-promisify/package.json" + }, + { + "path": "node_modules/long/package.json" + }, + { + "path": "node_modules/regexpp/package.json" + }, + { + "path": "node_modules/cli-width/package.json" + }, + { + "path": "node_modules/call-matcher/package.json" + }, + { + "path": "node_modules/fill-keys/package.json" + }, + { + "path": "node_modules/eslint/package.json" + }, + { + "path": "node_modules/eslint/node_modules/debug/package.json" + }, + { + "path": "node_modules/eslint/node_modules/ansi-regex/package.json" + }, + { + "path": "node_modules/eslint/node_modules/path-key/package.json" + }, + { + "path": "node_modules/eslint/node_modules/shebang-command/package.json" + }, + { + "path": "node_modules/eslint/node_modules/strip-ansi/package.json" + }, + { + "path": "node_modules/eslint/node_modules/which/package.json" + }, + { + "path": "node_modules/eslint/node_modules/shebang-regex/package.json" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/index.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/README.md" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/package.json" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/LICENSE" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/CHANGELOG.md" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/lib/parse.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/lib/enoent.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/escape.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/readShebang.js" + }, + { + "path": "node_modules/eslint/node_modules/cross-spawn/node_modules/semver/package.json" + }, + { + "path": "node_modules/mdurl/package.json" + }, + { + "path": "node_modules/typedarray/package.json" + }, + { + "path": "node_modules/v8-to-istanbul/package.json" + }, + { + "path": "node_modules/espower-loader/package.json" + }, + { + "path": "node_modules/object.getownpropertydescriptors/package.json" + }, + { + "path": "node_modules/array-find-index/package.json" + }, + { + "path": "node_modules/yargs/package.json" + }, + { + "path": "node_modules/ci-info/package.json" + }, + { + "path": "node_modules/color-convert/package.json" + }, + { + "path": "node_modules/write-file-atomic/package.json" + }, + { + "path": "node_modules/eslint-visitor-keys/package.json" + }, + { + "path": "node_modules/agent-base/package.json" + }, + { + "path": "node_modules/flat/package.json" + }, + { + "path": "node_modules/through2/package.json" + }, + { + "path": "node_modules/gaxios/package.json" + }, + { + "path": "node_modules/p-queue/package.json" + }, + { + "path": "node_modules/encodeurl/package.json" + }, + { + "path": "node_modules/js-tokens/package.json" + }, + { + "path": "node_modules/strip-json-comments/package.json" + }, + { + "path": "node_modules/eslint-config-prettier/package.json" + }, + { + "path": "node_modules/uri-js/package.json" + }, + { + "path": "node_modules/test-exclude/package.json" + }, + { + "path": "node_modules/safer-buffer/package.json" + }, + { + "path": "node_modules/prettier/package.json" + }, + { + "path": "node_modules/regexp.prototype.flags/package.json" + }, + { + "path": "node_modules/yargs-parser/package.json" + }, + { + "path": "node_modules/lodash.get/package.json" + }, + { + "path": "node_modules/@babel/code-frame/package.json" + }, + { + "path": "node_modules/@babel/highlight/package.json" + }, + { + "path": "node_modules/@babel/parser/package.json" + }, + { + "path": "node_modules/configstore/package.json" + }, + { + "path": "node_modules/configstore/node_modules/make-dir/package.json" + }, + { + "path": "node_modules/configstore/node_modules/write-file-atomic/package.json" + }, + { + "path": "node_modules/is-plain-obj/package.json" + }, + { + "path": "node_modules/eastasianwidth/package.json" + }, + { + "path": "node_modules/has-yarn/package.json" + }, + { + "path": "node_modules/core-js/package.json" + }, + { + "path": "samples/tasks.delete.js" + }, + { + "path": "samples/tasks.markdone.js" + }, + { + "path": "samples/tasks.list.js" + }, + { + "path": "samples/tasks.js" + }, + { + "path": "samples/tasks.add.js" + }, + { + "path": "samples/concepts.js" + }, + { + "path": "samples/README.md" + }, + { + "path": "samples/error.js" + }, + { + "path": "samples/package.json" + }, + { + "path": "samples/quickstart.js" + }, + { + "path": "samples/.eslintrc.yml" + }, + { + "path": "samples/index.yaml" + }, + { + "path": "samples/test/error.test.js" + }, + { + "path": "samples/test/quickstart.test.js" + }, + { + "path": "samples/test/concepts.test.js" + }, + { + "path": "samples/test/index.yaml" + }, + { + "path": "samples/test/tasks.test.js" + }, + { + "path": "__pycache__/synth.cpython-36.pyc" + } ] } \ No newline at end of file From c64d932e93cd4932e83941d2da42b0a41bab3006 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 6 Jan 2020 18:50:05 +0200 Subject: [PATCH 480/820] chore(deps): update dependency mocha to v7 (#567) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7aa15d4b730..352a0b816e9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -82,7 +82,7 @@ "jsdoc-fresh": "^1.0.1", "jsdoc-region-tag": "^1.0.2", "linkinator": "^1.5.0", - "mocha": "^6.1.4", + "mocha": "^7.0.0", "mv": "^2.1.1", "ncp": "^2.0.0", "c8": "^7.0.0", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8e17b8ba83d..939ffd46eac 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -19,6 +19,6 @@ }, "devDependencies": { "chai": "^4.2.0", - "mocha": "^6.1.4" + "mocha": "^7.0.0" } } From 90bf1dffe767e091ac8184bcad2bf2646bb75d39 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 16 Jan 2020 17:02:59 -0800 Subject: [PATCH 481/820] docs: update license header --- handwritten/nodejs-datastore/src/browser.js | 2 +- .../src/v1/datastore_client.js | 2 +- .../doc/google/datastore/v1/doc_datastore.js | 2 +- .../v1/doc/google/datastore/v1/doc_entity.js | 2 +- .../v1/doc/google/datastore/v1/doc_query.js | 2 +- .../v1/doc/google/protobuf/doc_wrappers.js | 2 +- handwritten/nodejs-datastore/src/v1/index.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 2739 +---------------- handwritten/nodejs-datastore/test/gapic-v1.js | 2 +- .../nodejs-datastore/webpack.config.js | 2 +- 10 files changed, 14 insertions(+), 2743 deletions(-) diff --git a/handwritten/nodejs-datastore/src/browser.js b/handwritten/nodejs-datastore/src/browser.js index ddbcd7ecb9a..68dc62d25d6 100644 --- a/handwritten/nodejs-datastore/src/browser.js +++ b/handwritten/nodejs-datastore/src/browser.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js index 942917eddac..ba1ea9d4fb9 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js index c50b8bea2b1..f109d709d6b 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js index 865a5d647df..fb2a2f925bf 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js index 04dfd14dffe..fa66a0bdd71 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js index 1a1895883a1..1d6064c2333 100644 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/src/v1/index.js index 35e214bb94a..158582547b8 100644 --- a/handwritten/nodejs-datastore/src/v1/index.js +++ b/handwritten/nodejs-datastore/src/v1/index.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 20f57b3e820..fb0d81add75 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2020-01-03T12:13:04.574836Z", + "updateTime": "2020-01-15T12:16:39.676255Z", "sources": [ { "generator": { "name": "artman", - "version": "0.43.0", - "dockerImage": "googleapis/artman@sha256:264654a37596a44b0668b8ce6ac41082d713f6ee150b3fc6425fa78cc64e4f20" + "version": "0.44.0", + "dockerImage": "googleapis/artman@sha256:10a6d0342b8d62544810ac5ad86c3b21049ec0696608ac60175da8e513234344" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "4d45a6399e9444fbddaeb1c86aabfde210723714", - "internalRef": "287908369" + "sha": "d99df0d67057a233c711187e0689baa4f8e6333d", + "internalRef": "289709813" } }, { @@ -35,2734 +35,5 @@ "config": "google/datastore/artman_datastore.yaml" } } - ], - "newFiles": [ - { - "path": "synth.metadata" - }, - { - "path": ".repo-metadata.json" - }, - { - "path": "CONTRIBUTING.md" - }, - { - "path": "linkinator.config.json" - }, - { - "path": ".prettierignore" - }, - { - "path": "tsconfig.json" - }, - { - "path": ".jsdoc.js" - }, - { - "path": ".gitignore" - }, - { - "path": "synth.py" - }, - { - "path": "CODE_OF_CONDUCT.md" - }, - { - "path": "README.md" - }, - { - "path": "package-lock.json" - }, - { - "path": ".prettierrc" - }, - { - "path": ".readme-partials.yml" - }, - { - "path": "codecov.yaml" - }, - { - "path": ".nycrc" - }, - { - "path": "package.json" - }, - { - "path": "webpack.config.js" - }, - { - "path": ".eslintrc.yml" - }, - { - "path": "tslint.json" - }, - { - "path": "renovate.json" - }, - { - "path": "LICENSE" - }, - { - "path": "CHANGELOG.md" - }, - { - "path": ".eslintignore" - }, - { - "path": ".github/PULL_REQUEST_TEMPLATE.md" - }, - { - "path": ".github/release-please.yml" - }, - { - "path": ".github/ISSUE_TEMPLATE/support_request.md" - }, - { - "path": ".github/ISSUE_TEMPLATE/bug_report.md" - }, - { - "path": ".github/ISSUE_TEMPLATE/feature_request.md" - }, - { - "path": ".kokoro/samples-test.sh" - }, - { - "path": ".kokoro/system-test.sh" - }, - { - "path": ".kokoro/docs.sh" - }, - { - "path": ".kokoro/lint.sh" - }, - { - "path": ".kokoro/.gitattributes" - }, - { - "path": ".kokoro/publish.sh" - }, - { - "path": ".kokoro/trampoline.sh" - }, - { - "path": ".kokoro/common.cfg" - }, - { - "path": ".kokoro/test.bat" - }, - { - "path": ".kokoro/test.sh" - }, - { - "path": ".kokoro/release/docs.sh" - }, - { - "path": ".kokoro/release/docs.cfg" - }, - { - "path": ".kokoro/release/common.cfg" - }, - { - "path": ".kokoro/release/publish.cfg" - }, - { - "path": ".kokoro/presubmit/node12/test.cfg" - }, - { - "path": ".kokoro/presubmit/node12/common.cfg" - }, - { - "path": ".kokoro/presubmit/node8/test.cfg" - }, - { - "path": ".kokoro/presubmit/node8/common.cfg" - }, - { - "path": ".kokoro/presubmit/windows/test.cfg" - }, - { - "path": ".kokoro/presubmit/windows/common.cfg" - }, - { - "path": ".kokoro/presubmit/node10/lint.cfg" - }, - { - "path": ".kokoro/presubmit/node10/system-test.cfg" - }, - { - "path": ".kokoro/presubmit/node10/test.cfg" - }, - { - "path": ".kokoro/presubmit/node10/docs.cfg" - }, - { - "path": ".kokoro/presubmit/node10/common.cfg" - }, - { - "path": ".kokoro/presubmit/node10/samples-test.cfg" - }, - { - "path": ".kokoro/continuous/node12/test.cfg" - }, - { - "path": ".kokoro/continuous/node12/common.cfg" - }, - { - "path": ".kokoro/continuous/node8/test.cfg" - }, - { - "path": ".kokoro/continuous/node8/common.cfg" - }, - { - "path": ".kokoro/continuous/node10/lint.cfg" - }, - { - "path": ".kokoro/continuous/node10/system-test.cfg" - }, - { - "path": ".kokoro/continuous/node10/test.cfg" - }, - { - "path": ".kokoro/continuous/node10/docs.cfg" - }, - { - "path": ".kokoro/continuous/node10/common.cfg" - }, - { - "path": ".kokoro/continuous/node10/samples-test.cfg" - }, - { - "path": "test/request.ts" - }, - { - "path": "test/gapic-v1.js" - }, - { - "path": "test/entity.ts" - }, - { - "path": "test/mocha.opts" - }, - { - "path": "test/index.ts" - }, - { - "path": "test/query.ts" - }, - { - "path": "test/.eslintrc.yml" - }, - { - "path": "test/transaction.ts" - }, - { - "path": "system-test/install.ts" - }, - { - "path": "system-test/datastore.ts" - }, - { - "path": "system-test/data/index.yaml" - }, - { - "path": "system-test/fixtures/sample/tsconfig.json" - }, - { - "path": "system-test/fixtures/sample/package.json" - }, - { - "path": "system-test/fixtures/sample/src/index.ts" - }, - { - "path": "build/test/request.d.ts" - }, - { - "path": "build/test/entity.d.ts" - }, - { - "path": "build/test/gapic-v1.js" - }, - { - "path": "build/test/transaction.js.map" - }, - { - "path": "build/test/index.js" - }, - { - "path": "build/test/request.js" - }, - { - "path": "build/test/entity.js" - }, - { - "path": "build/test/entity.js.map" - }, - { - "path": "build/test/transaction.js" - }, - { - "path": "build/test/query.js.map" - }, - { - "path": "build/test/index.js.map" - }, - { - "path": "build/test/transaction.d.ts" - }, - { - "path": "build/test/query.d.ts" - }, - { - "path": "build/test/query.js" - }, - { - "path": "build/test/index.d.ts" - }, - { - "path": "build/test/request.js.map" - }, - { - "path": "build/system-test/datastore.d.ts" - }, - { - "path": "build/system-test/install.d.ts" - }, - { - "path": "build/system-test/datastore.js.map" - }, - { - "path": "build/system-test/install.js" - }, - { - "path": "build/system-test/install.js.map" - }, - { - "path": "build/system-test/datastore.js" - }, - { - "path": "build/protos/protos.d.ts" - }, - { - "path": "build/protos/protos.js" - }, - { - "path": "build/protos/protos.json" - }, - { - "path": "build/protos/app_engine_key.proto" - }, - { - "path": "build/protos/google/datastore/v1/entity.proto" - }, - { - "path": "build/protos/google/datastore/v1/query.proto" - }, - { - "path": "build/protos/google/datastore/v1/datastore.proto" - }, - { - "path": "build/proto/datastore.d.ts" - }, - { - "path": "build/proto/entity.d.ts" - }, - { - "path": "build/proto/app_engine_key.d.ts" - }, - { - "path": "build/src/request.d.ts" - }, - { - "path": "build/src/entity.d.ts" - }, - { - "path": "build/src/transaction.js.map" - }, - { - "path": "build/src/index.js" - }, - { - "path": "build/src/request.js" - }, - { - "path": "build/src/entity.js" - }, - { - "path": "build/src/entity.js.map" - }, - { - "path": "build/src/transaction.js" - }, - { - "path": "build/src/query.js.map" - }, - { - "path": "build/src/index.js.map" - }, - { - "path": "build/src/transaction.d.ts" - }, - { - "path": "build/src/query.d.ts" - }, - { - "path": "build/src/query.js" - }, - { - "path": "build/src/index.d.ts" - }, - { - "path": "build/src/request.js.map" - }, - { - "path": "build/src/v1/datastore_client_config.json" - }, - { - "path": "build/src/v1/index.js" - }, - { - "path": "build/src/v1/datastore_proto_list.json" - }, - { - "path": "build/src/v1/datastore_client.d.ts" - }, - { - "path": "build/src/v1/datastore_client.js" - }, - { - "path": "build/src/v1/index.d.ts" - }, - { - "path": "build/src/v1/doc/google/protobuf/doc_wrappers.js" - }, - { - "path": "build/src/v1/doc/google/datastore/v1/doc_entity.js" - }, - { - "path": "build/src/v1/doc/google/datastore/v1/doc_query.js" - }, - { - "path": "build/src/v1/doc/google/datastore/v1/doc_datastore.js" - }, - { - "path": "protos/protos.d.ts" - }, - { - "path": "protos/protos.js" - }, - { - "path": "protos/protos.json" - }, - { - "path": "protos/app_engine_key.proto" - }, - { - "path": "protos/google/datastore/v1/entity.proto" - }, - { - "path": "protos/google/datastore/v1/query.proto" - }, - { - "path": "protos/google/datastore/v1/datastore.proto" - }, - { - "path": ".git/shallow" - }, - { - "path": ".git/HEAD" - }, - { - "path": ".git/config" - }, - { - "path": ".git/packed-refs" - }, - { - "path": ".git/index" - }, - { - "path": ".git/objects/pack/pack-b568922c81c3efa2395cb33352a3f2693f0e1afd.pack" - }, - { - "path": ".git/objects/pack/pack-b568922c81c3efa2395cb33352a3f2693f0e1afd.idx" - }, - { - "path": ".git/logs/HEAD" - }, - { - "path": ".git/logs/refs/heads/master" - }, - { - "path": ".git/logs/refs/heads/autosynth" - }, - { - "path": ".git/logs/refs/remotes/origin/HEAD" - }, - { - "path": ".git/refs/heads/master" - }, - { - "path": ".git/refs/heads/autosynth" - }, - { - "path": ".git/refs/remotes/origin/HEAD" - }, - { - "path": ".git/refs/tags/v5.0.3" - }, - { - "path": "proto/datastore.d.ts" - }, - { - "path": "proto/entity.d.ts" - }, - { - "path": "proto/app_engine_key.d.ts" - }, - { - "path": "src/service_proto_list.json" - }, - { - "path": "src/request.ts" - }, - { - "path": "src/entity.ts" - }, - { - "path": "src/index.ts" - }, - { - "path": "src/query.ts" - }, - { - "path": "src/browser.js" - }, - { - "path": "src/.eslintrc.yml" - }, - { - "path": "src/transaction.ts" - }, - { - "path": "src/v1/datastore_client_config.json" - }, - { - "path": "src/v1/index.js" - }, - { - "path": "src/v1/datastore_proto_list.json" - }, - { - "path": "src/v1/datastore_client.d.ts" - }, - { - "path": "src/v1/datastore_client.js" - }, - { - "path": "src/v1/index.d.ts" - }, - { - "path": "src/v1/doc/google/protobuf/doc_wrappers.js" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_entity.js" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_query.js" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_datastore.js" - }, - { - "path": "node_modules/progress/package.json" - }, - { - "path": "node_modules/is-ci/package.json" - }, - { - "path": "node_modules/lolex/package.json" - }, - { - "path": "node_modules/module-not-found-error/package.json" - }, - { - "path": "node_modules/lru-cache/package.json" - }, - { - "path": "node_modules/destroy/package.json" - }, - { - "path": "node_modules/power-assert-context-formatter/package.json" - }, - { - "path": "node_modules/fast-json-stable-stringify/package.json" - }, - { - "path": "node_modules/nice-try/package.json" - }, - { - "path": "node_modules/which-module/package.json" - }, - { - "path": "node_modules/array-find/package.json" - }, - { - "path": "node_modules/catharsis/package.json" - }, - { - "path": "node_modules/is-promise/package.json" - }, - { - "path": "node_modules/v8-compile-cache/package.json" - }, - { - "path": "node_modules/doctrine/package.json" - }, - { - "path": "node_modules/callsites/package.json" - }, - { - "path": "node_modules/diff/package.json" - }, - { - "path": "node_modules/hosted-git-info/package.json" - }, - { - "path": "node_modules/color-name/package.json" - }, - { - "path": "node_modules/defer-to-connect/package.json" - }, - { - "path": "node_modules/unpipe/package.json" - }, - { - "path": "node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/http-errors/package.json" - }, - { - "path": "node_modules/eventemitter3/package.json" - }, - { - "path": "node_modules/esutils/package.json" - }, - { - "path": "node_modules/npm-run-path/package.json" - }, - { - "path": "node_modules/npm-run-path/node_modules/path-key/package.json" - }, - { - "path": "node_modules/he/package.json" - }, - { - "path": "node_modules/on-finished/package.json" - }, - { - "path": "node_modules/linkinator/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/update-notifier/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/dot-prop/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/redent/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/semver-diff/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/map-obj/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/meow/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/term-size/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/crypto-random-string/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/indent-string/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/camelcase-keys/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/is-obj/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/read-pkg-up/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/is-path-inside/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/boxen/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/chalk/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/arrify/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/widest-line/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/global-dirs/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/parse-json/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/xdg-basedir/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/is-npm/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/read-pkg/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/read-pkg/node_modules/type-fest/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/is-installed-globally/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/trim-newlines/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/unique-string/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/strip-indent/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/quick-lru/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/minimist-options/package.json" - }, - { - "path": "node_modules/linkinator/node_modules/configstore/package.json" - }, - { - "path": "node_modules/update-notifier/package.json" - }, - { - "path": "node_modules/p-cancelable/package.json" - }, - { - "path": "node_modules/markdown-it/package.json" - }, - { - "path": "node_modules/dot-prop/package.json" - }, - { - "path": "node_modules/require-main-filename/package.json" - }, - { - "path": "node_modules/fast-diff/package.json" - }, - { - "path": "node_modules/lodash.camelcase/package.json" - }, - { - "path": "node_modules/mv/package.json" - }, - { - "path": "node_modules/mv/node_modules/rimraf/package.json" - }, - { - "path": "node_modules/mv/node_modules/glob/package.json" - }, - { - "path": "node_modules/redent/package.json" - }, - { - "path": "node_modules/resolve/package.json" - }, - { - "path": "node_modules/globals/package.json" - }, - { - "path": "node_modules/range-parser/package.json" - }, - { - "path": "node_modules/string.prototype.trimright/package.json" - }, - { - "path": "node_modules/inflight/package.json" - }, - { - "path": "node_modules/debug/package.json" - }, - { - "path": "node_modules/htmlparser2/package.json" - }, - { - "path": "node_modules/semver-diff/package.json" - }, - { - "path": "node_modules/semver-diff/node_modules/semver/package.json" - }, - { - "path": "node_modules/tsutils/package.json" - }, - { - "path": "node_modules/multi-stage-sourcemap/package.json" - }, - { - "path": "node_modules/multi-stage-sourcemap/node_modules/source-map/package.json" - }, - { - "path": "node_modules/ms/package.json" - }, - { - "path": "node_modules/linkify-it/package.json" - }, - { - "path": "node_modules/through/package.json" - }, - { - "path": "node_modules/power-assert-renderer-file/package.json" - }, - { - "path": "node_modules/string-width/package.json" - }, - { - "path": "node_modules/html-escaper/package.json" - }, - { - "path": "node_modules/type/package.json" - }, - { - "path": "node_modules/type-fest/package.json" - }, - { - "path": "node_modules/is/package.json" - }, - { - "path": "node_modules/intelli-espower-loader/package.json" - }, - { - "path": "node_modules/parseurl/package.json" - }, - { - "path": "node_modules/buffer-from/package.json" - }, - { - "path": "node_modules/google-p12-pem/package.json" - }, - { - "path": "node_modules/get-caller-file/package.json" - }, - { - "path": "node_modules/klaw/package.json" - }, - { - "path": "node_modules/map-obj/package.json" - }, - { - "path": "node_modules/node-fetch/package.json" - }, - { - "path": "node_modules/jsonexport/package.json" - }, - { - "path": "node_modules/isexe/package.json" - }, - { - "path": "node_modules/split-array-stream/readme.md" - }, - { - "path": "node_modules/split-array-stream/package.json" - }, - { - "path": "node_modules/split-array-stream/license" - }, - { - "path": "node_modules/split-array-stream/build/src/index.js" - }, - { - "path": "node_modules/split-array-stream/build/src/index.js.map" - }, - { - "path": "node_modules/split-array-stream/build/src/index.d.ts" - }, - { - "path": "node_modules/escallmatch/package.json" - }, - { - "path": "node_modules/escallmatch/node_modules/esprima/package.json" - }, - { - "path": "node_modules/espower/package.json" - }, - { - "path": "node_modules/espower/node_modules/source-map/package.json" - }, - { - "path": "node_modules/run-async/package.json" - }, - { - "path": "node_modules/validate-npm-package-license/package.json" - }, - { - "path": "node_modules/file-entry-cache/package.json" - }, - { - "path": "node_modules/meow/package.json" - }, - { - "path": "node_modules/meow/node_modules/camelcase/package.json" - }, - { - "path": "node_modules/meow/node_modules/yargs-parser/package.json" - }, - { - "path": "node_modules/concat-map/package.json" - }, - { - "path": "node_modules/term-size/package.json" - }, - { - "path": "node_modules/xmlcreate/package.json" - }, - { - "path": "node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/yallist/package.json" - }, - { - "path": "node_modules/json-bigint/package.json" - }, - { - "path": "node_modules/stream-events/package.json" - }, - { - "path": "node_modules/resolve-from/package.json" - }, - { - "path": "node_modules/is-buffer/package.json" - }, - { - "path": "node_modules/cliui/package.json" - }, - { - "path": "node_modules/toidentifier/package.json" - }, - { - "path": "node_modules/balanced-match/package.json" - }, - { - "path": "node_modules/assert-rejects/package.json" - }, - { - "path": "node_modules/marked/package.json" - }, - { - "path": "node_modules/wrappy/package.json" - }, - { - "path": "node_modules/jsdoc-region-tag/package.json" - }, - { - "path": "node_modules/json-stable-stringify-without-jsonify/package.json" - }, - { - "path": "node_modules/glob-parent/package.json" - }, - { - "path": "node_modules/xtend/package.json" - }, - { - "path": "node_modules/is-arguments/package.json" - }, - { - "path": "node_modules/set-blocking/package.json" - }, - { - "path": "node_modules/istanbul-lib-report/package.json" - }, - { - "path": "node_modules/load-json-file/package.json" - }, - { - "path": "node_modules/ansi-align/package.json" - }, - { - "path": "node_modules/ansi-align/node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/ansi-align/node_modules/string-width/package.json" - }, - { - "path": "node_modules/ansi-align/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/ansi-align/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/ansi-align/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/duplexer3/package.json" - }, - { - "path": "node_modules/esprima/package.json" - }, - { - "path": "node_modules/is-stream-ended/package.json" - }, - { - "path": "node_modules/minimatch/package.json" - }, - { - "path": "node_modules/crypto-random-string/package.json" - }, - { - "path": "node_modules/growl/package.json" - }, - { - "path": "node_modules/string.prototype.trimleft/package.json" - }, - { - "path": "node_modules/istanbul-lib-coverage/package.json" - }, - { - "path": "node_modules/normalize-package-data/package.json" - }, - { - "path": "node_modules/normalize-package-data/node_modules/semver/package.json" - }, - { - "path": "node_modules/fast-text-encoding/package.json" - }, - { - "path": "node_modules/server-destroy/package.json" - }, - { - "path": "node_modules/prelude-ls/package.json" - }, - { - "path": "node_modules/d/package.json" - }, - { - "path": "node_modules/protobufjs/package.json" - }, - { - "path": "node_modules/protobufjs/node_modules/@types/node/package.json" - }, - { - "path": "node_modules/domhandler/package.json" - }, - { - "path": "node_modules/ansi-escapes/package.json" - }, - { - "path": "node_modules/power-assert-renderer-base/package.json" - }, - { - "path": "node_modules/boolbase/package.json" - }, - { - "path": "node_modules/indent-string/package.json" - }, - { - "path": "node_modules/lodash/package.json" - }, - { - "path": "node_modules/taffydb/package.json" - }, - { - "path": "node_modules/extend/package.json" - }, - { - "path": "node_modules/is-yarn-global/package.json" - }, - { - "path": "node_modules/dom-serializer/package.json" - }, - { - "path": "node_modules/end-of-stream/package.json" - }, - { - "path": "node_modules/log-symbols/package.json" - }, - { - "path": "node_modules/is-callable/package.json" - }, - { - "path": "node_modules/es5-ext/package.json" - }, - { - "path": "node_modules/stringifier/package.json" - }, - { - "path": "node_modules/es6-weak-map/package.json" - }, - { - "path": "node_modules/camelcase-keys/package.json" - }, - { - "path": "node_modules/camelcase-keys/node_modules/camelcase/package.json" - }, - { - "path": "node_modules/decompress-response/package.json" - }, - { - "path": "node_modules/js-yaml/package.json" - }, - { - "path": "node_modules/cli-boxes/package.json" - }, - { - "path": "node_modules/is-obj/package.json" - }, - { - "path": "node_modules/is-typedarray/package.json" - }, - { - "path": "node_modules/registry-auth-token/package.json" - }, - { - "path": "node_modules/read-pkg-up/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/p-locate/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/locate-path/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/p-try/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/p-limit/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/find-up/package.json" - }, - { - "path": "node_modules/read-pkg-up/node_modules/path-exists/package.json" - }, - { - "path": "node_modules/buffer-equal-constant-time/package.json" - }, - { - "path": "node_modules/@bcoe/v8-coverage/package.json" - }, - { - "path": "node_modules/eslint-scope/package.json" - }, - { - "path": "node_modules/stream-shift/package.json" - }, - { - "path": "node_modules/is-extglob/package.json" - }, - { - "path": "node_modules/typedarray-to-buffer/index.js" - }, - { - "path": "node_modules/typedarray-to-buffer/README.md" - }, - { - "path": "node_modules/typedarray-to-buffer/.airtap.yml" - }, - { - "path": "node_modules/typedarray-to-buffer/.travis.yml" - }, - { - "path": "node_modules/typedarray-to-buffer/package.json" - }, - { - "path": "node_modules/typedarray-to-buffer/LICENSE" - }, - { - "path": "node_modules/typedarray-to-buffer/test/basic.js" - }, - { - "path": "node_modules/restore-cursor/package.json" - }, - { - "path": "node_modules/mimic-response/package.json" - }, - { - "path": "node_modules/normalize-url/package.json" - }, - { - "path": "node_modules/fresh/package.json" - }, - { - "path": "node_modules/imurmurhash/package.json" - }, - { - "path": "node_modules/indexof/package.json" - }, - { - "path": "node_modules/codecov/package.json" - }, - { - "path": "node_modules/ajv/package.json" - }, - { - "path": "node_modules/is-path-inside/package.json" - }, - { - "path": "node_modules/import-lazy/package.json" - }, - { - "path": "node_modules/json-schema-traverse/package.json" - }, - { - "path": "node_modules/ncp/package.json" - }, - { - "path": "node_modules/rxjs/package.json" - }, - { - "path": "node_modules/p-locate/package.json" - }, - { - "path": "node_modules/figures/package.json" - }, - { - "path": "node_modules/underscore/package.json" - }, - { - "path": "node_modules/finalhandler/package.json" - }, - { - "path": "node_modules/finalhandler/node_modules/debug/package.json" - }, - { - "path": "node_modules/finalhandler/node_modules/ms/package.json" - }, - { - "path": "node_modules/ignore/package.json" - }, - { - "path": "node_modules/argv/package.json" - }, - { - "path": "node_modules/path-is-absolute/package.json" - }, - { - "path": "node_modules/graceful-fs/package.json" - }, - { - "path": "node_modules/currently-unhandled/package.json" - }, - { - "path": "node_modules/google-gax/package.json" - }, - { - "path": "node_modules/google-gax/node_modules/semver/package.json" - }, - { - "path": "node_modules/onetime/package.json" - }, - { - "path": "node_modules/path-key/package.json" - }, - { - "path": "node_modules/core-util-is/package.json" - }, - { - "path": "node_modules/array-filter/package.json" - }, - { - "path": "node_modules/prepend-http/package.json" - }, - { - "path": "node_modules/write/package.json" - }, - { - "path": "node_modules/duplexify/package.json" - }, - { - "path": "node_modules/duplexify/node_modules/readable-stream/package.json" - }, - { - "path": "node_modules/duplexify/node_modules/string_decoder/package.json" - }, - { - "path": "node_modules/duplexify/node_modules/safe-buffer/package.json" - }, - { - "path": "node_modules/camelcase/package.json" - }, - { - "path": "node_modules/error-ex/package.json" - }, - { - "path": "node_modules/empower-assert/package.json" - }, - { - "path": "node_modules/boxen/package.json" - }, - { - "path": "node_modules/boxen/node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/boxen/node_modules/string-width/package.json" - }, - { - "path": "node_modules/boxen/node_modules/type-fest/package.json" - }, - { - "path": "node_modules/boxen/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/boxen/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/boxen/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/node-environment-flags/package.json" - }, - { - "path": "node_modules/node-environment-flags/node_modules/semver/package.json" - }, - { - "path": "node_modules/c8/package.json" - }, - { - "path": "node_modules/gcp-metadata/package.json" - }, - { - "path": "node_modules/json-buffer/package.json" - }, - { - "path": "node_modules/mkdirp/package.json" - }, - { - "path": "node_modules/bluebird/package.json" - }, - { - "path": "node_modules/shebang-command/package.json" - }, - { - "path": "node_modules/serve-static/package.json" - }, - { - "path": "node_modules/path-parse/package.json" - }, - { - "path": "node_modules/mime/package.json" - }, - { - "path": "node_modules/yargs-unparser/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/color-name/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/string-width/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/cliui/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/p-locate/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/locate-path/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/ansi-styles/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/find-up/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/wrap-ansi/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/path-exists/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/yargs/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/color-convert/package.json" - }, - { - "path": "node_modules/yargs-unparser/node_modules/yargs-parser/package.json" - }, - { - "path": "node_modules/lines-and-columns/package.json" - }, - { - "path": "node_modules/is-url/package.json" - }, - { - "path": "node_modules/chalk/package.json" - }, - { - "path": "node_modules/chalk/node_modules/color-name/package.json" - }, - { - "path": "node_modules/chalk/node_modules/has-flag/package.json" - }, - { - "path": "node_modules/chalk/node_modules/ansi-styles/package.json" - }, - { - "path": "node_modules/chalk/node_modules/supports-color/package.json" - }, - { - "path": "node_modules/chalk/node_modules/color-convert/package.json" - }, - { - "path": "node_modules/path-to-regexp/package.json" - }, - { - "path": "node_modules/path-to-regexp/node_modules/isarray/package.json" - }, - { - "path": "node_modules/locate-path/package.json" - }, - { - "path": "node_modules/spdx-expression-parse/package.json" - }, - { - "path": "node_modules/power-assert-util-string-width/package.json" - }, - { - "path": "node_modules/esquery/package.json" - }, - { - "path": "node_modules/to-readable-stream/package.json" - }, - { - "path": "node_modules/jsdoc-fresh/package.json" - }, - { - "path": "node_modules/jsdoc-fresh/node_modules/taffydb/package.json" - }, - { - "path": "node_modules/espower-location-detector/package.json" - }, - { - "path": "node_modules/espower-location-detector/node_modules/source-map/package.json" - }, - { - "path": "node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/is-arrayish/package.json" - }, - { - "path": "node_modules/prettier-linter-helpers/package.json" - }, - { - "path": "node_modules/chardet/package.json" - }, - { - "path": "node_modules/amdefine/package.json" - }, - { - "path": "node_modules/http-cache-semantics/package.json" - }, - { - "path": "node_modules/concat-stream/package.json" - }, - { - "path": "node_modules/has-flag/package.json" - }, - { - "path": "node_modules/cheerio/package.json" - }, - { - "path": "node_modules/domelementtype/package.json" - }, - { - "path": "node_modules/@szmarczak/http-timer/package.json" - }, - { - "path": "node_modules/tmp/package.json" - }, - { - "path": "node_modules/tmp/node_modules/rimraf/package.json" - }, - { - "path": "node_modules/entities/package.json" - }, - { - "path": "node_modules/execa/package.json" - }, - { - "path": "node_modules/execa/node_modules/lru-cache/package.json" - }, - { - "path": "node_modules/execa/node_modules/yallist/package.json" - }, - { - "path": "node_modules/execa/node_modules/shebang-command/package.json" - }, - { - "path": "node_modules/execa/node_modules/is-stream/package.json" - }, - { - "path": "node_modules/execa/node_modules/which/package.json" - }, - { - "path": "node_modules/execa/node_modules/shebang-regex/package.json" - }, - { - "path": "node_modules/execa/node_modules/cross-spawn/package.json" - }, - { - "path": "node_modules/strip-bom/package.json" - }, - { - "path": "node_modules/is-regexp/package.json" - }, - { - "path": "node_modules/argparse/package.json" - }, - { - "path": "node_modules/has/package.json" - }, - { - "path": "node_modules/ee-first/package.json" - }, - { - "path": "node_modules/object-inspect/package.json" - }, - { - "path": "node_modules/deep-equal/package.json" - }, - { - "path": "node_modules/table/package.json" - }, - { - "path": "node_modules/table/node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/table/node_modules/string-width/package.json" - }, - { - "path": "node_modules/table/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/table/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/table/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/spdx-correct/package.json" - }, - { - "path": "node_modules/get-stream/package.json" - }, - { - "path": "node_modules/sinon/package.json" - }, - { - "path": "node_modules/power-assert/package.json" - }, - { - "path": "node_modules/statuses/package.json" - }, - { - "path": "node_modules/@istanbuljs/schema/package.json" - }, - { - "path": "node_modules/es6-set/package.json" - }, - { - "path": "node_modules/es6-set/node_modules/es6-symbol/package.json" - }, - { - "path": "node_modules/proxyquire/package.json" - }, - { - "path": "node_modules/istanbul-reports/package.json" - }, - { - "path": "node_modules/@grpc/grpc-js/package.json" - }, - { - "path": "node_modules/@grpc/proto-loader/package.json" - }, - { - "path": "node_modules/lowercase-keys/package.json" - }, - { - "path": "node_modules/etag/package.json" - }, - { - "path": "node_modules/y18n/package.json" - }, - { - "path": "node_modules/diff-match-patch/package.json" - }, - { - "path": "node_modules/merge-descriptors/package.json" - }, - { - "path": "node_modules/es6-iterator/package.json" - }, - { - "path": "node_modules/eslint-plugin-node/package.json" - }, - { - "path": "node_modules/eslint-plugin-node/node_modules/ignore/package.json" - }, - { - "path": "node_modules/eslint-plugin-node/node_modules/eslint-utils/package.json" - }, - { - "path": "node_modules/natural-compare/package.json" - }, - { - "path": "node_modules/uuid/package.json" - }, - { - "path": "node_modules/event-target-shim/package.json" - }, - { - "path": "node_modules/arrify/package.json" - }, - { - "path": "node_modules/widest-line/package.json" - }, - { - "path": "node_modules/widest-line/node_modules/string-width/package.json" - }, - { - "path": "node_modules/widest-line/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/widest-line/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/widest-line/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/ignore-walk/package.json" - }, - { - "path": "node_modules/util-deprecate/package.json" - }, - { - "path": "node_modules/function-bind/package.json" - }, - { - "path": "node_modules/object-is/package.json" - }, - { - "path": "node_modules/@types/color-name/package.json" - }, - { - "path": "node_modules/@types/mv/package.json" - }, - { - "path": "node_modules/@types/is/package.json" - }, - { - "path": "node_modules/@types/node/package.json" - }, - { - "path": "node_modules/@types/istanbul-lib-coverage/package.json" - }, - { - "path": "node_modules/@types/normalize-package-data/package.json" - }, - { - "path": "node_modules/@types/extend/package.json" - }, - { - "path": "node_modules/@types/ncp/package.json" - }, - { - "path": "node_modules/@types/duplexify/package.json" - }, - { - "path": "node_modules/@types/tmp/package.json" - }, - { - "path": "node_modules/@types/sinon/package.json" - }, - { - "path": "node_modules/@types/proxyquire/package.json" - }, - { - "path": "node_modules/@types/is-windows/package.json" - }, - { - "path": "node_modules/@types/mocha/package.json" - }, - { - "path": "node_modules/@types/minimist/package.json" - }, - { - "path": "node_modules/@types/fs-extra/package.json" - }, - { - "path": "node_modules/@types/long/package.json" - }, - { - "path": "node_modules/is-windows/package.json" - }, - { - "path": "node_modules/levn/package.json" - }, - { - "path": "node_modules/google-proto-files/package.json" - }, - { - "path": "node_modules/pseudomap/package.json" - }, - { - "path": "node_modules/global-dirs/package.json" - }, - { - "path": "node_modules/power-assert-renderer-diagram/package.json" - }, - { - "path": "node_modules/is-stream/package.json" - }, - { - "path": "node_modules/es6-symbol/package.json" - }, - { - "path": "node_modules/parse-json/package.json" - }, - { - "path": "node_modules/xdg-basedir/package.json" - }, - { - "path": "node_modules/spdx-license-ids/package.json" - }, - { - "path": "node_modules/google-auth-library/package.json" - }, - { - "path": "node_modules/brace-expansion/package.json" - }, - { - "path": "node_modules/builtin-modules/package.json" - }, - { - "path": "node_modules/tslint/package.json" - }, - { - "path": "node_modules/tslint/node_modules/semver/package.json" - }, - { - "path": "node_modules/type-name/package.json" - }, - { - "path": "node_modules/define-properties/package.json" - }, - { - "path": "node_modules/universal-deep-strict-equal/package.json" - }, - { - "path": "node_modules/jws/package.json" - }, - { - "path": "node_modules/nth-check/package.json" - }, - { - "path": "node_modules/empower/package.json" - }, - { - "path": "node_modules/send/package.json" - }, - { - "path": "node_modules/send/node_modules/debug/package.json" - }, - { - "path": "node_modules/send/node_modules/debug/node_modules/ms/package.json" - }, - { - "path": "node_modules/send/node_modules/ms/package.json" - }, - { - "path": "node_modules/send/node_modules/mime/package.json" - }, - { - "path": "node_modules/require-directory/package.json" - }, - { - "path": "node_modules/object.assign/package.json" - }, - { - "path": "node_modules/is-npm/package.json" - }, - { - "path": "node_modules/min-indent/package.json" - }, - { - "path": "node_modules/functional-red-black-tree/package.json" - }, - { - "path": "node_modules/read-pkg/package.json" - }, - { - "path": "node_modules/registry-url/package.json" - }, - { - "path": "node_modules/is-regex/package.json" - }, - { - "path": "node_modules/es-abstract/package.json" - }, - { - "path": "node_modules/parent-module/package.json" - }, - { - "path": "node_modules/type-detect/package.json" - }, - { - "path": "node_modules/signal-exit/package.json" - }, - { - "path": "node_modules/import-fresh/package.json" - }, - { - "path": "node_modules/keyv/package.json" - }, - { - "path": "node_modules/estraverse/package.json" - }, - { - "path": "node_modules/fast-deep-equal/package.json" - }, - { - "path": "node_modules/mute-stream/package.json" - }, - { - "path": "node_modules/power-assert-context-traversal/package.json" - }, - { - "path": "node_modules/rimraf/package.json" - }, - { - "path": "node_modules/is-installed-globally/package.json" - }, - { - "path": "node_modules/get-stdin/package.json" - }, - { - "path": "node_modules/make-dir/package.json" - }, - { - "path": "node_modules/es6-promise/package.json" - }, - { - "path": "node_modules/os-tmpdir/package.json" - }, - { - "path": "node_modules/retry-request/package.json" - }, - { - "path": "node_modules/retry-request/node_modules/debug/package.json" - }, - { - "path": "node_modules/cli-cursor/package.json" - }, - { - "path": "node_modules/ext/package.json" - }, - { - "path": "node_modules/ext/node_modules/type/package.json" - }, - { - "path": "node_modules/is-symbol/package.json" - }, - { - "path": "node_modules/css-what/package.json" - }, - { - "path": "node_modules/punycode/package.json" - }, - { - "path": "node_modules/setprototypeof/package.json" - }, - { - "path": "node_modules/word-wrap/package.json" - }, - { - "path": "node_modules/foreground-child/package.json" - }, - { - "path": "node_modules/@sinonjs/text-encoding/package.json" - }, - { - "path": "node_modules/@sinonjs/samsam/package.json" - }, - { - "path": "node_modules/@sinonjs/commons/package.json" - }, - { - "path": "node_modules/@sinonjs/formatio/package.json" - }, - { - "path": "node_modules/es6-map/package.json" - }, - { - "path": "node_modules/call-signature/package.json" - }, - { - "path": "node_modules/package-json/package.json" - }, - { - "path": "node_modules/css-select/package.json" - }, - { - "path": "node_modules/path-is-inside/package.json" - }, - { - "path": "node_modules/eslint-plugin-prettier/package.json" - }, - { - "path": "node_modules/p-finally/package.json" - }, - { - "path": "node_modules/inquirer/package.json" - }, - { - "path": "node_modules/inquirer/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/inquirer/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/acorn-jsx/package.json" - }, - { - "path": "node_modules/glob/package.json" - }, - { - "path": "node_modules/mocha/package.json" - }, - { - "path": "node_modules/mocha/node_modules/diff/package.json" - }, - { - "path": "node_modules/mocha/node_modules/color-name/package.json" - }, - { - "path": "node_modules/mocha/node_modules/emoji-regex/package.json" - }, - { - "path": "node_modules/mocha/node_modules/ms/package.json" - }, - { - "path": "node_modules/mocha/node_modules/string-width/package.json" - }, - { - "path": "node_modules/mocha/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/mocha/node_modules/cliui/package.json" - }, - { - "path": "node_modules/mocha/node_modules/p-locate/package.json" - }, - { - "path": "node_modules/mocha/node_modules/locate-path/package.json" - }, - { - "path": "node_modules/mocha/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/mocha/node_modules/has-flag/package.json" - }, - { - "path": "node_modules/mocha/node_modules/glob/package.json" - }, - { - "path": "node_modules/mocha/node_modules/ansi-styles/package.json" - }, - { - "path": "node_modules/mocha/node_modules/which/package.json" - }, - { - "path": "node_modules/mocha/node_modules/supports-color/package.json" - }, - { - "path": "node_modules/mocha/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/mocha/node_modules/find-up/package.json" - }, - { - "path": "node_modules/mocha/node_modules/wrap-ansi/package.json" - }, - { - "path": "node_modules/mocha/node_modules/path-exists/package.json" - }, - { - "path": "node_modules/mocha/node_modules/yargs/package.json" - }, - { - "path": "node_modules/mocha/node_modules/color-convert/package.json" - }, - { - "path": "node_modules/mocha/node_modules/strip-json-comments/package.json" - }, - { - "path": "node_modules/mocha/node_modules/yargs-parser/package.json" - }, - { - "path": "node_modules/loud-rejection/package.json" - }, - { - "path": "node_modules/event-emitter/package.json" - }, - { - "path": "node_modules/@protobufjs/codegen/package.json" - }, - { - "path": "node_modules/@protobufjs/base64/package.json" - }, - { - "path": "node_modules/@protobufjs/utf8/package.json" - }, - { - "path": "node_modules/@protobufjs/pool/package.json" - }, - { - "path": "node_modules/@protobufjs/float/package.json" - }, - { - "path": "node_modules/@protobufjs/fetch/package.json" - }, - { - "path": "node_modules/@protobufjs/path/package.json" - }, - { - "path": "node_modules/@protobufjs/aspromise/package.json" - }, - { - "path": "node_modules/@protobufjs/inquire/package.json" - }, - { - "path": "node_modules/@protobufjs/eventemitter/package.json" - }, - { - "path": "node_modules/node-forge/package.json" - }, - { - "path": "node_modules/lodash.has/package.json" - }, - { - "path": "node_modules/source-map-support/package.json" - }, - { - "path": "node_modules/source-map-support/node_modules/source-map/package.json" - }, - { - "path": "node_modules/has-symbols/package.json" - }, - { - "path": "node_modules/just-extend/package.json" - }, - { - "path": "node_modules/stubs/package.json" - }, - { - "path": "node_modules/espurify/package.json" - }, - { - "path": "node_modules/lodash.at/package.json" - }, - { - "path": "node_modules/ansi-styles/package.json" - }, - { - "path": "node_modules/merge-estraverse-visitors/package.json" - }, - { - "path": "node_modules/ansi-colors/package.json" - }, - { - "path": "node_modules/p-try/package.json" - }, - { - "path": "node_modules/is-object/package.json" - }, - { - "path": "node_modules/escope/package.json" - }, - { - "path": "node_modules/json-parse-better-errors/package.json" - }, - { - "path": "node_modules/readable-stream/package.json" - }, - { - "path": "node_modules/abort-controller/package.json" - }, - { - "path": "node_modules/which/package.json" - }, - { - "path": "node_modules/astral-regex/package.json" - }, - { - "path": "node_modules/escodegen/package.json" - }, - { - "path": "node_modules/escodegen/node_modules/esprima/package.json" - }, - { - "path": "node_modules/escodegen/node_modules/source-map/package.json" - }, - { - "path": "node_modules/minimist/package.json" - }, - { - "path": "node_modules/clone-response/package.json" - }, - { - "path": "node_modules/ecdsa-sig-formatter/package.json" - }, - { - "path": "node_modules/requizzle/package.json" - }, - { - "path": "node_modules/base64-js/package.json" - }, - { - "path": "node_modules/pify/package.json" - }, - { - "path": "node_modules/object-keys/package.json" - }, - { - "path": "node_modules/trim-newlines/package.json" - }, - { - "path": "node_modules/deep-is/package.json" - }, - { - "path": "node_modules/fast-levenshtein/package.json" - }, - { - "path": "node_modules/typescript/package.json" - }, - { - "path": "node_modules/shebang-regex/package.json" - }, - { - "path": "node_modules/eslint-plugin-es/package.json" - }, - { - "path": "node_modules/eslint-plugin-es/node_modules/eslint-utils/package.json" - }, - { - "path": "node_modules/eslint-plugin-es/node_modules/regexpp/package.json" - }, - { - "path": "node_modules/semver/package.json" - }, - { - "path": "node_modules/unique-string/package.json" - }, - { - "path": "node_modules/decamelize/package.json" - }, - { - "path": "node_modules/acorn/package.json" - }, - { - "path": "node_modules/wide-align/package.json" - }, - { - "path": "node_modules/wide-align/node_modules/string-width/package.json" - }, - { - "path": "node_modules/wide-align/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/wide-align/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/wide-align/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/got/package.json" - }, - { - "path": "node_modules/got/node_modules/get-stream/package.json" - }, - { - "path": "node_modules/sprintf-js/package.json" - }, - { - "path": "node_modules/@google-cloud/projectify/package.json" - }, - { - "path": "node_modules/@google-cloud/promisify/package.json" - }, - { - "path": "node_modules/isarray/package.json" - }, - { - "path": "node_modules/string_decoder/package.json" - }, - { - "path": "node_modules/strip-eof/package.json" - }, - { - "path": "node_modules/p-limit/package.json" - }, - { - "path": "node_modules/url-parse-lax/package.json" - }, - { - "path": "node_modules/gts/package.json" - }, - { - "path": "node_modules/gts/node_modules/chalk/package.json" - }, - { - "path": "node_modules/commander/package.json" - }, - { - "path": "node_modules/mimic-fn/package.json" - }, - { - "path": "node_modules/https-proxy-agent/package.json" - }, - { - "path": "node_modules/ini/package.json" - }, - { - "path": "node_modules/js2xmlparser/package.json" - }, - { - "path": "node_modules/spdx-exceptions/package.json" - }, - { - "path": "node_modules/external-editor/package.json" - }, - { - "path": "node_modules/external-editor/node_modules/tmp/package.json" - }, - { - "path": "node_modules/power-assert-formatter/package.json" - }, - { - "path": "node_modules/eslint-utils/package.json" - }, - { - "path": "node_modules/text-table/package.json" - }, - { - "path": "node_modules/domutils/package.json" - }, - { - "path": "node_modules/supports-color/package.json" - }, - { - "path": "node_modules/strip-indent/package.json" - }, - { - "path": "node_modules/fs.realpath/package.json" - }, - { - "path": "node_modules/parse5/package.json" - }, - { - "path": "node_modules/decamelize-keys/package.json" - }, - { - "path": "node_modules/decamelize-keys/node_modules/map-obj/package.json" - }, - { - "path": "node_modules/empower-core/package.json" - }, - { - "path": "node_modules/acorn-es7-plugin/package.json" - }, - { - "path": "node_modules/p-timeout/package.json" - }, - { - "path": "node_modules/espree/package.json" - }, - { - "path": "node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/responselike/package.json" - }, - { - "path": "node_modules/next-tick/package.json" - }, - { - "path": "node_modules/esrecurse/package.json" - }, - { - "path": "node_modules/bignumber.js/package.json" - }, - { - "path": "node_modules/source-map/package.json" - }, - { - "path": "node_modules/find-up/package.json" - }, - { - "path": "node_modules/traverse/package.json" - }, - { - "path": "node_modules/es-to-primitive/package.json" - }, - { - "path": "node_modules/rc/package.json" - }, - { - "path": "node_modules/rc/node_modules/minimist/package.json" - }, - { - "path": "node_modules/rc/node_modules/strip-json-comments/package.json" - }, - { - "path": "node_modules/safe-buffer/package.json" - }, - { - "path": "node_modules/uc.micro/package.json" - }, - { - "path": "node_modules/flat-cache/package.json" - }, - { - "path": "node_modules/flat-cache/node_modules/rimraf/package.json" - }, - { - "path": "node_modules/once/package.json" - }, - { - "path": "node_modules/gtoken/package.json" - }, - { - "path": "node_modules/urlgrey/package.json" - }, - { - "path": "node_modules/convert-source-map/package.json" - }, - { - "path": "node_modules/convert-source-map/node_modules/safe-buffer/package.json" - }, - { - "path": "node_modules/is-date-object/package.json" - }, - { - "path": "node_modules/tslint-config-prettier/package.json" - }, - { - "path": "node_modules/escape-string-regexp/package.json" - }, - { - "path": "node_modules/iconv-lite/package.json" - }, - { - "path": "node_modules/is-glob/package.json" - }, - { - "path": "node_modules/furi/package.json" - }, - { - "path": "node_modules/tslib/package.json" - }, - { - "path": "node_modules/markdown-it-anchor/package.json" - }, - { - "path": "node_modules/browser-stdout/package.json" - }, - { - "path": "node_modules/path-type/package.json" - }, - { - "path": "node_modules/pump/package.json" - }, - { - "path": "node_modules/process-nextick-args/package.json" - }, - { - "path": "node_modules/deep-extend/package.json" - }, - { - "path": "node_modules/power-assert-context-reducer-ast/package.json" - }, - { - "path": "node_modules/power-assert-context-reducer-ast/node_modules/acorn/package.json" - }, - { - "path": "node_modules/type-check/package.json" - }, - { - "path": "node_modules/teeny-request/package.json" - }, - { - "path": "node_modules/teeny-request/node_modules/https-proxy-agent/package.json" - }, - { - "path": "node_modules/jwa/package.json" - }, - { - "path": "node_modules/walkdir/package.json" - }, - { - "path": "node_modules/hard-rejection/package.json" - }, - { - "path": "node_modules/espower-source/package.json" - }, - { - "path": "node_modules/espower-source/node_modules/acorn/package.json" - }, - { - "path": "node_modules/cross-spawn/package.json" - }, - { - "path": "node_modules/@sindresorhus/is/package.json" - }, - { - "path": "node_modules/wrap-ansi/package.json" - }, - { - "path": "node_modules/quick-lru/package.json" - }, - { - "path": "node_modules/path-exists/package.json" - }, - { - "path": "node_modules/jsdoc/package.json" - }, - { - "path": "node_modules/jsdoc/node_modules/escape-string-regexp/package.json" - }, - { - "path": "node_modules/cacheable-request/package.json" - }, - { - "path": "node_modules/cacheable-request/node_modules/get-stream/package.json" - }, - { - "path": "node_modules/cacheable-request/node_modules/lowercase-keys/package.json" - }, - { - "path": "node_modules/escape-html/package.json" - }, - { - "path": "node_modules/power-assert-renderer-assertion/package.json" - }, - { - "path": "node_modules/minimist-options/package.json" - }, - { - "path": "node_modules/minimist-options/node_modules/arrify/package.json" - }, - { - "path": "node_modules/latest-version/package.json" - }, - { - "path": "node_modules/nise/package.json" - }, - { - "path": "node_modules/optionator/package.json" - }, - { - "path": "node_modules/slice-ansi/package.json" - }, - { - "path": "node_modules/slice-ansi/node_modules/color-name/package.json" - }, - { - "path": "node_modules/slice-ansi/node_modules/ansi-styles/package.json" - }, - { - "path": "node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json" - }, - { - "path": "node_modules/slice-ansi/node_modules/color-convert/package.json" - }, - { - "path": "node_modules/power-assert-renderer-comparison/package.json" - }, - { - "path": "node_modules/flatted/package.json" - }, - { - "path": "node_modules/inherits/package.json" - }, - { - "path": "node_modules/depd/package.json" - }, - { - "path": "node_modules/es6-promisify/package.json" - }, - { - "path": "node_modules/long/package.json" - }, - { - "path": "node_modules/regexpp/package.json" - }, - { - "path": "node_modules/cli-width/package.json" - }, - { - "path": "node_modules/call-matcher/package.json" - }, - { - "path": "node_modules/fill-keys/package.json" - }, - { - "path": "node_modules/eslint/package.json" - }, - { - "path": "node_modules/eslint/node_modules/debug/package.json" - }, - { - "path": "node_modules/eslint/node_modules/ansi-regex/package.json" - }, - { - "path": "node_modules/eslint/node_modules/path-key/package.json" - }, - { - "path": "node_modules/eslint/node_modules/shebang-command/package.json" - }, - { - "path": "node_modules/eslint/node_modules/strip-ansi/package.json" - }, - { - "path": "node_modules/eslint/node_modules/which/package.json" - }, - { - "path": "node_modules/eslint/node_modules/shebang-regex/package.json" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/index.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/README.md" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/package.json" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/LICENSE" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/CHANGELOG.md" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/lib/parse.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/lib/enoent.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/escape.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/lib/util/readShebang.js" - }, - { - "path": "node_modules/eslint/node_modules/cross-spawn/node_modules/semver/package.json" - }, - { - "path": "node_modules/mdurl/package.json" - }, - { - "path": "node_modules/typedarray/package.json" - }, - { - "path": "node_modules/v8-to-istanbul/package.json" - }, - { - "path": "node_modules/espower-loader/package.json" - }, - { - "path": "node_modules/object.getownpropertydescriptors/package.json" - }, - { - "path": "node_modules/array-find-index/package.json" - }, - { - "path": "node_modules/yargs/package.json" - }, - { - "path": "node_modules/ci-info/package.json" - }, - { - "path": "node_modules/color-convert/package.json" - }, - { - "path": "node_modules/write-file-atomic/package.json" - }, - { - "path": "node_modules/eslint-visitor-keys/package.json" - }, - { - "path": "node_modules/agent-base/package.json" - }, - { - "path": "node_modules/flat/package.json" - }, - { - "path": "node_modules/through2/package.json" - }, - { - "path": "node_modules/gaxios/package.json" - }, - { - "path": "node_modules/p-queue/package.json" - }, - { - "path": "node_modules/encodeurl/package.json" - }, - { - "path": "node_modules/js-tokens/package.json" - }, - { - "path": "node_modules/strip-json-comments/package.json" - }, - { - "path": "node_modules/eslint-config-prettier/package.json" - }, - { - "path": "node_modules/uri-js/package.json" - }, - { - "path": "node_modules/test-exclude/package.json" - }, - { - "path": "node_modules/safer-buffer/package.json" - }, - { - "path": "node_modules/prettier/package.json" - }, - { - "path": "node_modules/regexp.prototype.flags/package.json" - }, - { - "path": "node_modules/yargs-parser/package.json" - }, - { - "path": "node_modules/lodash.get/package.json" - }, - { - "path": "node_modules/@babel/code-frame/package.json" - }, - { - "path": "node_modules/@babel/highlight/package.json" - }, - { - "path": "node_modules/@babel/parser/package.json" - }, - { - "path": "node_modules/configstore/package.json" - }, - { - "path": "node_modules/configstore/node_modules/make-dir/package.json" - }, - { - "path": "node_modules/configstore/node_modules/write-file-atomic/package.json" - }, - { - "path": "node_modules/is-plain-obj/package.json" - }, - { - "path": "node_modules/eastasianwidth/package.json" - }, - { - "path": "node_modules/has-yarn/package.json" - }, - { - "path": "node_modules/core-js/package.json" - }, - { - "path": "samples/tasks.delete.js" - }, - { - "path": "samples/tasks.markdone.js" - }, - { - "path": "samples/tasks.list.js" - }, - { - "path": "samples/tasks.js" - }, - { - "path": "samples/tasks.add.js" - }, - { - "path": "samples/concepts.js" - }, - { - "path": "samples/README.md" - }, - { - "path": "samples/error.js" - }, - { - "path": "samples/package.json" - }, - { - "path": "samples/quickstart.js" - }, - { - "path": "samples/.eslintrc.yml" - }, - { - "path": "samples/index.yaml" - }, - { - "path": "samples/test/error.test.js" - }, - { - "path": "samples/test/quickstart.test.js" - }, - { - "path": "samples/test/concepts.test.js" - }, - { - "path": "samples/test/index.yaml" - }, - { - "path": "samples/test/tasks.test.js" - }, - { - "path": "__pycache__/synth.cpython-36.pyc" - } ] } \ No newline at end of file diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-v1.js index e2c90d594fe..52446238c24 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-v1.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/webpack.config.js b/handwritten/nodejs-datastore/webpack.config.js index 1d87f606641..00d237395ee 100644 --- a/handwritten/nodejs-datastore/webpack.config.js +++ b/handwritten/nodejs-datastore/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 9009182f4b9d6b11ebab8572dd7766f50a18ae87 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Thu, 23 Jan 2020 16:24:51 -0800 Subject: [PATCH 482/820] chore: clear synth.metadata --- handwritten/nodejs-datastore/synth.metadata | 39 --------------------- 1 file changed, 39 deletions(-) delete mode 100644 handwritten/nodejs-datastore/synth.metadata diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata deleted file mode 100644 index fb0d81add75..00000000000 --- a/handwritten/nodejs-datastore/synth.metadata +++ /dev/null @@ -1,39 +0,0 @@ -{ - "updateTime": "2020-01-15T12:16:39.676255Z", - "sources": [ - { - "generator": { - "name": "artman", - "version": "0.44.0", - "dockerImage": "googleapis/artman@sha256:10a6d0342b8d62544810ac5ad86c3b21049ec0696608ac60175da8e513234344" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "d99df0d67057a233c711187e0689baa4f8e6333d", - "internalRef": "289709813" - } - }, - { - "template": { - "name": "node_library", - "origin": "synthtool.gcp", - "version": "2019.10.17" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "datastore", - "apiVersion": "v1", - "language": "nodejs", - "generator": "gapic", - "config": "google/datastore/artman_datastore.yaml" - } - } - ] -} \ No newline at end of file From 695111a7264ce4687cfd47c25cf4c24f5f74003f Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 27 Jan 2020 15:50:04 -0800 Subject: [PATCH 483/820] chore: regenerate synth.metadata (#575) --- handwritten/nodejs-datastore/synth.metadata | 407 ++++++++++++++++++++ 1 file changed, 407 insertions(+) create mode 100644 handwritten/nodejs-datastore/synth.metadata diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata new file mode 100644 index 00000000000..06142121d08 --- /dev/null +++ b/handwritten/nodejs-datastore/synth.metadata @@ -0,0 +1,407 @@ +{ + "updateTime": "2020-01-24T12:16:42.461341Z", + "sources": [ + { + "generator": { + "name": "artman", + "version": "0.44.1", + "dockerImage": "googleapis/artman@sha256:5599b61e56a372d21b671969ee915fbca0f6c3a0daaeb898d01f8f685f1bbc8b" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "e26cab8afd19d396b929039dac5d874cf0b5336c", + "internalRef": "291240093" + } + }, + { + "template": { + "name": "node_library", + "origin": "synthtool.gcp", + "version": "2019.10.17" + } + } + ], + "destinations": [ + { + "client": { + "source": "googleapis", + "apiName": "datastore", + "apiVersion": "v1", + "language": "nodejs", + "generator": "gapic", + "config": "google/datastore/artman_datastore.yaml" + } + } + ], + "newFiles": [ + { + "path": ".eslintignore" + }, + { + "path": ".eslintrc.yml" + }, + { + "path": ".github/ISSUE_TEMPLATE/bug_report.md" + }, + { + "path": ".github/ISSUE_TEMPLATE/feature_request.md" + }, + { + "path": ".github/ISSUE_TEMPLATE/support_request.md" + }, + { + "path": ".github/PULL_REQUEST_TEMPLATE.md" + }, + { + "path": ".github/release-please.yml" + }, + { + "path": ".gitignore" + }, + { + "path": ".jsdoc.js" + }, + { + "path": ".kokoro/.gitattributes" + }, + { + "path": ".kokoro/common.cfg" + }, + { + "path": ".kokoro/continuous/node10/common.cfg" + }, + { + "path": ".kokoro/continuous/node10/docs.cfg" + }, + { + "path": ".kokoro/continuous/node10/lint.cfg" + }, + { + "path": ".kokoro/continuous/node10/samples-test.cfg" + }, + { + "path": ".kokoro/continuous/node10/system-test.cfg" + }, + { + "path": ".kokoro/continuous/node10/test.cfg" + }, + { + "path": ".kokoro/continuous/node12/common.cfg" + }, + { + "path": ".kokoro/continuous/node12/test.cfg" + }, + { + "path": ".kokoro/continuous/node8/common.cfg" + }, + { + "path": ".kokoro/continuous/node8/test.cfg" + }, + { + "path": ".kokoro/docs.sh" + }, + { + "path": ".kokoro/lint.sh" + }, + { + "path": ".kokoro/presubmit/node10/common.cfg" + }, + { + "path": ".kokoro/presubmit/node10/docs.cfg" + }, + { + "path": ".kokoro/presubmit/node10/lint.cfg" + }, + { + "path": ".kokoro/presubmit/node10/samples-test.cfg" + }, + { + "path": ".kokoro/presubmit/node10/system-test.cfg" + }, + { + "path": ".kokoro/presubmit/node10/test.cfg" + }, + { + "path": ".kokoro/presubmit/node12/common.cfg" + }, + { + "path": ".kokoro/presubmit/node12/test.cfg" + }, + { + "path": ".kokoro/presubmit/node8/common.cfg" + }, + { + "path": ".kokoro/presubmit/node8/test.cfg" + }, + { + "path": ".kokoro/presubmit/windows/common.cfg" + }, + { + "path": ".kokoro/presubmit/windows/test.cfg" + }, + { + "path": ".kokoro/publish.sh" + }, + { + "path": ".kokoro/release/common.cfg" + }, + { + "path": ".kokoro/release/docs.cfg" + }, + { + "path": ".kokoro/release/docs.sh" + }, + { + "path": ".kokoro/release/publish.cfg" + }, + { + "path": ".kokoro/samples-test.sh" + }, + { + "path": ".kokoro/system-test.sh" + }, + { + "path": ".kokoro/test.bat" + }, + { + "path": ".kokoro/test.sh" + }, + { + "path": ".kokoro/trampoline.sh" + }, + { + "path": ".nycrc" + }, + { + "path": ".prettierignore" + }, + { + "path": ".prettierrc" + }, + { + "path": ".readme-partials.yml" + }, + { + "path": ".repo-metadata.json" + }, + { + "path": "CHANGELOG.md" + }, + { + "path": "CODE_OF_CONDUCT.md" + }, + { + "path": "CONTRIBUTING.md" + }, + { + "path": "LICENSE" + }, + { + "path": "README.md" + }, + { + "path": "codecov.yaml" + }, + { + "path": "linkinator.config.json" + }, + { + "path": "package.json" + }, + { + "path": "proto/app_engine_key.d.ts" + }, + { + "path": "proto/datastore.d.ts" + }, + { + "path": "proto/entity.d.ts" + }, + { + "path": "protos/app_engine_key.proto" + }, + { + "path": "protos/google/datastore/v1/datastore.proto" + }, + { + "path": "protos/google/datastore/v1/entity.proto" + }, + { + "path": "protos/google/datastore/v1/query.proto" + }, + { + "path": "protos/protos.d.ts" + }, + { + "path": "protos/protos.js" + }, + { + "path": "protos/protos.json" + }, + { + "path": "renovate.json" + }, + { + "path": "samples/.eslintrc.yml" + }, + { + "path": "samples/README.md" + }, + { + "path": "samples/concepts.js" + }, + { + "path": "samples/error.js" + }, + { + "path": "samples/index.yaml" + }, + { + "path": "samples/package.json" + }, + { + "path": "samples/quickstart.js" + }, + { + "path": "samples/tasks.add.js" + }, + { + "path": "samples/tasks.delete.js" + }, + { + "path": "samples/tasks.js" + }, + { + "path": "samples/tasks.list.js" + }, + { + "path": "samples/tasks.markdone.js" + }, + { + "path": "samples/test/concepts.test.js" + }, + { + "path": "samples/test/error.test.js" + }, + { + "path": "samples/test/index.yaml" + }, + { + "path": "samples/test/quickstart.test.js" + }, + { + "path": "samples/test/tasks.test.js" + }, + { + "path": "src/.eslintrc.yml" + }, + { + "path": "src/browser.js" + }, + { + "path": "src/entity.ts" + }, + { + "path": "src/index.ts" + }, + { + "path": "src/query.ts" + }, + { + "path": "src/request.ts" + }, + { + "path": "src/service_proto_list.json" + }, + { + "path": "src/transaction.ts" + }, + { + "path": "src/v1/datastore_client.d.ts" + }, + { + "path": "src/v1/datastore_client.js" + }, + { + "path": "src/v1/datastore_client_config.json" + }, + { + "path": "src/v1/datastore_proto_list.json" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_datastore.js" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_entity.js" + }, + { + "path": "src/v1/doc/google/datastore/v1/doc_query.js" + }, + { + "path": "src/v1/doc/google/protobuf/doc_wrappers.js" + }, + { + "path": "src/v1/index.d.ts" + }, + { + "path": "src/v1/index.js" + }, + { + "path": "synth.py" + }, + { + "path": "system-test/data/index.yaml" + }, + { + "path": "system-test/datastore.ts" + }, + { + "path": "system-test/fixtures/sample/package.json" + }, + { + "path": "system-test/fixtures/sample/src/index.ts" + }, + { + "path": "system-test/fixtures/sample/tsconfig.json" + }, + { + "path": "system-test/install.ts" + }, + { + "path": "test/.eslintrc.yml" + }, + { + "path": "test/entity.ts" + }, + { + "path": "test/gapic-v1.js" + }, + { + "path": "test/index.ts" + }, + { + "path": "test/mocha.opts" + }, + { + "path": "test/query.ts" + }, + { + "path": "test/request.ts" + }, + { + "path": "test/transaction.ts" + }, + { + "path": "tsconfig.json" + }, + { + "path": "tslint.json" + }, + { + "path": "webpack.config.js" + } + ] +} \ No newline at end of file From 8716a90e480601f378f04856fed9b04720496b74 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 29 Jan 2020 11:40:27 -0800 Subject: [PATCH 484/820] fix: enum, bytes, and Long types now accept strings --- .../nodejs-datastore/protos/protos.d.ts | 160 +++++++++--------- handwritten/nodejs-datastore/synth.metadata | 14 +- 2 files changed, 89 insertions(+), 85 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 58e6b592abd..27524b42277 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -711,7 +711,7 @@ export namespace google { interface IBeginTransactionResponse { /** BeginTransactionResponse transaction */ - transaction?: (Uint8Array|null); + transaction?: (Uint8Array|string|null); } /** Represents a BeginTransactionResponse. */ @@ -724,7 +724,7 @@ export namespace google { constructor(properties?: google.datastore.v1.IBeginTransactionResponse); /** BeginTransactionResponse transaction. */ - public transaction: Uint8Array; + public transaction: (Uint8Array|string); /** * Creates a new BeginTransactionResponse instance using the specified properties. @@ -804,7 +804,7 @@ export namespace google { projectId?: (string|null); /** RollbackRequest transaction */ - transaction?: (Uint8Array|null); + transaction?: (Uint8Array|string|null); } /** Represents a RollbackRequest. */ @@ -820,7 +820,7 @@ export namespace google { public projectId: string; /** RollbackRequest transaction. */ - public transaction: Uint8Array; + public transaction: (Uint8Array|string); /** * Creates a new RollbackRequest instance using the specified properties. @@ -984,10 +984,10 @@ export namespace google { projectId?: (string|null); /** CommitRequest mode */ - mode?: (google.datastore.v1.CommitRequest.Mode|null); + mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); /** CommitRequest transaction */ - transaction?: (Uint8Array|null); + transaction?: (Uint8Array|string|null); /** CommitRequest mutations */ mutations?: (google.datastore.v1.IMutation[]|null); @@ -1006,10 +1006,10 @@ export namespace google { public projectId: string; /** CommitRequest mode. */ - public mode: google.datastore.v1.CommitRequest.Mode; + public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); /** CommitRequest transaction. */ - public transaction: Uint8Array; + public transaction: (Uint8Array|string); /** CommitRequest mutations. */ public mutations: google.datastore.v1.IMutation[]; @@ -1582,7 +1582,7 @@ export namespace google { "delete"?: (google.datastore.v1.IKey|null); /** Mutation baseVersion */ - baseVersion?: (number|Long|null); + baseVersion?: (number|Long|string|null); } /** Represents a Mutation. */ @@ -1607,7 +1607,7 @@ export namespace google { public delete?: (google.datastore.v1.IKey|null); /** Mutation baseVersion. */ - public baseVersion: (number|Long); + public baseVersion: (number|Long|string); /** Mutation operation. */ public operation?: ("insert"|"update"|"upsert"|"delete"); @@ -1693,7 +1693,7 @@ export namespace google { key?: (google.datastore.v1.IKey|null); /** MutationResult version */ - version?: (number|Long|null); + version?: (number|Long|string|null); /** MutationResult conflictDetected */ conflictDetected?: (boolean|null); @@ -1712,7 +1712,7 @@ export namespace google { public key?: (google.datastore.v1.IKey|null); /** MutationResult version. */ - public version: (number|Long); + public version: (number|Long|string); /** MutationResult conflictDetected. */ public conflictDetected: boolean; @@ -1792,10 +1792,10 @@ export namespace google { interface IReadOptions { /** ReadOptions readConsistency */ - readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|null); + readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); /** ReadOptions transaction */ - transaction?: (Uint8Array|null); + transaction?: (Uint8Array|string|null); } /** Represents a ReadOptions. */ @@ -1808,10 +1808,10 @@ export namespace google { constructor(properties?: google.datastore.v1.IReadOptions); /** ReadOptions readConsistency. */ - public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; + public readConsistency: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency); /** ReadOptions transaction. */ - public transaction: Uint8Array; + public transaction: (Uint8Array|string); /** ReadOptions consistencyType. */ public consistencyType?: ("readConsistency"|"transaction"); @@ -2002,7 +2002,7 @@ export namespace google { interface IReadWrite { /** ReadWrite previousTransaction */ - previousTransaction?: (Uint8Array|null); + previousTransaction?: (Uint8Array|string|null); } /** Represents a ReadWrite. */ @@ -2015,7 +2015,7 @@ export namespace google { constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); /** ReadWrite previousTransaction. */ - public previousTransaction: Uint8Array; + public previousTransaction: (Uint8Array|string); /** * Creates a new ReadWrite instance using the specified properties. @@ -2374,7 +2374,7 @@ export namespace google { kind?: (string|null); /** PathElement id */ - id?: (number|Long|null); + id?: (number|Long|string|null); /** PathElement name */ name?: (string|null); @@ -2393,7 +2393,7 @@ export namespace google { public kind: string; /** PathElement id. */ - public id: (number|Long); + public id: (number|Long|string); /** PathElement name. */ public name: string; @@ -2567,13 +2567,13 @@ export namespace google { interface IValue { /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); + nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); /** Value booleanValue */ booleanValue?: (boolean|null); /** Value integerValue */ - integerValue?: (number|Long|null); + integerValue?: (number|Long|string|null); /** Value doubleValue */ doubleValue?: (number|null); @@ -2588,7 +2588,7 @@ export namespace google { stringValue?: (string|null); /** Value blobValue */ - blobValue?: (Uint8Array|null); + blobValue?: (Uint8Array|string|null); /** Value geoPointValue */ geoPointValue?: (google.type.ILatLng|null); @@ -2616,13 +2616,13 @@ export namespace google { constructor(properties?: google.datastore.v1.IValue); /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; + public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); /** Value booleanValue. */ public booleanValue: boolean; /** Value integerValue. */ - public integerValue: (number|Long); + public integerValue: (number|Long|string); /** Value doubleValue. */ public doubleValue: number; @@ -2637,7 +2637,7 @@ export namespace google { public stringValue: string; /** Value blobValue. */ - public blobValue: Uint8Array; + public blobValue: (Uint8Array|string); /** Value geoPointValue. */ public geoPointValue?: (google.type.ILatLng|null); @@ -2831,10 +2831,10 @@ export namespace google { entity?: (google.datastore.v1.IEntity|null); /** EntityResult version */ - version?: (number|Long|null); + version?: (number|Long|string|null); /** EntityResult cursor */ - cursor?: (Uint8Array|null); + cursor?: (Uint8Array|string|null); } /** Represents an EntityResult. */ @@ -2850,10 +2850,10 @@ export namespace google { public entity?: (google.datastore.v1.IEntity|null); /** EntityResult version. */ - public version: (number|Long); + public version: (number|Long|string); /** EntityResult cursor. */ - public cursor: Uint8Array; + public cursor: (Uint8Array|string); /** * Creates a new EntityResult instance using the specified properties. @@ -2956,10 +2956,10 @@ export namespace google { distinctOn?: (google.datastore.v1.IPropertyReference[]|null); /** Query startCursor */ - startCursor?: (Uint8Array|null); + startCursor?: (Uint8Array|string|null); /** Query endCursor */ - endCursor?: (Uint8Array|null); + endCursor?: (Uint8Array|string|null); /** Query offset */ offset?: (number|null); @@ -2993,10 +2993,10 @@ export namespace google { public distinctOn: google.datastore.v1.IPropertyReference[]; /** Query startCursor. */ - public startCursor: Uint8Array; + public startCursor: (Uint8Array|string); /** Query endCursor. */ - public endCursor: Uint8Array; + public endCursor: (Uint8Array|string); /** Query offset. */ public offset: number; @@ -3352,7 +3352,7 @@ export namespace google { property?: (google.datastore.v1.IPropertyReference|null); /** PropertyOrder direction */ - direction?: (google.datastore.v1.PropertyOrder.Direction|null); + direction?: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction|null); } /** Represents a PropertyOrder. */ @@ -3368,7 +3368,7 @@ export namespace google { public property?: (google.datastore.v1.IPropertyReference|null); /** PropertyOrder direction. */ - public direction: google.datastore.v1.PropertyOrder.Direction; + public direction: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction); /** * Creates a new PropertyOrder instance using the specified properties. @@ -3554,7 +3554,7 @@ export namespace google { interface ICompositeFilter { /** CompositeFilter op */ - op?: (google.datastore.v1.CompositeFilter.Operator|null); + op?: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator|null); /** CompositeFilter filters */ filters?: (google.datastore.v1.IFilter[]|null); @@ -3570,7 +3570,7 @@ export namespace google { constructor(properties?: google.datastore.v1.ICompositeFilter); /** CompositeFilter op. */ - public op: google.datastore.v1.CompositeFilter.Operator; + public op: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator); /** CompositeFilter filters. */ public filters: google.datastore.v1.IFilter[]; @@ -3662,7 +3662,7 @@ export namespace google { property?: (google.datastore.v1.IPropertyReference|null); /** PropertyFilter op */ - op?: (google.datastore.v1.PropertyFilter.Operator|null); + op?: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator|null); /** PropertyFilter value */ value?: (google.datastore.v1.IValue|null); @@ -3681,7 +3681,7 @@ export namespace google { public property?: (google.datastore.v1.IPropertyReference|null); /** PropertyFilter op. */ - public op: google.datastore.v1.PropertyFilter.Operator; + public op: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator); /** PropertyFilter value. */ public value?: (google.datastore.v1.IValue|null); @@ -3886,7 +3886,7 @@ export namespace google { value?: (google.datastore.v1.IValue|null); /** GqlQueryParameter cursor */ - cursor?: (Uint8Array|null); + cursor?: (Uint8Array|string|null); } /** Represents a GqlQueryParameter. */ @@ -3902,7 +3902,7 @@ export namespace google { public value?: (google.datastore.v1.IValue|null); /** GqlQueryParameter cursor. */ - public cursor: Uint8Array; + public cursor: (Uint8Array|string); /** GqlQueryParameter parameterType. */ public parameterType?: ("value"|"cursor"); @@ -3985,22 +3985,22 @@ export namespace google { skippedResults?: (number|null); /** QueryResultBatch skippedCursor */ - skippedCursor?: (Uint8Array|null); + skippedCursor?: (Uint8Array|string|null); /** QueryResultBatch entityResultType */ - entityResultType?: (google.datastore.v1.EntityResult.ResultType|null); + entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null); /** QueryResultBatch entityResults */ entityResults?: (google.datastore.v1.IEntityResult[]|null); /** QueryResultBatch endCursor */ - endCursor?: (Uint8Array|null); + endCursor?: (Uint8Array|string|null); /** QueryResultBatch moreResults */ - moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|null); + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); /** QueryResultBatch snapshotVersion */ - snapshotVersion?: (number|Long|null); + snapshotVersion?: (number|Long|string|null); } /** Represents a QueryResultBatch. */ @@ -4016,22 +4016,22 @@ export namespace google { public skippedResults: number; /** QueryResultBatch skippedCursor. */ - public skippedCursor: Uint8Array; + public skippedCursor: (Uint8Array|string); /** QueryResultBatch entityResultType. */ - public entityResultType: google.datastore.v1.EntityResult.ResultType; + public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType); /** QueryResultBatch entityResults. */ public entityResults: google.datastore.v1.IEntityResult[]; /** QueryResultBatch endCursor. */ - public endCursor: Uint8Array; + public endCursor: (Uint8Array|string); /** QueryResultBatch moreResults. */ - public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; + public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); /** QueryResultBatch snapshotVersion. */ - public snapshotVersion: (number|Long); + public snapshotVersion: (number|Long|string); /** * Creates a new QueryResultBatch instance using the specified properties. @@ -5165,10 +5165,10 @@ export namespace google { number?: (number|null); /** FieldDescriptorProto label */ - label?: (google.protobuf.FieldDescriptorProto.Label|null); + label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null); /** FieldDescriptorProto type */ - type?: (google.protobuf.FieldDescriptorProto.Type|null); + type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null); /** FieldDescriptorProto typeName */ typeName?: (string|null); @@ -5205,10 +5205,10 @@ export namespace google { public number: number; /** FieldDescriptorProto label. */ - public label: google.protobuf.FieldDescriptorProto.Label; + public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label); /** FieldDescriptorProto type. */ - public type: google.protobuf.FieldDescriptorProto.Type; + public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type); /** FieldDescriptorProto typeName. */ public typeName: string; @@ -5983,7 +5983,7 @@ export namespace google { javaStringCheckUtf8?: (boolean|null); /** FileOptions optimizeFor */ - optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null); /** FileOptions goPackage */ goPackage?: (string|null); @@ -6056,7 +6056,7 @@ export namespace google { public javaStringCheckUtf8: boolean; /** FileOptions optimizeFor. */ - public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode); /** FileOptions goPackage. */ public goPackage: string; @@ -6302,13 +6302,13 @@ export namespace google { interface IFieldOptions { /** FieldOptions ctype */ - ctype?: (google.protobuf.FieldOptions.CType|null); + ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null); /** FieldOptions packed */ packed?: (boolean|null); /** FieldOptions jstype */ - jstype?: (google.protobuf.FieldOptions.JSType|null); + jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null); /** FieldOptions lazy */ lazy?: (boolean|null); @@ -6336,13 +6336,13 @@ export namespace google { constructor(properties?: google.protobuf.IFieldOptions); /** FieldOptions ctype. */ - public ctype: google.protobuf.FieldOptions.CType; + public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType); /** FieldOptions packed. */ public packed: boolean; /** FieldOptions jstype. */ - public jstype: google.protobuf.FieldOptions.JSType; + public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType); /** FieldOptions lazy. */ public lazy: boolean; @@ -6841,7 +6841,7 @@ export namespace google { deprecated?: (boolean|null); /** MethodOptions idempotencyLevel */ - idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null); /** MethodOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); @@ -6866,7 +6866,7 @@ export namespace google { public deprecated: boolean; /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel); /** MethodOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -6962,16 +6962,16 @@ export namespace google { identifierValue?: (string|null); /** UninterpretedOption positiveIntValue */ - positiveIntValue?: (number|Long|null); + positiveIntValue?: (number|Long|string|null); /** UninterpretedOption negativeIntValue */ - negativeIntValue?: (number|Long|null); + negativeIntValue?: (number|Long|string|null); /** UninterpretedOption doubleValue */ doubleValue?: (number|null); /** UninterpretedOption stringValue */ - stringValue?: (Uint8Array|null); + stringValue?: (Uint8Array|string|null); /** UninterpretedOption aggregateValue */ aggregateValue?: (string|null); @@ -6993,16 +6993,16 @@ export namespace google { public identifierValue: string; /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: (number|Long); + public positiveIntValue: (number|Long|string); /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: (number|Long); + public negativeIntValue: (number|Long|string); /** UninterpretedOption doubleValue. */ public doubleValue: number; /** UninterpretedOption stringValue. */ - public stringValue: Uint8Array; + public stringValue: (Uint8Array|string); /** UninterpretedOption aggregateValue. */ public aggregateValue: string; @@ -7679,7 +7679,7 @@ export namespace google { interface IValue { /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); + nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); /** Value numberValue */ numberValue?: (number|null); @@ -7707,7 +7707,7 @@ export namespace google { constructor(properties?: google.protobuf.IValue); /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; + public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); /** Value numberValue. */ public numberValue: number; @@ -7897,7 +7897,7 @@ export namespace google { interface ITimestamp { /** Timestamp seconds */ - seconds?: (number|Long|null); + seconds?: (number|Long|string|null); /** Timestamp nanos */ nanos?: (number|null); @@ -7913,7 +7913,7 @@ export namespace google { constructor(properties?: google.protobuf.ITimestamp); /** Timestamp seconds. */ - public seconds: (number|Long); + public seconds: (number|Long|string); /** Timestamp nanos. */ public nanos: number; @@ -8173,7 +8173,7 @@ export namespace google { interface IInt64Value { /** Int64Value value */ - value?: (number|Long|null); + value?: (number|Long|string|null); } /** Represents an Int64Value. */ @@ -8186,7 +8186,7 @@ export namespace google { constructor(properties?: google.protobuf.IInt64Value); /** Int64Value value. */ - public value: (number|Long); + public value: (number|Long|string); /** * Creates a new Int64Value instance using the specified properties. @@ -8263,7 +8263,7 @@ export namespace google { interface IUInt64Value { /** UInt64Value value */ - value?: (number|Long|null); + value?: (number|Long|string|null); } /** Represents a UInt64Value. */ @@ -8276,7 +8276,7 @@ export namespace google { constructor(properties?: google.protobuf.IUInt64Value); /** UInt64Value value. */ - public value: (number|Long); + public value: (number|Long|string); /** * Creates a new UInt64Value instance using the specified properties. @@ -8713,7 +8713,7 @@ export namespace google { interface IBytesValue { /** BytesValue value */ - value?: (Uint8Array|null); + value?: (Uint8Array|string|null); } /** Represents a BytesValue. */ @@ -8726,7 +8726,7 @@ export namespace google { constructor(properties?: google.protobuf.IBytesValue); /** BytesValue value. */ - public value: Uint8Array; + public value: (Uint8Array|string); /** * Creates a new BytesValue instance using the specified properties. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 06142121d08..d6cad18a796 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,20 @@ { - "updateTime": "2020-01-24T12:16:42.461341Z", + "updateTime": "2020-01-29T12:18:35.961429Z", "sources": [ { "generator": { "name": "artman", - "version": "0.44.1", - "dockerImage": "googleapis/artman@sha256:5599b61e56a372d21b671969ee915fbca0f6c3a0daaeb898d01f8f685f1bbc8b" + "version": "0.44.4", + "dockerImage": "googleapis/artman@sha256:19e945954fc960a4bdfee6cb34695898ab21a8cf0bac063ee39b91f00a1faec8" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "e26cab8afd19d396b929039dac5d874cf0b5336c", - "internalRef": "291240093" + "sha": "cf3b61102ed5f36b827bc82ec39be09525f018c8", + "internalRef": "292034635", + "log": "cf3b61102ed5f36b827bc82ec39be09525f018c8\n Fix to protos for v1p1beta1 release of Cloud Security Command Center\n\nPiperOrigin-RevId: 292034635\n\n4e1cfaa7c0fede9e65d64213ca3da1b1255816c0\nUpdate the public proto to support UTF-8 encoded id for CatalogService API, increase the ListCatalogItems deadline to 300s and some minor documentation change\n\nPiperOrigin-RevId: 292030970\n\n9c483584f8fd5a1b862ae07973f4cc7bb3e46648\nasset: add annotations to v1p1beta1\n\nPiperOrigin-RevId: 292009868\n\ne19209fac29731d0baf6d9ac23da1164f7bdca24\nAdd the google.rpc.context.AttributeContext message to the open source\ndirectories.\n\nPiperOrigin-RevId: 291999930\n\nae5662960573f279502bf98a108a35ba1175e782\noslogin API: move file level option on top of the file to avoid protobuf.js bug.\n\nPiperOrigin-RevId: 291990506\n\neba3897fff7c49ed85d3c47fc96fe96e47f6f684\nAdd cc_proto_library and cc_grpc_library targets for Spanner and IAM protos.\n\nPiperOrigin-RevId: 291988651\n\n8e981acfd9b97ea2f312f11bbaa7b6c16e412dea\nBeta launch for PersonDetection and FaceDetection features.\n\nPiperOrigin-RevId: 291821782\n\n994e067fae3b21e195f7da932b08fff806d70b5d\nasset: add annotations to v1p2beta1\n\nPiperOrigin-RevId: 291815259\n\n244e1d2c89346ca2e0701b39e65552330d68545a\nAdd Playable Locations service\n\nPiperOrigin-RevId: 291806349\n\n909f8f67963daf45dd88d020877fb9029b76788d\nasset: add annotations to v1beta2\n\nPiperOrigin-RevId: 291805301\n\n3c39a1d6e23c1ef63c7fba4019c25e76c40dfe19\nKMS: add file-level message for CryptoKeyPath, it is defined in gapic yaml but not\nin proto files.\n\nPiperOrigin-RevId: 291420695\n\nc6f3f350b8387f8d1b85ed4506f30187ebaaddc3\ncontaineranalysis: update v1beta1 and bazel build with annotations\n\nPiperOrigin-RevId: 291401900\n\n92887d74b44e4e636252b7b8477d0d2570cd82db\nfix: fix the location of grpc config file.\n\nPiperOrigin-RevId: 291396015\n\n" } }, { @@ -349,6 +350,9 @@ { "path": "src/v1/index.js" }, + { + "path": "synth.metadata" + }, { "path": "synth.py" }, From b9db1ac285f9c3b4489f82a9468acee9eddfca1c Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 30 Jan 2020 16:34:15 +0100 Subject: [PATCH 485/820] chore(deps): update dependency @types/mocha to v7 --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 352a0b816e9..51ea7947bd6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -63,7 +63,7 @@ "devDependencies": { "@types/extend": "^3.0.1", "@types/is": "0.0.21", - "@types/mocha": "^5.2.6", + "@types/mocha": "^7.0.0", "@types/mv": "^2.1.0", "@types/ncp": "^2.0.1", "@types/proxyquire": "^1.3.28", From 7a3f0528edac0780d395f998e881afc795dd89b9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2020 16:01:46 -0800 Subject: [PATCH 486/820] chore: release 5.0.4 (#578) --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 0341271fd27..8719204f832 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.4](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.3...v5.0.4) (2020-01-29) + + +### Bug Fixes + +* enum, bytes, and Long types now accept strings ([86a48fa](https://www.github.com/googleapis/nodejs-datastore/commit/86a48fa60058216b2dec4e8c45fd74f9e77ff558)) + ### [5.0.3](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.2...v5.0.3) (2019-12-31) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 51ea7947bd6..7c9330f8193 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.3", + "version": "5.0.4", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 939ffd46eac..c78c259eca9 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.3", + "@google-cloud/datastore": "^5.0.4", "sinon": "^8.0.0" }, "devDependencies": { From b18f468a00f9786146997481338af49fe3010ef9 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 31 Jan 2020 17:22:42 -0800 Subject: [PATCH 487/820] chore: skip img.shields.io in docs test --- handwritten/nodejs-datastore/linkinator.config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/linkinator.config.json b/handwritten/nodejs-datastore/linkinator.config.json index d780d6bfff5..b555215ca02 100644 --- a/handwritten/nodejs-datastore/linkinator.config.json +++ b/handwritten/nodejs-datastore/linkinator.config.json @@ -2,6 +2,7 @@ "recurse": true, "skip": [ "https://codecov.io/gh/googleapis/", - "www.googleapis.com" + "www.googleapis.com", + "img.shields.io" ] } From 62904bd2438e73dd42e2a15933070817e948a0ab Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Fri, 31 Jan 2020 18:57:30 -0800 Subject: [PATCH 488/820] test: modernize mocha config (#581) --- handwritten/nodejs-datastore/.mocharc.json | 5 +++++ handwritten/nodejs-datastore/package.json | 2 -- handwritten/nodejs-datastore/test/mocha.opts | 3 --- 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 handwritten/nodejs-datastore/.mocharc.json delete mode 100644 handwritten/nodejs-datastore/test/mocha.opts diff --git a/handwritten/nodejs-datastore/.mocharc.json b/handwritten/nodejs-datastore/.mocharc.json new file mode 100644 index 00000000000..670c5e2c24b --- /dev/null +++ b/handwritten/nodejs-datastore/.mocharc.json @@ -0,0 +1,5 @@ +{ + "enable-source-maps": true, + "throw-deprecation": true, + "timeout": 10000 +} diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7c9330f8193..7a35c8515b2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -77,7 +77,6 @@ "eslint-plugin-prettier": "^3.1.0", "google-proto-files": "^1.0.0", "gts": "^1.0.0", - "intelli-espower-loader": "^1.0.1", "jsdoc": "^3.6.2", "jsdoc-fresh": "^1.0.1", "jsdoc-region-tag": "^1.0.2", @@ -86,7 +85,6 @@ "mv": "^2.1.1", "ncp": "^2.0.0", "c8": "^7.0.0", - "power-assert": "^1.6.1", "prettier": "^1.17.1", "proxyquire": "^2.1.0", "sinon": "^8.0.0", diff --git a/handwritten/nodejs-datastore/test/mocha.opts b/handwritten/nodejs-datastore/test/mocha.opts deleted file mode 100644 index 8751e7bae37..00000000000 --- a/handwritten/nodejs-datastore/test/mocha.opts +++ /dev/null @@ -1,3 +0,0 @@ ---require intelli-espower-loader ---timeout 10000 ---throw-deprecation From c63e579655319bb89599b462f39b31c492f23054 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 7 Feb 2020 23:53:59 +0100 Subject: [PATCH 489/820] fix(deps): update dependency @grpc/grpc-js to v0.6.16 (#585) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7a35c8515b2..efa83bb2fcb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -48,7 +48,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.15", + "@grpc/grpc-js": "0.6.16", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.0", "arrify": "^2.0.1", From 0de3084950ded1f65736c573bc364deaadcfeb3c Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 10 Feb 2020 18:04:55 +0100 Subject: [PATCH 490/820] chore(deps): update dependency linkinator to v2 --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index efa83bb2fcb..f01167ab28b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -80,7 +80,7 @@ "jsdoc": "^3.6.2", "jsdoc-fresh": "^1.0.1", "jsdoc-region-tag": "^1.0.2", - "linkinator": "^1.5.0", + "linkinator": "^2.0.0", "mocha": "^7.0.0", "mv": "^2.1.1", "ncp": "^2.0.0", From d124d65fe05c89deccb856007a5ef52b676acfb2 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 11 Feb 2020 22:33:52 -0800 Subject: [PATCH 491/820] build: add GitHub actions config for unit tests * build: add GitHub actions config for unit tests * chore: link root directory before linting * chore: also need to npm i --- handwritten/nodejs-datastore/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f01167ab28b..461ec5c2b4e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -43,7 +43,8 @@ "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", "docs-test": "linkinator docs", - "predocs-test": "npm run docs" + "predocs-test": "npm run docs", + "prelint": "cd samples; npm link ../; npm i" }, "dependencies": { "@google-cloud/projectify": "^1.0.0", From a98139bad1275a3a5470864e1c5baa3b5a18eeea Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2020 09:47:23 -0800 Subject: [PATCH 492/820] chore: release 5.0.5 (#586) --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 8719204f832..26d549769a9 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.5](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.4...v5.0.5) (2020-02-12) + + +### Bug Fixes + +* **deps:** update dependency @grpc/grpc-js to v0.6.16 ([#585](https://www.github.com/googleapis/nodejs-datastore/issues/585)) ([f067258](https://www.github.com/googleapis/nodejs-datastore/commit/f067258a9b4e7b760235721561a999c656c2e076)) + ### [5.0.4](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.3...v5.0.4) (2020-01-29) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 461ec5c2b4e..b3fb7e98975 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.4", + "version": "5.0.5", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index c78c259eca9..00102a6a401 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.4", + "@google-cloud/datastore": "^5.0.5", "sinon": "^8.0.0" }, "devDependencies": { From 0d42234781f15a07af73ccc26c289856e22f2d6f Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 20 Feb 2020 01:49:35 +0100 Subject: [PATCH 493/820] fix(deps): update dependency sinon to v9 (#592) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b3fb7e98975..8bac8fb4711 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -88,7 +88,7 @@ "c8": "^7.0.0", "prettier": "^1.17.1", "proxyquire": "^2.1.0", - "sinon": "^8.0.0", + "sinon": "^9.0.0", "tmp": "0.1.0", "typescript": "3.6.4" } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 00102a6a401..34fb72f8739 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^5.0.5", - "sinon": "^8.0.0" + "sinon": "^9.0.0" }, "devDependencies": { "chai": "^4.2.0", From 04dfe13c0e4158bfb453fe507f8906d7ce40fcb6 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2020 22:19:35 -0800 Subject: [PATCH 494/820] chore: release 5.0.6 (#593) --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 26d549769a9..2fd548eb503 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [5.0.6](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.5...v5.0.6) (2020-02-20) + + +### Bug Fixes + +* **deps:** update dependency sinon to v9 ([#592](https://www.github.com/googleapis/nodejs-datastore/issues/592)) ([58c2b3f](https://www.github.com/googleapis/nodejs-datastore/commit/58c2b3fd97b1bab6bd6f03de0d7cdfba622bb6cb)) + ### [5.0.5](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.4...v5.0.5) (2020-02-12) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8bac8fb4711..04f025e5777 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/datastore", "description": "Cloud Datastore Client Library for Node.js", - "version": "5.0.5", + "version": "5.0.6", "license": "Apache-2.0", "author": "Google LLC.", "engines": { diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 34fb72f8739..97d8c67d32b 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.5", + "@google-cloud/datastore": "^5.0.6", "sinon": "^9.0.0" }, "devDependencies": { From 951a0acf69f4e92cd7c18a021236f5b19af87374 Mon Sep 17 00:00:00 2001 From: Xiaozhen Liu Date: Wed, 26 Feb 2020 15:11:51 -0800 Subject: [PATCH 495/820] feat: export protos in src/index.ts --- handwritten/nodejs-datastore/src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index b91e2fa3e13..f419378b361 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1004,3 +1004,5 @@ export interface DatastoreOptions extends GoogleAuthOptions { export interface KeyToLegacyUrlSafeCallback { (err?: Error | null, urlSafeKey?: string): void; } +import * as protos from '../protos/protos'; +export {protos}; From d53ae593223a66b92f11d1dcd05c6b32d17f9b6f Mon Sep 17 00:00:00 2001 From: Summer Ji Date: Thu, 27 Feb 2020 11:53:15 -0800 Subject: [PATCH 496/820] chore: update jsdoc.js (#601) --- handwritten/nodejs-datastore/.jsdoc.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index afb05e3a0dc..ae07b83604c 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -36,11 +36,14 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2018 Google, LLC.', + copyright: 'Copyright 2019 Google, LLC.', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', - theme: 'lumen' + theme: 'lumen', + default: { + "outputSourceFiles": false + } }, markdown: { idInHeadings: true From a034dcbfb104e38cbfabccda23fde43d40623f79 Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Thu, 27 Feb 2020 16:15:07 -0500 Subject: [PATCH 497/820] feat: add warning when int value is too large during upload (#591) * feat: add warning on encodeValue about too large int value * chore: add comment on integer vs float verification logic * refactor: Number.isInteger for int vs float verification logic * fix: update link in README.md * refactor: warning prints the property name of the out of bounds integer value Co-authored-by: Benjamin E. Coe --- handwritten/nodejs-datastore/README.md | 4 ++-- handwritten/nodejs-datastore/src/entity.ts | 21 +++++++++++++------ handwritten/nodejs-datastore/src/request.ts | 5 ++++- .../nodejs-datastore/system-test/datastore.ts | 11 ++++++++++ handwritten/nodejs-datastore/test/entity.ts | 17 +++++++++++++++ 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index d6c040ab0a2..ffda4c1ec27 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -4,7 +4,7 @@ # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) -[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) +[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/products#product-launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) [![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) @@ -132,7 +132,7 @@ are addressed with the highest priority. More Information: [Google Cloud Platform Launch Stages][launch_stages] -[launch_stages]: https://cloud.google.com/terms/launch-stages +[launch_stages]: https://cloud.google.com/products#product-launch-stages ## Contributing diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index df32a586636..7f97c2bad39 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -565,7 +565,7 @@ export namespace entity { * // } */ // tslint:disable-next-line no-any - export function encodeValue(value?: any): ValueProto { + export function encodeValue(value: any, property: string): ValueProto { const valueProto: ValueProto = {}; if (is.boolean(value)) { @@ -579,7 +579,16 @@ export namespace entity { } if (typeof value === 'number') { - if (value % 1 === 0) { + if (Number.isInteger(value)) { + if (!Number.isSafeInteger(value)) { + process.emitWarning( + 'IntegerOutOfBoundsWarning: ' + + "the value for '" + + property + + "' property is outside of bounds of a JavaScript Number.\n" + + "Use 'Datastore.int()' to preserve accuracy during the upload." + ); + } value = new entity.Int(value); } else { value = new entity.Double(value); @@ -624,7 +633,7 @@ export namespace entity { if (Array.isArray(value)) { valueProto.arrayValue = { - values: value.map(entity.encodeValue), + values: value.map(val => entity.encodeValue(val, property)), }; return valueProto; } @@ -640,7 +649,7 @@ export namespace entity { for (const prop in value) { if (value.hasOwnProperty(prop)) { - value[prop] = entity.encodeValue(value[prop]); + value[prop] = entity.encodeValue(value[prop], prop); } } } @@ -744,7 +753,7 @@ export namespace entity { properties: Object.keys(properties).reduce( (encoded, key) => { - encoded[key] = entity.encodeValue(properties[key]); + encoded[key] = entity.encodeValue(properties[key], key); return encoded; }, // tslint:disable-next-line no-any @@ -1204,7 +1213,7 @@ export namespace entity { if (filter.name === '__key__') { value.keyValue = entity.keyToKeyProto(filter.val); } else { - value = entity.encodeValue(filter.val); + value = entity.encodeValue(filter.val, filter.name); } return { diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index c06f50cf6aa..8c98460705e 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1119,7 +1119,10 @@ class DatastoreRequest { acc: EntityProtoReduceAccumulator, data: EntityProtoReduceData ) => { - const value = entity.encodeValue(data.value); + const value = entity.encodeValue( + data.value, + data.name.toString() + ); if (typeof data.excludeFromIndexes === 'boolean') { const excluded = data.excludeFromIndexes; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 102c12a4007..26df78473bd 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -246,6 +246,17 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should accurately save/get a large int value via Datastore.int()', async () => { + const postKey = datastore.key('Team'); + const largeIntValueAsString = '9223372036854775807'; + const points = Datastore.int(largeIntValueAsString); + await datastore.save({key: postKey, data: {points}}); + const [entity] = await datastore.get(postKey, {wrapNumbers: true}); + assert.strictEqual(entity.points.value, largeIntValueAsString); + assert.throws(() => entity.points.valueOf()); + await datastore.delete(postKey); + }); + it('should save/get/delete with a key name', async () => { const postKey = datastore.key(['Post', 'post1']); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 41aba414204..b2b88ed81de 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -777,6 +777,23 @@ describe('entity', () => { assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); }); + it('should emit warning on out of bounce int', done => { + const largeIntValue = 9223372036854775807; + const property = 'largeInt'; + const expectedWarning = + 'IntegerOutOfBoundsWarning: ' + + "the value for '" + + property + + "' property is outside of bounds of a JavaScript Number.\n" + + "Use 'Datastore.int()' to preserve accuracy during the upload."; + + process.on('warning', warning => { + assert.strictEqual(warning.message, expectedWarning); + done(); + }); + entity.encodeValue(largeIntValue, property); + }); + it('should encode an Int object', () => { const value = new entity.Int(3); From f1ab8525263c49afdc88127c57b8ebf27c69a381 Mon Sep 17 00:00:00 2001 From: Summer Ji Date: Thu, 27 Feb 2020 15:38:52 -0800 Subject: [PATCH 498/820] chore: update .jsdoc.js by add protos and remove double quotes (#602) --- handwritten/nodejs-datastore/.jsdoc.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index ae07b83604c..333aa6e4999 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -31,7 +31,8 @@ module.exports = { source: { excludePattern: '(^|\\/|\\\\)[._]', include: [ - 'build/src' + 'build/src', + 'protos' ], includePattern: '\\.js$' }, @@ -42,7 +43,7 @@ module.exports = { systemName: '@google-cloud/datastore', theme: 'lumen', default: { - "outputSourceFiles": false + outputSourceFiles: false } }, markdown: { From 4e059cf020ce9dbb5bd091b1f789523560e562f6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Sat, 29 Feb 2020 10:45:38 -0800 Subject: [PATCH 499/820] docs: updated README.md --- handwritten/nodejs-datastore/README.md | 4 +- handwritten/nodejs-datastore/synth.metadata | 385 +------------------- 2 files changed, 9 insertions(+), 380 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index ffda4c1ec27..d6c040ab0a2 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -4,7 +4,7 @@ # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) -[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/products#product-launch-stages) +[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) [![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) @@ -132,7 +132,7 @@ are addressed with the highest priority. More Information: [Google Cloud Platform Launch Stages][launch_stages] -[launch_stages]: https://cloud.google.com/products#product-launch-stages +[launch_stages]: https://cloud.google.com/terms/launch-stages ## Contributing diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index d6cad18a796..bad451020c2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,27 +1,27 @@ { - "updateTime": "2020-01-29T12:18:35.961429Z", + "updateTime": "2020-02-29T12:23:04.810072Z", "sources": [ { "generator": { "name": "artman", - "version": "0.44.4", - "dockerImage": "googleapis/artman@sha256:19e945954fc960a4bdfee6cb34695898ab21a8cf0bac063ee39b91f00a1faec8" + "version": "0.47.0", + "dockerImage": "googleapis/artman@sha256:b3e50d6b8de03920b9f065bbc3d210e2ca93a043446f1fa16cdf567393c09678" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "cf3b61102ed5f36b827bc82ec39be09525f018c8", - "internalRef": "292034635", - "log": "cf3b61102ed5f36b827bc82ec39be09525f018c8\n Fix to protos for v1p1beta1 release of Cloud Security Command Center\n\nPiperOrigin-RevId: 292034635\n\n4e1cfaa7c0fede9e65d64213ca3da1b1255816c0\nUpdate the public proto to support UTF-8 encoded id for CatalogService API, increase the ListCatalogItems deadline to 300s and some minor documentation change\n\nPiperOrigin-RevId: 292030970\n\n9c483584f8fd5a1b862ae07973f4cc7bb3e46648\nasset: add annotations to v1p1beta1\n\nPiperOrigin-RevId: 292009868\n\ne19209fac29731d0baf6d9ac23da1164f7bdca24\nAdd the google.rpc.context.AttributeContext message to the open source\ndirectories.\n\nPiperOrigin-RevId: 291999930\n\nae5662960573f279502bf98a108a35ba1175e782\noslogin API: move file level option on top of the file to avoid protobuf.js bug.\n\nPiperOrigin-RevId: 291990506\n\neba3897fff7c49ed85d3c47fc96fe96e47f6f684\nAdd cc_proto_library and cc_grpc_library targets for Spanner and IAM protos.\n\nPiperOrigin-RevId: 291988651\n\n8e981acfd9b97ea2f312f11bbaa7b6c16e412dea\nBeta launch for PersonDetection and FaceDetection features.\n\nPiperOrigin-RevId: 291821782\n\n994e067fae3b21e195f7da932b08fff806d70b5d\nasset: add annotations to v1p2beta1\n\nPiperOrigin-RevId: 291815259\n\n244e1d2c89346ca2e0701b39e65552330d68545a\nAdd Playable Locations service\n\nPiperOrigin-RevId: 291806349\n\n909f8f67963daf45dd88d020877fb9029b76788d\nasset: add annotations to v1beta2\n\nPiperOrigin-RevId: 291805301\n\n3c39a1d6e23c1ef63c7fba4019c25e76c40dfe19\nKMS: add file-level message for CryptoKeyPath, it is defined in gapic yaml but not\nin proto files.\n\nPiperOrigin-RevId: 291420695\n\nc6f3f350b8387f8d1b85ed4506f30187ebaaddc3\ncontaineranalysis: update v1beta1 and bazel build with annotations\n\nPiperOrigin-RevId: 291401900\n\n92887d74b44e4e636252b7b8477d0d2570cd82db\nfix: fix the location of grpc config file.\n\nPiperOrigin-RevId: 291396015\n\n" + "sha": "83c6f84035ee0f80eaa44d8b688a010461cc4080", + "internalRef": "297918498", + "log": "83c6f84035ee0f80eaa44d8b688a010461cc4080\nUpdate google/api/auth.proto to make AuthProvider to have JwtLocation\n\nPiperOrigin-RevId: 297918498\n\ne9e90a787703ec5d388902e2cb796aaed3a385b4\nDialogflow weekly v2/v2beta1 library update:\n - adding get validation result\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297671458\n\n1a2b05cc3541a5f7714529c665aecc3ea042c646\nAdding .yaml and .json config files.\n\nPiperOrigin-RevId: 297570622\n\ndfe1cf7be44dee31d78f78e485d8c95430981d6e\nPublish `QueryOptions` proto.\n\nIntroduced a `query_options` input in `ExecuteSqlRequest`.\n\nPiperOrigin-RevId: 297497710\n\ndafc905f71e5d46f500b41ed715aad585be062c3\npubsub: revert pull init_rpc_timeout & max_rpc_timeout back to 25 seconds and reset multiplier to 1.0\n\nPiperOrigin-RevId: 297486523\n\nf077632ba7fee588922d9e8717ee272039be126d\nfirestore: add update_transform\n\nPiperOrigin-RevId: 297405063\n\n0aba1900ffef672ec5f0da677cf590ee5686e13b\ncluster: use square brace for cross-reference\n\nPiperOrigin-RevId: 297204568\n\n5dac2da18f6325cbaed54603c43f0667ecd50247\nRestore retry params in gapic config because securitycenter has non-standard default retry params.\nRestore a few retry codes for some idempotent methods.\n\nPiperOrigin-RevId: 297196720\n\n1eb61455530252bba8b2c8d4bc9832960e5a56f6\npubsub: v1 replace IAM HTTP rules\n\nPiperOrigin-RevId: 297188590\n\n80b2d25f8d43d9d47024ff06ead7f7166548a7ba\nDialogflow weekly v2/v2beta1 library update:\n - updates to mega agent api\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297187629\n\n0b1876b35e98f560f9c9ca9797955f020238a092\nUse an older version of protoc-docs-plugin that is compatible with the specified gapic-generator and protobuf versions.\n\nprotoc-docs-plugin >=0.4.0 (see commit https://github.com/googleapis/protoc-docs-plugin/commit/979f03ede6678c487337f3d7e88bae58df5207af) is incompatible with protobuf 3.9.1.\n\nPiperOrigin-RevId: 296986742\n\n1e47e676cddbbd8d93f19ba0665af15b5532417e\nFix: Restore a method signature for UpdateCluster\n\nPiperOrigin-RevId: 296901854\n\n7f910bcc4fc4704947ccfd3ceed015d16b9e00c2\nUpdate Dataproc v1beta2 client.\n\nPiperOrigin-RevId: 296451205\n\nde287524405a3dce124d301634731584fc0432d7\nFix: Reinstate method signatures that had been missed off some RPCs\nFix: Correct resource types for two fields\n\nPiperOrigin-RevId: 296435091\n\ne5bc9566ae057fb4c92f8b7e047f1c8958235b53\nDeprecate the endpoint_uris field, as it is unused.\n\nPiperOrigin-RevId: 296357191\n\n8c12e2b4dca94e12bff9f538bdac29524ff7ef7a\nUpdate Dataproc v1 client.\n\nPiperOrigin-RevId: 296336662\n\n17567c4a1ef0a9b50faa87024d66f8acbb561089\nRemoving erroneous comment, a la https://github.com/googleapis/java-speech/pull/103\n\nPiperOrigin-RevId: 296332968\n\n3eaaaf8626ce5b0c0bc7eee05e143beffa373b01\nAdd BUILD.bazel for v1 secretmanager.googleapis.com\n\nPiperOrigin-RevId: 296274723\n\ne76149c3d992337f85eeb45643106aacae7ede82\nMove securitycenter v1 to use generate from annotations.\n\nPiperOrigin-RevId: 296266862\n\n203740c78ac69ee07c3bf6be7408048751f618f8\nAdd StackdriverLoggingConfig field to Cloud Tasks v2 API.\n\nPiperOrigin-RevId: 296256388\n\ne4117d5e9ed8bbca28da4a60a94947ca51cb2083\nCreate a Bazel BUILD file for the google.actions.type export.\n\nPiperOrigin-RevId: 296212567\n\na9639a0a9854fd6e1be08bba1ac3897f4f16cb2f\nAdd secretmanager.googleapis.com v1 protos\n\nPiperOrigin-RevId: 295983266\n\nce4f4c21d9dd2bfab18873a80449b9d9851efde8\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295861722\n\ncb61d6c2d070b589980c779b68ffca617f789116\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295855449\n\nab2685d8d3a0e191dc8aef83df36773c07cb3d06\nfix: Dataproc v1 - AutoscalingPolicy annotation\n\nThis adds the second resource name pattern to the\nAutoscalingPolicy resource.\n\nCommitter: @lukesneeringer\nPiperOrigin-RevId: 295738415\n\n8a1020bf6828f6e3c84c3014f2c51cb62b739140\nUpdate cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 295286165\n\n5cfa105206e77670369e4b2225597386aba32985\nAdd service control related proto build rule.\n\nPiperOrigin-RevId: 295262088\n\nee4dddf805072004ab19ac94df2ce669046eec26\nmonitoring v3: Add prefix \"https://cloud.google.com/\" into the link for global access\ncl 295167522, get ride of synth.py hacks\n\nPiperOrigin-RevId: 295238095\n\nd9835e922ea79eed8497db270d2f9f85099a519c\nUpdate some minor docs changes about user event proto\n\nPiperOrigin-RevId: 295185610\n\n5f311e416e69c170243de722023b22f3df89ec1c\nfix: use correct PHP package name in gapic configuration\n\nPiperOrigin-RevId: 295161330\n\n6cdd74dcdb071694da6a6b5a206e3a320b62dd11\npubsub: v1 add client config annotations and retry config\n\nPiperOrigin-RevId: 295158776\n\n5169f46d9f792e2934d9fa25c36d0515b4fd0024\nAdded cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 295026522\n\n56b55aa8818cd0a532a7d779f6ef337ba809ccbd\nFix: Resource annotations for CreateTimeSeriesRequest and ListTimeSeriesRequest should refer to valid resources. TimeSeries is not a named resource.\n\nPiperOrigin-RevId: 294931650\n\n0646bc775203077226c2c34d3e4d50cc4ec53660\nRemove unnecessary languages from bigquery-related artman configuration files.\n\nPiperOrigin-RevId: 294809380\n\n8b78aa04382e3d4147112ad6d344666771bb1909\nUpdate backend.proto for schemes and protocol\n\nPiperOrigin-RevId: 294788800\n\n80b8f8b3de2359831295e24e5238641a38d8488f\nAdds artman config files for bigquerystorage endpoints v1beta2, v1alpha2, v1\n\nPiperOrigin-RevId: 294763931\n\n2c17ac33b226194041155bb5340c3f34733f1b3a\nAdd parameter to sample generated for UpdateInstance. Related to https://github.com/googleapis/python-redis/issues/4\n\nPiperOrigin-RevId: 294734008\n\nd5e8a8953f2acdfe96fb15e85eb2f33739623957\nMove bigquery datatransfer to gapic v2.\n\nPiperOrigin-RevId: 294703703\n\nefd36705972cfcd7d00ab4c6dfa1135bafacd4ae\nfix: Add two annotations that we missed.\n\nPiperOrigin-RevId: 294664231\n\n8a36b928873ff9c05b43859b9d4ea14cd205df57\nFix: Define the \"bigquery.googleapis.com/Table\" resource in the BigQuery Storage API (v1beta2).\n\nPiperOrigin-RevId: 294459768\n\nc7a3caa2c40c49f034a3c11079dd90eb24987047\nFix: Define the \"bigquery.googleapis.com/Table\" resource in the BigQuery Storage API (v1).\n\nPiperOrigin-RevId: 294456889\n\n5006247aa157e59118833658084345ee59af7c09\nFix: Make deprecated fields optional\nFix: Deprecate SetLoggingServiceRequest.zone in line with the comments\nFeature: Add resource name method signatures where appropriate\n\nPiperOrigin-RevId: 294383128\n\neabba40dac05c5cbe0fca3a35761b17e372036c4\nFix: C# and PHP package/namespace capitalization for BigQuery Storage v1.\n\nPiperOrigin-RevId: 294382444\n\nf8d9a858a7a55eba8009a23aa3f5cc5fe5e88dde\nfix: artman configuration file for bigtable-admin\n\nPiperOrigin-RevId: 294322616\n\n0f29555d1cfcf96add5c0b16b089235afbe9b1a9\nAPI definition for (not-yet-launched) GCS gRPC.\n\nPiperOrigin-RevId: 294321472\n\nfcc86bee0e84dc11e9abbff8d7c3529c0626f390\nfix: Bigtable Admin v2\n\nChange LRO metadata from PartialUpdateInstanceMetadata\nto UpdateInstanceMetadata. (Otherwise, it will not build.)\n\nPiperOrigin-RevId: 294264582\n\n6d9361eae2ebb3f42d8c7ce5baf4bab966fee7c0\nrefactor: Add annotations to Bigtable Admin v2.\n\nPiperOrigin-RevId: 294243406\n\nad7616f3fc8e123451c8b3a7987bc91cea9e6913\nFix: Resource type in CreateLogMetricRequest should use logging.googleapis.com.\nFix: ListLogEntries should have a method signature for convenience of calling it.\n\nPiperOrigin-RevId: 294222165\n\n63796fcbb08712676069e20a3e455c9f7aa21026\nFix: Remove extraneous resource definition for cloudkms.googleapis.com/CryptoKey.\n\nPiperOrigin-RevId: 294176658\n\ne7d8a694f4559201e6913f6610069cb08b39274e\nDepend on the latest gapic-generator and resource names plugin.\n\nThis fixes the very old an very annoying bug: https://github.com/googleapis/gapic-generator/pull/3087\n\nPiperOrigin-RevId: 293903652\n\n806b2854a966d55374ee26bb0cef4e30eda17b58\nfix: correct capitalization of Ruby namespaces in SecurityCenter V1p1beta1\n\nPiperOrigin-RevId: 293903613\n\n1b83c92462b14d67a7644e2980f723112472e03a\nPublish annotations and grpc service config for Logging API.\n\nPiperOrigin-RevId: 293893514\n\ne46f761cd6ec15a9e3d5ed4ff321a4bcba8e8585\nGenerate the Bazel build file for recommendengine public api\n\nPiperOrigin-RevId: 293710856\n\n68477017c4173c98addac0373950c6aa9d7b375f\nMake `language_code` optional for UpdateIntentRequest and BatchUpdateIntentsRequest.\n\nThe comments and proto annotations describe this parameter as optional.\n\nPiperOrigin-RevId: 293703548\n\n16f823f578bca4e845a19b88bb9bc5870ea71ab2\nAdd BUILD.bazel files for managedidentities API\n\nPiperOrigin-RevId: 293698246\n\n2f53fd8178c9a9de4ad10fae8dd17a7ba36133f2\nAdd v1p1beta1 config file\n\nPiperOrigin-RevId: 293696729\n\n052b274138fce2be80f97b6dcb83ab343c7c8812\nAdd source field for user event and add field behavior annotations\n\nPiperOrigin-RevId: 293693115\n\n1e89732b2d69151b1b3418fff3d4cc0434f0dded\ndatacatalog: v1beta1 add three new RPCs to gapic v1beta1 config\n\nPiperOrigin-RevId: 293692823\n\n9c8bd09bbdc7c4160a44f1fbab279b73cd7a2337\nchange the name of AccessApproval service to AccessApprovalAdmin\n\nPiperOrigin-RevId: 293690934\n\n2e23b8fbc45f5d9e200572ca662fe1271bcd6760\nAdd ListEntryGroups method, add http bindings to support entry group tagging, and update some comments.\n\nPiperOrigin-RevId: 293666452\n\n0275e38a4ca03a13d3f47a9613aac8c8b0d3f1f2\nAdd proto_package field to managedidentities API. It is needed for APIs that still depend on artman generation.\n\nPiperOrigin-RevId: 293643323\n\n4cdfe8278cb6f308106580d70648001c9146e759\nRegenerating public protos for Data Catalog to add new Custom Type Entry feature.\n\nPiperOrigin-RevId: 293614782\n\n45d2a569ab526a1fad3720f95eefb1c7330eaada\nEnable client generation for v1 ManagedIdentities API.\n\nPiperOrigin-RevId: 293515675\n\n2c17086b77e6f3bcf04a1f65758dfb0c3da1568f\nAdd the Actions on Google common types (//google/actions/type/*).\n\nPiperOrigin-RevId: 293478245\n\n781aadb932e64a12fb6ead7cd842698d99588433\nDialogflow weekly v2/v2beta1 library update:\n- Documentation updates\nImportant updates are also posted at\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 293443396\n\ne2602608c9138c2fca24162720e67f9307c30b95\nDialogflow weekly v2/v2beta1 library update:\n- Documentation updates\nImportant updates are also posted at\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 293442964\n\nc8aef82028d06b7992278fa9294c18570dc86c3d\nAdd cc_proto_library and cc_grpc_library targets for Bigtable protos.\n\nAlso fix indentation of cc_grpc_library targets in Spanner and IAM protos.\n\nPiperOrigin-RevId: 293440538\n\ne2faab04f4cb7f9755072330866689b1943a16e9\ncloudtasks: v2 replace non-standard retry params in gapic config v2\n\nPiperOrigin-RevId: 293424055\n\ndfb4097ea628a8470292c6590a4313aee0c675bd\nerrorreporting: v1beta1 add legacy artman config for php\n\nPiperOrigin-RevId: 293423790\n\nb18aed55b45bfe5b62476292c72759e6c3e573c6\nasset: v1p1beta1 updated comment for `page_size` limit.\n\nPiperOrigin-RevId: 293421386\n\nc9ef36b7956d9859a2fc86ad35fcaa16958ab44f\nbazel: Refactor CI build scripts\n\nPiperOrigin-RevId: 293387911\n\na8ed9d921fdddc61d8467bfd7c1668f0ad90435c\nfix: set Ruby module name for OrgPolicy\n\nPiperOrigin-RevId: 293257997\n\n6c7d28509bd8315de8af0889688ee20099594269\nredis: v1beta1 add UpgradeInstance and connect_mode field to Instance\n\nPiperOrigin-RevId: 293242878\n\nae0abed4fcb4c21f5cb67a82349a049524c4ef68\nredis: v1 add connect_mode field to Instance\n\nPiperOrigin-RevId: 293241914\n\n3f7a0d29b28ee9365771da2b66edf7fa2b4e9c56\nAdds service config definition for bigqueryreservation v1beta1\n\nPiperOrigin-RevId: 293234418\n\n0c88168d5ed6fe353a8cf8cbdc6bf084f6bb66a5\naddition of BUILD & configuration for accessapproval v1\n\nPiperOrigin-RevId: 293219198\n\n39bedc2e30f4778ce81193f6ba1fec56107bcfc4\naccessapproval: v1 publish protos\n\nPiperOrigin-RevId: 293167048\n\n69d9945330a5721cd679f17331a78850e2618226\nAdd file-level `Session` resource definition\n\nPiperOrigin-RevId: 293080182\n\nf6a1a6b417f39694275ca286110bc3c1ca4db0dc\nAdd file-level `Session` resource definition\n\nPiperOrigin-RevId: 293080178\n\n29d40b78e3dc1579b0b209463fbcb76e5767f72a\nExpose managedidentities/v1beta1/ API for client library usage.\n\nPiperOrigin-RevId: 292979741\n\na22129a1fb6e18056d576dfb7717aef74b63734a\nExpose managedidentities/v1/ API for client library usage.\n\nPiperOrigin-RevId: 292968186\n\nb5cbe4a4ba64ab19e6627573ff52057a1657773d\nSecurityCenter v1p1beta1: move file-level option on top to workaround protobuf.js bug.\n\nPiperOrigin-RevId: 292647187\n\nb224b317bf20c6a4fbc5030b4a969c3147f27ad3\nAdds API definitions for bigqueryreservation v1beta1.\n\nPiperOrigin-RevId: 292634722\n\nc1468702f9b17e20dd59007c0804a089b83197d2\nSynchronize new proto/yaml changes.\n\nPiperOrigin-RevId: 292626173\n\nffdfa4f55ab2f0afc11d0eb68f125ccbd5e404bd\nvision: v1p3beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292605599\n\n78f61482cd028fc1d9892aa5d89d768666a954cd\nvision: v1p1beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292605125\n\n60bb5a294a604fd1778c7ec87b265d13a7106171\nvision: v1p2beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292604980\n\n3bcf7aa79d45eb9ec29ab9036e9359ea325a7fc3\nvision: v1p4beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292604656\n\n2717b8a1c762b26911b45ecc2e4ee01d98401b28\nFix dataproc artman client library generation.\n\nPiperOrigin-RevId: 292555664\n\n7ac66d9be8a7d7de4f13566d8663978c9ee9dcd7\nAdd Dataproc Autoscaling API to V1.\n\nPiperOrigin-RevId: 292450564\n\n5d932b2c1be3a6ef487d094e3cf5c0673d0241dd\n- Improve documentation\n- Add a client_id field to StreamingPullRequest\n\nPiperOrigin-RevId: 292434036\n\neaff9fa8edec3e914995ce832b087039c5417ea7\nmonitoring: v3 publish annotations and client retry config\n\nPiperOrigin-RevId: 292425288\n\n70958bab8c5353870d31a23fb2c40305b050d3fe\nBigQuery Storage Read API v1 clients.\n\nPiperOrigin-RevId: 292407644\n\n7a15e7fe78ff4b6d5c9606a3264559e5bde341d1\nUpdate backend proto for Google Cloud Endpoints\n\nPiperOrigin-RevId: 292391607\n\n3ca2c014e24eb5111c8e7248b1e1eb833977c83d\nbazel: Add --flaky_test_attempts=3 argument to prevent CI failures caused by flaky tests\n\nPiperOrigin-RevId: 292382559\n\n9933347c1f677e81e19a844c2ef95bfceaf694fe\nbazel:Integrate latest protoc-java-resource-names-plugin changes (fix for PyYAML dependency in bazel rules)\n\nPiperOrigin-RevId: 292376626\n\nb835ab9d2f62c88561392aa26074c0b849fb0bd3\nasset: v1p2beta1 add client config annotations\n\n* remove unintentionally exposed RPCs\n* remove messages relevant to removed RPCs\n\nPiperOrigin-RevId: 292369593\n\nc1246a29e22b0f98e800a536b5b0da2d933a55f2\nUpdating v1 protos with the latest inline documentation (in comments) and config options. Also adding a per-service .yaml file.\n\nPiperOrigin-RevId: 292310790\n\nb491d07cadaae7cde5608321f913e5ca1459b32d\nRevert accidental local_repository change\n\nPiperOrigin-RevId: 292245373\n\naf3400a8cb6110025198b59a0f7d018ae3cda700\nUpdate gapic-generator dependency (prebuilt PHP binary support).\n\nPiperOrigin-RevId: 292243997\n\n341fd5690fae36f36cf626ef048fbcf4bbe7cee6\ngrafeas: v1 add resource_definition for the grafeas.io/Project and change references for Project.\n\nPiperOrigin-RevId: 292221998\n\n42e915ec2ece1cd37a590fbcd10aa2c0fb0e5b06\nUpdate the gapic-generator, protoc-java-resource-name-plugin and protoc-docs-plugin to the latest commit.\n\nPiperOrigin-RevId: 292182368\n\nf035f47250675d31492a09f4a7586cfa395520a7\nFix grafeas build and update build.sh script to include gerafeas.\n\nPiperOrigin-RevId: 292168753\n\n26ccb214b7bc4a716032a6266bcb0a9ca55d6dbb\nasset: v1p1beta1 add client config annotations and retry config\n\nPiperOrigin-RevId: 292154210\n\n974ee5c0b5d03e81a50dafcedf41e0efebb5b749\nasset: v1beta1 add client config annotations\n\nPiperOrigin-RevId: 292152573\n\n" } }, { "template": { "name": "node_library", "origin": "synthtool.gcp", - "version": "2019.10.17" + "version": "2020.2.4" } } ], @@ -36,376 +36,5 @@ "config": "google/datastore/artman_datastore.yaml" } } - ], - "newFiles": [ - { - "path": ".eslintignore" - }, - { - "path": ".eslintrc.yml" - }, - { - "path": ".github/ISSUE_TEMPLATE/bug_report.md" - }, - { - "path": ".github/ISSUE_TEMPLATE/feature_request.md" - }, - { - "path": ".github/ISSUE_TEMPLATE/support_request.md" - }, - { - "path": ".github/PULL_REQUEST_TEMPLATE.md" - }, - { - "path": ".github/release-please.yml" - }, - { - "path": ".gitignore" - }, - { - "path": ".jsdoc.js" - }, - { - "path": ".kokoro/.gitattributes" - }, - { - "path": ".kokoro/common.cfg" - }, - { - "path": ".kokoro/continuous/node10/common.cfg" - }, - { - "path": ".kokoro/continuous/node10/docs.cfg" - }, - { - "path": ".kokoro/continuous/node10/lint.cfg" - }, - { - "path": ".kokoro/continuous/node10/samples-test.cfg" - }, - { - "path": ".kokoro/continuous/node10/system-test.cfg" - }, - { - "path": ".kokoro/continuous/node10/test.cfg" - }, - { - "path": ".kokoro/continuous/node12/common.cfg" - }, - { - "path": ".kokoro/continuous/node12/test.cfg" - }, - { - "path": ".kokoro/continuous/node8/common.cfg" - }, - { - "path": ".kokoro/continuous/node8/test.cfg" - }, - { - "path": ".kokoro/docs.sh" - }, - { - "path": ".kokoro/lint.sh" - }, - { - "path": ".kokoro/presubmit/node10/common.cfg" - }, - { - "path": ".kokoro/presubmit/node10/docs.cfg" - }, - { - "path": ".kokoro/presubmit/node10/lint.cfg" - }, - { - "path": ".kokoro/presubmit/node10/samples-test.cfg" - }, - { - "path": ".kokoro/presubmit/node10/system-test.cfg" - }, - { - "path": ".kokoro/presubmit/node10/test.cfg" - }, - { - "path": ".kokoro/presubmit/node12/common.cfg" - }, - { - "path": ".kokoro/presubmit/node12/test.cfg" - }, - { - "path": ".kokoro/presubmit/node8/common.cfg" - }, - { - "path": ".kokoro/presubmit/node8/test.cfg" - }, - { - "path": ".kokoro/presubmit/windows/common.cfg" - }, - { - "path": ".kokoro/presubmit/windows/test.cfg" - }, - { - "path": ".kokoro/publish.sh" - }, - { - "path": ".kokoro/release/common.cfg" - }, - { - "path": ".kokoro/release/docs.cfg" - }, - { - "path": ".kokoro/release/docs.sh" - }, - { - "path": ".kokoro/release/publish.cfg" - }, - { - "path": ".kokoro/samples-test.sh" - }, - { - "path": ".kokoro/system-test.sh" - }, - { - "path": ".kokoro/test.bat" - }, - { - "path": ".kokoro/test.sh" - }, - { - "path": ".kokoro/trampoline.sh" - }, - { - "path": ".nycrc" - }, - { - "path": ".prettierignore" - }, - { - "path": ".prettierrc" - }, - { - "path": ".readme-partials.yml" - }, - { - "path": ".repo-metadata.json" - }, - { - "path": "CHANGELOG.md" - }, - { - "path": "CODE_OF_CONDUCT.md" - }, - { - "path": "CONTRIBUTING.md" - }, - { - "path": "LICENSE" - }, - { - "path": "README.md" - }, - { - "path": "codecov.yaml" - }, - { - "path": "linkinator.config.json" - }, - { - "path": "package.json" - }, - { - "path": "proto/app_engine_key.d.ts" - }, - { - "path": "proto/datastore.d.ts" - }, - { - "path": "proto/entity.d.ts" - }, - { - "path": "protos/app_engine_key.proto" - }, - { - "path": "protos/google/datastore/v1/datastore.proto" - }, - { - "path": "protos/google/datastore/v1/entity.proto" - }, - { - "path": "protos/google/datastore/v1/query.proto" - }, - { - "path": "protos/protos.d.ts" - }, - { - "path": "protos/protos.js" - }, - { - "path": "protos/protos.json" - }, - { - "path": "renovate.json" - }, - { - "path": "samples/.eslintrc.yml" - }, - { - "path": "samples/README.md" - }, - { - "path": "samples/concepts.js" - }, - { - "path": "samples/error.js" - }, - { - "path": "samples/index.yaml" - }, - { - "path": "samples/package.json" - }, - { - "path": "samples/quickstart.js" - }, - { - "path": "samples/tasks.add.js" - }, - { - "path": "samples/tasks.delete.js" - }, - { - "path": "samples/tasks.js" - }, - { - "path": "samples/tasks.list.js" - }, - { - "path": "samples/tasks.markdone.js" - }, - { - "path": "samples/test/concepts.test.js" - }, - { - "path": "samples/test/error.test.js" - }, - { - "path": "samples/test/index.yaml" - }, - { - "path": "samples/test/quickstart.test.js" - }, - { - "path": "samples/test/tasks.test.js" - }, - { - "path": "src/.eslintrc.yml" - }, - { - "path": "src/browser.js" - }, - { - "path": "src/entity.ts" - }, - { - "path": "src/index.ts" - }, - { - "path": "src/query.ts" - }, - { - "path": "src/request.ts" - }, - { - "path": "src/service_proto_list.json" - }, - { - "path": "src/transaction.ts" - }, - { - "path": "src/v1/datastore_client.d.ts" - }, - { - "path": "src/v1/datastore_client.js" - }, - { - "path": "src/v1/datastore_client_config.json" - }, - { - "path": "src/v1/datastore_proto_list.json" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_datastore.js" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_entity.js" - }, - { - "path": "src/v1/doc/google/datastore/v1/doc_query.js" - }, - { - "path": "src/v1/doc/google/protobuf/doc_wrappers.js" - }, - { - "path": "src/v1/index.d.ts" - }, - { - "path": "src/v1/index.js" - }, - { - "path": "synth.metadata" - }, - { - "path": "synth.py" - }, - { - "path": "system-test/data/index.yaml" - }, - { - "path": "system-test/datastore.ts" - }, - { - "path": "system-test/fixtures/sample/package.json" - }, - { - "path": "system-test/fixtures/sample/src/index.ts" - }, - { - "path": "system-test/fixtures/sample/tsconfig.json" - }, - { - "path": "system-test/install.ts" - }, - { - "path": "test/.eslintrc.yml" - }, - { - "path": "test/entity.ts" - }, - { - "path": "test/gapic-v1.js" - }, - { - "path": "test/index.ts" - }, - { - "path": "test/mocha.opts" - }, - { - "path": "test/query.ts" - }, - { - "path": "test/request.ts" - }, - { - "path": "test/transaction.ts" - }, - { - "path": "tsconfig.json" - }, - { - "path": "tslint.json" - }, - { - "path": "webpack.config.js" - } ] } \ No newline at end of file From 02ab799c86c23c66218c60203e1bd3a38be96482 Mon Sep 17 00:00:00 2001 From: "gcf-merge-on-green[bot]" <60162190+gcf-merge-on-green[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2020 01:24:16 +0000 Subject: [PATCH 500/820] build: update linkinator config (#606) --- handwritten/nodejs-datastore/linkinator.config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/linkinator.config.json b/handwritten/nodejs-datastore/linkinator.config.json index b555215ca02..29a223b6db6 100644 --- a/handwritten/nodejs-datastore/linkinator.config.json +++ b/handwritten/nodejs-datastore/linkinator.config.json @@ -4,5 +4,7 @@ "https://codecov.io/gh/googleapis/", "www.googleapis.com", "img.shields.io" - ] + ], + "silent": true, + "concurrency": 10 } From 58f878d52d74b93e84d07af3e96bbe7dd23d9d5e Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Fri, 6 Mar 2020 14:57:12 -0800 Subject: [PATCH 501/820] build(tests): fix coveralls and enable build cop (#609) --- handwritten/nodejs-datastore/.mocharc.js | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 handwritten/nodejs-datastore/.mocharc.js diff --git a/handwritten/nodejs-datastore/.mocharc.js b/handwritten/nodejs-datastore/.mocharc.js new file mode 100644 index 00000000000..ff7b34fa5d1 --- /dev/null +++ b/handwritten/nodejs-datastore/.mocharc.js @@ -0,0 +1,28 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +const config = { + "enable-source-maps": true, + "throw-deprecation": true, + "timeout": 10000 +} +if (process.env.MOCHA_THROW_DEPRECATION === 'false') { + delete config['throw-deprecation']; +} +if (process.env.MOCHA_REPORTER) { + config.reporter = process.env.MOCHA_REPORTER; +} +if (process.env.MOCHA_REPORTER_OUTPUT) { + config['reporter-option'] = `output=${process.env.MOCHA_REPORTER_OUTPUT}`; +} +module.exports = config From 08f8c20a4dc9485eaff52e1ff579a4c4a5a88b8b Mon Sep 17 00:00:00 2001 From: Xiaozhen Liu Date: Tue, 10 Mar 2020 10:31:03 -0700 Subject: [PATCH 502/820] feat: move library to Typescript code generation (#608) * remove docs/ * update client,test,system-test * update config * update synth.py * run synthtool & disable TODO comment check * system-test pads * update system-test in synth.py * update dependency to latest --- handwritten/nodejs-datastore/.gitignore | 4 +- handwritten/nodejs-datastore/.jsdoc.js | 3 + handwritten/nodejs-datastore/package.json | 75 +- .../google/cloud/common_resources.proto | 52 ++ .../nodejs-datastore/samples/tasks.add.js | 1 + .../nodejs-datastore/samples/tasks.delete.js | 1 + .../samples/tasks.markdone.js | 1 + .../src/service_proto_list.json | 1 - .../src/v1/datastore_client.d.ts | 372 -------- .../src/v1/datastore_client.js | 697 --------------- .../src/v1/datastore_client.ts | 812 ++++++++++++++++++ .../src/v1/datastore_client_config.json | 16 +- .../src/v1/datastore_proto_list.json | 4 +- .../doc/google/datastore/v1/doc_datastore.js | 512 ----------- .../v1/doc/google/datastore/v1/doc_entity.js | 253 ------ .../v1/doc/google/datastore/v1/doc_query.js | 505 ----------- .../v1/doc/google/protobuf/doc_wrappers.js | 32 - .../nodejs-datastore/src/v1/index.d.ts | 17 - .../src/{browser.js => v1/index.ts} | 14 +- handwritten/nodejs-datastore/synth.metadata | 39 +- handwritten/nodejs-datastore/synth.py | 22 +- .../system-test/fixtures/sample/package.json | 23 - .../fixtures/sample/src}/index.js | 15 +- .../system-test/fixtures/sample/src/index.ts | 25 +- .../system-test/fixtures/sample/tsconfig.json | 10 - .../nodejs-datastore/system-test/install.ts | 74 +- .../{gapic-v1.js => gapic-datastore-v1.ts} | 376 ++++---- handwritten/nodejs-datastore/tsconfig.json | 9 +- .../nodejs-datastore/webpack.config.js | 30 +- 29 files changed, 1214 insertions(+), 2781 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/google/cloud/common_resources.proto delete mode 100644 handwritten/nodejs-datastore/src/service_proto_list.json delete mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client.d.ts delete mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client.js create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_client.ts delete mode 100644 handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js delete mode 100644 handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js delete mode 100644 handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js delete mode 100644 handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js delete mode 100644 handwritten/nodejs-datastore/src/v1/index.d.ts rename handwritten/nodejs-datastore/src/{browser.js => v1/index.ts} (66%) delete mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/package.json rename handwritten/nodejs-datastore/{src/v1 => system-test/fixtures/sample/src}/index.js (56%) delete mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json rename handwritten/nodejs-datastore/test/{gapic-v1.js => gapic-datastore-v1.ts} (58%) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index e869cd90bbc..5d32b23782f 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -1,6 +1,7 @@ **/*.log **/node_modules .coverage +coverage .nyc_output docs/ out/ @@ -9,6 +10,5 @@ system-test/secrets.js system-test/*key.json *.lock .DS_Store -__pycache__ -.vscode package-lock.json +__pycache__ diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 333aa6e4999..a99d037fc96 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** 'use strict'; diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 04f025e5777..6b2659da84f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -8,13 +8,12 @@ "node": ">=8.10.0" }, "repository": "googleapis/nodejs-datastore", - "main": "./build/src/index.js", + "main": "build/src/index.js", "files": [ "build/proto", "build/protos", "build/src" ], - "types": "build/src/index.d.ts", "keywords": [ "google apis client", "google api client", @@ -28,16 +27,17 @@ "datastore" ], "scripts": { - "docs": "jsdoc -c .jsdoc.js", - "lint": "gts check && eslint '**/*.js'", - "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", "test": "c8 mocha build/test", + "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", + "lint": "gts fix && eslint samples/*.js", + "fix": "gts fix && eslint '**/*.js' --fix", + "compile": "tsc -p . && cp -r proto* build/", + "compile-protos": "compileProtos src", + "prepare": "npm run compile", + "docs": "jsdoc -c .jsdoc.js", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", - "fix": "gts fix && eslint '**/*.js' --fix", "clean": "gts clean", - "compile": "tsc -p . && cp -r src/v1 build/src && cp -r proto* build && cp test/*.js build/test", - "prepare": "npm run compile", "pretest": "npm run compile", "proto": "npm run proto:datastore && npm run proto:appenginekey", "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", @@ -47,49 +47,56 @@ "prelint": "cd samples; npm link ../; npm i" }, "dependencies": { - "@google-cloud/projectify": "^1.0.0", - "@google-cloud/promisify": "^1.0.0", - "@grpc/grpc-js": "0.6.16", + "@google-cloud/projectify": "^1.0.4", + "@google-cloud/promisify": "^1.0.4", + "@grpc/grpc-js": "0.7.0", "@types/duplexify": "^3.6.0", - "@types/long": "^4.0.0", + "@types/long": "^4.0.1", "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-auth-library": "^5.0.0", - "google-gax": "^1.7.5", + "google-auth-library": "^5.10.1", + "google-gax": "^1.14.2", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" }, "devDependencies": { + "@types/mocha": "^7.0.2", + "@types/node": "^13.9.0", + "gts": "^1.1.2", + "null-loader": "^3.0.0", + "pack-n-play": "^1.0.0-2", + "power-assert": "^1.6.1", + "ts-loader": "^6.2.1", + "typescript": "^3.7.0", + "webpack": "^4.42.0", + "webpack-cli": "^3.3.11", + "c8": "^7.1.0", + "codecov": "^3.6.5", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.10.0", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-prettier": "^3.1.2", + "jsdoc": "^3.6.3", + "jsdoc-fresh": "^1.0.2", + "jsdoc-region-tag": "^1.0.4", + "linkinator": "^2.0.3", + "mocha": "^7.1.0", + "prettier": "^1.19.1", "@types/extend": "^3.0.1", "@types/is": "0.0.21", - "@types/mocha": "^7.0.0", "@types/mv": "^2.1.0", - "@types/ncp": "^2.0.1", + "@types/ncp": "^2.0.3", "@types/proxyquire": "^1.3.28", - "@types/sinon": "^7.0.11", + "@types/sinon": "^7.5.2", "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", - "codecov": "^3.5.0", - "eslint": "^6.0.0", - "eslint-config-prettier": "^6.0.0", - "eslint-plugin-node": "^11.0.0", - "eslint-plugin-prettier": "^3.1.0", - "google-proto-files": "^1.0.0", - "gts": "^1.0.0", - "jsdoc": "^3.6.2", - "jsdoc-fresh": "^1.0.1", - "jsdoc-region-tag": "^1.0.2", - "linkinator": "^2.0.0", - "mocha": "^7.0.0", + "google-proto-files": "^1.1.2", "mv": "^2.1.1", "ncp": "^2.0.0", - "c8": "^7.0.0", - "prettier": "^1.17.1", - "proxyquire": "^2.1.0", + "proxyquire": "^2.1.3", "sinon": "^9.0.0", - "tmp": "0.1.0", - "typescript": "3.6.4" + "tmp": "0.1.0" } } diff --git a/handwritten/nodejs-datastore/protos/google/cloud/common_resources.proto b/handwritten/nodejs-datastore/protos/google/cloud/common_resources.proto new file mode 100644 index 00000000000..56c9f800d5e --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/cloud/common_resources.proto @@ -0,0 +1,52 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file contains stub messages for common resources in GCP. +// It is not intended to be directly generated, and is instead used by +// other tooling to be able to match common resource patterns. +syntax = "proto3"; + +package google.cloud; + +import "google/api/resource.proto"; + + +option (google.api.resource_definition) = { + type: "cloudresourcemanager.googleapis.com/Project" + pattern: "projects/{project}" +}; + + +option (google.api.resource_definition) = { + type: "cloudresourcemanager.googleapis.com/Organization" + pattern: "organizations/{organization}" +}; + + +option (google.api.resource_definition) = { + type: "cloudresourcemanager.googleapis.com/Folder" + pattern: "folders/{folder}" +}; + + +option (google.api.resource_definition) = { + type: "cloudbilling.googleapis.com/BillingAccount" + pattern: "billingAccounts/{billing_account}" +}; + +option (google.api.resource_definition) = { + type: "locations.googleapis.com/Location" + pattern: "projects/{project}/locations/{location}" +}; + diff --git a/handwritten/nodejs-datastore/samples/tasks.add.js b/handwritten/nodejs-datastore/samples/tasks.add.js index a6d17c47021..ba76aa8c307 100644 --- a/handwritten/nodejs-datastore/samples/tasks.add.js +++ b/handwritten/nodejs-datastore/samples/tasks.add.js @@ -19,6 +19,7 @@ // description: Adds a task with a description . // usage: node tasks.add.js +/*eslint no-warning-comments: [0, { "terms": ["todo"], "location": "anywhere" }]*/ async function main(description) { // [START datastore_add_entity] const {Datastore} = require('@google-cloud/datastore'); diff --git a/handwritten/nodejs-datastore/samples/tasks.delete.js b/handwritten/nodejs-datastore/samples/tasks.delete.js index 8e09ada9c62..c94ef7d8231 100644 --- a/handwritten/nodejs-datastore/samples/tasks.delete.js +++ b/handwritten/nodejs-datastore/samples/tasks.delete.js @@ -19,6 +19,7 @@ // description: Deletes task . // usage: node tasks.delete.js +/*eslint no-warning-comments: [0, { "terms": ["todo"], "location": "anywhere" }]*/ async function main(taskId) { taskId = Number(taskId); // [START datastore_delete_entity] diff --git a/handwritten/nodejs-datastore/samples/tasks.markdone.js b/handwritten/nodejs-datastore/samples/tasks.markdone.js index 61c9b3b90f4..8fb6d0c99f1 100644 --- a/handwritten/nodejs-datastore/samples/tasks.markdone.js +++ b/handwritten/nodejs-datastore/samples/tasks.markdone.js @@ -19,6 +19,7 @@ // description: Marks task as Done. // usage: node tasks.markdone.js +/*eslint no-warning-comments: [0, { "terms": ["todo"], "location": "anywhere" }]*/ async function main(taskId) { taskId = Number(taskId); // [START datastore_update_entity] diff --git a/handwritten/nodejs-datastore/src/service_proto_list.json b/handwritten/nodejs-datastore/src/service_proto_list.json deleted file mode 100644 index fe654d46fe7..00000000000 --- a/handwritten/nodejs-datastore/src/service_proto_list.json +++ /dev/null @@ -1 +0,0 @@ -["../protos/google/datastore/v1/entity.proto", "../protos/google/datastore/v1/datastore.proto", "../protos/google/datastore/v1/query.proto"] \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts deleted file mode 100644 index 502f0e77b33..00000000000 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.d.ts +++ /dev/null @@ -1,372 +0,0 @@ -/*! - * Copyright 2019 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {CallOptions, GrpcClientOptions} from 'google-gax'; -import {ServiceError} from '@grpc/grpc-js'; -import {common as protobuf} from 'protobufjs'; - -declare class DatastoreClient { - static servicePath: string; - static port: number; - static scopes: string[]; - - constructor(opts?: GrpcClientOptions); - - getProjectId(callback: DatastoreClient.GetProjectIdCallback): void; - - lookup(request: DatastoreClient.LookupRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.LookupResponse]>; - lookup(request: DatastoreClient.LookupRequest, callback: DatastoreClient.LookupCallback): void; - lookup(request: DatastoreClient.LookupRequest, options: CallOptions, callback: DatastoreClient.LookupCallback): void; - - runQuery(request: DatastoreClient.RunQueryRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.RunQueryResponse]>; - runQuery(request: DatastoreClient.RunQueryRequest, callback: DatastoreClient.RunQueryCallback): void; - runQuery(request: DatastoreClient.RunQueryRequest, options: CallOptions, callback: DatastoreClient.RunQueryCallback): void; - - beginTransaction(request: DatastoreClient.BeginTransactionRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.BeginTransactionResponse]>; - beginTransaction(request: DatastoreClient.BeginTransactionRequest, callback: DatastoreClient.BeginTransactionCallback): void; - beginTransaction(request: DatastoreClient.BeginTransactionRequest, options: CallOptions, callback: DatastoreClient.BeginTransactionCallback): void; - - commit(request: DatastoreClient.CommitRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.CommitResponse]>; - commit(request: DatastoreClient.CommitRequest, callback: DatastoreClient.CommitCallback): void; - commit(request: DatastoreClient.CommitRequest, options: CallOptions, callback: DatastoreClient.CommitCallback): void; - - rollback(request: DatastoreClient.RollbackRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.RollbackResponse]>; - rollback(request: DatastoreClient.RollbackRequest, callback: DatastoreClient.RollbackCallback): void; - rollback(request: DatastoreClient.RollbackRequest, options: CallOptions, callback: DatastoreClient.RollbackCallback): void; - - allocateIds(request: DatastoreClient.AllocateIdsRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.AllocateIdsResponse]>; - allocateIds(request: DatastoreClient.AllocateIdsRequest, callback: DatastoreClient.AllocateIdsCallback): void; - allocateIds(request: DatastoreClient.AllocateIdsRequest, options: CallOptions, callback: DatastoreClient.AllocateIdsCallback): void; - - reserveIds(request: DatastoreClient.ReserveIdsRequest, options?: CallOptions): DatastoreClient.CancelablePromise<[DatastoreClient.ReserveIdsResponse]>; - reserveIds(request: DatastoreClient.ReserveIdsRequest, callback: DatastoreClient.ReserveIdsCallback): void; - reserveIds(request: DatastoreClient.ReserveIdsRequest, options: CallOptions, callback: DatastoreClient.ReserveIdsCallback): void; -} - -declare namespace DatastoreClient { - interface CancelablePromise extends Promise { - cancel(): void; - } - - interface GetProjectIdCallback { - (error: null|Error, projectId: string): void; - } - - interface LookupRequest { - projectId: string; - readOptions?: ReadOptions; - keys: Key[]; - } - - interface LookupResponse { - found: EntityResult[]; - missing: EntityResult[]; - deferred: Key[]; - } - - interface LookupCallback { - (err: null|ServiceError, response: LookupResponse): void; - } - - interface RunQueryRequest { - projectId: string; - partitionId?: PartitionId; - readOptions?: ReadOptions; - queryType?: string; - query?: Query; - gqlQuery?: GqlQuery; - } - - interface RunQueryResponse { - batch: QueryResultBatch; - query: Query; - } - - interface RunQueryCallback { - (err: null|ServiceError, response: RunQueryResponse): void; - } - - interface BeginTransactionRequest { - projectId: string; - transactionOptions?: TransactionOptions; - } - - interface BeginTransactionResponse { - transaction: string|Buffer; - } - - interface BeginTransactionCallback { - (err: null|ServiceError, response: BeginTransactionResponse): void; - } - - const enum CommitRequestMode { - MODE_UNSPECIFIED = 'MODE_UNSPECIFIED', - TRANSACTIONAL = 'TRANSACTIONAL', - NON_TRANSACTIONAL = 'NON_TRANSACTIONAL' - } - - interface CommitRequest { - projectId: string; - mode: CommitRequestMode; - transactionSelector?: string; - transaction?: string|Buffer; - mutations: Mutation[]; - } - - interface CommitResponse { - mutationResults: MutationResult[]; - indexUpdates: number; - } - - interface CommitCallback { - (err: null|ServiceError, response: CommitResponse): void; - } - - interface RollbackRequest { - projectId: string; - transaction: string|Buffer; - } - - interface RollbackResponse {} - - interface RollbackCallback { - (err: null|ServiceError, response: RollbackResponse): void; - } - - interface AllocateIdsRequest { - projectId: string; - keys: Key[]; - } - - interface AllocateIdsResponse { - keys: Key[]; - } - - interface AllocateIdsCallback { - (err: null|ServiceError, response: AllocateIdsResponse): void; - } - - interface ReserveIdsRequest { - projectId: string; - databaseId?: string; - keys: Key[]; - } - - interface ReserveIdsResponse {} - - interface ReserveIdsCallback { - (err: null|ServiceError, response: ReserveIdsResponse): void; - } - - interface Mutation { - insert?: Entity; - update?: Entity; - upsert?: Entity; - delete?: Key; - operation?: string; - conflictDetectionStrategy?: string; - baseVersion?: number; - } - - interface MutationResult { - key: null|Key; - version: number; - conflictDetected: boolean; - } - - const enum ReadConsistency { - READ_CONSISTENCY_UNSPECIFIED = 'READ_CONSISTENCY_UNSPECIFIED', - STRONG = 'STRONG', - EVENTUAL = 'EVENTUAL' - } - - interface ReadOptions { - consistencyType?: string; - readConsistency?: ReadConsistency; - transaction?: string|Buffer; - } - - interface ReadWrite { - previousTransaction?: string|Buffer; - } - - interface ReadOnly {} - - interface TransactionOptions { - mode?: string; - readWrite?: ReadWrite; - readOnly?: ReadOnly; - } - - interface PartitionId { - projectId: string; - namespaceId?: string; - } - - interface PathElement { - kind: string; - id?: number; - name?: string; - idType?: string; - } - - interface Key { - partitionId?: PartitionId; - path: PathElement[]; - } - - interface ArrayValue { - values: Value[]; - } - - interface Value { - nullValue?: 0; - booleanValue?: boolean; - integerValue?: number; - doubleValue?: number; - timestampValue?: protobuf.ITimestamp; - keyValue?: Key; - stringValue?: string; - blobValue?: string|Buffer; - geoPointValue?: LatLng; - entityValue?: Entity; - arrayValue?: ArrayValue; - valueType?: string; - meaning?: number; - excludeFromIndexes?: boolean; - } - - interface Entity { - key: null|Key; - properties: {[name: string]: Value}; - } - - const enum ResultType { - RESULT_TYPE_UNSPECIFIED = 'RESULT_TYPE_UNSPECIFIED', - FULL = 'FULL', - PROJECTION = 'PROJECTION', - KEY_ONLY = 'KEY_ONLY' - } - - interface EntityResult { - entity: Entity; - version: number; - cursor: string|Buffer; - } - - interface Query { - projection: Projection[]; - kind: KindExpression[]; - filter?: Filter; - order: PropertyOrder[]; - distinctOn: PropertyReference[]; - startCursor?: string|Buffer; - endCursor?: string|Buffer; - offset?: number; - limit?: protobuf.IInt32Value; - } - - interface KindExpression { - name: string; - } - - interface PropertyReference { - name: string; - } - - interface Projection { - property: PropertyReference; - } - - const enum Direction { - DIRECTION_UNSPECIFIED = 'DIRECTION_UNSPECIFIED', - ASCENDING = 'ASCENDING', - DESCENDING = 'DESCENDING' - } - - interface PropertyOrder { - property: PropertyReference; - direction: Direction; - } - - interface Filter { - filterType?: string; - compositeFilter?: CompositeFilter; - propertyFilter?: PropertyFilter; - } - - const enum CompositeFilterOperator { - OPERATOR_UNSPECIFIED = 'OPERATOR_UNSPECIFIED', - AND = 'AND' - } - - interface CompositeFilter { - op: CompositeFilterOperator; - filters: Filter[]; - } - - const enum PropertyFilterOperator { - OPERATOR_UNSPECIFIED = 'OPERATOR_UNSPECIFIED', - LESS_THAN = 'LESS_THAN', - LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL', - GREATER_THAN = 'GREATER_THAN', - GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL', - EQUAL = 'EQUAL', - HAS_ANCESTOR = 'HAS_ANCESTOR' - } - - interface PropertyFilter { - property: PropertyReference; - op: PropertyFilterOperator; - value: Value; - } - - interface GqlQuery { - queryString: string; - allowLiterals?: boolean; - namedBindings?: {[name: string]: GqlQueryParameter}; - positionalBindings?: GqlQueryParameter[]; - } - - interface GqlQueryParameter { - parameterType?: string; - value?: Value; - cursor?: string|Buffer; - } - - const enum MoreResultsType { - MORE_RESULTS_TYPE_UNSPECIFIED = 'MORE_RESULTS_TYPE_UNSPECIFIED', - NOT_FINISHED = 'NOT_FINISHED', - MORE_RESULTS_AFTER_LIMIT = 'MORE_RESULTS_AFTER_LIMIT', - NO_MORE_RESULTS = 'NO_MORE_RESULTS', - MORE_RESULTS_AFTER_CURSOR = 'MORE_RESULTS_AFTER_CURSOR' - } - - interface QueryResultBatch { - skippedResults: number; - skippedCursor: string|Buffer; - entityResultType: ResultType; - entityResults: EntityResult[]; - endCursor: string|Buffer; - moreResults: MoreResultsType; - snapshotVersion: number; - } - - interface LatLng { - latitude: number; - longitude: number; - } -} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.js b/handwritten/nodejs-datastore/src/v1/datastore_client.js deleted file mode 100644 index ba1ea9d4fb9..00000000000 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.js +++ /dev/null @@ -1,697 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -const gapicConfig = require('./datastore_client_config.json'); -const gax = require('google-gax'); -const path = require('path'); - -const VERSION = require('../../../package.json').version; - -/** - * Each RPC normalizes the partition IDs of the keys in its input entities, - * and always returns entities with keys with normalized partition IDs. - * This applies to all keys and entities, including those in values, except keys - * with both an empty path and an empty or unset partition ID. Normalization of - * input keys sets the project ID (if not already set) to the project ID from - * the request. - * - * @class - * @memberof v1 - */ -class DatastoreClient { - /** - * Construct an instance of DatastoreClient. - * - * @param {object} [options] - The configuration object. See the subsequent - * parameters for more details. - * @param {object} [options.credentials] - Credentials object. - * @param {string} [options.credentials.client_email] - * @param {string} [options.credentials.private_key] - * @param {string} [options.email] - Account email address. Required when - * using a .pem or .p12 keyFilename. - * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or - * .p12 key downloaded from the Google Developers Console. If you provide - * a path to a JSON file, the projectId option below is not necessary. - * NOTE: .pem and .p12 require you to specify options.email as well. - * @param {number} [options.port] - The port on which to connect to - * the remote host. - * @param {string} [options.projectId] - The project ID from the Google - * Developer's Console, e.g. 'grape-spaceship-123'. We will also check - * the environment variable GCLOUD_PROJECT for your project ID. If your - * app is running in an environment which supports - * {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials}, - * your project ID will be detected automatically. - * @param {function} [options.promise] - Custom promise module to use instead - * of native Promises. - * @param {string} [options.apiEndpoint] - The domain name of the - * API remote host. - */ - constructor(opts) { - opts = opts || {}; - this._descriptors = {}; - - if (global.isBrowser) { - // If we're in browser, we use gRPC fallback. - opts.fallback = true; - } - - // If we are in browser, we are already using fallback because of the - // "browser" field in package.json. - // But if we were explicitly requested to use fallback, let's do it now. - const gaxModule = !global.isBrowser && opts.fallback ? gax.fallback : gax; - - const servicePath = - opts.servicePath || opts.apiEndpoint || this.constructor.servicePath; - - // Ensure that options include the service address and port. - opts = Object.assign( - { - clientConfig: {}, - port: this.constructor.port, - servicePath, - }, - opts - ); - - // Create a `gaxGrpc` object, with any grpc-specific options - // sent to the client. - opts.scopes = this.constructor.scopes; - const gaxGrpc = new gaxModule.GrpcClient(opts); - - // Save the auth object to the client, for use by other methods. - this.auth = gaxGrpc.auth; - - // Determine the client header string. - const clientHeader = []; - - if (typeof process !== 'undefined' && 'versions' in process) { - clientHeader.push(`gl-node/${process.versions.node}`); - } - clientHeader.push(`gax/${gaxModule.version}`); - if (opts.fallback) { - clientHeader.push(`gl-web/${gaxModule.version}`); - } else { - clientHeader.push(`grpc/${gaxGrpc.grpcVersion}`); - } - clientHeader.push(`gapic/${VERSION}`); - if (opts.libName && opts.libVersion) { - clientHeader.push(`${opts.libName}/${opts.libVersion}`); - } - - // Load the applicable protos. - // For Node.js, pass the path to JSON proto file. - // For browsers, pass the JSON content. - - const nodejsProtoPath = path.join( - __dirname, - '..', - '..', - 'protos', - 'protos.json' - ); - const protos = gaxGrpc.loadProto( - opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath - ); - - // Put together the default options sent with requests. - const defaults = gaxGrpc.constructSettings( - 'google.datastore.v1.Datastore', - gapicConfig, - opts.clientConfig, - {'x-goog-api-client': clientHeader.join(' ')} - ); - - // Set up a dictionary of "inner API calls"; the core implementation - // of calling the API is handled in `google-gax`, with this code - // merely providing the destination and request information. - this._innerApiCalls = {}; - - // Put together the "service stub" for - // google.datastore.v1.Datastore. - const datastoreStub = gaxGrpc.createStub( - opts.fallback - ? protos.lookupService('google.datastore.v1.Datastore') - : protos.google.datastore.v1.Datastore, - opts - ); - - // Iterate over each of the methods that the service provides - // and create an API call method for each. - const datastoreStubMethods = [ - 'lookup', - 'runQuery', - 'beginTransaction', - 'commit', - 'rollback', - 'allocateIds', - 'reserveIds', - ]; - for (const methodName of datastoreStubMethods) { - const innerCallPromise = datastoreStub.then( - stub => (...args) => { - return stub[methodName].apply(stub, args); - }, - err => () => { - throw err; - } - ); - this._innerApiCalls[methodName] = gaxModule.createApiCall( - innerCallPromise, - defaults[methodName], - null - ); - } - } - - /** - * The DNS address for this API service. - */ - static get servicePath() { - return 'datastore.googleapis.com'; - } - - /** - * The DNS address for this API service - same as servicePath(), - * exists for compatibility reasons. - */ - static get apiEndpoint() { - return 'datastore.googleapis.com'; - } - - /** - * The port for this API service. - */ - static get port() { - return 443; - } - - /** - * The scopes needed to make gRPC calls for every method defined - * in this service. - */ - static get scopes() { - return [ - 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/datastore', - ]; - } - - /** - * Return the project ID used by this class. - * @param {function(Error, string)} callback - the callback to - * be called with the current project Id. - */ - getProjectId(callback) { - return this.auth.getProjectId(callback); - } - - // ------------------- - // -- Service calls -- - // ------------------- - - /** - * Looks up entities by key. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Object[]} request.keys - * Required. Keys of entities to look up. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * @param {Object} [request.readOptions] - * The options for this lookup request. - * - * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * const keys = []; - * const request = { - * projectId: projectId, - * keys: keys, - * }; - * client.lookup(request) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - lookup(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.lookup(request, options, callback); - } - - /** - * Queries for entities. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Object} [request.partitionId] - * Entities are partitioned into subsets, identified by a partition ID. - * Queries are scoped to a single partition. - * This partition ID is normalized with the standard default context - * partition ID. - * - * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} - * @param {Object} [request.readOptions] - * The options for this query. - * - * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} - * @param {Object} [request.query] - * The query to run. - * - * This object should have the same structure as [Query]{@link google.datastore.v1.Query} - * @param {Object} [request.gqlQuery] - * The GQL query to run. - * - * This object should have the same structure as [GqlQuery]{@link google.datastore.v1.GqlQuery} - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * client.runQuery({projectId: projectId}) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - runQuery(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.runQuery(request, options, callback); - } - - /** - * Begins a new transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Object} [request.transactionOptions] - * Options for a new transaction. - * - * This object should have the same structure as [TransactionOptions]{@link google.datastore.v1.TransactionOptions} - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * client.beginTransaction({projectId: projectId}) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - beginTransaction(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.beginTransaction(request, options, callback); - } - - /** - * Commits a transaction, optionally creating, deleting or modifying some - * entities. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {number} [request.mode] - * The type of commit to perform. Defaults to `TRANSACTIONAL`. - * - * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} - * @param {Buffer} [request.transaction] - * The identifier of the transaction associated with the commit. A - * transaction identifier is returned by a call to - * Datastore.BeginTransaction. - * @param {Object[]} [request.mutations] - * The mutations to perform. - * - * When mode is `TRANSACTIONAL`, mutations affecting a single entity are - * applied in order. The following sequences of mutations affecting a single - * entity are not permitted in a single `Commit` request: - * - * - `insert` followed by `insert` - * - `update` followed by `insert` - * - `upsert` followed by `insert` - * - `delete` followed by `update` - * - * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single - * entity. - * - * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * client.commit({projectId: projectId}) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - commit(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.commit(request, options, callback); - } - - /** - * Rolls back a transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Buffer} request.transaction - * Required. The transaction identifier, returned by a call to - * Datastore.BeginTransaction. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * const transaction = Buffer.from(''); - * const request = { - * projectId: projectId, - * transaction: transaction, - * }; - * client.rollback(request) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - rollback(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.rollback(request, options, callback); - } - - /** - * Allocates IDs for the given keys, which is useful for referencing an entity - * before it is inserted. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Object[]} request.keys - * Required. A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * const keys = []; - * const request = { - * projectId: projectId, - * keys: keys, - * }; - * client.allocateIds(request) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - allocateIds(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.allocateIds(request, options, callback); - } - - /** - * Prevents the supplied keys' IDs from being auto-allocated by Cloud - * Datastore. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Object[]} request.keys - * Required. A list of keys with complete key paths whose numeric IDs should not be - * auto-allocated. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * @param {string} [request.databaseId] - * If not empty, the ID of the database against which to make the request. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See [gax.CallOptions]{@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - * @example - * - * const datastore = require('@google-cloud/datastore'); - * - * const client = new datastore.v1.DatastoreClient({ - * // optional auth parameters. - * }); - * - * const projectId = ''; - * const keys = []; - * const request = { - * projectId: projectId, - * keys: keys, - * }; - * client.reserveIds(request) - * .then(responses => { - * const response = responses[0]; - * // doThingsWith(response) - * }) - * .catch(err => { - * console.error(err); - * }); - */ - reserveIds(request, options, callback) { - if (options instanceof Function && callback === undefined) { - callback = options; - options = {}; - } - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId, - }); - - return this._innerApiCalls.reserveIds(request, options, callback); - } -} - -module.exports = DatastoreClient; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts new file mode 100644 index 00000000000..a1fd13f1e7e --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -0,0 +1,812 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + +import * as gax from 'google-gax'; +import { + APICallback, + Callback, + CallOptions, + Descriptors, + ClientOptions, +} from 'google-gax'; +import * as path from 'path'; + +import * as protosTypes from '../../protos/protos'; +import * as gapicConfig from './datastore_client_config.json'; + +const version = require('../../../package.json').version; + +/** + * Each RPC normalizes the partition IDs of the keys in its input entities, + * and always returns entities with keys with normalized partition IDs. + * This applies to all keys and entities, including those in values, except keys + * with both an empty path and an empty or unset partition ID. Normalization of + * input keys sets the project ID (if not already set) to the project ID from + * the request. + * + * @class + * @memberof v1 + */ +export class DatastoreClient { + private _descriptors: Descriptors = {page: {}, stream: {}, longrunning: {}}; + private _innerApiCalls: {[name: string]: Function}; + private _terminated = false; + private _opts: ClientOptions; + private _gaxModule: typeof gax | typeof gax.fallback; + private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; + private _protos: {}; + private _defaults: {[method: string]: gax.CallSettings}; + auth: gax.GoogleAuth; + datastoreStub?: Promise<{[name: string]: Function}>; + + /** + * Construct an instance of DatastoreClient. + * + * @param {object} [options] - The configuration object. See the subsequent + * parameters for more details. + * @param {object} [options.credentials] - Credentials object. + * @param {string} [options.credentials.client_email] + * @param {string} [options.credentials.private_key] + * @param {string} [options.email] - Account email address. Required when + * using a .pem or .p12 keyFilename. + * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or + * .p12 key downloaded from the Google Developers Console. If you provide + * a path to a JSON file, the projectId option below is not necessary. + * NOTE: .pem and .p12 require you to specify options.email as well. + * @param {number} [options.port] - The port on which to connect to + * the remote host. + * @param {string} [options.projectId] - The project ID from the Google + * Developer's Console, e.g. 'grape-spaceship-123'. We will also check + * the environment variable GCLOUD_PROJECT for your project ID. If your + * app is running in an environment which supports + * {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials}, + * your project ID will be detected automatically. + * @param {string} [options.apiEndpoint] - The domain name of the + * API remote host. + */ + + constructor(opts?: ClientOptions) { + // Ensure that options include the service address and port. + const staticMembers = this.constructor as typeof DatastoreClient; + const servicePath = + opts && opts.servicePath + ? opts.servicePath + : opts && opts.apiEndpoint + ? opts.apiEndpoint + : staticMembers.servicePath; + const port = opts && opts.port ? opts.port : staticMembers.port; + + if (!opts) { + opts = {servicePath, port}; + } + opts.servicePath = opts.servicePath || servicePath; + opts.port = opts.port || port; + opts.clientConfig = opts.clientConfig || {}; + + const isBrowser = typeof window !== 'undefined'; + if (isBrowser) { + opts.fallback = true; + } + // If we are in browser, we are already using fallback because of the + // "browser" field in package.json. + // But if we were explicitly requested to use fallback, let's do it now. + this._gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax; + + // Create a `gaxGrpc` object, with any grpc-specific options + // sent to the client. + opts.scopes = (this.constructor as typeof DatastoreClient).scopes; + this._gaxGrpc = new this._gaxModule.GrpcClient(opts); + + // Save options to use in initialize() method. + this._opts = opts; + + // Save the auth object to the client, for use by other methods. + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + + // Determine the client header string. + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; + if (typeof process !== 'undefined' && 'versions' in process) { + clientHeader.push(`gl-node/${process.versions.node}`); + } else { + clientHeader.push(`gl-web/${this._gaxModule.version}`); + } + if (!opts.fallback) { + clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); + } + if (opts.libName && opts.libVersion) { + clientHeader.push(`${opts.libName}/${opts.libVersion}`); + } + // Load the applicable protos. + // For Node.js, pass the path to JSON proto file. + // For browsers, pass the JSON content. + + const nodejsProtoPath = path.join( + __dirname, + '..', + '..', + 'protos', + 'protos.json' + ); + this._protos = this._gaxGrpc.loadProto( + opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath + ); + + // Put together the default options sent with requests. + this._defaults = this._gaxGrpc.constructSettings( + 'google.datastore.v1.Datastore', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + {'x-goog-api-client': clientHeader.join(' ')} + ); + + // Set up a dictionary of "inner API calls"; the core implementation + // of calling the API is handled in `google-gax`, with this code + // merely providing the destination and request information. + this._innerApiCalls = {}; + } + + /** + * Initialize the client. + * Performs asynchronous operations (such as authentication) and prepares the client. + * This function will be called automatically when any class method is called for the + * first time, but if you need to initialize it before calling an actual method, + * feel free to call initialize() directly. + * + * You can await on this method if you want to make sure the client is initialized. + * + * @returns {Promise} A promise that resolves to an authenticated service stub. + */ + initialize() { + // If the client stub promise is already initialized, return immediately. + if (this.datastoreStub) { + return this.datastoreStub; + } + + // Put together the "service stub" for + // google.datastore.v1.Datastore. + this.datastoreStub = this._gaxGrpc.createStub( + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.datastore.v1.Datastore' + ) + : // tslint:disable-next-line no-any + (this._protos as any).google.datastore.v1.Datastore, + this._opts + ) as Promise<{[method: string]: Function}>; + + // Iterate over each of the methods that the service provides + // and create an API call method for each. + const datastoreStubMethods = [ + 'lookup', + 'runQuery', + 'beginTransaction', + 'commit', + 'rollback', + 'allocateIds', + 'reserveIds', + ]; + + for (const methodName of datastoreStubMethods) { + const innerCallPromise = this.datastoreStub.then( + stub => (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + return stub[methodName].apply(stub, args); + }, + (err: Error | null | undefined) => () => { + throw err; + } + ); + + const apiCall = this._gaxModule.createApiCall( + innerCallPromise, + this._defaults[methodName], + this._descriptors.page[methodName] || + this._descriptors.stream[methodName] || + this._descriptors.longrunning[methodName] + ); + + this._innerApiCalls[methodName] = ( + argument: {}, + callOptions?: CallOptions, + callback?: APICallback + ) => { + return apiCall(argument, callOptions, callback); + }; + } + + return this.datastoreStub; + } + + /** + * The DNS address for this API service. + */ + static get servicePath() { + return 'datastore.googleapis.com'; + } + + /** + * The DNS address for this API service - same as servicePath(), + * exists for compatibility reasons. + */ + static get apiEndpoint() { + return 'datastore.googleapis.com'; + } + + /** + * The port for this API service. + */ + static get port() { + return 443; + } + + /** + * The scopes needed to make gRPC calls for every method defined + * in this service. + */ + static get scopes() { + return [ + 'https://www.googleapis.com/auth/cloud-platform', + 'https://www.googleapis.com/auth/datastore', + ]; + } + + getProjectId(): Promise; + getProjectId(callback: Callback): void; + /** + * Return the project ID used by this class. + * @param {function(Error, string)} callback - the callback to + * be called with the current project Id. + */ + getProjectId( + callback?: Callback + ): Promise | void { + if (callback) { + this.auth.getProjectId(callback); + return; + } + return this.auth.getProjectId(); + } + + // ------------------- + // -- Service calls -- + // ------------------- + lookup( + request: protosTypes.google.datastore.v1.ILookupRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.ILookupResponse, + protosTypes.google.datastore.v1.ILookupRequest | undefined, + {} | undefined + ] + >; + lookup( + request: protosTypes.google.datastore.v1.ILookupRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.ILookupResponse, + protosTypes.google.datastore.v1.ILookupRequest | undefined, + {} | undefined + > + ): void; + /** + * Looks up entities by key. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.ReadOptions} request.readOptions + * The options for this lookup request. + * @param {number[]} request.keys + * Required. Keys of entities to look up. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + lookup( + request: protosTypes.google.datastore.v1.ILookupRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.ILookupResponse, + protosTypes.google.datastore.v1.ILookupRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.ILookupResponse, + protosTypes.google.datastore.v1.ILookupRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.ILookupResponse, + protosTypes.google.datastore.v1.ILookupRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.lookup(request, options, callback); + } + runQuery( + request: protosTypes.google.datastore.v1.IRunQueryRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.IRunQueryResponse, + protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + {} | undefined + ] + >; + runQuery( + request: protosTypes.google.datastore.v1.IRunQueryRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.IRunQueryResponse, + protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + {} | undefined + > + ): void; + /** + * Queries for entities. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.PartitionId} request.partitionId + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + * @param {google.datastore.v1.ReadOptions} request.readOptions + * The options for this query. + * @param {google.datastore.v1.Query} request.query + * The query to run. + * @param {google.datastore.v1.GqlQuery} request.gqlQuery + * The GQL query to run. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + runQuery( + request: protosTypes.google.datastore.v1.IRunQueryRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.IRunQueryResponse, + protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.IRunQueryResponse, + protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.IRunQueryResponse, + protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.runQuery(request, options, callback); + } + beginTransaction( + request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.IBeginTransactionResponse, + protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + {} | undefined + ] + >; + beginTransaction( + request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.IBeginTransactionResponse, + protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + {} | undefined + > + ): void; + /** + * Begins a new transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.TransactionOptions} request.transactionOptions + * Options for a new transaction. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + beginTransaction( + request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.IBeginTransactionResponse, + protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.IBeginTransactionResponse, + protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.IBeginTransactionResponse, + protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.beginTransaction(request, options, callback); + } + commit( + request: protosTypes.google.datastore.v1.ICommitRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.ICommitResponse, + protosTypes.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + ] + >; + commit( + request: protosTypes.google.datastore.v1.ICommitRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.ICommitResponse, + protosTypes.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + > + ): void; + /** + * Commits a transaction, optionally creating, deleting or modifying some + * entities. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.CommitRequest.Mode} request.mode + * The type of commit to perform. Defaults to `TRANSACTIONAL`. + * @param {Buffer} request.transaction + * The identifier of the transaction associated with the commit. A + * transaction identifier is returned by a call to + * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * @param {number[]} request.mutations + * The mutations to perform. + * + * When mode is `TRANSACTIONAL`, mutations affecting a single entity are + * applied in order. The following sequences of mutations affecting a single + * entity are not permitted in a single `Commit` request: + * + * - `insert` followed by `insert` + * - `update` followed by `insert` + * - `upsert` followed by `insert` + * - `delete` followed by `update` + * + * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single + * entity. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + commit( + request: protosTypes.google.datastore.v1.ICommitRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.ICommitResponse, + protosTypes.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.ICommitResponse, + protosTypes.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.ICommitResponse, + protosTypes.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.commit(request, options, callback); + } + rollback( + request: protosTypes.google.datastore.v1.IRollbackRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.IRollbackResponse, + protosTypes.google.datastore.v1.IRollbackRequest | undefined, + {} | undefined + ] + >; + rollback( + request: protosTypes.google.datastore.v1.IRollbackRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.IRollbackResponse, + protosTypes.google.datastore.v1.IRollbackRequest | undefined, + {} | undefined + > + ): void; + /** + * Rolls back a transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {Buffer} request.transaction + * Required. The transaction identifier, returned by a call to + * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + rollback( + request: protosTypes.google.datastore.v1.IRollbackRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.IRollbackResponse, + protosTypes.google.datastore.v1.IRollbackRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.IRollbackResponse, + protosTypes.google.datastore.v1.IRollbackRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.IRollbackResponse, + protosTypes.google.datastore.v1.IRollbackRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.rollback(request, options, callback); + } + allocateIds( + request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.IAllocateIdsResponse, + protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + {} | undefined + ] + >; + allocateIds( + request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.IAllocateIdsResponse, + protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + {} | undefined + > + ): void; + /** + * Allocates IDs for the given keys, which is useful for referencing an entity + * before it is inserted. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {number[]} request.keys + * Required. A list of keys with incomplete key paths for which to allocate IDs. + * No key may be reserved/read-only. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + allocateIds( + request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.IAllocateIdsResponse, + protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.IAllocateIdsResponse, + protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.IAllocateIdsResponse, + protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.allocateIds(request, options, callback); + } + reserveIds( + request: protosTypes.google.datastore.v1.IReserveIdsRequest, + options?: gax.CallOptions + ): Promise< + [ + protosTypes.google.datastore.v1.IReserveIdsResponse, + protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + {} | undefined + ] + >; + reserveIds( + request: protosTypes.google.datastore.v1.IReserveIdsRequest, + options: gax.CallOptions, + callback: Callback< + protosTypes.google.datastore.v1.IReserveIdsResponse, + protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + {} | undefined + > + ): void; + /** + * Prevents the supplied keys' IDs from being auto-allocated by Cloud + * Datastore. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * If not empty, the ID of the database against which to make the request. + * @param {number[]} request.keys + * Required. A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + reserveIds( + request: protosTypes.google.datastore.v1.IReserveIdsRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protosTypes.google.datastore.v1.IReserveIdsResponse, + protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + {} | undefined + >, + callback?: Callback< + protosTypes.google.datastore.v1.IReserveIdsResponse, + protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + {} | undefined + > + ): Promise< + [ + protosTypes.google.datastore.v1.IReserveIdsResponse, + protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + this.initialize(); + return this._innerApiCalls.reserveIds(request, options, callback); + } + + /** + * Terminate the GRPC channel and close the client. + * + * The client will no longer be usable and all future behavior is undefined. + */ + close(): Promise { + this.initialize(); + if (!this._terminated) { + return this.datastoreStub!.then(stub => { + this._terminated = true; + stub.close(); + }); + } + return Promise.resolve(); + } +} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index 18d34a4d062..37bd1c737d3 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -2,32 +2,32 @@ "interfaces": { "google.datastore.v1.Datastore": { "retry_codes": { + "non_idempotent": [], "idempotent": [ "DEADLINE_EXCEEDED", "UNAVAILABLE" - ], - "non_idempotent": [] + ] }, "retry_params": { "default": { "initial_retry_delay_millis": 100, "retry_delay_multiplier": 1.3, "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 20000, - "rpc_timeout_multiplier": 1.0, - "max_rpc_timeout_millis": 20000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, "total_timeout_millis": 600000 } }, "methods": { "Lookup": { "timeout_millis": 60000, - "retry_codes_name": "non_idempotent", + "retry_codes_name": "idempotent", "retry_params_name": "default" }, "RunQuery": { "timeout_millis": 60000, - "retry_codes_name": "non_idempotent", + "retry_codes_name": "idempotent", "retry_params_name": "default" }, "BeginTransaction": { @@ -52,7 +52,7 @@ }, "ReserveIds": { "timeout_millis": 60000, - "retry_codes_name": "non_idempotent", + "retry_codes_name": "idempotent", "retry_params_name": "default" } } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json index 5004dc2330e..0636f1215be 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -1,3 +1,5 @@ [ - "../../protos/google/datastore/v1/datastore.proto" + "../../protos/google/datastore/v1/datastore.proto", + "../../protos/google/datastore/v1/entity.proto", + "../../protos/google/datastore/v1/query.proto" ] diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js deleted file mode 100644 index f109d709d6b..00000000000 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_datastore.js +++ /dev/null @@ -1,512 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Note: this file is purely for documentation. Any contents are not expected -// to be loaded as the JS file. - -/** - * The request for Datastore.Lookup. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {Object} readOptions - * The options for this lookup request. - * - * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} - * - * @property {Object[]} keys - * Required. Keys of entities to look up. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @typedef LookupRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.LookupRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const LookupRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.Lookup. - * - * @property {Object[]} found - * Entities found as `ResultType.FULL` entities. The order of results in this - * field is undefined and has no relation to the order of the keys in the - * input. - * - * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} - * - * @property {Object[]} missing - * Entities not found as `ResultType.KEY_ONLY` entities. The order of results - * in this field is undefined and has no relation to the order of the keys - * in the input. - * - * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} - * - * @property {Object[]} deferred - * A list of keys that were not looked up due to resource constraints. The - * order of results in this field is undefined and has no relation to the - * order of the keys in the input. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @typedef LookupResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.LookupResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const LookupResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.RunQuery. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {Object} partitionId - * Entities are partitioned into subsets, identified by a partition ID. - * Queries are scoped to a single partition. - * This partition ID is normalized with the standard default context - * partition ID. - * - * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} - * - * @property {Object} readOptions - * The options for this query. - * - * This object should have the same structure as [ReadOptions]{@link google.datastore.v1.ReadOptions} - * - * @property {Object} query - * The query to run. - * - * This object should have the same structure as [Query]{@link google.datastore.v1.Query} - * - * @property {Object} gqlQuery - * The GQL query to run. - * - * This object should have the same structure as [GqlQuery]{@link google.datastore.v1.GqlQuery} - * - * @typedef RunQueryRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.RunQueryRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const RunQueryRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.RunQuery. - * - * @property {Object} batch - * A batch of query results (always present). - * - * This object should have the same structure as [QueryResultBatch]{@link google.datastore.v1.QueryResultBatch} - * - * @property {Object} query - * The parsed form of the `GqlQuery` from the request, if it was set. - * - * This object should have the same structure as [Query]{@link google.datastore.v1.Query} - * - * @typedef RunQueryResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.RunQueryResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const RunQueryResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.BeginTransaction. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {Object} transactionOptions - * Options for a new transaction. - * - * This object should have the same structure as [TransactionOptions]{@link google.datastore.v1.TransactionOptions} - * - * @typedef BeginTransactionRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.BeginTransactionRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const BeginTransactionRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.BeginTransaction. - * - * @property {Buffer} transaction - * The transaction identifier (always present). - * - * @typedef BeginTransactionResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.BeginTransactionResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const BeginTransactionResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.Rollback. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {Buffer} transaction - * Required. The transaction identifier, returned by a call to - * Datastore.BeginTransaction. - * - * @typedef RollbackRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.RollbackRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const RollbackRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.Rollback. - * (an empty message). - * @typedef RollbackResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.RollbackResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const RollbackResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.Commit. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {number} mode - * The type of commit to perform. Defaults to `TRANSACTIONAL`. - * - * The number should be among the values of [Mode]{@link google.datastore.v1.Mode} - * - * @property {Buffer} transaction - * The identifier of the transaction associated with the commit. A - * transaction identifier is returned by a call to - * Datastore.BeginTransaction. - * - * @property {Object[]} mutations - * The mutations to perform. - * - * When mode is `TRANSACTIONAL`, mutations affecting a single entity are - * applied in order. The following sequences of mutations affecting a single - * entity are not permitted in a single `Commit` request: - * - * - `insert` followed by `insert` - * - `update` followed by `insert` - * - `upsert` followed by `insert` - * - `delete` followed by `update` - * - * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single - * entity. - * - * This object should have the same structure as [Mutation]{@link google.datastore.v1.Mutation} - * - * @typedef CommitRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.CommitRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const CommitRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * The modes available for commits. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - Mode: { - - /** - * Unspecified. This value must not be used. - */ - MODE_UNSPECIFIED: 0, - - /** - * Transactional: The mutations are either all applied, or none are applied. - * Learn about transactions - * [here](https://cloud.google.com/datastore/docs/concepts/transactions). - */ - TRANSACTIONAL: 1, - - /** - * Non-transactional: The mutations may not apply as all or none. - */ - NON_TRANSACTIONAL: 2 - } -}; - -/** - * The response for Datastore.Commit. - * - * @property {Object[]} mutationResults - * The result of performing the mutations. - * The i-th mutation result corresponds to the i-th mutation in the request. - * - * This object should have the same structure as [MutationResult]{@link google.datastore.v1.MutationResult} - * - * @property {number} indexUpdates - * The number of index entries updated during the commit, or zero if none were - * updated. - * - * @typedef CommitResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.CommitResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const CommitResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.AllocateIds. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {Object[]} keys - * Required. A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @typedef AllocateIdsRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.AllocateIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const AllocateIdsRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.AllocateIds. - * - * @property {Object[]} keys - * The keys specified in the request (in the same order), each with - * its key path completed with a newly allocated ID. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @typedef AllocateIdsResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.AllocateIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const AllocateIdsResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The request for Datastore.ReserveIds. - * - * @property {string} projectId - * Required. The ID of the project against which to make the request. - * - * @property {string} databaseId - * If not empty, the ID of the database against which to make the request. - * - * @property {Object[]} keys - * Required. A list of keys with complete key paths whose numeric IDs should not be - * auto-allocated. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @typedef ReserveIdsRequest - * @memberof google.datastore.v1 - * @see [google.datastore.v1.ReserveIdsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const ReserveIdsRequest = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The response for Datastore.ReserveIds. - * @typedef ReserveIdsResponse - * @memberof google.datastore.v1 - * @see [google.datastore.v1.ReserveIdsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const ReserveIdsResponse = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A mutation to apply to an entity. - * - * @property {Object} insert - * The entity to insert. The entity must not already exist. - * The entity key's final path element may be incomplete. - * - * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} - * - * @property {Object} update - * The entity to update. The entity must already exist. - * Must have a complete key path. - * - * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} - * - * @property {Object} upsert - * The entity to upsert. The entity may or may not already exist. - * The entity key's final path element may be incomplete. - * - * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} - * - * @property {Object} delete - * The key of the entity to delete. The entity may or may not already exist. - * Must have a complete key path and must not be reserved/read-only. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @property {number} baseVersion - * The version of the entity that this mutation is being applied to. If this - * does not match the current version on the server, the mutation conflicts. - * - * @typedef Mutation - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Mutation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const Mutation = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The result of applying a mutation. - * - * @property {Object} key - * The automatically allocated key. - * Set only when the mutation allocated a key. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @property {number} version - * The version of the entity on the server after processing the mutation. If - * the mutation doesn't change anything on the server, then the version will - * be the version of the current entity or, if no entity is present, a version - * that is strictly greater than the version of any previous entity and less - * than the version of any possible future entity. - * - * @property {boolean} conflictDetected - * Whether a conflict was detected for this mutation. Always false when a - * conflict detection strategy field is not set in the mutation. - * - * @typedef MutationResult - * @memberof google.datastore.v1 - * @see [google.datastore.v1.MutationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const MutationResult = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The options shared by read requests. - * - * @property {number} readConsistency - * The non-transactional read consistency to use. - * Cannot be set to `STRONG` for global queries. - * - * The number should be among the values of [ReadConsistency]{@link google.datastore.v1.ReadConsistency} - * - * @property {Buffer} transaction - * The identifier of the transaction in which to read. A - * transaction identifier is returned by a call to - * Datastore.BeginTransaction. - * - * @typedef ReadOptions - * @memberof google.datastore.v1 - * @see [google.datastore.v1.ReadOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const ReadOptions = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * The possible values for read consistencies. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - ReadConsistency: { - - /** - * Unspecified. This value must not be used. - */ - READ_CONSISTENCY_UNSPECIFIED: 0, - - /** - * Strong consistency. - */ - STRONG: 1, - - /** - * Eventual consistency. - */ - EVENTUAL: 2 - } -}; - -/** - * Options for beginning a new transaction. - * - * Transactions can be created explicitly with calls to - * Datastore.BeginTransaction or implicitly by setting - * ReadOptions.new_transaction in read requests. - * - * @property {Object} readWrite - * The transaction should allow both reads and writes. - * - * This object should have the same structure as [ReadWrite]{@link google.datastore.v1.ReadWrite} - * - * @property {Object} readOnly - * The transaction should only allow reads. - * - * This object should have the same structure as [ReadOnly]{@link google.datastore.v1.ReadOnly} - * - * @typedef TransactionOptions - * @memberof google.datastore.v1 - * @see [google.datastore.v1.TransactionOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ -const TransactionOptions = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * Options specific to read / write transactions. - * - * @property {Buffer} previousTransaction - * The transaction identifier of the transaction being retried. - * - * @typedef ReadWrite - * @memberof google.datastore.v1 - * @see [google.datastore.v1.TransactionOptions.ReadWrite definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ - ReadWrite: { - // This is for documentation. Actual contents will be loaded by gRPC. - }, - - /** - * Options specific to read-only transactions. - * @typedef ReadOnly - * @memberof google.datastore.v1 - * @see [google.datastore.v1.TransactionOptions.ReadOnly definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/datastore.proto} - */ - ReadOnly: { - // This is for documentation. Actual contents will be loaded by gRPC. - } -}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js deleted file mode 100644 index fb2a2f925bf..00000000000 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_entity.js +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Note: this file is purely for documentation. Any contents are not expected -// to be loaded as the JS file. - -/** - * A partition ID identifies a grouping of entities. The grouping is always - * by project and namespace, however the namespace ID may be empty. - * - * A partition ID contains several dimensions: - * project ID and namespace ID. - * - * Partition dimensions: - * - * - May be `""`. - * - Must be valid UTF-8 bytes. - * - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` - * If the value of any dimension matches regex `__.*__`, the partition is - * reserved/read-only. - * A reserved/read-only partition ID is forbidden in certain documented - * contexts. - * - * Foreign partition IDs (in which the project ID does - * not match the context project ID ) are discouraged. - * Reads and writes of foreign partition IDs may fail if the project is not in - * an active state. - * - * @property {string} projectId - * The ID of the project to which the entities belong. - * - * @property {string} namespaceId - * If not empty, the ID of the namespace to which the entities belong. - * - * @typedef PartitionId - * @memberof google.datastore.v1 - * @see [google.datastore.v1.PartitionId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ -const PartitionId = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A unique identifier for an entity. - * If a key's partition ID or any of its path kinds or names are - * reserved/read-only, the key is reserved/read-only. - * A reserved/read-only key is forbidden in certain documented contexts. - * - * @property {Object} partitionId - * Entities are partitioned into subsets, currently identified by a project - * ID and namespace ID. - * Queries are scoped to a single partition. - * - * This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId} - * - * @property {Object[]} path - * The entity path. - * An entity path consists of one or more elements composed of a kind and a - * string or numerical identifier, which identify entities. The first - * element identifies a _root entity_, the second element identifies - * a _child_ of the root entity, the third element identifies a child of the - * second entity, and so forth. The entities identified by all prefixes of - * the path are called the element's _ancestors_. - * - * An entity path is always fully complete: *all* of the entity's ancestors - * are required to be in the path along with the entity identifier itself. - * The only exception is that in some documented cases, the identifier in the - * last path element (for the entity) itself may be omitted. For example, - * the last path element of the key of `Mutation.insert` may have no - * identifier. - * - * A path can never be empty, and a path can have at most 100 elements. - * - * This object should have the same structure as [PathElement]{@link google.datastore.v1.PathElement} - * - * @typedef Key - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Key definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ -const Key = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * A (kind, ID/name) pair used to construct a key path. - * - * If either name or ID is set, the element is complete. - * If neither is set, the element is incomplete. - * - * @property {string} kind - * The kind of the entity. - * A kind matching regex `__.*__` is reserved/read-only. - * A kind must not contain more than 1500 bytes when UTF-8 encoded. - * Cannot be `""`. - * - * @property {number} id - * The auto-allocated ID of the entity. - * Never equal to zero. Values less than zero are discouraged and may not - * be supported in the future. - * - * @property {string} name - * The name of the entity. - * A name matching regex `__.*__` is reserved/read-only. - * A name must not be more than 1500 bytes when UTF-8 encoded. - * Cannot be `""`. - * - * @typedef PathElement - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Key.PathElement definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ - PathElement: { - // This is for documentation. Actual contents will be loaded by gRPC. - } -}; - -/** - * An array value. - * - * @property {Object[]} values - * Values in the array. - * The order of values in an array is preserved as long as all values have - * identical settings for 'exclude_from_indexes'. - * - * This object should have the same structure as [Value]{@link google.datastore.v1.Value} - * - * @typedef ArrayValue - * @memberof google.datastore.v1 - * @see [google.datastore.v1.ArrayValue definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ -const ArrayValue = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A message that can hold any of the supported value types and associated - * metadata. - * - * @property {number} nullValue - * A null value. - * - * The number should be among the values of [NullValue]{@link google.protobuf.NullValue} - * - * @property {boolean} booleanValue - * A boolean value. - * - * @property {number} integerValue - * An integer value. - * - * @property {number} doubleValue - * A double value. - * - * @property {Object} timestampValue - * A timestamp value. - * When stored in the Datastore, precise only to microseconds; - * any additional precision is rounded down. - * - * This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp} - * - * @property {Object} keyValue - * A key value. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @property {string} stringValue - * A UTF-8 encoded string value. - * When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. - * Otherwise, may be set to at least 1,000,000 bytes. - * - * @property {Buffer} blobValue - * A blob value. - * May have at most 1,000,000 bytes. - * When `exclude_from_indexes` is false, may have at most 1500 bytes. - * In JSON requests, must be base64-encoded. - * - * @property {Object} geoPointValue - * A geo point value representing a point on the surface of Earth. - * - * This object should have the same structure as [LatLng]{@link google.type.LatLng} - * - * @property {Object} entityValue - * An entity value. - * - * - May have no key. - * - May have a key with an incomplete key path. - * - May have a reserved/read-only key. - * - * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} - * - * @property {Object} arrayValue - * An array value. - * Cannot contain another array value. - * A `Value` instance that sets field `array_value` must not set fields - * `meaning` or `exclude_from_indexes`. - * - * This object should have the same structure as [ArrayValue]{@link google.datastore.v1.ArrayValue} - * - * @property {number} meaning - * The `meaning` field should only be populated for backwards compatibility. - * - * @property {boolean} excludeFromIndexes - * If the value should be excluded from all indexes including those defined - * explicitly. - * - * @typedef Value - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ -const Value = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A Datastore data object. - * - * An entity is limited to 1 megabyte when stored. That _roughly_ - * corresponds to a limit of 1 megabyte for the serialized form of this - * message. - * - * @property {Object} key - * The entity's key. - * - * An entity must have a key, unless otherwise documented (for example, - * an entity in `Value.entity_value` may have no key). - * An entity's kind is its key path's last element's kind, - * or null if it has no key. - * - * This object should have the same structure as [Key]{@link google.datastore.v1.Key} - * - * @property {Object.} properties - * The entity's properties. - * The map's keys are property names. - * A property name matching regex `__.*__` is reserved. - * A reserved property name is forbidden in certain documented contexts. - * The name must not contain more than 500 characters. - * The name cannot be `""`. - * - * @typedef Entity - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Entity definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto} - */ -const Entity = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js b/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js deleted file mode 100644 index fa66a0bdd71..00000000000 --- a/handwritten/nodejs-datastore/src/v1/doc/google/datastore/v1/doc_query.js +++ /dev/null @@ -1,505 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Note: this file is purely for documentation. Any contents are not expected -// to be loaded as the JS file. - -/** - * The result of fetching an entity from Datastore. - * - * @property {Object} entity - * The resulting entity. - * - * This object should have the same structure as [Entity]{@link google.datastore.v1.Entity} - * - * @property {number} version - * The version of the entity, a strictly positive number that monotonically - * increases with changes to the entity. - * - * This field is set for `FULL` entity - * results. - * - * For missing entities in `LookupResponse`, this - * is the version of the snapshot that was used to look up the entity, and it - * is always set except for eventually consistent reads. - * - * @property {Buffer} cursor - * A cursor that points to the position after the result entity. - * Set only when the `EntityResult` is part of a `QueryResultBatch` message. - * - * @typedef EntityResult - * @memberof google.datastore.v1 - * @see [google.datastore.v1.EntityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const EntityResult = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * Specifies what data the 'entity' field contains. - * A `ResultType` is either implied (for example, in `LookupResponse.missing` - * from `datastore.proto`, it is always `KEY_ONLY`) or specified by context - * (for example, in message `QueryResultBatch`, field `entity_result_type` - * specifies a `ResultType` for all the values in field `entity_results`). - * - * @enum {number} - * @memberof google.datastore.v1 - */ - ResultType: { - - /** - * Unspecified. This value is never used. - */ - RESULT_TYPE_UNSPECIFIED: 0, - - /** - * The key and properties. - */ - FULL: 1, - - /** - * A projected subset of properties. The entity may have no key. - */ - PROJECTION: 2, - - /** - * Only the key. - */ - KEY_ONLY: 3 - } -}; - -/** - * A query for entities. - * - * @property {Object[]} projection - * The projection to return. Defaults to returning all properties. - * - * This object should have the same structure as [Projection]{@link google.datastore.v1.Projection} - * - * @property {Object[]} kind - * The kinds to query (if empty, returns entities of all kinds). - * Currently at most 1 kind may be specified. - * - * This object should have the same structure as [KindExpression]{@link google.datastore.v1.KindExpression} - * - * @property {Object} filter - * The filter to apply. - * - * This object should have the same structure as [Filter]{@link google.datastore.v1.Filter} - * - * @property {Object[]} order - * The order to apply to the query results (if empty, order is unspecified). - * - * This object should have the same structure as [PropertyOrder]{@link google.datastore.v1.PropertyOrder} - * - * @property {Object[]} distinctOn - * The properties to make distinct. The query results will contain the first - * result for each distinct combination of values for the given properties - * (if empty, all results are returned). - * - * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} - * - * @property {Buffer} startCursor - * A starting point for the query results. Query cursors are - * returned in query result batches and - * [can only be used to continue the same - * query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - * - * @property {Buffer} endCursor - * An ending point for the query results. Query cursors are - * returned in query result batches and - * [can only be used to limit the same - * query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - * - * @property {number} offset - * The number of results to skip. Applies before limit, but after all other - * constraints. Optional. Must be >= 0 if specified. - * - * @property {Object} limit - * The maximum number of results to return. Applies after all other - * constraints. Optional. - * Unspecified is interpreted as no limit. - * Must be >= 0 if specified. - * - * This object should have the same structure as [Int32Value]{@link google.protobuf.Int32Value} - * - * @typedef Query - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Query definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const Query = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A representation of a kind. - * - * @property {string} name - * The name of the kind. - * - * @typedef KindExpression - * @memberof google.datastore.v1 - * @see [google.datastore.v1.KindExpression definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const KindExpression = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A reference to a property relative to the kind expressions. - * - * @property {string} name - * The name of the property. - * If name includes "."s, it may be interpreted as a property name path. - * - * @typedef PropertyReference - * @memberof google.datastore.v1 - * @see [google.datastore.v1.PropertyReference definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const PropertyReference = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A representation of a property in a projection. - * - * @property {Object} property - * The property to project. - * - * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} - * - * @typedef Projection - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Projection definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const Projection = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * The desired order for a specific property. - * - * @property {Object} property - * The property to order by. - * - * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} - * - * @property {number} direction - * The direction to order by. Defaults to `ASCENDING`. - * - * The number should be among the values of [Direction]{@link google.datastore.v1.Direction} - * - * @typedef PropertyOrder - * @memberof google.datastore.v1 - * @see [google.datastore.v1.PropertyOrder definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const PropertyOrder = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * The sort direction. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - Direction: { - - /** - * Unspecified. This value must not be used. - */ - DIRECTION_UNSPECIFIED: 0, - - /** - * Ascending. - */ - ASCENDING: 1, - - /** - * Descending. - */ - DESCENDING: 2 - } -}; - -/** - * A holder for any type of filter. - * - * @property {Object} compositeFilter - * A composite filter. - * - * This object should have the same structure as [CompositeFilter]{@link google.datastore.v1.CompositeFilter} - * - * @property {Object} propertyFilter - * A filter on a property. - * - * This object should have the same structure as [PropertyFilter]{@link google.datastore.v1.PropertyFilter} - * - * @typedef Filter - * @memberof google.datastore.v1 - * @see [google.datastore.v1.Filter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const Filter = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A filter that merges multiple other filters using the given operator. - * - * @property {number} op - * The operator for combining multiple filters. - * - * The number should be among the values of [Operator]{@link google.datastore.v1.Operator} - * - * @property {Object[]} filters - * The list of filters to combine. - * Must contain at least one filter. - * - * This object should have the same structure as [Filter]{@link google.datastore.v1.Filter} - * - * @typedef CompositeFilter - * @memberof google.datastore.v1 - * @see [google.datastore.v1.CompositeFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const CompositeFilter = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * A composite filter operator. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - Operator: { - - /** - * Unspecified. This value must not be used. - */ - OPERATOR_UNSPECIFIED: 0, - - /** - * The results are required to satisfy each of the combined filters. - */ - AND: 1 - } -}; - -/** - * A filter on a specific property. - * - * @property {Object} property - * The property to filter by. - * - * This object should have the same structure as [PropertyReference]{@link google.datastore.v1.PropertyReference} - * - * @property {number} op - * The operator to filter by. - * - * The number should be among the values of [Operator]{@link google.datastore.v1.Operator} - * - * @property {Object} value - * The value to compare the property to. - * - * This object should have the same structure as [Value]{@link google.datastore.v1.Value} - * - * @typedef PropertyFilter - * @memberof google.datastore.v1 - * @see [google.datastore.v1.PropertyFilter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const PropertyFilter = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * A property filter operator. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - Operator: { - - /** - * Unspecified. This value must not be used. - */ - OPERATOR_UNSPECIFIED: 0, - - /** - * Less than. - */ - LESS_THAN: 1, - - /** - * Less than or equal. - */ - LESS_THAN_OR_EQUAL: 2, - - /** - * Greater than. - */ - GREATER_THAN: 3, - - /** - * Greater than or equal. - */ - GREATER_THAN_OR_EQUAL: 4, - - /** - * Equal. - */ - EQUAL: 5, - - /** - * Has ancestor. - */ - HAS_ANCESTOR: 11 - } -}; - -/** - * A [GQL - * query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). - * - * @property {string} queryString - * A string of the format described - * [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). - * - * @property {boolean} allowLiterals - * When false, the query string must not contain any literals and instead must - * bind all values. For example, - * `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while - * `SELECT * FROM Kind WHERE a = @value` is. - * - * @property {Object.} namedBindings - * For each non-reserved named binding site in the query string, there must be - * a named parameter with that name, but not necessarily the inverse. - * - * Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex - * `__.*__`, and must not be `""`. - * - * @property {Object[]} positionalBindings - * Numbered binding site @1 references the first numbered parameter, - * effectively using 1-based indexing, rather than the usual 0. - * - * For each binding site numbered i in `query_string`, there must be an i-th - * numbered parameter. The inverse must also be true. - * - * This object should have the same structure as [GqlQueryParameter]{@link google.datastore.v1.GqlQueryParameter} - * - * @typedef GqlQuery - * @memberof google.datastore.v1 - * @see [google.datastore.v1.GqlQuery definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const GqlQuery = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A binding parameter for a GQL query. - * - * @property {Object} value - * A value parameter. - * - * This object should have the same structure as [Value]{@link google.datastore.v1.Value} - * - * @property {Buffer} cursor - * A query cursor. Query cursors are returned in query - * result batches. - * - * @typedef GqlQueryParameter - * @memberof google.datastore.v1 - * @see [google.datastore.v1.GqlQueryParameter definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const GqlQueryParameter = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; - -/** - * A batch of results produced by a query. - * - * @property {number} skippedResults - * The number of results skipped, typically because of an offset. - * - * @property {Buffer} skippedCursor - * A cursor that points to the position after the last skipped result. - * Will be set when `skipped_results` != 0. - * - * @property {number} entityResultType - * The result type for every entity in `entity_results`. - * - * The number should be among the values of [ResultType]{@link google.datastore.v1.ResultType} - * - * @property {Object[]} entityResults - * The results for this batch. - * - * This object should have the same structure as [EntityResult]{@link google.datastore.v1.EntityResult} - * - * @property {Buffer} endCursor - * A cursor that points to the position after the last result in the batch. - * - * @property {number} moreResults - * The state of the query after the current batch. - * - * The number should be among the values of [MoreResultsType]{@link google.datastore.v1.MoreResultsType} - * - * @property {number} snapshotVersion - * The version number of the snapshot this batch was returned from. - * This applies to the range of results from the query's `start_cursor` (or - * the beginning of the query if no cursor was given) to this batch's - * `end_cursor` (not the query's `end_cursor`). - * - * In a single transaction, subsequent query result batches for the same query - * can have a greater snapshot version number. Each batch's snapshot version - * is valid for all preceding batches. - * The value will be zero for eventually consistent queries. - * - * @typedef QueryResultBatch - * @memberof google.datastore.v1 - * @see [google.datastore.v1.QueryResultBatch definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/query.proto} - */ -const QueryResultBatch = { - // This is for documentation. Actual contents will be loaded by gRPC. - - /** - * The possible values for the `more_results` field. - * - * @enum {number} - * @memberof google.datastore.v1 - */ - MoreResultsType: { - - /** - * Unspecified. This value is never used. - */ - MORE_RESULTS_TYPE_UNSPECIFIED: 0, - - /** - * There may be additional batches to fetch from this query. - */ - NOT_FINISHED: 1, - - /** - * The query is finished, but there may be more results after the limit. - */ - MORE_RESULTS_AFTER_LIMIT: 2, - - /** - * The query is finished, but there may be more results after the end - * cursor. - */ - MORE_RESULTS_AFTER_CURSOR: 4, - - /** - * The query is finished, and there are no more results. - */ - NO_MORE_RESULTS: 3 - } -}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js b/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js deleted file mode 100644 index 1d6064c2333..00000000000 --- a/handwritten/nodejs-datastore/src/v1/doc/google/protobuf/doc_wrappers.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Note: this file is purely for documentation. Any contents are not expected -// to be loaded as the JS file. - -/** - * Wrapper message for `int32`. - * - * The JSON representation for `Int32Value` is JSON number. - * - * @property {number} value - * The int32 value. - * - * @typedef Int32Value - * @memberof google.protobuf - * @see [google.protobuf.Int32Value definition in proto format]{@link https://github.com/google/protobuf/blob/master/src/google/protobuf/wrappers.proto} - */ -const Int32Value = { - // This is for documentation. Actual contents will be loaded by gRPC. -}; \ No newline at end of file diff --git a/handwritten/nodejs-datastore/src/v1/index.d.ts b/handwritten/nodejs-datastore/src/v1/index.d.ts deleted file mode 100644 index b4342d0710b..00000000000 --- a/handwritten/nodejs-datastore/src/v1/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Copyright 2019 Google LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export {DatastoreClient} from './datastore_client'; diff --git a/handwritten/nodejs-datastore/src/browser.js b/handwritten/nodejs-datastore/src/v1/index.ts similarity index 66% rename from handwritten/nodejs-datastore/src/browser.js rename to handwritten/nodejs-datastore/src/v1/index.ts index 68dc62d25d6..1bd8a7ac542 100644 --- a/handwritten/nodejs-datastore/src/browser.js +++ b/handwritten/nodejs-datastore/src/v1/index.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,11 +11,9 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** -'use strict'; - -// Set a flag that we are running in a browser bundle. -global.isBrowser = true; - -// Re-export all exports from ./index.js. -module.exports = require('./index'); +export {DatastoreClient} from './datastore_client'; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index bad451020c2..1abc2db4146 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,40 +1,3 @@ { - "updateTime": "2020-02-29T12:23:04.810072Z", - "sources": [ - { - "generator": { - "name": "artman", - "version": "0.47.0", - "dockerImage": "googleapis/artman@sha256:b3e50d6b8de03920b9f065bbc3d210e2ca93a043446f1fa16cdf567393c09678" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "83c6f84035ee0f80eaa44d8b688a010461cc4080", - "internalRef": "297918498", - "log": "83c6f84035ee0f80eaa44d8b688a010461cc4080\nUpdate google/api/auth.proto to make AuthProvider to have JwtLocation\n\nPiperOrigin-RevId: 297918498\n\ne9e90a787703ec5d388902e2cb796aaed3a385b4\nDialogflow weekly v2/v2beta1 library update:\n - adding get validation result\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297671458\n\n1a2b05cc3541a5f7714529c665aecc3ea042c646\nAdding .yaml and .json config files.\n\nPiperOrigin-RevId: 297570622\n\ndfe1cf7be44dee31d78f78e485d8c95430981d6e\nPublish `QueryOptions` proto.\n\nIntroduced a `query_options` input in `ExecuteSqlRequest`.\n\nPiperOrigin-RevId: 297497710\n\ndafc905f71e5d46f500b41ed715aad585be062c3\npubsub: revert pull init_rpc_timeout & max_rpc_timeout back to 25 seconds and reset multiplier to 1.0\n\nPiperOrigin-RevId: 297486523\n\nf077632ba7fee588922d9e8717ee272039be126d\nfirestore: add update_transform\n\nPiperOrigin-RevId: 297405063\n\n0aba1900ffef672ec5f0da677cf590ee5686e13b\ncluster: use square brace for cross-reference\n\nPiperOrigin-RevId: 297204568\n\n5dac2da18f6325cbaed54603c43f0667ecd50247\nRestore retry params in gapic config because securitycenter has non-standard default retry params.\nRestore a few retry codes for some idempotent methods.\n\nPiperOrigin-RevId: 297196720\n\n1eb61455530252bba8b2c8d4bc9832960e5a56f6\npubsub: v1 replace IAM HTTP rules\n\nPiperOrigin-RevId: 297188590\n\n80b2d25f8d43d9d47024ff06ead7f7166548a7ba\nDialogflow weekly v2/v2beta1 library update:\n - updates to mega agent api\n - adding field mask override control for output audio config\nImportant updates are also posted at:\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 297187629\n\n0b1876b35e98f560f9c9ca9797955f020238a092\nUse an older version of protoc-docs-plugin that is compatible with the specified gapic-generator and protobuf versions.\n\nprotoc-docs-plugin >=0.4.0 (see commit https://github.com/googleapis/protoc-docs-plugin/commit/979f03ede6678c487337f3d7e88bae58df5207af) is incompatible with protobuf 3.9.1.\n\nPiperOrigin-RevId: 296986742\n\n1e47e676cddbbd8d93f19ba0665af15b5532417e\nFix: Restore a method signature for UpdateCluster\n\nPiperOrigin-RevId: 296901854\n\n7f910bcc4fc4704947ccfd3ceed015d16b9e00c2\nUpdate Dataproc v1beta2 client.\n\nPiperOrigin-RevId: 296451205\n\nde287524405a3dce124d301634731584fc0432d7\nFix: Reinstate method signatures that had been missed off some RPCs\nFix: Correct resource types for two fields\n\nPiperOrigin-RevId: 296435091\n\ne5bc9566ae057fb4c92f8b7e047f1c8958235b53\nDeprecate the endpoint_uris field, as it is unused.\n\nPiperOrigin-RevId: 296357191\n\n8c12e2b4dca94e12bff9f538bdac29524ff7ef7a\nUpdate Dataproc v1 client.\n\nPiperOrigin-RevId: 296336662\n\n17567c4a1ef0a9b50faa87024d66f8acbb561089\nRemoving erroneous comment, a la https://github.com/googleapis/java-speech/pull/103\n\nPiperOrigin-RevId: 296332968\n\n3eaaaf8626ce5b0c0bc7eee05e143beffa373b01\nAdd BUILD.bazel for v1 secretmanager.googleapis.com\n\nPiperOrigin-RevId: 296274723\n\ne76149c3d992337f85eeb45643106aacae7ede82\nMove securitycenter v1 to use generate from annotations.\n\nPiperOrigin-RevId: 296266862\n\n203740c78ac69ee07c3bf6be7408048751f618f8\nAdd StackdriverLoggingConfig field to Cloud Tasks v2 API.\n\nPiperOrigin-RevId: 296256388\n\ne4117d5e9ed8bbca28da4a60a94947ca51cb2083\nCreate a Bazel BUILD file for the google.actions.type export.\n\nPiperOrigin-RevId: 296212567\n\na9639a0a9854fd6e1be08bba1ac3897f4f16cb2f\nAdd secretmanager.googleapis.com v1 protos\n\nPiperOrigin-RevId: 295983266\n\nce4f4c21d9dd2bfab18873a80449b9d9851efde8\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295861722\n\ncb61d6c2d070b589980c779b68ffca617f789116\nasset: v1p1beta1 remove SearchResources and SearchIamPolicies\n\nPiperOrigin-RevId: 295855449\n\nab2685d8d3a0e191dc8aef83df36773c07cb3d06\nfix: Dataproc v1 - AutoscalingPolicy annotation\n\nThis adds the second resource name pattern to the\nAutoscalingPolicy resource.\n\nCommitter: @lukesneeringer\nPiperOrigin-RevId: 295738415\n\n8a1020bf6828f6e3c84c3014f2c51cb62b739140\nUpdate cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 295286165\n\n5cfa105206e77670369e4b2225597386aba32985\nAdd service control related proto build rule.\n\nPiperOrigin-RevId: 295262088\n\nee4dddf805072004ab19ac94df2ce669046eec26\nmonitoring v3: Add prefix \"https://cloud.google.com/\" into the link for global access\ncl 295167522, get ride of synth.py hacks\n\nPiperOrigin-RevId: 295238095\n\nd9835e922ea79eed8497db270d2f9f85099a519c\nUpdate some minor docs changes about user event proto\n\nPiperOrigin-RevId: 295185610\n\n5f311e416e69c170243de722023b22f3df89ec1c\nfix: use correct PHP package name in gapic configuration\n\nPiperOrigin-RevId: 295161330\n\n6cdd74dcdb071694da6a6b5a206e3a320b62dd11\npubsub: v1 add client config annotations and retry config\n\nPiperOrigin-RevId: 295158776\n\n5169f46d9f792e2934d9fa25c36d0515b4fd0024\nAdded cloud asset api v1p4beta1.\n\nPiperOrigin-RevId: 295026522\n\n56b55aa8818cd0a532a7d779f6ef337ba809ccbd\nFix: Resource annotations for CreateTimeSeriesRequest and ListTimeSeriesRequest should refer to valid resources. TimeSeries is not a named resource.\n\nPiperOrigin-RevId: 294931650\n\n0646bc775203077226c2c34d3e4d50cc4ec53660\nRemove unnecessary languages from bigquery-related artman configuration files.\n\nPiperOrigin-RevId: 294809380\n\n8b78aa04382e3d4147112ad6d344666771bb1909\nUpdate backend.proto for schemes and protocol\n\nPiperOrigin-RevId: 294788800\n\n80b8f8b3de2359831295e24e5238641a38d8488f\nAdds artman config files for bigquerystorage endpoints v1beta2, v1alpha2, v1\n\nPiperOrigin-RevId: 294763931\n\n2c17ac33b226194041155bb5340c3f34733f1b3a\nAdd parameter to sample generated for UpdateInstance. Related to https://github.com/googleapis/python-redis/issues/4\n\nPiperOrigin-RevId: 294734008\n\nd5e8a8953f2acdfe96fb15e85eb2f33739623957\nMove bigquery datatransfer to gapic v2.\n\nPiperOrigin-RevId: 294703703\n\nefd36705972cfcd7d00ab4c6dfa1135bafacd4ae\nfix: Add two annotations that we missed.\n\nPiperOrigin-RevId: 294664231\n\n8a36b928873ff9c05b43859b9d4ea14cd205df57\nFix: Define the \"bigquery.googleapis.com/Table\" resource in the BigQuery Storage API (v1beta2).\n\nPiperOrigin-RevId: 294459768\n\nc7a3caa2c40c49f034a3c11079dd90eb24987047\nFix: Define the \"bigquery.googleapis.com/Table\" resource in the BigQuery Storage API (v1).\n\nPiperOrigin-RevId: 294456889\n\n5006247aa157e59118833658084345ee59af7c09\nFix: Make deprecated fields optional\nFix: Deprecate SetLoggingServiceRequest.zone in line with the comments\nFeature: Add resource name method signatures where appropriate\n\nPiperOrigin-RevId: 294383128\n\neabba40dac05c5cbe0fca3a35761b17e372036c4\nFix: C# and PHP package/namespace capitalization for BigQuery Storage v1.\n\nPiperOrigin-RevId: 294382444\n\nf8d9a858a7a55eba8009a23aa3f5cc5fe5e88dde\nfix: artman configuration file for bigtable-admin\n\nPiperOrigin-RevId: 294322616\n\n0f29555d1cfcf96add5c0b16b089235afbe9b1a9\nAPI definition for (not-yet-launched) GCS gRPC.\n\nPiperOrigin-RevId: 294321472\n\nfcc86bee0e84dc11e9abbff8d7c3529c0626f390\nfix: Bigtable Admin v2\n\nChange LRO metadata from PartialUpdateInstanceMetadata\nto UpdateInstanceMetadata. (Otherwise, it will not build.)\n\nPiperOrigin-RevId: 294264582\n\n6d9361eae2ebb3f42d8c7ce5baf4bab966fee7c0\nrefactor: Add annotations to Bigtable Admin v2.\n\nPiperOrigin-RevId: 294243406\n\nad7616f3fc8e123451c8b3a7987bc91cea9e6913\nFix: Resource type in CreateLogMetricRequest should use logging.googleapis.com.\nFix: ListLogEntries should have a method signature for convenience of calling it.\n\nPiperOrigin-RevId: 294222165\n\n63796fcbb08712676069e20a3e455c9f7aa21026\nFix: Remove extraneous resource definition for cloudkms.googleapis.com/CryptoKey.\n\nPiperOrigin-RevId: 294176658\n\ne7d8a694f4559201e6913f6610069cb08b39274e\nDepend on the latest gapic-generator and resource names plugin.\n\nThis fixes the very old an very annoying bug: https://github.com/googleapis/gapic-generator/pull/3087\n\nPiperOrigin-RevId: 293903652\n\n806b2854a966d55374ee26bb0cef4e30eda17b58\nfix: correct capitalization of Ruby namespaces in SecurityCenter V1p1beta1\n\nPiperOrigin-RevId: 293903613\n\n1b83c92462b14d67a7644e2980f723112472e03a\nPublish annotations and grpc service config for Logging API.\n\nPiperOrigin-RevId: 293893514\n\ne46f761cd6ec15a9e3d5ed4ff321a4bcba8e8585\nGenerate the Bazel build file for recommendengine public api\n\nPiperOrigin-RevId: 293710856\n\n68477017c4173c98addac0373950c6aa9d7b375f\nMake `language_code` optional for UpdateIntentRequest and BatchUpdateIntentsRequest.\n\nThe comments and proto annotations describe this parameter as optional.\n\nPiperOrigin-RevId: 293703548\n\n16f823f578bca4e845a19b88bb9bc5870ea71ab2\nAdd BUILD.bazel files for managedidentities API\n\nPiperOrigin-RevId: 293698246\n\n2f53fd8178c9a9de4ad10fae8dd17a7ba36133f2\nAdd v1p1beta1 config file\n\nPiperOrigin-RevId: 293696729\n\n052b274138fce2be80f97b6dcb83ab343c7c8812\nAdd source field for user event and add field behavior annotations\n\nPiperOrigin-RevId: 293693115\n\n1e89732b2d69151b1b3418fff3d4cc0434f0dded\ndatacatalog: v1beta1 add three new RPCs to gapic v1beta1 config\n\nPiperOrigin-RevId: 293692823\n\n9c8bd09bbdc7c4160a44f1fbab279b73cd7a2337\nchange the name of AccessApproval service to AccessApprovalAdmin\n\nPiperOrigin-RevId: 293690934\n\n2e23b8fbc45f5d9e200572ca662fe1271bcd6760\nAdd ListEntryGroups method, add http bindings to support entry group tagging, and update some comments.\n\nPiperOrigin-RevId: 293666452\n\n0275e38a4ca03a13d3f47a9613aac8c8b0d3f1f2\nAdd proto_package field to managedidentities API. It is needed for APIs that still depend on artman generation.\n\nPiperOrigin-RevId: 293643323\n\n4cdfe8278cb6f308106580d70648001c9146e759\nRegenerating public protos for Data Catalog to add new Custom Type Entry feature.\n\nPiperOrigin-RevId: 293614782\n\n45d2a569ab526a1fad3720f95eefb1c7330eaada\nEnable client generation for v1 ManagedIdentities API.\n\nPiperOrigin-RevId: 293515675\n\n2c17086b77e6f3bcf04a1f65758dfb0c3da1568f\nAdd the Actions on Google common types (//google/actions/type/*).\n\nPiperOrigin-RevId: 293478245\n\n781aadb932e64a12fb6ead7cd842698d99588433\nDialogflow weekly v2/v2beta1 library update:\n- Documentation updates\nImportant updates are also posted at\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 293443396\n\ne2602608c9138c2fca24162720e67f9307c30b95\nDialogflow weekly v2/v2beta1 library update:\n- Documentation updates\nImportant updates are also posted at\nhttps://cloud.google.com/dialogflow/docs/release-notes\n\nPiperOrigin-RevId: 293442964\n\nc8aef82028d06b7992278fa9294c18570dc86c3d\nAdd cc_proto_library and cc_grpc_library targets for Bigtable protos.\n\nAlso fix indentation of cc_grpc_library targets in Spanner and IAM protos.\n\nPiperOrigin-RevId: 293440538\n\ne2faab04f4cb7f9755072330866689b1943a16e9\ncloudtasks: v2 replace non-standard retry params in gapic config v2\n\nPiperOrigin-RevId: 293424055\n\ndfb4097ea628a8470292c6590a4313aee0c675bd\nerrorreporting: v1beta1 add legacy artman config for php\n\nPiperOrigin-RevId: 293423790\n\nb18aed55b45bfe5b62476292c72759e6c3e573c6\nasset: v1p1beta1 updated comment for `page_size` limit.\n\nPiperOrigin-RevId: 293421386\n\nc9ef36b7956d9859a2fc86ad35fcaa16958ab44f\nbazel: Refactor CI build scripts\n\nPiperOrigin-RevId: 293387911\n\na8ed9d921fdddc61d8467bfd7c1668f0ad90435c\nfix: set Ruby module name for OrgPolicy\n\nPiperOrigin-RevId: 293257997\n\n6c7d28509bd8315de8af0889688ee20099594269\nredis: v1beta1 add UpgradeInstance and connect_mode field to Instance\n\nPiperOrigin-RevId: 293242878\n\nae0abed4fcb4c21f5cb67a82349a049524c4ef68\nredis: v1 add connect_mode field to Instance\n\nPiperOrigin-RevId: 293241914\n\n3f7a0d29b28ee9365771da2b66edf7fa2b4e9c56\nAdds service config definition for bigqueryreservation v1beta1\n\nPiperOrigin-RevId: 293234418\n\n0c88168d5ed6fe353a8cf8cbdc6bf084f6bb66a5\naddition of BUILD & configuration for accessapproval v1\n\nPiperOrigin-RevId: 293219198\n\n39bedc2e30f4778ce81193f6ba1fec56107bcfc4\naccessapproval: v1 publish protos\n\nPiperOrigin-RevId: 293167048\n\n69d9945330a5721cd679f17331a78850e2618226\nAdd file-level `Session` resource definition\n\nPiperOrigin-RevId: 293080182\n\nf6a1a6b417f39694275ca286110bc3c1ca4db0dc\nAdd file-level `Session` resource definition\n\nPiperOrigin-RevId: 293080178\n\n29d40b78e3dc1579b0b209463fbcb76e5767f72a\nExpose managedidentities/v1beta1/ API for client library usage.\n\nPiperOrigin-RevId: 292979741\n\na22129a1fb6e18056d576dfb7717aef74b63734a\nExpose managedidentities/v1/ API for client library usage.\n\nPiperOrigin-RevId: 292968186\n\nb5cbe4a4ba64ab19e6627573ff52057a1657773d\nSecurityCenter v1p1beta1: move file-level option on top to workaround protobuf.js bug.\n\nPiperOrigin-RevId: 292647187\n\nb224b317bf20c6a4fbc5030b4a969c3147f27ad3\nAdds API definitions for bigqueryreservation v1beta1.\n\nPiperOrigin-RevId: 292634722\n\nc1468702f9b17e20dd59007c0804a089b83197d2\nSynchronize new proto/yaml changes.\n\nPiperOrigin-RevId: 292626173\n\nffdfa4f55ab2f0afc11d0eb68f125ccbd5e404bd\nvision: v1p3beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292605599\n\n78f61482cd028fc1d9892aa5d89d768666a954cd\nvision: v1p1beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292605125\n\n60bb5a294a604fd1778c7ec87b265d13a7106171\nvision: v1p2beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292604980\n\n3bcf7aa79d45eb9ec29ab9036e9359ea325a7fc3\nvision: v1p4beta1 publish annotations and retry config\n\nPiperOrigin-RevId: 292604656\n\n2717b8a1c762b26911b45ecc2e4ee01d98401b28\nFix dataproc artman client library generation.\n\nPiperOrigin-RevId: 292555664\n\n7ac66d9be8a7d7de4f13566d8663978c9ee9dcd7\nAdd Dataproc Autoscaling API to V1.\n\nPiperOrigin-RevId: 292450564\n\n5d932b2c1be3a6ef487d094e3cf5c0673d0241dd\n- Improve documentation\n- Add a client_id field to StreamingPullRequest\n\nPiperOrigin-RevId: 292434036\n\neaff9fa8edec3e914995ce832b087039c5417ea7\nmonitoring: v3 publish annotations and client retry config\n\nPiperOrigin-RevId: 292425288\n\n70958bab8c5353870d31a23fb2c40305b050d3fe\nBigQuery Storage Read API v1 clients.\n\nPiperOrigin-RevId: 292407644\n\n7a15e7fe78ff4b6d5c9606a3264559e5bde341d1\nUpdate backend proto for Google Cloud Endpoints\n\nPiperOrigin-RevId: 292391607\n\n3ca2c014e24eb5111c8e7248b1e1eb833977c83d\nbazel: Add --flaky_test_attempts=3 argument to prevent CI failures caused by flaky tests\n\nPiperOrigin-RevId: 292382559\n\n9933347c1f677e81e19a844c2ef95bfceaf694fe\nbazel:Integrate latest protoc-java-resource-names-plugin changes (fix for PyYAML dependency in bazel rules)\n\nPiperOrigin-RevId: 292376626\n\nb835ab9d2f62c88561392aa26074c0b849fb0bd3\nasset: v1p2beta1 add client config annotations\n\n* remove unintentionally exposed RPCs\n* remove messages relevant to removed RPCs\n\nPiperOrigin-RevId: 292369593\n\nc1246a29e22b0f98e800a536b5b0da2d933a55f2\nUpdating v1 protos with the latest inline documentation (in comments) and config options. Also adding a per-service .yaml file.\n\nPiperOrigin-RevId: 292310790\n\nb491d07cadaae7cde5608321f913e5ca1459b32d\nRevert accidental local_repository change\n\nPiperOrigin-RevId: 292245373\n\naf3400a8cb6110025198b59a0f7d018ae3cda700\nUpdate gapic-generator dependency (prebuilt PHP binary support).\n\nPiperOrigin-RevId: 292243997\n\n341fd5690fae36f36cf626ef048fbcf4bbe7cee6\ngrafeas: v1 add resource_definition for the grafeas.io/Project and change references for Project.\n\nPiperOrigin-RevId: 292221998\n\n42e915ec2ece1cd37a590fbcd10aa2c0fb0e5b06\nUpdate the gapic-generator, protoc-java-resource-name-plugin and protoc-docs-plugin to the latest commit.\n\nPiperOrigin-RevId: 292182368\n\nf035f47250675d31492a09f4a7586cfa395520a7\nFix grafeas build and update build.sh script to include gerafeas.\n\nPiperOrigin-RevId: 292168753\n\n26ccb214b7bc4a716032a6266bcb0a9ca55d6dbb\nasset: v1p1beta1 add client config annotations and retry config\n\nPiperOrigin-RevId: 292154210\n\n974ee5c0b5d03e81a50dafcedf41e0efebb5b749\nasset: v1beta1 add client config annotations\n\nPiperOrigin-RevId: 292152573\n\n" - } - }, - { - "template": { - "name": "node_library", - "origin": "synthtool.gcp", - "version": "2020.2.4" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "datastore", - "apiVersion": "v1", - "language": "nodejs", - "generator": "gapic", - "config": "google/datastore/artman_datastore.yaml" - } - } - ] + "updateTime": "2020-03-06T20:03:38.307900Z" } \ No newline at end of file diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 6d12e60f3f5..0418a503c27 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -5,20 +5,27 @@ logging.basicConfig(level=logging.DEBUG) -gapic = gcp.GAPICGenerator() +gapic = gcp.GAPICMicrogenerator() version = 'v1' -library = gapic.node_library( +library = gapic.typescript_library( 'datastore', version, - config_path='/google/datastore/artman_datastore.yaml') + generator_args={ + "grpc-service-config": f"google/datastore/{version}/datastore_grpc_service_config.json", + "package-name": f"@google-cloud/datastore", + "main-service": f"datastore" + }, + proto_path=f'/google/datastore/{version}', + extra_proto_files=['google/cloud/common_resources.proto'], + ) # Copy everything except for top level index, package.json, and README.md s.copy( library, - excludes=['package.json', 'README.md', 'src/index.js']) - -# Update path discovery due to build/ dir and TypeScript conversion. -s.replace("src/v1/datastore_client.js", "../../package.json", "../../../package.json") + excludes=['package.json', 'README.md', 'src/index.ts']) +system_test_files=['system-test/fixtures/sample/src/index.ts','system-test/fixtures/sample/src/index.js'] +for file in system_test_files: + s.replace(file, 'DatastoreClient', 'Datastore') common_templates = gcp.CommonTemplates() templates = common_templates.node_library(source_location="build/src") s.copy(templates) @@ -26,3 +33,4 @@ # Node.js specific cleanup subprocess.run(['npm', 'install']) subprocess.run(['npm', 'run', 'fix']) +subprocess.run(['npx', 'compileProtos', 'src']) diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json b/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json deleted file mode 100644 index fa50af0ff4d..00000000000 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "datastore-sample-fixture", - "description": "An app we're using to test the library.", - "scripts": { - "check": "gts check", - "clean": "gts clean", - "compile": "tsc -p .", - "fix": "gts fix", - "prepare": "npm run compile", - "pretest": "npm run compile", - "posttest": "npm run check", - "start": "node build/src/index.js" - }, - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/datastore": "file:./datastore.tgz" - }, - "devDependencies": { - "@types/node": "^10.3.0", - "typescript": "^3.0.0", - "gts": "^1.0.0" - } -} diff --git a/handwritten/nodejs-datastore/src/v1/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js similarity index 56% rename from handwritten/nodejs-datastore/src/v1/index.js rename to handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index 158582547b8..a6e882c8b64 100644 --- a/handwritten/nodejs-datastore/src/v1/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,9 +11,16 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** -'use strict'; +/* eslint-disable node/no-missing-require, no-unused-vars */ +const datastore = require('@google-cloud/datastore'); -const DatastoreClient = require('./datastore_client'); +function main() { + const datastoreClient = new datastore.Datastore(); +} -module.exports.DatastoreClient = DatastoreClient; +main(); diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index f6bd17e90fc..4d0f151cebb 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,6 +1,25 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + import {Datastore} from '@google-cloud/datastore'; -async function main() { - const datastore = new Datastore(); - console.log(datastore); + +function main() { + const datastoreClient = new Datastore(); } + main(); diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json b/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json deleted file mode 100644 index f893d7afb9b..00000000000 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./node_modules/gts/tsconfig-google.json", - "compilerOptions": { - "rootDir": ".", - "outDir": "build" - }, - "include": [ - "src/*.ts" - ] -} diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index e55207d76c4..c9aa74ec221 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -4,56 +4,48 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** -import * as cp from 'child_process'; -import * as mv from 'mv'; -import {ncp} from 'ncp'; -import * as tmp from 'tmp'; -import {promisify} from 'util'; - -const execSync = (cmd: string, opts?: object) => - cp.execSync(cmd, {encoding: 'utf-8', ...opts}); - -const keep = false; -const mvp = (promisify(mv) as {}) as (...args: string[]) => Promise; -const ncpp = promisify(ncp); -const stagingDir = tmp.dirSync({keep, unsafeCleanup: true}); -const stagingPath = stagingDir.name; -const pkg = require('../../package.json'); +import {packNTest} from 'pack-n-play'; +import {readFileSync} from 'fs'; +import {describe, it} from 'mocha'; -describe('📦 pack and install', () => { - /** - * Create a staging directory with temp fixtures used to test on a fresh - * application. - */ - it('should be able to use the d.ts', async () => { - execSync('npm pack --unsafe-perm'); - const tarball = `google-cloud-datastore-${pkg.version}.tgz`; - await mvp(tarball, `${stagingPath}/datastore.tgz`); - await ncpp('system-test/fixtures/sample', `${stagingPath}/`); - execSync('npm install --unsafe-perm', { - cwd: `${stagingPath}/`, - stdio: 'inherit', - }); - execSync('node --throw-deprecation build/src/index.js', { - cwd: `${stagingPath}/`, - stdio: 'inherit', - }); +describe('typescript consumer tests', () => { + it('should have correct type signature for typescript users', async function() { + this.timeout(300000); + const options = { + packageDir: process.cwd(), // path to your module. + sample: { + description: 'typescript based user can use the type definitions', + ts: readFileSync( + './system-test/fixtures/sample/src/index.ts' + ).toString(), + }, + }; + await packNTest(options); // will throw upon error. }); - /** - * CLEAN UP - remove the staging directory when done. - */ - after('cleanup staging', () => { - if (!keep) { - stagingDir.removeCallback(); - } + it('should have correct type signature for javascript users', async function() { + this.timeout(300000); + const options = { + packageDir: process.cwd(), // path to your module. + sample: { + description: 'typescript based user can use the type definitions', + ts: readFileSync( + './system-test/fixtures/sample/src/index.js' + ).toString(), + }, + }; + await packNTest(options); // will throw upon error. }); }); diff --git a/handwritten/nodejs-datastore/test/gapic-v1.js b/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts similarity index 58% rename from handwritten/nodejs-datastore/test/gapic-v1.js rename to handwritten/nodejs-datastore/test/gapic-datastore-v1.ts index 52446238c24..367d902bbba 100644 --- a/handwritten/nodejs-datastore/test/gapic-v1.js +++ b/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,70 +11,111 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** -'use strict'; - -const assert = require('assert'); -const {describe, it} = require('mocha'); - +import * as protosTypes from '../protos/protos'; +import * as assert from 'assert'; +import {describe, it} from 'mocha'; const datastoreModule = require('../src'); const FAKE_STATUS_CODE = 1; -const error = new Error(); -error.code = FAKE_STATUS_CODE; +class FakeError { + name: string; + message: string; + code: number; + constructor(n: number) { + this.name = 'fakeName'; + this.message = 'fake message'; + this.code = n; + } +} +const error = new FakeError(FAKE_STATUS_CODE); +export interface Callback { + (err: FakeError | null, response?: {} | null): void; +} -describe('DatastoreClient', () => { +export class Operation { + constructor() {} + promise() {} +} +function mockSimpleGrpcMethod( + expectedRequest: {}, + response: {} | null, + error: FakeError | null +) { + return (actualRequest: {}, options: {}, callback: Callback) => { + assert.deepStrictEqual(actualRequest, expectedRequest); + if (error) { + callback(error); + } else if (response) { + callback(null, response); + } else { + callback(null); + } + }; +} +describe('v1.DatastoreClient', () => { it('has servicePath', () => { const servicePath = datastoreModule.v1.DatastoreClient.servicePath; assert(servicePath); }); - it('has apiEndpoint', () => { const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; assert(apiEndpoint); }); - it('has port', () => { const port = datastoreModule.v1.DatastoreClient.port; assert(port); assert(typeof port === 'number'); }); - - it('should create a client with no options', () => { + it('should create a client with no option', () => { const client = new datastoreModule.v1.DatastoreClient(); assert(client); }); - it('should create a client with gRPC fallback', () => { - const client = new datastoreModule.v1.DatastoreClient({fallback: true}); + const client = new datastoreModule.v1.DatastoreClient({ + fallback: true, + }); assert(client); }); - + it('has initialize method and supports deferred initialization', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreStub, undefined); + await client.initialize(); + assert(client.datastoreStub); + }); + it('has close method', () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.close(); + }); describe('lookup', () => { it('invokes lookup without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - + const request: protosTypes.google.datastore.v1.ILookupRequest = {}; // Mock response const expectedResponse = {}; - - // Mock Grpc layer + // Mock gRPC layer client._innerApiCalls.lookup = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.lookup(request, (err, response) => { + client.lookup(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -86,50 +127,41 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.ILookupRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); - - client.lookup(request, (err, response) => { - assert(err instanceof Error); + client.lookup(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('runQuery', () => { it('invokes runQuery without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - + const request: protosTypes.google.datastore.v1.IRunQueryRequest = {}; // Mock response const expectedResponse = {}; - - // Mock Grpc layer + // Mock gRPC layer client._innerApiCalls.runQuery = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.runQuery(request, (err, response) => { + client.runQuery(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -141,55 +173,45 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.IRunQueryRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.runQuery = mockSimpleGrpcMethod( request, null, error ); - - client.runQuery(request, (err, response) => { - assert(err instanceof Error); + client.runQuery(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('beginTransaction', () => { it('invokes beginTransaction without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - + const request: protosTypes.google.datastore.v1.IBeginTransactionRequest = {}; // Mock response - const transaction = '-34'; - const expectedResponse = { - transaction: transaction, - }; - - // Mock Grpc layer + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.beginTransaction(request, (err, response) => { + client.beginTransaction(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -201,55 +223,45 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.IBeginTransactionRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( request, null, error ); - - client.beginTransaction(request, (err, response) => { - assert(err instanceof Error); + client.beginTransaction(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('commit', () => { it('invokes commit without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - + const request: protosTypes.google.datastore.v1.ICommitRequest = {}; // Mock response - const indexUpdates = 1425228195; - const expectedResponse = { - indexUpdates: indexUpdates, - }; - - // Mock Grpc layer + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.commit = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.commit(request, (err, response) => { + client.commit(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -261,50 +273,41 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const request = { - projectId: projectId, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.ICommitRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); - - client.commit(request, (err, response) => { - assert(err instanceof Error); + client.commit(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('rollback', () => { it('invokes rollback without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { - projectId: projectId, - transaction: transaction, - }; - + const request: protosTypes.google.datastore.v1.IRollbackRequest = {}; // Mock response const expectedResponse = {}; - - // Mock Grpc layer + // Mock gRPC layer client._innerApiCalls.rollback = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.rollback(request, (err, response) => { + client.rollback(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -316,56 +319,45 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const transaction = '-34'; - const request = { - projectId: projectId, - transaction: transaction, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.IRollbackRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.rollback = mockSimpleGrpcMethod( request, null, error ); - - client.rollback(request, (err, response) => { - assert(err instanceof Error); + client.rollback(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('allocateIds', () => { it('invokes allocateIds without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - + const request: protosTypes.google.datastore.v1.IAllocateIdsRequest = {}; // Mock response const expectedResponse = {}; - - // Mock Grpc layer + // Mock gRPC layer client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.allocateIds(request, (err, response) => { + client.allocateIds(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -377,56 +369,45 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.IAllocateIdsRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( request, null, error ); - - client.allocateIds(request, (err, response) => { - assert(err instanceof Error); + client.allocateIds(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); }); }); }); - describe('reserveIds', () => { it('invokes reserveIds without error', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - + const request: protosTypes.google.datastore.v1.IReserveIdsRequest = {}; // Mock response const expectedResponse = {}; - - // Mock Grpc layer + // Mock gRPC layer client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( request, - expectedResponse + expectedResponse, + null ); - - client.reserveIds(request, (err, response) => { + client.reserveIds(request, (err: {}, response: {}) => { assert.ifError(err); assert.deepStrictEqual(response, expectedResponse); done(); @@ -438,24 +419,20 @@ describe('DatastoreClient', () => { credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - + // Initialize client before mocking + client.initialize(); // Mock request - const projectId = 'projectId-1969970175'; - const keys = []; - const request = { - projectId: projectId, - keys: keys, - }; - - // Mock Grpc layer + const request: protosTypes.google.datastore.v1.IReserveIdsRequest = {}; + // Mock response + const expectedResponse = {}; + // Mock gRPC layer client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( request, null, error ); - - client.reserveIds(request, (err, response) => { - assert(err instanceof Error); + client.reserveIds(request, (err: FakeError, response: {}) => { + assert(err instanceof FakeError); assert.strictEqual(err.code, FAKE_STATUS_CODE); assert(typeof response === 'undefined'); done(); @@ -463,16 +440,3 @@ describe('DatastoreClient', () => { }); }); }); - -function mockSimpleGrpcMethod(expectedRequest, response, error) { - return function(actualRequest, options, callback) { - assert.deepStrictEqual(actualRequest, expectedRequest); - if (error) { - callback(error); - } else if (response) { - callback(null, response); - } else { - callback(null); - } - }; -} diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json index b10ee498aef..613d35597b5 100644 --- a/handwritten/nodejs-datastore/tsconfig.json +++ b/handwritten/nodejs-datastore/tsconfig.json @@ -2,11 +2,18 @@ "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { "rootDir": ".", - "outDir": "build" + "outDir": "build", + "resolveJsonModule": true, + "lib": [ + "es2016", + "dom" + ] }, "include": [ "src/*.ts", + "src/**/*.ts", "test/*.ts", + "test/**/*.ts", "system-test/*.ts" ] } diff --git a/handwritten/nodejs-datastore/webpack.config.js b/handwritten/nodejs-datastore/webpack.config.js index 00d237395ee..130a31afa9e 100644 --- a/handwritten/nodejs-datastore/webpack.config.js +++ b/handwritten/nodejs-datastore/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,8 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +const path = require('path'); + module.exports = { - entry: './src/browser.js', + entry: './src/index.ts', output: { library: 'datastore', filename: './datastore.js', @@ -24,20 +26,36 @@ module.exports = { crypto: 'empty', }, resolve: { - extensions: ['.js', '.json'], + alias: { + '../../../package.json': path.resolve(__dirname, 'package.json'), + }, + extensions: ['.js', '.json', '.ts'], }, module: { rules: [ { - test: /node_modules[\\/]retry-request[\\/]/, + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /node_modules[\\/]@grpc[\\/]grpc-js/, + use: 'null-loader', + }, + { + test: /node_modules[\\/]grpc/, + use: 'null-loader', + }, + { + test: /node_modules[\\/]retry-request/, use: 'null-loader', }, { - test: /node_modules[\\/]https-proxy-agent[\\/]/, + test: /node_modules[\\/]https?-proxy-agent/, use: 'null-loader', }, { - test: /node_modules[\\/]gtoken[\\/]/, + test: /node_modules[\\/]gtoken/, use: 'null-loader', }, ], From e6ec6c3ea47ed787f4290f5a47c58474d43d69e2 Mon Sep 17 00:00:00 2001 From: Xiaozhen Liu Date: Tue, 10 Mar 2020 12:07:20 -0700 Subject: [PATCH 503/820] chore: sort package.json (#612) * sort package.json * update grpc version --- handwritten/nodejs-datastore/package.json | 90 +++++++++++------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6b2659da84f..1395ef443a9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,19 +1,7 @@ { "name": "@google-cloud/datastore", - "description": "Cloud Datastore Client Library for Node.js", "version": "5.0.6", - "license": "Apache-2.0", - "author": "Google LLC.", - "engines": { - "node": ">=8.10.0" - }, - "repository": "googleapis/nodejs-datastore", - "main": "build/src/index.js", - "files": [ - "build/proto", - "build/protos", - "build/src" - ], + "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", "google api client", @@ -26,30 +14,39 @@ "google datastore", "datastore" ], + "repository": "googleapis/nodejs-datastore", + "license": "Apache-2.0", + "author": "Google LLC.", + "main": "build/src/index.js", + "files": [ + "build/proto", + "build/protos", + "build/src" + ], "scripts": { - "test": "c8 mocha build/test", - "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", - "lint": "gts fix && eslint samples/*.js", - "fix": "gts fix && eslint '**/*.js' --fix", + "clean": "gts clean", "compile": "tsc -p . && cp -r proto* build/", "compile-protos": "compileProtos src", - "prepare": "npm run compile", "docs": "jsdoc -c .jsdoc.js", + "predocs-test": "npm run docs", + "docs-test": "linkinator docs", + "fix": "gts fix && eslint '**/*.js' --fix", + "prelint": "cd samples; npm link ../; npm i", + "lint": "gts fix && eslint samples/*.js", + "prepare": "npm run compile", + "proto": "npm run proto:datastore && npm run proto:appenginekey", + "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", + "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", + "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", - "clean": "gts clean", "pretest": "npm run compile", - "proto": "npm run proto:datastore && npm run proto:appenginekey", - "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", - "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", - "docs-test": "linkinator docs", - "predocs-test": "npm run docs", - "prelint": "cd samples; npm link ../; npm i" + "test": "c8 mocha build/test" }, "dependencies": { "@google-cloud/projectify": "^1.0.4", "@google-cloud/promisify": "^1.0.4", - "@grpc/grpc-js": "0.7.0", + "@grpc/grpc-js": "0.6.16", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", @@ -62,41 +59,44 @@ "stream-events": "^1.0.5" }, "devDependencies": { + "@types/extend": "^3.0.1", + "@types/is": "0.0.21", "@types/mocha": "^7.0.2", + "@types/mv": "^2.1.0", + "@types/ncp": "^2.0.3", "@types/node": "^13.9.0", - "gts": "^1.1.2", - "null-loader": "^3.0.0", - "pack-n-play": "^1.0.0-2", - "power-assert": "^1.6.1", - "ts-loader": "^6.2.1", - "typescript": "^3.7.0", - "webpack": "^4.42.0", - "webpack-cli": "^3.3.11", + "@types/proxyquire": "^1.3.28", + "@types/sinon": "^7.5.2", + "@types/tmp": "0.1.0", + "assert-rejects": "^1.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.0", "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.2", + "google-proto-files": "^1.1.2", + "gts": "^1.1.2", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", "mocha": "^7.1.0", - "prettier": "^1.19.1", - "@types/extend": "^3.0.1", - "@types/is": "0.0.21", - "@types/mv": "^2.1.0", - "@types/ncp": "^2.0.3", - "@types/proxyquire": "^1.3.28", - "@types/sinon": "^7.5.2", - "@types/tmp": "0.1.0", - "assert-rejects": "^1.0.0", - "google-proto-files": "^1.1.2", "mv": "^2.1.1", "ncp": "^2.0.0", + "null-loader": "^3.0.0", + "pack-n-play": "^1.0.0-2", + "power-assert": "^1.6.1", + "prettier": "^1.19.1", "proxyquire": "^2.1.3", "sinon": "^9.0.0", - "tmp": "0.1.0" + "tmp": "0.1.0", + "ts-loader": "^6.2.1", + "typescript": "^3.7.0", + "webpack": "^4.42.0", + "webpack-cli": "^3.3.11" + }, + "engines": { + "node": ">=8.10.0" } } From 014aabc2ffc117c6928857db2ff8019d2d42ccee Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Wed, 11 Mar 2020 11:47:15 -0400 Subject: [PATCH 504/820] fix: handle large int out of bounds error in streams (#590) --- handwritten/nodejs-datastore/src/entity.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 28 +++++--- handwritten/nodejs-datastore/test/entity.ts | 68 +++++++----------- handwritten/nodejs-datastore/test/request.ts | 75 ++++++++++++++++++++ 4 files changed, 121 insertions(+), 52 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 7f97c2bad39..c1fab099602 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -452,7 +452,7 @@ export namespace entity { "'options.wrapNumbers' as\n" + '{\n' + ' integerTypeCastFunction: provide \n' + - ' properties: optionally specify property name(s) to be cutom casted' + + ' properties: optionally specify property name(s) to be custom casted\n' + '}\n' ); } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 8c98460705e..d5735499cf2 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -290,10 +290,17 @@ class DatastoreRequest { return; } - const entities = entity.formatArray( - resp!.found! as ResponseResult[], - options.wrapNumbers - ); + let entities: Entity[] = []; + + try { + entities = entity.formatArray( + resp!.found! as ResponseResult[], + options.wrapNumbers + ); + } catch (err) { + stream.destroy(err); + return; + } const nextKeys = (resp!.deferred || []) .map(entity.keyFromKeyProto) .map(entity.keyToKeyProto); @@ -778,10 +785,15 @@ class DatastoreRequest { let entities: Entity[] = []; if (resp.batch.entityResults) { - entities = entity.formatArray( - resp.batch.entityResults, - options.wrapNumbers - ); + try { + entities = entity.formatArray( + resp.batch.entityResults, + options.wrapNumbers + ); + } catch (err) { + stream.destroy(err); + return; + } } // Emit each result right away, then get the rest if necessary. diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index b2b88ed81de..f33527fe3f5 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -19,7 +19,25 @@ import * as sinon from 'sinon'; import {Datastore} from '../src'; import {Entity, entity, ValueProto} from '../src/entity'; import {IntegerTypeCastOptions} from '../src/query'; -import {AnyARecord} from 'dns'; + +export function outOfBoundsError(opts: { + propertyName?: string; + integerValue: string | number; +}) { + return new Error( + 'We attempted to return all of the numeric values, but ' + + (opts.propertyName ? opts.propertyName + ' ' : '') + + 'value ' + + opts.integerValue + + " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + + "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + + "'options.wrapNumbers' as\n" + + '{\n' + + ' integerTypeCastFunction: provide \n' + + ' properties: optionally specify property name(s) to be custom casted\n' + + '}\n' + ); +} describe('entity', () => { let entity: Entity; @@ -101,24 +119,6 @@ describe('entity', () => { }); describe('integerTypeCastFunction is not provided', () => { - const expectedError = (opts: { - integerValue?: number; - propertyName?: string; - }) => { - return new Error( - 'We attempted to return all of the numeric values, but ' + - (opts.propertyName ? opts.propertyName + ' ' : '') + - 'value ' + - opts.integerValue + - " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + - "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + - "'options.wrapNumbers' as\n" + - '{\n' + - ' integerTypeCastFunction: provide \n' + - ' properties: optionally specify property name(s) to be cutom casted' + - '}\n' - ); - }; it('should throw if integerTypeCastOptions is provided but integerTypeCastFunction is not', () => { assert.throws( () => new entity.Int(valueProto, {}).valueOf(), @@ -142,11 +142,11 @@ describe('entity', () => { assert.throws(() => { new entity.Int(valueProto).valueOf(); - }, expectedError(valueProto)); + }, outOfBoundsError(valueProto)); assert.throws(() => { new entity.Int(valueProto2).valueOf(); - }, expectedError(valueProto2)); + }, outOfBoundsError(valueProto2)); }); it('should throw if integer value is outside of bounds passing strings or Numbers', () => { @@ -156,12 +156,12 @@ describe('entity', () => { // should throw when Number is passed assert.throws(() => { new entity.Int(largeIntegerValue).valueOf(); - }, expectedError({integerValue: largeIntegerValue})); + }, outOfBoundsError({integerValue: largeIntegerValue})); // should throw when string is passed assert.throws(() => { new entity.Int(smallIntegerValue.toString()).valueOf(); - }, expectedError({integerValue: smallIntegerValue})); + }, outOfBoundsError({integerValue: smallIntegerValue})); }); it('should not auto throw on initialization', () => { @@ -559,24 +559,6 @@ describe('entity', () => { }); it('should throw if integer value is outside of bounds', () => { - const expectedError = (opts: { - integerValue: number; - propertyName: string; - }) => { - return new Error( - 'We attempted to return all of the numeric values, but ' + - (opts.propertyName ? opts.propertyName + ' ' : '') + - 'value ' + - opts.integerValue + - " is out of bounds of 'Number.MAX_SAFE_INTEGER'.\n" + - "To prevent this error, please consider passing 'options.wrapNumbers=true' or\n" + - "'options.wrapNumbers' as\n" + - '{\n' + - ' integerTypeCastFunction: provide \n' + - ' properties: optionally specify property name(s) to be cutom casted' + - '}\n' - ); - }; const largeIntegerValue = Number.MAX_SAFE_INTEGER + 1; const smallIntegerValue = Number.MIN_SAFE_INTEGER - 1; @@ -594,11 +576,11 @@ describe('entity', () => { assert.throws(() => { entity.decodeValueProto(valueProto); - }, expectedError(valueProto)); + }, outOfBoundsError(valueProto)); assert.throws(() => { entity.decodeValueProto(valueProto2); - }, expectedError(valueProto2)); + }, outOfBoundsError(valueProto2)); }); }); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index c562bd7c407..9536e22be98 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -26,6 +26,7 @@ import {google} from '../proto/datastore'; import * as ds from '../src'; import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; import {IntegerTypeCastOptions, Query, QueryProto} from '../src/query.js'; +import {outOfBoundsError} from './entity'; import { AllocateIdsResponse, RequestConfig, @@ -373,6 +374,41 @@ describe('Request', () => { }); }); }); + + it('should emit an error from results decoding', done => { + const largeInt = '922337203685477850'; + request.request_ = (config: RequestConfig, callback: Function) => { + callback(null, { + found: [ + { + entity: { + properties: { + points: { + integerValue: largeInt, + valueType: 'integerValue', + }, + }, + }, + }, + ], + }); + }; + + const stream = request.createReadStream(key); + + stream + .on('data', () => {}) + .on('error', (err: Error) => { + assert.deepStrictEqual( + err, + outOfBoundsError({integerValue: largeInt}) + ); + setImmediate(() => { + assert.strictEqual(stream.destroyed, true); + done(); + }); + }); + }); }); describe('success', () => { @@ -951,6 +987,45 @@ describe('Request', () => { }) .emit('reading'); }); + + it('should emit an error from results decoding', done => { + const largeInt = '922337203685477850'; + sandbox.stub(entity, 'queryToQueryProto'); + + request.request_ = (config: RequestConfig, callback: Function) => { + callback(null, { + batch: { + entityResults: [ + { + entity: { + properties: { + points: { + integerValue: largeInt, + valueType: 'integerValue', + }, + }, + }, + }, + ], + }, + }); + }; + + const stream = request.runQueryStream({}); + + stream + .on('error', (err: Error) => { + assert.deepStrictEqual( + err, + outOfBoundsError({integerValue: largeInt}) + ); + setImmediate(() => { + assert.strictEqual(stream.destroyed, true); + done(); + }); + }) + .emit('reading'); + }); }); describe('success', () => { From caa0bb5efa48e3a4ea6a1a16e71b5866816a344f Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 11 Mar 2020 18:42:11 +0100 Subject: [PATCH 505/820] fix(deps): update dependency @grpc/grpc-js to v0.7.0 (#613) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1395ef443a9..1b74f8654dc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.4", "@google-cloud/promisify": "^1.0.4", - "@grpc/grpc-js": "0.6.16", + "@grpc/grpc-js": "0.7.0", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", From cfcd56bb024549cd063e66f2fbf98e44f309221b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2020 11:34:11 -0400 Subject: [PATCH 506/820] chore: release 5.1.0 (#599) --- handwritten/nodejs-datastore/CHANGELOG.md | 15 +++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 2fd548eb503..394058c1b34 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,21 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [5.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.6...v5.1.0) (2020-03-11) + + +### Features + +* add warning when int value is too large during upload ([#591](https://www.github.com/googleapis/nodejs-datastore/issues/591)) ([5a4821b](https://www.github.com/googleapis/nodejs-datastore/commit/5a4821b5fc8d283f168d3b52ac57021868e98679)) +* export protos in src/index.ts ([3fe21ab](https://www.github.com/googleapis/nodejs-datastore/commit/3fe21ab8835b4a9aad73659d7c6242d6cabb7f9f)) +* move library to Typescript code generation ([#608](https://www.github.com/googleapis/nodejs-datastore/issues/608)) ([d543aa6](https://www.github.com/googleapis/nodejs-datastore/commit/d543aa635764f9577bfced48c6a41c23f28771a0)) + + +### Bug Fixes + +* handle large int out of bounds error in streams ([#590](https://www.github.com/googleapis/nodejs-datastore/issues/590)) ([25b1fc2](https://www.github.com/googleapis/nodejs-datastore/commit/25b1fc2de4fddb5b68a9c6fbb5202e444746e69b)) +* **deps:** update dependency @grpc/grpc-js to v0.7.0 ([#613](https://www.github.com/googleapis/nodejs-datastore/issues/613)) ([8b5d391](https://www.github.com/googleapis/nodejs-datastore/commit/8b5d391e4cb80808b274f0992e275fd24177a750)) + ### [5.0.6](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.5...v5.0.6) (2020-02-20) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1b74f8654dc..6668f06b8ca 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "5.0.6", + "version": "5.1.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 97d8c67d32b..3ced30fe33d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.0.6", + "@google-cloud/datastore": "^5.1.0", "sinon": "^9.0.0" }, "devDependencies": { From 58e2c8e5454c65101d792dd7f16212108aaae427 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 17 Mar 2020 20:20:47 +0100 Subject: [PATCH 507/820] fix(deps): update dependency @grpc/grpc-js to v0.7.1 (#615) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6668f06b8ca..2a81baf8099 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.4", "@google-cloud/promisify": "^1.0.4", - "@grpc/grpc-js": "0.7.0", + "@grpc/grpc-js": "0.7.1", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", From 7e06c78e3b3260415f28ad22df8d85f0ef6cdda3 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Wed, 18 Mar 2020 12:58:42 -0700 Subject: [PATCH 508/820] docs: mention templates in contributing section of README (#617) --- handwritten/nodejs-datastore/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index d6c040ab0a2..79826d2af41 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -138,6 +138,12 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages] Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/master/CONTRIBUTING.md). +Please note that this `README.md`, the `samples/README.md`, +and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`) +are generated from a central template. To edit one of these files, make an edit +to its template in this +[directory](https://github.com/googleapis/synthtool/tree/master/synthtool/gcp/templates/node_library). + ## License Apache Version 2.0 From 0c21d6e9e21f04c8d9df374c19e5c43952355318 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 23 Mar 2020 18:28:46 -0700 Subject: [PATCH 509/820] docs: document version support goals (#624) --- handwritten/nodejs-datastore/README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 79826d2af41..b1f16985510 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -115,6 +115,27 @@ has instructions for running the samples. The [Google Cloud Datastore Node.js Client API Reference][client-docs] documentation also contains samples. +## Supported Node.js Versions + +Our client libraries follow the [Node.js release schedule](https://nodejs.org/en/about/releases/). +Libraries are compatible with all current _active_ and _maintenance_ versions of +Node.js. + +Client libraries targetting some end-of-life versions of Node.js are available, and +can be installed via npm [dist-tags](https://docs.npmjs.com/cli/dist-tag). +The dist-tags follow the naming convention `legacy-(version)`. + +_Legacy Node.js versions are supported as a best effort:_ + +* Legacy versions will not be tested in continuous integration. +* Some security patches may not be able to be backported. +* Dependencies will not be kept up-to-date, and features will not be backported. + +#### Legacy tags available + +* `legacy-8`: install client libraries from this dist-tag for versions + compatible with Node.js 8. + ## Versioning This library follows [Semantic Versioning](http://semver.org/). From 0c88fc95eb8d1341d44ea089f62f67032982b6fa Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 25 Mar 2020 01:12:42 -0700 Subject: [PATCH 510/820] chore: regenerate the code (#623) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR was generated using Autosynth. :rainbow:
Log from Synthtool ``` 2020-03-22 04:22:53,436 synthtool > Executing /tmpfs/src/git/autosynth/working_repo/synth.py. 2020-03-22 04:22:53,489 synthtool > Ensuring dependencies. 2020-03-22 04:22:53,493 synthtool > Cloning googleapis. 2020-03-22 04:22:54,163 synthtool > Pulling Docker image: gapic-generator-typescript:latest latest: Pulling from gapic-images/gapic-generator-typescript Digest: sha256:3762b8bcba247ef4d020ffc7043e2881a20b5fab0ffd98d542f365d3f3a3829d Status: Image is up to date for gcr.io/gapic-images/gapic-generator-typescript:latest 2020-03-22 04:22:55,048 synthtool > Generating code for: google/datastore/v1. 2020-03-22 04:22:56,224 synthtool > Generated code into /tmpfs/tmp/tmp6e289f3u. 2020-03-22 04:22:56,237 synthtool > Replaced 'DatastoreClient' in system-test/fixtures/sample/src/index.ts. 2020-03-22 04:22:56,237 synthtool > Replaced 'DatastoreClient' in system-test/fixtures/sample/src/index.js. .eslintignore .eslintrc.yml .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md .github/ISSUE_TEMPLATE/support_request.md .github/PULL_REQUEST_TEMPLATE.md .github/publish.yml .github/release-please.yml .github/workflows/ci.yaml .kokoro/common.cfg .kokoro/continuous/node10/common.cfg .kokoro/continuous/node10/docs.cfg .kokoro/continuous/node10/lint.cfg .kokoro/continuous/node10/samples-test.cfg .kokoro/continuous/node10/system-test.cfg .kokoro/continuous/node10/test.cfg .kokoro/continuous/node12/common.cfg .kokoro/continuous/node12/test.cfg .kokoro/continuous/node8/common.cfg .kokoro/continuous/node8/test.cfg .kokoro/docs.sh .kokoro/lint.sh .kokoro/presubmit/node10/common.cfg .kokoro/presubmit/node10/docs.cfg .kokoro/presubmit/node10/lint.cfg .kokoro/presubmit/node10/samples-test.cfg .kokoro/presubmit/node10/system-test.cfg .kokoro/presubmit/node10/test.cfg .kokoro/presubmit/node12/common.cfg .kokoro/presubmit/node12/test.cfg .kokoro/presubmit/node8/common.cfg .kokoro/presubmit/node8/test.cfg .kokoro/presubmit/windows/common.cfg .kokoro/presubmit/windows/test.cfg .kokoro/publish.sh .kokoro/release/docs.cfg .kokoro/release/docs.sh .kokoro/release/publish.cfg .kokoro/samples-test.sh .kokoro/system-test.sh .kokoro/test.bat .kokoro/test.sh .kokoro/trampoline.sh .mocharc.js .nycrc .prettierignore .prettierrc CODE_OF_CONDUCT.md CONTRIBUTING.md LICENSE README.md codecov.yaml renovate.json samples/README.md npm WARN npm npm does not support Node.js v12.16.1 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11. npm WARN npm You can find the latest version at https://nodejs.org/ npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3. > core-js@2.6.11 postinstall /tmpfs/src/git/autosynth/working_repo/node_modules/core-js > node -e "try{require('./postinstall')}catch(e){}" Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library! The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:  > https://opencollective.com/core-js  > https://www.patreon.com/zloirock  Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -) > protobufjs@6.8.9 postinstall /tmpfs/src/git/autosynth/working_repo/node_modules/protobufjs > node scripts/postinstall > @google-cloud/datastore@5.1.0 prepare /tmpfs/src/git/autosynth/working_repo > npm run compile npm WARN npm npm does not support Node.js v12.16.1 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11. npm WARN npm You can find the latest version at https://nodejs.org/ > @google-cloud/datastore@5.1.0 compile /tmpfs/src/git/autosynth/working_repo > tsc -p . && cp -r proto* build/ npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.1 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/watchpack/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: abbrev@1.1.1 (node_modules/watchpack/node_modules/fsevents/node_modules/abbrev): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/abbrev' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.abbrev.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ansi-regex@2.1.1 (node_modules/watchpack/node_modules/fsevents/node_modules/ansi-regex): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/ansi-regex' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.ansi-regex.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: aproba@1.2.0 (node_modules/watchpack/node_modules/fsevents/node_modules/aproba): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/aproba' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.aproba.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: balanced-match@1.0.0 (node_modules/watchpack/node_modules/fsevents/node_modules/balanced-match): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/balanced-match' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.balanced-match.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: chownr@1.1.4 (node_modules/watchpack/node_modules/fsevents/node_modules/chownr): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/chownr' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.chownr.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: code-point-at@1.1.0 (node_modules/watchpack/node_modules/fsevents/node_modules/code-point-at): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/code-point-at' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.code-point-at.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: concat-map@0.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/concat-map): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/concat-map' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.concat-map.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: console-control-strings@1.1.0 (node_modules/watchpack/node_modules/fsevents/node_modules/console-control-strings): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/console-control-strings' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.console-control-strings.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: core-util-is@1.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/core-util-is): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/core-util-is' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.core-util-is.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: deep-extend@0.6.0 (node_modules/watchpack/node_modules/fsevents/node_modules/deep-extend): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/deep-extend' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.deep-extend.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: delegates@1.0.0 (node_modules/watchpack/node_modules/fsevents/node_modules/delegates): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/delegates' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.delegates.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: detect-libc@1.0.3 (node_modules/watchpack/node_modules/fsevents/node_modules/detect-libc): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/detect-libc' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.detect-libc.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fs.realpath@1.0.0 (node_modules/watchpack/node_modules/fsevents/node_modules/fs.realpath): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/fs.realpath' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.fs.realpath.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: has-unicode@2.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/has-unicode): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/has-unicode' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.has-unicode.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: inherits@2.0.4 (node_modules/watchpack/node_modules/fsevents/node_modules/inherits): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/inherits' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.inherits.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ini@1.3.5 (node_modules/watchpack/node_modules/fsevents/node_modules/ini): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/ini' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.ini.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: isarray@1.0.0 (node_modules/watchpack/node_modules/fsevents/node_modules/isarray): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/isarray' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.isarray.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@1.2.5 (node_modules/watchpack/node_modules/fsevents/node_modules/minimist): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/minimist' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.minimist.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ms@2.1.2 (node_modules/watchpack/node_modules/fsevents/node_modules/ms): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/ms' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.ms.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: npm-normalize-package-bin@1.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/npm-normalize-package-bin): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/npm-normalize-package-bin' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.npm-normalize-package-bin.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: number-is-nan@1.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/number-is-nan): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/number-is-nan' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.number-is-nan.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: object-assign@4.1.1 (node_modules/watchpack/node_modules/fsevents/node_modules/object-assign): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/object-assign' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.object-assign.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: os-homedir@1.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/os-homedir): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/os-homedir' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.os-homedir.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: os-tmpdir@1.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/os-tmpdir): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/os-tmpdir' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.os-tmpdir.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: path-is-absolute@1.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/path-is-absolute): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/path-is-absolute' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.path-is-absolute.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: process-nextick-args@2.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/process-nextick-args): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/process-nextick-args' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.process-nextick-args.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: safe-buffer@5.1.2 (node_modules/watchpack/node_modules/fsevents/node_modules/safe-buffer): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/safe-buffer' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.safe-buffer.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: safer-buffer@2.1.2 (node_modules/watchpack/node_modules/fsevents/node_modules/safer-buffer): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/safer-buffer' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.safer-buffer.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sax@1.2.4 (node_modules/watchpack/node_modules/fsevents/node_modules/sax): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/sax' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.sax.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: semver@5.7.1 (node_modules/watchpack/node_modules/fsevents/node_modules/semver): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/semver' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.semver.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: set-blocking@2.0.0 (node_modules/watchpack/node_modules/fsevents/node_modules/set-blocking): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/set-blocking' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.set-blocking.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: signal-exit@3.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/signal-exit): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/signal-exit' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.signal-exit.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: strip-json-comments@2.0.1 (node_modules/watchpack/node_modules/fsevents/node_modules/strip-json-comments): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/strip-json-comments' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.strip-json-comments.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: util-deprecate@1.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/util-deprecate): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/util-deprecate' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.util-deprecate.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: wrappy@1.0.2 (node_modules/watchpack/node_modules/fsevents/node_modules/wrappy): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/wrappy' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.wrappy.DELETE' npm WARN optional SKIPPING OPTIONAL DEPENDENCY: yallist@3.1.1 (node_modules/watchpack/node_modules/fsevents/node_modules/yallist): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/yallist' -> '/tmpfs/src/git/autosynth/working_repo/node_modules/watchpack/node_modules/fsevents/node_modules/.yallist.DELETE' added 1079 packages from 942 contributors and audited 7011 packages in 27.455s found 0 vulnerabilities npm WARN npm npm does not support Node.js v12.16.1 npm WARN npm You should probably upgrade to a newer version of node as we npm WARN npm can't make any promises that npm will work with this version. npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11. npm WARN npm You can find the latest version at https://nodejs.org/ > @google-cloud/datastore@5.1.0 fix /tmpfs/src/git/autosynth/working_repo > gts fix && eslint '**/*.js' --fix /tmpfs/src/git/autosynth/working_repo/samples/concepts.js 24:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/error.js 22:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/quickstart.js 19:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.add.js 25:31 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.delete.js 26:31 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.js 25:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.list.js 23:29 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/tasks.markdone.js 26:31 error "@google-cloud/datastore" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/test/quickstart.test.js 17:26 error "chai" is not found node/no-missing-require /tmpfs/src/git/autosynth/working_repo/samples/test/tasks.test.js 17:29 error "@google-cloud/datastore" is not found node/no-missing-require 18:26 error "chai" is not found node/no-missing-require ✖ 11 problems (11 errors, 0 warnings) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @google-cloud/datastore@5.1.0 fix: `gts fix && eslint '**/*.js' --fix` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @google-cloud/datastore@5.1.0 fix script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/kbuilder/.npm/_logs/2020-03-22T11_23_35_475Z-debug.log installing semver@^5.5.0 installing tmp@0.0.33 installing uglify-js@^3.3.25 installing espree@^3.5.4 installing escodegen@^1.9.1 2020-03-22 04:23:41,161 synthtool > Wrote metadata to synth.metadata. ```
--- handwritten/nodejs-datastore/.jsdoc.js | 2 +- .../src/v1/datastore_client.ts | 12 ++++++-- handwritten/nodejs-datastore/src/v1/index.ts | 2 +- handwritten/nodejs-datastore/synth.metadata | 30 ++++++++++++++++++- .../system-test/fixtures/sample/src/index.js | 2 +- .../system-test/fixtures/sample/src/index.ts | 2 +- .../nodejs-datastore/system-test/install.ts | 2 +- .../test/gapic-datastore-v1.ts | 2 +- .../nodejs-datastore/webpack.config.js | 2 +- 9 files changed, 45 insertions(+), 11 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index a99d037fc96..499da83d435 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index a1fd13f1e7e..5d2cda26223 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -43,7 +43,12 @@ const version = require('../../../package.json').version; * @memberof v1 */ export class DatastoreClient { - private _descriptors: Descriptors = {page: {}, stream: {}, longrunning: {}}; + private _descriptors: Descriptors = { + page: {}, + stream: {}, + longrunning: {}, + batching: {}, + }; private _innerApiCalls: {[name: string]: Function}; private _terminated = false; private _opts: ClientOptions; @@ -207,7 +212,8 @@ export class DatastoreClient { if (this._terminated) { return Promise.reject('The client has already been closed.'); } - return stub[methodName].apply(stub, args); + const func = stub[methodName]; + return func.apply(stub, args); }, (err: Error | null | undefined) => () => { throw err; diff --git a/handwritten/nodejs-datastore/src/v1/index.ts b/handwritten/nodejs-datastore/src/v1/index.ts index 1bd8a7ac542..2641e1741b0 100644 --- a/handwritten/nodejs-datastore/src/v1/index.ts +++ b/handwritten/nodejs-datastore/src/v1/index.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 1abc2db4146..ed96b976501 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,3 +1,31 @@ { - "updateTime": "2020-03-06T20:03:38.307900Z" + "updateTime": "2020-03-22T11:23:41.160781Z", + "sources": [ + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "0be7105dc52590fa9a24e784052298ae37ce53aa", + "internalRef": "302154871" + } + }, + { + "git": { + "name": "synthtool", + "remote": "https://github.com/googleapis/synthtool.git", + "sha": "7e98e1609c91082f4eeb63b530c6468aefd18cfd" + } + } + ], + "destinations": [ + { + "client": { + "source": "googleapis", + "apiName": "datastore", + "apiVersion": "v1", + "language": "typescript", + "generator": "gapic-generator-typescript" + } + } + ] } \ No newline at end of file diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index a6e882c8b64..7808e112634 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 4d0f151cebb..9ffec79e9ce 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index c9aa74ec221..c4d80e9c0c8 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts b/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts index 367d902bbba..b555e138eb7 100644 --- a/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts +++ b/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/webpack.config.js b/handwritten/nodejs-datastore/webpack.config.js index 130a31afa9e..1729722ead6 100644 --- a/handwritten/nodejs-datastore/webpack.config.js +++ b/handwritten/nodejs-datastore/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC +// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 6c43393f4ce507b9996dc8f7c2f89e993f375685 Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Thu, 26 Mar 2020 22:31:29 -0400 Subject: [PATCH 511/820] fix: identify propertyName (#614) * fix: identify propertyName * test: add system-test * fix: unit tests --- handwritten/nodejs-datastore/src/entity.ts | 1 + .../nodejs-datastore/system-test/datastore.ts | 25 +++++++++++++++++++ handwritten/nodejs-datastore/test/entity.ts | 6 +++++ handwritten/nodejs-datastore/test/request.ts | 10 +++++--- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index c1fab099602..d0368ae855b 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -708,6 +708,7 @@ export namespace entity { // tslint:disable-next-line forin for (const property in properties) { const value = properties[property]; + value.propertyName = property; entityObject[property] = entity.decodeValueProto(value, wrapNumbers); } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 26df78473bd..abcd6437afb 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -257,6 +257,31 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should wrap specified properties via IntegerTypeCastOptions.properties', async () => { + const postKey = datastore.key('Scores'); + const largeIntValueAsString = '9223372036854775807'; + const panthers = Datastore.int(largeIntValueAsString); + const broncos = 922337203; + let integerTypeCastFunctionCalled = 0; + await datastore.save({key: postKey, data: {panthers, broncos}}); + const [entity] = await datastore.get(postKey, { + wrapNumbers: { + // tslint:disable-next-line no-any + integerTypeCastFunction: (value: any) => { + integerTypeCastFunctionCalled++; + return value.toString(); + }, + properties: 'panthers', + }, + }); + // verify that value of property 'panthers' was converted via 'integerTypeCastFunction'. + assert.strictEqual(entity.panthers, largeIntValueAsString); + assert.strictEqual(integerTypeCastFunctionCalled, 1); + // verify that value of the property broncos was converted to int by default logic. + assert.strictEqual(entity.broncos, broncos); + await datastore.delete(postKey); + }); + it('should save/get/delete with a key name', async () => { const postKey = datastore.key(['Post', 'post1']); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index f33527fe3f5..47eb94171d6 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -997,6 +997,12 @@ describe('entity', () => { decodeValueProtoStub.restore(); }); + it('should identify entity propertyName', () => { + entity.entityFromEntityProto(entityProto); + const valueProto = decodeValueProtoStub.getCall(0).args[0]; + assert.strictEqual(valueProto.propertyName, 'number'); + }); + it('should pass `wrapNumbers` to decodeValueProto as undefined by default', () => { entity.entityFromEntityProto(entityProto); wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 9536e22be98..8b29f0ceb10 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -377,13 +377,14 @@ describe('Request', () => { it('should emit an error from results decoding', done => { const largeInt = '922337203685477850'; + const propertyName = 'points'; request.request_ = (config: RequestConfig, callback: Function) => { callback(null, { found: [ { entity: { properties: { - points: { + [propertyName]: { integerValue: largeInt, valueType: 'integerValue', }, @@ -401,7 +402,7 @@ describe('Request', () => { .on('error', (err: Error) => { assert.deepStrictEqual( err, - outOfBoundsError({integerValue: largeInt}) + outOfBoundsError({integerValue: largeInt, propertyName}) ); setImmediate(() => { assert.strictEqual(stream.destroyed, true); @@ -990,6 +991,7 @@ describe('Request', () => { it('should emit an error from results decoding', done => { const largeInt = '922337203685477850'; + const propertyName = 'points'; sandbox.stub(entity, 'queryToQueryProto'); request.request_ = (config: RequestConfig, callback: Function) => { @@ -999,7 +1001,7 @@ describe('Request', () => { { entity: { properties: { - points: { + [propertyName]: { integerValue: largeInt, valueType: 'integerValue', }, @@ -1017,7 +1019,7 @@ describe('Request', () => { .on('error', (err: Error) => { assert.deepStrictEqual( err, - outOfBoundsError({integerValue: largeInt}) + outOfBoundsError({integerValue: largeInt, propertyName}) ); setImmediate(() => { assert.strictEqual(stream.destroyed, true); From e266477b0014a1ed3885fdb8523debd54e79e6c4 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 27 Mar 2020 20:16:46 +0100 Subject: [PATCH 512/820] fix(deps): update dependency @grpc/grpc-js to v0.7.4 (#620) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2a81baf8099..3da3cf5f71a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "dependencies": { "@google-cloud/projectify": "^1.0.4", "@google-cloud/promisify": "^1.0.4", - "@grpc/grpc-js": "0.7.1", + "@grpc/grpc-js": "0.7.4", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", From c11e4c7f799f1e06f3314d6a2e6b155be99911e2 Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Mon, 30 Mar 2020 12:28:22 -0400 Subject: [PATCH 513/820] feat: add options param to query#runStream (#611) --- handwritten/nodejs-datastore/src/query.ts | 8 +++--- .../nodejs-datastore/system-test/datastore.ts | 25 +++++++++++++++++++ handwritten/nodejs-datastore/test/query.ts | 25 +++++++++++++++---- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 38147176f76..bbf2b21a9c0 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -20,6 +20,7 @@ import {Datastore} from '.'; import {Entity} from './entity'; import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; +import {RunQueryStreamOptions} from '../src/request'; export type Operator = '=' | '<' | '>' | '<=' | '>=' | 'HAS_ANCESTOR'; @@ -498,11 +499,8 @@ class Query { * this.end(); * }); */ - runStream() { - const query = this; - // tslint:disable-next-line no-any - const args: any = [query].concat([].slice.call(arguments)); - return this.scope!.runQueryStream.apply(this.scope, args); + runStream(options?: RunQueryStreamOptions) { + return this.scope!.runQueryStream(this, options); } } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index abcd6437afb..88195a5b4ee 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -644,6 +644,31 @@ describe('Datastore', () => { }); }); + it('should run a datastore query as a stream via query#runStream', done => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + let resultsReturned = 0; + q.runStream() + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); + }); + + it('should run a transaction query as a stream via query#runStream', done => { + const transaction = datastore.transaction(); + const q = transaction.createQuery('Character').hasAncestor(ancestor); + let resultsReturned = 0; + q.runStream() + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); + }); + it('should not go over a limit with a stream', done => { const limit = 3; const q = datastore diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index f93f346c6ed..dd082c0877e 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -305,20 +305,35 @@ describe('Query', () => { }); describe('runStream', () => { + it('should not require options', () => { + const runQueryReturnValue = {}; + + query.scope.runQueryStream = function() { + assert.strictEqual(this, query.scope); + assert.strictEqual(arguments[0], query); + return runQueryReturnValue; + }; + + const results = query.runStream(); + assert.strictEqual(results, runQueryReturnValue); + }); + it('should call the parent instance runQueryStream correctly', () => { - const args = [0, 1, 2]; + const options = { + consistency: 'string', + gaxOptions: {}, + wrapNumbers: true, + }; const runQueryReturnValue = {}; query.scope.runQueryStream = function() { assert.strictEqual(this, query.scope); assert.strictEqual(arguments[0], query); - assert.strictEqual(arguments[1], args[0]); - assert.strictEqual(arguments[2], args[1]); - assert.strictEqual(arguments[3], args[2]); + assert.strictEqual(arguments[1], options); return runQueryReturnValue; }; - const results = query.runStream.apply(query, args); + const results = query.runStream(options); assert.strictEqual(results, runQueryReturnValue); }); }); From 85cd34d65e9b2bce6f9edc5d51960ef9d3d788ee Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 31 Mar 2020 18:35:42 -0700 Subject: [PATCH 514/820] build: set AUTOSYNTH_MULTIPLE_COMMITS=true for context aware commits (#634) --- handwritten/nodejs-datastore/synth.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 0418a503c27..ed2a18b1b43 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -5,6 +5,9 @@ logging.basicConfig(level=logging.DEBUG) +AUTOSYNTH_MULTIPLE_COMMITS = True + + gapic = gcp.GAPICMicrogenerator() version = 'v1' library = gapic.typescript_library( From 564b7df6b60c02737060df57c1fb1062af8c515c Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 1 Apr 2020 23:35:26 +0200 Subject: [PATCH 515/820] chore(deps): update dependency @types/sinon to v9 (#635) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@types/sinon](https://togithub.com/DefinitelyTyped/DefinitelyTyped) | devDependencies | major | [`^7.5.2` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@types%2fsinon/7.5.2/9.0.0) | --- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 3da3cf5f71a..439304edc66 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -66,7 +66,7 @@ "@types/ncp": "^2.0.3", "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", - "@types/sinon": "^7.5.2", + "@types/sinon": "^9.0.0", "@types/tmp": "0.1.0", "assert-rejects": "^1.0.0", "c8": "^7.1.0", From 3cade7e5ac309dc5fa944161b09b9a0b9c0de34e Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 2 Apr 2020 10:49:09 -0700 Subject: [PATCH 516/820] feat!: drop node8 support (#637) BREAKING CHANGE: The library now supports Node.js v10+. The last version to support Node.js v8 is tagged legacy-8 on NPM. * fix: lint --- handwritten/nodejs-datastore/.eslintignore | 1 + handwritten/nodejs-datastore/.eslintrc.json | 3 + handwritten/nodejs-datastore/.eslintrc.yml | 15 - handwritten/nodejs-datastore/.prettierrc | 8 - handwritten/nodejs-datastore/.prettierrc.js | 17 + handwritten/nodejs-datastore/package.json | 10 +- .../proto/app_engine_key.d.ts | 503 +- .../nodejs-datastore/proto/datastore.d.ts | 18689 +++++++++------- .../nodejs-datastore/proto/entity.d.ts | 9523 ++++---- handwritten/nodejs-datastore/samples/tasks.js | 26 +- .../samples/test/error.test.js | 2 +- .../samples/test/tasks.test.js | 2 +- handwritten/nodejs-datastore/src/entity.ts | 49 +- handwritten/nodejs-datastore/src/index.ts | 2 + handwritten/nodejs-datastore/src/query.ts | 5 +- handwritten/nodejs-datastore/src/request.ts | 18 +- .../nodejs-datastore/src/transaction.ts | 4 +- .../src/v1/datastore_client.ts | 348 +- handwritten/nodejs-datastore/synth.metadata | 9 +- handwritten/nodejs-datastore/synth.py | 4 +- .../nodejs-datastore/system-test/datastore.ts | 13 +- .../system-test/fixtures/sample/src/index.ts | 2 +- handwritten/nodejs-datastore/test/entity.ts | 19 +- .../test/gapic-datastore-v1.ts | 442 - .../test/gapic_datastore_v1.ts | 751 + handwritten/nodejs-datastore/test/index.ts | 119 +- handwritten/nodejs-datastore/test/query.ts | 27 +- handwritten/nodejs-datastore/test/request.ts | 26 +- .../nodejs-datastore/test/transaction.ts | 18 +- 29 files changed, 16549 insertions(+), 14106 deletions(-) create mode 100644 handwritten/nodejs-datastore/.eslintrc.json delete mode 100644 handwritten/nodejs-datastore/.eslintrc.yml delete mode 100644 handwritten/nodejs-datastore/.prettierrc create mode 100644 handwritten/nodejs-datastore/.prettierrc.js delete mode 100644 handwritten/nodejs-datastore/test/gapic-datastore-v1.ts create mode 100644 handwritten/nodejs-datastore/test/gapic_datastore_v1.ts diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index 09b31fe735a..ff9aaf7ebbc 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -3,3 +3,4 @@ src/**/doc/* build/ docs/ protos/ +proto/ diff --git a/handwritten/nodejs-datastore/.eslintrc.json b/handwritten/nodejs-datastore/.eslintrc.json new file mode 100644 index 00000000000..78215349546 --- /dev/null +++ b/handwritten/nodejs-datastore/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "./node_modules/gts" +} diff --git a/handwritten/nodejs-datastore/.eslintrc.yml b/handwritten/nodejs-datastore/.eslintrc.yml deleted file mode 100644 index 73eeec27612..00000000000 --- a/handwritten/nodejs-datastore/.eslintrc.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -extends: - - 'eslint:recommended' - - 'plugin:node/recommended' - - prettier -plugins: - - node - - prettier -rules: - prettier/prettier: error - block-scoped-var: error - eqeqeq: error - no-warning-comments: warn - no-var: error - prefer-const: error diff --git a/handwritten/nodejs-datastore/.prettierrc b/handwritten/nodejs-datastore/.prettierrc deleted file mode 100644 index df6eac07446..00000000000 --- a/handwritten/nodejs-datastore/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ ---- -bracketSpacing: false -printWidth: 80 -semi: true -singleQuote: true -tabWidth: 2 -trailingComma: es5 -useTabs: false diff --git a/handwritten/nodejs-datastore/.prettierrc.js b/handwritten/nodejs-datastore/.prettierrc.js new file mode 100644 index 00000000000..08cba3775be --- /dev/null +++ b/handwritten/nodejs-datastore/.prettierrc.js @@ -0,0 +1,17 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module.exports = { + ...require('gts/.prettierrc.json') +} diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 439304edc66..df3abebb2cc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-auth-library": "^5.10.1", - "google-gax": "^1.14.2", + "google-gax": "^2.0.1", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" @@ -76,7 +76,7 @@ "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.2", "google-proto-files": "^1.1.2", - "gts": "^1.1.2", + "gts": "2.0.0-alpha.9", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", @@ -89,14 +89,14 @@ "power-assert": "^1.6.1", "prettier": "^1.19.1", "proxyquire": "^2.1.3", - "sinon": "^9.0.0", + "sinon": "^9.0.1", "tmp": "0.1.0", "ts-loader": "^6.2.1", - "typescript": "^3.7.0", + "typescript": "^3.8.3", "webpack": "^4.42.0", "webpack-cli": "^3.3.11" }, "engines": { - "node": ">=8.10.0" + "node": ">=10" } } diff --git a/handwritten/nodejs-datastore/proto/app_engine_key.d.ts b/handwritten/nodejs-datastore/proto/app_engine_key.d.ts index 8f56d7f2cb6..ce34cd02b62 100644 --- a/handwritten/nodejs-datastore/proto/app_engine_key.d.ts +++ b/handwritten/nodejs-datastore/proto/app_engine_key.d.ts @@ -1,303 +1,336 @@ -import * as $protobuf from "protobufjs"; +import * as $protobuf from 'protobufjs'; /** Properties of a Reference. */ export interface IReference { + /** Reference app */ + app: string; - /** Reference app */ - app: string; + /** Reference namespace */ + namespace?: string | null; - /** Reference namespace */ - namespace?: (string|null); + /** Reference path */ + path: IPath; - /** Reference path */ - path: IPath; - - /** Reference databaseId */ - databaseId?: (string|null); + /** Reference databaseId */ + databaseId?: string | null; } /** Represents a Reference. */ export class Reference implements IReference { - - /** - * Constructs a new Reference. - * @param [properties] Properties to set - */ - constructor(properties?: IReference); - - /** Reference app. */ - public app: string; - - /** Reference namespace. */ - public namespace: string; - - /** Reference path. */ - public path: IPath; - - /** Reference databaseId. */ - public databaseId: string; - - /** - * Creates a new Reference instance using the specified properties. - * @param [properties] Properties to set - * @returns Reference instance - */ - public static create(properties?: IReference): Reference; - - /** - * Encodes the specified Reference message. Does not implicitly {@link Reference.verify|verify} messages. - * @param message Reference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: IReference, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Reference message, length delimited. Does not implicitly {@link Reference.verify|verify} messages. - * @param message Reference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: IReference, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Reference message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Reference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Reference; - - /** - * Decodes a Reference message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Reference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Reference; - - /** - * Verifies a Reference message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Reference message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Reference - */ - public static fromObject(object: { [k: string]: any }): Reference; - - /** - * Creates a plain object from a Reference message. Also converts values to other types if specified. - * @param message Reference - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: Reference, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Reference to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Constructs a new Reference. + * @param [properties] Properties to set + */ + constructor(properties?: IReference); + + /** Reference app. */ + public app: string; + + /** Reference namespace. */ + public namespace: string; + + /** Reference path. */ + public path: IPath; + + /** Reference databaseId. */ + public databaseId: string; + + /** + * Creates a new Reference instance using the specified properties. + * @param [properties] Properties to set + * @returns Reference instance + */ + public static create(properties?: IReference): Reference; + + /** + * Encodes the specified Reference message. Does not implicitly {@link Reference.verify|verify} messages. + * @param message Reference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: IReference, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Reference message, length delimited. Does not implicitly {@link Reference.verify|verify} messages. + * @param message Reference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: IReference, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Reference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Reference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): Reference; + + /** + * Decodes a Reference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Reference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): Reference; + + /** + * Verifies a Reference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Reference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Reference + */ + public static fromObject(object: {[k: string]: any}): Reference; + + /** + * Creates a plain object from a Reference message. Also converts values to other types if specified. + * @param message Reference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: Reference, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Reference to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } /** Properties of a Path. */ export interface IPath { - - /** Path element */ - element?: (Path.IElement[]|null); + /** Path element */ + element?: Path.IElement[] | null; } /** Represents a Path. */ export class Path implements IPath { + /** + * Constructs a new Path. + * @param [properties] Properties to set + */ + constructor(properties?: IPath); + + /** Path element. */ + public element: Path.IElement[]; + + /** + * Creates a new Path instance using the specified properties. + * @param [properties] Properties to set + * @returns Path instance + */ + public static create(properties?: IPath): Path; + + /** + * Encodes the specified Path message. Does not implicitly {@link Path.verify|verify} messages. + * @param message Path message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: IPath, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Path message, length delimited. Does not implicitly {@link Path.verify|verify} messages. + * @param message Path message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: IPath, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Path message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): Path; + + /** + * Decodes a Path message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: $protobuf.Reader | Uint8Array): Path; + + /** + * Verifies a Path message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Path + */ + public static fromObject(object: {[k: string]: any}): Path; + + /** + * Creates a plain object from a Path message. Also converts values to other types if specified. + * @param message Path + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: Path, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Path to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; +} + +export namespace Path { + /** Properties of an Element. */ + interface IElement { + /** Element type */ + type: string; + /** Element id */ + id?: number | Long | null; + + /** Element name */ + name?: string | null; + } + + /** Represents an Element. */ + class Element implements IElement { /** - * Constructs a new Path. + * Constructs a new Element. * @param [properties] Properties to set */ - constructor(properties?: IPath); + constructor(properties?: Path.IElement); + + /** Element type. */ + public type: string; + + /** Element id. */ + public id: number | Long; - /** Path element. */ - public element: Path.IElement[]; + /** Element name. */ + public name: string; /** - * Creates a new Path instance using the specified properties. + * Creates a new Element instance using the specified properties. * @param [properties] Properties to set - * @returns Path instance + * @returns Element instance */ - public static create(properties?: IPath): Path; + public static create(properties?: Path.IElement): Path.Element; /** - * Encodes the specified Path message. Does not implicitly {@link Path.verify|verify} messages. - * @param message Path message or plain object to encode + * Encodes the specified Element message. Does not implicitly {@link Path.Element.verify|verify} messages. + * @param message Element message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: IPath, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode( + message: Path.IElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; /** - * Encodes the specified Path message, length delimited. Does not implicitly {@link Path.verify|verify} messages. - * @param message Path message or plain object to encode + * Encodes the specified Element message, length delimited. Does not implicitly {@link Path.Element.verify|verify} messages. + * @param message Element message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: IPath, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited( + message: Path.IElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; /** - * Decodes a Path message from the specified reader or buffer. + * Decodes an Element message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Path + * @returns Element * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Path; + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): Path.Element; /** - * Decodes a Path message from the specified reader or buffer, length delimited. + * Decodes an Element message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Path + * @returns Element * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Path; + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): Path.Element; /** - * Verifies a Path message. + * Verifies an Element message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ - public static verify(message: { [k: string]: any }): (string|null); + public static verify(message: {[k: string]: any}): string | null; /** - * Creates a Path message from a plain object. Also converts values to their respective internal types. + * Creates an Element message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Path + * @returns Element */ - public static fromObject(object: { [k: string]: any }): Path; + public static fromObject(object: {[k: string]: any}): Path.Element; /** - * Creates a plain object from a Path message. Also converts values to other types if specified. - * @param message Path + * Creates a plain object from an Element message. Also converts values to other types if specified. + * @param message Element * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: Path, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject( + message: Path.Element, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; /** - * Converts this Path to JSON. + * Converts this Element to JSON. * @returns JSON object */ - public toJSON(): { [k: string]: any }; -} - -export namespace Path { - - /** Properties of an Element. */ - interface IElement { - - /** Element type */ - type: string; - - /** Element id */ - id?: (number|Long|null); - - /** Element name */ - name?: (string|null); - } - - /** Represents an Element. */ - class Element implements IElement { - - /** - * Constructs a new Element. - * @param [properties] Properties to set - */ - constructor(properties?: Path.IElement); - - /** Element type. */ - public type: string; - - /** Element id. */ - public id: (number|Long); - - /** Element name. */ - public name: string; - - /** - * Creates a new Element instance using the specified properties. - * @param [properties] Properties to set - * @returns Element instance - */ - public static create(properties?: Path.IElement): Path.Element; - - /** - * Encodes the specified Element message. Does not implicitly {@link Path.Element.verify|verify} messages. - * @param message Element message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: Path.IElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Element message, length delimited. Does not implicitly {@link Path.Element.verify|verify} messages. - * @param message Element message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: Path.IElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Element message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Element - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): Path.Element; - - /** - * Decodes an Element message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Element - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): Path.Element; - - /** - * Verifies an Element message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Element message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Element - */ - public static fromObject(object: { [k: string]: any }): Path.Element; - - /** - * Creates a plain object from an Element message. Also converts values to other types if specified. - * @param message Element - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: Path.Element, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Element to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + public toJSON(): {[k: string]: any}; + } } diff --git a/handwritten/nodejs-datastore/proto/datastore.d.ts b/handwritten/nodejs-datastore/proto/datastore.d.ts index 5dae888b41b..86235bfde8e 100644 --- a/handwritten/nodejs-datastore/proto/datastore.d.ts +++ b/handwritten/nodejs-datastore/proto/datastore.d.ts @@ -1,8866 +1,10241 @@ -import * as $protobuf from "protobufjs"; -import * as Long from "long"; +import * as $protobuf from 'protobufjs'; +import * as Long from 'long'; /** Namespace google. */ export namespace google { - - /** Namespace datastore. */ - namespace datastore { - - /** Namespace v1. */ - namespace v1 { - - /** Represents a Datastore */ - class Datastore extends $protobuf.rpc.Service { - - /** - * Constructs a new Datastore service. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - */ - constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); - - /** - * Creates new Datastore service using the specified rpc implementation. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - * @returns RPC service. Useful where requests and/or responses are streamed. - */ - public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; - - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @param callback Node-style callback called with the error, if any, and LookupResponse - */ - public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; - - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @returns Promise - */ - public lookup(request: google.datastore.v1.ILookupRequest): Promise; - - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RunQueryResponse - */ - public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; - - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @returns Promise - */ - public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; - - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse - */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; - - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @returns Promise - */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; - - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @param callback Node-style callback called with the error, if any, and CommitResponse - */ - public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; - - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @returns Promise - */ - public commit(request: google.datastore.v1.ICommitRequest): Promise; - - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RollbackResponse - */ - public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; - - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @returns Promise - */ - public rollback(request: google.datastore.v1.IRollbackRequest): Promise; - - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse - */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; - - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @returns Promise - */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; - - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse - */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; - - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @returns Promise - */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; - } - - namespace Datastore { - - /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. - * @param error Error, if any - * @param [response] LookupResponse - */ - type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. - * @param error Error, if any - * @param [response] RunQueryResponse - */ - type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. - * @param error Error, if any - * @param [response] BeginTransactionResponse - */ - type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. - * @param error Error, if any - * @param [response] CommitResponse - */ - type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. - * @param error Error, if any - * @param [response] RollbackResponse - */ - type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. - * @param error Error, if any - * @param [response] AllocateIdsResponse - */ - type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. - * @param error Error, if any - * @param [response] ReserveIdsResponse - */ - type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; - } - - /** Properties of a LookupRequest. */ - interface ILookupRequest { - - /** LookupRequest projectId */ - projectId?: (string|null); - - /** LookupRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); - - /** LookupRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } - - /** Represents a LookupRequest. */ - class LookupRequest implements ILookupRequest { - - /** - * Constructs a new LookupRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupRequest); - - /** LookupRequest projectId. */ - public projectId: string; - - /** LookupRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); - - /** LookupRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new LookupRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupRequest instance - */ - public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; - - /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a LookupRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; - - /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; - - /** - * Verifies a LookupRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; - - /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. - * @param message LookupRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this LookupRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a LookupResponse. */ - interface ILookupResponse { - - /** LookupResponse found */ - found?: (google.datastore.v1.IEntityResult[]|null); - - /** LookupResponse missing */ - missing?: (google.datastore.v1.IEntityResult[]|null); - - /** LookupResponse deferred */ - deferred?: (google.datastore.v1.IKey[]|null); - } - - /** Represents a LookupResponse. */ - class LookupResponse implements ILookupResponse { - - /** - * Constructs a new LookupResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupResponse); - - /** LookupResponse found. */ - public found: google.datastore.v1.IEntityResult[]; - - /** LookupResponse missing. */ - public missing: google.datastore.v1.IEntityResult[]; - - /** LookupResponse deferred. */ - public deferred: google.datastore.v1.IKey[]; - - /** - * Creates a new LookupResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupResponse instance - */ - public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; - - /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a LookupResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; - - /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; - - /** - * Verifies a LookupResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; - - /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. - * @param message LookupResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this LookupResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a RunQueryRequest. */ - interface IRunQueryRequest { - - /** RunQueryRequest projectId */ - projectId?: (string|null); - - /** RunQueryRequest partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); - - /** RunQueryRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); - - /** RunQueryRequest query */ - query?: (google.datastore.v1.IQuery|null); - - /** RunQueryRequest gqlQuery */ - gqlQuery?: (google.datastore.v1.IGqlQuery|null); - } - - /** Represents a RunQueryRequest. */ - class RunQueryRequest implements IRunQueryRequest { - - /** - * Constructs a new RunQueryRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryRequest); - - /** RunQueryRequest projectId. */ - public projectId: string; - - /** RunQueryRequest partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); - - /** RunQueryRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); - - /** RunQueryRequest query. */ - public query?: (google.datastore.v1.IQuery|null); - - /** RunQueryRequest gqlQuery. */ - public gqlQuery?: (google.datastore.v1.IGqlQuery|null); - - /** RunQueryRequest queryType. */ - public queryType?: ("query"|"gqlQuery"); - - /** - * Creates a new RunQueryRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryRequest instance - */ - public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; - - /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a RunQueryRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; - - /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; - - /** - * Verifies a RunQueryRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; - - /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. - * @param message RunQueryRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this RunQueryRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a RunQueryResponse. */ - interface IRunQueryResponse { - - /** RunQueryResponse batch */ - batch?: (google.datastore.v1.IQueryResultBatch|null); - - /** RunQueryResponse query */ - query?: (google.datastore.v1.IQuery|null); - } - - /** Represents a RunQueryResponse. */ - class RunQueryResponse implements IRunQueryResponse { - - /** - * Constructs a new RunQueryResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryResponse); - - /** RunQueryResponse batch. */ - public batch?: (google.datastore.v1.IQueryResultBatch|null); - - /** RunQueryResponse query. */ - public query?: (google.datastore.v1.IQuery|null); - - /** - * Creates a new RunQueryResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryResponse instance - */ - public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; - - /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a RunQueryResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; - - /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; - - /** - * Verifies a RunQueryResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; - - /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @param message RunQueryResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this RunQueryResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a BeginTransactionRequest. */ - interface IBeginTransactionRequest { - - /** BeginTransactionRequest projectId */ - projectId?: (string|null); - - /** BeginTransactionRequest transactionOptions */ - transactionOptions?: (google.datastore.v1.ITransactionOptions|null); - } - - /** Represents a BeginTransactionRequest. */ - class BeginTransactionRequest implements IBeginTransactionRequest { - - /** - * Constructs a new BeginTransactionRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionRequest); - - /** BeginTransactionRequest projectId. */ - public projectId: string; - - /** BeginTransactionRequest transactionOptions. */ - public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); - - /** - * Creates a new BeginTransactionRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionRequest instance - */ - public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; - - /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; - - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; - - /** - * Verifies a BeginTransactionRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; - - /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. - * @param message BeginTransactionRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this BeginTransactionRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a BeginTransactionResponse. */ - interface IBeginTransactionResponse { - - /** BeginTransactionResponse transaction */ - transaction?: (Uint8Array|null); - } - - /** Represents a BeginTransactionResponse. */ - class BeginTransactionResponse implements IBeginTransactionResponse { - - /** - * Constructs a new BeginTransactionResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionResponse); - - /** BeginTransactionResponse transaction. */ - public transaction: Uint8Array; - - /** - * Creates a new BeginTransactionResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionResponse instance - */ - public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; - - /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; - - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; - - /** - * Verifies a BeginTransactionResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; - - /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @param message BeginTransactionResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this BeginTransactionResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a RollbackRequest. */ - interface IRollbackRequest { - - /** RollbackRequest projectId */ - projectId?: (string|null); - - /** RollbackRequest transaction */ - transaction?: (Uint8Array|null); - } - - /** Represents a RollbackRequest. */ - class RollbackRequest implements IRollbackRequest { - - /** - * Constructs a new RollbackRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackRequest); - - /** RollbackRequest projectId. */ - public projectId: string; - - /** RollbackRequest transaction. */ - public transaction: Uint8Array; - - /** - * Creates a new RollbackRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackRequest instance - */ - public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; - - /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a RollbackRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; - - /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; - - /** - * Verifies a RollbackRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; - - /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. - * @param message RollbackRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this RollbackRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a RollbackResponse. */ - interface IRollbackResponse { - } - - /** Represents a RollbackResponse. */ - class RollbackResponse implements IRollbackResponse { - - /** - * Constructs a new RollbackResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackResponse); - - /** - * Creates a new RollbackResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackResponse instance - */ - public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; - - /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a RollbackResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; - - /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; - - /** - * Verifies a RollbackResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; - - /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. - * @param message RollbackResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this RollbackResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CommitRequest. */ - interface ICommitRequest { - - /** CommitRequest projectId */ - projectId?: (string|null); - - /** CommitRequest mode */ - mode?: (google.datastore.v1.CommitRequest.Mode|null); - - /** CommitRequest transaction */ - transaction?: (Uint8Array|null); - - /** CommitRequest mutations */ - mutations?: (google.datastore.v1.IMutation[]|null); - } - - /** Represents a CommitRequest. */ - class CommitRequest implements ICommitRequest { - - /** - * Constructs a new CommitRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitRequest); - - /** CommitRequest projectId. */ - public projectId: string; - - /** CommitRequest mode. */ - public mode: google.datastore.v1.CommitRequest.Mode; - - /** CommitRequest transaction. */ - public transaction: Uint8Array; - - /** CommitRequest mutations. */ - public mutations: google.datastore.v1.IMutation[]; - - /** CommitRequest transactionSelector. */ - public transactionSelector?: "transaction"; - - /** - * Creates a new CommitRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitRequest instance - */ - public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; - - /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CommitRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; - - /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; - - /** - * Verifies a CommitRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; - - /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. - * @param message CommitRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CommitRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace CommitRequest { - - /** Mode enum. */ - enum Mode { - MODE_UNSPECIFIED = 0, - TRANSACTIONAL = 1, - NON_TRANSACTIONAL = 2 - } - } - - /** Properties of a CommitResponse. */ - interface ICommitResponse { - - /** CommitResponse mutationResults */ - mutationResults?: (google.datastore.v1.IMutationResult[]|null); - - /** CommitResponse indexUpdates */ - indexUpdates?: (number|null); - } - - /** Represents a CommitResponse. */ - class CommitResponse implements ICommitResponse { - - /** - * Constructs a new CommitResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitResponse); - - /** CommitResponse mutationResults. */ - public mutationResults: google.datastore.v1.IMutationResult[]; - - /** CommitResponse indexUpdates. */ - public indexUpdates: number; - - /** - * Creates a new CommitResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitResponse instance - */ - public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; - - /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CommitResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; - - /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; - - /** - * Verifies a CommitResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; - - /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. - * @param message CommitResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CommitResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an AllocateIdsRequest. */ - interface IAllocateIdsRequest { - - /** AllocateIdsRequest projectId */ - projectId?: (string|null); - - /** AllocateIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } - - /** Represents an AllocateIdsRequest. */ - class AllocateIdsRequest implements IAllocateIdsRequest { - - /** - * Constructs a new AllocateIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsRequest); - - /** AllocateIdsRequest projectId. */ - public projectId: string; - - /** AllocateIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new AllocateIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsRequest instance - */ - public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; - - /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; - - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; - - /** - * Verifies an AllocateIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; - - /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. - * @param message AllocateIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this AllocateIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an AllocateIdsResponse. */ - interface IAllocateIdsResponse { - - /** AllocateIdsResponse keys */ - keys?: (google.datastore.v1.IKey[]|null); - } - - /** Represents an AllocateIdsResponse. */ - class AllocateIdsResponse implements IAllocateIdsResponse { - - /** - * Constructs a new AllocateIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsResponse); - - /** AllocateIdsResponse keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new AllocateIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsResponse instance - */ - public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; - - /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; - - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; - - /** - * Verifies an AllocateIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; - - /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @param message AllocateIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this AllocateIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReserveIdsRequest. */ - interface IReserveIdsRequest { - - /** ReserveIdsRequest projectId */ - projectId?: (string|null); - - /** ReserveIdsRequest databaseId */ - databaseId?: (string|null); - - /** ReserveIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } - - /** Represents a ReserveIdsRequest. */ - class ReserveIdsRequest implements IReserveIdsRequest { - - /** - * Constructs a new ReserveIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsRequest); - - /** ReserveIdsRequest projectId. */ - public projectId: string; - - /** ReserveIdsRequest databaseId. */ - public databaseId: string; - - /** ReserveIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new ReserveIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsRequest instance - */ - public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; - - /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; - - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; - - /** - * Verifies a ReserveIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; - - /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. - * @param message ReserveIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReserveIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReserveIdsResponse. */ - interface IReserveIdsResponse { - } - - /** Represents a ReserveIdsResponse. */ - class ReserveIdsResponse implements IReserveIdsResponse { - - /** - * Constructs a new ReserveIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsResponse); - - /** - * Creates a new ReserveIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsResponse instance - */ - public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; - - /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; - - /** - * Verifies a ReserveIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; - - /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. - * @param message ReserveIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReserveIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Mutation. */ - interface IMutation { - - /** Mutation insert */ - insert?: (google.datastore.v1.IEntity|null); - - /** Mutation update */ - update?: (google.datastore.v1.IEntity|null); - - /** Mutation upsert */ - upsert?: (google.datastore.v1.IEntity|null); - - /** Mutation delete */ - "delete"?: (google.datastore.v1.IKey|null); - - /** Mutation baseVersion */ - baseVersion?: (number|Long|null); - } - - /** Represents a Mutation. */ - class Mutation implements IMutation { - - /** - * Constructs a new Mutation. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IMutation); - - /** Mutation insert. */ - public insert?: (google.datastore.v1.IEntity|null); - - /** Mutation update. */ - public update?: (google.datastore.v1.IEntity|null); - - /** Mutation upsert. */ - public upsert?: (google.datastore.v1.IEntity|null); - - /** Mutation delete. */ - public delete?: (google.datastore.v1.IKey|null); - - /** Mutation baseVersion. */ - public baseVersion: (number|Long); - - /** Mutation operation. */ - public operation?: ("insert"|"update"|"upsert"|"delete"); - - /** Mutation conflictDetectionStrategy. */ - public conflictDetectionStrategy?: "baseVersion"; - - /** - * Creates a new Mutation instance using the specified properties. - * @param [properties] Properties to set - * @returns Mutation instance - */ - public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; - - /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Mutation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; - - /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; - - /** - * Verifies a Mutation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Mutation - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; - - /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. - * @param message Mutation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Mutation to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a MutationResult. */ - interface IMutationResult { - - /** MutationResult key */ - key?: (google.datastore.v1.IKey|null); - - /** MutationResult version */ - version?: (number|Long|null); - - /** MutationResult conflictDetected */ - conflictDetected?: (boolean|null); - } - - /** Represents a MutationResult. */ - class MutationResult implements IMutationResult { - - /** - * Constructs a new MutationResult. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IMutationResult); - - /** MutationResult key. */ - public key?: (google.datastore.v1.IKey|null); - - /** MutationResult version. */ - public version: (number|Long); - - /** MutationResult conflictDetected. */ - public conflictDetected: boolean; - - /** - * Creates a new MutationResult instance using the specified properties. - * @param [properties] Properties to set - * @returns MutationResult instance - */ - public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; - - /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MutationResult message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; - - /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; - - /** - * Verifies a MutationResult message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MutationResult - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; - - /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. - * @param message MutationResult - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MutationResult to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReadOptions. */ - interface IReadOptions { - - /** ReadOptions readConsistency */ - readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|null); - - /** ReadOptions transaction */ - transaction?: (Uint8Array|null); - } - - /** Represents a ReadOptions. */ - class ReadOptions implements IReadOptions { - - /** - * Constructs a new ReadOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReadOptions); - - /** ReadOptions readConsistency. */ - public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; - - /** ReadOptions transaction. */ - public transaction: Uint8Array; - - /** ReadOptions consistencyType. */ - public consistencyType?: ("readConsistency"|"transaction"); - - /** - * Creates a new ReadOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOptions instance - */ - public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; - - /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReadOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; - - /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; - - /** - * Verifies a ReadOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOptions - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; - - /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. - * @param message ReadOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReadOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace ReadOptions { - - /** ReadConsistency enum. */ - enum ReadConsistency { - READ_CONSISTENCY_UNSPECIFIED = 0, - STRONG = 1, - EVENTUAL = 2 - } - } - - /** Properties of a TransactionOptions. */ - interface ITransactionOptions { - - /** TransactionOptions readWrite */ - readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); - - /** TransactionOptions readOnly */ - readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); - } - - /** Represents a TransactionOptions. */ - class TransactionOptions implements ITransactionOptions { - - /** - * Constructs a new TransactionOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ITransactionOptions); - - /** TransactionOptions readWrite. */ - public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); - - /** TransactionOptions readOnly. */ - public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); - - /** TransactionOptions mode. */ - public mode?: ("readWrite"|"readOnly"); - - /** - * Creates a new TransactionOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns TransactionOptions instance - */ - public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; - - /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a TransactionOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns TransactionOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; - - /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns TransactionOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; - - /** - * Verifies a TransactionOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns TransactionOptions - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; - - /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. - * @param message TransactionOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this TransactionOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace TransactionOptions { - - /** Properties of a ReadWrite. */ - interface IReadWrite { - - /** ReadWrite previousTransaction */ - previousTransaction?: (Uint8Array|null); - } - - /** Represents a ReadWrite. */ - class ReadWrite implements IReadWrite { - - /** - * Constructs a new ReadWrite. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); - - /** ReadWrite previousTransaction. */ - public previousTransaction: Uint8Array; - - /** - * Creates a new ReadWrite instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadWrite instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Verifies a ReadWrite message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadWrite - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @param message ReadWrite - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReadWrite to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReadOnly. */ - interface IReadOnly { - } - - /** Represents a ReadOnly. */ - class ReadOnly implements IReadOnly { - - /** - * Constructs a new ReadOnly. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); - - /** - * Creates a new ReadOnly instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOnly instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Verifies a ReadOnly message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOnly - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @param message ReadOnly - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReadOnly to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } - - /** Properties of a PartitionId. */ - interface IPartitionId { - - /** PartitionId projectId */ - projectId?: (string|null); - - /** PartitionId namespaceId */ - namespaceId?: (string|null); - } - - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { - - /** - * Constructs a new PartitionId. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPartitionId); - - /** PartitionId projectId. */ - public projectId: string; - - /** PartitionId namespaceId. */ - public namespaceId: string; - - /** - * Creates a new PartitionId instance using the specified properties. - * @param [properties] Properties to set - * @returns PartitionId instance - */ - public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; - - /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PartitionId message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; - - /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; - - /** - * Verifies a PartitionId message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PartitionId - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; - - /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PartitionId to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Key. */ - interface IKey { - - /** Key partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); - - /** Key path */ - path?: (google.datastore.v1.Key.IPathElement[]|null); - } - - /** Represents a Key. */ - class Key implements IKey { - - /** - * Constructs a new Key. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKey); - - /** Key partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); - - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; - - /** - * Creates a new Key instance using the specified properties. - * @param [properties] Properties to set - * @returns Key instance - */ - public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; - - /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Key message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; - - /** - * Decodes a Key message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; - - /** - * Verifies a Key message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Key - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; - - /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Key to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace Key { - - /** Properties of a PathElement. */ - interface IPathElement { - - /** PathElement kind */ - kind?: (string|null); - - /** PathElement id */ - id?: (number|Long|null); - - /** PathElement name */ - name?: (string|null); - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id: (number|Long); - - /** PathElement name. */ - public name: string; - - /** PathElement idType. */ - public idType?: ("id"|"name"); - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } - - /** Properties of an ArrayValue. */ - interface IArrayValue { - - /** ArrayValue values */ - values?: (google.datastore.v1.IValue[]|null); - } - - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { - - /** - * Constructs a new ArrayValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IArrayValue); - - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; - - /** - * Creates a new ArrayValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ArrayValue instance - */ - public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; - - /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ArrayValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; - - /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; - - /** - * Verifies an ArrayValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ArrayValue - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; - - /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ArrayValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Value. */ - interface IValue { - - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); - - /** Value booleanValue */ - booleanValue?: (boolean|null); - - /** Value integerValue */ - integerValue?: (number|Long|null); - - /** Value doubleValue */ - doubleValue?: (number|null); - - /** Value timestampValue */ - timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue */ - keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue */ - stringValue?: (string|null); - - /** Value blobValue */ - blobValue?: (Uint8Array|null); - - /** Value geoPointValue */ - geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue */ - entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue */ - arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning */ - meaning?: (number|null); - - /** Value excludeFromIndexes */ - excludeFromIndexes?: (boolean|null); - } - - /** Represents a Value. */ - class Value implements IValue { - - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value booleanValue. */ - public booleanValue: boolean; - - /** Value integerValue. */ - public integerValue: (number|Long); - - /** Value doubleValue. */ - public doubleValue: number; - - /** Value timestampValue. */ - public timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue. */ - public keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue. */ - public stringValue: string; - - /** Value blobValue. */ - public blobValue: Uint8Array; - - /** Value geoPointValue. */ - public geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue. */ - public entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue. */ - public arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning. */ - public meaning: number; - - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; - - /** Value valueType. */ - public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an Entity. */ - interface IEntity { - - /** Entity key */ - key?: (google.datastore.v1.IKey|null); - - /** Entity properties */ - properties?: ({ [k: string]: google.datastore.v1.IValue }|null); - } - - /** Represents an Entity. */ - class Entity implements IEntity { - - /** - * Constructs a new Entity. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntity); - - /** Entity key. */ - public key?: (google.datastore.v1.IKey|null); - - /** Entity properties. */ - public properties: { [k: string]: google.datastore.v1.IValue }; - - /** - * Creates a new Entity instance using the specified properties. - * @param [properties] Properties to set - * @returns Entity instance - */ - public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; - - /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Entity message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; - - /** - * Decodes an Entity message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; - - /** - * Verifies an Entity message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Entity - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; - - /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Entity to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an EntityResult. */ - interface IEntityResult { - - /** EntityResult entity */ - entity?: (google.datastore.v1.IEntity|null); - - /** EntityResult version */ - version?: (number|Long|null); - - /** EntityResult cursor */ - cursor?: (Uint8Array|null); - } - - /** Represents an EntityResult. */ - class EntityResult implements IEntityResult { - - /** - * Constructs a new EntityResult. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntityResult); - - /** EntityResult entity. */ - public entity?: (google.datastore.v1.IEntity|null); - - /** EntityResult version. */ - public version: (number|Long); - - /** EntityResult cursor. */ - public cursor: Uint8Array; - - /** - * Creates a new EntityResult instance using the specified properties. - * @param [properties] Properties to set - * @returns EntityResult instance - */ - public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; - - /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EntityResult message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EntityResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; - - /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EntityResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; - - /** - * Verifies an EntityResult message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EntityResult - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; - - /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. - * @param message EntityResult - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EntityResult to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace EntityResult { - - /** ResultType enum. */ - enum ResultType { - RESULT_TYPE_UNSPECIFIED = 0, - FULL = 1, - PROJECTION = 2, - KEY_ONLY = 3 - } - } - - /** Properties of a Query. */ - interface IQuery { - - /** Query projection */ - projection?: (google.datastore.v1.IProjection[]|null); - - /** Query kind */ - kind?: (google.datastore.v1.IKindExpression[]|null); - - /** Query filter */ - filter?: (google.datastore.v1.IFilter|null); - - /** Query order */ - order?: (google.datastore.v1.IPropertyOrder[]|null); - - /** Query distinctOn */ - distinctOn?: (google.datastore.v1.IPropertyReference[]|null); - - /** Query startCursor */ - startCursor?: (Uint8Array|null); - - /** Query endCursor */ - endCursor?: (Uint8Array|null); - - /** Query offset */ - offset?: (number|null); - - /** Query limit */ - limit?: (google.protobuf.IInt32Value|null); - } - - /** Represents a Query. */ - class Query implements IQuery { - - /** - * Constructs a new Query. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IQuery); - - /** Query projection. */ - public projection: google.datastore.v1.IProjection[]; - - /** Query kind. */ - public kind: google.datastore.v1.IKindExpression[]; - - /** Query filter. */ - public filter?: (google.datastore.v1.IFilter|null); - - /** Query order. */ - public order: google.datastore.v1.IPropertyOrder[]; - - /** Query distinctOn. */ - public distinctOn: google.datastore.v1.IPropertyReference[]; - - /** Query startCursor. */ - public startCursor: Uint8Array; - - /** Query endCursor. */ - public endCursor: Uint8Array; - - /** Query offset. */ - public offset: number; - - /** Query limit. */ - public limit?: (google.protobuf.IInt32Value|null); - - /** - * Creates a new Query instance using the specified properties. - * @param [properties] Properties to set - * @returns Query instance - */ - public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; - - /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Query message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Query - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; - - /** - * Decodes a Query message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Query - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; - - /** - * Verifies a Query message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Query - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; - - /** - * Creates a plain object from a Query message. Also converts values to other types if specified. - * @param message Query - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Query to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a KindExpression. */ - interface IKindExpression { - - /** KindExpression name */ - name?: (string|null); - } - - /** Represents a KindExpression. */ - class KindExpression implements IKindExpression { - - /** - * Constructs a new KindExpression. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKindExpression); - - /** KindExpression name. */ - public name: string; - - /** - * Creates a new KindExpression instance using the specified properties. - * @param [properties] Properties to set - * @returns KindExpression instance - */ - public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; - - /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a KindExpression message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns KindExpression - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; - - /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns KindExpression - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; - - /** - * Verifies a KindExpression message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns KindExpression - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; - - /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. - * @param message KindExpression - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this KindExpression to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a PropertyReference. */ - interface IPropertyReference { - - /** PropertyReference name */ - name?: (string|null); - } - - /** Represents a PropertyReference. */ - class PropertyReference implements IPropertyReference { - - /** - * Constructs a new PropertyReference. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyReference); - - /** PropertyReference name. */ - public name: string; - - /** - * Creates a new PropertyReference instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyReference instance - */ - public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; - - /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PropertyReference message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyReference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; - - /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyReference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; - - /** - * Verifies a PropertyReference message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyReference - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; - - /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. - * @param message PropertyReference - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PropertyReference to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Projection. */ - interface IProjection { - - /** Projection property */ - property?: (google.datastore.v1.IPropertyReference|null); - } - - /** Represents a Projection. */ - class Projection implements IProjection { - - /** - * Constructs a new Projection. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IProjection); - - /** Projection property. */ - public property?: (google.datastore.v1.IPropertyReference|null); - - /** - * Creates a new Projection instance using the specified properties. - * @param [properties] Properties to set - * @returns Projection instance - */ - public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; - - /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Projection message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Projection - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; - - /** - * Decodes a Projection message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Projection - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; - - /** - * Verifies a Projection message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Projection - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; - - /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. - * @param message Projection - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Projection to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a PropertyOrder. */ - interface IPropertyOrder { - - /** PropertyOrder property */ - property?: (google.datastore.v1.IPropertyReference|null); - - /** PropertyOrder direction */ - direction?: (google.datastore.v1.PropertyOrder.Direction|null); - } - - /** Represents a PropertyOrder. */ - class PropertyOrder implements IPropertyOrder { - - /** - * Constructs a new PropertyOrder. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyOrder); - - /** PropertyOrder property. */ - public property?: (google.datastore.v1.IPropertyReference|null); - - /** PropertyOrder direction. */ - public direction: google.datastore.v1.PropertyOrder.Direction; - - /** - * Creates a new PropertyOrder instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyOrder instance - */ - public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; - - /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PropertyOrder message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyOrder - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; - - /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyOrder - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; - - /** - * Verifies a PropertyOrder message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyOrder - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; - - /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. - * @param message PropertyOrder - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PropertyOrder to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace PropertyOrder { - - /** Direction enum. */ - enum Direction { - DIRECTION_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2 - } - } - - /** Properties of a Filter. */ - interface IFilter { - - /** Filter compositeFilter */ - compositeFilter?: (google.datastore.v1.ICompositeFilter|null); - - /** Filter propertyFilter */ - propertyFilter?: (google.datastore.v1.IPropertyFilter|null); - } - - /** Represents a Filter. */ - class Filter implements IFilter { - - /** - * Constructs a new Filter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IFilter); - - /** Filter compositeFilter. */ - public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); - - /** Filter propertyFilter. */ - public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); - - /** Filter filterType. */ - public filterType?: ("compositeFilter"|"propertyFilter"); - - /** - * Creates a new Filter instance using the specified properties. - * @param [properties] Properties to set - * @returns Filter instance - */ - public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; - - /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Filter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; - - /** - * Decodes a Filter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; - - /** - * Verifies a Filter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Filter - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; - - /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. - * @param message Filter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Filter to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CompositeFilter. */ - interface ICompositeFilter { - - /** CompositeFilter op */ - op?: (google.datastore.v1.CompositeFilter.Operator|null); - - /** CompositeFilter filters */ - filters?: (google.datastore.v1.IFilter[]|null); - } - - /** Represents a CompositeFilter. */ - class CompositeFilter implements ICompositeFilter { - - /** - * Constructs a new CompositeFilter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICompositeFilter); - - /** CompositeFilter op. */ - public op: google.datastore.v1.CompositeFilter.Operator; - - /** CompositeFilter filters. */ - public filters: google.datastore.v1.IFilter[]; - - /** - * Creates a new CompositeFilter instance using the specified properties. - * @param [properties] Properties to set - * @returns CompositeFilter instance - */ - public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; - - /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CompositeFilter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompositeFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; - - /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompositeFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; - - /** - * Verifies a CompositeFilter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompositeFilter - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; - - /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. - * @param message CompositeFilter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CompositeFilter to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace CompositeFilter { - - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - AND = 1 - } - } - - /** Properties of a PropertyFilter. */ - interface IPropertyFilter { - - /** PropertyFilter property */ - property?: (google.datastore.v1.IPropertyReference|null); - - /** PropertyFilter op */ - op?: (google.datastore.v1.PropertyFilter.Operator|null); - - /** PropertyFilter value */ - value?: (google.datastore.v1.IValue|null); - } - - /** Represents a PropertyFilter. */ - class PropertyFilter implements IPropertyFilter { - - /** - * Constructs a new PropertyFilter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyFilter); - - /** PropertyFilter property. */ - public property?: (google.datastore.v1.IPropertyReference|null); - - /** PropertyFilter op. */ - public op: google.datastore.v1.PropertyFilter.Operator; - - /** PropertyFilter value. */ - public value?: (google.datastore.v1.IValue|null); - - /** - * Creates a new PropertyFilter instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyFilter instance - */ - public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; - - /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PropertyFilter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; - - /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; - - /** - * Verifies a PropertyFilter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyFilter - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; - - /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. - * @param message PropertyFilter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PropertyFilter to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace PropertyFilter { - - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - LESS_THAN = 1, - LESS_THAN_OR_EQUAL = 2, - GREATER_THAN = 3, - GREATER_THAN_OR_EQUAL = 4, - EQUAL = 5, - HAS_ANCESTOR = 11 - } - } - - /** Properties of a GqlQuery. */ - interface IGqlQuery { - - /** GqlQuery queryString */ - queryString?: (string|null); - - /** GqlQuery allowLiterals */ - allowLiterals?: (boolean|null); - - /** GqlQuery namedBindings */ - namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); - - /** GqlQuery positionalBindings */ - positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); - } - - /** Represents a GqlQuery. */ - class GqlQuery implements IGqlQuery { - - /** - * Constructs a new GqlQuery. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IGqlQuery); - - /** GqlQuery queryString. */ - public queryString: string; - - /** GqlQuery allowLiterals. */ - public allowLiterals: boolean; - - /** GqlQuery namedBindings. */ - public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; - - /** GqlQuery positionalBindings. */ - public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; - - /** - * Creates a new GqlQuery instance using the specified properties. - * @param [properties] Properties to set - * @returns GqlQuery instance - */ - public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; - - /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GqlQuery message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GqlQuery - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; - - /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GqlQuery - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; - - /** - * Verifies a GqlQuery message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GqlQuery - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; - - /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. - * @param message GqlQuery - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GqlQuery to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a GqlQueryParameter. */ - interface IGqlQueryParameter { - - /** GqlQueryParameter value */ - value?: (google.datastore.v1.IValue|null); - - /** GqlQueryParameter cursor */ - cursor?: (Uint8Array|null); - } - - /** Represents a GqlQueryParameter. */ - class GqlQueryParameter implements IGqlQueryParameter { - - /** - * Constructs a new GqlQueryParameter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IGqlQueryParameter); - - /** GqlQueryParameter value. */ - public value?: (google.datastore.v1.IValue|null); - - /** GqlQueryParameter cursor. */ - public cursor: Uint8Array; - - /** GqlQueryParameter parameterType. */ - public parameterType?: ("value"|"cursor"); - - /** - * Creates a new GqlQueryParameter instance using the specified properties. - * @param [properties] Properties to set - * @returns GqlQueryParameter instance - */ - public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; - - /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GqlQueryParameter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; - - /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GqlQueryParameter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; - - /** - * Verifies a GqlQueryParameter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GqlQueryParameter - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; - - /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. - * @param message GqlQueryParameter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GqlQueryParameter to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a QueryResultBatch. */ - interface IQueryResultBatch { - - /** QueryResultBatch skippedResults */ - skippedResults?: (number|null); - - /** QueryResultBatch skippedCursor */ - skippedCursor?: (Uint8Array|null); - - /** QueryResultBatch entityResultType */ - entityResultType?: (google.datastore.v1.EntityResult.ResultType|null); - - /** QueryResultBatch entityResults */ - entityResults?: (google.datastore.v1.IEntityResult[]|null); - - /** QueryResultBatch endCursor */ - endCursor?: (Uint8Array|null); - - /** QueryResultBatch moreResults */ - moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|null); - - /** QueryResultBatch snapshotVersion */ - snapshotVersion?: (number|Long|null); - } - - /** Represents a QueryResultBatch. */ - class QueryResultBatch implements IQueryResultBatch { - - /** - * Constructs a new QueryResultBatch. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IQueryResultBatch); - - /** QueryResultBatch skippedResults. */ - public skippedResults: number; - - /** QueryResultBatch skippedCursor. */ - public skippedCursor: Uint8Array; - - /** QueryResultBatch entityResultType. */ - public entityResultType: google.datastore.v1.EntityResult.ResultType; - - /** QueryResultBatch entityResults. */ - public entityResults: google.datastore.v1.IEntityResult[]; - - /** QueryResultBatch endCursor. */ - public endCursor: Uint8Array; - - /** QueryResultBatch moreResults. */ - public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; - - /** QueryResultBatch snapshotVersion. */ - public snapshotVersion: (number|Long); - - /** - * Creates a new QueryResultBatch instance using the specified properties. - * @param [properties] Properties to set - * @returns QueryResultBatch instance - */ - public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; - - /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a QueryResultBatch message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns QueryResultBatch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; - - /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns QueryResultBatch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; - - /** - * Verifies a QueryResultBatch message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns QueryResultBatch - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; - - /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. - * @param message QueryResultBatch - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this QueryResultBatch to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace QueryResultBatch { - - /** MoreResultsType enum. */ - enum MoreResultsType { - MORE_RESULTS_TYPE_UNSPECIFIED = 0, - NOT_FINISHED = 1, - MORE_RESULTS_AFTER_LIMIT = 2, - MORE_RESULTS_AFTER_CURSOR = 4, - NO_MORE_RESULTS = 3 - } - } + /** Namespace datastore. */ + namespace datastore { + /** Namespace v1. */ + namespace v1 { + /** Represents a Datastore */ + class Datastore extends $protobuf.rpc.Service { + /** + * Constructs a new Datastore service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor( + rpcImpl: $protobuf.RPCImpl, + requestDelimited?: boolean, + responseDelimited?: boolean + ); + + /** + * Creates new Datastore service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create( + rpcImpl: $protobuf.RPCImpl, + requestDelimited?: boolean, + responseDelimited?: boolean + ): Datastore; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @param callback Node-style callback called with the error, if any, and LookupResponse + */ + public lookup( + request: google.datastore.v1.ILookupRequest, + callback: google.datastore.v1.Datastore.LookupCallback + ): void; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @returns Promise + */ + public lookup( + request: google.datastore.v1.ILookupRequest + ): Promise; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunQueryResponse + */ + public runQuery( + request: google.datastore.v1.IRunQueryRequest, + callback: google.datastore.v1.Datastore.RunQueryCallback + ): void; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @returns Promise + */ + public runQuery( + request: google.datastore.v1.IRunQueryRequest + ): Promise; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse + */ + public beginTransaction( + request: google.datastore.v1.IBeginTransactionRequest, + callback: google.datastore.v1.Datastore.BeginTransactionCallback + ): void; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @returns Promise + */ + public beginTransaction( + request: google.datastore.v1.IBeginTransactionRequest + ): Promise; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CommitResponse + */ + public commit( + request: google.datastore.v1.ICommitRequest, + callback: google.datastore.v1.Datastore.CommitCallback + ): void; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @returns Promise + */ + public commit( + request: google.datastore.v1.ICommitRequest + ): Promise; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RollbackResponse + */ + public rollback( + request: google.datastore.v1.IRollbackRequest, + callback: google.datastore.v1.Datastore.RollbackCallback + ): void; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @returns Promise + */ + public rollback( + request: google.datastore.v1.IRollbackRequest + ): Promise; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse + */ + public allocateIds( + request: google.datastore.v1.IAllocateIdsRequest, + callback: google.datastore.v1.Datastore.AllocateIdsCallback + ): void; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @returns Promise + */ + public allocateIds( + request: google.datastore.v1.IAllocateIdsRequest + ): Promise; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse + */ + public reserveIds( + request: google.datastore.v1.IReserveIdsRequest, + callback: google.datastore.v1.Datastore.ReserveIdsCallback + ): void; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @returns Promise + */ + public reserveIds( + request: google.datastore.v1.IReserveIdsRequest + ): Promise; + } + + namespace Datastore { + /** + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @param error Error, if any + * @param [response] LookupResponse + */ + type LookupCallback = ( + error: Error | null, + response?: google.datastore.v1.LookupResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @param error Error, if any + * @param [response] RunQueryResponse + */ + type RunQueryCallback = ( + error: Error | null, + response?: google.datastore.v1.RunQueryResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @param error Error, if any + * @param [response] BeginTransactionResponse + */ + type BeginTransactionCallback = ( + error: Error | null, + response?: google.datastore.v1.BeginTransactionResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @param error Error, if any + * @param [response] CommitResponse + */ + type CommitCallback = ( + error: Error | null, + response?: google.datastore.v1.CommitResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @param error Error, if any + * @param [response] RollbackResponse + */ + type RollbackCallback = ( + error: Error | null, + response?: google.datastore.v1.RollbackResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @param error Error, if any + * @param [response] AllocateIdsResponse + */ + type AllocateIdsCallback = ( + error: Error | null, + response?: google.datastore.v1.AllocateIdsResponse + ) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @param error Error, if any + * @param [response] ReserveIdsResponse + */ + type ReserveIdsCallback = ( + error: Error | null, + response?: google.datastore.v1.ReserveIdsResponse + ) => void; + } + + /** Properties of a LookupRequest. */ + interface ILookupRequest { + /** LookupRequest projectId */ + projectId?: string | null; + + /** LookupRequest readOptions */ + readOptions?: google.datastore.v1.IReadOptions | null; + + /** LookupRequest keys */ + keys?: google.datastore.v1.IKey[] | null; + } + + /** Represents a LookupRequest. */ + class LookupRequest implements ILookupRequest { + /** + * Constructs a new LookupRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupRequest); + + /** LookupRequest projectId. */ + public projectId: string; + + /** LookupRequest readOptions. */ + public readOptions?: google.datastore.v1.IReadOptions | null; + + /** LookupRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupRequest instance + */ + public static create( + properties?: google.datastore.v1.ILookupRequest + ): google.datastore.v1.LookupRequest; + + /** + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ILookupRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ILookupRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a LookupRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.LookupRequest; + + /** + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.LookupRequest; + + /** + * Verifies a LookupRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.LookupRequest; + + /** + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @param message LookupRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.LookupRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this LookupRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a LookupResponse. */ + interface ILookupResponse { + /** LookupResponse found */ + found?: google.datastore.v1.IEntityResult[] | null; + + /** LookupResponse missing */ + missing?: google.datastore.v1.IEntityResult[] | null; + + /** LookupResponse deferred */ + deferred?: google.datastore.v1.IKey[] | null; + } + + /** Represents a LookupResponse. */ + class LookupResponse implements ILookupResponse { + /** + * Constructs a new LookupResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupResponse); + + /** LookupResponse found. */ + public found: google.datastore.v1.IEntityResult[]; + + /** LookupResponse missing. */ + public missing: google.datastore.v1.IEntityResult[]; + + /** LookupResponse deferred. */ + public deferred: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupResponse instance + */ + public static create( + properties?: google.datastore.v1.ILookupResponse + ): google.datastore.v1.LookupResponse; + + /** + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ILookupResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ILookupResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a LookupResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.LookupResponse; + + /** + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.LookupResponse; + + /** + * Verifies a LookupResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.LookupResponse; + + /** + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @param message LookupResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.LookupResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this LookupResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a RunQueryRequest. */ + interface IRunQueryRequest { + /** RunQueryRequest projectId */ + projectId?: string | null; + + /** RunQueryRequest partitionId */ + partitionId?: google.datastore.v1.IPartitionId | null; + + /** RunQueryRequest readOptions */ + readOptions?: google.datastore.v1.IReadOptions | null; + + /** RunQueryRequest query */ + query?: google.datastore.v1.IQuery | null; + + /** RunQueryRequest gqlQuery */ + gqlQuery?: google.datastore.v1.IGqlQuery | null; + } + + /** Represents a RunQueryRequest. */ + class RunQueryRequest implements IRunQueryRequest { + /** + * Constructs a new RunQueryRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryRequest); + + /** RunQueryRequest projectId. */ + public projectId: string; + + /** RunQueryRequest partitionId. */ + public partitionId?: google.datastore.v1.IPartitionId | null; + + /** RunQueryRequest readOptions. */ + public readOptions?: google.datastore.v1.IReadOptions | null; + + /** RunQueryRequest query. */ + public query?: google.datastore.v1.IQuery | null; + + /** RunQueryRequest gqlQuery. */ + public gqlQuery?: google.datastore.v1.IGqlQuery | null; + + /** RunQueryRequest queryType. */ + public queryType?: 'query' | 'gqlQuery'; + + /** + * Creates a new RunQueryRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryRequest instance + */ + public static create( + properties?: google.datastore.v1.IRunQueryRequest + ): google.datastore.v1.RunQueryRequest; + + /** + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IRunQueryRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IRunQueryRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.RunQueryRequest; + + /** + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.RunQueryRequest; + + /** + * Verifies a RunQueryRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.RunQueryRequest; + + /** + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @param message RunQueryRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.RunQueryRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this RunQueryRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a RunQueryResponse. */ + interface IRunQueryResponse { + /** RunQueryResponse batch */ + batch?: google.datastore.v1.IQueryResultBatch | null; + + /** RunQueryResponse query */ + query?: google.datastore.v1.IQuery | null; + } + + /** Represents a RunQueryResponse. */ + class RunQueryResponse implements IRunQueryResponse { + /** + * Constructs a new RunQueryResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryResponse); + + /** RunQueryResponse batch. */ + public batch?: google.datastore.v1.IQueryResultBatch | null; + + /** RunQueryResponse query. */ + public query?: google.datastore.v1.IQuery | null; + + /** + * Creates a new RunQueryResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryResponse instance + */ + public static create( + properties?: google.datastore.v1.IRunQueryResponse + ): google.datastore.v1.RunQueryResponse; + + /** + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IRunQueryResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IRunQueryResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.RunQueryResponse; + + /** + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.RunQueryResponse; + + /** + * Verifies a RunQueryResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.RunQueryResponse; + + /** + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @param message RunQueryResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.RunQueryResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this RunQueryResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a BeginTransactionRequest. */ + interface IBeginTransactionRequest { + /** BeginTransactionRequest projectId */ + projectId?: string | null; + + /** BeginTransactionRequest transactionOptions */ + transactionOptions?: google.datastore.v1.ITransactionOptions | null; + } + + /** Represents a BeginTransactionRequest. */ + class BeginTransactionRequest implements IBeginTransactionRequest { + /** + * Constructs a new BeginTransactionRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionRequest); + + /** BeginTransactionRequest projectId. */ + public projectId: string; + + /** BeginTransactionRequest transactionOptions. */ + public transactionOptions?: google.datastore.v1.ITransactionOptions | null; + + /** + * Creates a new BeginTransactionRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionRequest instance + */ + public static create( + properties?: google.datastore.v1.IBeginTransactionRequest + ): google.datastore.v1.BeginTransactionRequest; + + /** + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IBeginTransactionRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IBeginTransactionRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.BeginTransactionRequest; + + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.BeginTransactionRequest; + + /** + * Verifies a BeginTransactionRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.BeginTransactionRequest; + + /** + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @param message BeginTransactionRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.BeginTransactionRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this BeginTransactionRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a BeginTransactionResponse. */ + interface IBeginTransactionResponse { + /** BeginTransactionResponse transaction */ + transaction?: Uint8Array | null; + } + + /** Represents a BeginTransactionResponse. */ + class BeginTransactionResponse implements IBeginTransactionResponse { + /** + * Constructs a new BeginTransactionResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionResponse); + + /** BeginTransactionResponse transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new BeginTransactionResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns BeginTransactionResponse instance + */ + public static create( + properties?: google.datastore.v1.IBeginTransactionResponse + ): google.datastore.v1.BeginTransactionResponse; + + /** + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IBeginTransactionResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IBeginTransactionResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.BeginTransactionResponse; + + /** + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BeginTransactionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.BeginTransactionResponse; + + /** + * Verifies a BeginTransactionResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BeginTransactionResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.BeginTransactionResponse; + + /** + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @param message BeginTransactionResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.BeginTransactionResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this BeginTransactionResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a RollbackRequest. */ + interface IRollbackRequest { + /** RollbackRequest projectId */ + projectId?: string | null; + + /** RollbackRequest transaction */ + transaction?: Uint8Array | null; + } + + /** Represents a RollbackRequest. */ + class RollbackRequest implements IRollbackRequest { + /** + * Constructs a new RollbackRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackRequest); + + /** RollbackRequest projectId. */ + public projectId: string; + + /** RollbackRequest transaction. */ + public transaction: Uint8Array; + + /** + * Creates a new RollbackRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackRequest instance + */ + public static create( + properties?: google.datastore.v1.IRollbackRequest + ): google.datastore.v1.RollbackRequest; + + /** + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IRollbackRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IRollbackRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.RollbackRequest; + + /** + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.RollbackRequest; + + /** + * Verifies a RollbackRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.RollbackRequest; + + /** + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @param message RollbackRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.RollbackRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this RollbackRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a RollbackResponse. */ + interface IRollbackResponse {} + + /** Represents a RollbackResponse. */ + class RollbackResponse implements IRollbackResponse { + /** + * Constructs a new RollbackResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRollbackResponse); + + /** + * Creates a new RollbackResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RollbackResponse instance + */ + public static create( + properties?: google.datastore.v1.IRollbackResponse + ): google.datastore.v1.RollbackResponse; + + /** + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IRollbackResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IRollbackResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.RollbackResponse; + + /** + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.RollbackResponse; + + /** + * Verifies a RollbackResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RollbackResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.RollbackResponse; + + /** + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @param message RollbackResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.RollbackResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this RollbackResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a CommitRequest. */ + interface ICommitRequest { + /** CommitRequest projectId */ + projectId?: string | null; + + /** CommitRequest mode */ + mode?: google.datastore.v1.CommitRequest.Mode | null; + + /** CommitRequest transaction */ + transaction?: Uint8Array | null; + + /** CommitRequest mutations */ + mutations?: google.datastore.v1.IMutation[] | null; + } + + /** Represents a CommitRequest. */ + class CommitRequest implements ICommitRequest { + /** + * Constructs a new CommitRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitRequest); + + /** CommitRequest projectId. */ + public projectId: string; + + /** CommitRequest mode. */ + public mode: google.datastore.v1.CommitRequest.Mode; + + /** CommitRequest transaction. */ + public transaction: Uint8Array; + + /** CommitRequest mutations. */ + public mutations: google.datastore.v1.IMutation[]; + + /** CommitRequest transactionSelector. */ + public transactionSelector?: 'transaction'; + + /** + * Creates a new CommitRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitRequest instance + */ + public static create( + properties?: google.datastore.v1.ICommitRequest + ): google.datastore.v1.CommitRequest; + + /** + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ICommitRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ICommitRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a CommitRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.CommitRequest; + + /** + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.CommitRequest; + + /** + * Verifies a CommitRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.CommitRequest; + + /** + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @param message CommitRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.CommitRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this CommitRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace CommitRequest { + /** Mode enum. */ + enum Mode { + MODE_UNSPECIFIED = 0, + TRANSACTIONAL = 1, + NON_TRANSACTIONAL = 2, } - } - - /** Namespace api. */ - namespace api { - - /** Properties of a Http. */ - interface IHttp { - - /** Http rules */ - rules?: (google.api.IHttpRule[]|null); - - /** Http fullyDecodeReservedExpansion */ - fullyDecodeReservedExpansion?: (boolean|null); + } + + /** Properties of a CommitResponse. */ + interface ICommitResponse { + /** CommitResponse mutationResults */ + mutationResults?: google.datastore.v1.IMutationResult[] | null; + + /** CommitResponse indexUpdates */ + indexUpdates?: number | null; + } + + /** Represents a CommitResponse. */ + class CommitResponse implements ICommitResponse { + /** + * Constructs a new CommitResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICommitResponse); + + /** CommitResponse mutationResults. */ + public mutationResults: google.datastore.v1.IMutationResult[]; + + /** CommitResponse indexUpdates. */ + public indexUpdates: number; + + /** + * Creates a new CommitResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns CommitResponse instance + */ + public static create( + properties?: google.datastore.v1.ICommitResponse + ): google.datastore.v1.CommitResponse; + + /** + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ICommitResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ICommitResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a CommitResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.CommitResponse; + + /** + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.CommitResponse; + + /** + * Verifies a CommitResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommitResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.CommitResponse; + + /** + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @param message CommitResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.CommitResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this CommitResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of an AllocateIdsRequest. */ + interface IAllocateIdsRequest { + /** AllocateIdsRequest projectId */ + projectId?: string | null; + + /** AllocateIdsRequest keys */ + keys?: google.datastore.v1.IKey[] | null; + } + + /** Represents an AllocateIdsRequest. */ + class AllocateIdsRequest implements IAllocateIdsRequest { + /** + * Constructs a new AllocateIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsRequest); + + /** AllocateIdsRequest projectId. */ + public projectId: string; + + /** AllocateIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsRequest instance + */ + public static create( + properties?: google.datastore.v1.IAllocateIdsRequest + ): google.datastore.v1.AllocateIdsRequest; + + /** + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IAllocateIdsRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IAllocateIdsRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.AllocateIdsRequest; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.AllocateIdsRequest; + + /** + * Verifies an AllocateIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.AllocateIdsRequest; + + /** + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @param message AllocateIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.AllocateIdsRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this AllocateIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of an AllocateIdsResponse. */ + interface IAllocateIdsResponse { + /** AllocateIdsResponse keys */ + keys?: google.datastore.v1.IKey[] | null; + } + + /** Represents an AllocateIdsResponse. */ + class AllocateIdsResponse implements IAllocateIdsResponse { + /** + * Constructs a new AllocateIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IAllocateIdsResponse); + + /** AllocateIdsResponse keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new AllocateIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns AllocateIdsResponse instance + */ + public static create( + properties?: google.datastore.v1.IAllocateIdsResponse + ): google.datastore.v1.AllocateIdsResponse; + + /** + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IAllocateIdsResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IAllocateIdsResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.AllocateIdsResponse; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.AllocateIdsResponse; + + /** + * Verifies an AllocateIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AllocateIdsResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.AllocateIdsResponse; + + /** + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @param message AllocateIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.AllocateIdsResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this AllocateIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a ReserveIdsRequest. */ + interface IReserveIdsRequest { + /** ReserveIdsRequest projectId */ + projectId?: string | null; + + /** ReserveIdsRequest databaseId */ + databaseId?: string | null; + + /** ReserveIdsRequest keys */ + keys?: google.datastore.v1.IKey[] | null; + } + + /** Represents a ReserveIdsRequest. */ + class ReserveIdsRequest implements IReserveIdsRequest { + /** + * Constructs a new ReserveIdsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsRequest); + + /** ReserveIdsRequest projectId. */ + public projectId: string; + + /** ReserveIdsRequest databaseId. */ + public databaseId: string; + + /** ReserveIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new ReserveIdsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsRequest instance + */ + public static create( + properties?: google.datastore.v1.IReserveIdsRequest + ): google.datastore.v1.ReserveIdsRequest; + + /** + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IReserveIdsRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IReserveIdsRequest, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.ReserveIdsRequest; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.ReserveIdsRequest; + + /** + * Verifies a ReserveIdsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsRequest + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.ReserveIdsRequest; + + /** + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @param message ReserveIdsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.ReserveIdsRequest, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReserveIdsRequest to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a ReserveIdsResponse. */ + interface IReserveIdsResponse {} + + /** Represents a ReserveIdsResponse. */ + class ReserveIdsResponse implements IReserveIdsResponse { + /** + * Constructs a new ReserveIdsResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReserveIdsResponse); + + /** + * Creates a new ReserveIdsResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ReserveIdsResponse instance + */ + public static create( + properties?: google.datastore.v1.IReserveIdsResponse + ): google.datastore.v1.ReserveIdsResponse; + + /** + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IReserveIdsResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IReserveIdsResponse, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.ReserveIdsResponse; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.ReserveIdsResponse; + + /** + * Verifies a ReserveIdsResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReserveIdsResponse + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.ReserveIdsResponse; + + /** + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @param message ReserveIdsResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.ReserveIdsResponse, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReserveIdsResponse to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Mutation. */ + interface IMutation { + /** Mutation insert */ + insert?: google.datastore.v1.IEntity | null; + + /** Mutation update */ + update?: google.datastore.v1.IEntity | null; + + /** Mutation upsert */ + upsert?: google.datastore.v1.IEntity | null; + + /** Mutation delete */ + delete?: google.datastore.v1.IKey | null; + + /** Mutation baseVersion */ + baseVersion?: number | Long | null; + } + + /** Represents a Mutation. */ + class Mutation implements IMutation { + /** + * Constructs a new Mutation. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutation); + + /** Mutation insert. */ + public insert?: google.datastore.v1.IEntity | null; + + /** Mutation update. */ + public update?: google.datastore.v1.IEntity | null; + + /** Mutation upsert. */ + public upsert?: google.datastore.v1.IEntity | null; + + /** Mutation delete. */ + public delete?: google.datastore.v1.IKey | null; + + /** Mutation baseVersion. */ + public baseVersion: number | Long; + + /** Mutation operation. */ + public operation?: 'insert' | 'update' | 'upsert' | 'delete'; + + /** Mutation conflictDetectionStrategy. */ + public conflictDetectionStrategy?: 'baseVersion'; + + /** + * Creates a new Mutation instance using the specified properties. + * @param [properties] Properties to set + * @returns Mutation instance + */ + public static create( + properties?: google.datastore.v1.IMutation + ): google.datastore.v1.Mutation; + + /** + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IMutation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IMutation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Mutation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Mutation; + + /** + * Decodes a Mutation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Mutation; + + /** + * Verifies a Mutation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Mutation + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Mutation; + + /** + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @param message Mutation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Mutation, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Mutation to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a MutationResult. */ + interface IMutationResult { + /** MutationResult key */ + key?: google.datastore.v1.IKey | null; + + /** MutationResult version */ + version?: number | Long | null; + + /** MutationResult conflictDetected */ + conflictDetected?: boolean | null; + } + + /** Represents a MutationResult. */ + class MutationResult implements IMutationResult { + /** + * Constructs a new MutationResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IMutationResult); + + /** MutationResult key. */ + public key?: google.datastore.v1.IKey | null; + + /** MutationResult version. */ + public version: number | Long; + + /** MutationResult conflictDetected. */ + public conflictDetected: boolean; + + /** + * Creates a new MutationResult instance using the specified properties. + * @param [properties] Properties to set + * @returns MutationResult instance + */ + public static create( + properties?: google.datastore.v1.IMutationResult + ): google.datastore.v1.MutationResult; + + /** + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IMutationResult, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IMutationResult, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MutationResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.MutationResult; + + /** + * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.MutationResult; + + /** + * Verifies a MutationResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutationResult + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.MutationResult; + + /** + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @param message MutationResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.MutationResult, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MutationResult to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a ReadOptions. */ + interface IReadOptions { + /** ReadOptions readConsistency */ + readConsistency?: google.datastore.v1.ReadOptions.ReadConsistency | null; + + /** ReadOptions transaction */ + transaction?: Uint8Array | null; + } + + /** Represents a ReadOptions. */ + class ReadOptions implements IReadOptions { + /** + * Constructs a new ReadOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReadOptions); + + /** ReadOptions readConsistency. */ + public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; + + /** ReadOptions transaction. */ + public transaction: Uint8Array; + + /** ReadOptions consistencyType. */ + public consistencyType?: 'readConsistency' | 'transaction'; + + /** + * Creates a new ReadOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOptions instance + */ + public static create( + properties?: google.datastore.v1.IReadOptions + ): google.datastore.v1.ReadOptions; + + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IReadOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IReadOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.ReadOptions; + + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.ReadOptions; + + /** + * Verifies a ReadOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.ReadOptions; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @param message ReadOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.ReadOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReadOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace ReadOptions { + /** ReadConsistency enum. */ + enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 0, + STRONG = 1, + EVENTUAL = 2, } - - /** Represents a Http. */ - class Http implements IHttp { - - /** - * Constructs a new Http. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttp); - - /** Http rules. */ - public rules: google.api.IHttpRule[]; - - /** Http fullyDecodeReservedExpansion. */ - public fullyDecodeReservedExpansion: boolean; - - /** - * Creates a new Http instance using the specified properties. - * @param [properties] Properties to set - * @returns Http instance - */ - public static create(properties?: google.api.IHttp): google.api.Http; - - /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Http message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; - - /** - * Decodes a Http message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; - - /** - * Verifies a Http message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Http - */ - public static fromObject(object: { [k: string]: any }): google.api.Http; - - /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @param message Http - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Http to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + } + + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { + /** TransactionOptions readWrite */ + readWrite?: google.datastore.v1.TransactionOptions.IReadWrite | null; + + /** TransactionOptions readOnly */ + readOnly?: google.datastore.v1.TransactionOptions.IReadOnly | null; + } + + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { + /** + * Constructs a new TransactionOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ITransactionOptions); + + /** TransactionOptions readWrite. */ + public readWrite?: google.datastore.v1.TransactionOptions.IReadWrite | null; + + /** TransactionOptions readOnly. */ + public readOnly?: google.datastore.v1.TransactionOptions.IReadOnly | null; + + /** TransactionOptions mode. */ + public mode?: 'readWrite' | 'readOnly'; + + /** + * Creates a new TransactionOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns TransactionOptions instance + */ + public static create( + properties?: google.datastore.v1.ITransactionOptions + ): google.datastore.v1.TransactionOptions; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ITransactionOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ITransactionOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.TransactionOptions; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.TransactionOptions; + + /** + * Verifies a TransactionOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TransactionOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.TransactionOptions; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.TransactionOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this TransactionOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace TransactionOptions { + /** Properties of a ReadWrite. */ + interface IReadWrite { + /** ReadWrite previousTransaction */ + previousTransaction?: Uint8Array | null; } - /** Properties of a HttpRule. */ - interface IHttpRule { - - /** HttpRule selector */ - selector?: (string|null); - - /** HttpRule get */ - get?: (string|null); - - /** HttpRule put */ - put?: (string|null); - - /** HttpRule post */ - post?: (string|null); - - /** HttpRule delete */ - "delete"?: (string|null); - - /** HttpRule patch */ - patch?: (string|null); - - /** HttpRule custom */ - custom?: (google.api.ICustomHttpPattern|null); - - /** HttpRule body */ - body?: (string|null); - - /** HttpRule responseBody */ - responseBody?: (string|null); - - /** HttpRule additionalBindings */ - additionalBindings?: (google.api.IHttpRule[]|null); + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor( + properties?: google.datastore.v1.TransactionOptions.IReadWrite + ); + + /** ReadWrite previousTransaction. */ + public previousTransaction: Uint8Array; + + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create( + properties?: google.datastore.v1.TransactionOptions.IReadWrite + ): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.TransactionOptions.IReadWrite, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.TransactionOptions.IReadWrite, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.TransactionOptions.ReadWrite, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } - /** Represents a HttpRule. */ - class HttpRule implements IHttpRule { - - /** - * Constructs a new HttpRule. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttpRule); - - /** HttpRule selector. */ - public selector: string; - - /** HttpRule get. */ - public get: string; - - /** HttpRule put. */ - public put: string; - - /** HttpRule post. */ - public post: string; - - /** HttpRule delete. */ - public delete: string; - - /** HttpRule patch. */ - public patch: string; - - /** HttpRule custom. */ - public custom?: (google.api.ICustomHttpPattern|null); - - /** HttpRule body. */ - public body: string; - - /** HttpRule responseBody. */ - public responseBody: string; - - /** HttpRule additionalBindings. */ - public additionalBindings: google.api.IHttpRule[]; - - /** HttpRule pattern. */ - public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); - - /** - * Creates a new HttpRule instance using the specified properties. - * @param [properties] Properties to set - * @returns HttpRule instance - */ - public static create(properties?: google.api.IHttpRule): google.api.HttpRule; - - /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a HttpRule message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; - - /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; - - /** - * Verifies a HttpRule message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns HttpRule - */ - public static fromObject(object: { [k: string]: any }): google.api.HttpRule; - - /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @param message HttpRule - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this HttpRule to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** Properties of a ReadOnly. */ + interface IReadOnly {} + + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { + /** + * Constructs a new ReadOnly. + * @param [properties] Properties to set + */ + constructor( + properties?: google.datastore.v1.TransactionOptions.IReadOnly + ); + + /** + * Creates a new ReadOnly instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOnly instance + */ + public static create( + properties?: google.datastore.v1.TransactionOptions.IReadOnly + ): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.TransactionOptions.IReadOnly, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.TransactionOptions.IReadOnly, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Verifies a ReadOnly message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOnly + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.TransactionOptions.ReadOnly, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReadOnly to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } - - /** Properties of a CustomHttpPattern. */ - interface ICustomHttpPattern { - - /** CustomHttpPattern kind */ - kind?: (string|null); - - /** CustomHttpPattern path */ - path?: (string|null); + } + + /** Properties of a PartitionId. */ + interface IPartitionId { + /** PartitionId projectId */ + projectId?: string | null; + + /** PartitionId namespaceId */ + namespaceId?: string | null; + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create( + properties?: google.datastore.v1.IPartitionId + ): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IPartitionId, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IPartitionId, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.PartitionId, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Key. */ + interface IKey { + /** Key partitionId */ + partitionId?: google.datastore.v1.IPartitionId | null; + + /** Key path */ + path?: google.datastore.v1.Key.IPathElement[] | null; + } + + /** Represents a Key. */ + class Key implements IKey { + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: google.datastore.v1.IPartitionId | null; + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create( + properties?: google.datastore.v1.IKey + ): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IKey, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IKey, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Key, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace Key { + /** Properties of a PathElement. */ + interface IPathElement { + /** PathElement kind */ + kind?: string | null; + + /** PathElement id */ + id?: number | Long | null; + + /** PathElement name */ + name?: string | null; } - /** Represents a CustomHttpPattern. */ - class CustomHttpPattern implements ICustomHttpPattern { - - /** - * Constructs a new CustomHttpPattern. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.ICustomHttpPattern); - - /** CustomHttpPattern kind. */ - public kind: string; - - /** CustomHttpPattern path. */ - public path: string; - - /** - * Creates a new CustomHttpPattern instance using the specified properties. - * @param [properties] Properties to set - * @returns CustomHttpPattern instance - */ - public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; - - /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; - - /** - * Verifies a CustomHttpPattern message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CustomHttpPattern - */ - public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; - - /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @param message CustomHttpPattern - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CustomHttpPattern to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** Represents a PathElement. */ + class PathElement implements IPathElement { + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: number | Long; + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: 'id' | 'name'; + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create( + properties?: google.datastore.v1.Key.IPathElement + ): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.Key.IPathElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.Key.IPathElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Key.PathElement, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } - } - - /** Namespace protobuf. */ - namespace protobuf { - - /** Properties of a FileDescriptorSet. */ - interface IFileDescriptorSet { - - /** FileDescriptorSet file */ - file?: (google.protobuf.IFileDescriptorProto[]|null); + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + /** ArrayValue values */ + values?: google.datastore.v1.IValue[] | null; + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create( + properties?: google.datastore.v1.IArrayValue + ): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IArrayValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IArrayValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.ArrayValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Value. */ + interface IValue { + /** Value nullValue */ + nullValue?: google.protobuf.NullValue | null; + + /** Value booleanValue */ + booleanValue?: boolean | null; + + /** Value integerValue */ + integerValue?: number | Long | null; + + /** Value doubleValue */ + doubleValue?: number | null; + + /** Value timestampValue */ + timestampValue?: google.protobuf.ITimestamp | null; + + /** Value keyValue */ + keyValue?: google.datastore.v1.IKey | null; + + /** Value stringValue */ + stringValue?: string | null; + + /** Value blobValue */ + blobValue?: Uint8Array | null; + + /** Value geoPointValue */ + geoPointValue?: google.type.ILatLng | null; + + /** Value entityValue */ + entityValue?: google.datastore.v1.IEntity | null; + + /** Value arrayValue */ + arrayValue?: google.datastore.v1.IArrayValue | null; + + /** Value meaning */ + meaning?: number | null; + + /** Value excludeFromIndexes */ + excludeFromIndexes?: boolean | null; + } + + /** Represents a Value. */ + class Value implements IValue { + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: number | Long; + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: google.protobuf.ITimestamp | null; + + /** Value keyValue. */ + public keyValue?: google.datastore.v1.IKey | null; + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: Uint8Array; + + /** Value geoPointValue. */ + public geoPointValue?: google.type.ILatLng | null; + + /** Value entityValue. */ + public entityValue?: google.datastore.v1.IEntity | null; + + /** Value arrayValue. */ + public arrayValue?: google.datastore.v1.IArrayValue | null; + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: + | 'nullValue' + | 'booleanValue' + | 'integerValue' + | 'doubleValue' + | 'timestampValue' + | 'keyValue' + | 'stringValue' + | 'blobValue' + | 'geoPointValue' + | 'entityValue' + | 'arrayValue'; + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create( + properties?: google.datastore.v1.IValue + ): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of an Entity. */ + interface IEntity { + /** Entity key */ + key?: google.datastore.v1.IKey | null; + + /** Entity properties */ + properties?: {[k: string]: google.datastore.v1.IValue} | null; + } + + /** Represents an Entity. */ + class Entity implements IEntity { + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: google.datastore.v1.IKey | null; + + /** Entity properties. */ + public properties: {[k: string]: google.datastore.v1.IValue}; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create( + properties?: google.datastore.v1.IEntity + ): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IEntity, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IEntity, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Entity, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of an EntityResult. */ + interface IEntityResult { + /** EntityResult entity */ + entity?: google.datastore.v1.IEntity | null; + + /** EntityResult version */ + version?: number | Long | null; + + /** EntityResult cursor */ + cursor?: Uint8Array | null; + } + + /** Represents an EntityResult. */ + class EntityResult implements IEntityResult { + /** + * Constructs a new EntityResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntityResult); + + /** EntityResult entity. */ + public entity?: google.datastore.v1.IEntity | null; + + /** EntityResult version. */ + public version: number | Long; + + /** EntityResult cursor. */ + public cursor: Uint8Array; + + /** + * Creates a new EntityResult instance using the specified properties. + * @param [properties] Properties to set + * @returns EntityResult instance + */ + public static create( + properties?: google.datastore.v1.IEntityResult + ): google.datastore.v1.EntityResult; + + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IEntityResult, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IEntityResult, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.EntityResult; + + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.EntityResult; + + /** + * Verifies an EntityResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EntityResult + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.EntityResult; + + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @param message EntityResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.EntityResult, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EntityResult to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace EntityResult { + /** ResultType enum. */ + enum ResultType { + RESULT_TYPE_UNSPECIFIED = 0, + FULL = 1, + PROJECTION = 2, + KEY_ONLY = 3, } - - /** Represents a FileDescriptorSet. */ - class FileDescriptorSet implements IFileDescriptorSet { - - /** - * Constructs a new FileDescriptorSet. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorSet); - - /** FileDescriptorSet file. */ - public file: google.protobuf.IFileDescriptorProto[]; - - /** - * Creates a new FileDescriptorSet instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorSet instance - */ - public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; - - /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; - - /** - * Verifies a FileDescriptorSet message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorSet - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; - - /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @param message FileDescriptorSet - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileDescriptorSet to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + } + + /** Properties of a Query. */ + interface IQuery { + /** Query projection */ + projection?: google.datastore.v1.IProjection[] | null; + + /** Query kind */ + kind?: google.datastore.v1.IKindExpression[] | null; + + /** Query filter */ + filter?: google.datastore.v1.IFilter | null; + + /** Query order */ + order?: google.datastore.v1.IPropertyOrder[] | null; + + /** Query distinctOn */ + distinctOn?: google.datastore.v1.IPropertyReference[] | null; + + /** Query startCursor */ + startCursor?: Uint8Array | null; + + /** Query endCursor */ + endCursor?: Uint8Array | null; + + /** Query offset */ + offset?: number | null; + + /** Query limit */ + limit?: google.protobuf.IInt32Value | null; + } + + /** Represents a Query. */ + class Query implements IQuery { + /** + * Constructs a new Query. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQuery); + + /** Query projection. */ + public projection: google.datastore.v1.IProjection[]; + + /** Query kind. */ + public kind: google.datastore.v1.IKindExpression[]; + + /** Query filter. */ + public filter?: google.datastore.v1.IFilter | null; + + /** Query order. */ + public order: google.datastore.v1.IPropertyOrder[]; + + /** Query distinctOn. */ + public distinctOn: google.datastore.v1.IPropertyReference[]; + + /** Query startCursor. */ + public startCursor: Uint8Array; + + /** Query endCursor. */ + public endCursor: Uint8Array; + + /** Query offset. */ + public offset: number; + + /** Query limit. */ + public limit?: google.protobuf.IInt32Value | null; + + /** + * Creates a new Query instance using the specified properties. + * @param [properties] Properties to set + * @returns Query instance + */ + public static create( + properties?: google.datastore.v1.IQuery + ): google.datastore.v1.Query; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IQuery, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IQuery, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Query message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Query; + + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Query; + + /** + * Verifies a Query message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Query + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Query; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @param message Query + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Query, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Query to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a KindExpression. */ + interface IKindExpression { + /** KindExpression name */ + name?: string | null; + } + + /** Represents a KindExpression. */ + class KindExpression implements IKindExpression { + /** + * Constructs a new KindExpression. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKindExpression); + + /** KindExpression name. */ + public name: string; + + /** + * Creates a new KindExpression instance using the specified properties. + * @param [properties] Properties to set + * @returns KindExpression instance + */ + public static create( + properties?: google.datastore.v1.IKindExpression + ): google.datastore.v1.KindExpression; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IKindExpression, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IKindExpression, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.KindExpression; + + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.KindExpression; + + /** + * Verifies a KindExpression message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns KindExpression + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.KindExpression; + + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @param message KindExpression + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.KindExpression, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this KindExpression to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a PropertyReference. */ + interface IPropertyReference { + /** PropertyReference name */ + name?: string | null; + } + + /** Represents a PropertyReference. */ + class PropertyReference implements IPropertyReference { + /** + * Constructs a new PropertyReference. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyReference); + + /** PropertyReference name. */ + public name: string; + + /** + * Creates a new PropertyReference instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyReference instance + */ + public static create( + properties?: google.datastore.v1.IPropertyReference + ): google.datastore.v1.PropertyReference; + + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IPropertyReference, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IPropertyReference, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.PropertyReference; + + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.PropertyReference; + + /** + * Verifies a PropertyReference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyReference + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.PropertyReference; + + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @param message PropertyReference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.PropertyReference, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PropertyReference to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Projection. */ + interface IProjection { + /** Projection property */ + property?: google.datastore.v1.IPropertyReference | null; + } + + /** Represents a Projection. */ + class Projection implements IProjection { + /** + * Constructs a new Projection. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IProjection); + + /** Projection property. */ + public property?: google.datastore.v1.IPropertyReference | null; + + /** + * Creates a new Projection instance using the specified properties. + * @param [properties] Properties to set + * @returns Projection instance + */ + public static create( + properties?: google.datastore.v1.IProjection + ): google.datastore.v1.Projection; + + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IProjection, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IProjection, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Projection message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Projection; + + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Projection; + + /** + * Verifies a Projection message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Projection + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Projection; + + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @param message Projection + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Projection, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Projection to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a PropertyOrder. */ + interface IPropertyOrder { + /** PropertyOrder property */ + property?: google.datastore.v1.IPropertyReference | null; + + /** PropertyOrder direction */ + direction?: google.datastore.v1.PropertyOrder.Direction | null; + } + + /** Represents a PropertyOrder. */ + class PropertyOrder implements IPropertyOrder { + /** + * Constructs a new PropertyOrder. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyOrder); + + /** PropertyOrder property. */ + public property?: google.datastore.v1.IPropertyReference | null; + + /** PropertyOrder direction. */ + public direction: google.datastore.v1.PropertyOrder.Direction; + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyOrder instance + */ + public static create( + properties?: google.datastore.v1.IPropertyOrder + ): google.datastore.v1.PropertyOrder; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IPropertyOrder, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IPropertyOrder, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.PropertyOrder; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.PropertyOrder; + + /** + * Verifies a PropertyOrder message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyOrder + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.PropertyOrder; + + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @param message PropertyOrder + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.PropertyOrder, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PropertyOrder to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace PropertyOrder { + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2, } - - /** Properties of a FileDescriptorProto. */ - interface IFileDescriptorProto { - - /** FileDescriptorProto name */ - name?: (string|null); - - /** FileDescriptorProto package */ - "package"?: (string|null); - - /** FileDescriptorProto dependency */ - dependency?: (string[]|null); - - /** FileDescriptorProto publicDependency */ - publicDependency?: (number[]|null); - - /** FileDescriptorProto weakDependency */ - weakDependency?: (number[]|null); - - /** FileDescriptorProto messageType */ - messageType?: (google.protobuf.IDescriptorProto[]|null); - - /** FileDescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); - - /** FileDescriptorProto service */ - service?: (google.protobuf.IServiceDescriptorProto[]|null); - - /** FileDescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** FileDescriptorProto options */ - options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo */ - sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); - - /** FileDescriptorProto syntax */ - syntax?: (string|null); + } + + /** Properties of a Filter. */ + interface IFilter { + /** Filter compositeFilter */ + compositeFilter?: google.datastore.v1.ICompositeFilter | null; + + /** Filter propertyFilter */ + propertyFilter?: google.datastore.v1.IPropertyFilter | null; + } + + /** Represents a Filter. */ + class Filter implements IFilter { + /** + * Constructs a new Filter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IFilter); + + /** Filter compositeFilter. */ + public compositeFilter?: google.datastore.v1.ICompositeFilter | null; + + /** Filter propertyFilter. */ + public propertyFilter?: google.datastore.v1.IPropertyFilter | null; + + /** Filter filterType. */ + public filterType?: 'compositeFilter' | 'propertyFilter'; + + /** + * Creates a new Filter instance using the specified properties. + * @param [properties] Properties to set + * @returns Filter instance + */ + public static create( + properties?: google.datastore.v1.IFilter + ): google.datastore.v1.Filter; + + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Filter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Filter; + + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Filter; + + /** + * Verifies a Filter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Filter + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Filter; + + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @param message Filter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Filter, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Filter to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a CompositeFilter. */ + interface ICompositeFilter { + /** CompositeFilter op */ + op?: google.datastore.v1.CompositeFilter.Operator | null; + + /** CompositeFilter filters */ + filters?: google.datastore.v1.IFilter[] | null; + } + + /** Represents a CompositeFilter. */ + class CompositeFilter implements ICompositeFilter { + /** + * Constructs a new CompositeFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICompositeFilter); + + /** CompositeFilter op. */ + public op: google.datastore.v1.CompositeFilter.Operator; + + /** CompositeFilter filters. */ + public filters: google.datastore.v1.IFilter[]; + + /** + * Creates a new CompositeFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns CompositeFilter instance + */ + public static create( + properties?: google.datastore.v1.ICompositeFilter + ): google.datastore.v1.CompositeFilter; + + /** + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.ICompositeFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.ICompositeFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.CompositeFilter; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.CompositeFilter; + + /** + * Verifies a CompositeFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CompositeFilter + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.CompositeFilter; + + /** + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @param message CompositeFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.CompositeFilter, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this CompositeFilter to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace CompositeFilter { + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + AND = 1, } - - /** Represents a FileDescriptorProto. */ - class FileDescriptorProto implements IFileDescriptorProto { - - /** - * Constructs a new FileDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorProto); - - /** FileDescriptorProto name. */ - public name: string; - - /** FileDescriptorProto package. */ - public package: string; - - /** FileDescriptorProto dependency. */ - public dependency: string[]; - - /** FileDescriptorProto publicDependency. */ - public publicDependency: number[]; - - /** FileDescriptorProto weakDependency. */ - public weakDependency: number[]; - - /** FileDescriptorProto messageType. */ - public messageType: google.protobuf.IDescriptorProto[]; - - /** FileDescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** FileDescriptorProto service. */ - public service: google.protobuf.IServiceDescriptorProto[]; - - /** FileDescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** FileDescriptorProto options. */ - public options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo. */ - public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); - - /** FileDescriptorProto syntax. */ - public syntax: string; - - /** - * Creates a new FileDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorProto instance - */ - public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; - - /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; - - /** - * Verifies a FileDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; - - /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @param message FileDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyFilter. */ + interface IPropertyFilter { + /** PropertyFilter property */ + property?: google.datastore.v1.IPropertyReference | null; + + /** PropertyFilter op */ + op?: google.datastore.v1.PropertyFilter.Operator | null; + + /** PropertyFilter value */ + value?: google.datastore.v1.IValue | null; + } + + /** Represents a PropertyFilter. */ + class PropertyFilter implements IPropertyFilter { + /** + * Constructs a new PropertyFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyFilter); + + /** PropertyFilter property. */ + public property?: google.datastore.v1.IPropertyReference | null; + + /** PropertyFilter op. */ + public op: google.datastore.v1.PropertyFilter.Operator; + + /** PropertyFilter value. */ + public value?: google.datastore.v1.IValue | null; + + /** + * Creates a new PropertyFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyFilter instance + */ + public static create( + properties?: google.datastore.v1.IPropertyFilter + ): google.datastore.v1.PropertyFilter; + + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IPropertyFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IPropertyFilter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.PropertyFilter; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.PropertyFilter; + + /** + * Verifies a PropertyFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyFilter + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.PropertyFilter; + + /** + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @param message PropertyFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.PropertyFilter, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PropertyFilter to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace PropertyFilter { + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + LESS_THAN = 1, + LESS_THAN_OR_EQUAL = 2, + GREATER_THAN = 3, + GREATER_THAN_OR_EQUAL = 4, + EQUAL = 5, + HAS_ANCESTOR = 11, } - - /** Properties of a DescriptorProto. */ - interface IDescriptorProto { - - /** DescriptorProto name */ - name?: (string|null); - - /** DescriptorProto field */ - field?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** DescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** DescriptorProto nestedType */ - nestedType?: (google.protobuf.IDescriptorProto[]|null); - - /** DescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); - - /** DescriptorProto extensionRange */ - extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); - - /** DescriptorProto oneofDecl */ - oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); - - /** DescriptorProto options */ - options?: (google.protobuf.IMessageOptions|null); - - /** DescriptorProto reservedRange */ - reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); - - /** DescriptorProto reservedName */ - reservedName?: (string[]|null); + } + + /** Properties of a GqlQuery. */ + interface IGqlQuery { + /** GqlQuery queryString */ + queryString?: string | null; + + /** GqlQuery allowLiterals */ + allowLiterals?: boolean | null; + + /** GqlQuery namedBindings */ + namedBindings?: { + [k: string]: google.datastore.v1.IGqlQueryParameter; + } | null; + + /** GqlQuery positionalBindings */ + positionalBindings?: google.datastore.v1.IGqlQueryParameter[] | null; + } + + /** Represents a GqlQuery. */ + class GqlQuery implements IGqlQuery { + /** + * Constructs a new GqlQuery. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQuery); + + /** GqlQuery queryString. */ + public queryString: string; + + /** GqlQuery allowLiterals. */ + public allowLiterals: boolean; + + /** GqlQuery namedBindings. */ + public namedBindings: { + [k: string]: google.datastore.v1.IGqlQueryParameter; + }; + + /** GqlQuery positionalBindings. */ + public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + + /** + * Creates a new GqlQuery instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQuery instance + */ + public static create( + properties?: google.datastore.v1.IGqlQuery + ): google.datastore.v1.GqlQuery; + + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IGqlQuery, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IGqlQuery, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.GqlQuery; + + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.GqlQuery; + + /** + * Verifies a GqlQuery message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQuery + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.GqlQuery; + + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @param message GqlQuery + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.GqlQuery, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this GqlQuery to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a GqlQueryParameter. */ + interface IGqlQueryParameter { + /** GqlQueryParameter value */ + value?: google.datastore.v1.IValue | null; + + /** GqlQueryParameter cursor */ + cursor?: Uint8Array | null; + } + + /** Represents a GqlQueryParameter. */ + class GqlQueryParameter implements IGqlQueryParameter { + /** + * Constructs a new GqlQueryParameter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQueryParameter); + + /** GqlQueryParameter value. */ + public value?: google.datastore.v1.IValue | null; + + /** GqlQueryParameter cursor. */ + public cursor: Uint8Array; + + /** GqlQueryParameter parameterType. */ + public parameterType?: 'value' | 'cursor'; + + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQueryParameter instance + */ + public static create( + properties?: google.datastore.v1.IGqlQueryParameter + ): google.datastore.v1.GqlQueryParameter; + + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IGqlQueryParameter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IGqlQueryParameter, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.GqlQueryParameter; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.GqlQueryParameter; + + /** + * Verifies a GqlQueryParameter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQueryParameter + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.GqlQueryParameter; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @param message GqlQueryParameter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.GqlQueryParameter, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this GqlQueryParameter to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a QueryResultBatch. */ + interface IQueryResultBatch { + /** QueryResultBatch skippedResults */ + skippedResults?: number | null; + + /** QueryResultBatch skippedCursor */ + skippedCursor?: Uint8Array | null; + + /** QueryResultBatch entityResultType */ + entityResultType?: google.datastore.v1.EntityResult.ResultType | null; + + /** QueryResultBatch entityResults */ + entityResults?: google.datastore.v1.IEntityResult[] | null; + + /** QueryResultBatch endCursor */ + endCursor?: Uint8Array | null; + + /** QueryResultBatch moreResults */ + moreResults?: google.datastore.v1.QueryResultBatch.MoreResultsType | null; + + /** QueryResultBatch snapshotVersion */ + snapshotVersion?: number | Long | null; + } + + /** Represents a QueryResultBatch. */ + class QueryResultBatch implements IQueryResultBatch { + /** + * Constructs a new QueryResultBatch. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQueryResultBatch); + + /** QueryResultBatch skippedResults. */ + public skippedResults: number; + + /** QueryResultBatch skippedCursor. */ + public skippedCursor: Uint8Array; + + /** QueryResultBatch entityResultType. */ + public entityResultType: google.datastore.v1.EntityResult.ResultType; + + /** QueryResultBatch entityResults. */ + public entityResults: google.datastore.v1.IEntityResult[]; + + /** QueryResultBatch endCursor. */ + public endCursor: Uint8Array; + + /** QueryResultBatch moreResults. */ + public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; + + /** QueryResultBatch snapshotVersion. */ + public snapshotVersion: number | Long; + + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @param [properties] Properties to set + * @returns QueryResultBatch instance + */ + public static create( + properties?: google.datastore.v1.IQueryResultBatch + ): google.datastore.v1.QueryResultBatch; + + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IQueryResultBatch, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IQueryResultBatch, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.QueryResultBatch; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.QueryResultBatch; + + /** + * Verifies a QueryResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryResultBatch + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.QueryResultBatch; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @param message QueryResultBatch + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.QueryResultBatch, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this QueryResultBatch to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace QueryResultBatch { + /** MoreResultsType enum. */ + enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 0, + NOT_FINISHED = 1, + MORE_RESULTS_AFTER_LIMIT = 2, + MORE_RESULTS_AFTER_CURSOR = 4, + NO_MORE_RESULTS = 3, } + } + } + } - /** Represents a DescriptorProto. */ - class DescriptorProto implements IDescriptorProto { - - /** - * Constructs a new DescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDescriptorProto); - - /** DescriptorProto name. */ - public name: string; - - /** DescriptorProto field. */ - public field: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto nestedType. */ - public nestedType: google.protobuf.IDescriptorProto[]; - - /** DescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** DescriptorProto extensionRange. */ - public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; - - /** DescriptorProto oneofDecl. */ - public oneofDecl: google.protobuf.IOneofDescriptorProto[]; - - /** DescriptorProto options. */ - public options?: (google.protobuf.IMessageOptions|null); - - /** DescriptorProto reservedRange. */ - public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; - - /** DescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new DescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns DescriptorProto instance - */ - public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; - - /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; - - /** - * Verifies a DescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; - - /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @param message DescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this DescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Namespace api. */ + namespace api { + /** Properties of a Http. */ + interface IHttp { + /** Http rules */ + rules?: google.api.IHttpRule[] | null; - namespace DescriptorProto { - - /** Properties of an ExtensionRange. */ - interface IExtensionRange { - - /** ExtensionRange start */ - start?: (number|null); - - /** ExtensionRange end */ - end?: (number|null); - - /** ExtensionRange options */ - options?: (google.protobuf.IExtensionRangeOptions|null); - } - - /** Represents an ExtensionRange. */ - class ExtensionRange implements IExtensionRange { - - /** - * Constructs a new ExtensionRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); - - /** ExtensionRange start. */ - public start: number; - - /** ExtensionRange end. */ - public end: number; - - /** ExtensionRange options. */ - public options?: (google.protobuf.IExtensionRangeOptions|null); - - /** - * Creates a new ExtensionRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Verifies an ExtensionRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. - * @param message ExtensionRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ExtensionRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReservedRange. */ - interface IReservedRange { - - /** ReservedRange start */ - start?: (number|null); - - /** ReservedRange end */ - end?: (number|null); - } - - /** Represents a ReservedRange. */ - class ReservedRange implements IReservedRange { - - /** - * Constructs a new ReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); - - /** ReservedRange start. */ - public start: number; - - /** ReservedRange end. */ - public end: number; - - /** - * Creates a new ReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ReservedRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Verifies a ReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. - * @param message ReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: boolean | null; + } - /** Properties of an ExtensionRangeOptions. */ - interface IExtensionRangeOptions { + /** Represents a Http. */ + class Http implements IHttp { + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.IHttp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.IHttp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: {[k: string]: any}): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.Http, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** ExtensionRangeOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Properties of a HttpRule. */ + interface IHttpRule { + /** HttpRule selector */ + selector?: string | null; - /** Represents an ExtensionRangeOptions. */ - class ExtensionRangeOptions implements IExtensionRangeOptions { - - /** - * Constructs a new ExtensionRangeOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IExtensionRangeOptions); - - /** ExtensionRangeOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ExtensionRangeOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRangeOptions instance - */ - public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; - - /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; - - /** - * Verifies an ExtensionRangeOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRangeOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; - - /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @param message ExtensionRangeOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ExtensionRangeOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** HttpRule get */ + get?: string | null; - /** Properties of a FieldDescriptorProto. */ - interface IFieldDescriptorProto { + /** HttpRule put */ + put?: string | null; - /** FieldDescriptorProto name */ - name?: (string|null); + /** HttpRule post */ + post?: string | null; - /** FieldDescriptorProto number */ - number?: (number|null); + /** HttpRule delete */ + delete?: string | null; - /** FieldDescriptorProto label */ - label?: (google.protobuf.FieldDescriptorProto.Label|null); + /** HttpRule patch */ + patch?: string | null; - /** FieldDescriptorProto type */ - type?: (google.protobuf.FieldDescriptorProto.Type|null); + /** HttpRule custom */ + custom?: google.api.ICustomHttpPattern | null; - /** FieldDescriptorProto typeName */ - typeName?: (string|null); + /** HttpRule body */ + body?: string | null; - /** FieldDescriptorProto extendee */ - extendee?: (string|null); + /** HttpRule responseBody */ + responseBody?: string | null; - /** FieldDescriptorProto defaultValue */ - defaultValue?: (string|null); + /** HttpRule additionalBindings */ + additionalBindings?: google.api.IHttpRule[] | null; + } - /** FieldDescriptorProto oneofIndex */ - oneofIndex?: (number|null); + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: google.api.ICustomHttpPattern | null; + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: 'get' | 'put' | 'post' | 'delete' | 'patch' | 'custom'; + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create( + properties?: google.api.IHttpRule + ): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.IHttpRule, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.IHttpRule, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: {[k: string]: any}): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.HttpRule, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FieldDescriptorProto jsonName */ - jsonName?: (string|null); + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + /** CustomHttpPattern kind */ + kind?: string | null; - /** FieldDescriptorProto options */ - options?: (google.protobuf.IFieldOptions|null); - } + /** CustomHttpPattern path */ + path?: string | null; + } - /** Represents a FieldDescriptorProto. */ - class FieldDescriptorProto implements IFieldDescriptorProto { - - /** - * Constructs a new FieldDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldDescriptorProto); - - /** FieldDescriptorProto name. */ - public name: string; - - /** FieldDescriptorProto number. */ - public number: number; - - /** FieldDescriptorProto label. */ - public label: google.protobuf.FieldDescriptorProto.Label; - - /** FieldDescriptorProto type. */ - public type: google.protobuf.FieldDescriptorProto.Type; - - /** FieldDescriptorProto typeName. */ - public typeName: string; - - /** FieldDescriptorProto extendee. */ - public extendee: string; - - /** FieldDescriptorProto defaultValue. */ - public defaultValue: string; - - /** FieldDescriptorProto oneofIndex. */ - public oneofIndex: number; - - /** FieldDescriptorProto jsonName. */ - public jsonName: string; - - /** FieldDescriptorProto options. */ - public options?: (google.protobuf.IFieldOptions|null); - - /** - * Creates a new FieldDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldDescriptorProto instance - */ - public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; - - /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; - - /** - * Verifies a FieldDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; - - /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @param message FieldDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FieldDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create( + properties?: google.api.ICustomHttpPattern + ): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.ICustomHttpPattern, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.ICustomHttpPattern, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { + [k: string]: any; + }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.CustomHttpPattern, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } + + /** Namespace protobuf. */ + namespace protobuf { + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + /** FileDescriptorSet file */ + file?: google.protobuf.IFileDescriptorProto[] | null; + } - namespace FieldDescriptorProto { - - /** Type enum. */ - enum Type { - TYPE_DOUBLE = 1, - TYPE_FLOAT = 2, - TYPE_INT64 = 3, - TYPE_UINT64 = 4, - TYPE_INT32 = 5, - TYPE_FIXED64 = 6, - TYPE_FIXED32 = 7, - TYPE_BOOL = 8, - TYPE_STRING = 9, - TYPE_GROUP = 10, - TYPE_MESSAGE = 11, - TYPE_BYTES = 12, - TYPE_UINT32 = 13, - TYPE_ENUM = 14, - TYPE_SFIXED32 = 15, - TYPE_SFIXED64 = 16, - TYPE_SINT32 = 17, - TYPE_SINT64 = 18 - } - - /** Label enum. */ - enum Label { - LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3 - } - } + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create( + properties?: google.protobuf.IFileDescriptorSet + ): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileDescriptorSet, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileDescriptorSet, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileDescriptorSet, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of an OneofDescriptorProto. */ - interface IOneofDescriptorProto { + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + /** FileDescriptorProto name */ + name?: string | null; - /** OneofDescriptorProto name */ - name?: (string|null); + /** FileDescriptorProto package */ + package?: string | null; - /** OneofDescriptorProto options */ - options?: (google.protobuf.IOneofOptions|null); - } + /** FileDescriptorProto dependency */ + dependency?: string[] | null; - /** Represents an OneofDescriptorProto. */ - class OneofDescriptorProto implements IOneofDescriptorProto { - - /** - * Constructs a new OneofDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofDescriptorProto); - - /** OneofDescriptorProto name. */ - public name: string; - - /** OneofDescriptorProto options. */ - public options?: (google.protobuf.IOneofOptions|null); - - /** - * Creates a new OneofDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofDescriptorProto instance - */ - public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; - - /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; - - /** - * Verifies an OneofDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; - - /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @param message OneofDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this OneofDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileDescriptorProto publicDependency */ + publicDependency?: number[] | null; - /** Properties of an EnumDescriptorProto. */ - interface IEnumDescriptorProto { + /** FileDescriptorProto weakDependency */ + weakDependency?: number[] | null; - /** EnumDescriptorProto name */ - name?: (string|null); + /** FileDescriptorProto messageType */ + messageType?: google.protobuf.IDescriptorProto[] | null; - /** EnumDescriptorProto value */ - value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + /** FileDescriptorProto enumType */ + enumType?: google.protobuf.IEnumDescriptorProto[] | null; - /** EnumDescriptorProto options */ - options?: (google.protobuf.IEnumOptions|null); + /** FileDescriptorProto service */ + service?: google.protobuf.IServiceDescriptorProto[] | null; - /** EnumDescriptorProto reservedRange */ - reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + /** FileDescriptorProto extension */ + extension?: google.protobuf.IFieldDescriptorProto[] | null; - /** EnumDescriptorProto reservedName */ - reservedName?: (string[]|null); - } + /** FileDescriptorProto options */ + options?: google.protobuf.IFileOptions | null; - /** Represents an EnumDescriptorProto. */ - class EnumDescriptorProto implements IEnumDescriptorProto { - - /** - * Constructs a new EnumDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumDescriptorProto); - - /** EnumDescriptorProto name. */ - public name: string; - - /** EnumDescriptorProto value. */ - public value: google.protobuf.IEnumValueDescriptorProto[]; - - /** EnumDescriptorProto options. */ - public options?: (google.protobuf.IEnumOptions|null); - - /** EnumDescriptorProto reservedRange. */ - public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; - - /** EnumDescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new EnumDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumDescriptorProto instance - */ - public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; - - /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; - - /** - * Verifies an EnumDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; - - /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. - * @param message EnumDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - namespace EnumDescriptorProto { - - /** Properties of an EnumReservedRange. */ - interface IEnumReservedRange { - - /** EnumReservedRange start */ - start?: (number|null); - - /** EnumReservedRange end */ - end?: (number|null); - } - - /** Represents an EnumReservedRange. */ - class EnumReservedRange implements IEnumReservedRange { - - /** - * Constructs a new EnumReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); - - /** EnumReservedRange start. */ - public start: number; - - /** EnumReservedRange end. */ - public end: number; - - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumReservedRange instance - */ - public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Verifies an EnumReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @param message EnumReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** FileDescriptorProto syntax */ + syntax?: string | null; + } - /** Properties of an EnumValueDescriptorProto. */ - interface IEnumValueDescriptorProto { + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: google.protobuf.IFileOptions | null; + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IFileDescriptorProto + ): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** EnumValueDescriptorProto name */ - name?: (string|null); + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + /** DescriptorProto name */ + name?: string | null; - /** EnumValueDescriptorProto number */ - number?: (number|null); + /** DescriptorProto field */ + field?: google.protobuf.IFieldDescriptorProto[] | null; - /** EnumValueDescriptorProto options */ - options?: (google.protobuf.IEnumValueOptions|null); - } + /** DescriptorProto extension */ + extension?: google.protobuf.IFieldDescriptorProto[] | null; - /** Represents an EnumValueDescriptorProto. */ - class EnumValueDescriptorProto implements IEnumValueDescriptorProto { - - /** - * Constructs a new EnumValueDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - - /** EnumValueDescriptorProto name. */ - public name: string; - - /** EnumValueDescriptorProto number. */ - public number: number; - - /** EnumValueDescriptorProto options. */ - public options?: (google.protobuf.IEnumValueOptions|null); - - /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueDescriptorProto instance - */ - public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; - - /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; - - /** - * Verifies an EnumValueDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; - - /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. - * @param message EnumValueDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumValueDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** DescriptorProto nestedType */ + nestedType?: google.protobuf.IDescriptorProto[] | null; - /** Properties of a ServiceDescriptorProto. */ - interface IServiceDescriptorProto { + /** DescriptorProto enumType */ + enumType?: google.protobuf.IEnumDescriptorProto[] | null; - /** ServiceDescriptorProto name */ - name?: (string|null); + /** DescriptorProto extensionRange */ + extensionRange?: google.protobuf.DescriptorProto.IExtensionRange[] | null; - /** ServiceDescriptorProto method */ - method?: (google.protobuf.IMethodDescriptorProto[]|null); + /** DescriptorProto oneofDecl */ + oneofDecl?: google.protobuf.IOneofDescriptorProto[] | null; - /** ServiceDescriptorProto options */ - options?: (google.protobuf.IServiceOptions|null); - } + /** DescriptorProto options */ + options?: google.protobuf.IMessageOptions | null; - /** Represents a ServiceDescriptorProto. */ - class ServiceDescriptorProto implements IServiceDescriptorProto { - - /** - * Constructs a new ServiceDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceDescriptorProto); - - /** ServiceDescriptorProto name. */ - public name: string; - - /** ServiceDescriptorProto method. */ - public method: google.protobuf.IMethodDescriptorProto[]; - - /** ServiceDescriptorProto options. */ - public options?: (google.protobuf.IServiceOptions|null); - - /** - * Creates a new ServiceDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceDescriptorProto instance - */ - public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; - - /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; - - /** - * Verifies a ServiceDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; - - /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. - * @param message ServiceDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ServiceDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** DescriptorProto reservedRange */ + reservedRange?: google.protobuf.DescriptorProto.IReservedRange[] | null; - /** Properties of a MethodDescriptorProto. */ - interface IMethodDescriptorProto { + /** DescriptorProto reservedName */ + reservedName?: string[] | null; + } - /** MethodDescriptorProto name */ - name?: (string|null); + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: google.protobuf.IMessageOptions | null; + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create( + properties?: google.protobuf.IDescriptorProto + ): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** MethodDescriptorProto inputType */ - inputType?: (string|null); + namespace DescriptorProto { + /** Properties of an ExtensionRange. */ + interface IExtensionRange { + /** ExtensionRange start */ + start?: number | null; + + /** ExtensionRange end */ + end?: number | null; + + /** ExtensionRange options */ + options?: google.protobuf.IExtensionRangeOptions | null; + } + + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { + /** + * Constructs a new ExtensionRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.DescriptorProto.IExtensionRange + ); + + /** ExtensionRange start. */ + public start: number; + + /** ExtensionRange end. */ + public end: number; + + /** ExtensionRange options. */ + public options?: google.protobuf.IExtensionRangeOptions | null; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRange instance + */ + public static create( + properties?: google.protobuf.DescriptorProto.IExtensionRange + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.DescriptorProto.IExtensionRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.DescriptorProto.IExtensionRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto.ExtensionRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ExtensionRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a ReservedRange. */ + interface IReservedRange { + /** ReservedRange start */ + start?: number | null; + + /** ReservedRange end */ + end?: number | null; + } + + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { + /** + * Constructs a new ReservedRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.DescriptorProto.IReservedRange + ); + + /** ReservedRange start. */ + public start: number; + + /** ReservedRange end. */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ReservedRange instance + */ + public static create( + properties?: google.protobuf.DescriptorProto.IReservedRange + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.DescriptorProto.IReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.DescriptorProto.IReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReservedRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto.ReservedRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** MethodDescriptorProto outputType */ - outputType?: (string|null); + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** MethodDescriptorProto options */ - options?: (google.protobuf.IMethodOptions|null); + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { + /** + * Constructs a new ExtensionRangeOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IExtensionRangeOptions); + + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRangeOptions instance + */ + public static create( + properties?: google.protobuf.IExtensionRangeOptions + ): google.protobuf.ExtensionRangeOptions; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IExtensionRangeOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IExtensionRangeOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ExtensionRangeOptions; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ExtensionRangeOptions; + + /** + * Verifies an ExtensionRangeOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRangeOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ExtensionRangeOptions; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ExtensionRangeOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** MethodDescriptorProto clientStreaming */ - clientStreaming?: (boolean|null); + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { + /** FieldDescriptorProto name */ + name?: string | null; - /** MethodDescriptorProto serverStreaming */ - serverStreaming?: (boolean|null); - } + /** FieldDescriptorProto number */ + number?: number | null; - /** Represents a MethodDescriptorProto. */ - class MethodDescriptorProto implements IMethodDescriptorProto { - - /** - * Constructs a new MethodDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodDescriptorProto); - - /** MethodDescriptorProto name. */ - public name: string; - - /** MethodDescriptorProto inputType. */ - public inputType: string; - - /** MethodDescriptorProto outputType. */ - public outputType: string; - - /** MethodDescriptorProto options. */ - public options?: (google.protobuf.IMethodOptions|null); - - /** MethodDescriptorProto clientStreaming. */ - public clientStreaming: boolean; - - /** MethodDescriptorProto serverStreaming. */ - public serverStreaming: boolean; - - /** - * Creates a new MethodDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodDescriptorProto instance - */ - public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; - - /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; - - /** - * Verifies a MethodDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; - - /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. - * @param message MethodDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MethodDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FieldDescriptorProto label */ + label?: google.protobuf.FieldDescriptorProto.Label | null; - /** Properties of a FileOptions. */ - interface IFileOptions { + /** FieldDescriptorProto type */ + type?: google.protobuf.FieldDescriptorProto.Type | null; - /** FileOptions javaPackage */ - javaPackage?: (string|null); + /** FieldDescriptorProto typeName */ + typeName?: string | null; - /** FileOptions javaOuterClassname */ - javaOuterClassname?: (string|null); + /** FieldDescriptorProto extendee */ + extendee?: string | null; - /** FileOptions javaMultipleFiles */ - javaMultipleFiles?: (boolean|null); + /** FieldDescriptorProto defaultValue */ + defaultValue?: string | null; - /** FileOptions javaGenerateEqualsAndHash */ - javaGenerateEqualsAndHash?: (boolean|null); + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: number | null; - /** FileOptions javaStringCheckUtf8 */ - javaStringCheckUtf8?: (boolean|null); + /** FieldDescriptorProto jsonName */ + jsonName?: string | null; - /** FileOptions optimizeFor */ - optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + /** FieldDescriptorProto options */ + options?: google.protobuf.IFieldOptions | null; + } - /** FileOptions goPackage */ - goPackage?: (string|null); + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { + /** + * Constructs a new FieldDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldDescriptorProto); + + /** FieldDescriptorProto name. */ + public name: string; + + /** FieldDescriptorProto number. */ + public number: number; + + /** FieldDescriptorProto label. */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** FieldDescriptorProto type. */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: google.protobuf.IFieldOptions | null; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IFieldDescriptorProto + ): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFieldDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFieldDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FieldDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions ccGenericServices */ - ccGenericServices?: (boolean|null); + namespace FieldDescriptorProto { + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18, + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3, + } + } - /** FileOptions javaGenericServices */ - javaGenericServices?: (boolean|null); + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { + /** OneofDescriptorProto name */ + name?: string | null; - /** FileOptions pyGenericServices */ - pyGenericServices?: (boolean|null); + /** OneofDescriptorProto options */ + options?: google.protobuf.IOneofOptions | null; + } - /** FileOptions phpGenericServices */ - phpGenericServices?: (boolean|null); + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); + + /** OneofDescriptorProto name. */ + public name: string; + + /** OneofDescriptorProto options. */ + public options?: google.protobuf.IOneofOptions | null; + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IOneofDescriptorProto + ): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IOneofDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IOneofDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.OneofDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions deprecated */ - deprecated?: (boolean|null); + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { + /** EnumDescriptorProto name */ + name?: string | null; - /** FileOptions ccEnableArenas */ - ccEnableArenas?: (boolean|null); + /** EnumDescriptorProto value */ + value?: google.protobuf.IEnumValueDescriptorProto[] | null; - /** FileOptions objcClassPrefix */ - objcClassPrefix?: (string|null); + /** EnumDescriptorProto options */ + options?: google.protobuf.IEnumOptions | null; - /** FileOptions csharpNamespace */ - csharpNamespace?: (string|null); + /** EnumDescriptorProto reservedRange */ + reservedRange?: + | google.protobuf.EnumDescriptorProto.IEnumReservedRange[] + | null; - /** FileOptions swiftPrefix */ - swiftPrefix?: (string|null); + /** EnumDescriptorProto reservedName */ + reservedName?: string[] | null; + } - /** FileOptions phpClassPrefix */ - phpClassPrefix?: (string|null); + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { + /** + * Constructs a new EnumDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumDescriptorProto); + + /** EnumDescriptorProto name. */ + public name: string; + + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: google.protobuf.IEnumOptions | null; + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IEnumDescriptorProto + ): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions phpNamespace */ - phpNamespace?: (string|null); + namespace EnumDescriptorProto { + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + /** EnumReservedRange start */ + start?: number | null; + + /** EnumReservedRange end */ + end?: number | null; + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange + ); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create( + properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumDescriptorProto.EnumReservedRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** FileOptions phpMetadataNamespace */ - phpMetadataNamespace?: (string|null); + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { + /** EnumValueDescriptorProto name */ + name?: string | null; - /** FileOptions rubyPackage */ - rubyPackage?: (string|null); + /** EnumValueDescriptorProto number */ + number?: number | null; - /** FileOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** EnumValueDescriptorProto options */ + options?: google.protobuf.IEnumValueOptions | null; + } - /** Represents a FileOptions. */ - class FileOptions implements IFileOptions { + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + /** + * Constructs a new EnumValueDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); + + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: google.protobuf.IEnumValueOptions | null; + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IEnumValueDescriptorProto + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumValueDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumValueDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumValueDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** - * Constructs a new FileOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileOptions); + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { + /** ServiceDescriptorProto name */ + name?: string | null; - /** FileOptions javaPackage. */ - public javaPackage: string; + /** ServiceDescriptorProto method */ + method?: google.protobuf.IMethodDescriptorProto[] | null; - /** FileOptions javaOuterClassname. */ - public javaOuterClassname: string; + /** ServiceDescriptorProto options */ + options?: google.protobuf.IServiceOptions | null; + } - /** FileOptions javaMultipleFiles. */ - public javaMultipleFiles: boolean; + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { + /** + * Constructs a new ServiceDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceDescriptorProto); + + /** ServiceDescriptorProto name. */ + public name: string; + + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; + + /** ServiceDescriptorProto options. */ + public options?: google.protobuf.IServiceOptions | null; + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IServiceDescriptorProto + ): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IServiceDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IServiceDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ServiceDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions javaGenerateEqualsAndHash. */ - public javaGenerateEqualsAndHash: boolean; + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { + /** MethodDescriptorProto name */ + name?: string | null; - /** FileOptions javaStringCheckUtf8. */ - public javaStringCheckUtf8: boolean; - - /** FileOptions optimizeFor. */ - public optimizeFor: google.protobuf.FileOptions.OptimizeMode; - - /** FileOptions goPackage. */ - public goPackage: string; - - /** FileOptions ccGenericServices. */ - public ccGenericServices: boolean; - - /** FileOptions javaGenericServices. */ - public javaGenericServices: boolean; - - /** FileOptions pyGenericServices. */ - public pyGenericServices: boolean; - - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; - - /** FileOptions deprecated. */ - public deprecated: boolean; - - /** FileOptions ccEnableArenas. */ - public ccEnableArenas: boolean; - - /** FileOptions objcClassPrefix. */ - public objcClassPrefix: string; - - /** FileOptions csharpNamespace. */ - public csharpNamespace: string; - - /** FileOptions swiftPrefix. */ - public swiftPrefix: string; - - /** FileOptions phpClassPrefix. */ - public phpClassPrefix: string; - - /** FileOptions phpNamespace. */ - public phpNamespace: string; - - /** FileOptions phpMetadataNamespace. */ - public phpMetadataNamespace: string; - - /** FileOptions rubyPackage. */ - public rubyPackage: string; - - /** FileOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FileOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FileOptions instance - */ - public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; - - /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; - - /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; - - /** - * Verifies a FileOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; - - /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @param message FileOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** MethodDescriptorProto inputType */ + inputType?: string | null; - namespace FileOptions { + /** MethodDescriptorProto outputType */ + outputType?: string | null; - /** OptimizeMode enum. */ - enum OptimizeMode { - SPEED = 1, - CODE_SIZE = 2, - LITE_RUNTIME = 3 - } - } + /** MethodDescriptorProto options */ + options?: google.protobuf.IMethodOptions | null; - /** Properties of a MessageOptions. */ - interface IMessageOptions { + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: boolean | null; - /** MessageOptions messageSetWireFormat */ - messageSetWireFormat?: (boolean|null); + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: boolean | null; + } - /** MessageOptions noStandardDescriptorAccessor */ - noStandardDescriptorAccessor?: (boolean|null); + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { + /** + * Constructs a new MethodDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodDescriptorProto); + + /** MethodDescriptorProto name. */ + public name: string; + + /** MethodDescriptorProto inputType. */ + public inputType: string; + + /** MethodDescriptorProto outputType. */ + public outputType: string; + + /** MethodDescriptorProto options. */ + public options?: google.protobuf.IMethodOptions | null; + + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; + + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IMethodDescriptorProto + ): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMethodDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMethodDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MethodDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** MessageOptions deprecated */ - deprecated?: (boolean|null); + /** Properties of a FileOptions. */ + interface IFileOptions { + /** FileOptions javaPackage */ + javaPackage?: string | null; - /** MessageOptions mapEntry */ - mapEntry?: (boolean|null); + /** FileOptions javaOuterClassname */ + javaOuterClassname?: string | null; - /** MessageOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: boolean | null; - /** Represents a MessageOptions. */ - class MessageOptions implements IMessageOptions { - - /** - * Constructs a new MessageOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMessageOptions); - - /** MessageOptions messageSetWireFormat. */ - public messageSetWireFormat: boolean; - - /** MessageOptions noStandardDescriptorAccessor. */ - public noStandardDescriptorAccessor: boolean; - - /** MessageOptions deprecated. */ - public deprecated: boolean; - - /** MessageOptions mapEntry. */ - public mapEntry: boolean; - - /** MessageOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MessageOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MessageOptions instance - */ - public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; - - /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MessageOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; - - /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; - - /** - * Verifies a MessageOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MessageOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; - - /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @param message MessageOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MessageOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: boolean | null; - /** Properties of a FieldOptions. */ - interface IFieldOptions { + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: boolean | null; - /** FieldOptions ctype */ - ctype?: (google.protobuf.FieldOptions.CType|null); + /** FileOptions optimizeFor */ + optimizeFor?: google.protobuf.FileOptions.OptimizeMode | null; - /** FieldOptions packed */ - packed?: (boolean|null); + /** FileOptions goPackage */ + goPackage?: string | null; - /** FieldOptions jstype */ - jstype?: (google.protobuf.FieldOptions.JSType|null); + /** FileOptions ccGenericServices */ + ccGenericServices?: boolean | null; - /** FieldOptions lazy */ - lazy?: (boolean|null); + /** FileOptions javaGenericServices */ + javaGenericServices?: boolean | null; - /** FieldOptions deprecated */ - deprecated?: (boolean|null); + /** FileOptions pyGenericServices */ + pyGenericServices?: boolean | null; - /** FieldOptions weak */ - weak?: (boolean|null); + /** FileOptions phpGenericServices */ + phpGenericServices?: boolean | null; - /** FieldOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FileOptions deprecated */ + deprecated?: boolean | null; - /** Represents a FieldOptions. */ - class FieldOptions implements IFieldOptions { - - /** - * Constructs a new FieldOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldOptions); - - /** FieldOptions ctype. */ - public ctype: google.protobuf.FieldOptions.CType; - - /** FieldOptions packed. */ - public packed: boolean; - - /** FieldOptions jstype. */ - public jstype: google.protobuf.FieldOptions.JSType; - - /** FieldOptions lazy. */ - public lazy: boolean; - - /** FieldOptions deprecated. */ - public deprecated: boolean; - - /** FieldOptions weak. */ - public weak: boolean; - - /** FieldOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FieldOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldOptions instance - */ - public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; - - /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FieldOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; - - /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; - - /** - * Verifies a FieldOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; - - /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. - * @param message FieldOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FieldOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions ccEnableArenas */ + ccEnableArenas?: boolean | null; - namespace FieldOptions { - - /** CType enum. */ - enum CType { - STRING = 0, - CORD = 1, - STRING_PIECE = 2 - } - - /** JSType enum. */ - enum JSType { - JS_NORMAL = 0, - JS_STRING = 1, - JS_NUMBER = 2 - } - } + /** FileOptions objcClassPrefix */ + objcClassPrefix?: string | null; - /** Properties of an OneofOptions. */ - interface IOneofOptions { + /** FileOptions csharpNamespace */ + csharpNamespace?: string | null; - /** OneofOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FileOptions swiftPrefix */ + swiftPrefix?: string | null; - /** Represents an OneofOptions. */ - class OneofOptions implements IOneofOptions { - - /** - * Constructs a new OneofOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofOptions); - - /** OneofOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new OneofOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofOptions instance - */ - public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; - - /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an OneofOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; - - /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; - - /** - * Verifies an OneofOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; - - /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. - * @param message OneofOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this OneofOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions phpClassPrefix */ + phpClassPrefix?: string | null; - /** Properties of an EnumOptions. */ - interface IEnumOptions { + /** FileOptions phpNamespace */ + phpNamespace?: string | null; - /** EnumOptions allowAlias */ - allowAlias?: (boolean|null); + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: string | null; - /** EnumOptions deprecated */ - deprecated?: (boolean|null); + /** FileOptions rubyPackage */ + rubyPackage?: string | null; - /** EnumOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FileOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** Represents an EnumOptions. */ - class EnumOptions implements IEnumOptions { - - /** - * Constructs a new EnumOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumOptions); - - /** EnumOptions allowAlias. */ - public allowAlias: boolean; - - /** EnumOptions deprecated. */ - public deprecated: boolean; - - /** EnumOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumOptions instance - */ - public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; - - /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; - - /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; - - /** - * Verifies an EnumOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; - - /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @param message EnumOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; + + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; + + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; + + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; + + /** FileOptions deprecated. */ + public deprecated: boolean; + + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; + + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; + + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; + + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; + + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; + + /** FileOptions phpNamespace. */ + public phpNamespace: string; + + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; + + /** FileOptions rubyPackage. */ + public rubyPackage: string; + + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create( + properties?: google.protobuf.IFileOptions + ): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of an EnumValueOptions. */ - interface IEnumValueOptions { + namespace FileOptions { + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3, + } + } - /** EnumValueOptions deprecated */ - deprecated?: (boolean|null); + /** Properties of a MessageOptions. */ + interface IMessageOptions { + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: boolean | null; - /** EnumValueOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: boolean | null; - /** Represents an EnumValueOptions. */ - class EnumValueOptions implements IEnumValueOptions { - - /** - * Constructs a new EnumValueOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueOptions); - - /** EnumValueOptions deprecated. */ - public deprecated: boolean; - - /** EnumValueOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumValueOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueOptions instance - */ - public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; - - /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; - - /** - * Verifies an EnumValueOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; - - /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. - * @param message EnumValueOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumValueOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** MessageOptions deprecated */ + deprecated?: boolean | null; - /** Properties of a ServiceOptions. */ - interface IServiceOptions { + /** MessageOptions mapEntry */ + mapEntry?: boolean | null; - /** ServiceOptions deprecated */ - deprecated?: (boolean|null); + /** MessageOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** ServiceOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { + /** + * Constructs a new MessageOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMessageOptions); + + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageOptions instance + */ + public static create( + properties?: google.protobuf.IMessageOptions + ): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMessageOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMessageOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MessageOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MessageOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a ServiceOptions. */ - class ServiceOptions implements IServiceOptions { - - /** - * Constructs a new ServiceOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceOptions); - - /** ServiceOptions deprecated. */ - public deprecated: boolean; - - /** ServiceOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ServiceOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceOptions instance - */ - public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; - - /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; - - /** - * Verifies a ServiceOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; - - /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. - * @param message ServiceOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ServiceOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a FieldOptions. */ + interface IFieldOptions { + /** FieldOptions ctype */ + ctype?: google.protobuf.FieldOptions.CType | null; - /** Properties of a MethodOptions. */ - interface IMethodOptions { + /** FieldOptions packed */ + packed?: boolean | null; - /** MethodOptions deprecated */ - deprecated?: (boolean|null); + /** FieldOptions jstype */ + jstype?: google.protobuf.FieldOptions.JSType | null; - /** MethodOptions idempotencyLevel */ - idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + /** FieldOptions lazy */ + lazy?: boolean | null; - /** MethodOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** FieldOptions deprecated */ + deprecated?: boolean | null; - /** MethodOptions .google.api.http */ - ".google.api.http"?: (google.api.IHttpRule|null); - } + /** FieldOptions weak */ + weak?: boolean | null; - /** Represents a MethodOptions. */ - class MethodOptions implements IMethodOptions { - - /** - * Constructs a new MethodOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodOptions); - - /** MethodOptions deprecated. */ - public deprecated: boolean; - - /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; - - /** MethodOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MethodOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodOptions instance - */ - public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; - - /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MethodOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; - - /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; - - /** - * Verifies a MethodOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; - - /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. - * @param message MethodOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MethodOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - namespace MethodOptions { + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { + /** + * Constructs a new FieldOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldOptions); + + /** FieldOptions ctype. */ + public ctype: google.protobuf.FieldOptions.CType; + + /** FieldOptions packed. */ + public packed: boolean; + + /** FieldOptions jstype. */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** FieldOptions lazy. */ + public lazy: boolean; + + /** FieldOptions deprecated. */ + public deprecated: boolean; + + /** FieldOptions weak. */ + public weak: boolean; + + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldOptions instance + */ + public static create( + properties?: google.protobuf.IFieldOptions + ): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFieldOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFieldOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FieldOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FieldOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** IdempotencyLevel enum. */ - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0, - NO_SIDE_EFFECTS = 1, - IDEMPOTENT = 2 - } - } + namespace FieldOptions { + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2, + } + + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2, + } + } - /** Properties of an UninterpretedOption. */ - interface IUninterpretedOption { + /** Properties of an OneofOptions. */ + interface IOneofOptions { + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** UninterpretedOption name */ - name?: (google.protobuf.UninterpretedOption.INamePart[]|null); + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { + /** + * Constructs a new OneofOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofOptions); + + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofOptions instance + */ + public static create( + properties?: google.protobuf.IOneofOptions + ): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IOneofOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IOneofOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.OneofOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this OneofOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** UninterpretedOption identifierValue */ - identifierValue?: (string|null); + /** Properties of an EnumOptions. */ + interface IEnumOptions { + /** EnumOptions allowAlias */ + allowAlias?: boolean | null; - /** UninterpretedOption positiveIntValue */ - positiveIntValue?: (number|Long|null); + /** EnumOptions deprecated */ + deprecated?: boolean | null; - /** UninterpretedOption negativeIntValue */ - negativeIntValue?: (number|Long|null); + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** UninterpretedOption doubleValue */ - doubleValue?: (number|null); + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { + /** + * Constructs a new EnumOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumOptions); + + /** EnumOptions allowAlias. */ + public allowAlias: boolean; + + /** EnumOptions deprecated. */ + public deprecated: boolean; + + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumOptions instance + */ + public static create( + properties?: google.protobuf.IEnumOptions + ): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** UninterpretedOption stringValue */ - stringValue?: (Uint8Array|null); + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { + /** EnumValueOptions deprecated */ + deprecated?: boolean | null; - /** UninterpretedOption aggregateValue */ - aggregateValue?: (string|null); - } + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** Represents an UninterpretedOption. */ - class UninterpretedOption implements IUninterpretedOption { - - /** - * Constructs a new UninterpretedOption. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUninterpretedOption); - - /** UninterpretedOption name. */ - public name: google.protobuf.UninterpretedOption.INamePart[]; - - /** UninterpretedOption identifierValue. */ - public identifierValue: string; - - /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: (number|Long); - - /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: (number|Long); - - /** UninterpretedOption doubleValue. */ - public doubleValue: number; - - /** UninterpretedOption stringValue. */ - public stringValue: Uint8Array; - - /** UninterpretedOption aggregateValue. */ - public aggregateValue: string; - - /** - * Creates a new UninterpretedOption instance using the specified properties. - * @param [properties] Properties to set - * @returns UninterpretedOption instance - */ - public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; - - /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; - - /** - * Verifies an UninterpretedOption message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UninterpretedOption - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; - - /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. - * @param message UninterpretedOption - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this UninterpretedOption to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); + + /** EnumValueOptions deprecated. */ + public deprecated: boolean; + + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create( + properties?: google.protobuf.IEnumValueOptions + ): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumValueOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumValueOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumValueOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - namespace UninterpretedOption { - - /** Properties of a NamePart. */ - interface INamePart { - - /** NamePart namePart */ - namePart: string; - - /** NamePart isExtension */ - isExtension: boolean; - } - - /** Represents a NamePart. */ - class NamePart implements INamePart { - - /** - * Constructs a new NamePart. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - - /** NamePart namePart. */ - public namePart: string; - - /** NamePart isExtension. */ - public isExtension: boolean; - - /** - * Creates a new NamePart instance using the specified properties. - * @param [properties] Properties to set - * @returns NamePart instance - */ - public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; - - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a NamePart message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; - - /** - * Verifies a NamePart message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NamePart - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; - - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @param message NamePart - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this NamePart to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** Properties of a ServiceOptions. */ + interface IServiceOptions { + /** ServiceOptions deprecated */ + deprecated?: boolean | null; - /** Properties of a SourceCodeInfo. */ - interface ISourceCodeInfo { + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** SourceCodeInfo location */ - location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); - } + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { + /** + * Constructs a new ServiceOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceOptions); + + /** ServiceOptions deprecated. */ + public deprecated: boolean; + + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceOptions instance + */ + public static create( + properties?: google.protobuf.IServiceOptions + ): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IServiceOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IServiceOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ServiceOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ServiceOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a SourceCodeInfo. */ - class SourceCodeInfo implements ISourceCodeInfo { - - /** - * Constructs a new SourceCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ISourceCodeInfo); - - /** SourceCodeInfo location. */ - public location: google.protobuf.SourceCodeInfo.ILocation[]; - - /** - * Creates a new SourceCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns SourceCodeInfo instance - */ - public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; - - /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; - - /** - * Verifies a SourceCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SourceCodeInfo - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; - - /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. - * @param message SourceCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this SourceCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a MethodOptions. */ + interface IMethodOptions { + /** MethodOptions deprecated */ + deprecated?: boolean | null; - namespace SourceCodeInfo { - - /** Properties of a Location. */ - interface ILocation { - - /** Location path */ - path?: (number[]|null); - - /** Location span */ - span?: (number[]|null); - - /** Location leadingComments */ - leadingComments?: (string|null); - - /** Location trailingComments */ - trailingComments?: (string|null); - - /** Location leadingDetachedComments */ - leadingDetachedComments?: (string[]|null); - } - - /** Represents a Location. */ - class Location implements ILocation { - - /** - * Constructs a new Location. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); - - /** Location path. */ - public path: number[]; - - /** Location span. */ - public span: number[]; - - /** Location leadingComments. */ - public leadingComments: string; - - /** Location trailingComments. */ - public trailingComments: string; - - /** Location leadingDetachedComments. */ - public leadingDetachedComments: string[]; - - /** - * Creates a new Location instance using the specified properties. - * @param [properties] Properties to set - * @returns Location instance - */ - public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; - - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Location message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; - - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; - - /** - * Verifies a Location message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Location - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; - - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @param message Location - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Location to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: google.protobuf.MethodOptions.IdempotencyLevel | null; - /** Properties of a GeneratedCodeInfo. */ - interface IGeneratedCodeInfo { + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - /** GeneratedCodeInfo annotation */ - annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); - } + /** MethodOptions .google.api.http */ + '.google.api.http'?: google.api.IHttpRule | null; + } - /** Represents a GeneratedCodeInfo. */ - class GeneratedCodeInfo implements IGeneratedCodeInfo { - - /** - * Constructs a new GeneratedCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IGeneratedCodeInfo); - - /** GeneratedCodeInfo annotation. */ - public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; - - /** - * Creates a new GeneratedCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns GeneratedCodeInfo instance - */ - public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; - - /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; - - /** - * Verifies a GeneratedCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GeneratedCodeInfo - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; - - /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. - * @param message GeneratedCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GeneratedCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { + /** + * Constructs a new MethodOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodOptions); + + /** MethodOptions deprecated. */ + public deprecated: boolean; + + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodOptions instance + */ + public static create( + properties?: google.protobuf.IMethodOptions + ): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMethodOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMethodOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MethodOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MethodOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - namespace GeneratedCodeInfo { - - /** Properties of an Annotation. */ - interface IAnnotation { - - /** Annotation path */ - path?: (number[]|null); - - /** Annotation sourceFile */ - sourceFile?: (string|null); - - /** Annotation begin */ - begin?: (number|null); - - /** Annotation end */ - end?: (number|null); - } - - /** Represents an Annotation. */ - class Annotation implements IAnnotation { - - /** - * Constructs a new Annotation. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - - /** Annotation path. */ - public path: number[]; - - /** Annotation sourceFile. */ - public sourceFile: string; - - /** Annotation begin. */ - public begin: number; - - /** Annotation end. */ - public end: number; - - /** - * Creates a new Annotation instance using the specified properties. - * @param [properties] Properties to set - * @returns Annotation instance - */ - public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Annotation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Verifies an Annotation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Annotation - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @param message Annotation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Annotation to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + namespace MethodOptions { + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2, + } + } - /** Properties of a Struct. */ - interface IStruct { + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { + /** UninterpretedOption name */ + name?: google.protobuf.UninterpretedOption.INamePart[] | null; - /** Struct fields */ - fields?: ({ [k: string]: google.protobuf.IValue }|null); - } + /** UninterpretedOption identifierValue */ + identifierValue?: string | null; - /** Represents a Struct. */ - class Struct implements IStruct { - - /** - * Constructs a new Struct. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStruct); - - /** Struct fields. */ - public fields: { [k: string]: google.protobuf.IValue }; - - /** - * Creates a new Struct instance using the specified properties. - * @param [properties] Properties to set - * @returns Struct instance - */ - public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; - - /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Struct message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; - - /** - * Decodes a Struct message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; - - /** - * Verifies a Struct message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Struct - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; - - /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. - * @param message Struct - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Struct to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: number | Long | null; - /** Properties of a Value. */ - interface IValue { + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: number | Long | null; - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); + /** UninterpretedOption doubleValue */ + doubleValue?: number | null; - /** Value numberValue */ - numberValue?: (number|null); + /** UninterpretedOption stringValue */ + stringValue?: Uint8Array | null; - /** Value stringValue */ - stringValue?: (string|null); + /** UninterpretedOption aggregateValue */ + aggregateValue?: string | null; + } - /** Value boolValue */ - boolValue?: (boolean|null); + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { + /** + * Constructs a new UninterpretedOption. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; + + /** UninterpretedOption identifierValue. */ + public identifierValue: string; + + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: number | Long; + + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: number | Long; + + /** UninterpretedOption doubleValue. */ + public doubleValue: number; + + /** UninterpretedOption stringValue. */ + public stringValue: Uint8Array; + + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param [properties] Properties to set + * @returns UninterpretedOption instance + */ + public static create( + properties?: google.protobuf.IUninterpretedOption + ): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IUninterpretedOption, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IUninterpretedOption, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UninterpretedOption + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UninterpretedOption, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this UninterpretedOption to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Value structValue */ - structValue?: (google.protobuf.IStruct|null); + namespace UninterpretedOption { + /** Properties of a NamePart. */ + interface INamePart { + /** NamePart namePart */ + namePart: string; + + /** NamePart isExtension */ + isExtension: boolean; + } + + /** Represents a NamePart. */ + class NamePart implements INamePart { + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); + + /** NamePart namePart. */ + public namePart: string; + + /** NamePart isExtension. */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create( + properties?: google.protobuf.UninterpretedOption.INamePart + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.UninterpretedOption.INamePart, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.UninterpretedOption.INamePart, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UninterpretedOption.NamePart, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** Value listValue */ - listValue?: (google.protobuf.IListValue|null); - } + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { + /** SourceCodeInfo location */ + location?: google.protobuf.SourceCodeInfo.ILocation[] | null; + } - /** Represents a Value. */ - class Value implements IValue { - - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value numberValue. */ - public numberValue: number; - - /** Value stringValue. */ - public stringValue: string; - - /** Value boolValue. */ - public boolValue: boolean; - - /** Value structValue. */ - public structValue?: (google.protobuf.IStruct|null); - - /** Value listValue. */ - public listValue?: (google.protobuf.IListValue|null); - - /** Value kind. */ - public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create(properties?: google.protobuf.IValue): google.protobuf.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); + + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns SourceCodeInfo instance + */ + public static create( + properties?: google.protobuf.ISourceCodeInfo + ): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.ISourceCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.ISourceCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SourceCodeInfo + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.SourceCodeInfo, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** NullValue enum. */ - enum NullValue { - NULL_VALUE = 0 - } + namespace SourceCodeInfo { + /** Properties of a Location. */ + interface ILocation { + /** Location path */ + path?: number[] | null; + + /** Location span */ + span?: number[] | null; + + /** Location leadingComments */ + leadingComments?: string | null; + + /** Location trailingComments */ + trailingComments?: string | null; + + /** Location leadingDetachedComments */ + leadingDetachedComments?: string[] | null; + } + + /** Represents a Location. */ + class Location implements ILocation { + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + + /** Location path. */ + public path: number[]; + + /** Location span. */ + public span: number[]; + + /** Location leadingComments. */ + public leadingComments: string; + + /** Location trailingComments. */ + public trailingComments: string; + + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create( + properties?: google.protobuf.SourceCodeInfo.ILocation + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.SourceCodeInfo.ILocation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.SourceCodeInfo.ILocation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.SourceCodeInfo.Location, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** Properties of a ListValue. */ - interface IListValue { + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + /** GeneratedCodeInfo annotation */ + annotation?: google.protobuf.GeneratedCodeInfo.IAnnotation[] | null; + } - /** ListValue values */ - values?: (google.protobuf.IValue[]|null); - } + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { + /** + * Constructs a new GeneratedCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create( + properties?: google.protobuf.IGeneratedCodeInfo + ): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IGeneratedCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IGeneratedCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GeneratedCodeInfo + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.GeneratedCodeInfo, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a ListValue. */ - class ListValue implements IListValue { - - /** - * Constructs a new ListValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IListValue); - - /** ListValue values. */ - public values: google.protobuf.IValue[]; - - /** - * Creates a new ListValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ListValue instance - */ - public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; - - /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ListValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; - - /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; - - /** - * Verifies a ListValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ListValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; - - /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. - * @param message ListValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ListValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + namespace GeneratedCodeInfo { + /** Properties of an Annotation. */ + interface IAnnotation { + /** Annotation path */ + path?: number[] | null; + + /** Annotation sourceFile */ + sourceFile?: string | null; + + /** Annotation begin */ + begin?: number | null; + + /** Annotation end */ + end?: number | null; + } + + /** Represents an Annotation. */ + class Annotation implements IAnnotation { + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); + + /** Annotation path. */ + public path: number[]; + + /** Annotation sourceFile. */ + public sourceFile: string; + + /** Annotation begin. */ + public begin: number; + + /** Annotation end. */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create( + properties?: google.protobuf.GeneratedCodeInfo.IAnnotation + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.GeneratedCodeInfo.IAnnotation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.GeneratedCodeInfo.IAnnotation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.GeneratedCodeInfo.Annotation, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** Properties of a Timestamp. */ - interface ITimestamp { + /** Properties of a Struct. */ + interface IStruct { + /** Struct fields */ + fields?: {[k: string]: google.protobuf.IValue} | null; + } - /** Timestamp seconds */ - seconds?: (number|Long|null); + /** Represents a Struct. */ + class Struct implements IStruct { + /** + * Constructs a new Struct. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStruct); + + /** Struct fields. */ + public fields: {[k: string]: google.protobuf.IValue}; + + /** + * Creates a new Struct instance using the specified properties. + * @param [properties] Properties to set + * @returns Struct instance + */ + public static create( + properties?: google.protobuf.IStruct + ): google.protobuf.Struct; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IStruct, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IStruct, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Struct; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Struct; + + /** + * Verifies a Struct message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Struct + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Struct; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Struct, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Struct to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Timestamp nanos */ - nanos?: (number|null); - } + /** Properties of a Value. */ + interface IValue { + /** Value nullValue */ + nullValue?: google.protobuf.NullValue | null; - /** Represents a Timestamp. */ - class Timestamp implements ITimestamp { - - /** - * Constructs a new Timestamp. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ITimestamp); - - /** Timestamp seconds. */ - public seconds: (number|Long); - - /** Timestamp nanos. */ - public nanos: number; - - /** - * Creates a new Timestamp instance using the specified properties. - * @param [properties] Properties to set - * @returns Timestamp instance - */ - public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; - - /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Timestamp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; - - /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; - - /** - * Verifies a Timestamp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Timestamp - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; - - /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. - * @param message Timestamp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Timestamp to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Value numberValue */ + numberValue?: number | null; - /** Properties of a DoubleValue. */ - interface IDoubleValue { + /** Value stringValue */ + stringValue?: string | null; - /** DoubleValue value */ - value?: (number|null); - } + /** Value boolValue */ + boolValue?: boolean | null; - /** Represents a DoubleValue. */ - class DoubleValue implements IDoubleValue { - - /** - * Constructs a new DoubleValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDoubleValue); - - /** DoubleValue value. */ - public value: number; - - /** - * Creates a new DoubleValue instance using the specified properties. - * @param [properties] Properties to set - * @returns DoubleValue instance - */ - public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue; - - /** - * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a DoubleValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DoubleValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue; - - /** - * Decodes a DoubleValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DoubleValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue; - - /** - * Verifies a DoubleValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DoubleValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue; - - /** - * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. - * @param message DoubleValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this DoubleValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Value structValue */ + structValue?: google.protobuf.IStruct | null; - /** Properties of a FloatValue. */ - interface IFloatValue { + /** Value listValue */ + listValue?: google.protobuf.IListValue | null; + } - /** FloatValue value */ - value?: (number|null); - } + /** Represents a Value. */ + class Value implements IValue { + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value numberValue. */ + public numberValue: number; + + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: google.protobuf.IStruct | null; + + /** Value listValue. */ + public listValue?: google.protobuf.IListValue | null; + + /** Value kind. */ + public kind?: + | 'nullValue' + | 'numberValue' + | 'stringValue' + | 'boolValue' + | 'structValue' + | 'listValue'; + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create( + properties?: google.protobuf.IValue + ): google.protobuf.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a FloatValue. */ - class FloatValue implements IFloatValue { - - /** - * Constructs a new FloatValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFloatValue); - - /** FloatValue value. */ - public value: number; - - /** - * Creates a new FloatValue instance using the specified properties. - * @param [properties] Properties to set - * @returns FloatValue instance - */ - public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue; - - /** - * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FloatValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FloatValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue; - - /** - * Decodes a FloatValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FloatValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue; - - /** - * Verifies a FloatValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FloatValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue; - - /** - * Creates a plain object from a FloatValue message. Also converts values to other types if specified. - * @param message FloatValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FloatValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0, + } - /** Properties of an Int64Value. */ - interface IInt64Value { + /** Properties of a ListValue. */ + interface IListValue { + /** ListValue values */ + values?: google.protobuf.IValue[] | null; + } - /** Int64Value value */ - value?: (number|Long|null); - } + /** Represents a ListValue. */ + class ListValue implements IListValue { + /** + * Constructs a new ListValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IListValue); + + /** ListValue values. */ + public values: google.protobuf.IValue[]; + + /** + * Creates a new ListValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ListValue instance + */ + public static create( + properties?: google.protobuf.IListValue + ): google.protobuf.ListValue; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IListValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IListValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ListValue; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ListValue; + + /** + * Verifies a ListValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ListValue; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ListValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents an Int64Value. */ - class Int64Value implements IInt64Value { - - /** - * Constructs a new Int64Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IInt64Value); - - /** Int64Value value. */ - public value: (number|Long); - - /** - * Creates a new Int64Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Int64Value instance - */ - public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value; - - /** - * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Int64Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Int64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value; - - /** - * Decodes an Int64Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Int64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value; - - /** - * Verifies an Int64Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Int64Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value; - - /** - * Creates a plain object from an Int64Value message. Also converts values to other types if specified. - * @param message Int64Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Int64Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a Timestamp. */ + interface ITimestamp { + /** Timestamp seconds */ + seconds?: number | Long | null; - /** Properties of a UInt64Value. */ - interface IUInt64Value { + /** Timestamp nanos */ + nanos?: number | null; + } - /** UInt64Value value */ - value?: (number|Long|null); - } + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { + /** + * Constructs a new Timestamp. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ITimestamp); + + /** Timestamp seconds. */ + public seconds: number | Long; + + /** Timestamp nanos. */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param [properties] Properties to set + * @returns Timestamp instance + */ + public static create( + properties?: google.protobuf.ITimestamp + ): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.ITimestamp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.ITimestamp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Timestamp + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Timestamp, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Timestamp to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a UInt64Value. */ - class UInt64Value implements IUInt64Value { - - /** - * Constructs a new UInt64Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUInt64Value); - - /** UInt64Value value. */ - public value: (number|Long); - - /** - * Creates a new UInt64Value instance using the specified properties. - * @param [properties] Properties to set - * @returns UInt64Value instance - */ - public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value; - - /** - * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a UInt64Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UInt64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value; - - /** - * Decodes a UInt64Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UInt64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value; - - /** - * Verifies a UInt64Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UInt64Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value; - - /** - * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. - * @param message UInt64Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this UInt64Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a DoubleValue. */ + interface IDoubleValue { + /** DoubleValue value */ + value?: number | null; + } - /** Properties of an Int32Value. */ - interface IInt32Value { + /** Represents a DoubleValue. */ + class DoubleValue implements IDoubleValue { + /** + * Constructs a new DoubleValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDoubleValue); + + /** DoubleValue value. */ + public value: number; + + /** + * Creates a new DoubleValue instance using the specified properties. + * @param [properties] Properties to set + * @returns DoubleValue instance + */ + public static create( + properties?: google.protobuf.IDoubleValue + ): google.protobuf.DoubleValue; + + /** + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IDoubleValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IDoubleValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a DoubleValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DoubleValue; + + /** + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DoubleValue; + + /** + * Verifies a DoubleValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DoubleValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DoubleValue; + + /** + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @param message DoubleValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DoubleValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this DoubleValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Int32Value value */ - value?: (number|null); - } + /** Properties of a FloatValue. */ + interface IFloatValue { + /** FloatValue value */ + value?: number | null; + } - /** Represents an Int32Value. */ - class Int32Value implements IInt32Value { - - /** - * Constructs a new Int32Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IInt32Value); - - /** Int32Value value. */ - public value: number; - - /** - * Creates a new Int32Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Int32Value instance - */ - public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value; - - /** - * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Int32Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Int32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value; - - /** - * Decodes an Int32Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Int32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value; - - /** - * Verifies an Int32Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Int32Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value; - - /** - * Creates a plain object from an Int32Value message. Also converts values to other types if specified. - * @param message Int32Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Int32Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a FloatValue. */ + class FloatValue implements IFloatValue { + /** + * Constructs a new FloatValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFloatValue); + + /** FloatValue value. */ + public value: number; + + /** + * Creates a new FloatValue instance using the specified properties. + * @param [properties] Properties to set + * @returns FloatValue instance + */ + public static create( + properties?: google.protobuf.IFloatValue + ): google.protobuf.FloatValue; + + /** + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFloatValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFloatValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FloatValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FloatValue; + + /** + * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FloatValue; + + /** + * Verifies a FloatValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FloatValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FloatValue; + + /** + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * @param message FloatValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FloatValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FloatValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of a UInt32Value. */ - interface IUInt32Value { + /** Properties of an Int64Value. */ + interface IInt64Value { + /** Int64Value value */ + value?: number | Long | null; + } - /** UInt32Value value */ - value?: (number|null); - } + /** Represents an Int64Value. */ + class Int64Value implements IInt64Value { + /** + * Constructs a new Int64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt64Value); + + /** Int64Value value. */ + public value: number | Long; + + /** + * Creates a new Int64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int64Value instance + */ + public static create( + properties?: google.protobuf.IInt64Value + ): google.protobuf.Int64Value; + + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IInt64Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IInt64Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Int64Value; + + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Int64Value; + + /** + * Verifies an Int64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int64Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Int64Value; + + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @param message Int64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Int64Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Int64Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a UInt32Value. */ - class UInt32Value implements IUInt32Value { - - /** - * Constructs a new UInt32Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUInt32Value); - - /** UInt32Value value. */ - public value: number; - - /** - * Creates a new UInt32Value instance using the specified properties. - * @param [properties] Properties to set - * @returns UInt32Value instance - */ - public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value; - - /** - * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a UInt32Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UInt32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value; - - /** - * Decodes a UInt32Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UInt32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value; - - /** - * Verifies a UInt32Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UInt32Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value; - - /** - * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. - * @param message UInt32Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this UInt32Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a UInt64Value. */ + interface IUInt64Value { + /** UInt64Value value */ + value?: number | Long | null; + } - /** Properties of a BoolValue. */ - interface IBoolValue { + /** Represents a UInt64Value. */ + class UInt64Value implements IUInt64Value { + /** + * Constructs a new UInt64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt64Value); + + /** UInt64Value value. */ + public value: number | Long; + + /** + * Creates a new UInt64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt64Value instance + */ + public static create( + properties?: google.protobuf.IUInt64Value + ): google.protobuf.UInt64Value; + + /** + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IUInt64Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IUInt64Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a UInt64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UInt64Value; + + /** + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UInt64Value; + + /** + * Verifies a UInt64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt64Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UInt64Value; + + /** + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * @param message UInt64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UInt64Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this UInt64Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** BoolValue value */ - value?: (boolean|null); - } + /** Properties of an Int32Value. */ + interface IInt32Value { + /** Int32Value value */ + value?: number | null; + } - /** Represents a BoolValue. */ - class BoolValue implements IBoolValue { - - /** - * Constructs a new BoolValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IBoolValue); - - /** BoolValue value. */ - public value: boolean; - - /** - * Creates a new BoolValue instance using the specified properties. - * @param [properties] Properties to set - * @returns BoolValue instance - */ - public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue; - - /** - * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a BoolValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BoolValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue; - - /** - * Decodes a BoolValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BoolValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue; - - /** - * Verifies a BoolValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BoolValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue; - - /** - * Creates a plain object from a BoolValue message. Also converts values to other types if specified. - * @param message BoolValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this BoolValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents an Int32Value. */ + class Int32Value implements IInt32Value { + /** + * Constructs a new Int32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt32Value); + + /** Int32Value value. */ + public value: number; + + /** + * Creates a new Int32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int32Value instance + */ + public static create( + properties?: google.protobuf.IInt32Value + ): google.protobuf.Int32Value; + + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IInt32Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IInt32Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Int32Value; + + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Int32Value; + + /** + * Verifies an Int32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int32Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Int32Value; + + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @param message Int32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Int32Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Int32Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of a StringValue. */ - interface IStringValue { + /** Properties of a UInt32Value. */ + interface IUInt32Value { + /** UInt32Value value */ + value?: number | null; + } - /** StringValue value */ - value?: (string|null); - } + /** Represents a UInt32Value. */ + class UInt32Value implements IUInt32Value { + /** + * Constructs a new UInt32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUInt32Value); + + /** UInt32Value value. */ + public value: number; + + /** + * Creates a new UInt32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns UInt32Value instance + */ + public static create( + properties?: google.protobuf.IUInt32Value + ): google.protobuf.UInt32Value; + + /** + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IUInt32Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IUInt32Value, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a UInt32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UInt32Value; + + /** + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UInt32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UInt32Value; + + /** + * Verifies a UInt32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UInt32Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UInt32Value; + + /** + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * @param message UInt32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UInt32Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this UInt32Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a StringValue. */ - class StringValue implements IStringValue { - - /** - * Constructs a new StringValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStringValue); - - /** StringValue value. */ - public value: string; - - /** - * Creates a new StringValue instance using the specified properties. - * @param [properties] Properties to set - * @returns StringValue instance - */ - public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue; - - /** - * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a StringValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns StringValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue; - - /** - * Decodes a StringValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns StringValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue; - - /** - * Verifies a StringValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a StringValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns StringValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue; - - /** - * Creates a plain object from a StringValue message. Also converts values to other types if specified. - * @param message StringValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this StringValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a BoolValue. */ + interface IBoolValue { + /** BoolValue value */ + value?: boolean | null; + } - /** Properties of a BytesValue. */ - interface IBytesValue { + /** Represents a BoolValue. */ + class BoolValue implements IBoolValue { + /** + * Constructs a new BoolValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBoolValue); + + /** BoolValue value. */ + public value: boolean; + + /** + * Creates a new BoolValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BoolValue instance + */ + public static create( + properties?: google.protobuf.IBoolValue + ): google.protobuf.BoolValue; + + /** + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IBoolValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IBoolValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a BoolValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.BoolValue; + + /** + * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.BoolValue; + + /** + * Verifies a BoolValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BoolValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.BoolValue; + + /** + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @param message BoolValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.BoolValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this BoolValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** BytesValue value */ - value?: (Uint8Array|null); - } + /** Properties of a StringValue. */ + interface IStringValue { + /** StringValue value */ + value?: string | null; + } - /** Represents a BytesValue. */ - class BytesValue implements IBytesValue { - - /** - * Constructs a new BytesValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IBytesValue); - - /** BytesValue value. */ - public value: Uint8Array; - - /** - * Creates a new BytesValue instance using the specified properties. - * @param [properties] Properties to set - * @returns BytesValue instance - */ - public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue; - - /** - * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a BytesValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BytesValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue; - - /** - * Decodes a BytesValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BytesValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue; - - /** - * Verifies a BytesValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BytesValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue; - - /** - * Creates a plain object from a BytesValue message. Also converts values to other types if specified. - * @param message BytesValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this BytesValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a StringValue. */ + class StringValue implements IStringValue { + /** + * Constructs a new StringValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStringValue); + + /** StringValue value. */ + public value: string; + + /** + * Creates a new StringValue instance using the specified properties. + * @param [properties] Properties to set + * @returns StringValue instance + */ + public static create( + properties?: google.protobuf.IStringValue + ): google.protobuf.StringValue; + + /** + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IStringValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IStringValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a StringValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.StringValue; + + /** + * Decodes a StringValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns StringValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.StringValue; + + /** + * Verifies a StringValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns StringValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.StringValue; + + /** + * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * @param message StringValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.StringValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this StringValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } - /** Namespace type. */ - namespace type { + /** Properties of a BytesValue. */ + interface IBytesValue { + /** BytesValue value */ + value?: Uint8Array | null; + } - /** Properties of a LatLng. */ - interface ILatLng { + /** Represents a BytesValue. */ + class BytesValue implements IBytesValue { + /** + * Constructs a new BytesValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBytesValue); + + /** BytesValue value. */ + public value: Uint8Array; + + /** + * Creates a new BytesValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BytesValue instance + */ + public static create( + properties?: google.protobuf.IBytesValue + ): google.protobuf.BytesValue; + + /** + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IBytesValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IBytesValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a BytesValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.BytesValue; + + /** + * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BytesValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.BytesValue; + + /** + * Verifies a BytesValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BytesValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.BytesValue; + + /** + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * @param message BytesValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.BytesValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this BytesValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** LatLng latitude */ - latitude?: (number|null); + /** Namespace type. */ + namespace type { + /** Properties of a LatLng. */ + interface ILatLng { + /** LatLng latitude */ + latitude?: number | null; - /** LatLng longitude */ - longitude?: (number|null); - } + /** LatLng longitude */ + longitude?: number | null; + } - /** Represents a LatLng. */ - class LatLng implements ILatLng { - - /** - * Constructs a new LatLng. - * @param [properties] Properties to set - */ - constructor(properties?: google.type.ILatLng); - - /** LatLng latitude. */ - public latitude: number; - - /** LatLng longitude. */ - public longitude: number; - - /** - * Creates a new LatLng instance using the specified properties. - * @param [properties] Properties to set - * @returns LatLng instance - */ - public static create(properties?: google.type.ILatLng): google.type.LatLng; - - /** - * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a LatLng message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.LatLng; - - /** - * Decodes a LatLng message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.LatLng; - - /** - * Verifies a LatLng message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a LatLng message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LatLng - */ - public static fromObject(object: { [k: string]: any }): google.type.LatLng; - - /** - * Creates a plain object from a LatLng message. Also converts values to other types if specified. - * @param message LatLng - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.type.LatLng, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this LatLng to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a LatLng. */ + class LatLng implements ILatLng { + /** + * Constructs a new LatLng. + * @param [properties] Properties to set + */ + constructor(properties?: google.type.ILatLng); + + /** LatLng latitude. */ + public latitude: number; + + /** LatLng longitude. */ + public longitude: number; + + /** + * Creates a new LatLng instance using the specified properties. + * @param [properties] Properties to set + * @returns LatLng instance + */ + public static create( + properties?: google.type.ILatLng + ): google.type.LatLng; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.type.ILatLng, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.type.ILatLng, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.type.LatLng; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.type.LatLng; + + /** + * Verifies a LatLng message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LatLng + */ + public static fromObject(object: {[k: string]: any}): google.type.LatLng; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @param message LatLng + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.type.LatLng, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this LatLng to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } + } } diff --git a/handwritten/nodejs-datastore/proto/entity.d.ts b/handwritten/nodejs-datastore/proto/entity.d.ts index 752fdc28371..9fa85e861e5 100644 --- a/handwritten/nodejs-datastore/proto/entity.d.ts +++ b/handwritten/nodejs-datastore/proto/entity.d.ts @@ -1,4613 +1,5270 @@ -import * as $protobuf from "protobufjs"; +import * as $protobuf from 'protobufjs'; /** Namespace google. */ export namespace google { - - /** Namespace datastore. */ - namespace datastore { - - /** Namespace v1. */ - namespace v1 { - - /** Properties of a PartitionId. */ - interface IPartitionId { - - /** PartitionId projectId */ - projectId?: (string|null); - - /** PartitionId namespaceId */ - namespaceId?: (string|null); - } - - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { - - /** - * Constructs a new PartitionId. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPartitionId); - - /** PartitionId projectId. */ - public projectId: string; - - /** PartitionId namespaceId. */ - public namespaceId: string; - - /** - * Creates a new PartitionId instance using the specified properties. - * @param [properties] Properties to set - * @returns PartitionId instance - */ - public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; - - /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PartitionId message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; - - /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; - - /** - * Verifies a PartitionId message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PartitionId - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; - - /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PartitionId to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Key. */ - interface IKey { - - /** Key partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); - - /** Key path */ - path?: (google.datastore.v1.Key.IPathElement[]|null); - } - - /** Represents a Key. */ - class Key implements IKey { - - /** - * Constructs a new Key. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKey); - - /** Key partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); - - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; - - /** - * Creates a new Key instance using the specified properties. - * @param [properties] Properties to set - * @returns Key instance - */ - public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; - - /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Key message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; - - /** - * Decodes a Key message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; - - /** - * Verifies a Key message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Key - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; - - /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Key to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace Key { - - /** Properties of a PathElement. */ - interface IPathElement { - - /** PathElement kind */ - kind?: (string|null); - - /** PathElement id */ - id?: (number|Long|null); - - /** PathElement name */ - name?: (string|null); - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id: (number|Long); - - /** PathElement name. */ - public name: string; - - /** PathElement idType. */ - public idType?: ("id"|"name"); - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } - - /** Properties of an ArrayValue. */ - interface IArrayValue { - - /** ArrayValue values */ - values?: (google.datastore.v1.IValue[]|null); - } - - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { - - /** - * Constructs a new ArrayValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IArrayValue); - - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; - - /** - * Creates a new ArrayValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ArrayValue instance - */ - public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; - - /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ArrayValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; - - /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; - - /** - * Verifies an ArrayValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ArrayValue - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; - - /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ArrayValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Value. */ - interface IValue { - - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); - - /** Value booleanValue */ - booleanValue?: (boolean|null); - - /** Value integerValue */ - integerValue?: (number|Long|null); - - /** Value doubleValue */ - doubleValue?: (number|null); - - /** Value timestampValue */ - timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue */ - keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue */ - stringValue?: (string|null); - - /** Value blobValue */ - blobValue?: (Uint8Array|null); - - /** Value geoPointValue */ - geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue */ - entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue */ - arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning */ - meaning?: (number|null); - - /** Value excludeFromIndexes */ - excludeFromIndexes?: (boolean|null); - } - - /** Represents a Value. */ - class Value implements IValue { - - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value booleanValue. */ - public booleanValue: boolean; - - /** Value integerValue. */ - public integerValue: (number|Long); - - /** Value doubleValue. */ - public doubleValue: number; - - /** Value timestampValue. */ - public timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue. */ - public keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue. */ - public stringValue: string; - - /** Value blobValue. */ - public blobValue: Uint8Array; - - /** Value geoPointValue. */ - public geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue. */ - public entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue. */ - public arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning. */ - public meaning: number; - - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; - - /** Value valueType. */ - public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an Entity. */ - interface IEntity { - - /** Entity key */ - key?: (google.datastore.v1.IKey|null); - - /** Entity properties */ - properties?: ({ [k: string]: google.datastore.v1.IValue }|null); - } - - /** Represents an Entity. */ - class Entity implements IEntity { - - /** - * Constructs a new Entity. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntity); - - /** Entity key. */ - public key?: (google.datastore.v1.IKey|null); - - /** Entity properties. */ - public properties: { [k: string]: google.datastore.v1.IValue }; - - /** - * Creates a new Entity instance using the specified properties. - * @param [properties] Properties to set - * @returns Entity instance - */ - public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; - - /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Entity message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; - - /** - * Decodes an Entity message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; - - /** - * Verifies an Entity message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Entity - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; - - /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Entity to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } - } - - /** Namespace api. */ - namespace api { - - /** Properties of a Http. */ - interface IHttp { - - /** Http rules */ - rules?: (google.api.IHttpRule[]|null); - - /** Http fullyDecodeReservedExpansion */ - fullyDecodeReservedExpansion?: (boolean|null); - } - - /** Represents a Http. */ - class Http implements IHttp { - - /** - * Constructs a new Http. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttp); - - /** Http rules. */ - public rules: google.api.IHttpRule[]; - - /** Http fullyDecodeReservedExpansion. */ - public fullyDecodeReservedExpansion: boolean; - - /** - * Creates a new Http instance using the specified properties. - * @param [properties] Properties to set - * @returns Http instance - */ - public static create(properties?: google.api.IHttp): google.api.Http; - - /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Http message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; - - /** - * Decodes a Http message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; - - /** - * Verifies a Http message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Http - */ - public static fromObject(object: { [k: string]: any }): google.api.Http; - - /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @param message Http - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Http to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a HttpRule. */ - interface IHttpRule { - - /** HttpRule selector */ - selector?: (string|null); - - /** HttpRule get */ - get?: (string|null); - - /** HttpRule put */ - put?: (string|null); - - /** HttpRule post */ - post?: (string|null); - - /** HttpRule delete */ - "delete"?: (string|null); - - /** HttpRule patch */ - patch?: (string|null); - - /** HttpRule custom */ - custom?: (google.api.ICustomHttpPattern|null); - - /** HttpRule body */ - body?: (string|null); - - /** HttpRule responseBody */ - responseBody?: (string|null); - - /** HttpRule additionalBindings */ - additionalBindings?: (google.api.IHttpRule[]|null); - } - - /** Represents a HttpRule. */ - class HttpRule implements IHttpRule { - - /** - * Constructs a new HttpRule. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttpRule); - - /** HttpRule selector. */ - public selector: string; - - /** HttpRule get. */ - public get: string; - - /** HttpRule put. */ - public put: string; - - /** HttpRule post. */ - public post: string; - - /** HttpRule delete. */ - public delete: string; - - /** HttpRule patch. */ - public patch: string; - - /** HttpRule custom. */ - public custom?: (google.api.ICustomHttpPattern|null); - - /** HttpRule body. */ - public body: string; - - /** HttpRule responseBody. */ - public responseBody: string; - - /** HttpRule additionalBindings. */ - public additionalBindings: google.api.IHttpRule[]; - - /** HttpRule pattern. */ - public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); - - /** - * Creates a new HttpRule instance using the specified properties. - * @param [properties] Properties to set - * @returns HttpRule instance - */ - public static create(properties?: google.api.IHttpRule): google.api.HttpRule; - - /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a HttpRule message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; - - /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; - - /** - * Verifies a HttpRule message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns HttpRule - */ - public static fromObject(object: { [k: string]: any }): google.api.HttpRule; - - /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @param message HttpRule - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this HttpRule to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CustomHttpPattern. */ - interface ICustomHttpPattern { - - /** CustomHttpPattern kind */ - kind?: (string|null); - - /** CustomHttpPattern path */ - path?: (string|null); + /** Namespace datastore. */ + namespace datastore { + /** Namespace v1. */ + namespace v1 { + /** Properties of a PartitionId. */ + interface IPartitionId { + /** PartitionId projectId */ + projectId?: string | null; + + /** PartitionId namespaceId */ + namespaceId?: string | null; + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create( + properties?: google.datastore.v1.IPartitionId + ): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IPartitionId, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IPartitionId, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.PartitionId, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Key. */ + interface IKey { + /** Key partitionId */ + partitionId?: google.datastore.v1.IPartitionId | null; + + /** Key path */ + path?: google.datastore.v1.Key.IPathElement[] | null; + } + + /** Represents a Key. */ + class Key implements IKey { + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: google.datastore.v1.IPartitionId | null; + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create( + properties?: google.datastore.v1.IKey + ): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IKey, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IKey, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Key, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + namespace Key { + /** Properties of a PathElement. */ + interface IPathElement { + /** PathElement kind */ + kind?: string | null; + + /** PathElement id */ + id?: number | Long | null; + + /** PathElement name */ + name?: string | null; } - /** Represents a CustomHttpPattern. */ - class CustomHttpPattern implements ICustomHttpPattern { - - /** - * Constructs a new CustomHttpPattern. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.ICustomHttpPattern); - - /** CustomHttpPattern kind. */ - public kind: string; - - /** CustomHttpPattern path. */ - public path: string; - - /** - * Creates a new CustomHttpPattern instance using the specified properties. - * @param [properties] Properties to set - * @returns CustomHttpPattern instance - */ - public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; - - /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; - - /** - * Verifies a CustomHttpPattern message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CustomHttpPattern - */ - public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; - - /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @param message CustomHttpPattern - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this CustomHttpPattern to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** Represents a PathElement. */ + class PathElement implements IPathElement { + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: number | Long; + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: 'id' | 'name'; + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create( + properties?: google.datastore.v1.Key.IPathElement + ): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.Key.IPathElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.Key.IPathElement, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Key.PathElement, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + /** ArrayValue values */ + values?: google.datastore.v1.IValue[] | null; + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create( + properties?: google.datastore.v1.IArrayValue + ): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IArrayValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IArrayValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.ArrayValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a Value. */ + interface IValue { + /** Value nullValue */ + nullValue?: google.protobuf.NullValue | null; + + /** Value booleanValue */ + booleanValue?: boolean | null; + + /** Value integerValue */ + integerValue?: number | Long | null; + + /** Value doubleValue */ + doubleValue?: number | null; + + /** Value timestampValue */ + timestampValue?: google.protobuf.ITimestamp | null; + + /** Value keyValue */ + keyValue?: google.datastore.v1.IKey | null; + + /** Value stringValue */ + stringValue?: string | null; + + /** Value blobValue */ + blobValue?: Uint8Array | null; + + /** Value geoPointValue */ + geoPointValue?: google.type.ILatLng | null; + + /** Value entityValue */ + entityValue?: google.datastore.v1.IEntity | null; + + /** Value arrayValue */ + arrayValue?: google.datastore.v1.IArrayValue | null; + + /** Value meaning */ + meaning?: number | null; + + /** Value excludeFromIndexes */ + excludeFromIndexes?: boolean | null; + } + + /** Represents a Value. */ + class Value implements IValue { + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: number | Long; + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: google.protobuf.ITimestamp | null; + + /** Value keyValue. */ + public keyValue?: google.datastore.v1.IKey | null; + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: Uint8Array; + + /** Value geoPointValue. */ + public geoPointValue?: google.type.ILatLng | null; + + /** Value entityValue. */ + public entityValue?: google.datastore.v1.IEntity | null; + + /** Value arrayValue. */ + public arrayValue?: google.datastore.v1.IArrayValue | null; + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: + | 'nullValue' + | 'booleanValue' + | 'integerValue' + | 'doubleValue' + | 'timestampValue' + | 'keyValue' + | 'stringValue' + | 'blobValue' + | 'geoPointValue' + | 'entityValue' + | 'arrayValue'; + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create( + properties?: google.datastore.v1.IValue + ): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of an Entity. */ + interface IEntity { + /** Entity key */ + key?: google.datastore.v1.IKey | null; + + /** Entity properties */ + properties?: {[k: string]: google.datastore.v1.IValue} | null; + } + + /** Represents an Entity. */ + class Entity implements IEntity { + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: google.datastore.v1.IKey | null; + + /** Entity properties. */ + public properties: {[k: string]: google.datastore.v1.IValue}; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create( + properties?: google.datastore.v1.IEntity + ): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.datastore.v1.IEntity, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.datastore.v1.IEntity, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { + [k: string]: any; + }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.datastore.v1.Entity, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } } + } - /** Namespace protobuf. */ - namespace protobuf { - - /** Properties of a FileDescriptorSet. */ - interface IFileDescriptorSet { - - /** FileDescriptorSet file */ - file?: (google.protobuf.IFileDescriptorProto[]|null); - } - - /** Represents a FileDescriptorSet. */ - class FileDescriptorSet implements IFileDescriptorSet { - - /** - * Constructs a new FileDescriptorSet. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorSet); - - /** FileDescriptorSet file. */ - public file: google.protobuf.IFileDescriptorProto[]; - - /** - * Creates a new FileDescriptorSet instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorSet instance - */ - public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; - - /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; - - /** - * Verifies a FileDescriptorSet message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorSet - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; - - /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @param message FileDescriptorSet - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileDescriptorSet to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a FileDescriptorProto. */ - interface IFileDescriptorProto { - - /** FileDescriptorProto name */ - name?: (string|null); - - /** FileDescriptorProto package */ - "package"?: (string|null); - - /** FileDescriptorProto dependency */ - dependency?: (string[]|null); - - /** FileDescriptorProto publicDependency */ - publicDependency?: (number[]|null); - - /** FileDescriptorProto weakDependency */ - weakDependency?: (number[]|null); - - /** FileDescriptorProto messageType */ - messageType?: (google.protobuf.IDescriptorProto[]|null); - - /** FileDescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); - - /** FileDescriptorProto service */ - service?: (google.protobuf.IServiceDescriptorProto[]|null); - - /** FileDescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** FileDescriptorProto options */ - options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo */ - sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + /** Namespace api. */ + namespace api { + /** Properties of a Http. */ + interface IHttp { + /** Http rules */ + rules?: google.api.IHttpRule[] | null; - /** FileDescriptorProto syntax */ - syntax?: (string|null); - } - - /** Represents a FileDescriptorProto. */ - class FileDescriptorProto implements IFileDescriptorProto { - - /** - * Constructs a new FileDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorProto); - - /** FileDescriptorProto name. */ - public name: string; - - /** FileDescriptorProto package. */ - public package: string; - - /** FileDescriptorProto dependency. */ - public dependency: string[]; - - /** FileDescriptorProto publicDependency. */ - public publicDependency: number[]; - - /** FileDescriptorProto weakDependency. */ - public weakDependency: number[]; - - /** FileDescriptorProto messageType. */ - public messageType: google.protobuf.IDescriptorProto[]; - - /** FileDescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** FileDescriptorProto service. */ - public service: google.protobuf.IServiceDescriptorProto[]; - - /** FileDescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** FileDescriptorProto options. */ - public options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo. */ - public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); - - /** FileDescriptorProto syntax. */ - public syntax: string; - - /** - * Creates a new FileDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorProto instance - */ - public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; - - /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; - - /** - * Verifies a FileDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; - - /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @param message FileDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a DescriptorProto. */ - interface IDescriptorProto { - - /** DescriptorProto name */ - name?: (string|null); - - /** DescriptorProto field */ - field?: (google.protobuf.IFieldDescriptorProto[]|null); + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: boolean | null; + } - /** DescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); + /** Represents a Http. */ + class Http implements IHttp { + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.IHttp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.IHttp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: {[k: string]: any}): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.Http, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** DescriptorProto nestedType */ - nestedType?: (google.protobuf.IDescriptorProto[]|null); + /** Properties of a HttpRule. */ + interface IHttpRule { + /** HttpRule selector */ + selector?: string | null; - /** DescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + /** HttpRule get */ + get?: string | null; - /** DescriptorProto extensionRange */ - extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + /** HttpRule put */ + put?: string | null; - /** DescriptorProto oneofDecl */ - oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + /** HttpRule post */ + post?: string | null; - /** DescriptorProto options */ - options?: (google.protobuf.IMessageOptions|null); + /** HttpRule delete */ + delete?: string | null; - /** DescriptorProto reservedRange */ - reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + /** HttpRule patch */ + patch?: string | null; - /** DescriptorProto reservedName */ - reservedName?: (string[]|null); - } + /** HttpRule custom */ + custom?: google.api.ICustomHttpPattern | null; - /** Represents a DescriptorProto. */ - class DescriptorProto implements IDescriptorProto { - - /** - * Constructs a new DescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDescriptorProto); - - /** DescriptorProto name. */ - public name: string; - - /** DescriptorProto field. */ - public field: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto nestedType. */ - public nestedType: google.protobuf.IDescriptorProto[]; - - /** DescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** DescriptorProto extensionRange. */ - public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; - - /** DescriptorProto oneofDecl. */ - public oneofDecl: google.protobuf.IOneofDescriptorProto[]; - - /** DescriptorProto options. */ - public options?: (google.protobuf.IMessageOptions|null); - - /** DescriptorProto reservedRange. */ - public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; - - /** DescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new DescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns DescriptorProto instance - */ - public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; - - /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; - - /** - * Verifies a DescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; - - /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @param message DescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this DescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** HttpRule body */ + body?: string | null; - namespace DescriptorProto { - - /** Properties of an ExtensionRange. */ - interface IExtensionRange { - - /** ExtensionRange start */ - start?: (number|null); - - /** ExtensionRange end */ - end?: (number|null); - - /** ExtensionRange options */ - options?: (google.protobuf.IExtensionRangeOptions|null); - } - - /** Represents an ExtensionRange. */ - class ExtensionRange implements IExtensionRange { - - /** - * Constructs a new ExtensionRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); - - /** ExtensionRange start. */ - public start: number; - - /** ExtensionRange end. */ - public end: number; - - /** ExtensionRange options. */ - public options?: (google.protobuf.IExtensionRangeOptions|null); - - /** - * Creates a new ExtensionRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Verifies an ExtensionRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. - * @param message ExtensionRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ExtensionRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReservedRange. */ - interface IReservedRange { - - /** ReservedRange start */ - start?: (number|null); - - /** ReservedRange end */ - end?: (number|null); - } - - /** Represents a ReservedRange. */ - class ReservedRange implements IReservedRange { - - /** - * Constructs a new ReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); - - /** ReservedRange start. */ - public start: number; - - /** ReservedRange end. */ - public end: number; - - /** - * Creates a new ReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ReservedRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Verifies a ReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. - * @param message ReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** HttpRule responseBody */ + responseBody?: string | null; - /** Properties of an ExtensionRangeOptions. */ - interface IExtensionRangeOptions { + /** HttpRule additionalBindings */ + additionalBindings?: google.api.IHttpRule[] | null; + } - /** ExtensionRangeOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: google.api.ICustomHttpPattern | null; + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: 'get' | 'put' | 'post' | 'delete' | 'patch' | 'custom'; + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create( + properties?: google.api.IHttpRule + ): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.IHttpRule, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.IHttpRule, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: {[k: string]: any}): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.HttpRule, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents an ExtensionRangeOptions. */ - class ExtensionRangeOptions implements IExtensionRangeOptions { - - /** - * Constructs a new ExtensionRangeOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IExtensionRangeOptions); - - /** ExtensionRangeOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ExtensionRangeOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRangeOptions instance - */ - public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; - - /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; - - /** - * Verifies an ExtensionRangeOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRangeOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; - - /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @param message ExtensionRangeOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ExtensionRangeOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + /** CustomHttpPattern kind */ + kind?: string | null; - /** Properties of a FieldDescriptorProto. */ - interface IFieldDescriptorProto { + /** CustomHttpPattern path */ + path?: string | null; + } - /** FieldDescriptorProto name */ - name?: (string|null); + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create( + properties?: google.api.ICustomHttpPattern + ): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.api.ICustomHttpPattern, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.api.ICustomHttpPattern, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { + [k: string]: any; + }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.api.CustomHttpPattern, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } + + /** Namespace protobuf. */ + namespace protobuf { + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + /** FileDescriptorSet file */ + file?: google.protobuf.IFileDescriptorProto[] | null; + } - /** FieldDescriptorProto number */ - number?: (number|null); + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create( + properties?: google.protobuf.IFileDescriptorSet + ): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileDescriptorSet, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileDescriptorSet, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileDescriptorSet, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FieldDescriptorProto label */ - label?: (google.protobuf.FieldDescriptorProto.Label|null); + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + /** FileDescriptorProto name */ + name?: string | null; - /** FieldDescriptorProto type */ - type?: (google.protobuf.FieldDescriptorProto.Type|null); + /** FileDescriptorProto package */ + package?: string | null; - /** FieldDescriptorProto typeName */ - typeName?: (string|null); + /** FileDescriptorProto dependency */ + dependency?: string[] | null; - /** FieldDescriptorProto extendee */ - extendee?: (string|null); + /** FileDescriptorProto publicDependency */ + publicDependency?: number[] | null; - /** FieldDescriptorProto defaultValue */ - defaultValue?: (string|null); + /** FileDescriptorProto weakDependency */ + weakDependency?: number[] | null; - /** FieldDescriptorProto oneofIndex */ - oneofIndex?: (number|null); + /** FileDescriptorProto messageType */ + messageType?: google.protobuf.IDescriptorProto[] | null; - /** FieldDescriptorProto jsonName */ - jsonName?: (string|null); + /** FileDescriptorProto enumType */ + enumType?: google.protobuf.IEnumDescriptorProto[] | null; - /** FieldDescriptorProto options */ - options?: (google.protobuf.IFieldOptions|null); - } + /** FileDescriptorProto service */ + service?: google.protobuf.IServiceDescriptorProto[] | null; - /** Represents a FieldDescriptorProto. */ - class FieldDescriptorProto implements IFieldDescriptorProto { - - /** - * Constructs a new FieldDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldDescriptorProto); - - /** FieldDescriptorProto name. */ - public name: string; - - /** FieldDescriptorProto number. */ - public number: number; - - /** FieldDescriptorProto label. */ - public label: google.protobuf.FieldDescriptorProto.Label; - - /** FieldDescriptorProto type. */ - public type: google.protobuf.FieldDescriptorProto.Type; - - /** FieldDescriptorProto typeName. */ - public typeName: string; - - /** FieldDescriptorProto extendee. */ - public extendee: string; - - /** FieldDescriptorProto defaultValue. */ - public defaultValue: string; - - /** FieldDescriptorProto oneofIndex. */ - public oneofIndex: number; - - /** FieldDescriptorProto jsonName. */ - public jsonName: string; - - /** FieldDescriptorProto options. */ - public options?: (google.protobuf.IFieldOptions|null); - - /** - * Creates a new FieldDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldDescriptorProto instance - */ - public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; - - /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; - - /** - * Verifies a FieldDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; - - /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @param message FieldDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FieldDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileDescriptorProto extension */ + extension?: google.protobuf.IFieldDescriptorProto[] | null; - namespace FieldDescriptorProto { - - /** Type enum. */ - enum Type { - TYPE_DOUBLE = 1, - TYPE_FLOAT = 2, - TYPE_INT64 = 3, - TYPE_UINT64 = 4, - TYPE_INT32 = 5, - TYPE_FIXED64 = 6, - TYPE_FIXED32 = 7, - TYPE_BOOL = 8, - TYPE_STRING = 9, - TYPE_GROUP = 10, - TYPE_MESSAGE = 11, - TYPE_BYTES = 12, - TYPE_UINT32 = 13, - TYPE_ENUM = 14, - TYPE_SFIXED32 = 15, - TYPE_SFIXED64 = 16, - TYPE_SINT32 = 17, - TYPE_SINT64 = 18 - } - - /** Label enum. */ - enum Label { - LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3 - } - } + /** FileDescriptorProto options */ + options?: google.protobuf.IFileOptions | null; - /** Properties of an OneofDescriptorProto. */ - interface IOneofDescriptorProto { + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - /** OneofDescriptorProto name */ - name?: (string|null); + /** FileDescriptorProto syntax */ + syntax?: string | null; + } - /** OneofDescriptorProto options */ - options?: (google.protobuf.IOneofOptions|null); - } + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: google.protobuf.IFileOptions | null; + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IFileDescriptorProto + ): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents an OneofDescriptorProto. */ - class OneofDescriptorProto implements IOneofDescriptorProto { - - /** - * Constructs a new OneofDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofDescriptorProto); - - /** OneofDescriptorProto name. */ - public name: string; - - /** OneofDescriptorProto options. */ - public options?: (google.protobuf.IOneofOptions|null); - - /** - * Creates a new OneofDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofDescriptorProto instance - */ - public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; - - /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; - - /** - * Verifies an OneofDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; - - /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @param message OneofDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this OneofDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + /** DescriptorProto name */ + name?: string | null; - /** Properties of an EnumDescriptorProto. */ - interface IEnumDescriptorProto { + /** DescriptorProto field */ + field?: google.protobuf.IFieldDescriptorProto[] | null; - /** EnumDescriptorProto name */ - name?: (string|null); + /** DescriptorProto extension */ + extension?: google.protobuf.IFieldDescriptorProto[] | null; - /** EnumDescriptorProto value */ - value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + /** DescriptorProto nestedType */ + nestedType?: google.protobuf.IDescriptorProto[] | null; - /** EnumDescriptorProto options */ - options?: (google.protobuf.IEnumOptions|null); + /** DescriptorProto enumType */ + enumType?: google.protobuf.IEnumDescriptorProto[] | null; - /** EnumDescriptorProto reservedRange */ - reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + /** DescriptorProto extensionRange */ + extensionRange?: google.protobuf.DescriptorProto.IExtensionRange[] | null; - /** EnumDescriptorProto reservedName */ - reservedName?: (string[]|null); - } + /** DescriptorProto oneofDecl */ + oneofDecl?: google.protobuf.IOneofDescriptorProto[] | null; - /** Represents an EnumDescriptorProto. */ - class EnumDescriptorProto implements IEnumDescriptorProto { - - /** - * Constructs a new EnumDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumDescriptorProto); - - /** EnumDescriptorProto name. */ - public name: string; - - /** EnumDescriptorProto value. */ - public value: google.protobuf.IEnumValueDescriptorProto[]; - - /** EnumDescriptorProto options. */ - public options?: (google.protobuf.IEnumOptions|null); - - /** EnumDescriptorProto reservedRange. */ - public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; - - /** EnumDescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new EnumDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumDescriptorProto instance - */ - public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; - - /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; - - /** - * Verifies an EnumDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; - - /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. - * @param message EnumDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** DescriptorProto options */ + options?: google.protobuf.IMessageOptions | null; - namespace EnumDescriptorProto { - - /** Properties of an EnumReservedRange. */ - interface IEnumReservedRange { - - /** EnumReservedRange start */ - start?: (number|null); - - /** EnumReservedRange end */ - end?: (number|null); - } - - /** Represents an EnumReservedRange. */ - class EnumReservedRange implements IEnumReservedRange { - - /** - * Constructs a new EnumReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); - - /** EnumReservedRange start. */ - public start: number; - - /** EnumReservedRange end. */ - public end: number; - - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumReservedRange instance - */ - public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Verifies an EnumReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @param message EnumReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** DescriptorProto reservedRange */ + reservedRange?: google.protobuf.DescriptorProto.IReservedRange[] | null; - /** Properties of an EnumValueDescriptorProto. */ - interface IEnumValueDescriptorProto { + /** DescriptorProto reservedName */ + reservedName?: string[] | null; + } - /** EnumValueDescriptorProto name */ - name?: (string|null); + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: google.protobuf.IMessageOptions | null; + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create( + properties?: google.protobuf.IDescriptorProto + ): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** EnumValueDescriptorProto number */ - number?: (number|null); + namespace DescriptorProto { + /** Properties of an ExtensionRange. */ + interface IExtensionRange { + /** ExtensionRange start */ + start?: number | null; + + /** ExtensionRange end */ + end?: number | null; + + /** ExtensionRange options */ + options?: google.protobuf.IExtensionRangeOptions | null; + } + + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { + /** + * Constructs a new ExtensionRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.DescriptorProto.IExtensionRange + ); + + /** ExtensionRange start. */ + public start: number; + + /** ExtensionRange end. */ + public end: number; + + /** ExtensionRange options. */ + public options?: google.protobuf.IExtensionRangeOptions | null; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRange instance + */ + public static create( + properties?: google.protobuf.DescriptorProto.IExtensionRange + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.DescriptorProto.IExtensionRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.DescriptorProto.IExtensionRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto.ExtensionRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ExtensionRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + + /** Properties of a ReservedRange. */ + interface IReservedRange { + /** ReservedRange start */ + start?: number | null; + + /** ReservedRange end */ + end?: number | null; + } + + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { + /** + * Constructs a new ReservedRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.DescriptorProto.IReservedRange + ); + + /** ReservedRange start. */ + public start: number; + + /** ReservedRange end. */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns ReservedRange instance + */ + public static create( + properties?: google.protobuf.DescriptorProto.IReservedRange + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.DescriptorProto.IReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.DescriptorProto.IReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReservedRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.DescriptorProto.ReservedRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** EnumValueDescriptorProto options */ - options?: (google.protobuf.IEnumValueOptions|null); - } + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** Represents an EnumValueDescriptorProto. */ - class EnumValueDescriptorProto implements IEnumValueDescriptorProto { - - /** - * Constructs a new EnumValueDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - - /** EnumValueDescriptorProto name. */ - public name: string; - - /** EnumValueDescriptorProto number. */ - public number: number; - - /** EnumValueDescriptorProto options. */ - public options?: (google.protobuf.IEnumValueOptions|null); - - /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueDescriptorProto instance - */ - public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; - - /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; - - /** - * Verifies an EnumValueDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; - - /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. - * @param message EnumValueDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumValueDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { + /** + * Constructs a new ExtensionRangeOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IExtensionRangeOptions); + + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExtensionRangeOptions instance + */ + public static create( + properties?: google.protobuf.IExtensionRangeOptions + ): google.protobuf.ExtensionRangeOptions; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IExtensionRangeOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IExtensionRangeOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ExtensionRangeOptions; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ExtensionRangeOptions; + + /** + * Verifies an ExtensionRangeOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExtensionRangeOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ExtensionRangeOptions; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ExtensionRangeOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of a ServiceDescriptorProto. */ - interface IServiceDescriptorProto { + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { + /** FieldDescriptorProto name */ + name?: string | null; - /** ServiceDescriptorProto name */ - name?: (string|null); + /** FieldDescriptorProto number */ + number?: number | null; - /** ServiceDescriptorProto method */ - method?: (google.protobuf.IMethodDescriptorProto[]|null); + /** FieldDescriptorProto label */ + label?: google.protobuf.FieldDescriptorProto.Label | null; - /** ServiceDescriptorProto options */ - options?: (google.protobuf.IServiceOptions|null); - } + /** FieldDescriptorProto type */ + type?: google.protobuf.FieldDescriptorProto.Type | null; - /** Represents a ServiceDescriptorProto. */ - class ServiceDescriptorProto implements IServiceDescriptorProto { - - /** - * Constructs a new ServiceDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceDescriptorProto); - - /** ServiceDescriptorProto name. */ - public name: string; - - /** ServiceDescriptorProto method. */ - public method: google.protobuf.IMethodDescriptorProto[]; - - /** ServiceDescriptorProto options. */ - public options?: (google.protobuf.IServiceOptions|null); - - /** - * Creates a new ServiceDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceDescriptorProto instance - */ - public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; - - /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; - - /** - * Verifies a ServiceDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; - - /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. - * @param message ServiceDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ServiceDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FieldDescriptorProto typeName */ + typeName?: string | null; - /** Properties of a MethodDescriptorProto. */ - interface IMethodDescriptorProto { + /** FieldDescriptorProto extendee */ + extendee?: string | null; - /** MethodDescriptorProto name */ - name?: (string|null); + /** FieldDescriptorProto defaultValue */ + defaultValue?: string | null; - /** MethodDescriptorProto inputType */ - inputType?: (string|null); + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: number | null; - /** MethodDescriptorProto outputType */ - outputType?: (string|null); + /** FieldDescriptorProto jsonName */ + jsonName?: string | null; - /** MethodDescriptorProto options */ - options?: (google.protobuf.IMethodOptions|null); + /** FieldDescriptorProto options */ + options?: google.protobuf.IFieldOptions | null; + } - /** MethodDescriptorProto clientStreaming */ - clientStreaming?: (boolean|null); + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { + /** + * Constructs a new FieldDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldDescriptorProto); + + /** FieldDescriptorProto name. */ + public name: string; + + /** FieldDescriptorProto number. */ + public number: number; + + /** FieldDescriptorProto label. */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** FieldDescriptorProto type. */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: google.protobuf.IFieldOptions | null; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IFieldDescriptorProto + ): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFieldDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFieldDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FieldDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** MethodDescriptorProto serverStreaming */ - serverStreaming?: (boolean|null); - } + namespace FieldDescriptorProto { + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18, + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3, + } + } - /** Represents a MethodDescriptorProto. */ - class MethodDescriptorProto implements IMethodDescriptorProto { - - /** - * Constructs a new MethodDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodDescriptorProto); - - /** MethodDescriptorProto name. */ - public name: string; - - /** MethodDescriptorProto inputType. */ - public inputType: string; - - /** MethodDescriptorProto outputType. */ - public outputType: string; - - /** MethodDescriptorProto options. */ - public options?: (google.protobuf.IMethodOptions|null); - - /** MethodDescriptorProto clientStreaming. */ - public clientStreaming: boolean; - - /** MethodDescriptorProto serverStreaming. */ - public serverStreaming: boolean; - - /** - * Creates a new MethodDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodDescriptorProto instance - */ - public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; - - /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; - - /** - * Verifies a MethodDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodDescriptorProto - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; - - /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. - * @param message MethodDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MethodDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { + /** OneofDescriptorProto name */ + name?: string | null; - /** Properties of a FileOptions. */ - interface IFileOptions { + /** OneofDescriptorProto options */ + options?: google.protobuf.IOneofOptions | null; + } - /** FileOptions javaPackage */ - javaPackage?: (string|null); + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); + + /** OneofDescriptorProto name. */ + public name: string; + + /** OneofDescriptorProto options. */ + public options?: google.protobuf.IOneofOptions | null; + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IOneofDescriptorProto + ): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IOneofDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IOneofDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.OneofDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions javaOuterClassname */ - javaOuterClassname?: (string|null); + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { + /** EnumDescriptorProto name */ + name?: string | null; - /** FileOptions javaMultipleFiles */ - javaMultipleFiles?: (boolean|null); + /** EnumDescriptorProto value */ + value?: google.protobuf.IEnumValueDescriptorProto[] | null; - /** FileOptions javaGenerateEqualsAndHash */ - javaGenerateEqualsAndHash?: (boolean|null); + /** EnumDescriptorProto options */ + options?: google.protobuf.IEnumOptions | null; - /** FileOptions javaStringCheckUtf8 */ - javaStringCheckUtf8?: (boolean|null); + /** EnumDescriptorProto reservedRange */ + reservedRange?: + | google.protobuf.EnumDescriptorProto.IEnumReservedRange[] + | null; - /** FileOptions optimizeFor */ - optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null); + /** EnumDescriptorProto reservedName */ + reservedName?: string[] | null; + } - /** FileOptions goPackage */ - goPackage?: (string|null); + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { + /** + * Constructs a new EnumDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumDescriptorProto); + + /** EnumDescriptorProto name. */ + public name: string; + + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: google.protobuf.IEnumOptions | null; + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IEnumDescriptorProto + ): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions ccGenericServices */ - ccGenericServices?: (boolean|null); + namespace EnumDescriptorProto { + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + /** EnumReservedRange start */ + start?: number | null; + + /** EnumReservedRange end */ + end?: number | null; + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor( + properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange + ); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create( + properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumDescriptorProto.EnumReservedRange, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** FileOptions javaGenericServices */ - javaGenericServices?: (boolean|null); + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { + /** EnumValueDescriptorProto name */ + name?: string | null; - /** FileOptions pyGenericServices */ - pyGenericServices?: (boolean|null); + /** EnumValueDescriptorProto number */ + number?: number | null; - /** FileOptions phpGenericServices */ - phpGenericServices?: (boolean|null); + /** EnumValueDescriptorProto options */ + options?: google.protobuf.IEnumValueOptions | null; + } - /** FileOptions deprecated */ - deprecated?: (boolean|null); + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + /** + * Constructs a new EnumValueDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); + + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: google.protobuf.IEnumValueOptions | null; + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IEnumValueDescriptorProto + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumValueDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumValueDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumValueDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions ccEnableArenas */ - ccEnableArenas?: (boolean|null); + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { + /** ServiceDescriptorProto name */ + name?: string | null; - /** FileOptions objcClassPrefix */ - objcClassPrefix?: (string|null); + /** ServiceDescriptorProto method */ + method?: google.protobuf.IMethodDescriptorProto[] | null; - /** FileOptions csharpNamespace */ - csharpNamespace?: (string|null); + /** ServiceDescriptorProto options */ + options?: google.protobuf.IServiceOptions | null; + } - /** FileOptions swiftPrefix */ - swiftPrefix?: (string|null); + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { + /** + * Constructs a new ServiceDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceDescriptorProto); + + /** ServiceDescriptorProto name. */ + public name: string; + + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; + + /** ServiceDescriptorProto options. */ + public options?: google.protobuf.IServiceOptions | null; + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IServiceDescriptorProto + ): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IServiceDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IServiceDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ServiceDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions phpClassPrefix */ - phpClassPrefix?: (string|null); + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { + /** MethodDescriptorProto name */ + name?: string | null; - /** FileOptions phpNamespace */ - phpNamespace?: (string|null); + /** MethodDescriptorProto inputType */ + inputType?: string | null; - /** FileOptions phpMetadataNamespace */ - phpMetadataNamespace?: (string|null); + /** MethodDescriptorProto outputType */ + outputType?: string | null; - /** FileOptions rubyPackage */ - rubyPackage?: (string|null); + /** MethodDescriptorProto options */ + options?: google.protobuf.IMethodOptions | null; - /** FileOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: boolean | null; - /** Represents a FileOptions. */ - class FileOptions implements IFileOptions { + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: boolean | null; + } - /** - * Constructs a new FileOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileOptions); + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { + /** + * Constructs a new MethodDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodDescriptorProto); + + /** MethodDescriptorProto name. */ + public name: string; + + /** MethodDescriptorProto inputType. */ + public inputType: string; + + /** MethodDescriptorProto outputType. */ + public outputType: string; + + /** MethodDescriptorProto options. */ + public options?: google.protobuf.IMethodOptions | null; + + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; + + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodDescriptorProto instance + */ + public static create( + properties?: google.protobuf.IMethodDescriptorProto + ): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMethodDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMethodDescriptorProto, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodDescriptorProto + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MethodDescriptorProto, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** FileOptions javaPackage. */ - public javaPackage: string; + /** Properties of a FileOptions. */ + interface IFileOptions { + /** FileOptions javaPackage */ + javaPackage?: string | null; - /** FileOptions javaOuterClassname. */ - public javaOuterClassname: string; + /** FileOptions javaOuterClassname */ + javaOuterClassname?: string | null; - /** FileOptions javaMultipleFiles. */ - public javaMultipleFiles: boolean; + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: boolean | null; - /** FileOptions javaGenerateEqualsAndHash. */ - public javaGenerateEqualsAndHash: boolean; + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: boolean | null; - /** FileOptions javaStringCheckUtf8. */ - public javaStringCheckUtf8: boolean; - - /** FileOptions optimizeFor. */ - public optimizeFor: google.protobuf.FileOptions.OptimizeMode; - - /** FileOptions goPackage. */ - public goPackage: string; - - /** FileOptions ccGenericServices. */ - public ccGenericServices: boolean; - - /** FileOptions javaGenericServices. */ - public javaGenericServices: boolean; - - /** FileOptions pyGenericServices. */ - public pyGenericServices: boolean; - - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; - - /** FileOptions deprecated. */ - public deprecated: boolean; - - /** FileOptions ccEnableArenas. */ - public ccEnableArenas: boolean; - - /** FileOptions objcClassPrefix. */ - public objcClassPrefix: string; - - /** FileOptions csharpNamespace. */ - public csharpNamespace: string; - - /** FileOptions swiftPrefix. */ - public swiftPrefix: string; - - /** FileOptions phpClassPrefix. */ - public phpClassPrefix: string; - - /** FileOptions phpNamespace. */ - public phpNamespace: string; - - /** FileOptions phpMetadataNamespace. */ - public phpMetadataNamespace: string; - - /** FileOptions rubyPackage. */ - public rubyPackage: string; - - /** FileOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FileOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FileOptions instance - */ - public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; - - /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FileOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; - - /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; - - /** - * Verifies a FileOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; - - /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @param message FileOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FileOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: boolean | null; - namespace FileOptions { + /** FileOptions optimizeFor */ + optimizeFor?: google.protobuf.FileOptions.OptimizeMode | null; - /** OptimizeMode enum. */ - enum OptimizeMode { - SPEED = 1, - CODE_SIZE = 2, - LITE_RUNTIME = 3 - } - } + /** FileOptions goPackage */ + goPackage?: string | null; - /** Properties of a MessageOptions. */ - interface IMessageOptions { + /** FileOptions ccGenericServices */ + ccGenericServices?: boolean | null; - /** MessageOptions messageSetWireFormat */ - messageSetWireFormat?: (boolean|null); + /** FileOptions javaGenericServices */ + javaGenericServices?: boolean | null; - /** MessageOptions noStandardDescriptorAccessor */ - noStandardDescriptorAccessor?: (boolean|null); + /** FileOptions pyGenericServices */ + pyGenericServices?: boolean | null; - /** MessageOptions deprecated */ - deprecated?: (boolean|null); + /** FileOptions phpGenericServices */ + phpGenericServices?: boolean | null; - /** MessageOptions mapEntry */ - mapEntry?: (boolean|null); + /** FileOptions deprecated */ + deprecated?: boolean | null; - /** MessageOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FileOptions ccEnableArenas */ + ccEnableArenas?: boolean | null; - /** Represents a MessageOptions. */ - class MessageOptions implements IMessageOptions { - - /** - * Constructs a new MessageOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMessageOptions); - - /** MessageOptions messageSetWireFormat. */ - public messageSetWireFormat: boolean; - - /** MessageOptions noStandardDescriptorAccessor. */ - public noStandardDescriptorAccessor: boolean; - - /** MessageOptions deprecated. */ - public deprecated: boolean; - - /** MessageOptions mapEntry. */ - public mapEntry: boolean; - - /** MessageOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MessageOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MessageOptions instance - */ - public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; - - /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MessageOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; - - /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; - - /** - * Verifies a MessageOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MessageOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; - - /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @param message MessageOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MessageOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions objcClassPrefix */ + objcClassPrefix?: string | null; - /** Properties of a FieldOptions. */ - interface IFieldOptions { + /** FileOptions csharpNamespace */ + csharpNamespace?: string | null; - /** FieldOptions ctype */ - ctype?: (google.protobuf.FieldOptions.CType|null); + /** FileOptions swiftPrefix */ + swiftPrefix?: string | null; - /** FieldOptions packed */ - packed?: (boolean|null); + /** FileOptions phpClassPrefix */ + phpClassPrefix?: string | null; - /** FieldOptions jstype */ - jstype?: (google.protobuf.FieldOptions.JSType|null); + /** FileOptions phpNamespace */ + phpNamespace?: string | null; - /** FieldOptions lazy */ - lazy?: (boolean|null); + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: string | null; - /** FieldOptions deprecated */ - deprecated?: (boolean|null); + /** FileOptions rubyPackage */ + rubyPackage?: string | null; - /** FieldOptions weak */ - weak?: (boolean|null); + /** FileOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** FieldOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; + + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; + + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; + + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; + + /** FileOptions deprecated. */ + public deprecated: boolean; + + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; + + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; + + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; + + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; + + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; + + /** FileOptions phpNamespace. */ + public phpNamespace: string; + + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; + + /** FileOptions rubyPackage. */ + public rubyPackage: string; + + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create( + properties?: google.protobuf.IFileOptions + ): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFileOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFileOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FileOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a FieldOptions. */ - class FieldOptions implements IFieldOptions { - - /** - * Constructs a new FieldOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldOptions); - - /** FieldOptions ctype. */ - public ctype: google.protobuf.FieldOptions.CType; - - /** FieldOptions packed. */ - public packed: boolean; - - /** FieldOptions jstype. */ - public jstype: google.protobuf.FieldOptions.JSType; - - /** FieldOptions lazy. */ - public lazy: boolean; - - /** FieldOptions deprecated. */ - public deprecated: boolean; - - /** FieldOptions weak. */ - public weak: boolean; - - /** FieldOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FieldOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldOptions instance - */ - public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; - - /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a FieldOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; - - /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; - - /** - * Verifies a FieldOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; - - /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. - * @param message FieldOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this FieldOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + namespace FileOptions { + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3, + } + } - namespace FieldOptions { - - /** CType enum. */ - enum CType { - STRING = 0, - CORD = 1, - STRING_PIECE = 2 - } - - /** JSType enum. */ - enum JSType { - JS_NORMAL = 0, - JS_STRING = 1, - JS_NUMBER = 2 - } - } + /** Properties of a MessageOptions. */ + interface IMessageOptions { + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: boolean | null; - /** Properties of an OneofOptions. */ - interface IOneofOptions { + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: boolean | null; - /** OneofOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** MessageOptions deprecated */ + deprecated?: boolean | null; - /** Represents an OneofOptions. */ - class OneofOptions implements IOneofOptions { - - /** - * Constructs a new OneofOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofOptions); - - /** OneofOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new OneofOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofOptions instance - */ - public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; - - /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an OneofOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; - - /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; - - /** - * Verifies an OneofOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; - - /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. - * @param message OneofOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this OneofOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** MessageOptions mapEntry */ + mapEntry?: boolean | null; - /** Properties of an EnumOptions. */ - interface IEnumOptions { + /** MessageOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** EnumOptions allowAlias */ - allowAlias?: (boolean|null); + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { + /** + * Constructs a new MessageOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMessageOptions); + + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MessageOptions instance + */ + public static create( + properties?: google.protobuf.IMessageOptions + ): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMessageOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMessageOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MessageOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MessageOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MessageOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** EnumOptions deprecated */ - deprecated?: (boolean|null); + /** Properties of a FieldOptions. */ + interface IFieldOptions { + /** FieldOptions ctype */ + ctype?: google.protobuf.FieldOptions.CType | null; - /** EnumOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FieldOptions packed */ + packed?: boolean | null; - /** Represents an EnumOptions. */ - class EnumOptions implements IEnumOptions { - - /** - * Constructs a new EnumOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumOptions); - - /** EnumOptions allowAlias. */ - public allowAlias: boolean; - - /** EnumOptions deprecated. */ - public deprecated: boolean; - - /** EnumOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumOptions instance - */ - public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; - - /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; - - /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; - - /** - * Verifies an EnumOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; - - /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @param message EnumOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FieldOptions jstype */ + jstype?: google.protobuf.FieldOptions.JSType | null; - /** Properties of an EnumValueOptions. */ - interface IEnumValueOptions { + /** FieldOptions lazy */ + lazy?: boolean | null; - /** EnumValueOptions deprecated */ - deprecated?: (boolean|null); + /** FieldOptions deprecated */ + deprecated?: boolean | null; - /** EnumValueOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** FieldOptions weak */ + weak?: boolean | null; - /** Represents an EnumValueOptions. */ - class EnumValueOptions implements IEnumValueOptions { - - /** - * Constructs a new EnumValueOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueOptions); - - /** EnumValueOptions deprecated. */ - public deprecated: boolean; - - /** EnumValueOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumValueOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueOptions instance - */ - public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; - - /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; - - /** - * Verifies an EnumValueOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; - - /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. - * @param message EnumValueOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this EnumValueOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** Properties of a ServiceOptions. */ - interface IServiceOptions { + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { + /** + * Constructs a new FieldOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFieldOptions); + + /** FieldOptions ctype. */ + public ctype: google.protobuf.FieldOptions.CType; + + /** FieldOptions packed. */ + public packed: boolean; + + /** FieldOptions jstype. */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** FieldOptions lazy. */ + public lazy: boolean; + + /** FieldOptions deprecated. */ + public deprecated: boolean; + + /** FieldOptions weak. */ + public weak: boolean; + + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldOptions instance + */ + public static create( + properties?: google.protobuf.IFieldOptions + ): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IFieldOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IFieldOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.FieldOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this FieldOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** ServiceOptions deprecated */ - deprecated?: (boolean|null); + namespace FieldOptions { + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2, + } + + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2, + } + } - /** ServiceOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Properties of an OneofOptions. */ + interface IOneofOptions { + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** Represents a ServiceOptions. */ - class ServiceOptions implements IServiceOptions { - - /** - * Constructs a new ServiceOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceOptions); - - /** ServiceOptions deprecated. */ - public deprecated: boolean; - - /** ServiceOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ServiceOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceOptions instance - */ - public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; - - /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; - - /** - * Verifies a ServiceOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; - - /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. - * @param message ServiceOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ServiceOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { + /** + * Constructs a new OneofOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofOptions); + + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns OneofOptions instance + */ + public static create( + properties?: google.protobuf.IOneofOptions + ): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IOneofOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IOneofOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns OneofOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.OneofOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this OneofOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Properties of a MethodOptions. */ - interface IMethodOptions { + /** Properties of an EnumOptions. */ + interface IEnumOptions { + /** EnumOptions allowAlias */ + allowAlias?: boolean | null; - /** MethodOptions deprecated */ - deprecated?: (boolean|null); + /** EnumOptions deprecated */ + deprecated?: boolean | null; - /** MethodOptions idempotencyLevel */ - idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null); + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** MethodOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { + /** + * Constructs a new EnumOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumOptions); + + /** EnumOptions allowAlias. */ + public allowAlias: boolean; + + /** EnumOptions deprecated. */ + public deprecated: boolean; + + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumOptions instance + */ + public static create( + properties?: google.protobuf.IEnumOptions + ): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** MethodOptions .google.api.http */ - ".google.api.http"?: (google.api.IHttpRule|null); - } + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { + /** EnumValueOptions deprecated */ + deprecated?: boolean | null; - /** Represents a MethodOptions. */ - class MethodOptions implements IMethodOptions { - - /** - * Constructs a new MethodOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodOptions); - - /** MethodOptions deprecated. */ - public deprecated: boolean; - - /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; - - /** MethodOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MethodOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodOptions instance - */ - public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; - - /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a MethodOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; - - /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; - - /** - * Verifies a MethodOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodOptions - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; - - /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. - * @param message MethodOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this MethodOptions to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - namespace MethodOptions { + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); + + /** EnumValueOptions deprecated. */ + public deprecated: boolean; + + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create( + properties?: google.protobuf.IEnumValueOptions + ): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IEnumValueOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IEnumValueOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.EnumValueOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** IdempotencyLevel enum. */ - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0, - NO_SIDE_EFFECTS = 1, - IDEMPOTENT = 2 - } - } + /** Properties of a ServiceOptions. */ + interface IServiceOptions { + /** ServiceOptions deprecated */ + deprecated?: boolean | null; - /** Properties of an UninterpretedOption. */ - interface IUninterpretedOption { + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; + } - /** UninterpretedOption name */ - name?: (google.protobuf.UninterpretedOption.INamePart[]|null); + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { + /** + * Constructs a new ServiceOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IServiceOptions); + + /** ServiceOptions deprecated. */ + public deprecated: boolean; + + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ServiceOptions instance + */ + public static create( + properties?: google.protobuf.IServiceOptions + ): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IServiceOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IServiceOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ServiceOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ServiceOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ServiceOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** UninterpretedOption identifierValue */ - identifierValue?: (string|null); + /** Properties of a MethodOptions. */ + interface IMethodOptions { + /** MethodOptions deprecated */ + deprecated?: boolean | null; - /** UninterpretedOption positiveIntValue */ - positiveIntValue?: (number|Long|null); + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: google.protobuf.MethodOptions.IdempotencyLevel | null; - /** UninterpretedOption negativeIntValue */ - negativeIntValue?: (number|Long|null); + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - /** UninterpretedOption doubleValue */ - doubleValue?: (number|null); + /** MethodOptions .google.api.http */ + '.google.api.http'?: google.api.IHttpRule | null; + } - /** UninterpretedOption stringValue */ - stringValue?: (Uint8Array|null); + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { + /** + * Constructs a new MethodOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IMethodOptions); + + /** MethodOptions deprecated. */ + public deprecated: boolean; + + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; + + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodOptions instance + */ + public static create( + properties?: google.protobuf.IMethodOptions + ): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IMethodOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IMethodOptions, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodOptions + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.MethodOptions, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this MethodOptions to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** UninterpretedOption aggregateValue */ - aggregateValue?: (string|null); - } + namespace MethodOptions { + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2, + } + } - /** Represents an UninterpretedOption. */ - class UninterpretedOption implements IUninterpretedOption { - - /** - * Constructs a new UninterpretedOption. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUninterpretedOption); - - /** UninterpretedOption name. */ - public name: google.protobuf.UninterpretedOption.INamePart[]; - - /** UninterpretedOption identifierValue. */ - public identifierValue: string; - - /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: (number|Long); - - /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: (number|Long); - - /** UninterpretedOption doubleValue. */ - public doubleValue: number; - - /** UninterpretedOption stringValue. */ - public stringValue: Uint8Array; - - /** UninterpretedOption aggregateValue. */ - public aggregateValue: string; - - /** - * Creates a new UninterpretedOption instance using the specified properties. - * @param [properties] Properties to set - * @returns UninterpretedOption instance - */ - public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; - - /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; - - /** - * Verifies an UninterpretedOption message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UninterpretedOption - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; - - /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. - * @param message UninterpretedOption - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this UninterpretedOption to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { + /** UninterpretedOption name */ + name?: google.protobuf.UninterpretedOption.INamePart[] | null; - namespace UninterpretedOption { - - /** Properties of a NamePart. */ - interface INamePart { - - /** NamePart namePart */ - namePart: string; - - /** NamePart isExtension */ - isExtension: boolean; - } - - /** Represents a NamePart. */ - class NamePart implements INamePart { - - /** - * Constructs a new NamePart. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - - /** NamePart namePart. */ - public namePart: string; - - /** NamePart isExtension. */ - public isExtension: boolean; - - /** - * Creates a new NamePart instance using the specified properties. - * @param [properties] Properties to set - * @returns NamePart instance - */ - public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; - - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a NamePart message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; - - /** - * Verifies a NamePart message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NamePart - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; - - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @param message NamePart - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this NamePart to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** UninterpretedOption identifierValue */ + identifierValue?: string | null; - /** Properties of a SourceCodeInfo. */ - interface ISourceCodeInfo { + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: number | Long | null; - /** SourceCodeInfo location */ - location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); - } + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: number | Long | null; - /** Represents a SourceCodeInfo. */ - class SourceCodeInfo implements ISourceCodeInfo { - - /** - * Constructs a new SourceCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ISourceCodeInfo); - - /** SourceCodeInfo location. */ - public location: google.protobuf.SourceCodeInfo.ILocation[]; - - /** - * Creates a new SourceCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns SourceCodeInfo instance - */ - public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; - - /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; - - /** - * Verifies a SourceCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SourceCodeInfo - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; - - /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. - * @param message SourceCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this SourceCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** UninterpretedOption doubleValue */ + doubleValue?: number | null; - namespace SourceCodeInfo { - - /** Properties of a Location. */ - interface ILocation { - - /** Location path */ - path?: (number[]|null); - - /** Location span */ - span?: (number[]|null); - - /** Location leadingComments */ - leadingComments?: (string|null); - - /** Location trailingComments */ - trailingComments?: (string|null); - - /** Location leadingDetachedComments */ - leadingDetachedComments?: (string[]|null); - } - - /** Represents a Location. */ - class Location implements ILocation { - - /** - * Constructs a new Location. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); - - /** Location path. */ - public path: number[]; - - /** Location span. */ - public span: number[]; - - /** Location leadingComments. */ - public leadingComments: string; - - /** Location trailingComments. */ - public trailingComments: string; - - /** Location leadingDetachedComments. */ - public leadingDetachedComments: string[]; - - /** - * Creates a new Location instance using the specified properties. - * @param [properties] Properties to set - * @returns Location instance - */ - public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; - - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Location message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; - - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; - - /** - * Verifies a Location message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Location - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; - - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @param message Location - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Location to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** UninterpretedOption stringValue */ + stringValue?: Uint8Array | null; - /** Properties of a GeneratedCodeInfo. */ - interface IGeneratedCodeInfo { + /** UninterpretedOption aggregateValue */ + aggregateValue?: string | null; + } - /** GeneratedCodeInfo annotation */ - annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); - } + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { + /** + * Constructs a new UninterpretedOption. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; + + /** UninterpretedOption identifierValue. */ + public identifierValue: string; + + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: number | Long; + + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: number | Long; + + /** UninterpretedOption doubleValue. */ + public doubleValue: number; + + /** UninterpretedOption stringValue. */ + public stringValue: Uint8Array; + + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param [properties] Properties to set + * @returns UninterpretedOption instance + */ + public static create( + properties?: google.protobuf.IUninterpretedOption + ): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IUninterpretedOption, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IUninterpretedOption, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns UninterpretedOption + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UninterpretedOption, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this UninterpretedOption to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a GeneratedCodeInfo. */ - class GeneratedCodeInfo implements IGeneratedCodeInfo { - - /** - * Constructs a new GeneratedCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IGeneratedCodeInfo); - - /** GeneratedCodeInfo annotation. */ - public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; - - /** - * Creates a new GeneratedCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns GeneratedCodeInfo instance - */ - public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; - - /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; - - /** - * Verifies a GeneratedCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GeneratedCodeInfo - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; - - /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. - * @param message GeneratedCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this GeneratedCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + namespace UninterpretedOption { + /** Properties of a NamePart. */ + interface INamePart { + /** NamePart namePart */ + namePart: string; + + /** NamePart isExtension */ + isExtension: boolean; + } + + /** Represents a NamePart. */ + class NamePart implements INamePart { + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); + + /** NamePart namePart. */ + public namePart: string; + + /** NamePart isExtension. */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create( + properties?: google.protobuf.UninterpretedOption.INamePart + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.UninterpretedOption.INamePart, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.UninterpretedOption.INamePart, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.UninterpretedOption.NamePart, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - namespace GeneratedCodeInfo { - - /** Properties of an Annotation. */ - interface IAnnotation { - - /** Annotation path */ - path?: (number[]|null); - - /** Annotation sourceFile */ - sourceFile?: (string|null); - - /** Annotation begin */ - begin?: (number|null); - - /** Annotation end */ - end?: (number|null); - } - - /** Represents an Annotation. */ - class Annotation implements IAnnotation { - - /** - * Constructs a new Annotation. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - - /** Annotation path. */ - public path: number[]; - - /** Annotation sourceFile. */ - public sourceFile: string; - - /** Annotation begin. */ - public begin: number; - - /** Annotation end. */ - public end: number; - - /** - * Creates a new Annotation instance using the specified properties. - * @param [properties] Properties to set - * @returns Annotation instance - */ - public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes an Annotation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Verifies an Annotation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Annotation - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @param message Annotation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Annotation to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { + /** SourceCodeInfo location */ + location?: google.protobuf.SourceCodeInfo.ILocation[] | null; + } - /** Properties of a Struct. */ - interface IStruct { + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); + + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns SourceCodeInfo instance + */ + public static create( + properties?: google.protobuf.ISourceCodeInfo + ): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.ISourceCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.ISourceCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SourceCodeInfo + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.SourceCodeInfo, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Struct fields */ - fields?: ({ [k: string]: google.protobuf.IValue }|null); - } + namespace SourceCodeInfo { + /** Properties of a Location. */ + interface ILocation { + /** Location path */ + path?: number[] | null; + + /** Location span */ + span?: number[] | null; + + /** Location leadingComments */ + leadingComments?: string | null; + + /** Location trailingComments */ + trailingComments?: string | null; + + /** Location leadingDetachedComments */ + leadingDetachedComments?: string[] | null; + } + + /** Represents a Location. */ + class Location implements ILocation { + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + + /** Location path. */ + public path: number[]; + + /** Location span. */ + public span: number[]; + + /** Location leadingComments. */ + public leadingComments: string; + + /** Location trailingComments. */ + public trailingComments: string; + + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create( + properties?: google.protobuf.SourceCodeInfo.ILocation + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.SourceCodeInfo.ILocation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.SourceCodeInfo.ILocation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.SourceCodeInfo.Location, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** Represents a Struct. */ - class Struct implements IStruct { - - /** - * Constructs a new Struct. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStruct); - - /** Struct fields. */ - public fields: { [k: string]: google.protobuf.IValue }; - - /** - * Creates a new Struct instance using the specified properties. - * @param [properties] Properties to set - * @returns Struct instance - */ - public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; - - /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Struct message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; - - /** - * Decodes a Struct message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; - - /** - * Verifies a Struct message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Struct - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; - - /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. - * @param message Struct - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Struct to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + /** GeneratedCodeInfo annotation */ + annotation?: google.protobuf.GeneratedCodeInfo.IAnnotation[] | null; + } - /** Properties of a Value. */ - interface IValue { + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { + /** + * Constructs a new GeneratedCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create( + properties?: google.protobuf.IGeneratedCodeInfo + ): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IGeneratedCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IGeneratedCodeInfo, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GeneratedCodeInfo + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.GeneratedCodeInfo, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|null); + namespace GeneratedCodeInfo { + /** Properties of an Annotation. */ + interface IAnnotation { + /** Annotation path */ + path?: number[] | null; + + /** Annotation sourceFile */ + sourceFile?: string | null; + + /** Annotation begin */ + begin?: number | null; + + /** Annotation end */ + end?: number | null; + } + + /** Represents an Annotation. */ + class Annotation implements IAnnotation { + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); + + /** Annotation path. */ + public path: number[]; + + /** Annotation sourceFile. */ + public sourceFile: string; + + /** Annotation begin. */ + public begin: number; + + /** Annotation end. */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create( + properties?: google.protobuf.GeneratedCodeInfo.IAnnotation + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.GeneratedCodeInfo.IAnnotation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.GeneratedCodeInfo.IAnnotation, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.GeneratedCodeInfo.Annotation, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** Value numberValue */ - numberValue?: (number|null); + /** Properties of a Struct. */ + interface IStruct { + /** Struct fields */ + fields?: {[k: string]: google.protobuf.IValue} | null; + } - /** Value stringValue */ - stringValue?: (string|null); + /** Represents a Struct. */ + class Struct implements IStruct { + /** + * Constructs a new Struct. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IStruct); + + /** Struct fields. */ + public fields: {[k: string]: google.protobuf.IValue}; + + /** + * Creates a new Struct instance using the specified properties. + * @param [properties] Properties to set + * @returns Struct instance + */ + public static create( + properties?: google.protobuf.IStruct + ): google.protobuf.Struct; + + /** + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IStruct, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IStruct, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Struct message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Struct; + + /** + * Decodes a Struct message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Struct + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Struct; + + /** + * Verifies a Struct message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Struct + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Struct; + + /** + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Struct, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Struct to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Value boolValue */ - boolValue?: (boolean|null); + /** Properties of a Value. */ + interface IValue { + /** Value nullValue */ + nullValue?: google.protobuf.NullValue | null; - /** Value structValue */ - structValue?: (google.protobuf.IStruct|null); + /** Value numberValue */ + numberValue?: number | null; - /** Value listValue */ - listValue?: (google.protobuf.IListValue|null); - } + /** Value stringValue */ + stringValue?: string | null; - /** Represents a Value. */ - class Value implements IValue { - - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value numberValue. */ - public numberValue: number; - - /** Value stringValue. */ - public stringValue: string; - - /** Value boolValue. */ - public boolValue: boolean; - - /** Value structValue. */ - public structValue?: (google.protobuf.IStruct|null); - - /** Value listValue. */ - public listValue?: (google.protobuf.IListValue|null); - - /** Value kind. */ - public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create(properties?: google.protobuf.IValue): google.protobuf.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Value boolValue */ + boolValue?: boolean | null; - /** NullValue enum. */ - enum NullValue { - NULL_VALUE = 0 - } + /** Value structValue */ + structValue?: google.protobuf.IStruct | null; - /** Properties of a ListValue. */ - interface IListValue { + /** Value listValue */ + listValue?: google.protobuf.IListValue | null; + } - /** ListValue values */ - values?: (google.protobuf.IValue[]|null); - } + /** Represents a Value. */ + class Value implements IValue { + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IValue); + + /** Value nullValue. */ + public nullValue: google.protobuf.NullValue; + + /** Value numberValue. */ + public numberValue: number; + + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: google.protobuf.IStruct | null; + + /** Value listValue. */ + public listValue?: google.protobuf.IListValue | null; + + /** Value kind. */ + public kind?: + | 'nullValue' + | 'numberValue' + | 'stringValue' + | 'boolValue' + | 'structValue' + | 'listValue'; + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create( + properties?: google.protobuf.IValue + ): google.protobuf.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Value, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Represents a ListValue. */ - class ListValue implements IListValue { - - /** - * Constructs a new ListValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IListValue); - - /** ListValue values. */ - public values: google.protobuf.IValue[]; - - /** - * Creates a new ListValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ListValue instance - */ - public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; - - /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ListValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; - - /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; - - /** - * Verifies a ListValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ListValue - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; - - /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. - * @param message ListValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ListValue to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0, + } - /** Properties of a Timestamp. */ - interface ITimestamp { + /** Properties of a ListValue. */ + interface IListValue { + /** ListValue values */ + values?: google.protobuf.IValue[] | null; + } - /** Timestamp seconds */ - seconds?: (number|Long|null); + /** Represents a ListValue. */ + class ListValue implements IListValue { + /** + * Constructs a new ListValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IListValue); + + /** ListValue values. */ + public values: google.protobuf.IValue[]; + + /** + * Creates a new ListValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ListValue instance + */ + public static create( + properties?: google.protobuf.IListValue + ): google.protobuf.ListValue; + + /** + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.IListValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.IListValue, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a ListValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.ListValue; + + /** + * Decodes a ListValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.ListValue; + + /** + * Verifies a ListValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListValue + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.ListValue; + + /** + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.ListValue, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } - /** Timestamp nanos */ - nanos?: (number|null); - } + /** Properties of a Timestamp. */ + interface ITimestamp { + /** Timestamp seconds */ + seconds?: number | Long | null; - /** Represents a Timestamp. */ - class Timestamp implements ITimestamp { - - /** - * Constructs a new Timestamp. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ITimestamp); - - /** Timestamp seconds. */ - public seconds: (number|Long); - - /** Timestamp nanos. */ - public nanos: number; - - /** - * Creates a new Timestamp instance using the specified properties. - * @param [properties] Properties to set - * @returns Timestamp instance - */ - public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; - - /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Timestamp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; - - /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; - - /** - * Verifies a Timestamp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Timestamp - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; - - /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. - * @param message Timestamp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Timestamp to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Timestamp nanos */ + nanos?: number | null; } - /** Namespace type. */ - namespace type { - - /** Properties of a LatLng. */ - interface ILatLng { + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { + /** + * Constructs a new Timestamp. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ITimestamp); + + /** Timestamp seconds. */ + public seconds: number | Long; + + /** Timestamp nanos. */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param [properties] Properties to set + * @returns Timestamp instance + */ + public static create( + properties?: google.protobuf.ITimestamp + ): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.protobuf.ITimestamp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.protobuf.ITimestamp, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Timestamp + */ + public static fromObject(object: { + [k: string]: any; + }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.protobuf.Timestamp, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this Timestamp to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; + } + } - /** LatLng latitude */ - latitude?: (number|null); + /** Namespace type. */ + namespace type { + /** Properties of a LatLng. */ + interface ILatLng { + /** LatLng latitude */ + latitude?: number | null; - /** LatLng longitude */ - longitude?: (number|null); - } + /** LatLng longitude */ + longitude?: number | null; + } - /** Represents a LatLng. */ - class LatLng implements ILatLng { - - /** - * Constructs a new LatLng. - * @param [properties] Properties to set - */ - constructor(properties?: google.type.ILatLng); - - /** LatLng latitude. */ - public latitude: number; - - /** LatLng longitude. */ - public longitude: number; - - /** - * Creates a new LatLng instance using the specified properties. - * @param [properties] Properties to set - * @returns LatLng instance - */ - public static create(properties?: google.type.ILatLng): google.type.LatLng; - - /** - * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.type.ILatLng, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a LatLng message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.LatLng; - - /** - * Decodes a LatLng message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.LatLng; - - /** - * Verifies a LatLng message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a LatLng message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LatLng - */ - public static fromObject(object: { [k: string]: any }): google.type.LatLng; - - /** - * Creates a plain object from a LatLng message. Also converts values to other types if specified. - * @param message LatLng - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.type.LatLng, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this LatLng to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents a LatLng. */ + class LatLng implements ILatLng { + /** + * Constructs a new LatLng. + * @param [properties] Properties to set + */ + constructor(properties?: google.type.ILatLng); + + /** LatLng latitude. */ + public latitude: number; + + /** LatLng longitude. */ + public longitude: number; + + /** + * Creates a new LatLng instance using the specified properties. + * @param [properties] Properties to set + * @returns LatLng instance + */ + public static create( + properties?: google.type.ILatLng + ): google.type.LatLng; + + /** + * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: google.type.ILatLng, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. + * @param message LatLng message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: google.type.ILatLng, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a LatLng message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): google.type.LatLng; + + /** + * Decodes a LatLng message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LatLng + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): google.type.LatLng; + + /** + * Verifies a LatLng message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: {[k: string]: any}): string | null; + + /** + * Creates a LatLng message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LatLng + */ + public static fromObject(object: {[k: string]: any}): google.type.LatLng; + + /** + * Creates a plain object from a LatLng message. Also converts values to other types if specified. + * @param message LatLng + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: google.type.LatLng, + options?: $protobuf.IConversionOptions + ): {[k: string]: any}; + + /** + * Converts this LatLng to JSON. + * @returns JSON object + */ + public toJSON(): {[k: string]: any}; } + } } diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index 00f516df280..c15a0d745ea 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -159,29 +159,29 @@ async function deleteTask(taskId) { require(`yargs`) // eslint-disable-line .command( - `new `, - `Adds a task with a description .`, + 'new ', + 'Adds a task with a description .', {}, opts => addTask(opts.description) ) - .command(`done `, `Marks the specified task as done.`, {}, opts => + .command('done ', 'Marks the specified task as done.', {}, opts => markDone(opts.taskId) ) - .command(`merge `, `Marks the specified task as done.`, {}, opts => + .command('merge ', 'Marks the specified task as done.', {}, opts => merge(opts.taskId, opts.description) ) - .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) - .command(`delete `, `Deletes a task.`, {}, opts => + .command('list', 'Lists all tasks ordered by creation time.', {}, listTasks) + .command('delete ', 'Deletes a task.', {}, opts => deleteTask(opts.taskId) ) - .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) - .example(`node $0 done 12345`, `Marks task 12345 as Done.`) + .example('node $0 new "Buy milk"', 'Adds a task with description "Buy milk".') + .example('node $0 done 12345', 'Marks task 12345 as Done.') .example( - `node $0 merge 12345`, - `update task 12345 with description "Buy food".` + 'node $0 merge 12345', + 'update task 12345 with description "Buy food".' ) - .example(`node $0 list`, `Lists all tasks ordered by creation time`) - .example(`node $0 delete 12345`, `Deletes task 12345.`) + .example('node $0 list', 'Lists all tasks ordered by creation time') + .example('node $0 delete 12345', 'Deletes task 12345.') .wrap(120) - .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) + .epilogue('For more information, see https://cloud.google.com/datastore/docs') .help().argv; diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js index e46de0bbadb..ff1ef09710e 100644 --- a/handwritten/nodejs-datastore/samples/test/error.test.js +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -25,7 +25,7 @@ const exec = cmd => describe('error', () => { it('should have an error', done => { const errorCode = 3; - const output = exec(`node error.js`); + const output = exec('node error.js'); assert.strictEqual(parseInt(output[0]), errorCode); done(); }); diff --git a/handwritten/nodejs-datastore/samples/test/tasks.test.js b/handwritten/nodejs-datastore/samples/test/tasks.test.js index 10bf34bdfaa..ee09b1c2f1f 100644 --- a/handwritten/nodejs-datastore/samples/test/tasks.test.js +++ b/handwritten/nodejs-datastore/samples/test/tasks.test.js @@ -33,7 +33,7 @@ describe('task samples', () => { const parts = output.match(expected); assert.match(parts[0], expected); const keyId = Number(parts[1]); - const [task] = await datastore.get(datastore.key([`Task`, keyId])); + const [task] = await datastore.get(datastore.key(['Task', keyId])); key = task[datastore.KEY]; assert.strictEqual(task.description, description); }); diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index d0368ae855b..3483e598146 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-inner-declarations */ // Copyright 2014 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,12 +18,12 @@ import * as extend from 'extend'; import * as is from 'is'; import {Query, QueryProto, IntegerTypeCastOptions} from './query'; import {PathType} from '.'; -import * as Protobuf from 'protobufjs'; +import {protobuf as Protobuf} from 'google-gax'; import * as path from 'path'; import * as appengine from '../proto/app_engine_key'; import {google} from '../proto/datastore'; -// tslint:disable-next-line no-namespace +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace entity { export interface InvalidKeyErrorOptions { code: string; @@ -152,7 +153,7 @@ export namespace entity { this.typeCastFunction = typeCastOptions.integerTypeCastFunction; if (typeof typeCastOptions.integerTypeCastFunction !== 'function') { throw new Error( - `integerTypeCastFunction is not a function or was not provided.` + 'integerTypeCastFunction is not a function or was not provided.' ); } @@ -161,7 +162,7 @@ export namespace entity { : undefined; } } - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any valueOf(): any { let shouldCustomCast = this.typeCastFunction ? true : false; if ( @@ -506,7 +507,7 @@ export namespace entity { switch (valueType) { case 'arrayValue': { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any return value.values.map((val: any) => entity.decodeValueProto(val, wrapNumbers) ); @@ -564,7 +565,7 @@ export namespace entity { * // stringValue: 'Hi' * // } */ - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any export function encodeValue(value: any, property: string): ValueProto { const valueProto: ValueProto = {}; @@ -648,9 +649,7 @@ export namespace entity { value = extend(true, {}, value); for (const prop in value) { - if (value.hasOwnProperty(prop)) { - value[prop] = entity.encodeValue(value[prop], prop); - } + value[prop] = entity.encodeValue(value[prop], prop); } } @@ -696,16 +695,15 @@ export namespace entity { * // name: 'Stephen' * // } */ - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any export function entityFromEntityProto( entityProto: EntityProto, wrapNumbers?: boolean | IntegerTypeCastOptions ) { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const entityObject: any = {}; const properties = entityProto.properties || {}; - // tslint:disable-next-line forin for (const property in properties) { const value = properties[property]; value.propertyName = property; @@ -757,7 +755,7 @@ export namespace entity { encoded[key] = entity.encodeValue(properties[key], key); return encoded; }, - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any {} as any ), }; @@ -828,7 +826,7 @@ export namespace entity { !hasWildCard ) { const array = entity.properties![firstPathPart].arrayValue; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any array.values.forEach((value: any) => { if (remainderPath === '') { // We want to exclude *this* array property, which is @@ -849,7 +847,7 @@ export namespace entity { }); } else if (firstPathPartIsArray && hasWildCard && remainderPath === '*') { const array = entity.properties![firstPathPart].arrayValue; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any array.values.forEach((value: any) => { if (value.entityValue) { excludePathFromEntity(value.entityValue, '.*'); @@ -1012,7 +1010,7 @@ export namespace entity { * }); */ export function keyFromKeyProto(keyProto: KeyProto): Key { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const keyOptions: any = { path: [], }; @@ -1067,7 +1065,7 @@ export namespace entity { }); } - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const keyProto: KeyProto = { path: [], }; @@ -1089,7 +1087,7 @@ export namespace entity { }); } - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const pathElement: any = { kind: key.kind, }; @@ -1103,7 +1101,6 @@ export namespace entity { } keyProto.path!.unshift(pathElement); - // tslint:disable-next-line no-conditional-assignment } while ((key = key.parent!) && ++numKeysWalked); return keyProto; @@ -1208,7 +1205,7 @@ export namespace entity { if (query.filters.length > 0) { const filters = query.filters.map(filter => { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any let value: any = {}; if (filter.name === '__key__') { @@ -1249,7 +1246,7 @@ export namespace entity { * @class */ export class URLSafeKey { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any protos: any; constructor() { @@ -1292,7 +1289,7 @@ export namespace entity { let currentKey = key; do { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const element: any = { type: currentKey.kind, }; @@ -1403,11 +1400,11 @@ export namespace entity { } export interface ValueProto { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any [index: string]: any; valueType?: string; values?: ValueProto[]; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any value?: any; propertyName?: string; } @@ -1418,12 +1415,12 @@ export interface EntityProto { excludeFromIndexes?: boolean; } -// tslint:disable-next-line no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type Entity = any; export type Entities = Entity | Entity[]; interface KeyProtoPathElement extends google.datastore.v1.Key.IPathElement { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any [index: string]: any; idType?: string; } diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f419378b361..93c693b896c 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1004,5 +1004,7 @@ export interface DatastoreOptions extends GoogleAuthOptions { export interface KeyToLegacyUrlSafeCallback { (err?: Error | null, urlSafeKey?: string): void; } +const v1 = gapic.v1; +export {v1}; import * as protos from '../protos/protos'; export {protos}; diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index bbf2b21a9c0..0c5c2064681 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -35,7 +35,7 @@ export interface Order { export interface Filter { name: string; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any val: any; op: Operator; } @@ -457,13 +457,12 @@ class Query { optionsOrCallback?: RunQueryOptions | RunQueryCallback, cb?: RunQueryCallback ): void | Promise { - const query = this; const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; const runQuery = this.scope!.runQuery.bind(this.scope); - return runQuery(query, options, callback); + return runQuery(this, options, callback); } /** diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index d5735499cf2..93ceb11556d 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -18,6 +18,7 @@ import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisifyAll} from '@google-cloud/promisify'; import arrify = require('arrify'); +// eslint-disable-next-line @typescript-eslint/no-var-requires const concat = require('concat-stream'); import * as extend from 'extend'; import {split} from 'split-array-stream'; @@ -49,7 +50,6 @@ import { RunQueryCallback, } from './query'; import {Datastore} from '.'; -import {ServiceError} from '@grpc/grpc-js'; /** * A map of read consistency values to proto codes. @@ -1432,7 +1432,7 @@ export interface AllocateIdsOptions { allocations?: number; gaxOptions?: CallOptions; } -export interface CreateReadStreamOptions extends RunQueryOptions {} +export type CreateReadStreamOptions = RunQueryOptions; export interface GetCallback { (err?: Error | null, entity?: Entities): void; } @@ -1453,7 +1453,7 @@ export type ProjectId = string | null | undefined; export interface RequestCallback { ( a?: Error | null, - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any b?: any ): void; } @@ -1478,20 +1478,20 @@ export interface RequestOptions { projectId?: ProjectId; query?: QueryProto; } -export interface RunQueryStreamOptions extends RunQueryOptions {} +export type RunQueryStreamOptions = RunQueryOptions; export interface CommitCallback { (err?: Error | null, resp?: google.datastore.v1.ICommitResponse): void; } export type CommitResponse = [google.datastore.v1.ICommitResponse]; -export interface SaveCallback extends CommitCallback {} +export type SaveCallback = CommitCallback; export type SaveResponse = CommitResponse; -export interface UpdateCallback extends CommitCallback {} +export type UpdateCallback = CommitCallback; export type UpdateResponse = CommitResponse; -export interface UpsertCallback extends CommitCallback {} +export type UpsertCallback = CommitCallback; export type UpsertResponse = CommitResponse; -export interface DeleteCallback extends CommitCallback {} +export type DeleteCallback = CommitCallback; export type DeleteResponse = CommitResponse; -export interface InsertCallback extends CommitCallback {} +export type InsertCallback = CommitCallback; export type InsertResponse = CommitResponse; /*! Developer Documentation diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 8a761278572..4124b346b28 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -372,7 +372,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any delete(entities?: Entities): any { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ @@ -671,7 +671,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any save(entities: Entities): any { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 5d2cda26223..aadcbd82f5a 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -17,16 +17,10 @@ // ** All changes to this file may be overwritten. ** import * as gax from 'google-gax'; -import { - APICallback, - Callback, - CallOptions, - Descriptors, - ClientOptions, -} from 'google-gax'; +import {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; import * as path from 'path'; -import * as protosTypes from '../../protos/protos'; +import * as protos from '../../protos/protos'; import * as gapicConfig from './datastore_client_config.json'; const version = require('../../../package.json').version; @@ -43,13 +37,6 @@ const version = require('../../../package.json').version; * @memberof v1 */ export class DatastoreClient { - private _descriptors: Descriptors = { - page: {}, - stream: {}, - longrunning: {}, - batching: {}, - }; - private _innerApiCalls: {[name: string]: Function}; private _terminated = false; private _opts: ClientOptions; private _gaxModule: typeof gax | typeof gax.fallback; @@ -57,6 +44,13 @@ export class DatastoreClient { private _protos: {}; private _defaults: {[method: string]: gax.CallSettings}; auth: gax.GoogleAuth; + descriptors: Descriptors = { + page: {}, + stream: {}, + longrunning: {}, + batching: {}, + }; + innerApiCalls: {[name: string]: Function}; datastoreStub?: Promise<{[name: string]: Function}>; /** @@ -148,7 +142,10 @@ export class DatastoreClient { 'protos.json' ); this._protos = this._gaxGrpc.loadProto( - opts.fallback ? require('../../protos/protos.json') : nodejsProtoPath + opts.fallback + ? // eslint-disable-next-line @typescript-eslint/no-var-requires + require('../../protos/protos.json') + : nodejsProtoPath ); // Put together the default options sent with requests. @@ -162,7 +159,7 @@ export class DatastoreClient { // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code // merely providing the destination and request information. - this._innerApiCalls = {}; + this.innerApiCalls = {}; } /** @@ -189,7 +186,7 @@ export class DatastoreClient { ? (this._protos as protobuf.Root).lookupService( 'google.datastore.v1.Datastore' ) - : // tslint:disable-next-line no-any + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.datastore.v1.Datastore, this._opts ) as Promise<{[method: string]: Function}>; @@ -205,9 +202,8 @@ export class DatastoreClient { 'allocateIds', 'reserveIds', ]; - for (const methodName of datastoreStubMethods) { - const innerCallPromise = this.datastoreStub.then( + const callPromise = this.datastoreStub.then( stub => (...args: Array<{}>) => { if (this._terminated) { return Promise.reject('The client has already been closed.'); @@ -221,20 +217,14 @@ export class DatastoreClient { ); const apiCall = this._gaxModule.createApiCall( - innerCallPromise, + callPromise, this._defaults[methodName], - this._descriptors.page[methodName] || - this._descriptors.stream[methodName] || - this._descriptors.longrunning[methodName] + this.descriptors.page[methodName] || + this.descriptors.stream[methodName] || + this.descriptors.longrunning[methodName] ); - this._innerApiCalls[methodName] = ( - argument: {}, - callOptions?: CallOptions, - callback?: APICallback - ) => { - return apiCall(argument, callOptions, callback); - }; + this.innerApiCalls[methodName] = apiCall; } return this.datastoreStub; @@ -294,22 +284,30 @@ export class DatastoreClient { // -- Service calls -- // ------------------- lookup( - request: protosTypes.google.datastore.v1.ILookupRequest, + request: protos.google.datastore.v1.ILookupRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.ILookupResponse, - protosTypes.google.datastore.v1.ILookupRequest | undefined, + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | undefined, {} | undefined ] >; lookup( - request: protosTypes.google.datastore.v1.ILookupRequest, + request: protos.google.datastore.v1.ILookupRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.ILookupResponse, - protosTypes.google.datastore.v1.ILookupRequest | undefined, - {} | undefined + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined + > + ): void; + lookup( + request: protos.google.datastore.v1.ILookupRequest, + callback: Callback< + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -330,23 +328,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ lookup( - request: protosTypes.google.datastore.v1.ILookupRequest, + request: protos.google.datastore.v1.ILookupRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.ILookupResponse, - protosTypes.google.datastore.v1.ILookupRequest | undefined, - {} | undefined + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.ILookupResponse, - protosTypes.google.datastore.v1.ILookupRequest | undefined, - {} | undefined + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.ILookupResponse, - protosTypes.google.datastore.v1.ILookupRequest | undefined, + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | undefined, {} | undefined ] > | void { @@ -360,25 +358,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.lookup(request, options, callback); + return this.innerApiCalls.lookup(request, options, callback); } runQuery( - request: protosTypes.google.datastore.v1.IRunQueryRequest, + request: protos.google.datastore.v1.IRunQueryRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.IRunQueryResponse, - protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | undefined, {} | undefined ] >; runQuery( - request: protosTypes.google.datastore.v1.IRunQueryRequest, + request: protos.google.datastore.v1.IRunQueryRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.IRunQueryResponse, - protosTypes.google.datastore.v1.IRunQueryRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | null | undefined, + {} | null | undefined + > + ): void; + runQuery( + request: protos.google.datastore.v1.IRunQueryRequest, + callback: Callback< + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -406,23 +412,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ runQuery( - request: protosTypes.google.datastore.v1.IRunQueryRequest, + request: protos.google.datastore.v1.IRunQueryRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.IRunQueryResponse, - protosTypes.google.datastore.v1.IRunQueryRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.IRunQueryResponse, - protosTypes.google.datastore.v1.IRunQueryRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.IRunQueryResponse, - protosTypes.google.datastore.v1.IRunQueryRequest | undefined, + protos.google.datastore.v1.IRunQueryResponse, + protos.google.datastore.v1.IRunQueryRequest | undefined, {} | undefined ] > | void { @@ -436,25 +442,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.runQuery(request, options, callback); + return this.innerApiCalls.runQuery(request, options, callback); } beginTransaction( - request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + request: protos.google.datastore.v1.IBeginTransactionRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.IBeginTransactionResponse, - protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + protos.google.datastore.v1.IBeginTransactionResponse, + protos.google.datastore.v1.IBeginTransactionRequest | undefined, {} | undefined ] >; beginTransaction( - request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + request: protos.google.datastore.v1.IBeginTransactionRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.IBeginTransactionResponse, - protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, - {} | undefined + protos.google.datastore.v1.IBeginTransactionResponse, + protos.google.datastore.v1.IBeginTransactionRequest | null | undefined, + {} | null | undefined + > + ): void; + beginTransaction( + request: protos.google.datastore.v1.IBeginTransactionRequest, + callback: Callback< + protos.google.datastore.v1.IBeginTransactionResponse, + protos.google.datastore.v1.IBeginTransactionRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -473,23 +487,25 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ beginTransaction( - request: protosTypes.google.datastore.v1.IBeginTransactionRequest, + request: protos.google.datastore.v1.IBeginTransactionRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.IBeginTransactionResponse, - protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, - {} | undefined + protos.google.datastore.v1.IBeginTransactionResponse, + | protos.google.datastore.v1.IBeginTransactionRequest + | null + | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.IBeginTransactionResponse, - protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, - {} | undefined + protos.google.datastore.v1.IBeginTransactionResponse, + protos.google.datastore.v1.IBeginTransactionRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.IBeginTransactionResponse, - protosTypes.google.datastore.v1.IBeginTransactionRequest | undefined, + protos.google.datastore.v1.IBeginTransactionResponse, + protos.google.datastore.v1.IBeginTransactionRequest | undefined, {} | undefined ] > | void { @@ -503,25 +519,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.beginTransaction(request, options, callback); + return this.innerApiCalls.beginTransaction(request, options, callback); } commit( - request: protosTypes.google.datastore.v1.ICommitRequest, + request: protos.google.datastore.v1.ICommitRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.ICommitResponse, - protosTypes.google.datastore.v1.ICommitRequest | undefined, + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | undefined, {} | undefined ] >; commit( - request: protosTypes.google.datastore.v1.ICommitRequest, + request: protos.google.datastore.v1.ICommitRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.ICommitResponse, - protosTypes.google.datastore.v1.ICommitRequest | undefined, - {} | undefined + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined + > + ): void; + commit( + request: protos.google.datastore.v1.ICommitRequest, + callback: Callback< + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -559,23 +583,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ commit( - request: protosTypes.google.datastore.v1.ICommitRequest, + request: protos.google.datastore.v1.ICommitRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.ICommitResponse, - protosTypes.google.datastore.v1.ICommitRequest | undefined, - {} | undefined + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.ICommitResponse, - protosTypes.google.datastore.v1.ICommitRequest | undefined, - {} | undefined + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.ICommitResponse, - protosTypes.google.datastore.v1.ICommitRequest | undefined, + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | undefined, {} | undefined ] > | void { @@ -589,25 +613,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.commit(request, options, callback); + return this.innerApiCalls.commit(request, options, callback); } rollback( - request: protosTypes.google.datastore.v1.IRollbackRequest, + request: protos.google.datastore.v1.IRollbackRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.IRollbackResponse, - protosTypes.google.datastore.v1.IRollbackRequest | undefined, + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | undefined, {} | undefined ] >; rollback( - request: protosTypes.google.datastore.v1.IRollbackRequest, + request: protos.google.datastore.v1.IRollbackRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.IRollbackResponse, - protosTypes.google.datastore.v1.IRollbackRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | null | undefined, + {} | null | undefined + > + ): void; + rollback( + request: protos.google.datastore.v1.IRollbackRequest, + callback: Callback< + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -627,23 +659,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ rollback( - request: protosTypes.google.datastore.v1.IRollbackRequest, + request: protos.google.datastore.v1.IRollbackRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.IRollbackResponse, - protosTypes.google.datastore.v1.IRollbackRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.IRollbackResponse, - protosTypes.google.datastore.v1.IRollbackRequest | undefined, - {} | undefined + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.IRollbackResponse, - protosTypes.google.datastore.v1.IRollbackRequest | undefined, + protos.google.datastore.v1.IRollbackResponse, + protos.google.datastore.v1.IRollbackRequest | undefined, {} | undefined ] > | void { @@ -657,25 +689,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.rollback(request, options, callback); + return this.innerApiCalls.rollback(request, options, callback); } allocateIds( - request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + request: protos.google.datastore.v1.IAllocateIdsRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.IAllocateIdsResponse, - protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | undefined, {} | undefined ] >; allocateIds( - request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + request: protos.google.datastore.v1.IAllocateIdsRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.IAllocateIdsResponse, - protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, + {} | null | undefined + > + ): void; + allocateIds( + request: protos.google.datastore.v1.IAllocateIdsRequest, + callback: Callback< + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -696,23 +736,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ allocateIds( - request: protosTypes.google.datastore.v1.IAllocateIdsRequest, + request: protos.google.datastore.v1.IAllocateIdsRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.IAllocateIdsResponse, - protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.IAllocateIdsResponse, - protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.IAllocateIdsResponse, - protosTypes.google.datastore.v1.IAllocateIdsRequest | undefined, + protos.google.datastore.v1.IAllocateIdsResponse, + protos.google.datastore.v1.IAllocateIdsRequest | undefined, {} | undefined ] > | void { @@ -726,25 +766,33 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.allocateIds(request, options, callback); + return this.innerApiCalls.allocateIds(request, options, callback); } reserveIds( - request: protosTypes.google.datastore.v1.IReserveIdsRequest, + request: protos.google.datastore.v1.IReserveIdsRequest, options?: gax.CallOptions ): Promise< [ - protosTypes.google.datastore.v1.IReserveIdsResponse, - protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | undefined, {} | undefined ] >; reserveIds( - request: protosTypes.google.datastore.v1.IReserveIdsRequest, + request: protos.google.datastore.v1.IReserveIdsRequest, options: gax.CallOptions, callback: Callback< - protosTypes.google.datastore.v1.IReserveIdsResponse, - protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | null | undefined, + {} | null | undefined + > + ): void; + reserveIds( + request: protos.google.datastore.v1.IReserveIdsRequest, + callback: Callback< + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | null | undefined, + {} | null | undefined > ): void; /** @@ -767,23 +815,23 @@ export class DatastoreClient { * The promise has a method named "cancel" which cancels the ongoing API call. */ reserveIds( - request: protosTypes.google.datastore.v1.IReserveIdsRequest, + request: protos.google.datastore.v1.IReserveIdsRequest, optionsOrCallback?: | gax.CallOptions | Callback< - protosTypes.google.datastore.v1.IReserveIdsResponse, - protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | null | undefined, + {} | null | undefined >, callback?: Callback< - protosTypes.google.datastore.v1.IReserveIdsResponse, - protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, - {} | undefined + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | null | undefined, + {} | null | undefined > ): Promise< [ - protosTypes.google.datastore.v1.IReserveIdsResponse, - protosTypes.google.datastore.v1.IReserveIdsRequest | undefined, + protos.google.datastore.v1.IReserveIdsResponse, + protos.google.datastore.v1.IReserveIdsRequest | undefined, {} | undefined ] > | void { @@ -797,7 +845,7 @@ export class DatastoreClient { } options = options || {}; this.initialize(); - return this._innerApiCalls.reserveIds(request, options, callback); + return this.innerApiCalls.reserveIds(request, options, callback); } /** diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index ed96b976501..51afda639b5 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,19 +1,20 @@ { - "updateTime": "2020-03-22T11:23:41.160781Z", + "updateTime": "2020-04-02T17:21:31.795946Z", "sources": [ { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0be7105dc52590fa9a24e784052298ae37ce53aa", - "internalRef": "302154871" + "sha": "01f3ccbaa66cf3ae4e3b9fd140b1ecfbe54a3ed0", + "internalRef": "304416658", + "log": "01f3ccbaa66cf3ae4e3b9fd140b1ecfbe54a3ed0\nFix: Add package/namespace options for C#, Ruby and PHP in remaining protos.\n\nPiperOrigin-RevId: 304416658\n\nb89abbf12cd3c086abddcd79adb0a653349f960a\nchore(google/maps): Rename nox.py to noxfile.py\n\nupstream wip fix here: https://github.com/googleapis/gapic-generator/pull/3156\n\nPiperOrigin-RevId: 304411146\n\nbbf26d7f11fae7789b13959bf100983c496c9807\nSynchronize new proto/yaml changes.\n\nPiperOrigin-RevId: 304409906\n\n" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "7e98e1609c91082f4eeb63b530c6468aefd18cfd" + "sha": "99820243d348191bc9c634f2b48ddf65096285ed" } } ], diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index ed2a18b1b43..d7c3d907c2e 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -24,14 +24,14 @@ # Copy everything except for top level index, package.json, and README.md s.copy( library, - excludes=['package.json', 'README.md', 'src/index.ts']) + excludes=['package.json', 'README.md', 'src/index.ts', '.eslintignore']) system_test_files=['system-test/fixtures/sample/src/index.ts','system-test/fixtures/sample/src/index.js'] for file in system_test_files: s.replace(file, 'DatastoreClient', 'Datastore') common_templates = gcp.CommonTemplates() templates = common_templates.node_library(source_location="build/src") -s.copy(templates) +s.copy(templates, excludes=['.eslintignore']) # Node.js specific cleanup subprocess.run(['npm', 'install']) diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 88195a5b4ee..be4fdec3cb6 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -13,9 +13,8 @@ // limitations under the License. import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {before, after, describe, it} from 'mocha'; import {Datastore} from '../src'; -const assertRejects = require('assert-rejects'); describe('Datastore', () => { const testKinds: string[] = []; @@ -25,7 +24,7 @@ describe('Datastore', () => { // Override the Key method so we can track what keys are created during the // tests. They are then deleted in the `after` hook. const key = datastore.key; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any datastore.key = function(options: any) { const keyObject = key.call(this, options); testKinds.push(keyObject.kind); @@ -266,7 +265,7 @@ describe('Datastore', () => { await datastore.save({key: postKey, data: {panthers, broncos}}); const [entity] = await datastore.get(postKey, { wrapNumbers: { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any integerTypeCastFunction: (value: any) => { integerTypeCastFunctionCalled++; return value.toString(); @@ -384,7 +383,7 @@ describe('Datastore', () => { // The key's path should now be complete. assert(postKey.id); - await assertRejects( + await assert.rejects( datastore.save({ key: postKey, method: 'insert', @@ -399,7 +398,7 @@ describe('Datastore', () => { it('should fail explicitly set first update on save', async () => { const postKey = datastore.key('Post'); - await assertRejects( + await assert.rejects( datastore.save({ key: postKey, method: 'update', @@ -921,7 +920,7 @@ describe('Datastore', () => { await transaction.run(); await transaction.get(key); transaction.save({key, data: {}}); - await assertRejects(transaction.commit()); + await assert.rejects(transaction.commit()); }); }); }); diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 9ffec79e9ce..f30742fb116 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -19,7 +19,7 @@ import {Datastore} from '@google-cloud/datastore'; function main() { - const datastoreClient = new Datastore(); + new Datastore(); } main(); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 47eb94171d6..e43f3b7bec6 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -13,11 +13,11 @@ // limitations under the License. import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {beforeEach, afterEach, describe, it} from 'mocha'; import * as extend from 'extend'; import * as sinon from 'sinon'; import {Datastore} from '../src'; -import {Entity, entity, ValueProto} from '../src/entity'; +import {Entity} from '../src/entity'; import {IntegerTypeCastOptions} from '../src/query'; export function outOfBoundsError(opts: { @@ -173,7 +173,7 @@ describe('entity', () => { }; assert.doesNotThrow(() => { - const a = new entity.Int(valueProto); + new entity.Int(valueProto); }, new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`)); }); }); @@ -321,7 +321,7 @@ describe('entity', () => { it('should not modify input path', () => { const inputPath = ['ParentKind', 1, 'Kind', 1]; - const key = new entity.Key({path: inputPath}); + new entity.Key({path: inputPath}); assert.deepStrictEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); }); @@ -1517,7 +1517,7 @@ describe('entity', () => { describe('should pass `wrapNumbers` to entityFromEntityProto', () => { const results = [{entity: {}}]; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any let entityFromEntityProtoStub: any; let wrapNumbers: boolean | IntegerTypeCastOptions | undefined; @@ -1622,7 +1622,8 @@ describe('entity', () => { it('should set the namespace', done => { entity.Key = class { - constructor(keyOptions: entity.KeyOptions) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(keyOptions: any) { assert.strictEqual(keyOptions.namespace, NAMESPACE); done(); } @@ -1632,7 +1633,8 @@ describe('entity', () => { it('should create a proper Key', done => { entity.Key = class { - constructor(keyOptions: entity.KeyOptions) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(keyOptions: any) { assert.deepStrictEqual(keyOptions, { namespace: NAMESPACE, path: ['Kind', new entity.Int(111), 'Kind2', 'name'], @@ -1900,7 +1902,8 @@ describe('entity', () => { describe('UrlSafeKey', () => { const PROJECT_ID = 'grass-clump-479'; const LOCATION_PREFIX = 's~'; - let urlSafeKey: entity.URLSafeKey; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let urlSafeKey: any; beforeEach(() => { urlSafeKey = new entity.URLSafeKey(); diff --git a/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts b/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts deleted file mode 100644 index b555e138eb7..00000000000 --- a/handwritten/nodejs-datastore/test/gapic-datastore-v1.ts +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ** This file is automatically generated by gapic-generator-typescript. ** -// ** https://github.com/googleapis/gapic-generator-typescript ** -// ** All changes to this file may be overwritten. ** - -import * as protosTypes from '../protos/protos'; -import * as assert from 'assert'; -import {describe, it} from 'mocha'; -const datastoreModule = require('../src'); - -const FAKE_STATUS_CODE = 1; -class FakeError { - name: string; - message: string; - code: number; - constructor(n: number) { - this.name = 'fakeName'; - this.message = 'fake message'; - this.code = n; - } -} -const error = new FakeError(FAKE_STATUS_CODE); -export interface Callback { - (err: FakeError | null, response?: {} | null): void; -} - -export class Operation { - constructor() {} - promise() {} -} -function mockSimpleGrpcMethod( - expectedRequest: {}, - response: {} | null, - error: FakeError | null -) { - return (actualRequest: {}, options: {}, callback: Callback) => { - assert.deepStrictEqual(actualRequest, expectedRequest); - if (error) { - callback(error); - } else if (response) { - callback(null, response); - } else { - callback(null); - } - }; -} -describe('v1.DatastoreClient', () => { - it('has servicePath', () => { - const servicePath = datastoreModule.v1.DatastoreClient.servicePath; - assert(servicePath); - }); - it('has apiEndpoint', () => { - const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; - assert(apiEndpoint); - }); - it('has port', () => { - const port = datastoreModule.v1.DatastoreClient.port; - assert(port); - assert(typeof port === 'number'); - }); - it('should create a client with no option', () => { - const client = new datastoreModule.v1.DatastoreClient(); - assert(client); - }); - it('should create a client with gRPC fallback', () => { - const client = new datastoreModule.v1.DatastoreClient({ - fallback: true, - }); - assert(client); - }); - it('has initialize method and supports deferred initialization', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.datastoreStub, undefined); - await client.initialize(); - assert(client.datastoreStub); - }); - it('has close method', () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.close(); - }); - describe('lookup', () => { - it('invokes lookup without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.ILookupRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.lookup(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes lookup with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.ILookupRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.lookup = mockSimpleGrpcMethod(request, null, error); - client.lookup(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('runQuery', () => { - it('invokes runQuery without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IRunQueryRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.runQuery = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.runQuery(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes runQuery with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IRunQueryRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.runQuery = mockSimpleGrpcMethod( - request, - null, - error - ); - client.runQuery(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('beginTransaction', () => { - it('invokes beginTransaction without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IBeginTransactionRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.beginTransaction(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes beginTransaction with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IBeginTransactionRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.beginTransaction = mockSimpleGrpcMethod( - request, - null, - error - ); - client.beginTransaction(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('commit', () => { - it('invokes commit without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.ICommitRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.commit = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.commit(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes commit with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.ICommitRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.commit = mockSimpleGrpcMethod(request, null, error); - client.commit(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('rollback', () => { - it('invokes rollback without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IRollbackRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.rollback = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.rollback(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes rollback with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IRollbackRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.rollback = mockSimpleGrpcMethod( - request, - null, - error - ); - client.rollback(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('allocateIds', () => { - it('invokes allocateIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IAllocateIdsRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.allocateIds(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes allocateIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IAllocateIdsRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.allocateIds = mockSimpleGrpcMethod( - request, - null, - error - ); - client.allocateIds(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); - describe('reserveIds', () => { - it('invokes reserveIds without error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IReserveIdsRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( - request, - expectedResponse, - null - ); - client.reserveIds(request, (err: {}, response: {}) => { - assert.ifError(err); - assert.deepStrictEqual(response, expectedResponse); - done(); - }); - }); - - it('invokes reserveIds with error', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - // Initialize client before mocking - client.initialize(); - // Mock request - const request: protosTypes.google.datastore.v1.IReserveIdsRequest = {}; - // Mock response - const expectedResponse = {}; - // Mock gRPC layer - client._innerApiCalls.reserveIds = mockSimpleGrpcMethod( - request, - null, - error - ); - client.reserveIds(request, (err: FakeError, response: {}) => { - assert(err instanceof FakeError); - assert.strictEqual(err.code, FAKE_STATUS_CODE); - assert(typeof response === 'undefined'); - done(); - }); - }); - }); -}); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts new file mode 100644 index 00000000000..4d4d6250e00 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -0,0 +1,751 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + +import * as protos from '../protos/protos'; +import * as assert from 'assert'; +import * as sinon from 'sinon'; +import {SinonStub} from 'sinon'; +import {describe, it} from 'mocha'; +import * as datastoreModule from '../src'; + +import {protobuf} from 'google-gax'; + +function generateSampleMessage(instance: T) { + const filledObject = (instance.constructor as typeof protobuf.Message).toObject( + instance as protobuf.Message, + {defaults: true} + ); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject + ) as T; +} + +function stubSimpleCall(response?: ResponseType, error?: Error) { + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); +} + +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); +} + +describe('v1.DatastoreClient', () => { + it('has servicePath', () => { + const servicePath = datastoreModule.v1.DatastoreClient.servicePath; + assert(servicePath); + }); + + it('has apiEndpoint', () => { + const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; + assert(apiEndpoint); + }); + + it('has port', () => { + const port = datastoreModule.v1.DatastoreClient.port; + assert(port); + assert(typeof port === 'number'); + }); + + it('should create a client with no option', () => { + const client = new datastoreModule.v1.DatastoreClient(); + assert(client); + }); + + it('should create a client with gRPC fallback', () => { + const client = new datastoreModule.v1.DatastoreClient({ + fallback: true, + }); + assert(client); + }); + + it('has initialize method and supports deferred initialization', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreStub, undefined); + await client.initialize(); + assert(client.datastoreStub); + }); + + it('has close method', () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.close(); + }); + + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); + + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + + describe('lookup', () => { + it('invokes lookup without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.LookupRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.LookupResponse() + ); + client.innerApiCalls.lookup = stubSimpleCall(expectedResponse); + const [response] = await client.lookup(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.lookup as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes lookup without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.LookupRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.LookupResponse() + ); + client.innerApiCalls.lookup = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.lookup( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.ILookupResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.lookup as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes lookup with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.LookupRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); + assert.rejects(async () => { + await client.lookup(request); + }, expectedError); + assert( + (client.innerApiCalls.lookup as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('runQuery', () => { + it('invokes runQuery without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunQueryRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RunQueryResponse() + ); + client.innerApiCalls.runQuery = stubSimpleCall(expectedResponse); + const [response] = await client.runQuery(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.runQuery as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes runQuery without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunQueryRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RunQueryResponse() + ); + client.innerApiCalls.runQuery = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.runQuery( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IRunQueryResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.runQuery as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes runQuery with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunQueryRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); + assert.rejects(async () => { + await client.runQuery(request); + }, expectedError); + assert( + (client.innerApiCalls.runQuery as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('beginTransaction', () => { + it('invokes beginTransaction without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionResponse() + ); + client.innerApiCalls.beginTransaction = stubSimpleCall(expectedResponse); + const [response] = await client.beginTransaction(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.beginTransaction as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes beginTransaction without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionResponse() + ); + client.innerApiCalls.beginTransaction = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.beginTransaction( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IBeginTransactionResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.beginTransaction as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes beginTransaction with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.beginTransaction = stubSimpleCall( + undefined, + expectedError + ); + assert.rejects(async () => { + await client.beginTransaction(request); + }, expectedError); + assert( + (client.innerApiCalls.beginTransaction as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('commit', () => { + it('invokes commit without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.CommitRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.CommitResponse() + ); + client.innerApiCalls.commit = stubSimpleCall(expectedResponse); + const [response] = await client.commit(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.commit as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes commit without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.CommitRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.CommitResponse() + ); + client.innerApiCalls.commit = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.commit( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.ICommitResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.commit as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes commit with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.CommitRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); + assert.rejects(async () => { + await client.commit(request); + }, expectedError); + assert( + (client.innerApiCalls.commit as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('rollback', () => { + it('invokes rollback without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RollbackRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RollbackResponse() + ); + client.innerApiCalls.rollback = stubSimpleCall(expectedResponse); + const [response] = await client.rollback(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.rollback as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes rollback without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RollbackRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RollbackResponse() + ); + client.innerApiCalls.rollback = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.rollback( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IRollbackResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.rollback as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes rollback with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RollbackRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); + assert.rejects(async () => { + await client.rollback(request); + }, expectedError); + assert( + (client.innerApiCalls.rollback as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('allocateIds', () => { + it('invokes allocateIds without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsResponse() + ); + client.innerApiCalls.allocateIds = stubSimpleCall(expectedResponse); + const [response] = await client.allocateIds(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.allocateIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes allocateIds without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsResponse() + ); + client.innerApiCalls.allocateIds = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.allocateIds( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IAllocateIdsResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.allocateIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes allocateIds with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.allocateIds = stubSimpleCall( + undefined, + expectedError + ); + assert.rejects(async () => { + await client.allocateIds(request); + }, expectedError); + assert( + (client.innerApiCalls.allocateIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('reserveIds', () => { + it('invokes reserveIds without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsResponse() + ); + client.innerApiCalls.reserveIds = stubSimpleCall(expectedResponse); + const [response] = await client.reserveIds(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.reserveIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes reserveIds without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsRequest() + ); + const expectedOptions = {}; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsResponse() + ); + client.innerApiCalls.reserveIds = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.reserveIds( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IReserveIdsResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.reserveIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes reserveIds with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsRequest() + ); + const expectedOptions = {}; + const expectedError = new Error('expected'); + client.innerApiCalls.reserveIds = stubSimpleCall( + undefined, + expectedError + ); + assert.rejects(async () => { + await client.reserveIds(request); + }, expectedError); + assert( + (client.innerApiCalls.reserveIds as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 93eca1d744a..cb9a66ed6a6 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -13,17 +13,18 @@ // limitations under the License. import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {before, beforeEach, after, afterEach, describe, it} from 'mocha'; import * as gax from 'google-gax'; import * as proxyquire from 'proxyquire'; import * as ds from '../src'; -import {Datastore, DatastoreOptions} from '../src'; +import {DatastoreOptions} from '../src'; import {entity} from '../src/entity'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const v1 = require('../src/v1/index.js'); -// tslint:disable-next-line no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any const fakeEntity: any = { KEY_SYMBOL: Symbol('fake key symbol'), Int: class { @@ -32,8 +33,9 @@ const fakeEntity: any = { this.value = value; } }, - isDsInt() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + isDsInt(...args: any[]) { + this.calledWith_ = args; }, Double: class { value: {}; @@ -41,8 +43,9 @@ const fakeEntity: any = { this.value = value; } }, - isDsDouble() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + isDsDouble(...args: any[]) { + this.calledWith_ = args; }, GeoPoint: class { value: {}; @@ -50,24 +53,28 @@ const fakeEntity: any = { this.value = value; } }, - isDsGeoPoint() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + isDsGeoPoint(...args: any) { + this.calledWith_ = args; }, Key: class { calledWith_: IArguments; - constructor() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any) { + this.calledWith_ = args; } }, - isDsKey() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + isDsKey(...args: any) { + this.calledWith_ = args; }, URLSafeKey: entity.URLSafeKey, }; let googleAuthOverride: Function | null; -function fakeGoogleAuth() { - return (googleAuthOverride || (() => {})).apply(null, arguments); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function fakeGoogleAuth(...args: any) { + return (googleAuthOverride || (() => {}))(...args); } let createInsecureOverride: Function | null; @@ -79,11 +86,9 @@ const fakeGoogleGax = { super(opts); this.grpc = ({ credentials: { - createInsecure() { - return (createInsecureOverride || (() => {})).apply( - null, - arguments - ); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + createInsecure(...args: any[]) { + return (createInsecureOverride || (() => {}))(...args); }, }, } as {}) as gax.GrpcModule; @@ -92,25 +97,29 @@ const fakeGoogleGax = { }; class FakeQuery { - calledWith_: IArguments; - constructor() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + calledWith_: any[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + this.calledWith_ = args; } } class FakeTransaction { - calledWith_: IArguments; - constructor() { - this.calledWith_ = arguments; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + calledWith_: any[]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + this.calledWith_ = args; } } function FakeV1() {} describe('Datastore', () => { - // tslint:disable-next-line variable-name let Datastore: typeof ds.Datastore; - let datastore: Datastore; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let datastore: any; const PROJECT_ID = 'project-id'; const NAMESPACE = 'namespace'; @@ -220,7 +229,7 @@ describe('Datastore', () => { done(); }; - const d = new Datastore(OPTIONS); + new Datastore(OPTIONS); }); it('should localize the options', () => { @@ -259,7 +268,7 @@ describe('Datastore', () => { this.port_ = port; }; const datastore = new Datastore(OPTIONS); - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any assert.strictEqual((datastore.options as any).port, port); }); @@ -480,7 +489,7 @@ describe('Datastore', () => { const namespace = 'namespace'; const kind = ['Kind']; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const query: any = datastore.createQuery(namespace, kind); assert(query instanceof FakeQuery); @@ -491,7 +500,7 @@ describe('Datastore', () => { it('should include the default namespace', () => { const kind = ['Kind']; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const query: any = datastore.createQuery(kind); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); @@ -499,7 +508,7 @@ describe('Datastore', () => { }); it('should include the default namespace in a kindless query', () => { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const query: any = datastore.createQuery(); assert.strictEqual(query.calledWith_[0], datastore); assert.strictEqual(query.calledWith_[1], datastore.namespace); @@ -510,14 +519,14 @@ describe('Datastore', () => { describe('key', () => { it('should return a Key object', () => { const options = {} as entity.KeyOptions; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const key: any = datastore.key(options); assert.strictEqual(key.calledWith_[0], options); }); it('should use a non-object argument as the path', () => { const options = 'path'; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const key: any = datastore.key(options); assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); assert.deepStrictEqual(key.calledWith_[0].path, [options]); @@ -630,14 +639,17 @@ describe('Datastore', () => { path: ['Task', 'Test'], }); const base64EndocdedUrlSafeKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any (datastore.auth as any).getProjectId = (callback: Function) => { callback(null, 'project-id'); }; - datastore.keyToLegacyUrlSafe(key, (err, urlSafeKey) => { - assert.ifError(err); - assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); - }); + datastore.keyToLegacyUrlSafe( + key, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + } + ); }); it('should convert key to URL-safe base64 string with location prefix', () => { @@ -647,26 +659,33 @@ describe('Datastore', () => { const locationPrefix = 's~'; const base64EndocdedUrlSafeKey = 'agxzfnByb2plY3QtaWRyDgsSBFRhc2siBFRlc3QM'; - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any (datastore.auth as any).getProjectId = (callback: Function) => { callback(null, 'project-id'); }; - datastore.keyToLegacyUrlSafe(key, locationPrefix, (err, urlSafeKey) => { - assert.ifError(err); - assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); - }); + datastore.keyToLegacyUrlSafe( + key, + locationPrefix, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + } + ); }); it('should not return URL-safe key to user if auth.getProjectId errors', () => { const error = new Error('Error.'); - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any (datastore.auth as any).getProjectId = (callback: Function) => { callback(error); }; - datastore.keyToLegacyUrlSafe({} as entity.Key, (err, urlSafeKey) => { - assert.strictEqual(err, error); - assert.strictEqual(urlSafeKey, undefined); - }); + datastore.keyToLegacyUrlSafe( + {} as entity.Key, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.strictEqual(err, error); + assert.strictEqual(urlSafeKey, undefined); + } + ); }); }); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index dd082c0877e..b6af9a031f3 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -13,8 +13,10 @@ // limitations under the License. import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {beforeEach, describe, it} from 'mocha'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const {Query} = require('../src/query'); +// eslint-disable-next-line @typescript-eslint/no-var-requires import {Datastore} from '../src'; describe('Query', () => { @@ -22,7 +24,7 @@ describe('Query', () => { const NAMESPACE = 'Namespace'; const KINDS = ['Kind']; - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any let query: any; beforeEach(() => { @@ -293,14 +295,15 @@ describe('Query', () => { it('should call the parent instance runQuery correctly', done => { const args = [{}, () => {}]; - query.scope.runQuery = function() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + query.scope.runQuery = function(...thisArgs: any[]) { assert.strictEqual(this, query.scope); - assert.strictEqual(arguments[0], query); - assert.strictEqual(arguments[1], args[0]); + assert.strictEqual(thisArgs[0], query); + assert.strictEqual(thisArgs[1], args[0]); done(); }; - query.run.apply(query, args); + query.run(...args); }); }); @@ -308,9 +311,10 @@ describe('Query', () => { it('should not require options', () => { const runQueryReturnValue = {}; - query.scope.runQueryStream = function() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + query.scope.runQueryStream = function(...args: any[]) { assert.strictEqual(this, query.scope); - assert.strictEqual(arguments[0], query); + assert.strictEqual(args[0], query); return runQueryReturnValue; }; @@ -326,10 +330,11 @@ describe('Query', () => { }; const runQueryReturnValue = {}; - query.scope.runQueryStream = function() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + query.scope.runQueryStream = function(...args: any[]) { assert.strictEqual(this, query.scope); - assert.strictEqual(arguments[0], query); - assert.strictEqual(arguments[1], options); + assert.strictEqual(args[0], query); + assert.strictEqual(args[1], options); return runQueryReturnValue; }; diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 8b29f0ceb10..e8a4d03c4d4 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -15,7 +15,7 @@ import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {after, afterEach, before, beforeEach, describe, it} from 'mocha'; import * as extend from 'extend'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; @@ -36,7 +36,7 @@ import { GetResponse, } from '../src/request'; -// tslint:disable-next-line no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; let promisified = false; @@ -49,16 +49,18 @@ const fakePfy = Object.assign({}, pfy, { }); const fakePjy = { - replaceProjectIdToken() { - return (pjyOverride || pjy.replaceProjectIdToken).apply(null, arguments); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + replaceProjectIdToken(...args: any[]) { + return (pjyOverride || pjy.replaceProjectIdToken)(...args); }, }; let v1FakeClientOverride: Function | null; const fakeV1 = { FakeClient: class { - constructor() { - return (v1FakeClientOverride || (() => {})).apply(null, arguments); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + return (v1FakeClientOverride || (() => {}))(...args); } }, }; @@ -68,7 +70,6 @@ class FakeQuery extends Query {} let pjyOverride: Function | null; describe('Request', () => { - // tslint:disable-next-line variable-name let Request: typeof ds.DatastoreRequest; let request: Any; let key: entity.Key; @@ -128,7 +129,7 @@ describe('Request', () => { it('should format an entity', () => { const key = {}; - // tslint:disable-next-line:no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const entityObject: any = {data: true}; entityObject[entity.KEY_SYMBOL] = key; const preparedEntityObject = Request.prepareEntityObject_( @@ -1086,7 +1087,7 @@ describe('Request', () => { formatArrayStub.restore(); formatArrayStub = sandbox .stub(entity, 'formatArray') - .callsFake((array, wrapNumbers) => { + .callsFake(array => { return array; }); }); @@ -2158,7 +2159,6 @@ describe('Request', () => { }); describe('merge', () => { - // tslint:disable-next-line: variable-name let Transaction: typeof ds.Transaction; let transaction: ds.Transaction; const PROJECT_ID = 'project-id'; @@ -2194,7 +2194,7 @@ describe('Request', () => { request.datastore = { transaction: () => transaction, }; - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any (transaction as any).run = (callback?: Function) => { callback!(null); }; @@ -2389,7 +2389,7 @@ describe('Request', () => { it('should send gaxOpts', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any [CONFIG.method](_: object, gaxO: any) { delete gaxO.headers; assert.deepStrictEqual(gaxO, CONFIG.gaxOpts); @@ -2403,7 +2403,7 @@ describe('Request', () => { it('should send google-cloud-resource-prefix', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { - // tslint:disable-next-line no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any [CONFIG.method](_: object, gaxO: any) { assert.deepStrictEqual(gaxO.headers, { 'google-cloud-resource-prefix': 'projects/' + PROJECT_ID, diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index cf8ef7d0a8c..4415a6b00a1 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -15,20 +15,20 @@ import * as pfy from '@google-cloud/promisify'; import arrify = require('arrify'); import * as assert from 'assert'; -import {describe, it} from 'mocha'; +import {beforeEach, before, describe, it} from 'mocha'; import * as proxyquire from 'proxyquire'; -import * as sinon from 'sinon'; // import {google} from '../proto/datastore'; import {Datastore, Query, TransactionOptions} from '../src'; import {Entity} from '../src/entity'; -import {CommitResponse, DatastoreRequest} from '../src/request'; +import {DatastoreRequest} from '../src/request'; import * as tsTypes from '../src/transaction'; -// tslint:disable-next-line no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; type Path = string | [string] | [string, number]; +// eslint-disable-next-line @typescript-eslint/no-var-requires const {entity} = require('../src/entity'); let promisified = false; @@ -42,22 +42,21 @@ const fakePfy = Object.assign({}, pfy, { }, }); -// tslint:disable-next-line variable-name const DatastoreRequestOverride = ({ delete() {}, save() {}, } as {}) as DatastoreRequest; class FakeDatastoreRequest { - delete() { - const args = [].slice.apply(arguments); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete(...args: any[]) { const results = DatastoreRequestOverride.delete.apply(null, args as Any); DatastoreRequestOverride.delete = (() => {}) as Any; return results; } - save() { - const args = [].slice.apply(arguments); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + save(...args: any[]) { const results = DatastoreRequestOverride.save.apply(null, args as Any); DatastoreRequestOverride.save = (() => {}) as Any; return results; @@ -65,7 +64,6 @@ class FakeDatastoreRequest { } describe('Transaction', () => { - // tslint:disable-next-line variable-name let Transaction: typeof tsTypes.Transaction; let transaction: tsTypes.Transaction; const TRANSACTION_ID = 'transaction-id'; From 0a895e68cc5297836c392ce5754c8d15a2ec9a65 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 2 Apr 2020 21:15:29 +0200 Subject: [PATCH 517/820] fix(deps): update dependency @google-cloud/projectify to v2 (#626) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index df3abebb2cc..2436835e7cd 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -44,7 +44,7 @@ "test": "c8 mocha build/test" }, "dependencies": { - "@google-cloud/projectify": "^1.0.4", + "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^1.0.4", "@grpc/grpc-js": "0.7.4", "@types/duplexify": "^3.6.0", From 64fd5ceb043bd9b223dd1440d90a36a039752214 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 2 Apr 2020 21:48:07 +0200 Subject: [PATCH 518/820] fix(deps): update dependency @google-cloud/promisify to v2 (#625) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@google-cloud/promisify](https://togithub.com/googleapis/nodejs-promisify) | dependencies | major | [`^1.0.4` -> `^2.0.0`](https://renovatebot.com/diffs/npm/@google-cloud%2fpromisify/1.0.4/2.0.0) | --- ### Release Notes
googleapis/nodejs-promisify ### [`v2.0.0`](https://togithub.com/googleapis/nodejs-promisify/blob/master/CHANGELOG.md#​200-httpswwwgithubcomgoogleapisnodejs-promisifycomparev104v200-2020-03-23) [Compare Source](https://togithub.com/googleapis/nodejs-promisify/compare/v1.0.4...v2.0.0) ##### ⚠ BREAKING CHANGES - update to latest version of gts/typescript ([#​183](https://togithub.com/googleapis/nodejs-promisify/issues/183)) - drop Node 8 from engines field ([#​184](https://togithub.com/googleapis/nodejs-promisify/issues/184)) ##### Features - drop Node 8 from engines field ([#​184](https://www.github.com/googleapis/nodejs-promisify/issues/184)) ([7e6d3c5](https://www.github.com/googleapis/nodejs-promisify/commit/7e6d3c54066d89530ed25c7f9722efd252f43fb8)) ##### Build System - update to latest version of gts/typescript ([#​183](https://www.github.com/googleapis/nodejs-promisify/issues/183)) ([9c3ed12](https://www.github.com/googleapis/nodejs-promisify/commit/9c3ed12c12f4bb1e17af7440c6371c4cefddcd59)) ##### [1.0.4](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.3...v1.0.4) (2019-12-05) ##### Bug Fixes - **deps:** pin TypeScript below 3.7.0 ([e48750e](https://www.github.com/googleapis/nodejs-promisify/commit/e48750ef96aa20eb3a2b73fe2f062d04430468a7)) ##### [1.0.3](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.2...v1.0.3) (2019-11-13) ##### Bug Fixes - **docs:** add jsdoc-region-tag plugin ([#​146](https://www.github.com/googleapis/nodejs-promisify/issues/146)) ([ff0ee74](https://www.github.com/googleapis/nodejs-promisify/commit/ff0ee7408f50e8f7147b8ccf7e10337aa5920076)) ##### [1.0.2](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.1...v1.0.2) (2019-06-26) ##### Bug Fixes - **docs:** link to reference docs section on googleapis.dev ([#​128](https://www.github.com/googleapis/nodejs-promisify/issues/128)) ([5a8bd90](https://www.github.com/googleapis/nodejs-promisify/commit/5a8bd90)) ##### [1.0.1](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.0...v1.0.1) (2019-06-14) ##### Bug Fixes - **docs:** move to new client docs URL ([#​124](https://www.github.com/googleapis/nodejs-promisify/issues/124)) ([34d18cd](https://www.github.com/googleapis/nodejs-promisify/commit/34d18cd))
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2436835e7cd..d42df01b86a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@google-cloud/projectify": "^2.0.0", - "@google-cloud/promisify": "^1.0.4", + "@google-cloud/promisify": "^2.0.0", "@grpc/grpc-js": "0.7.4", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", From 872db91601d9b5053c96ae7acf3942334e8ec62a Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sun, 5 Apr 2020 12:48:18 -0700 Subject: [PATCH 519/820] chore: remove duplicate mocha config (#641) --- handwritten/nodejs-datastore/.mocharc.json | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 handwritten/nodejs-datastore/.mocharc.json diff --git a/handwritten/nodejs-datastore/.mocharc.json b/handwritten/nodejs-datastore/.mocharc.json deleted file mode 100644 index 670c5e2c24b..00000000000 --- a/handwritten/nodejs-datastore/.mocharc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "enable-source-maps": true, - "throw-deprecation": true, - "timeout": 10000 -} From c952598d8f3884ca374b13bedb2e783876a894cf Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 9 Apr 2020 21:28:38 +0200 Subject: [PATCH 520/820] fix(deps): update dependency @grpc/grpc-js to v0.7.8 (#638) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d42df01b86a..856ba471e85 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "dependencies": { "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", - "@grpc/grpc-js": "0.7.4", + "@grpc/grpc-js": "0.7.8", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", From 9e6caf7c70e7272fe33a51d777daef7692cb14d2 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 10 Apr 2020 20:56:08 +0200 Subject: [PATCH 521/820] chore(deps): update dependency gts to v2.0.0 (#643) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [gts](https://togithub.com/google/gts) | devDependencies | patch | [`2.0.0-alpha.9` -> `2.0.0`](https://renovatebot.com/diffs/npm/gts/2.0.0-alpha.9/2.0.0) | --- ### Release Notes
google/gts ### [`v2.0.0`](https://togithub.com/google/gts/blob/master/CHANGELOG.md#​200-httpswwwgithubcomgooglegtscomparev112v200-2020-04-02) [Compare Source](https://togithub.com/google/gts/compare/39a2705e51b4b6329a70f91f8293a2d7a363bf5d...v2.0.0) ##### ⚠ BREAKING CHANGES ⚠ This is a major rewrite of the tool. Based on community guidance, we've switched from using [tslint](https://palantir.github.io/tslint/) to [eslint](https://eslint.org/). _Please read all of the steps below to upgrade_. ##### Configuring `eslint` With the shift to `eslint`, `gts` now will format and lint JavaScript _as well_ as TypeScript. Upgrading will require a number of manual steps. To format JavaScript and TypeScript, you can run: $ npx gts fix To specify only TypeScript: $ npx gts fix '**/*.ts' ##### Delete `tslint.json` This file is no longer used, and can lead to confusion. ##### Create a `.eslintrc.json` Now that we're using eslint, you need to extend the eslint configuration baked into the module. Create a new file named `.eslintrc.json`, and paste the following: ```js { "extends": "./node_modules/gts" } ``` ##### Create a `.eslintignore` The `.eslintignore` file lets you ignore specific directories. This tool now lints and formats JavaScript, so it's _really_ important to ignore your build directory! Here is an example of a `.eslintignore` file: **/node_modules build/ ##### Rule changes The underlying linter was changed, so naturally there are going to be a variety of rule changes along the way. To see the full list, check out [.eslintrc.json](https://togithub.com/google/gts/blob/master/.eslintrc.json). ##### Require Node.js 10.x and up Node.js 8.x is now end of life - this module now requires Ndoe.js 10.x and up. ##### Features - add the eol-last rule ([#​425](https://www.github.com/google/gts/issues/425)) ([50ebd4d](https://www.github.com/google/gts/commit/50ebd4dbaf063615f4c025f567ca28076a734223)) - allow eslintrc to run over tsx files ([#​469](https://www.github.com/google/gts/issues/469)) ([a21db94](https://www.github.com/google/gts/commit/a21db94601def563952d677cb0980a12b6730f4c)) - disable global rule for checking TODO comments ([#​459](https://www.github.com/google/gts/issues/459)) ([96aa84a](https://www.github.com/google/gts/commit/96aa84a0a42181046daa248750cc8fef0c320619)) - override require-atomic-updates ([#​468](https://www.github.com/google/gts/issues/468)) ([8105c93](https://www.github.com/google/gts/commit/8105c9334ee5104b05f6b1b2f150e51419637262)) - prefer single quotes if possible ([#​475](https://www.github.com/google/gts/issues/475)) ([39a2705](https://www.github.com/google/gts/commit/39a2705e51b4b6329a70f91f8293a2d7a363bf5d)) - use eslint instead of tslint ([#​400](https://www.github.com/google/gts/issues/400)) ([b3096fb](https://www.github.com/google/gts/commit/b3096fbd5076d302d93c2307bf627e12c423e726)) ##### Bug Fixes - use .prettierrc.js ([#​437](https://www.github.com/google/gts/issues/437)) ([06efa84](https://www.github.com/google/gts/commit/06efa8444cdf1064b64f3e8d61ebd04f45d90b4c)) - **deps:** update dependency chalk to v4 ([#​477](https://www.github.com/google/gts/issues/477)) ([061d64e](https://www.github.com/google/gts/commit/061d64e29d37b93ce55228937cc100e05ddef352)) - **deps:** update dependency eslint-plugin-node to v11 ([#​426](https://www.github.com/google/gts/issues/426)) ([a394b7c](https://www.github.com/google/gts/commit/a394b7c1f80437f25017ca5c500b968ebb789ece)) - **deps:** update dependency execa to v4 ([#​427](https://www.github.com/google/gts/issues/427)) ([f42ef36](https://www.github.com/google/gts/commit/f42ef36709251553342e655e287e889df72ee3e3)) - **deps:** update dependency prettier to v2 ([#​464](https://www.github.com/google/gts/issues/464)) ([20ef43d](https://www.github.com/google/gts/commit/20ef43d566df17d3c93949ef7db3b72ee9123ca3)) - disable no-use-before-define ([#​431](https://www.github.com/google/gts/issues/431)) ([dea2c22](https://www.github.com/google/gts/commit/dea2c223d1d3a60a1786aa820eebb93be27016a7)) - **deps:** update dependency update-notifier to v4 ([#​403](https://www.github.com/google/gts/issues/403)) ([57393b7](https://www.github.com/google/gts/commit/57393b74c6cf299e8ae09311f0382226b8baa3e3)) - **deps:** upgrade to meow 6.x ([#​423](https://www.github.com/google/gts/issues/423)) ([8f93d00](https://www.github.com/google/gts/commit/8f93d0049337a832d9a22b6ae4e86fd41140ec56)) - align back to the google style guide ([#​440](https://www.github.com/google/gts/issues/440)) ([8bd78c4](https://www.github.com/google/gts/commit/8bd78c4c78526a72400f618a95a987d2a7c1a8db)) - disable empty-function check ([#​467](https://www.github.com/google/gts/issues/467)) ([6455d7a](https://www.github.com/google/gts/commit/6455d7a9d227320d3ffe1b00c9c739b846f339a8)) - drop support for node 8 ([#​422](https://www.github.com/google/gts/issues/422)) ([888c686](https://www.github.com/google/gts/commit/888c68692079065f38ce66ec84472f1f3311a050)) - emit .prettierrc.js with init ([#​462](https://www.github.com/google/gts/issues/462)) ([b114614](https://www.github.com/google/gts/commit/b114614d22ab5560d2d1dd5cb6695968cc80027b)) - enable trailing comma ([#​470](https://www.github.com/google/gts/issues/470)) ([6518f58](https://www.github.com/google/gts/commit/6518f5843d3093e3beb7d3371b56d9aecedf3924)) - include _.tsx and _.jsx in default fix command ([#​473](https://www.github.com/google/gts/issues/473)) ([0509780](https://www.github.com/google/gts/commit/050978005ad089d9b3b5d8895b25ea1175d75db2)) ##### [1.1.2](https://www.github.com/google/gts/compare/v1.1.1...v1.1.2) (2019-11-20) ##### Bug Fixes - **deps:** update to newest prettier (with support for optional chain) ([#​396](https://www.github.com/google/gts/issues/396)) ([ce8ad06](https://www.github.com/google/gts/commit/ce8ad06c8489c44a9e2ed5292382637b3ebb7601)) ##### [1.1.1](https://www.github.com/google/gts/compare/v1.1.0...v1.1.1) (2019-11-11) ##### Bug Fixes - **deps:** update dependency chalk to v3 ([#​389](https://www.github.com/google/gts/issues/389)) ([1ce0f45](https://www.github.com/google/gts/commit/1ce0f450677e143a27efc39def617d13c66503e8)) - **deps:** update dependency inquirer to v7 ([#​377](https://www.github.com/google/gts/issues/377)) ([bf2c349](https://www.github.com/google/gts/commit/bf2c349b2208ac63e551542599ac9cd27b461338)) - **deps:** update dependency rimraf to v3 ([#​374](https://www.github.com/google/gts/issues/374)) ([2058eaa](https://www.github.com/google/gts/commit/2058eaa682f4baae978b469fd708d1f866e7da74)) - **deps:** update dependency write-file-atomic to v3 ([#​353](https://www.github.com/google/gts/issues/353)) ([59e6aa8](https://www.github.com/google/gts/commit/59e6aa8580a2f8e9457d2d2b6fa9e18e86347592))
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 856ba471e85..72f1485175b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -76,7 +76,7 @@ "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.2", "google-proto-files": "^1.1.2", - "gts": "2.0.0-alpha.9", + "gts": "2.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", From 9c2987a1e00b06c4db794bceabe07d1185c56c3d Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Fri, 10 Apr 2020 18:48:12 -0700 Subject: [PATCH 522/820] fix: remove eslint, update gax, fix generated protos, run the generator (#644) Run the latest version of the generator, update google-gax, update gts, and remove direct dependencies on eslint. --- handwritten/nodejs-datastore/.jsdoc.js | 2 +- handwritten/nodejs-datastore/.prettierrc.js | 2 +- handwritten/nodejs-datastore/package.json | 14 +++++--------- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 14 +++----------- handwritten/nodejs-datastore/synth.py | 2 +- .../nodejs-datastore/test/gapic_datastore_v1.ts | 14 +++++++------- 7 files changed, 19 insertions(+), 31 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 499da83d435..469ce79cae1 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -40,7 +40,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2019 Google, LLC.', + copyright: 'Copyright 2020 Google LLC', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', diff --git a/handwritten/nodejs-datastore/.prettierrc.js b/handwritten/nodejs-datastore/.prettierrc.js index 08cba3775be..d1b95106f4c 100644 --- a/handwritten/nodejs-datastore/.prettierrc.js +++ b/handwritten/nodejs-datastore/.prettierrc.js @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 72f1485175b..453e9a23f5f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -30,9 +30,9 @@ "docs": "jsdoc -c .jsdoc.js", "predocs-test": "npm run docs", "docs-test": "linkinator docs", - "fix": "gts fix && eslint '**/*.js' --fix", - "prelint": "cd samples; npm link ../; npm i", - "lint": "gts fix && eslint samples/*.js", + "fix": "gts fix", + "prelint": "cd samples; npm link ../; npm install", + "lint": "gts fix", "prepare": "npm run compile", "proto": "npm run proto:datastore && npm run proto:appenginekey", "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", @@ -53,7 +53,7 @@ "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-auth-library": "^5.10.1", - "google-gax": "^2.0.1", + "google-gax": "^2.1.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" @@ -71,12 +71,8 @@ "assert-rejects": "^1.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", - "eslint-plugin-node": "^11.0.0", - "eslint-plugin-prettier": "^3.1.2", "google-proto-files": "^1.1.2", - "gts": "2.0.0", + "gts": "^2.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 31a6fb94921..fe45d99f214 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -28,7 +28,7 @@ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace - var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + var $root = $protobuf.roots._google_cloud_datastore_5_1_0_protos || ($protobuf.roots._google_cloud_datastore_5_1_0_protos = {}); $root.google = (function() { diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 51afda639b5..a4108a1884f 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,20 +1,12 @@ { - "updateTime": "2020-04-02T17:21:31.795946Z", + "updateTime": "2020-04-11T00:22:25.587810Z", "sources": [ - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "01f3ccbaa66cf3ae4e3b9fd140b1ecfbe54a3ed0", - "internalRef": "304416658", - "log": "01f3ccbaa66cf3ae4e3b9fd140b1ecfbe54a3ed0\nFix: Add package/namespace options for C#, Ruby and PHP in remaining protos.\n\nPiperOrigin-RevId: 304416658\n\nb89abbf12cd3c086abddcd79adb0a653349f960a\nchore(google/maps): Rename nox.py to noxfile.py\n\nupstream wip fix here: https://github.com/googleapis/gapic-generator/pull/3156\n\nPiperOrigin-RevId: 304411146\n\nbbf26d7f11fae7789b13959bf100983c496c9807\nSynchronize new proto/yaml changes.\n\nPiperOrigin-RevId: 304409906\n\n" - } - }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "99820243d348191bc9c634f2b48ddf65096285ed" + "sha": "6f32150677c9784f3c3a7e1949472bd29c9d72c5", + "log": "6f32150677c9784f3c3a7e1949472bd29c9d72c5\nfix: installs test_utils from its common repo (#480)\n\n\n74ce986d3b5431eb66985e9a00c4eb45295a4020\nfix: stop recording update_time in synth.metadata (#478)\n\n\n7f8e62aa3edd225f76347a16f92e400661fdfb52\nchore(java): release-please only updates non maven versions in README (#476)\n\nPrevent release-please and synthtool from fighting over the released library version. Synthtool updates the install snippets from the samples pom.xml files so the bots fight if they are temporarily out of sync after a release.\nc7e0e517d7f46f77bebd27da2e5afcaa6eee7e25\nbuild(java): fix nightly integration test config to run integrations (#465)\n\nThis was only running the units.\nbd69a2aa7b70875f3c988e269706b22fefbef40e\nbuild(java): fix retry_with_backoff when -e option set (#475)\n\n\nd9b173c427bfa0c6cca818233562e7e8841a357c\nfix: record version of working repo in synth.metadata (#473)\n\nPartial revert of b37cf74d12e9a42b9de9e61a4f26133d7cd9c168.\nf73a541770d95a609e5be6bf6b3b220d17cefcbe\nfeat(discogapic): allow local discovery-artifact-manager (#474)\n\n\n8cf0f5d93a70c3dcb0b4999d3152c46d4d9264bf\ndoc: describe the Autosynth & Synthtool protocol (#472)\n\n* doc: describe the Autosynth & Synthtool protocol\n\n* Accommodate review comments.\n980baaa738a1ad8fa02b4fdbd56be075ee77ece5\nfix: pin sphinx to <3.0.0 as new version causes new error (#471)\n\nThe error `toctree contains reference to document changlelog that doesn't have a title: no link will be generated` occurs as of 3.0.0. Pinning to 2.x until we address the docs build issue.\n\nTowards #470\n\nI did this manually for python-datastore https://github.com/googleapis/python-datastore/pull/22\n928b2998ac5023e7c7e254ab935f9ef022455aad\nchore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.15 (#466)\n\nCo-authored-by: Jeffrey Rennie \n188f1b1d53181f739b98f8aa5d40cfe99eb90c47\nfix: allow local and external deps to be specified (#469)\n\nModify noxfile.py to allow local and external dependencies for\nsystem tests to be specified.\n1df68ed6735ddce6797d0f83641a731c3c3f75b4\nfix: apache license URL (#468)\n\n\nf4a59efa54808c4b958263de87bc666ce41e415f\nfeat: Add discogapic support for GAPICBazel generation (#459)\n\n* feat: Add discogapic support for GAPICBazel generation\n\n* reformat with black\n\n* Rename source repository variable\n\nCo-authored-by: Jeffrey Rennie \n" } } ], diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index d7c3d907c2e..6240b2187e3 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -35,5 +35,5 @@ # Node.js specific cleanup subprocess.run(['npm', 'install']) -subprocess.run(['npm', 'run', 'fix']) +subprocess.run(['npm', 'run', 'lint']) subprocess.run(['npx', 'compileProtos', 'src']) diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 4d4d6250e00..de651a65826 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -207,7 +207,7 @@ describe('v1.DatastoreClient', () => { const expectedOptions = {}; const expectedError = new Error('expected'); client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); - assert.rejects(async () => { + await assert.rejects(async () => { await client.lookup(request); }, expectedError); assert( @@ -294,7 +294,7 @@ describe('v1.DatastoreClient', () => { const expectedOptions = {}; const expectedError = new Error('expected'); client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); - assert.rejects(async () => { + await assert.rejects(async () => { await client.runQuery(request); }, expectedError); assert( @@ -384,7 +384,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - assert.rejects(async () => { + await assert.rejects(async () => { await client.beginTransaction(request); }, expectedError); assert( @@ -471,7 +471,7 @@ describe('v1.DatastoreClient', () => { const expectedOptions = {}; const expectedError = new Error('expected'); client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); - assert.rejects(async () => { + await assert.rejects(async () => { await client.commit(request); }, expectedError); assert( @@ -558,7 +558,7 @@ describe('v1.DatastoreClient', () => { const expectedOptions = {}; const expectedError = new Error('expected'); client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); - assert.rejects(async () => { + await assert.rejects(async () => { await client.rollback(request); }, expectedError); assert( @@ -648,7 +648,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - assert.rejects(async () => { + await assert.rejects(async () => { await client.allocateIds(request); }, expectedError); assert( @@ -738,7 +738,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - assert.rejects(async () => { + await assert.rejects(async () => { await client.reserveIds(request); }, expectedError); assert( From baec46d9cf33ed23b3de0e7e3dd8dc7a82823f13 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Sat, 11 Apr 2020 19:16:44 -0700 Subject: [PATCH 523/820] build: remove unused codecov config (#646) --- handwritten/nodejs-datastore/codecov.yaml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 handwritten/nodejs-datastore/codecov.yaml diff --git a/handwritten/nodejs-datastore/codecov.yaml b/handwritten/nodejs-datastore/codecov.yaml deleted file mode 100644 index 5724ea9478d..00000000000 --- a/handwritten/nodejs-datastore/codecov.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -codecov: - ci: - - source.cloud.google.com From 9b65d77609e0fa46fab24a39198f926cedeb8087 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 13 Apr 2020 19:42:11 +0200 Subject: [PATCH 524/820] fix(deps): update dependency google-auth-library to v6 (#628) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [google-auth-library](https://togithub.com/googleapis/google-auth-library-nodejs) | dependencies | major | [`^5.10.1` -> `^6.0.0`](https://renovatebot.com/diffs/npm/google-auth-library/5.10.1/6.0.0) | --- ### Release Notes
googleapis/google-auth-library-nodejs ### [`v6.0.0`](https://togithub.com/googleapis/google-auth-library-nodejs/blob/master/CHANGELOG.md#​600-httpswwwgithubcomgoogleapisgoogle-auth-library-nodejscomparev5101v600-2020-03-26) [Compare Source](https://togithub.com/googleapis/google-auth-library-nodejs/compare/v5.10.1...v6.0.0) ##### ⚠ BREAKING CHANGES - typescript@3.7.x introduced some breaking changes in generated code. - require node 10 in engines field ([#​926](https://togithub.com/googleapis/google-auth-library-nodejs/issues/926)) - remove deprecated methods ([#​906](https://togithub.com/googleapis/google-auth-library-nodejs/issues/906)) ##### Features - require node 10 in engines field ([#​926](https://www.github.com/googleapis/google-auth-library-nodejs/issues/926)) ([d89c59a](https://www.github.com/googleapis/google-auth-library-nodejs/commit/d89c59a316e9ca5b8c351128ee3e2d91e9729d5c)) ##### Bug Fixes - do not warn for SDK creds ([#​905](https://www.github.com/googleapis/google-auth-library-nodejs/issues/905)) ([9536840](https://www.github.com/googleapis/google-auth-library-nodejs/commit/9536840f88e77f747bbbc2c1b5b4289018fc23c9)) - use iamcredentials API to sign blobs ([#​908](https://www.github.com/googleapis/google-auth-library-nodejs/issues/908)) ([7b8e4c5](https://www.github.com/googleapis/google-auth-library-nodejs/commit/7b8e4c52e31bb3d448c3ff8c05002188900eaa04)) - **deps:** update dependency gaxios to v3 ([#​917](https://www.github.com/googleapis/google-auth-library-nodejs/issues/917)) ([1f4bf61](https://www.github.com/googleapis/google-auth-library-nodejs/commit/1f4bf6128a0dcf22cfe1ec492b2192f513836cb2)) - **deps:** update dependency gcp-metadata to v4 ([#​918](https://www.github.com/googleapis/google-auth-library-nodejs/issues/918)) ([d337131](https://www.github.com/googleapis/google-auth-library-nodejs/commit/d337131d009cc1f8182f7a1f8a9034433ee3fbf7)) - **types:** add additional fields to TokenInfo ([#​907](https://www.github.com/googleapis/google-auth-library-nodejs/issues/907)) ([5b48eb8](https://www.github.com/googleapis/google-auth-library-nodejs/commit/5b48eb86c108c47d317a0eb96b47c0cae86f98cb)) ##### Build System - update to latest gts and TypeScript ([#​927](https://www.github.com/googleapis/google-auth-library-nodejs/issues/927)) ([e11e18c](https://www.github.com/googleapis/google-auth-library-nodejs/commit/e11e18cb33eb60a666980d061c54bb8891cdd242)) ##### Miscellaneous Chores - remove deprecated methods ([#​906](https://www.github.com/googleapis/google-auth-library-nodejs/issues/906)) ([f453fb7](https://www.github.com/googleapis/google-auth-library-nodejs/commit/f453fb7d8355e6dc74800b18d6f43c4e91d4acc9)) ##### [5.10.1](https://www.github.com/googleapis/google-auth-library-nodejs/compare/v5.10.0...v5.10.1) (2020-02-25) ##### Bug Fixes - if GCF environment detected, increase library timeout ([#​899](https://www.github.com/googleapis/google-auth-library-nodejs/issues/899)) ([2577ff2](https://www.github.com/googleapis/google-auth-library-nodejs/commit/2577ff28bf22dfc58bd09e7365471c16f359f109))
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 453e9a23f5f..e7144afe8b4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -52,7 +52,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-auth-library": "^5.10.1", + "google-auth-library": "^6.0.0", "google-gax": "^2.1.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", From 12277eeb964f22583f6facb4e3d44368b802e31d Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 13 Apr 2020 19:50:14 +0200 Subject: [PATCH 525/820] chore(deps): update dependency google-proto-files to v2 (#630) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [google-proto-files](https://togithub.com/googleapis/nodejs-proto-files) | devDependencies | major | [`^1.1.2` -> `^2.0.0`](https://renovatebot.com/diffs/npm/google-proto-files/1.1.2/2.0.0) | --- ### Release Notes
googleapis/nodejs-proto-files ### [`v2.0.0`](https://togithub.com/googleapis/nodejs-proto-files/blob/master/CHANGELOG.md#​200-httpswwwgithubcomgoogleapisnodejs-proto-filescomparev112v200-2020-03-27) [Compare Source](https://togithub.com/googleapis/nodejs-proto-files/compare/v1.1.2...v2.0.0) ##### ⚠ BREAKING CHANGES - update to latest gts and TypeScript ([#​271](https://togithub.com/googleapis/nodejs-proto-files/issues/271)) - require node 10 in engines field ([#​272](https://togithub.com/googleapis/nodejs-proto-files/issues/272)) ##### Features - require node 10 in engines field ([#​272](https://www.github.com/googleapis/nodejs-proto-files/issues/272)) ([062f10a](https://www.github.com/googleapis/nodejs-proto-files/commit/062f10a642663cfd20404cc3748ac0a7fbddd94e)) ##### Build System - update to latest gts and TypeScript ([#​271](https://www.github.com/googleapis/nodejs-proto-files/issues/271)) ([81c24ec](https://www.github.com/googleapis/nodejs-proto-files/commit/81c24ecde3bc01b54fb454752288f962a1ea6312)) ##### [1.1.2](https://www.github.com/googleapis/nodejs-proto-files/compare/v1.1.1...v1.1.2) (2020-01-03) ##### Bug Fixes - **deps:** pin TypeScript below 3.7.0 ([cce5185](https://www.github.com/googleapis/nodejs-proto-files/commit/cce51858b5bae0ad30193766b03ad2dc631694bf)) ##### [1.1.1](https://www.github.com/googleapis/nodejs-proto-files/compare/v1.1.0...v1.1.1) (2019-11-14) ##### Bug Fixes - **docs:** add jsdoc-region-tag plugin ([#​230](https://www.github.com/googleapis/nodejs-proto-files/issues/230)) ([8d25cd1](https://www.github.com/googleapis/nodejs-proto-files/commit/8d25cd12afeef9cfc37a5835f849225e4a5b5066))
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e7144afe8b4..655e17bb7eb 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "assert-rejects": "^1.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", - "google-proto-files": "^1.1.2", + "google-proto-files": "^2.0.0", "gts": "^2.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", From 38038b59cd7864a8d0a9231651fe716e99f91f0d Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 13 Apr 2020 19:56:16 +0200 Subject: [PATCH 526/820] fix(deps): update dependency @grpc/grpc-js to v0.7.9 (#645) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@grpc/grpc-js](https://grpc.io/) ([source](https://togithub.com/grpc/grpc-node)) | dependencies | patch | [`0.7.8` -> `0.7.9`](https://renovatebot.com/diffs/npm/@grpc%2fgrpc-js/0.7.8/0.7.9) | --- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 655e17bb7eb..116133bf802 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -46,7 +46,7 @@ "dependencies": { "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", - "@grpc/grpc-js": "0.7.8", + "@grpc/grpc-js": "0.7.9", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", From 177ff7b8517130a55ce2153b2a63fc8af85ef69f Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 13 Apr 2020 13:20:13 -0700 Subject: [PATCH 527/820] chore: update lint rules, dependencies (#650) --- handwritten/nodejs-datastore/package.json | 10 +- .../proto/app_engine_key.d.ts | 336 - .../nodejs-datastore/proto/datastore.d.ts | 10241 ---------------- .../nodejs-datastore/proto/entity.d.ts | 5270 -------- .../nodejs-datastore/samples/concepts.js | 5 +- handwritten/nodejs-datastore/samples/error.js | 100 +- .../samples/test/error.test.js | 64 +- .../nodejs-datastore/src/.eslintrc.yml | 4 - handwritten/nodejs-datastore/src/entity.ts | 10 +- handwritten/nodejs-datastore/src/index.ts | 3 +- handwritten/nodejs-datastore/src/request.ts | 5 +- .../nodejs-datastore/src/transaction.ts | 2 +- .../nodejs-datastore/system-test/datastore.ts | 2 +- .../nodejs-datastore/system-test/install.ts | 4 +- .../nodejs-datastore/test/.eslintrc.yml | 5 - handwritten/nodejs-datastore/test/entity.ts | 9 +- handwritten/nodejs-datastore/test/index.ts | 4 +- handwritten/nodejs-datastore/test/query.ts | 6 +- handwritten/nodejs-datastore/test/request.ts | 44 +- .../nodejs-datastore/test/transaction.ts | 2 +- handwritten/nodejs-datastore/tslint.json | 3 - 21 files changed, 116 insertions(+), 16013 deletions(-) delete mode 100644 handwritten/nodejs-datastore/proto/app_engine_key.d.ts delete mode 100644 handwritten/nodejs-datastore/proto/datastore.d.ts delete mode 100644 handwritten/nodejs-datastore/proto/entity.d.ts delete mode 100644 handwritten/nodejs-datastore/src/.eslintrc.yml delete mode 100644 handwritten/nodejs-datastore/test/.eslintrc.yml delete mode 100644 handwritten/nodejs-datastore/tslint.json diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 116133bf802..68592920965 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -34,9 +34,6 @@ "prelint": "cd samples; npm link ../; npm install", "lint": "gts fix", "prepare": "npm run compile", - "proto": "npm run proto:datastore && npm run proto:appenginekey", - "proto:appenginekey": "mkdir -p proto && pbjs -t static-module -w commonjs protos/app_engine_key.proto | pbts -o proto/app_engine_key.d.ts -", - "proto:datastore": "mkdir -p proto && pbjs -t static-module -w commonjs -p node_modules/google-proto-files google/datastore/v1/datastore.proto | pbts -i long -o proto/datastore.d.ts -", "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", @@ -46,14 +43,13 @@ "dependencies": { "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", - "@grpc/grpc-js": "0.7.9", "@types/duplexify": "^3.6.0", "@types/long": "^4.0.1", "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-auth-library": "^6.0.0", - "google-gax": "^2.1.0", + "google-gax": "^2.2.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" @@ -68,10 +64,8 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^9.0.0", "@types/tmp": "0.1.0", - "assert-rejects": "^1.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", - "google-proto-files": "^2.0.0", "gts": "^2.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", @@ -82,8 +76,6 @@ "ncp": "^2.0.0", "null-loader": "^3.0.0", "pack-n-play": "^1.0.0-2", - "power-assert": "^1.6.1", - "prettier": "^1.19.1", "proxyquire": "^2.1.3", "sinon": "^9.0.1", "tmp": "0.1.0", diff --git a/handwritten/nodejs-datastore/proto/app_engine_key.d.ts b/handwritten/nodejs-datastore/proto/app_engine_key.d.ts deleted file mode 100644 index ce34cd02b62..00000000000 --- a/handwritten/nodejs-datastore/proto/app_engine_key.d.ts +++ /dev/null @@ -1,336 +0,0 @@ -import * as $protobuf from 'protobufjs'; -/** Properties of a Reference. */ -export interface IReference { - /** Reference app */ - app: string; - - /** Reference namespace */ - namespace?: string | null; - - /** Reference path */ - path: IPath; - - /** Reference databaseId */ - databaseId?: string | null; -} - -/** Represents a Reference. */ -export class Reference implements IReference { - /** - * Constructs a new Reference. - * @param [properties] Properties to set - */ - constructor(properties?: IReference); - - /** Reference app. */ - public app: string; - - /** Reference namespace. */ - public namespace: string; - - /** Reference path. */ - public path: IPath; - - /** Reference databaseId. */ - public databaseId: string; - - /** - * Creates a new Reference instance using the specified properties. - * @param [properties] Properties to set - * @returns Reference instance - */ - public static create(properties?: IReference): Reference; - - /** - * Encodes the specified Reference message. Does not implicitly {@link Reference.verify|verify} messages. - * @param message Reference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: IReference, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Reference message, length delimited. Does not implicitly {@link Reference.verify|verify} messages. - * @param message Reference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: IReference, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Reference message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Reference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): Reference; - - /** - * Decodes a Reference message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Reference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): Reference; - - /** - * Verifies a Reference message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Reference message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Reference - */ - public static fromObject(object: {[k: string]: any}): Reference; - - /** - * Creates a plain object from a Reference message. Also converts values to other types if specified. - * @param message Reference - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: Reference, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Reference to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; -} - -/** Properties of a Path. */ -export interface IPath { - /** Path element */ - element?: Path.IElement[] | null; -} - -/** Represents a Path. */ -export class Path implements IPath { - /** - * Constructs a new Path. - * @param [properties] Properties to set - */ - constructor(properties?: IPath); - - /** Path element. */ - public element: Path.IElement[]; - - /** - * Creates a new Path instance using the specified properties. - * @param [properties] Properties to set - * @returns Path instance - */ - public static create(properties?: IPath): Path; - - /** - * Encodes the specified Path message. Does not implicitly {@link Path.verify|verify} messages. - * @param message Path message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: IPath, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Path message, length delimited. Does not implicitly {@link Path.verify|verify} messages. - * @param message Path message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: IPath, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Path message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Path - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): Path; - - /** - * Decodes a Path message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Path - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: $protobuf.Reader | Uint8Array): Path; - - /** - * Verifies a Path message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Path message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Path - */ - public static fromObject(object: {[k: string]: any}): Path; - - /** - * Creates a plain object from a Path message. Also converts values to other types if specified. - * @param message Path - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: Path, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Path to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; -} - -export namespace Path { - /** Properties of an Element. */ - interface IElement { - /** Element type */ - type: string; - - /** Element id */ - id?: number | Long | null; - - /** Element name */ - name?: string | null; - } - - /** Represents an Element. */ - class Element implements IElement { - /** - * Constructs a new Element. - * @param [properties] Properties to set - */ - constructor(properties?: Path.IElement); - - /** Element type. */ - public type: string; - - /** Element id. */ - public id: number | Long; - - /** Element name. */ - public name: string; - - /** - * Creates a new Element instance using the specified properties. - * @param [properties] Properties to set - * @returns Element instance - */ - public static create(properties?: Path.IElement): Path.Element; - - /** - * Encodes the specified Element message. Does not implicitly {@link Path.Element.verify|verify} messages. - * @param message Element message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: Path.IElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Element message, length delimited. Does not implicitly {@link Path.Element.verify|verify} messages. - * @param message Element message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: Path.IElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Element message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Element - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): Path.Element; - - /** - * Decodes an Element message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Element - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): Path.Element; - - /** - * Verifies an Element message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Element message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Element - */ - public static fromObject(object: {[k: string]: any}): Path.Element; - - /** - * Creates a plain object from an Element message. Also converts values to other types if specified. - * @param message Element - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: Path.Element, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Element to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } -} diff --git a/handwritten/nodejs-datastore/proto/datastore.d.ts b/handwritten/nodejs-datastore/proto/datastore.d.ts deleted file mode 100644 index 86235bfde8e..00000000000 --- a/handwritten/nodejs-datastore/proto/datastore.d.ts +++ /dev/null @@ -1,10241 +0,0 @@ -import * as $protobuf from 'protobufjs'; -import * as Long from 'long'; -/** Namespace google. */ -export namespace google { - /** Namespace datastore. */ - namespace datastore { - /** Namespace v1. */ - namespace v1 { - /** Represents a Datastore */ - class Datastore extends $protobuf.rpc.Service { - /** - * Constructs a new Datastore service. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - */ - constructor( - rpcImpl: $protobuf.RPCImpl, - requestDelimited?: boolean, - responseDelimited?: boolean - ); - - /** - * Creates new Datastore service using the specified rpc implementation. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - * @returns RPC service. Useful where requests and/or responses are streamed. - */ - public static create( - rpcImpl: $protobuf.RPCImpl, - requestDelimited?: boolean, - responseDelimited?: boolean - ): Datastore; - - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @param callback Node-style callback called with the error, if any, and LookupResponse - */ - public lookup( - request: google.datastore.v1.ILookupRequest, - callback: google.datastore.v1.Datastore.LookupCallback - ): void; - - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @returns Promise - */ - public lookup( - request: google.datastore.v1.ILookupRequest - ): Promise; - - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RunQueryResponse - */ - public runQuery( - request: google.datastore.v1.IRunQueryRequest, - callback: google.datastore.v1.Datastore.RunQueryCallback - ): void; - - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @returns Promise - */ - public runQuery( - request: google.datastore.v1.IRunQueryRequest - ): Promise; - - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse - */ - public beginTransaction( - request: google.datastore.v1.IBeginTransactionRequest, - callback: google.datastore.v1.Datastore.BeginTransactionCallback - ): void; - - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @returns Promise - */ - public beginTransaction( - request: google.datastore.v1.IBeginTransactionRequest - ): Promise; - - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @param callback Node-style callback called with the error, if any, and CommitResponse - */ - public commit( - request: google.datastore.v1.ICommitRequest, - callback: google.datastore.v1.Datastore.CommitCallback - ): void; - - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @returns Promise - */ - public commit( - request: google.datastore.v1.ICommitRequest - ): Promise; - - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RollbackResponse - */ - public rollback( - request: google.datastore.v1.IRollbackRequest, - callback: google.datastore.v1.Datastore.RollbackCallback - ): void; - - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @returns Promise - */ - public rollback( - request: google.datastore.v1.IRollbackRequest - ): Promise; - - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse - */ - public allocateIds( - request: google.datastore.v1.IAllocateIdsRequest, - callback: google.datastore.v1.Datastore.AllocateIdsCallback - ): void; - - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @returns Promise - */ - public allocateIds( - request: google.datastore.v1.IAllocateIdsRequest - ): Promise; - - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse - */ - public reserveIds( - request: google.datastore.v1.IReserveIdsRequest, - callback: google.datastore.v1.Datastore.ReserveIdsCallback - ): void; - - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @returns Promise - */ - public reserveIds( - request: google.datastore.v1.IReserveIdsRequest - ): Promise; - } - - namespace Datastore { - /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. - * @param error Error, if any - * @param [response] LookupResponse - */ - type LookupCallback = ( - error: Error | null, - response?: google.datastore.v1.LookupResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. - * @param error Error, if any - * @param [response] RunQueryResponse - */ - type RunQueryCallback = ( - error: Error | null, - response?: google.datastore.v1.RunQueryResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. - * @param error Error, if any - * @param [response] BeginTransactionResponse - */ - type BeginTransactionCallback = ( - error: Error | null, - response?: google.datastore.v1.BeginTransactionResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. - * @param error Error, if any - * @param [response] CommitResponse - */ - type CommitCallback = ( - error: Error | null, - response?: google.datastore.v1.CommitResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. - * @param error Error, if any - * @param [response] RollbackResponse - */ - type RollbackCallback = ( - error: Error | null, - response?: google.datastore.v1.RollbackResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. - * @param error Error, if any - * @param [response] AllocateIdsResponse - */ - type AllocateIdsCallback = ( - error: Error | null, - response?: google.datastore.v1.AllocateIdsResponse - ) => void; - - /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. - * @param error Error, if any - * @param [response] ReserveIdsResponse - */ - type ReserveIdsCallback = ( - error: Error | null, - response?: google.datastore.v1.ReserveIdsResponse - ) => void; - } - - /** Properties of a LookupRequest. */ - interface ILookupRequest { - /** LookupRequest projectId */ - projectId?: string | null; - - /** LookupRequest readOptions */ - readOptions?: google.datastore.v1.IReadOptions | null; - - /** LookupRequest keys */ - keys?: google.datastore.v1.IKey[] | null; - } - - /** Represents a LookupRequest. */ - class LookupRequest implements ILookupRequest { - /** - * Constructs a new LookupRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupRequest); - - /** LookupRequest projectId. */ - public projectId: string; - - /** LookupRequest readOptions. */ - public readOptions?: google.datastore.v1.IReadOptions | null; - - /** LookupRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new LookupRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupRequest instance - */ - public static create( - properties?: google.datastore.v1.ILookupRequest - ): google.datastore.v1.LookupRequest; - - /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ILookupRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ILookupRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a LookupRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.LookupRequest; - - /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.LookupRequest; - - /** - * Verifies a LookupRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.LookupRequest; - - /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. - * @param message LookupRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.LookupRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this LookupRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a LookupResponse. */ - interface ILookupResponse { - /** LookupResponse found */ - found?: google.datastore.v1.IEntityResult[] | null; - - /** LookupResponse missing */ - missing?: google.datastore.v1.IEntityResult[] | null; - - /** LookupResponse deferred */ - deferred?: google.datastore.v1.IKey[] | null; - } - - /** Represents a LookupResponse. */ - class LookupResponse implements ILookupResponse { - /** - * Constructs a new LookupResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupResponse); - - /** LookupResponse found. */ - public found: google.datastore.v1.IEntityResult[]; - - /** LookupResponse missing. */ - public missing: google.datastore.v1.IEntityResult[]; - - /** LookupResponse deferred. */ - public deferred: google.datastore.v1.IKey[]; - - /** - * Creates a new LookupResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupResponse instance - */ - public static create( - properties?: google.datastore.v1.ILookupResponse - ): google.datastore.v1.LookupResponse; - - /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ILookupResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ILookupResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a LookupResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.LookupResponse; - - /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.LookupResponse; - - /** - * Verifies a LookupResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.LookupResponse; - - /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. - * @param message LookupResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.LookupResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this LookupResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a RunQueryRequest. */ - interface IRunQueryRequest { - /** RunQueryRequest projectId */ - projectId?: string | null; - - /** RunQueryRequest partitionId */ - partitionId?: google.datastore.v1.IPartitionId | null; - - /** RunQueryRequest readOptions */ - readOptions?: google.datastore.v1.IReadOptions | null; - - /** RunQueryRequest query */ - query?: google.datastore.v1.IQuery | null; - - /** RunQueryRequest gqlQuery */ - gqlQuery?: google.datastore.v1.IGqlQuery | null; - } - - /** Represents a RunQueryRequest. */ - class RunQueryRequest implements IRunQueryRequest { - /** - * Constructs a new RunQueryRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryRequest); - - /** RunQueryRequest projectId. */ - public projectId: string; - - /** RunQueryRequest partitionId. */ - public partitionId?: google.datastore.v1.IPartitionId | null; - - /** RunQueryRequest readOptions. */ - public readOptions?: google.datastore.v1.IReadOptions | null; - - /** RunQueryRequest query. */ - public query?: google.datastore.v1.IQuery | null; - - /** RunQueryRequest gqlQuery. */ - public gqlQuery?: google.datastore.v1.IGqlQuery | null; - - /** RunQueryRequest queryType. */ - public queryType?: 'query' | 'gqlQuery'; - - /** - * Creates a new RunQueryRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryRequest instance - */ - public static create( - properties?: google.datastore.v1.IRunQueryRequest - ): google.datastore.v1.RunQueryRequest; - - /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IRunQueryRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IRunQueryRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a RunQueryRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.RunQueryRequest; - - /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.RunQueryRequest; - - /** - * Verifies a RunQueryRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.RunQueryRequest; - - /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. - * @param message RunQueryRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.RunQueryRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this RunQueryRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a RunQueryResponse. */ - interface IRunQueryResponse { - /** RunQueryResponse batch */ - batch?: google.datastore.v1.IQueryResultBatch | null; - - /** RunQueryResponse query */ - query?: google.datastore.v1.IQuery | null; - } - - /** Represents a RunQueryResponse. */ - class RunQueryResponse implements IRunQueryResponse { - /** - * Constructs a new RunQueryResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryResponse); - - /** RunQueryResponse batch. */ - public batch?: google.datastore.v1.IQueryResultBatch | null; - - /** RunQueryResponse query. */ - public query?: google.datastore.v1.IQuery | null; - - /** - * Creates a new RunQueryResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryResponse instance - */ - public static create( - properties?: google.datastore.v1.IRunQueryResponse - ): google.datastore.v1.RunQueryResponse; - - /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IRunQueryResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IRunQueryResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a RunQueryResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.RunQueryResponse; - - /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.RunQueryResponse; - - /** - * Verifies a RunQueryResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.RunQueryResponse; - - /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @param message RunQueryResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.RunQueryResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this RunQueryResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a BeginTransactionRequest. */ - interface IBeginTransactionRequest { - /** BeginTransactionRequest projectId */ - projectId?: string | null; - - /** BeginTransactionRequest transactionOptions */ - transactionOptions?: google.datastore.v1.ITransactionOptions | null; - } - - /** Represents a BeginTransactionRequest. */ - class BeginTransactionRequest implements IBeginTransactionRequest { - /** - * Constructs a new BeginTransactionRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionRequest); - - /** BeginTransactionRequest projectId. */ - public projectId: string; - - /** BeginTransactionRequest transactionOptions. */ - public transactionOptions?: google.datastore.v1.ITransactionOptions | null; - - /** - * Creates a new BeginTransactionRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionRequest instance - */ - public static create( - properties?: google.datastore.v1.IBeginTransactionRequest - ): google.datastore.v1.BeginTransactionRequest; - - /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IBeginTransactionRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IBeginTransactionRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.BeginTransactionRequest; - - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.BeginTransactionRequest; - - /** - * Verifies a BeginTransactionRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.BeginTransactionRequest; - - /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. - * @param message BeginTransactionRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.BeginTransactionRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this BeginTransactionRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a BeginTransactionResponse. */ - interface IBeginTransactionResponse { - /** BeginTransactionResponse transaction */ - transaction?: Uint8Array | null; - } - - /** Represents a BeginTransactionResponse. */ - class BeginTransactionResponse implements IBeginTransactionResponse { - /** - * Constructs a new BeginTransactionResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionResponse); - - /** BeginTransactionResponse transaction. */ - public transaction: Uint8Array; - - /** - * Creates a new BeginTransactionResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionResponse instance - */ - public static create( - properties?: google.datastore.v1.IBeginTransactionResponse - ): google.datastore.v1.BeginTransactionResponse; - - /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IBeginTransactionResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IBeginTransactionResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.BeginTransactionResponse; - - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.BeginTransactionResponse; - - /** - * Verifies a BeginTransactionResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.BeginTransactionResponse; - - /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @param message BeginTransactionResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.BeginTransactionResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this BeginTransactionResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a RollbackRequest. */ - interface IRollbackRequest { - /** RollbackRequest projectId */ - projectId?: string | null; - - /** RollbackRequest transaction */ - transaction?: Uint8Array | null; - } - - /** Represents a RollbackRequest. */ - class RollbackRequest implements IRollbackRequest { - /** - * Constructs a new RollbackRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackRequest); - - /** RollbackRequest projectId. */ - public projectId: string; - - /** RollbackRequest transaction. */ - public transaction: Uint8Array; - - /** - * Creates a new RollbackRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackRequest instance - */ - public static create( - properties?: google.datastore.v1.IRollbackRequest - ): google.datastore.v1.RollbackRequest; - - /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IRollbackRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IRollbackRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a RollbackRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.RollbackRequest; - - /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.RollbackRequest; - - /** - * Verifies a RollbackRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.RollbackRequest; - - /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. - * @param message RollbackRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.RollbackRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this RollbackRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a RollbackResponse. */ - interface IRollbackResponse {} - - /** Represents a RollbackResponse. */ - class RollbackResponse implements IRollbackResponse { - /** - * Constructs a new RollbackResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackResponse); - - /** - * Creates a new RollbackResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackResponse instance - */ - public static create( - properties?: google.datastore.v1.IRollbackResponse - ): google.datastore.v1.RollbackResponse; - - /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IRollbackResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IRollbackResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a RollbackResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.RollbackResponse; - - /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.RollbackResponse; - - /** - * Verifies a RollbackResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.RollbackResponse; - - /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. - * @param message RollbackResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.RollbackResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this RollbackResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a CommitRequest. */ - interface ICommitRequest { - /** CommitRequest projectId */ - projectId?: string | null; - - /** CommitRequest mode */ - mode?: google.datastore.v1.CommitRequest.Mode | null; - - /** CommitRequest transaction */ - transaction?: Uint8Array | null; - - /** CommitRequest mutations */ - mutations?: google.datastore.v1.IMutation[] | null; - } - - /** Represents a CommitRequest. */ - class CommitRequest implements ICommitRequest { - /** - * Constructs a new CommitRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitRequest); - - /** CommitRequest projectId. */ - public projectId: string; - - /** CommitRequest mode. */ - public mode: google.datastore.v1.CommitRequest.Mode; - - /** CommitRequest transaction. */ - public transaction: Uint8Array; - - /** CommitRequest mutations. */ - public mutations: google.datastore.v1.IMutation[]; - - /** CommitRequest transactionSelector. */ - public transactionSelector?: 'transaction'; - - /** - * Creates a new CommitRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitRequest instance - */ - public static create( - properties?: google.datastore.v1.ICommitRequest - ): google.datastore.v1.CommitRequest; - - /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ICommitRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ICommitRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a CommitRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.CommitRequest; - - /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.CommitRequest; - - /** - * Verifies a CommitRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.CommitRequest; - - /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. - * @param message CommitRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.CommitRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this CommitRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace CommitRequest { - /** Mode enum. */ - enum Mode { - MODE_UNSPECIFIED = 0, - TRANSACTIONAL = 1, - NON_TRANSACTIONAL = 2, - } - } - - /** Properties of a CommitResponse. */ - interface ICommitResponse { - /** CommitResponse mutationResults */ - mutationResults?: google.datastore.v1.IMutationResult[] | null; - - /** CommitResponse indexUpdates */ - indexUpdates?: number | null; - } - - /** Represents a CommitResponse. */ - class CommitResponse implements ICommitResponse { - /** - * Constructs a new CommitResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitResponse); - - /** CommitResponse mutationResults. */ - public mutationResults: google.datastore.v1.IMutationResult[]; - - /** CommitResponse indexUpdates. */ - public indexUpdates: number; - - /** - * Creates a new CommitResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitResponse instance - */ - public static create( - properties?: google.datastore.v1.ICommitResponse - ): google.datastore.v1.CommitResponse; - - /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ICommitResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ICommitResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a CommitResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.CommitResponse; - - /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.CommitResponse; - - /** - * Verifies a CommitResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.CommitResponse; - - /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. - * @param message CommitResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.CommitResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this CommitResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an AllocateIdsRequest. */ - interface IAllocateIdsRequest { - /** AllocateIdsRequest projectId */ - projectId?: string | null; - - /** AllocateIdsRequest keys */ - keys?: google.datastore.v1.IKey[] | null; - } - - /** Represents an AllocateIdsRequest. */ - class AllocateIdsRequest implements IAllocateIdsRequest { - /** - * Constructs a new AllocateIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsRequest); - - /** AllocateIdsRequest projectId. */ - public projectId: string; - - /** AllocateIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new AllocateIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsRequest instance - */ - public static create( - properties?: google.datastore.v1.IAllocateIdsRequest - ): google.datastore.v1.AllocateIdsRequest; - - /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IAllocateIdsRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IAllocateIdsRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.AllocateIdsRequest; - - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.AllocateIdsRequest; - - /** - * Verifies an AllocateIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.AllocateIdsRequest; - - /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. - * @param message AllocateIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.AllocateIdsRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this AllocateIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an AllocateIdsResponse. */ - interface IAllocateIdsResponse { - /** AllocateIdsResponse keys */ - keys?: google.datastore.v1.IKey[] | null; - } - - /** Represents an AllocateIdsResponse. */ - class AllocateIdsResponse implements IAllocateIdsResponse { - /** - * Constructs a new AllocateIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsResponse); - - /** AllocateIdsResponse keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new AllocateIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsResponse instance - */ - public static create( - properties?: google.datastore.v1.IAllocateIdsResponse - ): google.datastore.v1.AllocateIdsResponse; - - /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IAllocateIdsResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IAllocateIdsResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.AllocateIdsResponse; - - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.AllocateIdsResponse; - - /** - * Verifies an AllocateIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.AllocateIdsResponse; - - /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @param message AllocateIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.AllocateIdsResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this AllocateIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReserveIdsRequest. */ - interface IReserveIdsRequest { - /** ReserveIdsRequest projectId */ - projectId?: string | null; - - /** ReserveIdsRequest databaseId */ - databaseId?: string | null; - - /** ReserveIdsRequest keys */ - keys?: google.datastore.v1.IKey[] | null; - } - - /** Represents a ReserveIdsRequest. */ - class ReserveIdsRequest implements IReserveIdsRequest { - /** - * Constructs a new ReserveIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsRequest); - - /** ReserveIdsRequest projectId. */ - public projectId: string; - - /** ReserveIdsRequest databaseId. */ - public databaseId: string; - - /** ReserveIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; - - /** - * Creates a new ReserveIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsRequest instance - */ - public static create( - properties?: google.datastore.v1.IReserveIdsRequest - ): google.datastore.v1.ReserveIdsRequest; - - /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IReserveIdsRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IReserveIdsRequest, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.ReserveIdsRequest; - - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.ReserveIdsRequest; - - /** - * Verifies a ReserveIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsRequest - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.ReserveIdsRequest; - - /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. - * @param message ReserveIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.ReserveIdsRequest, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReserveIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReserveIdsResponse. */ - interface IReserveIdsResponse {} - - /** Represents a ReserveIdsResponse. */ - class ReserveIdsResponse implements IReserveIdsResponse { - /** - * Constructs a new ReserveIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsResponse); - - /** - * Creates a new ReserveIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsResponse instance - */ - public static create( - properties?: google.datastore.v1.IReserveIdsResponse - ): google.datastore.v1.ReserveIdsResponse; - - /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IReserveIdsResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IReserveIdsResponse, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.ReserveIdsResponse; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.ReserveIdsResponse; - - /** - * Verifies a ReserveIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsResponse - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.ReserveIdsResponse; - - /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. - * @param message ReserveIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.ReserveIdsResponse, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReserveIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Mutation. */ - interface IMutation { - /** Mutation insert */ - insert?: google.datastore.v1.IEntity | null; - - /** Mutation update */ - update?: google.datastore.v1.IEntity | null; - - /** Mutation upsert */ - upsert?: google.datastore.v1.IEntity | null; - - /** Mutation delete */ - delete?: google.datastore.v1.IKey | null; - - /** Mutation baseVersion */ - baseVersion?: number | Long | null; - } - - /** Represents a Mutation. */ - class Mutation implements IMutation { - /** - * Constructs a new Mutation. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IMutation); - - /** Mutation insert. */ - public insert?: google.datastore.v1.IEntity | null; - - /** Mutation update. */ - public update?: google.datastore.v1.IEntity | null; - - /** Mutation upsert. */ - public upsert?: google.datastore.v1.IEntity | null; - - /** Mutation delete. */ - public delete?: google.datastore.v1.IKey | null; - - /** Mutation baseVersion. */ - public baseVersion: number | Long; - - /** Mutation operation. */ - public operation?: 'insert' | 'update' | 'upsert' | 'delete'; - - /** Mutation conflictDetectionStrategy. */ - public conflictDetectionStrategy?: 'baseVersion'; - - /** - * Creates a new Mutation instance using the specified properties. - * @param [properties] Properties to set - * @returns Mutation instance - */ - public static create( - properties?: google.datastore.v1.IMutation - ): google.datastore.v1.Mutation; - - /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IMutation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IMutation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Mutation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Mutation; - - /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Mutation; - - /** - * Verifies a Mutation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Mutation - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Mutation; - - /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. - * @param message Mutation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Mutation, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Mutation to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a MutationResult. */ - interface IMutationResult { - /** MutationResult key */ - key?: google.datastore.v1.IKey | null; - - /** MutationResult version */ - version?: number | Long | null; - - /** MutationResult conflictDetected */ - conflictDetected?: boolean | null; - } - - /** Represents a MutationResult. */ - class MutationResult implements IMutationResult { - /** - * Constructs a new MutationResult. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IMutationResult); - - /** MutationResult key. */ - public key?: google.datastore.v1.IKey | null; - - /** MutationResult version. */ - public version: number | Long; - - /** MutationResult conflictDetected. */ - public conflictDetected: boolean; - - /** - * Creates a new MutationResult instance using the specified properties. - * @param [properties] Properties to set - * @returns MutationResult instance - */ - public static create( - properties?: google.datastore.v1.IMutationResult - ): google.datastore.v1.MutationResult; - - /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IMutationResult, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IMutationResult, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MutationResult message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.MutationResult; - - /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.MutationResult; - - /** - * Verifies a MutationResult message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MutationResult - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.MutationResult; - - /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. - * @param message MutationResult - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.MutationResult, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MutationResult to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReadOptions. */ - interface IReadOptions { - /** ReadOptions readConsistency */ - readConsistency?: google.datastore.v1.ReadOptions.ReadConsistency | null; - - /** ReadOptions transaction */ - transaction?: Uint8Array | null; - } - - /** Represents a ReadOptions. */ - class ReadOptions implements IReadOptions { - /** - * Constructs a new ReadOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReadOptions); - - /** ReadOptions readConsistency. */ - public readConsistency: google.datastore.v1.ReadOptions.ReadConsistency; - - /** ReadOptions transaction. */ - public transaction: Uint8Array; - - /** ReadOptions consistencyType. */ - public consistencyType?: 'readConsistency' | 'transaction'; - - /** - * Creates a new ReadOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOptions instance - */ - public static create( - properties?: google.datastore.v1.IReadOptions - ): google.datastore.v1.ReadOptions; - - /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IReadOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IReadOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReadOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.ReadOptions; - - /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.ReadOptions; - - /** - * Verifies a ReadOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.ReadOptions; - - /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. - * @param message ReadOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.ReadOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReadOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace ReadOptions { - /** ReadConsistency enum. */ - enum ReadConsistency { - READ_CONSISTENCY_UNSPECIFIED = 0, - STRONG = 1, - EVENTUAL = 2, - } - } - - /** Properties of a TransactionOptions. */ - interface ITransactionOptions { - /** TransactionOptions readWrite */ - readWrite?: google.datastore.v1.TransactionOptions.IReadWrite | null; - - /** TransactionOptions readOnly */ - readOnly?: google.datastore.v1.TransactionOptions.IReadOnly | null; - } - - /** Represents a TransactionOptions. */ - class TransactionOptions implements ITransactionOptions { - /** - * Constructs a new TransactionOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ITransactionOptions); - - /** TransactionOptions readWrite. */ - public readWrite?: google.datastore.v1.TransactionOptions.IReadWrite | null; - - /** TransactionOptions readOnly. */ - public readOnly?: google.datastore.v1.TransactionOptions.IReadOnly | null; - - /** TransactionOptions mode. */ - public mode?: 'readWrite' | 'readOnly'; - - /** - * Creates a new TransactionOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns TransactionOptions instance - */ - public static create( - properties?: google.datastore.v1.ITransactionOptions - ): google.datastore.v1.TransactionOptions; - - /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ITransactionOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ITransactionOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a TransactionOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns TransactionOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.TransactionOptions; - - /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns TransactionOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.TransactionOptions; - - /** - * Verifies a TransactionOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns TransactionOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.TransactionOptions; - - /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. - * @param message TransactionOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.TransactionOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this TransactionOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace TransactionOptions { - /** Properties of a ReadWrite. */ - interface IReadWrite { - /** ReadWrite previousTransaction */ - previousTransaction?: Uint8Array | null; - } - - /** Represents a ReadWrite. */ - class ReadWrite implements IReadWrite { - /** - * Constructs a new ReadWrite. - * @param [properties] Properties to set - */ - constructor( - properties?: google.datastore.v1.TransactionOptions.IReadWrite - ); - - /** ReadWrite previousTransaction. */ - public previousTransaction: Uint8Array; - - /** - * Creates a new ReadWrite instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadWrite instance - */ - public static create( - properties?: google.datastore.v1.TransactionOptions.IReadWrite - ): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.TransactionOptions.IReadWrite, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.TransactionOptions.IReadWrite, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Verifies a ReadWrite message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadWrite - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @param message ReadWrite - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.TransactionOptions.ReadWrite, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReadWrite to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReadOnly. */ - interface IReadOnly {} - - /** Represents a ReadOnly. */ - class ReadOnly implements IReadOnly { - /** - * Constructs a new ReadOnly. - * @param [properties] Properties to set - */ - constructor( - properties?: google.datastore.v1.TransactionOptions.IReadOnly - ); - - /** - * Creates a new ReadOnly instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOnly instance - */ - public static create( - properties?: google.datastore.v1.TransactionOptions.IReadOnly - ): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.TransactionOptions.IReadOnly, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.TransactionOptions.IReadOnly, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Verifies a ReadOnly message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOnly - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @param message ReadOnly - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.TransactionOptions.ReadOnly, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReadOnly to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a PartitionId. */ - interface IPartitionId { - /** PartitionId projectId */ - projectId?: string | null; - - /** PartitionId namespaceId */ - namespaceId?: string | null; - } - - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { - /** - * Constructs a new PartitionId. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPartitionId); - - /** PartitionId projectId. */ - public projectId: string; - - /** PartitionId namespaceId. */ - public namespaceId: string; - - /** - * Creates a new PartitionId instance using the specified properties. - * @param [properties] Properties to set - * @returns PartitionId instance - */ - public static create( - properties?: google.datastore.v1.IPartitionId - ): google.datastore.v1.PartitionId; - - /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IPartitionId, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IPartitionId, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PartitionId message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.PartitionId; - - /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.PartitionId; - - /** - * Verifies a PartitionId message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PartitionId - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.PartitionId; - - /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.PartitionId, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PartitionId to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Key. */ - interface IKey { - /** Key partitionId */ - partitionId?: google.datastore.v1.IPartitionId | null; - - /** Key path */ - path?: google.datastore.v1.Key.IPathElement[] | null; - } - - /** Represents a Key. */ - class Key implements IKey { - /** - * Constructs a new Key. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKey); - - /** Key partitionId. */ - public partitionId?: google.datastore.v1.IPartitionId | null; - - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; - - /** - * Creates a new Key instance using the specified properties. - * @param [properties] Properties to set - * @returns Key instance - */ - public static create( - properties?: google.datastore.v1.IKey - ): google.datastore.v1.Key; - - /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IKey, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IKey, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Key message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Key; - - /** - * Decodes a Key message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Key; - - /** - * Verifies a Key message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Key - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Key; - - /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Key, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Key to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace Key { - /** Properties of a PathElement. */ - interface IPathElement { - /** PathElement kind */ - kind?: string | null; - - /** PathElement id */ - id?: number | Long | null; - - /** PathElement name */ - name?: string | null; - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id: number | Long; - - /** PathElement name. */ - public name: string; - - /** PathElement idType. */ - public idType?: 'id' | 'name'; - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create( - properties?: google.datastore.v1.Key.IPathElement - ): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.Key.IPathElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.Key.IPathElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Key.PathElement, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an ArrayValue. */ - interface IArrayValue { - /** ArrayValue values */ - values?: google.datastore.v1.IValue[] | null; - } - - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { - /** - * Constructs a new ArrayValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IArrayValue); - - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; - - /** - * Creates a new ArrayValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ArrayValue instance - */ - public static create( - properties?: google.datastore.v1.IArrayValue - ): google.datastore.v1.ArrayValue; - - /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IArrayValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IArrayValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ArrayValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.ArrayValue; - - /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.ArrayValue; - - /** - * Verifies an ArrayValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ArrayValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.ArrayValue; - - /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.ArrayValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ArrayValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Value. */ - interface IValue { - /** Value nullValue */ - nullValue?: google.protobuf.NullValue | null; - - /** Value booleanValue */ - booleanValue?: boolean | null; - - /** Value integerValue */ - integerValue?: number | Long | null; - - /** Value doubleValue */ - doubleValue?: number | null; - - /** Value timestampValue */ - timestampValue?: google.protobuf.ITimestamp | null; - - /** Value keyValue */ - keyValue?: google.datastore.v1.IKey | null; - - /** Value stringValue */ - stringValue?: string | null; - - /** Value blobValue */ - blobValue?: Uint8Array | null; - - /** Value geoPointValue */ - geoPointValue?: google.type.ILatLng | null; - - /** Value entityValue */ - entityValue?: google.datastore.v1.IEntity | null; - - /** Value arrayValue */ - arrayValue?: google.datastore.v1.IArrayValue | null; - - /** Value meaning */ - meaning?: number | null; - - /** Value excludeFromIndexes */ - excludeFromIndexes?: boolean | null; - } - - /** Represents a Value. */ - class Value implements IValue { - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value booleanValue. */ - public booleanValue: boolean; - - /** Value integerValue. */ - public integerValue: number | Long; - - /** Value doubleValue. */ - public doubleValue: number; - - /** Value timestampValue. */ - public timestampValue?: google.protobuf.ITimestamp | null; - - /** Value keyValue. */ - public keyValue?: google.datastore.v1.IKey | null; - - /** Value stringValue. */ - public stringValue: string; - - /** Value blobValue. */ - public blobValue: Uint8Array; - - /** Value geoPointValue. */ - public geoPointValue?: google.type.ILatLng | null; - - /** Value entityValue. */ - public entityValue?: google.datastore.v1.IEntity | null; - - /** Value arrayValue. */ - public arrayValue?: google.datastore.v1.IArrayValue | null; - - /** Value meaning. */ - public meaning: number; - - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; - - /** Value valueType. */ - public valueType?: - | 'nullValue' - | 'booleanValue' - | 'integerValue' - | 'doubleValue' - | 'timestampValue' - | 'keyValue' - | 'stringValue' - | 'blobValue' - | 'geoPointValue' - | 'entityValue' - | 'arrayValue'; - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create( - properties?: google.datastore.v1.IValue - ): google.datastore.v1.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an Entity. */ - interface IEntity { - /** Entity key */ - key?: google.datastore.v1.IKey | null; - - /** Entity properties */ - properties?: {[k: string]: google.datastore.v1.IValue} | null; - } - - /** Represents an Entity. */ - class Entity implements IEntity { - /** - * Constructs a new Entity. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntity); - - /** Entity key. */ - public key?: google.datastore.v1.IKey | null; - - /** Entity properties. */ - public properties: {[k: string]: google.datastore.v1.IValue}; - - /** - * Creates a new Entity instance using the specified properties. - * @param [properties] Properties to set - * @returns Entity instance - */ - public static create( - properties?: google.datastore.v1.IEntity - ): google.datastore.v1.Entity; - - /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IEntity, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IEntity, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Entity message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Entity; - - /** - * Decodes an Entity message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Entity; - - /** - * Verifies an Entity message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Entity - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Entity; - - /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Entity, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Entity to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EntityResult. */ - interface IEntityResult { - /** EntityResult entity */ - entity?: google.datastore.v1.IEntity | null; - - /** EntityResult version */ - version?: number | Long | null; - - /** EntityResult cursor */ - cursor?: Uint8Array | null; - } - - /** Represents an EntityResult. */ - class EntityResult implements IEntityResult { - /** - * Constructs a new EntityResult. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntityResult); - - /** EntityResult entity. */ - public entity?: google.datastore.v1.IEntity | null; - - /** EntityResult version. */ - public version: number | Long; - - /** EntityResult cursor. */ - public cursor: Uint8Array; - - /** - * Creates a new EntityResult instance using the specified properties. - * @param [properties] Properties to set - * @returns EntityResult instance - */ - public static create( - properties?: google.datastore.v1.IEntityResult - ): google.datastore.v1.EntityResult; - - /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IEntityResult, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IEntityResult, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EntityResult message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EntityResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.EntityResult; - - /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EntityResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.EntityResult; - - /** - * Verifies an EntityResult message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EntityResult - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.EntityResult; - - /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. - * @param message EntityResult - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.EntityResult, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EntityResult to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace EntityResult { - /** ResultType enum. */ - enum ResultType { - RESULT_TYPE_UNSPECIFIED = 0, - FULL = 1, - PROJECTION = 2, - KEY_ONLY = 3, - } - } - - /** Properties of a Query. */ - interface IQuery { - /** Query projection */ - projection?: google.datastore.v1.IProjection[] | null; - - /** Query kind */ - kind?: google.datastore.v1.IKindExpression[] | null; - - /** Query filter */ - filter?: google.datastore.v1.IFilter | null; - - /** Query order */ - order?: google.datastore.v1.IPropertyOrder[] | null; - - /** Query distinctOn */ - distinctOn?: google.datastore.v1.IPropertyReference[] | null; - - /** Query startCursor */ - startCursor?: Uint8Array | null; - - /** Query endCursor */ - endCursor?: Uint8Array | null; - - /** Query offset */ - offset?: number | null; - - /** Query limit */ - limit?: google.protobuf.IInt32Value | null; - } - - /** Represents a Query. */ - class Query implements IQuery { - /** - * Constructs a new Query. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IQuery); - - /** Query projection. */ - public projection: google.datastore.v1.IProjection[]; - - /** Query kind. */ - public kind: google.datastore.v1.IKindExpression[]; - - /** Query filter. */ - public filter?: google.datastore.v1.IFilter | null; - - /** Query order. */ - public order: google.datastore.v1.IPropertyOrder[]; - - /** Query distinctOn. */ - public distinctOn: google.datastore.v1.IPropertyReference[]; - - /** Query startCursor. */ - public startCursor: Uint8Array; - - /** Query endCursor. */ - public endCursor: Uint8Array; - - /** Query offset. */ - public offset: number; - - /** Query limit. */ - public limit?: google.protobuf.IInt32Value | null; - - /** - * Creates a new Query instance using the specified properties. - * @param [properties] Properties to set - * @returns Query instance - */ - public static create( - properties?: google.datastore.v1.IQuery - ): google.datastore.v1.Query; - - /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IQuery, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IQuery, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Query message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Query - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Query; - - /** - * Decodes a Query message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Query - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Query; - - /** - * Verifies a Query message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Query - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Query; - - /** - * Creates a plain object from a Query message. Also converts values to other types if specified. - * @param message Query - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Query, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Query to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a KindExpression. */ - interface IKindExpression { - /** KindExpression name */ - name?: string | null; - } - - /** Represents a KindExpression. */ - class KindExpression implements IKindExpression { - /** - * Constructs a new KindExpression. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKindExpression); - - /** KindExpression name. */ - public name: string; - - /** - * Creates a new KindExpression instance using the specified properties. - * @param [properties] Properties to set - * @returns KindExpression instance - */ - public static create( - properties?: google.datastore.v1.IKindExpression - ): google.datastore.v1.KindExpression; - - /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IKindExpression, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IKindExpression, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a KindExpression message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns KindExpression - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.KindExpression; - - /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns KindExpression - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.KindExpression; - - /** - * Verifies a KindExpression message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns KindExpression - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.KindExpression; - - /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. - * @param message KindExpression - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.KindExpression, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this KindExpression to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a PropertyReference. */ - interface IPropertyReference { - /** PropertyReference name */ - name?: string | null; - } - - /** Represents a PropertyReference. */ - class PropertyReference implements IPropertyReference { - /** - * Constructs a new PropertyReference. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyReference); - - /** PropertyReference name. */ - public name: string; - - /** - * Creates a new PropertyReference instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyReference instance - */ - public static create( - properties?: google.datastore.v1.IPropertyReference - ): google.datastore.v1.PropertyReference; - - /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IPropertyReference, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IPropertyReference, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PropertyReference message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyReference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.PropertyReference; - - /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyReference - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.PropertyReference; - - /** - * Verifies a PropertyReference message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyReference - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.PropertyReference; - - /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. - * @param message PropertyReference - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.PropertyReference, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PropertyReference to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Projection. */ - interface IProjection { - /** Projection property */ - property?: google.datastore.v1.IPropertyReference | null; - } - - /** Represents a Projection. */ - class Projection implements IProjection { - /** - * Constructs a new Projection. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IProjection); - - /** Projection property. */ - public property?: google.datastore.v1.IPropertyReference | null; - - /** - * Creates a new Projection instance using the specified properties. - * @param [properties] Properties to set - * @returns Projection instance - */ - public static create( - properties?: google.datastore.v1.IProjection - ): google.datastore.v1.Projection; - - /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IProjection, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IProjection, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Projection message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Projection - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Projection; - - /** - * Decodes a Projection message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Projection - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Projection; - - /** - * Verifies a Projection message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Projection - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Projection; - - /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. - * @param message Projection - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Projection, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Projection to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a PropertyOrder. */ - interface IPropertyOrder { - /** PropertyOrder property */ - property?: google.datastore.v1.IPropertyReference | null; - - /** PropertyOrder direction */ - direction?: google.datastore.v1.PropertyOrder.Direction | null; - } - - /** Represents a PropertyOrder. */ - class PropertyOrder implements IPropertyOrder { - /** - * Constructs a new PropertyOrder. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyOrder); - - /** PropertyOrder property. */ - public property?: google.datastore.v1.IPropertyReference | null; - - /** PropertyOrder direction. */ - public direction: google.datastore.v1.PropertyOrder.Direction; - - /** - * Creates a new PropertyOrder instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyOrder instance - */ - public static create( - properties?: google.datastore.v1.IPropertyOrder - ): google.datastore.v1.PropertyOrder; - - /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IPropertyOrder, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IPropertyOrder, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PropertyOrder message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyOrder - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.PropertyOrder; - - /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyOrder - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.PropertyOrder; - - /** - * Verifies a PropertyOrder message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyOrder - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.PropertyOrder; - - /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. - * @param message PropertyOrder - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.PropertyOrder, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PropertyOrder to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace PropertyOrder { - /** Direction enum. */ - enum Direction { - DIRECTION_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2, - } - } - - /** Properties of a Filter. */ - interface IFilter { - /** Filter compositeFilter */ - compositeFilter?: google.datastore.v1.ICompositeFilter | null; - - /** Filter propertyFilter */ - propertyFilter?: google.datastore.v1.IPropertyFilter | null; - } - - /** Represents a Filter. */ - class Filter implements IFilter { - /** - * Constructs a new Filter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IFilter); - - /** Filter compositeFilter. */ - public compositeFilter?: google.datastore.v1.ICompositeFilter | null; - - /** Filter propertyFilter. */ - public propertyFilter?: google.datastore.v1.IPropertyFilter | null; - - /** Filter filterType. */ - public filterType?: 'compositeFilter' | 'propertyFilter'; - - /** - * Creates a new Filter instance using the specified properties. - * @param [properties] Properties to set - * @returns Filter instance - */ - public static create( - properties?: google.datastore.v1.IFilter - ): google.datastore.v1.Filter; - - /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Filter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Filter; - - /** - * Decodes a Filter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Filter; - - /** - * Verifies a Filter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Filter - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Filter; - - /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. - * @param message Filter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Filter, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Filter to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a CompositeFilter. */ - interface ICompositeFilter { - /** CompositeFilter op */ - op?: google.datastore.v1.CompositeFilter.Operator | null; - - /** CompositeFilter filters */ - filters?: google.datastore.v1.IFilter[] | null; - } - - /** Represents a CompositeFilter. */ - class CompositeFilter implements ICompositeFilter { - /** - * Constructs a new CompositeFilter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICompositeFilter); - - /** CompositeFilter op. */ - public op: google.datastore.v1.CompositeFilter.Operator; - - /** CompositeFilter filters. */ - public filters: google.datastore.v1.IFilter[]; - - /** - * Creates a new CompositeFilter instance using the specified properties. - * @param [properties] Properties to set - * @returns CompositeFilter instance - */ - public static create( - properties?: google.datastore.v1.ICompositeFilter - ): google.datastore.v1.CompositeFilter; - - /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.ICompositeFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.ICompositeFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a CompositeFilter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompositeFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.CompositeFilter; - - /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompositeFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.CompositeFilter; - - /** - * Verifies a CompositeFilter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompositeFilter - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.CompositeFilter; - - /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. - * @param message CompositeFilter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.CompositeFilter, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this CompositeFilter to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace CompositeFilter { - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - AND = 1, - } - } - - /** Properties of a PropertyFilter. */ - interface IPropertyFilter { - /** PropertyFilter property */ - property?: google.datastore.v1.IPropertyReference | null; - - /** PropertyFilter op */ - op?: google.datastore.v1.PropertyFilter.Operator | null; - - /** PropertyFilter value */ - value?: google.datastore.v1.IValue | null; - } - - /** Represents a PropertyFilter. */ - class PropertyFilter implements IPropertyFilter { - /** - * Constructs a new PropertyFilter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPropertyFilter); - - /** PropertyFilter property. */ - public property?: google.datastore.v1.IPropertyReference | null; - - /** PropertyFilter op. */ - public op: google.datastore.v1.PropertyFilter.Operator; - - /** PropertyFilter value. */ - public value?: google.datastore.v1.IValue | null; - - /** - * Creates a new PropertyFilter instance using the specified properties. - * @param [properties] Properties to set - * @returns PropertyFilter instance - */ - public static create( - properties?: google.datastore.v1.IPropertyFilter - ): google.datastore.v1.PropertyFilter; - - /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IPropertyFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IPropertyFilter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PropertyFilter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PropertyFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.PropertyFilter; - - /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PropertyFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.PropertyFilter; - - /** - * Verifies a PropertyFilter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PropertyFilter - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.PropertyFilter; - - /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. - * @param message PropertyFilter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.PropertyFilter, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PropertyFilter to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace PropertyFilter { - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - LESS_THAN = 1, - LESS_THAN_OR_EQUAL = 2, - GREATER_THAN = 3, - GREATER_THAN_OR_EQUAL = 4, - EQUAL = 5, - HAS_ANCESTOR = 11, - } - } - - /** Properties of a GqlQuery. */ - interface IGqlQuery { - /** GqlQuery queryString */ - queryString?: string | null; - - /** GqlQuery allowLiterals */ - allowLiterals?: boolean | null; - - /** GqlQuery namedBindings */ - namedBindings?: { - [k: string]: google.datastore.v1.IGqlQueryParameter; - } | null; - - /** GqlQuery positionalBindings */ - positionalBindings?: google.datastore.v1.IGqlQueryParameter[] | null; - } - - /** Represents a GqlQuery. */ - class GqlQuery implements IGqlQuery { - /** - * Constructs a new GqlQuery. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IGqlQuery); - - /** GqlQuery queryString. */ - public queryString: string; - - /** GqlQuery allowLiterals. */ - public allowLiterals: boolean; - - /** GqlQuery namedBindings. */ - public namedBindings: { - [k: string]: google.datastore.v1.IGqlQueryParameter; - }; - - /** GqlQuery positionalBindings. */ - public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; - - /** - * Creates a new GqlQuery instance using the specified properties. - * @param [properties] Properties to set - * @returns GqlQuery instance - */ - public static create( - properties?: google.datastore.v1.IGqlQuery - ): google.datastore.v1.GqlQuery; - - /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IGqlQuery, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IGqlQuery, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a GqlQuery message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GqlQuery - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.GqlQuery; - - /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GqlQuery - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.GqlQuery; - - /** - * Verifies a GqlQuery message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GqlQuery - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.GqlQuery; - - /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. - * @param message GqlQuery - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.GqlQuery, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this GqlQuery to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a GqlQueryParameter. */ - interface IGqlQueryParameter { - /** GqlQueryParameter value */ - value?: google.datastore.v1.IValue | null; - - /** GqlQueryParameter cursor */ - cursor?: Uint8Array | null; - } - - /** Represents a GqlQueryParameter. */ - class GqlQueryParameter implements IGqlQueryParameter { - /** - * Constructs a new GqlQueryParameter. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IGqlQueryParameter); - - /** GqlQueryParameter value. */ - public value?: google.datastore.v1.IValue | null; - - /** GqlQueryParameter cursor. */ - public cursor: Uint8Array; - - /** GqlQueryParameter parameterType. */ - public parameterType?: 'value' | 'cursor'; - - /** - * Creates a new GqlQueryParameter instance using the specified properties. - * @param [properties] Properties to set - * @returns GqlQueryParameter instance - */ - public static create( - properties?: google.datastore.v1.IGqlQueryParameter - ): google.datastore.v1.GqlQueryParameter; - - /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IGqlQueryParameter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IGqlQueryParameter, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GqlQueryParameter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.GqlQueryParameter; - - /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GqlQueryParameter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.GqlQueryParameter; - - /** - * Verifies a GqlQueryParameter message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GqlQueryParameter - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.GqlQueryParameter; - - /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. - * @param message GqlQueryParameter - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.GqlQueryParameter, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this GqlQueryParameter to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a QueryResultBatch. */ - interface IQueryResultBatch { - /** QueryResultBatch skippedResults */ - skippedResults?: number | null; - - /** QueryResultBatch skippedCursor */ - skippedCursor?: Uint8Array | null; - - /** QueryResultBatch entityResultType */ - entityResultType?: google.datastore.v1.EntityResult.ResultType | null; - - /** QueryResultBatch entityResults */ - entityResults?: google.datastore.v1.IEntityResult[] | null; - - /** QueryResultBatch endCursor */ - endCursor?: Uint8Array | null; - - /** QueryResultBatch moreResults */ - moreResults?: google.datastore.v1.QueryResultBatch.MoreResultsType | null; - - /** QueryResultBatch snapshotVersion */ - snapshotVersion?: number | Long | null; - } - - /** Represents a QueryResultBatch. */ - class QueryResultBatch implements IQueryResultBatch { - /** - * Constructs a new QueryResultBatch. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IQueryResultBatch); - - /** QueryResultBatch skippedResults. */ - public skippedResults: number; - - /** QueryResultBatch skippedCursor. */ - public skippedCursor: Uint8Array; - - /** QueryResultBatch entityResultType. */ - public entityResultType: google.datastore.v1.EntityResult.ResultType; - - /** QueryResultBatch entityResults. */ - public entityResults: google.datastore.v1.IEntityResult[]; - - /** QueryResultBatch endCursor. */ - public endCursor: Uint8Array; - - /** QueryResultBatch moreResults. */ - public moreResults: google.datastore.v1.QueryResultBatch.MoreResultsType; - - /** QueryResultBatch snapshotVersion. */ - public snapshotVersion: number | Long; - - /** - * Creates a new QueryResultBatch instance using the specified properties. - * @param [properties] Properties to set - * @returns QueryResultBatch instance - */ - public static create( - properties?: google.datastore.v1.IQueryResultBatch - ): google.datastore.v1.QueryResultBatch; - - /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IQueryResultBatch, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IQueryResultBatch, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a QueryResultBatch message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns QueryResultBatch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.QueryResultBatch; - - /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns QueryResultBatch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.QueryResultBatch; - - /** - * Verifies a QueryResultBatch message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns QueryResultBatch - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.QueryResultBatch; - - /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. - * @param message QueryResultBatch - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.QueryResultBatch, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this QueryResultBatch to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace QueryResultBatch { - /** MoreResultsType enum. */ - enum MoreResultsType { - MORE_RESULTS_TYPE_UNSPECIFIED = 0, - NOT_FINISHED = 1, - MORE_RESULTS_AFTER_LIMIT = 2, - MORE_RESULTS_AFTER_CURSOR = 4, - NO_MORE_RESULTS = 3, - } - } - } - } - - /** Namespace api. */ - namespace api { - /** Properties of a Http. */ - interface IHttp { - /** Http rules */ - rules?: google.api.IHttpRule[] | null; - - /** Http fullyDecodeReservedExpansion */ - fullyDecodeReservedExpansion?: boolean | null; - } - - /** Represents a Http. */ - class Http implements IHttp { - /** - * Constructs a new Http. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttp); - - /** Http rules. */ - public rules: google.api.IHttpRule[]; - - /** Http fullyDecodeReservedExpansion. */ - public fullyDecodeReservedExpansion: boolean; - - /** - * Creates a new Http instance using the specified properties. - * @param [properties] Properties to set - * @returns Http instance - */ - public static create(properties?: google.api.IHttp): google.api.Http; - - /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.IHttp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.IHttp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Http message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.Http; - - /** - * Decodes a Http message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.Http; - - /** - * Verifies a Http message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Http - */ - public static fromObject(object: {[k: string]: any}): google.api.Http; - - /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @param message Http - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.Http, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Http to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a HttpRule. */ - interface IHttpRule { - /** HttpRule selector */ - selector?: string | null; - - /** HttpRule get */ - get?: string | null; - - /** HttpRule put */ - put?: string | null; - - /** HttpRule post */ - post?: string | null; - - /** HttpRule delete */ - delete?: string | null; - - /** HttpRule patch */ - patch?: string | null; - - /** HttpRule custom */ - custom?: google.api.ICustomHttpPattern | null; - - /** HttpRule body */ - body?: string | null; - - /** HttpRule responseBody */ - responseBody?: string | null; - - /** HttpRule additionalBindings */ - additionalBindings?: google.api.IHttpRule[] | null; - } - - /** Represents a HttpRule. */ - class HttpRule implements IHttpRule { - /** - * Constructs a new HttpRule. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttpRule); - - /** HttpRule selector. */ - public selector: string; - - /** HttpRule get. */ - public get: string; - - /** HttpRule put. */ - public put: string; - - /** HttpRule post. */ - public post: string; - - /** HttpRule delete. */ - public delete: string; - - /** HttpRule patch. */ - public patch: string; - - /** HttpRule custom. */ - public custom?: google.api.ICustomHttpPattern | null; - - /** HttpRule body. */ - public body: string; - - /** HttpRule responseBody. */ - public responseBody: string; - - /** HttpRule additionalBindings. */ - public additionalBindings: google.api.IHttpRule[]; - - /** HttpRule pattern. */ - public pattern?: 'get' | 'put' | 'post' | 'delete' | 'patch' | 'custom'; - - /** - * Creates a new HttpRule instance using the specified properties. - * @param [properties] Properties to set - * @returns HttpRule instance - */ - public static create( - properties?: google.api.IHttpRule - ): google.api.HttpRule; - - /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.IHttpRule, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.IHttpRule, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a HttpRule message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.HttpRule; - - /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.HttpRule; - - /** - * Verifies a HttpRule message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns HttpRule - */ - public static fromObject(object: {[k: string]: any}): google.api.HttpRule; - - /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @param message HttpRule - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.HttpRule, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this HttpRule to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a CustomHttpPattern. */ - interface ICustomHttpPattern { - /** CustomHttpPattern kind */ - kind?: string | null; - - /** CustomHttpPattern path */ - path?: string | null; - } - - /** Represents a CustomHttpPattern. */ - class CustomHttpPattern implements ICustomHttpPattern { - /** - * Constructs a new CustomHttpPattern. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.ICustomHttpPattern); - - /** CustomHttpPattern kind. */ - public kind: string; - - /** CustomHttpPattern path. */ - public path: string; - - /** - * Creates a new CustomHttpPattern instance using the specified properties. - * @param [properties] Properties to set - * @returns CustomHttpPattern instance - */ - public static create( - properties?: google.api.ICustomHttpPattern - ): google.api.CustomHttpPattern; - - /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.ICustomHttpPattern, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.ICustomHttpPattern, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.CustomHttpPattern; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.CustomHttpPattern; - - /** - * Verifies a CustomHttpPattern message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CustomHttpPattern - */ - public static fromObject(object: { - [k: string]: any; - }): google.api.CustomHttpPattern; - - /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @param message CustomHttpPattern - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.CustomHttpPattern, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this CustomHttpPattern to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Namespace protobuf. */ - namespace protobuf { - /** Properties of a FileDescriptorSet. */ - interface IFileDescriptorSet { - /** FileDescriptorSet file */ - file?: google.protobuf.IFileDescriptorProto[] | null; - } - - /** Represents a FileDescriptorSet. */ - class FileDescriptorSet implements IFileDescriptorSet { - /** - * Constructs a new FileDescriptorSet. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorSet); - - /** FileDescriptorSet file. */ - public file: google.protobuf.IFileDescriptorProto[]; - - /** - * Creates a new FileDescriptorSet instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorSet instance - */ - public static create( - properties?: google.protobuf.IFileDescriptorSet - ): google.protobuf.FileDescriptorSet; - - /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileDescriptorSet, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileDescriptorSet, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileDescriptorSet; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileDescriptorSet; - - /** - * Verifies a FileDescriptorSet message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorSet - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileDescriptorSet; - - /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @param message FileDescriptorSet - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileDescriptorSet, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileDescriptorSet to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FileDescriptorProto. */ - interface IFileDescriptorProto { - /** FileDescriptorProto name */ - name?: string | null; - - /** FileDescriptorProto package */ - package?: string | null; - - /** FileDescriptorProto dependency */ - dependency?: string[] | null; - - /** FileDescriptorProto publicDependency */ - publicDependency?: number[] | null; - - /** FileDescriptorProto weakDependency */ - weakDependency?: number[] | null; - - /** FileDescriptorProto messageType */ - messageType?: google.protobuf.IDescriptorProto[] | null; - - /** FileDescriptorProto enumType */ - enumType?: google.protobuf.IEnumDescriptorProto[] | null; - - /** FileDescriptorProto service */ - service?: google.protobuf.IServiceDescriptorProto[] | null; - - /** FileDescriptorProto extension */ - extension?: google.protobuf.IFieldDescriptorProto[] | null; - - /** FileDescriptorProto options */ - options?: google.protobuf.IFileOptions | null; - - /** FileDescriptorProto sourceCodeInfo */ - sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - - /** FileDescriptorProto syntax */ - syntax?: string | null; - } - - /** Represents a FileDescriptorProto. */ - class FileDescriptorProto implements IFileDescriptorProto { - /** - * Constructs a new FileDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorProto); - - /** FileDescriptorProto name. */ - public name: string; - - /** FileDescriptorProto package. */ - public package: string; - - /** FileDescriptorProto dependency. */ - public dependency: string[]; - - /** FileDescriptorProto publicDependency. */ - public publicDependency: number[]; - - /** FileDescriptorProto weakDependency. */ - public weakDependency: number[]; - - /** FileDescriptorProto messageType. */ - public messageType: google.protobuf.IDescriptorProto[]; - - /** FileDescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** FileDescriptorProto service. */ - public service: google.protobuf.IServiceDescriptorProto[]; - - /** FileDescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** FileDescriptorProto options. */ - public options?: google.protobuf.IFileOptions | null; - - /** FileDescriptorProto sourceCodeInfo. */ - public sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - - /** FileDescriptorProto syntax. */ - public syntax: string; - - /** - * Creates a new FileDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IFileDescriptorProto - ): google.protobuf.FileDescriptorProto; - - /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileDescriptorProto; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileDescriptorProto; - - /** - * Verifies a FileDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileDescriptorProto; - - /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @param message FileDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a DescriptorProto. */ - interface IDescriptorProto { - /** DescriptorProto name */ - name?: string | null; - - /** DescriptorProto field */ - field?: google.protobuf.IFieldDescriptorProto[] | null; - - /** DescriptorProto extension */ - extension?: google.protobuf.IFieldDescriptorProto[] | null; - - /** DescriptorProto nestedType */ - nestedType?: google.protobuf.IDescriptorProto[] | null; - - /** DescriptorProto enumType */ - enumType?: google.protobuf.IEnumDescriptorProto[] | null; - - /** DescriptorProto extensionRange */ - extensionRange?: google.protobuf.DescriptorProto.IExtensionRange[] | null; - - /** DescriptorProto oneofDecl */ - oneofDecl?: google.protobuf.IOneofDescriptorProto[] | null; - - /** DescriptorProto options */ - options?: google.protobuf.IMessageOptions | null; - - /** DescriptorProto reservedRange */ - reservedRange?: google.protobuf.DescriptorProto.IReservedRange[] | null; - - /** DescriptorProto reservedName */ - reservedName?: string[] | null; - } - - /** Represents a DescriptorProto. */ - class DescriptorProto implements IDescriptorProto { - /** - * Constructs a new DescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDescriptorProto); - - /** DescriptorProto name. */ - public name: string; - - /** DescriptorProto field. */ - public field: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto nestedType. */ - public nestedType: google.protobuf.IDescriptorProto[]; - - /** DescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** DescriptorProto extensionRange. */ - public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; - - /** DescriptorProto oneofDecl. */ - public oneofDecl: google.protobuf.IOneofDescriptorProto[]; - - /** DescriptorProto options. */ - public options?: google.protobuf.IMessageOptions | null; - - /** DescriptorProto reservedRange. */ - public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; - - /** DescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new DescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns DescriptorProto instance - */ - public static create( - properties?: google.protobuf.IDescriptorProto - ): google.protobuf.DescriptorProto; - - /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto; - - /** - * Verifies a DescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto; - - /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @param message DescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this DescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace DescriptorProto { - /** Properties of an ExtensionRange. */ - interface IExtensionRange { - /** ExtensionRange start */ - start?: number | null; - - /** ExtensionRange end */ - end?: number | null; - - /** ExtensionRange options */ - options?: google.protobuf.IExtensionRangeOptions | null; - } - - /** Represents an ExtensionRange. */ - class ExtensionRange implements IExtensionRange { - /** - * Constructs a new ExtensionRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.DescriptorProto.IExtensionRange - ); - - /** ExtensionRange start. */ - public start: number; - - /** ExtensionRange end. */ - public end: number; - - /** ExtensionRange options. */ - public options?: google.protobuf.IExtensionRangeOptions | null; - - /** - * Creates a new ExtensionRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRange instance - */ - public static create( - properties?: google.protobuf.DescriptorProto.IExtensionRange - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.DescriptorProto.IExtensionRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.DescriptorProto.IExtensionRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Verifies an ExtensionRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. - * @param message ExtensionRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto.ExtensionRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ExtensionRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReservedRange. */ - interface IReservedRange { - /** ReservedRange start */ - start?: number | null; - - /** ReservedRange end */ - end?: number | null; - } - - /** Represents a ReservedRange. */ - class ReservedRange implements IReservedRange { - /** - * Constructs a new ReservedRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.DescriptorProto.IReservedRange - ); - - /** ReservedRange start. */ - public start: number; - - /** ReservedRange end. */ - public end: number; - - /** - * Creates a new ReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ReservedRange instance - */ - public static create( - properties?: google.protobuf.DescriptorProto.IReservedRange - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.DescriptorProto.IReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.DescriptorProto.IReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Verifies a ReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReservedRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. - * @param message ReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto.ReservedRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an ExtensionRangeOptions. */ - interface IExtensionRangeOptions { - /** ExtensionRangeOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an ExtensionRangeOptions. */ - class ExtensionRangeOptions implements IExtensionRangeOptions { - /** - * Constructs a new ExtensionRangeOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IExtensionRangeOptions); - - /** ExtensionRangeOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ExtensionRangeOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRangeOptions instance - */ - public static create( - properties?: google.protobuf.IExtensionRangeOptions - ): google.protobuf.ExtensionRangeOptions; - - /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IExtensionRangeOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IExtensionRangeOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ExtensionRangeOptions; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ExtensionRangeOptions; - - /** - * Verifies an ExtensionRangeOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRangeOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ExtensionRangeOptions; - - /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @param message ExtensionRangeOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ExtensionRangeOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ExtensionRangeOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FieldDescriptorProto. */ - interface IFieldDescriptorProto { - /** FieldDescriptorProto name */ - name?: string | null; - - /** FieldDescriptorProto number */ - number?: number | null; - - /** FieldDescriptorProto label */ - label?: google.protobuf.FieldDescriptorProto.Label | null; - - /** FieldDescriptorProto type */ - type?: google.protobuf.FieldDescriptorProto.Type | null; - - /** FieldDescriptorProto typeName */ - typeName?: string | null; - - /** FieldDescriptorProto extendee */ - extendee?: string | null; - - /** FieldDescriptorProto defaultValue */ - defaultValue?: string | null; - - /** FieldDescriptorProto oneofIndex */ - oneofIndex?: number | null; - - /** FieldDescriptorProto jsonName */ - jsonName?: string | null; - - /** FieldDescriptorProto options */ - options?: google.protobuf.IFieldOptions | null; - } - - /** Represents a FieldDescriptorProto. */ - class FieldDescriptorProto implements IFieldDescriptorProto { - /** - * Constructs a new FieldDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldDescriptorProto); - - /** FieldDescriptorProto name. */ - public name: string; - - /** FieldDescriptorProto number. */ - public number: number; - - /** FieldDescriptorProto label. */ - public label: google.protobuf.FieldDescriptorProto.Label; - - /** FieldDescriptorProto type. */ - public type: google.protobuf.FieldDescriptorProto.Type; - - /** FieldDescriptorProto typeName. */ - public typeName: string; - - /** FieldDescriptorProto extendee. */ - public extendee: string; - - /** FieldDescriptorProto defaultValue. */ - public defaultValue: string; - - /** FieldDescriptorProto oneofIndex. */ - public oneofIndex: number; - - /** FieldDescriptorProto jsonName. */ - public jsonName: string; - - /** FieldDescriptorProto options. */ - public options?: google.protobuf.IFieldOptions | null; - - /** - * Creates a new FieldDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IFieldDescriptorProto - ): google.protobuf.FieldDescriptorProto; - - /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFieldDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFieldDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FieldDescriptorProto; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FieldDescriptorProto; - - /** - * Verifies a FieldDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FieldDescriptorProto; - - /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @param message FieldDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FieldDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FieldDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FieldDescriptorProto { - /** Type enum. */ - enum Type { - TYPE_DOUBLE = 1, - TYPE_FLOAT = 2, - TYPE_INT64 = 3, - TYPE_UINT64 = 4, - TYPE_INT32 = 5, - TYPE_FIXED64 = 6, - TYPE_FIXED32 = 7, - TYPE_BOOL = 8, - TYPE_STRING = 9, - TYPE_GROUP = 10, - TYPE_MESSAGE = 11, - TYPE_BYTES = 12, - TYPE_UINT32 = 13, - TYPE_ENUM = 14, - TYPE_SFIXED32 = 15, - TYPE_SFIXED64 = 16, - TYPE_SINT32 = 17, - TYPE_SINT64 = 18, - } - - /** Label enum. */ - enum Label { - LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3, - } - } - - /** Properties of an OneofDescriptorProto. */ - interface IOneofDescriptorProto { - /** OneofDescriptorProto name */ - name?: string | null; - - /** OneofDescriptorProto options */ - options?: google.protobuf.IOneofOptions | null; - } - - /** Represents an OneofDescriptorProto. */ - class OneofDescriptorProto implements IOneofDescriptorProto { - /** - * Constructs a new OneofDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofDescriptorProto); - - /** OneofDescriptorProto name. */ - public name: string; - - /** OneofDescriptorProto options. */ - public options?: google.protobuf.IOneofOptions | null; - - /** - * Creates a new OneofDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IOneofDescriptorProto - ): google.protobuf.OneofDescriptorProto; - - /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IOneofDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IOneofDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.OneofDescriptorProto; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.OneofDescriptorProto; - - /** - * Verifies an OneofDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.OneofDescriptorProto; - - /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @param message OneofDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.OneofDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this OneofDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumDescriptorProto. */ - interface IEnumDescriptorProto { - /** EnumDescriptorProto name */ - name?: string | null; - - /** EnumDescriptorProto value */ - value?: google.protobuf.IEnumValueDescriptorProto[] | null; - - /** EnumDescriptorProto options */ - options?: google.protobuf.IEnumOptions | null; - - /** EnumDescriptorProto reservedRange */ - reservedRange?: - | google.protobuf.EnumDescriptorProto.IEnumReservedRange[] - | null; - - /** EnumDescriptorProto reservedName */ - reservedName?: string[] | null; - } - - /** Represents an EnumDescriptorProto. */ - class EnumDescriptorProto implements IEnumDescriptorProto { - /** - * Constructs a new EnumDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumDescriptorProto); - - /** EnumDescriptorProto name. */ - public name: string; - - /** EnumDescriptorProto value. */ - public value: google.protobuf.IEnumValueDescriptorProto[]; - - /** EnumDescriptorProto options. */ - public options?: google.protobuf.IEnumOptions | null; - - /** EnumDescriptorProto reservedRange. */ - public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; - - /** EnumDescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new EnumDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IEnumDescriptorProto - ): google.protobuf.EnumDescriptorProto; - - /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumDescriptorProto; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumDescriptorProto; - - /** - * Verifies an EnumDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumDescriptorProto; - - /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. - * @param message EnumDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace EnumDescriptorProto { - /** Properties of an EnumReservedRange. */ - interface IEnumReservedRange { - /** EnumReservedRange start */ - start?: number | null; - - /** EnumReservedRange end */ - end?: number | null; - } - - /** Represents an EnumReservedRange. */ - class EnumReservedRange implements IEnumReservedRange { - /** - * Constructs a new EnumReservedRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange - ); - - /** EnumReservedRange start. */ - public start: number; - - /** EnumReservedRange end. */ - public end: number; - - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumReservedRange instance - */ - public static create( - properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Verifies an EnumReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumReservedRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @param message EnumReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumDescriptorProto.EnumReservedRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an EnumValueDescriptorProto. */ - interface IEnumValueDescriptorProto { - /** EnumValueDescriptorProto name */ - name?: string | null; - - /** EnumValueDescriptorProto number */ - number?: number | null; - - /** EnumValueDescriptorProto options */ - options?: google.protobuf.IEnumValueOptions | null; - } - - /** Represents an EnumValueDescriptorProto. */ - class EnumValueDescriptorProto implements IEnumValueDescriptorProto { - /** - * Constructs a new EnumValueDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - - /** EnumValueDescriptorProto name. */ - public name: string; - - /** EnumValueDescriptorProto number. */ - public number: number; - - /** EnumValueDescriptorProto options. */ - public options?: google.protobuf.IEnumValueOptions | null; - - /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IEnumValueDescriptorProto - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumValueDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumValueDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Verifies an EnumValueDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumValueDescriptorProto; - - /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. - * @param message EnumValueDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumValueDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumValueDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ServiceDescriptorProto. */ - interface IServiceDescriptorProto { - /** ServiceDescriptorProto name */ - name?: string | null; - - /** ServiceDescriptorProto method */ - method?: google.protobuf.IMethodDescriptorProto[] | null; - - /** ServiceDescriptorProto options */ - options?: google.protobuf.IServiceOptions | null; - } - - /** Represents a ServiceDescriptorProto. */ - class ServiceDescriptorProto implements IServiceDescriptorProto { - /** - * Constructs a new ServiceDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceDescriptorProto); - - /** ServiceDescriptorProto name. */ - public name: string; - - /** ServiceDescriptorProto method. */ - public method: google.protobuf.IMethodDescriptorProto[]; - - /** ServiceDescriptorProto options. */ - public options?: google.protobuf.IServiceOptions | null; - - /** - * Creates a new ServiceDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IServiceDescriptorProto - ): google.protobuf.ServiceDescriptorProto; - - /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IServiceDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IServiceDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ServiceDescriptorProto; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ServiceDescriptorProto; - - /** - * Verifies a ServiceDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ServiceDescriptorProto; - - /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. - * @param message ServiceDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ServiceDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ServiceDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a MethodDescriptorProto. */ - interface IMethodDescriptorProto { - /** MethodDescriptorProto name */ - name?: string | null; - - /** MethodDescriptorProto inputType */ - inputType?: string | null; - - /** MethodDescriptorProto outputType */ - outputType?: string | null; - - /** MethodDescriptorProto options */ - options?: google.protobuf.IMethodOptions | null; - - /** MethodDescriptorProto clientStreaming */ - clientStreaming?: boolean | null; - - /** MethodDescriptorProto serverStreaming */ - serverStreaming?: boolean | null; - } - - /** Represents a MethodDescriptorProto. */ - class MethodDescriptorProto implements IMethodDescriptorProto { - /** - * Constructs a new MethodDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodDescriptorProto); - - /** MethodDescriptorProto name. */ - public name: string; - - /** MethodDescriptorProto inputType. */ - public inputType: string; - - /** MethodDescriptorProto outputType. */ - public outputType: string; - - /** MethodDescriptorProto options. */ - public options?: google.protobuf.IMethodOptions | null; - - /** MethodDescriptorProto clientStreaming. */ - public clientStreaming: boolean; - - /** MethodDescriptorProto serverStreaming. */ - public serverStreaming: boolean; - - /** - * Creates a new MethodDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IMethodDescriptorProto - ): google.protobuf.MethodDescriptorProto; - - /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMethodDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMethodDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MethodDescriptorProto; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MethodDescriptorProto; - - /** - * Verifies a MethodDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MethodDescriptorProto; - - /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. - * @param message MethodDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MethodDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MethodDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FileOptions. */ - interface IFileOptions { - /** FileOptions javaPackage */ - javaPackage?: string | null; - - /** FileOptions javaOuterClassname */ - javaOuterClassname?: string | null; - - /** FileOptions javaMultipleFiles */ - javaMultipleFiles?: boolean | null; - - /** FileOptions javaGenerateEqualsAndHash */ - javaGenerateEqualsAndHash?: boolean | null; - - /** FileOptions javaStringCheckUtf8 */ - javaStringCheckUtf8?: boolean | null; - - /** FileOptions optimizeFor */ - optimizeFor?: google.protobuf.FileOptions.OptimizeMode | null; - - /** FileOptions goPackage */ - goPackage?: string | null; - - /** FileOptions ccGenericServices */ - ccGenericServices?: boolean | null; - - /** FileOptions javaGenericServices */ - javaGenericServices?: boolean | null; - - /** FileOptions pyGenericServices */ - pyGenericServices?: boolean | null; - - /** FileOptions phpGenericServices */ - phpGenericServices?: boolean | null; - - /** FileOptions deprecated */ - deprecated?: boolean | null; - - /** FileOptions ccEnableArenas */ - ccEnableArenas?: boolean | null; - - /** FileOptions objcClassPrefix */ - objcClassPrefix?: string | null; - - /** FileOptions csharpNamespace */ - csharpNamespace?: string | null; - - /** FileOptions swiftPrefix */ - swiftPrefix?: string | null; - - /** FileOptions phpClassPrefix */ - phpClassPrefix?: string | null; - - /** FileOptions phpNamespace */ - phpNamespace?: string | null; - - /** FileOptions phpMetadataNamespace */ - phpMetadataNamespace?: string | null; - - /** FileOptions rubyPackage */ - rubyPackage?: string | null; - - /** FileOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a FileOptions. */ - class FileOptions implements IFileOptions { - /** - * Constructs a new FileOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileOptions); - - /** FileOptions javaPackage. */ - public javaPackage: string; - - /** FileOptions javaOuterClassname. */ - public javaOuterClassname: string; - - /** FileOptions javaMultipleFiles. */ - public javaMultipleFiles: boolean; - - /** FileOptions javaGenerateEqualsAndHash. */ - public javaGenerateEqualsAndHash: boolean; - - /** FileOptions javaStringCheckUtf8. */ - public javaStringCheckUtf8: boolean; - - /** FileOptions optimizeFor. */ - public optimizeFor: google.protobuf.FileOptions.OptimizeMode; - - /** FileOptions goPackage. */ - public goPackage: string; - - /** FileOptions ccGenericServices. */ - public ccGenericServices: boolean; - - /** FileOptions javaGenericServices. */ - public javaGenericServices: boolean; - - /** FileOptions pyGenericServices. */ - public pyGenericServices: boolean; - - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; - - /** FileOptions deprecated. */ - public deprecated: boolean; - - /** FileOptions ccEnableArenas. */ - public ccEnableArenas: boolean; - - /** FileOptions objcClassPrefix. */ - public objcClassPrefix: string; - - /** FileOptions csharpNamespace. */ - public csharpNamespace: string; - - /** FileOptions swiftPrefix. */ - public swiftPrefix: string; - - /** FileOptions phpClassPrefix. */ - public phpClassPrefix: string; - - /** FileOptions phpNamespace. */ - public phpNamespace: string; - - /** FileOptions phpMetadataNamespace. */ - public phpMetadataNamespace: string; - - /** FileOptions rubyPackage. */ - public rubyPackage: string; - - /** FileOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FileOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FileOptions instance - */ - public static create( - properties?: google.protobuf.IFileOptions - ): google.protobuf.FileOptions; - - /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileOptions; - - /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileOptions; - - /** - * Verifies a FileOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileOptions; - - /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @param message FileOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FileOptions { - /** OptimizeMode enum. */ - enum OptimizeMode { - SPEED = 1, - CODE_SIZE = 2, - LITE_RUNTIME = 3, - } - } - - /** Properties of a MessageOptions. */ - interface IMessageOptions { - /** MessageOptions messageSetWireFormat */ - messageSetWireFormat?: boolean | null; - - /** MessageOptions noStandardDescriptorAccessor */ - noStandardDescriptorAccessor?: boolean | null; - - /** MessageOptions deprecated */ - deprecated?: boolean | null; - - /** MessageOptions mapEntry */ - mapEntry?: boolean | null; - - /** MessageOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a MessageOptions. */ - class MessageOptions implements IMessageOptions { - /** - * Constructs a new MessageOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMessageOptions); - - /** MessageOptions messageSetWireFormat. */ - public messageSetWireFormat: boolean; - - /** MessageOptions noStandardDescriptorAccessor. */ - public noStandardDescriptorAccessor: boolean; - - /** MessageOptions deprecated. */ - public deprecated: boolean; - - /** MessageOptions mapEntry. */ - public mapEntry: boolean; - - /** MessageOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MessageOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MessageOptions instance - */ - public static create( - properties?: google.protobuf.IMessageOptions - ): google.protobuf.MessageOptions; - - /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMessageOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMessageOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MessageOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MessageOptions; - - /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MessageOptions; - - /** - * Verifies a MessageOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MessageOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MessageOptions; - - /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @param message MessageOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MessageOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MessageOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FieldOptions. */ - interface IFieldOptions { - /** FieldOptions ctype */ - ctype?: google.protobuf.FieldOptions.CType | null; - - /** FieldOptions packed */ - packed?: boolean | null; - - /** FieldOptions jstype */ - jstype?: google.protobuf.FieldOptions.JSType | null; - - /** FieldOptions lazy */ - lazy?: boolean | null; - - /** FieldOptions deprecated */ - deprecated?: boolean | null; - - /** FieldOptions weak */ - weak?: boolean | null; - - /** FieldOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a FieldOptions. */ - class FieldOptions implements IFieldOptions { - /** - * Constructs a new FieldOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldOptions); - - /** FieldOptions ctype. */ - public ctype: google.protobuf.FieldOptions.CType; - - /** FieldOptions packed. */ - public packed: boolean; - - /** FieldOptions jstype. */ - public jstype: google.protobuf.FieldOptions.JSType; - - /** FieldOptions lazy. */ - public lazy: boolean; - - /** FieldOptions deprecated. */ - public deprecated: boolean; - - /** FieldOptions weak. */ - public weak: boolean; - - /** FieldOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FieldOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldOptions instance - */ - public static create( - properties?: google.protobuf.IFieldOptions - ): google.protobuf.FieldOptions; - - /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFieldOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFieldOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FieldOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FieldOptions; - - /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FieldOptions; - - /** - * Verifies a FieldOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FieldOptions; - - /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. - * @param message FieldOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FieldOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FieldOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FieldOptions { - /** CType enum. */ - enum CType { - STRING = 0, - CORD = 1, - STRING_PIECE = 2, - } - - /** JSType enum. */ - enum JSType { - JS_NORMAL = 0, - JS_STRING = 1, - JS_NUMBER = 2, - } - } - - /** Properties of an OneofOptions. */ - interface IOneofOptions { - /** OneofOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an OneofOptions. */ - class OneofOptions implements IOneofOptions { - /** - * Constructs a new OneofOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofOptions); - - /** OneofOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new OneofOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofOptions instance - */ - public static create( - properties?: google.protobuf.IOneofOptions - ): google.protobuf.OneofOptions; - - /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IOneofOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IOneofOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an OneofOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.OneofOptions; - - /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.OneofOptions; - - /** - * Verifies an OneofOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.OneofOptions; - - /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. - * @param message OneofOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.OneofOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this OneofOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumOptions. */ - interface IEnumOptions { - /** EnumOptions allowAlias */ - allowAlias?: boolean | null; - - /** EnumOptions deprecated */ - deprecated?: boolean | null; - - /** EnumOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an EnumOptions. */ - class EnumOptions implements IEnumOptions { - /** - * Constructs a new EnumOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumOptions); - - /** EnumOptions allowAlias. */ - public allowAlias: boolean; - - /** EnumOptions deprecated. */ - public deprecated: boolean; - - /** EnumOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumOptions instance - */ - public static create( - properties?: google.protobuf.IEnumOptions - ): google.protobuf.EnumOptions; - - /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumOptions; - - /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumOptions; - - /** - * Verifies an EnumOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumOptions; - - /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @param message EnumOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumValueOptions. */ - interface IEnumValueOptions { - /** EnumValueOptions deprecated */ - deprecated?: boolean | null; - - /** EnumValueOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an EnumValueOptions. */ - class EnumValueOptions implements IEnumValueOptions { - /** - * Constructs a new EnumValueOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueOptions); - - /** EnumValueOptions deprecated. */ - public deprecated: boolean; - - /** EnumValueOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumValueOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueOptions instance - */ - public static create( - properties?: google.protobuf.IEnumValueOptions - ): google.protobuf.EnumValueOptions; - - /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumValueOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumValueOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumValueOptions; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumValueOptions; - - /** - * Verifies an EnumValueOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumValueOptions; - - /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. - * @param message EnumValueOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumValueOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumValueOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ServiceOptions. */ - interface IServiceOptions { - /** ServiceOptions deprecated */ - deprecated?: boolean | null; - - /** ServiceOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a ServiceOptions. */ - class ServiceOptions implements IServiceOptions { - /** - * Constructs a new ServiceOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceOptions); - - /** ServiceOptions deprecated. */ - public deprecated: boolean; - - /** ServiceOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ServiceOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceOptions instance - */ - public static create( - properties?: google.protobuf.IServiceOptions - ): google.protobuf.ServiceOptions; - - /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IServiceOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IServiceOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ServiceOptions; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ServiceOptions; - - /** - * Verifies a ServiceOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ServiceOptions; - - /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. - * @param message ServiceOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ServiceOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ServiceOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a MethodOptions. */ - interface IMethodOptions { - /** MethodOptions deprecated */ - deprecated?: boolean | null; - - /** MethodOptions idempotencyLevel */ - idempotencyLevel?: google.protobuf.MethodOptions.IdempotencyLevel | null; - - /** MethodOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - - /** MethodOptions .google.api.http */ - '.google.api.http'?: google.api.IHttpRule | null; - } - - /** Represents a MethodOptions. */ - class MethodOptions implements IMethodOptions { - /** - * Constructs a new MethodOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodOptions); - - /** MethodOptions deprecated. */ - public deprecated: boolean; - - /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; - - /** MethodOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MethodOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodOptions instance - */ - public static create( - properties?: google.protobuf.IMethodOptions - ): google.protobuf.MethodOptions; - - /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMethodOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMethodOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MethodOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MethodOptions; - - /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MethodOptions; - - /** - * Verifies a MethodOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MethodOptions; - - /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. - * @param message MethodOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MethodOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MethodOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace MethodOptions { - /** IdempotencyLevel enum. */ - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0, - NO_SIDE_EFFECTS = 1, - IDEMPOTENT = 2, - } - } - - /** Properties of an UninterpretedOption. */ - interface IUninterpretedOption { - /** UninterpretedOption name */ - name?: google.protobuf.UninterpretedOption.INamePart[] | null; - - /** UninterpretedOption identifierValue */ - identifierValue?: string | null; - - /** UninterpretedOption positiveIntValue */ - positiveIntValue?: number | Long | null; - - /** UninterpretedOption negativeIntValue */ - negativeIntValue?: number | Long | null; - - /** UninterpretedOption doubleValue */ - doubleValue?: number | null; - - /** UninterpretedOption stringValue */ - stringValue?: Uint8Array | null; - - /** UninterpretedOption aggregateValue */ - aggregateValue?: string | null; - } - - /** Represents an UninterpretedOption. */ - class UninterpretedOption implements IUninterpretedOption { - /** - * Constructs a new UninterpretedOption. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUninterpretedOption); - - /** UninterpretedOption name. */ - public name: google.protobuf.UninterpretedOption.INamePart[]; - - /** UninterpretedOption identifierValue. */ - public identifierValue: string; - - /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: number | Long; - - /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: number | Long; - - /** UninterpretedOption doubleValue. */ - public doubleValue: number; - - /** UninterpretedOption stringValue. */ - public stringValue: Uint8Array; - - /** UninterpretedOption aggregateValue. */ - public aggregateValue: string; - - /** - * Creates a new UninterpretedOption instance using the specified properties. - * @param [properties] Properties to set - * @returns UninterpretedOption instance - */ - public static create( - properties?: google.protobuf.IUninterpretedOption - ): google.protobuf.UninterpretedOption; - - /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IUninterpretedOption, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IUninterpretedOption, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UninterpretedOption; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UninterpretedOption; - - /** - * Verifies an UninterpretedOption message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UninterpretedOption - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UninterpretedOption; - - /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. - * @param message UninterpretedOption - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UninterpretedOption, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this UninterpretedOption to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace UninterpretedOption { - /** Properties of a NamePart. */ - interface INamePart { - /** NamePart namePart */ - namePart: string; - - /** NamePart isExtension */ - isExtension: boolean; - } - - /** Represents a NamePart. */ - class NamePart implements INamePart { - /** - * Constructs a new NamePart. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - - /** NamePart namePart. */ - public namePart: string; - - /** NamePart isExtension. */ - public isExtension: boolean; - - /** - * Creates a new NamePart instance using the specified properties. - * @param [properties] Properties to set - * @returns NamePart instance - */ - public static create( - properties?: google.protobuf.UninterpretedOption.INamePart - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.UninterpretedOption.INamePart, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.UninterpretedOption.INamePart, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a NamePart message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Verifies a NamePart message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NamePart - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UninterpretedOption.NamePart; - - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @param message NamePart - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UninterpretedOption.NamePart, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this NamePart to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a SourceCodeInfo. */ - interface ISourceCodeInfo { - /** SourceCodeInfo location */ - location?: google.protobuf.SourceCodeInfo.ILocation[] | null; - } - - /** Represents a SourceCodeInfo. */ - class SourceCodeInfo implements ISourceCodeInfo { - /** - * Constructs a new SourceCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ISourceCodeInfo); - - /** SourceCodeInfo location. */ - public location: google.protobuf.SourceCodeInfo.ILocation[]; - - /** - * Creates a new SourceCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns SourceCodeInfo instance - */ - public static create( - properties?: google.protobuf.ISourceCodeInfo - ): google.protobuf.SourceCodeInfo; - - /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.ISourceCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.ISourceCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.SourceCodeInfo; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.SourceCodeInfo; - - /** - * Verifies a SourceCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SourceCodeInfo - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.SourceCodeInfo; - - /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. - * @param message SourceCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.SourceCodeInfo, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this SourceCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace SourceCodeInfo { - /** Properties of a Location. */ - interface ILocation { - /** Location path */ - path?: number[] | null; - - /** Location span */ - span?: number[] | null; - - /** Location leadingComments */ - leadingComments?: string | null; - - /** Location trailingComments */ - trailingComments?: string | null; - - /** Location leadingDetachedComments */ - leadingDetachedComments?: string[] | null; - } - - /** Represents a Location. */ - class Location implements ILocation { - /** - * Constructs a new Location. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); - - /** Location path. */ - public path: number[]; - - /** Location span. */ - public span: number[]; - - /** Location leadingComments. */ - public leadingComments: string; - - /** Location trailingComments. */ - public trailingComments: string; - - /** Location leadingDetachedComments. */ - public leadingDetachedComments: string[]; - - /** - * Creates a new Location instance using the specified properties. - * @param [properties] Properties to set - * @returns Location instance - */ - public static create( - properties?: google.protobuf.SourceCodeInfo.ILocation - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.SourceCodeInfo.ILocation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.SourceCodeInfo.ILocation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Location message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Verifies a Location message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Location - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.SourceCodeInfo.Location; - - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @param message Location - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.SourceCodeInfo.Location, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Location to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a GeneratedCodeInfo. */ - interface IGeneratedCodeInfo { - /** GeneratedCodeInfo annotation */ - annotation?: google.protobuf.GeneratedCodeInfo.IAnnotation[] | null; - } - - /** Represents a GeneratedCodeInfo. */ - class GeneratedCodeInfo implements IGeneratedCodeInfo { - /** - * Constructs a new GeneratedCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IGeneratedCodeInfo); - - /** GeneratedCodeInfo annotation. */ - public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; - - /** - * Creates a new GeneratedCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns GeneratedCodeInfo instance - */ - public static create( - properties?: google.protobuf.IGeneratedCodeInfo - ): google.protobuf.GeneratedCodeInfo; - - /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IGeneratedCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IGeneratedCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.GeneratedCodeInfo; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.GeneratedCodeInfo; - - /** - * Verifies a GeneratedCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GeneratedCodeInfo - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.GeneratedCodeInfo; - - /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. - * @param message GeneratedCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.GeneratedCodeInfo, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this GeneratedCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace GeneratedCodeInfo { - /** Properties of an Annotation. */ - interface IAnnotation { - /** Annotation path */ - path?: number[] | null; - - /** Annotation sourceFile */ - sourceFile?: string | null; - - /** Annotation begin */ - begin?: number | null; - - /** Annotation end */ - end?: number | null; - } - - /** Represents an Annotation. */ - class Annotation implements IAnnotation { - /** - * Constructs a new Annotation. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - - /** Annotation path. */ - public path: number[]; - - /** Annotation sourceFile. */ - public sourceFile: string; - - /** Annotation begin. */ - public begin: number; - - /** Annotation end. */ - public end: number; - - /** - * Creates a new Annotation instance using the specified properties. - * @param [properties] Properties to set - * @returns Annotation instance - */ - public static create( - properties?: google.protobuf.GeneratedCodeInfo.IAnnotation - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.GeneratedCodeInfo.IAnnotation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.GeneratedCodeInfo.IAnnotation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Annotation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Verifies an Annotation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Annotation - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @param message Annotation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.GeneratedCodeInfo.Annotation, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Annotation to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a Struct. */ - interface IStruct { - /** Struct fields */ - fields?: {[k: string]: google.protobuf.IValue} | null; - } - - /** Represents a Struct. */ - class Struct implements IStruct { - /** - * Constructs a new Struct. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStruct); - - /** Struct fields. */ - public fields: {[k: string]: google.protobuf.IValue}; - - /** - * Creates a new Struct instance using the specified properties. - * @param [properties] Properties to set - * @returns Struct instance - */ - public static create( - properties?: google.protobuf.IStruct - ): google.protobuf.Struct; - - /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IStruct, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IStruct, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Struct message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Struct; - - /** - * Decodes a Struct message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Struct; - - /** - * Verifies a Struct message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Struct - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Struct; - - /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. - * @param message Struct - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Struct, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Struct to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Value. */ - interface IValue { - /** Value nullValue */ - nullValue?: google.protobuf.NullValue | null; - - /** Value numberValue */ - numberValue?: number | null; - - /** Value stringValue */ - stringValue?: string | null; - - /** Value boolValue */ - boolValue?: boolean | null; - - /** Value structValue */ - structValue?: google.protobuf.IStruct | null; - - /** Value listValue */ - listValue?: google.protobuf.IListValue | null; - } - - /** Represents a Value. */ - class Value implements IValue { - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value numberValue. */ - public numberValue: number; - - /** Value stringValue. */ - public stringValue: string; - - /** Value boolValue. */ - public boolValue: boolean; - - /** Value structValue. */ - public structValue?: google.protobuf.IStruct | null; - - /** Value listValue. */ - public listValue?: google.protobuf.IListValue | null; - - /** Value kind. */ - public kind?: - | 'nullValue' - | 'numberValue' - | 'stringValue' - | 'boolValue' - | 'structValue' - | 'listValue'; - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create( - properties?: google.protobuf.IValue - ): google.protobuf.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** NullValue enum. */ - enum NullValue { - NULL_VALUE = 0, - } - - /** Properties of a ListValue. */ - interface IListValue { - /** ListValue values */ - values?: google.protobuf.IValue[] | null; - } - - /** Represents a ListValue. */ - class ListValue implements IListValue { - /** - * Constructs a new ListValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IListValue); - - /** ListValue values. */ - public values: google.protobuf.IValue[]; - - /** - * Creates a new ListValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ListValue instance - */ - public static create( - properties?: google.protobuf.IListValue - ): google.protobuf.ListValue; - - /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IListValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IListValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ListValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ListValue; - - /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ListValue; - - /** - * Verifies a ListValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ListValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ListValue; - - /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. - * @param message ListValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ListValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ListValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Timestamp. */ - interface ITimestamp { - /** Timestamp seconds */ - seconds?: number | Long | null; - - /** Timestamp nanos */ - nanos?: number | null; - } - - /** Represents a Timestamp. */ - class Timestamp implements ITimestamp { - /** - * Constructs a new Timestamp. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ITimestamp); - - /** Timestamp seconds. */ - public seconds: number | Long; - - /** Timestamp nanos. */ - public nanos: number; - - /** - * Creates a new Timestamp instance using the specified properties. - * @param [properties] Properties to set - * @returns Timestamp instance - */ - public static create( - properties?: google.protobuf.ITimestamp - ): google.protobuf.Timestamp; - - /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.ITimestamp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.ITimestamp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Timestamp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Timestamp; - - /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Timestamp; - - /** - * Verifies a Timestamp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Timestamp - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Timestamp; - - /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. - * @param message Timestamp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Timestamp, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Timestamp to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a DoubleValue. */ - interface IDoubleValue { - /** DoubleValue value */ - value?: number | null; - } - - /** Represents a DoubleValue. */ - class DoubleValue implements IDoubleValue { - /** - * Constructs a new DoubleValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDoubleValue); - - /** DoubleValue value. */ - public value: number; - - /** - * Creates a new DoubleValue instance using the specified properties. - * @param [properties] Properties to set - * @returns DoubleValue instance - */ - public static create( - properties?: google.protobuf.IDoubleValue - ): google.protobuf.DoubleValue; - - /** - * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IDoubleValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IDoubleValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a DoubleValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DoubleValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DoubleValue; - - /** - * Decodes a DoubleValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DoubleValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DoubleValue; - - /** - * Verifies a DoubleValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DoubleValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DoubleValue; - - /** - * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. - * @param message DoubleValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DoubleValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this DoubleValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FloatValue. */ - interface IFloatValue { - /** FloatValue value */ - value?: number | null; - } - - /** Represents a FloatValue. */ - class FloatValue implements IFloatValue { - /** - * Constructs a new FloatValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFloatValue); - - /** FloatValue value. */ - public value: number; - - /** - * Creates a new FloatValue instance using the specified properties. - * @param [properties] Properties to set - * @returns FloatValue instance - */ - public static create( - properties?: google.protobuf.IFloatValue - ): google.protobuf.FloatValue; - - /** - * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFloatValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFloatValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FloatValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FloatValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FloatValue; - - /** - * Decodes a FloatValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FloatValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FloatValue; - - /** - * Verifies a FloatValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FloatValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FloatValue; - - /** - * Creates a plain object from a FloatValue message. Also converts values to other types if specified. - * @param message FloatValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FloatValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FloatValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an Int64Value. */ - interface IInt64Value { - /** Int64Value value */ - value?: number | Long | null; - } - - /** Represents an Int64Value. */ - class Int64Value implements IInt64Value { - /** - * Constructs a new Int64Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IInt64Value); - - /** Int64Value value. */ - public value: number | Long; - - /** - * Creates a new Int64Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Int64Value instance - */ - public static create( - properties?: google.protobuf.IInt64Value - ): google.protobuf.Int64Value; - - /** - * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IInt64Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IInt64Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Int64Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Int64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Int64Value; - - /** - * Decodes an Int64Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Int64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Int64Value; - - /** - * Verifies an Int64Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Int64Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Int64Value; - - /** - * Creates a plain object from an Int64Value message. Also converts values to other types if specified. - * @param message Int64Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Int64Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Int64Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a UInt64Value. */ - interface IUInt64Value { - /** UInt64Value value */ - value?: number | Long | null; - } - - /** Represents a UInt64Value. */ - class UInt64Value implements IUInt64Value { - /** - * Constructs a new UInt64Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUInt64Value); - - /** UInt64Value value. */ - public value: number | Long; - - /** - * Creates a new UInt64Value instance using the specified properties. - * @param [properties] Properties to set - * @returns UInt64Value instance - */ - public static create( - properties?: google.protobuf.IUInt64Value - ): google.protobuf.UInt64Value; - - /** - * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IUInt64Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IUInt64Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a UInt64Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UInt64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UInt64Value; - - /** - * Decodes a UInt64Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UInt64Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UInt64Value; - - /** - * Verifies a UInt64Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UInt64Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UInt64Value; - - /** - * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. - * @param message UInt64Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UInt64Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this UInt64Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an Int32Value. */ - interface IInt32Value { - /** Int32Value value */ - value?: number | null; - } - - /** Represents an Int32Value. */ - class Int32Value implements IInt32Value { - /** - * Constructs a new Int32Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IInt32Value); - - /** Int32Value value. */ - public value: number; - - /** - * Creates a new Int32Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Int32Value instance - */ - public static create( - properties?: google.protobuf.IInt32Value - ): google.protobuf.Int32Value; - - /** - * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IInt32Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IInt32Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Int32Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Int32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Int32Value; - - /** - * Decodes an Int32Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Int32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Int32Value; - - /** - * Verifies an Int32Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Int32Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Int32Value; - - /** - * Creates a plain object from an Int32Value message. Also converts values to other types if specified. - * @param message Int32Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Int32Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Int32Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a UInt32Value. */ - interface IUInt32Value { - /** UInt32Value value */ - value?: number | null; - } - - /** Represents a UInt32Value. */ - class UInt32Value implements IUInt32Value { - /** - * Constructs a new UInt32Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUInt32Value); - - /** UInt32Value value. */ - public value: number; - - /** - * Creates a new UInt32Value instance using the specified properties. - * @param [properties] Properties to set - * @returns UInt32Value instance - */ - public static create( - properties?: google.protobuf.IUInt32Value - ): google.protobuf.UInt32Value; - - /** - * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IUInt32Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IUInt32Value, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a UInt32Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UInt32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UInt32Value; - - /** - * Decodes a UInt32Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UInt32Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UInt32Value; - - /** - * Verifies a UInt32Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UInt32Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UInt32Value; - - /** - * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. - * @param message UInt32Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UInt32Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this UInt32Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a BoolValue. */ - interface IBoolValue { - /** BoolValue value */ - value?: boolean | null; - } - - /** Represents a BoolValue. */ - class BoolValue implements IBoolValue { - /** - * Constructs a new BoolValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IBoolValue); - - /** BoolValue value. */ - public value: boolean; - - /** - * Creates a new BoolValue instance using the specified properties. - * @param [properties] Properties to set - * @returns BoolValue instance - */ - public static create( - properties?: google.protobuf.IBoolValue - ): google.protobuf.BoolValue; - - /** - * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IBoolValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IBoolValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a BoolValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BoolValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.BoolValue; - - /** - * Decodes a BoolValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BoolValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.BoolValue; - - /** - * Verifies a BoolValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BoolValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.BoolValue; - - /** - * Creates a plain object from a BoolValue message. Also converts values to other types if specified. - * @param message BoolValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.BoolValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this BoolValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a StringValue. */ - interface IStringValue { - /** StringValue value */ - value?: string | null; - } - - /** Represents a StringValue. */ - class StringValue implements IStringValue { - /** - * Constructs a new StringValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStringValue); - - /** StringValue value. */ - public value: string; - - /** - * Creates a new StringValue instance using the specified properties. - * @param [properties] Properties to set - * @returns StringValue instance - */ - public static create( - properties?: google.protobuf.IStringValue - ): google.protobuf.StringValue; - - /** - * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IStringValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IStringValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a StringValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns StringValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.StringValue; - - /** - * Decodes a StringValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns StringValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.StringValue; - - /** - * Verifies a StringValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a StringValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns StringValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.StringValue; - - /** - * Creates a plain object from a StringValue message. Also converts values to other types if specified. - * @param message StringValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.StringValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this StringValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a BytesValue. */ - interface IBytesValue { - /** BytesValue value */ - value?: Uint8Array | null; - } - - /** Represents a BytesValue. */ - class BytesValue implements IBytesValue { - /** - * Constructs a new BytesValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IBytesValue); - - /** BytesValue value. */ - public value: Uint8Array; - - /** - * Creates a new BytesValue instance using the specified properties. - * @param [properties] Properties to set - * @returns BytesValue instance - */ - public static create( - properties?: google.protobuf.IBytesValue - ): google.protobuf.BytesValue; - - /** - * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IBytesValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IBytesValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a BytesValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BytesValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.BytesValue; - - /** - * Decodes a BytesValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BytesValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.BytesValue; - - /** - * Verifies a BytesValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BytesValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.BytesValue; - - /** - * Creates a plain object from a BytesValue message. Also converts values to other types if specified. - * @param message BytesValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.BytesValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this BytesValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Namespace type. */ - namespace type { - /** Properties of a LatLng. */ - interface ILatLng { - /** LatLng latitude */ - latitude?: number | null; - - /** LatLng longitude */ - longitude?: number | null; - } - - /** Represents a LatLng. */ - class LatLng implements ILatLng { - /** - * Constructs a new LatLng. - * @param [properties] Properties to set - */ - constructor(properties?: google.type.ILatLng); - - /** LatLng latitude. */ - public latitude: number; - - /** LatLng longitude. */ - public longitude: number; - - /** - * Creates a new LatLng instance using the specified properties. - * @param [properties] Properties to set - * @returns LatLng instance - */ - public static create( - properties?: google.type.ILatLng - ): google.type.LatLng; - - /** - * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.type.ILatLng, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.type.ILatLng, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a LatLng message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.type.LatLng; - - /** - * Decodes a LatLng message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.type.LatLng; - - /** - * Verifies a LatLng message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a LatLng message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LatLng - */ - public static fromObject(object: {[k: string]: any}): google.type.LatLng; - - /** - * Creates a plain object from a LatLng message. Also converts values to other types if specified. - * @param message LatLng - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.type.LatLng, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this LatLng to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } -} diff --git a/handwritten/nodejs-datastore/proto/entity.d.ts b/handwritten/nodejs-datastore/proto/entity.d.ts deleted file mode 100644 index 9fa85e861e5..00000000000 --- a/handwritten/nodejs-datastore/proto/entity.d.ts +++ /dev/null @@ -1,5270 +0,0 @@ -import * as $protobuf from 'protobufjs'; -/** Namespace google. */ -export namespace google { - /** Namespace datastore. */ - namespace datastore { - /** Namespace v1. */ - namespace v1 { - /** Properties of a PartitionId. */ - interface IPartitionId { - /** PartitionId projectId */ - projectId?: string | null; - - /** PartitionId namespaceId */ - namespaceId?: string | null; - } - - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { - /** - * Constructs a new PartitionId. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IPartitionId); - - /** PartitionId projectId. */ - public projectId: string; - - /** PartitionId namespaceId. */ - public namespaceId: string; - - /** - * Creates a new PartitionId instance using the specified properties. - * @param [properties] Properties to set - * @returns PartitionId instance - */ - public static create( - properties?: google.datastore.v1.IPartitionId - ): google.datastore.v1.PartitionId; - - /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IPartitionId, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IPartitionId, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PartitionId message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.PartitionId; - - /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.PartitionId; - - /** - * Verifies a PartitionId message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PartitionId - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.PartitionId; - - /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.PartitionId, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PartitionId to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Key. */ - interface IKey { - /** Key partitionId */ - partitionId?: google.datastore.v1.IPartitionId | null; - - /** Key path */ - path?: google.datastore.v1.Key.IPathElement[] | null; - } - - /** Represents a Key. */ - class Key implements IKey { - /** - * Constructs a new Key. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IKey); - - /** Key partitionId. */ - public partitionId?: google.datastore.v1.IPartitionId | null; - - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; - - /** - * Creates a new Key instance using the specified properties. - * @param [properties] Properties to set - * @returns Key instance - */ - public static create( - properties?: google.datastore.v1.IKey - ): google.datastore.v1.Key; - - /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IKey, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IKey, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Key message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Key; - - /** - * Decodes a Key message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Key - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Key; - - /** - * Verifies a Key message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Key - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Key; - - /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Key, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Key to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace Key { - /** Properties of a PathElement. */ - interface IPathElement { - /** PathElement kind */ - kind?: string | null; - - /** PathElement id */ - id?: number | Long | null; - - /** PathElement name */ - name?: string | null; - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id: number | Long; - - /** PathElement name. */ - public name: string; - - /** PathElement idType. */ - public idType?: 'id' | 'name'; - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create( - properties?: google.datastore.v1.Key.IPathElement - ): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.Key.IPathElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.Key.IPathElement, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Key.PathElement, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an ArrayValue. */ - interface IArrayValue { - /** ArrayValue values */ - values?: google.datastore.v1.IValue[] | null; - } - - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { - /** - * Constructs a new ArrayValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IArrayValue); - - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; - - /** - * Creates a new ArrayValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ArrayValue instance - */ - public static create( - properties?: google.datastore.v1.IArrayValue - ): google.datastore.v1.ArrayValue; - - /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IArrayValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IArrayValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ArrayValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.ArrayValue; - - /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.ArrayValue; - - /** - * Verifies an ArrayValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ArrayValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.ArrayValue; - - /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.ArrayValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ArrayValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Value. */ - interface IValue { - /** Value nullValue */ - nullValue?: google.protobuf.NullValue | null; - - /** Value booleanValue */ - booleanValue?: boolean | null; - - /** Value integerValue */ - integerValue?: number | Long | null; - - /** Value doubleValue */ - doubleValue?: number | null; - - /** Value timestampValue */ - timestampValue?: google.protobuf.ITimestamp | null; - - /** Value keyValue */ - keyValue?: google.datastore.v1.IKey | null; - - /** Value stringValue */ - stringValue?: string | null; - - /** Value blobValue */ - blobValue?: Uint8Array | null; - - /** Value geoPointValue */ - geoPointValue?: google.type.ILatLng | null; - - /** Value entityValue */ - entityValue?: google.datastore.v1.IEntity | null; - - /** Value arrayValue */ - arrayValue?: google.datastore.v1.IArrayValue | null; - - /** Value meaning */ - meaning?: number | null; - - /** Value excludeFromIndexes */ - excludeFromIndexes?: boolean | null; - } - - /** Represents a Value. */ - class Value implements IValue { - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value booleanValue. */ - public booleanValue: boolean; - - /** Value integerValue. */ - public integerValue: number | Long; - - /** Value doubleValue. */ - public doubleValue: number; - - /** Value timestampValue. */ - public timestampValue?: google.protobuf.ITimestamp | null; - - /** Value keyValue. */ - public keyValue?: google.datastore.v1.IKey | null; - - /** Value stringValue. */ - public stringValue: string; - - /** Value blobValue. */ - public blobValue: Uint8Array; - - /** Value geoPointValue. */ - public geoPointValue?: google.type.ILatLng | null; - - /** Value entityValue. */ - public entityValue?: google.datastore.v1.IEntity | null; - - /** Value arrayValue. */ - public arrayValue?: google.datastore.v1.IArrayValue | null; - - /** Value meaning. */ - public meaning: number; - - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; - - /** Value valueType. */ - public valueType?: - | 'nullValue' - | 'booleanValue' - | 'integerValue' - | 'doubleValue' - | 'timestampValue' - | 'keyValue' - | 'stringValue' - | 'blobValue' - | 'geoPointValue' - | 'entityValue' - | 'arrayValue'; - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create( - properties?: google.datastore.v1.IValue - ): google.datastore.v1.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an Entity. */ - interface IEntity { - /** Entity key */ - key?: google.datastore.v1.IKey | null; - - /** Entity properties */ - properties?: {[k: string]: google.datastore.v1.IValue} | null; - } - - /** Represents an Entity. */ - class Entity implements IEntity { - /** - * Constructs a new Entity. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IEntity); - - /** Entity key. */ - public key?: google.datastore.v1.IKey | null; - - /** Entity properties. */ - public properties: {[k: string]: google.datastore.v1.IValue}; - - /** - * Creates a new Entity instance using the specified properties. - * @param [properties] Properties to set - * @returns Entity instance - */ - public static create( - properties?: google.datastore.v1.IEntity - ): google.datastore.v1.Entity; - - /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.datastore.v1.IEntity, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.datastore.v1.IEntity, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Entity message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.datastore.v1.Entity; - - /** - * Decodes an Entity message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.datastore.v1.Entity; - - /** - * Verifies an Entity message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Entity - */ - public static fromObject(object: { - [k: string]: any; - }): google.datastore.v1.Entity; - - /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.datastore.v1.Entity, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Entity to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - } - - /** Namespace api. */ - namespace api { - /** Properties of a Http. */ - interface IHttp { - /** Http rules */ - rules?: google.api.IHttpRule[] | null; - - /** Http fullyDecodeReservedExpansion */ - fullyDecodeReservedExpansion?: boolean | null; - } - - /** Represents a Http. */ - class Http implements IHttp { - /** - * Constructs a new Http. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttp); - - /** Http rules. */ - public rules: google.api.IHttpRule[]; - - /** Http fullyDecodeReservedExpansion. */ - public fullyDecodeReservedExpansion: boolean; - - /** - * Creates a new Http instance using the specified properties. - * @param [properties] Properties to set - * @returns Http instance - */ - public static create(properties?: google.api.IHttp): google.api.Http; - - /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.IHttp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.IHttp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Http message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.Http; - - /** - * Decodes a Http message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.Http; - - /** - * Verifies a Http message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Http - */ - public static fromObject(object: {[k: string]: any}): google.api.Http; - - /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @param message Http - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.Http, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Http to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a HttpRule. */ - interface IHttpRule { - /** HttpRule selector */ - selector?: string | null; - - /** HttpRule get */ - get?: string | null; - - /** HttpRule put */ - put?: string | null; - - /** HttpRule post */ - post?: string | null; - - /** HttpRule delete */ - delete?: string | null; - - /** HttpRule patch */ - patch?: string | null; - - /** HttpRule custom */ - custom?: google.api.ICustomHttpPattern | null; - - /** HttpRule body */ - body?: string | null; - - /** HttpRule responseBody */ - responseBody?: string | null; - - /** HttpRule additionalBindings */ - additionalBindings?: google.api.IHttpRule[] | null; - } - - /** Represents a HttpRule. */ - class HttpRule implements IHttpRule { - /** - * Constructs a new HttpRule. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.IHttpRule); - - /** HttpRule selector. */ - public selector: string; - - /** HttpRule get. */ - public get: string; - - /** HttpRule put. */ - public put: string; - - /** HttpRule post. */ - public post: string; - - /** HttpRule delete. */ - public delete: string; - - /** HttpRule patch. */ - public patch: string; - - /** HttpRule custom. */ - public custom?: google.api.ICustomHttpPattern | null; - - /** HttpRule body. */ - public body: string; - - /** HttpRule responseBody. */ - public responseBody: string; - - /** HttpRule additionalBindings. */ - public additionalBindings: google.api.IHttpRule[]; - - /** HttpRule pattern. */ - public pattern?: 'get' | 'put' | 'post' | 'delete' | 'patch' | 'custom'; - - /** - * Creates a new HttpRule instance using the specified properties. - * @param [properties] Properties to set - * @returns HttpRule instance - */ - public static create( - properties?: google.api.IHttpRule - ): google.api.HttpRule; - - /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.IHttpRule, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.IHttpRule, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a HttpRule message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.HttpRule; - - /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.HttpRule; - - /** - * Verifies a HttpRule message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns HttpRule - */ - public static fromObject(object: {[k: string]: any}): google.api.HttpRule; - - /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @param message HttpRule - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.HttpRule, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this HttpRule to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a CustomHttpPattern. */ - interface ICustomHttpPattern { - /** CustomHttpPattern kind */ - kind?: string | null; - - /** CustomHttpPattern path */ - path?: string | null; - } - - /** Represents a CustomHttpPattern. */ - class CustomHttpPattern implements ICustomHttpPattern { - /** - * Constructs a new CustomHttpPattern. - * @param [properties] Properties to set - */ - constructor(properties?: google.api.ICustomHttpPattern); - - /** CustomHttpPattern kind. */ - public kind: string; - - /** CustomHttpPattern path. */ - public path: string; - - /** - * Creates a new CustomHttpPattern instance using the specified properties. - * @param [properties] Properties to set - * @returns CustomHttpPattern instance - */ - public static create( - properties?: google.api.ICustomHttpPattern - ): google.api.CustomHttpPattern; - - /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.api.ICustomHttpPattern, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.api.ICustomHttpPattern, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.api.CustomHttpPattern; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.api.CustomHttpPattern; - - /** - * Verifies a CustomHttpPattern message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CustomHttpPattern - */ - public static fromObject(object: { - [k: string]: any; - }): google.api.CustomHttpPattern; - - /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @param message CustomHttpPattern - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.api.CustomHttpPattern, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this CustomHttpPattern to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Namespace protobuf. */ - namespace protobuf { - /** Properties of a FileDescriptorSet. */ - interface IFileDescriptorSet { - /** FileDescriptorSet file */ - file?: google.protobuf.IFileDescriptorProto[] | null; - } - - /** Represents a FileDescriptorSet. */ - class FileDescriptorSet implements IFileDescriptorSet { - /** - * Constructs a new FileDescriptorSet. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorSet); - - /** FileDescriptorSet file. */ - public file: google.protobuf.IFileDescriptorProto[]; - - /** - * Creates a new FileDescriptorSet instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorSet instance - */ - public static create( - properties?: google.protobuf.IFileDescriptorSet - ): google.protobuf.FileDescriptorSet; - - /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileDescriptorSet, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileDescriptorSet, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileDescriptorSet; - - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileDescriptorSet; - - /** - * Verifies a FileDescriptorSet message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorSet - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileDescriptorSet; - - /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @param message FileDescriptorSet - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileDescriptorSet, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileDescriptorSet to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FileDescriptorProto. */ - interface IFileDescriptorProto { - /** FileDescriptorProto name */ - name?: string | null; - - /** FileDescriptorProto package */ - package?: string | null; - - /** FileDescriptorProto dependency */ - dependency?: string[] | null; - - /** FileDescriptorProto publicDependency */ - publicDependency?: number[] | null; - - /** FileDescriptorProto weakDependency */ - weakDependency?: number[] | null; - - /** FileDescriptorProto messageType */ - messageType?: google.protobuf.IDescriptorProto[] | null; - - /** FileDescriptorProto enumType */ - enumType?: google.protobuf.IEnumDescriptorProto[] | null; - - /** FileDescriptorProto service */ - service?: google.protobuf.IServiceDescriptorProto[] | null; - - /** FileDescriptorProto extension */ - extension?: google.protobuf.IFieldDescriptorProto[] | null; - - /** FileDescriptorProto options */ - options?: google.protobuf.IFileOptions | null; - - /** FileDescriptorProto sourceCodeInfo */ - sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - - /** FileDescriptorProto syntax */ - syntax?: string | null; - } - - /** Represents a FileDescriptorProto. */ - class FileDescriptorProto implements IFileDescriptorProto { - /** - * Constructs a new FileDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileDescriptorProto); - - /** FileDescriptorProto name. */ - public name: string; - - /** FileDescriptorProto package. */ - public package: string; - - /** FileDescriptorProto dependency. */ - public dependency: string[]; - - /** FileDescriptorProto publicDependency. */ - public publicDependency: number[]; - - /** FileDescriptorProto weakDependency. */ - public weakDependency: number[]; - - /** FileDescriptorProto messageType. */ - public messageType: google.protobuf.IDescriptorProto[]; - - /** FileDescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** FileDescriptorProto service. */ - public service: google.protobuf.IServiceDescriptorProto[]; - - /** FileDescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** FileDescriptorProto options. */ - public options?: google.protobuf.IFileOptions | null; - - /** FileDescriptorProto sourceCodeInfo. */ - public sourceCodeInfo?: google.protobuf.ISourceCodeInfo | null; - - /** FileDescriptorProto syntax. */ - public syntax: string; - - /** - * Creates a new FileDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FileDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IFileDescriptorProto - ): google.protobuf.FileDescriptorProto; - - /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileDescriptorProto; - - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileDescriptorProto; - - /** - * Verifies a FileDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileDescriptorProto; - - /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @param message FileDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a DescriptorProto. */ - interface IDescriptorProto { - /** DescriptorProto name */ - name?: string | null; - - /** DescriptorProto field */ - field?: google.protobuf.IFieldDescriptorProto[] | null; - - /** DescriptorProto extension */ - extension?: google.protobuf.IFieldDescriptorProto[] | null; - - /** DescriptorProto nestedType */ - nestedType?: google.protobuf.IDescriptorProto[] | null; - - /** DescriptorProto enumType */ - enumType?: google.protobuf.IEnumDescriptorProto[] | null; - - /** DescriptorProto extensionRange */ - extensionRange?: google.protobuf.DescriptorProto.IExtensionRange[] | null; - - /** DescriptorProto oneofDecl */ - oneofDecl?: google.protobuf.IOneofDescriptorProto[] | null; - - /** DescriptorProto options */ - options?: google.protobuf.IMessageOptions | null; - - /** DescriptorProto reservedRange */ - reservedRange?: google.protobuf.DescriptorProto.IReservedRange[] | null; - - /** DescriptorProto reservedName */ - reservedName?: string[] | null; - } - - /** Represents a DescriptorProto. */ - class DescriptorProto implements IDescriptorProto { - /** - * Constructs a new DescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IDescriptorProto); - - /** DescriptorProto name. */ - public name: string; - - /** DescriptorProto field. */ - public field: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto nestedType. */ - public nestedType: google.protobuf.IDescriptorProto[]; - - /** DescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** DescriptorProto extensionRange. */ - public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; - - /** DescriptorProto oneofDecl. */ - public oneofDecl: google.protobuf.IOneofDescriptorProto[]; - - /** DescriptorProto options. */ - public options?: google.protobuf.IMessageOptions | null; - - /** DescriptorProto reservedRange. */ - public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; - - /** DescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new DescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns DescriptorProto instance - */ - public static create( - properties?: google.protobuf.IDescriptorProto - ): google.protobuf.DescriptorProto; - - /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto; - - /** - * Verifies a DescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns DescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto; - - /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @param message DescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this DescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace DescriptorProto { - /** Properties of an ExtensionRange. */ - interface IExtensionRange { - /** ExtensionRange start */ - start?: number | null; - - /** ExtensionRange end */ - end?: number | null; - - /** ExtensionRange options */ - options?: google.protobuf.IExtensionRangeOptions | null; - } - - /** Represents an ExtensionRange. */ - class ExtensionRange implements IExtensionRange { - /** - * Constructs a new ExtensionRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.DescriptorProto.IExtensionRange - ); - - /** ExtensionRange start. */ - public start: number; - - /** ExtensionRange end. */ - public end: number; - - /** ExtensionRange options. */ - public options?: google.protobuf.IExtensionRangeOptions | null; - - /** - * Creates a new ExtensionRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRange instance - */ - public static create( - properties?: google.protobuf.DescriptorProto.IExtensionRange - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.DescriptorProto.IExtensionRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.DescriptorProto.IExtensionRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Verifies an ExtensionRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto.ExtensionRange; - - /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. - * @param message ExtensionRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto.ExtensionRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ExtensionRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ReservedRange. */ - interface IReservedRange { - /** ReservedRange start */ - start?: number | null; - - /** ReservedRange end */ - end?: number | null; - } - - /** Represents a ReservedRange. */ - class ReservedRange implements IReservedRange { - /** - * Constructs a new ReservedRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.DescriptorProto.IReservedRange - ); - - /** ReservedRange start. */ - public start: number; - - /** ReservedRange end. */ - public end: number; - - /** - * Creates a new ReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ReservedRange instance - */ - public static create( - properties?: google.protobuf.DescriptorProto.IReservedRange - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.DescriptorProto.IReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.DescriptorProto.IReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Verifies a ReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReservedRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.DescriptorProto.ReservedRange; - - /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. - * @param message ReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.DescriptorProto.ReservedRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an ExtensionRangeOptions. */ - interface IExtensionRangeOptions { - /** ExtensionRangeOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an ExtensionRangeOptions. */ - class ExtensionRangeOptions implements IExtensionRangeOptions { - /** - * Constructs a new ExtensionRangeOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IExtensionRangeOptions); - - /** ExtensionRangeOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ExtensionRangeOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRangeOptions instance - */ - public static create( - properties?: google.protobuf.IExtensionRangeOptions - ): google.protobuf.ExtensionRangeOptions; - - /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IExtensionRangeOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IExtensionRangeOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ExtensionRangeOptions; - - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ExtensionRangeOptions; - - /** - * Verifies an ExtensionRangeOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRangeOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ExtensionRangeOptions; - - /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @param message ExtensionRangeOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ExtensionRangeOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ExtensionRangeOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FieldDescriptorProto. */ - interface IFieldDescriptorProto { - /** FieldDescriptorProto name */ - name?: string | null; - - /** FieldDescriptorProto number */ - number?: number | null; - - /** FieldDescriptorProto label */ - label?: google.protobuf.FieldDescriptorProto.Label | null; - - /** FieldDescriptorProto type */ - type?: google.protobuf.FieldDescriptorProto.Type | null; - - /** FieldDescriptorProto typeName */ - typeName?: string | null; - - /** FieldDescriptorProto extendee */ - extendee?: string | null; - - /** FieldDescriptorProto defaultValue */ - defaultValue?: string | null; - - /** FieldDescriptorProto oneofIndex */ - oneofIndex?: number | null; - - /** FieldDescriptorProto jsonName */ - jsonName?: string | null; - - /** FieldDescriptorProto options */ - options?: google.protobuf.IFieldOptions | null; - } - - /** Represents a FieldDescriptorProto. */ - class FieldDescriptorProto implements IFieldDescriptorProto { - /** - * Constructs a new FieldDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldDescriptorProto); - - /** FieldDescriptorProto name. */ - public name: string; - - /** FieldDescriptorProto number. */ - public number: number; - - /** FieldDescriptorProto label. */ - public label: google.protobuf.FieldDescriptorProto.Label; - - /** FieldDescriptorProto type. */ - public type: google.protobuf.FieldDescriptorProto.Type; - - /** FieldDescriptorProto typeName. */ - public typeName: string; - - /** FieldDescriptorProto extendee. */ - public extendee: string; - - /** FieldDescriptorProto defaultValue. */ - public defaultValue: string; - - /** FieldDescriptorProto oneofIndex. */ - public oneofIndex: number; - - /** FieldDescriptorProto jsonName. */ - public jsonName: string; - - /** FieldDescriptorProto options. */ - public options?: google.protobuf.IFieldOptions | null; - - /** - * Creates a new FieldDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IFieldDescriptorProto - ): google.protobuf.FieldDescriptorProto; - - /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFieldDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFieldDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FieldDescriptorProto; - - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FieldDescriptorProto; - - /** - * Verifies a FieldDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FieldDescriptorProto; - - /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @param message FieldDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FieldDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FieldDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FieldDescriptorProto { - /** Type enum. */ - enum Type { - TYPE_DOUBLE = 1, - TYPE_FLOAT = 2, - TYPE_INT64 = 3, - TYPE_UINT64 = 4, - TYPE_INT32 = 5, - TYPE_FIXED64 = 6, - TYPE_FIXED32 = 7, - TYPE_BOOL = 8, - TYPE_STRING = 9, - TYPE_GROUP = 10, - TYPE_MESSAGE = 11, - TYPE_BYTES = 12, - TYPE_UINT32 = 13, - TYPE_ENUM = 14, - TYPE_SFIXED32 = 15, - TYPE_SFIXED64 = 16, - TYPE_SINT32 = 17, - TYPE_SINT64 = 18, - } - - /** Label enum. */ - enum Label { - LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3, - } - } - - /** Properties of an OneofDescriptorProto. */ - interface IOneofDescriptorProto { - /** OneofDescriptorProto name */ - name?: string | null; - - /** OneofDescriptorProto options */ - options?: google.protobuf.IOneofOptions | null; - } - - /** Represents an OneofDescriptorProto. */ - class OneofDescriptorProto implements IOneofDescriptorProto { - /** - * Constructs a new OneofDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofDescriptorProto); - - /** OneofDescriptorProto name. */ - public name: string; - - /** OneofDescriptorProto options. */ - public options?: google.protobuf.IOneofOptions | null; - - /** - * Creates a new OneofDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IOneofDescriptorProto - ): google.protobuf.OneofDescriptorProto; - - /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IOneofDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IOneofDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.OneofDescriptorProto; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.OneofDescriptorProto; - - /** - * Verifies an OneofDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.OneofDescriptorProto; - - /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @param message OneofDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.OneofDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this OneofDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumDescriptorProto. */ - interface IEnumDescriptorProto { - /** EnumDescriptorProto name */ - name?: string | null; - - /** EnumDescriptorProto value */ - value?: google.protobuf.IEnumValueDescriptorProto[] | null; - - /** EnumDescriptorProto options */ - options?: google.protobuf.IEnumOptions | null; - - /** EnumDescriptorProto reservedRange */ - reservedRange?: - | google.protobuf.EnumDescriptorProto.IEnumReservedRange[] - | null; - - /** EnumDescriptorProto reservedName */ - reservedName?: string[] | null; - } - - /** Represents an EnumDescriptorProto. */ - class EnumDescriptorProto implements IEnumDescriptorProto { - /** - * Constructs a new EnumDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumDescriptorProto); - - /** EnumDescriptorProto name. */ - public name: string; - - /** EnumDescriptorProto value. */ - public value: google.protobuf.IEnumValueDescriptorProto[]; - - /** EnumDescriptorProto options. */ - public options?: google.protobuf.IEnumOptions | null; - - /** EnumDescriptorProto reservedRange. */ - public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; - - /** EnumDescriptorProto reservedName. */ - public reservedName: string[]; - - /** - * Creates a new EnumDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IEnumDescriptorProto - ): google.protobuf.EnumDescriptorProto; - - /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumDescriptorProto; - - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumDescriptorProto; - - /** - * Verifies an EnumDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumDescriptorProto; - - /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. - * @param message EnumDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace EnumDescriptorProto { - /** Properties of an EnumReservedRange. */ - interface IEnumReservedRange { - /** EnumReservedRange start */ - start?: number | null; - - /** EnumReservedRange end */ - end?: number | null; - } - - /** Represents an EnumReservedRange. */ - class EnumReservedRange implements IEnumReservedRange { - /** - * Constructs a new EnumReservedRange. - * @param [properties] Properties to set - */ - constructor( - properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange - ); - - /** EnumReservedRange start. */ - public start: number; - - /** EnumReservedRange end. */ - public end: number; - - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumReservedRange instance - */ - public static create( - properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Verifies an EnumReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumReservedRange - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumDescriptorProto.EnumReservedRange; - - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @param message EnumReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumDescriptorProto.EnumReservedRange, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of an EnumValueDescriptorProto. */ - interface IEnumValueDescriptorProto { - /** EnumValueDescriptorProto name */ - name?: string | null; - - /** EnumValueDescriptorProto number */ - number?: number | null; - - /** EnumValueDescriptorProto options */ - options?: google.protobuf.IEnumValueOptions | null; - } - - /** Represents an EnumValueDescriptorProto. */ - class EnumValueDescriptorProto implements IEnumValueDescriptorProto { - /** - * Constructs a new EnumValueDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - - /** EnumValueDescriptorProto name. */ - public name: string; - - /** EnumValueDescriptorProto number. */ - public number: number; - - /** EnumValueDescriptorProto options. */ - public options?: google.protobuf.IEnumValueOptions | null; - - /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IEnumValueDescriptorProto - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumValueDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumValueDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumValueDescriptorProto; - - /** - * Verifies an EnumValueDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumValueDescriptorProto; - - /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. - * @param message EnumValueDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumValueDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumValueDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ServiceDescriptorProto. */ - interface IServiceDescriptorProto { - /** ServiceDescriptorProto name */ - name?: string | null; - - /** ServiceDescriptorProto method */ - method?: google.protobuf.IMethodDescriptorProto[] | null; - - /** ServiceDescriptorProto options */ - options?: google.protobuf.IServiceOptions | null; - } - - /** Represents a ServiceDescriptorProto. */ - class ServiceDescriptorProto implements IServiceDescriptorProto { - /** - * Constructs a new ServiceDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceDescriptorProto); - - /** ServiceDescriptorProto name. */ - public name: string; - - /** ServiceDescriptorProto method. */ - public method: google.protobuf.IMethodDescriptorProto[]; - - /** ServiceDescriptorProto options. */ - public options?: google.protobuf.IServiceOptions | null; - - /** - * Creates a new ServiceDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IServiceDescriptorProto - ): google.protobuf.ServiceDescriptorProto; - - /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IServiceDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IServiceDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ServiceDescriptorProto; - - /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ServiceDescriptorProto; - - /** - * Verifies a ServiceDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ServiceDescriptorProto; - - /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. - * @param message ServiceDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ServiceDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ServiceDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a MethodDescriptorProto. */ - interface IMethodDescriptorProto { - /** MethodDescriptorProto name */ - name?: string | null; - - /** MethodDescriptorProto inputType */ - inputType?: string | null; - - /** MethodDescriptorProto outputType */ - outputType?: string | null; - - /** MethodDescriptorProto options */ - options?: google.protobuf.IMethodOptions | null; - - /** MethodDescriptorProto clientStreaming */ - clientStreaming?: boolean | null; - - /** MethodDescriptorProto serverStreaming */ - serverStreaming?: boolean | null; - } - - /** Represents a MethodDescriptorProto. */ - class MethodDescriptorProto implements IMethodDescriptorProto { - /** - * Constructs a new MethodDescriptorProto. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodDescriptorProto); - - /** MethodDescriptorProto name. */ - public name: string; - - /** MethodDescriptorProto inputType. */ - public inputType: string; - - /** MethodDescriptorProto outputType. */ - public outputType: string; - - /** MethodDescriptorProto options. */ - public options?: google.protobuf.IMethodOptions | null; - - /** MethodDescriptorProto clientStreaming. */ - public clientStreaming: boolean; - - /** MethodDescriptorProto serverStreaming. */ - public serverStreaming: boolean; - - /** - * Creates a new MethodDescriptorProto instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodDescriptorProto instance - */ - public static create( - properties?: google.protobuf.IMethodDescriptorProto - ): google.protobuf.MethodDescriptorProto; - - /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMethodDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMethodDescriptorProto, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MethodDescriptorProto; - - /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MethodDescriptorProto; - - /** - * Verifies a MethodDescriptorProto message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodDescriptorProto - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MethodDescriptorProto; - - /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. - * @param message MethodDescriptorProto - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MethodDescriptorProto, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MethodDescriptorProto to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FileOptions. */ - interface IFileOptions { - /** FileOptions javaPackage */ - javaPackage?: string | null; - - /** FileOptions javaOuterClassname */ - javaOuterClassname?: string | null; - - /** FileOptions javaMultipleFiles */ - javaMultipleFiles?: boolean | null; - - /** FileOptions javaGenerateEqualsAndHash */ - javaGenerateEqualsAndHash?: boolean | null; - - /** FileOptions javaStringCheckUtf8 */ - javaStringCheckUtf8?: boolean | null; - - /** FileOptions optimizeFor */ - optimizeFor?: google.protobuf.FileOptions.OptimizeMode | null; - - /** FileOptions goPackage */ - goPackage?: string | null; - - /** FileOptions ccGenericServices */ - ccGenericServices?: boolean | null; - - /** FileOptions javaGenericServices */ - javaGenericServices?: boolean | null; - - /** FileOptions pyGenericServices */ - pyGenericServices?: boolean | null; - - /** FileOptions phpGenericServices */ - phpGenericServices?: boolean | null; - - /** FileOptions deprecated */ - deprecated?: boolean | null; - - /** FileOptions ccEnableArenas */ - ccEnableArenas?: boolean | null; - - /** FileOptions objcClassPrefix */ - objcClassPrefix?: string | null; - - /** FileOptions csharpNamespace */ - csharpNamespace?: string | null; - - /** FileOptions swiftPrefix */ - swiftPrefix?: string | null; - - /** FileOptions phpClassPrefix */ - phpClassPrefix?: string | null; - - /** FileOptions phpNamespace */ - phpNamespace?: string | null; - - /** FileOptions phpMetadataNamespace */ - phpMetadataNamespace?: string | null; - - /** FileOptions rubyPackage */ - rubyPackage?: string | null; - - /** FileOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a FileOptions. */ - class FileOptions implements IFileOptions { - /** - * Constructs a new FileOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileOptions); - - /** FileOptions javaPackage. */ - public javaPackage: string; - - /** FileOptions javaOuterClassname. */ - public javaOuterClassname: string; - - /** FileOptions javaMultipleFiles. */ - public javaMultipleFiles: boolean; - - /** FileOptions javaGenerateEqualsAndHash. */ - public javaGenerateEqualsAndHash: boolean; - - /** FileOptions javaStringCheckUtf8. */ - public javaStringCheckUtf8: boolean; - - /** FileOptions optimizeFor. */ - public optimizeFor: google.protobuf.FileOptions.OptimizeMode; - - /** FileOptions goPackage. */ - public goPackage: string; - - /** FileOptions ccGenericServices. */ - public ccGenericServices: boolean; - - /** FileOptions javaGenericServices. */ - public javaGenericServices: boolean; - - /** FileOptions pyGenericServices. */ - public pyGenericServices: boolean; - - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; - - /** FileOptions deprecated. */ - public deprecated: boolean; - - /** FileOptions ccEnableArenas. */ - public ccEnableArenas: boolean; - - /** FileOptions objcClassPrefix. */ - public objcClassPrefix: string; - - /** FileOptions csharpNamespace. */ - public csharpNamespace: string; - - /** FileOptions swiftPrefix. */ - public swiftPrefix: string; - - /** FileOptions phpClassPrefix. */ - public phpClassPrefix: string; - - /** FileOptions phpNamespace. */ - public phpNamespace: string; - - /** FileOptions phpMetadataNamespace. */ - public phpMetadataNamespace: string; - - /** FileOptions rubyPackage. */ - public rubyPackage: string; - - /** FileOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FileOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FileOptions instance - */ - public static create( - properties?: google.protobuf.IFileOptions - ): google.protobuf.FileOptions; - - /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFileOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFileOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FileOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FileOptions; - - /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FileOptions; - - /** - * Verifies a FileOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FileOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FileOptions; - - /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @param message FileOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FileOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FileOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FileOptions { - /** OptimizeMode enum. */ - enum OptimizeMode { - SPEED = 1, - CODE_SIZE = 2, - LITE_RUNTIME = 3, - } - } - - /** Properties of a MessageOptions. */ - interface IMessageOptions { - /** MessageOptions messageSetWireFormat */ - messageSetWireFormat?: boolean | null; - - /** MessageOptions noStandardDescriptorAccessor */ - noStandardDescriptorAccessor?: boolean | null; - - /** MessageOptions deprecated */ - deprecated?: boolean | null; - - /** MessageOptions mapEntry */ - mapEntry?: boolean | null; - - /** MessageOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a MessageOptions. */ - class MessageOptions implements IMessageOptions { - /** - * Constructs a new MessageOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMessageOptions); - - /** MessageOptions messageSetWireFormat. */ - public messageSetWireFormat: boolean; - - /** MessageOptions noStandardDescriptorAccessor. */ - public noStandardDescriptorAccessor: boolean; - - /** MessageOptions deprecated. */ - public deprecated: boolean; - - /** MessageOptions mapEntry. */ - public mapEntry: boolean; - - /** MessageOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MessageOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MessageOptions instance - */ - public static create( - properties?: google.protobuf.IMessageOptions - ): google.protobuf.MessageOptions; - - /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMessageOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMessageOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MessageOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MessageOptions; - - /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MessageOptions; - - /** - * Verifies a MessageOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MessageOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MessageOptions; - - /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @param message MessageOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MessageOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MessageOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a FieldOptions. */ - interface IFieldOptions { - /** FieldOptions ctype */ - ctype?: google.protobuf.FieldOptions.CType | null; - - /** FieldOptions packed */ - packed?: boolean | null; - - /** FieldOptions jstype */ - jstype?: google.protobuf.FieldOptions.JSType | null; - - /** FieldOptions lazy */ - lazy?: boolean | null; - - /** FieldOptions deprecated */ - deprecated?: boolean | null; - - /** FieldOptions weak */ - weak?: boolean | null; - - /** FieldOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a FieldOptions. */ - class FieldOptions implements IFieldOptions { - /** - * Constructs a new FieldOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldOptions); - - /** FieldOptions ctype. */ - public ctype: google.protobuf.FieldOptions.CType; - - /** FieldOptions packed. */ - public packed: boolean; - - /** FieldOptions jstype. */ - public jstype: google.protobuf.FieldOptions.JSType; - - /** FieldOptions lazy. */ - public lazy: boolean; - - /** FieldOptions deprecated. */ - public deprecated: boolean; - - /** FieldOptions weak. */ - public weak: boolean; - - /** FieldOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new FieldOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns FieldOptions instance - */ - public static create( - properties?: google.protobuf.IFieldOptions - ): google.protobuf.FieldOptions; - - /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IFieldOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IFieldOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a FieldOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.FieldOptions; - - /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.FieldOptions; - - /** - * Verifies a FieldOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns FieldOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.FieldOptions; - - /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. - * @param message FieldOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.FieldOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this FieldOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace FieldOptions { - /** CType enum. */ - enum CType { - STRING = 0, - CORD = 1, - STRING_PIECE = 2, - } - - /** JSType enum. */ - enum JSType { - JS_NORMAL = 0, - JS_STRING = 1, - JS_NUMBER = 2, - } - } - - /** Properties of an OneofOptions. */ - interface IOneofOptions { - /** OneofOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an OneofOptions. */ - class OneofOptions implements IOneofOptions { - /** - * Constructs a new OneofOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IOneofOptions); - - /** OneofOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new OneofOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns OneofOptions instance - */ - public static create( - properties?: google.protobuf.IOneofOptions - ): google.protobuf.OneofOptions; - - /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IOneofOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IOneofOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an OneofOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.OneofOptions; - - /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns OneofOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.OneofOptions; - - /** - * Verifies an OneofOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns OneofOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.OneofOptions; - - /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. - * @param message OneofOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.OneofOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this OneofOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumOptions. */ - interface IEnumOptions { - /** EnumOptions allowAlias */ - allowAlias?: boolean | null; - - /** EnumOptions deprecated */ - deprecated?: boolean | null; - - /** EnumOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an EnumOptions. */ - class EnumOptions implements IEnumOptions { - /** - * Constructs a new EnumOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumOptions); - - /** EnumOptions allowAlias. */ - public allowAlias: boolean; - - /** EnumOptions deprecated. */ - public deprecated: boolean; - - /** EnumOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumOptions instance - */ - public static create( - properties?: google.protobuf.IEnumOptions - ): google.protobuf.EnumOptions; - - /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumOptions; - - /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumOptions; - - /** - * Verifies an EnumOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumOptions; - - /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @param message EnumOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of an EnumValueOptions. */ - interface IEnumValueOptions { - /** EnumValueOptions deprecated */ - deprecated?: boolean | null; - - /** EnumValueOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents an EnumValueOptions. */ - class EnumValueOptions implements IEnumValueOptions { - /** - * Constructs a new EnumValueOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IEnumValueOptions); - - /** EnumValueOptions deprecated. */ - public deprecated: boolean; - - /** EnumValueOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new EnumValueOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumValueOptions instance - */ - public static create( - properties?: google.protobuf.IEnumValueOptions - ): google.protobuf.EnumValueOptions; - - /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IEnumValueOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IEnumValueOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.EnumValueOptions; - - /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumValueOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.EnumValueOptions; - - /** - * Verifies an EnumValueOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumValueOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.EnumValueOptions; - - /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. - * @param message EnumValueOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.EnumValueOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this EnumValueOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a ServiceOptions. */ - interface IServiceOptions { - /** ServiceOptions deprecated */ - deprecated?: boolean | null; - - /** ServiceOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - } - - /** Represents a ServiceOptions. */ - class ServiceOptions implements IServiceOptions { - /** - * Constructs a new ServiceOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IServiceOptions); - - /** ServiceOptions deprecated. */ - public deprecated: boolean; - - /** ServiceOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new ServiceOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns ServiceOptions instance - */ - public static create( - properties?: google.protobuf.IServiceOptions - ): google.protobuf.ServiceOptions; - - /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IServiceOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IServiceOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ServiceOptions; - - /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ServiceOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ServiceOptions; - - /** - * Verifies a ServiceOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ServiceOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ServiceOptions; - - /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. - * @param message ServiceOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ServiceOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ServiceOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a MethodOptions. */ - interface IMethodOptions { - /** MethodOptions deprecated */ - deprecated?: boolean | null; - - /** MethodOptions idempotencyLevel */ - idempotencyLevel?: google.protobuf.MethodOptions.IdempotencyLevel | null; - - /** MethodOptions uninterpretedOption */ - uninterpretedOption?: google.protobuf.IUninterpretedOption[] | null; - - /** MethodOptions .google.api.http */ - '.google.api.http'?: google.api.IHttpRule | null; - } - - /** Represents a MethodOptions. */ - class MethodOptions implements IMethodOptions { - /** - * Constructs a new MethodOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMethodOptions); - - /** MethodOptions deprecated. */ - public deprecated: boolean; - - /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel; - - /** MethodOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - - /** - * Creates a new MethodOptions instance using the specified properties. - * @param [properties] Properties to set - * @returns MethodOptions instance - */ - public static create( - properties?: google.protobuf.IMethodOptions - ): google.protobuf.MethodOptions; - - /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IMethodOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IMethodOptions, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a MethodOptions message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.MethodOptions; - - /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MethodOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.MethodOptions; - - /** - * Verifies a MethodOptions message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MethodOptions - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.MethodOptions; - - /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. - * @param message MethodOptions - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.MethodOptions, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this MethodOptions to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace MethodOptions { - /** IdempotencyLevel enum. */ - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0, - NO_SIDE_EFFECTS = 1, - IDEMPOTENT = 2, - } - } - - /** Properties of an UninterpretedOption. */ - interface IUninterpretedOption { - /** UninterpretedOption name */ - name?: google.protobuf.UninterpretedOption.INamePart[] | null; - - /** UninterpretedOption identifierValue */ - identifierValue?: string | null; - - /** UninterpretedOption positiveIntValue */ - positiveIntValue?: number | Long | null; - - /** UninterpretedOption negativeIntValue */ - negativeIntValue?: number | Long | null; - - /** UninterpretedOption doubleValue */ - doubleValue?: number | null; - - /** UninterpretedOption stringValue */ - stringValue?: Uint8Array | null; - - /** UninterpretedOption aggregateValue */ - aggregateValue?: string | null; - } - - /** Represents an UninterpretedOption. */ - class UninterpretedOption implements IUninterpretedOption { - /** - * Constructs a new UninterpretedOption. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IUninterpretedOption); - - /** UninterpretedOption name. */ - public name: google.protobuf.UninterpretedOption.INamePart[]; - - /** UninterpretedOption identifierValue. */ - public identifierValue: string; - - /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: number | Long; - - /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: number | Long; - - /** UninterpretedOption doubleValue. */ - public doubleValue: number; - - /** UninterpretedOption stringValue. */ - public stringValue: Uint8Array; - - /** UninterpretedOption aggregateValue. */ - public aggregateValue: string; - - /** - * Creates a new UninterpretedOption instance using the specified properties. - * @param [properties] Properties to set - * @returns UninterpretedOption instance - */ - public static create( - properties?: google.protobuf.IUninterpretedOption - ): google.protobuf.UninterpretedOption; - - /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IUninterpretedOption, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IUninterpretedOption, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UninterpretedOption; - - /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns UninterpretedOption - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UninterpretedOption; - - /** - * Verifies an UninterpretedOption message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns UninterpretedOption - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UninterpretedOption; - - /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. - * @param message UninterpretedOption - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UninterpretedOption, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this UninterpretedOption to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace UninterpretedOption { - /** Properties of a NamePart. */ - interface INamePart { - /** NamePart namePart */ - namePart: string; - - /** NamePart isExtension */ - isExtension: boolean; - } - - /** Represents a NamePart. */ - class NamePart implements INamePart { - /** - * Constructs a new NamePart. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - - /** NamePart namePart. */ - public namePart: string; - - /** NamePart isExtension. */ - public isExtension: boolean; - - /** - * Creates a new NamePart instance using the specified properties. - * @param [properties] Properties to set - * @returns NamePart instance - */ - public static create( - properties?: google.protobuf.UninterpretedOption.INamePart - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.UninterpretedOption.INamePart, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.UninterpretedOption.INamePart, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a NamePart message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.UninterpretedOption.NamePart; - - /** - * Verifies a NamePart message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NamePart - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.UninterpretedOption.NamePart; - - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @param message NamePart - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.UninterpretedOption.NamePart, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this NamePart to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a SourceCodeInfo. */ - interface ISourceCodeInfo { - /** SourceCodeInfo location */ - location?: google.protobuf.SourceCodeInfo.ILocation[] | null; - } - - /** Represents a SourceCodeInfo. */ - class SourceCodeInfo implements ISourceCodeInfo { - /** - * Constructs a new SourceCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ISourceCodeInfo); - - /** SourceCodeInfo location. */ - public location: google.protobuf.SourceCodeInfo.ILocation[]; - - /** - * Creates a new SourceCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns SourceCodeInfo instance - */ - public static create( - properties?: google.protobuf.ISourceCodeInfo - ): google.protobuf.SourceCodeInfo; - - /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.ISourceCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.ISourceCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.SourceCodeInfo; - - /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SourceCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.SourceCodeInfo; - - /** - * Verifies a SourceCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SourceCodeInfo - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.SourceCodeInfo; - - /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. - * @param message SourceCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.SourceCodeInfo, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this SourceCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace SourceCodeInfo { - /** Properties of a Location. */ - interface ILocation { - /** Location path */ - path?: number[] | null; - - /** Location span */ - span?: number[] | null; - - /** Location leadingComments */ - leadingComments?: string | null; - - /** Location trailingComments */ - trailingComments?: string | null; - - /** Location leadingDetachedComments */ - leadingDetachedComments?: string[] | null; - } - - /** Represents a Location. */ - class Location implements ILocation { - /** - * Constructs a new Location. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); - - /** Location path. */ - public path: number[]; - - /** Location span. */ - public span: number[]; - - /** Location leadingComments. */ - public leadingComments: string; - - /** Location trailingComments. */ - public trailingComments: string; - - /** Location leadingDetachedComments. */ - public leadingDetachedComments: string[]; - - /** - * Creates a new Location instance using the specified properties. - * @param [properties] Properties to set - * @returns Location instance - */ - public static create( - properties?: google.protobuf.SourceCodeInfo.ILocation - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.SourceCodeInfo.ILocation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.SourceCodeInfo.ILocation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Location message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.SourceCodeInfo.Location; - - /** - * Verifies a Location message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Location - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.SourceCodeInfo.Location; - - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @param message Location - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.SourceCodeInfo.Location, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Location to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a GeneratedCodeInfo. */ - interface IGeneratedCodeInfo { - /** GeneratedCodeInfo annotation */ - annotation?: google.protobuf.GeneratedCodeInfo.IAnnotation[] | null; - } - - /** Represents a GeneratedCodeInfo. */ - class GeneratedCodeInfo implements IGeneratedCodeInfo { - /** - * Constructs a new GeneratedCodeInfo. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IGeneratedCodeInfo); - - /** GeneratedCodeInfo annotation. */ - public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; - - /** - * Creates a new GeneratedCodeInfo instance using the specified properties. - * @param [properties] Properties to set - * @returns GeneratedCodeInfo instance - */ - public static create( - properties?: google.protobuf.IGeneratedCodeInfo - ): google.protobuf.GeneratedCodeInfo; - - /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IGeneratedCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IGeneratedCodeInfo, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.GeneratedCodeInfo; - - /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns GeneratedCodeInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.GeneratedCodeInfo; - - /** - * Verifies a GeneratedCodeInfo message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GeneratedCodeInfo - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.GeneratedCodeInfo; - - /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. - * @param message GeneratedCodeInfo - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.GeneratedCodeInfo, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this GeneratedCodeInfo to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - namespace GeneratedCodeInfo { - /** Properties of an Annotation. */ - interface IAnnotation { - /** Annotation path */ - path?: number[] | null; - - /** Annotation sourceFile */ - sourceFile?: string | null; - - /** Annotation begin */ - begin?: number | null; - - /** Annotation end */ - end?: number | null; - } - - /** Represents an Annotation. */ - class Annotation implements IAnnotation { - /** - * Constructs a new Annotation. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - - /** Annotation path. */ - public path: number[]; - - /** Annotation sourceFile. */ - public sourceFile: string; - - /** Annotation begin. */ - public begin: number; - - /** Annotation end. */ - public end: number; - - /** - * Creates a new Annotation instance using the specified properties. - * @param [properties] Properties to set - * @returns Annotation instance - */ - public static create( - properties?: google.protobuf.GeneratedCodeInfo.IAnnotation - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.GeneratedCodeInfo.IAnnotation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.GeneratedCodeInfo.IAnnotation, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes an Annotation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Verifies an Annotation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Annotation - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.GeneratedCodeInfo.Annotation; - - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @param message Annotation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.GeneratedCodeInfo.Annotation, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Annotation to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Properties of a Struct. */ - interface IStruct { - /** Struct fields */ - fields?: {[k: string]: google.protobuf.IValue} | null; - } - - /** Represents a Struct. */ - class Struct implements IStruct { - /** - * Constructs a new Struct. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IStruct); - - /** Struct fields. */ - public fields: {[k: string]: google.protobuf.IValue}; - - /** - * Creates a new Struct instance using the specified properties. - * @param [properties] Properties to set - * @returns Struct instance - */ - public static create( - properties?: google.protobuf.IStruct - ): google.protobuf.Struct; - - /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IStruct, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IStruct, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Struct message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Struct; - - /** - * Decodes a Struct message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Struct - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Struct; - - /** - * Verifies a Struct message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Struct - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Struct; - - /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. - * @param message Struct - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Struct, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Struct to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Value. */ - interface IValue { - /** Value nullValue */ - nullValue?: google.protobuf.NullValue | null; - - /** Value numberValue */ - numberValue?: number | null; - - /** Value stringValue */ - stringValue?: string | null; - - /** Value boolValue */ - boolValue?: boolean | null; - - /** Value structValue */ - structValue?: google.protobuf.IStruct | null; - - /** Value listValue */ - listValue?: google.protobuf.IListValue | null; - } - - /** Represents a Value. */ - class Value implements IValue { - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IValue); - - /** Value nullValue. */ - public nullValue: google.protobuf.NullValue; - - /** Value numberValue. */ - public numberValue: number; - - /** Value stringValue. */ - public stringValue: string; - - /** Value boolValue. */ - public boolValue: boolean; - - /** Value structValue. */ - public structValue?: google.protobuf.IStruct | null; - - /** Value listValue. */ - public listValue?: google.protobuf.IListValue | null; - - /** Value kind. */ - public kind?: - | 'nullValue' - | 'numberValue' - | 'stringValue' - | 'boolValue' - | 'structValue' - | 'listValue'; - - /** - * Creates a new Value instance using the specified properties. - * @param [properties] Properties to set - * @returns Value instance - */ - public static create( - properties?: google.protobuf.IValue - ): google.protobuf.Value; - - /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Value message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Value; - - /** - * Decodes a Value message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Value - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Value; - - /** - * Verifies a Value message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Value - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Value; - - /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Value, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Value to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** NullValue enum. */ - enum NullValue { - NULL_VALUE = 0, - } - - /** Properties of a ListValue. */ - interface IListValue { - /** ListValue values */ - values?: google.protobuf.IValue[] | null; - } - - /** Represents a ListValue. */ - class ListValue implements IListValue { - /** - * Constructs a new ListValue. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IListValue); - - /** ListValue values. */ - public values: google.protobuf.IValue[]; - - /** - * Creates a new ListValue instance using the specified properties. - * @param [properties] Properties to set - * @returns ListValue instance - */ - public static create( - properties?: google.protobuf.IListValue - ): google.protobuf.ListValue; - - /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.IListValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.IListValue, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a ListValue message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.ListValue; - - /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ListValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.ListValue; - - /** - * Verifies a ListValue message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ListValue - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.ListValue; - - /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. - * @param message ListValue - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.ListValue, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this ListValue to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - - /** Properties of a Timestamp. */ - interface ITimestamp { - /** Timestamp seconds */ - seconds?: number | Long | null; - - /** Timestamp nanos */ - nanos?: number | null; - } - - /** Represents a Timestamp. */ - class Timestamp implements ITimestamp { - /** - * Constructs a new Timestamp. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.ITimestamp); - - /** Timestamp seconds. */ - public seconds: number | Long; - - /** Timestamp nanos. */ - public nanos: number; - - /** - * Creates a new Timestamp instance using the specified properties. - * @param [properties] Properties to set - * @returns Timestamp instance - */ - public static create( - properties?: google.protobuf.ITimestamp - ): google.protobuf.Timestamp; - - /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.protobuf.ITimestamp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.protobuf.ITimestamp, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Timestamp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.protobuf.Timestamp; - - /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.protobuf.Timestamp; - - /** - * Verifies a Timestamp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Timestamp - */ - public static fromObject(object: { - [k: string]: any; - }): google.protobuf.Timestamp; - - /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. - * @param message Timestamp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.protobuf.Timestamp, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this Timestamp to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } - - /** Namespace type. */ - namespace type { - /** Properties of a LatLng. */ - interface ILatLng { - /** LatLng latitude */ - latitude?: number | null; - - /** LatLng longitude */ - longitude?: number | null; - } - - /** Represents a LatLng. */ - class LatLng implements ILatLng { - /** - * Constructs a new LatLng. - * @param [properties] Properties to set - */ - constructor(properties?: google.type.ILatLng); - - /** LatLng latitude. */ - public latitude: number; - - /** LatLng longitude. */ - public longitude: number; - - /** - * Creates a new LatLng instance using the specified properties. - * @param [properties] Properties to set - * @returns LatLng instance - */ - public static create( - properties?: google.type.ILatLng - ): google.type.LatLng; - - /** - * Encodes the specified LatLng message. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: google.type.ILatLng, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified LatLng message, length delimited. Does not implicitly {@link google.type.LatLng.verify|verify} messages. - * @param message LatLng message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: google.type.ILatLng, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a LatLng message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): google.type.LatLng; - - /** - * Decodes a LatLng message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LatLng - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): google.type.LatLng; - - /** - * Verifies a LatLng message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: {[k: string]: any}): string | null; - - /** - * Creates a LatLng message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LatLng - */ - public static fromObject(object: {[k: string]: any}): google.type.LatLng; - - /** - * Creates a plain object from a LatLng message. Also converts values to other types if specified. - * @param message LatLng - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: google.type.LatLng, - options?: $protobuf.IConversionOptions - ): {[k: string]: any}; - - /** - * Converts this LatLng to JSON. - * @returns JSON object - */ - public toJSON(): {[k: string]: any}; - } - } -} diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 099d620bc64..e77c2a799b3 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -765,10 +765,7 @@ class Query extends TestHelper { const datastore = this.datastore; // [START datastore_keys_only_query] - const query = datastore - .createQuery() - .select('__key__') - .limit(1); + const query = datastore.createQuery().select('__key__').limit(1); // [END datastore_keys_only_query] return this.datastore.runQuery(query); diff --git a/handwritten/nodejs-datastore/samples/error.js b/handwritten/nodejs-datastore/samples/error.js index bc6b8150eb9..96445dbb67f 100644 --- a/handwritten/nodejs-datastore/samples/error.js +++ b/handwritten/nodejs-datastore/samples/error.js @@ -1,50 +1,50 @@ -// Copyright 2019 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -// sample-metadata -// title: error sample -// description: sample show how to handle and process error -// usage: node error.js - -const {Datastore} = require('@google-cloud/datastore'); - -// [START error] -function main() { - // Creates a client - const datastore = new Datastore(); - - const query = datastore.createQuery(['Company']).start('badrequest'); - - async function runQuery() { - try { - const [result] = await datastore.runQuery(query); - // etc., etc. - return result; - } catch (error) { - // do something with error. - console.log(error.code); // 3 - //Forward the error to caller - throw error; - } - } - - runQuery().catch(err => { - console.log(err.message); // "Error parsing protocol message" - }); - // [END error] -} - -main(...process.argv.slice(2)); +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata +// title: error sample +// description: sample show how to handle and process error +// usage: node error.js + +const {Datastore} = require('@google-cloud/datastore'); + +// [START error] +function main() { + // Creates a client + const datastore = new Datastore(); + + const query = datastore.createQuery(['Company']).start('badrequest'); + + async function runQuery() { + try { + const [result] = await datastore.runQuery(query); + // etc., etc. + return result; + } catch (error) { + // do something with error. + console.log(error.code); // 3 + //Forward the error to caller + throw error; + } + } + + runQuery().catch(err => { + console.log(err.message); // "Error parsing protocol message" + }); + // [END error] +} + +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/test/error.test.js b/handwritten/nodejs-datastore/samples/test/error.test.js index ff1ef09710e..7aa2f3f77eb 100644 --- a/handwritten/nodejs-datastore/samples/test/error.test.js +++ b/handwritten/nodejs-datastore/samples/test/error.test.js @@ -1,32 +1,32 @@ -// Copyright 2019 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -const assert = require('assert'); -const {describe, it} = require('mocha'); -const {execSync} = require('child_process'); -const exec = cmd => - execSync(cmd, { - encoding: 'utf8', - }); - -describe('error', () => { - it('should have an error', done => { - const errorCode = 3; - const output = exec('node error.js'); - assert.strictEqual(parseInt(output[0]), errorCode); - done(); - }); -}); +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const assert = require('assert'); +const {describe, it} = require('mocha'); +const {execSync} = require('child_process'); +const exec = cmd => + execSync(cmd, { + encoding: 'utf8', + }); + +describe('error', () => { + it('should have an error', done => { + const errorCode = 3; + const output = exec('node error.js'); + assert.strictEqual(parseInt(output[0]), errorCode); + done(); + }); +}); diff --git a/handwritten/nodejs-datastore/src/.eslintrc.yml b/handwritten/nodejs-datastore/src/.eslintrc.yml deleted file mode 100644 index a04a47e416e..00000000000 --- a/handwritten/nodejs-datastore/src/.eslintrc.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -rules: - node/no-unpublished-require: off - node/no-missing-require: off diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 3483e598146..0e0ecf1f3e9 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -20,8 +20,7 @@ import {Query, QueryProto, IntegerTypeCastOptions} from './query'; import {PathType} from '.'; import {protobuf as Protobuf} from 'google-gax'; import * as path from 'path'; -import * as appengine from '../proto/app_engine_key'; -import {google} from '../proto/datastore'; +import {google} from '../protos/protos'; // eslint-disable-next-line @typescript-eslint/no-namespace export namespace entity { @@ -1285,7 +1284,7 @@ export namespace entity { key: entity.Key, locationPrefix?: string ): string { - const elements: appengine.Path.IElement[] = []; + const elements: {}[] = []; let currentKey = key; do { @@ -1310,7 +1309,7 @@ export namespace entity { projectId = `${locationPrefix}${projectId}`; } - const reference: appengine.IReference = { + const reference = { app: projectId, namespace: key.namespace, path: {element: elements}, @@ -1343,7 +1342,8 @@ export namespace entity { }); const pathElements: PathType[] = []; - reference.path.element.forEach((element: appengine.Path.Element) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + reference.path.element.forEach((element: any) => { pathElements.push(element.type); if (is.defined(element.name)) { diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 93c693b896c..81d8517bf47 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -26,8 +26,7 @@ import arrify = require('arrify'); import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; -import {GrpcClient, ClientStub} from 'google-gax'; -import {ChannelCredentials} from '@grpc/grpc-js'; +import {GrpcClient, ClientStub, ChannelCredentials} from 'google-gax'; import * as is from 'is'; import {entity} from './entity'; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 93ceb11556d..39545fbfe7b 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -23,7 +23,7 @@ const concat = require('concat-stream'); import * as extend from 'extend'; import {split} from 'split-array-stream'; import * as streamEvents from 'stream-events'; -import {google} from '../proto/datastore'; +import {google} from '../protos/protos'; import {CallOptions} from 'google-gax'; import {Transform} from 'stream'; @@ -399,7 +399,8 @@ class DatastoreRequest { delete: entity.keyToKeyProto(key), }; }), - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any; if (this.id) { this.requests_.push(reqOpts); diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 4124b346b28..ea9002b4a78 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -18,7 +18,7 @@ import {promisifyAll} from '@google-cloud/promisify'; import arrify = require('arrify'); import {CallOptions} from 'google-gax'; -import {google} from '../proto/datastore'; +import {google} from '../protos/protos'; import {Datastore, TransactionOptions} from '.'; import {entity, Entity, Entities} from './entity'; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index be4fdec3cb6..2f1842f1b05 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -25,7 +25,7 @@ describe('Datastore', () => { // tests. They are then deleted in the `after` hook. const key = datastore.key; // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.key = function(options: any) { + datastore.key = function (options: any) { const keyObject = key.call(this, options); testKinds.push(keyObject.kind); return keyObject; diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index c4d80e9c0c8..4c1ba3eb79a 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -21,7 +21,7 @@ import {readFileSync} from 'fs'; import {describe, it} from 'mocha'; describe('typescript consumer tests', () => { - it('should have correct type signature for typescript users', async function() { + it('should have correct type signature for typescript users', async function () { this.timeout(300000); const options = { packageDir: process.cwd(), // path to your module. @@ -35,7 +35,7 @@ describe('typescript consumer tests', () => { await packNTest(options); // will throw upon error. }); - it('should have correct type signature for javascript users', async function() { + it('should have correct type signature for javascript users', async function () { this.timeout(300000); const options = { packageDir: process.cwd(), // path to your module. diff --git a/handwritten/nodejs-datastore/test/.eslintrc.yml b/handwritten/nodejs-datastore/test/.eslintrc.yml deleted file mode 100644 index 5c38ea0d540..00000000000 --- a/handwritten/nodejs-datastore/test/.eslintrc.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -rules: - node/no-unpublished-require: off - node/no-missing-require: off - no-warning-comments: off diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index e43f3b7bec6..fd5f3719b01 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -751,7 +751,7 @@ describe('entity', () => { integerValue: value, }; - entity.Int = function(value_: {}) { + entity.Int = function (value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; @@ -793,7 +793,7 @@ describe('entity', () => { doubleValue: value, }; - entity.Double = function(value_: {}) { + entity.Double = function (value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; @@ -1888,10 +1888,7 @@ describe('entity', () => { const startVal = Buffer.from('start'); const endVal = Buffer.from('end'); - const query = ds - .createQuery('Kind1') - .start(startVal) - .end(endVal); + const query = ds.createQuery('Kind1').start(startVal).end(endVal); const queryProto = entity.queryToQueryProto(query); assert.strictEqual(queryProto.endCursor, endVal); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index cb9a66ed6a6..2755e208bae 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -263,7 +263,7 @@ describe('Datastore', () => { it('should set port if detected', () => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; const port = 99; - Datastore.prototype.determineBaseUrl_ = function() { + Datastore.prototype.determineBaseUrl_ = function () { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; this.port_ = port; }; @@ -275,7 +275,7 @@ describe('Datastore', () => { it('should set grpc ssl credentials if custom endpoint', () => { const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - Datastore.prototype.determineBaseUrl_ = function() { + Datastore.prototype.determineBaseUrl_ = function () { Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; this.customEndpoint_ = true; }; diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index b6af9a031f3..d2546f38353 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -296,7 +296,7 @@ describe('Query', () => { const args = [{}, () => {}]; // eslint-disable-next-line @typescript-eslint/no-explicit-any - query.scope.runQuery = function(...thisArgs: any[]) { + query.scope.runQuery = function (...thisArgs: any[]) { assert.strictEqual(this, query.scope); assert.strictEqual(thisArgs[0], query); assert.strictEqual(thisArgs[1], args[0]); @@ -312,7 +312,7 @@ describe('Query', () => { const runQueryReturnValue = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any - query.scope.runQueryStream = function(...args: any[]) { + query.scope.runQueryStream = function (...args: any[]) { assert.strictEqual(this, query.scope); assert.strictEqual(args[0], query); return runQueryReturnValue; @@ -331,7 +331,7 @@ describe('Query', () => { const runQueryReturnValue = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any - query.scope.runQueryStream = function(...args: any[]) { + query.scope.runQueryStream = function (...args: any[]) { assert.strictEqual(this, query.scope); assert.strictEqual(args[0], query); assert.strictEqual(args[1], options); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index e8a4d03c4d4..91824f3d5ce 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -22,7 +22,7 @@ import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; import {Transform} from 'stream'; -import {google} from '../proto/datastore'; +import {google} from '../protos/protos'; import * as ds from '../src'; import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; import {IntegerTypeCastOptions, Query, QueryProto} from '../src/query.js'; @@ -312,10 +312,7 @@ describe('Request', () => { done(); }; - request - .createReadStream(key, options) - .on('error', done) - .emit('reading'); + request.createReadStream(key, options).on('error', done).emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -487,10 +484,7 @@ describe('Request', () => { return arr; }); - request - .createReadStream(key) - .on('error', done) - .emit('reading'); + request.createReadStream(key).on('error', done).emit('reading'); }); describe('should pass `wrapNumbers` to formatArray', () => { @@ -511,10 +505,7 @@ describe('Request', () => { }); it('should pass `wrapNumbers` to formatArray as undefined by default', done => { - request - .createReadStream(key) - .on('error', done) - .resume(); + request.createReadStream(key).on('error', done).resume(); setImmediate(() => { wrapNumbersOpts = formtArrayStub.getCall(0).args[1]; @@ -575,10 +566,7 @@ describe('Request', () => { done(); }; - request - .createReadStream(key) - .on('error', done) - .emit('reading'); + request.createReadStream(key).on('error', done).emit('reading'); }); it('should push results to the stream', done => { @@ -883,10 +871,7 @@ describe('Request', () => { return {} as QueryProto; }); - request - .runQueryStream(query) - .on('error', done) - .emit('reading'); + request.runQueryStream(query).on('error', done).emit('reading'); }); it('should make correct request when the stream is ready', done => { @@ -909,10 +894,7 @@ describe('Request', () => { done(); }; - request - .runQueryStream(query) - .on('error', done) - .emit('reading'); + request.runQueryStream(query).on('error', done).emit('reading'); }); it('should allow customization of GAX options', done => { @@ -926,10 +908,7 @@ describe('Request', () => { done(); }; - request - .runQueryStream({}, options) - .on('error', done) - .emit('reading'); + request.runQueryStream({}, options).on('error', done).emit('reading'); }); it('should allow setting strong read consistency', done => { @@ -1093,10 +1072,7 @@ describe('Request', () => { }); it('should pass `wrapNumbers` to formatArray as undefined by default', done => { - request - .runQueryStream({}) - .on('error', assert.ifError) - .resume(); + request.runQueryStream({}).on('error', assert.ifError).resume(); setImmediate(() => { wrapNumbersOpts = formatArrayStub.getCall(0).args[1]; @@ -1183,7 +1159,7 @@ describe('Request', () => { } }; - FakeQuery.prototype.start = function(endCursor) { + FakeQuery.prototype.start = function (endCursor) { assert.strictEqual( endCursor, apiResponse.batch.endCursor.toString('base64') diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 4415a6b00a1..c1400bb00c3 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -353,7 +353,7 @@ describe('Transaction', () => { const args = ['0', '1']; // Query only accepts to accept string||null values const createQueryReturnValue = {}; - transaction.datastore.createQuery = function(...ags: Any) { + transaction.datastore.createQuery = function (...ags: Any) { assert.strictEqual(this, transaction); assert.strictEqual(ags[0], args[0]); assert.strictEqual(ags[1], args[1]); diff --git a/handwritten/nodejs-datastore/tslint.json b/handwritten/nodejs-datastore/tslint.json deleted file mode 100644 index 617dc975bae..00000000000 --- a/handwritten/nodejs-datastore/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "gts/tslint.json" -} From e586ccc7b4d69b1baa8a4159ebda3f0604280a10 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 13 Apr 2020 14:58:37 -0700 Subject: [PATCH 528/820] chore: update lint ignore files (#652) --- handwritten/nodejs-datastore/.eslintignore | 4 ++-- handwritten/nodejs-datastore/.prettierignore | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index ff9aaf7ebbc..9340ad9b86d 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -1,6 +1,6 @@ **/node_modules -src/**/doc/* +**/coverage +test/fixtures build/ docs/ protos/ -proto/ diff --git a/handwritten/nodejs-datastore/.prettierignore b/handwritten/nodejs-datastore/.prettierignore index f6fac98b0a8..9340ad9b86d 100644 --- a/handwritten/nodejs-datastore/.prettierignore +++ b/handwritten/nodejs-datastore/.prettierignore @@ -1,3 +1,6 @@ -node_modules/* -samples/node_modules/* -src/**/doc/* +**/node_modules +**/coverage +test/fixtures +build/ +docs/ +protos/ From 83b537296add0b0c0fd94d25b3a53def230b9a48 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 13 Apr 2020 16:44:35 -0700 Subject: [PATCH 529/820] fix: trim the dependency tree (#651) --- handwritten/nodejs-datastore/package.json | 10 ---------- handwritten/nodejs-datastore/src/index.ts | 11 ++++++++--- handwritten/nodejs-datastore/test/index.ts | 4 ++-- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 68592920965..9822b60f24f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -19,7 +19,6 @@ "author": "Google LLC.", "main": "build/src/index.js", "files": [ - "build/proto", "build/protos", "build/src" ], @@ -43,12 +42,9 @@ "dependencies": { "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", - "@types/duplexify": "^3.6.0", - "@types/long": "^4.0.1", "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-auth-library": "^6.0.0", "google-gax": "^2.2.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", @@ -58,12 +54,9 @@ "@types/extend": "^3.0.1", "@types/is": "0.0.21", "@types/mocha": "^7.0.2", - "@types/mv": "^2.1.0", - "@types/ncp": "^2.0.3", "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", "@types/sinon": "^9.0.0", - "@types/tmp": "0.1.0", "c8": "^7.1.0", "codecov": "^3.6.5", "gts": "^2.0.0", @@ -72,13 +65,10 @@ "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", "mocha": "^7.1.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", "null-loader": "^3.0.0", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^9.0.1", - "tmp": "0.1.0", "ts-loader": "^6.2.1", "typescript": "^3.8.3", "webpack": "^4.42.0", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 81d8517bf47..53c50c197cb 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -25,8 +25,13 @@ */ import arrify = require('arrify'); -import {GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; -import {GrpcClient, ClientStub, ChannelCredentials} from 'google-gax'; +import { + GrpcClient, + ClientStub, + ChannelCredentials, + GoogleAuth, + GoogleAuthOptions, +} from 'google-gax'; import * as is from 'is'; import {entity} from './entity'; @@ -414,7 +419,7 @@ class Datastore extends DatastoreRequest { libVersion: require('../../package.json').version, scopes: gapic.v1.DatastoreClient.scopes, servicePath: this.baseUrl_, - port: is.number(this.port_) ? this.port_ : 443, + port: typeof this.port_ === 'number' ? this.port_ : 443, projectId: userProvidedProjectId, }, options diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 2755e208bae..2d67ae98819 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -72,14 +72,14 @@ const fakeEntity: any = { }; let googleAuthOverride: Function | null; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function fakeGoogleAuth(...args: any) { +function fakeGoogleAuth(...args: Array<{}>) { return (googleAuthOverride || (() => {}))(...args); } let createInsecureOverride: Function | null; const fakeGoogleGax = { + GoogleAuth: fakeGoogleAuth, GrpcClient: class extends gax.GrpcClient { constructor(opts: gax.GrpcClientOptions) { // super constructor must be called first! From 2643fb5c632a0267f3263bccb46c6ce19745be41 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 15 Apr 2020 17:31:51 +0200 Subject: [PATCH 530/820] chore(deps): update dependency ts-loader to v7 (#653) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ts-loader](https://togithub.com/TypeStrong/ts-loader) | devDependencies | major | [`^6.2.1` -> `^7.0.0`](https://renovatebot.com/diffs/npm/ts-loader/6.2.2/7.0.0) | --- ### Release Notes
TypeStrong/ts-loader ### [`v7.0.0`](https://togithub.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md#v700) [Compare Source](https://togithub.com/TypeStrong/ts-loader/compare/v6.2.2...v7.0.0) - [Project reference support enhancements](https://togithub.com/TypeStrong/ts-loader/pull/1076) - thanks [@​sheetalkamat](https://togithub.com/sheetalkamat)! - Following the end of life of Node 8, `ts-loader` no longer supports Node 8 **BREAKING CHANGE**
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9822b60f24f..4d8a21d2b46 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -69,7 +69,7 @@ "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^9.0.1", - "ts-loader": "^6.2.1", + "ts-loader": "^7.0.0", "typescript": "^3.8.3", "webpack": "^4.42.0", "webpack-cli": "^3.3.11" From 13d8f1d991f9405d6d1b83b85174258470460751 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 15 Apr 2020 10:55:41 -0700 Subject: [PATCH 531/820] chore: run fix instead of lint in synthfile (#655) --- handwritten/nodejs-datastore/synth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 6240b2187e3..d7c3d907c2e 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -35,5 +35,5 @@ # Node.js specific cleanup subprocess.run(['npm', 'install']) -subprocess.run(['npm', 'run', 'lint']) +subprocess.run(['npm', 'run', 'fix']) subprocess.run(['npx', 'compileProtos', 'src']) From 71743a462f508b79bbef880acee43553fa7e12e0 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 15 Apr 2020 20:20:07 +0200 Subject: [PATCH 532/820] chore(deps): update dependency null-loader to v4 (#654) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [null-loader](https://togithub.com/webpack-contrib/null-loader) | devDependencies | major | [`^3.0.0` -> `^4.0.0`](https://renovatebot.com/diffs/npm/null-loader/3.0.0/4.0.0) | --- ### Release Notes
webpack-contrib/null-loader ### [`v4.0.0`](https://togithub.com/webpack-contrib/null-loader/blob/master/CHANGELOG.md#​400-httpsgithubcomwebpack-contribnull-loadercomparev300v400-2020-04-15) [Compare Source](https://togithub.com/webpack-contrib/null-loader/compare/v3.0.0...v4.0.0) ##### Bug Fixes - support `webpack@5` ##### ⚠ BREAKING CHANGES - minimum required Nodejs version is `10.13`
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4d8a21d2b46..4dd8fdf8023 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", "mocha": "^7.1.0", - "null-loader": "^3.0.0", + "null-loader": "^4.0.0", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^9.0.1", From 09415ac0c44550e7b6c5c13c11217891116ea182 Mon Sep 17 00:00:00 2001 From: Xiaozhen Liu Date: Thu, 16 Apr 2020 10:57:22 -0700 Subject: [PATCH 533/820] chore: clean up synth.py (#656) * clean up synth.py * rerun synthtool * remove unneeded hacks in synth.py * rerun synthtool --- handwritten/nodejs-datastore/synth.metadata | 19 ++++++++++++++++--- handwritten/nodejs-datastore/synth.py | 8 ++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index a4108a1884f..14d87f9947f 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -1,12 +1,25 @@ { - "updateTime": "2020-04-11T00:22:25.587810Z", "sources": [ + { + "git": { + "name": ".", + "remote": "git@github.com:googleapis/nodejs-datastore.git", + "sha": "51488a84d8df053247f4693233b9a5e6855d3b19" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "101d31acd73076c52d78e18322be01f3debe8cb5", + "internalRef": "306855444" + } + }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "6f32150677c9784f3c3a7e1949472bd29c9d72c5", - "log": "6f32150677c9784f3c3a7e1949472bd29c9d72c5\nfix: installs test_utils from its common repo (#480)\n\n\n74ce986d3b5431eb66985e9a00c4eb45295a4020\nfix: stop recording update_time in synth.metadata (#478)\n\n\n7f8e62aa3edd225f76347a16f92e400661fdfb52\nchore(java): release-please only updates non maven versions in README (#476)\n\nPrevent release-please and synthtool from fighting over the released library version. Synthtool updates the install snippets from the samples pom.xml files so the bots fight if they are temporarily out of sync after a release.\nc7e0e517d7f46f77bebd27da2e5afcaa6eee7e25\nbuild(java): fix nightly integration test config to run integrations (#465)\n\nThis was only running the units.\nbd69a2aa7b70875f3c988e269706b22fefbef40e\nbuild(java): fix retry_with_backoff when -e option set (#475)\n\n\nd9b173c427bfa0c6cca818233562e7e8841a357c\nfix: record version of working repo in synth.metadata (#473)\n\nPartial revert of b37cf74d12e9a42b9de9e61a4f26133d7cd9c168.\nf73a541770d95a609e5be6bf6b3b220d17cefcbe\nfeat(discogapic): allow local discovery-artifact-manager (#474)\n\n\n8cf0f5d93a70c3dcb0b4999d3152c46d4d9264bf\ndoc: describe the Autosynth & Synthtool protocol (#472)\n\n* doc: describe the Autosynth & Synthtool protocol\n\n* Accommodate review comments.\n980baaa738a1ad8fa02b4fdbd56be075ee77ece5\nfix: pin sphinx to <3.0.0 as new version causes new error (#471)\n\nThe error `toctree contains reference to document changlelog that doesn't have a title: no link will be generated` occurs as of 3.0.0. Pinning to 2.x until we address the docs build issue.\n\nTowards #470\n\nI did this manually for python-datastore https://github.com/googleapis/python-datastore/pull/22\n928b2998ac5023e7c7e254ab935f9ef022455aad\nchore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.15 (#466)\n\nCo-authored-by: Jeffrey Rennie \n188f1b1d53181f739b98f8aa5d40cfe99eb90c47\nfix: allow local and external deps to be specified (#469)\n\nModify noxfile.py to allow local and external dependencies for\nsystem tests to be specified.\n1df68ed6735ddce6797d0f83641a731c3c3f75b4\nfix: apache license URL (#468)\n\n\nf4a59efa54808c4b958263de87bc666ce41e415f\nfeat: Add discogapic support for GAPICBazel generation (#459)\n\n* feat: Add discogapic support for GAPICBazel generation\n\n* reformat with black\n\n* Rename source repository variable\n\nCo-authored-by: Jeffrey Rennie \n" + "sha": "6980131905b652563280e4d2482384d4acc9eafc" } } ], diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index d7c3d907c2e..0ec1d06cd7a 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -14,8 +14,8 @@ 'datastore', version, generator_args={ "grpc-service-config": f"google/datastore/{version}/datastore_grpc_service_config.json", - "package-name": f"@google-cloud/datastore", - "main-service": f"datastore" + "package-name": "@google-cloud/datastore", + "main-service": "datastore" }, proto_path=f'/google/datastore/{version}', extra_proto_files=['google/cloud/common_resources.proto'], @@ -24,14 +24,14 @@ # Copy everything except for top level index, package.json, and README.md s.copy( library, - excludes=['package.json', 'README.md', 'src/index.ts', '.eslintignore']) + excludes=['package.json', 'README.md', 'src/index.ts']) system_test_files=['system-test/fixtures/sample/src/index.ts','system-test/fixtures/sample/src/index.js'] for file in system_test_files: s.replace(file, 'DatastoreClient', 'Datastore') common_templates = gcp.CommonTemplates() templates = common_templates.node_library(source_location="build/src") -s.copy(templates, excludes=['.eslintignore']) +s.copy(templates) # Node.js specific cleanup subprocess.run(['npm', 'install']) From 65f4225eca0986d610963eaef607dd1b80ed267a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 20 Apr 2020 14:42:36 -0700 Subject: [PATCH 534/820] build: use codecov's action, now that it's authless (#499) (#658) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/73563d93-aea4-4354-9013-d19800d55cda/targets --- handwritten/nodejs-datastore/synth.metadata | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 14d87f9947f..9774e185e5a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,23 +3,23 @@ { "git": { "name": ".", - "remote": "git@github.com:googleapis/nodejs-datastore.git", - "sha": "51488a84d8df053247f4693233b9a5e6855d3b19" + "remote": "https://github.com/googleapis/nodejs-datastore.git", + "sha": "1e76e307ffa393870efbb95e888ca4095981dbd5" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "101d31acd73076c52d78e18322be01f3debe8cb5", - "internalRef": "306855444" + "sha": "42ee97c1b93a0e3759bbba3013da309f670a90ab", + "internalRef": "307114445" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "6980131905b652563280e4d2482384d4acc9eafc" + "sha": "19465d3ec5e5acdb01521d8f3bddd311bcbee28d" } } ], From 4edc967097e247cde706b736e709669e76f8277a Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 20 Apr 2020 15:06:12 -0700 Subject: [PATCH 535/820] feat: add async getProjectId method (#657) BREAKING CHANGE: The `Datastore.projectId` property has been removed, and replaced with an asynchronous `getProjectid()` method. The projectId cannot be determined synchronously, so the previous approach was to use a `{{projectId}}` string placeholder if the projectId had not yet been acquired. This made it difficult to know exactly when the property would be defined. As an added bonus, the `@google-cloud/projectify` dependency has been removed. Adding @crwilcox because this would be a breaking change (we're about to ship one). --- handwritten/nodejs-datastore/package.json | 1 - handwritten/nodejs-datastore/src/index.ts | 16 ++---- handwritten/nodejs-datastore/src/request.ts | 53 ++++++++----------- .../nodejs-datastore/src/transaction.ts | 6 --- handwritten/nodejs-datastore/test/index.ts | 10 ---- handwritten/nodejs-datastore/test/request.ts | 36 ------------- .../nodejs-datastore/test/transaction.ts | 4 -- 7 files changed, 27 insertions(+), 99 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4dd8fdf8023..a1755fdac95 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -40,7 +40,6 @@ "test": "c8 mocha build/test" }, "dependencies": { - "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", "arrify": "^2.0.1", "concat-stream": "^2.0.0", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 53c50c197cb..fc3f1b9769c 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -381,7 +381,6 @@ const urlSafeKey = new entity.URLSafeKey(); class Datastore extends DatastoreRequest { clients_: Map; namespace?: string; - projectId: string; defaultBaseUrl_: string; options: DatastoreOptions; baseUrl_?: string; @@ -400,15 +399,7 @@ class Datastore extends DatastoreRequest { */ this.namespace = options.namespace; - const userProvidedProjectId = - options.projectId || process.env.DATASTORE_PROJECT_ID; - const defaultProjectId = '{{projectId}}'; - - /** - * @name Datastore#projectId - * @type {string} - */ - this.projectId = userProvidedProjectId || defaultProjectId; + options.projectId = options.projectId || process.env.DATASTORE_PROJECT_ID; this.defaultBaseUrl_ = 'datastore.googleapis.com'; this.determineBaseUrl_(options.apiEndpoint); @@ -420,7 +411,6 @@ class Datastore extends DatastoreRequest { scopes: gapic.v1.DatastoreClient.scopes, servicePath: this.baseUrl_, port: typeof this.port_ === 'number' ? this.port_ : 443, - projectId: userProvidedProjectId, }, options ); @@ -431,6 +421,10 @@ class Datastore extends DatastoreRequest { this.auth = new GoogleAuth(this.options); } + getProjectId(): Promise { + return this.auth.getProjectId(); + } + /** * Helper function to get a Datastore Double object. * diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 39545fbfe7b..b284ec36c41 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisifyAll} from '@google-cloud/promisify'; import arrify = require('arrify'); @@ -1346,9 +1345,7 @@ class DatastoreRequest { const isTransaction = this.id ? true : false; const method = config.method; - let reqOpts = extend(true, {}, config.reqOpts); - - reqOpts.projectId = datastore.projectId; + const reqOpts = extend(true, {}, config.reqOpts); // Set properties to indicate if we're in a transaction or not. if (method === 'commit') { @@ -1376,31 +1373,27 @@ class DatastoreRequest { }; } - datastore.auth.getProjectId( - (err: GetProjectIdErr, projectId: ProjectId) => { - if (err) { - callback!(err); - return; - } - - const clientName = config.client; - - if (!datastore.clients_.has(clientName)) { - datastore.clients_.set( - clientName, - new gapic.v1[clientName](datastore.options) - ); - } - const gaxClient = datastore.clients_.get(clientName); - reqOpts = replaceProjectIdToken(reqOpts, projectId!); - const gaxOpts = extend(true, {}, config.gaxOpts, { - headers: { - 'google-cloud-resource-prefix': `projects/${projectId}`, - }, - }); - gaxClient![method](reqOpts, gaxOpts, callback); + datastore.auth.getProjectId((err, projectId) => { + if (err) { + callback!(err); + return; } - ); + const clientName = config.client; + if (!datastore.clients_.has(clientName)) { + datastore.clients_.set( + clientName, + new gapic.v1[clientName](datastore.options) + ); + } + const gaxClient = datastore.clients_.get(clientName); + reqOpts.projectId = projectId!; + const gaxOpts = extend(true, {}, config.gaxOpts, { + headers: { + 'google-cloud-resource-prefix': `projects/${projectId}`, + }, + }); + gaxClient![method](reqOpts, gaxOpts, callback); + }); } } @@ -1438,7 +1431,6 @@ export interface GetCallback { (err?: Error | null, entity?: Entities): void; } export type GetResponse = [Entities]; -export type GetProjectIdErr = Error | null | undefined; export interface Mutation { [key: string]: EntityProto; } @@ -1450,7 +1442,6 @@ export interface PrepareEntityObjectResponse { data?: google.datastore.v1.Entity; method?: string; } -export type ProjectId = string | null | undefined; export interface RequestCallback { ( a?: Error | null, @@ -1476,7 +1467,7 @@ export interface RequestOptions { } | null; transaction?: string | null; mode?: string; - projectId?: ProjectId; + projectId?: string; query?: QueryProto; } export type RunQueryStreamOptions = RunQueryOptions; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index ea9002b4a78..2331ce44f5b 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -49,7 +49,6 @@ import { * const transaction = datastore.transaction(); */ class Transaction extends DatastoreRequest { - projectId: string; namespace?: string; readOnly: boolean; request: Function; @@ -63,11 +62,6 @@ class Transaction extends DatastoreRequest { */ this.datastore = datastore; - /** - * @name Transaction#projectId - * @type {string} - */ - this.projectId = datastore.projectId; /** * @name Transaction#namespace * @type {string} diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 2d67ae98819..a5a3876238d 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -190,15 +190,9 @@ describe('Datastore', () => { }); it('should localize the projectId', () => { - assert.strictEqual(datastore.projectId, PROJECT_ID); assert.strictEqual(datastore.options.projectId, PROJECT_ID); }); - it('should default project ID to placeholder', () => { - const datastore = new Datastore({}); - assert.strictEqual(datastore.projectId, '{{projectId}}'); - }); - it('should not default options.projectId to placeholder', () => { const datastore = new Datastore({}); assert.strictEqual(datastore.options.projectId, undefined); @@ -206,12 +200,8 @@ describe('Datastore', () => { it('should use DATASTORE_PROJECT_ID', () => { const projectId = 'overridden-project-id'; - process.env.DATASTORE_PROJECT_ID = projectId; - const datastore = new Datastore({}); - - assert.strictEqual(datastore.projectId, projectId); assert.strictEqual(datastore.options.projectId, projectId); }); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 91824f3d5ce..f3adf1978b9 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -import * as pjy from '@google-cloud/projectify'; import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import {after, afterEach, before, beforeEach, describe, it} from 'mocha'; @@ -48,13 +47,6 @@ const fakePfy = Object.assign({}, pfy, { }, }); -const fakePjy = { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - replaceProjectIdToken(...args: any[]) { - return (pjyOverride || pjy.replaceProjectIdToken)(...args); - }, -}; - let v1FakeClientOverride: Function | null; const fakeV1 = { FakeClient: class { @@ -67,8 +59,6 @@ const fakeV1 = { class FakeQuery extends Query {} -let pjyOverride: Function | null; - describe('Request', () => { let Request: typeof ds.DatastoreRequest; let request: Any; @@ -78,7 +68,6 @@ describe('Request', () => { before(() => { Request = proxyquire('../src/request', { '@google-cloud/promisify': fakePfy, - '@google-cloud/projectify': fakePjy, './entity': {entity}, './query': {Query: FakeQuery}, './v1': fakeV1, @@ -90,7 +79,6 @@ describe('Request', () => { }); beforeEach(() => { - pjyOverride = null; key = new entity.Key({ namespace: 'namespace', path: ['Company', 123], @@ -2338,30 +2326,6 @@ describe('Request', () => { done(); }); - it('should replace the project ID token', done => { - const replacedReqOpts = {}; - - const expectedReqOpts: Any = Object.assign({}, CONFIG.reqOpts); - expectedReqOpts.projectId = request.projectId; - - pjyOverride = (reqOpts: RequestOptions, projectId: string) => { - assert.notStrictEqual(reqOpts, CONFIG.reqOpts); - assert.deepStrictEqual(reqOpts, expectedReqOpts); - assert.strictEqual(projectId, PROJECT_ID); - return replacedReqOpts; - }; - - request.datastore.clients_ = new Map(); - request.datastore.clients_.set(CONFIG.client, { - [CONFIG.method](reqOpts: RequestOptions) { - assert.strictEqual(reqOpts, replacedReqOpts); - done(); - }, - }); - - request.request_(CONFIG, assert.ifError); - }); - it('should send gaxOpts', done => { request.datastore.clients_ = new Map(); request.datastore.clients_.set(CONFIG.client, { diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index c1400bb00c3..29545d23688 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -100,10 +100,6 @@ describe('Transaction', () => { assert.strictEqual(transaction.datastore, DATASTORE); }); - it('should localize the project ID', () => { - assert.strictEqual(transaction.projectId, PROJECT_ID); - }); - it('should localize the namespace', () => { assert.strictEqual(transaction.namespace, NAMESPACE); }); From a870d5a750eda95722832c26da8b929fcd61c34e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 21 Apr 2020 20:17:05 -0700 Subject: [PATCH 536/820] build: adopt changes to generator formatter (#659) --- handwritten/nodejs-datastore/protos/protos.js | 442 +++++++++--------- handwritten/nodejs-datastore/synth.metadata | 2 +- 2 files changed, 222 insertions(+), 222 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index fe45d99f214..0eba9f88e03 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -398,12 +398,12 @@ LookupRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readOptions != null && message.hasOwnProperty("readOptions")) + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.keys != null && message.keys.length) for (var i = 0; i < message.keys.length; ++i) $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; @@ -983,15 +983,15 @@ RunQueryRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readOptions != null && message.hasOwnProperty("readOptions")) + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.partitionId != null && message.hasOwnProperty("partitionId")) + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.query != null && message.hasOwnProperty("query")) + if (message.query != null && Object.hasOwnProperty.call(message, "query")) $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) + if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; @@ -1265,9 +1265,9 @@ RunQueryResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.batch != null && message.hasOwnProperty("batch")) + if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.query != null && message.hasOwnProperty("query")) + if (message.query != null && Object.hasOwnProperty.call(message, "query")) $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -1485,9 +1485,9 @@ BeginTransactionRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) + if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; @@ -1691,7 +1691,7 @@ BeginTransactionResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.transaction != null && message.hasOwnProperty("transaction")) + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); return writer; }; @@ -1896,9 +1896,9 @@ RollbackRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.transaction != null && message.hasOwnProperty("transaction")) + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; @@ -2308,14 +2308,14 @@ CommitRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.transaction != null && message.hasOwnProperty("transaction")) + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.mode != null && message.hasOwnProperty("mode")) + if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); if (message.mutations != null && message.mutations.length) for (var i = 0; i < message.mutations.length; ++i) $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; @@ -2526,7 +2526,7 @@ /** * Mode enum. * @name google.datastore.v1.CommitRequest.Mode - * @enum {string} + * @enum {number} * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value @@ -2611,7 +2611,7 @@ if (message.mutationResults != null && message.mutationResults.length) for (var i = 0; i < message.mutationResults.length; ++i) $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); return writer; }; @@ -2842,7 +2842,7 @@ if (message.keys != null && message.keys.length) for (var i = 0; i < message.keys.length; ++i) $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; @@ -3290,9 +3290,9 @@ if (message.keys != null && message.keys.length) for (var i = 0; i < message.keys.length; ++i) $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -3743,15 +3743,15 @@ Mutation.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.insert != null && message.hasOwnProperty("insert")) + if (message.insert != null && Object.hasOwnProperty.call(message, "insert")) $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.update != null && message.hasOwnProperty("update")) + if (message.update != null && Object.hasOwnProperty.call(message, "update")) $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.upsert != null && message.hasOwnProperty("upsert")) + if (message.upsert != null && Object.hasOwnProperty.call(message, "upsert")) $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message["delete"] != null && message.hasOwnProperty("delete")) + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) + if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); return writer; }; @@ -4060,11 +4060,11 @@ MutationResult.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && message.hasOwnProperty("key")) + if (message.key != null && Object.hasOwnProperty.call(message, "key")) $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.version != null && message.hasOwnProperty("version")) + if (message.version != null && Object.hasOwnProperty.call(message, "version")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); - if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); return writer; }; @@ -4316,9 +4316,9 @@ ReadOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) + if (message.readConsistency != null && Object.hasOwnProperty.call(message, "readConsistency")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); - if (message.transaction != null && message.hasOwnProperty("transaction")) + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); return writer; }; @@ -4491,7 +4491,7 @@ /** * ReadConsistency enum. * @name google.datastore.v1.ReadOptions.ReadConsistency - * @enum {string} + * @enum {number} * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value * @property {number} STRONG=1 STRONG value * @property {number} EVENTUAL=2 EVENTUAL value @@ -4586,9 +4586,9 @@ TransactionOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readWrite != null && message.hasOwnProperty("readWrite")) + if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.readOnly != null && message.hasOwnProperty("readOnly")) + if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -4805,7 +4805,7 @@ ReadWrite.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + if (message.previousTransaction != null && Object.hasOwnProperty.call(message, "previousTransaction")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); return writer; }; @@ -5173,9 +5173,9 @@ PartitionId.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projectId != null && message.hasOwnProperty("projectId")) + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); - if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); return writer; }; @@ -5384,7 +5384,7 @@ Key.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.partitionId != null && message.hasOwnProperty("partitionId")) + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.path != null && message.path.length) for (var i = 0; i < message.path.length; ++i) @@ -5639,11 +5639,11 @@ PathElement.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.kind != null && message.hasOwnProperty("kind")) + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); - if (message.id != null && message.hasOwnProperty("id")) + if (message.id != null && Object.hasOwnProperty.call(message, "id")) writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); return writer; }; @@ -6206,31 +6206,31 @@ Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) + if (message.booleanValue != null && Object.hasOwnProperty.call(message, "booleanValue")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); - if (message.integerValue != null && message.hasOwnProperty("integerValue")) + if (message.integerValue != null && Object.hasOwnProperty.call(message, "integerValue")) writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); - if (message.keyValue != null && message.hasOwnProperty("keyValue")) + if (message.keyValue != null && Object.hasOwnProperty.call(message, "keyValue")) $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.entityValue != null && message.hasOwnProperty("entityValue")) + if (message.entityValue != null && Object.hasOwnProperty.call(message, "entityValue")) $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) + if (message.geoPointValue != null && Object.hasOwnProperty.call(message, "geoPointValue")) $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) + if (message.arrayValue != null && Object.hasOwnProperty.call(message, "arrayValue")) $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) + if (message.timestampValue != null && Object.hasOwnProperty.call(message, "timestampValue")) $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - if (message.nullValue != null && message.hasOwnProperty("nullValue")) + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); - if (message.meaning != null && message.hasOwnProperty("meaning")) + if (message.meaning != null && Object.hasOwnProperty.call(message, "meaning")) writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); - if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); - if (message.blobValue != null && message.hasOwnProperty("blobValue")) + if (message.blobValue != null && Object.hasOwnProperty.call(message, "blobValue")) writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); - if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + if (message.excludeFromIndexes != null && Object.hasOwnProperty.call(message, "excludeFromIndexes")) writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); return writer; }; @@ -6676,9 +6676,9 @@ Entity.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && message.hasOwnProperty("key")) + if (message.key != null && Object.hasOwnProperty.call(message, "key")) $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.properties != null && message.hasOwnProperty("properties")) + if (message.properties != null && Object.hasOwnProperty.call(message, "properties")) for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); @@ -6927,11 +6927,11 @@ EntityResult.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entity != null && message.hasOwnProperty("entity")) + if (message.entity != null && Object.hasOwnProperty.call(message, "entity")) $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.cursor != null && message.hasOwnProperty("cursor")) + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); - if (message.version != null && message.hasOwnProperty("version")) + if (message.version != null && Object.hasOwnProperty.call(message, "version")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); return writer; }; @@ -7113,7 +7113,7 @@ /** * ResultType enum. * @name google.datastore.v1.EntityResult.ResultType - * @enum {string} + * @enum {number} * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value * @property {number} FULL=1 FULL value * @property {number} PROJECTION=2 PROJECTION value @@ -7269,7 +7269,7 @@ if (message.kind != null && message.kind.length) for (var i = 0; i < message.kind.length; ++i) $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.filter != null && message.hasOwnProperty("filter")) + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.order != null && message.order.length) for (var i = 0; i < message.order.length; ++i) @@ -7277,13 +7277,13 @@ if (message.distinctOn != null && message.distinctOn.length) for (var i = 0; i < message.distinctOn.length; ++i) $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.startCursor != null && message.hasOwnProperty("startCursor")) + if (message.startCursor != null && Object.hasOwnProperty.call(message, "startCursor")) writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); - if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); - if (message.offset != null && message.hasOwnProperty("offset")) + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); - if (message.limit != null && message.hasOwnProperty("limit")) + if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); return writer; }; @@ -7665,7 +7665,7 @@ KindExpression.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; }; @@ -7852,7 +7852,7 @@ PropertyReference.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); return writer; }; @@ -8039,7 +8039,7 @@ Projection.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && message.hasOwnProperty("property")) + if (message.property != null && Object.hasOwnProperty.call(message, "property")) $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -8240,9 +8240,9 @@ PropertyOrder.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && message.hasOwnProperty("property")) + if (message.property != null && Object.hasOwnProperty.call(message, "property")) $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.direction != null && message.hasOwnProperty("direction")) + if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); return writer; }; @@ -8408,7 +8408,7 @@ /** * Direction enum. * @name google.datastore.v1.PropertyOrder.Direction - * @enum {string} + * @enum {number} * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value * @property {number} ASCENDING=1 ASCENDING value * @property {number} DESCENDING=2 DESCENDING value @@ -8503,9 +8503,9 @@ Filter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) + if (message.compositeFilter != null && Object.hasOwnProperty.call(message, "compositeFilter")) $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) + if (message.propertyFilter != null && Object.hasOwnProperty.call(message, "propertyFilter")) $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -8735,7 +8735,7 @@ CompositeFilter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.op != null && message.hasOwnProperty("op")) + if (message.op != null && Object.hasOwnProperty.call(message, "op")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); if (message.filters != null && message.filters.length) for (var i = 0; i < message.filters.length; ++i) @@ -8913,7 +8913,7 @@ /** * Operator enum. * @name google.datastore.v1.CompositeFilter.Operator - * @enum {string} + * @enum {number} * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value * @property {number} AND=1 AND value */ @@ -9001,11 +9001,11 @@ PropertyFilter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && message.hasOwnProperty("property")) + if (message.property != null && Object.hasOwnProperty.call(message, "property")) $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.op != null && message.hasOwnProperty("op")) + if (message.op != null && Object.hasOwnProperty.call(message, "op")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -9207,7 +9207,7 @@ /** * Operator enum. * @name google.datastore.v1.PropertyFilter.Operator - * @enum {string} + * @enum {number} * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value * @property {number} LESS_THAN=1 LESS_THAN value * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value @@ -9316,14 +9316,14 @@ GqlQuery.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.queryString != null && message.hasOwnProperty("queryString")) + if (message.queryString != null && Object.hasOwnProperty.call(message, "queryString")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); - if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + if (message.allowLiterals != null && Object.hasOwnProperty.call(message, "allowLiterals")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); if (message.positionalBindings != null && message.positionalBindings.length) for (var i = 0; i < message.positionalBindings.length; ++i) $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) + if (message.namedBindings != null && Object.hasOwnProperty.call(message, "namedBindings")) for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); @@ -9615,9 +9615,9 @@ GqlQueryParameter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.cursor != null && message.hasOwnProperty("cursor")) + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); return writer; }; @@ -9889,20 +9889,20 @@ QueryResultBatch.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + if (message.entityResultType != null && Object.hasOwnProperty.call(message, "entityResultType")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); if (message.entityResults != null && message.entityResults.length) for (var i = 0; i < message.entityResults.length; ++i) $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + if (message.skippedCursor != null && Object.hasOwnProperty.call(message, "skippedCursor")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); - if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); - if (message.moreResults != null && message.hasOwnProperty("moreResults")) + if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); - if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + if (message.skippedResults != null && Object.hasOwnProperty.call(message, "skippedResults")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); - if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); return writer; }; @@ -10203,7 +10203,7 @@ /** * MoreResultsType enum. * @name google.datastore.v1.QueryResultBatch.MoreResultsType - * @enum {string} + * @enum {number} * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value * @property {number} NOT_FINISHED=1 NOT_FINISHED value * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value @@ -10307,7 +10307,7 @@ if (message.rules != null && message.rules.length) for (var i = 0; i < message.rules.length; ++i) $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion); return writer; }; @@ -10621,26 +10621,26 @@ HttpRule.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.selector != null && message.hasOwnProperty("selector")) + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); - if (message.get != null && message.hasOwnProperty("get")) + if (message.get != null && Object.hasOwnProperty.call(message, "get")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.get); - if (message.put != null && message.hasOwnProperty("put")) + if (message.put != null && Object.hasOwnProperty.call(message, "put")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.put); - if (message.post != null && message.hasOwnProperty("post")) + if (message.post != null && Object.hasOwnProperty.call(message, "post")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.post); - if (message["delete"] != null && message.hasOwnProperty("delete")) + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]); - if (message.patch != null && message.hasOwnProperty("patch")) + if (message.patch != null && Object.hasOwnProperty.call(message, "patch")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch); - if (message.body != null && message.hasOwnProperty("body")) + if (message.body != null && Object.hasOwnProperty.call(message, "body")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.body); - if (message.custom != null && message.hasOwnProperty("custom")) + if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); if (message.additionalBindings != null && message.additionalBindings.length) for (var i = 0; i < message.additionalBindings.length; ++i) $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); - if (message.responseBody != null && message.hasOwnProperty("responseBody")) + if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody); return writer; }; @@ -10997,9 +10997,9 @@ CustomHttpPattern.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.kind != null && message.hasOwnProperty("kind")) + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); - if (message.path != null && message.hasOwnProperty("path")) + if (message.path != null && Object.hasOwnProperty.call(message, "path")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.path); return writer; }; @@ -11145,7 +11145,7 @@ /** * FieldBehavior enum. * @name google.api.FieldBehavior - * @enum {string} + * @enum {number} * @property {number} FIELD_BEHAVIOR_UNSPECIFIED=0 FIELD_BEHAVIOR_UNSPECIFIED value * @property {number} OPTIONAL=1 OPTIONAL value * @property {number} REQUIRED=2 REQUIRED value @@ -11546,9 +11546,9 @@ FileDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message["package"] != null && message.hasOwnProperty("package")) + if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]); if (message.dependency != null && message.dependency.length) for (var i = 0; i < message.dependency.length; ++i) @@ -11565,9 +11565,9 @@ if (message.extension != null && message.extension.length) for (var i = 0; i < message.extension.length; ++i) $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); if (message.publicDependency != null && message.publicDependency.length) for (var i = 0; i < message.publicDependency.length; ++i) @@ -11575,7 +11575,7 @@ if (message.weakDependency != null && message.weakDependency.length) for (var i = 0; i < message.weakDependency.length; ++i) writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); - if (message.syntax != null && message.hasOwnProperty("syntax")) + if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); return writer; }; @@ -12113,7 +12113,7 @@ DescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.field != null && message.field.length) for (var i = 0; i < message.field.length; ++i) @@ -12130,7 +12130,7 @@ if (message.extension != null && message.extension.length) for (var i = 0; i < message.extension.length; ++i) $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.oneofDecl != null && message.oneofDecl.length) for (var i = 0; i < message.oneofDecl.length; ++i) @@ -12595,11 +12595,11 @@ ExtensionRange.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -12823,9 +12823,9 @@ ReservedRange.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); return writer; }; @@ -13316,25 +13316,25 @@ FieldDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.extendee != null && message.hasOwnProperty("extendee")) + if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee); - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number); - if (message.label != null && message.hasOwnProperty("label")) + if (message.label != null && Object.hasOwnProperty.call(message, "label")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.label); - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.type); - if (message.typeName != null && message.hasOwnProperty("typeName")) + if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName); - if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); - if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); return writer; }; @@ -13681,7 +13681,7 @@ /** * Type enum. * @name google.protobuf.FieldDescriptorProto.Type - * @enum {string} + * @enum {number} * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value * @property {number} TYPE_INT64=3 TYPE_INT64 value @@ -13727,7 +13727,7 @@ /** * Label enum. * @name google.protobuf.FieldDescriptorProto.Label - * @enum {string} + * @enum {number} * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value @@ -13808,9 +13808,9 @@ OneofDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -14053,12 +14053,12 @@ EnumDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.value != null && message.value.length) for (var i = 0; i < message.value.length; ++i) $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.reservedRange != null && message.reservedRange.length) for (var i = 0; i < message.reservedRange.length; ++i) @@ -14361,9 +14361,9 @@ EnumReservedRange.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); return writer; }; @@ -14583,11 +14583,11 @@ EnumValueDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -14821,12 +14821,12 @@ ServiceDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.method != null && message.method.length) for (var i = 0; i < message.method.length; ++i) $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -15106,17 +15106,17 @@ MethodDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.inputType != null && message.hasOwnProperty("inputType")) + if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType); - if (message.outputType != null && message.hasOwnProperty("outputType")) + if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); - if (message.options != null && message.hasOwnProperty("options")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); - if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming); return writer; }; @@ -15545,45 +15545,45 @@ FileOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); - if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname); - if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor")) writer.uint32(/* id 9, wireType 0 =*/72).int32(message.optimizeFor); - if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles")) writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles); - if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage")) writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage); - if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices")) writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices); - if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices")) writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices); - if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices")) writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices); - if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash")) writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated); - if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8")) writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8); - if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas")) writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas); - if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix")) writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix); - if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace")) writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace); - if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix")) writer.uint32(/* id 39, wireType 2 =*/314).string(message.swiftPrefix); - if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix")) writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix); - if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace); - if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + if (message.phpGenericServices != null && Object.hasOwnProperty.call(message, "phpGenericServices")) writer.uint32(/* id 42, wireType 0 =*/336).bool(message.phpGenericServices); - if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); - if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -15976,7 +15976,7 @@ /** * OptimizeMode enum. * @name google.protobuf.FileOptions.OptimizeMode - * @enum {string} + * @enum {number} * @property {number} SPEED=1 SPEED value * @property {number} CODE_SIZE=2 CODE_SIZE value * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value @@ -16085,13 +16085,13 @@ MessageOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); - if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); - if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -16411,17 +16411,17 @@ FieldOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.ctype != null && message.hasOwnProperty("ctype")) + if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype); - if (message.packed != null && message.hasOwnProperty("packed")) + if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); - if (message.lazy != null && message.hasOwnProperty("lazy")) + if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy); - if (message.jstype != null && message.hasOwnProperty("jstype")) + if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype); - if (message.weak != null && message.hasOwnProperty("weak")) + if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -16750,7 +16750,7 @@ /** * CType enum. * @name google.protobuf.FieldOptions.CType - * @enum {string} + * @enum {number} * @property {number} STRING=0 STRING value * @property {number} CORD=1 CORD value * @property {number} STRING_PIECE=2 STRING_PIECE value @@ -16766,7 +16766,7 @@ /** * JSType enum. * @name google.protobuf.FieldOptions.JSType - * @enum {string} + * @enum {number} * @property {number} JS_NORMAL=0 JS_NORMAL value * @property {number} JS_STRING=1 JS_STRING value * @property {number} JS_NUMBER=2 JS_NUMBER value @@ -17065,9 +17065,9 @@ EnumOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -17310,7 +17310,7 @@ EnumValueOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -17559,14 +17559,14 @@ ServiceOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); - if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]); return writer; }; @@ -17845,9 +17845,9 @@ MethodOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); - if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) @@ -17855,7 +17855,7 @@ if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length) for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); - if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) + if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); return writer; }; @@ -18089,7 +18089,7 @@ /** * IdempotencyLevel enum. * @name google.protobuf.MethodOptions.IdempotencyLevel - * @enum {string} + * @enum {number} * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value * @property {number} IDEMPOTENT=2 IDEMPOTENT value @@ -18219,17 +18219,17 @@ if (message.name != null && message.name.length) for (var i = 0; i < message.name.length; ++i) $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); - if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue); - if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue")) writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue); - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue); - if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue); - if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue); return writer; }; @@ -19006,9 +19006,9 @@ writer.int32(message.span[i]); writer.ldelim(); } - if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments); - if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments); if (message.leadingDetachedComments != null && message.leadingDetachedComments.length) for (var i = 0; i < message.leadingDetachedComments.length; ++i) @@ -19539,11 +19539,11 @@ writer.int32(message.path[i]); writer.ldelim(); } - if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile); - if (message.begin != null && message.hasOwnProperty("begin")) + if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); return writer; }; @@ -19788,7 +19788,7 @@ Struct.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.fields != null && message.hasOwnProperty("fields")) + if (message.fields != null && Object.hasOwnProperty.call(message, "fields")) for (var keys = Object.keys(message.fields), i = 0; i < keys.length; ++i) { writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); @@ -20061,17 +20061,17 @@ Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.nullValue != null && message.hasOwnProperty("nullValue")) + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.nullValue); - if (message.numberValue != null && message.hasOwnProperty("numberValue")) + if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) writer.uint32(/* id 2, wireType 1 =*/17).double(message.numberValue); - if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); - if (message.boolValue != null && message.hasOwnProperty("boolValue")) + if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolValue); - if (message.structValue != null && message.hasOwnProperty("structValue")) + if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.listValue != null && message.hasOwnProperty("listValue")) + if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -20314,7 +20314,7 @@ /** * NullValue enum. * @name google.protobuf.NullValue - * @enum {string} + * @enum {number} * @property {number} NULL_VALUE=0 NULL_VALUE value */ protobuf.NullValue = (function() { @@ -20596,9 +20596,9 @@ Timestamp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.seconds != null && message.hasOwnProperty("seconds")) + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); - if (message.nanos != null && message.hasOwnProperty("nanos")) + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); return writer; }; @@ -20811,7 +20811,7 @@ DoubleValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 1 =*/9).double(message.value); return writer; }; @@ -20998,7 +20998,7 @@ FloatValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 5 =*/13).float(message.value); return writer; }; @@ -21185,7 +21185,7 @@ Int64Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.value); return writer; }; @@ -21386,7 +21386,7 @@ UInt64Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.value); return writer; }; @@ -21587,7 +21587,7 @@ Int32Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value); return writer; }; @@ -21774,7 +21774,7 @@ UInt32Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); return writer; }; @@ -21961,7 +21961,7 @@ BoolValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value); return writer; }; @@ -22148,7 +22148,7 @@ StringValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); return writer; }; @@ -22335,7 +22335,7 @@ BytesValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); return writer; }; @@ -22552,9 +22552,9 @@ LatLng.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.latitude != null && message.hasOwnProperty("latitude")) + if (message.latitude != null && Object.hasOwnProperty.call(message, "latitude")) writer.uint32(/* id 1, wireType 1 =*/9).double(message.latitude); - if (message.longitude != null && message.hasOwnProperty("longitude")) + if (message.longitude != null && Object.hasOwnProperty.call(message, "longitude")) writer.uint32(/* id 2, wireType 1 =*/17).double(message.longitude); return writer; }; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 9774e185e5a..b42fc1906bd 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "1e76e307ffa393870efbb95e888ca4095981dbd5" + "sha": "2a7e034e60f54100c5773d2d4dbe4dec6a721689" } }, { From 75ca4eb61318fa1a6e0b594e829c455c020b4b49 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 22 Apr 2020 08:06:17 -0700 Subject: [PATCH 537/820] fix: support request params {key} with no =value (#660) --- .../src/v1/datastore_client.ts | 49 ++++ handwritten/nodejs-datastore/synth.metadata | 2 +- .../test/gapic_datastore_v1.ts | 210 ++++++++++++++++-- 3 files changed, 239 insertions(+), 22 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index aadcbd82f5a..cd527b26a55 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -357,6 +357,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.lookup(request, options, callback); } @@ -441,6 +448,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); } @@ -518,6 +532,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.beginTransaction(request, options, callback); } @@ -612,6 +633,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.commit(request, options, callback); } @@ -688,6 +716,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.rollback(request, options, callback); } @@ -765,6 +800,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.allocateIds(request, options, callback); } @@ -844,6 +886,13 @@ export class DatastoreClient { options = optionsOrCallback as gax.CallOptions; } options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.reserveIds(request, options, callback); } diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index b42fc1906bd..32722ed4f1d 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "2a7e034e60f54100c5773d2d4dbe4dec6a721689" + "sha": "68790d26d69f48d780930f90be6758f7431f61c9" } }, { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index de651a65826..d65de4a3daa 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -141,7 +141,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); @@ -164,7 +172,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); @@ -204,7 +220,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); await assert.rejects(async () => { @@ -228,7 +252,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); @@ -251,7 +283,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); @@ -291,7 +331,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); await assert.rejects(async () => { @@ -315,7 +363,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); @@ -338,7 +394,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); @@ -378,7 +442,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.beginTransaction = stubSimpleCall( undefined, @@ -405,7 +477,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); @@ -428,7 +508,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); @@ -468,7 +556,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); await assert.rejects(async () => { @@ -492,7 +588,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); @@ -515,7 +619,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); @@ -555,7 +667,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); await assert.rejects(async () => { @@ -579,7 +699,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); @@ -602,7 +730,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); @@ -642,7 +778,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.allocateIds = stubSimpleCall( undefined, @@ -669,7 +813,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); @@ -692,7 +844,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); @@ -732,7 +892,15 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const expectedOptions = {}; + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; const expectedError = new Error('expected'); client.innerApiCalls.reserveIds = stubSimpleCall( undefined, From a3856f46d3ce1d6b466677790203438d3a332d0d Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 23 Apr 2020 19:34:32 -0700 Subject: [PATCH 538/820] chore: update npm scripts and synth.py (#661) Update npm scripts: add clean, prelint, prefix; make sure that lint and fix are set properly. Use post-process feature of synthtool. --- handwritten/nodejs-datastore/package.json | 5 +++-- handwritten/nodejs-datastore/synth.py | 7 ++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a1755fdac95..abb5bbdfd44 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -31,13 +31,14 @@ "docs-test": "linkinator docs", "fix": "gts fix", "prelint": "cd samples; npm link ../; npm install", - "lint": "gts fix", + "lint": "gts check", "prepare": "npm run compile", "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", "pretest": "npm run compile", - "test": "c8 mocha build/test" + "test": "c8 mocha build/test", + "precompile": "gts clean" }, "dependencies": { "@google-cloud/promisify": "^2.0.0", diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 0ec1d06cd7a..6884b111a01 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -1,7 +1,7 @@ import synthtool as s import synthtool.gcp as gcp +import synthtool.languages.node as node import logging -import subprocess logging.basicConfig(level=logging.DEBUG) @@ -33,7 +33,4 @@ templates = common_templates.node_library(source_location="build/src") s.copy(templates) -# Node.js specific cleanup -subprocess.run(['npm', 'install']) -subprocess.run(['npm', 'run', 'fix']) -subprocess.run(['npx', 'compileProtos', 'src']) +node.postprocess_gapic_library() From 517bd4b5f4b793eb2288456a4d8a5c82775b24a7 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 5 May 2020 19:34:31 -0700 Subject: [PATCH 539/820] fix: regenerate files and fixed formatting, lint (#664) --- handwritten/nodejs-datastore/synth.metadata | 14 ++-------- handwritten/nodejs-datastore/test/entity.ts | 1 - .../test/gapic_datastore_v1.ts | 28 +++++-------------- 3 files changed, 10 insertions(+), 33 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 32722ed4f1d..b06582c2c11 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,23 +3,15 @@ { "git": { "name": ".", - "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "68790d26d69f48d780930f90be6758f7431f61c9" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "42ee97c1b93a0e3759bbba3013da309f670a90ab", - "internalRef": "307114445" + "remote": "git@github.com:googleapis/nodejs-datastore.git", + "sha": "da8b9ecc5b8769579c6a90bb7fbf27678efc45bc" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "19465d3ec5e5acdb01521d8f3bddd311bcbee28d" + "sha": "ab883569eb0257bbf16a6d825fd018b3adde3912" } } ], diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index fd5f3719b01..12e0c513822 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1512,7 +1512,6 @@ describe('entity', () => { const ent = entity.formatArray(results)[0]; assert.deepStrictEqual(ent, expectedResults); - assert.strictEqual(ent[entity.KEY_SYMBOL], key); }); describe('should pass `wrapNumbers` to entityFromEntityProto', () => { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index d65de4a3daa..58017d1ac04 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -231,9 +231,7 @@ describe('v1.DatastoreClient', () => { }; const expectedError = new Error('expected'); client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => { - await client.lookup(request); - }, expectedError); + await assert.rejects(client.lookup(request), expectedError); assert( (client.innerApiCalls.lookup as SinonStub) .getCall(0) @@ -342,9 +340,7 @@ describe('v1.DatastoreClient', () => { }; const expectedError = new Error('expected'); client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => { - await client.runQuery(request); - }, expectedError); + await assert.rejects(client.runQuery(request), expectedError); assert( (client.innerApiCalls.runQuery as SinonStub) .getCall(0) @@ -456,9 +452,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - await assert.rejects(async () => { - await client.beginTransaction(request); - }, expectedError); + await assert.rejects(client.beginTransaction(request), expectedError); assert( (client.innerApiCalls.beginTransaction as SinonStub) .getCall(0) @@ -567,9 +561,7 @@ describe('v1.DatastoreClient', () => { }; const expectedError = new Error('expected'); client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => { - await client.commit(request); - }, expectedError); + await assert.rejects(client.commit(request), expectedError); assert( (client.innerApiCalls.commit as SinonStub) .getCall(0) @@ -678,9 +670,7 @@ describe('v1.DatastoreClient', () => { }; const expectedError = new Error('expected'); client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => { - await client.rollback(request); - }, expectedError); + await assert.rejects(client.rollback(request), expectedError); assert( (client.innerApiCalls.rollback as SinonStub) .getCall(0) @@ -792,9 +782,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - await assert.rejects(async () => { - await client.allocateIds(request); - }, expectedError); + await assert.rejects(client.allocateIds(request), expectedError); assert( (client.innerApiCalls.allocateIds as SinonStub) .getCall(0) @@ -906,9 +894,7 @@ describe('v1.DatastoreClient', () => { undefined, expectedError ); - await assert.rejects(async () => { - await client.reserveIds(request); - }, expectedError); + await assert.rejects(client.reserveIds(request), expectedError); assert( (client.innerApiCalls.reserveIds as SinonStub) .getCall(0) From a14cfa5a4fc28a897a0bcf11a44eb913b00ecd3f Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 6 May 2020 13:30:08 -0700 Subject: [PATCH 540/820] docs: fix comments (#665) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/d5e01c0b-0d2d-4da4-b495-86674ea6021f/targets --- .../protos/google/datastore/v1/entity.proto | 4 ++-- handwritten/nodejs-datastore/synth.metadata | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 96d13ecccc1..dc3a6012075 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -145,8 +145,8 @@ message Value { Key key_value = 5; // A UTF-8 encoded string value. - // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. - // Otherwise, may be set to at least 1,000,000 bytes. + // When `exclude_from_indexes` is false (it is indexed), may have at most + // 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes. string string_value = 17; // A blob value. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index b06582c2c11..fc0efd8e5ab 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,8 +3,16 @@ { "git": { "name": ".", - "remote": "git@github.com:googleapis/nodejs-datastore.git", - "sha": "da8b9ecc5b8769579c6a90bb7fbf27678efc45bc" + "remote": "https://github.com/googleapis/nodejs-datastore.git", + "sha": "34e91359aa7cd246799a651fa5f441ed8956b930" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "a3a0bf0f6291d69f2ff3df7fcd63d28ee20ac727", + "internalRef": "310060413" } }, { From b6126860a66a05b6c0e20f5f0def364c3b2db3be Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 8 May 2020 11:26:35 -0700 Subject: [PATCH 541/820] build: do not fail builds on codecov errors (#528) (#667) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/13e8b547-7af0-436b-b85e-2c1942f8f36a/targets Source-Link: https://github.com/googleapis/synthtool/commit/be74d3e532faa47eb59f1a0eaebde0860d1d8ab4 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index fc0efd8e5ab..02dd97cee30 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "34e91359aa7cd246799a651fa5f441ed8956b930" + "sha": "380c45b3a9566037c3daa37d5b5b85ba318fa281" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "ab883569eb0257bbf16a6d825fd018b3adde3912" + "sha": "be74d3e532faa47eb59f1a0eaebde0860d1d8ab4" } } ], From bcb926628cb721787685b9d6066f19900a388456 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Thu, 28 May 2020 01:18:38 +0530 Subject: [PATCH 542/820] fix: missing await in rollback (#671) --- .../nodejs-datastore/samples/concepts.js | 4 +-- handwritten/nodejs-datastore/samples/tasks.js | 2 +- .../samples/tasks.markdone.js | 2 +- handwritten/nodejs-datastore/src/request.ts | 16 ++++++++-- handwritten/nodejs-datastore/test/request.ts | 32 +++++++++++++++++++ 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index e77c2a799b3..c96a7e53f8f 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -1102,7 +1102,7 @@ class Transaction extends TestHelper { const [task] = await transaction.get(taskKey); if (task) { // The task entity already exists. - transaction.rollback(); + await transaction.rollback(); } else { // Create the task entity. transaction.save(taskEntity); @@ -1110,7 +1110,7 @@ class Transaction extends TestHelper { } return taskEntity; } catch (err) { - transaction.rollback(); + await transaction.rollback(); } } // [END datastore_transactional_get_or_create] diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js index c15a0d745ea..e31c829587d 100644 --- a/handwritten/nodejs-datastore/samples/tasks.js +++ b/handwritten/nodejs-datastore/samples/tasks.js @@ -112,7 +112,7 @@ async function markDone(taskId) { await transaction.commit(); console.log(`Task ${taskId} updated successfully.`); } catch (err) { - transaction.rollback(); + await transaction.rollback(); } } // [END datastore_update_entity] diff --git a/handwritten/nodejs-datastore/samples/tasks.markdone.js b/handwritten/nodejs-datastore/samples/tasks.markdone.js index 8fb6d0c99f1..ed64910504f 100644 --- a/handwritten/nodejs-datastore/samples/tasks.markdone.js +++ b/handwritten/nodejs-datastore/samples/tasks.markdone.js @@ -44,7 +44,7 @@ async function main(taskId) { await transaction.commit(); console.log(`Task ${taskId} updated successfully.`); } catch (err) { - transaction.rollback(); + await transaction.rollback(); throw err; } } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index b284ec36c41..643c7642024 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1301,7 +1301,13 @@ class DatastoreRequest { const transaction = this.datastore.transaction(); transaction.run(async err => { if (err) { - transaction.rollback(); + try { + await transaction.rollback(); + } catch (error) { + // Provide the error & API response from the failed run to the user. + // Even a failed rollback should be transparent. + // RE: https://github.com/GoogleCloudPlatform/gcloud-node/pull/1369#discussion_r66833976 + } callback!(err); return; } @@ -1321,7 +1327,13 @@ class DatastoreRequest { const [response] = await transaction.commit(); callback!(null, response); } catch (err) { - transaction.rollback(); + try { + await transaction.rollback(); + } catch (error) { + // Provide the error & API response from the failed commit to the user. + // Even a failed rollback should be transparent. + // RE: https://github.com/GoogleCloudPlatform/gcloud-node/pull/1369#discussion_r66833976 + } callback!(err); } }); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index f3adf1978b9..a2567f6339f 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -2251,6 +2251,38 @@ describe('Request', () => { done(); }); }); + + it('should avoid the rollback exception in transaction.run', done => { + sandbox + .stub(transaction, 'run') + .callsFake((gaxOption, callback?: Function) => { + callback = typeof gaxOption === 'function' ? gaxOption : callback!; + callback(new Error('Error.')); + }); + + sandbox + .stub(transaction, 'rollback') + .rejects(new Error('Rollback Error.')); + + request.merge({key, data: null}, (err: Error) => { + assert.strictEqual(err.message, 'Error.'); + done(); + }); + }); + + it('should avoid the rollback exception in transaction.get/commit', done => { + sandbox.restore(); + sandbox.stub(transaction, 'get').rejects(new Error('Error.')); + + sandbox + .stub(transaction, 'rollback') + .rejects(new Error('Rollback Error.')); + + request.merge({key, data: null}, (err: Error) => { + assert.strictEqual(err.message, 'Error.'); + done(); + }); + }); }); describe('request_', () => { From fdec36d58c4401aa6e7e65d504ae42ad4fe8482d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 2 Jun 2020 14:49:30 -0700 Subject: [PATCH 543/820] chore: release 6.0.0 (#639) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 31 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 394058c1b34..fd43c4c1be9 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,37 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v5.1.0...v6.0.0) (2020-05-27) + + +### ⚠ BREAKING CHANGES + +* The `Datastore.projectId` property has been removed, and replaced with an asynchronous `getProjectid()` method. The projectId cannot be determined synchronously, so the previous approach was to use a `{{projectId}}` string placeholder if the projectId had not yet been acquired. This made it difficult to know exactly when the property would be defined. +* The library now supports Node.js v10+. The last version to support Node.js v8 is tagged legacy-8 on NPM. + +### Features + +* add async getProjectId method ([#657](https://www.github.com/googleapis/nodejs-datastore/issues/657)) ([2a7e034](https://www.github.com/googleapis/nodejs-datastore/commit/2a7e034e60f54100c5773d2d4dbe4dec6a721689)) +* add options param to query#runStream ([#611](https://www.github.com/googleapis/nodejs-datastore/issues/611)) ([7429c9d](https://www.github.com/googleapis/nodejs-datastore/commit/7429c9dbbdf4ed6715f04fa87cffec9bda8a97be)) +* drop node8 support ([#637](https://www.github.com/googleapis/nodejs-datastore/issues/637)) ([7ef38c1](https://www.github.com/googleapis/nodejs-datastore/commit/7ef38c1ade25f19f328290a3f69370676c80f021)) + + +### Bug Fixes + +* **deps:** update dependency @google-cloud/projectify to v2 ([#626](https://www.github.com/googleapis/nodejs-datastore/issues/626)) ([27fa23f](https://www.github.com/googleapis/nodejs-datastore/commit/27fa23fee0c0daa2e60ddd476aaad43877a05ea4)) +* **deps:** update dependency @google-cloud/promisify to v2 ([#625](https://www.github.com/googleapis/nodejs-datastore/issues/625)) ([1d64bc1](https://www.github.com/googleapis/nodejs-datastore/commit/1d64bc1bed7561bc93371cb7ca785fa1cc176f1f)) +* remove eslint, update gax, fix generated protos, run the generator ([#644](https://www.github.com/googleapis/nodejs-datastore/issues/644)) ([fcc5309](https://www.github.com/googleapis/nodejs-datastore/commit/fcc530933af25f1c40cfe0a7186a7e5f25a3f6bd)) +* **deps:** update dependency @grpc/grpc-js to v0.7.1 ([#615](https://www.github.com/googleapis/nodejs-datastore/issues/615)) ([3e83981](https://www.github.com/googleapis/nodejs-datastore/commit/3e83981f3da83143eb9b76f32e563683704f8d99)) +* identify propertyName ([#614](https://www.github.com/googleapis/nodejs-datastore/issues/614)) ([3635e13](https://www.github.com/googleapis/nodejs-datastore/commit/3635e138f3673eaff75ac30d25a2f21b3eecc5f9)) +* missing await in rollback ([#671](https://www.github.com/googleapis/nodejs-datastore/issues/671)) ([7cb353e](https://www.github.com/googleapis/nodejs-datastore/commit/7cb353e14e534a221e337f4ca2c30dd7ab01b469)) +* **deps:** update dependency @grpc/grpc-js to v0.7.4 ([#620](https://www.github.com/googleapis/nodejs-datastore/issues/620)) ([1d36be1](https://www.github.com/googleapis/nodejs-datastore/commit/1d36be1f11f4604f5c5170a06d7156e858a4748c)) +* **deps:** update dependency @grpc/grpc-js to v0.7.8 ([#638](https://www.github.com/googleapis/nodejs-datastore/issues/638)) ([a98ee1a](https://www.github.com/googleapis/nodejs-datastore/commit/a98ee1a9144415aef4788f7eb2b052c864f5370c)) +* regenerate files and fixed formatting, lint ([#664](https://www.github.com/googleapis/nodejs-datastore/issues/664)) ([34e9135](https://www.github.com/googleapis/nodejs-datastore/commit/34e91359aa7cd246799a651fa5f441ed8956b930)) +* support request params {key} with no =value ([#660](https://www.github.com/googleapis/nodejs-datastore/issues/660)) ([1faba1f](https://www.github.com/googleapis/nodejs-datastore/commit/1faba1f86fe31ff5898f897b640738987c55193d)) +* trim the dependency tree ([#651](https://www.github.com/googleapis/nodejs-datastore/issues/651)) ([1fd412e](https://www.github.com/googleapis/nodejs-datastore/commit/1fd412ef972c45ffefa96292c33389196a945338)) +* **deps:** update dependency @grpc/grpc-js to v0.7.9 ([#645](https://www.github.com/googleapis/nodejs-datastore/issues/645)) ([04b2ab2](https://www.github.com/googleapis/nodejs-datastore/commit/04b2ab29e9a0b4e4feef57641a5e5960a8bb88b8)) +* **deps:** update dependency google-auth-library to v6 ([#628](https://www.github.com/googleapis/nodejs-datastore/issues/628)) ([eb5f87b](https://www.github.com/googleapis/nodejs-datastore/commit/eb5f87b0037cad27b45653a0246a197ca4a0b33b)) + ## [5.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v5.0.6...v5.1.0) (2020-03-11) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index abb5bbdfd44..4c40bf57e03 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "5.1.0", + "version": "6.0.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 3ced30fe33d..5b0e6c8d901 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^5.1.0", + "@google-cloud/datastore": "^6.0.0", "sinon": "^9.0.0" }, "devDependencies": { From 000ea6b176f44753928eabe7be576c3de23fc0eb Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 3 Jun 2020 17:43:03 -0700 Subject: [PATCH 544/820] build: update protos.js (#673) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/041f5df7-f5d3-4b2a-9ede-0752bf41c185/targets --- .../nodejs-datastore/protos/protos.d.ts | 6 ++++ handwritten/nodejs-datastore/protos/protos.js | 28 +++++++++++++++++-- .../nodejs-datastore/protos/protos.json | 6 +++- handwritten/nodejs-datastore/synth.metadata | 2 +- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 27524b42277..c73bd6c9324 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -5187,6 +5187,9 @@ export namespace google { /** FieldDescriptorProto options */ options?: (google.protobuf.IFieldOptions|null); + + /** FieldDescriptorProto proto3Optional */ + proto3Optional?: (boolean|null); } /** Represents a FieldDescriptorProto. */ @@ -5228,6 +5231,9 @@ export namespace google { /** FieldDescriptorProto options. */ public options?: (google.protobuf.IFieldOptions|null); + /** FieldDescriptorProto proto3Optional. */ + public proto3Optional: boolean; + /** * Creates a new FieldDescriptorProto instance using the specified properties. * @param [properties] Properties to set diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 0eba9f88e03..bdd4152ad68 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -28,7 +28,7 @@ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace - var $root = $protobuf.roots._google_cloud_datastore_5_1_0_protos || ($protobuf.roots._google_cloud_datastore_5_1_0_protos = {}); + var $root = $protobuf.roots._google_cloud_datastore_6_0_0_protos || ($protobuf.roots._google_cloud_datastore_6_0_0_protos = {}); $root.google = (function() { @@ -13195,6 +13195,7 @@ * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex * @property {string|null} [jsonName] FieldDescriptorProto jsonName * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options + * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional */ /** @@ -13292,6 +13293,14 @@ */ FieldDescriptorProto.prototype.options = null; + /** + * FieldDescriptorProto proto3Optional. + * @member {boolean} proto3Optional + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.proto3Optional = false; + /** * Creates a new FieldDescriptorProto instance using the specified properties. * @function create @@ -13336,6 +13345,8 @@ writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); + if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional")) + writer.uint32(/* id 17, wireType 0 =*/136).bool(message.proto3Optional); return writer; }; @@ -13400,6 +13411,9 @@ case 8: message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); break; + case 17: + message.proto3Optional = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -13494,6 +13508,9 @@ if (error) return "options." + error; } + if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + if (typeof message.proto3Optional !== "boolean") + return "proto3Optional: boolean expected"; return null; }; @@ -13616,6 +13633,8 @@ throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); } + if (object.proto3Optional != null) + message.proto3Optional = Boolean(object.proto3Optional); return message; }; @@ -13643,6 +13662,7 @@ object.options = null; object.oneofIndex = 0; object.jsonName = ""; + object.proto3Optional = false; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -13664,6 +13684,8 @@ object.oneofIndex = message.oneofIndex; if (message.jsonName != null && message.hasOwnProperty("jsonName")) object.jsonName = message.jsonName; + if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + object.proto3Optional = message.proto3Optional; return object; }; @@ -15455,7 +15477,7 @@ * @memberof google.protobuf.FileOptions * @instance */ - FileOptions.prototype.ccEnableArenas = false; + FileOptions.prototype.ccEnableArenas = true; /** * FileOptions objcClassPrefix. @@ -15904,7 +15926,7 @@ object.javaGenerateEqualsAndHash = false; object.deprecated = false; object.javaStringCheckUtf8 = false; - object.ccEnableArenas = false; + object.ccEnableArenas = true; object.objcClassPrefix = ""; object.csharpNamespace = ""; object.swiftPrefix = ""; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 72bfffc81b1..59169d34a2f 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1216,6 +1216,10 @@ "options": { "type": "FieldOptions", "id": 8 + }, + "proto3Optional": { + "type": "bool", + "id": 17 } }, "nested": { @@ -1451,7 +1455,7 @@ "type": "bool", "id": 31, "options": { - "default": false + "default": true } }, "objcClassPrefix": { diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 02dd97cee30..31f46f71dd2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "380c45b3a9566037c3daa37d5b5b85ba318fa281" + "sha": "f12091d3536509be677d04b38094b9d5df820d4e" } }, { From 208c40c906d4a93e5f3c31cc62b25f047e56043a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 9 Jun 2020 17:40:13 -0700 Subject: [PATCH 545/820] feat: move ts target to es2018 from es2016 (#677) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/9b55eba7-85ee-48d5-a737-8b677439db4d/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/1c92077459db3dc50741e878f98b08c6261181e0 --- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/src/v1/datastore_client.ts | 7 +++++++ handwritten/nodejs-datastore/synth.metadata | 4 ++-- handwritten/nodejs-datastore/tsconfig.json | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index bdd4152ad68..6b0e0b89e9a 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -28,7 +28,7 @@ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace - var $root = $protobuf.roots._google_cloud_datastore_6_0_0_protos || ($protobuf.roots._google_cloud_datastore_6_0_0_protos = {}); + var $root = $protobuf.roots._google_cloud_datastore_protos || ($protobuf.roots._google_cloud_datastore_protos = {}); $root.google = (function() { diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index cd527b26a55..0f90a1611b8 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -95,6 +95,13 @@ export class DatastoreClient { } opts.servicePath = opts.servicePath || servicePath; opts.port = opts.port || port; + + // users can override the config from client side, like retry codes name. + // The detailed structure of the clientConfig can be found here: https://github.com/googleapis/gax-nodejs/blob/master/src/gax.ts#L546 + // The way to override client config for Showcase API: + // + // const customConfig = {"interfaces": {"google.showcase.v1beta1.Echo": {"methods": {"Echo": {"retry_codes_name": "idempotent", "retry_params_name": "default"}}}}} + // const showcaseClient = new showcaseClient({ projectId, customConfig }); opts.clientConfig = opts.clientConfig || {}; const isBrowser = typeof window !== 'undefined'; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 31f46f71dd2..e888726b33a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "f12091d3536509be677d04b38094b9d5df820d4e" + "sha": "d90b7331a96a2cca5f8bc51281b4e22648b40007" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "be74d3e532faa47eb59f1a0eaebde0860d1d8ab4" + "sha": "1c92077459db3dc50741e878f98b08c6261181e0" } } ], diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json index 613d35597b5..c78f1c884ef 100644 --- a/handwritten/nodejs-datastore/tsconfig.json +++ b/handwritten/nodejs-datastore/tsconfig.json @@ -5,7 +5,7 @@ "outDir": "build", "resolveJsonModule": true, "lib": [ - "es2016", + "es2018", "dom" ] }, From a5513b5c4cda9e7df29e460c5d43edf2042f235e Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 11 Jun 2020 17:46:18 +0200 Subject: [PATCH 546/820] chore(deps): update dependency mocha to v8 (#680) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mocha](https://mochajs.org/) ([source](https://togithub.com/mochajs/mocha)) | devDependencies | major | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/mocha/7.2.0/8.0.1) | --- ### Release Notes
mochajs/mocha ### [`v8.0.1`](https://togithub.com/mochajs/mocha/blob/master/CHANGELOG.md#​801--2020-06-10) [Compare Source](https://togithub.com/mochajs/mocha/compare/v8.0.0...v8.0.1) The obligatory patch after a major. #### :bug: Fixes - [#​4328](https://togithub.com/mochajs/mocha/issues/4328): Fix `--parallel` when combined with `--watch` ([**@​boneskull**](https://togithub.com/boneskull)) ### [`v8.0.0`](https://togithub.com/mochajs/mocha/blob/master/CHANGELOG.md#​800--2020-06-10) [Compare Source](https://togithub.com/mochajs/mocha/compare/v7.2.0...v8.0.0) In this major release, Mocha adds the ability to _run tests in parallel_. Better late than never! Please note the **breaking changes** detailed below. Let's welcome [**@​giltayar**](https://togithub.com/giltayar) and [**@​nicojs**](https://togithub.com/nicojs) to the maintenance team! #### :boom: Breaking Changes - [#​4164](https://togithub.com/mochajs/mocha/issues/4164): **Mocha v8.0.0 now requires Node.js v10.0.0 or newer.** Mocha no longer supports the Node.js v8.x line ("Carbon"), which entered End-of-Life at the end of 2019 ([**@​UlisesGascon**](https://togithub.com/UlisesGascon)) - [#​4175](https://togithub.com/mochajs/mocha/issues/4175): Having been deprecated with a warning since v7.0.0, **`mocha.opts` is no longer supported** ([**@​juergba**](https://togithub.com/juergba)) :sparkles: **WORKAROUND:** Replace `mocha.opts` with a [configuration file](https://mochajs.org/#configuring-mocha-nodejs). - [#​4260](https://togithub.com/mochajs/mocha/issues/4260): Remove `enableTimeout()` (`this.enableTimeout()`) from the context object ([**@​craigtaub**](https://togithub.com/craigtaub)) :sparkles: **WORKAROUND:** Replace usage of `this.enableTimeout(false)` in your tests with `this.timeout(0)`. - [#​4315](https://togithub.com/mochajs/mocha/issues/4315): The `spec` option no longer supports a comma-delimited list of files ([**@​juergba**](https://togithub.com/juergba)) :sparkles: **WORKAROUND**: Use an array instead (e.g., `"spec": "foo.js,bar.js"` becomes `"spec": ["foo.js", "bar.js"]`). - [#​4309](https://togithub.com/mochajs/mocha/issues/4309): Drop support for Node.js v13.x line, which is now End-of-Life ([**@​juergba**](https://togithub.com/juergba)) - [#​4282](https://togithub.com/mochajs/mocha/issues/4282): `--forbid-only` will throw an error even if exclusive tests are avoided via `--grep` or other means ([**@​arvidOtt**](https://togithub.com/arvidOtt)) - [#​4223](https://togithub.com/mochajs/mocha/issues/4223): The context object's `skip()` (`this.skip()`) in a "before all" (`before()`) hook will no longer execute subsequent sibling hooks, in addition to hooks in child suites ([**@​juergba**](https://togithub.com/juergba)) - [#​4178](https://togithub.com/mochajs/mocha/issues/4178): Remove previously soft-deprecated APIs ([**@​wnghdcjfe**](https://togithub.com/wnghdcjfe)): - `Mocha.prototype.ignoreLeaks()` - `Mocha.prototype.useColors()` - `Mocha.prototype.useInlineDiffs()` - `Mocha.prototype.hideDiff()` #### :tada: Enhancements - [#​4245](https://togithub.com/mochajs/mocha/issues/4245): Add ability to run tests in parallel for Node.js (see [docs](https://mochajs.org/#parallel-tests)) ([**@​boneskull**](https://togithub.com/boneskull)) :exclamation: See also [#​4244](https://togithub.com/mochajs/mocha/issues/4244); [Root Hook Plugins (docs)](https://mochajs.org/#root-hook-plugins) -- _root hooks must be defined via Root Hook Plugins to work in parallel mode_ - [#​4304](https://togithub.com/mochajs/mocha/issues/4304): `--require` now works with ES modules ([**@​JacobLey**](https://togithub.com/JacobLey)) - [#​4299](https://togithub.com/mochajs/mocha/issues/4299): In some circumstances, Mocha can run ES modules under Node.js v10 -- _use at your own risk!_ ([**@​giltayar**](https://togithub.com/giltayar)) #### :book: Documentation - [#​4246](https://togithub.com/mochajs/mocha/issues/4246): Add documentation for parallel mode and Root Hook plugins ([**@​boneskull**](https://togithub.com/boneskull)) #### :bug: Fixes (All bug fixes in Mocha v8.0.0 are also breaking changes, and are listed above)
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4c40bf57e03..207c5a57638 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", - "mocha": "^7.1.0", + "mocha": "^8.0.0", "null-loader": "^4.0.0", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5b0e6c8d901..8bb8d58fca4 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -19,6 +19,6 @@ }, "devDependencies": { "chai": "^4.2.0", - "mocha": "^7.0.0" + "mocha": "^8.0.0" } } From 0c1e025842737a0cb22a6acf9b19566b03851f05 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Sat, 13 Jun 2020 08:05:31 +0530 Subject: [PATCH 547/820] fix: null value while inserting in array (#682) --- handwritten/nodejs-datastore/src/entity.ts | 2 +- handwritten/nodejs-datastore/test/request.ts | 46 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 0e0ecf1f3e9..56d2e675750 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -939,7 +939,7 @@ export namespace entity { const MAX_DATASTORE_VALUE_LENGTH = 1500; if (Array.isArray(entities)) { for (const entry of entities) { - if (entry.name && entry.value) { + if (entry && entry.name && entry.value) { if ( is.string(entry.value) && Buffer.from(entry.value).length > MAX_DATASTORE_VALUE_LENGTH diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index a2567f6339f..c6b4e1b4092 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -1498,6 +1498,52 @@ describe('Request', () => { ); }); + it('should save null value when excludeLargeProperties enabled', done => { + const expectedProperties = { + stringField: { + stringValue: 'string value', + }, + nullField: { + nullValue: 0, + }, + arrayField: { + arrayValue: { + values: [ + { + integerValue: '0', + }, + { + nullValue: 0, + }, + ], + }, + }, + objectField: { + nullValue: 0, + }, + }; + + request.request_ = (config: RequestConfig, callback: Function) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties, + expectedProperties + ); + callback(); + }; + + const entities = { + key: key, + data: { + stringField: 'string value', + nullField: null, + arrayField: [0, null], + objectField: null, + }, + excludeLargeProperties: true, + }; + request.save(entities, done); + }); + it('should allow customization of GAX options', done => { const gaxOptions = {}; From d2f510b661c2fc125a37c207205e9fa34a857fe6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 15 Jun 2020 11:12:54 -0700 Subject: [PATCH 548/820] fix: proper fallback option handling (#684) * changes without context autosynth cannot find the source of changes triggered by earlier changes in this repository, or by version upgrades to tools such as linters. * chore: set Ruby namespace in proto options PiperOrigin-RevId: 316124477 Source-Author: Google APIs Source-Date: Fri Jun 12 10:06:09 2020 -0700 Source-Repo: googleapis/googleapis Source-Sha: c829fa0bfa725adaf20d82e86cbc1220e3ffd784 Source-Link: https://github.com/googleapis/googleapis/commit/c829fa0bfa725adaf20d82e86cbc1220e3ffd784 --- .../protos/google/datastore/v1/datastore.proto | 1 + .../protos/google/datastore/v1/entity.proto | 1 + .../protos/google/datastore/v1/query.proto | 1 + handwritten/nodejs-datastore/protos/protos.json | 3 ++- .../nodejs-datastore/src/v1/datastore_client.ts | 13 +++++-------- handwritten/nodejs-datastore/synth.metadata | 6 +++--- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 0df65c4473c..ad016194ab2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -28,6 +28,7 @@ option java_multiple_files = true; option java_outer_classname = "DatastoreProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; +option ruby_package = "Google::Cloud::Datastore::V1"; // Each RPC normalizes the partition IDs of the keys in its input entities, // and always returns entities with keys with normalized partition IDs. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index dc3a6012075..61286cd7a2c 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -27,6 +27,7 @@ option java_multiple_files = true; option java_outer_classname = "EntityProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; +option ruby_package = "Google::Cloud::Datastore::V1"; // A partition ID identifies a grouping of entities. The grouping is always // by project and namespace, however the namespace ID may be empty. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index ef9f1c658c1..4cb3ef99b83 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -27,6 +27,7 @@ option java_multiple_files = true; option java_outer_classname = "QueryProto"; option java_package = "com.google.datastore.v1"; option php_namespace = "Google\\Cloud\\Datastore\\V1"; +option ruby_package = "Google::Cloud::Datastore::V1"; // The result of fetching an entity from Datastore. message EntityResult { diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 59169d34a2f..6896bb4c9ab 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -11,7 +11,8 @@ "java_multiple_files": true, "java_outer_classname": "QueryProto", "java_package": "com.google.datastore.v1", - "php_namespace": "Google\\Cloud\\Datastore\\V1" + "php_namespace": "Google\\Cloud\\Datastore\\V1", + "ruby_package": "Google::Cloud::Datastore::V1" }, "nested": { "Datastore": { diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 0f90a1611b8..9097242b610 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -104,14 +104,11 @@ export class DatastoreClient { // const showcaseClient = new showcaseClient({ projectId, customConfig }); opts.clientConfig = opts.clientConfig || {}; - const isBrowser = typeof window !== 'undefined'; - if (isBrowser) { - opts.fallback = true; - } - // If we are in browser, we are already using fallback because of the - // "browser" field in package.json. - // But if we were explicitly requested to use fallback, let's do it now. - this._gaxModule = !isBrowser && opts.fallback ? gax.fallback : gax; + // If we're running in browser, it's OK to omit `fallback` since + // google-gax has `browser` field in its `package.json`. + // For Electron (which does not respect `browser` field), + // pass `{fallback: true}` to the DatastoreClient constructor. + this._gaxModule = opts.fallback ? gax.fallback : gax; // Create a `gaxGrpc` object, with any grpc-specific options // sent to the client. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index e888726b33a..0c1a1e61bcd 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,15 +4,15 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "d90b7331a96a2cca5f8bc51281b4e22648b40007" + "sha": "c60fe437c8e3ce1bdebb191b5623b099bf43dc58" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "a3a0bf0f6291d69f2ff3df7fcd63d28ee20ac727", - "internalRef": "310060413" + "sha": "c829fa0bfa725adaf20d82e86cbc1220e3ffd784", + "internalRef": "316124477" } }, { From 4fb41de47ee91dbf939a705d901abb23d9074f6a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 17 Jun 2020 14:20:46 -0700 Subject: [PATCH 549/820] chore(nodejs_templates): add script logging to node_library populate-secrets.sh (#688) Co-authored-by: Benjamin E. Coe Source-Author: BenWhitehead Source-Date: Wed Jun 10 22:24:28 2020 -0400 Source-Repo: googleapis/synthtool Source-Sha: e7034945fbdc0e79d3c57f6e299e5c90b0f11469 Source-Link: https://github.com/googleapis/synthtool/commit/e7034945fbdc0e79d3c57f6e299e5c90b0f11469 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0c1a1e61bcd..8c2572d25d8 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "c60fe437c8e3ce1bdebb191b5623b099bf43dc58" + "sha": "feba866be528785e3b9048eb3cf0f67f121fd4ee" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "1c92077459db3dc50741e878f98b08c6261181e0" + "sha": "e7034945fbdc0e79d3c57f6e299e5c90b0f11469" } } ], From ca9f32a2414fe16298600d176d2f6e587bd868b7 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 18 Jun 2020 07:47:44 -0700 Subject: [PATCH 550/820] chore: update node issue template (#689) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/37f383f8-7560-459e-b66c-def10ff830cb/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/b10590a4a1568548dd13cfcea9aa11d40898144b --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 8c2572d25d8..1241f0c1100 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "feba866be528785e3b9048eb3cf0f67f121fd4ee" + "sha": "0eea04136a68537901738e7906b9ecdf18a083ec" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "e7034945fbdc0e79d3c57f6e299e5c90b0f11469" + "sha": "b10590a4a1568548dd13cfcea9aa11d40898144b" } } ], From de7a33733628eca8e39794ddb929d13bf8e1dce4 Mon Sep 17 00:00:00 2001 From: Andrew Zammit Date: Fri, 26 Jun 2020 14:39:21 -0700 Subject: [PATCH 551/820] feat(synth): add datastore v1 admin api (#686) * feat(synth): add datastore v1 admin api * chore(synth): manually ran synthtool to bring in admin v1 api * chore(synth): manually ran synthtool (again, refresh after rebase) to bring in admin v1 api --- .../datastore/admin/v1/datastore_admin.proto | 425 + .../google/datastore/admin/v1/index.proto | 115 + .../nodejs-datastore/protos/protos.d.ts | 13023 ++++-- handwritten/nodejs-datastore/protos/protos.js | 38503 +++++++++------- .../nodejs-datastore/protos/protos.json | 650 +- .../src/v1/datastore_admin_client.ts | 1022 + .../src/v1/datastore_admin_client_config.json | 46 + .../src/v1/datastore_admin_proto_list.json | 4 + handwritten/nodejs-datastore/src/v1/index.ts | 1 + handwritten/nodejs-datastore/synth.metadata | 19 +- handwritten/nodejs-datastore/synth.py | 33 +- .../test/gapic_datastore_admin_v1.ts | 1019 + 12 files changed, 33993 insertions(+), 20867 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json create mode 100644 handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json create mode 100644 handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto new file mode 100644 index 00000000000..c0f47076651 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -0,0 +1,425 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.admin.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/datastore/admin/v1/index.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/timestamp.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option java_multiple_files = true; +option java_outer_classname = "DatastoreAdminProto"; +option java_package = "com.google.datastore.admin.v1"; +option ruby_package = "Google::Cloud::Datastore::Admin::V1"; + +// Google Cloud Datastore Admin API +// +// +// The Datastore Admin API provides several admin services for Cloud Datastore. +// +// ----------------------------------------------------------------------------- +// ## Concepts +// +// Project, namespace, kind, and entity as defined in the Google Cloud Datastore +// API. +// +// Operation: An Operation represents work being performed in the background. +// +// EntityFilter: Allows specifying a subset of entities in a project. This is +// specified as a combination of kinds and namespaces (either or both of which +// may be all). +// +// ----------------------------------------------------------------------------- +// ## Services +// +// # Export/Import +// +// The Export/Import service provides the ability to copy all or a subset of +// entities to/from Google Cloud Storage. +// +// Exported data may be imported into Cloud Datastore for any Google Cloud +// Platform project. It is not restricted to the export source project. It is +// possible to export from one project and then import into another. +// +// Exported data can also be loaded into Google BigQuery for analysis. +// +// Exports and imports are performed asynchronously. An Operation resource is +// created for each export/import. The state (including any errors encountered) +// of the export/import may be queried via the Operation resource. +// +// # Index +// +// The index service manages Cloud Datastore composite indexes. +// +// Index creation and deletion are performed asynchronously. +// An Operation resource is created for each such asynchronous operation. +// The state of the operation (including any errors encountered) +// may be queried via the Operation resource. +// +// # Operation +// +// The Operations collection provides a record of actions performed for the +// specified project (including any operations in progress). Operations are not +// created directly but through calls on other collections or resources. +// +// An operation that is not yet done may be cancelled. The request to cancel is +// asynchronous and the operation may continue to run for some time after the +// request to cancel is made. +// +// An operation that is done may be deleted so that it is no longer listed as +// part of the Operation collection. +// +// ListOperations returns all pending operations, but not completed operations. +// +// Operations are created by service DatastoreAdmin, +// but are accessed via service google.longrunning.Operations. +service DatastoreAdmin { + option (google.api.default_host) = "datastore.googleapis.com"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform," + "https://www.googleapis.com/auth/datastore"; + + // Exports a copy of all or a subset of entities from Google Cloud Datastore + // to another storage system, such as Google Cloud Storage. Recent updates to + // entities may not be reflected in the export. The export occurs in the + // background and its progress can be monitored and managed via the + // Operation resource that is created. The output of an export may only be + // used once the associated operation is done. If an export operation is + // cancelled before completion it may leave partial data behind in Google + // Cloud Storage. + rpc ExportEntities(ExportEntitiesRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/projects/{project_id}:export" + body: "*" + }; + option (google.api.method_signature) = "project_id,labels,entity_filter,output_url_prefix"; + option (google.longrunning.operation_info) = { + response_type: "ExportEntitiesResponse" + metadata_type: "ExportEntitiesMetadata" + }; + } + + // Imports entities into Google Cloud Datastore. Existing entities with the + // same key are overwritten. The import occurs in the background and its + // progress can be monitored and managed via the Operation resource that is + // created. If an ImportEntities operation is cancelled, it is possible + // that a subset of the data has already been imported to Cloud Datastore. + rpc ImportEntities(ImportEntitiesRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/projects/{project_id}:import" + body: "*" + }; + option (google.api.method_signature) = "project_id,labels,input_url,entity_filter"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "ImportEntitiesMetadata" + }; + } + + // Gets an index. + rpc GetIndex(GetIndexRequest) returns (Index) { + option (google.api.http) = { + get: "/v1/projects/{project_id}/indexes/{index_id}" + }; + } + + // Lists the indexes that match the specified filters. Datastore uses an + // eventually consistent query to fetch the list of indexes and may + // occasionally return stale results. + rpc ListIndexes(ListIndexesRequest) returns (ListIndexesResponse) { + option (google.api.http) = { + get: "/v1/projects/{project_id}/indexes" + }; + } +} + +// Metadata common to all Datastore Admin operations. +message CommonMetadata { + // The various possible states for an ongoing Operation. + enum State { + // Unspecified. + STATE_UNSPECIFIED = 0; + + // Request is being prepared for processing. + INITIALIZING = 1; + + // Request is actively being processed. + PROCESSING = 2; + + // Request is in the process of being cancelled after user called + // google.longrunning.Operations.CancelOperation on the operation. + CANCELLING = 3; + + // Request has been processed and is in its finalization stage. + FINALIZING = 4; + + // Request has completed successfully. + SUCCESSFUL = 5; + + // Request has finished being processed, but encountered an error. + FAILED = 6; + + // Request has finished being cancelled after user called + // google.longrunning.Operations.CancelOperation. + CANCELLED = 7; + } + + // The time that work began on the operation. + google.protobuf.Timestamp start_time = 1; + + // The time the operation ended, either successfully or otherwise. + google.protobuf.Timestamp end_time = 2; + + // The type of the operation. Can be used as a filter in + // ListOperationsRequest. + OperationType operation_type = 3; + + // The client-assigned labels which were provided when the operation was + // created. May also include additional labels. + map labels = 4; + + // The current state of the Operation. + State state = 5; +} + +// Operation types. +enum OperationType { + // Unspecified. + OPERATION_TYPE_UNSPECIFIED = 0; + + // ExportEntities. + EXPORT_ENTITIES = 1; + + // ImportEntities. + IMPORT_ENTITIES = 2; + + // CreateIndex. + CREATE_INDEX = 3; + + // DeleteIndex. + DELETE_INDEX = 4; +} + +// Measures the progress of a particular metric. +message Progress { + // The amount of work that has been completed. Note that this may be greater + // than work_estimated. + int64 work_completed = 1; + + // An estimate of how much work needs to be performed. May be zero if the + // work estimate is unavailable. + int64 work_estimated = 2; +} + +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.ExportEntities][google.datastore.admin.v1.DatastoreAdmin.ExportEntities]. +message ExportEntitiesRequest { + // Required. Project ID against which to make the request. + string project_id = 1 [(google.api.field_behavior) = REQUIRED]; + + // Client-assigned labels. + map labels = 2; + + // Description of what data from the project is included in the export. + EntityFilter entity_filter = 3; + + // Required. Location for the export metadata and data files. + // + // The full resource URL of the external storage location. Currently, only + // Google Cloud Storage is supported. So output_url_prefix should be of the + // form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the + // name of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional Cloud + // Storage namespace path (this is not a Cloud Datastore namespace). For more + // information about Cloud Storage namespace paths, see + // [Object name + // considerations](https://cloud.google.com/storage/docs/naming#object-considerations). + // + // The resulting files will be nested deeper than the specified URL prefix. + // The final output URL will be provided in the + // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] field. That + // value should be used for subsequent ImportEntities operations. + // + // By nesting the data files deeper, the same Cloud Storage bucket can be used + // in multiple ExportEntities operations without conflict. + string output_url_prefix = 4 [(google.api.field_behavior) = REQUIRED]; +} + +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.ImportEntities][google.datastore.admin.v1.DatastoreAdmin.ImportEntities]. +message ImportEntitiesRequest { + // Required. Project ID against which to make the request. + string project_id = 1 [(google.api.field_behavior) = REQUIRED]; + + // Client-assigned labels. + map labels = 2; + + // Required. The full resource URL of the external storage location. Currently, only + // Google Cloud Storage is supported. So input_url should be of the form: + // `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where + // `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is + // an optional Cloud Storage namespace path (this is not a Cloud Datastore + // namespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file written + // by the ExportEntities operation. For more information about Cloud Storage + // namespace paths, see + // [Object name + // considerations](https://cloud.google.com/storage/docs/naming#object-considerations). + // + // For more information, see + // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url]. + string input_url = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optionally specify which kinds/namespaces are to be imported. If provided, + // the list must be a subset of the EntityFilter used in creating the export, + // otherwise a FAILED_PRECONDITION error will be returned. If no filter is + // specified then all entities from the export are imported. + EntityFilter entity_filter = 4; +} + +// The response for +// [google.datastore.admin.v1.DatastoreAdmin.ExportEntities][google.datastore.admin.v1.DatastoreAdmin.ExportEntities]. +message ExportEntitiesResponse { + // Location of the output metadata file. This can be used to begin an import + // into Cloud Datastore (this project or another project). See + // [google.datastore.admin.v1.ImportEntitiesRequest.input_url][google.datastore.admin.v1.ImportEntitiesRequest.input_url]. + // Only present if the operation completed successfully. + string output_url = 1; +} + +// Metadata for ExportEntities operations. +message ExportEntitiesMetadata { + // Metadata common to all Datastore Admin operations. + CommonMetadata common = 1; + + // An estimate of the number of entities processed. + Progress progress_entities = 2; + + // An estimate of the number of bytes processed. + Progress progress_bytes = 3; + + // Description of which entities are being exported. + EntityFilter entity_filter = 4; + + // Location for the export metadata and data files. This will be the same + // value as the + // [google.datastore.admin.v1.ExportEntitiesRequest.output_url_prefix][google.datastore.admin.v1.ExportEntitiesRequest.output_url_prefix] + // field. The final output location is provided in + // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url]. + string output_url_prefix = 5; +} + +// Metadata for ImportEntities operations. +message ImportEntitiesMetadata { + // Metadata common to all Datastore Admin operations. + CommonMetadata common = 1; + + // An estimate of the number of entities processed. + Progress progress_entities = 2; + + // An estimate of the number of bytes processed. + Progress progress_bytes = 3; + + // Description of which entities are being imported. + EntityFilter entity_filter = 4; + + // The location of the import metadata file. This will be the same value as + // the [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] field. + string input_url = 5; +} + +// Identifies a subset of entities in a project. This is specified as +// combinations of kinds and namespaces (either or both of which may be all, as +// described in the following examples). +// Example usage: +// +// Entire project: +// kinds=[], namespace_ids=[] +// +// Kinds Foo and Bar in all namespaces: +// kinds=['Foo', 'Bar'], namespace_ids=[] +// +// Kinds Foo and Bar only in the default namespace: +// kinds=['Foo', 'Bar'], namespace_ids=[''] +// +// Kinds Foo and Bar in both the default and Baz namespaces: +// kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz'] +// +// The entire Baz namespace: +// kinds=[], namespace_ids=['Baz'] +message EntityFilter { + // If empty, then this represents all kinds. + repeated string kinds = 1; + + // An empty list represents all namespaces. This is the preferred + // usage for projects that don't use namespaces. + // + // An empty string element represents the default namespace. This should be + // used if the project has data in non-default namespaces, but doesn't want to + // include them. + // Each namespace in this list must be unique. + repeated string namespace_ids = 2; +} + +// The request for [google.datastore.admin.v1.DatastoreAdmin.GetIndex][google.datastore.admin.v1.DatastoreAdmin.GetIndex]. +message GetIndexRequest { + // Project ID against which to make the request. + string project_id = 1; + + // The resource ID of the index to get. + string index_id = 3; +} + +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.ListIndexes][google.datastore.admin.v1.DatastoreAdmin.ListIndexes]. +message ListIndexesRequest { + // Project ID against which to make the request. + string project_id = 1; + + string filter = 3; + + // The maximum number of items to return. If zero, then all results will be + // returned. + int32 page_size = 4; + + // The next_page_token value returned from a previous List request, if any. + string page_token = 5; +} + +// The response for +// [google.datastore.admin.v1.DatastoreAdmin.ListIndexes][google.datastore.admin.v1.DatastoreAdmin.ListIndexes]. +message ListIndexesResponse { + // The indexes. + repeated Index indexes = 1; + + // The standard List next-page token. + string next_page_token = 2; +} + +// Metadata for Index operations. +message IndexOperationMetadata { + // Metadata common to all Datastore Admin operations. + CommonMetadata common = 1; + + // An estimate of the number of entities processed. + Progress progress_entities = 2; + + // The index resource ID that this operation is acting on. + string index_id = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto new file mode 100644 index 00000000000..96c2278b3b6 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -0,0 +1,115 @@ +// Copyright 2019 Google LLC. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.admin.v1; + +import "google/api/field_behavior.proto"; +import "google/api/annotations.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option java_multiple_files = true; +option java_outer_classname = "IndexProto"; +option java_package = "com.google.datastore.admin.v1"; +option ruby_package = "Google::Cloud::Datastore::Admin::V1"; + +// A minimal index definition. +message Index { + // A property of an index. + message IndexedProperty { + // Required. The property name to index. + string name = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The indexed property's direction. Must not be DIRECTION_UNSPECIFIED. + Direction direction = 2 [(google.api.field_behavior) = REQUIRED]; + } + + // For an ordered index, specifies whether each of the entity's ancestors + // will be included. + enum AncestorMode { + // The ancestor mode is unspecified. + ANCESTOR_MODE_UNSPECIFIED = 0; + + // Do not include the entity's ancestors in the index. + NONE = 1; + + // Include all the entity's ancestors in the index. + ALL_ANCESTORS = 2; + } + + // The direction determines how a property is indexed. + enum Direction { + // The direction is unspecified. + DIRECTION_UNSPECIFIED = 0; + + // The property's values are indexed so as to support sequencing in + // ascending order and also query by <, >, <=, >=, and =. + ASCENDING = 1; + + // The property's values are indexed so as to support sequencing in + // descending order and also query by <, >, <=, >=, and =. + DESCENDING = 2; + } + + // The possible set of states of an index. + enum State { + // The state is unspecified. + STATE_UNSPECIFIED = 0; + + // The index is being created, and cannot be used by queries. + // There is an active long-running operation for the index. + // The index is updated when writing an entity. + // Some index data may exist. + CREATING = 1; + + // The index is ready to be used. + // The index is updated when writing an entity. + // The index is fully populated from all stored entities it applies to. + READY = 2; + + // The index is being deleted, and cannot be used by queries. + // There is an active long-running operation for the index. + // The index is not updated when writing an entity. + // Some index data may exist. + DELETING = 3; + + // The index was being created or deleted, but something went wrong. + // The index cannot by used by queries. + // There is no active long-running operation for the index, + // and the most recently finished long-running operation failed. + // The index is not updated when writing an entity. + // Some index data may exist. + ERROR = 4; + } + + // Output only. Project ID. + string project_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The resource ID of the index. + string index_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Required. The entity kind to which this index applies. + string kind = 4 [(google.api.field_behavior) = REQUIRED]; + + // Required. The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED. + AncestorMode ancestor = 5 [(google.api.field_behavior) = REQUIRED]; + + // Required. An ordered sequence of property names and their index attributes. + repeated IndexedProperty properties = 6 [(google.api.field_behavior) = REQUIRED]; + + // Output only. The state of the index. + State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; +} diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index c73bd6c9324..994117f10ac 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -20,8786 +20,11711 @@ export namespace google { /** Namespace datastore. */ namespace datastore { - /** Namespace v1. */ - namespace v1 { + /** Namespace admin. */ + namespace admin { - /** Represents a Datastore */ - class Datastore extends $protobuf.rpc.Service { + /** Namespace v1. */ + namespace v1 { - /** - * Constructs a new Datastore service. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - */ - constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + /** Represents a DatastoreAdmin */ + class DatastoreAdmin extends $protobuf.rpc.Service { - /** - * Creates new Datastore service using the specified rpc implementation. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - * @returns RPC service. Useful where requests and/or responses are streamed. - */ - public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; + /** + * Constructs a new DatastoreAdmin service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @param callback Node-style callback called with the error, if any, and LookupResponse - */ - public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; + /** + * Creates new DatastoreAdmin service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): DatastoreAdmin; - /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @returns Promise - */ - public lookup(request: google.datastore.v1.ILookupRequest): Promise; + /** + * Calls ExportEntities. + * @param request ExportEntitiesRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation + */ + public exportEntities(request: google.datastore.admin.v1.IExportEntitiesRequest, callback: google.datastore.admin.v1.DatastoreAdmin.ExportEntitiesCallback): void; - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RunQueryResponse - */ - public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; + /** + * Calls ExportEntities. + * @param request ExportEntitiesRequest message or plain object + * @returns Promise + */ + public exportEntities(request: google.datastore.admin.v1.IExportEntitiesRequest): Promise; - /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @returns Promise - */ - public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; + /** + * Calls ImportEntities. + * @param request ImportEntitiesRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation + */ + public importEntities(request: google.datastore.admin.v1.IImportEntitiesRequest, callback: google.datastore.admin.v1.DatastoreAdmin.ImportEntitiesCallback): void; - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse - */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; + /** + * Calls ImportEntities. + * @param request ImportEntitiesRequest message or plain object + * @returns Promise + */ + public importEntities(request: google.datastore.admin.v1.IImportEntitiesRequest): Promise; - /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @returns Promise - */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; + /** + * Calls GetIndex. + * @param request GetIndexRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Index + */ + public getIndex(request: google.datastore.admin.v1.IGetIndexRequest, callback: google.datastore.admin.v1.DatastoreAdmin.GetIndexCallback): void; - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @param callback Node-style callback called with the error, if any, and CommitResponse - */ - public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; + /** + * Calls GetIndex. + * @param request GetIndexRequest message or plain object + * @returns Promise + */ + public getIndex(request: google.datastore.admin.v1.IGetIndexRequest): Promise; - /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @returns Promise - */ - public commit(request: google.datastore.v1.ICommitRequest): Promise; + /** + * Calls ListIndexes. + * @param request ListIndexesRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ListIndexesResponse + */ + public listIndexes(request: google.datastore.admin.v1.IListIndexesRequest, callback: google.datastore.admin.v1.DatastoreAdmin.ListIndexesCallback): void; - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RollbackResponse - */ - public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; + /** + * Calls ListIndexes. + * @param request ListIndexesRequest message or plain object + * @returns Promise + */ + public listIndexes(request: google.datastore.admin.v1.IListIndexesRequest): Promise; + } - /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @returns Promise - */ - public rollback(request: google.datastore.v1.IRollbackRequest): Promise; + namespace DatastoreAdmin { - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse - */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#exportEntities}. + * @param error Error, if any + * @param [response] Operation + */ + type ExportEntitiesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; - /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @returns Promise - */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#importEntities}. + * @param error Error, if any + * @param [response] Operation + */ + type ImportEntitiesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse - */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. + * @param error Error, if any + * @param [response] Index + */ + type GetIndexCallback = (error: (Error|null), response?: google.datastore.admin.v1.Index) => void; - /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @returns Promise - */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; - } + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#listIndexes}. + * @param error Error, if any + * @param [response] ListIndexesResponse + */ + type ListIndexesCallback = (error: (Error|null), response?: google.datastore.admin.v1.ListIndexesResponse) => void; + } - namespace Datastore { + /** Properties of a CommonMetadata. */ + interface ICommonMetadata { - /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. - * @param error Error, if any - * @param [response] LookupResponse - */ - type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; + /** CommonMetadata startTime */ + startTime?: (google.protobuf.ITimestamp|null); - /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. - * @param error Error, if any - * @param [response] RunQueryResponse - */ - type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; + /** CommonMetadata endTime */ + endTime?: (google.protobuf.ITimestamp|null); - /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. - * @param error Error, if any - * @param [response] BeginTransactionResponse - */ - type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; + /** CommonMetadata operationType */ + operationType?: (google.datastore.admin.v1.OperationType|keyof typeof google.datastore.admin.v1.OperationType|null); - /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. - * @param error Error, if any - * @param [response] CommitResponse - */ - type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; + /** CommonMetadata labels */ + labels?: ({ [k: string]: string }|null); - /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. - * @param error Error, if any - * @param [response] RollbackResponse - */ - type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; + /** CommonMetadata state */ + state?: (google.datastore.admin.v1.CommonMetadata.State|keyof typeof google.datastore.admin.v1.CommonMetadata.State|null); + } - /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. - * @param error Error, if any - * @param [response] AllocateIdsResponse - */ - type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; + /** Represents a CommonMetadata. */ + class CommonMetadata implements ICommonMetadata { - /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. - * @param error Error, if any - * @param [response] ReserveIdsResponse - */ - type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; - } + /** + * Constructs a new CommonMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.ICommonMetadata); - /** Properties of a LookupRequest. */ - interface ILookupRequest { + /** CommonMetadata startTime. */ + public startTime?: (google.protobuf.ITimestamp|null); - /** LookupRequest projectId */ - projectId?: (string|null); + /** CommonMetadata endTime. */ + public endTime?: (google.protobuf.ITimestamp|null); - /** LookupRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); + /** CommonMetadata operationType. */ + public operationType: (google.datastore.admin.v1.OperationType|keyof typeof google.datastore.admin.v1.OperationType); - /** LookupRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } + /** CommonMetadata labels. */ + public labels: { [k: string]: string }; - /** Represents a LookupRequest. */ - class LookupRequest implements ILookupRequest { + /** CommonMetadata state. */ + public state: (google.datastore.admin.v1.CommonMetadata.State|keyof typeof google.datastore.admin.v1.CommonMetadata.State); - /** - * Constructs a new LookupRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupRequest); + /** + * Creates a new CommonMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns CommonMetadata instance + */ + public static create(properties?: google.datastore.admin.v1.ICommonMetadata): google.datastore.admin.v1.CommonMetadata; - /** LookupRequest projectId. */ - public projectId: string; + /** + * Encodes the specified CommonMetadata message. Does not implicitly {@link google.datastore.admin.v1.CommonMetadata.verify|verify} messages. + * @param message CommonMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.ICommonMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** LookupRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); + /** + * Encodes the specified CommonMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.CommonMetadata.verify|verify} messages. + * @param message CommonMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.ICommonMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** LookupRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** + * Decodes a CommonMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommonMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.CommonMetadata; - /** - * Creates a new LookupRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupRequest instance - */ - public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; + /** + * Decodes a CommonMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommonMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.CommonMetadata; - /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies a CommonMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a CommonMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommonMetadata + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.CommonMetadata; - /** - * Decodes a LookupRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; + /** + * Creates a plain object from a CommonMetadata message. Also converts values to other types if specified. + * @param message CommonMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.CommonMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; + /** + * Converts this CommonMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Verifies a LookupRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + namespace CommonMetadata { + + /** State enum. */ + enum State { + STATE_UNSPECIFIED = 0, + INITIALIZING = 1, + PROCESSING = 2, + CANCELLING = 3, + FINALIZING = 4, + SUCCESSFUL = 5, + FAILED = 6, + CANCELLED = 7 + } + } - /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; + /** OperationType enum. */ + enum OperationType { + OPERATION_TYPE_UNSPECIFIED = 0, + EXPORT_ENTITIES = 1, + IMPORT_ENTITIES = 2, + CREATE_INDEX = 3, + DELETE_INDEX = 4 + } - /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. - * @param message LookupRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Properties of a Progress. */ + interface IProgress { - /** - * Converts this LookupRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Progress workCompleted */ + workCompleted?: (number|Long|string|null); - /** Properties of a LookupResponse. */ - interface ILookupResponse { + /** Progress workEstimated */ + workEstimated?: (number|Long|string|null); + } - /** LookupResponse found */ - found?: (google.datastore.v1.IEntityResult[]|null); + /** Represents a Progress. */ + class Progress implements IProgress { - /** LookupResponse missing */ - missing?: (google.datastore.v1.IEntityResult[]|null); + /** + * Constructs a new Progress. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IProgress); - /** LookupResponse deferred */ - deferred?: (google.datastore.v1.IKey[]|null); - } + /** Progress workCompleted. */ + public workCompleted: (number|Long|string); - /** Represents a LookupResponse. */ - class LookupResponse implements ILookupResponse { + /** Progress workEstimated. */ + public workEstimated: (number|Long|string); - /** - * Constructs a new LookupResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ILookupResponse); + /** + * Creates a new Progress instance using the specified properties. + * @param [properties] Properties to set + * @returns Progress instance + */ + public static create(properties?: google.datastore.admin.v1.IProgress): google.datastore.admin.v1.Progress; - /** LookupResponse found. */ - public found: google.datastore.v1.IEntityResult[]; + /** + * Encodes the specified Progress message. Does not implicitly {@link google.datastore.admin.v1.Progress.verify|verify} messages. + * @param message Progress message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IProgress, writer?: $protobuf.Writer): $protobuf.Writer; - /** LookupResponse missing. */ - public missing: google.datastore.v1.IEntityResult[]; + /** + * Encodes the specified Progress message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Progress.verify|verify} messages. + * @param message Progress message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IProgress, writer?: $protobuf.Writer): $protobuf.Writer; - /** LookupResponse deferred. */ - public deferred: google.datastore.v1.IKey[]; + /** + * Decodes a Progress message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Progress + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.Progress; - /** - * Creates a new LookupResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns LookupResponse instance - */ - public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; + /** + * Decodes a Progress message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Progress + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.Progress; - /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies a Progress message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a Progress message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Progress + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.Progress; - /** - * Decodes a LookupResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; + /** + * Creates a plain object from a Progress message. Also converts values to other types if specified. + * @param message Progress + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.Progress, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; + /** + * Converts this Progress to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Verifies a LookupResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Properties of an ExportEntitiesRequest. */ + interface IExportEntitiesRequest { - /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LookupResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; + /** ExportEntitiesRequest projectId */ + projectId?: (string|null); - /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. - * @param message LookupResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** ExportEntitiesRequest labels */ + labels?: ({ [k: string]: string }|null); - /** - * Converts this LookupResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** ExportEntitiesRequest entityFilter */ + entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** Properties of a RunQueryRequest. */ - interface IRunQueryRequest { + /** ExportEntitiesRequest outputUrlPrefix */ + outputUrlPrefix?: (string|null); + } - /** RunQueryRequest projectId */ - projectId?: (string|null); + /** Represents an ExportEntitiesRequest. */ + class ExportEntitiesRequest implements IExportEntitiesRequest { - /** RunQueryRequest partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); + /** + * Constructs a new ExportEntitiesRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IExportEntitiesRequest); - /** RunQueryRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); + /** ExportEntitiesRequest projectId. */ + public projectId: string; - /** RunQueryRequest query */ - query?: (google.datastore.v1.IQuery|null); + /** ExportEntitiesRequest labels. */ + public labels: { [k: string]: string }; - /** RunQueryRequest gqlQuery */ - gqlQuery?: (google.datastore.v1.IGqlQuery|null); - } + /** ExportEntitiesRequest entityFilter. */ + public entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** Represents a RunQueryRequest. */ - class RunQueryRequest implements IRunQueryRequest { + /** ExportEntitiesRequest outputUrlPrefix. */ + public outputUrlPrefix: string; - /** - * Constructs a new RunQueryRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryRequest); + /** + * Creates a new ExportEntitiesRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ExportEntitiesRequest instance + */ + public static create(properties?: google.datastore.admin.v1.IExportEntitiesRequest): google.datastore.admin.v1.ExportEntitiesRequest; - /** RunQueryRequest projectId. */ - public projectId: string; + /** + * Encodes the specified ExportEntitiesRequest message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesRequest.verify|verify} messages. + * @param message ExportEntitiesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IExportEntitiesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** RunQueryRequest partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); + /** + * Encodes the specified ExportEntitiesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesRequest.verify|verify} messages. + * @param message ExportEntitiesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IExportEntitiesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** RunQueryRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); + /** + * Decodes an ExportEntitiesRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ExportEntitiesRequest; - /** RunQueryRequest query. */ - public query?: (google.datastore.v1.IQuery|null); + /** + * Decodes an ExportEntitiesRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ExportEntitiesRequest; - /** RunQueryRequest gqlQuery. */ - public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** + * Verifies an ExportEntitiesRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** RunQueryRequest queryType. */ - public queryType?: ("query"|"gqlQuery"); + /** + * Creates an ExportEntitiesRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExportEntitiesRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ExportEntitiesRequest; - /** - * Creates a new RunQueryRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryRequest instance - */ - public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; + /** + * Creates a plain object from an ExportEntitiesRequest message. Also converts values to other types if specified. + * @param message ExportEntitiesRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ExportEntitiesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Converts this ExportEntitiesRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Decodes a RunQueryRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; + /** Properties of an ImportEntitiesRequest. */ + interface IImportEntitiesRequest { - /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; + /** ImportEntitiesRequest projectId */ + projectId?: (string|null); - /** - * Verifies a RunQueryRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** ImportEntitiesRequest labels */ + labels?: ({ [k: string]: string }|null); - /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; + /** ImportEntitiesRequest inputUrl */ + inputUrl?: (string|null); - /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. - * @param message RunQueryRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** ImportEntitiesRequest entityFilter */ + entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); + } - /** - * Converts this RunQueryRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Represents an ImportEntitiesRequest. */ + class ImportEntitiesRequest implements IImportEntitiesRequest { - /** Properties of a RunQueryResponse. */ - interface IRunQueryResponse { + /** + * Constructs a new ImportEntitiesRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IImportEntitiesRequest); - /** RunQueryResponse batch */ - batch?: (google.datastore.v1.IQueryResultBatch|null); + /** ImportEntitiesRequest projectId. */ + public projectId: string; - /** RunQueryResponse query */ - query?: (google.datastore.v1.IQuery|null); - } + /** ImportEntitiesRequest labels. */ + public labels: { [k: string]: string }; - /** Represents a RunQueryResponse. */ - class RunQueryResponse implements IRunQueryResponse { + /** ImportEntitiesRequest inputUrl. */ + public inputUrl: string; - /** - * Constructs a new RunQueryResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryResponse); + /** ImportEntitiesRequest entityFilter. */ + public entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** RunQueryResponse batch. */ - public batch?: (google.datastore.v1.IQueryResultBatch|null); + /** + * Creates a new ImportEntitiesRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ImportEntitiesRequest instance + */ + public static create(properties?: google.datastore.admin.v1.IImportEntitiesRequest): google.datastore.admin.v1.ImportEntitiesRequest; - /** RunQueryResponse query. */ - public query?: (google.datastore.v1.IQuery|null); + /** + * Encodes the specified ImportEntitiesRequest message. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesRequest.verify|verify} messages. + * @param message ImportEntitiesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IImportEntitiesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a new RunQueryResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RunQueryResponse instance - */ - public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; + /** + * Encodes the specified ImportEntitiesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesRequest.verify|verify} messages. + * @param message ImportEntitiesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IImportEntitiesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes an ImportEntitiesRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ImportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ImportEntitiesRequest; - /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes an ImportEntitiesRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ImportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ImportEntitiesRequest; - /** - * Decodes a RunQueryResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; + /** + * Verifies an ImportEntitiesRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; + /** + * Creates an ImportEntitiesRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ImportEntitiesRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ImportEntitiesRequest; - /** - * Verifies a RunQueryResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Creates a plain object from an ImportEntitiesRequest message. Also converts values to other types if specified. + * @param message ImportEntitiesRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ImportEntitiesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RunQueryResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; + /** + * Converts this ImportEntitiesRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @param message RunQueryResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Properties of an ExportEntitiesResponse. */ + interface IExportEntitiesResponse { - /** - * Converts this RunQueryResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** ExportEntitiesResponse outputUrl */ + outputUrl?: (string|null); + } - /** Properties of a BeginTransactionRequest. */ - interface IBeginTransactionRequest { + /** Represents an ExportEntitiesResponse. */ + class ExportEntitiesResponse implements IExportEntitiesResponse { - /** BeginTransactionRequest projectId */ - projectId?: (string|null); + /** + * Constructs a new ExportEntitiesResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IExportEntitiesResponse); - /** BeginTransactionRequest transactionOptions */ - transactionOptions?: (google.datastore.v1.ITransactionOptions|null); - } + /** ExportEntitiesResponse outputUrl. */ + public outputUrl: string; - /** Represents a BeginTransactionRequest. */ - class BeginTransactionRequest implements IBeginTransactionRequest { + /** + * Creates a new ExportEntitiesResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ExportEntitiesResponse instance + */ + public static create(properties?: google.datastore.admin.v1.IExportEntitiesResponse): google.datastore.admin.v1.ExportEntitiesResponse; - /** - * Constructs a new BeginTransactionRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionRequest); + /** + * Encodes the specified ExportEntitiesResponse message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesResponse.verify|verify} messages. + * @param message ExportEntitiesResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IExportEntitiesResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** BeginTransactionRequest projectId. */ - public projectId: string; + /** + * Encodes the specified ExportEntitiesResponse message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesResponse.verify|verify} messages. + * @param message ExportEntitiesResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IExportEntitiesResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** BeginTransactionRequest transactionOptions. */ - public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + /** + * Decodes an ExportEntitiesResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExportEntitiesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ExportEntitiesResponse; - /** - * Creates a new BeginTransactionRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionRequest instance - */ - public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; + /** + * Decodes an ExportEntitiesResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExportEntitiesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ExportEntitiesResponse; - /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies an ExportEntitiesResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates an ExportEntitiesResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExportEntitiesResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ExportEntitiesResponse; - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; + /** + * Creates a plain object from an ExportEntitiesResponse message. Also converts values to other types if specified. + * @param message ExportEntitiesResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ExportEntitiesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; + /** + * Converts this ExportEntitiesResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Verifies a BeginTransactionRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Properties of an ExportEntitiesMetadata. */ + interface IExportEntitiesMetadata { - /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; + /** ExportEntitiesMetadata common */ + common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. - * @param message BeginTransactionRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** ExportEntitiesMetadata progressEntities */ + progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** - * Converts this BeginTransactionRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** ExportEntitiesMetadata progressBytes */ + progressBytes?: (google.datastore.admin.v1.IProgress|null); - /** Properties of a BeginTransactionResponse. */ - interface IBeginTransactionResponse { + /** ExportEntitiesMetadata entityFilter */ + entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** BeginTransactionResponse transaction */ - transaction?: (Uint8Array|string|null); - } + /** ExportEntitiesMetadata outputUrlPrefix */ + outputUrlPrefix?: (string|null); + } - /** Represents a BeginTransactionResponse. */ - class BeginTransactionResponse implements IBeginTransactionResponse { + /** Represents an ExportEntitiesMetadata. */ + class ExportEntitiesMetadata implements IExportEntitiesMetadata { - /** - * Constructs a new BeginTransactionResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IBeginTransactionResponse); + /** + * Constructs a new ExportEntitiesMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IExportEntitiesMetadata); - /** BeginTransactionResponse transaction. */ - public transaction: (Uint8Array|string); + /** ExportEntitiesMetadata common. */ + public common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** - * Creates a new BeginTransactionResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns BeginTransactionResponse instance - */ - public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; + /** ExportEntitiesMetadata progressEntities. */ + public progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** ExportEntitiesMetadata progressBytes. */ + public progressBytes?: (google.datastore.admin.v1.IProgress|null); - /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** ExportEntitiesMetadata entityFilter. */ + public entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; + /** ExportEntitiesMetadata outputUrlPrefix. */ + public outputUrlPrefix: string; - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; + /** + * Creates a new ExportEntitiesMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns ExportEntitiesMetadata instance + */ + public static create(properties?: google.datastore.admin.v1.IExportEntitiesMetadata): google.datastore.admin.v1.ExportEntitiesMetadata; - /** - * Verifies a BeginTransactionResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Encodes the specified ExportEntitiesMetadata message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesMetadata.verify|verify} messages. + * @param message ExportEntitiesMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IExportEntitiesMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BeginTransactionResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; + /** + * Encodes the specified ExportEntitiesMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesMetadata.verify|verify} messages. + * @param message ExportEntitiesMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IExportEntitiesMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @param message BeginTransactionResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Decodes an ExportEntitiesMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ExportEntitiesMetadata; - /** - * Converts this BeginTransactionResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Decodes an ExportEntitiesMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ExportEntitiesMetadata; - /** Properties of a RollbackRequest. */ - interface IRollbackRequest { + /** + * Verifies an ExportEntitiesMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** RollbackRequest projectId */ - projectId?: (string|null); + /** + * Creates an ExportEntitiesMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExportEntitiesMetadata + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ExportEntitiesMetadata; - /** RollbackRequest transaction */ - transaction?: (Uint8Array|string|null); - } + /** + * Creates a plain object from an ExportEntitiesMetadata message. Also converts values to other types if specified. + * @param message ExportEntitiesMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ExportEntitiesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Represents a RollbackRequest. */ - class RollbackRequest implements IRollbackRequest { + /** + * Converts this ExportEntitiesMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Constructs a new RollbackRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackRequest); + /** Properties of an ImportEntitiesMetadata. */ + interface IImportEntitiesMetadata { - /** RollbackRequest projectId. */ - public projectId: string; + /** ImportEntitiesMetadata common */ + common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** RollbackRequest transaction. */ - public transaction: (Uint8Array|string); + /** ImportEntitiesMetadata progressEntities */ + progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** - * Creates a new RollbackRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackRequest instance - */ - public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; + /** ImportEntitiesMetadata progressBytes */ + progressBytes?: (google.datastore.admin.v1.IProgress|null); - /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** ImportEntitiesMetadata entityFilter */ + entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** ImportEntitiesMetadata inputUrl */ + inputUrl?: (string|null); + } - /** - * Decodes a RollbackRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; + /** Represents an ImportEntitiesMetadata. */ + class ImportEntitiesMetadata implements IImportEntitiesMetadata { - /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; + /** + * Constructs a new ImportEntitiesMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IImportEntitiesMetadata); - /** - * Verifies a RollbackRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** ImportEntitiesMetadata common. */ + public common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; + /** ImportEntitiesMetadata progressEntities. */ + public progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. - * @param message RollbackRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** ImportEntitiesMetadata progressBytes. */ + public progressBytes?: (google.datastore.admin.v1.IProgress|null); - /** - * Converts this RollbackRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** ImportEntitiesMetadata entityFilter. */ + public entityFilter?: (google.datastore.admin.v1.IEntityFilter|null); - /** Properties of a RollbackResponse. */ - interface IRollbackResponse { - } + /** ImportEntitiesMetadata inputUrl. */ + public inputUrl: string; - /** Represents a RollbackResponse. */ - class RollbackResponse implements IRollbackResponse { + /** + * Creates a new ImportEntitiesMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns ImportEntitiesMetadata instance + */ + public static create(properties?: google.datastore.admin.v1.IImportEntitiesMetadata): google.datastore.admin.v1.ImportEntitiesMetadata; - /** - * Constructs a new RollbackResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRollbackResponse); + /** + * Encodes the specified ImportEntitiesMetadata message. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesMetadata.verify|verify} messages. + * @param message ImportEntitiesMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IImportEntitiesMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a new RollbackResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns RollbackResponse instance - */ - public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; + /** + * Encodes the specified ImportEntitiesMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesMetadata.verify|verify} messages. + * @param message ImportEntitiesMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IImportEntitiesMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes an ImportEntitiesMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ImportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ImportEntitiesMetadata; - /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes an ImportEntitiesMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ImportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ImportEntitiesMetadata; - /** - * Decodes a RollbackResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; + /** + * Verifies an ImportEntitiesMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; + /** + * Creates an ImportEntitiesMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ImportEntitiesMetadata + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ImportEntitiesMetadata; - /** - * Verifies a RollbackResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Creates a plain object from an ImportEntitiesMetadata message. Also converts values to other types if specified. + * @param message ImportEntitiesMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ImportEntitiesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns RollbackResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; + /** + * Converts this ImportEntitiesMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. - * @param message RollbackResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Properties of an EntityFilter. */ + interface IEntityFilter { - /** - * Converts this RollbackResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** EntityFilter kinds */ + kinds?: (string[]|null); - /** Properties of a CommitRequest. */ - interface ICommitRequest { + /** EntityFilter namespaceIds */ + namespaceIds?: (string[]|null); + } - /** CommitRequest projectId */ - projectId?: (string|null); + /** Represents an EntityFilter. */ + class EntityFilter implements IEntityFilter { - /** CommitRequest mode */ - mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); + /** + * Constructs a new EntityFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IEntityFilter); - /** CommitRequest transaction */ - transaction?: (Uint8Array|string|null); + /** EntityFilter kinds. */ + public kinds: string[]; - /** CommitRequest mutations */ - mutations?: (google.datastore.v1.IMutation[]|null); - } + /** EntityFilter namespaceIds. */ + public namespaceIds: string[]; - /** Represents a CommitRequest. */ - class CommitRequest implements ICommitRequest { + /** + * Creates a new EntityFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns EntityFilter instance + */ + public static create(properties?: google.datastore.admin.v1.IEntityFilter): google.datastore.admin.v1.EntityFilter; - /** - * Constructs a new CommitRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitRequest); + /** + * Encodes the specified EntityFilter message. Does not implicitly {@link google.datastore.admin.v1.EntityFilter.verify|verify} messages. + * @param message EntityFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IEntityFilter, writer?: $protobuf.Writer): $protobuf.Writer; - /** CommitRequest projectId. */ - public projectId: string; + /** + * Encodes the specified EntityFilter message, length delimited. Does not implicitly {@link google.datastore.admin.v1.EntityFilter.verify|verify} messages. + * @param message EntityFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IEntityFilter, writer?: $protobuf.Writer): $protobuf.Writer; - /** CommitRequest mode. */ - public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); + /** + * Decodes an EntityFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EntityFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.EntityFilter; - /** CommitRequest transaction. */ - public transaction: (Uint8Array|string); + /** + * Decodes an EntityFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EntityFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.EntityFilter; - /** CommitRequest mutations. */ - public mutations: google.datastore.v1.IMutation[]; + /** + * Verifies an EntityFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** CommitRequest transactionSelector. */ - public transactionSelector?: "transaction"; + /** + * Creates an EntityFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EntityFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.EntityFilter; - /** - * Creates a new CommitRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitRequest instance - */ - public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; + /** + * Creates a plain object from an EntityFilter message. Also converts values to other types if specified. + * @param message EntityFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.EntityFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Converts this EntityFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** Properties of a GetIndexRequest. */ + interface IGetIndexRequest { - /** - * Decodes a CommitRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; + /** GetIndexRequest projectId */ + projectId?: (string|null); - /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; + /** GetIndexRequest indexId */ + indexId?: (string|null); + } - /** - * Verifies a CommitRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Represents a GetIndexRequest. */ + class GetIndexRequest implements IGetIndexRequest { - /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; + /** + * Constructs a new GetIndexRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IGetIndexRequest); - /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. - * @param message CommitRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** GetIndexRequest projectId. */ + public projectId: string; - /** - * Converts this CommitRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** GetIndexRequest indexId. */ + public indexId: string; - namespace CommitRequest { + /** + * Creates a new GetIndexRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns GetIndexRequest instance + */ + public static create(properties?: google.datastore.admin.v1.IGetIndexRequest): google.datastore.admin.v1.GetIndexRequest; - /** Mode enum. */ - enum Mode { - MODE_UNSPECIFIED = 0, - TRANSACTIONAL = 1, - NON_TRANSACTIONAL = 2 - } - } + /** + * Encodes the specified GetIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.GetIndexRequest.verify|verify} messages. + * @param message GetIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IGetIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** Properties of a CommitResponse. */ - interface ICommitResponse { + /** + * Encodes the specified GetIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.GetIndexRequest.verify|verify} messages. + * @param message GetIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IGetIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** CommitResponse mutationResults */ - mutationResults?: (google.datastore.v1.IMutationResult[]|null); + /** + * Decodes a GetIndexRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GetIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.GetIndexRequest; - /** CommitResponse indexUpdates */ - indexUpdates?: (number|null); - } + /** + * Decodes a GetIndexRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GetIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.GetIndexRequest; - /** Represents a CommitResponse. */ - class CommitResponse implements ICommitResponse { + /** + * Verifies a GetIndexRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Constructs a new CommitResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitResponse); + /** + * Creates a GetIndexRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GetIndexRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.GetIndexRequest; - /** CommitResponse mutationResults. */ - public mutationResults: google.datastore.v1.IMutationResult[]; + /** + * Creates a plain object from a GetIndexRequest message. Also converts values to other types if specified. + * @param message GetIndexRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.GetIndexRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** CommitResponse indexUpdates. */ - public indexUpdates: number; + /** + * Converts this GetIndexRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a new CommitResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitResponse instance - */ - public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; + /** Properties of a ListIndexesRequest. */ + interface IListIndexesRequest { - /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** ListIndexesRequest projectId */ + projectId?: (string|null); - /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** ListIndexesRequest filter */ + filter?: (string|null); - /** - * Decodes a CommitResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; + /** ListIndexesRequest pageSize */ + pageSize?: (number|null); - /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; + /** ListIndexesRequest pageToken */ + pageToken?: (string|null); + } - /** - * Verifies a CommitResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Represents a ListIndexesRequest. */ + class ListIndexesRequest implements IListIndexesRequest { - /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; + /** + * Constructs a new ListIndexesRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IListIndexesRequest); - /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. - * @param message CommitResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** ListIndexesRequest projectId. */ + public projectId: string; - /** - * Converts this CommitResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** ListIndexesRequest filter. */ + public filter: string; - /** Properties of an AllocateIdsRequest. */ - interface IAllocateIdsRequest { + /** ListIndexesRequest pageSize. */ + public pageSize: number; - /** AllocateIdsRequest projectId */ - projectId?: (string|null); + /** ListIndexesRequest pageToken. */ + public pageToken: string; - /** AllocateIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } + /** + * Creates a new ListIndexesRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ListIndexesRequest instance + */ + public static create(properties?: google.datastore.admin.v1.IListIndexesRequest): google.datastore.admin.v1.ListIndexesRequest; - /** Represents an AllocateIdsRequest. */ - class AllocateIdsRequest implements IAllocateIdsRequest { + /** + * Encodes the specified ListIndexesRequest message. Does not implicitly {@link google.datastore.admin.v1.ListIndexesRequest.verify|verify} messages. + * @param message ListIndexesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IListIndexesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Constructs a new AllocateIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsRequest); + /** + * Encodes the specified ListIndexesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ListIndexesRequest.verify|verify} messages. + * @param message ListIndexesRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IListIndexesRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** AllocateIdsRequest projectId. */ - public projectId: string; + /** + * Decodes a ListIndexesRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListIndexesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ListIndexesRequest; - /** AllocateIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** + * Decodes a ListIndexesRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListIndexesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ListIndexesRequest; - /** - * Creates a new AllocateIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsRequest instance - */ - public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; + /** + * Verifies a ListIndexesRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a ListIndexesRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListIndexesRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ListIndexesRequest; - /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a plain object from a ListIndexesRequest message. Also converts values to other types if specified. + * @param message ListIndexesRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ListIndexesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; + /** + * Converts this ListIndexesRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; + /** Properties of a ListIndexesResponse. */ + interface IListIndexesResponse { - /** - * Verifies an AllocateIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** ListIndexesResponse indexes */ + indexes?: (google.datastore.admin.v1.IIndex[]|null); - /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; + /** ListIndexesResponse nextPageToken */ + nextPageToken?: (string|null); + } - /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. - * @param message AllocateIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Represents a ListIndexesResponse. */ + class ListIndexesResponse implements IListIndexesResponse { - /** - * Converts this AllocateIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Constructs a new ListIndexesResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IListIndexesResponse); - /** Properties of an AllocateIdsResponse. */ - interface IAllocateIdsResponse { + /** ListIndexesResponse indexes. */ + public indexes: google.datastore.admin.v1.IIndex[]; - /** AllocateIdsResponse keys */ - keys?: (google.datastore.v1.IKey[]|null); - } + /** ListIndexesResponse nextPageToken. */ + public nextPageToken: string; - /** Represents an AllocateIdsResponse. */ - class AllocateIdsResponse implements IAllocateIdsResponse { + /** + * Creates a new ListIndexesResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns ListIndexesResponse instance + */ + public static create(properties?: google.datastore.admin.v1.IListIndexesResponse): google.datastore.admin.v1.ListIndexesResponse; - /** - * Constructs a new AllocateIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IAllocateIdsResponse); + /** + * Encodes the specified ListIndexesResponse message. Does not implicitly {@link google.datastore.admin.v1.ListIndexesResponse.verify|verify} messages. + * @param message ListIndexesResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IListIndexesResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** AllocateIdsResponse keys. */ - public keys: google.datastore.v1.IKey[]; + /** + * Encodes the specified ListIndexesResponse message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ListIndexesResponse.verify|verify} messages. + * @param message ListIndexesResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IListIndexesResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a new AllocateIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns AllocateIdsResponse instance - */ - public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; + /** + * Decodes a ListIndexesResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ListIndexesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.ListIndexesResponse; - /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes a ListIndexesResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ListIndexesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.ListIndexesResponse; - /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies a ListIndexesResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; + /** + * Creates a ListIndexesResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ListIndexesResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.ListIndexesResponse; - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; + /** + * Creates a plain object from a ListIndexesResponse message. Also converts values to other types if specified. + * @param message ListIndexesResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.ListIndexesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Verifies an AllocateIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Converts this ListIndexesResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns AllocateIdsResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; + /** Properties of an IndexOperationMetadata. */ + interface IIndexOperationMetadata { - /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @param message AllocateIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** IndexOperationMetadata common */ + common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** - * Converts this AllocateIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** IndexOperationMetadata progressEntities */ + progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** Properties of a ReserveIdsRequest. */ - interface IReserveIdsRequest { + /** IndexOperationMetadata indexId */ + indexId?: (string|null); + } - /** ReserveIdsRequest projectId */ - projectId?: (string|null); + /** Represents an IndexOperationMetadata. */ + class IndexOperationMetadata implements IIndexOperationMetadata { - /** ReserveIdsRequest databaseId */ - databaseId?: (string|null); + /** + * Constructs a new IndexOperationMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IIndexOperationMetadata); - /** ReserveIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); - } + /** IndexOperationMetadata common. */ + public common?: (google.datastore.admin.v1.ICommonMetadata|null); - /** Represents a ReserveIdsRequest. */ - class ReserveIdsRequest implements IReserveIdsRequest { + /** IndexOperationMetadata progressEntities. */ + public progressEntities?: (google.datastore.admin.v1.IProgress|null); - /** - * Constructs a new ReserveIdsRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsRequest); + /** IndexOperationMetadata indexId. */ + public indexId: string; - /** ReserveIdsRequest projectId. */ - public projectId: string; + /** + * Creates a new IndexOperationMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns IndexOperationMetadata instance + */ + public static create(properties?: google.datastore.admin.v1.IIndexOperationMetadata): google.datastore.admin.v1.IndexOperationMetadata; - /** ReserveIdsRequest databaseId. */ - public databaseId: string; + /** + * Encodes the specified IndexOperationMetadata message. Does not implicitly {@link google.datastore.admin.v1.IndexOperationMetadata.verify|verify} messages. + * @param message IndexOperationMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IIndexOperationMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** ReserveIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** + * Encodes the specified IndexOperationMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.IndexOperationMetadata.verify|verify} messages. + * @param message IndexOperationMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IIndexOperationMetadata, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a new ReserveIdsRequest instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsRequest instance - */ - public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; + /** + * Decodes an IndexOperationMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns IndexOperationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.IndexOperationMetadata; - /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes an IndexOperationMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns IndexOperationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.IndexOperationMetadata; - /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies an IndexOperationMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; + /** + * Creates an IndexOperationMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns IndexOperationMetadata + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.IndexOperationMetadata; - /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; + /** + * Creates a plain object from an IndexOperationMetadata message. Also converts values to other types if specified. + * @param message IndexOperationMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.IndexOperationMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Verifies a ReserveIdsRequest message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Converts this IndexOperationMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsRequest - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; + /** Properties of an Index. */ + interface IIndex { - /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. - * @param message ReserveIdsRequest - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Index projectId */ + projectId?: (string|null); - /** - * Converts this ReserveIdsRequest to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Index indexId */ + indexId?: (string|null); - /** Properties of a ReserveIdsResponse. */ - interface IReserveIdsResponse { - } + /** Index kind */ + kind?: (string|null); - /** Represents a ReserveIdsResponse. */ - class ReserveIdsResponse implements IReserveIdsResponse { + /** Index ancestor */ + ancestor?: (google.datastore.admin.v1.Index.AncestorMode|keyof typeof google.datastore.admin.v1.Index.AncestorMode|null); - /** - * Constructs a new ReserveIdsResponse. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IReserveIdsResponse); + /** Index properties */ + properties?: (google.datastore.admin.v1.Index.IIndexedProperty[]|null); - /** - * Creates a new ReserveIdsResponse instance using the specified properties. - * @param [properties] Properties to set - * @returns ReserveIdsResponse instance - */ - public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; + /** Index state */ + state?: (google.datastore.admin.v1.Index.State|keyof typeof google.datastore.admin.v1.Index.State|null); + } - /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + /** Represents an Index. */ + class Index implements IIndex { - /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; - - /** - * Verifies a ReserveIdsResponse message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Constructs a new Index. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IIndex); - /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReserveIdsResponse - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; + /** Index projectId. */ + public projectId: string; - /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. - * @param message ReserveIdsResponse - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Index indexId. */ + public indexId: string; - /** - * Converts this ReserveIdsResponse to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Index kind. */ + public kind: string; - /** Properties of a Mutation. */ - interface IMutation { + /** Index ancestor. */ + public ancestor: (google.datastore.admin.v1.Index.AncestorMode|keyof typeof google.datastore.admin.v1.Index.AncestorMode); - /** Mutation insert */ - insert?: (google.datastore.v1.IEntity|null); + /** Index properties. */ + public properties: google.datastore.admin.v1.Index.IIndexedProperty[]; - /** Mutation update */ - update?: (google.datastore.v1.IEntity|null); + /** Index state. */ + public state: (google.datastore.admin.v1.Index.State|keyof typeof google.datastore.admin.v1.Index.State); - /** Mutation upsert */ - upsert?: (google.datastore.v1.IEntity|null); + /** + * Creates a new Index instance using the specified properties. + * @param [properties] Properties to set + * @returns Index instance + */ + public static create(properties?: google.datastore.admin.v1.IIndex): google.datastore.admin.v1.Index; - /** Mutation delete */ - "delete"?: (google.datastore.v1.IKey|null); + /** + * Encodes the specified Index message. Does not implicitly {@link google.datastore.admin.v1.Index.verify|verify} messages. + * @param message Index message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IIndex, writer?: $protobuf.Writer): $protobuf.Writer; - /** Mutation baseVersion */ - baseVersion?: (number|Long|string|null); - } + /** + * Encodes the specified Index message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Index.verify|verify} messages. + * @param message Index message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IIndex, writer?: $protobuf.Writer): $protobuf.Writer; - /** Represents a Mutation. */ - class Mutation implements IMutation { + /** + * Decodes an Index message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Index + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.Index; - /** - * Constructs a new Mutation. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IMutation); + /** + * Decodes an Index message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Index + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.Index; - /** Mutation insert. */ - public insert?: (google.datastore.v1.IEntity|null); + /** + * Verifies an Index message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** Mutation update. */ - public update?: (google.datastore.v1.IEntity|null); + /** + * Creates an Index message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Index + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.Index; - /** Mutation upsert. */ - public upsert?: (google.datastore.v1.IEntity|null); + /** + * Creates a plain object from an Index message. Also converts values to other types if specified. + * @param message Index + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.Index, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Mutation delete. */ - public delete?: (google.datastore.v1.IKey|null); + /** + * Converts this Index to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** Mutation baseVersion. */ - public baseVersion: (number|Long|string); + namespace Index { + + /** Properties of an IndexedProperty. */ + interface IIndexedProperty { + + /** IndexedProperty name */ + name?: (string|null); + + /** IndexedProperty direction */ + direction?: (google.datastore.admin.v1.Index.Direction|keyof typeof google.datastore.admin.v1.Index.Direction|null); + } + + /** Represents an IndexedProperty. */ + class IndexedProperty implements IIndexedProperty { + + /** + * Constructs a new IndexedProperty. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.Index.IIndexedProperty); + + /** IndexedProperty name. */ + public name: string; + + /** IndexedProperty direction. */ + public direction: (google.datastore.admin.v1.Index.Direction|keyof typeof google.datastore.admin.v1.Index.Direction); + + /** + * Creates a new IndexedProperty instance using the specified properties. + * @param [properties] Properties to set + * @returns IndexedProperty instance + */ + public static create(properties?: google.datastore.admin.v1.Index.IIndexedProperty): google.datastore.admin.v1.Index.IndexedProperty; + + /** + * Encodes the specified IndexedProperty message. Does not implicitly {@link google.datastore.admin.v1.Index.IndexedProperty.verify|verify} messages. + * @param message IndexedProperty message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.Index.IIndexedProperty, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified IndexedProperty message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Index.IndexedProperty.verify|verify} messages. + * @param message IndexedProperty message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.Index.IIndexedProperty, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an IndexedProperty message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns IndexedProperty + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.Index.IndexedProperty; + + /** + * Decodes an IndexedProperty message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns IndexedProperty + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.Index.IndexedProperty; + + /** + * Verifies an IndexedProperty message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an IndexedProperty message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns IndexedProperty + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.Index.IndexedProperty; + + /** + * Creates a plain object from an IndexedProperty message. Also converts values to other types if specified. + * @param message IndexedProperty + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.Index.IndexedProperty, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this IndexedProperty to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** AncestorMode enum. */ + enum AncestorMode { + ANCESTOR_MODE_UNSPECIFIED = 0, + NONE = 1, + ALL_ANCESTORS = 2 + } + + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + + /** State enum. */ + enum State { + STATE_UNSPECIFIED = 0, + CREATING = 1, + READY = 2, + DELETING = 3, + ERROR = 4 + } + } + } + } - /** Mutation operation. */ - public operation?: ("insert"|"update"|"upsert"|"delete"); + /** Namespace v1. */ + namespace v1 { - /** Mutation conflictDetectionStrategy. */ - public conflictDetectionStrategy?: "baseVersion"; + /** Represents a Datastore */ + class Datastore extends $protobuf.rpc.Service { /** - * Creates a new Mutation instance using the specified properties. - * @param [properties] Properties to set - * @returns Mutation instance + * Constructs a new Datastore service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited */ - public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Creates new Datastore service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. */ - public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Calls Lookup. + * @param request LookupRequest message or plain object + * @param callback Node-style callback called with the error, if any, and LookupResponse */ - public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; /** - * Decodes a Mutation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls Lookup. + * @param request LookupRequest message or plain object + * @returns Promise */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; + public lookup(request: google.datastore.v1.ILookupRequest): Promise; /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Mutation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunQueryResponse */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; + public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; /** - * Verifies a Mutation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @returns Promise */ - public static verify(message: { [k: string]: any }): (string|null); + public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Mutation + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. - * @param message Mutation - * @param [options] Conversion options - * @returns Plain object + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @returns Promise */ - public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; /** - * Converts this Mutation to JSON. - * @returns JSON object + * Calls Commit. + * @param request CommitRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CommitResponse */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a MutationResult. */ - interface IMutationResult { - - /** MutationResult key */ - key?: (google.datastore.v1.IKey|null); + public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; - /** MutationResult version */ - version?: (number|Long|string|null); + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @returns Promise + */ + public commit(request: google.datastore.v1.ICommitRequest): Promise; - /** MutationResult conflictDetected */ - conflictDetected?: (boolean|null); - } + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RollbackResponse + */ + public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; - /** Represents a MutationResult. */ - class MutationResult implements IMutationResult { + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @returns Promise + */ + public rollback(request: google.datastore.v1.IRollbackRequest): Promise; /** - * Constructs a new MutationResult. - * @param [properties] Properties to set + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse */ - constructor(properties?: google.datastore.v1.IMutationResult); + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; - /** MutationResult key. */ - public key?: (google.datastore.v1.IKey|null); - - /** MutationResult version. */ - public version: (number|Long|string); - - /** MutationResult conflictDetected. */ - public conflictDetected: boolean; + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @returns Promise + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; /** - * Creates a new MutationResult instance using the specified properties. - * @param [properties] Properties to set - * @returns MutationResult instance + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse */ - public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; + public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @returns Promise */ - public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; + } + + namespace Datastore { /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @param error Error, if any + * @param [response] LookupResponse */ - public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; /** - * Decodes a MutationResult message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @param error Error, if any + * @param [response] RunQueryResponse */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; + type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns MutationResult - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @param error Error, if any + * @param [response] BeginTransactionResponse */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; + type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; /** - * Verifies a MutationResult message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @param error Error, if any + * @param [response] CommitResponse */ - public static verify(message: { [k: string]: any }): (string|null); + type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns MutationResult + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @param error Error, if any + * @param [response] RollbackResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; + type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. - * @param message MutationResult - * @param [options] Conversion options - * @returns Plain object + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @param error Error, if any + * @param [response] AllocateIdsResponse */ - public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; /** - * Converts this MutationResult to JSON. - * @returns JSON object + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @param error Error, if any + * @param [response] ReserveIdsResponse */ - public toJSON(): { [k: string]: any }; + type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; } - /** Properties of a ReadOptions. */ - interface IReadOptions { + /** Properties of a LookupRequest. */ + interface ILookupRequest { - /** ReadOptions readConsistency */ - readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); + /** LookupRequest projectId */ + projectId?: (string|null); - /** ReadOptions transaction */ - transaction?: (Uint8Array|string|null); + /** LookupRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a ReadOptions. */ - class ReadOptions implements IReadOptions { + /** Represents a LookupRequest. */ + class LookupRequest implements ILookupRequest { /** - * Constructs a new ReadOptions. + * Constructs a new LookupRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IReadOptions); + constructor(properties?: google.datastore.v1.ILookupRequest); - /** ReadOptions readConsistency. */ - public readConsistency: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency); + /** LookupRequest projectId. */ + public projectId: string; - /** ReadOptions transaction. */ - public transaction: (Uint8Array|string); + /** LookupRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); - /** ReadOptions consistencyType. */ - public consistencyType?: ("readConsistency"|"transaction"); + /** LookupRequest keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new ReadOptions instance using the specified properties. + * Creates a new LookupRequest instance using the specified properties. * @param [properties] Properties to set - * @returns ReadOptions instance + * @returns LookupRequest instance */ - public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; + public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ReadOptions message from the specified reader or buffer. + * Decodes a LookupRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ReadOptions + * @returns LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ReadOptions + * @returns LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; /** - * Verifies a ReadOptions message. + * Verifies a LookupRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ReadOptions + * @returns LookupRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. - * @param message ReadOptions + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @param message LookupRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ReadOptions to JSON. + * Converts this LookupRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace ReadOptions { - - /** ReadConsistency enum. */ - enum ReadConsistency { - READ_CONSISTENCY_UNSPECIFIED = 0, - STRONG = 1, - EVENTUAL = 2 - } - } + /** Properties of a LookupResponse. */ + interface ILookupResponse { - /** Properties of a TransactionOptions. */ - interface ITransactionOptions { + /** LookupResponse found */ + found?: (google.datastore.v1.IEntityResult[]|null); - /** TransactionOptions readWrite */ - readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + /** LookupResponse missing */ + missing?: (google.datastore.v1.IEntityResult[]|null); - /** TransactionOptions readOnly */ - readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + /** LookupResponse deferred */ + deferred?: (google.datastore.v1.IKey[]|null); } - /** Represents a TransactionOptions. */ - class TransactionOptions implements ITransactionOptions { + /** Represents a LookupResponse. */ + class LookupResponse implements ILookupResponse { /** - * Constructs a new TransactionOptions. + * Constructs a new LookupResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ITransactionOptions); + constructor(properties?: google.datastore.v1.ILookupResponse); - /** TransactionOptions readWrite. */ - public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + /** LookupResponse found. */ + public found: google.datastore.v1.IEntityResult[]; - /** TransactionOptions readOnly. */ - public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + /** LookupResponse missing. */ + public missing: google.datastore.v1.IEntityResult[]; - /** TransactionOptions mode. */ - public mode?: ("readWrite"|"readOnly"); + /** LookupResponse deferred. */ + public deferred: google.datastore.v1.IKey[]; /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new LookupResponse instance using the specified properties. * @param [properties] Properties to set - * @returns TransactionOptions instance + * @returns LookupResponse instance */ - public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; + public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a LookupResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TransactionOptions + * @returns LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns TransactionOptions + * @returns LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; /** - * Verifies a TransactionOptions message. + * Verifies a LookupResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns TransactionOptions + * @returns LookupResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. - * @param message TransactionOptions + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @param message LookupResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this TransactionOptions to JSON. + * Converts this LookupResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace TransactionOptions { - - /** Properties of a ReadWrite. */ - interface IReadWrite { - - /** ReadWrite previousTransaction */ - previousTransaction?: (Uint8Array|string|null); - } - - /** Represents a ReadWrite. */ - class ReadWrite implements IReadWrite { - - /** - * Constructs a new ReadWrite. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); - - /** ReadWrite previousTransaction. */ - public previousTransaction: (Uint8Array|string); - - /** - * Creates a new ReadWrite instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadWrite instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Verifies a ReadWrite message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadWrite - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; - - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @param message ReadWrite - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ReadWrite to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ReadOnly. */ - interface IReadOnly { - } - - /** Represents a ReadOnly. */ - class ReadOnly implements IReadOnly { - - /** - * Constructs a new ReadOnly. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); - - /** - * Creates a new ReadOnly instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOnly instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; - - /** - * Verifies a ReadOnly message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOnly - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + /** Properties of a RunQueryRequest. */ + interface IRunQueryRequest { - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @param message ReadOnly - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** RunQueryRequest projectId */ + projectId?: (string|null); - /** - * Converts this ReadOnly to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** RunQueryRequest partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); - /** Properties of a PartitionId. */ - interface IPartitionId { + /** RunQueryRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); - /** PartitionId projectId */ - projectId?: (string|null); + /** RunQueryRequest query */ + query?: (google.datastore.v1.IQuery|null); - /** PartitionId namespaceId */ - namespaceId?: (string|null); + /** RunQueryRequest gqlQuery */ + gqlQuery?: (google.datastore.v1.IGqlQuery|null); } - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { + /** Represents a RunQueryRequest. */ + class RunQueryRequest implements IRunQueryRequest { /** - * Constructs a new PartitionId. + * Constructs a new RunQueryRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPartitionId); + constructor(properties?: google.datastore.v1.IRunQueryRequest); - /** PartitionId projectId. */ + /** RunQueryRequest projectId. */ public projectId: string; - /** PartitionId namespaceId. */ - public namespaceId: string; + /** RunQueryRequest partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query. */ + public query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery. */ + public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunQueryRequest queryType. */ + public queryType?: ("query"|"gqlQuery"); /** - * Creates a new PartitionId instance using the specified properties. + * Creates a new RunQueryRequest instance using the specified properties. * @param [properties] Properties to set - * @returns PartitionId instance + * @returns RunQueryRequest instance */ - public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PartitionId message from the specified reader or buffer. + * Decodes a RunQueryRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PartitionId + * @returns RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PartitionId + * @returns RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; /** - * Verifies a PartitionId message. + * Verifies a RunQueryRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PartitionId + * @returns RunQueryRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @param message RunQueryRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PartitionId to JSON. + * Converts this RunQueryRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a Key. */ - interface IKey { + /** Properties of a RunQueryResponse. */ + interface IRunQueryResponse { - /** Key partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); + /** RunQueryResponse batch */ + batch?: (google.datastore.v1.IQueryResultBatch|null); - /** Key path */ - path?: (google.datastore.v1.Key.IPathElement[]|null); + /** RunQueryResponse query */ + query?: (google.datastore.v1.IQuery|null); } - /** Represents a Key. */ - class Key implements IKey { + /** Represents a RunQueryResponse. */ + class RunQueryResponse implements IRunQueryResponse { /** - * Constructs a new Key. + * Constructs a new RunQueryResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IKey); + constructor(properties?: google.datastore.v1.IRunQueryResponse); - /** Key partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); + /** RunQueryResponse batch. */ + public batch?: (google.datastore.v1.IQueryResultBatch|null); - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; + /** RunQueryResponse query. */ + public query?: (google.datastore.v1.IQuery|null); /** - * Creates a new Key instance using the specified properties. + * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Key instance + * @returns RunQueryResponse instance */ - public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Key message from the specified reader or buffer. + * Decodes a RunQueryResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Key + * @returns RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; /** - * Decodes a Key message from the specified reader or buffer, length delimited. + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Key + * @returns RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; /** - * Verifies a Key message. + * Verifies a RunQueryResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Key + * @returns RunQueryResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @param message RunQueryResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Key to JSON. + * Converts this RunQueryResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace Key { - - /** Properties of a PathElement. */ - interface IPathElement { - - /** PathElement kind */ - kind?: (string|null); - - /** PathElement id */ - id?: (number|Long|string|null); - - /** PathElement name */ - name?: (string|null); - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id: (number|Long|string); - - /** PathElement name. */ - public name: string; - - /** PathElement idType. */ - public idType?: ("id"|"name"); - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - } + /** Properties of a BeginTransactionRequest. */ + interface IBeginTransactionRequest { - /** Properties of an ArrayValue. */ - interface IArrayValue { + /** BeginTransactionRequest projectId */ + projectId?: (string|null); - /** ArrayValue values */ - values?: (google.datastore.v1.IValue[]|null); + /** BeginTransactionRequest transactionOptions */ + transactionOptions?: (google.datastore.v1.ITransactionOptions|null); } - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { + /** Represents a BeginTransactionRequest. */ + class BeginTransactionRequest implements IBeginTransactionRequest { /** - * Constructs a new ArrayValue. + * Constructs a new BeginTransactionRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IArrayValue); + constructor(properties?: google.datastore.v1.IBeginTransactionRequest); - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; + /** BeginTransactionRequest projectId. */ + public projectId: string; + + /** BeginTransactionRequest transactionOptions. */ + public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); /** - * Creates a new ArrayValue instance using the specified properties. + * Creates a new BeginTransactionRequest instance using the specified properties. * @param [properties] Properties to set - * @returns ArrayValue instance + * @returns BeginTransactionRequest instance */ - public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ArrayValue message from the specified reader or buffer. + * Decodes a BeginTransactionRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ArrayValue + * @returns BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ArrayValue + * @returns BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; /** - * Verifies an ArrayValue message. + * Verifies a BeginTransactionRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ArrayValue + * @returns BeginTransactionRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @param message BeginTransactionRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ArrayValue to JSON. + * Converts this BeginTransactionRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a Value. */ - interface IValue { - - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - - /** Value booleanValue */ - booleanValue?: (boolean|null); - - /** Value integerValue */ - integerValue?: (number|Long|string|null); - - /** Value doubleValue */ - doubleValue?: (number|null); - - /** Value timestampValue */ - timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue */ - keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue */ - stringValue?: (string|null); - - /** Value blobValue */ - blobValue?: (Uint8Array|string|null); - - /** Value geoPointValue */ - geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue */ - entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue */ - arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning */ - meaning?: (number|null); + /** Properties of a BeginTransactionResponse. */ + interface IBeginTransactionResponse { - /** Value excludeFromIndexes */ - excludeFromIndexes?: (boolean|null); + /** BeginTransactionResponse transaction */ + transaction?: (Uint8Array|string|null); } - /** Represents a Value. */ - class Value implements IValue { + /** Represents a BeginTransactionResponse. */ + class BeginTransactionResponse implements IBeginTransactionResponse { /** - * Constructs a new Value. + * Constructs a new BeginTransactionResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); - - /** Value booleanValue. */ - public booleanValue: boolean; - - /** Value integerValue. */ - public integerValue: (number|Long|string); - - /** Value doubleValue. */ - public doubleValue: number; - - /** Value timestampValue. */ - public timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue. */ - public keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue. */ - public stringValue: string; - - /** Value blobValue. */ - public blobValue: (Uint8Array|string); - - /** Value geoPointValue. */ - public geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue. */ - public entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue. */ - public arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning. */ - public meaning: number; - - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; + constructor(properties?: google.datastore.v1.IBeginTransactionResponse); - /** Value valueType. */ - public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + /** BeginTransactionResponse transaction. */ + public transaction: (Uint8Array|string); /** - * Creates a new Value instance using the specified properties. + * Creates a new BeginTransactionResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Value instance + * @returns BeginTransactionResponse instance */ - public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes a BeginTransactionResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Value + * @returns BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Value + * @returns BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; /** - * Verifies a Value message. + * Verifies a BeginTransactionResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Value + * @returns BeginTransactionResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @param message BeginTransactionResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Value to JSON. + * Converts this BeginTransactionResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an Entity. */ - interface IEntity { + /** Properties of a RollbackRequest. */ + interface IRollbackRequest { - /** Entity key */ - key?: (google.datastore.v1.IKey|null); + /** RollbackRequest projectId */ + projectId?: (string|null); - /** Entity properties */ - properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + /** RollbackRequest transaction */ + transaction?: (Uint8Array|string|null); } - /** Represents an Entity. */ - class Entity implements IEntity { + /** Represents a RollbackRequest. */ + class RollbackRequest implements IRollbackRequest { /** - * Constructs a new Entity. + * Constructs a new RollbackRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IEntity); + constructor(properties?: google.datastore.v1.IRollbackRequest); - /** Entity key. */ - public key?: (google.datastore.v1.IKey|null); + /** RollbackRequest projectId. */ + public projectId: string; - /** Entity properties. */ - public properties: { [k: string]: google.datastore.v1.IValue }; + /** RollbackRequest transaction. */ + public transaction: (Uint8Array|string); /** - * Creates a new Entity instance using the specified properties. + * Creates a new RollbackRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Entity instance + * @returns RollbackRequest instance */ - public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Entity message from the specified reader or buffer. + * Decodes a RollbackRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Entity + * @returns RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; /** - * Decodes an Entity message from the specified reader or buffer, length delimited. + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Entity + * @returns RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; /** - * Verifies an Entity message. + * Verifies a RollbackRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Entity + * @returns RollbackRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @param message RollbackRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Entity to JSON. + * Converts this RollbackRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an EntityResult. */ - interface IEntityResult { - - /** EntityResult entity */ - entity?: (google.datastore.v1.IEntity|null); - - /** EntityResult version */ - version?: (number|Long|string|null); - - /** EntityResult cursor */ - cursor?: (Uint8Array|string|null); + /** Properties of a RollbackResponse. */ + interface IRollbackResponse { } - /** Represents an EntityResult. */ - class EntityResult implements IEntityResult { + /** Represents a RollbackResponse. */ + class RollbackResponse implements IRollbackResponse { /** - * Constructs a new EntityResult. + * Constructs a new RollbackResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IEntityResult); - - /** EntityResult entity. */ - public entity?: (google.datastore.v1.IEntity|null); - - /** EntityResult version. */ - public version: (number|Long|string); - - /** EntityResult cursor. */ - public cursor: (Uint8Array|string); + constructor(properties?: google.datastore.v1.IRollbackResponse); /** - * Creates a new EntityResult instance using the specified properties. + * Creates a new RollbackResponse instance using the specified properties. * @param [properties] Properties to set - * @returns EntityResult instance + * @returns RollbackResponse instance */ - public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; + public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EntityResult message from the specified reader or buffer. + * Decodes a RollbackResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EntityResult + * @returns RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EntityResult + * @returns RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; /** - * Verifies an EntityResult message. + * Verifies a RollbackResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EntityResult + * @returns RollbackResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. - * @param message EntityResult + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @param message RollbackResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EntityResult to JSON. + * Converts this RollbackResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace EntityResult { - - /** ResultType enum. */ - enum ResultType { - RESULT_TYPE_UNSPECIFIED = 0, - FULL = 1, - PROJECTION = 2, - KEY_ONLY = 3 - } - } - - /** Properties of a Query. */ - interface IQuery { - - /** Query projection */ - projection?: (google.datastore.v1.IProjection[]|null); - - /** Query kind */ - kind?: (google.datastore.v1.IKindExpression[]|null); - - /** Query filter */ - filter?: (google.datastore.v1.IFilter|null); - - /** Query order */ - order?: (google.datastore.v1.IPropertyOrder[]|null); - - /** Query distinctOn */ - distinctOn?: (google.datastore.v1.IPropertyReference[]|null); + /** Properties of a CommitRequest. */ + interface ICommitRequest { - /** Query startCursor */ - startCursor?: (Uint8Array|string|null); + /** CommitRequest projectId */ + projectId?: (string|null); - /** Query endCursor */ - endCursor?: (Uint8Array|string|null); + /** CommitRequest mode */ + mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); - /** Query offset */ - offset?: (number|null); + /** CommitRequest transaction */ + transaction?: (Uint8Array|string|null); - /** Query limit */ - limit?: (google.protobuf.IInt32Value|null); + /** CommitRequest mutations */ + mutations?: (google.datastore.v1.IMutation[]|null); } - /** Represents a Query. */ - class Query implements IQuery { + /** Represents a CommitRequest. */ + class CommitRequest implements ICommitRequest { /** - * Constructs a new Query. + * Constructs a new CommitRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IQuery); - - /** Query projection. */ - public projection: google.datastore.v1.IProjection[]; - - /** Query kind. */ - public kind: google.datastore.v1.IKindExpression[]; - - /** Query filter. */ - public filter?: (google.datastore.v1.IFilter|null); - - /** Query order. */ - public order: google.datastore.v1.IPropertyOrder[]; + constructor(properties?: google.datastore.v1.ICommitRequest); - /** Query distinctOn. */ - public distinctOn: google.datastore.v1.IPropertyReference[]; + /** CommitRequest projectId. */ + public projectId: string; - /** Query startCursor. */ - public startCursor: (Uint8Array|string); + /** CommitRequest mode. */ + public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); - /** Query endCursor. */ - public endCursor: (Uint8Array|string); + /** CommitRequest transaction. */ + public transaction: (Uint8Array|string); - /** Query offset. */ - public offset: number; + /** CommitRequest mutations. */ + public mutations: google.datastore.v1.IMutation[]; - /** Query limit. */ - public limit?: (google.protobuf.IInt32Value|null); + /** CommitRequest transactionSelector. */ + public transactionSelector?: "transaction"; /** - * Creates a new Query instance using the specified properties. + * Creates a new CommitRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Query instance + * @returns CommitRequest instance */ - public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; + public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Query message from the specified reader or buffer. + * Decodes a CommitRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Query + * @returns CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; /** - * Decodes a Query message from the specified reader or buffer, length delimited. + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Query + * @returns CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; /** - * Verifies a Query message. + * Verifies a CommitRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Query + * @returns CommitRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; /** - * Creates a plain object from a Query message. Also converts values to other types if specified. - * @param message Query + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @param message CommitRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Query to JSON. + * Converts this CommitRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a KindExpression. */ - interface IKindExpression { + namespace CommitRequest { - /** KindExpression name */ - name?: (string|null); + /** Mode enum. */ + enum Mode { + MODE_UNSPECIFIED = 0, + TRANSACTIONAL = 1, + NON_TRANSACTIONAL = 2 + } } - /** Represents a KindExpression. */ - class KindExpression implements IKindExpression { + /** Properties of a CommitResponse. */ + interface ICommitResponse { + + /** CommitResponse mutationResults */ + mutationResults?: (google.datastore.v1.IMutationResult[]|null); + + /** CommitResponse indexUpdates */ + indexUpdates?: (number|null); + } + + /** Represents a CommitResponse. */ + class CommitResponse implements ICommitResponse { /** - * Constructs a new KindExpression. + * Constructs a new CommitResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IKindExpression); + constructor(properties?: google.datastore.v1.ICommitResponse); - /** KindExpression name. */ - public name: string; + /** CommitResponse mutationResults. */ + public mutationResults: google.datastore.v1.IMutationResult[]; + + /** CommitResponse indexUpdates. */ + public indexUpdates: number; /** - * Creates a new KindExpression instance using the specified properties. + * Creates a new CommitResponse instance using the specified properties. * @param [properties] Properties to set - * @returns KindExpression instance + * @returns CommitResponse instance */ - public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a KindExpression message from the specified reader or buffer. + * Decodes a CommitResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns KindExpression + * @returns CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns KindExpression + * @returns CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; /** - * Verifies a KindExpression message. + * Verifies a CommitResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns KindExpression + * @returns CommitResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. - * @param message KindExpression + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @param message CommitResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this KindExpression to JSON. + * Converts this CommitResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a PropertyReference. */ - interface IPropertyReference { + /** Properties of an AllocateIdsRequest. */ + interface IAllocateIdsRequest { - /** PropertyReference name */ - name?: (string|null); + /** AllocateIdsRequest projectId */ + projectId?: (string|null); + + /** AllocateIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a PropertyReference. */ - class PropertyReference implements IPropertyReference { + /** Represents an AllocateIdsRequest. */ + class AllocateIdsRequest implements IAllocateIdsRequest { /** - * Constructs a new PropertyReference. + * Constructs a new AllocateIdsRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyReference); + constructor(properties?: google.datastore.v1.IAllocateIdsRequest); - /** PropertyReference name. */ - public name: string; + /** AllocateIdsRequest projectId. */ + public projectId: string; + + /** AllocateIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new PropertyReference instance using the specified properties. + * Creates a new AllocateIdsRequest instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyReference instance + * @returns AllocateIdsRequest instance */ - public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; + public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyReference message from the specified reader or buffer. + * Decodes an AllocateIdsRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyReference + * @returns AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyReference + * @returns AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; /** - * Verifies a PropertyReference message. + * Verifies an AllocateIdsRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyReference + * @returns AllocateIdsRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. - * @param message PropertyReference + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @param message AllocateIdsRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PropertyReference to JSON. + * Converts this AllocateIdsRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a Projection. */ - interface IProjection { + /** Properties of an AllocateIdsResponse. */ + interface IAllocateIdsResponse { - /** Projection property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** AllocateIdsResponse keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a Projection. */ - class Projection implements IProjection { + /** Represents an AllocateIdsResponse. */ + class AllocateIdsResponse implements IAllocateIdsResponse { /** - * Constructs a new Projection. + * Constructs a new AllocateIdsResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IProjection); + constructor(properties?: google.datastore.v1.IAllocateIdsResponse); - /** Projection property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + /** AllocateIdsResponse keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new Projection instance using the specified properties. + * Creates a new AllocateIdsResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Projection instance + * @returns AllocateIdsResponse instance */ - public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; + public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Projection message from the specified reader or buffer. + * Decodes an AllocateIdsResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Projection + * @returns AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; /** - * Decodes a Projection message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Projection + * @returns AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; /** - * Verifies a Projection message. + * Verifies an AllocateIdsResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Projection + * @returns AllocateIdsResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. - * @param message Projection + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @param message AllocateIdsResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Projection to JSON. + * Converts this AllocateIdsResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a PropertyOrder. */ - interface IPropertyOrder { + /** Properties of a ReserveIdsRequest. */ + interface IReserveIdsRequest { - /** PropertyOrder property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** ReserveIdsRequest projectId */ + projectId?: (string|null); - /** PropertyOrder direction */ - direction?: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction|null); + /** ReserveIdsRequest databaseId */ + databaseId?: (string|null); + + /** ReserveIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a PropertyOrder. */ - class PropertyOrder implements IPropertyOrder { + /** Represents a ReserveIdsRequest. */ + class ReserveIdsRequest implements IReserveIdsRequest { /** - * Constructs a new PropertyOrder. + * Constructs a new ReserveIdsRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyOrder); + constructor(properties?: google.datastore.v1.IReserveIdsRequest); - /** PropertyOrder property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + /** ReserveIdsRequest projectId. */ + public projectId: string; - /** PropertyOrder direction. */ - public direction: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction); + /** ReserveIdsRequest databaseId. */ + public databaseId: string; + + /** ReserveIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new PropertyOrder instance using the specified properties. + * Creates a new ReserveIdsRequest instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyOrder instance + * @returns ReserveIdsRequest instance */ - public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; + public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyOrder message from the specified reader or buffer. + * Decodes a ReserveIdsRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyOrder + * @returns ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyOrder + * @returns ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; /** - * Verifies a PropertyOrder message. + * Verifies a ReserveIdsRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyOrder + * @returns ReserveIdsRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. - * @param message PropertyOrder + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @param message ReserveIdsRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PropertyOrder to JSON. + * Converts this ReserveIdsRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace PropertyOrder { - - /** Direction enum. */ - enum Direction { - DIRECTION_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2 - } - } - - /** Properties of a Filter. */ - interface IFilter { - - /** Filter compositeFilter */ - compositeFilter?: (google.datastore.v1.ICompositeFilter|null); - - /** Filter propertyFilter */ - propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + /** Properties of a ReserveIdsResponse. */ + interface IReserveIdsResponse { } - /** Represents a Filter. */ - class Filter implements IFilter { + /** Represents a ReserveIdsResponse. */ + class ReserveIdsResponse implements IReserveIdsResponse { /** - * Constructs a new Filter. + * Constructs a new ReserveIdsResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IFilter); - - /** Filter compositeFilter. */ - public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); - - /** Filter propertyFilter. */ - public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); - - /** Filter filterType. */ - public filterType?: ("compositeFilter"|"propertyFilter"); + constructor(properties?: google.datastore.v1.IReserveIdsResponse); /** - * Creates a new Filter instance using the specified properties. + * Creates a new ReserveIdsResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Filter instance + * @returns ReserveIdsResponse instance */ - public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; + public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Filter message from the specified reader or buffer. + * Decodes a ReserveIdsResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Filter + * @returns ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; /** - * Decodes a Filter message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Filter + * @returns ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; /** - * Verifies a Filter message. + * Verifies a ReserveIdsResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Filter + * @returns ReserveIdsResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. - * @param message Filter + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @param message ReserveIdsResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Filter to JSON. + * Converts this ReserveIdsResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a CompositeFilter. */ - interface ICompositeFilter { + /** Properties of a Mutation. */ + interface IMutation { - /** CompositeFilter op */ - op?: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator|null); + /** Mutation insert */ + insert?: (google.datastore.v1.IEntity|null); - /** CompositeFilter filters */ - filters?: (google.datastore.v1.IFilter[]|null); + /** Mutation update */ + update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert */ + upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete */ + "delete"?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion */ + baseVersion?: (number|Long|string|null); } - /** Represents a CompositeFilter. */ - class CompositeFilter implements ICompositeFilter { + /** Represents a Mutation. */ + class Mutation implements IMutation { /** - * Constructs a new CompositeFilter. + * Constructs a new Mutation. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ICompositeFilter); + constructor(properties?: google.datastore.v1.IMutation); - /** CompositeFilter op. */ - public op: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator); + /** Mutation insert. */ + public insert?: (google.datastore.v1.IEntity|null); - /** CompositeFilter filters. */ - public filters: google.datastore.v1.IFilter[]; + /** Mutation update. */ + public update?: (google.datastore.v1.IEntity|null); + + /** Mutation upsert. */ + public upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete. */ + public delete?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion. */ + public baseVersion: (number|Long|string); + + /** Mutation operation. */ + public operation?: ("insert"|"update"|"upsert"|"delete"); + + /** Mutation conflictDetectionStrategy. */ + public conflictDetectionStrategy?: "baseVersion"; /** - * Creates a new CompositeFilter instance using the specified properties. + * Creates a new Mutation instance using the specified properties. * @param [properties] Properties to set - * @returns CompositeFilter instance + * @returns Mutation instance */ - public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; + public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CompositeFilter message from the specified reader or buffer. + * Decodes a Mutation message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CompositeFilter + * @returns Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * Decodes a Mutation message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CompositeFilter + * @returns Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; /** - * Verifies a CompositeFilter message. + * Verifies a Mutation message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CompositeFilter + * @returns Mutation */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. - * @param message CompositeFilter + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @param message Mutation * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CompositeFilter to JSON. + * Converts this Mutation to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace CompositeFilter { - - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - AND = 1 - } - } - - /** Properties of a PropertyFilter. */ - interface IPropertyFilter { + /** Properties of a MutationResult. */ + interface IMutationResult { - /** PropertyFilter property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** MutationResult key */ + key?: (google.datastore.v1.IKey|null); - /** PropertyFilter op */ - op?: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator|null); + /** MutationResult version */ + version?: (number|Long|string|null); - /** PropertyFilter value */ - value?: (google.datastore.v1.IValue|null); + /** MutationResult conflictDetected */ + conflictDetected?: (boolean|null); } - /** Represents a PropertyFilter. */ - class PropertyFilter implements IPropertyFilter { + /** Represents a MutationResult. */ + class MutationResult implements IMutationResult { /** - * Constructs a new PropertyFilter. + * Constructs a new MutationResult. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyFilter); + constructor(properties?: google.datastore.v1.IMutationResult); - /** PropertyFilter property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + /** MutationResult key. */ + public key?: (google.datastore.v1.IKey|null); - /** PropertyFilter op. */ - public op: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator); + /** MutationResult version. */ + public version: (number|Long|string); - /** PropertyFilter value. */ - public value?: (google.datastore.v1.IValue|null); + /** MutationResult conflictDetected. */ + public conflictDetected: boolean; /** - * Creates a new PropertyFilter instance using the specified properties. + * Creates a new MutationResult instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyFilter instance + * @returns MutationResult instance */ - public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; + public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyFilter message from the specified reader or buffer. + * Decodes a MutationResult message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyFilter + * @returns MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * Decodes a MutationResult message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyFilter + * @returns MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; /** - * Verifies a PropertyFilter message. + * Verifies a MutationResult message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyFilter + * @returns MutationResult */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. - * @param message PropertyFilter + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @param message MutationResult * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PropertyFilter to JSON. + * Converts this MutationResult to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace PropertyFilter { + /** Properties of a ReadOptions. */ + interface IReadOptions { - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - LESS_THAN = 1, - LESS_THAN_OR_EQUAL = 2, - GREATER_THAN = 3, - GREATER_THAN_OR_EQUAL = 4, - EQUAL = 5, - HAS_ANCESTOR = 11 - } - } + /** ReadOptions readConsistency */ + readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); - /** Properties of a GqlQuery. */ - interface IGqlQuery { + /** ReadOptions transaction */ + transaction?: (Uint8Array|string|null); + } - /** GqlQuery queryString */ - queryString?: (string|null); + /** Represents a ReadOptions. */ + class ReadOptions implements IReadOptions { - /** GqlQuery allowLiterals */ - allowLiterals?: (boolean|null); + /** + * Constructs a new ReadOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IReadOptions); - /** GqlQuery namedBindings */ - namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + /** ReadOptions readConsistency. */ + public readConsistency: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency); - /** GqlQuery positionalBindings */ - positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); - } + /** ReadOptions transaction. */ + public transaction: (Uint8Array|string); - /** Represents a GqlQuery. */ - class GqlQuery implements IGqlQuery { + /** ReadOptions consistencyType. */ + public consistencyType?: ("readConsistency"|"transaction"); /** - * Constructs a new GqlQuery. + * Creates a new ReadOptions instance using the specified properties. * @param [properties] Properties to set + * @returns ReadOptions instance */ - constructor(properties?: google.datastore.v1.IGqlQuery); + public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; - /** GqlQuery queryString. */ - public queryString: string; + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** GqlQuery allowLiterals. */ - public allowLiterals: boolean; + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** GqlQuery namedBindings. */ - public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; - /** GqlQuery positionalBindings. */ - public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; /** - * Creates a new GqlQuery instance using the specified properties. + * Verifies a ReadOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @param message ReadOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ReadOptions { + + /** ReadConsistency enum. */ + enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 0, + STRONG = 1, + EVENTUAL = 2 + } + } + + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { + + /** TransactionOptions readWrite */ + readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly */ + readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + } + + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { + + /** + * Constructs a new TransactionOptions. * @param [properties] Properties to set - * @returns GqlQuery instance */ - public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; + constructor(properties?: google.datastore.v1.ITransactionOptions); + + /** TransactionOptions readWrite. */ + public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + + /** TransactionOptions readOnly. */ + public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + + /** TransactionOptions mode. */ + public mode?: ("readWrite"|"readOnly"); /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode + * Creates a new TransactionOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns TransactionOptions instance + */ + public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GqlQuery message from the specified reader or buffer. + * Decodes a TransactionOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GqlQuery + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GqlQuery + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; + + /** + * Verifies a TransactionOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns TransactionOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this TransactionOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace TransactionOptions { + + /** Properties of a ReadWrite. */ + interface IReadWrite { + + /** ReadWrite previousTransaction */ + previousTransaction?: (Uint8Array|string|null); + } + + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { + + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); + + /** ReadWrite previousTransaction. */ + public previousTransaction: (Uint8Array|string); + + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a ReadOnly. */ + interface IReadOnly { + } + + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { + + /** + * Constructs a new ReadOnly. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + + /** + * Creates a new ReadOnly instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOnly instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Verifies a ReadOnly message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOnly + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOnly to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a PartitionId. */ + interface IPartitionId { + + /** PartitionId projectId */ + projectId?: (string|null); + + /** PartitionId namespaceId */ + namespaceId?: (string|null); + } + + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { + + /** + * Constructs a new PartitionId. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPartitionId); + + /** PartitionId projectId. */ + public projectId: string; + + /** PartitionId namespaceId. */ + public namespaceId: string; + + /** + * Creates a new PartitionId instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionId instance + */ + public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + + /** + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PartitionId message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + + /** + * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionId + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + + /** + * Verifies a PartitionId message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionId + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + + /** + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PartitionId to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Key. */ + interface IKey { + + /** Key partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path */ + path?: (google.datastore.v1.Key.IPathElement[]|null); + } + + /** Represents a Key. */ + class Key implements IKey { + + /** + * Constructs a new Key. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKey); + + /** Key partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); + + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; + + /** + * Creates a new Key instance using the specified properties. + * @param [properties] Properties to set + * @returns Key instance + */ + public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + + /** + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Key message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + + /** + * Decodes a Key message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Key + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + + /** + * Verifies a Key message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Key message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Key + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + + /** + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Key to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Key { + + /** Properties of a PathElement. */ + interface IPathElement { + + /** PathElement kind */ + kind?: (string|null); + + /** PathElement id */ + id?: (number|Long|string|null); + + /** PathElement name */ + name?: (string|null); + } + + /** Represents a PathElement. */ + class PathElement implements IPathElement { + + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); + + /** PathElement kind. */ + public kind: string; + + /** PathElement id. */ + public id: (number|Long|string); + + /** PathElement name. */ + public name: string; + + /** PathElement idType. */ + public idType?: ("id"|"name"); + + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; + + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + + /** ArrayValue values */ + values?: (google.datastore.v1.IValue[]|null); + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { + + /** + * Constructs a new ArrayValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ArrayValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + + /** + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ArrayValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + + /** + * Verifies an ArrayValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ArrayValue + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + + /** + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ArrayValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Value. */ + interface IValue { + + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); + + /** Value booleanValue */ + booleanValue?: (boolean|null); + + /** Value integerValue */ + integerValue?: (number|Long|string|null); + + /** Value doubleValue */ + doubleValue?: (number|null); + + /** Value timestampValue */ + timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue */ + keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value blobValue */ + blobValue?: (Uint8Array|string|null); + + /** Value geoPointValue */ + geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue */ + entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue */ + arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning */ + meaning?: (number|null); + + /** Value excludeFromIndexes */ + excludeFromIndexes?: (boolean|null); + } + + /** Represents a Value. */ + class Value implements IValue { + + /** + * Constructs a new Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IValue); + + /** Value nullValue. */ + public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); + + /** Value booleanValue. */ + public booleanValue: boolean; + + /** Value integerValue. */ + public integerValue: (number|Long|string); + + /** Value doubleValue. */ + public doubleValue: number; + + /** Value timestampValue. */ + public timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue. */ + public keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue. */ + public stringValue: string; + + /** Value blobValue. */ + public blobValue: (Uint8Array|string); + + /** Value geoPointValue. */ + public geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue. */ + public entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue. */ + public arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + + /** + * Creates a new Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Value instance + */ + public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + + /** + * Decodes a Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + + /** + * Verifies a Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Value + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + + /** + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an Entity. */ + interface IEntity { + + /** Entity key */ + key?: (google.datastore.v1.IKey|null); + + /** Entity properties */ + properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + } + + /** Represents an Entity. */ + class Entity implements IEntity { + + /** + * Constructs a new Entity. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntity); + + /** Entity key. */ + public key?: (google.datastore.v1.IKey|null); + + /** Entity properties. */ + public properties: { [k: string]: google.datastore.v1.IValue }; + + /** + * Creates a new Entity instance using the specified properties. + * @param [properties] Properties to set + * @returns Entity instance + */ + public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + + /** + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Entity message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + + /** + * Decodes an Entity message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Entity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + + /** + * Verifies an Entity message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Entity + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + + /** + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Entity to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of an EntityResult. */ + interface IEntityResult { + + /** EntityResult entity */ + entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version */ + version?: (number|Long|string|null); + + /** EntityResult cursor */ + cursor?: (Uint8Array|string|null); + } + + /** Represents an EntityResult. */ + class EntityResult implements IEntityResult { + + /** + * Constructs a new EntityResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IEntityResult); + + /** EntityResult entity. */ + public entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version. */ + public version: (number|Long|string); + + /** EntityResult cursor. */ + public cursor: (Uint8Array|string); + + /** + * Creates a new EntityResult instance using the specified properties. + * @param [properties] Properties to set + * @returns EntityResult instance + */ + public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; + + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; + + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; + + /** + * Verifies an EntityResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EntityResult + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; + + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @param message EntityResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EntityResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EntityResult { + + /** ResultType enum. */ + enum ResultType { + RESULT_TYPE_UNSPECIFIED = 0, + FULL = 1, + PROJECTION = 2, + KEY_ONLY = 3 + } + } + + /** Properties of a Query. */ + interface IQuery { + + /** Query projection */ + projection?: (google.datastore.v1.IProjection[]|null); + + /** Query kind */ + kind?: (google.datastore.v1.IKindExpression[]|null); + + /** Query filter */ + filter?: (google.datastore.v1.IFilter|null); + + /** Query order */ + order?: (google.datastore.v1.IPropertyOrder[]|null); + + /** Query distinctOn */ + distinctOn?: (google.datastore.v1.IPropertyReference[]|null); + + /** Query startCursor */ + startCursor?: (Uint8Array|string|null); + + /** Query endCursor */ + endCursor?: (Uint8Array|string|null); + + /** Query offset */ + offset?: (number|null); + + /** Query limit */ + limit?: (google.protobuf.IInt32Value|null); + } + + /** Represents a Query. */ + class Query implements IQuery { + + /** + * Constructs a new Query. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQuery); + + /** Query projection. */ + public projection: google.datastore.v1.IProjection[]; + + /** Query kind. */ + public kind: google.datastore.v1.IKindExpression[]; + + /** Query filter. */ + public filter?: (google.datastore.v1.IFilter|null); + + /** Query order. */ + public order: google.datastore.v1.IPropertyOrder[]; + + /** Query distinctOn. */ + public distinctOn: google.datastore.v1.IPropertyReference[]; + + /** Query startCursor. */ + public startCursor: (Uint8Array|string); + + /** Query endCursor. */ + public endCursor: (Uint8Array|string); + + /** Query offset. */ + public offset: number; + + /** Query limit. */ + public limit?: (google.protobuf.IInt32Value|null); + + /** + * Creates a new Query instance using the specified properties. + * @param [properties] Properties to set + * @returns Query instance + */ + public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Query message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; + + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; + + /** + * Verifies a Query message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Query + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @param message Query + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Query to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a KindExpression. */ + interface IKindExpression { + + /** KindExpression name */ + name?: (string|null); + } + + /** Represents a KindExpression. */ + class KindExpression implements IKindExpression { + + /** + * Constructs a new KindExpression. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IKindExpression); + + /** KindExpression name. */ + public name: string; + + /** + * Creates a new KindExpression instance using the specified properties. + * @param [properties] Properties to set + * @returns KindExpression instance + */ + public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; + + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; + + /** + * Verifies a KindExpression message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns KindExpression + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; + + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @param message KindExpression + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this KindExpression to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyReference. */ + interface IPropertyReference { + + /** PropertyReference name */ + name?: (string|null); + } + + /** Represents a PropertyReference. */ + class PropertyReference implements IPropertyReference { + + /** + * Constructs a new PropertyReference. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyReference); + + /** PropertyReference name. */ + public name: string; + + /** + * Creates a new PropertyReference instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyReference instance + */ + public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; + + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; + + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; + + /** + * Verifies a PropertyReference message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyReference + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; + + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @param message PropertyReference + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyReference to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Projection. */ + interface IProjection { + + /** Projection property */ + property?: (google.datastore.v1.IPropertyReference|null); + } + + /** Represents a Projection. */ + class Projection implements IProjection { + + /** + * Constructs a new Projection. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IProjection); + + /** Projection property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** + * Creates a new Projection instance using the specified properties. + * @param [properties] Properties to set + * @returns Projection instance + */ + public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; + + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Projection message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; + + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; + + /** + * Verifies a Projection message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Projection + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; + + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @param message Projection + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Projection to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a PropertyOrder. */ + interface IPropertyOrder { + + /** PropertyOrder property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction */ + direction?: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction|null); + } + + /** Represents a PropertyOrder. */ + class PropertyOrder implements IPropertyOrder { + + /** + * Constructs a new PropertyOrder. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyOrder); + + /** PropertyOrder property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction. */ + public direction: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction); + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyOrder instance + */ + public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; + + /** + * Verifies a PropertyOrder message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyOrder + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; + + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @param message PropertyOrder + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyOrder to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyOrder { + + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + } + + /** Properties of a Filter. */ + interface IFilter { + + /** Filter compositeFilter */ + compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter */ + propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + } + + /** Represents a Filter. */ + class Filter implements IFilter { + + /** + * Constructs a new Filter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IFilter); + + /** Filter compositeFilter. */ + public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter. */ + public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + + /** Filter filterType. */ + public filterType?: ("compositeFilter"|"propertyFilter"); + + /** + * Creates a new Filter instance using the specified properties. + * @param [properties] Properties to set + * @returns Filter instance + */ + public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; + + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Filter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; + + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; + + /** + * Verifies a Filter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Filter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; + + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @param message Filter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Filter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CompositeFilter. */ + interface ICompositeFilter { + + /** CompositeFilter op */ + op?: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator|null); + + /** CompositeFilter filters */ + filters?: (google.datastore.v1.IFilter[]|null); + } + + /** Represents a CompositeFilter. */ + class CompositeFilter implements ICompositeFilter { + + /** + * Constructs a new CompositeFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ICompositeFilter); + + /** CompositeFilter op. */ + public op: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator); + + /** CompositeFilter filters. */ + public filters: google.datastore.v1.IFilter[]; + + /** + * Creates a new CompositeFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns CompositeFilter instance + */ + public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; + + /** + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; + + /** + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CompositeFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; + + /** + * Verifies a CompositeFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CompositeFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; + + /** + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @param message CompositeFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CompositeFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace CompositeFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + AND = 1 + } + } + + /** Properties of a PropertyFilter. */ + interface IPropertyFilter { + + /** PropertyFilter property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op */ + op?: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator|null); + + /** PropertyFilter value */ + value?: (google.datastore.v1.IValue|null); + } + + /** Represents a PropertyFilter. */ + class PropertyFilter implements IPropertyFilter { + + /** + * Constructs a new PropertyFilter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyFilter); + + /** PropertyFilter property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyFilter op. */ + public op: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator); + + /** PropertyFilter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** + * Creates a new PropertyFilter instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyFilter instance + */ + public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; + + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; + + /** + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; + + /** + * Verifies a PropertyFilter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyFilter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; + + /** + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @param message PropertyFilter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyFilter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace PropertyFilter { + + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + LESS_THAN = 1, + LESS_THAN_OR_EQUAL = 2, + GREATER_THAN = 3, + GREATER_THAN_OR_EQUAL = 4, + EQUAL = 5, + HAS_ANCESTOR = 11 + } + } + + /** Properties of a GqlQuery. */ + interface IGqlQuery { + + /** GqlQuery queryString */ + queryString?: (string|null); + + /** GqlQuery allowLiterals */ + allowLiterals?: (boolean|null); + + /** GqlQuery namedBindings */ + namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + + /** GqlQuery positionalBindings */ + positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); + } + + /** Represents a GqlQuery. */ + class GqlQuery implements IGqlQuery { + + /** + * Constructs a new GqlQuery. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQuery); + + /** GqlQuery queryString. */ + public queryString: string; + + /** GqlQuery allowLiterals. */ + public allowLiterals: boolean; + + /** GqlQuery namedBindings. */ + public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; + + /** GqlQuery positionalBindings. */ + public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + + /** + * Creates a new GqlQuery instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQuery instance + */ + public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; + + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; + + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; + + /** + * Verifies a GqlQuery message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQuery + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; + + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @param message GqlQuery + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQuery to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a GqlQueryParameter. */ + interface IGqlQueryParameter { + + /** GqlQueryParameter value */ + value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor */ + cursor?: (Uint8Array|string|null); + } + + /** Represents a GqlQueryParameter. */ + class GqlQueryParameter implements IGqlQueryParameter { + + /** + * Constructs a new GqlQueryParameter. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IGqlQueryParameter); + + /** GqlQueryParameter value. */ + public value?: (google.datastore.v1.IValue|null); + + /** GqlQueryParameter cursor. */ + public cursor: (Uint8Array|string); + + /** GqlQueryParameter parameterType. */ + public parameterType?: ("value"|"cursor"); + + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @param [properties] Properties to set + * @returns GqlQueryParameter instance + */ + public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; + + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; + + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; + + /** + * Verifies a GqlQueryParameter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GqlQueryParameter + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @param message GqlQueryParameter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GqlQueryParameter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a QueryResultBatch. */ + interface IQueryResultBatch { + + /** QueryResultBatch skippedResults */ + skippedResults?: (number|null); + + /** QueryResultBatch skippedCursor */ + skippedCursor?: (Uint8Array|string|null); + + /** QueryResultBatch entityResultType */ + entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null); + + /** QueryResultBatch entityResults */ + entityResults?: (google.datastore.v1.IEntityResult[]|null); + + /** QueryResultBatch endCursor */ + endCursor?: (Uint8Array|string|null); + + /** QueryResultBatch moreResults */ + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); + + /** QueryResultBatch snapshotVersion */ + snapshotVersion?: (number|Long|string|null); + } + + /** Represents a QueryResultBatch. */ + class QueryResultBatch implements IQueryResultBatch { + + /** + * Constructs a new QueryResultBatch. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQueryResultBatch); + + /** QueryResultBatch skippedResults. */ + public skippedResults: number; + + /** QueryResultBatch skippedCursor. */ + public skippedCursor: (Uint8Array|string); + + /** QueryResultBatch entityResultType. */ + public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType); + + /** QueryResultBatch entityResults. */ + public entityResults: google.datastore.v1.IEntityResult[]; + + /** QueryResultBatch endCursor. */ + public endCursor: (Uint8Array|string); + + /** QueryResultBatch moreResults. */ + public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); + + /** QueryResultBatch snapshotVersion. */ + public snapshotVersion: (number|Long|string); + + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @param [properties] Properties to set + * @returns QueryResultBatch instance + */ + public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; + + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; + + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + + /** + * Verifies a QueryResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryResultBatch + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @param message QueryResultBatch + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this QueryResultBatch to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace QueryResultBatch { + + /** MoreResultsType enum. */ + enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 0, + NOT_FINISHED = 1, + MORE_RESULTS_AFTER_LIMIT = 2, + MORE_RESULTS_AFTER_CURSOR = 4, + NO_MORE_RESULTS = 3 + } + } + } + } + + /** Namespace api. */ + namespace api { + + /** Properties of a Http. */ + interface IHttp { + + /** Http rules */ + rules?: (google.api.IHttpRule[]|null); + + /** Http fullyDecodeReservedExpansion */ + fullyDecodeReservedExpansion?: (boolean|null); + } + + /** Represents a Http. */ + class Http implements IHttp { + + /** + * Constructs a new Http. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttp); + + /** Http rules. */ + public rules: google.api.IHttpRule[]; + + /** Http fullyDecodeReservedExpansion. */ + public fullyDecodeReservedExpansion: boolean; + + /** + * Creates a new Http instance using the specified properties. + * @param [properties] Properties to set + * @returns Http instance + */ + public static create(properties?: google.api.IHttp): google.api.Http; + + /** + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @param message Http message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Http message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; + + /** + * Verifies a Http message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Http message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Http + */ + public static fromObject(object: { [k: string]: any }): google.api.Http; + + /** + * Creates a plain object from a Http message. Also converts values to other types if specified. + * @param message Http + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Http to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a HttpRule. */ + interface IHttpRule { + + /** HttpRule selector */ + selector?: (string|null); + + /** HttpRule get */ + get?: (string|null); + + /** HttpRule put */ + put?: (string|null); + + /** HttpRule post */ + post?: (string|null); + + /** HttpRule delete */ + "delete"?: (string|null); + + /** HttpRule patch */ + patch?: (string|null); + + /** HttpRule custom */ + custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body */ + body?: (string|null); + + /** HttpRule responseBody */ + responseBody?: (string|null); + + /** HttpRule additionalBindings */ + additionalBindings?: (google.api.IHttpRule[]|null); + } + + /** Represents a HttpRule. */ + class HttpRule implements IHttpRule { + + /** + * Constructs a new HttpRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IHttpRule); + + /** HttpRule selector. */ + public selector: string; + + /** HttpRule get. */ + public get: string; + + /** HttpRule put. */ + public put: string; + + /** HttpRule post. */ + public post: string; + + /** HttpRule delete. */ + public delete: string; + + /** HttpRule patch. */ + public patch: string; + + /** HttpRule custom. */ + public custom?: (google.api.ICustomHttpPattern|null); + + /** HttpRule body. */ + public body: string; + + /** HttpRule responseBody. */ + public responseBody: string; + + /** HttpRule additionalBindings. */ + public additionalBindings: google.api.IHttpRule[]; + + /** HttpRule pattern. */ + public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); + + /** + * Creates a new HttpRule instance using the specified properties. + * @param [properties] Properties to set + * @returns HttpRule instance + */ + public static create(properties?: google.api.IHttpRule): google.api.HttpRule; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @param message HttpRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HttpRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; + + /** + * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns HttpRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; + + /** + * Verifies a HttpRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns HttpRule + */ + public static fromObject(object: { [k: string]: any }): google.api.HttpRule; + + /** + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. + * @param message HttpRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this HttpRule to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a CustomHttpPattern. */ + interface ICustomHttpPattern { + + /** CustomHttpPattern kind */ + kind?: (string|null); + + /** CustomHttpPattern path */ + path?: (string|null); + } + + /** Represents a CustomHttpPattern. */ + class CustomHttpPattern implements ICustomHttpPattern { + + /** + * Constructs a new CustomHttpPattern. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICustomHttpPattern); + + /** CustomHttpPattern kind. */ + public kind: string; + + /** CustomHttpPattern path. */ + public path: string; + + /** + * Creates a new CustomHttpPattern instance using the specified properties. + * @param [properties] Properties to set + * @returns CustomHttpPattern instance + */ + public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; + + /** + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. + * @param message CustomHttpPattern message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; + + /** + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CustomHttpPattern + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; + + /** + * Verifies a CustomHttpPattern message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CustomHttpPattern + */ + public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; + + /** + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. + * @param message CustomHttpPattern + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CustomHttpPattern to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** FieldBehavior enum. */ + enum FieldBehavior { + FIELD_BEHAVIOR_UNSPECIFIED = 0, + OPTIONAL = 1, + REQUIRED = 2, + OUTPUT_ONLY = 3, + INPUT_ONLY = 4, + IMMUTABLE = 5 + } + } + + /** Namespace protobuf. */ + namespace protobuf { + + /** Properties of a FileDescriptorSet. */ + interface IFileDescriptorSet { + + /** FileDescriptorSet file */ + file?: (google.protobuf.IFileDescriptorProto[]|null); + } + + /** Represents a FileDescriptorSet. */ + class FileDescriptorSet implements IFileDescriptorSet { + + /** + * Constructs a new FileDescriptorSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorSet); + + /** FileDescriptorSet file. */ + public file: google.protobuf.IFileDescriptorProto[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorSet instance + */ + public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param message FileDescriptorSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param message FileDescriptorSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a FileDescriptorProto. */ + interface IFileDescriptorProto { + + /** FileDescriptorProto name */ + name?: (string|null); + + /** FileDescriptorProto package */ + "package"?: (string|null); + + /** FileDescriptorProto dependency */ + dependency?: (string[]|null); + + /** FileDescriptorProto publicDependency */ + publicDependency?: (number[]|null); + + /** FileDescriptorProto weakDependency */ + weakDependency?: (number[]|null); + + /** FileDescriptorProto messageType */ + messageType?: (google.protobuf.IDescriptorProto[]|null); + + /** FileDescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** FileDescriptorProto service */ + service?: (google.protobuf.IServiceDescriptorProto[]|null); + + /** FileDescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** FileDescriptorProto options */ + options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo */ + sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax */ + syntax?: (string|null); + } + + /** Represents a FileDescriptorProto. */ + class FileDescriptorProto implements IFileDescriptorProto { + + /** + * Constructs a new FileDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileDescriptorProto); + + /** FileDescriptorProto name. */ + public name: string; + + /** FileDescriptorProto package. */ + public package: string; + + /** FileDescriptorProto dependency. */ + public dependency: string[]; + + /** FileDescriptorProto publicDependency. */ + public publicDependency: number[]; + + /** FileDescriptorProto weakDependency. */ + public weakDependency: number[]; + + /** FileDescriptorProto messageType. */ + public messageType: google.protobuf.IDescriptorProto[]; + + /** FileDescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** FileDescriptorProto service. */ + public service: google.protobuf.IServiceDescriptorProto[]; + + /** FileDescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** FileDescriptorProto options. */ + public options?: (google.protobuf.IFileOptions|null); + + /** FileDescriptorProto sourceCodeInfo. */ + public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + + /** FileDescriptorProto syntax. */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FileDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param message FileDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param message FileDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DescriptorProto. */ + interface IDescriptorProto { + + /** DescriptorProto name */ + name?: (string|null); + + /** DescriptorProto field */ + field?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto extension */ + extension?: (google.protobuf.IFieldDescriptorProto[]|null); + + /** DescriptorProto nestedType */ + nestedType?: (google.protobuf.IDescriptorProto[]|null); + + /** DescriptorProto enumType */ + enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + + /** DescriptorProto extensionRange */ + extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + + /** DescriptorProto oneofDecl */ + oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + + /** DescriptorProto options */ + options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange */ + reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + + /** DescriptorProto reservedName */ + reservedName?: (string[]|null); + } + + /** Represents a DescriptorProto. */ + class DescriptorProto implements IDescriptorProto { + + /** + * Constructs a new DescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IDescriptorProto); + + /** DescriptorProto name. */ + public name: string; + + /** DescriptorProto field. */ + public field: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto extension. */ + public extension: google.protobuf.IFieldDescriptorProto[]; + + /** DescriptorProto nestedType. */ + public nestedType: google.protobuf.IDescriptorProto[]; + + /** DescriptorProto enumType. */ + public enumType: google.protobuf.IEnumDescriptorProto[]; + + /** DescriptorProto extensionRange. */ + public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + + /** DescriptorProto oneofDecl. */ + public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + + /** DescriptorProto options. */ + public options?: (google.protobuf.IMessageOptions|null); + + /** DescriptorProto reservedRange. */ + public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + + /** DescriptorProto reservedName. */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns DescriptorProto instance + */ + public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param message DescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; - /** - * Verifies a GqlQuery message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param message DescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns GqlQuery - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; + /** + * Converts this DescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. - * @param message GqlQuery - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; + namespace DescriptorProto { - /** - * Converts this GqlQuery to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** Properties of an ExtensionRange. */ + interface IExtensionRange { - /** Properties of a GqlQueryParameter. */ - interface IGqlQueryParameter { + /** ExtensionRange start */ + start?: (number|null); - /** GqlQueryParameter value */ - value?: (google.datastore.v1.IValue|null); + /** ExtensionRange end */ + end?: (number|null); - /** GqlQueryParameter cursor */ - cursor?: (Uint8Array|string|null); + /** ExtensionRange options */ + options?: (google.protobuf.IExtensionRangeOptions|null); } - /** Represents a GqlQueryParameter. */ - class GqlQueryParameter implements IGqlQueryParameter { + /** Represents an ExtensionRange. */ + class ExtensionRange implements IExtensionRange { /** - * Constructs a new GqlQueryParameter. + * Constructs a new ExtensionRange. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IGqlQueryParameter); + constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); - /** GqlQueryParameter value. */ - public value?: (google.datastore.v1.IValue|null); + /** ExtensionRange start. */ + public start: number; - /** GqlQueryParameter cursor. */ - public cursor: (Uint8Array|string); + /** ExtensionRange end. */ + public end: number; - /** GqlQueryParameter parameterType. */ - public parameterType?: ("value"|"cursor"); + /** ExtensionRange options. */ + public options?: (google.protobuf.IExtensionRangeOptions|null); /** - * Creates a new GqlQueryParameter instance using the specified properties. + * Creates a new ExtensionRange instance using the specified properties. * @param [properties] Properties to set - * @returns GqlQueryParameter instance + * @returns ExtensionRange instance */ - public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; + public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param message ExtensionRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. + * Decodes an ExtensionRange message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GqlQueryParameter + * @returns ExtensionRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GqlQueryParameter + * @returns ExtensionRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; /** - * Verifies a GqlQueryParameter message. + * Verifies an ExtensionRange message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns GqlQueryParameter + * @returns ExtensionRange */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. - * @param message GqlQueryParameter + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param message ExtensionRange * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this GqlQueryParameter to JSON. + * Converts this ExtensionRange to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a QueryResultBatch. */ - interface IQueryResultBatch { - - /** QueryResultBatch skippedResults */ - skippedResults?: (number|null); - - /** QueryResultBatch skippedCursor */ - skippedCursor?: (Uint8Array|string|null); - - /** QueryResultBatch entityResultType */ - entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null); - - /** QueryResultBatch entityResults */ - entityResults?: (google.datastore.v1.IEntityResult[]|null); - - /** QueryResultBatch endCursor */ - endCursor?: (Uint8Array|string|null); + /** Properties of a ReservedRange. */ + interface IReservedRange { - /** QueryResultBatch moreResults */ - moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); + /** ReservedRange start */ + start?: (number|null); - /** QueryResultBatch snapshotVersion */ - snapshotVersion?: (number|Long|string|null); + /** ReservedRange end */ + end?: (number|null); } - /** Represents a QueryResultBatch. */ - class QueryResultBatch implements IQueryResultBatch { + /** Represents a ReservedRange. */ + class ReservedRange implements IReservedRange { /** - * Constructs a new QueryResultBatch. + * Constructs a new ReservedRange. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IQueryResultBatch); - - /** QueryResultBatch skippedResults. */ - public skippedResults: number; - - /** QueryResultBatch skippedCursor. */ - public skippedCursor: (Uint8Array|string); - - /** QueryResultBatch entityResultType. */ - public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType); - - /** QueryResultBatch entityResults. */ - public entityResults: google.datastore.v1.IEntityResult[]; - - /** QueryResultBatch endCursor. */ - public endCursor: (Uint8Array|string); + constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); - /** QueryResultBatch moreResults. */ - public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); + /** ReservedRange start. */ + public start: number; - /** QueryResultBatch snapshotVersion. */ - public snapshotVersion: (number|Long|string); + /** ReservedRange end. */ + public end: number; /** - * Creates a new QueryResultBatch instance using the specified properties. + * Creates a new ReservedRange instance using the specified properties. * @param [properties] Properties to set - * @returns QueryResultBatch instance + * @returns ReservedRange instance */ - public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; + public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param message ReservedRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a QueryResultBatch message from the specified reader or buffer. + * Decodes a ReservedRange message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns QueryResultBatch + * @returns ReservedRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns QueryResultBatch + * @returns ReservedRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; /** - * Verifies a QueryResultBatch message. + * Verifies a ReservedRange message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns QueryResultBatch + * @returns ReservedRange */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. - * @param message QueryResultBatch + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param message ReservedRange * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this QueryResultBatch to JSON. + * Converts this ReservedRange to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - - namespace QueryResultBatch { - - /** MoreResultsType enum. */ - enum MoreResultsType { - MORE_RESULTS_TYPE_UNSPECIFIED = 0, - NOT_FINISHED = 1, - MORE_RESULTS_AFTER_LIMIT = 2, - MORE_RESULTS_AFTER_CURSOR = 4, - NO_MORE_RESULTS = 3 - } - } } - } - - /** Namespace api. */ - namespace api { - - /** Properties of a Http. */ - interface IHttp { - /** Http rules */ - rules?: (google.api.IHttpRule[]|null); + /** Properties of an ExtensionRangeOptions. */ + interface IExtensionRangeOptions { - /** Http fullyDecodeReservedExpansion */ - fullyDecodeReservedExpansion?: (boolean|null); + /** ExtensionRangeOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } - /** Represents a Http. */ - class Http implements IHttp { + /** Represents an ExtensionRangeOptions. */ + class ExtensionRangeOptions implements IExtensionRangeOptions { /** - * Constructs a new Http. + * Constructs a new ExtensionRangeOptions. * @param [properties] Properties to set */ - constructor(properties?: google.api.IHttp); - - /** Http rules. */ - public rules: google.api.IHttpRule[]; + constructor(properties?: google.protobuf.IExtensionRangeOptions); - /** Http fullyDecodeReservedExpansion. */ - public fullyDecodeReservedExpansion: boolean; + /** ExtensionRangeOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new Http instance using the specified properties. + * Creates a new ExtensionRangeOptions instance using the specified properties. * @param [properties] Properties to set - * @returns Http instance + * @returns ExtensionRangeOptions instance */ - public static create(properties?: google.api.IHttp): google.api.Http; + public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @param message Http message or plain object to encode + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @param message ExtensionRangeOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Http message from the specified reader or buffer. + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Http + * @returns ExtensionRangeOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; /** - * Decodes a Http message from the specified reader or buffer, length delimited. + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Http + * @returns ExtensionRangeOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; /** - * Verifies a Http message. + * Verifies an ExtensionRangeOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Http + * @returns ExtensionRangeOptions */ - public static fromObject(object: { [k: string]: any }): google.api.Http; + public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @param message Http + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @param message ExtensionRangeOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Http to JSON. + * Converts this ExtensionRangeOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a HttpRule. */ - interface IHttpRule { + /** Properties of a FieldDescriptorProto. */ + interface IFieldDescriptorProto { - /** HttpRule selector */ - selector?: (string|null); + /** FieldDescriptorProto name */ + name?: (string|null); - /** HttpRule get */ - get?: (string|null); + /** FieldDescriptorProto number */ + number?: (number|null); - /** HttpRule put */ - put?: (string|null); + /** FieldDescriptorProto label */ + label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null); - /** HttpRule post */ - post?: (string|null); + /** FieldDescriptorProto type */ + type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null); - /** HttpRule delete */ - "delete"?: (string|null); + /** FieldDescriptorProto typeName */ + typeName?: (string|null); - /** HttpRule patch */ - patch?: (string|null); + /** FieldDescriptorProto extendee */ + extendee?: (string|null); - /** HttpRule custom */ - custom?: (google.api.ICustomHttpPattern|null); + /** FieldDescriptorProto defaultValue */ + defaultValue?: (string|null); - /** HttpRule body */ - body?: (string|null); + /** FieldDescriptorProto oneofIndex */ + oneofIndex?: (number|null); - /** HttpRule responseBody */ - responseBody?: (string|null); + /** FieldDescriptorProto jsonName */ + jsonName?: (string|null); - /** HttpRule additionalBindings */ - additionalBindings?: (google.api.IHttpRule[]|null); + /** FieldDescriptorProto options */ + options?: (google.protobuf.IFieldOptions|null); + + /** FieldDescriptorProto proto3Optional */ + proto3Optional?: (boolean|null); } - /** Represents a HttpRule. */ - class HttpRule implements IHttpRule { + /** Represents a FieldDescriptorProto. */ + class FieldDescriptorProto implements IFieldDescriptorProto { /** - * Constructs a new HttpRule. + * Constructs a new FieldDescriptorProto. * @param [properties] Properties to set */ - constructor(properties?: google.api.IHttpRule); + constructor(properties?: google.protobuf.IFieldDescriptorProto); - /** HttpRule selector. */ - public selector: string; + /** FieldDescriptorProto name. */ + public name: string; - /** HttpRule get. */ - public get: string; + /** FieldDescriptorProto number. */ + public number: number; - /** HttpRule put. */ - public put: string; + /** FieldDescriptorProto label. */ + public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label); - /** HttpRule post. */ - public post: string; + /** FieldDescriptorProto type. */ + public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type); + + /** FieldDescriptorProto typeName. */ + public typeName: string; + + /** FieldDescriptorProto extendee. */ + public extendee: string; + + /** FieldDescriptorProto defaultValue. */ + public defaultValue: string; + + /** FieldDescriptorProto oneofIndex. */ + public oneofIndex: number; + + /** FieldDescriptorProto jsonName. */ + public jsonName: string; + + /** FieldDescriptorProto options. */ + public options?: (google.protobuf.IFieldOptions|null); + + /** FieldDescriptorProto proto3Optional. */ + public proto3Optional: boolean; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param [properties] Properties to set + * @returns FieldDescriptorProto instance + */ + public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param message FieldDescriptorProto message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FieldDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param message FieldDescriptorProto + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + /** Type enum. */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + /** Label enum. */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } + } - /** HttpRule delete. */ - public delete: string; + /** Properties of an OneofDescriptorProto. */ + interface IOneofDescriptorProto { - /** HttpRule patch. */ - public patch: string; + /** OneofDescriptorProto name */ + name?: (string|null); - /** HttpRule custom. */ - public custom?: (google.api.ICustomHttpPattern|null); + /** OneofDescriptorProto options */ + options?: (google.protobuf.IOneofOptions|null); + } - /** HttpRule body. */ - public body: string; + /** Represents an OneofDescriptorProto. */ + class OneofDescriptorProto implements IOneofDescriptorProto { - /** HttpRule responseBody. */ - public responseBody: string; + /** + * Constructs a new OneofDescriptorProto. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IOneofDescriptorProto); - /** HttpRule additionalBindings. */ - public additionalBindings: google.api.IHttpRule[]; + /** OneofDescriptorProto name. */ + public name: string; - /** HttpRule pattern. */ - public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom"); + /** OneofDescriptorProto options. */ + public options?: (google.protobuf.IOneofOptions|null); /** - * Creates a new HttpRule instance using the specified properties. + * Creates a new OneofDescriptorProto instance using the specified properties. * @param [properties] Properties to set - * @returns HttpRule instance + * @returns OneofDescriptorProto instance */ - public static create(properties?: google.api.IHttpRule): google.api.HttpRule; + public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @param message HttpRule message or plain object to encode + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param message OneofDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a HttpRule message from the specified reader or buffer. + * Decodes an OneofDescriptorProto message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns HttpRule + * @returns OneofDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns HttpRule + * @returns OneofDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; /** - * Verifies a HttpRule message. + * Verifies an OneofDescriptorProto message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns HttpRule + * @returns OneofDescriptorProto */ - public static fromObject(object: { [k: string]: any }): google.api.HttpRule; + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @param message HttpRule + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param message OneofDescriptorProto * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this HttpRule to JSON. + * Converts this OneofDescriptorProto to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a CustomHttpPattern. */ - interface ICustomHttpPattern { + /** Properties of an EnumDescriptorProto. */ + interface IEnumDescriptorProto { - /** CustomHttpPattern kind */ - kind?: (string|null); + /** EnumDescriptorProto name */ + name?: (string|null); - /** CustomHttpPattern path */ - path?: (string|null); + /** EnumDescriptorProto value */ + value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + + /** EnumDescriptorProto options */ + options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange */ + reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + + /** EnumDescriptorProto reservedName */ + reservedName?: (string[]|null); } - /** Represents a CustomHttpPattern. */ - class CustomHttpPattern implements ICustomHttpPattern { + /** Represents an EnumDescriptorProto. */ + class EnumDescriptorProto implements IEnumDescriptorProto { /** - * Constructs a new CustomHttpPattern. + * Constructs a new EnumDescriptorProto. * @param [properties] Properties to set */ - constructor(properties?: google.api.ICustomHttpPattern); + constructor(properties?: google.protobuf.IEnumDescriptorProto); - /** CustomHttpPattern kind. */ - public kind: string; + /** EnumDescriptorProto name. */ + public name: string; - /** CustomHttpPattern path. */ - public path: string; + /** EnumDescriptorProto value. */ + public value: google.protobuf.IEnumValueDescriptorProto[]; + + /** EnumDescriptorProto options. */ + public options?: (google.protobuf.IEnumOptions|null); + + /** EnumDescriptorProto reservedRange. */ + public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + + /** EnumDescriptorProto reservedName. */ + public reservedName: string[]; /** - * Creates a new CustomHttpPattern instance using the specified properties. + * Creates a new EnumDescriptorProto instance using the specified properties. * @param [properties] Properties to set - * @returns CustomHttpPattern instance + * @returns EnumDescriptorProto instance */ - public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern; + public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @param message CustomHttpPattern message or plain object to encode + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param message EnumDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. + * Decodes an EnumDescriptorProto message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CustomHttpPattern + * @returns EnumDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CustomHttpPattern + * @returns EnumDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; /** - * Verifies a CustomHttpPattern message. + * Verifies an EnumDescriptorProto message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CustomHttpPattern + * @returns EnumDescriptorProto */ - public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern; + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @param message CustomHttpPattern + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param message EnumDescriptorProto * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace EnumDescriptorProto { + + /** Properties of an EnumReservedRange. */ + interface IEnumReservedRange { + + /** EnumReservedRange start */ + start?: (number|null); + + /** EnumReservedRange end */ + end?: (number|null); + } + + /** Represents an EnumReservedRange. */ + class EnumReservedRange implements IEnumReservedRange { + + /** + * Constructs a new EnumReservedRange. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); + + /** EnumReservedRange start. */ + public start: number; + + /** EnumReservedRange end. */ + public end: number; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumReservedRange instance + */ + public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @param message EnumReservedRange message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; + + /** + * Verifies an EnumReservedRange message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; - /** - * Converts this CustomHttpPattern to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @param message EnumReservedRange + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** FieldBehavior enum. */ - enum FieldBehavior { - FIELD_BEHAVIOR_UNSPECIFIED = 0, - OPTIONAL = 1, - REQUIRED = 2, - OUTPUT_ONLY = 3, - INPUT_ONLY = 4, - IMMUTABLE = 5 + /** + * Converts this EnumReservedRange to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } - } - /** Namespace protobuf. */ - namespace protobuf { + /** Properties of an EnumValueDescriptorProto. */ + interface IEnumValueDescriptorProto { - /** Properties of a FileDescriptorSet. */ - interface IFileDescriptorSet { + /** EnumValueDescriptorProto name */ + name?: (string|null); - /** FileDescriptorSet file */ - file?: (google.protobuf.IFileDescriptorProto[]|null); + /** EnumValueDescriptorProto number */ + number?: (number|null); + + /** EnumValueDescriptorProto options */ + options?: (google.protobuf.IEnumValueOptions|null); } - /** Represents a FileDescriptorSet. */ - class FileDescriptorSet implements IFileDescriptorSet { + /** Represents an EnumValueDescriptorProto. */ + class EnumValueDescriptorProto implements IEnumValueDescriptorProto { /** - * Constructs a new FileDescriptorSet. + * Constructs a new EnumValueDescriptorProto. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IFileDescriptorSet); + constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - /** FileDescriptorSet file. */ - public file: google.protobuf.IFileDescriptorProto[]; + /** EnumValueDescriptorProto name. */ + public name: string; + + /** EnumValueDescriptorProto number. */ + public number: number; + + /** EnumValueDescriptorProto options. */ + public options?: (google.protobuf.IEnumValueOptions|null); /** - * Creates a new FileDescriptorSet instance using the specified properties. + * Creates a new EnumValueDescriptorProto instance using the specified properties. * @param [properties] Properties to set - * @returns FileDescriptorSet instance + * @returns EnumValueDescriptorProto instance */ - public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet; + public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @param message FileDescriptorSet message or plain object to encode + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param message EnumValueDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FileDescriptorSet + * @returns EnumValueDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FileDescriptorSet + * @returns EnumValueDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; /** - * Verifies a FileDescriptorSet message. + * Verifies an EnumValueDescriptorProto message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FileDescriptorSet + * @returns EnumValueDescriptorProto */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @param message FileDescriptorSet + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param message EnumValueDescriptorProto * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FileDescriptorSet to JSON. + * Converts this EnumValueDescriptorProto to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a FileDescriptorProto. */ - interface IFileDescriptorProto { + /** Properties of a ServiceDescriptorProto. */ + interface IServiceDescriptorProto { - /** FileDescriptorProto name */ + /** ServiceDescriptorProto name */ name?: (string|null); - /** FileDescriptorProto package */ - "package"?: (string|null); - - /** FileDescriptorProto dependency */ - dependency?: (string[]|null); - - /** FileDescriptorProto publicDependency */ - publicDependency?: (number[]|null); - - /** FileDescriptorProto weakDependency */ - weakDependency?: (number[]|null); - - /** FileDescriptorProto messageType */ - messageType?: (google.protobuf.IDescriptorProto[]|null); - - /** FileDescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); - - /** FileDescriptorProto service */ - service?: (google.protobuf.IServiceDescriptorProto[]|null); - - /** FileDescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** FileDescriptorProto options */ - options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo */ - sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + /** ServiceDescriptorProto method */ + method?: (google.protobuf.IMethodDescriptorProto[]|null); - /** FileDescriptorProto syntax */ - syntax?: (string|null); + /** ServiceDescriptorProto options */ + options?: (google.protobuf.IServiceOptions|null); } - /** Represents a FileDescriptorProto. */ - class FileDescriptorProto implements IFileDescriptorProto { + /** Represents a ServiceDescriptorProto. */ + class ServiceDescriptorProto implements IServiceDescriptorProto { /** - * Constructs a new FileDescriptorProto. + * Constructs a new ServiceDescriptorProto. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IFileDescriptorProto); + constructor(properties?: google.protobuf.IServiceDescriptorProto); - /** FileDescriptorProto name. */ + /** ServiceDescriptorProto name. */ public name: string; - /** FileDescriptorProto package. */ - public package: string; - - /** FileDescriptorProto dependency. */ - public dependency: string[]; - - /** FileDescriptorProto publicDependency. */ - public publicDependency: number[]; - - /** FileDescriptorProto weakDependency. */ - public weakDependency: number[]; - - /** FileDescriptorProto messageType. */ - public messageType: google.protobuf.IDescriptorProto[]; - - /** FileDescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** FileDescriptorProto service. */ - public service: google.protobuf.IServiceDescriptorProto[]; - - /** FileDescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** FileDescriptorProto options. */ - public options?: (google.protobuf.IFileOptions|null); - - /** FileDescriptorProto sourceCodeInfo. */ - public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null); + /** ServiceDescriptorProto method. */ + public method: google.protobuf.IMethodDescriptorProto[]; - /** FileDescriptorProto syntax. */ - public syntax: string; + /** ServiceDescriptorProto options. */ + public options?: (google.protobuf.IServiceOptions|null); /** - * Creates a new FileDescriptorProto instance using the specified properties. + * Creates a new ServiceDescriptorProto instance using the specified properties. * @param [properties] Properties to set - * @returns FileDescriptorProto instance + * @returns ServiceDescriptorProto instance */ - public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto; + public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @param message FileDescriptorProto message or plain object to encode + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param message ServiceDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FileDescriptorProto + * @returns ServiceDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FileDescriptorProto + * @returns ServiceDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; /** - * Verifies a FileDescriptorProto message. + * Verifies a ServiceDescriptorProto message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FileDescriptorProto + * @returns ServiceDescriptorProto */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @param message FileDescriptorProto + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param message ServiceDescriptorProto * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FileDescriptorProto to JSON. + * Converts this ServiceDescriptorProto to JSON. * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a DescriptorProto. */ - interface IDescriptorProto { - - /** DescriptorProto name */ - name?: (string|null); - - /** DescriptorProto field */ - field?: (google.protobuf.IFieldDescriptorProto[]|null); - - /** DescriptorProto extension */ - extension?: (google.protobuf.IFieldDescriptorProto[]|null); + */ + public toJSON(): { [k: string]: any }; + } - /** DescriptorProto nestedType */ - nestedType?: (google.protobuf.IDescriptorProto[]|null); + /** Properties of a MethodDescriptorProto. */ + interface IMethodDescriptorProto { - /** DescriptorProto enumType */ - enumType?: (google.protobuf.IEnumDescriptorProto[]|null); + /** MethodDescriptorProto name */ + name?: (string|null); - /** DescriptorProto extensionRange */ - extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null); + /** MethodDescriptorProto inputType */ + inputType?: (string|null); - /** DescriptorProto oneofDecl */ - oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null); + /** MethodDescriptorProto outputType */ + outputType?: (string|null); - /** DescriptorProto options */ - options?: (google.protobuf.IMessageOptions|null); + /** MethodDescriptorProto options */ + options?: (google.protobuf.IMethodOptions|null); - /** DescriptorProto reservedRange */ - reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null); + /** MethodDescriptorProto clientStreaming */ + clientStreaming?: (boolean|null); - /** DescriptorProto reservedName */ - reservedName?: (string[]|null); + /** MethodDescriptorProto serverStreaming */ + serverStreaming?: (boolean|null); } - /** Represents a DescriptorProto. */ - class DescriptorProto implements IDescriptorProto { + /** Represents a MethodDescriptorProto. */ + class MethodDescriptorProto implements IMethodDescriptorProto { /** - * Constructs a new DescriptorProto. + * Constructs a new MethodDescriptorProto. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IDescriptorProto); + constructor(properties?: google.protobuf.IMethodDescriptorProto); - /** DescriptorProto name. */ + /** MethodDescriptorProto name. */ public name: string; - /** DescriptorProto field. */ - public field: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto extension. */ - public extension: google.protobuf.IFieldDescriptorProto[]; - - /** DescriptorProto nestedType. */ - public nestedType: google.protobuf.IDescriptorProto[]; - - /** DescriptorProto enumType. */ - public enumType: google.protobuf.IEnumDescriptorProto[]; - - /** DescriptorProto extensionRange. */ - public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[]; + /** MethodDescriptorProto inputType. */ + public inputType: string; - /** DescriptorProto oneofDecl. */ - public oneofDecl: google.protobuf.IOneofDescriptorProto[]; + /** MethodDescriptorProto outputType. */ + public outputType: string; - /** DescriptorProto options. */ - public options?: (google.protobuf.IMessageOptions|null); + /** MethodDescriptorProto options. */ + public options?: (google.protobuf.IMethodOptions|null); - /** DescriptorProto reservedRange. */ - public reservedRange: google.protobuf.DescriptorProto.IReservedRange[]; + /** MethodDescriptorProto clientStreaming. */ + public clientStreaming: boolean; - /** DescriptorProto reservedName. */ - public reservedName: string[]; + /** MethodDescriptorProto serverStreaming. */ + public serverStreaming: boolean; /** - * Creates a new DescriptorProto instance using the specified properties. + * Creates a new MethodDescriptorProto instance using the specified properties. * @param [properties] Properties to set - * @returns DescriptorProto instance + * @returns MethodDescriptorProto instance */ - public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto; + public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @param message DescriptorProto message or plain object to encode + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param message MethodDescriptorProto message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a DescriptorProto message from the specified reader or buffer. + * Decodes a MethodDescriptorProto message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns DescriptorProto + * @returns MethodDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns DescriptorProto + * @returns MethodDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; /** - * Verifies a DescriptorProto message. + * Verifies a MethodDescriptorProto message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns DescriptorProto + * @returns MethodDescriptorProto */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @param message DescriptorProto + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param message MethodDescriptorProto * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this DescriptorProto to JSON. + * Converts this MethodDescriptorProto to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace DescriptorProto { + /** Properties of a FileOptions. */ + interface IFileOptions { - /** Properties of an ExtensionRange. */ - interface IExtensionRange { + /** FileOptions javaPackage */ + javaPackage?: (string|null); - /** ExtensionRange start */ - start?: (number|null); + /** FileOptions javaOuterClassname */ + javaOuterClassname?: (string|null); - /** ExtensionRange end */ - end?: (number|null); + /** FileOptions javaMultipleFiles */ + javaMultipleFiles?: (boolean|null); - /** ExtensionRange options */ - options?: (google.protobuf.IExtensionRangeOptions|null); - } + /** FileOptions javaGenerateEqualsAndHash */ + javaGenerateEqualsAndHash?: (boolean|null); - /** Represents an ExtensionRange. */ - class ExtensionRange implements IExtensionRange { + /** FileOptions javaStringCheckUtf8 */ + javaStringCheckUtf8?: (boolean|null); - /** - * Constructs a new ExtensionRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange); + /** FileOptions optimizeFor */ + optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null); - /** ExtensionRange start. */ - public start: number; + /** FileOptions goPackage */ + goPackage?: (string|null); - /** ExtensionRange end. */ - public end: number; + /** FileOptions ccGenericServices */ + ccGenericServices?: (boolean|null); - /** ExtensionRange options. */ - public options?: (google.protobuf.IExtensionRangeOptions|null); + /** FileOptions javaGenericServices */ + javaGenericServices?: (boolean|null); - /** - * Creates a new ExtensionRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ExtensionRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange; + /** FileOptions pyGenericServices */ + pyGenericServices?: (boolean|null); - /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** FileOptions phpGenericServices */ + phpGenericServices?: (boolean|null); - /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. - * @param message ExtensionRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** FileOptions deprecated */ + deprecated?: (boolean|null); - /** - * Decodes an ExtensionRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; + /** FileOptions ccEnableArenas */ + ccEnableArenas?: (boolean|null); + + /** FileOptions objcClassPrefix */ + objcClassPrefix?: (string|null); + + /** FileOptions csharpNamespace */ + csharpNamespace?: (string|null); + + /** FileOptions swiftPrefix */ + swiftPrefix?: (string|null); + + /** FileOptions phpClassPrefix */ + phpClassPrefix?: (string|null); + + /** FileOptions phpNamespace */ + phpNamespace?: (string|null); + + /** FileOptions phpMetadataNamespace */ + phpMetadataNamespace?: (string|null); + + /** FileOptions rubyPackage */ + rubyPackage?: (string|null); + + /** FileOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } + + /** Represents a FileOptions. */ + class FileOptions implements IFileOptions { + + /** + * Constructs a new FileOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFileOptions); + + /** FileOptions javaPackage. */ + public javaPackage: string; + + /** FileOptions javaOuterClassname. */ + public javaOuterClassname: string; + + /** FileOptions javaMultipleFiles. */ + public javaMultipleFiles: boolean; + + /** FileOptions javaGenerateEqualsAndHash. */ + public javaGenerateEqualsAndHash: boolean; + + /** FileOptions javaStringCheckUtf8. */ + public javaStringCheckUtf8: boolean; + + /** FileOptions optimizeFor. */ + public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode); + + /** FileOptions goPackage. */ + public goPackage: string; + + /** FileOptions ccGenericServices. */ + public ccGenericServices: boolean; - /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExtensionRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; + /** FileOptions javaGenericServices. */ + public javaGenericServices: boolean; - /** - * Verifies an ExtensionRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** FileOptions pyGenericServices. */ + public pyGenericServices: boolean; - /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExtensionRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + /** FileOptions phpGenericServices. */ + public phpGenericServices: boolean; - /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. - * @param message ExtensionRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** FileOptions deprecated. */ + public deprecated: boolean; - /** - * Converts this ExtensionRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** FileOptions ccEnableArenas. */ + public ccEnableArenas: boolean; - /** Properties of a ReservedRange. */ - interface IReservedRange { + /** FileOptions objcClassPrefix. */ + public objcClassPrefix: string; - /** ReservedRange start */ - start?: (number|null); + /** FileOptions csharpNamespace. */ + public csharpNamespace: string; - /** ReservedRange end */ - end?: (number|null); - } + /** FileOptions swiftPrefix. */ + public swiftPrefix: string; - /** Represents a ReservedRange. */ - class ReservedRange implements IReservedRange { + /** FileOptions phpClassPrefix. */ + public phpClassPrefix: string; - /** - * Constructs a new ReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.DescriptorProto.IReservedRange); + /** FileOptions phpNamespace. */ + public phpNamespace: string; - /** ReservedRange start. */ - public start: number; + /** FileOptions phpMetadataNamespace. */ + public phpMetadataNamespace: string; - /** ReservedRange end. */ - public end: number; + /** FileOptions rubyPackage. */ + public rubyPackage: string; - /** - * Creates a new ReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns ReservedRange instance - */ - public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange; + /** FileOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new FileOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns FileOptions instance + */ + public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; - /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. - * @param message ReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param message FileOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; - /** - * Verifies a ReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; - /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + /** + * Verifies a FileOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. - * @param message ReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; - /** - * Converts this ReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param message FileOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FileOptions { + + /** OptimizeMode enum. */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 } } - /** Properties of an ExtensionRangeOptions. */ - interface IExtensionRangeOptions { + /** Properties of a MessageOptions. */ + interface IMessageOptions { - /** ExtensionRangeOptions uninterpretedOption */ + /** MessageOptions messageSetWireFormat */ + messageSetWireFormat?: (boolean|null); + + /** MessageOptions noStandardDescriptorAccessor */ + noStandardDescriptorAccessor?: (boolean|null); + + /** MessageOptions deprecated */ + deprecated?: (boolean|null); + + /** MessageOptions mapEntry */ + mapEntry?: (boolean|null); + + /** MessageOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } - /** Represents an ExtensionRangeOptions. */ - class ExtensionRangeOptions implements IExtensionRangeOptions { + /** Represents a MessageOptions. */ + class MessageOptions implements IMessageOptions { /** - * Constructs a new ExtensionRangeOptions. + * Constructs a new MessageOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IExtensionRangeOptions); + constructor(properties?: google.protobuf.IMessageOptions); - /** ExtensionRangeOptions uninterpretedOption. */ + /** MessageOptions messageSetWireFormat. */ + public messageSetWireFormat: boolean; + + /** MessageOptions noStandardDescriptorAccessor. */ + public noStandardDescriptorAccessor: boolean; + + /** MessageOptions deprecated. */ + public deprecated: boolean; + + /** MessageOptions mapEntry. */ + public mapEntry: boolean; + + /** MessageOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new ExtensionRangeOptions instance using the specified properties. + * Creates a new MessageOptions instance using the specified properties. * @param [properties] Properties to set - * @returns ExtensionRangeOptions instance + * @returns MessageOptions instance */ - public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions; + public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @param message ExtensionRangeOptions message or plain object to encode + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param message MessageOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * Decodes a MessageOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ExtensionRangeOptions + * @returns MessageOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ExtensionRangeOptions + * @returns MessageOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; /** - * Verifies an ExtensionRangeOptions message. + * Verifies a MessageOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ExtensionRangeOptions + * @returns MessageOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @param message ExtensionRangeOptions + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param message MessageOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ExtensionRangeOptions to JSON. + * Converts this MessageOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a FieldDescriptorProto. */ - interface IFieldDescriptorProto { - - /** FieldDescriptorProto name */ - name?: (string|null); - - /** FieldDescriptorProto number */ - number?: (number|null); - - /** FieldDescriptorProto label */ - label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null); + /** Properties of a FieldOptions. */ + interface IFieldOptions { - /** FieldDescriptorProto type */ - type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null); + /** FieldOptions ctype */ + ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null); - /** FieldDescriptorProto typeName */ - typeName?: (string|null); + /** FieldOptions packed */ + packed?: (boolean|null); - /** FieldDescriptorProto extendee */ - extendee?: (string|null); + /** FieldOptions jstype */ + jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null); - /** FieldDescriptorProto defaultValue */ - defaultValue?: (string|null); + /** FieldOptions lazy */ + lazy?: (boolean|null); - /** FieldDescriptorProto oneofIndex */ - oneofIndex?: (number|null); + /** FieldOptions deprecated */ + deprecated?: (boolean|null); - /** FieldDescriptorProto jsonName */ - jsonName?: (string|null); + /** FieldOptions weak */ + weak?: (boolean|null); - /** FieldDescriptorProto options */ - options?: (google.protobuf.IFieldOptions|null); + /** FieldOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - /** FieldDescriptorProto proto3Optional */ - proto3Optional?: (boolean|null); + /** FieldOptions .google.api.fieldBehavior */ + ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null); } - /** Represents a FieldDescriptorProto. */ - class FieldDescriptorProto implements IFieldDescriptorProto { + /** Represents a FieldOptions. */ + class FieldOptions implements IFieldOptions { /** - * Constructs a new FieldDescriptorProto. + * Constructs a new FieldOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IFieldDescriptorProto); - - /** FieldDescriptorProto name. */ - public name: string; - - /** FieldDescriptorProto number. */ - public number: number; - - /** FieldDescriptorProto label. */ - public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label); - - /** FieldDescriptorProto type. */ - public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type); + constructor(properties?: google.protobuf.IFieldOptions); - /** FieldDescriptorProto typeName. */ - public typeName: string; + /** FieldOptions ctype. */ + public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType); - /** FieldDescriptorProto extendee. */ - public extendee: string; + /** FieldOptions packed. */ + public packed: boolean; - /** FieldDescriptorProto defaultValue. */ - public defaultValue: string; + /** FieldOptions jstype. */ + public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType); - /** FieldDescriptorProto oneofIndex. */ - public oneofIndex: number; + /** FieldOptions lazy. */ + public lazy: boolean; - /** FieldDescriptorProto jsonName. */ - public jsonName: string; + /** FieldOptions deprecated. */ + public deprecated: boolean; - /** FieldDescriptorProto options. */ - public options?: (google.protobuf.IFieldOptions|null); + /** FieldOptions weak. */ + public weak: boolean; - /** FieldDescriptorProto proto3Optional. */ - public proto3Optional: boolean; + /** FieldOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new FieldDescriptorProto instance using the specified properties. + * Creates a new FieldOptions instance using the specified properties. * @param [properties] Properties to set - * @returns FieldDescriptorProto instance + * @returns FieldOptions instance */ - public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto; + public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @param message FieldDescriptorProto message or plain object to encode + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param message FieldOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * Decodes a FieldOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FieldDescriptorProto + * @returns FieldOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FieldDescriptorProto + * @returns FieldOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; /** - * Verifies a FieldDescriptorProto message. + * Verifies a FieldOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FieldDescriptorProto + * @returns FieldOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @param message FieldDescriptorProto + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param message FieldOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FieldDescriptorProto to JSON. + * Converts this FieldOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace FieldDescriptorProto { + namespace FieldOptions { - /** Type enum. */ - enum Type { - TYPE_DOUBLE = 1, - TYPE_FLOAT = 2, - TYPE_INT64 = 3, - TYPE_UINT64 = 4, - TYPE_INT32 = 5, - TYPE_FIXED64 = 6, - TYPE_FIXED32 = 7, - TYPE_BOOL = 8, - TYPE_STRING = 9, - TYPE_GROUP = 10, - TYPE_MESSAGE = 11, - TYPE_BYTES = 12, - TYPE_UINT32 = 13, - TYPE_ENUM = 14, - TYPE_SFIXED32 = 15, - TYPE_SFIXED64 = 16, - TYPE_SINT32 = 17, - TYPE_SINT64 = 18 + /** CType enum. */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 } - /** Label enum. */ - enum Label { - LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3 + /** JSType enum. */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 } } - /** Properties of an OneofDescriptorProto. */ - interface IOneofDescriptorProto { - - /** OneofDescriptorProto name */ - name?: (string|null); + /** Properties of an OneofOptions. */ + interface IOneofOptions { - /** OneofDescriptorProto options */ - options?: (google.protobuf.IOneofOptions|null); + /** OneofOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } - /** Represents an OneofDescriptorProto. */ - class OneofDescriptorProto implements IOneofDescriptorProto { + /** Represents an OneofOptions. */ + class OneofOptions implements IOneofOptions { /** - * Constructs a new OneofDescriptorProto. + * Constructs a new OneofOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IOneofDescriptorProto); - - /** OneofDescriptorProto name. */ - public name: string; + constructor(properties?: google.protobuf.IOneofOptions); - /** OneofDescriptorProto options. */ - public options?: (google.protobuf.IOneofOptions|null); + /** OneofOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new OneofDescriptorProto instance using the specified properties. + * Creates a new OneofOptions instance using the specified properties. * @param [properties] Properties to set - * @returns OneofDescriptorProto instance + * @returns OneofOptions instance */ - public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto; + public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @param message OneofDescriptorProto message or plain object to encode + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param message OneofOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * Decodes an OneofOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns OneofDescriptorProto + * @returns OneofOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns OneofDescriptorProto + * @returns OneofOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; /** - * Verifies an OneofDescriptorProto message. + * Verifies an OneofOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns OneofDescriptorProto + * @returns OneofOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @param message OneofDescriptorProto + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param message OneofOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this OneofDescriptorProto to JSON. + * Converts this OneofOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an EnumDescriptorProto. */ - interface IEnumDescriptorProto { - - /** EnumDescriptorProto name */ - name?: (string|null); - - /** EnumDescriptorProto value */ - value?: (google.protobuf.IEnumValueDescriptorProto[]|null); + /** Properties of an EnumOptions. */ + interface IEnumOptions { - /** EnumDescriptorProto options */ - options?: (google.protobuf.IEnumOptions|null); + /** EnumOptions allowAlias */ + allowAlias?: (boolean|null); - /** EnumDescriptorProto reservedRange */ - reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null); + /** EnumOptions deprecated */ + deprecated?: (boolean|null); - /** EnumDescriptorProto reservedName */ - reservedName?: (string[]|null); + /** EnumOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } - /** Represents an EnumDescriptorProto. */ - class EnumDescriptorProto implements IEnumDescriptorProto { + /** Represents an EnumOptions. */ + class EnumOptions implements IEnumOptions { /** - * Constructs a new EnumDescriptorProto. + * Constructs a new EnumOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IEnumDescriptorProto); - - /** EnumDescriptorProto name. */ - public name: string; - - /** EnumDescriptorProto value. */ - public value: google.protobuf.IEnumValueDescriptorProto[]; + constructor(properties?: google.protobuf.IEnumOptions); - /** EnumDescriptorProto options. */ - public options?: (google.protobuf.IEnumOptions|null); + /** EnumOptions allowAlias. */ + public allowAlias: boolean; - /** EnumDescriptorProto reservedRange. */ - public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[]; + /** EnumOptions deprecated. */ + public deprecated: boolean; - /** EnumDescriptorProto reservedName. */ - public reservedName: string[]; + /** EnumOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new EnumDescriptorProto instance using the specified properties. + * Creates a new EnumOptions instance using the specified properties. * @param [properties] Properties to set - * @returns EnumDescriptorProto instance + * @returns EnumOptions instance */ - public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto; + public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @param message EnumDescriptorProto message or plain object to encode + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param message EnumOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * Decodes an EnumOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EnumDescriptorProto + * @returns EnumOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EnumDescriptorProto + * @returns EnumOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; /** - * Verifies an EnumDescriptorProto message. + * Verifies an EnumOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EnumDescriptorProto + * @returns EnumOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. - * @param message EnumDescriptorProto + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param message EnumOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EnumDescriptorProto to JSON. + * Converts this EnumOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace EnumDescriptorProto { - - /** Properties of an EnumReservedRange. */ - interface IEnumReservedRange { - - /** EnumReservedRange start */ - start?: (number|null); + /** Properties of an EnumValueOptions. */ + interface IEnumValueOptions { - /** EnumReservedRange end */ - end?: (number|null); - } + /** EnumValueOptions deprecated */ + deprecated?: (boolean|null); - /** Represents an EnumReservedRange. */ - class EnumReservedRange implements IEnumReservedRange { + /** EnumValueOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + } - /** - * Constructs a new EnumReservedRange. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange); + /** Represents an EnumValueOptions. */ + class EnumValueOptions implements IEnumValueOptions { - /** EnumReservedRange start. */ - public start: number; + /** + * Constructs a new EnumValueOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IEnumValueOptions); - /** EnumReservedRange end. */ - public end: number; + /** EnumValueOptions deprecated. */ + public deprecated: boolean; - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @param [properties] Properties to set - * @returns EnumReservedRange instance - */ - public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange; + /** EnumValueOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns EnumValueOptions instance + */ + public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @param message EnumReservedRange message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange; + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param message EnumValueOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange; + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; - /** - * Verifies an EnumReservedRange message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns EnumReservedRange - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange; + /** + * Verifies an EnumValueOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @param message EnumReservedRange - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EnumValueOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; - /** - * Converts this EnumReservedRange to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param message EnumValueOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; } - /** Properties of an EnumValueDescriptorProto. */ - interface IEnumValueDescriptorProto { + /** Properties of a ServiceOptions. */ + interface IServiceOptions { - /** EnumValueDescriptorProto name */ - name?: (string|null); + /** ServiceOptions deprecated */ + deprecated?: (boolean|null); - /** EnumValueDescriptorProto number */ - number?: (number|null); + /** ServiceOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - /** EnumValueDescriptorProto options */ - options?: (google.protobuf.IEnumValueOptions|null); + /** ServiceOptions .google.api.defaultHost */ + ".google.api.defaultHost"?: (string|null); + + /** ServiceOptions .google.api.oauthScopes */ + ".google.api.oauthScopes"?: (string|null); } - /** Represents an EnumValueDescriptorProto. */ - class EnumValueDescriptorProto implements IEnumValueDescriptorProto { + /** Represents a ServiceOptions. */ + class ServiceOptions implements IServiceOptions { /** - * Constructs a new EnumValueDescriptorProto. + * Constructs a new ServiceOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IEnumValueDescriptorProto); - - /** EnumValueDescriptorProto name. */ - public name: string; + constructor(properties?: google.protobuf.IServiceOptions); - /** EnumValueDescriptorProto number. */ - public number: number; + /** ServiceOptions deprecated. */ + public deprecated: boolean; - /** EnumValueDescriptorProto options. */ - public options?: (google.protobuf.IEnumValueOptions|null); + /** ServiceOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. + * Creates a new ServiceOptions instance using the specified properties. * @param [properties] Properties to set - * @returns EnumValueDescriptorProto instance + * @returns ServiceOptions instance */ - public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto; + public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @param message EnumValueDescriptorProto message or plain object to encode + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param message ServiceOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * Decodes a ServiceOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EnumValueDescriptorProto + * @returns ServiceOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EnumValueDescriptorProto + * @returns ServiceOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; /** - * Verifies an EnumValueDescriptorProto message. + * Verifies a ServiceOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EnumValueDescriptorProto + * @returns ServiceOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. - * @param message EnumValueDescriptorProto + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param message ServiceOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EnumValueDescriptorProto to JSON. + * Converts this ServiceOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a ServiceDescriptorProto. */ - interface IServiceDescriptorProto { + /** Properties of a MethodOptions. */ + interface IMethodOptions { - /** ServiceDescriptorProto name */ - name?: (string|null); + /** MethodOptions deprecated */ + deprecated?: (boolean|null); - /** ServiceDescriptorProto method */ - method?: (google.protobuf.IMethodDescriptorProto[]|null); + /** MethodOptions idempotencyLevel */ + idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null); - /** ServiceDescriptorProto options */ - options?: (google.protobuf.IServiceOptions|null); + /** MethodOptions uninterpretedOption */ + uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** MethodOptions .google.api.http */ + ".google.api.http"?: (google.api.IHttpRule|null); + + /** MethodOptions .google.api.methodSignature */ + ".google.api.methodSignature"?: (string[]|null); + + /** MethodOptions .google.longrunning.operationInfo */ + ".google.longrunning.operationInfo"?: (google.longrunning.IOperationInfo|null); } - /** Represents a ServiceDescriptorProto. */ - class ServiceDescriptorProto implements IServiceDescriptorProto { + /** Represents a MethodOptions. */ + class MethodOptions implements IMethodOptions { /** - * Constructs a new ServiceDescriptorProto. + * Constructs a new MethodOptions. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IServiceDescriptorProto); + constructor(properties?: google.protobuf.IMethodOptions); - /** ServiceDescriptorProto name. */ - public name: string; + /** MethodOptions deprecated. */ + public deprecated: boolean; - /** ServiceDescriptorProto method. */ - public method: google.protobuf.IMethodDescriptorProto[]; + /** MethodOptions idempotencyLevel. */ + public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel); - /** ServiceDescriptorProto options. */ - public options?: (google.protobuf.IServiceOptions|null); + /** MethodOptions uninterpretedOption. */ + public uninterpretedOption: google.protobuf.IUninterpretedOption[]; /** - * Creates a new ServiceDescriptorProto instance using the specified properties. + * Creates a new MethodOptions instance using the specified properties. * @param [properties] Properties to set - * @returns ServiceDescriptorProto instance + * @returns MethodOptions instance */ - public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto; + public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. - * @param message ServiceDescriptorProto message or plain object to encode + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param message MethodOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * Decodes a MethodOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ServiceDescriptorProto + * @returns MethodOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ServiceDescriptorProto + * @returns MethodOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; /** - * Verifies a ServiceDescriptorProto message. + * Verifies a MethodOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ServiceDescriptorProto + * @returns MethodOptions */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. - * @param message ServiceDescriptorProto + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param message MethodOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ServiceDescriptorProto to JSON. + * Converts this MethodOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a MethodDescriptorProto. */ - interface IMethodDescriptorProto { + namespace MethodOptions { - /** MethodDescriptorProto name */ - name?: (string|null); + /** IdempotencyLevel enum. */ + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } + } - /** MethodDescriptorProto inputType */ - inputType?: (string|null); + /** Properties of an UninterpretedOption. */ + interface IUninterpretedOption { - /** MethodDescriptorProto outputType */ - outputType?: (string|null); + /** UninterpretedOption name */ + name?: (google.protobuf.UninterpretedOption.INamePart[]|null); - /** MethodDescriptorProto options */ - options?: (google.protobuf.IMethodOptions|null); + /** UninterpretedOption identifierValue */ + identifierValue?: (string|null); - /** MethodDescriptorProto clientStreaming */ - clientStreaming?: (boolean|null); + /** UninterpretedOption positiveIntValue */ + positiveIntValue?: (number|Long|string|null); - /** MethodDescriptorProto serverStreaming */ - serverStreaming?: (boolean|null); + /** UninterpretedOption negativeIntValue */ + negativeIntValue?: (number|Long|string|null); + + /** UninterpretedOption doubleValue */ + doubleValue?: (number|null); + + /** UninterpretedOption stringValue */ + stringValue?: (Uint8Array|string|null); + + /** UninterpretedOption aggregateValue */ + aggregateValue?: (string|null); } - /** Represents a MethodDescriptorProto. */ - class MethodDescriptorProto implements IMethodDescriptorProto { + /** Represents an UninterpretedOption. */ + class UninterpretedOption implements IUninterpretedOption { /** - * Constructs a new MethodDescriptorProto. + * Constructs a new UninterpretedOption. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IMethodDescriptorProto); + constructor(properties?: google.protobuf.IUninterpretedOption); + + /** UninterpretedOption name. */ + public name: google.protobuf.UninterpretedOption.INamePart[]; - /** MethodDescriptorProto name. */ - public name: string; + /** UninterpretedOption identifierValue. */ + public identifierValue: string; - /** MethodDescriptorProto inputType. */ - public inputType: string; + /** UninterpretedOption positiveIntValue. */ + public positiveIntValue: (number|Long|string); - /** MethodDescriptorProto outputType. */ - public outputType: string; + /** UninterpretedOption negativeIntValue. */ + public negativeIntValue: (number|Long|string); - /** MethodDescriptorProto options. */ - public options?: (google.protobuf.IMethodOptions|null); + /** UninterpretedOption doubleValue. */ + public doubleValue: number; - /** MethodDescriptorProto clientStreaming. */ - public clientStreaming: boolean; + /** UninterpretedOption stringValue. */ + public stringValue: (Uint8Array|string); - /** MethodDescriptorProto serverStreaming. */ - public serverStreaming: boolean; + /** UninterpretedOption aggregateValue. */ + public aggregateValue: string; /** - * Creates a new MethodDescriptorProto instance using the specified properties. + * Creates a new UninterpretedOption instance using the specified properties. * @param [properties] Properties to set - * @returns MethodDescriptorProto instance + * @returns UninterpretedOption instance */ - public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto; + public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. - * @param message MethodDescriptorProto message or plain object to encode + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param message UninterpretedOption message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * Decodes an UninterpretedOption message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MethodDescriptorProto + * @returns UninterpretedOption * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns MethodDescriptorProto + * @returns UninterpretedOption * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; /** - * Verifies a MethodDescriptorProto message. + * Verifies an UninterpretedOption message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns MethodDescriptorProto + * @returns UninterpretedOption */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. - * @param message MethodDescriptorProto + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param message UninterpretedOption * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this MethodDescriptorProto to JSON. + * Converts this UninterpretedOption to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a FileOptions. */ - interface IFileOptions { - - /** FileOptions javaPackage */ - javaPackage?: (string|null); - - /** FileOptions javaOuterClassname */ - javaOuterClassname?: (string|null); - - /** FileOptions javaMultipleFiles */ - javaMultipleFiles?: (boolean|null); - - /** FileOptions javaGenerateEqualsAndHash */ - javaGenerateEqualsAndHash?: (boolean|null); - - /** FileOptions javaStringCheckUtf8 */ - javaStringCheckUtf8?: (boolean|null); - - /** FileOptions optimizeFor */ - optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null); - - /** FileOptions goPackage */ - goPackage?: (string|null); - - /** FileOptions ccGenericServices */ - ccGenericServices?: (boolean|null); - - /** FileOptions javaGenericServices */ - javaGenericServices?: (boolean|null); - - /** FileOptions pyGenericServices */ - pyGenericServices?: (boolean|null); - - /** FileOptions phpGenericServices */ - phpGenericServices?: (boolean|null); - - /** FileOptions deprecated */ - deprecated?: (boolean|null); - - /** FileOptions ccEnableArenas */ - ccEnableArenas?: (boolean|null); - - /** FileOptions objcClassPrefix */ - objcClassPrefix?: (string|null); - - /** FileOptions csharpNamespace */ - csharpNamespace?: (string|null); - - /** FileOptions swiftPrefix */ - swiftPrefix?: (string|null); - - /** FileOptions phpClassPrefix */ - phpClassPrefix?: (string|null); - - /** FileOptions phpNamespace */ - phpNamespace?: (string|null); - - /** FileOptions phpMetadataNamespace */ - phpMetadataNamespace?: (string|null); - - /** FileOptions rubyPackage */ - rubyPackage?: (string|null); - - /** FileOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } - - /** Represents a FileOptions. */ - class FileOptions implements IFileOptions { - - /** - * Constructs a new FileOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFileOptions); + namespace UninterpretedOption { - /** FileOptions javaPackage. */ - public javaPackage: string; + /** Properties of a NamePart. */ + interface INamePart { - /** FileOptions javaOuterClassname. */ - public javaOuterClassname: string; + /** NamePart namePart */ + namePart: string; - /** FileOptions javaMultipleFiles. */ - public javaMultipleFiles: boolean; + /** NamePart isExtension */ + isExtension: boolean; + } - /** FileOptions javaGenerateEqualsAndHash. */ - public javaGenerateEqualsAndHash: boolean; + /** Represents a NamePart. */ + class NamePart implements INamePart { - /** FileOptions javaStringCheckUtf8. */ - public javaStringCheckUtf8: boolean; + /** + * Constructs a new NamePart. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - /** FileOptions optimizeFor. */ - public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode); + /** NamePart namePart. */ + public namePart: string; - /** FileOptions goPackage. */ - public goPackage: string; + /** NamePart isExtension. */ + public isExtension: boolean; - /** FileOptions ccGenericServices. */ - public ccGenericServices: boolean; + /** + * Creates a new NamePart instance using the specified properties. + * @param [properties] Properties to set + * @returns NamePart instance + */ + public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; - /** FileOptions javaGenericServices. */ - public javaGenericServices: boolean; + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - /** FileOptions pyGenericServices. */ - public pyGenericServices: boolean; + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param message NamePart message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; - /** FileOptions deprecated. */ - public deprecated: boolean; + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; - /** FileOptions ccEnableArenas. */ - public ccEnableArenas: boolean; + /** + * Verifies a NamePart message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** FileOptions objcClassPrefix. */ - public objcClassPrefix: string; + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NamePart + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; - /** FileOptions csharpNamespace. */ - public csharpNamespace: string; + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param message NamePart + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** FileOptions swiftPrefix. */ - public swiftPrefix: string; + /** + * Converts this NamePart to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } - /** FileOptions phpClassPrefix. */ - public phpClassPrefix: string; + /** Properties of a SourceCodeInfo. */ + interface ISourceCodeInfo { - /** FileOptions phpNamespace. */ - public phpNamespace: string; + /** SourceCodeInfo location */ + location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); + } - /** FileOptions phpMetadataNamespace. */ - public phpMetadataNamespace: string; + /** Represents a SourceCodeInfo. */ + class SourceCodeInfo implements ISourceCodeInfo { - /** FileOptions rubyPackage. */ - public rubyPackage: string; + /** + * Constructs a new SourceCodeInfo. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ISourceCodeInfo); - /** FileOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** SourceCodeInfo location. */ + public location: google.protobuf.SourceCodeInfo.ILocation[]; /** - * Creates a new FileOptions instance using the specified properties. + * Creates a new SourceCodeInfo instance using the specified properties. * @param [properties] Properties to set - * @returns FileOptions instance + * @returns SourceCodeInfo instance */ - public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions; + public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. - * @param message FileOptions message or plain object to encode + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param message SourceCodeInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FileOptions message from the specified reader or buffer. + * Decodes a SourceCodeInfo message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FileOptions + * @returns SourceCodeInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FileOptions + * @returns SourceCodeInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; /** - * Verifies a FileOptions message. + * Verifies a SourceCodeInfo message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FileOptions + * @returns SourceCodeInfo */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @param message FileOptions + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param message SourceCodeInfo * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FileOptions to JSON. + * Converts this SourceCodeInfo to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace FileOptions { + namespace SourceCodeInfo { - /** OptimizeMode enum. */ - enum OptimizeMode { - SPEED = 1, - CODE_SIZE = 2, - LITE_RUNTIME = 3 + /** Properties of a Location. */ + interface ILocation { + + /** Location path */ + path?: (number[]|null); + + /** Location span */ + span?: (number[]|null); + + /** Location leadingComments */ + leadingComments?: (string|null); + + /** Location trailingComments */ + trailingComments?: (string|null); + + /** Location leadingDetachedComments */ + leadingDetachedComments?: (string[]|null); } - } - /** Properties of a MessageOptions. */ - interface IMessageOptions { + /** Represents a Location. */ + class Location implements ILocation { - /** MessageOptions messageSetWireFormat */ - messageSetWireFormat?: (boolean|null); + /** + * Constructs a new Location. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); - /** MessageOptions noStandardDescriptorAccessor */ - noStandardDescriptorAccessor?: (boolean|null); + /** Location path. */ + public path: number[]; - /** MessageOptions deprecated */ - deprecated?: (boolean|null); + /** Location span. */ + public span: number[]; - /** MessageOptions mapEntry */ - mapEntry?: (boolean|null); + /** Location leadingComments. */ + public leadingComments: string; - /** MessageOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - } + /** Location trailingComments. */ + public trailingComments: string; - /** Represents a MessageOptions. */ - class MessageOptions implements IMessageOptions { + /** Location leadingDetachedComments. */ + public leadingDetachedComments: string[]; - /** - * Constructs a new MessageOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IMessageOptions); + /** + * Creates a new Location instance using the specified properties. + * @param [properties] Properties to set + * @returns Location instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; - /** MessageOptions messageSetWireFormat. */ - public messageSetWireFormat: boolean; + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - /** MessageOptions noStandardDescriptorAccessor. */ - public noStandardDescriptorAccessor: boolean; + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param message Location message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; - /** MessageOptions deprecated. */ - public deprecated: boolean; + /** + * Decodes a Location message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; - /** MessageOptions mapEntry. */ - public mapEntry: boolean; + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; - /** MessageOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** + * Verifies a Location message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Location + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param message Location + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Location to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of a GeneratedCodeInfo. */ + interface IGeneratedCodeInfo { + + /** GeneratedCodeInfo annotation */ + annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); + } + + /** Represents a GeneratedCodeInfo. */ + class GeneratedCodeInfo implements IGeneratedCodeInfo { /** - * Creates a new MessageOptions instance using the specified properties. + * Constructs a new GeneratedCodeInfo. * @param [properties] Properties to set - * @returns MessageOptions instance */ - public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions; + constructor(properties?: google.protobuf.IGeneratedCodeInfo); + + /** GeneratedCodeInfo annotation. */ + public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param [properties] Properties to set + * @returns GeneratedCodeInfo instance + */ + public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. - * @param message MessageOptions message or plain object to encode + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param message GeneratedCodeInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MessageOptions message from the specified reader or buffer. + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MessageOptions + * @returns GeneratedCodeInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns MessageOptions + * @returns GeneratedCodeInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; /** - * Verifies a MessageOptions message. + * Verifies a GeneratedCodeInfo message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns MessageOptions + * @returns GeneratedCodeInfo */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @param message MessageOptions + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param message GeneratedCodeInfo * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this MessageOptions to JSON. + * Converts this GeneratedCodeInfo to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a FieldOptions. */ - interface IFieldOptions { + namespace GeneratedCodeInfo { - /** FieldOptions ctype */ - ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null); + /** Properties of an Annotation. */ + interface IAnnotation { - /** FieldOptions packed */ - packed?: (boolean|null); + /** Annotation path */ + path?: (number[]|null); - /** FieldOptions jstype */ - jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null); + /** Annotation sourceFile */ + sourceFile?: (string|null); - /** FieldOptions lazy */ - lazy?: (boolean|null); + /** Annotation begin */ + begin?: (number|null); - /** FieldOptions deprecated */ - deprecated?: (boolean|null); + /** Annotation end */ + end?: (number|null); + } - /** FieldOptions weak */ - weak?: (boolean|null); + /** Represents an Annotation. */ + class Annotation implements IAnnotation { - /** FieldOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** + * Constructs a new Annotation. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - /** FieldOptions .google.api.fieldBehavior */ - ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null); - } + /** Annotation path. */ + public path: number[]; - /** Represents a FieldOptions. */ - class FieldOptions implements IFieldOptions { + /** Annotation sourceFile. */ + public sourceFile: string; - /** - * Constructs a new FieldOptions. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.IFieldOptions); + /** Annotation begin. */ + public begin: number; - /** FieldOptions ctype. */ - public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType); + /** Annotation end. */ + public end: number; - /** FieldOptions packed. */ - public packed: boolean; + /** + * Creates a new Annotation instance using the specified properties. + * @param [properties] Properties to set + * @returns Annotation instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; - /** FieldOptions jstype. */ - public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType); + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - /** FieldOptions lazy. */ - public lazy: boolean; + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param message Annotation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; - /** FieldOptions deprecated. */ - public deprecated: boolean; + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; - /** FieldOptions weak. */ - public weak: boolean; + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; - /** FieldOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** + * Verifies an Annotation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Annotation + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param message Annotation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Annotation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** Properties of an Any. */ + interface IAny { + + /** Any type_url */ + type_url?: (string|null); + + /** Any value */ + value?: (Uint8Array|string|null); + } + + /** Represents an Any. */ + class Any implements IAny { /** - * Creates a new FieldOptions instance using the specified properties. + * Constructs a new Any. * @param [properties] Properties to set - * @returns FieldOptions instance */ - public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions; + constructor(properties?: google.protobuf.IAny); + + /** Any type_url. */ + public type_url: string; + + /** Any value. */ + public value: (Uint8Array|string); /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode + * Creates a new Any instance using the specified properties. + * @param [properties] Properties to set + * @returns Any instance + */ + public static create(properties?: google.protobuf.IAny): google.protobuf.Any; + + /** + * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @param message Any message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. - * @param message FieldOptions message or plain object to encode + * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @param message Any message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FieldOptions message from the specified reader or buffer. + * Decodes an Any message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FieldOptions + * @returns Any * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any; /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * Decodes an Any message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FieldOptions + * @returns Any * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any; /** - * Verifies a FieldOptions message. + * Verifies an Any message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * Creates an Any message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FieldOptions + * @returns Any */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Any; /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. - * @param message FieldOptions + * Creates a plain object from an Any message. Also converts values to other types if specified. + * @param message Any * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Any, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FieldOptions to JSON. + * Converts this Any to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace FieldOptions { - - /** CType enum. */ - enum CType { - STRING = 0, - CORD = 1, - STRING_PIECE = 2 - } - - /** JSType enum. */ - enum JSType { - JS_NORMAL = 0, - JS_STRING = 1, - JS_NUMBER = 2 - } - } + /** Properties of a Duration. */ + interface IDuration { - /** Properties of an OneofOptions. */ - interface IOneofOptions { + /** Duration seconds */ + seconds?: (number|Long|string|null); - /** OneofOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** Duration nanos */ + nanos?: (number|null); } - /** Represents an OneofOptions. */ - class OneofOptions implements IOneofOptions { + /** Represents a Duration. */ + class Duration implements IDuration { /** - * Constructs a new OneofOptions. + * Constructs a new Duration. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IOneofOptions); + constructor(properties?: google.protobuf.IDuration); - /** OneofOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** Duration seconds. */ + public seconds: (number|Long|string); + + /** Duration nanos. */ + public nanos: number; /** - * Creates a new OneofOptions instance using the specified properties. + * Creates a new Duration instance using the specified properties. * @param [properties] Properties to set - * @returns OneofOptions instance + * @returns Duration instance */ - public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions; + public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration; /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param message Duration message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. - * @param message OneofOptions message or plain object to encode + * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param message Duration message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an OneofOptions message from the specified reader or buffer. + * Decodes a Duration message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns OneofOptions + * @returns Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration; /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * Decodes a Duration message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns OneofOptions + * @returns Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration; /** - * Verifies an OneofOptions message. + * Verifies a Duration message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Duration message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns OneofOptions + * @returns Duration */ - public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Duration; /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. - * @param message OneofOptions + * Creates a plain object from a Duration message. Also converts values to other types if specified. + * @param message Duration * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this OneofOptions to JSON. + * Converts this Duration to JSON. * @returns JSON object */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an EnumOptions. */ - interface IEnumOptions { - - /** EnumOptions allowAlias */ - allowAlias?: (boolean|null); - - /** EnumOptions deprecated */ - deprecated?: (boolean|null); + public toJSON(): { [k: string]: any }; + } - /** EnumOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** Properties of an Empty. */ + interface IEmpty { } - /** Represents an EnumOptions. */ - class EnumOptions implements IEnumOptions { + /** Represents an Empty. */ + class Empty implements IEmpty { /** - * Constructs a new EnumOptions. + * Constructs a new Empty. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IEnumOptions); - - /** EnumOptions allowAlias. */ - public allowAlias: boolean; - - /** EnumOptions deprecated. */ - public deprecated: boolean; - - /** EnumOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + constructor(properties?: google.protobuf.IEmpty); /** - * Creates a new EnumOptions instance using the specified properties. + * Creates a new Empty instance using the specified properties. * @param [properties] Properties to set - * @returns EnumOptions instance + * @returns Empty instance */ - public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions; + public static create(properties?: google.protobuf.IEmpty): google.protobuf.Empty; /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode + * Encodes the specified Empty message. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages. + * @param message Empty message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. - * @param message EnumOptions message or plain object to encode + * Encodes the specified Empty message, length delimited. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages. + * @param message Empty message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IEmpty, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EnumOptions message from the specified reader or buffer. + * Decodes an Empty message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EnumOptions + * @returns Empty * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Empty; /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * Decodes an Empty message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EnumOptions + * @returns Empty * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Empty; /** - * Verifies an EnumOptions message. + * Verifies an Empty message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * Creates an Empty message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EnumOptions + * @returns Empty */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Empty; /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @param message EnumOptions + * Creates a plain object from an Empty message. Also converts values to other types if specified. + * @param message Empty * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Empty, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EnumOptions to JSON. + * Converts this Empty to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an EnumValueOptions. */ - interface IEnumValueOptions { + /** Properties of a Timestamp. */ + interface ITimestamp { - /** EnumValueOptions deprecated */ - deprecated?: (boolean|null); + /** Timestamp seconds */ + seconds?: (number|Long|string|null); - /** EnumValueOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** Timestamp nanos */ + nanos?: (number|null); } - /** Represents an EnumValueOptions. */ - class EnumValueOptions implements IEnumValueOptions { + /** Represents a Timestamp. */ + class Timestamp implements ITimestamp { /** - * Constructs a new EnumValueOptions. + * Constructs a new Timestamp. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IEnumValueOptions); + constructor(properties?: google.protobuf.ITimestamp); - /** EnumValueOptions deprecated. */ - public deprecated: boolean; + /** Timestamp seconds. */ + public seconds: (number|Long|string); - /** EnumValueOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** Timestamp nanos. */ + public nanos: number; /** - * Creates a new EnumValueOptions instance using the specified properties. + * Creates a new Timestamp instance using the specified properties. * @param [properties] Properties to set - * @returns EnumValueOptions instance + * @returns Timestamp instance */ - public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions; + public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. - * @param message EnumValueOptions message or plain object to encode + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param message Timestamp message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EnumValueOptions message from the specified reader or buffer. + * Decodes a Timestamp message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EnumValueOptions + * @returns Timestamp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * Decodes a Timestamp message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EnumValueOptions + * @returns Timestamp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; /** - * Verifies an EnumValueOptions message. + * Verifies a Timestamp message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EnumValueOptions + * @returns Timestamp */ - public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. - * @param message EnumValueOptions + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param message Timestamp * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EnumValueOptions to JSON. + * Converts this Timestamp to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a ServiceOptions. */ - interface IServiceOptions { - - /** ServiceOptions deprecated */ - deprecated?: (boolean|null); - - /** ServiceOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); - - /** ServiceOptions .google.api.defaultHost */ - ".google.api.defaultHost"?: (string|null); + /** Properties of a Struct. */ + interface IStruct { - /** ServiceOptions .google.api.oauthScopes */ - ".google.api.oauthScopes"?: (string|null); + /** Struct fields */ + fields?: ({ [k: string]: google.protobuf.IValue }|null); } - /** Represents a ServiceOptions. */ - class ServiceOptions implements IServiceOptions { + /** Represents a Struct. */ + class Struct implements IStruct { /** - * Constructs a new ServiceOptions. + * Constructs a new Struct. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IServiceOptions); - - /** ServiceOptions deprecated. */ - public deprecated: boolean; + constructor(properties?: google.protobuf.IStruct); - /** ServiceOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** Struct fields. */ + public fields: { [k: string]: google.protobuf.IValue }; /** - * Creates a new ServiceOptions instance using the specified properties. + * Creates a new Struct instance using the specified properties. * @param [properties] Properties to set - * @returns ServiceOptions instance + * @returns Struct instance */ - public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions; + public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. - * @param message ServiceOptions message or plain object to encode + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * @param message Struct message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ServiceOptions message from the specified reader or buffer. + * Decodes a Struct message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ServiceOptions + * @returns Struct * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * Decodes a Struct message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ServiceOptions + * @returns Struct * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; /** - * Verifies a ServiceOptions message. + * Verifies a Struct message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Struct message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ServiceOptions + * @returns Struct */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. - * @param message ServiceOptions + * Creates a plain object from a Struct message. Also converts values to other types if specified. + * @param message Struct * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ServiceOptions to JSON. + * Converts this Struct to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a MethodOptions. */ - interface IMethodOptions { + /** Properties of a Value. */ + interface IValue { - /** MethodOptions deprecated */ - deprecated?: (boolean|null); + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - /** MethodOptions idempotencyLevel */ - idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null); + /** Value numberValue */ + numberValue?: (number|null); - /** MethodOptions uninterpretedOption */ - uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + /** Value stringValue */ + stringValue?: (string|null); - /** MethodOptions .google.api.http */ - ".google.api.http"?: (google.api.IHttpRule|null); + /** Value boolValue */ + boolValue?: (boolean|null); - /** MethodOptions .google.api.methodSignature */ - ".google.api.methodSignature"?: (string[]|null); + /** Value structValue */ + structValue?: (google.protobuf.IStruct|null); + + /** Value listValue */ + listValue?: (google.protobuf.IListValue|null); } - /** Represents a MethodOptions. */ - class MethodOptions implements IMethodOptions { + /** Represents a Value. */ + class Value implements IValue { /** - * Constructs a new MethodOptions. + * Constructs a new Value. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IMethodOptions); + constructor(properties?: google.protobuf.IValue); - /** MethodOptions deprecated. */ - public deprecated: boolean; + /** Value nullValue. */ + public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); - /** MethodOptions idempotencyLevel. */ - public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel); + /** Value numberValue. */ + public numberValue: number; - /** MethodOptions uninterpretedOption. */ - public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** Value stringValue. */ + public stringValue: string; + + /** Value boolValue. */ + public boolValue: boolean; + + /** Value structValue. */ + public structValue?: (google.protobuf.IStruct|null); + + /** Value listValue. */ + public listValue?: (google.protobuf.IListValue|null); + + /** Value kind. */ + public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); /** - * Creates a new MethodOptions instance using the specified properties. + * Creates a new Value instance using the specified properties. * @param [properties] Properties to set - * @returns MethodOptions instance + * @returns Value instance */ - public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions; + public static create(properties?: google.protobuf.IValue): google.protobuf.Value; /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. - * @param message MethodOptions message or plain object to encode + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * @param message Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MethodOptions message from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MethodOptions + * @returns Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * Decodes a Value message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns MethodOptions + * @returns Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; /** - * Verifies a MethodOptions message. + * Verifies a Value message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Value message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns MethodOptions + * @returns Value */ - public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; + public static fromObject(object: { [k: string]: any }): google.protobuf.Value; /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. - * @param message MethodOptions + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this MethodOptions to JSON. + * Converts this Value to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace MethodOptions { - - /** IdempotencyLevel enum. */ - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0, - NO_SIDE_EFFECTS = 1, - IDEMPOTENT = 2 - } + /** NullValue enum. */ + enum NullValue { + NULL_VALUE = 0 } - /** Properties of an UninterpretedOption. */ - interface IUninterpretedOption { - - /** UninterpretedOption name */ - name?: (google.protobuf.UninterpretedOption.INamePart[]|null); - - /** UninterpretedOption identifierValue */ - identifierValue?: (string|null); - - /** UninterpretedOption positiveIntValue */ - positiveIntValue?: (number|Long|string|null); - - /** UninterpretedOption negativeIntValue */ - negativeIntValue?: (number|Long|string|null); - - /** UninterpretedOption doubleValue */ - doubleValue?: (number|null); - - /** UninterpretedOption stringValue */ - stringValue?: (Uint8Array|string|null); + /** Properties of a ListValue. */ + interface IListValue { - /** UninterpretedOption aggregateValue */ - aggregateValue?: (string|null); + /** ListValue values */ + values?: (google.protobuf.IValue[]|null); } - /** Represents an UninterpretedOption. */ - class UninterpretedOption implements IUninterpretedOption { + /** Represents a ListValue. */ + class ListValue implements IListValue { /** - * Constructs a new UninterpretedOption. + * Constructs a new ListValue. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IUninterpretedOption); - - /** UninterpretedOption name. */ - public name: google.protobuf.UninterpretedOption.INamePart[]; - - /** UninterpretedOption identifierValue. */ - public identifierValue: string; - - /** UninterpretedOption positiveIntValue. */ - public positiveIntValue: (number|Long|string); - - /** UninterpretedOption negativeIntValue. */ - public negativeIntValue: (number|Long|string); - - /** UninterpretedOption doubleValue. */ - public doubleValue: number; - - /** UninterpretedOption stringValue. */ - public stringValue: (Uint8Array|string); + constructor(properties?: google.protobuf.IListValue); - /** UninterpretedOption aggregateValue. */ - public aggregateValue: string; + /** ListValue values. */ + public values: google.protobuf.IValue[]; /** - * Creates a new UninterpretedOption instance using the specified properties. + * Creates a new ListValue instance using the specified properties. * @param [properties] Properties to set - * @returns UninterpretedOption instance + * @returns ListValue instance */ - public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption; + public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. - * @param message UninterpretedOption message or plain object to encode + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * @param message ListValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an UninterpretedOption message from the specified reader or buffer. + * Decodes a ListValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns UninterpretedOption + * @returns ListValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * Decodes a ListValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns UninterpretedOption + * @returns ListValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; /** - * Verifies an UninterpretedOption message. + * Verifies a ListValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns UninterpretedOption + * @returns ListValue */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. - * @param message UninterpretedOption + * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * @param message ListValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this UninterpretedOption to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace UninterpretedOption { - - /** Properties of a NamePart. */ - interface INamePart { - - /** NamePart namePart */ - namePart: string; - - /** NamePart isExtension */ - isExtension: boolean; - } - - /** Represents a NamePart. */ - class NamePart implements INamePart { - - /** - * Constructs a new NamePart. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.UninterpretedOption.INamePart); - - /** NamePart namePart. */ - public namePart: string; - - /** NamePart isExtension. */ - public isExtension: boolean; - - /** - * Creates a new NamePart instance using the specified properties. - * @param [properties] Properties to set - * @returns NamePart instance - */ - public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart; - - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @param message NamePart message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a NamePart message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; - - /** - * Verifies a NamePart message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NamePart - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; - - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @param message NamePart - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this NamePart to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + * Converts this ListValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; } - /** Properties of a SourceCodeInfo. */ - interface ISourceCodeInfo { + /** Properties of a DoubleValue. */ + interface IDoubleValue { - /** SourceCodeInfo location */ - location?: (google.protobuf.SourceCodeInfo.ILocation[]|null); + /** DoubleValue value */ + value?: (number|null); } - /** Represents a SourceCodeInfo. */ - class SourceCodeInfo implements ISourceCodeInfo { + /** Represents a DoubleValue. */ + class DoubleValue implements IDoubleValue { /** - * Constructs a new SourceCodeInfo. + * Constructs a new DoubleValue. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.ISourceCodeInfo); + constructor(properties?: google.protobuf.IDoubleValue); - /** SourceCodeInfo location. */ - public location: google.protobuf.SourceCodeInfo.ILocation[]; + /** DoubleValue value. */ + public value: number; /** - * Creates a new SourceCodeInfo instance using the specified properties. + * Creates a new DoubleValue instance using the specified properties. * @param [properties] Properties to set - * @returns SourceCodeInfo instance + * @returns DoubleValue instance */ - public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo; + public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue; /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. - * @param message SourceCodeInfo message or plain object to encode + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @param message DoubleValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. + * Decodes a DoubleValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns SourceCodeInfo + * @returns DoubleValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue; /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns SourceCodeInfo + * @returns DoubleValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue; /** - * Verifies a SourceCodeInfo message. + * Verifies a DoubleValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns SourceCodeInfo + * @returns DoubleValue */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue; /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. - * @param message SourceCodeInfo + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @param message DoubleValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this SourceCodeInfo to JSON. + * Converts this DoubleValue to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace SourceCodeInfo { + /** Properties of a FloatValue. */ + interface IFloatValue { - /** Properties of a Location. */ - interface ILocation { + /** FloatValue value */ + value?: (number|null); + } - /** Location path */ - path?: (number[]|null); + /** Represents a FloatValue. */ + class FloatValue implements IFloatValue { - /** Location span */ - span?: (number[]|null); + /** + * Constructs a new FloatValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFloatValue); - /** Location leadingComments */ - leadingComments?: (string|null); + /** FloatValue value. */ + public value: number; - /** Location trailingComments */ - trailingComments?: (string|null); + /** + * Creates a new FloatValue instance using the specified properties. + * @param [properties] Properties to set + * @returns FloatValue instance + */ + public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue; - /** Location leadingDetachedComments */ - leadingDetachedComments?: (string[]|null); - } + /** + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; - /** Represents a Location. */ - class Location implements ILocation { + /** + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * @param message FloatValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Constructs a new Location. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.SourceCodeInfo.ILocation); + /** + * Decodes a FloatValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue; - /** Location path. */ - public path: number[]; + /** + * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FloatValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue; - /** Location span. */ - public span: number[]; + /** + * Verifies a FloatValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** Location leadingComments. */ - public leadingComments: string; + /** + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FloatValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue; - /** Location trailingComments. */ - public trailingComments: string; + /** + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * @param message FloatValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Location leadingDetachedComments. */ - public leadingDetachedComments: string[]; + /** + * Converts this FloatValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** - * Creates a new Location instance using the specified properties. - * @param [properties] Properties to set - * @returns Location instance - */ - public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location; + /** Properties of an Int64Value. */ + interface IInt64Value { - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + /** Int64Value value */ + value?: (number|Long|string|null); + } - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @param message Location message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer; + /** Represents an Int64Value. */ + class Int64Value implements IInt64Value { - /** - * Decodes a Location message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; + /** + * Constructs a new Int64Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt64Value); - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; + /** Int64Value value. */ + public value: (number|Long|string); + + /** + * Creates a new Int64Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int64Value instance + */ + public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value; + + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @param message Int64Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value; - /** - * Verifies a Location message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value; - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Location - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + /** + * Verifies an Int64Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @param message Location - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int64Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value; - /** - * Converts this Location to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @param message Int64Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int64Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; } - /** Properties of a GeneratedCodeInfo. */ - interface IGeneratedCodeInfo { + /** Properties of a UInt64Value. */ + interface IUInt64Value { - /** GeneratedCodeInfo annotation */ - annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null); + /** UInt64Value value */ + value?: (number|Long|string|null); } - /** Represents a GeneratedCodeInfo. */ - class GeneratedCodeInfo implements IGeneratedCodeInfo { + /** Represents a UInt64Value. */ + class UInt64Value implements IUInt64Value { /** - * Constructs a new GeneratedCodeInfo. + * Constructs a new UInt64Value. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IGeneratedCodeInfo); + constructor(properties?: google.protobuf.IUInt64Value); - /** GeneratedCodeInfo annotation. */ - public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[]; + /** UInt64Value value. */ + public value: (number|Long|string); /** - * Creates a new GeneratedCodeInfo instance using the specified properties. + * Creates a new UInt64Value instance using the specified properties. * @param [properties] Properties to set - * @returns GeneratedCodeInfo instance + * @returns UInt64Value instance */ - public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo; + public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value; /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. - * @param message GeneratedCodeInfo message or plain object to encode + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * @param message UInt64Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * Decodes a UInt64Value message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GeneratedCodeInfo + * @returns UInt64Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value; /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GeneratedCodeInfo + * @returns UInt64Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value; /** - * Verifies a GeneratedCodeInfo message. + * Verifies a UInt64Value message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns GeneratedCodeInfo + * @returns UInt64Value */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value; /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. - * @param message GeneratedCodeInfo + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * @param message UInt64Value * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this GeneratedCodeInfo to JSON. + * Converts this UInt64Value to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - namespace GeneratedCodeInfo { - - /** Properties of an Annotation. */ - interface IAnnotation { - - /** Annotation path */ - path?: (number[]|null); - - /** Annotation sourceFile */ - sourceFile?: (string|null); - - /** Annotation begin */ - begin?: (number|null); - - /** Annotation end */ - end?: (number|null); - } - - /** Represents an Annotation. */ - class Annotation implements IAnnotation { - - /** - * Constructs a new Annotation. - * @param [properties] Properties to set - */ - constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation); - - /** Annotation path. */ - public path: number[]; + /** Properties of an Int32Value. */ + interface IInt32Value { - /** Annotation sourceFile. */ - public sourceFile: string; + /** Int32Value value */ + value?: (number|null); + } - /** Annotation begin. */ - public begin: number; + /** Represents an Int32Value. */ + class Int32Value implements IInt32Value { - /** Annotation end. */ - public end: number; + /** + * Constructs a new Int32Value. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IInt32Value); - /** - * Creates a new Annotation instance using the specified properties. - * @param [properties] Properties to set - * @returns Annotation instance - */ - public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation; + /** Int32Value value. */ + public value: number; - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new Int32Value instance using the specified properties. + * @param [properties] Properties to set + * @returns Int32Value instance + */ + public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value; - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @param message Annotation message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes an Annotation message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @param message Int32Value message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value; - /** - * Verifies an Annotation message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value; - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Annotation - */ - public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + /** + * Verifies an Int32Value message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @param message Annotation - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Int32Value + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value; - /** - * Converts this Annotation to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @param message Int32Value + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Int32Value to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; } - /** Properties of a Struct. */ - interface IStruct { + /** Properties of a UInt32Value. */ + interface IUInt32Value { - /** Struct fields */ - fields?: ({ [k: string]: google.protobuf.IValue }|null); + /** UInt32Value value */ + value?: (number|null); } - /** Represents a Struct. */ - class Struct implements IStruct { + /** Represents a UInt32Value. */ + class UInt32Value implements IUInt32Value { /** - * Constructs a new Struct. + * Constructs a new UInt32Value. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IStruct); + constructor(properties?: google.protobuf.IUInt32Value); - /** Struct fields. */ - public fields: { [k: string]: google.protobuf.IValue }; + /** UInt32Value value. */ + public value: number; /** - * Creates a new Struct instance using the specified properties. + * Creates a new UInt32Value instance using the specified properties. * @param [properties] Properties to set - * @returns Struct instance + * @returns UInt32Value instance */ - public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct; + public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value; /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. - * @param message Struct message or plain object to encode + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * @param message UInt32Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Struct message from the specified reader or buffer. + * Decodes a UInt32Value message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Struct + * @returns UInt32Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value; /** - * Decodes a Struct message from the specified reader or buffer, length delimited. + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Struct + * @returns UInt32Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value; /** - * Verifies a Struct message. + * Verifies a UInt32Value message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Struct + * @returns UInt32Value */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Struct; + public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value; /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. - * @param message Struct + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * @param message UInt32Value * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Struct to JSON. + * Converts this UInt32Value to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a Value. */ - interface IValue { + /** Properties of a BoolValue. */ + interface IBoolValue { - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); + /** BoolValue value */ + value?: (boolean|null); + } - /** Value numberValue */ - numberValue?: (number|null); + /** Represents a BoolValue. */ + class BoolValue implements IBoolValue { - /** Value stringValue */ - stringValue?: (string|null); + /** + * Constructs a new BoolValue. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IBoolValue); - /** Value boolValue */ - boolValue?: (boolean|null); + /** BoolValue value. */ + public value: boolean; - /** Value structValue */ - structValue?: (google.protobuf.IStruct|null); + /** + * Creates a new BoolValue instance using the specified properties. + * @param [properties] Properties to set + * @returns BoolValue instance + */ + public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue; - /** Value listValue */ - listValue?: (google.protobuf.IListValue|null); - } + /** + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; - /** Represents a Value. */ - class Value implements IValue { + /** + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * @param message BoolValue message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Constructs a new Value. - * @param [properties] Properties to set + * Decodes a BoolValue message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - constructor(properties?: google.protobuf.IValue); + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue; - /** Value nullValue. */ - public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); + /** + * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BoolValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue; - /** Value numberValue. */ - public numberValue: number; + /** + * Verifies a BoolValue message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** Value stringValue. */ - public stringValue: string; + /** + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BoolValue + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue; - /** Value boolValue. */ - public boolValue: boolean; + /** + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @param message BoolValue + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Value structValue. */ - public structValue?: (google.protobuf.IStruct|null); + /** + * Converts this BoolValue to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } - /** Value listValue. */ - public listValue?: (google.protobuf.IListValue|null); + /** Properties of a StringValue. */ + interface IStringValue { - /** Value kind. */ - public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"); + /** StringValue value */ + value?: (string|null); + } + + /** Represents a StringValue. */ + class StringValue implements IStringValue { /** - * Creates a new Value instance using the specified properties. + * Constructs a new StringValue. * @param [properties] Properties to set - * @returns Value instance */ - public static create(properties?: google.protobuf.IValue): google.protobuf.Value; + constructor(properties?: google.protobuf.IStringValue); + + /** StringValue value. */ + public value: string; /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Creates a new StringValue instance using the specified properties. + * @param [properties] Properties to set + * @returns StringValue instance + */ + public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue; + + /** + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * @param message StringValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes a StringValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Value + * @returns StringValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes a StringValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Value + * @returns StringValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue; /** - * Verifies a Value message. + * Verifies a StringValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Value + * @returns StringValue */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Value; + public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value + * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * @param message StringValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Value to JSON. + * Converts this StringValue to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** NullValue enum. */ - enum NullValue { - NULL_VALUE = 0 - } - - /** Properties of a ListValue. */ - interface IListValue { + /** Properties of a BytesValue. */ + interface IBytesValue { - /** ListValue values */ - values?: (google.protobuf.IValue[]|null); + /** BytesValue value */ + value?: (Uint8Array|string|null); } - /** Represents a ListValue. */ - class ListValue implements IListValue { + /** Represents a BytesValue. */ + class BytesValue implements IBytesValue { /** - * Constructs a new ListValue. + * Constructs a new BytesValue. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IListValue); + constructor(properties?: google.protobuf.IBytesValue); - /** ListValue values. */ - public values: google.protobuf.IValue[]; + /** BytesValue value. */ + public value: (Uint8Array|string); /** - * Creates a new ListValue instance using the specified properties. + * Creates a new BytesValue instance using the specified properties. * @param [properties] Properties to set - * @returns ListValue instance + * @returns BytesValue instance */ - public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue; + public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue; /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. - * @param message ListValue message or plain object to encode + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * @param message BytesValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ListValue message from the specified reader or buffer. + * Decodes a BytesValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ListValue + * @returns BytesValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue; /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. + * Decodes a BytesValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ListValue + * @returns BytesValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue; /** - * Verifies a ListValue message. + * Verifies a BytesValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ListValue + * @returns BytesValue */ - public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue; + public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue; /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. - * @param message ListValue + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * @param message BytesValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ListValue to JSON. + * Converts this BytesValue to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } + } - /** Properties of a Timestamp. */ - interface ITimestamp { + /** Namespace longrunning. */ + namespace longrunning { - /** Timestamp seconds */ - seconds?: (number|Long|string|null); + /** Represents an Operations */ + class Operations extends $protobuf.rpc.Service { - /** Timestamp nanos */ - nanos?: (number|null); - } + /** + * Constructs a new Operations service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); - /** Represents a Timestamp. */ - class Timestamp implements ITimestamp { + /** + * Creates new Operations service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Operations; /** - * Constructs a new Timestamp. - * @param [properties] Properties to set + * Calls ListOperations. + * @param request ListOperationsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ListOperationsResponse */ - constructor(properties?: google.protobuf.ITimestamp); + public listOperations(request: google.longrunning.IListOperationsRequest, callback: google.longrunning.Operations.ListOperationsCallback): void; - /** Timestamp seconds. */ - public seconds: (number|Long|string); + /** + * Calls ListOperations. + * @param request ListOperationsRequest message or plain object + * @returns Promise + */ + public listOperations(request: google.longrunning.IListOperationsRequest): Promise; - /** Timestamp nanos. */ - public nanos: number; + /** + * Calls GetOperation. + * @param request GetOperationRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation + */ + public getOperation(request: google.longrunning.IGetOperationRequest, callback: google.longrunning.Operations.GetOperationCallback): void; /** - * Creates a new Timestamp instance using the specified properties. - * @param [properties] Properties to set - * @returns Timestamp instance + * Calls GetOperation. + * @param request GetOperationRequest message or plain object + * @returns Promise */ - public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp; + public getOperation(request: google.longrunning.IGetOperationRequest): Promise; /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Calls DeleteOperation. + * @param request DeleteOperationRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Empty */ - public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + public deleteOperation(request: google.longrunning.IDeleteOperationRequest, callback: google.longrunning.Operations.DeleteOperationCallback): void; /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. - * @param message Timestamp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer + * Calls DeleteOperation. + * @param request DeleteOperationRequest message or plain object + * @returns Promise */ - public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer; + public deleteOperation(request: google.longrunning.IDeleteOperationRequest): Promise; /** - * Decodes a Timestamp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls CancelOperation. + * @param request CancelOperationRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Empty */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; + public cancelOperation(request: google.longrunning.ICancelOperationRequest, callback: google.longrunning.Operations.CancelOperationCallback): void; /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Timestamp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls CancelOperation. + * @param request CancelOperationRequest message or plain object + * @returns Promise */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; + public cancelOperation(request: google.longrunning.ICancelOperationRequest): Promise; /** - * Verifies a Timestamp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not + * Calls WaitOperation. + * @param request WaitOperationRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation */ - public static verify(message: { [k: string]: any }): (string|null); + public waitOperation(request: google.longrunning.IWaitOperationRequest, callback: google.longrunning.Operations.WaitOperationCallback): void; /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Timestamp + * Calls WaitOperation. + * @param request WaitOperationRequest message or plain object + * @returns Promise */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; + public waitOperation(request: google.longrunning.IWaitOperationRequest): Promise; + } + + namespace Operations { /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. - * @param message Timestamp - * @param [options] Conversion options - * @returns Plain object + * Callback as used by {@link google.longrunning.Operations#listOperations}. + * @param error Error, if any + * @param [response] ListOperationsResponse */ - public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any }; + type ListOperationsCallback = (error: (Error|null), response?: google.longrunning.ListOperationsResponse) => void; /** - * Converts this Timestamp to JSON. - * @returns JSON object + * Callback as used by {@link google.longrunning.Operations#getOperation}. + * @param error Error, if any + * @param [response] Operation */ - public toJSON(): { [k: string]: any }; + type GetOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; + + /** + * Callback as used by {@link google.longrunning.Operations#deleteOperation}. + * @param error Error, if any + * @param [response] Empty + */ + type DeleteOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void; + + /** + * Callback as used by {@link google.longrunning.Operations#cancelOperation}. + * @param error Error, if any + * @param [response] Empty + */ + type CancelOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void; + + /** + * Callback as used by {@link google.longrunning.Operations#waitOperation}. + * @param error Error, if any + * @param [response] Operation + */ + type WaitOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; } - /** Properties of a DoubleValue. */ - interface IDoubleValue { + /** Properties of an Operation. */ + interface IOperation { - /** DoubleValue value */ - value?: (number|null); + /** Operation name */ + name?: (string|null); + + /** Operation metadata */ + metadata?: (google.protobuf.IAny|null); + + /** Operation done */ + done?: (boolean|null); + + /** Operation error */ + error?: (google.rpc.IStatus|null); + + /** Operation response */ + response?: (google.protobuf.IAny|null); } - /** Represents a DoubleValue. */ - class DoubleValue implements IDoubleValue { + /** Represents an Operation. */ + class Operation implements IOperation { /** - * Constructs a new DoubleValue. + * Constructs a new Operation. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IDoubleValue); + constructor(properties?: google.longrunning.IOperation); - /** DoubleValue value. */ - public value: number; + /** Operation name. */ + public name: string; + + /** Operation metadata. */ + public metadata?: (google.protobuf.IAny|null); + + /** Operation done. */ + public done: boolean; + + /** Operation error. */ + public error?: (google.rpc.IStatus|null); + + /** Operation response. */ + public response?: (google.protobuf.IAny|null); + + /** Operation result. */ + public result?: ("error"|"response"); /** - * Creates a new DoubleValue instance using the specified properties. + * Creates a new Operation instance using the specified properties. * @param [properties] Properties to set - * @returns DoubleValue instance + * @returns Operation instance */ - public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue; + public static create(properties?: google.longrunning.IOperation): google.longrunning.Operation; /** - * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode + * Encodes the specified Operation message. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages. + * @param message Operation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. - * @param message DoubleValue message or plain object to encode + * Encodes the specified Operation message, length delimited. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages. + * @param message Operation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a DoubleValue message from the specified reader or buffer. + * Decodes an Operation message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns DoubleValue + * @returns Operation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.Operation; /** - * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * Decodes an Operation message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns DoubleValue + * @returns Operation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.Operation; /** - * Verifies a DoubleValue message. + * Verifies an Operation message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * Creates an Operation message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns DoubleValue + * @returns Operation */ - public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue; + public static fromObject(object: { [k: string]: any }): google.longrunning.Operation; /** - * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. - * @param message DoubleValue + * Creates a plain object from an Operation message. Also converts values to other types if specified. + * @param message Operation * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.Operation, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this DoubleValue to JSON. + * Converts this Operation to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a FloatValue. */ - interface IFloatValue { + /** Properties of a GetOperationRequest. */ + interface IGetOperationRequest { - /** FloatValue value */ - value?: (number|null); + /** GetOperationRequest name */ + name?: (string|null); } - /** Represents a FloatValue. */ - class FloatValue implements IFloatValue { + /** Represents a GetOperationRequest. */ + class GetOperationRequest implements IGetOperationRequest { /** - * Constructs a new FloatValue. + * Constructs a new GetOperationRequest. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IFloatValue); + constructor(properties?: google.longrunning.IGetOperationRequest); - /** FloatValue value. */ - public value: number; + /** GetOperationRequest name. */ + public name: string; /** - * Creates a new FloatValue instance using the specified properties. + * Creates a new GetOperationRequest instance using the specified properties. * @param [properties] Properties to set - * @returns FloatValue instance + * @returns GetOperationRequest instance */ - public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue; + public static create(properties?: google.longrunning.IGetOperationRequest): google.longrunning.GetOperationRequest; /** - * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode + * Encodes the specified GetOperationRequest message. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages. + * @param message GetOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. - * @param message FloatValue message or plain object to encode + * Encodes the specified GetOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages. + * @param message GetOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a FloatValue message from the specified reader or buffer. + * Decodes a GetOperationRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns FloatValue + * @returns GetOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.GetOperationRequest; /** - * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * Decodes a GetOperationRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns FloatValue + * @returns GetOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.GetOperationRequest; /** - * Verifies a FloatValue message. + * Verifies a GetOperationRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns FloatValue + * @returns GetOperationRequest */ - public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue; + public static fromObject(object: { [k: string]: any }): google.longrunning.GetOperationRequest; /** - * Creates a plain object from a FloatValue message. Also converts values to other types if specified. - * @param message FloatValue + * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified. + * @param message GetOperationRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.GetOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this FloatValue to JSON. + * Converts this GetOperationRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an Int64Value. */ - interface IInt64Value { + /** Properties of a ListOperationsRequest. */ + interface IListOperationsRequest { + + /** ListOperationsRequest name */ + name?: (string|null); - /** Int64Value value */ - value?: (number|Long|string|null); + /** ListOperationsRequest filter */ + filter?: (string|null); + + /** ListOperationsRequest pageSize */ + pageSize?: (number|null); + + /** ListOperationsRequest pageToken */ + pageToken?: (string|null); } - /** Represents an Int64Value. */ - class Int64Value implements IInt64Value { + /** Represents a ListOperationsRequest. */ + class ListOperationsRequest implements IListOperationsRequest { /** - * Constructs a new Int64Value. + * Constructs a new ListOperationsRequest. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IInt64Value); + constructor(properties?: google.longrunning.IListOperationsRequest); - /** Int64Value value. */ - public value: (number|Long|string); + /** ListOperationsRequest name. */ + public name: string; + + /** ListOperationsRequest filter. */ + public filter: string; + + /** ListOperationsRequest pageSize. */ + public pageSize: number; + + /** ListOperationsRequest pageToken. */ + public pageToken: string; /** - * Creates a new Int64Value instance using the specified properties. + * Creates a new ListOperationsRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Int64Value instance + * @returns ListOperationsRequest instance */ - public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value; + public static create(properties?: google.longrunning.IListOperationsRequest): google.longrunning.ListOperationsRequest; /** - * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode + * Encodes the specified ListOperationsRequest message. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages. + * @param message ListOperationsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. - * @param message Int64Value message or plain object to encode + * Encodes the specified ListOperationsRequest message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages. + * @param message ListOperationsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Int64Value message from the specified reader or buffer. + * Decodes a ListOperationsRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Int64Value + * @returns ListOperationsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsRequest; /** - * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * Decodes a ListOperationsRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Int64Value + * @returns ListOperationsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsRequest; /** - * Verifies an Int64Value message. + * Verifies a ListOperationsRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Int64Value + * @returns ListOperationsRequest */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value; + public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsRequest; /** - * Creates a plain object from an Int64Value message. Also converts values to other types if specified. - * @param message Int64Value + * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified. + * @param message ListOperationsRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.ListOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Int64Value to JSON. + * Converts this ListOperationsRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a UInt64Value. */ - interface IUInt64Value { + /** Properties of a ListOperationsResponse. */ + interface IListOperationsResponse { - /** UInt64Value value */ - value?: (number|Long|string|null); + /** ListOperationsResponse operations */ + operations?: (google.longrunning.IOperation[]|null); + + /** ListOperationsResponse nextPageToken */ + nextPageToken?: (string|null); } - /** Represents a UInt64Value. */ - class UInt64Value implements IUInt64Value { + /** Represents a ListOperationsResponse. */ + class ListOperationsResponse implements IListOperationsResponse { /** - * Constructs a new UInt64Value. + * Constructs a new ListOperationsResponse. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IUInt64Value); + constructor(properties?: google.longrunning.IListOperationsResponse); - /** UInt64Value value. */ - public value: (number|Long|string); + /** ListOperationsResponse operations. */ + public operations: google.longrunning.IOperation[]; + + /** ListOperationsResponse nextPageToken. */ + public nextPageToken: string; /** - * Creates a new UInt64Value instance using the specified properties. + * Creates a new ListOperationsResponse instance using the specified properties. * @param [properties] Properties to set - * @returns UInt64Value instance + * @returns ListOperationsResponse instance */ - public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value; + public static create(properties?: google.longrunning.IListOperationsResponse): google.longrunning.ListOperationsResponse; /** - * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode + * Encodes the specified ListOperationsResponse message. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages. + * @param message ListOperationsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. - * @param message UInt64Value message or plain object to encode + * Encodes the specified ListOperationsResponse message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages. + * @param message ListOperationsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a UInt64Value message from the specified reader or buffer. + * Decodes a ListOperationsResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns UInt64Value + * @returns ListOperationsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsResponse; /** - * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * Decodes a ListOperationsResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns UInt64Value + * @returns ListOperationsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsResponse; /** - * Verifies a UInt64Value message. + * Verifies a ListOperationsResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns UInt64Value + * @returns ListOperationsResponse */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value; + public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsResponse; /** - * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. - * @param message UInt64Value + * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified. + * @param message ListOperationsResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.ListOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this UInt64Value to JSON. + * Converts this ListOperationsResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of an Int32Value. */ - interface IInt32Value { + /** Properties of a CancelOperationRequest. */ + interface ICancelOperationRequest { - /** Int32Value value */ - value?: (number|null); + /** CancelOperationRequest name */ + name?: (string|null); } - /** Represents an Int32Value. */ - class Int32Value implements IInt32Value { + /** Represents a CancelOperationRequest. */ + class CancelOperationRequest implements ICancelOperationRequest { /** - * Constructs a new Int32Value. + * Constructs a new CancelOperationRequest. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IInt32Value); + constructor(properties?: google.longrunning.ICancelOperationRequest); - /** Int32Value value. */ - public value: number; + /** CancelOperationRequest name. */ + public name: string; /** - * Creates a new Int32Value instance using the specified properties. + * Creates a new CancelOperationRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Int32Value instance + * @returns CancelOperationRequest instance */ - public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value; + public static create(properties?: google.longrunning.ICancelOperationRequest): google.longrunning.CancelOperationRequest; /** - * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode + * Encodes the specified CancelOperationRequest message. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages. + * @param message CancelOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. - * @param message Int32Value message or plain object to encode + * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages. + * @param message CancelOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Int32Value message from the specified reader or buffer. + * Decodes a CancelOperationRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Int32Value + * @returns CancelOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.CancelOperationRequest; /** - * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * Decodes a CancelOperationRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Int32Value + * @returns CancelOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.CancelOperationRequest; /** - * Verifies an Int32Value message. + * Verifies a CancelOperationRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Int32Value + * @returns CancelOperationRequest */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value; + public static fromObject(object: { [k: string]: any }): google.longrunning.CancelOperationRequest; /** - * Creates a plain object from an Int32Value message. Also converts values to other types if specified. - * @param message Int32Value + * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified. + * @param message CancelOperationRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.CancelOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Int32Value to JSON. + * Converts this CancelOperationRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a UInt32Value. */ - interface IUInt32Value { + /** Properties of a DeleteOperationRequest. */ + interface IDeleteOperationRequest { - /** UInt32Value value */ - value?: (number|null); + /** DeleteOperationRequest name */ + name?: (string|null); } - /** Represents a UInt32Value. */ - class UInt32Value implements IUInt32Value { + /** Represents a DeleteOperationRequest. */ + class DeleteOperationRequest implements IDeleteOperationRequest { /** - * Constructs a new UInt32Value. + * Constructs a new DeleteOperationRequest. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IUInt32Value); + constructor(properties?: google.longrunning.IDeleteOperationRequest); - /** UInt32Value value. */ - public value: number; + /** DeleteOperationRequest name. */ + public name: string; /** - * Creates a new UInt32Value instance using the specified properties. + * Creates a new DeleteOperationRequest instance using the specified properties. * @param [properties] Properties to set - * @returns UInt32Value instance + * @returns DeleteOperationRequest instance */ - public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value; + public static create(properties?: google.longrunning.IDeleteOperationRequest): google.longrunning.DeleteOperationRequest; /** - * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode + * Encodes the specified DeleteOperationRequest message. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages. + * @param message DeleteOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. - * @param message UInt32Value message or plain object to encode + * Encodes the specified DeleteOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages. + * @param message DeleteOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a UInt32Value message from the specified reader or buffer. + * Decodes a DeleteOperationRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns UInt32Value + * @returns DeleteOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.DeleteOperationRequest; /** - * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * Decodes a DeleteOperationRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns UInt32Value + * @returns DeleteOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.DeleteOperationRequest; /** - * Verifies a UInt32Value message. + * Verifies a DeleteOperationRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns UInt32Value + * @returns DeleteOperationRequest */ - public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value; + public static fromObject(object: { [k: string]: any }): google.longrunning.DeleteOperationRequest; /** - * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. - * @param message UInt32Value + * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified. + * @param message DeleteOperationRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.DeleteOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this UInt32Value to JSON. + * Converts this DeleteOperationRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a BoolValue. */ - interface IBoolValue { + /** Properties of a WaitOperationRequest. */ + interface IWaitOperationRequest { - /** BoolValue value */ - value?: (boolean|null); + /** WaitOperationRequest name */ + name?: (string|null); + + /** WaitOperationRequest timeout */ + timeout?: (google.protobuf.IDuration|null); } - /** Represents a BoolValue. */ - class BoolValue implements IBoolValue { + /** Represents a WaitOperationRequest. */ + class WaitOperationRequest implements IWaitOperationRequest { /** - * Constructs a new BoolValue. + * Constructs a new WaitOperationRequest. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IBoolValue); + constructor(properties?: google.longrunning.IWaitOperationRequest); - /** BoolValue value. */ - public value: boolean; + /** WaitOperationRequest name. */ + public name: string; + + /** WaitOperationRequest timeout. */ + public timeout?: (google.protobuf.IDuration|null); /** - * Creates a new BoolValue instance using the specified properties. + * Creates a new WaitOperationRequest instance using the specified properties. * @param [properties] Properties to set - * @returns BoolValue instance + * @returns WaitOperationRequest instance */ - public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue; + public static create(properties?: google.longrunning.IWaitOperationRequest): google.longrunning.WaitOperationRequest; /** - * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode + * Encodes the specified WaitOperationRequest message. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages. + * @param message WaitOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. - * @param message BoolValue message or plain object to encode + * Encodes the specified WaitOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages. + * @param message WaitOperationRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BoolValue message from the specified reader or buffer. + * Decodes a WaitOperationRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BoolValue + * @returns WaitOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.WaitOperationRequest; /** - * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * Decodes a WaitOperationRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns BoolValue + * @returns WaitOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.WaitOperationRequest; /** - * Verifies a BoolValue message. + * Verifies a WaitOperationRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns BoolValue + * @returns WaitOperationRequest */ - public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue; + public static fromObject(object: { [k: string]: any }): google.longrunning.WaitOperationRequest; /** - * Creates a plain object from a BoolValue message. Also converts values to other types if specified. - * @param message BoolValue + * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified. + * @param message WaitOperationRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.WaitOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this BoolValue to JSON. + * Converts this WaitOperationRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } - /** Properties of a StringValue. */ - interface IStringValue { + /** Properties of an OperationInfo. */ + interface IOperationInfo { - /** StringValue value */ - value?: (string|null); + /** OperationInfo responseType */ + responseType?: (string|null); + + /** OperationInfo metadataType */ + metadataType?: (string|null); } - /** Represents a StringValue. */ - class StringValue implements IStringValue { + /** Represents an OperationInfo. */ + class OperationInfo implements IOperationInfo { /** - * Constructs a new StringValue. + * Constructs a new OperationInfo. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IStringValue); + constructor(properties?: google.longrunning.IOperationInfo); - /** StringValue value. */ - public value: string; + /** OperationInfo responseType. */ + public responseType: string; + + /** OperationInfo metadataType. */ + public metadataType: string; /** - * Creates a new StringValue instance using the specified properties. + * Creates a new OperationInfo instance using the specified properties. * @param [properties] Properties to set - * @returns StringValue instance + * @returns OperationInfo instance */ - public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue; + public static create(properties?: google.longrunning.IOperationInfo): google.longrunning.OperationInfo; /** - * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode + * Encodes the specified OperationInfo message. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages. + * @param message OperationInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. - * @param message StringValue message or plain object to encode + * Encodes the specified OperationInfo message, length delimited. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages. + * @param message OperationInfo message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a StringValue message from the specified reader or buffer. + * Decodes an OperationInfo message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns StringValue + * @returns OperationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.OperationInfo; /** - * Decodes a StringValue message from the specified reader or buffer, length delimited. + * Decodes an OperationInfo message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns StringValue + * @returns OperationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.OperationInfo; /** - * Verifies a StringValue message. + * Verifies an OperationInfo message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns StringValue + * @returns OperationInfo */ - public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue; + public static fromObject(object: { [k: string]: any }): google.longrunning.OperationInfo; /** - * Creates a plain object from a StringValue message. Also converts values to other types if specified. - * @param message StringValue + * Creates a plain object from an OperationInfo message. Also converts values to other types if specified. + * @param message OperationInfo * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.longrunning.OperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this StringValue to JSON. + * Converts this OperationInfo to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; } + } - /** Properties of a BytesValue. */ - interface IBytesValue { + /** Namespace rpc. */ + namespace rpc { - /** BytesValue value */ - value?: (Uint8Array|string|null); + /** Properties of a Status. */ + interface IStatus { + + /** Status code */ + code?: (number|null); + + /** Status message */ + message?: (string|null); + + /** Status details */ + details?: (google.protobuf.IAny[]|null); } - /** Represents a BytesValue. */ - class BytesValue implements IBytesValue { + /** Represents a Status. */ + class Status implements IStatus { /** - * Constructs a new BytesValue. + * Constructs a new Status. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IBytesValue); + constructor(properties?: google.rpc.IStatus); - /** BytesValue value. */ - public value: (Uint8Array|string); + /** Status code. */ + public code: number; + + /** Status message. */ + public message: string; + + /** Status details. */ + public details: google.protobuf.IAny[]; /** - * Creates a new BytesValue instance using the specified properties. + * Creates a new Status instance using the specified properties. * @param [properties] Properties to set - * @returns BytesValue instance + * @returns Status instance */ - public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue; + public static create(properties?: google.rpc.IStatus): google.rpc.Status; /** - * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode + * Encodes the specified Status message. Does not implicitly {@link google.rpc.Status.verify|verify} messages. + * @param message Status message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. - * @param message BytesValue message or plain object to encode + * Encodes the specified Status message, length delimited. Does not implicitly {@link google.rpc.Status.verify|verify} messages. + * @param message Status message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.rpc.IStatus, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BytesValue message from the specified reader or buffer. + * Decodes a Status message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BytesValue + * @returns Status * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.rpc.Status; /** - * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * Decodes a Status message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns BytesValue + * @returns Status * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.rpc.Status; /** - * Verifies a BytesValue message. + * Verifies a Status message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * Creates a Status message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns BytesValue + * @returns Status */ - public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue; + public static fromObject(object: { [k: string]: any }): google.rpc.Status; /** - * Creates a plain object from a BytesValue message. Also converts values to other types if specified. - * @param message BytesValue + * Creates a plain object from a Status message. Also converts values to other types if specified. + * @param message Status * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.rpc.Status, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this BytesValue to JSON. + * Converts this Status to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 6b0e0b89e9a..f1038fcaddb 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -48,3606 +48,4322 @@ */ var datastore = {}; - datastore.v1 = (function() { + datastore.admin = (function() { /** - * Namespace v1. + * Namespace admin. * @memberof google.datastore * @namespace */ - var v1 = {}; + var admin = {}; - v1.Datastore = (function() { + admin.v1 = (function() { /** - * Constructs a new Datastore service. - * @memberof google.datastore.v1 - * @classdesc Represents a Datastore - * @extends $protobuf.rpc.Service - * @constructor - * @param {$protobuf.RPCImpl} rpcImpl RPC implementation - * @param {boolean} [requestDelimited=false] Whether requests are length-delimited - * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * Namespace v1. + * @memberof google.datastore.admin + * @namespace */ - function Datastore(rpcImpl, requestDelimited, responseDelimited) { - $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); - } - - (Datastore.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Datastore; + var v1 = {}; - /** - * Creates new Datastore service using the specified rpc implementation. - * @function create - * @memberof google.datastore.v1.Datastore - * @static - * @param {$protobuf.RPCImpl} rpcImpl RPC implementation - * @param {boolean} [requestDelimited=false] Whether requests are length-delimited - * @param {boolean} [responseDelimited=false] Whether responses are length-delimited - * @returns {Datastore} RPC service. Useful where requests and/or responses are streamed. - */ - Datastore.create = function create(rpcImpl, requestDelimited, responseDelimited) { - return new this(rpcImpl, requestDelimited, responseDelimited); - }; + v1.DatastoreAdmin = (function() { - /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. - * @memberof google.datastore.v1.Datastore - * @typedef LookupCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.LookupResponse} [response] LookupResponse - */ + /** + * Constructs a new DatastoreAdmin service. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a DatastoreAdmin + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + function DatastoreAdmin(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } - /** - * Calls Lookup. - * @function lookup - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object - * @param {google.datastore.v1.Datastore.LookupCallback} callback Node-style callback called with the error, if any, and LookupResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.lookup = function lookup(request, callback) { - return this.rpcCall(lookup, $root.google.datastore.v1.LookupRequest, $root.google.datastore.v1.LookupResponse, request, callback); - }, "name", { value: "Lookup" }); + (DatastoreAdmin.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = DatastoreAdmin; - /** - * Calls Lookup. - * @function lookup - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Creates new DatastoreAdmin service using the specified rpc implementation. + * @function create + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {DatastoreAdmin} RPC service. Useful where requests and/or responses are streamed. + */ + DatastoreAdmin.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; - /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. - * @memberof google.datastore.v1.Datastore - * @typedef RunQueryCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.RunQueryResponse} [response] RunQueryResponse - */ + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#exportEntities}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef ExportEntitiesCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ - /** - * Calls RunQuery. - * @function runQuery - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object - * @param {google.datastore.v1.Datastore.RunQueryCallback} callback Node-style callback called with the error, if any, and RunQueryResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.runQuery = function runQuery(request, callback) { - return this.rpcCall(runQuery, $root.google.datastore.v1.RunQueryRequest, $root.google.datastore.v1.RunQueryResponse, request, callback); - }, "name", { value: "RunQuery" }); + /** + * Calls ExportEntities. + * @function exportEntities + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IExportEntitiesRequest} request ExportEntitiesRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.ExportEntitiesCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.exportEntities = function exportEntities(request, callback) { + return this.rpcCall(exportEntities, $root.google.datastore.admin.v1.ExportEntitiesRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "ExportEntities" }); - /** - * Calls RunQuery. - * @function runQuery - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Calls ExportEntities. + * @function exportEntities + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IExportEntitiesRequest} request ExportEntitiesRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ - /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. - * @memberof google.datastore.v1.Datastore - * @typedef BeginTransactionCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.BeginTransactionResponse} [response] BeginTransactionResponse - */ + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#importEntities}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef ImportEntitiesCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ - /** - * Calls BeginTransaction. - * @function beginTransaction - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object - * @param {google.datastore.v1.Datastore.BeginTransactionCallback} callback Node-style callback called with the error, if any, and BeginTransactionResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.beginTransaction = function beginTransaction(request, callback) { - return this.rpcCall(beginTransaction, $root.google.datastore.v1.BeginTransactionRequest, $root.google.datastore.v1.BeginTransactionResponse, request, callback); - }, "name", { value: "BeginTransaction" }); + /** + * Calls ImportEntities. + * @function importEntities + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IImportEntitiesRequest} request ImportEntitiesRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.ImportEntitiesCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.importEntities = function importEntities(request, callback) { + return this.rpcCall(importEntities, $root.google.datastore.admin.v1.ImportEntitiesRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "ImportEntities" }); - /** - * Calls BeginTransaction. - * @function beginTransaction - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Calls ImportEntities. + * @function importEntities + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IImportEntitiesRequest} request ImportEntitiesRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ - /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. - * @memberof google.datastore.v1.Datastore - * @typedef CommitCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.CommitResponse} [response] CommitResponse - */ + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef GetIndexCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.admin.v1.Index} [response] Index + */ - /** - * Calls Commit. - * @function commit - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object - * @param {google.datastore.v1.Datastore.CommitCallback} callback Node-style callback called with the error, if any, and CommitResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.commit = function commit(request, callback) { - return this.rpcCall(commit, $root.google.datastore.v1.CommitRequest, $root.google.datastore.v1.CommitResponse, request, callback); - }, "name", { value: "Commit" }); + /** + * Calls GetIndex. + * @function getIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IGetIndexRequest} request GetIndexRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.GetIndexCallback} callback Node-style callback called with the error, if any, and Index + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.getIndex = function getIndex(request, callback) { + return this.rpcCall(getIndex, $root.google.datastore.admin.v1.GetIndexRequest, $root.google.datastore.admin.v1.Index, request, callback); + }, "name", { value: "GetIndex" }); - /** - * Calls Commit. - * @function commit - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Calls GetIndex. + * @function getIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IGetIndexRequest} request GetIndexRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ - /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. - * @memberof google.datastore.v1.Datastore - * @typedef RollbackCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.RollbackResponse} [response] RollbackResponse - */ + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#listIndexes}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef ListIndexesCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.admin.v1.ListIndexesResponse} [response] ListIndexesResponse + */ - /** - * Calls Rollback. - * @function rollback - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object - * @param {google.datastore.v1.Datastore.RollbackCallback} callback Node-style callback called with the error, if any, and RollbackResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.rollback = function rollback(request, callback) { - return this.rpcCall(rollback, $root.google.datastore.v1.RollbackRequest, $root.google.datastore.v1.RollbackResponse, request, callback); - }, "name", { value: "Rollback" }); + /** + * Calls ListIndexes. + * @function listIndexes + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IListIndexesRequest} request ListIndexesRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.ListIndexesCallback} callback Node-style callback called with the error, if any, and ListIndexesResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.listIndexes = function listIndexes(request, callback) { + return this.rpcCall(listIndexes, $root.google.datastore.admin.v1.ListIndexesRequest, $root.google.datastore.admin.v1.ListIndexesResponse, request, callback); + }, "name", { value: "ListIndexes" }); - /** - * Calls Rollback. - * @function rollback - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Calls ListIndexes. + * @function listIndexes + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IListIndexesRequest} request ListIndexesRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ - /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. - * @memberof google.datastore.v1.Datastore - * @typedef AllocateIdsCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.AllocateIdsResponse} [response] AllocateIdsResponse - */ + return DatastoreAdmin; + })(); - /** - * Calls AllocateIds. - * @function allocateIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object - * @param {google.datastore.v1.Datastore.AllocateIdsCallback} callback Node-style callback called with the error, if any, and AllocateIdsResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.allocateIds = function allocateIds(request, callback) { - return this.rpcCall(allocateIds, $root.google.datastore.v1.AllocateIdsRequest, $root.google.datastore.v1.AllocateIdsResponse, request, callback); - }, "name", { value: "AllocateIds" }); + v1.CommonMetadata = (function() { - /** - * Calls AllocateIds. - * @function allocateIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Properties of a CommonMetadata. + * @memberof google.datastore.admin.v1 + * @interface ICommonMetadata + * @property {google.protobuf.ITimestamp|null} [startTime] CommonMetadata startTime + * @property {google.protobuf.ITimestamp|null} [endTime] CommonMetadata endTime + * @property {google.datastore.admin.v1.OperationType|null} [operationType] CommonMetadata operationType + * @property {Object.|null} [labels] CommonMetadata labels + * @property {google.datastore.admin.v1.CommonMetadata.State|null} [state] CommonMetadata state + */ - /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. - * @memberof google.datastore.v1.Datastore - * @typedef ReserveIdsCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.ReserveIdsResponse} [response] ReserveIdsResponse - */ - - /** - * Calls ReserveIds. - * @function reserveIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object - * @param {google.datastore.v1.Datastore.ReserveIdsCallback} callback Node-style callback called with the error, if any, and ReserveIdsResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.reserveIds = function reserveIds(request, callback) { - return this.rpcCall(reserveIds, $root.google.datastore.v1.ReserveIdsRequest, $root.google.datastore.v1.ReserveIdsResponse, request, callback); - }, "name", { value: "ReserveIds" }); - - /** - * Calls ReserveIds. - * @function reserveIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ + /** + * Constructs a new CommonMetadata. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a CommonMetadata. + * @implements ICommonMetadata + * @constructor + * @param {google.datastore.admin.v1.ICommonMetadata=} [properties] Properties to set + */ + function CommonMetadata(properties) { + this.labels = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - return Datastore; - })(); + /** + * CommonMetadata startTime. + * @member {google.protobuf.ITimestamp|null|undefined} startTime + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + */ + CommonMetadata.prototype.startTime = null; - v1.LookupRequest = (function() { + /** + * CommonMetadata endTime. + * @member {google.protobuf.ITimestamp|null|undefined} endTime + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + */ + CommonMetadata.prototype.endTime = null; - /** - * Properties of a LookupRequest. - * @memberof google.datastore.v1 - * @interface ILookupRequest - * @property {string|null} [projectId] LookupRequest projectId - * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions - * @property {Array.|null} [keys] LookupRequest keys - */ + /** + * CommonMetadata operationType. + * @member {google.datastore.admin.v1.OperationType} operationType + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + */ + CommonMetadata.prototype.operationType = 0; - /** - * Constructs a new LookupRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a LookupRequest. - * @implements ILookupRequest - * @constructor - * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set - */ - function LookupRequest(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * CommonMetadata labels. + * @member {Object.} labels + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + */ + CommonMetadata.prototype.labels = $util.emptyObject; - /** - * LookupRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.projectId = ""; + /** + * CommonMetadata state. + * @member {google.datastore.admin.v1.CommonMetadata.State} state + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + */ + CommonMetadata.prototype.state = 0; - /** - * LookupRequest readOptions. - * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.readOptions = null; + /** + * Creates a new CommonMetadata instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {google.datastore.admin.v1.ICommonMetadata=} [properties] Properties to set + * @returns {google.datastore.admin.v1.CommonMetadata} CommonMetadata instance + */ + CommonMetadata.create = function create(properties) { + return new CommonMetadata(properties); + }; - /** - * LookupRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.keys = $util.emptyArray; + /** + * Encodes the specified CommonMetadata message. Does not implicitly {@link google.datastore.admin.v1.CommonMetadata.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {google.datastore.admin.v1.ICommonMetadata} message CommonMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommonMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.startTime != null && Object.hasOwnProperty.call(message, "startTime")) + $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime")) + $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.operationType != null && Object.hasOwnProperty.call(message, "operationType")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.operationType); + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) + for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) + writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); + if (message.state != null && Object.hasOwnProperty.call(message, "state")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.state); + return writer; + }; - /** - * Creates a new LookupRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set - * @returns {google.datastore.v1.LookupRequest} LookupRequest instance - */ - LookupRequest.create = function create(properties) { - return new LookupRequest(properties); - }; + /** + * Encodes the specified CommonMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.CommonMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {google.datastore.admin.v1.ICommonMetadata} message CommonMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommonMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LookupRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) - $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - return writer; - }; + /** + * Decodes a CommonMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.CommonMetadata} CommonMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommonMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.CommonMetadata(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 3: + message.operationType = reader.int32(); + break; + case 4: + reader.skip().pos++; + if (message.labels === $util.emptyObject) + message.labels = {}; + key = reader.string(); + reader.pos++; + message.labels[key] = reader.string(); + break; + case 5: + message.state = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LookupRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Decodes a CommonMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.CommonMetadata} CommonMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommonMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Decodes a LookupRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.LookupRequest} LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LookupRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 1: - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); - break; - case 3: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Verifies a CommonMetadata message. + * @function verify + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CommonMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.startTime != null && message.hasOwnProperty("startTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.startTime); + if (error) + return "startTime." + error; } - } - return message; - }; - - /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.LookupRequest} LookupRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LookupRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a LookupRequest message. - * @function verify - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LookupRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.readOptions != null && message.hasOwnProperty("readOptions")) { - var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); - if (error) - return "readOptions." + error; - } - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (message.endTime != null && message.hasOwnProperty("endTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.endTime); if (error) - return "keys." + error; + return "endTime." + error; } - } - return null; - }; - - /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.LookupRequest} LookupRequest - */ - LookupRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.LookupRequest) - return object; - var message = new $root.google.datastore.v1.LookupRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.readOptions != null) { - if (typeof object.readOptions !== "object") - throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); - message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); - } - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.LookupRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.LookupRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + if (message.operationType != null && message.hasOwnProperty("operationType")) + switch (message.operationType) { + default: + return "operationType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.labels != null && message.hasOwnProperty("labels")) { + if (!$util.isObject(message.labels)) + return "labels: object expected"; + var key = Object.keys(message.labels); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.labels[key[i]])) + return "labels: string{k:string} expected"; } - } - return message; - }; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + } + return null; + }; - /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.LookupRequest - * @static - * @param {google.datastore.v1.LookupRequest} message LookupRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - LookupRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (options.defaults) { - object.readOptions = null; - object.projectId = ""; - } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) - object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - return object; - }; + /** + * Creates a CommonMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.CommonMetadata} CommonMetadata + */ + CommonMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.CommonMetadata) + return object; + var message = new $root.google.datastore.admin.v1.CommonMetadata(); + if (object.startTime != null) { + if (typeof object.startTime !== "object") + throw TypeError(".google.datastore.admin.v1.CommonMetadata.startTime: object expected"); + message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime); + } + if (object.endTime != null) { + if (typeof object.endTime !== "object") + throw TypeError(".google.datastore.admin.v1.CommonMetadata.endTime: object expected"); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + } + switch (object.operationType) { + case "OPERATION_TYPE_UNSPECIFIED": + case 0: + message.operationType = 0; + break; + case "EXPORT_ENTITIES": + case 1: + message.operationType = 1; + break; + case "IMPORT_ENTITIES": + case 2: + message.operationType = 2; + break; + case "CREATE_INDEX": + case 3: + message.operationType = 3; + break; + case "DELETE_INDEX": + case 4: + message.operationType = 4; + break; + } + if (object.labels) { + if (typeof object.labels !== "object") + throw TypeError(".google.datastore.admin.v1.CommonMetadata.labels: object expected"); + message.labels = {}; + for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) + message.labels[keys[i]] = String(object.labels[keys[i]]); + } + switch (object.state) { + case "STATE_UNSPECIFIED": + case 0: + message.state = 0; + break; + case "INITIALIZING": + case 1: + message.state = 1; + break; + case "PROCESSING": + case 2: + message.state = 2; + break; + case "CANCELLING": + case 3: + message.state = 3; + break; + case "FINALIZING": + case 4: + message.state = 4; + break; + case "SUCCESSFUL": + case 5: + message.state = 5; + break; + case "FAILED": + case 6: + message.state = 6; + break; + case "CANCELLED": + case 7: + message.state = 7; + break; + } + return message; + }; - /** - * Converts this LookupRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.LookupRequest - * @instance - * @returns {Object.} JSON object - */ - LookupRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from a CommonMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {google.datastore.admin.v1.CommonMetadata} message CommonMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CommonMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.labels = {}; + if (options.defaults) { + object.startTime = null; + object.endTime = null; + object.operationType = options.enums === String ? "OPERATION_TYPE_UNSPECIFIED" : 0; + object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; + } + if (message.startTime != null && message.hasOwnProperty("startTime")) + object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options); + if (message.endTime != null && message.hasOwnProperty("endTime")) + object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options); + if (message.operationType != null && message.hasOwnProperty("operationType")) + object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType; + var keys2; + if (message.labels && (keys2 = Object.keys(message.labels)).length) { + object.labels = {}; + for (var j = 0; j < keys2.length; ++j) + object.labels[keys2[j]] = message.labels[keys2[j]]; + } + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state; + return object; + }; - return LookupRequest; - })(); + /** + * Converts this CommonMetadata to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.CommonMetadata + * @instance + * @returns {Object.} JSON object + */ + CommonMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - v1.LookupResponse = (function() { + /** + * State enum. + * @name google.datastore.admin.v1.CommonMetadata.State + * @enum {number} + * @property {number} STATE_UNSPECIFIED=0 STATE_UNSPECIFIED value + * @property {number} INITIALIZING=1 INITIALIZING value + * @property {number} PROCESSING=2 PROCESSING value + * @property {number} CANCELLING=3 CANCELLING value + * @property {number} FINALIZING=4 FINALIZING value + * @property {number} SUCCESSFUL=5 SUCCESSFUL value + * @property {number} FAILED=6 FAILED value + * @property {number} CANCELLED=7 CANCELLED value + */ + CommonMetadata.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STATE_UNSPECIFIED"] = 0; + values[valuesById[1] = "INITIALIZING"] = 1; + values[valuesById[2] = "PROCESSING"] = 2; + values[valuesById[3] = "CANCELLING"] = 3; + values[valuesById[4] = "FINALIZING"] = 4; + values[valuesById[5] = "SUCCESSFUL"] = 5; + values[valuesById[6] = "FAILED"] = 6; + values[valuesById[7] = "CANCELLED"] = 7; + return values; + })(); + + return CommonMetadata; + })(); /** - * Properties of a LookupResponse. - * @memberof google.datastore.v1 - * @interface ILookupResponse - * @property {Array.|null} [found] LookupResponse found - * @property {Array.|null} [missing] LookupResponse missing - * @property {Array.|null} [deferred] LookupResponse deferred + * OperationType enum. + * @name google.datastore.admin.v1.OperationType + * @enum {number} + * @property {number} OPERATION_TYPE_UNSPECIFIED=0 OPERATION_TYPE_UNSPECIFIED value + * @property {number} EXPORT_ENTITIES=1 EXPORT_ENTITIES value + * @property {number} IMPORT_ENTITIES=2 IMPORT_ENTITIES value + * @property {number} CREATE_INDEX=3 CREATE_INDEX value + * @property {number} DELETE_INDEX=4 DELETE_INDEX value */ + v1.OperationType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATION_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "EXPORT_ENTITIES"] = 1; + values[valuesById[2] = "IMPORT_ENTITIES"] = 2; + values[valuesById[3] = "CREATE_INDEX"] = 3; + values[valuesById[4] = "DELETE_INDEX"] = 4; + return values; + })(); - /** - * Constructs a new LookupResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a LookupResponse. - * @implements ILookupResponse - * @constructor - * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set - */ - function LookupResponse(properties) { - this.found = []; - this.missing = []; - this.deferred = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.Progress = (function() { - /** - * LookupResponse found. - * @member {Array.} found - * @memberof google.datastore.v1.LookupResponse - * @instance - */ - LookupResponse.prototype.found = $util.emptyArray; + /** + * Properties of a Progress. + * @memberof google.datastore.admin.v1 + * @interface IProgress + * @property {number|Long|null} [workCompleted] Progress workCompleted + * @property {number|Long|null} [workEstimated] Progress workEstimated + */ - /** - * LookupResponse missing. - * @member {Array.} missing - * @memberof google.datastore.v1.LookupResponse - * @instance - */ - LookupResponse.prototype.missing = $util.emptyArray; + /** + * Constructs a new Progress. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a Progress. + * @implements IProgress + * @constructor + * @param {google.datastore.admin.v1.IProgress=} [properties] Properties to set + */ + function Progress(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * LookupResponse deferred. - * @member {Array.} deferred - * @memberof google.datastore.v1.LookupResponse - * @instance - */ - LookupResponse.prototype.deferred = $util.emptyArray; + /** + * Progress workCompleted. + * @member {number|Long} workCompleted + * @memberof google.datastore.admin.v1.Progress + * @instance + */ + Progress.prototype.workCompleted = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Creates a new LookupResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set - * @returns {google.datastore.v1.LookupResponse} LookupResponse instance - */ - LookupResponse.create = function create(properties) { - return new LookupResponse(properties); - }; + /** + * Progress workEstimated. + * @member {number|Long} workEstimated + * @memberof google.datastore.admin.v1.Progress + * @instance + */ + Progress.prototype.workEstimated = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LookupResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.found != null && message.found.length) - for (var i = 0; i < message.found.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.found[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.missing != null && message.missing.length) - for (var i = 0; i < message.missing.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.missing[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.deferred != null && message.deferred.length) - for (var i = 0; i < message.deferred.length; ++i) - $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - return writer; - }; + /** + * Creates a new Progress instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {google.datastore.admin.v1.IProgress=} [properties] Properties to set + * @returns {google.datastore.admin.v1.Progress} Progress instance + */ + Progress.create = function create(properties) { + return new Progress(properties); + }; - /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LookupResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified Progress message. Does not implicitly {@link google.datastore.admin.v1.Progress.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {google.datastore.admin.v1.IProgress} message Progress message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Progress.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.workCompleted != null && Object.hasOwnProperty.call(message, "workCompleted")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.workCompleted); + if (message.workEstimated != null && Object.hasOwnProperty.call(message, "workEstimated")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.workEstimated); + return writer; + }; - /** - * Decodes a LookupResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.LookupResponse} LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LookupResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.found && message.found.length)) - message.found = []; - message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 2: - if (!(message.missing && message.missing.length)) - message.missing = []; - message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.deferred && message.deferred.length)) - message.deferred = []; - message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Encodes the specified Progress message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Progress.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {google.datastore.admin.v1.IProgress} message Progress message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Progress.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Progress message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.Progress} Progress + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Progress.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.Progress(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.workCompleted = reader.int64(); + break; + case 2: + message.workEstimated = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.LookupResponse} LookupResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LookupResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a Progress message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.Progress} Progress + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Progress.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a LookupResponse message. - * @function verify - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LookupResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.found != null && message.hasOwnProperty("found")) { - if (!Array.isArray(message.found)) - return "found: array expected"; - for (var i = 0; i < message.found.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.found[i]); - if (error) - return "found." + error; - } - } - if (message.missing != null && message.hasOwnProperty("missing")) { - if (!Array.isArray(message.missing)) - return "missing: array expected"; - for (var i = 0; i < message.missing.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.missing[i]); - if (error) - return "missing." + error; - } - } - if (message.deferred != null && message.hasOwnProperty("deferred")) { - if (!Array.isArray(message.deferred)) - return "deferred: array expected"; - for (var i = 0; i < message.deferred.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.deferred[i]); - if (error) - return "deferred." + error; + /** + * Verifies a Progress message. + * @function verify + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Progress.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.workCompleted != null && message.hasOwnProperty("workCompleted")) + if (!$util.isInteger(message.workCompleted) && !(message.workCompleted && $util.isInteger(message.workCompleted.low) && $util.isInteger(message.workCompleted.high))) + return "workCompleted: integer|Long expected"; + if (message.workEstimated != null && message.hasOwnProperty("workEstimated")) + if (!$util.isInteger(message.workEstimated) && !(message.workEstimated && $util.isInteger(message.workEstimated.low) && $util.isInteger(message.workEstimated.high))) + return "workEstimated: integer|Long expected"; + return null; + }; + + /** + * Creates a Progress message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.Progress} Progress + */ + Progress.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.Progress) + return object; + var message = new $root.google.datastore.admin.v1.Progress(); + if (object.workCompleted != null) + if ($util.Long) + (message.workCompleted = $util.Long.fromValue(object.workCompleted)).unsigned = false; + else if (typeof object.workCompleted === "string") + message.workCompleted = parseInt(object.workCompleted, 10); + else if (typeof object.workCompleted === "number") + message.workCompleted = object.workCompleted; + else if (typeof object.workCompleted === "object") + message.workCompleted = new $util.LongBits(object.workCompleted.low >>> 0, object.workCompleted.high >>> 0).toNumber(); + if (object.workEstimated != null) + if ($util.Long) + (message.workEstimated = $util.Long.fromValue(object.workEstimated)).unsigned = false; + else if (typeof object.workEstimated === "string") + message.workEstimated = parseInt(object.workEstimated, 10); + else if (typeof object.workEstimated === "number") + message.workEstimated = object.workEstimated; + else if (typeof object.workEstimated === "object") + message.workEstimated = new $util.LongBits(object.workEstimated.low >>> 0, object.workEstimated.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a Progress message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {google.datastore.admin.v1.Progress} message Progress + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Progress.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.workCompleted = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.workCompleted = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.workEstimated = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.workEstimated = options.longs === String ? "0" : 0; } + if (message.workCompleted != null && message.hasOwnProperty("workCompleted")) + if (typeof message.workCompleted === "number") + object.workCompleted = options.longs === String ? String(message.workCompleted) : message.workCompleted; + else + object.workCompleted = options.longs === String ? $util.Long.prototype.toString.call(message.workCompleted) : options.longs === Number ? new $util.LongBits(message.workCompleted.low >>> 0, message.workCompleted.high >>> 0).toNumber() : message.workCompleted; + if (message.workEstimated != null && message.hasOwnProperty("workEstimated")) + if (typeof message.workEstimated === "number") + object.workEstimated = options.longs === String ? String(message.workEstimated) : message.workEstimated; + else + object.workEstimated = options.longs === String ? $util.Long.prototype.toString.call(message.workEstimated) : options.longs === Number ? new $util.LongBits(message.workEstimated.low >>> 0, message.workEstimated.high >>> 0).toNumber() : message.workEstimated; + return object; + }; + + /** + * Converts this Progress to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.Progress + * @instance + * @returns {Object.} JSON object + */ + Progress.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Progress; + })(); + + v1.ExportEntitiesRequest = (function() { + + /** + * Properties of an ExportEntitiesRequest. + * @memberof google.datastore.admin.v1 + * @interface IExportEntitiesRequest + * @property {string|null} [projectId] ExportEntitiesRequest projectId + * @property {Object.|null} [labels] ExportEntitiesRequest labels + * @property {google.datastore.admin.v1.IEntityFilter|null} [entityFilter] ExportEntitiesRequest entityFilter + * @property {string|null} [outputUrlPrefix] ExportEntitiesRequest outputUrlPrefix + */ + + /** + * Constructs a new ExportEntitiesRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an ExportEntitiesRequest. + * @implements IExportEntitiesRequest + * @constructor + * @param {google.datastore.admin.v1.IExportEntitiesRequest=} [properties] Properties to set + */ + function ExportEntitiesRequest(properties) { + this.labels = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return null; - }; - /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.LookupResponse} LookupResponse - */ - LookupResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.LookupResponse) - return object; - var message = new $root.google.datastore.v1.LookupResponse(); - if (object.found) { - if (!Array.isArray(object.found)) - throw TypeError(".google.datastore.v1.LookupResponse.found: array expected"); - message.found = []; - for (var i = 0; i < object.found.length; ++i) { - if (typeof object.found[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.found: object expected"); - message.found[i] = $root.google.datastore.v1.EntityResult.fromObject(object.found[i]); - } - } - if (object.missing) { - if (!Array.isArray(object.missing)) - throw TypeError(".google.datastore.v1.LookupResponse.missing: array expected"); - message.missing = []; - for (var i = 0; i < object.missing.length; ++i) { - if (typeof object.missing[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.missing: object expected"); - message.missing[i] = $root.google.datastore.v1.EntityResult.fromObject(object.missing[i]); - } - } - if (object.deferred) { - if (!Array.isArray(object.deferred)) - throw TypeError(".google.datastore.v1.LookupResponse.deferred: array expected"); - message.deferred = []; - for (var i = 0; i < object.deferred.length; ++i) { - if (typeof object.deferred[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.deferred: object expected"); - message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); - } - } - return message; - }; + /** + * ExportEntitiesRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @instance + */ + ExportEntitiesRequest.prototype.projectId = ""; - /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.LookupResponse - * @static - * @param {google.datastore.v1.LookupResponse} message LookupResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - LookupResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.found = []; - object.missing = []; - object.deferred = []; - } - if (message.found && message.found.length) { - object.found = []; - for (var j = 0; j < message.found.length; ++j) - object.found[j] = $root.google.datastore.v1.EntityResult.toObject(message.found[j], options); - } - if (message.missing && message.missing.length) { - object.missing = []; - for (var j = 0; j < message.missing.length; ++j) - object.missing[j] = $root.google.datastore.v1.EntityResult.toObject(message.missing[j], options); - } - if (message.deferred && message.deferred.length) { - object.deferred = []; - for (var j = 0; j < message.deferred.length; ++j) - object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); - } - return object; - }; + /** + * ExportEntitiesRequest labels. + * @member {Object.} labels + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @instance + */ + ExportEntitiesRequest.prototype.labels = $util.emptyObject; - /** - * Converts this LookupResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.LookupResponse - * @instance - * @returns {Object.} JSON object - */ - LookupResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * ExportEntitiesRequest entityFilter. + * @member {google.datastore.admin.v1.IEntityFilter|null|undefined} entityFilter + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @instance + */ + ExportEntitiesRequest.prototype.entityFilter = null; - return LookupResponse; - })(); + /** + * ExportEntitiesRequest outputUrlPrefix. + * @member {string} outputUrlPrefix + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @instance + */ + ExportEntitiesRequest.prototype.outputUrlPrefix = ""; - v1.RunQueryRequest = (function() { + /** + * Creates a new ExportEntitiesRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IExportEntitiesRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ExportEntitiesRequest} ExportEntitiesRequest instance + */ + ExportEntitiesRequest.create = function create(properties) { + return new ExportEntitiesRequest(properties); + }; - /** - * Properties of a RunQueryRequest. - * @memberof google.datastore.v1 - * @interface IRunQueryRequest - * @property {string|null} [projectId] RunQueryRequest projectId - * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId - * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions - * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query - * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery - */ + /** + * Encodes the specified ExportEntitiesRequest message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IExportEntitiesRequest} message ExportEntitiesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) + for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); + if (message.entityFilter != null && Object.hasOwnProperty.call(message, "entityFilter")) + $root.google.datastore.admin.v1.EntityFilter.encode(message.entityFilter, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.outputUrlPrefix != null && Object.hasOwnProperty.call(message, "outputUrlPrefix")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.outputUrlPrefix); + return writer; + }; - /** - * Constructs a new RunQueryRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a RunQueryRequest. - * @implements IRunQueryRequest - * @constructor - * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set - */ - function RunQueryRequest(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Encodes the specified ExportEntitiesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IExportEntitiesRequest} message ExportEntitiesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * RunQueryRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.projectId = ""; + /** + * Decodes an ExportEntitiesRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ExportEntitiesRequest} ExportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ExportEntitiesRequest(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 2: + reader.skip().pos++; + if (message.labels === $util.emptyObject) + message.labels = {}; + key = reader.string(); + reader.pos++; + message.labels[key] = reader.string(); + break; + case 3: + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + case 4: + message.outputUrlPrefix = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * RunQueryRequest partitionId. - * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.partitionId = null; + /** + * Decodes an ExportEntitiesRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ExportEntitiesRequest} ExportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * RunQueryRequest readOptions. - * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.readOptions = null; + /** + * Verifies an ExportEntitiesRequest message. + * @function verify + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExportEntitiesRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.labels != null && message.hasOwnProperty("labels")) { + if (!$util.isObject(message.labels)) + return "labels: object expected"; + var key = Object.keys(message.labels); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.labels[key[i]])) + return "labels: string{k:string} expected"; + } + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) { + var error = $root.google.datastore.admin.v1.EntityFilter.verify(message.entityFilter); + if (error) + return "entityFilter." + error; + } + if (message.outputUrlPrefix != null && message.hasOwnProperty("outputUrlPrefix")) + if (!$util.isString(message.outputUrlPrefix)) + return "outputUrlPrefix: string expected"; + return null; + }; - /** - * RunQueryRequest query. - * @member {google.datastore.v1.IQuery|null|undefined} query - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.query = null; + /** + * Creates an ExportEntitiesRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ExportEntitiesRequest} ExportEntitiesRequest + */ + ExportEntitiesRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ExportEntitiesRequest) + return object; + var message = new $root.google.datastore.admin.v1.ExportEntitiesRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.labels) { + if (typeof object.labels !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesRequest.labels: object expected"); + message.labels = {}; + for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) + message.labels[keys[i]] = String(object.labels[keys[i]]); + } + if (object.entityFilter != null) { + if (typeof object.entityFilter !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesRequest.entityFilter: object expected"); + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.fromObject(object.entityFilter); + } + if (object.outputUrlPrefix != null) + message.outputUrlPrefix = String(object.outputUrlPrefix); + return message; + }; - /** - * RunQueryRequest gqlQuery. - * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.gqlQuery = null; + /** + * Creates a plain object from an ExportEntitiesRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.ExportEntitiesRequest} message ExportEntitiesRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExportEntitiesRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.labels = {}; + if (options.defaults) { + object.projectId = ""; + object.entityFilter = null; + object.outputUrlPrefix = ""; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + var keys2; + if (message.labels && (keys2 = Object.keys(message.labels)).length) { + object.labels = {}; + for (var j = 0; j < keys2.length; ++j) + object.labels[keys2[j]] = message.labels[keys2[j]]; + } + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) + object.entityFilter = $root.google.datastore.admin.v1.EntityFilter.toObject(message.entityFilter, options); + if (message.outputUrlPrefix != null && message.hasOwnProperty("outputUrlPrefix")) + object.outputUrlPrefix = message.outputUrlPrefix; + return object; + }; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * Converts this ExportEntitiesRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @instance + * @returns {Object.} JSON object + */ + ExportEntitiesRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * RunQueryRequest queryType. - * @member {"query"|"gqlQuery"|undefined} queryType - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - Object.defineProperty(RunQueryRequest.prototype, "queryType", { - get: $util.oneOfGetter($oneOfFields = ["query", "gqlQuery"]), - set: $util.oneOfSetter($oneOfFields) - }); + return ExportEntitiesRequest; + })(); - /** - * Creates a new RunQueryRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest instance - */ - RunQueryRequest.create = function create(properties) { - return new RunQueryRequest(properties); - }; + v1.ImportEntitiesRequest = (function() { - /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) - $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) - $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.query != null && Object.hasOwnProperty.call(message, "query")) - $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) - $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - return writer; - }; + /** + * Properties of an ImportEntitiesRequest. + * @memberof google.datastore.admin.v1 + * @interface IImportEntitiesRequest + * @property {string|null} [projectId] ImportEntitiesRequest projectId + * @property {Object.|null} [labels] ImportEntitiesRequest labels + * @property {string|null} [inputUrl] ImportEntitiesRequest inputUrl + * @property {google.datastore.admin.v1.IEntityFilter|null} [entityFilter] ImportEntitiesRequest entityFilter + */ - /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Constructs a new ImportEntitiesRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an ImportEntitiesRequest. + * @implements IImportEntitiesRequest + * @constructor + * @param {google.datastore.admin.v1.IImportEntitiesRequest=} [properties] Properties to set + */ + function ImportEntitiesRequest(properties) { + this.labels = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Decodes a RunQueryRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 2: - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); - break; - case 1: - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); - break; - case 3: - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); - break; - case 7: - message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; + /** + * ImportEntitiesRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @instance + */ + ImportEntitiesRequest.prototype.projectId = ""; + + /** + * ImportEntitiesRequest labels. + * @member {Object.} labels + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @instance + */ + ImportEntitiesRequest.prototype.labels = $util.emptyObject; + + /** + * ImportEntitiesRequest inputUrl. + * @member {string} inputUrl + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @instance + */ + ImportEntitiesRequest.prototype.inputUrl = ""; + + /** + * ImportEntitiesRequest entityFilter. + * @member {google.datastore.admin.v1.IEntityFilter|null|undefined} entityFilter + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @instance + */ + ImportEntitiesRequest.prototype.entityFilter = null; + + /** + * Creates a new ImportEntitiesRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IImportEntitiesRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ImportEntitiesRequest} ImportEntitiesRequest instance + */ + ImportEntitiesRequest.create = function create(properties) { + return new ImportEntitiesRequest(properties); + }; + + /** + * Encodes the specified ImportEntitiesRequest message. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IImportEntitiesRequest} message ImportEntitiesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImportEntitiesRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) + for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); + if (message.inputUrl != null && Object.hasOwnProperty.call(message, "inputUrl")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.inputUrl); + if (message.entityFilter != null && Object.hasOwnProperty.call(message, "entityFilter")) + $root.google.datastore.admin.v1.EntityFilter.encode(message.entityFilter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ImportEntitiesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.IImportEntitiesRequest} message ImportEntitiesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImportEntitiesRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ImportEntitiesRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ImportEntitiesRequest} ImportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImportEntitiesRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ImportEntitiesRequest(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 2: + reader.skip().pos++; + if (message.labels === $util.emptyObject) + message.labels = {}; + key = reader.string(); + reader.pos++; + message.labels[key] = reader.string(); + break; + case 3: + message.inputUrl = reader.string(); + break; + case 4: + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes an ImportEntitiesRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ImportEntitiesRequest} ImportEntitiesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImportEntitiesRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a RunQueryRequest message. - * @function verify - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RunQueryRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) { - var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); - if (error) - return "partitionId." + error; - } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) { - var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); - if (error) - return "readOptions." + error; - } - if (message.query != null && message.hasOwnProperty("query")) { - properties.queryType = 1; - { - var error = $root.google.datastore.v1.Query.verify(message.query); - if (error) - return "query." + error; + /** + * Verifies an ImportEntitiesRequest message. + * @function verify + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ImportEntitiesRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.labels != null && message.hasOwnProperty("labels")) { + if (!$util.isObject(message.labels)) + return "labels: object expected"; + var key = Object.keys(message.labels); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.labels[key[i]])) + return "labels: string{k:string} expected"; } - } - if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { - if (properties.queryType === 1) - return "queryType: multiple values"; - properties.queryType = 1; - { - var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (message.inputUrl != null && message.hasOwnProperty("inputUrl")) + if (!$util.isString(message.inputUrl)) + return "inputUrl: string expected"; + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) { + var error = $root.google.datastore.admin.v1.EntityFilter.verify(message.entityFilter); if (error) - return "gqlQuery." + error; + return "entityFilter." + error; } - } - return null; - }; + return null; + }; - /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest - */ - RunQueryRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RunQueryRequest) - return object; - var message = new $root.google.datastore.v1.RunQueryRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.partitionId != null) { - if (typeof object.partitionId !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); - message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); - } - if (object.readOptions != null) { - if (typeof object.readOptions !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.readOptions: object expected"); - message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); - } - if (object.query != null) { - if (typeof object.query !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.query: object expected"); - message.query = $root.google.datastore.v1.Query.fromObject(object.query); - } - if (object.gqlQuery != null) { - if (typeof object.gqlQuery !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); - message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); - } - return message; - }; + /** + * Creates an ImportEntitiesRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ImportEntitiesRequest} ImportEntitiesRequest + */ + ImportEntitiesRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ImportEntitiesRequest) + return object; + var message = new $root.google.datastore.admin.v1.ImportEntitiesRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.labels) { + if (typeof object.labels !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesRequest.labels: object expected"); + message.labels = {}; + for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) + message.labels[keys[i]] = String(object.labels[keys[i]]); + } + if (object.inputUrl != null) + message.inputUrl = String(object.inputUrl); + if (object.entityFilter != null) { + if (typeof object.entityFilter !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesRequest.entityFilter: object expected"); + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.fromObject(object.entityFilter); + } + return message; + }; - /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.RunQueryRequest - * @static - * @param {google.datastore.v1.RunQueryRequest} message RunQueryRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RunQueryRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.readOptions = null; - object.partitionId = null; - object.projectId = ""; - } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) - object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); - if (message.query != null && message.hasOwnProperty("query")) { - object.query = $root.google.datastore.v1.Query.toObject(message.query, options); - if (options.oneofs) - object.queryType = "query"; - } - if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { - object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); - if (options.oneofs) - object.queryType = "gqlQuery"; - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - return object; - }; + /** + * Creates a plain object from an ImportEntitiesRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {google.datastore.admin.v1.ImportEntitiesRequest} message ImportEntitiesRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ImportEntitiesRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.labels = {}; + if (options.defaults) { + object.projectId = ""; + object.inputUrl = ""; + object.entityFilter = null; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + var keys2; + if (message.labels && (keys2 = Object.keys(message.labels)).length) { + object.labels = {}; + for (var j = 0; j < keys2.length; ++j) + object.labels[keys2[j]] = message.labels[keys2[j]]; + } + if (message.inputUrl != null && message.hasOwnProperty("inputUrl")) + object.inputUrl = message.inputUrl; + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) + object.entityFilter = $root.google.datastore.admin.v1.EntityFilter.toObject(message.entityFilter, options); + return object; + }; - /** - * Converts this RunQueryRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.RunQueryRequest - * @instance - * @returns {Object.} JSON object - */ - RunQueryRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this ImportEntitiesRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @instance + * @returns {Object.} JSON object + */ + ImportEntitiesRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return RunQueryRequest; - })(); + return ImportEntitiesRequest; + })(); - v1.RunQueryResponse = (function() { + v1.ExportEntitiesResponse = (function() { - /** - * Properties of a RunQueryResponse. - * @memberof google.datastore.v1 - * @interface IRunQueryResponse - * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch - * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query - */ + /** + * Properties of an ExportEntitiesResponse. + * @memberof google.datastore.admin.v1 + * @interface IExportEntitiesResponse + * @property {string|null} [outputUrl] ExportEntitiesResponse outputUrl + */ - /** - * Constructs a new RunQueryResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a RunQueryResponse. - * @implements IRunQueryResponse - * @constructor - * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set - */ - function RunQueryResponse(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new ExportEntitiesResponse. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an ExportEntitiesResponse. + * @implements IExportEntitiesResponse + * @constructor + * @param {google.datastore.admin.v1.IExportEntitiesResponse=} [properties] Properties to set + */ + function ExportEntitiesResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * RunQueryResponse batch. - * @member {google.datastore.v1.IQueryResultBatch|null|undefined} batch - * @memberof google.datastore.v1.RunQueryResponse - * @instance - */ - RunQueryResponse.prototype.batch = null; + /** + * ExportEntitiesResponse outputUrl. + * @member {string} outputUrl + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @instance + */ + ExportEntitiesResponse.prototype.outputUrl = ""; - /** - * RunQueryResponse query. - * @member {google.datastore.v1.IQuery|null|undefined} query - * @memberof google.datastore.v1.RunQueryResponse - * @instance - */ - RunQueryResponse.prototype.query = null; + /** + * Creates a new ExportEntitiesResponse instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {google.datastore.admin.v1.IExportEntitiesResponse=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ExportEntitiesResponse} ExportEntitiesResponse instance + */ + ExportEntitiesResponse.create = function create(properties) { + return new ExportEntitiesResponse(properties); + }; - /** - * Creates a new RunQueryResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse instance - */ - RunQueryResponse.create = function create(properties) { - return new RunQueryResponse(properties); - }; + /** + * Encodes the specified ExportEntitiesResponse message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {google.datastore.admin.v1.IExportEntitiesResponse} message ExportEntitiesResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.outputUrl != null && Object.hasOwnProperty.call(message, "outputUrl")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.outputUrl); + return writer; + }; - /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) - $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.query != null && Object.hasOwnProperty.call(message, "query")) - $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; + /** + * Encodes the specified ExportEntitiesResponse message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {google.datastore.admin.v1.IExportEntitiesResponse} message ExportEntitiesResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Decodes an ExportEntitiesResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ExportEntitiesResponse} ExportEntitiesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ExportEntitiesResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.outputUrl = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Decodes a RunQueryResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); - break; - case 2: - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Decodes an ExportEntitiesResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ExportEntitiesResponse} ExportEntitiesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Verifies an ExportEntitiesResponse message. + * @function verify + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExportEntitiesResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.outputUrl != null && message.hasOwnProperty("outputUrl")) + if (!$util.isString(message.outputUrl)) + return "outputUrl: string expected"; + return null; + }; - /** - * Verifies a RunQueryResponse message. - * @function verify - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RunQueryResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.batch != null && message.hasOwnProperty("batch")) { - var error = $root.google.datastore.v1.QueryResultBatch.verify(message.batch); - if (error) - return "batch." + error; - } - if (message.query != null && message.hasOwnProperty("query")) { - var error = $root.google.datastore.v1.Query.verify(message.query); - if (error) - return "query." + error; - } - return null; - }; + /** + * Creates an ExportEntitiesResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ExportEntitiesResponse} ExportEntitiesResponse + */ + ExportEntitiesResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ExportEntitiesResponse) + return object; + var message = new $root.google.datastore.admin.v1.ExportEntitiesResponse(); + if (object.outputUrl != null) + message.outputUrl = String(object.outputUrl); + return message; + }; - /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - */ - RunQueryResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RunQueryResponse) + /** + * Creates a plain object from an ExportEntitiesResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {google.datastore.admin.v1.ExportEntitiesResponse} message ExportEntitiesResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExportEntitiesResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.outputUrl = ""; + if (message.outputUrl != null && message.hasOwnProperty("outputUrl")) + object.outputUrl = message.outputUrl; return object; - var message = new $root.google.datastore.v1.RunQueryResponse(); - if (object.batch != null) { - if (typeof object.batch !== "object") - throw TypeError(".google.datastore.v1.RunQueryResponse.batch: object expected"); - message.batch = $root.google.datastore.v1.QueryResultBatch.fromObject(object.batch); - } - if (object.query != null) { - if (typeof object.query !== "object") - throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); - message.query = $root.google.datastore.v1.Query.fromObject(object.query); - } - return message; - }; + }; - /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.RunQueryResponse} message RunQueryResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RunQueryResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.batch = null; - object.query = null; - } - if (message.batch != null && message.hasOwnProperty("batch")) - object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); - if (message.query != null && message.hasOwnProperty("query")) - object.query = $root.google.datastore.v1.Query.toObject(message.query, options); - return object; - }; + /** + * Converts this ExportEntitiesResponse to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @instance + * @returns {Object.} JSON object + */ + ExportEntitiesResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Converts this RunQueryResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.RunQueryResponse - * @instance - * @returns {Object.} JSON object - */ - RunQueryResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + return ExportEntitiesResponse; + })(); - return RunQueryResponse; - })(); + v1.ExportEntitiesMetadata = (function() { - v1.BeginTransactionRequest = (function() { + /** + * Properties of an ExportEntitiesMetadata. + * @memberof google.datastore.admin.v1 + * @interface IExportEntitiesMetadata + * @property {google.datastore.admin.v1.ICommonMetadata|null} [common] ExportEntitiesMetadata common + * @property {google.datastore.admin.v1.IProgress|null} [progressEntities] ExportEntitiesMetadata progressEntities + * @property {google.datastore.admin.v1.IProgress|null} [progressBytes] ExportEntitiesMetadata progressBytes + * @property {google.datastore.admin.v1.IEntityFilter|null} [entityFilter] ExportEntitiesMetadata entityFilter + * @property {string|null} [outputUrlPrefix] ExportEntitiesMetadata outputUrlPrefix + */ - /** - * Properties of a BeginTransactionRequest. - * @memberof google.datastore.v1 - * @interface IBeginTransactionRequest - * @property {string|null} [projectId] BeginTransactionRequest projectId - * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions - */ + /** + * Constructs a new ExportEntitiesMetadata. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an ExportEntitiesMetadata. + * @implements IExportEntitiesMetadata + * @constructor + * @param {google.datastore.admin.v1.IExportEntitiesMetadata=} [properties] Properties to set + */ + function ExportEntitiesMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Constructs a new BeginTransactionRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a BeginTransactionRequest. - * @implements IBeginTransactionRequest - * @constructor - * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set - */ - function BeginTransactionRequest(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * ExportEntitiesMetadata common. + * @member {google.datastore.admin.v1.ICommonMetadata|null|undefined} common + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + */ + ExportEntitiesMetadata.prototype.common = null; - /** - * BeginTransactionRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.BeginTransactionRequest - * @instance - */ - BeginTransactionRequest.prototype.projectId = ""; + /** + * ExportEntitiesMetadata progressEntities. + * @member {google.datastore.admin.v1.IProgress|null|undefined} progressEntities + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + */ + ExportEntitiesMetadata.prototype.progressEntities = null; - /** - * BeginTransactionRequest transactionOptions. - * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions - * @memberof google.datastore.v1.BeginTransactionRequest - * @instance - */ - BeginTransactionRequest.prototype.transactionOptions = null; + /** + * ExportEntitiesMetadata progressBytes. + * @member {google.datastore.admin.v1.IProgress|null|undefined} progressBytes + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + */ + ExportEntitiesMetadata.prototype.progressBytes = null; - /** - * Creates a new BeginTransactionRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest instance - */ - BeginTransactionRequest.create = function create(properties) { - return new BeginTransactionRequest(properties); - }; + /** + * ExportEntitiesMetadata entityFilter. + * @member {google.datastore.admin.v1.IEntityFilter|null|undefined} entityFilter + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + */ + ExportEntitiesMetadata.prototype.entityFilter = null; - /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BeginTransactionRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) - $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - return writer; - }; + /** + * ExportEntitiesMetadata outputUrlPrefix. + * @member {string} outputUrlPrefix + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + */ + ExportEntitiesMetadata.prototype.outputUrlPrefix = ""; - /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BeginTransactionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new ExportEntitiesMetadata instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IExportEntitiesMetadata=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ExportEntitiesMetadata} ExportEntitiesMetadata instance + */ + ExportEntitiesMetadata.create = function create(properties) { + return new ExportEntitiesMetadata(properties); + }; - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BeginTransactionRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 10: - message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Encodes the specified ExportEntitiesMetadata message. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesMetadata.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IExportEntitiesMetadata} message ExportEntitiesMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.datastore.admin.v1.CommonMetadata.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.progressEntities != null && Object.hasOwnProperty.call(message, "progressEntities")) + $root.google.datastore.admin.v1.Progress.encode(message.progressEntities, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.progressBytes != null && Object.hasOwnProperty.call(message, "progressBytes")) + $root.google.datastore.admin.v1.Progress.encode(message.progressBytes, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.entityFilter != null && Object.hasOwnProperty.call(message, "entityFilter")) + $root.google.datastore.admin.v1.EntityFilter.encode(message.entityFilter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.outputUrlPrefix != null && Object.hasOwnProperty.call(message, "outputUrlPrefix")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.outputUrlPrefix); + return writer; + }; + + /** + * Encodes the specified ExportEntitiesMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ExportEntitiesMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IExportEntitiesMetadata} message ExportEntitiesMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExportEntitiesMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExportEntitiesMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ExportEntitiesMetadata} ExportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ExportEntitiesMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + case 3: + message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + case 4: + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + case 5: + message.outputUrlPrefix = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BeginTransactionRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes an ExportEntitiesMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ExportEntitiesMetadata} ExportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExportEntitiesMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a BeginTransactionRequest message. - * @function verify - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BeginTransactionRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { - var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); - if (error) - return "transactionOptions." + error; - } - return null; - }; + /** + * Verifies an ExportEntitiesMetadata message. + * @function verify + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExportEntitiesMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.datastore.admin.v1.CommonMetadata.verify(message.common); + if (error) + return "common." + error; + } + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) { + var error = $root.google.datastore.admin.v1.Progress.verify(message.progressEntities); + if (error) + return "progressEntities." + error; + } + if (message.progressBytes != null && message.hasOwnProperty("progressBytes")) { + var error = $root.google.datastore.admin.v1.Progress.verify(message.progressBytes); + if (error) + return "progressBytes." + error; + } + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) { + var error = $root.google.datastore.admin.v1.EntityFilter.verify(message.entityFilter); + if (error) + return "entityFilter." + error; + } + if (message.outputUrlPrefix != null && message.hasOwnProperty("outputUrlPrefix")) + if (!$util.isString(message.outputUrlPrefix)) + return "outputUrlPrefix: string expected"; + return null; + }; - /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest - */ - BeginTransactionRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.BeginTransactionRequest) + /** + * Creates an ExportEntitiesMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ExportEntitiesMetadata} ExportEntitiesMetadata + */ + ExportEntitiesMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ExportEntitiesMetadata) + return object; + var message = new $root.google.datastore.admin.v1.ExportEntitiesMetadata(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesMetadata.common: object expected"); + message.common = $root.google.datastore.admin.v1.CommonMetadata.fromObject(object.common); + } + if (object.progressEntities != null) { + if (typeof object.progressEntities !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesMetadata.progressEntities: object expected"); + message.progressEntities = $root.google.datastore.admin.v1.Progress.fromObject(object.progressEntities); + } + if (object.progressBytes != null) { + if (typeof object.progressBytes !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesMetadata.progressBytes: object expected"); + message.progressBytes = $root.google.datastore.admin.v1.Progress.fromObject(object.progressBytes); + } + if (object.entityFilter != null) { + if (typeof object.entityFilter !== "object") + throw TypeError(".google.datastore.admin.v1.ExportEntitiesMetadata.entityFilter: object expected"); + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.fromObject(object.entityFilter); + } + if (object.outputUrlPrefix != null) + message.outputUrlPrefix = String(object.outputUrlPrefix); + return message; + }; + + /** + * Creates a plain object from an ExportEntitiesMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.ExportEntitiesMetadata} message ExportEntitiesMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExportEntitiesMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.common = null; + object.progressEntities = null; + object.progressBytes = null; + object.entityFilter = null; + object.outputUrlPrefix = ""; + } + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.datastore.admin.v1.CommonMetadata.toObject(message.common, options); + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) + object.progressEntities = $root.google.datastore.admin.v1.Progress.toObject(message.progressEntities, options); + if (message.progressBytes != null && message.hasOwnProperty("progressBytes")) + object.progressBytes = $root.google.datastore.admin.v1.Progress.toObject(message.progressBytes, options); + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) + object.entityFilter = $root.google.datastore.admin.v1.EntityFilter.toObject(message.entityFilter, options); + if (message.outputUrlPrefix != null && message.hasOwnProperty("outputUrlPrefix")) + object.outputUrlPrefix = message.outputUrlPrefix; return object; - var message = new $root.google.datastore.v1.BeginTransactionRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.transactionOptions != null) { - if (typeof object.transactionOptions !== "object") - throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); - message.transactionOptions = $root.google.datastore.v1.TransactionOptions.fromObject(object.transactionOptions); - } - return message; - }; + }; - /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.BeginTransactionRequest - * @static - * @param {google.datastore.v1.BeginTransactionRequest} message BeginTransactionRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BeginTransactionRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.projectId = ""; - object.transactionOptions = null; - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) - object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); - return object; - }; + /** + * Converts this ExportEntitiesMetadata to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @instance + * @returns {Object.} JSON object + */ + ExportEntitiesMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Converts this BeginTransactionRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.BeginTransactionRequest - * @instance - * @returns {Object.} JSON object - */ - BeginTransactionRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + return ExportEntitiesMetadata; + })(); - return BeginTransactionRequest; - })(); + v1.ImportEntitiesMetadata = (function() { - v1.BeginTransactionResponse = (function() { - - /** - * Properties of a BeginTransactionResponse. - * @memberof google.datastore.v1 - * @interface IBeginTransactionResponse - * @property {Uint8Array|null} [transaction] BeginTransactionResponse transaction - */ + /** + * Properties of an ImportEntitiesMetadata. + * @memberof google.datastore.admin.v1 + * @interface IImportEntitiesMetadata + * @property {google.datastore.admin.v1.ICommonMetadata|null} [common] ImportEntitiesMetadata common + * @property {google.datastore.admin.v1.IProgress|null} [progressEntities] ImportEntitiesMetadata progressEntities + * @property {google.datastore.admin.v1.IProgress|null} [progressBytes] ImportEntitiesMetadata progressBytes + * @property {google.datastore.admin.v1.IEntityFilter|null} [entityFilter] ImportEntitiesMetadata entityFilter + * @property {string|null} [inputUrl] ImportEntitiesMetadata inputUrl + */ - /** - * Constructs a new BeginTransactionResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a BeginTransactionResponse. - * @implements IBeginTransactionResponse - * @constructor - * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set - */ - function BeginTransactionResponse(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new ImportEntitiesMetadata. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an ImportEntitiesMetadata. + * @implements IImportEntitiesMetadata + * @constructor + * @param {google.datastore.admin.v1.IImportEntitiesMetadata=} [properties] Properties to set + */ + function ImportEntitiesMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * BeginTransactionResponse transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.BeginTransactionResponse - * @instance - */ - BeginTransactionResponse.prototype.transaction = $util.newBuffer([]); + /** + * ImportEntitiesMetadata common. + * @member {google.datastore.admin.v1.ICommonMetadata|null|undefined} common + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + */ + ImportEntitiesMetadata.prototype.common = null; - /** - * Creates a new BeginTransactionResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse instance - */ - BeginTransactionResponse.create = function create(properties) { - return new BeginTransactionResponse(properties); - }; + /** + * ImportEntitiesMetadata progressEntities. + * @member {google.datastore.admin.v1.IProgress|null|undefined} progressEntities + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + */ + ImportEntitiesMetadata.prototype.progressEntities = null; - /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BeginTransactionResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - return writer; - }; + /** + * ImportEntitiesMetadata progressBytes. + * @member {google.datastore.admin.v1.IProgress|null|undefined} progressBytes + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + */ + ImportEntitiesMetadata.prototype.progressBytes = null; - /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BeginTransactionResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * ImportEntitiesMetadata entityFilter. + * @member {google.datastore.admin.v1.IEntityFilter|null|undefined} entityFilter + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + */ + ImportEntitiesMetadata.prototype.entityFilter = null; - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BeginTransactionResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.transaction = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * ImportEntitiesMetadata inputUrl. + * @member {string} inputUrl + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + */ + ImportEntitiesMetadata.prototype.inputUrl = ""; - /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BeginTransactionResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Creates a new ImportEntitiesMetadata instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IImportEntitiesMetadata=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ImportEntitiesMetadata} ImportEntitiesMetadata instance + */ + ImportEntitiesMetadata.create = function create(properties) { + return new ImportEntitiesMetadata(properties); + }; - /** - * Verifies a BeginTransactionResponse message. - * @function verify - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BeginTransactionResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.transaction != null && message.hasOwnProperty("transaction")) - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; - return null; - }; + /** + * Encodes the specified ImportEntitiesMetadata message. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesMetadata.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IImportEntitiesMetadata} message ImportEntitiesMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImportEntitiesMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.datastore.admin.v1.CommonMetadata.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.progressEntities != null && Object.hasOwnProperty.call(message, "progressEntities")) + $root.google.datastore.admin.v1.Progress.encode(message.progressEntities, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.progressBytes != null && Object.hasOwnProperty.call(message, "progressBytes")) + $root.google.datastore.admin.v1.Progress.encode(message.progressBytes, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.entityFilter != null && Object.hasOwnProperty.call(message, "entityFilter")) + $root.google.datastore.admin.v1.EntityFilter.encode(message.entityFilter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.inputUrl != null && Object.hasOwnProperty.call(message, "inputUrl")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.inputUrl); + return writer; + }; - /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse - */ - BeginTransactionResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.BeginTransactionResponse) - return object; - var message = new $root.google.datastore.v1.BeginTransactionResponse(); - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) - message.transaction = object.transaction; - return message; - }; + /** + * Encodes the specified ImportEntitiesMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ImportEntitiesMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.IImportEntitiesMetadata} message ImportEntitiesMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImportEntitiesMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.BeginTransactionResponse} message BeginTransactionResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BeginTransactionResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.transaction = ""; - else { - object.transaction = []; - if (options.bytes !== Array) - object.transaction = $util.newBuffer(object.transaction); + /** + * Decodes an ImportEntitiesMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ImportEntitiesMetadata} ImportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImportEntitiesMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ImportEntitiesMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + case 3: + message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + case 4: + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + case 5: + message.inputUrl = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } } - if (message.transaction != null && message.hasOwnProperty("transaction")) - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - return object; - }; - - /** - * Converts this BeginTransactionResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.BeginTransactionResponse - * @instance - * @returns {Object.} JSON object - */ - BeginTransactionResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + return message; + }; - return BeginTransactionResponse; - })(); - - v1.RollbackRequest = (function() { + /** + * Decodes an ImportEntitiesMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ImportEntitiesMetadata} ImportEntitiesMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImportEntitiesMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Properties of a RollbackRequest. - * @memberof google.datastore.v1 - * @interface IRollbackRequest - * @property {string|null} [projectId] RollbackRequest projectId - * @property {Uint8Array|null} [transaction] RollbackRequest transaction - */ + /** + * Verifies an ImportEntitiesMetadata message. + * @function verify + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ImportEntitiesMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.datastore.admin.v1.CommonMetadata.verify(message.common); + if (error) + return "common." + error; + } + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) { + var error = $root.google.datastore.admin.v1.Progress.verify(message.progressEntities); + if (error) + return "progressEntities." + error; + } + if (message.progressBytes != null && message.hasOwnProperty("progressBytes")) { + var error = $root.google.datastore.admin.v1.Progress.verify(message.progressBytes); + if (error) + return "progressBytes." + error; + } + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) { + var error = $root.google.datastore.admin.v1.EntityFilter.verify(message.entityFilter); + if (error) + return "entityFilter." + error; + } + if (message.inputUrl != null && message.hasOwnProperty("inputUrl")) + if (!$util.isString(message.inputUrl)) + return "inputUrl: string expected"; + return null; + }; - /** - * Constructs a new RollbackRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a RollbackRequest. - * @implements IRollbackRequest - * @constructor - * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set - */ - function RollbackRequest(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Creates an ImportEntitiesMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ImportEntitiesMetadata} ImportEntitiesMetadata + */ + ImportEntitiesMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ImportEntitiesMetadata) + return object; + var message = new $root.google.datastore.admin.v1.ImportEntitiesMetadata(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesMetadata.common: object expected"); + message.common = $root.google.datastore.admin.v1.CommonMetadata.fromObject(object.common); + } + if (object.progressEntities != null) { + if (typeof object.progressEntities !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesMetadata.progressEntities: object expected"); + message.progressEntities = $root.google.datastore.admin.v1.Progress.fromObject(object.progressEntities); + } + if (object.progressBytes != null) { + if (typeof object.progressBytes !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesMetadata.progressBytes: object expected"); + message.progressBytes = $root.google.datastore.admin.v1.Progress.fromObject(object.progressBytes); + } + if (object.entityFilter != null) { + if (typeof object.entityFilter !== "object") + throw TypeError(".google.datastore.admin.v1.ImportEntitiesMetadata.entityFilter: object expected"); + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.fromObject(object.entityFilter); + } + if (object.inputUrl != null) + message.inputUrl = String(object.inputUrl); + return message; + }; - /** - * RollbackRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.RollbackRequest - * @instance - */ - RollbackRequest.prototype.projectId = ""; + /** + * Creates a plain object from an ImportEntitiesMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {google.datastore.admin.v1.ImportEntitiesMetadata} message ImportEntitiesMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ImportEntitiesMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.common = null; + object.progressEntities = null; + object.progressBytes = null; + object.entityFilter = null; + object.inputUrl = ""; + } + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.datastore.admin.v1.CommonMetadata.toObject(message.common, options); + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) + object.progressEntities = $root.google.datastore.admin.v1.Progress.toObject(message.progressEntities, options); + if (message.progressBytes != null && message.hasOwnProperty("progressBytes")) + object.progressBytes = $root.google.datastore.admin.v1.Progress.toObject(message.progressBytes, options); + if (message.entityFilter != null && message.hasOwnProperty("entityFilter")) + object.entityFilter = $root.google.datastore.admin.v1.EntityFilter.toObject(message.entityFilter, options); + if (message.inputUrl != null && message.hasOwnProperty("inputUrl")) + object.inputUrl = message.inputUrl; + return object; + }; - /** - * RollbackRequest transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.RollbackRequest - * @instance - */ - RollbackRequest.prototype.transaction = $util.newBuffer([]); + /** + * Converts this ImportEntitiesMetadata to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @instance + * @returns {Object.} JSON object + */ + ImportEntitiesMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Creates a new RollbackRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest instance - */ - RollbackRequest.create = function create(properties) { - return new RollbackRequest(properties); - }; + return ImportEntitiesMetadata; + })(); - /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RollbackRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - return writer; - }; + v1.EntityFilter = (function() { - /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RollbackRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Properties of an EntityFilter. + * @memberof google.datastore.admin.v1 + * @interface IEntityFilter + * @property {Array.|null} [kinds] EntityFilter kinds + * @property {Array.|null} [namespaceIds] EntityFilter namespaceIds + */ - /** - * Decodes a RollbackRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RollbackRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 1: - message.transaction = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new EntityFilter. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an EntityFilter. + * @implements IEntityFilter + * @constructor + * @param {google.datastore.admin.v1.IEntityFilter=} [properties] Properties to set + */ + function EntityFilter(properties) { + this.kinds = []; + this.namespaceIds = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RollbackRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * EntityFilter kinds. + * @member {Array.} kinds + * @memberof google.datastore.admin.v1.EntityFilter + * @instance + */ + EntityFilter.prototype.kinds = $util.emptyArray; - /** - * Verifies a RollbackRequest message. - * @function verify - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RollbackRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.transaction != null && message.hasOwnProperty("transaction")) - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; - return null; - }; + /** + * EntityFilter namespaceIds. + * @member {Array.} namespaceIds + * @memberof google.datastore.admin.v1.EntityFilter + * @instance + */ + EntityFilter.prototype.namespaceIds = $util.emptyArray; - /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest - */ - RollbackRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RollbackRequest) - return object; - var message = new $root.google.datastore.v1.RollbackRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) - message.transaction = object.transaction; - return message; - }; + /** + * Creates a new EntityFilter instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {google.datastore.admin.v1.IEntityFilter=} [properties] Properties to set + * @returns {google.datastore.admin.v1.EntityFilter} EntityFilter instance + */ + EntityFilter.create = function create(properties) { + return new EntityFilter(properties); + }; - /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {google.datastore.v1.RollbackRequest} message RollbackRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RollbackRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object.transaction = ""; - else { - object.transaction = []; - if (options.bytes !== Array) - object.transaction = $util.newBuffer(object.transaction); + /** + * Encodes the specified EntityFilter message. Does not implicitly {@link google.datastore.admin.v1.EntityFilter.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {google.datastore.admin.v1.IEntityFilter} message EntityFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kinds != null && message.kinds.length) + for (var i = 0; i < message.kinds.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kinds[i]); + if (message.namespaceIds != null && message.namespaceIds.length) + for (var i = 0; i < message.namespaceIds.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.namespaceIds[i]); + return writer; + }; + + /** + * Encodes the specified EntityFilter message, length delimited. Does not implicitly {@link google.datastore.admin.v1.EntityFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {google.datastore.admin.v1.IEntityFilter} message EntityFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EntityFilter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.EntityFilter} EntityFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.EntityFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.kinds && message.kinds.length)) + message.kinds = []; + message.kinds.push(reader.string()); + break; + case 2: + if (!(message.namespaceIds && message.namespaceIds.length)) + message.namespaceIds = []; + message.namespaceIds.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } } - object.projectId = ""; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - return object; - }; + return message; + }; - /** - * Converts this RollbackRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.RollbackRequest - * @instance - * @returns {Object.} JSON object - */ - RollbackRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Decodes an EntityFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.EntityFilter} EntityFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - return RollbackRequest; - })(); + /** + * Verifies an EntityFilter message. + * @function verify + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EntityFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.kinds != null && message.hasOwnProperty("kinds")) { + if (!Array.isArray(message.kinds)) + return "kinds: array expected"; + for (var i = 0; i < message.kinds.length; ++i) + if (!$util.isString(message.kinds[i])) + return "kinds: string[] expected"; + } + if (message.namespaceIds != null && message.hasOwnProperty("namespaceIds")) { + if (!Array.isArray(message.namespaceIds)) + return "namespaceIds: array expected"; + for (var i = 0; i < message.namespaceIds.length; ++i) + if (!$util.isString(message.namespaceIds[i])) + return "namespaceIds: string[] expected"; + } + return null; + }; - v1.RollbackResponse = (function() { + /** + * Creates an EntityFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.EntityFilter} EntityFilter + */ + EntityFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.EntityFilter) + return object; + var message = new $root.google.datastore.admin.v1.EntityFilter(); + if (object.kinds) { + if (!Array.isArray(object.kinds)) + throw TypeError(".google.datastore.admin.v1.EntityFilter.kinds: array expected"); + message.kinds = []; + for (var i = 0; i < object.kinds.length; ++i) + message.kinds[i] = String(object.kinds[i]); + } + if (object.namespaceIds) { + if (!Array.isArray(object.namespaceIds)) + throw TypeError(".google.datastore.admin.v1.EntityFilter.namespaceIds: array expected"); + message.namespaceIds = []; + for (var i = 0; i < object.namespaceIds.length; ++i) + message.namespaceIds[i] = String(object.namespaceIds[i]); + } + return message; + }; - /** - * Properties of a RollbackResponse. - * @memberof google.datastore.v1 - * @interface IRollbackResponse - */ + /** + * Creates a plain object from an EntityFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {google.datastore.admin.v1.EntityFilter} message EntityFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EntityFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.kinds = []; + object.namespaceIds = []; + } + if (message.kinds && message.kinds.length) { + object.kinds = []; + for (var j = 0; j < message.kinds.length; ++j) + object.kinds[j] = message.kinds[j]; + } + if (message.namespaceIds && message.namespaceIds.length) { + object.namespaceIds = []; + for (var j = 0; j < message.namespaceIds.length; ++j) + object.namespaceIds[j] = message.namespaceIds[j]; + } + return object; + }; - /** - * Constructs a new RollbackResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a RollbackResponse. - * @implements IRollbackResponse - * @constructor - * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set - */ - function RollbackResponse(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Converts this EntityFilter to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.EntityFilter + * @instance + * @returns {Object.} JSON object + */ + EntityFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Creates a new RollbackResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse instance - */ - RollbackResponse.create = function create(properties) { - return new RollbackResponse(properties); - }; + return EntityFilter; + })(); - /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RollbackResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; + v1.GetIndexRequest = (function() { - /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RollbackResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Properties of a GetIndexRequest. + * @memberof google.datastore.admin.v1 + * @interface IGetIndexRequest + * @property {string|null} [projectId] GetIndexRequest projectId + * @property {string|null} [indexId] GetIndexRequest indexId + */ - /** - * Decodes a RollbackResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RollbackResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new GetIndexRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a GetIndexRequest. + * @implements IGetIndexRequest + * @constructor + * @param {google.datastore.admin.v1.IGetIndexRequest=} [properties] Properties to set + */ + function GetIndexRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RollbackResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * GetIndexRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.GetIndexRequest + * @instance + */ + GetIndexRequest.prototype.projectId = ""; - /** - * Verifies a RollbackResponse message. - * @function verify - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RollbackResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; + /** + * GetIndexRequest indexId. + * @member {string} indexId + * @memberof google.datastore.admin.v1.GetIndexRequest + * @instance + */ + GetIndexRequest.prototype.indexId = ""; - /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse - */ - RollbackResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RollbackResponse) - return object; - return new $root.google.datastore.v1.RollbackResponse(); - }; - - /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.RollbackResponse - * @static - * @param {google.datastore.v1.RollbackResponse} message RollbackResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RollbackResponse.toObject = function toObject() { - return {}; - }; + /** + * Creates a new GetIndexRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {google.datastore.admin.v1.IGetIndexRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.GetIndexRequest} GetIndexRequest instance + */ + GetIndexRequest.create = function create(properties) { + return new GetIndexRequest(properties); + }; - /** - * Converts this RollbackResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.RollbackResponse - * @instance - * @returns {Object.} JSON object - */ - RollbackResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Encodes the specified GetIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.GetIndexRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {google.datastore.admin.v1.IGetIndexRequest} message GetIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetIndexRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.indexId != null && Object.hasOwnProperty.call(message, "indexId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.indexId); + return writer; + }; - return RollbackResponse; - })(); + /** + * Encodes the specified GetIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.GetIndexRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {google.datastore.admin.v1.IGetIndexRequest} message GetIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GetIndexRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - v1.CommitRequest = (function() { + /** + * Decodes a GetIndexRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.GetIndexRequest} GetIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetIndexRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.GetIndexRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 3: + message.indexId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Properties of a CommitRequest. - * @memberof google.datastore.v1 - * @interface ICommitRequest - * @property {string|null} [projectId] CommitRequest projectId - * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode - * @property {Uint8Array|null} [transaction] CommitRequest transaction - * @property {Array.|null} [mutations] CommitRequest mutations - */ + /** + * Decodes a GetIndexRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.GetIndexRequest} GetIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GetIndexRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Constructs a new CommitRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a CommitRequest. - * @implements ICommitRequest - * @constructor - * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set - */ - function CommitRequest(properties) { - this.mutations = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Verifies a GetIndexRequest message. + * @function verify + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GetIndexRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.indexId != null && message.hasOwnProperty("indexId")) + if (!$util.isString(message.indexId)) + return "indexId: string expected"; + return null; + }; - /** - * CommitRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.projectId = ""; + /** + * Creates a GetIndexRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.GetIndexRequest} GetIndexRequest + */ + GetIndexRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.GetIndexRequest) + return object; + var message = new $root.google.datastore.admin.v1.GetIndexRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.indexId != null) + message.indexId = String(object.indexId); + return message; + }; - /** - * CommitRequest mode. - * @member {google.datastore.v1.CommitRequest.Mode} mode - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.mode = 0; + /** + * Creates a plain object from a GetIndexRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {google.datastore.admin.v1.GetIndexRequest} message GetIndexRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GetIndexRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.indexId = ""; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.indexId != null && message.hasOwnProperty("indexId")) + object.indexId = message.indexId; + return object; + }; - /** - * CommitRequest transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.transaction = $util.newBuffer([]); + /** + * Converts this GetIndexRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.GetIndexRequest + * @instance + * @returns {Object.} JSON object + */ + GetIndexRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * CommitRequest mutations. - * @member {Array.} mutations - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.mutations = $util.emptyArray; + return GetIndexRequest; + })(); - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + v1.ListIndexesRequest = (function() { - /** - * CommitRequest transactionSelector. - * @member {"transaction"|undefined} transactionSelector - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - Object.defineProperty(CommitRequest.prototype, "transactionSelector", { - get: $util.oneOfGetter($oneOfFields = ["transaction"]), - set: $util.oneOfSetter($oneOfFields) - }); + /** + * Properties of a ListIndexesRequest. + * @memberof google.datastore.admin.v1 + * @interface IListIndexesRequest + * @property {string|null} [projectId] ListIndexesRequest projectId + * @property {string|null} [filter] ListIndexesRequest filter + * @property {number|null} [pageSize] ListIndexesRequest pageSize + * @property {string|null} [pageToken] ListIndexesRequest pageToken + */ - /** - * Creates a new CommitRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set - * @returns {google.datastore.v1.CommitRequest} CommitRequest instance - */ - CommitRequest.create = function create(properties) { - return new CommitRequest(properties); - }; + /** + * Constructs a new ListIndexesRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a ListIndexesRequest. + * @implements IListIndexesRequest + * @constructor + * @param {google.datastore.admin.v1.IListIndexesRequest=} [properties] Properties to set + */ + function ListIndexesRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); - if (message.mutations != null && message.mutations.length) - for (var i = 0; i < message.mutations.length; ++i) - $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - return writer; - }; + /** + * ListIndexesRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @instance + */ + ListIndexesRequest.prototype.projectId = ""; - /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * ListIndexesRequest filter. + * @member {string} filter + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @instance + */ + ListIndexesRequest.prototype.filter = ""; - /** - * Decodes a CommitRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CommitRequest} CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 5: - message.mode = reader.int32(); - break; - case 1: - message.transaction = reader.bytes(); - break; - case 6: - if (!(message.mutations && message.mutations.length)) - message.mutations = []; - message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CommitRequest} CommitRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * ListIndexesRequest pageSize. + * @member {number} pageSize + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @instance + */ + ListIndexesRequest.prototype.pageSize = 0; - /** - * Verifies a CommitRequest message. - * @function verify - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CommitRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.mode != null && message.hasOwnProperty("mode")) - switch (message.mode) { - default: - return "mode: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - properties.transactionSelector = 1; - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; - } - if (message.mutations != null && message.hasOwnProperty("mutations")) { - if (!Array.isArray(message.mutations)) - return "mutations: array expected"; - for (var i = 0; i < message.mutations.length; ++i) { - var error = $root.google.datastore.v1.Mutation.verify(message.mutations[i]); - if (error) - return "mutations." + error; - } - } - return null; - }; + /** + * ListIndexesRequest pageToken. + * @member {string} pageToken + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @instance + */ + ListIndexesRequest.prototype.pageToken = ""; - /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.CommitRequest} CommitRequest - */ - CommitRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CommitRequest) - return object; - var message = new $root.google.datastore.v1.CommitRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - switch (object.mode) { - case "MODE_UNSPECIFIED": - case 0: - message.mode = 0; - break; - case "TRANSACTIONAL": - case 1: - message.mode = 1; - break; - case "NON_TRANSACTIONAL": - case 2: - message.mode = 2; - break; - } - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) - message.transaction = object.transaction; - if (object.mutations) { - if (!Array.isArray(object.mutations)) - throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); - message.mutations = []; - for (var i = 0; i < object.mutations.length; ++i) { - if (typeof object.mutations[i] !== "object") - throw TypeError(".google.datastore.v1.CommitRequest.mutations: object expected"); - message.mutations[i] = $root.google.datastore.v1.Mutation.fromObject(object.mutations[i]); - } - } - return message; - }; + /** + * Creates a new ListIndexesRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {google.datastore.admin.v1.IListIndexesRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ListIndexesRequest} ListIndexesRequest instance + */ + ListIndexesRequest.create = function create(properties) { + return new ListIndexesRequest(properties); + }; - /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.CommitRequest - * @static - * @param {google.datastore.v1.CommitRequest} message CommitRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CommitRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.mutations = []; - if (options.defaults) { - object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; - object.projectId = ""; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (options.oneofs) - object.transactionSelector = "transaction"; - } - if (message.mode != null && message.hasOwnProperty("mode")) - object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; - if (message.mutations && message.mutations.length) { - object.mutations = []; - for (var j = 0; j < message.mutations.length; ++j) - object.mutations[j] = $root.google.datastore.v1.Mutation.toObject(message.mutations[j], options); - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - return object; - }; + /** + * Encodes the specified ListIndexesRequest message. Does not implicitly {@link google.datastore.admin.v1.ListIndexesRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {google.datastore.admin.v1.IListIndexesRequest} message ListIndexesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListIndexesRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.filter); + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.pageSize); + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.pageToken); + return writer; + }; - /** - * Converts this CommitRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.CommitRequest - * @instance - * @returns {Object.} JSON object - */ - CommitRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Encodes the specified ListIndexesRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ListIndexesRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {google.datastore.admin.v1.IListIndexesRequest} message ListIndexesRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListIndexesRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Mode enum. - * @name google.datastore.v1.CommitRequest.Mode - * @enum {number} - * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value - * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value - * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value - */ - CommitRequest.Mode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "MODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "TRANSACTIONAL"] = 1; - values[valuesById[2] = "NON_TRANSACTIONAL"] = 2; - return values; - })(); + /** + * Decodes a ListIndexesRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ListIndexesRequest} ListIndexesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListIndexesRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ListIndexesRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 3: + message.filter = reader.string(); + break; + case 4: + message.pageSize = reader.int32(); + break; + case 5: + message.pageToken = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - return CommitRequest; - })(); - - v1.CommitResponse = (function() { + /** + * Decodes a ListIndexesRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ListIndexesRequest} ListIndexesRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListIndexesRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Properties of a CommitResponse. - * @memberof google.datastore.v1 - * @interface ICommitResponse - * @property {Array.|null} [mutationResults] CommitResponse mutationResults - * @property {number|null} [indexUpdates] CommitResponse indexUpdates - */ + /** + * Verifies a ListIndexesRequest message. + * @function verify + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ListIndexesRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.filter != null && message.hasOwnProperty("filter")) + if (!$util.isString(message.filter)) + return "filter: string expected"; + if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (!$util.isInteger(message.pageSize)) + return "pageSize: integer expected"; + if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (!$util.isString(message.pageToken)) + return "pageToken: string expected"; + return null; + }; - /** - * Constructs a new CommitResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a CommitResponse. - * @implements ICommitResponse - * @constructor - * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set - */ - function CommitResponse(properties) { - this.mutationResults = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Creates a ListIndexesRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ListIndexesRequest} ListIndexesRequest + */ + ListIndexesRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ListIndexesRequest) + return object; + var message = new $root.google.datastore.admin.v1.ListIndexesRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.filter != null) + message.filter = String(object.filter); + if (object.pageSize != null) + message.pageSize = object.pageSize | 0; + if (object.pageToken != null) + message.pageToken = String(object.pageToken); + return message; + }; - /** - * CommitResponse mutationResults. - * @member {Array.} mutationResults - * @memberof google.datastore.v1.CommitResponse - * @instance - */ - CommitResponse.prototype.mutationResults = $util.emptyArray; + /** + * Creates a plain object from a ListIndexesRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {google.datastore.admin.v1.ListIndexesRequest} message ListIndexesRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ListIndexesRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.filter = ""; + object.pageSize = 0; + object.pageToken = ""; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = message.filter; + if (message.pageSize != null && message.hasOwnProperty("pageSize")) + object.pageSize = message.pageSize; + if (message.pageToken != null && message.hasOwnProperty("pageToken")) + object.pageToken = message.pageToken; + return object; + }; - /** - * CommitResponse indexUpdates. - * @member {number} indexUpdates - * @memberof google.datastore.v1.CommitResponse - * @instance - */ - CommitResponse.prototype.indexUpdates = 0; + /** + * Converts this ListIndexesRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @instance + * @returns {Object.} JSON object + */ + ListIndexesRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Creates a new CommitResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set - * @returns {google.datastore.v1.CommitResponse} CommitResponse instance - */ - CommitResponse.create = function create(properties) { - return new CommitResponse(properties); - }; + return ListIndexesRequest; + })(); - /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.mutationResults != null && message.mutationResults.length) - for (var i = 0; i < message.mutationResults.length; ++i) - $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); - return writer; - }; + v1.ListIndexesResponse = (function() { - /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Properties of a ListIndexesResponse. + * @memberof google.datastore.admin.v1 + * @interface IListIndexesResponse + * @property {Array.|null} [indexes] ListIndexesResponse indexes + * @property {string|null} [nextPageToken] ListIndexesResponse nextPageToken + */ - /** - * Decodes a CommitResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CommitResponse} CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 3: - if (!(message.mutationResults && message.mutationResults.length)) - message.mutationResults = []; - message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); - break; - case 4: - message.indexUpdates = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new ListIndexesResponse. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a ListIndexesResponse. + * @implements IListIndexesResponse + * @constructor + * @param {google.datastore.admin.v1.IListIndexesResponse=} [properties] Properties to set + */ + function ListIndexesResponse(properties) { + this.indexes = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CommitResponse} CommitResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * ListIndexesResponse indexes. + * @member {Array.} indexes + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @instance + */ + ListIndexesResponse.prototype.indexes = $util.emptyArray; - /** - * Verifies a CommitResponse message. - * @function verify - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CommitResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.mutationResults != null && message.hasOwnProperty("mutationResults")) { - if (!Array.isArray(message.mutationResults)) - return "mutationResults: array expected"; - for (var i = 0; i < message.mutationResults.length; ++i) { - var error = $root.google.datastore.v1.MutationResult.verify(message.mutationResults[i]); - if (error) - return "mutationResults." + error; - } - } - if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) - if (!$util.isInteger(message.indexUpdates)) - return "indexUpdates: integer expected"; - return null; - }; + /** + * ListIndexesResponse nextPageToken. + * @member {string} nextPageToken + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @instance + */ + ListIndexesResponse.prototype.nextPageToken = ""; - /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.CommitResponse} CommitResponse - */ - CommitResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CommitResponse) - return object; - var message = new $root.google.datastore.v1.CommitResponse(); - if (object.mutationResults) { - if (!Array.isArray(object.mutationResults)) - throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: array expected"); - message.mutationResults = []; - for (var i = 0; i < object.mutationResults.length; ++i) { - if (typeof object.mutationResults[i] !== "object") - throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: object expected"); - message.mutationResults[i] = $root.google.datastore.v1.MutationResult.fromObject(object.mutationResults[i]); - } - } - if (object.indexUpdates != null) - message.indexUpdates = object.indexUpdates | 0; - return message; - }; + /** + * Creates a new ListIndexesResponse instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {google.datastore.admin.v1.IListIndexesResponse=} [properties] Properties to set + * @returns {google.datastore.admin.v1.ListIndexesResponse} ListIndexesResponse instance + */ + ListIndexesResponse.create = function create(properties) { + return new ListIndexesResponse(properties); + }; - /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.CommitResponse} message CommitResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CommitResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.mutationResults = []; - if (options.defaults) - object.indexUpdates = 0; - if (message.mutationResults && message.mutationResults.length) { - object.mutationResults = []; - for (var j = 0; j < message.mutationResults.length; ++j) - object.mutationResults[j] = $root.google.datastore.v1.MutationResult.toObject(message.mutationResults[j], options); - } - if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) - object.indexUpdates = message.indexUpdates; - return object; - }; + /** + * Encodes the specified ListIndexesResponse message. Does not implicitly {@link google.datastore.admin.v1.ListIndexesResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {google.datastore.admin.v1.IListIndexesResponse} message ListIndexesResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListIndexesResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.indexes != null && message.indexes.length) + for (var i = 0; i < message.indexes.length; ++i) + $root.google.datastore.admin.v1.Index.encode(message.indexes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); + return writer; + }; - /** - * Converts this CommitResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.CommitResponse - * @instance - * @returns {Object.} JSON object - */ - CommitResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Encodes the specified ListIndexesResponse message, length delimited. Does not implicitly {@link google.datastore.admin.v1.ListIndexesResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {google.datastore.admin.v1.IListIndexesResponse} message ListIndexesResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ListIndexesResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - return CommitResponse; - })(); + /** + * Decodes a ListIndexesResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.ListIndexesResponse} ListIndexesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListIndexesResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ListIndexesResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.indexes && message.indexes.length)) + message.indexes = []; + message.indexes.push($root.google.datastore.admin.v1.Index.decode(reader, reader.uint32())); + break; + case 2: + message.nextPageToken = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - v1.AllocateIdsRequest = (function() { + /** + * Decodes a ListIndexesResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.ListIndexesResponse} ListIndexesResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ListIndexesResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Properties of an AllocateIdsRequest. - * @memberof google.datastore.v1 - * @interface IAllocateIdsRequest - * @property {string|null} [projectId] AllocateIdsRequest projectId - * @property {Array.|null} [keys] AllocateIdsRequest keys - */ + /** + * Verifies a ListIndexesResponse message. + * @function verify + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ListIndexesResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.indexes != null && message.hasOwnProperty("indexes")) { + if (!Array.isArray(message.indexes)) + return "indexes: array expected"; + for (var i = 0; i < message.indexes.length; ++i) { + var error = $root.google.datastore.admin.v1.Index.verify(message.indexes[i]); + if (error) + return "indexes." + error; + } + } + if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (!$util.isString(message.nextPageToken)) + return "nextPageToken: string expected"; + return null; + }; - /** - * Constructs a new AllocateIdsRequest. - * @memberof google.datastore.v1 - * @classdesc Represents an AllocateIdsRequest. - * @implements IAllocateIdsRequest - * @constructor - * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set - */ - function AllocateIdsRequest(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Creates a ListIndexesResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.ListIndexesResponse} ListIndexesResponse + */ + ListIndexesResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.ListIndexesResponse) + return object; + var message = new $root.google.datastore.admin.v1.ListIndexesResponse(); + if (object.indexes) { + if (!Array.isArray(object.indexes)) + throw TypeError(".google.datastore.admin.v1.ListIndexesResponse.indexes: array expected"); + message.indexes = []; + for (var i = 0; i < object.indexes.length; ++i) { + if (typeof object.indexes[i] !== "object") + throw TypeError(".google.datastore.admin.v1.ListIndexesResponse.indexes: object expected"); + message.indexes[i] = $root.google.datastore.admin.v1.Index.fromObject(object.indexes[i]); + } + } + if (object.nextPageToken != null) + message.nextPageToken = String(object.nextPageToken); + return message; + }; - /** - * AllocateIdsRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.AllocateIdsRequest - * @instance - */ - AllocateIdsRequest.prototype.projectId = ""; + /** + * Creates a plain object from a ListIndexesResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {google.datastore.admin.v1.ListIndexesResponse} message ListIndexesResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ListIndexesResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.indexes = []; + if (options.defaults) + object.nextPageToken = ""; + if (message.indexes && message.indexes.length) { + object.indexes = []; + for (var j = 0; j < message.indexes.length; ++j) + object.indexes[j] = $root.google.datastore.admin.v1.Index.toObject(message.indexes[j], options); + } + if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + object.nextPageToken = message.nextPageToken; + return object; + }; - /** - * AllocateIdsRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.AllocateIdsRequest - * @instance - */ - AllocateIdsRequest.prototype.keys = $util.emptyArray; + /** + * Converts this ListIndexesResponse to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @instance + * @returns {Object.} JSON object + */ + ListIndexesResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Creates a new AllocateIdsRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest instance - */ - AllocateIdsRequest.create = function create(properties) { - return new AllocateIdsRequest(properties); - }; + return ListIndexesResponse; + })(); - /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - return writer; - }; + v1.IndexOperationMetadata = (function() { - /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Properties of an IndexOperationMetadata. + * @memberof google.datastore.admin.v1 + * @interface IIndexOperationMetadata + * @property {google.datastore.admin.v1.ICommonMetadata|null} [common] IndexOperationMetadata common + * @property {google.datastore.admin.v1.IProgress|null} [progressEntities] IndexOperationMetadata progressEntities + * @property {string|null} [indexId] IndexOperationMetadata indexId + */ - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new IndexOperationMetadata. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an IndexOperationMetadata. + * @implements IIndexOperationMetadata + * @constructor + * @param {google.datastore.admin.v1.IIndexOperationMetadata=} [properties] Properties to set + */ + function IndexOperationMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * IndexOperationMetadata common. + * @member {google.datastore.admin.v1.ICommonMetadata|null|undefined} common + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @instance + */ + IndexOperationMetadata.prototype.common = null; - /** - * Verifies an AllocateIdsRequest message. - * @function verify - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - AllocateIdsRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + /** + * IndexOperationMetadata progressEntities. + * @member {google.datastore.admin.v1.IProgress|null|undefined} progressEntities + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @instance + */ + IndexOperationMetadata.prototype.progressEntities = null; + + /** + * IndexOperationMetadata indexId. + * @member {string} indexId + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @instance + */ + IndexOperationMetadata.prototype.indexId = ""; + + /** + * Creates a new IndexOperationMetadata instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {google.datastore.admin.v1.IIndexOperationMetadata=} [properties] Properties to set + * @returns {google.datastore.admin.v1.IndexOperationMetadata} IndexOperationMetadata instance + */ + IndexOperationMetadata.create = function create(properties) { + return new IndexOperationMetadata(properties); + }; + + /** + * Encodes the specified IndexOperationMetadata message. Does not implicitly {@link google.datastore.admin.v1.IndexOperationMetadata.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {google.datastore.admin.v1.IIndexOperationMetadata} message IndexOperationMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IndexOperationMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.datastore.admin.v1.CommonMetadata.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.progressEntities != null && Object.hasOwnProperty.call(message, "progressEntities")) + $root.google.datastore.admin.v1.Progress.encode(message.progressEntities, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.indexId != null && Object.hasOwnProperty.call(message, "indexId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.indexId); + return writer; + }; + + /** + * Encodes the specified IndexOperationMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.IndexOperationMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {google.datastore.admin.v1.IIndexOperationMetadata} message IndexOperationMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IndexOperationMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an IndexOperationMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.IndexOperationMetadata} IndexOperationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IndexOperationMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.IndexOperationMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + case 3: + message.indexId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an IndexOperationMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.IndexOperationMetadata} IndexOperationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IndexOperationMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an IndexOperationMetadata message. + * @function verify + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + IndexOperationMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.datastore.admin.v1.CommonMetadata.verify(message.common); if (error) - return "keys." + error; + return "common." + error; } - } - return null; - }; + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) { + var error = $root.google.datastore.admin.v1.Progress.verify(message.progressEntities); + if (error) + return "progressEntities." + error; + } + if (message.indexId != null && message.hasOwnProperty("indexId")) + if (!$util.isString(message.indexId)) + return "indexId: string expected"; + return null; + }; - /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest - */ - AllocateIdsRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.AllocateIdsRequest) - return object; - var message = new $root.google.datastore.v1.AllocateIdsRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + /** + * Creates an IndexOperationMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.IndexOperationMetadata} IndexOperationMetadata + */ + IndexOperationMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.IndexOperationMetadata) + return object; + var message = new $root.google.datastore.admin.v1.IndexOperationMetadata(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.datastore.admin.v1.IndexOperationMetadata.common: object expected"); + message.common = $root.google.datastore.admin.v1.CommonMetadata.fromObject(object.common); } - } - return message; - }; + if (object.progressEntities != null) { + if (typeof object.progressEntities !== "object") + throw TypeError(".google.datastore.admin.v1.IndexOperationMetadata.progressEntities: object expected"); + message.progressEntities = $root.google.datastore.admin.v1.Progress.fromObject(object.progressEntities); + } + if (object.indexId != null) + message.indexId = String(object.indexId); + return message; + }; - /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.AllocateIdsRequest - * @static - * @param {google.datastore.v1.AllocateIdsRequest} message AllocateIdsRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - AllocateIdsRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (options.defaults) - object.projectId = ""; - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - return object; - }; + /** + * Creates a plain object from an IndexOperationMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {google.datastore.admin.v1.IndexOperationMetadata} message IndexOperationMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + IndexOperationMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.common = null; + object.progressEntities = null; + object.indexId = ""; + } + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.datastore.admin.v1.CommonMetadata.toObject(message.common, options); + if (message.progressEntities != null && message.hasOwnProperty("progressEntities")) + object.progressEntities = $root.google.datastore.admin.v1.Progress.toObject(message.progressEntities, options); + if (message.indexId != null && message.hasOwnProperty("indexId")) + object.indexId = message.indexId; + return object; + }; - /** - * Converts this AllocateIdsRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.AllocateIdsRequest - * @instance - * @returns {Object.} JSON object - */ - AllocateIdsRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this IndexOperationMetadata to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @instance + * @returns {Object.} JSON object + */ + IndexOperationMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return AllocateIdsRequest; - })(); + return IndexOperationMetadata; + })(); - v1.AllocateIdsResponse = (function() { + v1.Index = (function() { - /** - * Properties of an AllocateIdsResponse. - * @memberof google.datastore.v1 - * @interface IAllocateIdsResponse - * @property {Array.|null} [keys] AllocateIdsResponse keys - */ + /** + * Properties of an Index. + * @memberof google.datastore.admin.v1 + * @interface IIndex + * @property {string|null} [projectId] Index projectId + * @property {string|null} [indexId] Index indexId + * @property {string|null} [kind] Index kind + * @property {google.datastore.admin.v1.Index.AncestorMode|null} [ancestor] Index ancestor + * @property {Array.|null} [properties] Index properties + * @property {google.datastore.admin.v1.Index.State|null} [state] Index state + */ - /** - * Constructs a new AllocateIdsResponse. - * @memberof google.datastore.v1 - * @classdesc Represents an AllocateIdsResponse. - * @implements IAllocateIdsResponse - * @constructor - * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set - */ - function AllocateIdsResponse(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new Index. + * @memberof google.datastore.admin.v1 + * @classdesc Represents an Index. + * @implements IIndex + * @constructor + * @param {google.datastore.admin.v1.IIndex=} [properties] Properties to set + */ + function Index(properties) { + this.properties = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * AllocateIdsResponse keys. - * @member {Array.} keys - * @memberof google.datastore.v1.AllocateIdsResponse - * @instance - */ - AllocateIdsResponse.prototype.keys = $util.emptyArray; + /** + * Index projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.projectId = ""; - /** - * Creates a new AllocateIdsResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse instance - */ - AllocateIdsResponse.create = function create(properties) { - return new AllocateIdsResponse(properties); - }; - - /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Index indexId. + * @member {string} indexId + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.indexId = ""; - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Index kind. + * @member {string} kind + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.kind = ""; - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Index ancestor. + * @member {google.datastore.admin.v1.Index.AncestorMode} ancestor + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.ancestor = 0; - /** - * Verifies an AllocateIdsResponse message. - * @function verify - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - AllocateIdsResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); - if (error) - return "keys." + error; - } - } - return null; - }; + /** + * Index properties. + * @member {Array.} properties + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.properties = $util.emptyArray; - /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - */ - AllocateIdsResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.AllocateIdsResponse) - return object; - var message = new $root.google.datastore.v1.AllocateIdsResponse(); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); - } - } - return message; - }; + /** + * Index state. + * @member {google.datastore.admin.v1.Index.State} state + * @memberof google.datastore.admin.v1.Index + * @instance + */ + Index.prototype.state = 0; - /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.AllocateIdsResponse} message AllocateIdsResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - AllocateIdsResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - return object; - }; + /** + * Creates a new Index instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.Index + * @static + * @param {google.datastore.admin.v1.IIndex=} [properties] Properties to set + * @returns {google.datastore.admin.v1.Index} Index instance + */ + Index.create = function create(properties) { + return new Index(properties); + }; - /** - * Converts this AllocateIdsResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.AllocateIdsResponse - * @instance - * @returns {Object.} JSON object - */ - AllocateIdsResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Encodes the specified Index message. Does not implicitly {@link google.datastore.admin.v1.Index.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.Index + * @static + * @param {google.datastore.admin.v1.IIndex} message Index message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Index.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.indexId != null && Object.hasOwnProperty.call(message, "indexId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.indexId); + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.kind); + if (message.ancestor != null && Object.hasOwnProperty.call(message, "ancestor")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.ancestor); + if (message.properties != null && message.properties.length) + for (var i = 0; i < message.properties.length; ++i) + $root.google.datastore.admin.v1.Index.IndexedProperty.encode(message.properties[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.state != null && Object.hasOwnProperty.call(message, "state")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.state); + return writer; + }; - return AllocateIdsResponse; - })(); + /** + * Encodes the specified Index message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Index.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.Index + * @static + * @param {google.datastore.admin.v1.IIndex} message Index message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Index.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - v1.ReserveIdsRequest = (function() { + /** + * Decodes an Index message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.Index + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.Index} Index + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Index.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.Index(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 3: + message.indexId = reader.string(); + break; + case 4: + message.kind = reader.string(); + break; + case 5: + message.ancestor = reader.int32(); + break; + case 6: + if (!(message.properties && message.properties.length)) + message.properties = []; + message.properties.push($root.google.datastore.admin.v1.Index.IndexedProperty.decode(reader, reader.uint32())); + break; + case 7: + message.state = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Properties of a ReserveIdsRequest. - * @memberof google.datastore.v1 - * @interface IReserveIdsRequest - * @property {string|null} [projectId] ReserveIdsRequest projectId - * @property {string|null} [databaseId] ReserveIdsRequest databaseId - * @property {Array.|null} [keys] ReserveIdsRequest keys - */ + /** + * Decodes an Index message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.Index + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.Index} Index + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Index.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Constructs a new ReserveIdsRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a ReserveIdsRequest. - * @implements IReserveIdsRequest - * @constructor - * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + /** + * Verifies an Index message. + * @function verify + * @memberof google.datastore.admin.v1.Index + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Index.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.indexId != null && message.hasOwnProperty("indexId")) + if (!$util.isString(message.indexId)) + return "indexId: string expected"; + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.ancestor != null && message.hasOwnProperty("ancestor")) + switch (message.ancestor) { + default: + return "ancestor: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.properties != null && message.hasOwnProperty("properties")) { + if (!Array.isArray(message.properties)) + return "properties: array expected"; + for (var i = 0; i < message.properties.length; ++i) { + var error = $root.google.datastore.admin.v1.Index.IndexedProperty.verify(message.properties[i]); + if (error) + return "properties." + error; + } + } + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + return null; + }; + + /** + * Creates an Index message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.Index + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.Index} Index + */ + Index.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.Index) + return object; + var message = new $root.google.datastore.admin.v1.Index(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.indexId != null) + message.indexId = String(object.indexId); + if (object.kind != null) + message.kind = String(object.kind); + switch (object.ancestor) { + case "ANCESTOR_MODE_UNSPECIFIED": + case 0: + message.ancestor = 0; + break; + case "NONE": + case 1: + message.ancestor = 1; + break; + case "ALL_ANCESTORS": + case 2: + message.ancestor = 2; + break; + } + if (object.properties) { + if (!Array.isArray(object.properties)) + throw TypeError(".google.datastore.admin.v1.Index.properties: array expected"); + message.properties = []; + for (var i = 0; i < object.properties.length; ++i) { + if (typeof object.properties[i] !== "object") + throw TypeError(".google.datastore.admin.v1.Index.properties: object expected"); + message.properties[i] = $root.google.datastore.admin.v1.Index.IndexedProperty.fromObject(object.properties[i]); + } + } + switch (object.state) { + case "STATE_UNSPECIFIED": + case 0: + message.state = 0; + break; + case "CREATING": + case 1: + message.state = 1; + break; + case "READY": + case 2: + message.state = 2; + break; + case "DELETING": + case 3: + message.state = 3; + break; + case "ERROR": + case 4: + message.state = 4; + break; + } + return message; + }; + + /** + * Creates a plain object from an Index message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.Index + * @static + * @param {google.datastore.admin.v1.Index} message Index + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Index.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.properties = []; + if (options.defaults) { + object.projectId = ""; + object.indexId = ""; + object.kind = ""; + object.ancestor = options.enums === String ? "ANCESTOR_MODE_UNSPECIFIED" : 0; + object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.indexId != null && message.hasOwnProperty("indexId")) + object.indexId = message.indexId; + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.ancestor != null && message.hasOwnProperty("ancestor")) + object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor; + if (message.properties && message.properties.length) { + object.properties = []; + for (var j = 0; j < message.properties.length; ++j) + object.properties[j] = $root.google.datastore.admin.v1.Index.IndexedProperty.toObject(message.properties[j], options); + } + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] : message.state; + return object; + }; + + /** + * Converts this Index to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.Index + * @instance + * @returns {Object.} JSON object + */ + Index.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Index.IndexedProperty = (function() { + + /** + * Properties of an IndexedProperty. + * @memberof google.datastore.admin.v1.Index + * @interface IIndexedProperty + * @property {string|null} [name] IndexedProperty name + * @property {google.datastore.admin.v1.Index.Direction|null} [direction] IndexedProperty direction + */ + + /** + * Constructs a new IndexedProperty. + * @memberof google.datastore.admin.v1.Index + * @classdesc Represents an IndexedProperty. + * @implements IIndexedProperty + * @constructor + * @param {google.datastore.admin.v1.Index.IIndexedProperty=} [properties] Properties to set + */ + function IndexedProperty(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * IndexedProperty name. + * @member {string} name + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @instance + */ + IndexedProperty.prototype.name = ""; + + /** + * IndexedProperty direction. + * @member {google.datastore.admin.v1.Index.Direction} direction + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @instance + */ + IndexedProperty.prototype.direction = 0; + + /** + * Creates a new IndexedProperty instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {google.datastore.admin.v1.Index.IIndexedProperty=} [properties] Properties to set + * @returns {google.datastore.admin.v1.Index.IndexedProperty} IndexedProperty instance + */ + IndexedProperty.create = function create(properties) { + return new IndexedProperty(properties); + }; + + /** + * Encodes the specified IndexedProperty message. Does not implicitly {@link google.datastore.admin.v1.Index.IndexedProperty.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {google.datastore.admin.v1.Index.IIndexedProperty} message IndexedProperty message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IndexedProperty.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); + return writer; + }; + + /** + * Encodes the specified IndexedProperty message, length delimited. Does not implicitly {@link google.datastore.admin.v1.Index.IndexedProperty.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {google.datastore.admin.v1.Index.IIndexedProperty} message IndexedProperty message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IndexedProperty.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an IndexedProperty message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.Index.IndexedProperty} IndexedProperty + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IndexedProperty.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.Index.IndexedProperty(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.direction = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an IndexedProperty message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.Index.IndexedProperty} IndexedProperty + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IndexedProperty.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an IndexedProperty message. + * @function verify + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + IndexedProperty.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.direction != null && message.hasOwnProperty("direction")) + switch (message.direction) { + default: + return "direction: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates an IndexedProperty message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.Index.IndexedProperty} IndexedProperty + */ + IndexedProperty.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.Index.IndexedProperty) + return object; + var message = new $root.google.datastore.admin.v1.Index.IndexedProperty(); + if (object.name != null) + message.name = String(object.name); + switch (object.direction) { + case "DIRECTION_UNSPECIFIED": + case 0: + message.direction = 0; + break; + case "ASCENDING": + case 1: + message.direction = 1; + break; + case "DESCENDING": + case 2: + message.direction = 2; + break; + } + return message; + }; + + /** + * Creates a plain object from an IndexedProperty message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {google.datastore.admin.v1.Index.IndexedProperty} message IndexedProperty + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + IndexedProperty.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction; + return object; + }; + + /** + * Converts this IndexedProperty to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @instance + * @returns {Object.} JSON object + */ + IndexedProperty.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return IndexedProperty; + })(); + + /** + * AncestorMode enum. + * @name google.datastore.admin.v1.Index.AncestorMode + * @enum {number} + * @property {number} ANCESTOR_MODE_UNSPECIFIED=0 ANCESTOR_MODE_UNSPECIFIED value + * @property {number} NONE=1 NONE value + * @property {number} ALL_ANCESTORS=2 ALL_ANCESTORS value + */ + Index.AncestorMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ANCESTOR_MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "NONE"] = 1; + values[valuesById[2] = "ALL_ANCESTORS"] = 2; + return values; + })(); + + /** + * Direction enum. + * @name google.datastore.admin.v1.Index.Direction + * @enum {number} + * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + Index.Direction = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); + + /** + * State enum. + * @name google.datastore.admin.v1.Index.State + * @enum {number} + * @property {number} STATE_UNSPECIFIED=0 STATE_UNSPECIFIED value + * @property {number} CREATING=1 CREATING value + * @property {number} READY=2 READY value + * @property {number} DELETING=3 DELETING value + * @property {number} ERROR=4 ERROR value + */ + Index.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STATE_UNSPECIFIED"] = 0; + values[valuesById[1] = "CREATING"] = 1; + values[valuesById[2] = "READY"] = 2; + values[valuesById[3] = "DELETING"] = 3; + values[valuesById[4] = "ERROR"] = 4; + return values; + })(); + + return Index; + })(); + + return v1; + })(); + + return admin; + })(); + + datastore.v1 = (function() { + + /** + * Namespace v1. + * @memberof google.datastore + * @namespace + */ + var v1 = {}; + + v1.Datastore = (function() { + + /** + * Constructs a new Datastore service. + * @memberof google.datastore.v1 + * @classdesc Represents a Datastore + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited */ - function ReserveIdsRequest(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; + function Datastore(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); } + (Datastore.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Datastore; + /** - * ReserveIdsRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.ReserveIdsRequest - * @instance + * Creates new Datastore service using the specified rpc implementation. + * @function create + * @memberof google.datastore.v1.Datastore + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {Datastore} RPC service. Useful where requests and/or responses are streamed. */ - ReserveIdsRequest.prototype.projectId = ""; + Datastore.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; /** - * ReserveIdsRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.ReserveIdsRequest + * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * @memberof google.datastore.v1.Datastore + * @typedef LookupCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.LookupResponse} [response] LookupResponse + */ + + /** + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @param {google.datastore.v1.Datastore.LookupCallback} callback Node-style callback called with the error, if any, and LookupResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsRequest.prototype.databaseId = ""; + Object.defineProperty(Datastore.prototype.lookup = function lookup(request, callback) { + return this.rpcCall(lookup, $root.google.datastore.v1.LookupRequest, $root.google.datastore.v1.LookupResponse, request, callback); + }, "name", { value: "Lookup" }); /** - * ReserveIdsRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.ReserveIdsRequest + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsRequest.prototype.keys = $util.emptyArray; /** - * Creates a new ReserveIdsRequest instance using the specified properties. - * @function create - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest instance + * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * @memberof google.datastore.v1.Datastore + * @typedef RunQueryCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RunQueryResponse} [response] RunQueryResponse */ - ReserveIdsRequest.create = function create(properties) { - return new ReserveIdsRequest(properties); - }; /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @param {google.datastore.v1.Datastore.RunQueryCallback} callback Node-style callback called with the error, if any, and RunQueryResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsRequest.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); - return writer; - }; + Object.defineProperty(Datastore.prototype.runQuery = function runQuery(request, callback) { + return this.rpcCall(runQuery, $root.google.datastore.v1.RunQueryRequest, $root.google.datastore.v1.RunQueryResponse, request, callback); + }, "name", { value: "RunQuery" }); /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * @memberof google.datastore.v1.Datastore + * @typedef BeginTransactionCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.BeginTransactionResponse} [response] BeginTransactionResponse */ - ReserveIdsRequest.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsRequest(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @param {google.datastore.v1.Datastore.BeginTransactionCallback} callback Node-style callback called with the error, if any, and BeginTransactionResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsRequest.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + Object.defineProperty(Datastore.prototype.beginTransaction = function beginTransaction(request, callback) { + return this.rpcCall(beginTransaction, $root.google.datastore.v1.BeginTransactionRequest, $root.google.datastore.v1.BeginTransactionResponse, request, callback); + }, "name", { value: "BeginTransaction" }); /** - * Verifies a ReserveIdsRequest message. - * @function verify - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsRequest.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); - if (error) - return "keys." + error; - } - } - return null; - }; /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * @memberof google.datastore.v1.Datastore + * @typedef CommitCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.CommitResponse} [response] CommitResponse */ - ReserveIdsRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReserveIdsRequest) - return object; - var message = new $root.google.datastore.v1.ReserveIdsRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); - } - } - return message; - }; /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.ReserveIdsRequest - * @static - * @param {google.datastore.v1.ReserveIdsRequest} message ReserveIdsRequest - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @param {google.datastore.v1.Datastore.CommitCallback} callback Node-style callback called with the error, if any, and CommitResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsRequest.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (options.defaults) { - object.projectId = ""; - object.databaseId = ""; - } - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; - return object; - }; + Object.defineProperty(Datastore.prototype.commit = function commit(request, callback) { + return this.rpcCall(commit, $root.google.datastore.v1.CommitRequest, $root.google.datastore.v1.CommitResponse, request, callback); + }, "name", { value: "Commit" }); /** - * Converts this ReserveIdsRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.ReserveIdsRequest + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore * @instance - * @returns {Object.} JSON object + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ReserveIdsRequest; - })(); - - v1.ReserveIdsResponse = (function() { /** - * Properties of a ReserveIdsResponse. - * @memberof google.datastore.v1 - * @interface IReserveIdsResponse + * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * @memberof google.datastore.v1.Datastore + * @typedef RollbackCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RollbackResponse} [response] RollbackResponse */ /** - * Constructs a new ReserveIdsResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a ReserveIdsResponse. - * @implements IReserveIdsResponse - * @constructor - * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @param {google.datastore.v1.Datastore.RollbackCallback} callback Node-style callback called with the error, if any, and RollbackResponse + * @returns {undefined} + * @variation 1 */ - function ReserveIdsResponse(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + Object.defineProperty(Datastore.prototype.rollback = function rollback(request, callback) { + return this.rpcCall(rollback, $root.google.datastore.v1.RollbackRequest, $root.google.datastore.v1.RollbackResponse, request, callback); + }, "name", { value: "Rollback" }); /** - * Creates a new ReserveIdsResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse instance + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsResponse.create = function create(properties) { - return new ReserveIdsResponse(properties); - }; /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * @memberof google.datastore.v1.Datastore + * @typedef AllocateIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.AllocateIdsResponse} [response] AllocateIdsResponse */ - ReserveIdsResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReserveIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReserveIdsResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.AllocateIdsCallback} callback Node-style callback called with the error, if any, and AllocateIdsResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + Object.defineProperty(Datastore.prototype.allocateIds = function allocateIds(request, callback) { + return this.rpcCall(allocateIds, $root.google.datastore.v1.AllocateIdsRequest, $root.google.datastore.v1.AllocateIdsResponse, request, callback); + }, "name", { value: "AllocateIds" }); /** - * Verifies a ReserveIdsResponse message. - * @function verify - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * @memberof google.datastore.v1.Datastore + * @typedef ReserveIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.ReserveIdsResponse} [response] ReserveIdsResponse */ - ReserveIdsResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReserveIdsResponse) - return object; - return new $root.google.datastore.v1.ReserveIdsResponse(); - }; /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.ReserveIdsResponse - * @static - * @param {google.datastore.v1.ReserveIdsResponse} message ReserveIdsResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.ReserveIdsCallback} callback Node-style callback called with the error, if any, and ReserveIdsResponse + * @returns {undefined} + * @variation 1 */ - ReserveIdsResponse.toObject = function toObject() { - return {}; - }; + Object.defineProperty(Datastore.prototype.reserveIds = function reserveIds(request, callback) { + return this.rpcCall(reserveIds, $root.google.datastore.v1.ReserveIdsRequest, $root.google.datastore.v1.ReserveIdsResponse, request, callback); + }, "name", { value: "ReserveIds" }); /** - * Converts this ReserveIdsResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.ReserveIdsResponse + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore * @instance - * @returns {Object.} JSON object + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - ReserveIdsResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - return ReserveIdsResponse; + return Datastore; })(); - v1.Mutation = (function() { + v1.LookupRequest = (function() { /** - * Properties of a Mutation. + * Properties of a LookupRequest. * @memberof google.datastore.v1 - * @interface IMutation - * @property {google.datastore.v1.IEntity|null} [insert] Mutation insert - * @property {google.datastore.v1.IEntity|null} [update] Mutation update - * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert - * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete - * @property {number|Long|null} [baseVersion] Mutation baseVersion + * @interface ILookupRequest + * @property {string|null} [projectId] LookupRequest projectId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions + * @property {Array.|null} [keys] LookupRequest keys */ /** - * Constructs a new Mutation. + * Constructs a new LookupRequest. * @memberof google.datastore.v1 - * @classdesc Represents a Mutation. - * @implements IMutation + * @classdesc Represents a LookupRequest. + * @implements ILookupRequest * @constructor - * @param {google.datastore.v1.IMutation=} [properties] Properties to set + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set */ - function Mutation(properties) { + function LookupRequest(properties) { + this.keys = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -3655,152 +4371,104 @@ } /** - * Mutation insert. - * @member {google.datastore.v1.IEntity|null|undefined} insert - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.insert = null; - - /** - * Mutation update. - * @member {google.datastore.v1.IEntity|null|undefined} update - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.update = null; - - /** - * Mutation upsert. - * @member {google.datastore.v1.IEntity|null|undefined} upsert - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.upsert = null; - - /** - * Mutation delete. - * @member {google.datastore.v1.IKey|null|undefined} delete - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype["delete"] = null; - - /** - * Mutation baseVersion. - * @member {number|Long} baseVersion - * @memberof google.datastore.v1.Mutation + * LookupRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.LookupRequest * @instance */ - Mutation.prototype.baseVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + LookupRequest.prototype.projectId = ""; /** - * Mutation operation. - * @member {"insert"|"update"|"upsert"|"delete"|undefined} operation - * @memberof google.datastore.v1.Mutation + * LookupRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.LookupRequest * @instance */ - Object.defineProperty(Mutation.prototype, "operation", { - get: $util.oneOfGetter($oneOfFields = ["insert", "update", "upsert", "delete"]), - set: $util.oneOfSetter($oneOfFields) - }); + LookupRequest.prototype.readOptions = null; /** - * Mutation conflictDetectionStrategy. - * @member {"baseVersion"|undefined} conflictDetectionStrategy - * @memberof google.datastore.v1.Mutation + * LookupRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.LookupRequest * @instance */ - Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { - get: $util.oneOfGetter($oneOfFields = ["baseVersion"]), - set: $util.oneOfSetter($oneOfFields) - }); + LookupRequest.prototype.keys = $util.emptyArray; /** - * Creates a new Mutation instance using the specified properties. + * Creates a new LookupRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IMutation=} [properties] Properties to set - * @returns {google.datastore.v1.Mutation} Mutation instance + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set + * @returns {google.datastore.v1.LookupRequest} LookupRequest instance */ - Mutation.create = function create(properties) { - return new Mutation(properties); + LookupRequest.create = function create(properties) { + return new LookupRequest(properties); }; /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Mutation.encode = function encode(message, writer) { + LookupRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.insert != null && Object.hasOwnProperty.call(message, "insert")) - $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.update != null && Object.hasOwnProperty.call(message, "update")) - $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.upsert != null && Object.hasOwnProperty.call(message, "upsert")) - $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) - $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) - writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Mutation.encodeDelimited = function encodeDelimited(message, writer) { + LookupRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Mutation message from the specified reader or buffer. + * Decodes a LookupRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.LookupRequest} LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Mutation.decode = function decode(reader, length) { + LookupRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Mutation(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 4: - message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 5: - message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 6: - message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + case 8: + message.projectId = reader.string(); break; - case 7: - message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + case 1: + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); break; - case 8: - message.baseVersion = reader.int64(); + case 3: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -3811,201 +4479,152 @@ }; /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.LookupRequest} LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Mutation.decodeDelimited = function decodeDelimited(reader) { + LookupRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Mutation message. + * Verifies a LookupRequest message. * @function verify - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Mutation.verify = function verify(message) { + LookupRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.insert != null && message.hasOwnProperty("insert")) { - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.insert); - if (error) - return "insert." + error; - } - } - if (message.update != null && message.hasOwnProperty("update")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.update); - if (error) - return "update." + error; - } - } - if (message.upsert != null && message.hasOwnProperty("upsert")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.upsert); - if (error) - return "upsert." + error; - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Key.verify(message["delete"]); + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); if (error) - return "delete." + error; + return "keys." + error; } } - if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { - properties.conflictDetectionStrategy = 1; - if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) - return "baseVersion: integer|Long expected"; - } return null; }; /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.LookupRequest} LookupRequest */ - Mutation.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Mutation) + LookupRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupRequest) return object; - var message = new $root.google.datastore.v1.Mutation(); - if (object.insert != null) { - if (typeof object.insert !== "object") - throw TypeError(".google.datastore.v1.Mutation.insert: object expected"); - message.insert = $root.google.datastore.v1.Entity.fromObject(object.insert); - } - if (object.update != null) { - if (typeof object.update !== "object") - throw TypeError(".google.datastore.v1.Mutation.update: object expected"); - message.update = $root.google.datastore.v1.Entity.fromObject(object.update); - } - if (object.upsert != null) { - if (typeof object.upsert !== "object") - throw TypeError(".google.datastore.v1.Mutation.upsert: object expected"); - message.upsert = $root.google.datastore.v1.Entity.fromObject(object.upsert); + var message = new $root.google.datastore.v1.LookupRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); } - if (object["delete"] != null) { - if (typeof object["delete"] !== "object") - throw TypeError(".google.datastore.v1.Mutation.delete: object expected"); - message["delete"] = $root.google.datastore.v1.Key.fromObject(object["delete"]); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.LookupRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } } - if (object.baseVersion != null) - if ($util.Long) - (message.baseVersion = $util.Long.fromValue(object.baseVersion)).unsigned = false; - else if (typeof object.baseVersion === "string") - message.baseVersion = parseInt(object.baseVersion, 10); - else if (typeof object.baseVersion === "number") - message.baseVersion = object.baseVersion; - else if (typeof object.baseVersion === "object") - message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); return message; }; /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.Mutation} message Mutation + * @param {google.datastore.v1.LookupRequest} message LookupRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Mutation.toObject = function toObject(message, options) { + LookupRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.insert != null && message.hasOwnProperty("insert")) { - object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); - if (options.oneofs) - object.operation = "insert"; - } - if (message.update != null && message.hasOwnProperty("update")) { - object.update = $root.google.datastore.v1.Entity.toObject(message.update, options); - if (options.oneofs) - object.operation = "update"; - } - if (message.upsert != null && message.hasOwnProperty("upsert")) { - object.upsert = $root.google.datastore.v1.Entity.toObject(message.upsert, options); - if (options.oneofs) - object.operation = "upsert"; - } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - object["delete"] = $root.google.datastore.v1.Key.toObject(message["delete"], options); - if (options.oneofs) - object.operation = "delete"; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) { + object.readOptions = null; + object.projectId = ""; } - if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { - if (typeof message.baseVersion === "number") - object.baseVersion = options.longs === String ? String(message.baseVersion) : message.baseVersion; - else - object.baseVersion = options.longs === String ? $util.Long.prototype.toString.call(message.baseVersion) : options.longs === Number ? new $util.LongBits(message.baseVersion.low >>> 0, message.baseVersion.high >>> 0).toNumber() : message.baseVersion; - if (options.oneofs) - object.conflictDetectionStrategy = "baseVersion"; + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; return object; }; /** - * Converts this Mutation to JSON. + * Converts this LookupRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.LookupRequest * @instance * @returns {Object.} JSON object */ - Mutation.prototype.toJSON = function toJSON() { + LookupRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Mutation; + return LookupRequest; })(); - v1.MutationResult = (function() { + v1.LookupResponse = (function() { /** - * Properties of a MutationResult. + * Properties of a LookupResponse. * @memberof google.datastore.v1 - * @interface IMutationResult - * @property {google.datastore.v1.IKey|null} [key] MutationResult key - * @property {number|Long|null} [version] MutationResult version - * @property {boolean|null} [conflictDetected] MutationResult conflictDetected + * @interface ILookupResponse + * @property {Array.|null} [found] LookupResponse found + * @property {Array.|null} [missing] LookupResponse missing + * @property {Array.|null} [deferred] LookupResponse deferred */ /** - * Constructs a new MutationResult. + * Constructs a new LookupResponse. * @memberof google.datastore.v1 - * @classdesc Represents a MutationResult. - * @implements IMutationResult + * @classdesc Represents a LookupResponse. + * @implements ILookupResponse * @constructor - * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set */ - function MutationResult(properties) { + function LookupResponse(properties) { + this.found = []; + this.missing = []; + this.deferred = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4013,101 +4632,110 @@ } /** - * MutationResult key. - * @member {google.datastore.v1.IKey|null|undefined} key - * @memberof google.datastore.v1.MutationResult + * LookupResponse found. + * @member {Array.} found + * @memberof google.datastore.v1.LookupResponse * @instance */ - MutationResult.prototype.key = null; + LookupResponse.prototype.found = $util.emptyArray; /** - * MutationResult version. - * @member {number|Long} version - * @memberof google.datastore.v1.MutationResult + * LookupResponse missing. + * @member {Array.} missing + * @memberof google.datastore.v1.LookupResponse * @instance */ - MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + LookupResponse.prototype.missing = $util.emptyArray; /** - * MutationResult conflictDetected. - * @member {boolean} conflictDetected - * @memberof google.datastore.v1.MutationResult - * @instance - */ - MutationResult.prototype.conflictDetected = false; + * LookupResponse deferred. + * @member {Array.} deferred + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.deferred = $util.emptyArray; /** - * Creates a new MutationResult instance using the specified properties. + * Creates a new LookupResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set - * @returns {google.datastore.v1.MutationResult} MutationResult instance + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set + * @returns {google.datastore.v1.LookupResponse} LookupResponse instance */ - MutationResult.create = function create(properties) { - return new MutationResult(properties); + LookupResponse.create = function create(properties) { + return new LookupResponse(properties); }; /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MutationResult.encode = function encode(message, writer) { + LookupResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.version != null && Object.hasOwnProperty.call(message, "version")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); - if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); + if (message.found != null && message.found.length) + for (var i = 0; i < message.found.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.found[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.missing != null && message.missing.length) + for (var i = 0; i < message.missing.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.missing[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.deferred != null && message.deferred.length) + for (var i = 0; i < message.deferred.length; ++i) + $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MutationResult.encodeDelimited = function encodeDelimited(message, writer) { + LookupResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a MutationResult message from the specified reader or buffer. + * Decodes a LookupResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.LookupResponse} LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MutationResult.decode = function decode(reader, length) { + LookupResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.MutationResult(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 3: - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + case 1: + if (!(message.found && message.found.length)) + message.found = []; + message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); break; - case 4: - message.version = reader.int64(); + case 2: + if (!(message.missing && message.missing.length)) + message.missing = []; + message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); break; - case 5: - message.conflictDetected = reader.bool(); + case 3: + if (!(message.deferred && message.deferred.length)) + message.deferred = []; + message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -4118,144 +4746,179 @@ }; /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.LookupResponse} LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MutationResult.decodeDelimited = function decodeDelimited(reader) { + LookupResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a MutationResult message. + * Verifies a LookupResponse message. * @function verify - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MutationResult.verify = function verify(message) { + LookupResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) { - var error = $root.google.datastore.v1.Key.verify(message.key); - if (error) - return "key." + error; + if (message.found != null && message.hasOwnProperty("found")) { + if (!Array.isArray(message.found)) + return "found: array expected"; + for (var i = 0; i < message.found.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.found[i]); + if (error) + return "found." + error; + } + } + if (message.missing != null && message.hasOwnProperty("missing")) { + if (!Array.isArray(message.missing)) + return "missing: array expected"; + for (var i = 0; i < message.missing.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.missing[i]); + if (error) + return "missing." + error; + } + } + if (message.deferred != null && message.hasOwnProperty("deferred")) { + if (!Array.isArray(message.deferred)) + return "deferred: array expected"; + for (var i = 0; i < message.deferred.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.deferred[i]); + if (error) + return "deferred." + error; + } } - if (message.version != null && message.hasOwnProperty("version")) - if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) - return "version: integer|Long expected"; - if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) - if (typeof message.conflictDetected !== "boolean") - return "conflictDetected: boolean expected"; return null; }; /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.LookupResponse} LookupResponse */ - MutationResult.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.MutationResult) + LookupResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupResponse) return object; - var message = new $root.google.datastore.v1.MutationResult(); - if (object.key != null) { - if (typeof object.key !== "object") - throw TypeError(".google.datastore.v1.MutationResult.key: object expected"); - message.key = $root.google.datastore.v1.Key.fromObject(object.key); + var message = new $root.google.datastore.v1.LookupResponse(); + if (object.found) { + if (!Array.isArray(object.found)) + throw TypeError(".google.datastore.v1.LookupResponse.found: array expected"); + message.found = []; + for (var i = 0; i < object.found.length; ++i) { + if (typeof object.found[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.found: object expected"); + message.found[i] = $root.google.datastore.v1.EntityResult.fromObject(object.found[i]); + } + } + if (object.missing) { + if (!Array.isArray(object.missing)) + throw TypeError(".google.datastore.v1.LookupResponse.missing: array expected"); + message.missing = []; + for (var i = 0; i < object.missing.length; ++i) { + if (typeof object.missing[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.missing: object expected"); + message.missing[i] = $root.google.datastore.v1.EntityResult.fromObject(object.missing[i]); + } + } + if (object.deferred) { + if (!Array.isArray(object.deferred)) + throw TypeError(".google.datastore.v1.LookupResponse.deferred: array expected"); + message.deferred = []; + for (var i = 0; i < object.deferred.length; ++i) { + if (typeof object.deferred[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.deferred: object expected"); + message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); + } } - if (object.version != null) - if ($util.Long) - (message.version = $util.Long.fromValue(object.version)).unsigned = false; - else if (typeof object.version === "string") - message.version = parseInt(object.version, 10); - else if (typeof object.version === "number") - message.version = object.version; - else if (typeof object.version === "object") - message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); - if (object.conflictDetected != null) - message.conflictDetected = Boolean(object.conflictDetected); return message; }; /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.MutationResult} message MutationResult + * @param {google.datastore.v1.LookupResponse} message LookupResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MutationResult.toObject = function toObject(message, options) { + LookupResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.key = null; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.version = options.longs === String ? "0" : 0; - object.conflictDetected = false; + if (options.arrays || options.defaults) { + object.found = []; + object.missing = []; + object.deferred = []; + } + if (message.found && message.found.length) { + object.found = []; + for (var j = 0; j < message.found.length; ++j) + object.found[j] = $root.google.datastore.v1.EntityResult.toObject(message.found[j], options); + } + if (message.missing && message.missing.length) { + object.missing = []; + for (var j = 0; j < message.missing.length; ++j) + object.missing[j] = $root.google.datastore.v1.EntityResult.toObject(message.missing[j], options); + } + if (message.deferred && message.deferred.length) { + object.deferred = []; + for (var j = 0; j < message.deferred.length; ++j) + object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); } - if (message.key != null && message.hasOwnProperty("key")) - object.key = $root.google.datastore.v1.Key.toObject(message.key, options); - if (message.version != null && message.hasOwnProperty("version")) - if (typeof message.version === "number") - object.version = options.longs === String ? String(message.version) : message.version; - else - object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; - if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) - object.conflictDetected = message.conflictDetected; return object; }; /** - * Converts this MutationResult to JSON. + * Converts this LookupResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.LookupResponse * @instance * @returns {Object.} JSON object */ - MutationResult.prototype.toJSON = function toJSON() { + LookupResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return MutationResult; + return LookupResponse; })(); - v1.ReadOptions = (function() { + v1.RunQueryRequest = (function() { /** - * Properties of a ReadOptions. + * Properties of a RunQueryRequest. * @memberof google.datastore.v1 - * @interface IReadOptions - * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency - * @property {Uint8Array|null} [transaction] ReadOptions transaction + * @interface IRunQueryRequest + * @property {string|null} [projectId] RunQueryRequest projectId + * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions + * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query + * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery */ /** - * Constructs a new ReadOptions. + * Constructs a new RunQueryRequest. * @memberof google.datastore.v1 - * @classdesc Represents a ReadOptions. - * @implements IReadOptions + * @classdesc Represents a RunQueryRequest. + * @implements IRunQueryRequest * @constructor - * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set */ - function ReadOptions(properties) { + function RunQueryRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4263,102 +4926,141 @@ } /** - * ReadOptions readConsistency. - * @member {google.datastore.v1.ReadOptions.ReadConsistency} readConsistency - * @memberof google.datastore.v1.ReadOptions + * RunQueryRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RunQueryRequest * @instance */ - ReadOptions.prototype.readConsistency = 0; + RunQueryRequest.prototype.projectId = ""; /** - * ReadOptions transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.ReadOptions + * RunQueryRequest partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.RunQueryRequest * @instance */ - ReadOptions.prototype.transaction = $util.newBuffer([]); + RunQueryRequest.prototype.partitionId = null; + + /** + * RunQueryRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.readOptions = null; + + /** + * RunQueryRequest query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.query = null; + + /** + * RunQueryRequest gqlQuery. + * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.gqlQuery = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * ReadOptions consistencyType. - * @member {"readConsistency"|"transaction"|undefined} consistencyType - * @memberof google.datastore.v1.ReadOptions + * RunQueryRequest queryType. + * @member {"query"|"gqlQuery"|undefined} queryType + * @memberof google.datastore.v1.RunQueryRequest * @instance */ - Object.defineProperty(ReadOptions.prototype, "consistencyType", { - get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction"]), + Object.defineProperty(RunQueryRequest.prototype, "queryType", { + get: $util.oneOfGetter($oneOfFields = ["query", "gqlQuery"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new ReadOptions instance using the specified properties. + * Creates a new RunQueryRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set - * @returns {google.datastore.v1.ReadOptions} ReadOptions instance + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest instance */ - ReadOptions.create = function create(properties) { - return new ReadOptions(properties); + RunQueryRequest.create = function create(properties) { + return new RunQueryRequest(properties); }; /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReadOptions.encode = function encode(message, writer) { + RunQueryRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readConsistency != null && Object.hasOwnProperty.call(message, "readConsistency")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.query != null && Object.hasOwnProperty.call(message, "query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) + $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReadOptions.encodeDelimited = function encodeDelimited(message, writer) { + RunQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ReadOptions message from the specified reader or buffer. + * Decodes a RunQueryRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReadOptions.decode = function decode(reader, length) { + RunQueryRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReadOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.readConsistency = reader.int32(); + case 8: + message.projectId = reader.string(); break; case 2: - message.transaction = reader.bytes(); + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + case 1: + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + case 3: + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + case 7: + message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -4369,163 +5071,174 @@ }; /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReadOptions.decodeDelimited = function decodeDelimited(reader) { + RunQueryRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ReadOptions message. + * Verifies a RunQueryRequest message. * @function verify - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReadOptions.verify = function verify(message) { + RunQueryRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { - properties.consistencyType = 1; - switch (message.readConsistency) { - default: - return "readConsistency: enum value expected"; - case 0: - case 1: - case 2: - break; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); + if (error) + return "partitionId." + error; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + properties.queryType = 1; + { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; } } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - if (properties.consistencyType === 1) - return "consistencyType: multiple values"; - properties.consistencyType = 1; - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + if (properties.queryType === 1) + return "queryType: multiple values"; + properties.queryType = 1; + { + var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (error) + return "gqlQuery." + error; + } } return null; }; /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest */ - ReadOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReadOptions) + RunQueryRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryRequest) return object; - var message = new $root.google.datastore.v1.ReadOptions(); - switch (object.readConsistency) { - case "READ_CONSISTENCY_UNSPECIFIED": - case 0: - message.readConsistency = 0; - break; - case "STRONG": - case 1: - message.readConsistency = 1; - break; - case "EVENTUAL": - case 2: - message.readConsistency = 2; - break; + var message = new $root.google.datastore.v1.RunQueryRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + } + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); + } + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); + } + if (object.gqlQuery != null) { + if (typeof object.gqlQuery !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); + message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) - message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.ReadOptions} message ReadOptions + * @param {google.datastore.v1.RunQueryRequest} message RunQueryRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReadOptions.toObject = function toObject(message, options) { + RunQueryRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { - object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; - if (options.oneofs) - object.consistencyType = "readConsistency"; + if (options.defaults) { + object.readOptions = null; + object.partitionId = null; + object.projectId = ""; } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.query != null && message.hasOwnProperty("query")) { + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); if (options.oneofs) - object.consistencyType = "transaction"; + object.queryType = "query"; } - return object; - }; + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); + if (options.oneofs) + object.queryType = "gqlQuery"; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + return object; + }; /** - * Converts this ReadOptions to JSON. + * Converts this RunQueryRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.RunQueryRequest * @instance * @returns {Object.} JSON object */ - ReadOptions.prototype.toJSON = function toJSON() { + RunQueryRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * ReadConsistency enum. - * @name google.datastore.v1.ReadOptions.ReadConsistency - * @enum {number} - * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value - * @property {number} STRONG=1 STRONG value - * @property {number} EVENTUAL=2 EVENTUAL value - */ - ReadOptions.ReadConsistency = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "READ_CONSISTENCY_UNSPECIFIED"] = 0; - values[valuesById[1] = "STRONG"] = 1; - values[valuesById[2] = "EVENTUAL"] = 2; - return values; - })(); - - return ReadOptions; + return RunQueryRequest; })(); - v1.TransactionOptions = (function() { + v1.RunQueryResponse = (function() { /** - * Properties of a TransactionOptions. + * Properties of a RunQueryResponse. * @memberof google.datastore.v1 - * @interface ITransactionOptions - * @property {google.datastore.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite - * @property {google.datastore.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly + * @interface IRunQueryResponse + * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch + * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query */ /** - * Constructs a new TransactionOptions. + * Constructs a new RunQueryResponse. * @memberof google.datastore.v1 - * @classdesc Represents a TransactionOptions. - * @implements ITransactionOptions + * @classdesc Represents a RunQueryResponse. + * @implements IRunQueryResponse * @constructor - * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set */ - function TransactionOptions(properties) { + function RunQueryResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -4533,102 +5246,88 @@ } /** - * TransactionOptions readWrite. - * @member {google.datastore.v1.TransactionOptions.IReadWrite|null|undefined} readWrite - * @memberof google.datastore.v1.TransactionOptions - * @instance - */ - TransactionOptions.prototype.readWrite = null; - - /** - * TransactionOptions readOnly. - * @member {google.datastore.v1.TransactionOptions.IReadOnly|null|undefined} readOnly - * @memberof google.datastore.v1.TransactionOptions + * RunQueryResponse batch. + * @member {google.datastore.v1.IQueryResultBatch|null|undefined} batch + * @memberof google.datastore.v1.RunQueryResponse * @instance */ - TransactionOptions.prototype.readOnly = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + RunQueryResponse.prototype.batch = null; /** - * TransactionOptions mode. - * @member {"readWrite"|"readOnly"|undefined} mode - * @memberof google.datastore.v1.TransactionOptions + * RunQueryResponse query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryResponse * @instance */ - Object.defineProperty(TransactionOptions.prototype, "mode", { - get: $util.oneOfGetter($oneOfFields = ["readWrite", "readOnly"]), - set: $util.oneOfSetter($oneOfFields) - }); + RunQueryResponse.prototype.query = null; /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new RunQueryResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions instance + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse instance */ - TransactionOptions.create = function create(properties) { - return new TransactionOptions(properties); + RunQueryResponse.create = function create(properties) { + return new RunQueryResponse(properties); }; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encode = function encode(message, writer) { + RunQueryResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) - $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) - $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) + $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.query != null && Object.hasOwnProperty.call(message, "query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { + RunQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a RunQueryResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decode = function decode(reader, length) { + RunQueryResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); break; case 2: - message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -4639,583 +5338,417 @@ }; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decodeDelimited = function decodeDelimited(reader) { + RunQueryResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a TransactionOptions message. + * Verifies a RunQueryResponse message. * @function verify - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TransactionOptions.verify = function verify(message) { + RunQueryResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - properties.mode = 1; - { - var error = $root.google.datastore.v1.TransactionOptions.ReadWrite.verify(message.readWrite); - if (error) - return "readWrite." + error; - } + if (message.batch != null && message.hasOwnProperty("batch")) { + var error = $root.google.datastore.v1.QueryResultBatch.verify(message.batch); + if (error) + return "batch." + error; } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - if (properties.mode === 1) - return "mode: multiple values"; - properties.mode = 1; - { - var error = $root.google.datastore.v1.TransactionOptions.ReadOnly.verify(message.readOnly); - if (error) - return "readOnly." + error; - } + if (message.query != null && message.hasOwnProperty("query")) { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; } return null; }; /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse */ - TransactionOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions) + RunQueryResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryResponse) return object; - var message = new $root.google.datastore.v1.TransactionOptions(); - if (object.readWrite != null) { - if (typeof object.readWrite !== "object") - throw TypeError(".google.datastore.v1.TransactionOptions.readWrite: object expected"); - message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); + var message = new $root.google.datastore.v1.RunQueryResponse(); + if (object.batch != null) { + if (typeof object.batch !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.batch: object expected"); + message.batch = $root.google.datastore.v1.QueryResultBatch.fromObject(object.batch); } - if (object.readOnly != null) { - if (typeof object.readOnly !== "object") - throw TypeError(".google.datastore.v1.TransactionOptions.readOnly: object expected"); - message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); } return message; }; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.TransactionOptions} message TransactionOptions + * @param {google.datastore.v1.RunQueryResponse} message RunQueryResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - TransactionOptions.toObject = function toObject(message, options) { + RunQueryResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - object.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); - if (options.oneofs) - object.mode = "readWrite"; - } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - object.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); - if (options.oneofs) - object.mode = "readOnly"; + if (options.defaults) { + object.batch = null; + object.query = null; } + if (message.batch != null && message.hasOwnProperty("batch")) + object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); + if (message.query != null && message.hasOwnProperty("query")) + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); return object; }; /** - * Converts this TransactionOptions to JSON. + * Converts this RunQueryResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.RunQueryResponse * @instance * @returns {Object.} JSON object */ - TransactionOptions.prototype.toJSON = function toJSON() { + RunQueryResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - TransactionOptions.ReadWrite = (function() { - - /** - * Properties of a ReadWrite. - * @memberof google.datastore.v1.TransactionOptions - * @interface IReadWrite - * @property {Uint8Array|null} [previousTransaction] ReadWrite previousTransaction - */ + return RunQueryResponse; + })(); - /** - * Constructs a new ReadWrite. - * @memberof google.datastore.v1.TransactionOptions - * @classdesc Represents a ReadWrite. - * @implements IReadWrite - * @constructor - * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - */ - function ReadWrite(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.BeginTransactionRequest = (function() { - /** - * ReadWrite previousTransaction. - * @member {Uint8Array} previousTransaction - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @instance - */ - ReadWrite.prototype.previousTransaction = $util.newBuffer([]); - - /** - * Creates a new ReadWrite instance using the specified properties. - * @function create - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite instance - */ - ReadWrite.create = function create(properties) { - return new ReadWrite(properties); - }; + /** + * Properties of a BeginTransactionRequest. + * @memberof google.datastore.v1 + * @interface IBeginTransactionRequest + * @property {string|null} [projectId] BeginTransactionRequest projectId + * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions + */ - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.previousTransaction != null && Object.hasOwnProperty.call(message, "previousTransaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); - return writer; - }; + /** + * Constructs a new BeginTransactionRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a BeginTransactionRequest. + * @implements IBeginTransactionRequest + * @constructor + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + */ + function BeginTransactionRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * BeginTransactionRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.projectId = ""; - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.previousTransaction = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * BeginTransactionRequest transactionOptions. + * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.transactionOptions = null; - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Creates a new BeginTransactionRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest instance + */ + BeginTransactionRequest.create = function create(properties) { + return new BeginTransactionRequest(properties); + }; - /** - * Verifies a ReadWrite message. - * @function verify - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadWrite.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) - if (!(message.previousTransaction && typeof message.previousTransaction.length === "number" || $util.isString(message.previousTransaction))) - return "previousTransaction: buffer expected"; - return null; - }; + /** + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) + $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + return writer; + }; - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - */ - ReadWrite.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadWrite) - return object; - var message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); - if (object.previousTransaction != null) - if (typeof object.previousTransaction === "string") - $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); - else if (object.previousTransaction.length) - message.previousTransaction = object.previousTransaction; - return message; - }; + /** + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BeginTransactionRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.ReadWrite} message ReadWrite - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadWrite.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.previousTransaction = ""; - else { - object.previousTransaction = []; - if (options.bytes !== Array) - object.previousTransaction = $util.newBuffer(object.previousTransaction); - } - if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) - object.previousTransaction = options.bytes === String ? $util.base64.encode(message.previousTransaction, 0, message.previousTransaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.previousTransaction) : message.previousTransaction; - return object; - }; + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 10: + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Converts this ReadWrite to JSON. - * @function toJSON - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @instance - * @returns {Object.} JSON object - */ - ReadWrite.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ReadWrite; - })(); - - TransactionOptions.ReadOnly = (function() { + /** + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BeginTransactionRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Properties of a ReadOnly. - * @memberof google.datastore.v1.TransactionOptions - * @interface IReadOnly - */ + /** + * Verifies a BeginTransactionRequest message. + * @function verify + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BeginTransactionRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { + var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); + if (error) + return "transactionOptions." + error; + } + return null; + }; - /** - * Constructs a new ReadOnly. - * @memberof google.datastore.v1.TransactionOptions - * @classdesc Represents a ReadOnly. - * @implements IReadOnly - * @constructor - * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - */ - function ReadOnly(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; + /** + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + */ + BeginTransactionRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionRequest) + return object; + var message = new $root.google.datastore.v1.BeginTransactionRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.transactionOptions != null) { + if (typeof object.transactionOptions !== "object") + throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.fromObject(object.transactionOptions); } + return message; + }; - /** - * Creates a new ReadOnly instance using the specified properties. - * @function create - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly instance - */ - ReadOnly.create = function create(properties) { - return new ReadOnly(properties); - }; + /** + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {google.datastore.v1.BeginTransactionRequest} message BeginTransactionRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BeginTransactionRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.transactionOptions = null; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) + object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); + return object; + }; - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; + /** + * Converts this BeginTransactionRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + * @returns {Object.} JSON object + */ + BeginTransactionRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + return BeginTransactionRequest; + })(); - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + v1.BeginTransactionResponse = (function() { - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Properties of a BeginTransactionResponse. + * @memberof google.datastore.v1 + * @interface IBeginTransactionResponse + * @property {Uint8Array|null} [transaction] BeginTransactionResponse transaction + */ - /** - * Verifies a ReadOnly message. - * @function verify - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadOnly.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; + /** + * Constructs a new BeginTransactionResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a BeginTransactionResponse. + * @implements IBeginTransactionResponse + * @constructor + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + */ + function BeginTransactionResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - */ - ReadOnly.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) - return object; - return new $root.google.datastore.v1.TransactionOptions.ReadOnly(); - }; - - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.ReadOnly} message ReadOnly - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadOnly.toObject = function toObject() { - return {}; - }; - - /** - * Converts this ReadOnly to JSON. - * @function toJSON - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @instance - * @returns {Object.} JSON object - */ - ReadOnly.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ReadOnly; - })(); - - return TransactionOptions; - })(); - - v1.PartitionId = (function() { - - /** - * Properties of a PartitionId. - * @memberof google.datastore.v1 - * @interface IPartitionId - * @property {string|null} [projectId] PartitionId projectId - * @property {string|null} [namespaceId] PartitionId namespaceId - */ - - /** - * Constructs a new PartitionId. - * @memberof google.datastore.v1 - * @classdesc Represents a PartitionId. - * @implements IPartitionId - * @constructor - * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set - */ - function PartitionId(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PartitionId projectId. - * @member {string} projectId - * @memberof google.datastore.v1.PartitionId - * @instance - */ - PartitionId.prototype.projectId = ""; - - /** - * PartitionId namespaceId. - * @member {string} namespaceId - * @memberof google.datastore.v1.PartitionId - * @instance - */ - PartitionId.prototype.namespaceId = ""; + /** + * BeginTransactionResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.BeginTransactionResponse + * @instance + */ + BeginTransactionResponse.prototype.transaction = $util.newBuffer([]); /** - * Creates a new PartitionId instance using the specified properties. + * Creates a new BeginTransactionResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set - * @returns {google.datastore.v1.PartitionId} PartitionId instance + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse instance */ - PartitionId.create = function create(properties) { - return new PartitionId(properties); + BeginTransactionResponse.create = function create(properties) { + return new BeginTransactionResponse(properties); }; /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PartitionId.encode = function encode(message, writer) { + BeginTransactionResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); - if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); return writer; }; /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PartitionId.encodeDelimited = function encodeDelimited(message, writer) { + BeginTransactionResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PartitionId message from the specified reader or buffer. + * Decodes a BeginTransactionResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PartitionId} PartitionId + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PartitionId.decode = function decode(reader, length) { + BeginTransactionResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PartitionId(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.projectId = reader.string(); - break; - case 4: - message.namespaceId = reader.string(); + case 1: + message.transaction = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -5226,118 +5759,117 @@ }; /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PartitionId} PartitionId + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PartitionId.decodeDelimited = function decodeDelimited(reader) { + BeginTransactionResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PartitionId message. + * Verifies a BeginTransactionResponse message. * @function verify - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PartitionId.verify = function verify(message) { + BeginTransactionResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) - if (!$util.isString(message.namespaceId)) - return "namespaceId: string expected"; + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PartitionId} PartitionId + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse */ - PartitionId.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PartitionId) + BeginTransactionResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionResponse) return object; - var message = new $root.google.datastore.v1.PartitionId(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.namespaceId != null) - message.namespaceId = String(object.namespaceId); + var message = new $root.google.datastore.v1.BeginTransactionResponse(); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.PartitionId} message PartitionId + * @param {google.datastore.v1.BeginTransactionResponse} message BeginTransactionResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PartitionId.toObject = function toObject(message, options) { + BeginTransactionResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.projectId = ""; - object.namespaceId = ""; - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) - object.namespaceId = message.namespaceId; + if (options.defaults) + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; return object; }; /** - * Converts this PartitionId to JSON. + * Converts this BeginTransactionResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.BeginTransactionResponse * @instance * @returns {Object.} JSON object */ - PartitionId.prototype.toJSON = function toJSON() { + BeginTransactionResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return PartitionId; + return BeginTransactionResponse; })(); - v1.Key = (function() { + v1.RollbackRequest = (function() { /** - * Properties of a Key. + * Properties of a RollbackRequest. * @memberof google.datastore.v1 - * @interface IKey - * @property {google.datastore.v1.IPartitionId|null} [partitionId] Key partitionId - * @property {Array.|null} [path] Key path + * @interface IRollbackRequest + * @property {string|null} [projectId] RollbackRequest projectId + * @property {Uint8Array|null} [transaction] RollbackRequest transaction */ /** - * Constructs a new Key. + * Constructs a new RollbackRequest. * @memberof google.datastore.v1 - * @classdesc Represents a Key. - * @implements IKey + * @classdesc Represents a RollbackRequest. + * @implements IRollbackRequest * @constructor - * @param {google.datastore.v1.IKey=} [properties] Properties to set + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set */ - function Key(properties) { - this.path = []; + function RollbackRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5345,91 +5877,88 @@ } /** - * Key partitionId. - * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId - * @memberof google.datastore.v1.Key + * RollbackRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RollbackRequest * @instance */ - Key.prototype.partitionId = null; + RollbackRequest.prototype.projectId = ""; /** - * Key path. - * @member {Array.} path - * @memberof google.datastore.v1.Key + * RollbackRequest transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.RollbackRequest * @instance */ - Key.prototype.path = $util.emptyArray; + RollbackRequest.prototype.transaction = $util.newBuffer([]); /** - * Creates a new Key instance using the specified properties. + * Creates a new RollbackRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IKey=} [properties] Properties to set - * @returns {google.datastore.v1.Key} Key instance + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest instance */ - Key.create = function create(properties) { - return new Key(properties); + RollbackRequest.create = function create(properties) { + return new RollbackRequest(properties); }; /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Key.encode = function encode(message, writer) { + RollbackRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) - $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.path != null && message.path.length) - for (var i = 0; i < message.path.length; ++i) - $root.google.datastore.v1.Key.PathElement.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Key.encodeDelimited = function encodeDelimited(message, writer) { + RollbackRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Key message from the specified reader or buffer. + * Decodes a RollbackRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Key.decode = function decode(reader, length) { + RollbackRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + case 8: + message.projectId = reader.string(); break; - case 2: - if (!(message.path && message.path.length)) - message.path = []; - message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); + case 1: + message.transaction = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -5440,405 +5969,289 @@ }; /** - * Decodes a Key message from the specified reader or buffer, length delimited. + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Key.decodeDelimited = function decodeDelimited(reader) { + RollbackRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Key message. + * Verifies a RollbackRequest message. * @function verify - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Key.verify = function verify(message) { + RollbackRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) { - var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); - if (error) - return "partitionId." + error; - } - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) { - var error = $root.google.datastore.v1.Key.PathElement.verify(message.path[i]); - if (error) - return "path." + error; - } - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest */ - Key.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Key) + RollbackRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackRequest) return object; - var message = new $root.google.datastore.v1.Key(); - if (object.partitionId != null) { - if (typeof object.partitionId !== "object") - throw TypeError(".google.datastore.v1.Key.partitionId: object expected"); - message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); - } - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".google.datastore.v1.Key.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) { - if (typeof object.path[i] !== "object") - throw TypeError(".google.datastore.v1.Key.path: object expected"); - message.path[i] = $root.google.datastore.v1.Key.PathElement.fromObject(object.path[i]); - } - } + var message = new $root.google.datastore.v1.RollbackRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a Key message. Also converts values to other types if specified. + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.Key} message Key + * @param {google.datastore.v1.RollbackRequest} message RollbackRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Key.toObject = function toObject(message, options) { + RollbackRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.path = []; - if (options.defaults) - object.partitionId = null; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = $root.google.datastore.v1.Key.PathElement.toObject(message.path[j], options); + if (options.defaults) { + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + object.projectId = ""; } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; return object; }; /** - * Converts this Key to JSON. + * Converts this RollbackRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.RollbackRequest * @instance * @returns {Object.} JSON object */ - Key.prototype.toJSON = function toJSON() { + RollbackRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - Key.PathElement = (function() { + return RollbackRequest; + })(); - /** - * Properties of a PathElement. - * @memberof google.datastore.v1.Key - * @interface IPathElement - * @property {string|null} [kind] PathElement kind - * @property {number|Long|null} [id] PathElement id - * @property {string|null} [name] PathElement name - */ + v1.RollbackResponse = (function() { - /** - * Constructs a new PathElement. - * @memberof google.datastore.v1.Key - * @classdesc Represents a PathElement. - * @implements IPathElement - * @constructor - * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set - */ - function PathElement(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a RollbackResponse. + * @memberof google.datastore.v1 + * @interface IRollbackResponse + */ - /** - * PathElement kind. - * @member {string} kind - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.kind = ""; + /** + * Constructs a new RollbackResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a RollbackResponse. + * @implements IRollbackResponse + * @constructor + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set + */ + function RollbackResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * PathElement id. - * @member {number|Long} id - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * Creates a new RollbackResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse instance + */ + RollbackResponse.create = function create(properties) { + return new RollbackResponse(properties); + }; - /** - * PathElement name. - * @member {string} name - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.name = ""; + /** + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RollbackResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * PathElement idType. - * @member {"id"|"name"|undefined} idType - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - Object.defineProperty(PathElement.prototype, "idType", { - get: $util.oneOfGetter($oneOfFields = ["id", "name"]), - set: $util.oneOfSetter($oneOfFields) - }); + /** + * Decodes a RollbackResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Creates a new PathElement instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set - * @returns {google.datastore.v1.Key.PathElement} PathElement instance - */ - PathElement.create = function create(properties) { - return new PathElement(properties); - }; + /** + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RollbackResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PathElement.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); - return writer; - }; + /** + * Verifies a RollbackResponse message. + * @function verify + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RollbackResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PathElement.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + */ + RollbackResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackResponse) + return object; + return new $root.google.datastore.v1.RollbackResponse(); + }; - /** - * Decodes a PathElement message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Key.PathElement} PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PathElement.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key.PathElement(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.kind = reader.string(); - break; - case 2: - message.id = reader.int64(); - break; - case 3: - message.name = reader.string(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {google.datastore.v1.RollbackResponse} message RollbackResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RollbackResponse.toObject = function toObject() { + return {}; + }; - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Key.PathElement} PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PathElement.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Converts this RollbackResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.RollbackResponse + * @instance + * @returns {Object.} JSON object + */ + RollbackResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Verifies a PathElement message. - * @function verify - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PathElement.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.kind != null && message.hasOwnProperty("kind")) - if (!$util.isString(message.kind)) - return "kind: string expected"; - if (message.id != null && message.hasOwnProperty("id")) { - properties.idType = 1; - if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) - return "id: integer|Long expected"; - } - if (message.name != null && message.hasOwnProperty("name")) { - if (properties.idType === 1) - return "idType: multiple values"; - properties.idType = 1; - if (!$util.isString(message.name)) - return "name: string expected"; - } - return null; - }; + return RollbackResponse; + })(); - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.Key.PathElement} PathElement - */ - PathElement.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Key.PathElement) - return object; - var message = new $root.google.datastore.v1.Key.PathElement(); - if (object.kind != null) - message.kind = String(object.kind); - if (object.id != null) - if ($util.Long) - (message.id = $util.Long.fromValue(object.id)).unsigned = false; - else if (typeof object.id === "string") - message.id = parseInt(object.id, 10); - else if (typeof object.id === "number") - message.id = object.id; - else if (typeof object.id === "object") - message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(); - if (object.name != null) - message.name = String(object.name); - return message; - }; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.PathElement} message PathElement - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PathElement.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.kind = ""; - if (message.kind != null && message.hasOwnProperty("kind")) - object.kind = message.kind; - if (message.id != null && message.hasOwnProperty("id")) { - if (typeof message.id === "number") - object.id = options.longs === String ? String(message.id) : message.id; - else - object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id; - if (options.oneofs) - object.idType = "id"; - } - if (message.name != null && message.hasOwnProperty("name")) { - object.name = message.name; - if (options.oneofs) - object.idType = "name"; - } - return object; - }; - - /** - * Converts this PathElement to JSON. - * @function toJSON - * @memberof google.datastore.v1.Key.PathElement - * @instance - * @returns {Object.} JSON object - */ - PathElement.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return PathElement; - })(); - - return Key; - })(); - - v1.ArrayValue = (function() { + v1.CommitRequest = (function() { /** - * Properties of an ArrayValue. + * Properties of a CommitRequest. * @memberof google.datastore.v1 - * @interface IArrayValue - * @property {Array.|null} [values] ArrayValue values + * @interface ICommitRequest + * @property {string|null} [projectId] CommitRequest projectId + * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode + * @property {Uint8Array|null} [transaction] CommitRequest transaction + * @property {Array.|null} [mutations] CommitRequest mutations */ /** - * Constructs a new ArrayValue. + * Constructs a new CommitRequest. * @memberof google.datastore.v1 - * @classdesc Represents an ArrayValue. - * @implements IArrayValue + * @classdesc Represents a CommitRequest. + * @implements ICommitRequest * @constructor - * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set */ - function ArrayValue(properties) { - this.values = []; + function CommitRequest(properties) { + this.mutations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -5846,78 +6259,131 @@ } /** - * ArrayValue values. - * @member {Array.} values - * @memberof google.datastore.v1.ArrayValue + * CommitRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.CommitRequest * @instance */ - ArrayValue.prototype.values = $util.emptyArray; + CommitRequest.prototype.projectId = ""; /** - * Creates a new ArrayValue instance using the specified properties. + * CommitRequest mode. + * @member {google.datastore.v1.CommitRequest.Mode} mode + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.mode = 0; + + /** + * CommitRequest transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.transaction = $util.newBuffer([]); + + /** + * CommitRequest mutations. + * @member {Array.} mutations + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.mutations = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * CommitRequest transactionSelector. + * @member {"transaction"|undefined} transactionSelector + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + Object.defineProperty(CommitRequest.prototype, "transactionSelector", { + get: $util.oneOfGetter($oneOfFields = ["transaction"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new CommitRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set - * @returns {google.datastore.v1.ArrayValue} ArrayValue instance + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set + * @returns {google.datastore.v1.CommitRequest} CommitRequest instance */ - ArrayValue.create = function create(properties) { - return new ArrayValue(properties); + CommitRequest.create = function create(properties) { + return new CommitRequest(properties); }; /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ArrayValue.encode = function encode(message, writer) { + CommitRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.values != null && message.values.length) - for (var i = 0; i < message.values.length; ++i) - $root.google.datastore.v1.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); + if (message.mutations != null && message.mutations.length) + for (var i = 0; i < message.mutations.length; ++i) + $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ArrayValue.encodeDelimited = function encodeDelimited(message, writer) { + CommitRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an ArrayValue message from the specified reader or buffer. + * Decodes a CommitRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @returns {google.datastore.v1.CommitRequest} CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ArrayValue.decode = function decode(reader, length) { + CommitRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ArrayValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 8: + message.projectId = reader.string(); + break; + case 5: + message.mode = reader.int32(); + break; case 1: - if (!(message.values && message.values.length)) - message.values = []; - message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); + message.transaction = reader.bytes(); + break; + case 6: + if (!(message.mutations && message.mutations.length)) + message.mutations = []; + message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -5928,136 +6394,194 @@ }; /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @returns {google.datastore.v1.CommitRequest} CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ArrayValue.decodeDelimited = function decodeDelimited(reader) { + CommitRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an ArrayValue message. + * Verifies a CommitRequest message. * @function verify - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ArrayValue.verify = function verify(message) { + CommitRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.values != null && message.hasOwnProperty("values")) { - if (!Array.isArray(message.values)) - return "values: array expected"; - for (var i = 0; i < message.values.length; ++i) { - var error = $root.google.datastore.v1.Value.verify(message.values[i]); + var properties = {}; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + properties.transactionSelector = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + } + if (message.mutations != null && message.hasOwnProperty("mutations")) { + if (!Array.isArray(message.mutations)) + return "mutations: array expected"; + for (var i = 0; i < message.mutations.length; ++i) { + var error = $root.google.datastore.v1.Mutation.verify(message.mutations[i]); if (error) - return "values." + error; + return "mutations." + error; } } return null; }; /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @returns {google.datastore.v1.CommitRequest} CommitRequest */ - ArrayValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ArrayValue) + CommitRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitRequest) return object; - var message = new $root.google.datastore.v1.ArrayValue(); - if (object.values) { - if (!Array.isArray(object.values)) - throw TypeError(".google.datastore.v1.ArrayValue.values: array expected"); - message.values = []; - for (var i = 0; i < object.values.length; ++i) { - if (typeof object.values[i] !== "object") - throw TypeError(".google.datastore.v1.ArrayValue.values: object expected"); - message.values[i] = $root.google.datastore.v1.Value.fromObject(object.values[i]); - } + var message = new $root.google.datastore.v1.CommitRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + switch (object.mode) { + case "MODE_UNSPECIFIED": + case 0: + message.mode = 0; + break; + case "TRANSACTIONAL": + case 1: + message.mode = 1; + break; + case "NON_TRANSACTIONAL": + case 2: + message.mode = 2; + break; } - return message; - }; - - /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.ArrayValue - * @static - * @param {google.datastore.v1.ArrayValue} message ArrayValue + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; + if (object.mutations) { + if (!Array.isArray(object.mutations)) + throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); + message.mutations = []; + for (var i = 0; i < object.mutations.length; ++i) { + if (typeof object.mutations[i] !== "object") + throw TypeError(".google.datastore.v1.CommitRequest.mutations: object expected"); + message.mutations[i] = $root.google.datastore.v1.Mutation.fromObject(object.mutations[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.CommitRequest} message CommitRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ArrayValue.toObject = function toObject(message, options) { + CommitRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.values = []; - if (message.values && message.values.length) { - object.values = []; - for (var j = 0; j < message.values.length; ++j) - object.values[j] = $root.google.datastore.v1.Value.toObject(message.values[j], options); + object.mutations = []; + if (options.defaults) { + object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; + object.projectId = ""; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (options.oneofs) + object.transactionSelector = "transaction"; + } + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; + if (message.mutations && message.mutations.length) { + object.mutations = []; + for (var j = 0; j < message.mutations.length; ++j) + object.mutations[j] = $root.google.datastore.v1.Mutation.toObject(message.mutations[j], options); } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; return object; }; /** - * Converts this ArrayValue to JSON. + * Converts this CommitRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.CommitRequest * @instance * @returns {Object.} JSON object */ - ArrayValue.prototype.toJSON = function toJSON() { + CommitRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ArrayValue; + /** + * Mode enum. + * @name google.datastore.v1.CommitRequest.Mode + * @enum {number} + * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value + * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value + * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value + */ + CommitRequest.Mode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "TRANSACTIONAL"] = 1; + values[valuesById[2] = "NON_TRANSACTIONAL"] = 2; + return values; + })(); + + return CommitRequest; })(); - v1.Value = (function() { + v1.CommitResponse = (function() { /** - * Properties of a Value. + * Properties of a CommitResponse. * @memberof google.datastore.v1 - * @interface IValue - * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue - * @property {boolean|null} [booleanValue] Value booleanValue - * @property {number|Long|null} [integerValue] Value integerValue - * @property {number|null} [doubleValue] Value doubleValue - * @property {google.protobuf.ITimestamp|null} [timestampValue] Value timestampValue - * @property {google.datastore.v1.IKey|null} [keyValue] Value keyValue - * @property {string|null} [stringValue] Value stringValue - * @property {Uint8Array|null} [blobValue] Value blobValue - * @property {google.type.ILatLng|null} [geoPointValue] Value geoPointValue - * @property {google.datastore.v1.IEntity|null} [entityValue] Value entityValue - * @property {google.datastore.v1.IArrayValue|null} [arrayValue] Value arrayValue - * @property {number|null} [meaning] Value meaning - * @property {boolean|null} [excludeFromIndexes] Value excludeFromIndexes + * @interface ICommitResponse + * @property {Array.|null} [mutationResults] CommitResponse mutationResults + * @property {number|null} [indexUpdates] CommitResponse indexUpdates */ /** - * Constructs a new Value. + * Constructs a new CommitResponse. * @memberof google.datastore.v1 - * @classdesc Represents a Value. - * @implements IValue + * @classdesc Represents a CommitResponse. + * @implements ICommitResponse * @constructor - * @param {google.datastore.v1.IValue=} [properties] Properties to set + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set */ - function Value(properties) { + function CommitResponse(properties) { + this.mutationResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6065,245 +6589,322 @@ } /** - * Value nullValue. - * @member {google.protobuf.NullValue} nullValue - * @memberof google.datastore.v1.Value + * CommitResponse mutationResults. + * @member {Array.} mutationResults + * @memberof google.datastore.v1.CommitResponse * @instance */ - Value.prototype.nullValue = 0; + CommitResponse.prototype.mutationResults = $util.emptyArray; /** - * Value booleanValue. - * @member {boolean} booleanValue - * @memberof google.datastore.v1.Value + * CommitResponse indexUpdates. + * @member {number} indexUpdates + * @memberof google.datastore.v1.CommitResponse * @instance */ - Value.prototype.booleanValue = false; + CommitResponse.prototype.indexUpdates = 0; /** - * Value integerValue. - * @member {number|Long} integerValue - * @memberof google.datastore.v1.Value - * @instance + * Creates a new CommitResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set + * @returns {google.datastore.v1.CommitResponse} CommitResponse instance */ - Value.prototype.integerValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + CommitResponse.create = function create(properties) { + return new CommitResponse(properties); + }; /** - * Value doubleValue. - * @member {number} doubleValue - * @memberof google.datastore.v1.Value - * @instance + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Value.prototype.doubleValue = 0; + CommitResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.mutationResults != null && message.mutationResults.length) + for (var i = 0; i < message.mutationResults.length; ++i) + $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); + return writer; + }; /** - * Value timestampValue. - * @member {google.protobuf.ITimestamp|null|undefined} timestampValue - * @memberof google.datastore.v1.Value - * @instance + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Value.prototype.timestampValue = null; + CommitResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; /** - * Value keyValue. - * @member {google.datastore.v1.IKey|null|undefined} keyValue - * @memberof google.datastore.v1.Value - * @instance + * Decodes a CommitResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.prototype.keyValue = null; + CommitResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 3: + if (!(message.mutationResults && message.mutationResults.length)) + message.mutationResults = []; + message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); + break; + case 4: + message.indexUpdates = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; /** - * Value stringValue. - * @member {string} stringValue - * @memberof google.datastore.v1.Value - * @instance + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.prototype.stringValue = ""; + CommitResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; /** - * Value blobValue. - * @member {Uint8Array} blobValue - * @memberof google.datastore.v1.Value - * @instance + * Verifies a CommitResponse message. + * @function verify + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Value.prototype.blobValue = $util.newBuffer([]); + CommitResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.mutationResults != null && message.hasOwnProperty("mutationResults")) { + if (!Array.isArray(message.mutationResults)) + return "mutationResults: array expected"; + for (var i = 0; i < message.mutationResults.length; ++i) { + var error = $root.google.datastore.v1.MutationResult.verify(message.mutationResults[i]); + if (error) + return "mutationResults." + error; + } + } + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + if (!$util.isInteger(message.indexUpdates)) + return "indexUpdates: integer expected"; + return null; + }; /** - * Value geoPointValue. - * @member {google.type.ILatLng|null|undefined} geoPointValue - * @memberof google.datastore.v1.Value - * @instance + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.CommitResponse} CommitResponse */ - Value.prototype.geoPointValue = null; + CommitResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitResponse) + return object; + var message = new $root.google.datastore.v1.CommitResponse(); + if (object.mutationResults) { + if (!Array.isArray(object.mutationResults)) + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: array expected"); + message.mutationResults = []; + for (var i = 0; i < object.mutationResults.length; ++i) { + if (typeof object.mutationResults[i] !== "object") + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: object expected"); + message.mutationResults[i] = $root.google.datastore.v1.MutationResult.fromObject(object.mutationResults[i]); + } + } + if (object.indexUpdates != null) + message.indexUpdates = object.indexUpdates | 0; + return message; + }; /** - * Value entityValue. - * @member {google.datastore.v1.IEntity|null|undefined} entityValue - * @memberof google.datastore.v1.Value - * @instance + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.CommitResponse} message CommitResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object */ - Value.prototype.entityValue = null; + CommitResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.mutationResults = []; + if (options.defaults) + object.indexUpdates = 0; + if (message.mutationResults && message.mutationResults.length) { + object.mutationResults = []; + for (var j = 0; j < message.mutationResults.length; ++j) + object.mutationResults[j] = $root.google.datastore.v1.MutationResult.toObject(message.mutationResults[j], options); + } + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + object.indexUpdates = message.indexUpdates; + return object; + }; /** - * Value arrayValue. - * @member {google.datastore.v1.IArrayValue|null|undefined} arrayValue - * @memberof google.datastore.v1.Value + * Converts this CommitResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.CommitResponse * @instance + * @returns {Object.} JSON object */ - Value.prototype.arrayValue = null; + CommitResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CommitResponse; + })(); + + v1.AllocateIdsRequest = (function() { /** - * Value meaning. - * @member {number} meaning - * @memberof google.datastore.v1.Value - * @instance + * Properties of an AllocateIdsRequest. + * @memberof google.datastore.v1 + * @interface IAllocateIdsRequest + * @property {string|null} [projectId] AllocateIdsRequest projectId + * @property {Array.|null} [keys] AllocateIdsRequest keys */ - Value.prototype.meaning = 0; /** - * Value excludeFromIndexes. - * @member {boolean} excludeFromIndexes - * @memberof google.datastore.v1.Value - * @instance + * Constructs a new AllocateIdsRequest. + * @memberof google.datastore.v1 + * @classdesc Represents an AllocateIdsRequest. + * @implements IAllocateIdsRequest + * @constructor + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set */ - Value.prototype.excludeFromIndexes = false; + function AllocateIdsRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * AllocateIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.projectId = ""; /** - * Value valueType. - * @member {"nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"|undefined} valueType - * @memberof google.datastore.v1.Value + * AllocateIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsRequest * @instance */ - Object.defineProperty(Value.prototype, "valueType", { - get: $util.oneOfGetter($oneOfFields = ["nullValue", "booleanValue", "integerValue", "doubleValue", "timestampValue", "keyValue", "stringValue", "blobValue", "geoPointValue", "entityValue", "arrayValue"]), - set: $util.oneOfSetter($oneOfFields) - }); + AllocateIdsRequest.prototype.keys = $util.emptyArray; /** - * Creates a new Value instance using the specified properties. + * Creates a new AllocateIdsRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static - * @param {google.datastore.v1.IValue=} [properties] Properties to set - * @returns {google.datastore.v1.Value} Value instance + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest instance */ - Value.create = function create(properties) { - return new Value(properties); + AllocateIdsRequest.create = function create(properties) { + return new AllocateIdsRequest(properties); }; /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static - * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encode = function encode(message, writer) { + AllocateIdsRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.booleanValue != null && Object.hasOwnProperty.call(message, "booleanValue")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); - if (message.integerValue != null && Object.hasOwnProperty.call(message, "integerValue")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); - if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) - writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); - if (message.keyValue != null && Object.hasOwnProperty.call(message, "keyValue")) - $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.entityValue != null && Object.hasOwnProperty.call(message, "entityValue")) - $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.geoPointValue != null && Object.hasOwnProperty.call(message, "geoPointValue")) - $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.arrayValue != null && Object.hasOwnProperty.call(message, "arrayValue")) - $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.timestampValue != null && Object.hasOwnProperty.call(message, "timestampValue")) - $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); - if (message.meaning != null && Object.hasOwnProperty.call(message, "meaning")) - writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); - if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) - writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); - if (message.blobValue != null && Object.hasOwnProperty.call(message, "blobValue")) - writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); - if (message.excludeFromIndexes != null && Object.hasOwnProperty.call(message, "excludeFromIndexes")) - writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); return writer; }; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static - * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encodeDelimited = function encodeDelimited(message, writer) { + AllocateIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes an AllocateIdsRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decode = function decode(reader, length) { + AllocateIdsRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 11: - message.nullValue = reader.int32(); - break; - case 1: - message.booleanValue = reader.bool(); - break; - case 2: - message.integerValue = reader.int64(); - break; - case 3: - message.doubleValue = reader.double(); - break; - case 10: - message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 5: - message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 17: - message.stringValue = reader.string(); - break; - case 18: - message.blobValue = reader.bytes(); - break; case 8: - message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); - break; - case 6: - message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 9: - message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); - break; - case 14: - message.meaning = reader.int32(); + message.projectId = reader.string(); break; - case 19: - message.excludeFromIndexes = reader.bool(); + case 1: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -6314,322 +6915,134 @@ }; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decodeDelimited = function decodeDelimited(reader) { + AllocateIdsRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Value message. + * Verifies an AllocateIdsRequest message. * @function verify - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Value.verify = function verify(message) { + AllocateIdsRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - properties.valueType = 1; - switch (message.nullValue) { - default: - return "nullValue: enum value expected"; - case 0: - break; - } - } - if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (typeof message.booleanValue !== "boolean") - return "booleanValue: boolean expected"; - } - if (message.integerValue != null && message.hasOwnProperty("integerValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!$util.isInteger(message.integerValue) && !(message.integerValue && $util.isInteger(message.integerValue.low) && $util.isInteger(message.integerValue.high))) - return "integerValue: integer|Long expected"; - } - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (typeof message.doubleValue !== "number") - return "doubleValue: number expected"; - } - if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.timestampValue); - if (error) - return "timestampValue." + error; - } - } - if (message.keyValue != null && message.hasOwnProperty("keyValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.Key.verify(message.keyValue); - if (error) - return "keyValue." + error; - } - } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!$util.isString(message.stringValue)) - return "stringValue: string expected"; - } - if (message.blobValue != null && message.hasOwnProperty("blobValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!(message.blobValue && typeof message.blobValue.length === "number" || $util.isString(message.blobValue))) - return "blobValue: buffer expected"; - } - if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.type.LatLng.verify(message.geoPointValue); - if (error) - return "geoPointValue." + error; - } - } - if (message.entityValue != null && message.hasOwnProperty("entityValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.entityValue); - if (error) - return "entityValue." + error; - } - } - if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.ArrayValue.verify(message.arrayValue); + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); if (error) - return "arrayValue." + error; + return "keys." + error; } } - if (message.meaning != null && message.hasOwnProperty("meaning")) - if (!$util.isInteger(message.meaning)) - return "meaning: integer expected"; - if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) - if (typeof message.excludeFromIndexes !== "boolean") - return "excludeFromIndexes: boolean expected"; return null; }; /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest */ - Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Value) + AllocateIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsRequest) return object; - var message = new $root.google.datastore.v1.Value(); - switch (object.nullValue) { - case "NULL_VALUE": - case 0: - message.nullValue = 0; - break; - } - if (object.booleanValue != null) - message.booleanValue = Boolean(object.booleanValue); - if (object.integerValue != null) - if ($util.Long) - (message.integerValue = $util.Long.fromValue(object.integerValue)).unsigned = false; - else if (typeof object.integerValue === "string") - message.integerValue = parseInt(object.integerValue, 10); - else if (typeof object.integerValue === "number") - message.integerValue = object.integerValue; - else if (typeof object.integerValue === "object") - message.integerValue = new $util.LongBits(object.integerValue.low >>> 0, object.integerValue.high >>> 0).toNumber(); - if (object.doubleValue != null) - message.doubleValue = Number(object.doubleValue); - if (object.timestampValue != null) { - if (typeof object.timestampValue !== "object") - throw TypeError(".google.datastore.v1.Value.timestampValue: object expected"); - message.timestampValue = $root.google.protobuf.Timestamp.fromObject(object.timestampValue); - } - if (object.keyValue != null) { - if (typeof object.keyValue !== "object") - throw TypeError(".google.datastore.v1.Value.keyValue: object expected"); - message.keyValue = $root.google.datastore.v1.Key.fromObject(object.keyValue); - } - if (object.stringValue != null) - message.stringValue = String(object.stringValue); - if (object.blobValue != null) - if (typeof object.blobValue === "string") - $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); - else if (object.blobValue.length) - message.blobValue = object.blobValue; - if (object.geoPointValue != null) { - if (typeof object.geoPointValue !== "object") - throw TypeError(".google.datastore.v1.Value.geoPointValue: object expected"); - message.geoPointValue = $root.google.type.LatLng.fromObject(object.geoPointValue); - } - if (object.entityValue != null) { - if (typeof object.entityValue !== "object") - throw TypeError(".google.datastore.v1.Value.entityValue: object expected"); - message.entityValue = $root.google.datastore.v1.Entity.fromObject(object.entityValue); - } - if (object.arrayValue != null) { - if (typeof object.arrayValue !== "object") - throw TypeError(".google.datastore.v1.Value.arrayValue: object expected"); - message.arrayValue = $root.google.datastore.v1.ArrayValue.fromObject(object.arrayValue); + var message = new $root.google.datastore.v1.AllocateIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } } - if (object.meaning != null) - message.meaning = object.meaning | 0; - if (object.excludeFromIndexes != null) - message.excludeFromIndexes = Boolean(object.excludeFromIndexes); return message; }; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @static - * @param {google.datastore.v1.Value} message Value + * @param {google.datastore.v1.AllocateIdsRequest} message AllocateIdsRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Value.toObject = function toObject(message, options) { + AllocateIdsRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.meaning = 0; - object.excludeFromIndexes = false; - } - if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { - object.booleanValue = message.booleanValue; - if (options.oneofs) - object.valueType = "booleanValue"; - } - if (message.integerValue != null && message.hasOwnProperty("integerValue")) { - if (typeof message.integerValue === "number") - object.integerValue = options.longs === String ? String(message.integerValue) : message.integerValue; - else - object.integerValue = options.longs === String ? $util.Long.prototype.toString.call(message.integerValue) : options.longs === Number ? new $util.LongBits(message.integerValue.low >>> 0, message.integerValue.high >>> 0).toNumber() : message.integerValue; - if (options.oneofs) - object.valueType = "integerValue"; - } - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { - object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; - if (options.oneofs) - object.valueType = "doubleValue"; - } - if (message.keyValue != null && message.hasOwnProperty("keyValue")) { - object.keyValue = $root.google.datastore.v1.Key.toObject(message.keyValue, options); - if (options.oneofs) - object.valueType = "keyValue"; - } - if (message.entityValue != null && message.hasOwnProperty("entityValue")) { - object.entityValue = $root.google.datastore.v1.Entity.toObject(message.entityValue, options); - if (options.oneofs) - object.valueType = "entityValue"; - } - if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { - object.geoPointValue = $root.google.type.LatLng.toObject(message.geoPointValue, options); - if (options.oneofs) - object.valueType = "geoPointValue"; - } - if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { - object.arrayValue = $root.google.datastore.v1.ArrayValue.toObject(message.arrayValue, options); - if (options.oneofs) - object.valueType = "arrayValue"; - } - if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { - object.timestampValue = $root.google.protobuf.Timestamp.toObject(message.timestampValue, options); - if (options.oneofs) - object.valueType = "timestampValue"; - } - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; - if (options.oneofs) - object.valueType = "nullValue"; - } - if (message.meaning != null && message.hasOwnProperty("meaning")) - object.meaning = message.meaning; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - object.stringValue = message.stringValue; - if (options.oneofs) - object.valueType = "stringValue"; - } - if (message.blobValue != null && message.hasOwnProperty("blobValue")) { - object.blobValue = options.bytes === String ? $util.base64.encode(message.blobValue, 0, message.blobValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.blobValue) : message.blobValue; - if (options.oneofs) - object.valueType = "blobValue"; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) + object.projectId = ""; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); } - if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) - object.excludeFromIndexes = message.excludeFromIndexes; + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; return object; }; /** - * Converts this Value to JSON. + * Converts this AllocateIdsRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.AllocateIdsRequest * @instance * @returns {Object.} JSON object */ - Value.prototype.toJSON = function toJSON() { + AllocateIdsRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Value; + return AllocateIdsRequest; })(); - v1.Entity = (function() { + v1.AllocateIdsResponse = (function() { /** - * Properties of an Entity. + * Properties of an AllocateIdsResponse. * @memberof google.datastore.v1 - * @interface IEntity - * @property {google.datastore.v1.IKey|null} [key] Entity key - * @property {Object.|null} [properties] Entity properties + * @interface IAllocateIdsResponse + * @property {Array.|null} [keys] AllocateIdsResponse keys */ /** - * Constructs a new Entity. + * Constructs a new AllocateIdsResponse. * @memberof google.datastore.v1 - * @classdesc Represents an Entity. - * @implements IEntity + * @classdesc Represents an AllocateIdsResponse. + * @implements IAllocateIdsResponse * @constructor - * @param {google.datastore.v1.IEntity=} [properties] Properties to set + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set */ - function Entity(properties) { - this.properties = {}; + function AllocateIdsResponse(properties) { + this.keys = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6637,96 +7050,78 @@ } /** - * Entity key. - * @member {google.datastore.v1.IKey|null|undefined} key - * @memberof google.datastore.v1.Entity - * @instance - */ - Entity.prototype.key = null; - - /** - * Entity properties. - * @member {Object.} properties - * @memberof google.datastore.v1.Entity + * AllocateIdsResponse keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsResponse * @instance */ - Entity.prototype.properties = $util.emptyObject; + AllocateIdsResponse.prototype.keys = $util.emptyArray; /** - * Creates a new Entity instance using the specified properties. + * Creates a new AllocateIdsResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static - * @param {google.datastore.v1.IEntity=} [properties] Properties to set - * @returns {google.datastore.v1.Entity} Entity instance + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse instance */ - Entity.create = function create(properties) { - return new Entity(properties); + AllocateIdsResponse.create = function create(properties) { + return new AllocateIdsResponse(properties); }; /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static - * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Entity.encode = function encode(message, writer) { + AllocateIdsResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.properties != null && Object.hasOwnProperty.call(message, "properties")) - for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static - * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Entity.encodeDelimited = function encodeDelimited(message, writer) { + AllocateIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an Entity message from the specified reader or buffer. + * Decodes an AllocateIdsResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Entity} Entity + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Entity.decode = function decode(reader, length) { + AllocateIdsResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 3: - reader.skip().pos++; - if (message.properties === $util.emptyObject) - message.properties = {}; - key = reader.string(); - reader.pos++; - message.properties[key] = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -6737,142 +7132,127 @@ }; /** - * Decodes an Entity message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Entity} Entity + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Entity.decodeDelimited = function decodeDelimited(reader) { + AllocateIdsResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an Entity message. + * Verifies an AllocateIdsResponse message. * @function verify - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Entity.verify = function verify(message) { + AllocateIdsResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) { - var error = $root.google.datastore.v1.Key.verify(message.key); - if (error) - return "key." + error; - } - if (message.properties != null && message.hasOwnProperty("properties")) { - if (!$util.isObject(message.properties)) - return "properties: object expected"; - var key = Object.keys(message.properties); - for (var i = 0; i < key.length; ++i) { - var error = $root.google.datastore.v1.Value.verify(message.properties[key[i]]); + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); if (error) - return "properties." + error; + return "keys." + error; } } return null; }; /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Entity} Entity + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse */ - Entity.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Entity) + AllocateIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsResponse) return object; - var message = new $root.google.datastore.v1.Entity(); - if (object.key != null) { - if (typeof object.key !== "object") - throw TypeError(".google.datastore.v1.Entity.key: object expected"); - message.key = $root.google.datastore.v1.Key.fromObject(object.key); - } - if (object.properties) { - if (typeof object.properties !== "object") - throw TypeError(".google.datastore.v1.Entity.properties: object expected"); - message.properties = {}; - for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) { - if (typeof object.properties[keys[i]] !== "object") - throw TypeError(".google.datastore.v1.Entity.properties: object expected"); - message.properties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.properties[keys[i]]); + var message = new $root.google.datastore.v1.AllocateIdsResponse(); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); } } return message; }; /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @static - * @param {google.datastore.v1.Entity} message Entity + * @param {google.datastore.v1.AllocateIdsResponse} message AllocateIdsResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Entity.toObject = function toObject(message, options) { + AllocateIdsResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.objects || options.defaults) - object.properties = {}; - if (options.defaults) - object.key = null; - if (message.key != null && message.hasOwnProperty("key")) - object.key = $root.google.datastore.v1.Key.toObject(message.key, options); - var keys2; - if (message.properties && (keys2 = Object.keys(message.properties)).length) { - object.properties = {}; - for (var j = 0; j < keys2.length; ++j) - object.properties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.properties[keys2[j]], options); + if (options.arrays || options.defaults) + object.keys = []; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); } return object; }; /** - * Converts this Entity to JSON. + * Converts this AllocateIdsResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.Entity + * @memberof google.datastore.v1.AllocateIdsResponse * @instance * @returns {Object.} JSON object */ - Entity.prototype.toJSON = function toJSON() { + AllocateIdsResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Entity; + return AllocateIdsResponse; })(); - v1.EntityResult = (function() { + v1.ReserveIdsRequest = (function() { /** - * Properties of an EntityResult. + * Properties of a ReserveIdsRequest. * @memberof google.datastore.v1 - * @interface IEntityResult - * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity - * @property {number|Long|null} [version] EntityResult version - * @property {Uint8Array|null} [cursor] EntityResult cursor + * @interface IReserveIdsRequest + * @property {string|null} [projectId] ReserveIdsRequest projectId + * @property {string|null} [databaseId] ReserveIdsRequest databaseId + * @property {Array.|null} [keys] ReserveIdsRequest keys */ /** - * Constructs a new EntityResult. + * Constructs a new ReserveIdsRequest. * @memberof google.datastore.v1 - * @classdesc Represents an EntityResult. - * @implements IEntityResult + * @classdesc Represents a ReserveIdsRequest. + * @implements IReserveIdsRequest * @constructor - * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set */ - function EntityResult(properties) { + function ReserveIdsRequest(properties) { + this.keys = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6880,101 +7260,104 @@ } /** - * EntityResult entity. - * @member {google.datastore.v1.IEntity|null|undefined} entity - * @memberof google.datastore.v1.EntityResult + * ReserveIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.ReserveIdsRequest * @instance */ - EntityResult.prototype.entity = null; + ReserveIdsRequest.prototype.projectId = ""; /** - * EntityResult version. - * @member {number|Long} version - * @memberof google.datastore.v1.EntityResult + * ReserveIdsRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.ReserveIdsRequest * @instance */ - EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + ReserveIdsRequest.prototype.databaseId = ""; /** - * EntityResult cursor. - * @member {Uint8Array} cursor - * @memberof google.datastore.v1.EntityResult + * ReserveIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.ReserveIdsRequest * @instance */ - EntityResult.prototype.cursor = $util.newBuffer([]); + ReserveIdsRequest.prototype.keys = $util.emptyArray; /** - * Creates a new EntityResult instance using the specified properties. + * Creates a new ReserveIdsRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static - * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set - * @returns {google.datastore.v1.EntityResult} EntityResult instance + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest instance */ - EntityResult.create = function create(properties) { - return new EntityResult(properties); + ReserveIdsRequest.create = function create(properties) { + return new ReserveIdsRequest(properties); }; /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static - * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EntityResult.encode = function encode(message, writer) { + ReserveIdsRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entity != null && Object.hasOwnProperty.call(message, "entity")) - $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); - if (message.version != null && Object.hasOwnProperty.call(message, "version")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static - * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EntityResult.encodeDelimited = function encodeDelimited(message, writer) { + ReserveIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an EntityResult message from the specified reader or buffer. + * Decodes a ReserveIdsRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EntityResult.decode = function decode(reader, length) { + ReserveIdsRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.EntityResult(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + case 8: + message.projectId = reader.string(); break; - case 4: - message.version = reader.int64(); + case 9: + message.databaseId = reader.string(); break; - case 3: - message.cursor = reader.bytes(); + case 1: + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -6985,182 +7368,141 @@ }; /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EntityResult.decodeDelimited = function decodeDelimited(reader) { + ReserveIdsRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an EntityResult message. + * Verifies a ReserveIdsRequest message. * @function verify - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EntityResult.verify = function verify(message) { + ReserveIdsRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.entity != null && message.hasOwnProperty("entity")) { - var error = $root.google.datastore.v1.Entity.verify(message.entity); - if (error) - return "entity." + error; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } } - if (message.version != null && message.hasOwnProperty("version")) - if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) - return "version: integer|Long expected"; - if (message.cursor != null && message.hasOwnProperty("cursor")) - if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) - return "cursor: buffer expected"; return null; }; /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest */ - EntityResult.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.EntityResult) + ReserveIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsRequest) return object; - var message = new $root.google.datastore.v1.EntityResult(); - if (object.entity != null) { - if (typeof object.entity !== "object") - throw TypeError(".google.datastore.v1.EntityResult.entity: object expected"); - message.entity = $root.google.datastore.v1.Entity.fromObject(object.entity); + var message = new $root.google.datastore.v1.ReserveIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } } - if (object.version != null) - if ($util.Long) - (message.version = $util.Long.fromValue(object.version)).unsigned = false; - else if (typeof object.version === "string") - message.version = parseInt(object.version, 10); - else if (typeof object.version === "number") - message.version = object.version; - else if (typeof object.version === "object") - message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); - if (object.cursor != null) - if (typeof object.cursor === "string") - $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length) - message.cursor = object.cursor; return message; }; /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @static - * @param {google.datastore.v1.EntityResult} message EntityResult + * @param {google.datastore.v1.ReserveIdsRequest} message ReserveIdsRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EntityResult.toObject = function toObject(message, options) { + ReserveIdsRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.keys = []; if (options.defaults) { - object.entity = null; - if (options.bytes === String) - object.cursor = ""; - else { - object.cursor = []; - if (options.bytes !== Array) - object.cursor = $util.newBuffer(object.cursor); - } - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.version = options.longs === String ? "0" : 0; + object.projectId = ""; + object.databaseId = ""; } - if (message.entity != null && message.hasOwnProperty("entity")) - object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); - if (message.cursor != null && message.hasOwnProperty("cursor")) - object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; - if (message.version != null && message.hasOwnProperty("version")) - if (typeof message.version === "number") - object.version = options.longs === String ? String(message.version) : message.version; - else - object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this EntityResult to JSON. + * Converts this ReserveIdsRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.ReserveIdsRequest * @instance * @returns {Object.} JSON object */ - EntityResult.prototype.toJSON = function toJSON() { + ReserveIdsRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * ResultType enum. - * @name google.datastore.v1.EntityResult.ResultType - * @enum {number} - * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value - * @property {number} FULL=1 FULL value - * @property {number} PROJECTION=2 PROJECTION value - * @property {number} KEY_ONLY=3 KEY_ONLY value - */ - EntityResult.ResultType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "RESULT_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "FULL"] = 1; - values[valuesById[2] = "PROJECTION"] = 2; - values[valuesById[3] = "KEY_ONLY"] = 3; - return values; - })(); - - return EntityResult; + return ReserveIdsRequest; })(); - v1.Query = (function() { + v1.ReserveIdsResponse = (function() { /** - * Properties of a Query. + * Properties of a ReserveIdsResponse. * @memberof google.datastore.v1 - * @interface IQuery - * @property {Array.|null} [projection] Query projection - * @property {Array.|null} [kind] Query kind - * @property {google.datastore.v1.IFilter|null} [filter] Query filter - * @property {Array.|null} [order] Query order - * @property {Array.|null} [distinctOn] Query distinctOn - * @property {Uint8Array|null} [startCursor] Query startCursor - * @property {Uint8Array|null} [endCursor] Query endCursor - * @property {number|null} [offset] Query offset - * @property {google.protobuf.IInt32Value|null} [limit] Query limit + * @interface IReserveIdsResponse */ /** - * Constructs a new Query. + * Constructs a new ReserveIdsResponse. * @memberof google.datastore.v1 - * @classdesc Represents a Query. - * @implements IQuery + * @classdesc Represents a ReserveIdsResponse. + * @implements IReserveIdsResponse * @constructor - * @param {google.datastore.v1.IQuery=} [properties] Properties to set + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set */ - function Query(properties) { - this.projection = []; - this.kind = []; - this.order = []; - this.distinctOn = []; + function ReserveIdsResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7168,192 +7510,63 @@ } /** - * Query projection. - * @member {Array.} projection - * @memberof google.datastore.v1.Query - * @instance + * Creates a new ReserveIdsResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse instance */ - Query.prototype.projection = $util.emptyArray; + ReserveIdsResponse.create = function create(properties) { + return new ReserveIdsResponse(properties); + }; /** - * Query kind. - * @member {Array.} kind - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.kind = $util.emptyArray; - - /** - * Query filter. - * @member {google.datastore.v1.IFilter|null|undefined} filter - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.filter = null; - - /** - * Query order. - * @member {Array.} order - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.order = $util.emptyArray; - - /** - * Query distinctOn. - * @member {Array.} distinctOn - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.distinctOn = $util.emptyArray; - - /** - * Query startCursor. - * @member {Uint8Array} startCursor - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.startCursor = $util.newBuffer([]); - - /** - * Query endCursor. - * @member {Uint8Array} endCursor - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.endCursor = $util.newBuffer([]); - - /** - * Query offset. - * @member {number} offset - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.offset = 0; - - /** - * Query limit. - * @member {google.protobuf.IInt32Value|null|undefined} limit - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.limit = null; - - /** - * Creates a new Query instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Query - * @static - * @param {google.datastore.v1.IQuery=} [properties] Properties to set - * @returns {google.datastore.v1.Query} Query instance - */ - Query.create = function create(properties) { - return new Query(properties); - }; - - /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static - * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Query.encode = function encode(message, writer) { + ReserveIdsResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projection != null && message.projection.length) - for (var i = 0; i < message.projection.length; ++i) - $root.google.datastore.v1.Projection.encode(message.projection[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.kind != null && message.kind.length) - for (var i = 0; i < message.kind.length; ++i) - $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) - $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.order != null && message.order.length) - for (var i = 0; i < message.order.length; ++i) - $root.google.datastore.v1.PropertyOrder.encode(message.order[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.distinctOn != null && message.distinctOn.length) - for (var i = 0; i < message.distinctOn.length; ++i) - $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.startCursor != null && Object.hasOwnProperty.call(message, "startCursor")) - writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); - if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) - writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); - if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); - if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) - $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); return writer; }; /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static - * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Query.encodeDelimited = function encodeDelimited(message, writer) { + ReserveIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Query message from the specified reader or buffer. + * Decodes a ReserveIdsResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Query.decode = function decode(reader, length) { + ReserveIdsResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Query(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - if (!(message.projection && message.projection.length)) - message.projection = []; - message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.kind && message.kind.length)) - message.kind = []; - message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); - break; - case 4: - message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); - break; - case 5: - if (!(message.order && message.order.length)) - message.order = []; - message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.distinctOn && message.distinctOn.length)) - message.distinctOn = []; - message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); - break; - case 7: - message.startCursor = reader.bytes(); - break; - case 8: - message.endCursor = reader.bytes(); - break; - case 10: - message.offset = reader.int32(); - break; - case 12: - message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -7363,270 +7576,98 @@ }; /** - * Decodes a Query message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Query.decodeDelimited = function decodeDelimited(reader) { + ReserveIdsResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Query message. + * Verifies a ReserveIdsResponse message. * @function verify - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Query.verify = function verify(message) { + ReserveIdsResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projection != null && message.hasOwnProperty("projection")) { - if (!Array.isArray(message.projection)) - return "projection: array expected"; - for (var i = 0; i < message.projection.length; ++i) { - var error = $root.google.datastore.v1.Projection.verify(message.projection[i]); - if (error) - return "projection." + error; - } - } - if (message.kind != null && message.hasOwnProperty("kind")) { - if (!Array.isArray(message.kind)) - return "kind: array expected"; - for (var i = 0; i < message.kind.length; ++i) { - var error = $root.google.datastore.v1.KindExpression.verify(message.kind[i]); - if (error) - return "kind." + error; - } - } - if (message.filter != null && message.hasOwnProperty("filter")) { - var error = $root.google.datastore.v1.Filter.verify(message.filter); - if (error) - return "filter." + error; - } - if (message.order != null && message.hasOwnProperty("order")) { - if (!Array.isArray(message.order)) - return "order: array expected"; - for (var i = 0; i < message.order.length; ++i) { - var error = $root.google.datastore.v1.PropertyOrder.verify(message.order[i]); - if (error) - return "order." + error; - } - } - if (message.distinctOn != null && message.hasOwnProperty("distinctOn")) { - if (!Array.isArray(message.distinctOn)) - return "distinctOn: array expected"; - for (var i = 0; i < message.distinctOn.length; ++i) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.distinctOn[i]); - if (error) - return "distinctOn." + error; - } - } - if (message.startCursor != null && message.hasOwnProperty("startCursor")) - if (!(message.startCursor && typeof message.startCursor.length === "number" || $util.isString(message.startCursor))) - return "startCursor: buffer expected"; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) - return "endCursor: buffer expected"; - if (message.offset != null && message.hasOwnProperty("offset")) - if (!$util.isInteger(message.offset)) - return "offset: integer expected"; - if (message.limit != null && message.hasOwnProperty("limit")) { - var error = $root.google.protobuf.Int32Value.verify(message.limit); - if (error) - return "limit." + error; - } return null; }; /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse */ - Query.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Query) + ReserveIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsResponse) return object; - var message = new $root.google.datastore.v1.Query(); - if (object.projection) { - if (!Array.isArray(object.projection)) - throw TypeError(".google.datastore.v1.Query.projection: array expected"); - message.projection = []; - for (var i = 0; i < object.projection.length; ++i) { - if (typeof object.projection[i] !== "object") - throw TypeError(".google.datastore.v1.Query.projection: object expected"); - message.projection[i] = $root.google.datastore.v1.Projection.fromObject(object.projection[i]); - } - } - if (object.kind) { - if (!Array.isArray(object.kind)) - throw TypeError(".google.datastore.v1.Query.kind: array expected"); - message.kind = []; - for (var i = 0; i < object.kind.length; ++i) { - if (typeof object.kind[i] !== "object") - throw TypeError(".google.datastore.v1.Query.kind: object expected"); - message.kind[i] = $root.google.datastore.v1.KindExpression.fromObject(object.kind[i]); - } - } - if (object.filter != null) { - if (typeof object.filter !== "object") - throw TypeError(".google.datastore.v1.Query.filter: object expected"); - message.filter = $root.google.datastore.v1.Filter.fromObject(object.filter); - } - if (object.order) { - if (!Array.isArray(object.order)) - throw TypeError(".google.datastore.v1.Query.order: array expected"); - message.order = []; - for (var i = 0; i < object.order.length; ++i) { - if (typeof object.order[i] !== "object") - throw TypeError(".google.datastore.v1.Query.order: object expected"); - message.order[i] = $root.google.datastore.v1.PropertyOrder.fromObject(object.order[i]); - } - } - if (object.distinctOn) { - if (!Array.isArray(object.distinctOn)) - throw TypeError(".google.datastore.v1.Query.distinctOn: array expected"); - message.distinctOn = []; - for (var i = 0; i < object.distinctOn.length; ++i) { - if (typeof object.distinctOn[i] !== "object") - throw TypeError(".google.datastore.v1.Query.distinctOn: object expected"); - message.distinctOn[i] = $root.google.datastore.v1.PropertyReference.fromObject(object.distinctOn[i]); - } - } - if (object.startCursor != null) - if (typeof object.startCursor === "string") - $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); - else if (object.startCursor.length) - message.startCursor = object.startCursor; - if (object.endCursor != null) - if (typeof object.endCursor === "string") - $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length) - message.endCursor = object.endCursor; - if (object.offset != null) - message.offset = object.offset | 0; - if (object.limit != null) { - if (typeof object.limit !== "object") - throw TypeError(".google.datastore.v1.Query.limit: object expected"); - message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); - } - return message; + return new $root.google.datastore.v1.ReserveIdsResponse(); }; /** - * Creates a plain object from a Query message. Also converts values to other types if specified. + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @static - * @param {google.datastore.v1.Query} message Query + * @param {google.datastore.v1.ReserveIdsResponse} message ReserveIdsResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Query.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.projection = []; - object.kind = []; - object.order = []; - object.distinctOn = []; - } - if (options.defaults) { - object.filter = null; - if (options.bytes === String) - object.startCursor = ""; - else { - object.startCursor = []; - if (options.bytes !== Array) - object.startCursor = $util.newBuffer(object.startCursor); - } - if (options.bytes === String) - object.endCursor = ""; - else { - object.endCursor = []; - if (options.bytes !== Array) - object.endCursor = $util.newBuffer(object.endCursor); - } - object.offset = 0; - object.limit = null; - } - if (message.projection && message.projection.length) { - object.projection = []; - for (var j = 0; j < message.projection.length; ++j) - object.projection[j] = $root.google.datastore.v1.Projection.toObject(message.projection[j], options); - } - if (message.kind && message.kind.length) { - object.kind = []; - for (var j = 0; j < message.kind.length; ++j) - object.kind[j] = $root.google.datastore.v1.KindExpression.toObject(message.kind[j], options); - } - if (message.filter != null && message.hasOwnProperty("filter")) - object.filter = $root.google.datastore.v1.Filter.toObject(message.filter, options); - if (message.order && message.order.length) { - object.order = []; - for (var j = 0; j < message.order.length; ++j) - object.order[j] = $root.google.datastore.v1.PropertyOrder.toObject(message.order[j], options); - } - if (message.distinctOn && message.distinctOn.length) { - object.distinctOn = []; - for (var j = 0; j < message.distinctOn.length; ++j) - object.distinctOn[j] = $root.google.datastore.v1.PropertyReference.toObject(message.distinctOn[j], options); - } - if (message.startCursor != null && message.hasOwnProperty("startCursor")) - object.startCursor = options.bytes === String ? $util.base64.encode(message.startCursor, 0, message.startCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.startCursor) : message.startCursor; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; - if (message.offset != null && message.hasOwnProperty("offset")) - object.offset = message.offset; - if (message.limit != null && message.hasOwnProperty("limit")) - object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); - return object; + ReserveIdsResponse.toObject = function toObject() { + return {}; }; /** - * Converts this Query to JSON. + * Converts this ReserveIdsResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.ReserveIdsResponse * @instance * @returns {Object.} JSON object */ - Query.prototype.toJSON = function toJSON() { + ReserveIdsResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Query; + return ReserveIdsResponse; })(); - v1.KindExpression = (function() { + v1.Mutation = (function() { /** - * Properties of a KindExpression. + * Properties of a Mutation. * @memberof google.datastore.v1 - * @interface IKindExpression - * @property {string|null} [name] KindExpression name + * @interface IMutation + * @property {google.datastore.v1.IEntity|null} [insert] Mutation insert + * @property {google.datastore.v1.IEntity|null} [update] Mutation update + * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert + * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete + * @property {number|Long|null} [baseVersion] Mutation baseVersion */ /** - * Constructs a new KindExpression. + * Constructs a new Mutation. * @memberof google.datastore.v1 - * @classdesc Represents a KindExpression. - * @implements IKindExpression + * @classdesc Represents a Mutation. + * @implements IMutation * @constructor - * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + * @param {google.datastore.v1.IMutation=} [properties] Properties to set */ - function KindExpression(properties) { + function Mutation(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7634,75 +7675,152 @@ } /** - * KindExpression name. - * @member {string} name - * @memberof google.datastore.v1.KindExpression + * Mutation insert. + * @member {google.datastore.v1.IEntity|null|undefined} insert + * @memberof google.datastore.v1.Mutation * @instance */ - KindExpression.prototype.name = ""; + Mutation.prototype.insert = null; /** - * Creates a new KindExpression instance using the specified properties. + * Mutation update. + * @member {google.datastore.v1.IEntity|null|undefined} update + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.update = null; + + /** + * Mutation upsert. + * @member {google.datastore.v1.IEntity|null|undefined} upsert + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.upsert = null; + + /** + * Mutation delete. + * @member {google.datastore.v1.IKey|null|undefined} delete + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype["delete"] = null; + + /** + * Mutation baseVersion. + * @member {number|Long} baseVersion + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.baseVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Mutation operation. + * @member {"insert"|"update"|"upsert"|"delete"|undefined} operation + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "operation", { + get: $util.oneOfGetter($oneOfFields = ["insert", "update", "upsert", "delete"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Mutation conflictDetectionStrategy. + * @member {"baseVersion"|undefined} conflictDetectionStrategy + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { + get: $util.oneOfGetter($oneOfFields = ["baseVersion"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Mutation instance using the specified properties. * @function create - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static - * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set - * @returns {google.datastore.v1.KindExpression} KindExpression instance + * @param {google.datastore.v1.IMutation=} [properties] Properties to set + * @returns {google.datastore.v1.Mutation} Mutation instance */ - KindExpression.create = function create(properties) { - return new KindExpression(properties); + Mutation.create = function create(properties) { + return new Mutation(properties); }; /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static - * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KindExpression.encode = function encode(message, writer) { + Mutation.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.insert != null && Object.hasOwnProperty.call(message, "insert")) + $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.update != null && Object.hasOwnProperty.call(message, "update")) + $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.upsert != null && Object.hasOwnProperty.call(message, "upsert")) + $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) + $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) + writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); return writer; }; /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static - * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KindExpression.encodeDelimited = function encodeDelimited(message, writer) { + Mutation.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a KindExpression message from the specified reader or buffer. + * Decodes a Mutation message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.Mutation} Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KindExpression.decode = function decode(reader, length) { + Mutation.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.KindExpression(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Mutation(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); + case 4: + message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 5: + message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 6: + message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 7: + message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 8: + message.baseVersion = reader.int64(); break; default: reader.skipType(tag & 7); @@ -7713,107 +7831,201 @@ }; /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * Decodes a Mutation message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.Mutation} Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KindExpression.decodeDelimited = function decodeDelimited(reader) { + Mutation.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a KindExpression message. + * Verifies a Mutation message. * @function verify - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KindExpression.verify = function verify(message) { + Mutation.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; + var properties = {}; + if (message.insert != null && message.hasOwnProperty("insert")) { + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.insert); + if (error) + return "insert." + error; + } + } + if (message.update != null && message.hasOwnProperty("update")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.update); + if (error) + return "update." + error; + } + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.upsert); + if (error) + return "upsert." + error; + } + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Key.verify(message["delete"]); + if (error) + return "delete." + error; + } + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + properties.conflictDetectionStrategy = 1; + if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) + return "baseVersion: integer|Long expected"; + } return null; }; /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.Mutation} Mutation */ - KindExpression.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.KindExpression) + Mutation.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Mutation) return object; - var message = new $root.google.datastore.v1.KindExpression(); - if (object.name != null) - message.name = String(object.name); + var message = new $root.google.datastore.v1.Mutation(); + if (object.insert != null) { + if (typeof object.insert !== "object") + throw TypeError(".google.datastore.v1.Mutation.insert: object expected"); + message.insert = $root.google.datastore.v1.Entity.fromObject(object.insert); + } + if (object.update != null) { + if (typeof object.update !== "object") + throw TypeError(".google.datastore.v1.Mutation.update: object expected"); + message.update = $root.google.datastore.v1.Entity.fromObject(object.update); + } + if (object.upsert != null) { + if (typeof object.upsert !== "object") + throw TypeError(".google.datastore.v1.Mutation.upsert: object expected"); + message.upsert = $root.google.datastore.v1.Entity.fromObject(object.upsert); + } + if (object["delete"] != null) { + if (typeof object["delete"] !== "object") + throw TypeError(".google.datastore.v1.Mutation.delete: object expected"); + message["delete"] = $root.google.datastore.v1.Key.fromObject(object["delete"]); + } + if (object.baseVersion != null) + if ($util.Long) + (message.baseVersion = $util.Long.fromValue(object.baseVersion)).unsigned = false; + else if (typeof object.baseVersion === "string") + message.baseVersion = parseInt(object.baseVersion, 10); + else if (typeof object.baseVersion === "number") + message.baseVersion = object.baseVersion; + else if (typeof object.baseVersion === "object") + message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); return message; }; /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * Creates a plain object from a Mutation message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @static - * @param {google.datastore.v1.KindExpression} message KindExpression + * @param {google.datastore.v1.Mutation} message Mutation * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - KindExpression.toObject = function toObject(message, options) { + Mutation.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.name = ""; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; + if (message.insert != null && message.hasOwnProperty("insert")) { + object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); + if (options.oneofs) + object.operation = "insert"; + } + if (message.update != null && message.hasOwnProperty("update")) { + object.update = $root.google.datastore.v1.Entity.toObject(message.update, options); + if (options.oneofs) + object.operation = "update"; + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + object.upsert = $root.google.datastore.v1.Entity.toObject(message.upsert, options); + if (options.oneofs) + object.operation = "upsert"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + object["delete"] = $root.google.datastore.v1.Key.toObject(message["delete"], options); + if (options.oneofs) + object.operation = "delete"; + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + if (typeof message.baseVersion === "number") + object.baseVersion = options.longs === String ? String(message.baseVersion) : message.baseVersion; + else + object.baseVersion = options.longs === String ? $util.Long.prototype.toString.call(message.baseVersion) : options.longs === Number ? new $util.LongBits(message.baseVersion.low >>> 0, message.baseVersion.high >>> 0).toNumber() : message.baseVersion; + if (options.oneofs) + object.conflictDetectionStrategy = "baseVersion"; + } return object; }; /** - * Converts this KindExpression to JSON. + * Converts this Mutation to JSON. * @function toJSON - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.Mutation * @instance * @returns {Object.} JSON object */ - KindExpression.prototype.toJSON = function toJSON() { + Mutation.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return KindExpression; + return Mutation; })(); - v1.PropertyReference = (function() { + v1.MutationResult = (function() { /** - * Properties of a PropertyReference. + * Properties of a MutationResult. * @memberof google.datastore.v1 - * @interface IPropertyReference - * @property {string|null} [name] PropertyReference name + * @interface IMutationResult + * @property {google.datastore.v1.IKey|null} [key] MutationResult key + * @property {number|Long|null} [version] MutationResult version + * @property {boolean|null} [conflictDetected] MutationResult conflictDetected */ /** - * Constructs a new PropertyReference. + * Constructs a new MutationResult. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyReference. - * @implements IPropertyReference + * @classdesc Represents a MutationResult. + * @implements IMutationResult * @constructor - * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set */ - function PropertyReference(properties) { + function MutationResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7821,75 +8033,101 @@ } /** - * PropertyReference name. - * @member {string} name - * @memberof google.datastore.v1.PropertyReference + * MutationResult key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.MutationResult * @instance */ - PropertyReference.prototype.name = ""; + MutationResult.prototype.key = null; /** - * Creates a new PropertyReference instance using the specified properties. + * MutationResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * MutationResult conflictDetected. + * @member {boolean} conflictDetected + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.conflictDetected = false; + + /** + * Creates a new MutationResult instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static - * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyReference} PropertyReference instance + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + * @returns {google.datastore.v1.MutationResult} MutationResult instance */ - PropertyReference.create = function create(properties) { - return new PropertyReference(properties); + MutationResult.create = function create(properties) { + return new MutationResult(properties); }; /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static - * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyReference.encode = function encode(message, writer) { + MutationResult.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.version != null && Object.hasOwnProperty.call(message, "version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); return writer; }; /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static - * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyReference.encodeDelimited = function encodeDelimited(message, writer) { + MutationResult.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyReference message from the specified reader or buffer. + * Decodes a MutationResult message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.MutationResult} MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyReference.decode = function decode(reader, length) { + MutationResult.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyReference(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.MutationResult(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.name = reader.string(); + case 3: + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 4: + message.version = reader.int64(); + break; + case 5: + message.conflictDetected = reader.bool(); break; default: reader.skipType(tag & 7); @@ -7900,107 +8138,144 @@ }; /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * Decodes a MutationResult message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.MutationResult} MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyReference.decodeDelimited = function decodeDelimited(reader) { + MutationResult.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyReference message. + * Verifies a MutationResult message. * @function verify - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyReference.verify = function verify(message) { + MutationResult.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + if (typeof message.conflictDetected !== "boolean") + return "conflictDetected: boolean expected"; return null; }; /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.MutationResult} MutationResult */ - PropertyReference.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyReference) + MutationResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.MutationResult) return object; - var message = new $root.google.datastore.v1.PropertyReference(); - if (object.name != null) - message.name = String(object.name); + var message = new $root.google.datastore.v1.MutationResult(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.MutationResult.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); + } + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.conflictDetected != null) + message.conflictDetected = Boolean(object.conflictDetected); return message; }; /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @static - * @param {google.datastore.v1.PropertyReference} message PropertyReference + * @param {google.datastore.v1.MutationResult} message MutationResult * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyReference.toObject = function toObject(message, options) { + MutationResult.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.name = ""; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; + if (options.defaults) { + object.key = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + object.conflictDetected = false; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + object.conflictDetected = message.conflictDetected; return object; }; /** - * Converts this PropertyReference to JSON. + * Converts this MutationResult to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.MutationResult * @instance * @returns {Object.} JSON object */ - PropertyReference.prototype.toJSON = function toJSON() { + MutationResult.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return PropertyReference; + return MutationResult; })(); - v1.Projection = (function() { + v1.ReadOptions = (function() { /** - * Properties of a Projection. + * Properties of a ReadOptions. * @memberof google.datastore.v1 - * @interface IProjection - * @property {google.datastore.v1.IPropertyReference|null} [property] Projection property + * @interface IReadOptions + * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency + * @property {Uint8Array|null} [transaction] ReadOptions transaction */ /** - * Constructs a new Projection. + * Constructs a new ReadOptions. * @memberof google.datastore.v1 - * @classdesc Represents a Projection. - * @implements IProjection + * @classdesc Represents a ReadOptions. + * @implements IReadOptions * @constructor - * @param {google.datastore.v1.IProjection=} [properties] Properties to set + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set */ - function Projection(properties) { + function ReadOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8008,75 +8283,102 @@ } /** - * Projection property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.Projection + * ReadOptions readConsistency. + * @member {google.datastore.v1.ReadOptions.ReadConsistency} readConsistency + * @memberof google.datastore.v1.ReadOptions * @instance */ - Projection.prototype.property = null; + ReadOptions.prototype.readConsistency = 0; /** - * Creates a new Projection instance using the specified properties. + * ReadOptions transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.transaction = $util.newBuffer([]); + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * ReadOptions consistencyType. + * @member {"readConsistency"|"transaction"|undefined} consistencyType + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + Object.defineProperty(ReadOptions.prototype, "consistencyType", { + get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new ReadOptions instance using the specified properties. * @function create - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static - * @param {google.datastore.v1.IProjection=} [properties] Properties to set - * @returns {google.datastore.v1.Projection} Projection instance + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + * @returns {google.datastore.v1.ReadOptions} ReadOptions instance */ - Projection.create = function create(properties) { - return new Projection(properties); + ReadOptions.create = function create(properties) { + return new ReadOptions(properties); }; /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static - * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Projection.encode = function encode(message, writer) { + ReadOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readConsistency != null && Object.hasOwnProperty.call(message, "readConsistency")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); return writer; }; /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static - * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Projection.encodeDelimited = function encodeDelimited(message, writer) { + ReadOptions.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Projection message from the specified reader or buffer. + * Decodes a ReadOptions message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.ReadOptions} ReadOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Projection.decode = function decode(reader, length) { + ReadOptions.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Projection(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReadOptions(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + message.readConsistency = reader.int32(); + break; + case 2: + message.transaction = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -8087,113 +8389,163 @@ }; /** - * Decodes a Projection message from the specified reader or buffer, length delimited. + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.ReadOptions} ReadOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Projection.decodeDelimited = function decodeDelimited(reader) { + ReadOptions.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Projection message. + * Verifies a ReadOptions message. * @function verify - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Projection.verify = function verify(message) { + ReadOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); - if (error) - return "property." + error; + var properties = {}; + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + properties.consistencyType = 1; + switch (message.readConsistency) { + default: + return "readConsistency: enum value expected"; + case 0: + case 1: + case 2: + break; + } + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; } return null; }; /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.ReadOptions} ReadOptions */ - Projection.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Projection) + ReadOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReadOptions) return object; - var message = new $root.google.datastore.v1.Projection(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.Projection.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + var message = new $root.google.datastore.v1.ReadOptions(); + switch (object.readConsistency) { + case "READ_CONSISTENCY_UNSPECIFIED": + case 0: + message.readConsistency = 0; + break; + case "STRONG": + case 1: + message.readConsistency = 1; + break; + case "EVENTUAL": + case 2: + message.readConsistency = 2; + break; } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length) + message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @static - * @param {google.datastore.v1.Projection} message Projection + * @param {google.datastore.v1.ReadOptions} message ReadOptions * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Projection.toObject = function toObject(message, options) { + ReadOptions.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.property = null; - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; + if (options.oneofs) + object.consistencyType = "readConsistency"; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (options.oneofs) + object.consistencyType = "transaction"; + } return object; }; /** - * Converts this Projection to JSON. + * Converts this ReadOptions to JSON. * @function toJSON - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.ReadOptions * @instance * @returns {Object.} JSON object */ - Projection.prototype.toJSON = function toJSON() { + ReadOptions.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Projection; + /** + * ReadConsistency enum. + * @name google.datastore.v1.ReadOptions.ReadConsistency + * @enum {number} + * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value + * @property {number} STRONG=1 STRONG value + * @property {number} EVENTUAL=2 EVENTUAL value + */ + ReadOptions.ReadConsistency = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "READ_CONSISTENCY_UNSPECIFIED"] = 0; + values[valuesById[1] = "STRONG"] = 1; + values[valuesById[2] = "EVENTUAL"] = 2; + return values; + })(); + + return ReadOptions; })(); - v1.PropertyOrder = (function() { + v1.TransactionOptions = (function() { /** - * Properties of a PropertyOrder. + * Properties of a TransactionOptions. * @memberof google.datastore.v1 - * @interface IPropertyOrder - * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyOrder property - * @property {google.datastore.v1.PropertyOrder.Direction|null} [direction] PropertyOrder direction + * @interface ITransactionOptions + * @property {google.datastore.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite + * @property {google.datastore.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly */ /** - * Constructs a new PropertyOrder. + * Constructs a new TransactionOptions. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyOrder. - * @implements IPropertyOrder + * @classdesc Represents a TransactionOptions. + * @implements ITransactionOptions * @constructor - * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set */ - function PropertyOrder(properties) { + function TransactionOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8201,88 +8553,102 @@ } /** - * PropertyOrder property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.PropertyOrder + * TransactionOptions readWrite. + * @member {google.datastore.v1.TransactionOptions.IReadWrite|null|undefined} readWrite + * @memberof google.datastore.v1.TransactionOptions * @instance */ - PropertyOrder.prototype.property = null; + TransactionOptions.prototype.readWrite = null; /** - * PropertyOrder direction. - * @member {google.datastore.v1.PropertyOrder.Direction} direction - * @memberof google.datastore.v1.PropertyOrder + * TransactionOptions readOnly. + * @member {google.datastore.v1.TransactionOptions.IReadOnly|null|undefined} readOnly + * @memberof google.datastore.v1.TransactionOptions * @instance */ - PropertyOrder.prototype.direction = 0; + TransactionOptions.prototype.readOnly = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * Creates a new PropertyOrder instance using the specified properties. + * TransactionOptions mode. + * @member {"readWrite"|"readOnly"|undefined} mode + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + Object.defineProperty(TransactionOptions.prototype, "mode", { + get: $util.oneOfGetter($oneOfFields = ["readWrite", "readOnly"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new TransactionOptions instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static - * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder instance + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions instance */ - PropertyOrder.create = function create(properties) { - return new PropertyOrder(properties); + TransactionOptions.create = function create(properties) { + return new TransactionOptions(properties); }; /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static - * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyOrder.encode = function encode(message, writer) { + TransactionOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); + if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) + $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) + $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static - * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyOrder.encodeDelimited = function encodeDelimited(message, writer) { + TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyOrder message from the specified reader or buffer. + * Decodes a TransactionOptions message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyOrder.decode = function decode(reader, length) { + TransactionOptions.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyOrder(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); break; case 2: - message.direction = reader.int32(); + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -8293,494 +8659,583 @@ }; /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyOrder.decodeDelimited = function decodeDelimited(reader) { + TransactionOptions.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyOrder message. + * Verifies a TransactionOptions message. * @function verify - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyOrder.verify = function verify(message) { + TransactionOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); - if (error) - return "property." + error; + var properties = {}; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadWrite.verify(message.readWrite); + if (error) + return "readWrite." + error; + } } - if (message.direction != null && message.hasOwnProperty("direction")) - switch (message.direction) { - default: - return "direction: enum value expected"; - case 0: - case 1: - case 2: - break; + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + if (properties.mode === 1) + return "mode: multiple values"; + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadOnly.verify(message.readOnly); + if (error) + return "readOnly." + error; } + } return null; }; /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions */ - PropertyOrder.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyOrder) + TransactionOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions) return object; - var message = new $root.google.datastore.v1.PropertyOrder(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.PropertyOrder.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + var message = new $root.google.datastore.v1.TransactionOptions(); + if (object.readWrite != null) { + if (typeof object.readWrite !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readWrite: object expected"); + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); } - switch (object.direction) { - case "DIRECTION_UNSPECIFIED": - case 0: - message.direction = 0; - break; - case "ASCENDING": - case 1: - message.direction = 1; - break; - case "DESCENDING": - case 2: - message.direction = 2; - break; + if (object.readOnly != null) { + if (typeof object.readOnly !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readOnly: object expected"); + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); } return message; }; /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @static - * @param {google.datastore.v1.PropertyOrder} message PropertyOrder + * @param {google.datastore.v1.TransactionOptions} message TransactionOptions * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyOrder.toObject = function toObject(message, options) { + TransactionOptions.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.property = null; - object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + object.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); + if (options.oneofs) + object.mode = "readWrite"; + } + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + object.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); + if (options.oneofs) + object.mode = "readOnly"; } - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); - if (message.direction != null && message.hasOwnProperty("direction")) - object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; return object; }; /** - * Converts this PropertyOrder to JSON. + * Converts this TransactionOptions to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.TransactionOptions * @instance * @returns {Object.} JSON object */ - PropertyOrder.prototype.toJSON = function toJSON() { + TransactionOptions.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * Direction enum. - * @name google.datastore.v1.PropertyOrder.Direction - * @enum {number} - * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value - * @property {number} ASCENDING=1 ASCENDING value - * @property {number} DESCENDING=2 DESCENDING value - */ - PropertyOrder.Direction = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; - values[valuesById[1] = "ASCENDING"] = 1; - values[valuesById[2] = "DESCENDING"] = 2; - return values; - })(); - - return PropertyOrder; - })(); - - v1.Filter = (function() { + TransactionOptions.ReadWrite = (function() { - /** - * Properties of a Filter. - * @memberof google.datastore.v1 - * @interface IFilter - * @property {google.datastore.v1.ICompositeFilter|null} [compositeFilter] Filter compositeFilter - * @property {google.datastore.v1.IPropertyFilter|null} [propertyFilter] Filter propertyFilter - */ + /** + * Properties of a ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadWrite + * @property {Uint8Array|null} [previousTransaction] ReadWrite previousTransaction + */ - /** - * Constructs a new Filter. - * @memberof google.datastore.v1 - * @classdesc Represents a Filter. - * @implements IFilter - * @constructor - * @param {google.datastore.v1.IFilter=} [properties] Properties to set - */ - function Filter(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadWrite. + * @implements IReadWrite + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + */ + function ReadWrite(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Filter compositeFilter. - * @member {google.datastore.v1.ICompositeFilter|null|undefined} compositeFilter - * @memberof google.datastore.v1.Filter - * @instance - */ - Filter.prototype.compositeFilter = null; + /** + * ReadWrite previousTransaction. + * @member {Uint8Array} previousTransaction + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + */ + ReadWrite.prototype.previousTransaction = $util.newBuffer([]); - /** - * Filter propertyFilter. - * @member {google.datastore.v1.IPropertyFilter|null|undefined} propertyFilter - * @memberof google.datastore.v1.Filter - * @instance - */ - Filter.prototype.propertyFilter = null; + /** + * Creates a new ReadWrite instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite instance + */ + ReadWrite.create = function create(properties) { + return new ReadWrite(properties); + }; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.previousTransaction != null && Object.hasOwnProperty.call(message, "previousTransaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); + return writer; + }; - /** - * Filter filterType. - * @member {"compositeFilter"|"propertyFilter"|undefined} filterType - * @memberof google.datastore.v1.Filter - * @instance - */ - Object.defineProperty(Filter.prototype, "filterType", { - get: $util.oneOfGetter($oneOfFields = ["compositeFilter", "propertyFilter"]), - set: $util.oneOfSetter($oneOfFields) - }); + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates a new Filter instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Filter - * @static - * @param {google.datastore.v1.IFilter=} [properties] Properties to set - * @returns {google.datastore.v1.Filter} Filter instance - */ - Filter.create = function create(properties) { - return new Filter(properties); - }; + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.previousTransaction = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.Filter - * @static - * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Filter.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.compositeFilter != null && Object.hasOwnProperty.call(message, "compositeFilter")) - $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.propertyFilter != null && Object.hasOwnProperty.call(message, "propertyFilter")) - $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.Filter - * @static - * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Filter.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Verifies a ReadWrite message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadWrite.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + if (!(message.previousTransaction && typeof message.previousTransaction.length === "number" || $util.isString(message.previousTransaction))) + return "previousTransaction: buffer expected"; + return null; + }; - /** - * Decodes a Filter message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.Filter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Filter} Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Filter.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Filter(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); - break; - case 2: - message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a Filter message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.Filter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Filter} Filter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Filter.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a Filter message. - * @function verify - * @memberof google.datastore.v1.Filter - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Filter.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { - properties.filterType = 1; - { - var error = $root.google.datastore.v1.CompositeFilter.verify(message.compositeFilter); - if (error) - return "compositeFilter." + error; - } - } - if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { - if (properties.filterType === 1) - return "filterType: multiple values"; - properties.filterType = 1; - { - var error = $root.google.datastore.v1.PropertyFilter.verify(message.propertyFilter); - if (error) - return "propertyFilter." + error; - } - } - return null; - }; + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + */ + ReadWrite.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadWrite) + return object; + var message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + if (object.previousTransaction != null) + if (typeof object.previousTransaction === "string") + $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); + else if (object.previousTransaction.length) + message.previousTransaction = object.previousTransaction; + return message; + }; - /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.Filter - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.Filter} Filter - */ - Filter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Filter) + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.ReadWrite} message ReadWrite + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadWrite.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.previousTransaction = ""; + else { + object.previousTransaction = []; + if (options.bytes !== Array) + object.previousTransaction = $util.newBuffer(object.previousTransaction); + } + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + object.previousTransaction = options.bytes === String ? $util.base64.encode(message.previousTransaction, 0, message.previousTransaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.previousTransaction) : message.previousTransaction; return object; - var message = new $root.google.datastore.v1.Filter(); - if (object.compositeFilter != null) { - if (typeof object.compositeFilter !== "object") - throw TypeError(".google.datastore.v1.Filter.compositeFilter: object expected"); - message.compositeFilter = $root.google.datastore.v1.CompositeFilter.fromObject(object.compositeFilter); - } - if (object.propertyFilter != null) { - if (typeof object.propertyFilter !== "object") - throw TypeError(".google.datastore.v1.Filter.propertyFilter: object expected"); - message.propertyFilter = $root.google.datastore.v1.PropertyFilter.fromObject(object.propertyFilter); - } - return message; - }; - - /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.Filter - * @static - * @param {google.datastore.v1.Filter} message Filter - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Filter.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { - object.compositeFilter = $root.google.datastore.v1.CompositeFilter.toObject(message.compositeFilter, options); - if (options.oneofs) - object.filterType = "compositeFilter"; - } - if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { - object.propertyFilter = $root.google.datastore.v1.PropertyFilter.toObject(message.propertyFilter, options); - if (options.oneofs) - object.filterType = "propertyFilter"; - } - return object; - }; + }; - /** - * Converts this Filter to JSON. - * @function toJSON - * @memberof google.datastore.v1.Filter - * @instance - * @returns {Object.} JSON object - */ - Filter.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this ReadWrite to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + * @returns {Object.} JSON object + */ + ReadWrite.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return Filter; - })(); + return ReadWrite; + })(); - v1.CompositeFilter = (function() { + TransactionOptions.ReadOnly = (function() { - /** - * Properties of a CompositeFilter. - * @memberof google.datastore.v1 - * @interface ICompositeFilter - * @property {google.datastore.v1.CompositeFilter.Operator|null} [op] CompositeFilter op - * @property {Array.|null} [filters] CompositeFilter filters - */ + /** + * Properties of a ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadOnly + */ - /** - * Constructs a new CompositeFilter. - * @memberof google.datastore.v1 - * @classdesc Represents a CompositeFilter. - * @implements ICompositeFilter - * @constructor - * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set - */ - function CompositeFilter(properties) { - this.filters = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadOnly. + * @implements IReadOnly + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + */ + function ReadOnly(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * CompositeFilter op. - * @member {google.datastore.v1.CompositeFilter.Operator} op - * @memberof google.datastore.v1.CompositeFilter - * @instance - */ - CompositeFilter.prototype.op = 0; + /** + * Creates a new ReadOnly instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly instance + */ + ReadOnly.create = function create(properties) { + return new ReadOnly(properties); + }; - /** - * CompositeFilter filters. - * @member {Array.} filters - * @memberof google.datastore.v1.CompositeFilter + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOnly message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOnly.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + */ + ReadOnly.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) + return object; + return new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + }; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.ReadOnly} message ReadOnly + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOnly.toObject = function toObject() { + return {}; + }; + + /** + * Converts this ReadOnly to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @instance + * @returns {Object.} JSON object + */ + ReadOnly.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReadOnly; + })(); + + return TransactionOptions; + })(); + + v1.PartitionId = (function() { + + /** + * Properties of a PartitionId. + * @memberof google.datastore.v1 + * @interface IPartitionId + * @property {string|null} [projectId] PartitionId projectId + * @property {string|null} [namespaceId] PartitionId namespaceId + */ + + /** + * Constructs a new PartitionId. + * @memberof google.datastore.v1 + * @classdesc Represents a PartitionId. + * @implements IPartitionId + * @constructor + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + */ + function PartitionId(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PartitionId projectId. + * @member {string} projectId + * @memberof google.datastore.v1.PartitionId * @instance */ - CompositeFilter.prototype.filters = $util.emptyArray; + PartitionId.prototype.projectId = ""; /** - * Creates a new CompositeFilter instance using the specified properties. + * PartitionId namespaceId. + * @member {string} namespaceId + * @memberof google.datastore.v1.PartitionId + * @instance + */ + PartitionId.prototype.namespaceId = ""; + + /** + * Creates a new PartitionId instance using the specified properties. * @function create - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter instance + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + * @returns {google.datastore.v1.PartitionId} PartitionId instance */ - CompositeFilter.create = function create(properties) { - return new CompositeFilter(properties); + PartitionId.create = function create(properties) { + return new PartitionId(properties); }; /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CompositeFilter.encode = function encode(message, writer) { + PartitionId.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.op != null && Object.hasOwnProperty.call(message, "op")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); - if (message.filters != null && message.filters.length) - for (var i = 0; i < message.filters.length; ++i) - $root.google.datastore.v1.Filter.encode(message.filters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); + if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); return writer; }; /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CompositeFilter.encodeDelimited = function encodeDelimited(message, writer) { + PartitionId.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CompositeFilter message from the specified reader or buffer. + * Decodes a PartitionId message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.PartitionId} PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompositeFilter.decode = function decode(reader, length) { + PartitionId.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CompositeFilter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PartitionId(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.op = reader.int32(); - break; case 2: - if (!(message.filters && message.filters.length)) - message.filters = []; - message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); + message.projectId = reader.string(); + break; + case 4: + message.namespaceId = reader.string(); break; default: reader.skipType(tag & 7); @@ -8791,162 +9246,118 @@ }; /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * Decodes a PartitionId message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.PartitionId} PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompositeFilter.decodeDelimited = function decodeDelimited(reader) { + PartitionId.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CompositeFilter message. + * Verifies a PartitionId message. * @function verify - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompositeFilter.verify = function verify(message) { + PartitionId.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.op != null && message.hasOwnProperty("op")) - switch (message.op) { - default: - return "op: enum value expected"; - case 0: - case 1: - break; - } - if (message.filters != null && message.hasOwnProperty("filters")) { - if (!Array.isArray(message.filters)) - return "filters: array expected"; - for (var i = 0; i < message.filters.length; ++i) { - var error = $root.google.datastore.v1.Filter.verify(message.filters[i]); - if (error) - return "filters." + error; - } - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + if (!$util.isString(message.namespaceId)) + return "namespaceId: string expected"; return null; }; /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.PartitionId} PartitionId */ - CompositeFilter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CompositeFilter) + PartitionId.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PartitionId) return object; - var message = new $root.google.datastore.v1.CompositeFilter(); - switch (object.op) { - case "OPERATOR_UNSPECIFIED": - case 0: - message.op = 0; - break; - case "AND": - case 1: - message.op = 1; - break; - } - if (object.filters) { - if (!Array.isArray(object.filters)) - throw TypeError(".google.datastore.v1.CompositeFilter.filters: array expected"); - message.filters = []; - for (var i = 0; i < object.filters.length; ++i) { - if (typeof object.filters[i] !== "object") - throw TypeError(".google.datastore.v1.CompositeFilter.filters: object expected"); - message.filters[i] = $root.google.datastore.v1.Filter.fromObject(object.filters[i]); - } - } + var message = new $root.google.datastore.v1.PartitionId(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.namespaceId != null) + message.namespaceId = String(object.namespaceId); return message; }; /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.CompositeFilter} message CompositeFilter + * @param {google.datastore.v1.PartitionId} message PartitionId * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CompositeFilter.toObject = function toObject(message, options) { + PartitionId.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.filters = []; - if (options.defaults) - object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; - if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; - if (message.filters && message.filters.length) { - object.filters = []; - for (var j = 0; j < message.filters.length; ++j) - object.filters[j] = $root.google.datastore.v1.Filter.toObject(message.filters[j], options); + if (options.defaults) { + object.projectId = ""; + object.namespaceId = ""; } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + object.namespaceId = message.namespaceId; return object; }; /** - * Converts this CompositeFilter to JSON. + * Converts this PartitionId to JSON. * @function toJSON - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.PartitionId * @instance * @returns {Object.} JSON object */ - CompositeFilter.prototype.toJSON = function toJSON() { + PartitionId.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * Operator enum. - * @name google.datastore.v1.CompositeFilter.Operator - * @enum {number} - * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value - * @property {number} AND=1 AND value - */ - CompositeFilter.Operator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; - values[valuesById[1] = "AND"] = 1; - return values; - })(); - - return CompositeFilter; + return PartitionId; })(); - v1.PropertyFilter = (function() { + v1.Key = (function() { /** - * Properties of a PropertyFilter. + * Properties of a Key. * @memberof google.datastore.v1 - * @interface IPropertyFilter - * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyFilter property - * @property {google.datastore.v1.PropertyFilter.Operator|null} [op] PropertyFilter op - * @property {google.datastore.v1.IValue|null} [value] PropertyFilter value + * @interface IKey + * @property {google.datastore.v1.IPartitionId|null} [partitionId] Key partitionId + * @property {Array.|null} [path] Key path */ /** - * Constructs a new PropertyFilter. + * Constructs a new Key. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyFilter. - * @implements IPropertyFilter + * @classdesc Represents a Key. + * @implements IKey * @constructor - * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + * @param {google.datastore.v1.IKey=} [properties] Properties to set */ - function PropertyFilter(properties) { + function Key(properties) { + this.path = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8954,101 +9365,91 @@ } /** - * PropertyFilter property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.PropertyFilter - * @instance - */ - PropertyFilter.prototype.property = null; - - /** - * PropertyFilter op. - * @member {google.datastore.v1.PropertyFilter.Operator} op - * @memberof google.datastore.v1.PropertyFilter + * Key partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.Key * @instance */ - PropertyFilter.prototype.op = 0; + Key.prototype.partitionId = null; /** - * PropertyFilter value. - * @member {google.datastore.v1.IValue|null|undefined} value - * @memberof google.datastore.v1.PropertyFilter + * Key path. + * @member {Array.} path + * @memberof google.datastore.v1.Key * @instance */ - PropertyFilter.prototype.value = null; + Key.prototype.path = $util.emptyArray; /** - * Creates a new PropertyFilter instance using the specified properties. + * Creates a new Key instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter instance + * @param {google.datastore.v1.IKey=} [properties] Properties to set + * @returns {google.datastore.v1.Key} Key instance */ - PropertyFilter.create = function create(properties) { - return new PropertyFilter(properties); + Key.create = function create(properties) { + return new Key(properties); }; /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {google.datastore.v1.IKey} message Key message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyFilter.encode = function encode(message, writer) { + Key.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.op != null && Object.hasOwnProperty.call(message, "op")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.path != null && message.path.length) + for (var i = 0; i < message.path.length; ++i) + $root.google.datastore.v1.Key.PathElement.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {google.datastore.v1.IKey} message Key message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyFilter.encodeDelimited = function encodeDelimited(message, writer) { + Key.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyFilter message from the specified reader or buffer. + * Decodes a Key message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.Key} Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyFilter.decode = function decode(reader, length) { + Key.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyFilter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); break; case 2: - message.op = reader.int32(); - break; - case 3: - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + if (!(message.path && message.path.length)) + message.path = []; + message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -9059,327 +9460,484 @@ }; /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * Decodes a Key message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.Key} Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyFilter.decodeDelimited = function decodeDelimited(reader) { + Key.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyFilter message. + * Verifies a Key message. * @function verify - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyFilter.verify = function verify(message) { + Key.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); if (error) - return "property." + error; + return "partitionId." + error; } - if (message.op != null && message.hasOwnProperty("op")) - switch (message.op) { - default: - return "op: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 11: - break; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) { + var error = $root.google.datastore.v1.Key.PathElement.verify(message.path[i]); + if (error) + return "path." + error; } - if (message.value != null && message.hasOwnProperty("value")) { - var error = $root.google.datastore.v1.Value.verify(message.value); - if (error) - return "value." + error; } return null; }; /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * Creates a Key message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.Key} Key */ - PropertyFilter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyFilter) + Key.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key) return object; - var message = new $root.google.datastore.v1.PropertyFilter(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.PropertyFilter.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); - } - switch (object.op) { - case "OPERATOR_UNSPECIFIED": - case 0: - message.op = 0; - break; - case "LESS_THAN": - case 1: - message.op = 1; - break; - case "LESS_THAN_OR_EQUAL": - case 2: - message.op = 2; - break; - case "GREATER_THAN": - case 3: - message.op = 3; - break; - case "GREATER_THAN_OR_EQUAL": - case 4: - message.op = 4; - break; - case "EQUAL": - case 5: - message.op = 5; - break; - case "HAS_ANCESTOR": - case 11: - message.op = 11; - break; + var message = new $root.google.datastore.v1.Key(); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.Key.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); } - if (object.value != null) { - if (typeof object.value !== "object") - throw TypeError(".google.datastore.v1.PropertyFilter.value: object expected"); - message.value = $root.google.datastore.v1.Value.fromObject(object.value); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.datastore.v1.Key.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) { + if (typeof object.path[i] !== "object") + throw TypeError(".google.datastore.v1.Key.path: object expected"); + message.path[i] = $root.google.datastore.v1.Key.PathElement.fromObject(object.path[i]); + } } return message; }; /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * Creates a plain object from a Key message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.PropertyFilter} message PropertyFilter + * @param {google.datastore.v1.Key} message Key * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyFilter.toObject = function toObject(message, options) { + Key.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.property = null; - object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; - object.value = null; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) + object.partitionId = null; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = $root.google.datastore.v1.Key.PathElement.toObject(message.path[j], options); } - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); - if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; - if (message.value != null && message.hasOwnProperty("value")) - object.value = $root.google.datastore.v1.Value.toObject(message.value, options); return object; }; /** - * Converts this PropertyFilter to JSON. + * Converts this Key to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.Key * @instance * @returns {Object.} JSON object */ - PropertyFilter.prototype.toJSON = function toJSON() { + Key.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * Operator enum. - * @name google.datastore.v1.PropertyFilter.Operator - * @enum {number} - * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value - * @property {number} LESS_THAN=1 LESS_THAN value - * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value - * @property {number} GREATER_THAN=3 GREATER_THAN value - * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value - * @property {number} EQUAL=5 EQUAL value - * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value - */ - PropertyFilter.Operator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; - values[valuesById[1] = "LESS_THAN"] = 1; - values[valuesById[2] = "LESS_THAN_OR_EQUAL"] = 2; - values[valuesById[3] = "GREATER_THAN"] = 3; - values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; - values[valuesById[5] = "EQUAL"] = 5; - values[valuesById[11] = "HAS_ANCESTOR"] = 11; - return values; - })(); + Key.PathElement = (function() { - return PropertyFilter; - })(); + /** + * Properties of a PathElement. + * @memberof google.datastore.v1.Key + * @interface IPathElement + * @property {string|null} [kind] PathElement kind + * @property {number|Long|null} [id] PathElement id + * @property {string|null} [name] PathElement name + */ - v1.GqlQuery = (function() { + /** + * Constructs a new PathElement. + * @memberof google.datastore.v1.Key + * @classdesc Represents a PathElement. + * @implements IPathElement + * @constructor + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + */ + function PathElement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Properties of a GqlQuery. - * @memberof google.datastore.v1 - * @interface IGqlQuery - * @property {string|null} [queryString] GqlQuery queryString - * @property {boolean|null} [allowLiterals] GqlQuery allowLiterals - * @property {Object.|null} [namedBindings] GqlQuery namedBindings - * @property {Array.|null} [positionalBindings] GqlQuery positionalBindings - */ + /** + * PathElement kind. + * @member {string} kind + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.kind = ""; - /** - * Constructs a new GqlQuery. - * @memberof google.datastore.v1 - * @classdesc Represents a GqlQuery. - * @implements IGqlQuery - * @constructor - * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set - */ - function GqlQuery(properties) { - this.namedBindings = {}; - this.positionalBindings = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * PathElement id. + * @member {number|Long} id + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * GqlQuery queryString. - * @member {string} queryString - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.queryString = ""; + /** + * PathElement name. + * @member {string} name + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.name = ""; - /** - * GqlQuery allowLiterals. - * @member {boolean} allowLiterals - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.allowLiterals = false; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * GqlQuery namedBindings. - * @member {Object.} namedBindings - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.namedBindings = $util.emptyObject; + /** + * PathElement idType. + * @member {"id"|"name"|undefined} idType + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + Object.defineProperty(PathElement.prototype, "idType", { + get: $util.oneOfGetter($oneOfFields = ["id", "name"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * GqlQuery positionalBindings. - * @member {Array.} positionalBindings - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.positionalBindings = $util.emptyArray; + /** + * Creates a new PathElement instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + * @returns {google.datastore.v1.Key.PathElement} PathElement instance + */ + PathElement.create = function create(properties) { + return new PathElement(properties); + }; - /** - * Creates a new GqlQuery instance using the specified properties. - * @function create - * @memberof google.datastore.v1.GqlQuery - * @static - * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set - * @returns {google.datastore.v1.GqlQuery} GqlQuery instance - */ - GqlQuery.create = function create(properties) { - return new GqlQuery(properties); - }; + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + return writer; + }; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key.PathElement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.kind = reader.string(); + break; + case 2: + message.id = reader.int64(); + break; + case 3: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PathElement message. + * @function verify + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PathElement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.id != null && message.hasOwnProperty("id")) { + properties.idType = 1; + if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) + return "id: integer|Long expected"; + } + if (message.name != null && message.hasOwnProperty("name")) { + if (properties.idType === 1) + return "idType: multiple values"; + properties.idType = 1; + if (!$util.isString(message.name)) + return "name: string expected"; + } + return null; + }; + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Key.PathElement} PathElement + */ + PathElement.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key.PathElement) + return object; + var message = new $root.google.datastore.v1.Key.PathElement(); + if (object.kind != null) + message.kind = String(object.kind); + if (object.id != null) + if ($util.Long) + (message.id = $util.Long.fromValue(object.id)).unsigned = false; + else if (typeof object.id === "string") + message.id = parseInt(object.id, 10); + else if (typeof object.id === "number") + message.id = object.id; + else if (typeof object.id === "object") + message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(); + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.PathElement} message PathElement + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PathElement.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.kind = ""; + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.id != null && message.hasOwnProperty("id")) { + if (typeof message.id === "number") + object.id = options.longs === String ? String(message.id) : message.id; + else + object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id; + if (options.oneofs) + object.idType = "id"; + } + if (message.name != null && message.hasOwnProperty("name")) { + object.name = message.name; + if (options.oneofs) + object.idType = "name"; + } + return object; + }; + + /** + * Converts this PathElement to JSON. + * @function toJSON + * @memberof google.datastore.v1.Key.PathElement + * @instance + * @returns {Object.} JSON object + */ + PathElement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PathElement; + })(); + + return Key; + })(); + + v1.ArrayValue = (function() { /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * Properties of an ArrayValue. + * @memberof google.datastore.v1 + * @interface IArrayValue + * @property {Array.|null} [values] ArrayValue values + */ + + /** + * Constructs a new ArrayValue. + * @memberof google.datastore.v1 + * @classdesc Represents an ArrayValue. + * @implements IArrayValue + * @constructor + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + */ + function ArrayValue(properties) { + this.values = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ArrayValue values. + * @member {Array.} values + * @memberof google.datastore.v1.ArrayValue + * @instance + */ + ArrayValue.prototype.values = $util.emptyArray; + + /** + * Creates a new ArrayValue instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + * @returns {google.datastore.v1.ArrayValue} ArrayValue instance + */ + ArrayValue.create = function create(properties) { + return new ArrayValue(properties); + }; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQuery.encode = function encode(message, writer) { + ArrayValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.queryString != null && Object.hasOwnProperty.call(message, "queryString")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); - if (message.allowLiterals != null && Object.hasOwnProperty.call(message, "allowLiterals")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); - if (message.positionalBindings != null && message.positionalBindings.length) - for (var i = 0; i < message.positionalBindings.length; ++i) - $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.namedBindings != null && Object.hasOwnProperty.call(message, "namedBindings")) - for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.datastore.v1.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQuery.encodeDelimited = function encodeDelimited(message, writer) { + ArrayValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a GqlQuery message from the specified reader or buffer. + * Decodes an ArrayValue message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.ArrayValue} ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQuery.decode = function decode(reader, length) { + ArrayValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ArrayValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.queryString = reader.string(); - break; - case 2: - message.allowLiterals = reader.bool(); - break; - case 5: - reader.skip().pos++; - if (message.namedBindings === $util.emptyObject) - message.namedBindings = {}; - key = reader.string(); - reader.pos++; - message.namedBindings[key] = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.positionalBindings && message.positionalBindings.length)) - message.positionalBindings = []; - message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -9390,171 +9948,136 @@ }; /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.ArrayValue} ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQuery.decodeDelimited = function decodeDelimited(reader) { + ArrayValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a GqlQuery message. + * Verifies an ArrayValue message. * @function verify - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GqlQuery.verify = function verify(message) { + ArrayValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.queryString != null && message.hasOwnProperty("queryString")) - if (!$util.isString(message.queryString)) - return "queryString: string expected"; - if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) - if (typeof message.allowLiterals !== "boolean") - return "allowLiterals: boolean expected"; - if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) { - if (!$util.isObject(message.namedBindings)) - return "namedBindings: object expected"; - var key = Object.keys(message.namedBindings); - for (var i = 0; i < key.length; ++i) { - var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.namedBindings[key[i]]); - if (error) - return "namedBindings." + error; - } - } - if (message.positionalBindings != null && message.hasOwnProperty("positionalBindings")) { - if (!Array.isArray(message.positionalBindings)) - return "positionalBindings: array expected"; - for (var i = 0; i < message.positionalBindings.length; ++i) { - var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.positionalBindings[i]); + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.values[i]); if (error) - return "positionalBindings." + error; + return "values." + error; } } return null; }; /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.ArrayValue} ArrayValue */ - GqlQuery.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.GqlQuery) + ArrayValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ArrayValue) return object; - var message = new $root.google.datastore.v1.GqlQuery(); - if (object.queryString != null) - message.queryString = String(object.queryString); - if (object.allowLiterals != null) - message.allowLiterals = Boolean(object.allowLiterals); - if (object.namedBindings) { - if (typeof object.namedBindings !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); - message.namedBindings = {}; - for (var keys = Object.keys(object.namedBindings), i = 0; i < keys.length; ++i) { - if (typeof object.namedBindings[keys[i]] !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); - message.namedBindings[keys[i]] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.namedBindings[keys[i]]); - } - } - if (object.positionalBindings) { - if (!Array.isArray(object.positionalBindings)) - throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: array expected"); - message.positionalBindings = []; - for (var i = 0; i < object.positionalBindings.length; ++i) { - if (typeof object.positionalBindings[i] !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: object expected"); - message.positionalBindings[i] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.positionalBindings[i]); + var message = new $root.google.datastore.v1.ArrayValue(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.datastore.v1.ArrayValue.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.datastore.v1.ArrayValue.values: object expected"); + message.values[i] = $root.google.datastore.v1.Value.fromObject(object.values[i]); } } return message; }; /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.GqlQuery} message GqlQuery + * @param {google.datastore.v1.ArrayValue} message ArrayValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GqlQuery.toObject = function toObject(message, options) { + ArrayValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.positionalBindings = []; - if (options.objects || options.defaults) - object.namedBindings = {}; - if (options.defaults) { - object.queryString = ""; - object.allowLiterals = false; - } - if (message.queryString != null && message.hasOwnProperty("queryString")) - object.queryString = message.queryString; - if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) - object.allowLiterals = message.allowLiterals; - if (message.positionalBindings && message.positionalBindings.length) { - object.positionalBindings = []; - for (var j = 0; j < message.positionalBindings.length; ++j) - object.positionalBindings[j] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.positionalBindings[j], options); - } - var keys2; - if (message.namedBindings && (keys2 = Object.keys(message.namedBindings)).length) { - object.namedBindings = {}; - for (var j = 0; j < keys2.length; ++j) - object.namedBindings[keys2[j]] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.namedBindings[keys2[j]], options); + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.datastore.v1.Value.toObject(message.values[j], options); } return object; }; /** - * Converts this GqlQuery to JSON. + * Converts this ArrayValue to JSON. * @function toJSON - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.ArrayValue * @instance * @returns {Object.} JSON object */ - GqlQuery.prototype.toJSON = function toJSON() { + ArrayValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return GqlQuery; + return ArrayValue; })(); - v1.GqlQueryParameter = (function() { + v1.Value = (function() { /** - * Properties of a GqlQueryParameter. + * Properties of a Value. * @memberof google.datastore.v1 - * @interface IGqlQueryParameter - * @property {google.datastore.v1.IValue|null} [value] GqlQueryParameter value - * @property {Uint8Array|null} [cursor] GqlQueryParameter cursor + * @interface IValue + * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue + * @property {boolean|null} [booleanValue] Value booleanValue + * @property {number|Long|null} [integerValue] Value integerValue + * @property {number|null} [doubleValue] Value doubleValue + * @property {google.protobuf.ITimestamp|null} [timestampValue] Value timestampValue + * @property {google.datastore.v1.IKey|null} [keyValue] Value keyValue + * @property {string|null} [stringValue] Value stringValue + * @property {Uint8Array|null} [blobValue] Value blobValue + * @property {google.type.ILatLng|null} [geoPointValue] Value geoPointValue + * @property {google.datastore.v1.IEntity|null} [entityValue] Value entityValue + * @property {google.datastore.v1.IArrayValue|null} [arrayValue] Value arrayValue + * @property {number|null} [meaning] Value meaning + * @property {boolean|null} [excludeFromIndexes] Value excludeFromIndexes */ /** - * Constructs a new GqlQueryParameter. + * Constructs a new Value. * @memberof google.datastore.v1 - * @classdesc Represents a GqlQueryParameter. - * @implements IGqlQueryParameter + * @classdesc Represents a Value. + * @implements IValue * @constructor - * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + * @param {google.datastore.v1.IValue=} [properties] Properties to set */ - function GqlQueryParameter(properties) { + function Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9562,102 +10085,245 @@ } /** - * GqlQueryParameter value. - * @member {google.datastore.v1.IValue|null|undefined} value - * @memberof google.datastore.v1.GqlQueryParameter + * Value nullValue. + * @member {google.protobuf.NullValue} nullValue + * @memberof google.datastore.v1.Value * @instance */ - GqlQueryParameter.prototype.value = null; + Value.prototype.nullValue = 0; /** - * GqlQueryParameter cursor. - * @member {Uint8Array} cursor - * @memberof google.datastore.v1.GqlQueryParameter + * Value booleanValue. + * @member {boolean} booleanValue + * @memberof google.datastore.v1.Value * @instance */ - GqlQueryParameter.prototype.cursor = $util.newBuffer([]); - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + Value.prototype.booleanValue = false; /** - * GqlQueryParameter parameterType. - * @member {"value"|"cursor"|undefined} parameterType - * @memberof google.datastore.v1.GqlQueryParameter + * Value integerValue. + * @member {number|Long} integerValue + * @memberof google.datastore.v1.Value * @instance */ - Object.defineProperty(GqlQueryParameter.prototype, "parameterType", { - get: $util.oneOfGetter($oneOfFields = ["value", "cursor"]), - set: $util.oneOfSetter($oneOfFields) - }); + Value.prototype.integerValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * Creates a new GqlQueryParameter instance using the specified properties. - * @function create - * @memberof google.datastore.v1.GqlQueryParameter - * @static - * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter instance + * Value doubleValue. + * @member {number} doubleValue + * @memberof google.datastore.v1.Value + * @instance */ - GqlQueryParameter.create = function create(properties) { - return new GqlQueryParameter(properties); - }; + Value.prototype.doubleValue = 0; /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.GqlQueryParameter - * @static - * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Value timestampValue. + * @member {google.protobuf.ITimestamp|null|undefined} timestampValue + * @memberof google.datastore.v1.Value + * @instance */ - GqlQueryParameter.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); - return writer; - }; + Value.prototype.timestampValue = null; /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.GqlQueryParameter - * @static - * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Value keyValue. + * @member {google.datastore.v1.IKey|null|undefined} keyValue + * @memberof google.datastore.v1.Value + * @instance */ - GqlQueryParameter.encodeDelimited = function encodeDelimited(message, writer) { + Value.prototype.keyValue = null; + + /** + * Value stringValue. + * @member {string} stringValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.stringValue = ""; + + /** + * Value blobValue. + * @member {Uint8Array} blobValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.blobValue = $util.newBuffer([]); + + /** + * Value geoPointValue. + * @member {google.type.ILatLng|null|undefined} geoPointValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.geoPointValue = null; + + /** + * Value entityValue. + * @member {google.datastore.v1.IEntity|null|undefined} entityValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.entityValue = null; + + /** + * Value arrayValue. + * @member {google.datastore.v1.IArrayValue|null|undefined} arrayValue + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.arrayValue = null; + + /** + * Value meaning. + * @member {number} meaning + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.meaning = 0; + + /** + * Value excludeFromIndexes. + * @member {boolean} excludeFromIndexes + * @memberof google.datastore.v1.Value + * @instance + */ + Value.prototype.excludeFromIndexes = false; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Value valueType. + * @member {"nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"|undefined} valueType + * @memberof google.datastore.v1.Value + * @instance + */ + Object.defineProperty(Value.prototype, "valueType", { + get: $util.oneOfGetter($oneOfFields = ["nullValue", "booleanValue", "integerValue", "doubleValue", "timestampValue", "keyValue", "stringValue", "blobValue", "geoPointValue", "entityValue", "arrayValue"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Value instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue=} [properties] Properties to set + * @returns {google.datastore.v1.Value} Value instance + */ + Value.create = function create(properties) { + return new Value(properties); + }; + + /** + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.booleanValue != null && Object.hasOwnProperty.call(message, "booleanValue")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); + if (message.integerValue != null && Object.hasOwnProperty.call(message, "integerValue")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); + if (message.keyValue != null && Object.hasOwnProperty.call(message, "keyValue")) + $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.entityValue != null && Object.hasOwnProperty.call(message, "entityValue")) + $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.geoPointValue != null && Object.hasOwnProperty.call(message, "geoPointValue")) + $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.arrayValue != null && Object.hasOwnProperty.call(message, "arrayValue")) + $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.timestampValue != null && Object.hasOwnProperty.call(message, "timestampValue")) + $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); + if (message.meaning != null && Object.hasOwnProperty.call(message, "meaning")) + writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) + writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); + if (message.blobValue != null && Object.hasOwnProperty.call(message, "blobValue")) + writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); + if (message.excludeFromIndexes != null && Object.hasOwnProperty.call(message, "excludeFromIndexes")) + writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); + return writer; + }; + + /** + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Value + * @static + * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Value.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQueryParameter.decode = function decode(reader, length) { + Value.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQueryParameter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Value(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 11: + message.nullValue = reader.int32(); + break; + case 1: + message.booleanValue = reader.bool(); + break; case 2: - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + message.integerValue = reader.int64(); break; case 3: - message.cursor = reader.bytes(); + message.doubleValue = reader.double(); + break; + case 10: + message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 5: + message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + case 17: + message.stringValue = reader.string(); + break; + case 18: + message.blobValue = reader.bytes(); + break; + case 8: + message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); + break; + case 6: + message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 9: + message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); + break; + case 14: + message.meaning = reader.int32(); + break; + case 19: + message.excludeFromIndexes = reader.bool(); break; default: reader.skipType(tag & 7); @@ -9668,141 +10334,322 @@ }; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * Decodes a Value message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQueryParameter.decodeDelimited = function decodeDelimited(reader) { + Value.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a GqlQueryParameter message. + * Verifies a Value message. * @function verify - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GqlQueryParameter.verify = function verify(message) { + Value.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.value != null && message.hasOwnProperty("value")) { - properties.parameterType = 1; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + properties.valueType = 1; + switch (message.nullValue) { + default: + return "nullValue: enum value expected"; + case 0: + break; + } + } + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.booleanValue !== "boolean") + return "booleanValue: boolean expected"; + } + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isInteger(message.integerValue) && !(message.integerValue && $util.isInteger(message.integerValue.low) && $util.isInteger(message.integerValue.high))) + return "integerValue: integer|Long expected"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; { - var error = $root.google.datastore.v1.Value.verify(message.value); + var error = $root.google.protobuf.Timestamp.verify(message.timestampValue); if (error) - return "value." + error; + return "timestampValue." + error; } } - if (message.cursor != null && message.hasOwnProperty("cursor")) { - if (properties.parameterType === 1) - return "parameterType: multiple values"; - properties.parameterType = 1; - if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) - return "cursor: buffer expected"; + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Key.verify(message.keyValue); + if (error) + return "keyValue." + error; + } } - return null; - }; - - /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!(message.blobValue && typeof message.blobValue.length === "number" || $util.isString(message.blobValue))) + return "blobValue: buffer expected"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.type.LatLng.verify(message.geoPointValue); + if (error) + return "geoPointValue." + error; + } + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.entityValue); + if (error) + return "entityValue." + error; + } + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.ArrayValue.verify(message.arrayValue); + if (error) + return "arrayValue." + error; + } + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + if (!$util.isInteger(message.meaning)) + return "meaning: integer expected"; + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + if (typeof message.excludeFromIndexes !== "boolean") + return "excludeFromIndexes: boolean expected"; + return null; + }; + + /** + * Creates a Value message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.Value} Value */ - GqlQueryParameter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.GqlQueryParameter) + Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Value) return object; - var message = new $root.google.datastore.v1.GqlQueryParameter(); - if (object.value != null) { - if (typeof object.value !== "object") - throw TypeError(".google.datastore.v1.GqlQueryParameter.value: object expected"); - message.value = $root.google.datastore.v1.Value.fromObject(object.value); + var message = new $root.google.datastore.v1.Value(); + switch (object.nullValue) { + case "NULL_VALUE": + case 0: + message.nullValue = 0; + break; } - if (object.cursor != null) - if (typeof object.cursor === "string") - $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length) - message.cursor = object.cursor; + if (object.booleanValue != null) + message.booleanValue = Boolean(object.booleanValue); + if (object.integerValue != null) + if ($util.Long) + (message.integerValue = $util.Long.fromValue(object.integerValue)).unsigned = false; + else if (typeof object.integerValue === "string") + message.integerValue = parseInt(object.integerValue, 10); + else if (typeof object.integerValue === "number") + message.integerValue = object.integerValue; + else if (typeof object.integerValue === "object") + message.integerValue = new $util.LongBits(object.integerValue.low >>> 0, object.integerValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.timestampValue != null) { + if (typeof object.timestampValue !== "object") + throw TypeError(".google.datastore.v1.Value.timestampValue: object expected"); + message.timestampValue = $root.google.protobuf.Timestamp.fromObject(object.timestampValue); + } + if (object.keyValue != null) { + if (typeof object.keyValue !== "object") + throw TypeError(".google.datastore.v1.Value.keyValue: object expected"); + message.keyValue = $root.google.datastore.v1.Key.fromObject(object.keyValue); + } + if (object.stringValue != null) + message.stringValue = String(object.stringValue); + if (object.blobValue != null) + if (typeof object.blobValue === "string") + $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); + else if (object.blobValue.length) + message.blobValue = object.blobValue; + if (object.geoPointValue != null) { + if (typeof object.geoPointValue !== "object") + throw TypeError(".google.datastore.v1.Value.geoPointValue: object expected"); + message.geoPointValue = $root.google.type.LatLng.fromObject(object.geoPointValue); + } + if (object.entityValue != null) { + if (typeof object.entityValue !== "object") + throw TypeError(".google.datastore.v1.Value.entityValue: object expected"); + message.entityValue = $root.google.datastore.v1.Entity.fromObject(object.entityValue); + } + if (object.arrayValue != null) { + if (typeof object.arrayValue !== "object") + throw TypeError(".google.datastore.v1.Value.arrayValue: object expected"); + message.arrayValue = $root.google.datastore.v1.ArrayValue.fromObject(object.arrayValue); + } + if (object.meaning != null) + message.meaning = object.meaning | 0; + if (object.excludeFromIndexes != null) + message.excludeFromIndexes = Boolean(object.excludeFromIndexes); return message; }; /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * Creates a plain object from a Value message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @static - * @param {google.datastore.v1.GqlQueryParameter} message GqlQueryParameter + * @param {google.datastore.v1.Value} message Value * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GqlQueryParameter.toObject = function toObject(message, options) { + Value.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.value != null && message.hasOwnProperty("value")) { - object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + if (options.defaults) { + object.meaning = 0; + object.excludeFromIndexes = false; + } + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + object.booleanValue = message.booleanValue; if (options.oneofs) - object.parameterType = "value"; + object.valueType = "booleanValue"; } - if (message.cursor != null && message.hasOwnProperty("cursor")) { - object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (typeof message.integerValue === "number") + object.integerValue = options.longs === String ? String(message.integerValue) : message.integerValue; + else + object.integerValue = options.longs === String ? $util.Long.prototype.toString.call(message.integerValue) : options.longs === Number ? new $util.LongBits(message.integerValue.low >>> 0, message.integerValue.high >>> 0).toNumber() : message.integerValue; if (options.oneofs) - object.parameterType = "cursor"; + object.valueType = "integerValue"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; + if (options.oneofs) + object.valueType = "doubleValue"; + } + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + object.keyValue = $root.google.datastore.v1.Key.toObject(message.keyValue, options); + if (options.oneofs) + object.valueType = "keyValue"; + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + object.entityValue = $root.google.datastore.v1.Entity.toObject(message.entityValue, options); + if (options.oneofs) + object.valueType = "entityValue"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + object.geoPointValue = $root.google.type.LatLng.toObject(message.geoPointValue, options); + if (options.oneofs) + object.valueType = "geoPointValue"; + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + object.arrayValue = $root.google.datastore.v1.ArrayValue.toObject(message.arrayValue, options); + if (options.oneofs) + object.valueType = "arrayValue"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + object.timestampValue = $root.google.protobuf.Timestamp.toObject(message.timestampValue, options); + if (options.oneofs) + object.valueType = "timestampValue"; + } + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + if (options.oneofs) + object.valueType = "nullValue"; + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + object.meaning = message.meaning; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + object.stringValue = message.stringValue; + if (options.oneofs) + object.valueType = "stringValue"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + object.blobValue = options.bytes === String ? $util.base64.encode(message.blobValue, 0, message.blobValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.blobValue) : message.blobValue; + if (options.oneofs) + object.valueType = "blobValue"; } + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + object.excludeFromIndexes = message.excludeFromIndexes; return object; }; /** - * Converts this GqlQueryParameter to JSON. + * Converts this Value to JSON. * @function toJSON - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.Value * @instance * @returns {Object.} JSON object */ - GqlQueryParameter.prototype.toJSON = function toJSON() { + Value.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return GqlQueryParameter; + return Value; })(); - v1.QueryResultBatch = (function() { + v1.Entity = (function() { /** - * Properties of a QueryResultBatch. + * Properties of an Entity. * @memberof google.datastore.v1 - * @interface IQueryResultBatch - * @property {number|null} [skippedResults] QueryResultBatch skippedResults - * @property {Uint8Array|null} [skippedCursor] QueryResultBatch skippedCursor - * @property {google.datastore.v1.EntityResult.ResultType|null} [entityResultType] QueryResultBatch entityResultType - * @property {Array.|null} [entityResults] QueryResultBatch entityResults - * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor - * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults - * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion + * @interface IEntity + * @property {google.datastore.v1.IKey|null} [key] Entity key + * @property {Object.|null} [properties] Entity properties */ /** - * Constructs a new QueryResultBatch. + * Constructs a new Entity. * @memberof google.datastore.v1 - * @classdesc Represents a QueryResultBatch. - * @implements IQueryResultBatch + * @classdesc Represents an Entity. + * @implements IEntity * @constructor - * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + * @param {google.datastore.v1.IEntity=} [properties] Properties to set */ - function QueryResultBatch(properties) { - this.entityResults = []; + function Entity(properties) { + this.properties = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9810,156 +10657,96 @@ } /** - * QueryResultBatch skippedResults. - * @member {number} skippedResults - * @memberof google.datastore.v1.QueryResultBatch + * Entity key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.Entity * @instance */ - QueryResultBatch.prototype.skippedResults = 0; + Entity.prototype.key = null; /** - * QueryResultBatch skippedCursor. - * @member {Uint8Array} skippedCursor - * @memberof google.datastore.v1.QueryResultBatch + * Entity properties. + * @member {Object.} properties + * @memberof google.datastore.v1.Entity * @instance */ - QueryResultBatch.prototype.skippedCursor = $util.newBuffer([]); + Entity.prototype.properties = $util.emptyObject; /** - * QueryResultBatch entityResultType. - * @member {google.datastore.v1.EntityResult.ResultType} entityResultType - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.entityResultType = 0; - - /** - * QueryResultBatch entityResults. - * @member {Array.} entityResults - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.entityResults = $util.emptyArray; - - /** - * QueryResultBatch endCursor. - * @member {Uint8Array} endCursor - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.endCursor = $util.newBuffer([]); - - /** - * QueryResultBatch moreResults. - * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.moreResults = 0; - - /** - * QueryResultBatch snapshotVersion. - * @member {number|Long} snapshotVersion - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new QueryResultBatch instance using the specified properties. + * Creates a new Entity instance using the specified properties. * @function create - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch instance + * @param {google.datastore.v1.IEntity=} [properties] Properties to set + * @returns {google.datastore.v1.Entity} Entity instance */ - QueryResultBatch.create = function create(properties) { - return new QueryResultBatch(properties); + Entity.create = function create(properties) { + return new Entity(properties); }; /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QueryResultBatch.encode = function encode(message, writer) { + Entity.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entityResultType != null && Object.hasOwnProperty.call(message, "entityResultType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); - if (message.entityResults != null && message.entityResults.length) - for (var i = 0; i < message.entityResults.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.skippedCursor != null && Object.hasOwnProperty.call(message, "skippedCursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); - if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); - if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); - if (message.skippedResults != null && Object.hasOwnProperty.call(message, "skippedResults")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); - if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) - writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.properties != null && Object.hasOwnProperty.call(message, "properties")) + for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QueryResultBatch.encodeDelimited = function encodeDelimited(message, writer) { + Entity.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a QueryResultBatch message from the specified reader or buffer. + * Decodes an Entity message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.Entity} Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QueryResultBatch.decode = function decode(reader, length) { + Entity.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryResultBatch(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 6: - message.skippedResults = reader.int32(); - break; - case 3: - message.skippedCursor = reader.bytes(); - break; case 1: - message.entityResultType = reader.int32(); - break; - case 2: - if (!(message.entityResults && message.entityResults.length)) - message.entityResults = []; - message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 4: - message.endCursor = reader.bytes(); - break; - case 5: - message.moreResults = reader.int32(); + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); break; - case 7: - message.snapshotVersion = reader.int64(); + case 3: + reader.skip().pos++; + if (message.properties === $util.emptyObject) + message.properties = {}; + key = reader.string(); + reader.pos++; + message.properties[key] = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -9970,2679 +10757,2050 @@ }; /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * Decodes an Entity message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.Entity} Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QueryResultBatch.decodeDelimited = function decodeDelimited(reader) { + Entity.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a QueryResultBatch message. + * Verifies an Entity message. * @function verify - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - QueryResultBatch.verify = function verify(message) { + Entity.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) - if (!$util.isInteger(message.skippedResults)) - return "skippedResults: integer expected"; - if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) - if (!(message.skippedCursor && typeof message.skippedCursor.length === "number" || $util.isString(message.skippedCursor))) - return "skippedCursor: buffer expected"; - if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) - switch (message.entityResultType) { - default: - return "entityResultType: enum value expected"; - case 0: - case 1: - case 2: - case 3: - break; - } - if (message.entityResults != null && message.hasOwnProperty("entityResults")) { - if (!Array.isArray(message.entityResults)) - return "entityResults: array expected"; - for (var i = 0; i < message.entityResults.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.entityResults[i]); + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.properties != null && message.hasOwnProperty("properties")) { + if (!$util.isObject(message.properties)) + return "properties: object expected"; + var key = Object.keys(message.properties); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.properties[key[i]]); if (error) - return "entityResults." + error; + return "properties." + error; } } - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) - return "endCursor: buffer expected"; - if (message.moreResults != null && message.hasOwnProperty("moreResults")) - switch (message.moreResults) { - default: - return "moreResults: enum value expected"; - case 0: - case 1: - case 2: - case 4: - case 3: - break; - } - if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) - if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) - return "snapshotVersion: integer|Long expected"; return null; }; /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * Creates an Entity message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.Entity} Entity */ - QueryResultBatch.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.QueryResultBatch) + Entity.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Entity) return object; - var message = new $root.google.datastore.v1.QueryResultBatch(); - if (object.skippedResults != null) - message.skippedResults = object.skippedResults | 0; - if (object.skippedCursor != null) - if (typeof object.skippedCursor === "string") - $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); - else if (object.skippedCursor.length) - message.skippedCursor = object.skippedCursor; - switch (object.entityResultType) { - case "RESULT_TYPE_UNSPECIFIED": - case 0: - message.entityResultType = 0; - break; - case "FULL": - case 1: - message.entityResultType = 1; - break; - case "PROJECTION": - case 2: - message.entityResultType = 2; - break; - case "KEY_ONLY": - case 3: - message.entityResultType = 3; - break; + var message = new $root.google.datastore.v1.Entity(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.Entity.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); } - if (object.entityResults) { - if (!Array.isArray(object.entityResults)) - throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: array expected"); - message.entityResults = []; - for (var i = 0; i < object.entityResults.length; ++i) { - if (typeof object.entityResults[i] !== "object") - throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: object expected"); - message.entityResults[i] = $root.google.datastore.v1.EntityResult.fromObject(object.entityResults[i]); + if (object.properties) { + if (typeof object.properties !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties = {}; + for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) { + if (typeof object.properties[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.properties[keys[i]]); } } - if (object.endCursor != null) - if (typeof object.endCursor === "string") - $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length) - message.endCursor = object.endCursor; - switch (object.moreResults) { - case "MORE_RESULTS_TYPE_UNSPECIFIED": - case 0: - message.moreResults = 0; - break; - case "NOT_FINISHED": - case 1: - message.moreResults = 1; - break; - case "MORE_RESULTS_AFTER_LIMIT": - case 2: - message.moreResults = 2; - break; - case "MORE_RESULTS_AFTER_CURSOR": - case 4: - message.moreResults = 4; - break; - case "NO_MORE_RESULTS": - case 3: - message.moreResults = 3; - break; - } - if (object.snapshotVersion != null) - if ($util.Long) - (message.snapshotVersion = $util.Long.fromValue(object.snapshotVersion)).unsigned = false; - else if (typeof object.snapshotVersion === "string") - message.snapshotVersion = parseInt(object.snapshotVersion, 10); - else if (typeof object.snapshotVersion === "number") - message.snapshotVersion = object.snapshotVersion; - else if (typeof object.snapshotVersion === "object") - message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); return message; }; /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * Creates a plain object from an Entity message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.QueryResultBatch} message QueryResultBatch + * @param {google.datastore.v1.Entity} message Entity * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - QueryResultBatch.toObject = function toObject(message, options) { + Entity.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.entityResults = []; - if (options.defaults) { - object.entityResultType = options.enums === String ? "RESULT_TYPE_UNSPECIFIED" : 0; - if (options.bytes === String) - object.skippedCursor = ""; - else { - object.skippedCursor = []; - if (options.bytes !== Array) - object.skippedCursor = $util.newBuffer(object.skippedCursor); - } - if (options.bytes === String) - object.endCursor = ""; - else { - object.endCursor = []; - if (options.bytes !== Array) - object.endCursor = $util.newBuffer(object.endCursor); - } - object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; - object.skippedResults = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.snapshotVersion = options.longs === String ? "0" : 0; - } - if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) - object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; - if (message.entityResults && message.entityResults.length) { - object.entityResults = []; - for (var j = 0; j < message.entityResults.length; ++j) - object.entityResults[j] = $root.google.datastore.v1.EntityResult.toObject(message.entityResults[j], options); + if (options.objects || options.defaults) + object.properties = {}; + if (options.defaults) + object.key = null; + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + var keys2; + if (message.properties && (keys2 = Object.keys(message.properties)).length) { + object.properties = {}; + for (var j = 0; j < keys2.length; ++j) + object.properties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.properties[keys2[j]], options); } - if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) - object.skippedCursor = options.bytes === String ? $util.base64.encode(message.skippedCursor, 0, message.skippedCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.skippedCursor) : message.skippedCursor; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; - if (message.moreResults != null && message.hasOwnProperty("moreResults")) - object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; - if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) - object.skippedResults = message.skippedResults; - if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) - if (typeof message.snapshotVersion === "number") - object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; - else - object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; return object; }; /** - * Converts this QueryResultBatch to JSON. + * Converts this Entity to JSON. * @function toJSON - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.Entity * @instance * @returns {Object.} JSON object */ - QueryResultBatch.prototype.toJSON = function toJSON() { + Entity.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * MoreResultsType enum. - * @name google.datastore.v1.QueryResultBatch.MoreResultsType - * @enum {number} - * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value - * @property {number} NOT_FINISHED=1 NOT_FINISHED value - * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value - * @property {number} MORE_RESULTS_AFTER_CURSOR=4 MORE_RESULTS_AFTER_CURSOR value - * @property {number} NO_MORE_RESULTS=3 NO_MORE_RESULTS value - */ - QueryResultBatch.MoreResultsType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "MORE_RESULTS_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "NOT_FINISHED"] = 1; - values[valuesById[2] = "MORE_RESULTS_AFTER_LIMIT"] = 2; - values[valuesById[4] = "MORE_RESULTS_AFTER_CURSOR"] = 4; - values[valuesById[3] = "NO_MORE_RESULTS"] = 3; - return values; - })(); - - return QueryResultBatch; + return Entity; })(); - return v1; - })(); + v1.EntityResult = (function() { - return datastore; - })(); + /** + * Properties of an EntityResult. + * @memberof google.datastore.v1 + * @interface IEntityResult + * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity + * @property {number|Long|null} [version] EntityResult version + * @property {Uint8Array|null} [cursor] EntityResult cursor + */ - google.api = (function() { + /** + * Constructs a new EntityResult. + * @memberof google.datastore.v1 + * @classdesc Represents an EntityResult. + * @implements IEntityResult + * @constructor + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + */ + function EntityResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Namespace api. - * @memberof google - * @namespace - */ - var api = {}; + /** + * EntityResult entity. + * @member {google.datastore.v1.IEntity|null|undefined} entity + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.entity = null; - api.Http = (function() { + /** + * EntityResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Properties of a Http. - * @memberof google.api - * @interface IHttp - * @property {Array.|null} [rules] Http rules - * @property {boolean|null} [fullyDecodeReservedExpansion] Http fullyDecodeReservedExpansion - */ + /** + * EntityResult cursor. + * @member {Uint8Array} cursor + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.cursor = $util.newBuffer([]); - /** - * Constructs a new Http. - * @memberof google.api - * @classdesc Represents a Http. - * @implements IHttp - * @constructor - * @param {google.api.IHttp=} [properties] Properties to set - */ - function Http(properties) { - this.rules = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Creates a new EntityResult instance using the specified properties. + * @function create + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + * @returns {google.datastore.v1.EntityResult} EntityResult instance + */ + EntityResult.create = function create(properties) { + return new EntityResult(properties); + }; - /** - * Http rules. - * @member {Array.} rules - * @memberof google.api.Http - * @instance - */ - Http.prototype.rules = $util.emptyArray; + /** + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.entity != null && Object.hasOwnProperty.call(message, "entity")) + $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + if (message.version != null && Object.hasOwnProperty.call(message, "version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + return writer; + }; - /** - * Http fullyDecodeReservedExpansion. - * @member {boolean} fullyDecodeReservedExpansion - * @memberof google.api.Http - * @instance - */ - Http.prototype.fullyDecodeReservedExpansion = false; + /** + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EntityResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates a new Http instance using the specified properties. - * @function create - * @memberof google.api.Http - * @static - * @param {google.api.IHttp=} [properties] Properties to set - * @returns {google.api.Http} Http instance - */ - Http.create = function create(properties) { - return new Http(properties); - }; - - /** - * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @function encode - * @memberof google.api.Http - * @static - * @param {google.api.IHttp} message Http message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Http.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.rules != null && message.rules.length) - for (var i = 0; i < message.rules.length; ++i) - $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion); - return writer; - }; - - /** - * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. - * @function encodeDelimited - * @memberof google.api.Http - * @static - * @param {google.api.IHttp} message Http message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Http.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a Http message from the specified reader or buffer. - * @function decode - * @memberof google.api.Http - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.api.Http} Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Http.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.rules && message.rules.length)) - message.rules = []; - message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); - break; - case 2: - message.fullyDecodeReservedExpansion = reader.bool(); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Decodes an EntityResult message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.EntityResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.EntityResult} EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.EntityResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + case 4: + message.version = reader.int64(); + break; + case 3: + message.cursor = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a Http message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.api.Http - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.api.Http} Http - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Http.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.EntityResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.EntityResult} EntityResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EntityResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a Http message. - * @function verify - * @memberof google.api.Http - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Http.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.rules != null && message.hasOwnProperty("rules")) { - if (!Array.isArray(message.rules)) - return "rules: array expected"; - for (var i = 0; i < message.rules.length; ++i) { - var error = $root.google.api.HttpRule.verify(message.rules[i]); + /** + * Verifies an EntityResult message. + * @function verify + * @memberof google.datastore.v1.EntityResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EntityResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.entity != null && message.hasOwnProperty("entity")) { + var error = $root.google.datastore.v1.Entity.verify(message.entity); if (error) - return "rules." + error; + return "entity." + error; } - } - if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) - if (typeof message.fullyDecodeReservedExpansion !== "boolean") - return "fullyDecodeReservedExpansion: boolean expected"; - return null; - }; + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.cursor != null && message.hasOwnProperty("cursor")) + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; + return null; + }; - /** - * Creates a Http message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.api.Http - * @static - * @param {Object.} object Plain object - * @returns {google.api.Http} Http - */ - Http.fromObject = function fromObject(object) { - if (object instanceof $root.google.api.Http) - return object; - var message = new $root.google.api.Http(); - if (object.rules) { - if (!Array.isArray(object.rules)) - throw TypeError(".google.api.Http.rules: array expected"); - message.rules = []; - for (var i = 0; i < object.rules.length; ++i) { - if (typeof object.rules[i] !== "object") - throw TypeError(".google.api.Http.rules: object expected"); - message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]); + /** + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.EntityResult + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.EntityResult} EntityResult + */ + EntityResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.EntityResult) + return object; + var message = new $root.google.datastore.v1.EntityResult(); + if (object.entity != null) { + if (typeof object.entity !== "object") + throw TypeError(".google.datastore.v1.EntityResult.entity: object expected"); + message.entity = $root.google.datastore.v1.Entity.fromObject(object.entity); } - } - if (object.fullyDecodeReservedExpansion != null) - message.fullyDecodeReservedExpansion = Boolean(object.fullyDecodeReservedExpansion); - return message; - }; + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length) + message.cursor = object.cursor; + return message; + }; - /** - * Creates a plain object from a Http message. Also converts values to other types if specified. - * @function toObject - * @memberof google.api.Http - * @static - * @param {google.api.Http} message Http - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Http.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.rules = []; - if (options.defaults) - object.fullyDecodeReservedExpansion = false; - if (message.rules && message.rules.length) { - object.rules = []; - for (var j = 0; j < message.rules.length; ++j) - object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options); - } - if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) - object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion; - return object; - }; - - /** - * Converts this Http to JSON. - * @function toJSON - * @memberof google.api.Http - * @instance - * @returns {Object.} JSON object - */ - Http.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.EntityResult + * @static + * @param {google.datastore.v1.EntityResult} message EntityResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EntityResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.entity = null; + if (options.bytes === String) + object.cursor = ""; + else { + object.cursor = []; + if (options.bytes !== Array) + object.cursor = $util.newBuffer(object.cursor); + } + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + } + if (message.entity != null && message.hasOwnProperty("entity")) + object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); + if (message.cursor != null && message.hasOwnProperty("cursor")) + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + return object; + }; - return Http; - })(); + /** + * Converts this EntityResult to JSON. + * @function toJSON + * @memberof google.datastore.v1.EntityResult + * @instance + * @returns {Object.} JSON object + */ + EntityResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - api.HttpRule = (function() { + /** + * ResultType enum. + * @name google.datastore.v1.EntityResult.ResultType + * @enum {number} + * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value + * @property {number} FULL=1 FULL value + * @property {number} PROJECTION=2 PROJECTION value + * @property {number} KEY_ONLY=3 KEY_ONLY value + */ + EntityResult.ResultType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "RESULT_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "FULL"] = 1; + values[valuesById[2] = "PROJECTION"] = 2; + values[valuesById[3] = "KEY_ONLY"] = 3; + return values; + })(); - /** - * Properties of a HttpRule. - * @memberof google.api - * @interface IHttpRule - * @property {string|null} [selector] HttpRule selector - * @property {string|null} [get] HttpRule get - * @property {string|null} [put] HttpRule put - * @property {string|null} [post] HttpRule post - * @property {string|null} ["delete"] HttpRule delete - * @property {string|null} [patch] HttpRule patch - * @property {google.api.ICustomHttpPattern|null} [custom] HttpRule custom - * @property {string|null} [body] HttpRule body - * @property {string|null} [responseBody] HttpRule responseBody - * @property {Array.|null} [additionalBindings] HttpRule additionalBindings - */ + return EntityResult; + })(); - /** - * Constructs a new HttpRule. - * @memberof google.api - * @classdesc Represents a HttpRule. - * @implements IHttpRule - * @constructor - * @param {google.api.IHttpRule=} [properties] Properties to set - */ - function HttpRule(properties) { - this.additionalBindings = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.Query = (function() { - /** - * HttpRule selector. - * @member {string} selector - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.selector = ""; + /** + * Properties of a Query. + * @memberof google.datastore.v1 + * @interface IQuery + * @property {Array.|null} [projection] Query projection + * @property {Array.|null} [kind] Query kind + * @property {google.datastore.v1.IFilter|null} [filter] Query filter + * @property {Array.|null} [order] Query order + * @property {Array.|null} [distinctOn] Query distinctOn + * @property {Uint8Array|null} [startCursor] Query startCursor + * @property {Uint8Array|null} [endCursor] Query endCursor + * @property {number|null} [offset] Query offset + * @property {google.protobuf.IInt32Value|null} [limit] Query limit + */ - /** - * HttpRule get. - * @member {string} get - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.get = ""; + /** + * Constructs a new Query. + * @memberof google.datastore.v1 + * @classdesc Represents a Query. + * @implements IQuery + * @constructor + * @param {google.datastore.v1.IQuery=} [properties] Properties to set + */ + function Query(properties) { + this.projection = []; + this.kind = []; + this.order = []; + this.distinctOn = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * HttpRule put. - * @member {string} put - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.put = ""; + /** + * Query projection. + * @member {Array.} projection + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.projection = $util.emptyArray; - /** - * HttpRule post. - * @member {string} post - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.post = ""; + /** + * Query kind. + * @member {Array.} kind + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.kind = $util.emptyArray; - /** - * HttpRule delete. - * @member {string} delete - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype["delete"] = ""; + /** + * Query filter. + * @member {google.datastore.v1.IFilter|null|undefined} filter + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.filter = null; - /** - * HttpRule patch. - * @member {string} patch - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.patch = ""; + /** + * Query order. + * @member {Array.} order + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.order = $util.emptyArray; - /** - * HttpRule custom. - * @member {google.api.ICustomHttpPattern|null|undefined} custom - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.custom = null; + /** + * Query distinctOn. + * @member {Array.} distinctOn + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.distinctOn = $util.emptyArray; - /** - * HttpRule body. - * @member {string} body - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.body = ""; + /** + * Query startCursor. + * @member {Uint8Array} startCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.startCursor = $util.newBuffer([]); - /** - * HttpRule responseBody. - * @member {string} responseBody - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.responseBody = ""; + /** + * Query endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.endCursor = $util.newBuffer([]); - /** - * HttpRule additionalBindings. - * @member {Array.} additionalBindings - * @memberof google.api.HttpRule - * @instance - */ - HttpRule.prototype.additionalBindings = $util.emptyArray; + /** + * Query offset. + * @member {number} offset + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.offset = 0; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * Query limit. + * @member {google.protobuf.IInt32Value|null|undefined} limit + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.limit = null; - /** - * HttpRule pattern. - * @member {"get"|"put"|"post"|"delete"|"patch"|"custom"|undefined} pattern - * @memberof google.api.HttpRule - * @instance - */ - Object.defineProperty(HttpRule.prototype, "pattern", { - get: $util.oneOfGetter($oneOfFields = ["get", "put", "post", "delete", "patch", "custom"]), - set: $util.oneOfSetter($oneOfFields) - }); + /** + * Creates a new Query instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery=} [properties] Properties to set + * @returns {google.datastore.v1.Query} Query instance + */ + Query.create = function create(properties) { + return new Query(properties); + }; - /** - * Creates a new HttpRule instance using the specified properties. - * @function create - * @memberof google.api.HttpRule - * @static - * @param {google.api.IHttpRule=} [properties] Properties to set - * @returns {google.api.HttpRule} HttpRule instance - */ - HttpRule.create = function create(properties) { - return new HttpRule(properties); - }; + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projection != null && message.projection.length) + for (var i = 0; i < message.projection.length; ++i) + $root.google.datastore.v1.Projection.encode(message.projection[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kind != null && message.kind.length) + for (var i = 0; i < message.kind.length; ++i) + $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.order != null && message.order.length) + for (var i = 0; i < message.order.length; ++i) + $root.google.datastore.v1.PropertyOrder.encode(message.order[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.distinctOn != null && message.distinctOn.length) + for (var i = 0; i < message.distinctOn.length; ++i) + $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.startCursor != null && Object.hasOwnProperty.call(message, "startCursor")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) + writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); + if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) + $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + return writer; + }; - /** - * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @function encode - * @memberof google.api.HttpRule - * @static - * @param {google.api.IHttpRule} message HttpRule message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HttpRule.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); - if (message.get != null && Object.hasOwnProperty.call(message, "get")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.get); - if (message.put != null && Object.hasOwnProperty.call(message, "put")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.put); - if (message.post != null && Object.hasOwnProperty.call(message, "post")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.post); - if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]); - if (message.patch != null && Object.hasOwnProperty.call(message, "patch")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch); - if (message.body != null && Object.hasOwnProperty.call(message, "body")) - writer.uint32(/* id 7, wireType 2 =*/58).string(message.body); - if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) - $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.additionalBindings != null && message.additionalBindings.length) - for (var i = 0; i < message.additionalBindings.length; ++i) - $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); - if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) - writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody); - return writer; - }; + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. - * @function encodeDelimited - * @memberof google.api.HttpRule - * @static - * @param {google.api.IHttpRule} message HttpRule message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HttpRule.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Decodes a Query message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Query + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Query} Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Query.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Query(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (!(message.projection && message.projection.length)) + message.projection = []; + message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.kind && message.kind.length)) + message.kind = []; + message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); + break; + case 4: + message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.order && message.order.length)) + message.order = []; + message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.distinctOn && message.distinctOn.length)) + message.distinctOn = []; + message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); + break; + case 7: + message.startCursor = reader.bytes(); + break; + case 8: + message.endCursor = reader.bytes(); + break; + case 10: + message.offset = reader.int32(); + break; + case 12: + message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Decodes a HttpRule message from the specified reader or buffer. - * @function decode - * @memberof google.api.HttpRule - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.api.HttpRule} HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HttpRule.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.selector = reader.string(); - break; - case 2: - message.get = reader.string(); - break; - case 3: - message.put = reader.string(); - break; - case 4: - message.post = reader.string(); - break; - case 5: - message["delete"] = reader.string(); - break; - case 6: - message.patch = reader.string(); - break; - case 8: - message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); - break; - case 7: - message.body = reader.string(); - break; - case 12: - message.responseBody = reader.string(); - break; - case 11: - if (!(message.additionalBindings && message.additionalBindings.length)) - message.additionalBindings = []; - message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HttpRule message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.api.HttpRule - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.api.HttpRule} HttpRule - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HttpRule.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a Query message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Query + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Query} Query + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Query.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a HttpRule message. - * @function verify - * @memberof google.api.HttpRule - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HttpRule.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.selector != null && message.hasOwnProperty("selector")) - if (!$util.isString(message.selector)) - return "selector: string expected"; - if (message.get != null && message.hasOwnProperty("get")) { - properties.pattern = 1; - if (!$util.isString(message.get)) - return "get: string expected"; - } - if (message.put != null && message.hasOwnProperty("put")) { - if (properties.pattern === 1) - return "pattern: multiple values"; - properties.pattern = 1; - if (!$util.isString(message.put)) - return "put: string expected"; - } - if (message.post != null && message.hasOwnProperty("post")) { - if (properties.pattern === 1) - return "pattern: multiple values"; - properties.pattern = 1; - if (!$util.isString(message.post)) - return "post: string expected"; - } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - if (properties.pattern === 1) - return "pattern: multiple values"; - properties.pattern = 1; - if (!$util.isString(message["delete"])) - return "delete: string expected"; - } - if (message.patch != null && message.hasOwnProperty("patch")) { - if (properties.pattern === 1) - return "pattern: multiple values"; - properties.pattern = 1; - if (!$util.isString(message.patch)) - return "patch: string expected"; - } - if (message.custom != null && message.hasOwnProperty("custom")) { - if (properties.pattern === 1) - return "pattern: multiple values"; - properties.pattern = 1; - { - var error = $root.google.api.CustomHttpPattern.verify(message.custom); + /** + * Verifies a Query message. + * @function verify + * @memberof google.datastore.v1.Query + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Query.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projection != null && message.hasOwnProperty("projection")) { + if (!Array.isArray(message.projection)) + return "projection: array expected"; + for (var i = 0; i < message.projection.length; ++i) { + var error = $root.google.datastore.v1.Projection.verify(message.projection[i]); + if (error) + return "projection." + error; + } + } + if (message.kind != null && message.hasOwnProperty("kind")) { + if (!Array.isArray(message.kind)) + return "kind: array expected"; + for (var i = 0; i < message.kind.length; ++i) { + var error = $root.google.datastore.v1.KindExpression.verify(message.kind[i]); + if (error) + return "kind." + error; + } + } + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.google.datastore.v1.Filter.verify(message.filter); if (error) - return "custom." + error; + return "filter." + error; } - } - if (message.body != null && message.hasOwnProperty("body")) - if (!$util.isString(message.body)) - return "body: string expected"; - if (message.responseBody != null && message.hasOwnProperty("responseBody")) - if (!$util.isString(message.responseBody)) - return "responseBody: string expected"; - if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) { - if (!Array.isArray(message.additionalBindings)) - return "additionalBindings: array expected"; - for (var i = 0; i < message.additionalBindings.length; ++i) { - var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]); + if (message.order != null && message.hasOwnProperty("order")) { + if (!Array.isArray(message.order)) + return "order: array expected"; + for (var i = 0; i < message.order.length; ++i) { + var error = $root.google.datastore.v1.PropertyOrder.verify(message.order[i]); + if (error) + return "order." + error; + } + } + if (message.distinctOn != null && message.hasOwnProperty("distinctOn")) { + if (!Array.isArray(message.distinctOn)) + return "distinctOn: array expected"; + for (var i = 0; i < message.distinctOn.length; ++i) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.distinctOn[i]); + if (error) + return "distinctOn." + error; + } + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + if (!(message.startCursor && typeof message.startCursor.length === "number" || $util.isString(message.startCursor))) + return "startCursor: buffer expected"; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.offset != null && message.hasOwnProperty("offset")) + if (!$util.isInteger(message.offset)) + return "offset: integer expected"; + if (message.limit != null && message.hasOwnProperty("limit")) { + var error = $root.google.protobuf.Int32Value.verify(message.limit); if (error) - return "additionalBindings." + error; + return "limit." + error; } - } - return null; - }; + return null; + }; - /** - * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.api.HttpRule - * @static - * @param {Object.} object Plain object - * @returns {google.api.HttpRule} HttpRule - */ - HttpRule.fromObject = function fromObject(object) { - if (object instanceof $root.google.api.HttpRule) - return object; - var message = new $root.google.api.HttpRule(); - if (object.selector != null) - message.selector = String(object.selector); - if (object.get != null) - message.get = String(object.get); - if (object.put != null) - message.put = String(object.put); - if (object.post != null) - message.post = String(object.post); - if (object["delete"] != null) - message["delete"] = String(object["delete"]); - if (object.patch != null) - message.patch = String(object.patch); - if (object.custom != null) { - if (typeof object.custom !== "object") - throw TypeError(".google.api.HttpRule.custom: object expected"); - message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom); - } - if (object.body != null) - message.body = String(object.body); - if (object.responseBody != null) - message.responseBody = String(object.responseBody); - if (object.additionalBindings) { - if (!Array.isArray(object.additionalBindings)) - throw TypeError(".google.api.HttpRule.additionalBindings: array expected"); - message.additionalBindings = []; - for (var i = 0; i < object.additionalBindings.length; ++i) { - if (typeof object.additionalBindings[i] !== "object") - throw TypeError(".google.api.HttpRule.additionalBindings: object expected"); - message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]); + /** + * Creates a Query message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Query + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Query} Query + */ + Query.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Query) + return object; + var message = new $root.google.datastore.v1.Query(); + if (object.projection) { + if (!Array.isArray(object.projection)) + throw TypeError(".google.datastore.v1.Query.projection: array expected"); + message.projection = []; + for (var i = 0; i < object.projection.length; ++i) { + if (typeof object.projection[i] !== "object") + throw TypeError(".google.datastore.v1.Query.projection: object expected"); + message.projection[i] = $root.google.datastore.v1.Projection.fromObject(object.projection[i]); + } } - } - return message; - }; - - /** - * Creates a plain object from a HttpRule message. Also converts values to other types if specified. - * @function toObject - * @memberof google.api.HttpRule - * @static - * @param {google.api.HttpRule} message HttpRule - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HttpRule.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.additionalBindings = []; - if (options.defaults) { - object.selector = ""; - object.body = ""; - object.responseBody = ""; - } - if (message.selector != null && message.hasOwnProperty("selector")) - object.selector = message.selector; - if (message.get != null && message.hasOwnProperty("get")) { - object.get = message.get; - if (options.oneofs) - object.pattern = "get"; - } - if (message.put != null && message.hasOwnProperty("put")) { - object.put = message.put; - if (options.oneofs) - object.pattern = "put"; - } - if (message.post != null && message.hasOwnProperty("post")) { - object.post = message.post; - if (options.oneofs) - object.pattern = "post"; - } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - object["delete"] = message["delete"]; - if (options.oneofs) - object.pattern = "delete"; - } - if (message.patch != null && message.hasOwnProperty("patch")) { - object.patch = message.patch; - if (options.oneofs) - object.pattern = "patch"; - } - if (message.body != null && message.hasOwnProperty("body")) - object.body = message.body; - if (message.custom != null && message.hasOwnProperty("custom")) { - object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options); - if (options.oneofs) - object.pattern = "custom"; - } - if (message.additionalBindings && message.additionalBindings.length) { - object.additionalBindings = []; - for (var j = 0; j < message.additionalBindings.length; ++j) - object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options); - } - if (message.responseBody != null && message.hasOwnProperty("responseBody")) - object.responseBody = message.responseBody; - return object; - }; - - /** - * Converts this HttpRule to JSON. - * @function toJSON - * @memberof google.api.HttpRule - * @instance - * @returns {Object.} JSON object - */ - HttpRule.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return HttpRule; - })(); + if (object.kind) { + if (!Array.isArray(object.kind)) + throw TypeError(".google.datastore.v1.Query.kind: array expected"); + message.kind = []; + for (var i = 0; i < object.kind.length; ++i) { + if (typeof object.kind[i] !== "object") + throw TypeError(".google.datastore.v1.Query.kind: object expected"); + message.kind[i] = $root.google.datastore.v1.KindExpression.fromObject(object.kind[i]); + } + } + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".google.datastore.v1.Query.filter: object expected"); + message.filter = $root.google.datastore.v1.Filter.fromObject(object.filter); + } + if (object.order) { + if (!Array.isArray(object.order)) + throw TypeError(".google.datastore.v1.Query.order: array expected"); + message.order = []; + for (var i = 0; i < object.order.length; ++i) { + if (typeof object.order[i] !== "object") + throw TypeError(".google.datastore.v1.Query.order: object expected"); + message.order[i] = $root.google.datastore.v1.PropertyOrder.fromObject(object.order[i]); + } + } + if (object.distinctOn) { + if (!Array.isArray(object.distinctOn)) + throw TypeError(".google.datastore.v1.Query.distinctOn: array expected"); + message.distinctOn = []; + for (var i = 0; i < object.distinctOn.length; ++i) { + if (typeof object.distinctOn[i] !== "object") + throw TypeError(".google.datastore.v1.Query.distinctOn: object expected"); + message.distinctOn[i] = $root.google.datastore.v1.PropertyReference.fromObject(object.distinctOn[i]); + } + } + if (object.startCursor != null) + if (typeof object.startCursor === "string") + $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); + else if (object.startCursor.length) + message.startCursor = object.startCursor; + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length) + message.endCursor = object.endCursor; + if (object.offset != null) + message.offset = object.offset | 0; + if (object.limit != null) { + if (typeof object.limit !== "object") + throw TypeError(".google.datastore.v1.Query.limit: object expected"); + message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); + } + return message; + }; - api.CustomHttpPattern = (function() { + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.Query} message Query + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Query.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.projection = []; + object.kind = []; + object.order = []; + object.distinctOn = []; + } + if (options.defaults) { + object.filter = null; + if (options.bytes === String) + object.startCursor = ""; + else { + object.startCursor = []; + if (options.bytes !== Array) + object.startCursor = $util.newBuffer(object.startCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.offset = 0; + object.limit = null; + } + if (message.projection && message.projection.length) { + object.projection = []; + for (var j = 0; j < message.projection.length; ++j) + object.projection[j] = $root.google.datastore.v1.Projection.toObject(message.projection[j], options); + } + if (message.kind && message.kind.length) { + object.kind = []; + for (var j = 0; j < message.kind.length; ++j) + object.kind[j] = $root.google.datastore.v1.KindExpression.toObject(message.kind[j], options); + } + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.google.datastore.v1.Filter.toObject(message.filter, options); + if (message.order && message.order.length) { + object.order = []; + for (var j = 0; j < message.order.length; ++j) + object.order[j] = $root.google.datastore.v1.PropertyOrder.toObject(message.order[j], options); + } + if (message.distinctOn && message.distinctOn.length) { + object.distinctOn = []; + for (var j = 0; j < message.distinctOn.length; ++j) + object.distinctOn[j] = $root.google.datastore.v1.PropertyReference.toObject(message.distinctOn[j], options); + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + object.startCursor = options.bytes === String ? $util.base64.encode(message.startCursor, 0, message.startCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.startCursor) : message.startCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.offset != null && message.hasOwnProperty("offset")) + object.offset = message.offset; + if (message.limit != null && message.hasOwnProperty("limit")) + object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); + return object; + }; - /** - * Properties of a CustomHttpPattern. - * @memberof google.api - * @interface ICustomHttpPattern - * @property {string|null} [kind] CustomHttpPattern kind - * @property {string|null} [path] CustomHttpPattern path - */ + /** + * Converts this Query to JSON. + * @function toJSON + * @memberof google.datastore.v1.Query + * @instance + * @returns {Object.} JSON object + */ + Query.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Constructs a new CustomHttpPattern. - * @memberof google.api - * @classdesc Represents a CustomHttpPattern. - * @implements ICustomHttpPattern - * @constructor - * @param {google.api.ICustomHttpPattern=} [properties] Properties to set - */ - function CustomHttpPattern(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + return Query; + })(); - /** - * CustomHttpPattern kind. - * @member {string} kind - * @memberof google.api.CustomHttpPattern - * @instance - */ - CustomHttpPattern.prototype.kind = ""; + v1.KindExpression = (function() { - /** - * CustomHttpPattern path. - * @member {string} path - * @memberof google.api.CustomHttpPattern - * @instance - */ - CustomHttpPattern.prototype.path = ""; + /** + * Properties of a KindExpression. + * @memberof google.datastore.v1 + * @interface IKindExpression + * @property {string|null} [name] KindExpression name + */ - /** - * Creates a new CustomHttpPattern instance using the specified properties. - * @function create - * @memberof google.api.CustomHttpPattern - * @static - * @param {google.api.ICustomHttpPattern=} [properties] Properties to set - * @returns {google.api.CustomHttpPattern} CustomHttpPattern instance - */ - CustomHttpPattern.create = function create(properties) { - return new CustomHttpPattern(properties); - }; - - /** - * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @function encode - * @memberof google.api.CustomHttpPattern - * @static - * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CustomHttpPattern.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); - if (message.path != null && Object.hasOwnProperty.call(message, "path")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.path); - return writer; - }; - - /** - * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. - * @function encodeDelimited - * @memberof google.api.CustomHttpPattern - * @static - * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer. - * @function decode - * @memberof google.api.CustomHttpPattern - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.api.CustomHttpPattern} CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CustomHttpPattern.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.kind = reader.string(); - break; - case 2: - message.path = reader.string(); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new KindExpression. + * @memberof google.datastore.v1 + * @classdesc Represents a KindExpression. + * @implements IKindExpression + * @constructor + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + */ + function KindExpression(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - - /** - * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.api.CustomHttpPattern - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.api.CustomHttpPattern} CustomHttpPattern - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CustomHttpPattern.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - /** - * Verifies a CustomHttpPattern message. - * @function verify - * @memberof google.api.CustomHttpPattern - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CustomHttpPattern.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.kind != null && message.hasOwnProperty("kind")) - if (!$util.isString(message.kind)) - return "kind: string expected"; - if (message.path != null && message.hasOwnProperty("path")) - if (!$util.isString(message.path)) - return "path: string expected"; - return null; - }; + /** + * KindExpression name. + * @member {string} name + * @memberof google.datastore.v1.KindExpression + * @instance + */ + KindExpression.prototype.name = ""; - /** - * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.api.CustomHttpPattern - * @static - * @param {Object.} object Plain object - * @returns {google.api.CustomHttpPattern} CustomHttpPattern - */ - CustomHttpPattern.fromObject = function fromObject(object) { - if (object instanceof $root.google.api.CustomHttpPattern) - return object; - var message = new $root.google.api.CustomHttpPattern(); - if (object.kind != null) - message.kind = String(object.kind); - if (object.path != null) - message.path = String(object.path); - return message; - }; + /** + * Creates a new KindExpression instance using the specified properties. + * @function create + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + * @returns {google.datastore.v1.KindExpression} KindExpression instance + */ + KindExpression.create = function create(properties) { + return new KindExpression(properties); + }; - /** - * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. - * @function toObject - * @memberof google.api.CustomHttpPattern - * @static - * @param {google.api.CustomHttpPattern} message CustomHttpPattern - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CustomHttpPattern.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.kind = ""; - object.path = ""; - } - if (message.kind != null && message.hasOwnProperty("kind")) - object.kind = message.kind; - if (message.path != null && message.hasOwnProperty("path")) - object.path = message.path; - return object; - }; + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KindExpression.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + return writer; + }; - /** - * Converts this CustomHttpPattern to JSON. - * @function toJSON - * @memberof google.api.CustomHttpPattern - * @instance - * @returns {Object.} JSON object - */ - CustomHttpPattern.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KindExpression.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - return CustomHttpPattern; - })(); + /** + * Decodes a KindExpression message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.KindExpression + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.KindExpression} KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KindExpression.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.KindExpression(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * FieldBehavior enum. - * @name google.api.FieldBehavior - * @enum {number} - * @property {number} FIELD_BEHAVIOR_UNSPECIFIED=0 FIELD_BEHAVIOR_UNSPECIFIED value - * @property {number} OPTIONAL=1 OPTIONAL value - * @property {number} REQUIRED=2 REQUIRED value - * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value - * @property {number} INPUT_ONLY=4 INPUT_ONLY value - * @property {number} IMMUTABLE=5 IMMUTABLE value - */ - api.FieldBehavior = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "FIELD_BEHAVIOR_UNSPECIFIED"] = 0; - values[valuesById[1] = "OPTIONAL"] = 1; - values[valuesById[2] = "REQUIRED"] = 2; - values[valuesById[3] = "OUTPUT_ONLY"] = 3; - values[valuesById[4] = "INPUT_ONLY"] = 4; - values[valuesById[5] = "IMMUTABLE"] = 5; - return values; - })(); + /** + * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.KindExpression + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.KindExpression} KindExpression + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KindExpression.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - return api; - })(); + /** + * Verifies a KindExpression message. + * @function verify + * @memberof google.datastore.v1.KindExpression + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + KindExpression.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; - google.protobuf = (function() { + /** + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.KindExpression + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.KindExpression} KindExpression + */ + KindExpression.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.KindExpression) + return object; + var message = new $root.google.datastore.v1.KindExpression(); + if (object.name != null) + message.name = String(object.name); + return message; + }; - /** - * Namespace protobuf. - * @memberof google - * @namespace - */ - var protobuf = {}; + /** + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.KindExpression + * @static + * @param {google.datastore.v1.KindExpression} message KindExpression + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KindExpression.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; - protobuf.FileDescriptorSet = (function() { + /** + * Converts this KindExpression to JSON. + * @function toJSON + * @memberof google.datastore.v1.KindExpression + * @instance + * @returns {Object.} JSON object + */ + KindExpression.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Properties of a FileDescriptorSet. - * @memberof google.protobuf - * @interface IFileDescriptorSet - * @property {Array.|null} [file] FileDescriptorSet file - */ + return KindExpression; + })(); - /** - * Constructs a new FileDescriptorSet. - * @memberof google.protobuf - * @classdesc Represents a FileDescriptorSet. - * @implements IFileDescriptorSet - * @constructor - * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set - */ - function FileDescriptorSet(properties) { - this.file = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.PropertyReference = (function() { - /** - * FileDescriptorSet file. - * @member {Array.} file - * @memberof google.protobuf.FileDescriptorSet - * @instance - */ - FileDescriptorSet.prototype.file = $util.emptyArray; + /** + * Properties of a PropertyReference. + * @memberof google.datastore.v1 + * @interface IPropertyReference + * @property {string|null} [name] PropertyReference name + */ - /** - * Creates a new FileDescriptorSet instance using the specified properties. - * @function create - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set - * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance - */ - FileDescriptorSet.create = function create(properties) { - return new FileDescriptorSet(properties); - }; + /** + * Constructs a new PropertyReference. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyReference. + * @implements IPropertyReference + * @constructor + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + */ + function PropertyReference(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @function encode - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FileDescriptorSet.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.file != null && message.file.length) - for (var i = 0; i < message.file.length; ++i) - $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; + /** + * PropertyReference name. + * @member {string} name + * @memberof google.datastore.v1.PropertyReference + * @instance + */ + PropertyReference.prototype.name = ""; - /** - * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new PropertyReference instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyReference} PropertyReference instance + */ + PropertyReference.create = function create(properties) { + return new PropertyReference(properties); + }; - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FileDescriptorSet.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.file && message.file.length)) - message.file = []; - message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyReference.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + return writer; + }; - /** - * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FileDescriptorSet.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyReference.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Verifies a FileDescriptorSet message. - * @function verify - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - FileDescriptorSet.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.file != null && message.hasOwnProperty("file")) { - if (!Array.isArray(message.file)) - return "file: array expected"; - for (var i = 0; i < message.file.length; ++i) { - var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]); - if (error) - return "file." + error; + /** + * Decodes a PropertyReference message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyReference.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyReference(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return null; - }; + return message; + }; - /** - * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet - */ - FileDescriptorSet.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FileDescriptorSet) - return object; - var message = new $root.google.protobuf.FileDescriptorSet(); - if (object.file) { - if (!Array.isArray(object.file)) - throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected"); - message.file = []; - for (var i = 0; i < object.file.length; ++i) { - if (typeof object.file[i] !== "object") - throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); - message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]); - } - } - return message; - }; + /** + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyReference.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.FileDescriptorSet - * @static - * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - FileDescriptorSet.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.file = []; - if (message.file && message.file.length) { - object.file = []; - for (var j = 0; j < message.file.length; ++j) - object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options); - } - return object; - }; + /** + * Verifies a PropertyReference message. + * @function verify + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyReference.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; - /** - * Converts this FileDescriptorSet to JSON. - * @function toJSON - * @memberof google.protobuf.FileDescriptorSet - * @instance - * @returns {Object.} JSON object - */ - FileDescriptorSet.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyReference} PropertyReference + */ + PropertyReference.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyReference) + return object; + var message = new $root.google.datastore.v1.PropertyReference(); + if (object.name != null) + message.name = String(object.name); + return message; + }; - return FileDescriptorSet; - })(); + /** + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {google.datastore.v1.PropertyReference} message PropertyReference + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyReference.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; - protobuf.FileDescriptorProto = (function() { + /** + * Converts this PropertyReference to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyReference + * @instance + * @returns {Object.} JSON object + */ + PropertyReference.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Properties of a FileDescriptorProto. - * @memberof google.protobuf - * @interface IFileDescriptorProto - * @property {string|null} [name] FileDescriptorProto name - * @property {string|null} ["package"] FileDescriptorProto package - * @property {Array.|null} [dependency] FileDescriptorProto dependency - * @property {Array.|null} [publicDependency] FileDescriptorProto publicDependency - * @property {Array.|null} [weakDependency] FileDescriptorProto weakDependency - * @property {Array.|null} [messageType] FileDescriptorProto messageType - * @property {Array.|null} [enumType] FileDescriptorProto enumType - * @property {Array.|null} [service] FileDescriptorProto service - * @property {Array.|null} [extension] FileDescriptorProto extension - * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options - * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo - * @property {string|null} [syntax] FileDescriptorProto syntax - */ + return PropertyReference; + })(); - /** - * Constructs a new FileDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents a FileDescriptorProto. - * @implements IFileDescriptorProto - * @constructor - * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set - */ - function FileDescriptorProto(properties) { - this.dependency = []; - this.publicDependency = []; - this.weakDependency = []; - this.messageType = []; - this.enumType = []; - this.service = []; - this.extension = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.Projection = (function() { - /** - * FileDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.name = ""; + /** + * Properties of a Projection. + * @memberof google.datastore.v1 + * @interface IProjection + * @property {google.datastore.v1.IPropertyReference|null} [property] Projection property + */ - /** - * FileDescriptorProto package. - * @member {string} package - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype["package"] = ""; + /** + * Constructs a new Projection. + * @memberof google.datastore.v1 + * @classdesc Represents a Projection. + * @implements IProjection + * @constructor + * @param {google.datastore.v1.IProjection=} [properties] Properties to set + */ + function Projection(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * FileDescriptorProto dependency. - * @member {Array.} dependency - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.dependency = $util.emptyArray; + /** + * Projection property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.Projection + * @instance + */ + Projection.prototype.property = null; - /** - * FileDescriptorProto publicDependency. - * @member {Array.} publicDependency - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.publicDependency = $util.emptyArray; + /** + * Creates a new Projection instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection=} [properties] Properties to set + * @returns {google.datastore.v1.Projection} Projection instance + */ + Projection.create = function create(properties) { + return new Projection(properties); + }; - /** - * FileDescriptorProto weakDependency. - * @member {Array.} weakDependency - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.weakDependency = $util.emptyArray; + /** + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Projection.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; - /** - * FileDescriptorProto messageType. - * @member {Array.} messageType - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.messageType = $util.emptyArray; + /** + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Projection.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * FileDescriptorProto enumType. - * @member {Array.} enumType - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.enumType = $util.emptyArray; + /** + * Decodes a Projection message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Projection + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Projection} Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Projection.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Projection(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * FileDescriptorProto service. - * @member {Array.} service - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.service = $util.emptyArray; + /** + * Decodes a Projection message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Projection + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Projection} Projection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Projection.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * FileDescriptorProto extension. - * @member {Array.} extension - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.extension = $util.emptyArray; + /** + * Verifies a Projection message. + * @function verify + * @memberof google.datastore.v1.Projection + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Projection.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + return null; + }; - /** - * FileDescriptorProto options. - * @member {google.protobuf.IFileOptions|null|undefined} options - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.options = null; + /** + * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Projection + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Projection} Projection + */ + Projection.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Projection) + return object; + var message = new $root.google.datastore.v1.Projection(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.Projection.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + return message; + }; - /** - * FileDescriptorProto sourceCodeInfo. - * @member {google.protobuf.ISourceCodeInfo|null|undefined} sourceCodeInfo - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.sourceCodeInfo = null; + /** + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Projection + * @static + * @param {google.datastore.v1.Projection} message Projection + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Projection.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.property = null; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + return object; + }; - /** - * FileDescriptorProto syntax. - * @member {string} syntax - * @memberof google.protobuf.FileDescriptorProto - * @instance - */ - FileDescriptorProto.prototype.syntax = ""; + /** + * Converts this Projection to JSON. + * @function toJSON + * @memberof google.datastore.v1.Projection + * @instance + * @returns {Object.} JSON object + */ + Projection.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Creates a new FileDescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance - */ - FileDescriptorProto.create = function create(properties) { - return new FileDescriptorProto(properties); - }; + return Projection; + })(); - /** - * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FileDescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]); - if (message.dependency != null && message.dependency.length) - for (var i = 0; i < message.dependency.length; ++i) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]); - if (message.messageType != null && message.messageType.length) - for (var i = 0; i < message.messageType.length; ++i) - $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.enumType != null && message.enumType.length) - for (var i = 0; i < message.enumType.length; ++i) - $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.service != null && message.service.length) - for (var i = 0; i < message.service.length; ++i) - $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.extension != null && message.extension.length) - for (var i = 0; i < message.extension.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) - $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.publicDependency != null && message.publicDependency.length) - for (var i = 0; i < message.publicDependency.length; ++i) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]); - if (message.weakDependency != null && message.weakDependency.length) - for (var i = 0; i < message.weakDependency.length; ++i) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); - if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) - writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); - return writer; - }; + v1.PropertyOrder = (function() { - /** - * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Properties of a PropertyOrder. + * @memberof google.datastore.v1 + * @interface IPropertyOrder + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyOrder property + * @property {google.datastore.v1.PropertyOrder.Direction|null} [direction] PropertyOrder direction + */ - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FileDescriptorProto.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message["package"] = reader.string(); - break; - case 3: - if (!(message.dependency && message.dependency.length)) - message.dependency = []; - message.dependency.push(reader.string()); - break; - case 10: - if (!(message.publicDependency && message.publicDependency.length)) - message.publicDependency = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.publicDependency.push(reader.int32()); - } else - message.publicDependency.push(reader.int32()); - break; - case 11: - if (!(message.weakDependency && message.weakDependency.length)) - message.weakDependency = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.weakDependency.push(reader.int32()); - } else - message.weakDependency.push(reader.int32()); - break; - case 4: - if (!(message.messageType && message.messageType.length)) - message.messageType = []; - message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.enumType && message.enumType.length)) - message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.service && message.service.length)) - message.service = []; - message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); - break; - case 7: - if (!(message.extension && message.extension.length)) - message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 8: - message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); - break; - case 9: - message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); - break; - case 12: - message.syntax = reader.string(); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Constructs a new PropertyOrder. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyOrder. + * @implements IPropertyOrder + * @constructor + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + */ + function PropertyOrder(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return message; - }; - /** - * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FileDescriptorProto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * PropertyOrder property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyOrder + * @instance + */ + PropertyOrder.prototype.property = null; - /** - * Verifies a FileDescriptorProto message. - * @function verify - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - FileDescriptorProto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message["package"] != null && message.hasOwnProperty("package")) - if (!$util.isString(message["package"])) - return "package: string expected"; - if (message.dependency != null && message.hasOwnProperty("dependency")) { - if (!Array.isArray(message.dependency)) - return "dependency: array expected"; - for (var i = 0; i < message.dependency.length; ++i) - if (!$util.isString(message.dependency[i])) - return "dependency: string[] expected"; - } - if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) { - if (!Array.isArray(message.publicDependency)) - return "publicDependency: array expected"; - for (var i = 0; i < message.publicDependency.length; ++i) - if (!$util.isInteger(message.publicDependency[i])) - return "publicDependency: integer[] expected"; - } - if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) { - if (!Array.isArray(message.weakDependency)) - return "weakDependency: array expected"; - for (var i = 0; i < message.weakDependency.length; ++i) - if (!$util.isInteger(message.weakDependency[i])) - return "weakDependency: integer[] expected"; - } - if (message.messageType != null && message.hasOwnProperty("messageType")) { - if (!Array.isArray(message.messageType)) - return "messageType: array expected"; - for (var i = 0; i < message.messageType.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]); - if (error) - return "messageType." + error; - } - } - if (message.enumType != null && message.hasOwnProperty("enumType")) { - if (!Array.isArray(message.enumType)) - return "enumType: array expected"; - for (var i = 0; i < message.enumType.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); - if (error) - return "enumType." + error; - } - } - if (message.service != null && message.hasOwnProperty("service")) { - if (!Array.isArray(message.service)) - return "service: array expected"; - for (var i = 0; i < message.service.length; ++i) { - var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]); - if (error) - return "service." + error; + /** + * PropertyOrder direction. + * @member {google.datastore.v1.PropertyOrder.Direction} direction + * @memberof google.datastore.v1.PropertyOrder + * @instance + */ + PropertyOrder.prototype.direction = 0; + + /** + * Creates a new PropertyOrder instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder instance + */ + PropertyOrder.create = function create(properties) { + return new PropertyOrder(properties); + }; + + /** + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyOrder.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); + return writer; + }; + + /** + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyOrder.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyOrder.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyOrder(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + case 2: + message.direction = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - if (message.extension != null && message.hasOwnProperty("extension")) { - if (!Array.isArray(message.extension)) - return "extension: array expected"; - for (var i = 0; i < message.extension.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + return message; + }; + + /** + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyOrder.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyOrder message. + * @function verify + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyOrder.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); if (error) - return "extension." + error; + return "property." + error; } - } - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.FileOptions.verify(message.options); - if (error) - return "options." + error; - } - if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { - var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo); - if (error) - return "sourceCodeInfo." + error; - } - if (message.syntax != null && message.hasOwnProperty("syntax")) - if (!$util.isString(message.syntax)) - return "syntax: string expected"; - return null; - }; + if (message.direction != null && message.hasOwnProperty("direction")) + switch (message.direction) { + default: + return "direction: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; - /** - * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto - */ - FileDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FileDescriptorProto) - return object; - var message = new $root.google.protobuf.FileDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object["package"] != null) - message["package"] = String(object["package"]); - if (object.dependency) { - if (!Array.isArray(object.dependency)) - throw TypeError(".google.protobuf.FileDescriptorProto.dependency: array expected"); - message.dependency = []; - for (var i = 0; i < object.dependency.length; ++i) - message.dependency[i] = String(object.dependency[i]); - } - if (object.publicDependency) { - if (!Array.isArray(object.publicDependency)) - throw TypeError(".google.protobuf.FileDescriptorProto.publicDependency: array expected"); - message.publicDependency = []; - for (var i = 0; i < object.publicDependency.length; ++i) - message.publicDependency[i] = object.publicDependency[i] | 0; - } - if (object.weakDependency) { - if (!Array.isArray(object.weakDependency)) - throw TypeError(".google.protobuf.FileDescriptorProto.weakDependency: array expected"); - message.weakDependency = []; - for (var i = 0; i < object.weakDependency.length; ++i) - message.weakDependency[i] = object.weakDependency[i] | 0; - } - if (object.messageType) { - if (!Array.isArray(object.messageType)) - throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); - message.messageType = []; - for (var i = 0; i < object.messageType.length; ++i) { - if (typeof object.messageType[i] !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); - message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]); - } - } - if (object.enumType) { - if (!Array.isArray(object.enumType)) - throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected"); - message.enumType = []; - for (var i = 0; i < object.enumType.length; ++i) { - if (typeof object.enumType[i] !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); - message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); - } - } - if (object.service) { - if (!Array.isArray(object.service)) - throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected"); - message.service = []; - for (var i = 0; i < object.service.length; ++i) { - if (typeof object.service[i] !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); - message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]); + /** + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + */ + PropertyOrder.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyOrder) + return object; + var message = new $root.google.datastore.v1.PropertyOrder(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyOrder.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); } - } - if (object.extension) { - if (!Array.isArray(object.extension)) - throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected"); - message.extension = []; - for (var i = 0; i < object.extension.length; ++i) { - if (typeof object.extension[i] !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); - message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + switch (object.direction) { + case "DIRECTION_UNSPECIFIED": + case 0: + message.direction = 0; + break; + case "ASCENDING": + case 1: + message.direction = 1; + break; + case "DESCENDING": + case 2: + message.direction = 2; + break; } - } - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.FileOptions.fromObject(object.options); - } - if (object.sourceCodeInfo != null) { - if (typeof object.sourceCodeInfo !== "object") - throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); - message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo); - } - if (object.syntax != null) - message.syntax = String(object.syntax); - return message; - }; + return message; + }; - /** - * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.FileDescriptorProto - * @static - * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - FileDescriptorProto.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.dependency = []; - object.messageType = []; - object.enumType = []; - object.service = []; - object.extension = []; - object.publicDependency = []; - object.weakDependency = []; - } - if (options.defaults) { - object.name = ""; - object["package"] = ""; - object.options = null; - object.sourceCodeInfo = null; - object.syntax = ""; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message["package"] != null && message.hasOwnProperty("package")) - object["package"] = message["package"]; - if (message.dependency && message.dependency.length) { - object.dependency = []; - for (var j = 0; j < message.dependency.length; ++j) - object.dependency[j] = message.dependency[j]; - } - if (message.messageType && message.messageType.length) { - object.messageType = []; - for (var j = 0; j < message.messageType.length; ++j) - object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options); - } - if (message.enumType && message.enumType.length) { - object.enumType = []; - for (var j = 0; j < message.enumType.length; ++j) - object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); - } - if (message.service && message.service.length) { - object.service = []; - for (var j = 0; j < message.service.length; ++j) - object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options); - } - if (message.extension && message.extension.length) { - object.extension = []; - for (var j = 0; j < message.extension.length; ++j) - object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); - } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.FileOptions.toObject(message.options, options); - if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) - object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options); - if (message.publicDependency && message.publicDependency.length) { - object.publicDependency = []; - for (var j = 0; j < message.publicDependency.length; ++j) - object.publicDependency[j] = message.publicDependency[j]; - } - if (message.weakDependency && message.weakDependency.length) { - object.weakDependency = []; - for (var j = 0; j < message.weakDependency.length; ++j) - object.weakDependency[j] = message.weakDependency[j]; - } - if (message.syntax != null && message.hasOwnProperty("syntax")) - object.syntax = message.syntax; - return object; - }; + /** + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {google.datastore.v1.PropertyOrder} message PropertyOrder + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyOrder.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.property = null; + object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; + } + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; + return object; + }; - /** - * Converts this FileDescriptorProto to JSON. - * @function toJSON - * @memberof google.protobuf.FileDescriptorProto - * @instance - * @returns {Object.} JSON object - */ - FileDescriptorProto.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this PropertyOrder to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyOrder + * @instance + * @returns {Object.} JSON object + */ + PropertyOrder.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return FileDescriptorProto; - })(); + /** + * Direction enum. + * @name google.datastore.v1.PropertyOrder.Direction + * @enum {number} + * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + PropertyOrder.Direction = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); - protobuf.DescriptorProto = (function() { + return PropertyOrder; + })(); - /** - * Properties of a DescriptorProto. - * @memberof google.protobuf - * @interface IDescriptorProto - * @property {string|null} [name] DescriptorProto name - * @property {Array.|null} [field] DescriptorProto field - * @property {Array.|null} [extension] DescriptorProto extension - * @property {Array.|null} [nestedType] DescriptorProto nestedType - * @property {Array.|null} [enumType] DescriptorProto enumType - * @property {Array.|null} [extensionRange] DescriptorProto extensionRange - * @property {Array.|null} [oneofDecl] DescriptorProto oneofDecl - * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options - * @property {Array.|null} [reservedRange] DescriptorProto reservedRange - * @property {Array.|null} [reservedName] DescriptorProto reservedName - */ + v1.Filter = (function() { - /** - * Constructs a new DescriptorProto. - * @memberof google.protobuf - * @classdesc Represents a DescriptorProto. - * @implements IDescriptorProto - * @constructor - * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set - */ - function DescriptorProto(properties) { - this.field = []; - this.extension = []; - this.nestedType = []; - this.enumType = []; - this.extensionRange = []; - this.oneofDecl = []; - this.reservedRange = []; - this.reservedName = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a Filter. + * @memberof google.datastore.v1 + * @interface IFilter + * @property {google.datastore.v1.ICompositeFilter|null} [compositeFilter] Filter compositeFilter + * @property {google.datastore.v1.IPropertyFilter|null} [propertyFilter] Filter propertyFilter + */ - /** - * DescriptorProto name. - * @member {string} name - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.name = ""; + /** + * Constructs a new Filter. + * @memberof google.datastore.v1 + * @classdesc Represents a Filter. + * @implements IFilter + * @constructor + * @param {google.datastore.v1.IFilter=} [properties] Properties to set + */ + function Filter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * DescriptorProto field. - * @member {Array.} field - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.field = $util.emptyArray; + /** + * Filter compositeFilter. + * @member {google.datastore.v1.ICompositeFilter|null|undefined} compositeFilter + * @memberof google.datastore.v1.Filter + * @instance + */ + Filter.prototype.compositeFilter = null; - /** - * DescriptorProto extension. - * @member {Array.} extension - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.extension = $util.emptyArray; + /** + * Filter propertyFilter. + * @member {google.datastore.v1.IPropertyFilter|null|undefined} propertyFilter + * @memberof google.datastore.v1.Filter + * @instance + */ + Filter.prototype.propertyFilter = null; - /** - * DescriptorProto nestedType. - * @member {Array.} nestedType - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.nestedType = $util.emptyArray; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * DescriptorProto enumType. - * @member {Array.} enumType - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.enumType = $util.emptyArray; + /** + * Filter filterType. + * @member {"compositeFilter"|"propertyFilter"|undefined} filterType + * @memberof google.datastore.v1.Filter + * @instance + */ + Object.defineProperty(Filter.prototype, "filterType", { + get: $util.oneOfGetter($oneOfFields = ["compositeFilter", "propertyFilter"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * DescriptorProto extensionRange. - * @member {Array.} extensionRange - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.extensionRange = $util.emptyArray; + /** + * Creates a new Filter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter=} [properties] Properties to set + * @returns {google.datastore.v1.Filter} Filter instance + */ + Filter.create = function create(properties) { + return new Filter(properties); + }; - /** - * DescriptorProto oneofDecl. - * @member {Array.} oneofDecl - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.oneofDecl = $util.emptyArray; + /** + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Filter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.compositeFilter != null && Object.hasOwnProperty.call(message, "compositeFilter")) + $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.propertyFilter != null && Object.hasOwnProperty.call(message, "propertyFilter")) + $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; - /** - * DescriptorProto options. - * @member {google.protobuf.IMessageOptions|null|undefined} options - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.options = null; + /** + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Filter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * DescriptorProto reservedRange. - * @member {Array.} reservedRange - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.reservedRange = $util.emptyArray; + /** + * Decodes a Filter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Filter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Filter} Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Filter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Filter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); + break; + case 2: + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * DescriptorProto reservedName. - * @member {Array.} reservedName - * @memberof google.protobuf.DescriptorProto - * @instance - */ - DescriptorProto.prototype.reservedName = $util.emptyArray; + /** + * Decodes a Filter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Filter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Filter} Filter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Filter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a new DescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.DescriptorProto - * @static - * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.DescriptorProto} DescriptorProto instance - */ - DescriptorProto.create = function create(properties) { - return new DescriptorProto(properties); - }; + /** + * Verifies a Filter message. + * @function verify + * @memberof google.datastore.v1.Filter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Filter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + properties.filterType = 1; + { + var error = $root.google.datastore.v1.CompositeFilter.verify(message.compositeFilter); + if (error) + return "compositeFilter." + error; + } + } + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + if (properties.filterType === 1) + return "filterType: multiple values"; + properties.filterType = 1; + { + var error = $root.google.datastore.v1.PropertyFilter.verify(message.propertyFilter); + if (error) + return "propertyFilter." + error; + } + } + return null; + }; - /** - * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.DescriptorProto - * @static - * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - DescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.field != null && message.field.length) - for (var i = 0; i < message.field.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.nestedType != null && message.nestedType.length) - for (var i = 0; i < message.nestedType.length; ++i) - $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.enumType != null && message.enumType.length) - for (var i = 0; i < message.enumType.length; ++i) - $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.extensionRange != null && message.extensionRange.length) - for (var i = 0; i < message.extensionRange.length; ++i) - $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.extension != null && message.extension.length) - for (var i = 0; i < message.extension.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.oneofDecl != null && message.oneofDecl.length) - for (var i = 0; i < message.oneofDecl.length; ++i) - $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.reservedRange != null && message.reservedRange.length) - for (var i = 0; i < message.reservedRange.length; ++i) - $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.reservedName != null && message.reservedName.length) - for (var i = 0; i < message.reservedName.length; ++i) - writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); - return writer; - }; + /** + * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Filter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Filter} Filter + */ + Filter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Filter) + return object; + var message = new $root.google.datastore.v1.Filter(); + if (object.compositeFilter != null) { + if (typeof object.compositeFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.compositeFilter: object expected"); + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.fromObject(object.compositeFilter); + } + if (object.propertyFilter != null) { + if (typeof object.propertyFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.propertyFilter: object expected"); + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.fromObject(object.propertyFilter); + } + return message; + }; - /** - * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.DescriptorProto - * @static - * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a DescriptorProto message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.DescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.DescriptorProto} DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - DescriptorProto.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - if (!(message.field && message.field.length)) - message.field = []; - message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.extension && message.extension.length)) - message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.nestedType && message.nestedType.length)) - message.nestedType = []; - message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); - break; - case 4: - if (!(message.enumType && message.enumType.length)) - message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.extensionRange && message.extensionRange.length)) - message.extensionRange = []; - message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); - break; - case 8: - if (!(message.oneofDecl && message.oneofDecl.length)) - message.oneofDecl = []; - message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); - break; - case 7: - message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); - break; - case 9: - if (!(message.reservedRange && message.reservedRange.length)) - message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); - break; - case 10: - if (!(message.reservedName && message.reservedName.length)) - message.reservedName = []; - message.reservedName.push(reader.string()); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Filter + * @static + * @param {google.datastore.v1.Filter} message Filter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Filter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + object.compositeFilter = $root.google.datastore.v1.CompositeFilter.toObject(message.compositeFilter, options); + if (options.oneofs) + object.filterType = "compositeFilter"; } - } - return message; - }; + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + object.propertyFilter = $root.google.datastore.v1.PropertyFilter.toObject(message.propertyFilter, options); + if (options.oneofs) + object.filterType = "propertyFilter"; + } + return object; + }; - /** - * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.DescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.DescriptorProto} DescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - DescriptorProto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Converts this Filter to JSON. + * @function toJSON + * @memberof google.datastore.v1.Filter + * @instance + * @returns {Object.} JSON object + */ + Filter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Verifies a DescriptorProto message. - * @function verify - * @memberof google.protobuf.DescriptorProto - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - DescriptorProto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.field != null && message.hasOwnProperty("field")) { - if (!Array.isArray(message.field)) - return "field: array expected"; - for (var i = 0; i < message.field.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]); - if (error) - return "field." + error; - } - } - if (message.extension != null && message.hasOwnProperty("extension")) { - if (!Array.isArray(message.extension)) - return "extension: array expected"; - for (var i = 0; i < message.extension.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); - if (error) - return "extension." + error; - } - } - if (message.nestedType != null && message.hasOwnProperty("nestedType")) { - if (!Array.isArray(message.nestedType)) - return "nestedType: array expected"; - for (var i = 0; i < message.nestedType.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]); - if (error) - return "nestedType." + error; - } - } - if (message.enumType != null && message.hasOwnProperty("enumType")) { - if (!Array.isArray(message.enumType)) - return "enumType: array expected"; - for (var i = 0; i < message.enumType.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); - if (error) - return "enumType." + error; - } - } - if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) { - if (!Array.isArray(message.extensionRange)) - return "extensionRange: array expected"; - for (var i = 0; i < message.extensionRange.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]); - if (error) - return "extensionRange." + error; - } - } - if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) { - if (!Array.isArray(message.oneofDecl)) - return "oneofDecl: array expected"; - for (var i = 0; i < message.oneofDecl.length; ++i) { - var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]); - if (error) - return "oneofDecl." + error; - } - } - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.MessageOptions.verify(message.options); - if (error) - return "options." + error; - } - if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { - if (!Array.isArray(message.reservedRange)) - return "reservedRange: array expected"; - for (var i = 0; i < message.reservedRange.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]); - if (error) - return "reservedRange." + error; - } - } - if (message.reservedName != null && message.hasOwnProperty("reservedName")) { - if (!Array.isArray(message.reservedName)) - return "reservedName: array expected"; - for (var i = 0; i < message.reservedName.length; ++i) - if (!$util.isString(message.reservedName[i])) - return "reservedName: string[] expected"; - } - return null; - }; - - /** - * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.DescriptorProto - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.DescriptorProto} DescriptorProto - */ - DescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.DescriptorProto) - return object; - var message = new $root.google.protobuf.DescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.field) { - if (!Array.isArray(object.field)) - throw TypeError(".google.protobuf.DescriptorProto.field: array expected"); - message.field = []; - for (var i = 0; i < object.field.length; ++i) { - if (typeof object.field[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); - message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]); - } - } - if (object.extension) { - if (!Array.isArray(object.extension)) - throw TypeError(".google.protobuf.DescriptorProto.extension: array expected"); - message.extension = []; - for (var i = 0; i < object.extension.length; ++i) { - if (typeof object.extension[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); - message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); - } - } - if (object.nestedType) { - if (!Array.isArray(object.nestedType)) - throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected"); - message.nestedType = []; - for (var i = 0; i < object.nestedType.length; ++i) { - if (typeof object.nestedType[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); - message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]); - } - } - if (object.enumType) { - if (!Array.isArray(object.enumType)) - throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected"); - message.enumType = []; - for (var i = 0; i < object.enumType.length; ++i) { - if (typeof object.enumType[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); - message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); - } - } - if (object.extensionRange) { - if (!Array.isArray(object.extensionRange)) - throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected"); - message.extensionRange = []; - for (var i = 0; i < object.extensionRange.length; ++i) { - if (typeof object.extensionRange[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); - message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]); - } - } - if (object.oneofDecl) { - if (!Array.isArray(object.oneofDecl)) - throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected"); - message.oneofDecl = []; - for (var i = 0; i < object.oneofDecl.length; ++i) { - if (typeof object.oneofDecl[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); - message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]); - } - } - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); - message.options = $root.google.protobuf.MessageOptions.fromObject(object.options); - } - if (object.reservedRange) { - if (!Array.isArray(object.reservedRange)) - throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected"); - message.reservedRange = []; - for (var i = 0; i < object.reservedRange.length; ++i) { - if (typeof object.reservedRange[i] !== "object") - throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); - message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]); - } - } - if (object.reservedName) { - if (!Array.isArray(object.reservedName)) - throw TypeError(".google.protobuf.DescriptorProto.reservedName: array expected"); - message.reservedName = []; - for (var i = 0; i < object.reservedName.length; ++i) - message.reservedName[i] = String(object.reservedName[i]); - } - return message; - }; - - /** - * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.DescriptorProto - * @static - * @param {google.protobuf.DescriptorProto} message DescriptorProto - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - DescriptorProto.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.field = []; - object.nestedType = []; - object.enumType = []; - object.extensionRange = []; - object.extension = []; - object.oneofDecl = []; - object.reservedRange = []; - object.reservedName = []; - } - if (options.defaults) { - object.name = ""; - object.options = null; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.field && message.field.length) { - object.field = []; - for (var j = 0; j < message.field.length; ++j) - object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options); - } - if (message.nestedType && message.nestedType.length) { - object.nestedType = []; - for (var j = 0; j < message.nestedType.length; ++j) - object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options); - } - if (message.enumType && message.enumType.length) { - object.enumType = []; - for (var j = 0; j < message.enumType.length; ++j) - object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); - } - if (message.extensionRange && message.extensionRange.length) { - object.extensionRange = []; - for (var j = 0; j < message.extensionRange.length; ++j) - object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options); - } - if (message.extension && message.extension.length) { - object.extension = []; - for (var j = 0; j < message.extension.length; ++j) - object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); - } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options); - if (message.oneofDecl && message.oneofDecl.length) { - object.oneofDecl = []; - for (var j = 0; j < message.oneofDecl.length; ++j) - object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options); - } - if (message.reservedRange && message.reservedRange.length) { - object.reservedRange = []; - for (var j = 0; j < message.reservedRange.length; ++j) - object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options); - } - if (message.reservedName && message.reservedName.length) { - object.reservedName = []; - for (var j = 0; j < message.reservedName.length; ++j) - object.reservedName[j] = message.reservedName[j]; - } - return object; - }; - - /** - * Converts this DescriptorProto to JSON. - * @function toJSON - * @memberof google.protobuf.DescriptorProto - * @instance - * @returns {Object.} JSON object - */ - DescriptorProto.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - DescriptorProto.ExtensionRange = (function() { - - /** - * Properties of an ExtensionRange. - * @memberof google.protobuf.DescriptorProto - * @interface IExtensionRange - * @property {number|null} [start] ExtensionRange start - * @property {number|null} [end] ExtensionRange end - * @property {google.protobuf.IExtensionRangeOptions|null} [options] ExtensionRange options - */ - - /** - * Constructs a new ExtensionRange. - * @memberof google.protobuf.DescriptorProto - * @classdesc Represents an ExtensionRange. - * @implements IExtensionRange - * @constructor - * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set - */ - function ExtensionRange(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; + return Filter; + })(); + + v1.CompositeFilter = (function() { + + /** + * Properties of a CompositeFilter. + * @memberof google.datastore.v1 + * @interface ICompositeFilter + * @property {google.datastore.v1.CompositeFilter.Operator|null} [op] CompositeFilter op + * @property {Array.|null} [filters] CompositeFilter filters + */ + + /** + * Constructs a new CompositeFilter. + * @memberof google.datastore.v1 + * @classdesc Represents a CompositeFilter. + * @implements ICompositeFilter + * @constructor + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + */ + function CompositeFilter(properties) { + this.filters = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } /** - * ExtensionRange start. - * @member {number} start - * @memberof google.protobuf.DescriptorProto.ExtensionRange - * @instance - */ - ExtensionRange.prototype.start = 0; - - /** - * ExtensionRange end. - * @member {number} end - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * CompositeFilter op. + * @member {google.datastore.v1.CompositeFilter.Operator} op + * @memberof google.datastore.v1.CompositeFilter * @instance */ - ExtensionRange.prototype.end = 0; + CompositeFilter.prototype.op = 0; /** - * ExtensionRange options. - * @member {google.protobuf.IExtensionRangeOptions|null|undefined} options - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * CompositeFilter filters. + * @member {Array.} filters + * @memberof google.datastore.v1.CompositeFilter * @instance */ - ExtensionRange.prototype.options = null; + CompositeFilter.prototype.filters = $util.emptyArray; /** - * Creates a new ExtensionRange instance using the specified properties. + * Creates a new CompositeFilter instance using the specified properties. * @function create - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set - * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter instance */ - ExtensionRange.create = function create(properties) { - return new ExtensionRange(properties); + CompositeFilter.create = function create(properties) { + return new CompositeFilter(properties); }; /** - * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. * @function encode - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExtensionRange.encode = function encode(message, writer) { + CompositeFilter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.start != null && Object.hasOwnProperty.call(message, "start")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && Object.hasOwnProperty.call(message, "end")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.op != null && Object.hasOwnProperty.call(message, "op")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); + if (message.filters != null && message.filters.length) + for (var i = 0; i < message.filters.length; ++i) + $root.google.datastore.v1.Filter.encode(message.filters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) { + CompositeFilter.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an ExtensionRange message from the specified reader or buffer. + * Decodes a CompositeFilter message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExtensionRange.decode = function decode(reader, length) { + CompositeFilter.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CompositeFilter(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.start = reader.int32(); + message.op = reader.int32(); break; case 2: - message.end = reader.int32(); - break; - case 3: - message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); + if (!(message.filters && message.filters.length)) + message.filters = []; + message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -12653,130 +12811,162 @@ }; /** - * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExtensionRange.decodeDelimited = function decodeDelimited(reader) { + CompositeFilter.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an ExtensionRange message. + * Verifies a CompositeFilter message. * @function verify - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExtensionRange.verify = function verify(message) { + CompositeFilter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.start != null && message.hasOwnProperty("start")) - if (!$util.isInteger(message.start)) - return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) - if (!$util.isInteger(message.end)) - return "end: integer expected"; - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options); - if (error) - return "options." + error; + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + break; + } + if (message.filters != null && message.hasOwnProperty("filters")) { + if (!Array.isArray(message.filters)) + return "filters: array expected"; + for (var i = 0; i < message.filters.length; ++i) { + var error = $root.google.datastore.v1.Filter.verify(message.filters[i]); + if (error) + return "filters." + error; + } } return null; }; /** - * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static * @param {Object.} object Plain object - * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter */ - ExtensionRange.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) + CompositeFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CompositeFilter) return object; - var message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); - if (object.start != null) - message.start = object.start | 0; - if (object.end != null) - message.end = object.end | 0; - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected"); - message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options); + var message = new $root.google.datastore.v1.CompositeFilter(); + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "AND": + case 1: + message.op = 1; + break; + } + if (object.filters) { + if (!Array.isArray(object.filters)) + throw TypeError(".google.datastore.v1.CompositeFilter.filters: array expected"); + message.filters = []; + for (var i = 0; i < object.filters.length; ++i) { + if (typeof object.filters[i] !== "object") + throw TypeError(".google.datastore.v1.CompositeFilter.filters: object expected"); + message.filters[i] = $root.google.datastore.v1.Filter.fromObject(object.filters[i]); + } } return message; }; /** - * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange + * @param {google.datastore.v1.CompositeFilter} message CompositeFilter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ExtensionRange.toObject = function toObject(message, options) { + CompositeFilter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.start = 0; - object.end = 0; - object.options = null; + if (options.arrays || options.defaults) + object.filters = []; + if (options.defaults) + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; + if (message.filters && message.filters.length) { + object.filters = []; + for (var j = 0; j < message.filters.length; ++j) + object.filters[j] = $root.google.datastore.v1.Filter.toObject(message.filters[j], options); } - if (message.start != null && message.hasOwnProperty("start")) - object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) - object.end = message.end; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options); return object; }; /** - * Converts this ExtensionRange to JSON. + * Converts this CompositeFilter to JSON. * @function toJSON - * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @memberof google.datastore.v1.CompositeFilter * @instance * @returns {Object.} JSON object */ - ExtensionRange.prototype.toJSON = function toJSON() { + CompositeFilter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ExtensionRange; + /** + * Operator enum. + * @name google.datastore.v1.CompositeFilter.Operator + * @enum {number} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} AND=1 AND value + */ + CompositeFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "AND"] = 1; + return values; + })(); + + return CompositeFilter; })(); - DescriptorProto.ReservedRange = (function() { + v1.PropertyFilter = (function() { /** - * Properties of a ReservedRange. - * @memberof google.protobuf.DescriptorProto - * @interface IReservedRange - * @property {number|null} [start] ReservedRange start - * @property {number|null} [end] ReservedRange end + * Properties of a PropertyFilter. + * @memberof google.datastore.v1 + * @interface IPropertyFilter + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyFilter property + * @property {google.datastore.v1.PropertyFilter.Operator|null} [op] PropertyFilter op + * @property {google.datastore.v1.IValue|null} [value] PropertyFilter value */ /** - * Constructs a new ReservedRange. - * @memberof google.protobuf.DescriptorProto - * @classdesc Represents a ReservedRange. - * @implements IReservedRange + * Constructs a new PropertyFilter. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyFilter. + * @implements IPropertyFilter * @constructor - * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set */ - function ReservedRange(properties) { + function PropertyFilter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12784,88 +12974,101 @@ } /** - * ReservedRange start. - * @member {number} start - * @memberof google.protobuf.DescriptorProto.ReservedRange + * PropertyFilter property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyFilter * @instance */ - ReservedRange.prototype.start = 0; + PropertyFilter.prototype.property = null; /** - * ReservedRange end. - * @member {number} end - * @memberof google.protobuf.DescriptorProto.ReservedRange + * PropertyFilter op. + * @member {google.datastore.v1.PropertyFilter.Operator} op + * @memberof google.datastore.v1.PropertyFilter * @instance */ - ReservedRange.prototype.end = 0; + PropertyFilter.prototype.op = 0; /** - * Creates a new ReservedRange instance using the specified properties. + * PropertyFilter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.value = null; + + /** + * Creates a new PropertyFilter instance using the specified properties. * @function create - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static - * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set - * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter instance */ - ReservedRange.create = function create(properties) { - return new ReservedRange(properties); + PropertyFilter.create = function create(properties) { + return new PropertyFilter(properties); }; /** - * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. * @function encode - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static - * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReservedRange.encode = function encode(message, writer) { + PropertyFilter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.start != null && Object.hasOwnProperty.call(message, "start")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && Object.hasOwnProperty.call(message, "end")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.op != null && Object.hasOwnProperty.call(message, "op")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static - * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + PropertyFilter.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ReservedRange message from the specified reader or buffer. + * Decodes a PropertyFilter message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReservedRange.decode = function decode(reader, length) { + PropertyFilter.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyFilter(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.start = reader.int32(); + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); break; case 2: - message.end = reader.int32(); + message.op = reader.int32(); + break; + case 3: + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -12876,1681 +13079,1444 @@ }; /** - * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReservedRange.decodeDelimited = function decodeDelimited(reader) { + PropertyFilter.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ReservedRange message. + * Verifies a PropertyFilter message. * @function verify - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReservedRange.verify = function verify(message) { + PropertyFilter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.start != null && message.hasOwnProperty("start")) - if (!$util.isInteger(message.start)) - return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) - if (!$util.isInteger(message.end)) - return "end: integer expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + break; + } + if (message.value != null && message.hasOwnProperty("value")) { + var error = $root.google.datastore.v1.Value.verify(message.value); + if (error) + return "value." + error; + } return null; }; /** - * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static * @param {Object.} object Plain object - * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter */ - ReservedRange.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) + PropertyFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyFilter) return object; - var message = new $root.google.protobuf.DescriptorProto.ReservedRange(); - if (object.start != null) - message.start = object.start | 0; - if (object.end != null) - message.end = object.end | 0; + var message = new $root.google.datastore.v1.PropertyFilter(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "LESS_THAN": + case 1: + message.op = 1; + break; + case "LESS_THAN_OR_EQUAL": + case 2: + message.op = 2; + break; + case "GREATER_THAN": + case 3: + message.op = 3; + break; + case "GREATER_THAN_OR_EQUAL": + case 4: + message.op = 4; + break; + case "EQUAL": + case 5: + message.op = 5; + break; + case "HAS_ANCESTOR": + case 11: + message.op = 11; + break; + } + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); + } return message; }; /** - * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @static - * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange + * @param {google.datastore.v1.PropertyFilter} message PropertyFilter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReservedRange.toObject = function toObject(message, options) { + PropertyFilter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.start = 0; - object.end = 0; + object.property = null; + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + object.value = null; } - if (message.start != null && message.hasOwnProperty("start")) - object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) - object.end = message.end; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; + if (message.value != null && message.hasOwnProperty("value")) + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); return object; }; /** - * Converts this ReservedRange to JSON. + * Converts this PropertyFilter to JSON. * @function toJSON - * @memberof google.protobuf.DescriptorProto.ReservedRange + * @memberof google.datastore.v1.PropertyFilter * @instance * @returns {Object.} JSON object */ - ReservedRange.prototype.toJSON = function toJSON() { + PropertyFilter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ReservedRange; - })(); + /** + * Operator enum. + * @name google.datastore.v1.PropertyFilter.Operator + * @enum {number} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} LESS_THAN=1 LESS_THAN value + * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value + * @property {number} GREATER_THAN=3 GREATER_THAN value + * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value + * @property {number} EQUAL=5 EQUAL value + * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value + */ + PropertyFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "LESS_THAN"] = 1; + values[valuesById[2] = "LESS_THAN_OR_EQUAL"] = 2; + values[valuesById[3] = "GREATER_THAN"] = 3; + values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; + values[valuesById[5] = "EQUAL"] = 5; + values[valuesById[11] = "HAS_ANCESTOR"] = 11; + return values; + })(); - return DescriptorProto; - })(); + return PropertyFilter; + })(); - protobuf.ExtensionRangeOptions = (function() { + v1.GqlQuery = (function() { - /** - * Properties of an ExtensionRangeOptions. - * @memberof google.protobuf - * @interface IExtensionRangeOptions - * @property {Array.|null} [uninterpretedOption] ExtensionRangeOptions uninterpretedOption - */ + /** + * Properties of a GqlQuery. + * @memberof google.datastore.v1 + * @interface IGqlQuery + * @property {string|null} [queryString] GqlQuery queryString + * @property {boolean|null} [allowLiterals] GqlQuery allowLiterals + * @property {Object.|null} [namedBindings] GqlQuery namedBindings + * @property {Array.|null} [positionalBindings] GqlQuery positionalBindings + */ - /** - * Constructs a new ExtensionRangeOptions. - * @memberof google.protobuf - * @classdesc Represents an ExtensionRangeOptions. - * @implements IExtensionRangeOptions - * @constructor - * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set - */ - function ExtensionRangeOptions(properties) { - this.uninterpretedOption = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Constructs a new GqlQuery. + * @memberof google.datastore.v1 + * @classdesc Represents a GqlQuery. + * @implements IGqlQuery + * @constructor + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + */ + function GqlQuery(properties) { + this.namedBindings = {}; + this.positionalBindings = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * ExtensionRangeOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.ExtensionRangeOptions - * @instance - */ - ExtensionRangeOptions.prototype.uninterpretedOption = $util.emptyArray; + /** + * GqlQuery queryString. + * @member {string} queryString + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.queryString = ""; - /** - * Creates a new ExtensionRangeOptions instance using the specified properties. - * @function create - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set - * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions instance - */ - ExtensionRangeOptions.create = function create(properties) { - return new ExtensionRangeOptions(properties); - }; + /** + * GqlQuery allowLiterals. + * @member {boolean} allowLiterals + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.allowLiterals = false; - /** - * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @function encode - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ExtensionRangeOptions.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - return writer; - }; + /** + * GqlQuery namedBindings. + * @member {Object.} namedBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.namedBindings = $util.emptyObject; - /** - * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ExtensionRangeOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * GqlQuery positionalBindings. + * @member {Array.} positionalBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.positionalBindings = $util.emptyArray; - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ExtensionRangeOptions.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Creates a new GqlQuery instance using the specified properties. + * @function create + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQuery} GqlQuery instance + */ + GqlQuery.create = function create(properties) { + return new GqlQuery(properties); + }; - /** - * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ExtensionRangeOptions.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQuery.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.queryString != null && Object.hasOwnProperty.call(message, "queryString")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); + if (message.allowLiterals != null && Object.hasOwnProperty.call(message, "allowLiterals")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); + if (message.positionalBindings != null && message.positionalBindings.length) + for (var i = 0; i < message.positionalBindings.length; ++i) + $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.namedBindings != null && Object.hasOwnProperty.call(message, "namedBindings")) + for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + return writer; + }; - /** - * Verifies an ExtensionRangeOptions message. - * @function verify - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ExtensionRangeOptions.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; - } - } - return null; - }; + /** + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQuery.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions - */ - ExtensionRangeOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.ExtensionRangeOptions) - return object; - var message = new $root.google.protobuf.ExtensionRangeOptions(); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + /** + * Decodes a GqlQuery message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQuery.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.queryString = reader.string(); + break; + case 2: + message.allowLiterals = reader.bool(); + break; + case 5: + reader.skip().pos++; + if (message.namedBindings === $util.emptyObject) + message.namedBindings = {}; + key = reader.string(); + reader.pos++; + message.namedBindings[key] = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.positionalBindings && message.positionalBindings.length)) + message.positionalBindings = []; + message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; - - /** - * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.ExtensionRangeOptions - * @static - * @param {google.protobuf.ExtensionRangeOptions} message ExtensionRangeOptions - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ExtensionRangeOptions.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); - } - return object; - }; - - /** - * Converts this ExtensionRangeOptions to JSON. - * @function toJSON - * @memberof google.protobuf.ExtensionRangeOptions - * @instance - * @returns {Object.} JSON object - */ - ExtensionRangeOptions.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ExtensionRangeOptions; - })(); + return message; + }; - protobuf.FieldDescriptorProto = (function() { + /** + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQuery.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Properties of a FieldDescriptorProto. - * @memberof google.protobuf - * @interface IFieldDescriptorProto - * @property {string|null} [name] FieldDescriptorProto name - * @property {number|null} [number] FieldDescriptorProto number - * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label - * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type - * @property {string|null} [typeName] FieldDescriptorProto typeName - * @property {string|null} [extendee] FieldDescriptorProto extendee - * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue - * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex - * @property {string|null} [jsonName] FieldDescriptorProto jsonName - * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options - * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional - */ + /** + * Verifies a GqlQuery message. + * @function verify + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GqlQuery.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.queryString != null && message.hasOwnProperty("queryString")) + if (!$util.isString(message.queryString)) + return "queryString: string expected"; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + if (typeof message.allowLiterals !== "boolean") + return "allowLiterals: boolean expected"; + if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) { + if (!$util.isObject(message.namedBindings)) + return "namedBindings: object expected"; + var key = Object.keys(message.namedBindings); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.namedBindings[key[i]]); + if (error) + return "namedBindings." + error; + } + } + if (message.positionalBindings != null && message.hasOwnProperty("positionalBindings")) { + if (!Array.isArray(message.positionalBindings)) + return "positionalBindings: array expected"; + for (var i = 0; i < message.positionalBindings.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.positionalBindings[i]); + if (error) + return "positionalBindings." + error; + } + } + return null; + }; - /** - * Constructs a new FieldDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents a FieldDescriptorProto. - * @implements IFieldDescriptorProto - * @constructor - * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set - */ - function FieldDescriptorProto(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.GqlQuery} GqlQuery + */ + GqlQuery.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQuery) + return object; + var message = new $root.google.datastore.v1.GqlQuery(); + if (object.queryString != null) + message.queryString = String(object.queryString); + if (object.allowLiterals != null) + message.allowLiterals = Boolean(object.allowLiterals); + if (object.namedBindings) { + if (typeof object.namedBindings !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings = {}; + for (var keys = Object.keys(object.namedBindings), i = 0; i < keys.length; ++i) { + if (typeof object.namedBindings[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings[keys[i]] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.namedBindings[keys[i]]); + } + } + if (object.positionalBindings) { + if (!Array.isArray(object.positionalBindings)) + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: array expected"); + message.positionalBindings = []; + for (var i = 0; i < object.positionalBindings.length; ++i) { + if (typeof object.positionalBindings[i] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: object expected"); + message.positionalBindings[i] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.positionalBindings[i]); + } + } + return message; + }; - /** - * FieldDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.name = ""; + /** + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {google.datastore.v1.GqlQuery} message GqlQuery + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GqlQuery.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.positionalBindings = []; + if (options.objects || options.defaults) + object.namedBindings = {}; + if (options.defaults) { + object.queryString = ""; + object.allowLiterals = false; + } + if (message.queryString != null && message.hasOwnProperty("queryString")) + object.queryString = message.queryString; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + object.allowLiterals = message.allowLiterals; + if (message.positionalBindings && message.positionalBindings.length) { + object.positionalBindings = []; + for (var j = 0; j < message.positionalBindings.length; ++j) + object.positionalBindings[j] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.positionalBindings[j], options); + } + var keys2; + if (message.namedBindings && (keys2 = Object.keys(message.namedBindings)).length) { + object.namedBindings = {}; + for (var j = 0; j < keys2.length; ++j) + object.namedBindings[keys2[j]] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.namedBindings[keys2[j]], options); + } + return object; + }; - /** - * FieldDescriptorProto number. - * @member {number} number - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.number = 0; + /** + * Converts this GqlQuery to JSON. + * @function toJSON + * @memberof google.datastore.v1.GqlQuery + * @instance + * @returns {Object.} JSON object + */ + GqlQuery.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * FieldDescriptorProto label. - * @member {google.protobuf.FieldDescriptorProto.Label} label - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.label = 1; + return GqlQuery; + })(); - /** - * FieldDescriptorProto type. - * @member {google.protobuf.FieldDescriptorProto.Type} type - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.type = 1; + v1.GqlQueryParameter = (function() { - /** - * FieldDescriptorProto typeName. - * @member {string} typeName - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.typeName = ""; + /** + * Properties of a GqlQueryParameter. + * @memberof google.datastore.v1 + * @interface IGqlQueryParameter + * @property {google.datastore.v1.IValue|null} [value] GqlQueryParameter value + * @property {Uint8Array|null} [cursor] GqlQueryParameter cursor + */ - /** - * FieldDescriptorProto extendee. - * @member {string} extendee - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.extendee = ""; + /** + * Constructs a new GqlQueryParameter. + * @memberof google.datastore.v1 + * @classdesc Represents a GqlQueryParameter. + * @implements IGqlQueryParameter + * @constructor + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + */ + function GqlQueryParameter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * FieldDescriptorProto defaultValue. - * @member {string} defaultValue - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.defaultValue = ""; + /** + * GqlQueryParameter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.value = null; - /** - * FieldDescriptorProto oneofIndex. - * @member {number} oneofIndex - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.oneofIndex = 0; + /** + * GqlQueryParameter cursor. + * @member {Uint8Array} cursor + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.cursor = $util.newBuffer([]); - /** - * FieldDescriptorProto jsonName. - * @member {string} jsonName - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.jsonName = ""; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * FieldDescriptorProto options. - * @member {google.protobuf.IFieldOptions|null|undefined} options - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.options = null; - - /** - * FieldDescriptorProto proto3Optional. - * @member {boolean} proto3Optional - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.proto3Optional = false; + /** + * GqlQueryParameter parameterType. + * @member {"value"|"cursor"|undefined} parameterType + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + Object.defineProperty(GqlQueryParameter.prototype, "parameterType", { + get: $util.oneOfGetter($oneOfFields = ["value", "cursor"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * Creates a new FieldDescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance - */ - FieldDescriptorProto.create = function create(properties) { - return new FieldDescriptorProto(properties); - }; + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter instance + */ + GqlQueryParameter.create = function create(properties) { + return new GqlQueryParameter(properties); + }; - /** - * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FieldDescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee); - if (message.number != null && Object.hasOwnProperty.call(message, "number")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number); - if (message.label != null && Object.hasOwnProperty.call(message, "label")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.label); - if (message.type != null && Object.hasOwnProperty.call(message, "type")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.type); - if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName); - if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) - writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); - if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) - writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); - if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional")) - writer.uint32(/* id 17, wireType 0 =*/136).bool(message.proto3Optional); - return writer; - }; + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + return writer; + }; - /** - * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FieldDescriptorProto.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 3: - message.number = reader.int32(); - break; - case 4: - message.label = reader.int32(); - break; - case 5: - message.type = reader.int32(); - break; - case 6: - message.typeName = reader.string(); - break; - case 2: - message.extendee = reader.string(); - break; - case 7: - message.defaultValue = reader.string(); - break; - case 9: - message.oneofIndex = reader.int32(); - break; - case 10: - message.jsonName = reader.string(); - break; - case 8: - message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); - break; - case 17: - message.proto3Optional = reader.bool(); - break; - default: - reader.skipType(tag & 7); - break; + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQueryParameter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQueryParameter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + case 3: + message.cursor = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } } - } - return message; - }; + return message; + }; - /** - * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FieldDescriptorProto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQueryParameter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a FieldDescriptorProto message. - * @function verify - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - FieldDescriptorProto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.number != null && message.hasOwnProperty("number")) - if (!$util.isInteger(message.number)) - return "number: integer expected"; - if (message.label != null && message.hasOwnProperty("label")) - switch (message.label) { - default: - return "label: enum value expected"; - case 1: - case 2: - case 3: - break; + /** + * Verifies a GqlQueryParameter message. + * @function verify + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GqlQueryParameter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.value != null && message.hasOwnProperty("value")) { + properties.parameterType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.value); + if (error) + return "value." + error; + } } - if (message.type != null && message.hasOwnProperty("type")) - switch (message.type) { - default: - return "type: enum value expected"; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - break; + if (message.cursor != null && message.hasOwnProperty("cursor")) { + if (properties.parameterType === 1) + return "parameterType: multiple values"; + properties.parameterType = 1; + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; } - if (message.typeName != null && message.hasOwnProperty("typeName")) - if (!$util.isString(message.typeName)) - return "typeName: string expected"; - if (message.extendee != null && message.hasOwnProperty("extendee")) - if (!$util.isString(message.extendee)) - return "extendee: string expected"; - if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) - if (!$util.isString(message.defaultValue)) - return "defaultValue: string expected"; - if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) - if (!$util.isInteger(message.oneofIndex)) - return "oneofIndex: integer expected"; - if (message.jsonName != null && message.hasOwnProperty("jsonName")) - if (!$util.isString(message.jsonName)) - return "jsonName: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.FieldOptions.verify(message.options); - if (error) - return "options." + error; - } - if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) - if (typeof message.proto3Optional !== "boolean") - return "proto3Optional: boolean expected"; - return null; - }; + return null; + }; - /** - * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto - */ - FieldDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FieldDescriptorProto) + /** + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + */ + GqlQueryParameter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQueryParameter) + return object; + var message = new $root.google.datastore.v1.GqlQueryParameter(); + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.GqlQueryParameter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); + } + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length) + message.cursor = object.cursor; + return message; + }; + + /** + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.GqlQueryParameter} message GqlQueryParameter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GqlQueryParameter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.value != null && message.hasOwnProperty("value")) { + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + if (options.oneofs) + object.parameterType = "value"; + } + if (message.cursor != null && message.hasOwnProperty("cursor")) { + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (options.oneofs) + object.parameterType = "cursor"; + } return object; - var message = new $root.google.protobuf.FieldDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.number != null) - message.number = object.number | 0; - switch (object.label) { - case "LABEL_OPTIONAL": - case 1: - message.label = 1; - break; - case "LABEL_REQUIRED": - case 2: - message.label = 2; - break; - case "LABEL_REPEATED": - case 3: - message.label = 3; - break; - } - switch (object.type) { - case "TYPE_DOUBLE": - case 1: - message.type = 1; - break; - case "TYPE_FLOAT": - case 2: - message.type = 2; - break; - case "TYPE_INT64": - case 3: - message.type = 3; - break; - case "TYPE_UINT64": - case 4: - message.type = 4; - break; - case "TYPE_INT32": - case 5: - message.type = 5; - break; - case "TYPE_FIXED64": - case 6: - message.type = 6; - break; - case "TYPE_FIXED32": - case 7: - message.type = 7; - break; - case "TYPE_BOOL": - case 8: - message.type = 8; - break; - case "TYPE_STRING": - case 9: - message.type = 9; - break; - case "TYPE_GROUP": - case 10: - message.type = 10; - break; - case "TYPE_MESSAGE": - case 11: - message.type = 11; - break; - case "TYPE_BYTES": - case 12: - message.type = 12; - break; - case "TYPE_UINT32": - case 13: - message.type = 13; - break; - case "TYPE_ENUM": - case 14: - message.type = 14; - break; - case "TYPE_SFIXED32": - case 15: - message.type = 15; - break; - case "TYPE_SFIXED64": - case 16: - message.type = 16; - break; - case "TYPE_SINT32": - case 17: - message.type = 17; - break; - case "TYPE_SINT64": - case 18: - message.type = 18; - break; - } - if (object.typeName != null) - message.typeName = String(object.typeName); - if (object.extendee != null) - message.extendee = String(object.extendee); - if (object.defaultValue != null) - message.defaultValue = String(object.defaultValue); - if (object.oneofIndex != null) - message.oneofIndex = object.oneofIndex | 0; - if (object.jsonName != null) - message.jsonName = String(object.jsonName); - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); - } - if (object.proto3Optional != null) - message.proto3Optional = Boolean(object.proto3Optional); - return message; - }; + }; - /** - * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.FieldDescriptorProto - * @static - * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - FieldDescriptorProto.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.name = ""; - object.extendee = ""; - object.number = 0; - object.label = options.enums === String ? "LABEL_OPTIONAL" : 1; - object.type = options.enums === String ? "TYPE_DOUBLE" : 1; - object.typeName = ""; - object.defaultValue = ""; - object.options = null; - object.oneofIndex = 0; - object.jsonName = ""; - object.proto3Optional = false; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.extendee != null && message.hasOwnProperty("extendee")) - object.extendee = message.extendee; - if (message.number != null && message.hasOwnProperty("number")) - object.number = message.number; - if (message.label != null && message.hasOwnProperty("label")) - object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; - if (message.type != null && message.hasOwnProperty("type")) - object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; - if (message.typeName != null && message.hasOwnProperty("typeName")) - object.typeName = message.typeName; - if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) - object.defaultValue = message.defaultValue; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options); - if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) - object.oneofIndex = message.oneofIndex; - if (message.jsonName != null && message.hasOwnProperty("jsonName")) - object.jsonName = message.jsonName; - if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) - object.proto3Optional = message.proto3Optional; - return object; - }; - - /** - * Converts this FieldDescriptorProto to JSON. - * @function toJSON - * @memberof google.protobuf.FieldDescriptorProto - * @instance - * @returns {Object.} JSON object - */ - FieldDescriptorProto.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this GqlQueryParameter to JSON. + * @function toJSON + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + * @returns {Object.} JSON object + */ + GqlQueryParameter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Type enum. - * @name google.protobuf.FieldDescriptorProto.Type - * @enum {number} - * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value - * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value - * @property {number} TYPE_INT64=3 TYPE_INT64 value - * @property {number} TYPE_UINT64=4 TYPE_UINT64 value - * @property {number} TYPE_INT32=5 TYPE_INT32 value - * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value - * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value - * @property {number} TYPE_BOOL=8 TYPE_BOOL value - * @property {number} TYPE_STRING=9 TYPE_STRING value - * @property {number} TYPE_GROUP=10 TYPE_GROUP value - * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value - * @property {number} TYPE_BYTES=12 TYPE_BYTES value - * @property {number} TYPE_UINT32=13 TYPE_UINT32 value - * @property {number} TYPE_ENUM=14 TYPE_ENUM value - * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value - * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value - * @property {number} TYPE_SINT32=17 TYPE_SINT32 value - * @property {number} TYPE_SINT64=18 TYPE_SINT64 value - */ - FieldDescriptorProto.Type = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[1] = "TYPE_DOUBLE"] = 1; - values[valuesById[2] = "TYPE_FLOAT"] = 2; - values[valuesById[3] = "TYPE_INT64"] = 3; - values[valuesById[4] = "TYPE_UINT64"] = 4; - values[valuesById[5] = "TYPE_INT32"] = 5; - values[valuesById[6] = "TYPE_FIXED64"] = 6; - values[valuesById[7] = "TYPE_FIXED32"] = 7; - values[valuesById[8] = "TYPE_BOOL"] = 8; - values[valuesById[9] = "TYPE_STRING"] = 9; - values[valuesById[10] = "TYPE_GROUP"] = 10; - values[valuesById[11] = "TYPE_MESSAGE"] = 11; - values[valuesById[12] = "TYPE_BYTES"] = 12; - values[valuesById[13] = "TYPE_UINT32"] = 13; - values[valuesById[14] = "TYPE_ENUM"] = 14; - values[valuesById[15] = "TYPE_SFIXED32"] = 15; - values[valuesById[16] = "TYPE_SFIXED64"] = 16; - values[valuesById[17] = "TYPE_SINT32"] = 17; - values[valuesById[18] = "TYPE_SINT64"] = 18; - return values; + return GqlQueryParameter; })(); - /** - * Label enum. - * @name google.protobuf.FieldDescriptorProto.Label - * @enum {number} - * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value - * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value - * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value - */ - FieldDescriptorProto.Label = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[1] = "LABEL_OPTIONAL"] = 1; - values[valuesById[2] = "LABEL_REQUIRED"] = 2; - values[valuesById[3] = "LABEL_REPEATED"] = 3; - return values; - })(); + v1.QueryResultBatch = (function() { - return FieldDescriptorProto; - })(); + /** + * Properties of a QueryResultBatch. + * @memberof google.datastore.v1 + * @interface IQueryResultBatch + * @property {number|null} [skippedResults] QueryResultBatch skippedResults + * @property {Uint8Array|null} [skippedCursor] QueryResultBatch skippedCursor + * @property {google.datastore.v1.EntityResult.ResultType|null} [entityResultType] QueryResultBatch entityResultType + * @property {Array.|null} [entityResults] QueryResultBatch entityResults + * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor + * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults + * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion + */ - protobuf.OneofDescriptorProto = (function() { + /** + * Constructs a new QueryResultBatch. + * @memberof google.datastore.v1 + * @classdesc Represents a QueryResultBatch. + * @implements IQueryResultBatch + * @constructor + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + */ + function QueryResultBatch(properties) { + this.entityResults = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Properties of an OneofDescriptorProto. - * @memberof google.protobuf - * @interface IOneofDescriptorProto - * @property {string|null} [name] OneofDescriptorProto name - * @property {google.protobuf.IOneofOptions|null} [options] OneofDescriptorProto options - */ + /** + * QueryResultBatch skippedResults. + * @member {number} skippedResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.skippedResults = 0; - /** - * Constructs a new OneofDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents an OneofDescriptorProto. - * @implements IOneofDescriptorProto - * @constructor - * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set - */ - function OneofDescriptorProto(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * QueryResultBatch skippedCursor. + * @member {Uint8Array} skippedCursor + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.skippedCursor = $util.newBuffer([]); - /** - * OneofDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.OneofDescriptorProto - * @instance - */ - OneofDescriptorProto.prototype.name = ""; + /** + * QueryResultBatch entityResultType. + * @member {google.datastore.v1.EntityResult.ResultType} entityResultType + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.entityResultType = 0; - /** - * OneofDescriptorProto options. - * @member {google.protobuf.IOneofOptions|null|undefined} options - * @memberof google.protobuf.OneofDescriptorProto - * @instance - */ - OneofDescriptorProto.prototype.options = null; + /** + * QueryResultBatch entityResults. + * @member {Array.} entityResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.entityResults = $util.emptyArray; - /** - * Creates a new OneofDescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance - */ - OneofDescriptorProto.create = function create(properties) { - return new OneofDescriptorProto(properties); - }; + /** + * QueryResultBatch endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.endCursor = $util.newBuffer([]); - /** - * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - OneofDescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - OneofDescriptorProto.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * QueryResultBatch moreResults. + * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.moreResults = 0; - /** - * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - OneofDescriptorProto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * QueryResultBatch snapshotVersion. + * @member {number|Long} snapshotVersion + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Verifies an OneofDescriptorProto message. - * @function verify - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - OneofDescriptorProto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.OneofOptions.verify(message.options); - if (error) - return "options." + error; - } - return null; - }; + /** + * Creates a new QueryResultBatch instance using the specified properties. + * @function create + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch instance + */ + QueryResultBatch.create = function create(properties) { + return new QueryResultBatch(properties); + }; - /** - * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto - */ - OneofDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.OneofDescriptorProto) - return object; - var message = new $root.google.protobuf.OneofDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.OneofOptions.fromObject(object.options); - } - return message; - }; + /** + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryResultBatch.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.entityResultType != null && Object.hasOwnProperty.call(message, "entityResultType")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); + if (message.entityResults != null && message.entityResults.length) + for (var i = 0; i < message.entityResults.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.skippedCursor != null && Object.hasOwnProperty.call(message, "skippedCursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); + if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); + if (message.skippedResults != null && Object.hasOwnProperty.call(message, "skippedResults")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); + if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) + writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); + return writer; + }; - /** - * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.OneofDescriptorProto - * @static - * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - OneofDescriptorProto.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.name = ""; - object.options = null; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options); - return object; - }; + /** + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryResultBatch.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Converts this OneofDescriptorProto to JSON. - * @function toJSON - * @memberof google.protobuf.OneofDescriptorProto - * @instance - * @returns {Object.} JSON object - */ - OneofDescriptorProto.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Decodes a QueryResultBatch message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryResultBatch.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryResultBatch(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 6: + message.skippedResults = reader.int32(); + break; + case 3: + message.skippedCursor = reader.bytes(); + break; + case 1: + message.entityResultType = reader.int32(); + break; + case 2: + if (!(message.entityResults && message.entityResults.length)) + message.entityResults = []; + message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + case 4: + message.endCursor = reader.bytes(); + break; + case 5: + message.moreResults = reader.int32(); + break; + case 7: + message.snapshotVersion = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - return OneofDescriptorProto; - })(); - - protobuf.EnumDescriptorProto = (function() { - - /** - * Properties of an EnumDescriptorProto. - * @memberof google.protobuf - * @interface IEnumDescriptorProto - * @property {string|null} [name] EnumDescriptorProto name - * @property {Array.|null} [value] EnumDescriptorProto value - * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options - * @property {Array.|null} [reservedRange] EnumDescriptorProto reservedRange - * @property {Array.|null} [reservedName] EnumDescriptorProto reservedName - */ - - /** - * Constructs a new EnumDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents an EnumDescriptorProto. - * @implements IEnumDescriptorProto - * @constructor - * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set - */ - function EnumDescriptorProto(properties) { - this.value = []; - this.reservedRange = []; - this.reservedName = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * EnumDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.EnumDescriptorProto - * @instance - */ - EnumDescriptorProto.prototype.name = ""; - - /** - * EnumDescriptorProto value. - * @member {Array.} value - * @memberof google.protobuf.EnumDescriptorProto - * @instance - */ - EnumDescriptorProto.prototype.value = $util.emptyArray; - - /** - * EnumDescriptorProto options. - * @member {google.protobuf.IEnumOptions|null|undefined} options - * @memberof google.protobuf.EnumDescriptorProto - * @instance - */ - EnumDescriptorProto.prototype.options = null; - - /** - * EnumDescriptorProto reservedRange. - * @member {Array.} reservedRange - * @memberof google.protobuf.EnumDescriptorProto - * @instance - */ - EnumDescriptorProto.prototype.reservedRange = $util.emptyArray; - - /** - * EnumDescriptorProto reservedName. - * @member {Array.} reservedName - * @memberof google.protobuf.EnumDescriptorProto - * @instance - */ - EnumDescriptorProto.prototype.reservedName = $util.emptyArray; - - /** - * Creates a new EnumDescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.EnumDescriptorProto - * @static - * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance - */ - EnumDescriptorProto.create = function create(properties) { - return new EnumDescriptorProto(properties); - }; - - /** - * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.EnumDescriptorProto - * @static - * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - EnumDescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.value != null && message.value.length) - for (var i = 0; i < message.value.length; ++i) - $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.reservedRange != null && message.reservedRange.length) - for (var i = 0; i < message.reservedRange.length; ++i) - $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.reservedName != null && message.reservedName.length) - for (var i = 0; i < message.reservedName.length; ++i) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]); - return writer; - }; + /** + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryResultBatch.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.EnumDescriptorProto - * @static - * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Verifies a QueryResultBatch message. + * @function verify + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + QueryResultBatch.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + if (!$util.isInteger(message.skippedResults)) + return "skippedResults: integer expected"; + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + if (!(message.skippedCursor && typeof message.skippedCursor.length === "number" || $util.isString(message.skippedCursor))) + return "skippedCursor: buffer expected"; + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + switch (message.entityResultType) { + default: + return "entityResultType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.entityResults != null && message.hasOwnProperty("entityResults")) { + if (!Array.isArray(message.entityResults)) + return "entityResults: array expected"; + for (var i = 0; i < message.entityResults.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.entityResults[i]); + if (error) + return "entityResults." + error; + } + } + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + switch (message.moreResults) { + default: + return "moreResults: enum value expected"; + case 0: + case 1: + case 2: + case 4: + case 3: + break; + } + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) + return "snapshotVersion: integer|Long expected"; + return null; + }; - /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.EnumDescriptorProto - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - EnumDescriptorProto.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + */ + QueryResultBatch.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.QueryResultBatch) + return object; + var message = new $root.google.datastore.v1.QueryResultBatch(); + if (object.skippedResults != null) + message.skippedResults = object.skippedResults | 0; + if (object.skippedCursor != null) + if (typeof object.skippedCursor === "string") + $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); + else if (object.skippedCursor.length) + message.skippedCursor = object.skippedCursor; + switch (object.entityResultType) { + case "RESULT_TYPE_UNSPECIFIED": + case 0: + message.entityResultType = 0; + break; + case "FULL": case 1: - message.name = reader.string(); + message.entityResultType = 1; break; + case "PROJECTION": case 2: - if (!(message.value && message.value.length)) - message.value = []; - message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + message.entityResultType = 2; break; + case "KEY_ONLY": case 3: - message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.reservedRange && message.reservedRange.length)) - message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.reservedName && message.reservedName.length)) - message.reservedName = []; - message.reservedName.push(reader.string()); + message.entityResultType = 3; break; - default: - reader.skipType(tag & 7); + } + if (object.entityResults) { + if (!Array.isArray(object.entityResults)) + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: array expected"); + message.entityResults = []; + for (var i = 0; i < object.entityResults.length; ++i) { + if (typeof object.entityResults[i] !== "object") + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: object expected"); + message.entityResults[i] = $root.google.datastore.v1.EntityResult.fromObject(object.entityResults[i]); + } + } + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length) + message.endCursor = object.endCursor; + switch (object.moreResults) { + case "MORE_RESULTS_TYPE_UNSPECIFIED": + case 0: + message.moreResults = 0; + break; + case "NOT_FINISHED": + case 1: + message.moreResults = 1; + break; + case "MORE_RESULTS_AFTER_LIMIT": + case 2: + message.moreResults = 2; + break; + case "MORE_RESULTS_AFTER_CURSOR": + case 4: + message.moreResults = 4; + break; + case "NO_MORE_RESULTS": + case 3: + message.moreResults = 3; break; } - } - return message; + if (object.snapshotVersion != null) + if ($util.Long) + (message.snapshotVersion = $util.Long.fromValue(object.snapshotVersion)).unsigned = false; + else if (typeof object.snapshotVersion === "string") + message.snapshotVersion = parseInt(object.snapshotVersion, 10); + else if (typeof object.snapshotVersion === "number") + message.snapshotVersion = object.snapshotVersion; + else if (typeof object.snapshotVersion === "object") + message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); + return message; + }; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {google.datastore.v1.QueryResultBatch} message QueryResultBatch + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + QueryResultBatch.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.entityResults = []; + if (options.defaults) { + object.entityResultType = options.enums === String ? "RESULT_TYPE_UNSPECIFIED" : 0; + if (options.bytes === String) + object.skippedCursor = ""; + else { + object.skippedCursor = []; + if (options.bytes !== Array) + object.skippedCursor = $util.newBuffer(object.skippedCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; + object.skippedResults = 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.snapshotVersion = options.longs === String ? "0" : 0; + } + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; + if (message.entityResults && message.entityResults.length) { + object.entityResults = []; + for (var j = 0; j < message.entityResults.length; ++j) + object.entityResults[j] = $root.google.datastore.v1.EntityResult.toObject(message.entityResults[j], options); + } + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + object.skippedCursor = options.bytes === String ? $util.base64.encode(message.skippedCursor, 0, message.skippedCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.skippedCursor) : message.skippedCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + object.skippedResults = message.skippedResults; + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (typeof message.snapshotVersion === "number") + object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; + else + object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; + return object; + }; + + /** + * Converts this QueryResultBatch to JSON. + * @function toJSON + * @memberof google.datastore.v1.QueryResultBatch + * @instance + * @returns {Object.} JSON object + */ + QueryResultBatch.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * MoreResultsType enum. + * @name google.datastore.v1.QueryResultBatch.MoreResultsType + * @enum {number} + * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value + * @property {number} NOT_FINISHED=1 NOT_FINISHED value + * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value + * @property {number} MORE_RESULTS_AFTER_CURSOR=4 MORE_RESULTS_AFTER_CURSOR value + * @property {number} NO_MORE_RESULTS=3 NO_MORE_RESULTS value + */ + QueryResultBatch.MoreResultsType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MORE_RESULTS_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "NOT_FINISHED"] = 1; + values[valuesById[2] = "MORE_RESULTS_AFTER_LIMIT"] = 2; + values[valuesById[4] = "MORE_RESULTS_AFTER_CURSOR"] = 4; + values[valuesById[3] = "NO_MORE_RESULTS"] = 3; + return values; + })(); + + return QueryResultBatch; + })(); + + return v1; + })(); + + return datastore; + })(); + + google.api = (function() { + + /** + * Namespace api. + * @memberof google + * @namespace + */ + var api = {}; + + api.Http = (function() { + + /** + * Properties of a Http. + * @memberof google.api + * @interface IHttp + * @property {Array.|null} [rules] Http rules + * @property {boolean|null} [fullyDecodeReservedExpansion] Http fullyDecodeReservedExpansion + */ + + /** + * Constructs a new Http. + * @memberof google.api + * @classdesc Represents a Http. + * @implements IHttp + * @constructor + * @param {google.api.IHttp=} [properties] Properties to set + */ + function Http(properties) { + this.rules = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Http rules. + * @member {Array.} rules + * @memberof google.api.Http + * @instance + */ + Http.prototype.rules = $util.emptyArray; + + /** + * Http fullyDecodeReservedExpansion. + * @member {boolean} fullyDecodeReservedExpansion + * @memberof google.api.Http + * @instance + */ + Http.prototype.fullyDecodeReservedExpansion = false; + + /** + * Creates a new Http instance using the specified properties. + * @function create + * @memberof google.api.Http + * @static + * @param {google.api.IHttp=} [properties] Properties to set + * @returns {google.api.Http} Http instance + */ + Http.create = function create(properties) { + return new Http(properties); }; /** - * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.EnumDescriptorProto + * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @function encode + * @memberof google.api.Http * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * @param {google.api.IHttp} message Http message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - EnumDescriptorProto.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); + Http.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rules != null && message.rules.length) + for (var i = 0; i < message.rules.length; ++i) + $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion); + return writer; }; /** - * Verifies an EnumDescriptorProto message. - * @function verify - * @memberof google.protobuf.EnumDescriptorProto + * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.Http * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * @param {google.api.IHttp} message Http message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - EnumDescriptorProto.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.value != null && message.hasOwnProperty("value")) { - if (!Array.isArray(message.value)) - return "value: array expected"; - for (var i = 0; i < message.value.length; ++i) { - var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]); - if (error) - return "value." + error; + Http.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Http message from the specified reader or buffer. + * @function decode + * @memberof google.api.Http + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.Http} Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Http.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.rules && message.rules.length)) + message.rules = []; + message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + break; + case 2: + message.fullyDecodeReservedExpansion = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; } } - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.EnumOptions.verify(message.options); - if (error) - return "options." + error; - } - if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { - if (!Array.isArray(message.reservedRange)) - return "reservedRange: array expected"; - for (var i = 0; i < message.reservedRange.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]); + return message; + }; + + /** + * Decodes a Http message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.Http + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.Http} Http + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Http.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Http message. + * @function verify + * @memberof google.api.Http + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Http.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rules != null && message.hasOwnProperty("rules")) { + if (!Array.isArray(message.rules)) + return "rules: array expected"; + for (var i = 0; i < message.rules.length; ++i) { + var error = $root.google.api.HttpRule.verify(message.rules[i]); if (error) - return "reservedRange." + error; + return "rules." + error; } } - if (message.reservedName != null && message.hasOwnProperty("reservedName")) { - if (!Array.isArray(message.reservedName)) - return "reservedName: array expected"; - for (var i = 0; i < message.reservedName.length; ++i) - if (!$util.isString(message.reservedName[i])) - return "reservedName: string[] expected"; - } + if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + if (typeof message.fullyDecodeReservedExpansion !== "boolean") + return "fullyDecodeReservedExpansion: boolean expected"; return null; }; /** - * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a Http message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.EnumDescriptorProto + * @memberof google.api.Http * @static * @param {Object.} object Plain object - * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @returns {google.api.Http} Http */ - EnumDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.EnumDescriptorProto) + Http.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.Http) return object; - var message = new $root.google.protobuf.EnumDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.value) { - if (!Array.isArray(object.value)) - throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected"); - message.value = []; - for (var i = 0; i < object.value.length; ++i) { - if (typeof object.value[i] !== "object") - throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); - message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]); - } - } - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.EnumOptions.fromObject(object.options); - } - if (object.reservedRange) { - if (!Array.isArray(object.reservedRange)) - throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: array expected"); - message.reservedRange = []; - for (var i = 0; i < object.reservedRange.length; ++i) { - if (typeof object.reservedRange[i] !== "object") - throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected"); - message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]); + var message = new $root.google.api.Http(); + if (object.rules) { + if (!Array.isArray(object.rules)) + throw TypeError(".google.api.Http.rules: array expected"); + message.rules = []; + for (var i = 0; i < object.rules.length; ++i) { + if (typeof object.rules[i] !== "object") + throw TypeError(".google.api.Http.rules: object expected"); + message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]); } } - if (object.reservedName) { - if (!Array.isArray(object.reservedName)) - throw TypeError(".google.protobuf.EnumDescriptorProto.reservedName: array expected"); - message.reservedName = []; - for (var i = 0; i < object.reservedName.length; ++i) - message.reservedName[i] = String(object.reservedName[i]); - } + if (object.fullyDecodeReservedExpansion != null) + message.fullyDecodeReservedExpansion = Boolean(object.fullyDecodeReservedExpansion); return message; }; /** - * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * Creates a plain object from a Http message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.EnumDescriptorProto + * @memberof google.api.Http * @static - * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto + * @param {google.api.Http} message Http * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumDescriptorProto.toObject = function toObject(message, options) { + Http.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) { - object.value = []; - object.reservedRange = []; - object.reservedName = []; - } - if (options.defaults) { - object.name = ""; - object.options = null; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.value && message.value.length) { - object.value = []; - for (var j = 0; j < message.value.length; ++j) - object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options); - } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options); - if (message.reservedRange && message.reservedRange.length) { - object.reservedRange = []; - for (var j = 0; j < message.reservedRange.length; ++j) - object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options); - } - if (message.reservedName && message.reservedName.length) { - object.reservedName = []; - for (var j = 0; j < message.reservedName.length; ++j) - object.reservedName[j] = message.reservedName[j]; + if (options.arrays || options.defaults) + object.rules = []; + if (options.defaults) + object.fullyDecodeReservedExpansion = false; + if (message.rules && message.rules.length) { + object.rules = []; + for (var j = 0; j < message.rules.length; ++j) + object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options); } + if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion; return object; }; /** - * Converts this EnumDescriptorProto to JSON. + * Converts this Http to JSON. * @function toJSON - * @memberof google.protobuf.EnumDescriptorProto + * @memberof google.api.Http * @instance * @returns {Object.} JSON object */ - EnumDescriptorProto.prototype.toJSON = function toJSON() { + Http.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - EnumDescriptorProto.EnumReservedRange = (function() { - - /** - * Properties of an EnumReservedRange. - * @memberof google.protobuf.EnumDescriptorProto - * @interface IEnumReservedRange - * @property {number|null} [start] EnumReservedRange start - * @property {number|null} [end] EnumReservedRange end - */ + return Http; + })(); - /** - * Constructs a new EnumReservedRange. - * @memberof google.protobuf.EnumDescriptorProto - * @classdesc Represents an EnumReservedRange. - * @implements IEnumReservedRange - * @constructor - * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set - */ - function EnumReservedRange(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + api.HttpRule = (function() { - /** - * EnumReservedRange start. - * @member {number} start - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @instance - */ - EnumReservedRange.prototype.start = 0; - - /** - * EnumReservedRange end. - * @member {number} end - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @instance - */ - EnumReservedRange.prototype.end = 0; - - /** - * Creates a new EnumReservedRange instance using the specified properties. - * @function create - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set - * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange instance - */ - EnumReservedRange.create = function create(properties) { - return new EnumReservedRange(properties); - }; - - /** - * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @function encode - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - EnumReservedRange.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.start != null && Object.hasOwnProperty.call(message, "start")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); - if (message.end != null && Object.hasOwnProperty.call(message, "end")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); - return writer; - }; - - /** - * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - EnumReservedRange.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - EnumReservedRange.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.start = reader.int32(); - break; - case 2: - message.end = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - EnumReservedRange.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an EnumReservedRange message. - * @function verify - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - EnumReservedRange.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.start != null && message.hasOwnProperty("start")) - if (!$util.isInteger(message.start)) - return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) - if (!$util.isInteger(message.end)) - return "end: integer expected"; - return null; - }; - - /** - * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange - */ - EnumReservedRange.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange) - return object; - var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); - if (object.start != null) - message.start = object.start | 0; - if (object.end != null) - message.end = object.end | 0; - return message; - }; - - /** - * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @static - * @param {google.protobuf.EnumDescriptorProto.EnumReservedRange} message EnumReservedRange - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - EnumReservedRange.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.start = 0; - object.end = 0; - } - if (message.start != null && message.hasOwnProperty("start")) - object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) - object.end = message.end; - return object; - }; - - /** - * Converts this EnumReservedRange to JSON. - * @function toJSON - * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange - * @instance - * @returns {Object.} JSON object - */ - EnumReservedRange.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return EnumReservedRange; - })(); - - return EnumDescriptorProto; - })(); - - protobuf.EnumValueDescriptorProto = (function() { - - /** - * Properties of an EnumValueDescriptorProto. - * @memberof google.protobuf - * @interface IEnumValueDescriptorProto - * @property {string|null} [name] EnumValueDescriptorProto name - * @property {number|null} [number] EnumValueDescriptorProto number - * @property {google.protobuf.IEnumValueOptions|null} [options] EnumValueDescriptorProto options - */ + /** + * Properties of a HttpRule. + * @memberof google.api + * @interface IHttpRule + * @property {string|null} [selector] HttpRule selector + * @property {string|null} [get] HttpRule get + * @property {string|null} [put] HttpRule put + * @property {string|null} [post] HttpRule post + * @property {string|null} ["delete"] HttpRule delete + * @property {string|null} [patch] HttpRule patch + * @property {google.api.ICustomHttpPattern|null} [custom] HttpRule custom + * @property {string|null} [body] HttpRule body + * @property {string|null} [responseBody] HttpRule responseBody + * @property {Array.|null} [additionalBindings] HttpRule additionalBindings + */ /** - * Constructs a new EnumValueDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents an EnumValueDescriptorProto. - * @implements IEnumValueDescriptorProto + * Constructs a new HttpRule. + * @memberof google.api + * @classdesc Represents a HttpRule. + * @implements IHttpRule * @constructor - * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set + * @param {google.api.IHttpRule=} [properties] Properties to set */ - function EnumValueDescriptorProto(properties) { + function HttpRule(properties) { + this.additionalBindings = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -14558,101 +14524,209 @@ } /** - * EnumValueDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.EnumValueDescriptorProto + * HttpRule selector. + * @member {string} selector + * @memberof google.api.HttpRule * @instance */ - EnumValueDescriptorProto.prototype.name = ""; + HttpRule.prototype.selector = ""; /** - * EnumValueDescriptorProto number. - * @member {number} number - * @memberof google.protobuf.EnumValueDescriptorProto + * HttpRule get. + * @member {string} get + * @memberof google.api.HttpRule * @instance */ - EnumValueDescriptorProto.prototype.number = 0; + HttpRule.prototype.get = ""; /** - * EnumValueDescriptorProto options. - * @member {google.protobuf.IEnumValueOptions|null|undefined} options - * @memberof google.protobuf.EnumValueDescriptorProto + * HttpRule put. + * @member {string} put + * @memberof google.api.HttpRule * @instance */ - EnumValueDescriptorProto.prototype.options = null; + HttpRule.prototype.put = ""; /** - * Creates a new EnumValueDescriptorProto instance using the specified properties. - * @function create - * @memberof google.protobuf.EnumValueDescriptorProto - * @static - * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance + * HttpRule post. + * @member {string} post + * @memberof google.api.HttpRule + * @instance */ - EnumValueDescriptorProto.create = function create(properties) { - return new EnumValueDescriptorProto(properties); - }; + HttpRule.prototype.post = ""; /** - * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. - * @function encode - * @memberof google.protobuf.EnumValueDescriptorProto - * @static - * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * HttpRule delete. + * @member {string} delete + * @memberof google.api.HttpRule + * @instance */ - EnumValueDescriptorProto.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.number != null && Object.hasOwnProperty.call(message, "number")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + HttpRule.prototype["delete"] = ""; + + /** + * HttpRule patch. + * @member {string} patch + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.patch = ""; + + /** + * HttpRule custom. + * @member {google.api.ICustomHttpPattern|null|undefined} custom + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.custom = null; + + /** + * HttpRule body. + * @member {string} body + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.body = ""; + + /** + * HttpRule responseBody. + * @member {string} responseBody + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.responseBody = ""; + + /** + * HttpRule additionalBindings. + * @member {Array.} additionalBindings + * @memberof google.api.HttpRule + * @instance + */ + HttpRule.prototype.additionalBindings = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * HttpRule pattern. + * @member {"get"|"put"|"post"|"delete"|"patch"|"custom"|undefined} pattern + * @memberof google.api.HttpRule + * @instance + */ + Object.defineProperty(HttpRule.prototype, "pattern", { + get: $util.oneOfGetter($oneOfFields = ["get", "put", "post", "delete", "patch", "custom"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new HttpRule instance using the specified properties. + * @function create + * @memberof google.api.HttpRule + * @static + * @param {google.api.IHttpRule=} [properties] Properties to set + * @returns {google.api.HttpRule} HttpRule instance + */ + HttpRule.create = function create(properties) { + return new HttpRule(properties); + }; + + /** + * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. + * @function encode + * @memberof google.api.HttpRule + * @static + * @param {google.api.IHttpRule} message HttpRule message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HttpRule.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); + if (message.get != null && Object.hasOwnProperty.call(message, "get")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.get); + if (message.put != null && Object.hasOwnProperty.call(message, "put")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.put); + if (message.post != null && Object.hasOwnProperty.call(message, "post")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.post); + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]); + if (message.patch != null && Object.hasOwnProperty.call(message, "patch")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch); + if (message.body != null && Object.hasOwnProperty.call(message, "body")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.body); + if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) + $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.additionalBindings != null && message.additionalBindings.length) + for (var i = 0; i < message.additionalBindings.length; ++i) + $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody); return writer; }; /** - * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static - * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode + * @param {google.api.IHttpRule} message HttpRule message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + HttpRule.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * Decodes a HttpRule message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @returns {google.api.HttpRule} HttpRule * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueDescriptorProto.decode = function decode(reader, length) { + HttpRule.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.name = reader.string(); + message.selector = reader.string(); break; case 2: - message.number = reader.int32(); + message.get = reader.string(); break; case 3: - message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + message.put = reader.string(); + break; + case 4: + message.post = reader.string(); + break; + case 5: + message["delete"] = reader.string(); + break; + case 6: + message.patch = reader.string(); + break; + case 8: + message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); + break; + case 7: + message.body = reader.string(); + break; + case 12: + message.responseBody = reader.string(); + break; + case 11: + if (!(message.additionalBindings && message.additionalBindings.length)) + message.additionalBindings = []; + message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -14663,132 +14737,240 @@ }; /** - * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a HttpRule message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @returns {google.api.HttpRule} HttpRule * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + HttpRule.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an EnumValueDescriptorProto message. + * Verifies a HttpRule message. * @function verify - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumValueDescriptorProto.verify = function verify(message) { + HttpRule.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.number != null && message.hasOwnProperty("number")) - if (!$util.isInteger(message.number)) - return "number: integer expected"; - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.EnumValueOptions.verify(message.options); - if (error) - return "options." + error; + var properties = {}; + if (message.selector != null && message.hasOwnProperty("selector")) + if (!$util.isString(message.selector)) + return "selector: string expected"; + if (message.get != null && message.hasOwnProperty("get")) { + properties.pattern = 1; + if (!$util.isString(message.get)) + return "get: string expected"; + } + if (message.put != null && message.hasOwnProperty("put")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.put)) + return "put: string expected"; + } + if (message.post != null && message.hasOwnProperty("post")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.post)) + return "post: string expected"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message["delete"])) + return "delete: string expected"; + } + if (message.patch != null && message.hasOwnProperty("patch")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + if (!$util.isString(message.patch)) + return "patch: string expected"; + } + if (message.custom != null && message.hasOwnProperty("custom")) { + if (properties.pattern === 1) + return "pattern: multiple values"; + properties.pattern = 1; + { + var error = $root.google.api.CustomHttpPattern.verify(message.custom); + if (error) + return "custom." + error; + } + } + if (message.body != null && message.hasOwnProperty("body")) + if (!$util.isString(message.body)) + return "body: string expected"; + if (message.responseBody != null && message.hasOwnProperty("responseBody")) + if (!$util.isString(message.responseBody)) + return "responseBody: string expected"; + if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) { + if (!Array.isArray(message.additionalBindings)) + return "additionalBindings: array expected"; + for (var i = 0; i < message.additionalBindings.length; ++i) { + var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]); + if (error) + return "additionalBindings." + error; + } } return null; }; /** - * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a HttpRule message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static * @param {Object.} object Plain object - * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @returns {google.api.HttpRule} HttpRule */ - EnumValueDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) + HttpRule.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.HttpRule) return object; - var message = new $root.google.protobuf.EnumValueDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.number != null) - message.number = object.number | 0; - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options); - } - return message; + var message = new $root.google.api.HttpRule(); + if (object.selector != null) + message.selector = String(object.selector); + if (object.get != null) + message.get = String(object.get); + if (object.put != null) + message.put = String(object.put); + if (object.post != null) + message.post = String(object.post); + if (object["delete"] != null) + message["delete"] = String(object["delete"]); + if (object.patch != null) + message.patch = String(object.patch); + if (object.custom != null) { + if (typeof object.custom !== "object") + throw TypeError(".google.api.HttpRule.custom: object expected"); + message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom); + } + if (object.body != null) + message.body = String(object.body); + if (object.responseBody != null) + message.responseBody = String(object.responseBody); + if (object.additionalBindings) { + if (!Array.isArray(object.additionalBindings)) + throw TypeError(".google.api.HttpRule.additionalBindings: array expected"); + message.additionalBindings = []; + for (var i = 0; i < object.additionalBindings.length; ++i) { + if (typeof object.additionalBindings[i] !== "object") + throw TypeError(".google.api.HttpRule.additionalBindings: object expected"); + message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]); + } + } + return message; }; /** - * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * Creates a plain object from a HttpRule message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @static - * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto + * @param {google.api.HttpRule} message HttpRule * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumValueDescriptorProto.toObject = function toObject(message, options) { + HttpRule.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.additionalBindings = []; if (options.defaults) { - object.name = ""; - object.number = 0; - object.options = null; + object.selector = ""; + object.body = ""; + object.responseBody = ""; } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.number != null && message.hasOwnProperty("number")) - object.number = message.number; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options); + if (message.selector != null && message.hasOwnProperty("selector")) + object.selector = message.selector; + if (message.get != null && message.hasOwnProperty("get")) { + object.get = message.get; + if (options.oneofs) + object.pattern = "get"; + } + if (message.put != null && message.hasOwnProperty("put")) { + object.put = message.put; + if (options.oneofs) + object.pattern = "put"; + } + if (message.post != null && message.hasOwnProperty("post")) { + object.post = message.post; + if (options.oneofs) + object.pattern = "post"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + object["delete"] = message["delete"]; + if (options.oneofs) + object.pattern = "delete"; + } + if (message.patch != null && message.hasOwnProperty("patch")) { + object.patch = message.patch; + if (options.oneofs) + object.pattern = "patch"; + } + if (message.body != null && message.hasOwnProperty("body")) + object.body = message.body; + if (message.custom != null && message.hasOwnProperty("custom")) { + object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options); + if (options.oneofs) + object.pattern = "custom"; + } + if (message.additionalBindings && message.additionalBindings.length) { + object.additionalBindings = []; + for (var j = 0; j < message.additionalBindings.length; ++j) + object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options); + } + if (message.responseBody != null && message.hasOwnProperty("responseBody")) + object.responseBody = message.responseBody; return object; }; /** - * Converts this EnumValueDescriptorProto to JSON. + * Converts this HttpRule to JSON. * @function toJSON - * @memberof google.protobuf.EnumValueDescriptorProto + * @memberof google.api.HttpRule * @instance * @returns {Object.} JSON object */ - EnumValueDescriptorProto.prototype.toJSON = function toJSON() { + HttpRule.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return EnumValueDescriptorProto; + return HttpRule; })(); - protobuf.ServiceDescriptorProto = (function() { + api.CustomHttpPattern = (function() { /** - * Properties of a ServiceDescriptorProto. - * @memberof google.protobuf - * @interface IServiceDescriptorProto - * @property {string|null} [name] ServiceDescriptorProto name - * @property {Array.|null} [method] ServiceDescriptorProto method - * @property {google.protobuf.IServiceOptions|null} [options] ServiceDescriptorProto options + * Properties of a CustomHttpPattern. + * @memberof google.api + * @interface ICustomHttpPattern + * @property {string|null} [kind] CustomHttpPattern kind + * @property {string|null} [path] CustomHttpPattern path */ /** - * Constructs a new ServiceDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents a ServiceDescriptorProto. - * @implements IServiceDescriptorProto + * Constructs a new CustomHttpPattern. + * @memberof google.api + * @classdesc Represents a CustomHttpPattern. + * @implements ICustomHttpPattern * @constructor - * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set + * @param {google.api.ICustomHttpPattern=} [properties] Properties to set */ - function ServiceDescriptorProto(properties) { - this.method = []; + function CustomHttpPattern(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -14796,104 +14978,88 @@ } /** - * ServiceDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.ServiceDescriptorProto - * @instance - */ - ServiceDescriptorProto.prototype.name = ""; - - /** - * ServiceDescriptorProto method. - * @member {Array.} method - * @memberof google.protobuf.ServiceDescriptorProto + * CustomHttpPattern kind. + * @member {string} kind + * @memberof google.api.CustomHttpPattern * @instance */ - ServiceDescriptorProto.prototype.method = $util.emptyArray; + CustomHttpPattern.prototype.kind = ""; /** - * ServiceDescriptorProto options. - * @member {google.protobuf.IServiceOptions|null|undefined} options - * @memberof google.protobuf.ServiceDescriptorProto + * CustomHttpPattern path. + * @member {string} path + * @memberof google.api.CustomHttpPattern * @instance */ - ServiceDescriptorProto.prototype.options = null; + CustomHttpPattern.prototype.path = ""; /** - * Creates a new ServiceDescriptorProto instance using the specified properties. + * Creates a new CustomHttpPattern instance using the specified properties. * @function create - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static - * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance + * @param {google.api.ICustomHttpPattern=} [properties] Properties to set + * @returns {google.api.CustomHttpPattern} CustomHttpPattern instance */ - ServiceDescriptorProto.create = function create(properties) { - return new ServiceDescriptorProto(properties); + CustomHttpPattern.create = function create(properties) { + return new CustomHttpPattern(properties); }; /** - * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. * @function encode - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static - * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceDescriptorProto.encode = function encode(message, writer) { + CustomHttpPattern.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.method != null && message.method.length) - for (var i = 0; i < message.method.length; ++i) - $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); + if (message.path != null && Object.hasOwnProperty.call(message, "path")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.path); return writer; }; /** - * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static - * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * Decodes a CustomHttpPattern message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @returns {google.api.CustomHttpPattern} CustomHttpPattern * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceDescriptorProto.decode = function decode(reader, length) { + CustomHttpPattern.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.name = reader.string(); + message.kind = reader.string(); break; case 2: - if (!(message.method && message.method.length)) - message.method = []; - message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); - break; - case 3: - message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + message.path = reader.string(); break; default: reader.skipType(tag & 7); @@ -14904,152 +15070,151 @@ }; /** - * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @returns {google.api.CustomHttpPattern} CustomHttpPattern * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + CustomHttpPattern.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ServiceDescriptorProto message. + * Verifies a CustomHttpPattern message. * @function verify - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ServiceDescriptorProto.verify = function verify(message) { + CustomHttpPattern.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.method != null && message.hasOwnProperty("method")) { - if (!Array.isArray(message.method)) - return "method: array expected"; - for (var i = 0; i < message.method.length; ++i) { - var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]); - if (error) - return "method." + error; - } - } - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.ServiceOptions.verify(message.options); - if (error) - return "options." + error; - } + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; return null; }; /** - * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static * @param {Object.} object Plain object - * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @returns {google.api.CustomHttpPattern} CustomHttpPattern */ - ServiceDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.ServiceDescriptorProto) + CustomHttpPattern.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.CustomHttpPattern) return object; - var message = new $root.google.protobuf.ServiceDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.method) { - if (!Array.isArray(object.method)) - throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected"); - message.method = []; - for (var i = 0; i < object.method.length; ++i) { - if (typeof object.method[i] !== "object") - throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); - message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]); - } - } - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options); - } + var message = new $root.google.api.CustomHttpPattern(); + if (object.kind != null) + message.kind = String(object.kind); + if (object.path != null) + message.path = String(object.path); return message; }; /** - * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @static - * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto + * @param {google.api.CustomHttpPattern} message CustomHttpPattern * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ServiceDescriptorProto.toObject = function toObject(message, options) { + CustomHttpPattern.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.method = []; if (options.defaults) { - object.name = ""; - object.options = null; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.method && message.method.length) { - object.method = []; - for (var j = 0; j < message.method.length; ++j) - object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options); + object.kind = ""; + object.path = ""; } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options); + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; return object; }; /** - * Converts this ServiceDescriptorProto to JSON. + * Converts this CustomHttpPattern to JSON. * @function toJSON - * @memberof google.protobuf.ServiceDescriptorProto + * @memberof google.api.CustomHttpPattern * @instance * @returns {Object.} JSON object */ - ServiceDescriptorProto.prototype.toJSON = function toJSON() { + CustomHttpPattern.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ServiceDescriptorProto; + return CustomHttpPattern; })(); - protobuf.MethodDescriptorProto = (function() { + /** + * FieldBehavior enum. + * @name google.api.FieldBehavior + * @enum {number} + * @property {number} FIELD_BEHAVIOR_UNSPECIFIED=0 FIELD_BEHAVIOR_UNSPECIFIED value + * @property {number} OPTIONAL=1 OPTIONAL value + * @property {number} REQUIRED=2 REQUIRED value + * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value + * @property {number} INPUT_ONLY=4 INPUT_ONLY value + * @property {number} IMMUTABLE=5 IMMUTABLE value + */ + api.FieldBehavior = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FIELD_BEHAVIOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "OPTIONAL"] = 1; + values[valuesById[2] = "REQUIRED"] = 2; + values[valuesById[3] = "OUTPUT_ONLY"] = 3; + values[valuesById[4] = "INPUT_ONLY"] = 4; + values[valuesById[5] = "IMMUTABLE"] = 5; + return values; + })(); + + return api; + })(); + + google.protobuf = (function() { + + /** + * Namespace protobuf. + * @memberof google + * @namespace + */ + var protobuf = {}; + + protobuf.FileDescriptorSet = (function() { /** - * Properties of a MethodDescriptorProto. + * Properties of a FileDescriptorSet. * @memberof google.protobuf - * @interface IMethodDescriptorProto - * @property {string|null} [name] MethodDescriptorProto name - * @property {string|null} [inputType] MethodDescriptorProto inputType - * @property {string|null} [outputType] MethodDescriptorProto outputType - * @property {google.protobuf.IMethodOptions|null} [options] MethodDescriptorProto options - * @property {boolean|null} [clientStreaming] MethodDescriptorProto clientStreaming - * @property {boolean|null} [serverStreaming] MethodDescriptorProto serverStreaming + * @interface IFileDescriptorSet + * @property {Array.|null} [file] FileDescriptorSet file */ /** - * Constructs a new MethodDescriptorProto. + * Constructs a new FileDescriptorSet. * @memberof google.protobuf - * @classdesc Represents a MethodDescriptorProto. - * @implements IMethodDescriptorProto + * @classdesc Represents a FileDescriptorSet. + * @implements IFileDescriptorSet * @constructor - * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set + * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set */ - function MethodDescriptorProto(properties) { + function FileDescriptorSet(properties) { + this.file = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15057,140 +15222,78 @@ } /** - * MethodDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.MethodDescriptorProto - * @instance - */ - MethodDescriptorProto.prototype.name = ""; - - /** - * MethodDescriptorProto inputType. - * @member {string} inputType - * @memberof google.protobuf.MethodDescriptorProto - * @instance - */ - MethodDescriptorProto.prototype.inputType = ""; - - /** - * MethodDescriptorProto outputType. - * @member {string} outputType - * @memberof google.protobuf.MethodDescriptorProto - * @instance - */ - MethodDescriptorProto.prototype.outputType = ""; - - /** - * MethodDescriptorProto options. - * @member {google.protobuf.IMethodOptions|null|undefined} options - * @memberof google.protobuf.MethodDescriptorProto - * @instance - */ - MethodDescriptorProto.prototype.options = null; - - /** - * MethodDescriptorProto clientStreaming. - * @member {boolean} clientStreaming - * @memberof google.protobuf.MethodDescriptorProto - * @instance - */ - MethodDescriptorProto.prototype.clientStreaming = false; - - /** - * MethodDescriptorProto serverStreaming. - * @member {boolean} serverStreaming - * @memberof google.protobuf.MethodDescriptorProto + * FileDescriptorSet file. + * @member {Array.} file + * @memberof google.protobuf.FileDescriptorSet * @instance */ - MethodDescriptorProto.prototype.serverStreaming = false; + FileDescriptorSet.prototype.file = $util.emptyArray; /** - * Creates a new MethodDescriptorProto instance using the specified properties. + * Creates a new FileDescriptorSet instance using the specified properties. * @function create - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static - * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set - * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance + * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance */ - MethodDescriptorProto.create = function create(properties) { - return new MethodDescriptorProto(properties); + FileDescriptorSet.create = function create(properties) { + return new FileDescriptorSet(properties); }; /** - * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. * @function encode - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static - * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodDescriptorProto.encode = function encode(message, writer) { + FileDescriptorSet.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType); - if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); - if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); - if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming); + if (message.file != null && message.file.length) + for (var i = 0; i < message.file.length; ++i) + $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static - * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * Decodes a FileDescriptorSet message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodDescriptorProto.decode = function decode(reader, length) { + FileDescriptorSet.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.name = reader.string(); - break; - case 2: - message.inputType = reader.string(); - break; - case 3: - message.outputType = reader.string(); - break; - case 4: - message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); - break; - case 5: - message.clientStreaming = reader.bool(); - break; - case 6: - message.serverStreaming = reader.bool(); + if (!(message.file && message.file.length)) + message.file = []; + message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -15201,174 +15304,142 @@ }; /** - * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + FileDescriptorSet.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a MethodDescriptorProto message. + * Verifies a FileDescriptorSet message. * @function verify - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MethodDescriptorProto.verify = function verify(message) { + FileDescriptorSet.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.inputType != null && message.hasOwnProperty("inputType")) - if (!$util.isString(message.inputType)) - return "inputType: string expected"; - if (message.outputType != null && message.hasOwnProperty("outputType")) - if (!$util.isString(message.outputType)) - return "outputType: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.MethodOptions.verify(message.options); - if (error) - return "options." + error; + if (message.file != null && message.hasOwnProperty("file")) { + if (!Array.isArray(message.file)) + return "file: array expected"; + for (var i = 0; i < message.file.length; ++i) { + var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]); + if (error) + return "file." + error; + } } - if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) - if (typeof message.clientStreaming !== "boolean") - return "clientStreaming: boolean expected"; - if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) - if (typeof message.serverStreaming !== "boolean") - return "serverStreaming: boolean expected"; return null; }; /** - * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static * @param {Object.} object Plain object - * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet */ - MethodDescriptorProto.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.MethodDescriptorProto) + FileDescriptorSet.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorSet) return object; - var message = new $root.google.protobuf.MethodDescriptorProto(); - if (object.name != null) - message.name = String(object.name); - if (object.inputType != null) - message.inputType = String(object.inputType); - if (object.outputType != null) - message.outputType = String(object.outputType); - if (object.options != null) { - if (typeof object.options !== "object") - throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.MethodOptions.fromObject(object.options); + var message = new $root.google.protobuf.FileDescriptorSet(); + if (object.file) { + if (!Array.isArray(object.file)) + throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected"); + message.file = []; + for (var i = 0; i < object.file.length; ++i) { + if (typeof object.file[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); + message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]); + } } - if (object.clientStreaming != null) - message.clientStreaming = Boolean(object.clientStreaming); - if (object.serverStreaming != null) - message.serverStreaming = Boolean(object.serverStreaming); return message; }; /** - * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @static - * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto + * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MethodDescriptorProto.toObject = function toObject(message, options) { + FileDescriptorSet.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.name = ""; - object.inputType = ""; - object.outputType = ""; - object.options = null; - object.clientStreaming = false; - object.serverStreaming = false; + if (options.arrays || options.defaults) + object.file = []; + if (message.file && message.file.length) { + object.file = []; + for (var j = 0; j < message.file.length; ++j) + object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options); } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.inputType != null && message.hasOwnProperty("inputType")) - object.inputType = message.inputType; - if (message.outputType != null && message.hasOwnProperty("outputType")) - object.outputType = message.outputType; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options); - if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) - object.clientStreaming = message.clientStreaming; - if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) - object.serverStreaming = message.serverStreaming; return object; }; /** - * Converts this MethodDescriptorProto to JSON. + * Converts this FileDescriptorSet to JSON. * @function toJSON - * @memberof google.protobuf.MethodDescriptorProto + * @memberof google.protobuf.FileDescriptorSet * @instance * @returns {Object.} JSON object */ - MethodDescriptorProto.prototype.toJSON = function toJSON() { + FileDescriptorSet.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return MethodDescriptorProto; + return FileDescriptorSet; })(); - protobuf.FileOptions = (function() { + protobuf.FileDescriptorProto = (function() { /** - * Properties of a FileOptions. + * Properties of a FileDescriptorProto. * @memberof google.protobuf - * @interface IFileOptions - * @property {string|null} [javaPackage] FileOptions javaPackage - * @property {string|null} [javaOuterClassname] FileOptions javaOuterClassname - * @property {boolean|null} [javaMultipleFiles] FileOptions javaMultipleFiles - * @property {boolean|null} [javaGenerateEqualsAndHash] FileOptions javaGenerateEqualsAndHash - * @property {boolean|null} [javaStringCheckUtf8] FileOptions javaStringCheckUtf8 - * @property {google.protobuf.FileOptions.OptimizeMode|null} [optimizeFor] FileOptions optimizeFor - * @property {string|null} [goPackage] FileOptions goPackage - * @property {boolean|null} [ccGenericServices] FileOptions ccGenericServices - * @property {boolean|null} [javaGenericServices] FileOptions javaGenericServices - * @property {boolean|null} [pyGenericServices] FileOptions pyGenericServices - * @property {boolean|null} [phpGenericServices] FileOptions phpGenericServices - * @property {boolean|null} [deprecated] FileOptions deprecated - * @property {boolean|null} [ccEnableArenas] FileOptions ccEnableArenas - * @property {string|null} [objcClassPrefix] FileOptions objcClassPrefix - * @property {string|null} [csharpNamespace] FileOptions csharpNamespace - * @property {string|null} [swiftPrefix] FileOptions swiftPrefix - * @property {string|null} [phpClassPrefix] FileOptions phpClassPrefix - * @property {string|null} [phpNamespace] FileOptions phpNamespace - * @property {string|null} [phpMetadataNamespace] FileOptions phpMetadataNamespace - * @property {string|null} [rubyPackage] FileOptions rubyPackage - * @property {Array.|null} [uninterpretedOption] FileOptions uninterpretedOption + * @interface IFileDescriptorProto + * @property {string|null} [name] FileDescriptorProto name + * @property {string|null} ["package"] FileDescriptorProto package + * @property {Array.|null} [dependency] FileDescriptorProto dependency + * @property {Array.|null} [publicDependency] FileDescriptorProto publicDependency + * @property {Array.|null} [weakDependency] FileDescriptorProto weakDependency + * @property {Array.|null} [messageType] FileDescriptorProto messageType + * @property {Array.|null} [enumType] FileDescriptorProto enumType + * @property {Array.|null} [service] FileDescriptorProto service + * @property {Array.|null} [extension] FileDescriptorProto extension + * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options + * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo + * @property {string|null} [syntax] FileDescriptorProto syntax */ /** - * Constructs a new FileOptions. + * Constructs a new FileDescriptorProto. * @memberof google.protobuf - * @classdesc Represents a FileOptions. - * @implements IFileOptions + * @classdesc Represents a FileDescriptorProto. + * @implements IFileDescriptorProto * @constructor - * @param {google.protobuf.IFileOptions=} [properties] Properties to set + * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set */ - function FileOptions(properties) { - this.uninterpretedOption = []; + function FileDescriptorProto(properties) { + this.dependency = []; + this.publicDependency = []; + this.weakDependency = []; + this.messageType = []; + this.enumType = []; + this.service = []; + this.extension = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15376,667 +15447,7891 @@ } /** - * FileOptions javaPackage. - * @member {string} javaPackage - * @memberof google.protobuf.FileOptions + * FileDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaPackage = ""; + FileDescriptorProto.prototype.name = ""; /** - * FileOptions javaOuterClassname. - * @member {string} javaOuterClassname - * @memberof google.protobuf.FileOptions + * FileDescriptorProto package. + * @member {string} package + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaOuterClassname = ""; + FileDescriptorProto.prototype["package"] = ""; /** - * FileOptions javaMultipleFiles. - * @member {boolean} javaMultipleFiles - * @memberof google.protobuf.FileOptions + * FileDescriptorProto dependency. + * @member {Array.} dependency + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaMultipleFiles = false; + FileDescriptorProto.prototype.dependency = $util.emptyArray; /** - * FileOptions javaGenerateEqualsAndHash. - * @member {boolean} javaGenerateEqualsAndHash - * @memberof google.protobuf.FileOptions + * FileDescriptorProto publicDependency. + * @member {Array.} publicDependency + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaGenerateEqualsAndHash = false; + FileDescriptorProto.prototype.publicDependency = $util.emptyArray; /** - * FileOptions javaStringCheckUtf8. - * @member {boolean} javaStringCheckUtf8 - * @memberof google.protobuf.FileOptions + * FileDescriptorProto weakDependency. + * @member {Array.} weakDependency + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaStringCheckUtf8 = false; + FileDescriptorProto.prototype.weakDependency = $util.emptyArray; /** - * FileOptions optimizeFor. - * @member {google.protobuf.FileOptions.OptimizeMode} optimizeFor - * @memberof google.protobuf.FileOptions + * FileDescriptorProto messageType. + * @member {Array.} messageType + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.optimizeFor = 1; + FileDescriptorProto.prototype.messageType = $util.emptyArray; /** - * FileOptions goPackage. - * @member {string} goPackage - * @memberof google.protobuf.FileOptions + * FileDescriptorProto enumType. + * @member {Array.} enumType + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.goPackage = ""; + FileDescriptorProto.prototype.enumType = $util.emptyArray; /** - * FileOptions ccGenericServices. - * @member {boolean} ccGenericServices - * @memberof google.protobuf.FileOptions + * FileDescriptorProto service. + * @member {Array.} service + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.ccGenericServices = false; + FileDescriptorProto.prototype.service = $util.emptyArray; /** - * FileOptions javaGenericServices. - * @member {boolean} javaGenericServices - * @memberof google.protobuf.FileOptions + * FileDescriptorProto extension. + * @member {Array.} extension + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.javaGenericServices = false; + FileDescriptorProto.prototype.extension = $util.emptyArray; /** - * FileOptions pyGenericServices. - * @member {boolean} pyGenericServices - * @memberof google.protobuf.FileOptions + * FileDescriptorProto options. + * @member {google.protobuf.IFileOptions|null|undefined} options + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.pyGenericServices = false; + FileDescriptorProto.prototype.options = null; /** - * FileOptions phpGenericServices. - * @member {boolean} phpGenericServices - * @memberof google.protobuf.FileOptions + * FileDescriptorProto sourceCodeInfo. + * @member {google.protobuf.ISourceCodeInfo|null|undefined} sourceCodeInfo + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.phpGenericServices = false; + FileDescriptorProto.prototype.sourceCodeInfo = null; /** - * FileOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.FileOptions + * FileDescriptorProto syntax. + * @member {string} syntax + * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileOptions.prototype.deprecated = false; + FileDescriptorProto.prototype.syntax = ""; /** - * FileOptions ccEnableArenas. - * @member {boolean} ccEnableArenas - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.ccEnableArenas = true; - - /** - * FileOptions objcClassPrefix. - * @member {string} objcClassPrefix - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.objcClassPrefix = ""; - - /** - * FileOptions csharpNamespace. - * @member {string} csharpNamespace - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.csharpNamespace = ""; - - /** - * FileOptions swiftPrefix. - * @member {string} swiftPrefix - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.swiftPrefix = ""; - - /** - * FileOptions phpClassPrefix. - * @member {string} phpClassPrefix - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.phpClassPrefix = ""; - - /** - * FileOptions phpNamespace. - * @member {string} phpNamespace - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.phpNamespace = ""; - - /** - * FileOptions phpMetadataNamespace. - * @member {string} phpMetadataNamespace - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.phpMetadataNamespace = ""; - - /** - * FileOptions rubyPackage. - * @member {string} rubyPackage - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.rubyPackage = ""; - - /** - * FileOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.uninterpretedOption = $util.emptyArray; - - /** - * Creates a new FileOptions instance using the specified properties. + * Creates a new FileDescriptorProto instance using the specified properties. * @function create - * @memberof google.protobuf.FileOptions + * @memberof google.protobuf.FileDescriptorProto * @static - * @param {google.protobuf.IFileOptions=} [properties] Properties to set - * @returns {google.protobuf.FileOptions} FileOptions instance + * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance */ - FileOptions.create = function create(properties) { - return new FileOptions(properties); + FileDescriptorProto.create = function create(properties) { + return new FileDescriptorProto(properties); }; /** - * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. * @function encode - * @memberof google.protobuf.FileOptions + * @memberof google.protobuf.FileDescriptorProto * @static - * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileOptions.encode = function encode(message, writer) { + FileDescriptorProto.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); - if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname); - if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.optimizeFor); - if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles")) - writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles); - if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage")) - writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage); - if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices")) - writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices); - if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices")) - writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices); - if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices")) - writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices); - if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash")) - writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated); - if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8")) - writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8); - if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas")) - writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas); - if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix")) - writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix); - if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace")) - writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace); - if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix")) - writer.uint32(/* id 39, wireType 2 =*/314).string(message.swiftPrefix); - if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix")) - writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix); - if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) - writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace); - if (message.phpGenericServices != null && Object.hasOwnProperty.call(message, "phpGenericServices")) - writer.uint32(/* id 42, wireType 0 =*/336).bool(message.phpGenericServices); - if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) - writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); - if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) - writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]); + if (message.dependency != null && message.dependency.length) + for (var i = 0; i < message.dependency.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]); + if (message.messageType != null && message.messageType.length) + for (var i = 0; i < message.messageType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.service != null && message.service.length) + for (var i = 0; i < message.service.length; ++i) + $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) + $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.publicDependency != null && message.publicDependency.length) + for (var i = 0; i < message.publicDependency.length; ++i) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]); + if (message.weakDependency != null && message.weakDependency.length) + for (var i = 0; i < message.weakDependency.length; ++i) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); + if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); return writer; }; /** - * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.FileOptions + * @memberof google.protobuf.FileDescriptorProto * @static - * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileOptions.encodeDelimited = function encodeDelimited(message, writer) { + FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a FileOptions message from the specified reader or buffer. + * Decodes a FileDescriptorProto message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.FileOptions + * @memberof google.protobuf.FileDescriptorProto * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FileOptions} FileOptions + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FileOptions.decode = function decode(reader, length) { + FileDescriptorProto.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.javaPackage = reader.string(); - break; - case 8: - message.javaOuterClassname = reader.string(); - break; - case 10: - message.javaMultipleFiles = reader.bool(); + message.name = reader.string(); break; - case 20: - message.javaGenerateEqualsAndHash = reader.bool(); + case 2: + message["package"] = reader.string(); break; - case 27: - message.javaStringCheckUtf8 = reader.bool(); + case 3: + if (!(message.dependency && message.dependency.length)) + message.dependency = []; + message.dependency.push(reader.string()); break; - case 9: - message.optimizeFor = reader.int32(); + case 10: + if (!(message.publicDependency && message.publicDependency.length)) + message.publicDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.publicDependency.push(reader.int32()); + } else + message.publicDependency.push(reader.int32()); break; case 11: - message.goPackage = reader.string(); + if (!(message.weakDependency && message.weakDependency.length)) + message.weakDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.weakDependency.push(reader.int32()); + } else + message.weakDependency.push(reader.int32()); break; - case 16: - message.ccGenericServices = reader.bool(); + case 4: + if (!(message.messageType && message.messageType.length)) + message.messageType = []; + message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); break; - case 17: - message.javaGenericServices = reader.bool(); + case 5: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); break; - case 18: - message.pyGenericServices = reader.bool(); + case 6: + if (!(message.service && message.service.length)) + message.service = []; + message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); break; - case 42: - message.phpGenericServices = reader.bool(); + case 7: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); break; - case 23: - message.deprecated = reader.bool(); + case 8: + message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); break; - case 31: - message.ccEnableArenas = reader.bool(); + case 9: + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); break; - case 36: - message.objcClassPrefix = reader.string(); - break; - case 37: - message.csharpNamespace = reader.string(); - break; - case 39: - message.swiftPrefix = reader.string(); - break; - case 40: - message.phpClassPrefix = reader.string(); - break; - case 41: - message.phpNamespace = reader.string(); - break; - case 44: - message.phpMetadataNamespace = reader.string(); - break; - case 45: - message.rubyPackage = reader.string(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + case 12: + message.syntax = reader.string(); break; default: reader.skipType(tag & 7); break; } - } - return message; - }; - - /** - * Decodes a FileOptions message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.FileOptions - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FileOptions} FileOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FileOptions.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + } + return message; + }; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileDescriptorProto message. + * @function verify + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message["package"] != null && message.hasOwnProperty("package")) + if (!$util.isString(message["package"])) + return "package: string expected"; + if (message.dependency != null && message.hasOwnProperty("dependency")) { + if (!Array.isArray(message.dependency)) + return "dependency: array expected"; + for (var i = 0; i < message.dependency.length; ++i) + if (!$util.isString(message.dependency[i])) + return "dependency: string[] expected"; + } + if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) { + if (!Array.isArray(message.publicDependency)) + return "publicDependency: array expected"; + for (var i = 0; i < message.publicDependency.length; ++i) + if (!$util.isInteger(message.publicDependency[i])) + return "publicDependency: integer[] expected"; + } + if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) { + if (!Array.isArray(message.weakDependency)) + return "weakDependency: array expected"; + for (var i = 0; i < message.weakDependency.length; ++i) + if (!$util.isInteger(message.weakDependency[i])) + return "weakDependency: integer[] expected"; + } + if (message.messageType != null && message.hasOwnProperty("messageType")) { + if (!Array.isArray(message.messageType)) + return "messageType: array expected"; + for (var i = 0; i < message.messageType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]); + if (error) + return "messageType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.service != null && message.hasOwnProperty("service")) { + if (!Array.isArray(message.service)) + return "service: array expected"; + for (var i = 0; i < message.service.length; ++i) { + var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]); + if (error) + return "service." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FileOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { + var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo); + if (error) + return "sourceCodeInfo." + error; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + if (!$util.isString(message.syntax)) + return "syntax: string expected"; + return null; + }; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + FileDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorProto) + return object; + var message = new $root.google.protobuf.FileDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object["package"] != null) + message["package"] = String(object["package"]); + if (object.dependency) { + if (!Array.isArray(object.dependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.dependency: array expected"); + message.dependency = []; + for (var i = 0; i < object.dependency.length; ++i) + message.dependency[i] = String(object.dependency[i]); + } + if (object.publicDependency) { + if (!Array.isArray(object.publicDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.publicDependency: array expected"); + message.publicDependency = []; + for (var i = 0; i < object.publicDependency.length; ++i) + message.publicDependency[i] = object.publicDependency[i] | 0; + } + if (object.weakDependency) { + if (!Array.isArray(object.weakDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.weakDependency: array expected"); + message.weakDependency = []; + for (var i = 0; i < object.weakDependency.length; ++i) + message.weakDependency[i] = object.weakDependency[i] | 0; + } + if (object.messageType) { + if (!Array.isArray(object.messageType)) + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); + message.messageType = []; + for (var i = 0; i < object.messageType.length; ++i) { + if (typeof object.messageType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); + message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.service) { + if (!Array.isArray(object.service)) + throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected"); + message.service = []; + for (var i = 0; i < object.service.length; ++i) { + if (typeof object.service[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); + message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FileOptions.fromObject(object.options); + } + if (object.sourceCodeInfo != null) { + if (typeof object.sourceCodeInfo !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo); + } + if (object.syntax != null) + message.syntax = String(object.syntax); + return message; + }; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.dependency = []; + object.messageType = []; + object.enumType = []; + object.service = []; + object.extension = []; + object.publicDependency = []; + object.weakDependency = []; + } + if (options.defaults) { + object.name = ""; + object["package"] = ""; + object.options = null; + object.sourceCodeInfo = null; + object.syntax = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message["package"] != null && message.hasOwnProperty("package")) + object["package"] = message["package"]; + if (message.dependency && message.dependency.length) { + object.dependency = []; + for (var j = 0; j < message.dependency.length; ++j) + object.dependency[j] = message.dependency[j]; + } + if (message.messageType && message.messageType.length) { + object.messageType = []; + for (var j = 0; j < message.messageType.length; ++j) + object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.service && message.service.length) { + object.service = []; + for (var j = 0; j < message.service.length; ++j) + object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FileOptions.toObject(message.options, options); + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options); + if (message.publicDependency && message.publicDependency.length) { + object.publicDependency = []; + for (var j = 0; j < message.publicDependency.length; ++j) + object.publicDependency[j] = message.publicDependency[j]; + } + if (message.weakDependency && message.weakDependency.length) { + object.weakDependency = []; + for (var j = 0; j < message.weakDependency.length; ++j) + object.weakDependency[j] = message.weakDependency[j]; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + object.syntax = message.syntax; + return object; + }; + + /** + * Converts this FileDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.FileDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + FileDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileDescriptorProto; + })(); + + protobuf.DescriptorProto = (function() { + + /** + * Properties of a DescriptorProto. + * @memberof google.protobuf + * @interface IDescriptorProto + * @property {string|null} [name] DescriptorProto name + * @property {Array.|null} [field] DescriptorProto field + * @property {Array.|null} [extension] DescriptorProto extension + * @property {Array.|null} [nestedType] DescriptorProto nestedType + * @property {Array.|null} [enumType] DescriptorProto enumType + * @property {Array.|null} [extensionRange] DescriptorProto extensionRange + * @property {Array.|null} [oneofDecl] DescriptorProto oneofDecl + * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options + * @property {Array.|null} [reservedRange] DescriptorProto reservedRange + * @property {Array.|null} [reservedName] DescriptorProto reservedName + */ + + /** + * Constructs a new DescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a DescriptorProto. + * @implements IDescriptorProto + * @constructor + * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set + */ + function DescriptorProto(properties) { + this.field = []; + this.extension = []; + this.nestedType = []; + this.enumType = []; + this.extensionRange = []; + this.oneofDecl = []; + this.reservedRange = []; + this.reservedName = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptorProto name. + * @member {string} name + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.name = ""; + + /** + * DescriptorProto field. + * @member {Array.} field + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.field = $util.emptyArray; + + /** + * DescriptorProto extension. + * @member {Array.} extension + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.extension = $util.emptyArray; + + /** + * DescriptorProto nestedType. + * @member {Array.} nestedType + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.nestedType = $util.emptyArray; + + /** + * DescriptorProto enumType. + * @member {Array.} enumType + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.enumType = $util.emptyArray; + + /** + * DescriptorProto extensionRange. + * @member {Array.} extensionRange + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.extensionRange = $util.emptyArray; + + /** + * DescriptorProto oneofDecl. + * @member {Array.} oneofDecl + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.oneofDecl = $util.emptyArray; + + /** + * DescriptorProto options. + * @member {google.protobuf.IMessageOptions|null|undefined} options + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.options = null; + + /** + * DescriptorProto reservedRange. + * @member {Array.} reservedRange + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.reservedRange = $util.emptyArray; + + /** + * DescriptorProto reservedName. + * @member {Array.} reservedName + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.reservedName = $util.emptyArray; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto} DescriptorProto instance + */ + DescriptorProto.create = function create(properties) { + return new DescriptorProto(properties); + }; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.field != null && message.field.length) + for (var i = 0; i < message.field.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.nestedType != null && message.nestedType.length) + for (var i = 0; i < message.nestedType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.extensionRange != null && message.extensionRange.length) + for (var i = 0; i < message.extensionRange.length; ++i) + $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.oneofDecl != null && message.oneofDecl.length) + for (var i = 0; i < message.oneofDecl.length; ++i) + $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.reservedRange != null && message.reservedRange.length) + for (var i = 0; i < message.reservedRange.length; ++i) + $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.reservedName != null && message.reservedName.length) + for (var i = 0; i < message.reservedName.length; ++i) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); + return writer; + }; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.field && message.field.length)) + message.field = []; + message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.nestedType && message.nestedType.length)) + message.nestedType = []; + message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + case 4: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.extensionRange && message.extensionRange.length)) + message.extensionRange = []; + message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); + break; + case 8: + if (!(message.oneofDecl && message.oneofDecl.length)) + message.oneofDecl = []; + message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); + break; + case 7: + message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); + break; + case 9: + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); + break; + case 10: + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DescriptorProto message. + * @function verify + * @memberof google.protobuf.DescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.field != null && message.hasOwnProperty("field")) { + if (!Array.isArray(message.field)) + return "field: array expected"; + for (var i = 0; i < message.field.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]); + if (error) + return "field." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.nestedType != null && message.hasOwnProperty("nestedType")) { + if (!Array.isArray(message.nestedType)) + return "nestedType: array expected"; + for (var i = 0; i < message.nestedType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]); + if (error) + return "nestedType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) { + if (!Array.isArray(message.extensionRange)) + return "extensionRange: array expected"; + for (var i = 0; i < message.extensionRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]); + if (error) + return "extensionRange." + error; + } + } + if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) { + if (!Array.isArray(message.oneofDecl)) + return "oneofDecl: array expected"; + for (var i = 0; i < message.oneofDecl.length; ++i) { + var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]); + if (error) + return "oneofDecl." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MessageOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (!Array.isArray(message.reservedRange)) + return "reservedRange: array expected"; + for (var i = 0; i < message.reservedRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]); + if (error) + return "reservedRange." + error; + } + } + if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (!Array.isArray(message.reservedName)) + return "reservedName: array expected"; + for (var i = 0; i < message.reservedName.length; ++i) + if (!$util.isString(message.reservedName[i])) + return "reservedName: string[] expected"; + } + return null; + }; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + DescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto) + return object; + var message = new $root.google.protobuf.DescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.field) { + if (!Array.isArray(object.field)) + throw TypeError(".google.protobuf.DescriptorProto.field: array expected"); + message.field = []; + for (var i = 0; i < object.field.length; ++i) { + if (typeof object.field[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); + message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.DescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.nestedType) { + if (!Array.isArray(object.nestedType)) + throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected"); + message.nestedType = []; + for (var i = 0; i < object.nestedType.length; ++i) { + if (typeof object.nestedType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); + message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.extensionRange) { + if (!Array.isArray(object.extensionRange)) + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected"); + message.extensionRange = []; + for (var i = 0; i < object.extensionRange.length; ++i) { + if (typeof object.extensionRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); + message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]); + } + } + if (object.oneofDecl) { + if (!Array.isArray(object.oneofDecl)) + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected"); + message.oneofDecl = []; + for (var i = 0; i < object.oneofDecl.length; ++i) { + if (typeof object.oneofDecl[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); + message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MessageOptions.fromObject(object.options); + } + if (object.reservedRange) { + if (!Array.isArray(object.reservedRange)) + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected"); + message.reservedRange = []; + for (var i = 0; i < object.reservedRange.length; ++i) { + if (typeof object.reservedRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); + message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]); + } + } + if (object.reservedName) { + if (!Array.isArray(object.reservedName)) + throw TypeError(".google.protobuf.DescriptorProto.reservedName: array expected"); + message.reservedName = []; + for (var i = 0; i < object.reservedName.length; ++i) + message.reservedName[i] = String(object.reservedName[i]); + } + return message; + }; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto + * @static + * @param {google.protobuf.DescriptorProto} message DescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.field = []; + object.nestedType = []; + object.enumType = []; + object.extensionRange = []; + object.extension = []; + object.oneofDecl = []; + object.reservedRange = []; + object.reservedName = []; + } + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.field && message.field.length) { + object.field = []; + for (var j = 0; j < message.field.length; ++j) + object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options); + } + if (message.nestedType && message.nestedType.length) { + object.nestedType = []; + for (var j = 0; j < message.nestedType.length; ++j) + object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.extensionRange && message.extensionRange.length) { + object.extensionRange = []; + for (var j = 0; j < message.extensionRange.length; ++j) + object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options); + if (message.oneofDecl && message.oneofDecl.length) { + object.oneofDecl = []; + for (var j = 0; j < message.oneofDecl.length; ++j) + object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options); + } + if (message.reservedRange && message.reservedRange.length) { + object.reservedRange = []; + for (var j = 0; j < message.reservedRange.length; ++j) + object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options); + } + if (message.reservedName && message.reservedName.length) { + object.reservedName = []; + for (var j = 0; j < message.reservedName.length; ++j) + object.reservedName[j] = message.reservedName[j]; + } + return object; + }; + + /** + * Converts this DescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto + * @instance + * @returns {Object.} JSON object + */ + DescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + DescriptorProto.ExtensionRange = (function() { + + /** + * Properties of an ExtensionRange. + * @memberof google.protobuf.DescriptorProto + * @interface IExtensionRange + * @property {number|null} [start] ExtensionRange start + * @property {number|null} [end] ExtensionRange end + * @property {google.protobuf.IExtensionRangeOptions|null} [options] ExtensionRange options + */ + + /** + * Constructs a new ExtensionRange. + * @memberof google.protobuf.DescriptorProto + * @classdesc Represents an ExtensionRange. + * @implements IExtensionRange + * @constructor + * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set + */ + function ExtensionRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExtensionRange start. + * @member {number} start + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.start = 0; + + /** + * ExtensionRange end. + * @member {number} end + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.end = 0; + + /** + * ExtensionRange options. + * @member {google.protobuf.IExtensionRangeOptions|null|undefined} options + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + */ + ExtensionRange.prototype.options = null; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance + */ + ExtensionRange.create = function create(properties) { + return new ExtensionRange(properties); + }; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && Object.hasOwnProperty.call(message, "start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && Object.hasOwnProperty.call(message, "end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + case 3: + message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExtensionRange message. + * @function verify + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExtensionRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + ExtensionRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected"); + message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + object.options = null; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this ExtensionRange to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @instance + * @returns {Object.} JSON object + */ + ExtensionRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExtensionRange; + })(); + + DescriptorProto.ReservedRange = (function() { + + /** + * Properties of a ReservedRange. + * @memberof google.protobuf.DescriptorProto + * @interface IReservedRange + * @property {number|null} [start] ReservedRange start + * @property {number|null} [end] ReservedRange end + */ + + /** + * Constructs a new ReservedRange. + * @memberof google.protobuf.DescriptorProto + * @classdesc Represents a ReservedRange. + * @implements IReservedRange + * @constructor + * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set + */ + function ReservedRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReservedRange start. + * @member {number} start + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + */ + ReservedRange.prototype.start = 0; + + /** + * ReservedRange end. + * @member {number} end + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + */ + ReservedRange.prototype.end = 0; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @function create + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance + */ + ReservedRange.create = function create(properties) { + return new ReservedRange(properties); + }; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && Object.hasOwnProperty.call(message, "start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && Object.hasOwnProperty.call(message, "end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReservedRange message. + * @function verify + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReservedRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + ReservedRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReservedRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Converts this ReservedRange to JSON. + * @function toJSON + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @instance + * @returns {Object.} JSON object + */ + ReservedRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReservedRange; + })(); + + return DescriptorProto; + })(); + + protobuf.ExtensionRangeOptions = (function() { + + /** + * Properties of an ExtensionRangeOptions. + * @memberof google.protobuf + * @interface IExtensionRangeOptions + * @property {Array.|null} [uninterpretedOption] ExtensionRangeOptions uninterpretedOption + */ + + /** + * Constructs a new ExtensionRangeOptions. + * @memberof google.protobuf + * @classdesc Represents an ExtensionRangeOptions. + * @implements IExtensionRangeOptions + * @constructor + * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set + */ + function ExtensionRangeOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExtensionRangeOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + */ + ExtensionRangeOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new ExtensionRangeOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions instance + */ + ExtensionRangeOptions.create = function create(properties) { + return new ExtensionRangeOptions(properties); + }; + + /** + * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRangeOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRangeOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRangeOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRangeOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExtensionRangeOptions message. + * @function verify + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExtensionRangeOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions + */ + ExtensionRangeOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ExtensionRangeOptions) + return object; + var message = new $root.google.protobuf.ExtensionRangeOptions(); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {google.protobuf.ExtensionRangeOptions} message ExtensionRangeOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRangeOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this ExtensionRangeOptions to JSON. + * @function toJSON + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + * @returns {Object.} JSON object + */ + ExtensionRangeOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExtensionRangeOptions; + })(); + + protobuf.FieldDescriptorProto = (function() { + + /** + * Properties of a FieldDescriptorProto. + * @memberof google.protobuf + * @interface IFieldDescriptorProto + * @property {string|null} [name] FieldDescriptorProto name + * @property {number|null} [number] FieldDescriptorProto number + * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label + * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type + * @property {string|null} [typeName] FieldDescriptorProto typeName + * @property {string|null} [extendee] FieldDescriptorProto extendee + * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue + * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex + * @property {string|null} [jsonName] FieldDescriptorProto jsonName + * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options + * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional + */ + + /** + * Constructs a new FieldDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a FieldDescriptorProto. + * @implements IFieldDescriptorProto + * @constructor + * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set + */ + function FieldDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.name = ""; + + /** + * FieldDescriptorProto number. + * @member {number} number + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.number = 0; + + /** + * FieldDescriptorProto label. + * @member {google.protobuf.FieldDescriptorProto.Label} label + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.label = 1; + + /** + * FieldDescriptorProto type. + * @member {google.protobuf.FieldDescriptorProto.Type} type + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.type = 1; + + /** + * FieldDescriptorProto typeName. + * @member {string} typeName + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.typeName = ""; + + /** + * FieldDescriptorProto extendee. + * @member {string} extendee + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.extendee = ""; + + /** + * FieldDescriptorProto defaultValue. + * @member {string} defaultValue + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.defaultValue = ""; + + /** + * FieldDescriptorProto oneofIndex. + * @member {number} oneofIndex + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.oneofIndex = 0; + + /** + * FieldDescriptorProto jsonName. + * @member {string} jsonName + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.jsonName = ""; + + /** + * FieldDescriptorProto options. + * @member {google.protobuf.IFieldOptions|null|undefined} options + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.options = null; + + /** + * FieldDescriptorProto proto3Optional. + * @member {boolean} proto3Optional + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.proto3Optional = false; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance + */ + FieldDescriptorProto.create = function create(properties) { + return new FieldDescriptorProto(properties); + }; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee); + if (message.number != null && Object.hasOwnProperty.call(message, "number")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number); + if (message.label != null && Object.hasOwnProperty.call(message, "label")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.label); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.type); + if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName); + if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); + if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); + if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional")) + writer.uint32(/* id 17, wireType 0 =*/136).bool(message.proto3Optional); + return writer; + }; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 3: + message.number = reader.int32(); + break; + case 4: + message.label = reader.int32(); + break; + case 5: + message.type = reader.int32(); + break; + case 6: + message.typeName = reader.string(); + break; + case 2: + message.extendee = reader.string(); + break; + case 7: + message.defaultValue = reader.string(); + break; + case 9: + message.oneofIndex = reader.int32(); + break; + case 10: + message.jsonName = reader.string(); + break; + case 8: + message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); + break; + case 17: + message.proto3Optional = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldDescriptorProto message. + * @function verify + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FieldDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.label != null && message.hasOwnProperty("label")) + switch (message.label) { + default: + return "label: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + break; + } + if (message.typeName != null && message.hasOwnProperty("typeName")) + if (!$util.isString(message.typeName)) + return "typeName: string expected"; + if (message.extendee != null && message.hasOwnProperty("extendee")) + if (!$util.isString(message.extendee)) + return "extendee: string expected"; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (!$util.isString(message.defaultValue)) + return "defaultValue: string expected"; + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (!$util.isInteger(message.oneofIndex)) + return "oneofIndex: integer expected"; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (!$util.isString(message.jsonName)) + return "jsonName: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FieldOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + if (typeof message.proto3Optional !== "boolean") + return "proto3Optional: boolean expected"; + return null; + }; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + FieldDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldDescriptorProto) + return object; + var message = new $root.google.protobuf.FieldDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + switch (object.label) { + case "LABEL_OPTIONAL": + case 1: + message.label = 1; + break; + case "LABEL_REQUIRED": + case 2: + message.label = 2; + break; + case "LABEL_REPEATED": + case 3: + message.label = 3; + break; + } + switch (object.type) { + case "TYPE_DOUBLE": + case 1: + message.type = 1; + break; + case "TYPE_FLOAT": + case 2: + message.type = 2; + break; + case "TYPE_INT64": + case 3: + message.type = 3; + break; + case "TYPE_UINT64": + case 4: + message.type = 4; + break; + case "TYPE_INT32": + case 5: + message.type = 5; + break; + case "TYPE_FIXED64": + case 6: + message.type = 6; + break; + case "TYPE_FIXED32": + case 7: + message.type = 7; + break; + case "TYPE_BOOL": + case 8: + message.type = 8; + break; + case "TYPE_STRING": + case 9: + message.type = 9; + break; + case "TYPE_GROUP": + case 10: + message.type = 10; + break; + case "TYPE_MESSAGE": + case 11: + message.type = 11; + break; + case "TYPE_BYTES": + case 12: + message.type = 12; + break; + case "TYPE_UINT32": + case 13: + message.type = 13; + break; + case "TYPE_ENUM": + case 14: + message.type = 14; + break; + case "TYPE_SFIXED32": + case 15: + message.type = 15; + break; + case "TYPE_SFIXED64": + case 16: + message.type = 16; + break; + case "TYPE_SINT32": + case 17: + message.type = 17; + break; + case "TYPE_SINT64": + case 18: + message.type = 18; + break; + } + if (object.typeName != null) + message.typeName = String(object.typeName); + if (object.extendee != null) + message.extendee = String(object.extendee); + if (object.defaultValue != null) + message.defaultValue = String(object.defaultValue); + if (object.oneofIndex != null) + message.oneofIndex = object.oneofIndex | 0; + if (object.jsonName != null) + message.jsonName = String(object.jsonName); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); + } + if (object.proto3Optional != null) + message.proto3Optional = Boolean(object.proto3Optional); + return message; + }; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.extendee = ""; + object.number = 0; + object.label = options.enums === String ? "LABEL_OPTIONAL" : 1; + object.type = options.enums === String ? "TYPE_DOUBLE" : 1; + object.typeName = ""; + object.defaultValue = ""; + object.options = null; + object.oneofIndex = 0; + object.jsonName = ""; + object.proto3Optional = false; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.extendee != null && message.hasOwnProperty("extendee")) + object.extendee = message.extendee; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.label != null && message.hasOwnProperty("label")) + object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; + if (message.typeName != null && message.hasOwnProperty("typeName")) + object.typeName = message.typeName; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + object.defaultValue = message.defaultValue; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options); + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + object.oneofIndex = message.oneofIndex; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + object.jsonName = message.jsonName; + if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + object.proto3Optional = message.proto3Optional; + return object; + }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.FieldDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + FieldDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Type enum. + * @name google.protobuf.FieldDescriptorProto.Type + * @enum {number} + * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value + * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value + * @property {number} TYPE_INT64=3 TYPE_INT64 value + * @property {number} TYPE_UINT64=4 TYPE_UINT64 value + * @property {number} TYPE_INT32=5 TYPE_INT32 value + * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value + * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value + * @property {number} TYPE_BOOL=8 TYPE_BOOL value + * @property {number} TYPE_STRING=9 TYPE_STRING value + * @property {number} TYPE_GROUP=10 TYPE_GROUP value + * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value + * @property {number} TYPE_BYTES=12 TYPE_BYTES value + * @property {number} TYPE_UINT32=13 TYPE_UINT32 value + * @property {number} TYPE_ENUM=14 TYPE_ENUM value + * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value + * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value + * @property {number} TYPE_SINT32=17 TYPE_SINT32 value + * @property {number} TYPE_SINT64=18 TYPE_SINT64 value + */ + FieldDescriptorProto.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "TYPE_DOUBLE"] = 1; + values[valuesById[2] = "TYPE_FLOAT"] = 2; + values[valuesById[3] = "TYPE_INT64"] = 3; + values[valuesById[4] = "TYPE_UINT64"] = 4; + values[valuesById[5] = "TYPE_INT32"] = 5; + values[valuesById[6] = "TYPE_FIXED64"] = 6; + values[valuesById[7] = "TYPE_FIXED32"] = 7; + values[valuesById[8] = "TYPE_BOOL"] = 8; + values[valuesById[9] = "TYPE_STRING"] = 9; + values[valuesById[10] = "TYPE_GROUP"] = 10; + values[valuesById[11] = "TYPE_MESSAGE"] = 11; + values[valuesById[12] = "TYPE_BYTES"] = 12; + values[valuesById[13] = "TYPE_UINT32"] = 13; + values[valuesById[14] = "TYPE_ENUM"] = 14; + values[valuesById[15] = "TYPE_SFIXED32"] = 15; + values[valuesById[16] = "TYPE_SFIXED64"] = 16; + values[valuesById[17] = "TYPE_SINT32"] = 17; + values[valuesById[18] = "TYPE_SINT64"] = 18; + return values; + })(); + + /** + * Label enum. + * @name google.protobuf.FieldDescriptorProto.Label + * @enum {number} + * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value + * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + */ + FieldDescriptorProto.Label = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "LABEL_OPTIONAL"] = 1; + values[valuesById[2] = "LABEL_REQUIRED"] = 2; + values[valuesById[3] = "LABEL_REPEATED"] = 3; + return values; + })(); + + return FieldDescriptorProto; + })(); + + protobuf.OneofDescriptorProto = (function() { + + /** + * Properties of an OneofDescriptorProto. + * @memberof google.protobuf + * @interface IOneofDescriptorProto + * @property {string|null} [name] OneofDescriptorProto name + * @property {google.protobuf.IOneofOptions|null} [options] OneofDescriptorProto options + */ + + /** + * Constructs a new OneofDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an OneofDescriptorProto. + * @implements IOneofDescriptorProto + * @constructor + * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set + */ + function OneofDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.OneofDescriptorProto + * @instance + */ + OneofDescriptorProto.prototype.name = ""; + + /** + * OneofDescriptorProto options. + * @member {google.protobuf.IOneofOptions|null|undefined} options + * @memberof google.protobuf.OneofDescriptorProto + * @instance + */ + OneofDescriptorProto.prototype.options = null; + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance + */ + OneofDescriptorProto.create = function create(properties) { + return new OneofDescriptorProto(properties); + }; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofDescriptorProto message. + * @function verify + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + OneofDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.OneofOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + OneofDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofDescriptorProto) + return object; + var message = new $root.google.protobuf.OneofDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.OneofOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.OneofDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + OneofDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofDescriptorProto; + })(); + + protobuf.EnumDescriptorProto = (function() { + + /** + * Properties of an EnumDescriptorProto. + * @memberof google.protobuf + * @interface IEnumDescriptorProto + * @property {string|null} [name] EnumDescriptorProto name + * @property {Array.|null} [value] EnumDescriptorProto value + * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options + * @property {Array.|null} [reservedRange] EnumDescriptorProto reservedRange + * @property {Array.|null} [reservedName] EnumDescriptorProto reservedName + */ + + /** + * Constructs a new EnumDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an EnumDescriptorProto. + * @implements IEnumDescriptorProto + * @constructor + * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set + */ + function EnumDescriptorProto(properties) { + this.value = []; + this.reservedRange = []; + this.reservedName = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.name = ""; + + /** + * EnumDescriptorProto value. + * @member {Array.} value + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.value = $util.emptyArray; + + /** + * EnumDescriptorProto options. + * @member {google.protobuf.IEnumOptions|null|undefined} options + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.options = null; + + /** + * EnumDescriptorProto reservedRange. + * @member {Array.} reservedRange + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.reservedRange = $util.emptyArray; + + /** + * EnumDescriptorProto reservedName. + * @member {Array.} reservedName + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.reservedName = $util.emptyArray; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance + */ + EnumDescriptorProto.create = function create(properties) { + return new EnumDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.value != null && message.value.length) + for (var i = 0; i < message.value.length; ++i) + $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.reservedRange != null && message.reservedRange.length) + for (var i = 0; i < message.reservedRange.length; ++i) + $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.reservedName != null && message.reservedName.length) + for (var i = 0; i < message.reservedName.length; ++i) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]); + return writer; + }; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.value && message.value.length)) + message.value = []; + message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumDescriptorProto message. + * @function verify + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.value != null && message.hasOwnProperty("value")) { + if (!Array.isArray(message.value)) + return "value: array expected"; + for (var i = 0; i < message.value.length; ++i) { + var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]); + if (error) + return "value." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (!Array.isArray(message.reservedRange)) + return "reservedRange: array expected"; + for (var i = 0; i < message.reservedRange.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]); + if (error) + return "reservedRange." + error; + } + } + if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (!Array.isArray(message.reservedName)) + return "reservedName: array expected"; + for (var i = 0; i < message.reservedName.length; ++i) + if (!$util.isString(message.reservedName[i])) + return "reservedName: string[] expected"; + } + return null; + }; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + EnumDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.value) { + if (!Array.isArray(object.value)) + throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected"); + message.value = []; + for (var i = 0; i < object.value.length; ++i) { + if (typeof object.value[i] !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); + message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumOptions.fromObject(object.options); + } + if (object.reservedRange) { + if (!Array.isArray(object.reservedRange)) + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: array expected"); + message.reservedRange = []; + for (var i = 0; i < object.reservedRange.length; ++i) { + if (typeof object.reservedRange[i] !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected"); + message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]); + } + } + if (object.reservedName) { + if (!Array.isArray(object.reservedName)) + throw TypeError(".google.protobuf.EnumDescriptorProto.reservedName: array expected"); + message.reservedName = []; + for (var i = 0; i < object.reservedName.length; ++i) + message.reservedName[i] = String(object.reservedName[i]); + } + return message; + }; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.value = []; + object.reservedRange = []; + object.reservedName = []; + } + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.value && message.value.length) { + object.value = []; + for (var j = 0; j < message.value.length; ++j) + object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options); + if (message.reservedRange && message.reservedRange.length) { + object.reservedRange = []; + for (var j = 0; j < message.reservedRange.length; ++j) + object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options); + } + if (message.reservedName && message.reservedName.length) { + object.reservedName = []; + for (var j = 0; j < message.reservedName.length; ++j) + object.reservedName[j] = message.reservedName[j]; + } + return object; + }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.EnumDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + EnumDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + EnumDescriptorProto.EnumReservedRange = (function() { + + /** + * Properties of an EnumReservedRange. + * @memberof google.protobuf.EnumDescriptorProto + * @interface IEnumReservedRange + * @property {number|null} [start] EnumReservedRange start + * @property {number|null} [end] EnumReservedRange end + */ + + /** + * Constructs a new EnumReservedRange. + * @memberof google.protobuf.EnumDescriptorProto + * @classdesc Represents an EnumReservedRange. + * @implements IEnumReservedRange + * @constructor + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set + */ + function EnumReservedRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumReservedRange start. + * @member {number} start + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + */ + EnumReservedRange.prototype.start = 0; + + /** + * EnumReservedRange end. + * @member {number} end + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + */ + EnumReservedRange.prototype.end = 0; + + /** + * Creates a new EnumReservedRange instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange instance + */ + EnumReservedRange.create = function create(properties) { + return new EnumReservedRange(properties); + }; + + /** + * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumReservedRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && Object.hasOwnProperty.call(message, "start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && Object.hasOwnProperty.call(message, "end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumReservedRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumReservedRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumReservedRange message. + * @function verify + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumReservedRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange + */ + EnumReservedRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange) + return object; + var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {google.protobuf.EnumDescriptorProto.EnumReservedRange} message EnumReservedRange + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumReservedRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Converts this EnumReservedRange to JSON. + * @function toJSON + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @instance + * @returns {Object.} JSON object + */ + EnumReservedRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumReservedRange; + })(); + + return EnumDescriptorProto; + })(); + + protobuf.EnumValueDescriptorProto = (function() { + + /** + * Properties of an EnumValueDescriptorProto. + * @memberof google.protobuf + * @interface IEnumValueDescriptorProto + * @property {string|null} [name] EnumValueDescriptorProto name + * @property {number|null} [number] EnumValueDescriptorProto number + * @property {google.protobuf.IEnumValueOptions|null} [options] EnumValueDescriptorProto options + */ + + /** + * Constructs a new EnumValueDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents an EnumValueDescriptorProto. + * @implements IEnumValueDescriptorProto + * @constructor + * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set + */ + function EnumValueDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.name = ""; + + /** + * EnumValueDescriptorProto number. + * @member {number} number + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.number = 0; + + /** + * EnumValueDescriptorProto options. + * @member {google.protobuf.IEnumValueOptions|null|undefined} options + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + */ + EnumValueDescriptorProto.prototype.options = null; + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance + */ + EnumValueDescriptorProto.create = function create(properties) { + return new EnumValueDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.number != null && Object.hasOwnProperty.call(message, "number")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.number = reader.int32(); + break; + case 3: + message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueDescriptorProto message. + * @function verify + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumValueDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumValueOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + EnumValueDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumValueDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.number = 0; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.EnumValueDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + EnumValueDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueDescriptorProto; + })(); + + protobuf.ServiceDescriptorProto = (function() { + + /** + * Properties of a ServiceDescriptorProto. + * @memberof google.protobuf + * @interface IServiceDescriptorProto + * @property {string|null} [name] ServiceDescriptorProto name + * @property {Array.|null} [method] ServiceDescriptorProto method + * @property {google.protobuf.IServiceOptions|null} [options] ServiceDescriptorProto options + */ + + /** + * Constructs a new ServiceDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a ServiceDescriptorProto. + * @implements IServiceDescriptorProto + * @constructor + * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set + */ + function ServiceDescriptorProto(properties) { + this.method = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.name = ""; + + /** + * ServiceDescriptorProto method. + * @member {Array.} method + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.method = $util.emptyArray; + + /** + * ServiceDescriptorProto options. + * @member {google.protobuf.IServiceOptions|null|undefined} options + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + */ + ServiceDescriptorProto.prototype.options = null; + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance + */ + ServiceDescriptorProto.create = function create(properties) { + return new ServiceDescriptorProto(properties); + }; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.method != null && message.method.length) + for (var i = 0; i < message.method.length; ++i) + $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.method && message.method.length)) + message.method = []; + message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceDescriptorProto message. + * @function verify + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ServiceDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.method != null && message.hasOwnProperty("method")) { + if (!Array.isArray(message.method)) + return "method: array expected"; + for (var i = 0; i < message.method.length; ++i) { + var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]); + if (error) + return "method." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.ServiceOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + ServiceDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceDescriptorProto) + return object; + var message = new $root.google.protobuf.ServiceDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.method) { + if (!Array.isArray(object.method)) + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected"); + message.method = []; + for (var i = 0; i < object.method.length; ++i) { + if (typeof object.method[i] !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); + message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.method = []; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.method && message.method.length) { + object.method = []; + for (var j = 0; j < message.method.length; ++j) + object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options); + return object; + }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.ServiceDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + ServiceDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceDescriptorProto; + })(); + + protobuf.MethodDescriptorProto = (function() { + + /** + * Properties of a MethodDescriptorProto. + * @memberof google.protobuf + * @interface IMethodDescriptorProto + * @property {string|null} [name] MethodDescriptorProto name + * @property {string|null} [inputType] MethodDescriptorProto inputType + * @property {string|null} [outputType] MethodDescriptorProto outputType + * @property {google.protobuf.IMethodOptions|null} [options] MethodDescriptorProto options + * @property {boolean|null} [clientStreaming] MethodDescriptorProto clientStreaming + * @property {boolean|null} [serverStreaming] MethodDescriptorProto serverStreaming + */ + + /** + * Constructs a new MethodDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a MethodDescriptorProto. + * @implements IMethodDescriptorProto + * @constructor + * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set + */ + function MethodDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.name = ""; + + /** + * MethodDescriptorProto inputType. + * @member {string} inputType + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.inputType = ""; + + /** + * MethodDescriptorProto outputType. + * @member {string} outputType + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.outputType = ""; + + /** + * MethodDescriptorProto options. + * @member {google.protobuf.IMethodOptions|null|undefined} options + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.options = null; + + /** + * MethodDescriptorProto clientStreaming. + * @member {boolean} clientStreaming + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.clientStreaming = false; + + /** + * MethodDescriptorProto serverStreaming. + * @member {boolean} serverStreaming + * @memberof google.protobuf.MethodDescriptorProto + * @instance + */ + MethodDescriptorProto.prototype.serverStreaming = false; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @function create + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance + */ + MethodDescriptorProto.create = function create(properties) { + return new MethodDescriptorProto(properties); + }; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType); + if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); + if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming); + return writer; + }; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.inputType = reader.string(); + break; + case 3: + message.outputType = reader.string(); + break; + case 4: + message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); + break; + case 5: + message.clientStreaming = reader.bool(); + break; + case 6: + message.serverStreaming = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodDescriptorProto message. + * @function verify + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MethodDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.inputType != null && message.hasOwnProperty("inputType")) + if (!$util.isString(message.inputType)) + return "inputType: string expected"; + if (message.outputType != null && message.hasOwnProperty("outputType")) + if (!$util.isString(message.outputType)) + return "outputType: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MethodOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (typeof message.clientStreaming !== "boolean") + return "clientStreaming: boolean expected"; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (typeof message.serverStreaming !== "boolean") + return "serverStreaming: boolean expected"; + return null; + }; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + MethodDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodDescriptorProto) + return object; + var message = new $root.google.protobuf.MethodDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.inputType != null) + message.inputType = String(object.inputType); + if (object.outputType != null) + message.outputType = String(object.outputType); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MethodOptions.fromObject(object.options); + } + if (object.clientStreaming != null) + message.clientStreaming = Boolean(object.clientStreaming); + if (object.serverStreaming != null) + message.serverStreaming = Boolean(object.serverStreaming); + return message; + }; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.inputType = ""; + object.outputType = ""; + object.options = null; + object.clientStreaming = false; + object.serverStreaming = false; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.inputType != null && message.hasOwnProperty("inputType")) + object.inputType = message.inputType; + if (message.outputType != null && message.hasOwnProperty("outputType")) + object.outputType = message.outputType; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options); + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + object.clientStreaming = message.clientStreaming; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + object.serverStreaming = message.serverStreaming; + return object; + }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @function toJSON + * @memberof google.protobuf.MethodDescriptorProto + * @instance + * @returns {Object.} JSON object + */ + MethodDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MethodDescriptorProto; + })(); + + protobuf.FileOptions = (function() { + + /** + * Properties of a FileOptions. + * @memberof google.protobuf + * @interface IFileOptions + * @property {string|null} [javaPackage] FileOptions javaPackage + * @property {string|null} [javaOuterClassname] FileOptions javaOuterClassname + * @property {boolean|null} [javaMultipleFiles] FileOptions javaMultipleFiles + * @property {boolean|null} [javaGenerateEqualsAndHash] FileOptions javaGenerateEqualsAndHash + * @property {boolean|null} [javaStringCheckUtf8] FileOptions javaStringCheckUtf8 + * @property {google.protobuf.FileOptions.OptimizeMode|null} [optimizeFor] FileOptions optimizeFor + * @property {string|null} [goPackage] FileOptions goPackage + * @property {boolean|null} [ccGenericServices] FileOptions ccGenericServices + * @property {boolean|null} [javaGenericServices] FileOptions javaGenericServices + * @property {boolean|null} [pyGenericServices] FileOptions pyGenericServices + * @property {boolean|null} [phpGenericServices] FileOptions phpGenericServices + * @property {boolean|null} [deprecated] FileOptions deprecated + * @property {boolean|null} [ccEnableArenas] FileOptions ccEnableArenas + * @property {string|null} [objcClassPrefix] FileOptions objcClassPrefix + * @property {string|null} [csharpNamespace] FileOptions csharpNamespace + * @property {string|null} [swiftPrefix] FileOptions swiftPrefix + * @property {string|null} [phpClassPrefix] FileOptions phpClassPrefix + * @property {string|null} [phpNamespace] FileOptions phpNamespace + * @property {string|null} [phpMetadataNamespace] FileOptions phpMetadataNamespace + * @property {string|null} [rubyPackage] FileOptions rubyPackage + * @property {Array.|null} [uninterpretedOption] FileOptions uninterpretedOption + */ + + /** + * Constructs a new FileOptions. + * @memberof google.protobuf + * @classdesc Represents a FileOptions. + * @implements IFileOptions + * @constructor + * @param {google.protobuf.IFileOptions=} [properties] Properties to set + */ + function FileOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileOptions javaPackage. + * @member {string} javaPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaPackage = ""; + + /** + * FileOptions javaOuterClassname. + * @member {string} javaOuterClassname + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaOuterClassname = ""; + + /** + * FileOptions javaMultipleFiles. + * @member {boolean} javaMultipleFiles + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaMultipleFiles = false; + + /** + * FileOptions javaGenerateEqualsAndHash. + * @member {boolean} javaGenerateEqualsAndHash + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaGenerateEqualsAndHash = false; + + /** + * FileOptions javaStringCheckUtf8. + * @member {boolean} javaStringCheckUtf8 + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaStringCheckUtf8 = false; + + /** + * FileOptions optimizeFor. + * @member {google.protobuf.FileOptions.OptimizeMode} optimizeFor + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.optimizeFor = 1; + + /** + * FileOptions goPackage. + * @member {string} goPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.goPackage = ""; + + /** + * FileOptions ccGenericServices. + * @member {boolean} ccGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.ccGenericServices = false; + + /** + * FileOptions javaGenericServices. + * @member {boolean} javaGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.javaGenericServices = false; + + /** + * FileOptions pyGenericServices. + * @member {boolean} pyGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.pyGenericServices = false; + + /** + * FileOptions phpGenericServices. + * @member {boolean} phpGenericServices + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpGenericServices = false; + + /** + * FileOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.deprecated = false; + + /** + * FileOptions ccEnableArenas. + * @member {boolean} ccEnableArenas + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.ccEnableArenas = true; + + /** + * FileOptions objcClassPrefix. + * @member {string} objcClassPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.objcClassPrefix = ""; + + /** + * FileOptions csharpNamespace. + * @member {string} csharpNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.csharpNamespace = ""; + + /** + * FileOptions swiftPrefix. + * @member {string} swiftPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.swiftPrefix = ""; + + /** + * FileOptions phpClassPrefix. + * @member {string} phpClassPrefix + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpClassPrefix = ""; + + /** + * FileOptions phpNamespace. + * @member {string} phpNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpNamespace = ""; + + /** + * FileOptions phpMetadataNamespace. + * @member {string} phpMetadataNamespace + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.phpMetadataNamespace = ""; + + /** + * FileOptions rubyPackage. + * @member {string} rubyPackage + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.rubyPackage = ""; + + /** + * FileOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new FileOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions=} [properties] Properties to set + * @returns {google.protobuf.FileOptions} FileOptions instance + */ + FileOptions.create = function create(properties) { + return new FileOptions(properties); + }; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); + if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname); + if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.optimizeFor); + if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles); + if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage")) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage); + if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices")) + writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices); + if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices")) + writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices); + if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices")) + writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices); + if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash")) + writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated); + if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8")) + writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8); + if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas")) + writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas); + if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix")) + writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix); + if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace")) + writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace); + if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix")) + writer.uint32(/* id 39, wireType 2 =*/314).string(message.swiftPrefix); + if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix")) + writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix); + if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) + writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace); + if (message.phpGenericServices != null && Object.hasOwnProperty.call(message, "phpGenericServices")) + writer.uint32(/* id 42, wireType 0 =*/336).bool(message.phpGenericServices); + if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) + writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); + if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) + writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FileOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.javaPackage = reader.string(); + break; + case 8: + message.javaOuterClassname = reader.string(); + break; + case 10: + message.javaMultipleFiles = reader.bool(); + break; + case 20: + message.javaGenerateEqualsAndHash = reader.bool(); + break; + case 27: + message.javaStringCheckUtf8 = reader.bool(); + break; + case 9: + message.optimizeFor = reader.int32(); + break; + case 11: + message.goPackage = reader.string(); + break; + case 16: + message.ccGenericServices = reader.bool(); + break; + case 17: + message.javaGenericServices = reader.bool(); + break; + case 18: + message.pyGenericServices = reader.bool(); + break; + case 42: + message.phpGenericServices = reader.bool(); + break; + case 23: + message.deprecated = reader.bool(); + break; + case 31: + message.ccEnableArenas = reader.bool(); + break; + case 36: + message.objcClassPrefix = reader.string(); + break; + case 37: + message.csharpNamespace = reader.string(); + break; + case 39: + message.swiftPrefix = reader.string(); + break; + case 40: + message.phpClassPrefix = reader.string(); + break; + case 41: + message.phpNamespace = reader.string(); + break; + case 44: + message.phpMetadataNamespace = reader.string(); + break; + case 45: + message.rubyPackage = reader.string(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FileOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileOptions message. + * @function verify + * @memberof google.protobuf.FileOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (!$util.isString(message.javaPackage)) + return "javaPackage: string expected"; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (!$util.isString(message.javaOuterClassname)) + return "javaOuterClassname: string expected"; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (typeof message.javaMultipleFiles !== "boolean") + return "javaMultipleFiles: boolean expected"; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (typeof message.javaGenerateEqualsAndHash !== "boolean") + return "javaGenerateEqualsAndHash: boolean expected"; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (typeof message.javaStringCheckUtf8 !== "boolean") + return "javaStringCheckUtf8: boolean expected"; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + switch (message.optimizeFor) { + default: + return "optimizeFor: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (!$util.isString(message.goPackage)) + return "goPackage: string expected"; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (typeof message.ccGenericServices !== "boolean") + return "ccGenericServices: boolean expected"; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (typeof message.javaGenericServices !== "boolean") + return "javaGenericServices: boolean expected"; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (typeof message.pyGenericServices !== "boolean") + return "pyGenericServices: boolean expected"; + if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + if (typeof message.phpGenericServices !== "boolean") + return "phpGenericServices: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (typeof message.ccEnableArenas !== "boolean") + return "ccEnableArenas: boolean expected"; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (!$util.isString(message.objcClassPrefix)) + return "objcClassPrefix: string expected"; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (!$util.isString(message.csharpNamespace)) + return "csharpNamespace: string expected"; + if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + if (!$util.isString(message.swiftPrefix)) + return "swiftPrefix: string expected"; + if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + if (!$util.isString(message.phpClassPrefix)) + return "phpClassPrefix: string expected"; + if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + if (!$util.isString(message.phpNamespace)) + return "phpNamespace: string expected"; + if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + if (!$util.isString(message.phpMetadataNamespace)) + return "phpMetadataNamespace: string expected"; + if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + if (!$util.isString(message.rubyPackage)) + return "rubyPackage: string expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FileOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + FileOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileOptions) + return object; + var message = new $root.google.protobuf.FileOptions(); + if (object.javaPackage != null) + message.javaPackage = String(object.javaPackage); + if (object.javaOuterClassname != null) + message.javaOuterClassname = String(object.javaOuterClassname); + if (object.javaMultipleFiles != null) + message.javaMultipleFiles = Boolean(object.javaMultipleFiles); + if (object.javaGenerateEqualsAndHash != null) + message.javaGenerateEqualsAndHash = Boolean(object.javaGenerateEqualsAndHash); + if (object.javaStringCheckUtf8 != null) + message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8); + switch (object.optimizeFor) { + case "SPEED": + case 1: + message.optimizeFor = 1; + break; + case "CODE_SIZE": + case 2: + message.optimizeFor = 2; + break; + case "LITE_RUNTIME": + case 3: + message.optimizeFor = 3; + break; + } + if (object.goPackage != null) + message.goPackage = String(object.goPackage); + if (object.ccGenericServices != null) + message.ccGenericServices = Boolean(object.ccGenericServices); + if (object.javaGenericServices != null) + message.javaGenericServices = Boolean(object.javaGenericServices); + if (object.pyGenericServices != null) + message.pyGenericServices = Boolean(object.pyGenericServices); + if (object.phpGenericServices != null) + message.phpGenericServices = Boolean(object.phpGenericServices); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.ccEnableArenas != null) + message.ccEnableArenas = Boolean(object.ccEnableArenas); + if (object.objcClassPrefix != null) + message.objcClassPrefix = String(object.objcClassPrefix); + if (object.csharpNamespace != null) + message.csharpNamespace = String(object.csharpNamespace); + if (object.swiftPrefix != null) + message.swiftPrefix = String(object.swiftPrefix); + if (object.phpClassPrefix != null) + message.phpClassPrefix = String(object.phpClassPrefix); + if (object.phpNamespace != null) + message.phpNamespace = String(object.phpNamespace); + if (object.phpMetadataNamespace != null) + message.phpMetadataNamespace = String(object.phpMetadataNamespace); + if (object.rubyPackage != null) + message.rubyPackage = String(object.rubyPackage); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FileOptions + * @static + * @param {google.protobuf.FileOptions} message FileOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.javaPackage = ""; + object.javaOuterClassname = ""; + object.optimizeFor = options.enums === String ? "SPEED" : 1; + object.javaMultipleFiles = false; + object.goPackage = ""; + object.ccGenericServices = false; + object.javaGenericServices = false; + object.pyGenericServices = false; + object.javaGenerateEqualsAndHash = false; + object.deprecated = false; + object.javaStringCheckUtf8 = false; + object.ccEnableArenas = true; + object.objcClassPrefix = ""; + object.csharpNamespace = ""; + object.swiftPrefix = ""; + object.phpClassPrefix = ""; + object.phpNamespace = ""; + object.phpGenericServices = false; + object.phpMetadataNamespace = ""; + object.rubyPackage = ""; + } + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + object.javaPackage = message.javaPackage; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + object.javaOuterClassname = message.javaOuterClassname; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + object.javaMultipleFiles = message.javaMultipleFiles; + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + object.goPackage = message.goPackage; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + object.ccGenericServices = message.ccGenericServices; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + object.javaGenericServices = message.javaGenericServices; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + object.pyGenericServices = message.pyGenericServices; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + object.javaStringCheckUtf8 = message.javaStringCheckUtf8; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + object.ccEnableArenas = message.ccEnableArenas; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + object.objcClassPrefix = message.objcClassPrefix; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + object.csharpNamespace = message.csharpNamespace; + if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + object.swiftPrefix = message.swiftPrefix; + if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + object.phpClassPrefix = message.phpClassPrefix; + if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + object.phpNamespace = message.phpNamespace; + if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) + object.phpGenericServices = message.phpGenericServices; + if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + object.phpMetadataNamespace = message.phpMetadataNamespace; + if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + object.rubyPackage = message.rubyPackage; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this FileOptions to JSON. + * @function toJSON + * @memberof google.protobuf.FileOptions + * @instance + * @returns {Object.} JSON object + */ + FileOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * OptimizeMode enum. + * @name google.protobuf.FileOptions.OptimizeMode + * @enum {number} + * @property {number} SPEED=1 SPEED value + * @property {number} CODE_SIZE=2 CODE_SIZE value + * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value + */ + FileOptions.OptimizeMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "SPEED"] = 1; + values[valuesById[2] = "CODE_SIZE"] = 2; + values[valuesById[3] = "LITE_RUNTIME"] = 3; + return values; + })(); + + return FileOptions; + })(); + + protobuf.MessageOptions = (function() { + + /** + * Properties of a MessageOptions. + * @memberof google.protobuf + * @interface IMessageOptions + * @property {boolean|null} [messageSetWireFormat] MessageOptions messageSetWireFormat + * @property {boolean|null} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor + * @property {boolean|null} [deprecated] MessageOptions deprecated + * @property {boolean|null} [mapEntry] MessageOptions mapEntry + * @property {Array.|null} [uninterpretedOption] MessageOptions uninterpretedOption + */ + + /** + * Constructs a new MessageOptions. + * @memberof google.protobuf + * @classdesc Represents a MessageOptions. + * @implements IMessageOptions + * @constructor + * @param {google.protobuf.IMessageOptions=} [properties] Properties to set + */ + function MessageOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MessageOptions messageSetWireFormat. + * @member {boolean} messageSetWireFormat + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.messageSetWireFormat = false; + + /** + * MessageOptions noStandardDescriptorAccessor. + * @member {boolean} noStandardDescriptorAccessor + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.noStandardDescriptorAccessor = false; + + /** + * MessageOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.deprecated = false; + + /** + * MessageOptions mapEntry. + * @member {boolean} mapEntry + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.mapEntry = false; + + /** + * MessageOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions=} [properties] Properties to set + * @returns {google.protobuf.MessageOptions} MessageOptions instance + */ + MessageOptions.create = function create(properties) { + return new MessageOptions(properties); + }; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); + if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MessageOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageSetWireFormat = reader.bool(); + break; + case 2: + message.noStandardDescriptorAccessor = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 7: + message.mapEntry = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MessageOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MessageOptions message. + * @function verify + * @memberof google.protobuf.MessageOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MessageOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (typeof message.messageSetWireFormat !== "boolean") + return "messageSetWireFormat: boolean expected"; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (typeof message.noStandardDescriptorAccessor !== "boolean") + return "noStandardDescriptorAccessor: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (typeof message.mapEntry !== "boolean") + return "mapEntry: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MessageOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + MessageOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MessageOptions) + return object; + var message = new $root.google.protobuf.MessageOptions(); + if (object.messageSetWireFormat != null) + message.messageSetWireFormat = Boolean(object.messageSetWireFormat); + if (object.noStandardDescriptorAccessor != null) + message.noStandardDescriptorAccessor = Boolean(object.noStandardDescriptorAccessor); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.mapEntry != null) + message.mapEntry = Boolean(object.mapEntry); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MessageOptions + * @static + * @param {google.protobuf.MessageOptions} message MessageOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.messageSetWireFormat = false; + object.noStandardDescriptorAccessor = false; + object.deprecated = false; + object.mapEntry = false; + } + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + object.messageSetWireFormat = message.messageSetWireFormat; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + object.mapEntry = message.mapEntry; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this MessageOptions to JSON. + * @function toJSON + * @memberof google.protobuf.MessageOptions + * @instance + * @returns {Object.} JSON object + */ + MessageOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MessageOptions; + })(); + + protobuf.FieldOptions = (function() { + + /** + * Properties of a FieldOptions. + * @memberof google.protobuf + * @interface IFieldOptions + * @property {google.protobuf.FieldOptions.CType|null} [ctype] FieldOptions ctype + * @property {boolean|null} [packed] FieldOptions packed + * @property {google.protobuf.FieldOptions.JSType|null} [jstype] FieldOptions jstype + * @property {boolean|null} [lazy] FieldOptions lazy + * @property {boolean|null} [deprecated] FieldOptions deprecated + * @property {boolean|null} [weak] FieldOptions weak + * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption + * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior + */ + + /** + * Constructs a new FieldOptions. + * @memberof google.protobuf + * @classdesc Represents a FieldOptions. + * @implements IFieldOptions + * @constructor + * @param {google.protobuf.IFieldOptions=} [properties] Properties to set + */ + function FieldOptions(properties) { + this.uninterpretedOption = []; + this[".google.api.fieldBehavior"] = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldOptions ctype. + * @member {google.protobuf.FieldOptions.CType} ctype + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.ctype = 0; + + /** + * FieldOptions packed. + * @member {boolean} packed + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.packed = false; + + /** + * FieldOptions jstype. + * @member {google.protobuf.FieldOptions.JSType} jstype + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.jstype = 0; + + /** + * FieldOptions lazy. + * @member {boolean} lazy + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.lazy = false; + + /** + * FieldOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.deprecated = false; + + /** + * FieldOptions weak. + * @member {boolean} weak + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.weak = false; + + /** + * FieldOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * FieldOptions .google.api.fieldBehavior. + * @member {Array.} .google.api.fieldBehavior + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype[".google.api.fieldBehavior"] = $util.emptyArray; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions} FieldOptions instance + */ + FieldOptions.create = function create(properties) { + return new FieldOptions(properties); + }; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype); + if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy); + if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype); + if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) { + writer.uint32(/* id 1052, wireType 2 =*/8418).fork(); + for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) + writer.int32(message[".google.api.fieldBehavior"][i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ctype = reader.int32(); + break; + case 2: + message.packed = reader.bool(); + break; + case 6: + message.jstype = reader.int32(); + break; + case 5: + message.lazy = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 10: + message.weak = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + case 1052: + if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length)) + message[".google.api.fieldBehavior"] = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message[".google.api.fieldBehavior"].push(reader.int32()); + } else + message[".google.api.fieldBehavior"].push(reader.int32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldOptions message. + * @function verify + * @memberof google.protobuf.FieldOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FieldOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ctype != null && message.hasOwnProperty("ctype")) + switch (message.ctype) { + default: + return "ctype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.packed != null && message.hasOwnProperty("packed")) + if (typeof message.packed !== "boolean") + return "packed: boolean expected"; + if (message.jstype != null && message.hasOwnProperty("jstype")) + switch (message.jstype) { + default: + return "jstype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.lazy != null && message.hasOwnProperty("lazy")) + if (typeof message.lazy !== "boolean") + return "lazy: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.weak != null && message.hasOwnProperty("weak")) + if (typeof message.weak !== "boolean") + return "weak: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + if (message[".google.api.fieldBehavior"] != null && message.hasOwnProperty(".google.api.fieldBehavior")) { + if (!Array.isArray(message[".google.api.fieldBehavior"])) + return ".google.api.fieldBehavior: array expected"; + for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) + switch (message[".google.api.fieldBehavior"][i]) { + default: + return ".google.api.fieldBehavior: enum value[] expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + break; + } + } + return null; + }; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + FieldOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldOptions) + return object; + var message = new $root.google.protobuf.FieldOptions(); + switch (object.ctype) { + case "STRING": + case 0: + message.ctype = 0; + break; + case "CORD": + case 1: + message.ctype = 1; + break; + case "STRING_PIECE": + case 2: + message.ctype = 2; + break; + } + if (object.packed != null) + message.packed = Boolean(object.packed); + switch (object.jstype) { + case "JS_NORMAL": + case 0: + message.jstype = 0; + break; + case "JS_STRING": + case 1: + message.jstype = 1; + break; + case "JS_NUMBER": + case 2: + message.jstype = 2; + break; + } + if (object.lazy != null) + message.lazy = Boolean(object.lazy); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.weak != null) + message.weak = Boolean(object.weak); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + if (object[".google.api.fieldBehavior"]) { + if (!Array.isArray(object[".google.api.fieldBehavior"])) + throw TypeError(".google.protobuf.FieldOptions..google.api.fieldBehavior: array expected"); + message[".google.api.fieldBehavior"] = []; + for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i) + switch (object[".google.api.fieldBehavior"][i]) { + default: + case "FIELD_BEHAVIOR_UNSPECIFIED": + case 0: + message[".google.api.fieldBehavior"][i] = 0; + break; + case "OPTIONAL": + case 1: + message[".google.api.fieldBehavior"][i] = 1; + break; + case "REQUIRED": + case 2: + message[".google.api.fieldBehavior"][i] = 2; + break; + case "OUTPUT_ONLY": + case 3: + message[".google.api.fieldBehavior"][i] = 3; + break; + case "INPUT_ONLY": + case 4: + message[".google.api.fieldBehavior"][i] = 4; + break; + case "IMMUTABLE": + case 5: + message[".google.api.fieldBehavior"][i] = 5; + break; + } + } + return message; + }; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldOptions + * @static + * @param {google.protobuf.FieldOptions} message FieldOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.uninterpretedOption = []; + object[".google.api.fieldBehavior"] = []; + } + if (options.defaults) { + object.ctype = options.enums === String ? "STRING" : 0; + object.packed = false; + object.deprecated = false; + object.lazy = false; + object.jstype = options.enums === String ? "JS_NORMAL" : 0; + object.weak = false; + } + if (message.ctype != null && message.hasOwnProperty("ctype")) + object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; + if (message.packed != null && message.hasOwnProperty("packed")) + object.packed = message.packed; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.lazy != null && message.hasOwnProperty("lazy")) + object.lazy = message.lazy; + if (message.jstype != null && message.hasOwnProperty("jstype")) + object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; + if (message.weak != null && message.hasOwnProperty("weak")) + object.weak = message.weak; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) { + object[".google.api.fieldBehavior"] = []; + for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j) + object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; + } + return object; + }; + + /** + * Converts this FieldOptions to JSON. + * @function toJSON + * @memberof google.protobuf.FieldOptions + * @instance + * @returns {Object.} JSON object + */ + FieldOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * CType enum. + * @name google.protobuf.FieldOptions.CType + * @enum {number} + * @property {number} STRING=0 STRING value + * @property {number} CORD=1 CORD value + * @property {number} STRING_PIECE=2 STRING_PIECE value + */ + FieldOptions.CType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STRING"] = 0; + values[valuesById[1] = "CORD"] = 1; + values[valuesById[2] = "STRING_PIECE"] = 2; + return values; + })(); + + /** + * JSType enum. + * @name google.protobuf.FieldOptions.JSType + * @enum {number} + * @property {number} JS_NORMAL=0 JS_NORMAL value + * @property {number} JS_STRING=1 JS_STRING value + * @property {number} JS_NUMBER=2 JS_NUMBER value + */ + FieldOptions.JSType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "JS_NORMAL"] = 0; + values[valuesById[1] = "JS_STRING"] = 1; + values[valuesById[2] = "JS_NUMBER"] = 2; + return values; + })(); + + return FieldOptions; + })(); + + protobuf.OneofOptions = (function() { + + /** + * Properties of an OneofOptions. + * @memberof google.protobuf + * @interface IOneofOptions + * @property {Array.|null} [uninterpretedOption] OneofOptions uninterpretedOption + */ + + /** + * Constructs a new OneofOptions. + * @memberof google.protobuf + * @classdesc Represents an OneofOptions. + * @implements IOneofOptions + * @constructor + * @param {google.protobuf.IOneofOptions=} [properties] Properties to set + */ + function OneofOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.OneofOptions + * @instance + */ + OneofOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions=} [properties] Properties to set + * @returns {google.protobuf.OneofOptions} OneofOptions instance + */ + OneofOptions.create = function create(properties) { + return new OneofOptions(properties); + }; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.OneofOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.OneofOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofOptions message. + * @function verify + * @memberof google.protobuf.OneofOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + OneofOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.OneofOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + OneofOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofOptions) + return object; + var message = new $root.google.protobuf.OneofOptions(); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.OneofOptions + * @static + * @param {google.protobuf.OneofOptions} message OneofOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this OneofOptions to JSON. + * @function toJSON + * @memberof google.protobuf.OneofOptions + * @instance + * @returns {Object.} JSON object + */ + OneofOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofOptions; + })(); + + protobuf.EnumOptions = (function() { + + /** + * Properties of an EnumOptions. + * @memberof google.protobuf + * @interface IEnumOptions + * @property {boolean|null} [allowAlias] EnumOptions allowAlias + * @property {boolean|null} [deprecated] EnumOptions deprecated + * @property {Array.|null} [uninterpretedOption] EnumOptions uninterpretedOption + */ + + /** + * Constructs a new EnumOptions. + * @memberof google.protobuf + * @classdesc Represents an EnumOptions. + * @implements IEnumOptions + * @constructor + * @param {google.protobuf.IEnumOptions=} [properties] Properties to set + */ + function EnumOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumOptions allowAlias. + * @member {boolean} allowAlias + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.allowAlias = false; + + /** + * EnumOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.deprecated = false; + + /** + * EnumOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions=} [properties] Properties to set + * @returns {google.protobuf.EnumOptions} EnumOptions instance + */ + EnumOptions.create = function create(properties) { + return new EnumOptions(properties); + }; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.allowAlias = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumOptions message. + * @function verify + * @memberof google.protobuf.EnumOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (typeof message.allowAlias !== "boolean") + return "allowAlias: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + EnumOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumOptions) + return object; + var message = new $root.google.protobuf.EnumOptions(); + if (object.allowAlias != null) + message.allowAlias = Boolean(object.allowAlias); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumOptions + * @static + * @param {google.protobuf.EnumOptions} message EnumOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.allowAlias = false; + object.deprecated = false; + } + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + object.allowAlias = message.allowAlias; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this EnumOptions to JSON. + * @function toJSON + * @memberof google.protobuf.EnumOptions + * @instance + * @returns {Object.} JSON object + */ + EnumOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumOptions; + })(); + + protobuf.EnumValueOptions = (function() { + + /** + * Properties of an EnumValueOptions. + * @memberof google.protobuf + * @interface IEnumValueOptions + * @property {boolean|null} [deprecated] EnumValueOptions deprecated + * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption + */ + + /** + * Constructs a new EnumValueOptions. + * @memberof google.protobuf + * @classdesc Represents an EnumValueOptions. + * @implements IEnumValueOptions + * @constructor + * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set + */ + function EnumValueOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.deprecated = false; + + /** + * EnumValueOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance + */ + EnumValueOptions.create = function create(properties) { + return new EnumValueOptions(properties); + }; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueOptions message. + * @function verify + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EnumValueOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + EnumValueOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueOptions) + return object; + var message = new $root.google.protobuf.EnumValueOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {google.protobuf.EnumValueOptions} message EnumValueOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Converts this EnumValueOptions to JSON. + * @function toJSON + * @memberof google.protobuf.EnumValueOptions + * @instance + * @returns {Object.} JSON object + */ + EnumValueOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueOptions; + })(); + + protobuf.ServiceOptions = (function() { + + /** + * Properties of a ServiceOptions. + * @memberof google.protobuf + * @interface IServiceOptions + * @property {boolean|null} [deprecated] ServiceOptions deprecated + * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption + * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost + * @property {string|null} [".google.api.oauthScopes"] ServiceOptions .google.api.oauthScopes + */ + + /** + * Constructs a new ServiceOptions. + * @memberof google.protobuf + * @classdesc Represents a ServiceOptions. + * @implements IServiceOptions + * @constructor + * @param {google.protobuf.IServiceOptions=} [properties] Properties to set + */ + function ServiceOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype.deprecated = false; + + /** + * ServiceOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * ServiceOptions .google.api.defaultHost. + * @member {string} .google.api.defaultHost + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype[".google.api.defaultHost"] = ""; + + /** + * ServiceOptions .google.api.oauthScopes. + * @member {string} .google.api.oauthScopes + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype[".google.api.oauthScopes"] = ""; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions=} [properties] Properties to set + * @returns {google.protobuf.ServiceOptions} ServiceOptions instance + */ + ServiceOptions.create = function create(properties) { + return new ServiceOptions(properties); + }; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) + writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); + if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) + writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]); + return writer; + }; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ServiceOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + case 1049: + message[".google.api.defaultHost"] = reader.string(); + break; + case 1050: + message[".google.api.oauthScopes"] = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ServiceOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceOptions message. + * @function verify + * @memberof google.protobuf.ServiceOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ServiceOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + if (!$util.isString(message[".google.api.defaultHost"])) + return ".google.api.defaultHost: string expected"; + if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + if (!$util.isString(message[".google.api.oauthScopes"])) + return ".google.api.oauthScopes: string expected"; + return null; + }; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ServiceOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + ServiceOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceOptions) + return object; + var message = new $root.google.protobuf.ServiceOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + if (object[".google.api.defaultHost"] != null) + message[".google.api.defaultHost"] = String(object[".google.api.defaultHost"]); + if (object[".google.api.oauthScopes"] != null) + message[".google.api.oauthScopes"] = String(object[".google.api.oauthScopes"]); + return message; + }; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ServiceOptions + * @static + * @param {google.protobuf.ServiceOptions} message ServiceOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.deprecated = false; + object[".google.api.defaultHost"] = ""; + object[".google.api.oauthScopes"] = ""; + } + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + object[".google.api.defaultHost"] = message[".google.api.defaultHost"]; + if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"]; + return object; + }; + + /** + * Converts this ServiceOptions to JSON. + * @function toJSON + * @memberof google.protobuf.ServiceOptions + * @instance + * @returns {Object.} JSON object + */ + ServiceOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceOptions; + })(); + + protobuf.MethodOptions = (function() { + + /** + * Properties of a MethodOptions. + * @memberof google.protobuf + * @interface IMethodOptions + * @property {boolean|null} [deprecated] MethodOptions deprecated + * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel + * @property {Array.|null} [uninterpretedOption] MethodOptions uninterpretedOption + * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http + * @property {Array.|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature + * @property {google.longrunning.IOperationInfo|null} [".google.longrunning.operationInfo"] MethodOptions .google.longrunning.operationInfo + */ + + /** + * Constructs a new MethodOptions. + * @memberof google.protobuf + * @classdesc Represents a MethodOptions. + * @implements IMethodOptions + * @constructor + * @param {google.protobuf.IMethodOptions=} [properties] Properties to set + */ + function MethodOptions(properties) { + this.uninterpretedOption = []; + this[".google.api.methodSignature"] = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodOptions deprecated. + * @member {boolean} deprecated + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.deprecated = false; + + /** + * MethodOptions idempotencyLevel. + * @member {google.protobuf.MethodOptions.IdempotencyLevel} idempotencyLevel + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.idempotencyLevel = 0; + + /** + * MethodOptions uninterpretedOption. + * @member {Array.} uninterpretedOption + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * MethodOptions .google.api.http. + * @member {google.api.IHttpRule|null|undefined} .google.api.http + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.api.http"] = null; + + /** + * MethodOptions .google.api.methodSignature. + * @member {Array.} .google.api.methodSignature + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.api.methodSignature"] = $util.emptyArray; + + /** + * MethodOptions .google.longrunning.operationInfo. + * @member {google.longrunning.IOperationInfo|null|undefined} .google.longrunning.operationInfo + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.longrunning.operationInfo"] = null; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @function create + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions=} [properties] Properties to set + * @returns {google.protobuf.MethodOptions} MethodOptions instance + */ + MethodOptions.create = function create(properties) { + return new MethodOptions(properties); + }; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @function encode + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) + writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".google.longrunning.operationInfo"] != null && Object.hasOwnProperty.call(message, ".google.longrunning.operationInfo")) + $root.google.longrunning.OperationInfo.encode(message[".google.longrunning.operationInfo"], writer.uint32(/* id 1049, wireType 2 =*/8394).fork()).ldelim(); + if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length) + for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) + writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); + if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) + $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.MethodOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 34: + message.idempotencyLevel = reader.int32(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + case 72295728: + message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); + break; + case 1051: + if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length)) + message[".google.api.methodSignature"] = []; + message[".google.api.methodSignature"].push(reader.string()); + break; + case 1049: + message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.MethodOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodOptions message. + * @function verify + * @memberof google.protobuf.MethodOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MethodOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + switch (message.idempotencyLevel) { + default: + return "idempotencyLevel: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) { + var error = $root.google.api.HttpRule.verify(message[".google.api.http"]); + if (error) + return ".google.api.http." + error; + } + if (message[".google.api.methodSignature"] != null && message.hasOwnProperty(".google.api.methodSignature")) { + if (!Array.isArray(message[".google.api.methodSignature"])) + return ".google.api.methodSignature: array expected"; + for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) + if (!$util.isString(message[".google.api.methodSignature"][i])) + return ".google.api.methodSignature: string[] expected"; + } + if (message[".google.longrunning.operationInfo"] != null && message.hasOwnProperty(".google.longrunning.operationInfo")) { + var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"]); + if (error) + return ".google.longrunning.operationInfo." + error; + } + return null; + }; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.MethodOptions + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + MethodOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodOptions) + return object; + var message = new $root.google.protobuf.MethodOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + switch (object.idempotencyLevel) { + case "IDEMPOTENCY_UNKNOWN": + case 0: + message.idempotencyLevel = 0; + break; + case "NO_SIDE_EFFECTS": + case 1: + message.idempotencyLevel = 1; + break; + case "IDEMPOTENT": + case 2: + message.idempotencyLevel = 2; + break; + } + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + if (object[".google.api.http"] != null) { + if (typeof object[".google.api.http"] !== "object") + throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); + message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]); + } + if (object[".google.api.methodSignature"]) { + if (!Array.isArray(object[".google.api.methodSignature"])) + throw TypeError(".google.protobuf.MethodOptions..google.api.methodSignature: array expected"); + message[".google.api.methodSignature"] = []; + for (var i = 0; i < object[".google.api.methodSignature"].length; ++i) + message[".google.api.methodSignature"][i] = String(object[".google.api.methodSignature"][i]); + } + if (object[".google.longrunning.operationInfo"] != null) { + if (typeof object[".google.longrunning.operationInfo"] !== "object") + throw TypeError(".google.protobuf.MethodOptions..google.longrunning.operationInfo: object expected"); + message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"]); + } + return message; + }; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.MethodOptions + * @static + * @param {google.protobuf.MethodOptions} message MethodOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.uninterpretedOption = []; + object[".google.api.methodSignature"] = []; + } + if (options.defaults) { + object.deprecated = false; + object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; + object[".google.longrunning.operationInfo"] = null; + object[".google.api.http"] = null; + } + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + if (message[".google.longrunning.operationInfo"] != null && message.hasOwnProperty(".google.longrunning.operationInfo")) + object[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.toObject(message[".google.longrunning.operationInfo"], options); + if (message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length) { + object[".google.api.methodSignature"] = []; + for (var j = 0; j < message[".google.api.methodSignature"].length; ++j) + object[".google.api.methodSignature"][j] = message[".google.api.methodSignature"][j]; + } + if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) + object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); + return object; + }; + + /** + * Converts this MethodOptions to JSON. + * @function toJSON + * @memberof google.protobuf.MethodOptions + * @instance + * @returns {Object.} JSON object + */ + MethodOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * IdempotencyLevel enum. + * @name google.protobuf.MethodOptions.IdempotencyLevel + * @enum {number} + * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value + * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value + * @property {number} IDEMPOTENT=2 IDEMPOTENT value + */ + MethodOptions.IdempotencyLevel = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "IDEMPOTENCY_UNKNOWN"] = 0; + values[valuesById[1] = "NO_SIDE_EFFECTS"] = 1; + values[valuesById[2] = "IDEMPOTENT"] = 2; + return values; + })(); + + return MethodOptions; + })(); + + protobuf.UninterpretedOption = (function() { + + /** + * Properties of an UninterpretedOption. + * @memberof google.protobuf + * @interface IUninterpretedOption + * @property {Array.|null} [name] UninterpretedOption name + * @property {string|null} [identifierValue] UninterpretedOption identifierValue + * @property {number|Long|null} [positiveIntValue] UninterpretedOption positiveIntValue + * @property {number|Long|null} [negativeIntValue] UninterpretedOption negativeIntValue + * @property {number|null} [doubleValue] UninterpretedOption doubleValue + * @property {Uint8Array|null} [stringValue] UninterpretedOption stringValue + * @property {string|null} [aggregateValue] UninterpretedOption aggregateValue + */ + + /** + * Constructs a new UninterpretedOption. + * @memberof google.protobuf + * @classdesc Represents an UninterpretedOption. + * @implements IUninterpretedOption + * @constructor + * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set + */ + function UninterpretedOption(properties) { + this.name = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UninterpretedOption name. + * @member {Array.} name + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.name = $util.emptyArray; + + /** + * UninterpretedOption identifierValue. + * @member {string} identifierValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.identifierValue = ""; + + /** + * UninterpretedOption positiveIntValue. + * @member {number|Long} positiveIntValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.positiveIntValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * UninterpretedOption negativeIntValue. + * @member {number|Long} negativeIntValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.negativeIntValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * UninterpretedOption doubleValue. + * @member {number} doubleValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.doubleValue = 0; + + /** + * UninterpretedOption stringValue. + * @member {Uint8Array} stringValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.stringValue = $util.newBuffer([]); + + /** + * UninterpretedOption aggregateValue. + * @member {string} aggregateValue + * @memberof google.protobuf.UninterpretedOption + * @instance + */ + UninterpretedOption.prototype.aggregateValue = ""; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @function create + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance + */ + UninterpretedOption.create = function create(properties) { + return new UninterpretedOption(properties); + }; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.name.length) + for (var i = 0; i < message.name.length; ++i) + $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); + if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) + writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue); + if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue); + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) + writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue); + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue); + if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue); + return writer; + }; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (!(message.name && message.name.length)) + message.name = []; + message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); + break; + case 3: + message.identifierValue = reader.string(); + break; + case 4: + message.positiveIntValue = reader.uint64(); + break; + case 5: + message.negativeIntValue = reader.int64(); + break; + case 6: + message.doubleValue = reader.double(); + break; + case 7: + message.stringValue = reader.bytes(); + break; + case 8: + message.aggregateValue = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an UninterpretedOption message. + * @function verify + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + UninterpretedOption.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) { + if (!Array.isArray(message.name)) + return "name: array expected"; + for (var i = 0; i < message.name.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]); + if (error) + return "name." + error; + } + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (!$util.isString(message.identifierValue)) + return "identifierValue: string expected"; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high))) + return "positiveIntValue: integer|Long expected"; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high))) + return "negativeIntValue: integer|Long expected"; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue))) + return "stringValue: buffer expected"; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (!$util.isString(message.aggregateValue)) + return "aggregateValue: string expected"; + return null; + }; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + UninterpretedOption.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption) + return object; + var message = new $root.google.protobuf.UninterpretedOption(); + if (object.name) { + if (!Array.isArray(object.name)) + throw TypeError(".google.protobuf.UninterpretedOption.name: array expected"); + message.name = []; + for (var i = 0; i < object.name.length; ++i) { + if (typeof object.name[i] !== "object") + throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); + message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]); + } + } + if (object.identifierValue != null) + message.identifierValue = String(object.identifierValue); + if (object.positiveIntValue != null) + if ($util.Long) + (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true; + else if (typeof object.positiveIntValue === "string") + message.positiveIntValue = parseInt(object.positiveIntValue, 10); + else if (typeof object.positiveIntValue === "number") + message.positiveIntValue = object.positiveIntValue; + else if (typeof object.positiveIntValue === "object") + message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true); + if (object.negativeIntValue != null) + if ($util.Long) + (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false; + else if (typeof object.negativeIntValue === "string") + message.negativeIntValue = parseInt(object.negativeIntValue, 10); + else if (typeof object.negativeIntValue === "number") + message.negativeIntValue = object.negativeIntValue; + else if (typeof object.negativeIntValue === "object") + message.negativeIntValue = new $util.LongBits(object.negativeIntValue.low >>> 0, object.negativeIntValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.stringValue != null) + if (typeof object.stringValue === "string") + $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0); + else if (object.stringValue.length) + message.stringValue = object.stringValue; + if (object.aggregateValue != null) + message.aggregateValue = String(object.aggregateValue); + return message; + }; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {google.protobuf.UninterpretedOption} message UninterpretedOption + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UninterpretedOption.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.name = []; + if (options.defaults) { + object.identifierValue = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.positiveIntValue = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.negativeIntValue = options.longs === String ? "0" : 0; + object.doubleValue = 0; + if (options.bytes === String) + object.stringValue = ""; + else { + object.stringValue = []; + if (options.bytes !== Array) + object.stringValue = $util.newBuffer(object.stringValue); + } + object.aggregateValue = ""; + } + if (message.name && message.name.length) { + object.name = []; + for (var j = 0; j < message.name.length; ++j) + object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options); + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + object.identifierValue = message.identifierValue; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (typeof message.positiveIntValue === "number") + object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue; + else + object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (typeof message.negativeIntValue === "number") + object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue; + else + object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + object.aggregateValue = message.aggregateValue; + return object; + }; + + /** + * Converts this UninterpretedOption to JSON. + * @function toJSON + * @memberof google.protobuf.UninterpretedOption + * @instance + * @returns {Object.} JSON object + */ + UninterpretedOption.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + UninterpretedOption.NamePart = (function() { + + /** + * Properties of a NamePart. + * @memberof google.protobuf.UninterpretedOption + * @interface INamePart + * @property {string} namePart NamePart namePart + * @property {boolean} isExtension NamePart isExtension + */ + + /** + * Constructs a new NamePart. + * @memberof google.protobuf.UninterpretedOption + * @classdesc Represents a NamePart. + * @implements INamePart + * @constructor + * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set + */ + function NamePart(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NamePart namePart. + * @member {string} namePart + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + */ + NamePart.prototype.namePart = ""; + + /** + * NamePart isExtension. + * @member {boolean} isExtension + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + */ + NamePart.prototype.isExtension = false; + + /** + * Creates a new NamePart instance using the specified properties. + * @function create + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance + */ + NamePart.create = function create(properties) { + return new NamePart(properties); + }; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @function encode + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart); + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension); + return writer; + }; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.namePart = reader.string(); + break; + case 2: + message.isExtension = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + if (!message.hasOwnProperty("namePart")) + throw $util.ProtocolError("missing required 'namePart'", { instance: message }); + if (!message.hasOwnProperty("isExtension")) + throw $util.ProtocolError("missing required 'isExtension'", { instance: message }); + return message; + }; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NamePart message. + * @function verify + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + NamePart.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (!$util.isString(message.namePart)) + return "namePart: string expected"; + if (typeof message.isExtension !== "boolean") + return "isExtension: boolean expected"; + return null; + }; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + NamePart.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) + return object; + var message = new $root.google.protobuf.UninterpretedOption.NamePart(); + if (object.namePart != null) + message.namePart = String(object.namePart); + if (object.isExtension != null) + message.isExtension = Boolean(object.isExtension); + return message; + }; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NamePart.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.namePart = ""; + object.isExtension = false; + } + if (message.namePart != null && message.hasOwnProperty("namePart")) + object.namePart = message.namePart; + if (message.isExtension != null && message.hasOwnProperty("isExtension")) + object.isExtension = message.isExtension; + return object; + }; + + /** + * Converts this NamePart to JSON. + * @function toJSON + * @memberof google.protobuf.UninterpretedOption.NamePart + * @instance + * @returns {Object.} JSON object + */ + NamePart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NamePart; + })(); + + return UninterpretedOption; + })(); + + protobuf.SourceCodeInfo = (function() { + + /** + * Properties of a SourceCodeInfo. + * @memberof google.protobuf + * @interface ISourceCodeInfo + * @property {Array.|null} [location] SourceCodeInfo location + */ + + /** + * Constructs a new SourceCodeInfo. + * @memberof google.protobuf + * @classdesc Represents a SourceCodeInfo. + * @implements ISourceCodeInfo + * @constructor + * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set + */ + function SourceCodeInfo(properties) { + this.location = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SourceCodeInfo location. + * @member {Array.} location + * @memberof google.protobuf.SourceCodeInfo + * @instance + */ + SourceCodeInfo.prototype.location = $util.emptyArray; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @function create + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance + */ + SourceCodeInfo.create = function create(properties) { + return new SourceCodeInfo(properties); + }; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @function encode + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.location != null && message.location.length) + for (var i = 0; i < message.location.length; ++i) + $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.location && message.location.length)) + message.location = []; + message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SourceCodeInfo message. + * @function verify + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SourceCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.location != null && message.hasOwnProperty("location")) { + if (!Array.isArray(message.location)) + return "location: array expected"; + for (var i = 0; i < message.location.length; ++i) { + var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]); + if (error) + return "location." + error; + } + } + return null; + }; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + SourceCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo) + return object; + var message = new $root.google.protobuf.SourceCodeInfo(); + if (object.location) { + if (!Array.isArray(object.location)) + throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected"); + message.location = []; + for (var i = 0; i < object.location.length; ++i) { + if (typeof object.location[i] !== "object") + throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); + message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SourceCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.location = []; + if (message.location && message.location.length) { + object.location = []; + for (var j = 0; j < message.location.length; ++j) + object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options); + } + return object; + }; + + /** + * Converts this SourceCodeInfo to JSON. + * @function toJSON + * @memberof google.protobuf.SourceCodeInfo + * @instance + * @returns {Object.} JSON object + */ + SourceCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + SourceCodeInfo.Location = (function() { + + /** + * Properties of a Location. + * @memberof google.protobuf.SourceCodeInfo + * @interface ILocation + * @property {Array.|null} [path] Location path + * @property {Array.|null} [span] Location span + * @property {string|null} [leadingComments] Location leadingComments + * @property {string|null} [trailingComments] Location trailingComments + * @property {Array.|null} [leadingDetachedComments] Location leadingDetachedComments + */ + + /** + * Constructs a new Location. + * @memberof google.protobuf.SourceCodeInfo + * @classdesc Represents a Location. + * @implements ILocation + * @constructor + * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set + */ + function Location(properties) { + this.path = []; + this.span = []; + this.leadingDetachedComments = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Location path. + * @member {Array.} path + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.path = $util.emptyArray; + + /** + * Location span. + * @member {Array.} span + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.span = $util.emptyArray; + + /** + * Location leadingComments. + * @member {string} leadingComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.leadingComments = ""; + + /** + * Location trailingComments. + * @member {string} trailingComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.trailingComments = ""; + + /** + * Location leadingDetachedComments. + * @member {Array.} leadingDetachedComments + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + */ + Location.prototype.leadingDetachedComments = $util.emptyArray; + + /** + * Creates a new Location instance using the specified properties. + * @function create + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo.Location} Location instance + */ + Location.create = function create(properties) { + return new Location(properties); + }; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @function encode + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.span != null && message.span.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.span.length; ++i) + writer.int32(message.span[i]); + writer.ldelim(); + } + if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments); + if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments); + if (message.leadingDetachedComments != null && message.leadingDetachedComments.length) + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.leadingDetachedComments[i]); + return writer; + }; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Location message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + if (!(message.span && message.span.length)) + message.span = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.span.push(reader.int32()); + } else + message.span.push(reader.int32()); + break; + case 3: + message.leadingComments = reader.string(); + break; + case 4: + message.trailingComments = reader.string(); + break; + case 6: + if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) + message.leadingDetachedComments = []; + message.leadingDetachedComments.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Location message. + * @function verify + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Location.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; + } + if (message.span != null && message.hasOwnProperty("span")) { + if (!Array.isArray(message.span)) + return "span: array expected"; + for (var i = 0; i < message.span.length; ++i) + if (!$util.isInteger(message.span[i])) + return "span: integer[] expected"; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (!$util.isString(message.leadingComments)) + return "leadingComments: string expected"; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (!$util.isString(message.trailingComments)) + return "trailingComments: string expected"; + if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) { + if (!Array.isArray(message.leadingDetachedComments)) + return "leadingDetachedComments: array expected"; + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + if (!$util.isString(message.leadingDetachedComments[i])) + return "leadingDetachedComments: string[] expected"; + } + return null; + }; - /** - * Verifies a FileOptions message. - * @function verify - * @memberof google.protobuf.FileOptions - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - FileOptions.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) - if (!$util.isString(message.javaPackage)) - return "javaPackage: string expected"; - if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) - if (!$util.isString(message.javaOuterClassname)) - return "javaOuterClassname: string expected"; - if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) - if (typeof message.javaMultipleFiles !== "boolean") - return "javaMultipleFiles: boolean expected"; - if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) - if (typeof message.javaGenerateEqualsAndHash !== "boolean") - return "javaGenerateEqualsAndHash: boolean expected"; - if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) - if (typeof message.javaStringCheckUtf8 !== "boolean") - return "javaStringCheckUtf8: boolean expected"; - if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) - switch (message.optimizeFor) { - default: - return "optimizeFor: enum value expected"; - case 1: - case 2: - case 3: - break; + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + Location.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) + return object; + var message = new $root.google.protobuf.SourceCodeInfo.Location(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; } - if (message.goPackage != null && message.hasOwnProperty("goPackage")) - if (!$util.isString(message.goPackage)) - return "goPackage: string expected"; - if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) - if (typeof message.ccGenericServices !== "boolean") - return "ccGenericServices: boolean expected"; - if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) - if (typeof message.javaGenericServices !== "boolean") - return "javaGenericServices: boolean expected"; - if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) - if (typeof message.pyGenericServices !== "boolean") - return "pyGenericServices: boolean expected"; - if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) - if (typeof message.phpGenericServices !== "boolean") - return "phpGenericServices: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) - if (typeof message.ccEnableArenas !== "boolean") - return "ccEnableArenas: boolean expected"; - if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) - if (!$util.isString(message.objcClassPrefix)) - return "objcClassPrefix: string expected"; - if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) - if (!$util.isString(message.csharpNamespace)) - return "csharpNamespace: string expected"; - if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) - if (!$util.isString(message.swiftPrefix)) - return "swiftPrefix: string expected"; - if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) - if (!$util.isString(message.phpClassPrefix)) - return "phpClassPrefix: string expected"; - if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) - if (!$util.isString(message.phpNamespace)) - return "phpNamespace: string expected"; - if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) - if (!$util.isString(message.phpMetadataNamespace)) - return "phpMetadataNamespace: string expected"; - if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) - if (!$util.isString(message.rubyPackage)) - return "rubyPackage: string expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; + if (object.span) { + if (!Array.isArray(object.span)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.span: array expected"); + message.span = []; + for (var i = 0; i < object.span.length; ++i) + message.span[i] = object.span[i] | 0; } - } - return null; - }; + if (object.leadingComments != null) + message.leadingComments = String(object.leadingComments); + if (object.trailingComments != null) + message.trailingComments = String(object.trailingComments); + if (object.leadingDetachedComments) { + if (!Array.isArray(object.leadingDetachedComments)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected"); + message.leadingDetachedComments = []; + for (var i = 0; i < object.leadingDetachedComments.length; ++i) + message.leadingDetachedComments[i] = String(object.leadingDetachedComments[i]); + } + return message; + }; - /** - * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.FileOptions - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.FileOptions} FileOptions - */ - FileOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FileOptions) - return object; - var message = new $root.google.protobuf.FileOptions(); - if (object.javaPackage != null) - message.javaPackage = String(object.javaPackage); - if (object.javaOuterClassname != null) - message.javaOuterClassname = String(object.javaOuterClassname); - if (object.javaMultipleFiles != null) - message.javaMultipleFiles = Boolean(object.javaMultipleFiles); - if (object.javaGenerateEqualsAndHash != null) - message.javaGenerateEqualsAndHash = Boolean(object.javaGenerateEqualsAndHash); - if (object.javaStringCheckUtf8 != null) - message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8); - switch (object.optimizeFor) { - case "SPEED": - case 1: - message.optimizeFor = 1; - break; - case "CODE_SIZE": - case 2: - message.optimizeFor = 2; - break; - case "LITE_RUNTIME": - case 3: - message.optimizeFor = 3; - break; - } - if (object.goPackage != null) - message.goPackage = String(object.goPackage); - if (object.ccGenericServices != null) - message.ccGenericServices = Boolean(object.ccGenericServices); - if (object.javaGenericServices != null) - message.javaGenericServices = Boolean(object.javaGenericServices); - if (object.pyGenericServices != null) - message.pyGenericServices = Boolean(object.pyGenericServices); - if (object.phpGenericServices != null) - message.phpGenericServices = Boolean(object.phpGenericServices); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.ccEnableArenas != null) - message.ccEnableArenas = Boolean(object.ccEnableArenas); - if (object.objcClassPrefix != null) - message.objcClassPrefix = String(object.objcClassPrefix); - if (object.csharpNamespace != null) - message.csharpNamespace = String(object.csharpNamespace); - if (object.swiftPrefix != null) - message.swiftPrefix = String(object.swiftPrefix); - if (object.phpClassPrefix != null) - message.phpClassPrefix = String(object.phpClassPrefix); - if (object.phpNamespace != null) - message.phpNamespace = String(object.phpNamespace); - if (object.phpMetadataNamespace != null) - message.phpMetadataNamespace = String(object.phpMetadataNamespace); - if (object.rubyPackage != null) - message.rubyPackage = String(object.rubyPackage); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {google.protobuf.SourceCodeInfo.Location} message Location + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Location.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.path = []; + object.span = []; + object.leadingDetachedComments = []; } - } - return message; - }; - - /** - * Creates a plain object from a FileOptions message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.FileOptions - * @static - * @param {google.protobuf.FileOptions} message FileOptions - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - FileOptions.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (options.defaults) { - object.javaPackage = ""; - object.javaOuterClassname = ""; - object.optimizeFor = options.enums === String ? "SPEED" : 1; - object.javaMultipleFiles = false; - object.goPackage = ""; - object.ccGenericServices = false; - object.javaGenericServices = false; - object.pyGenericServices = false; - object.javaGenerateEqualsAndHash = false; - object.deprecated = false; - object.javaStringCheckUtf8 = false; - object.ccEnableArenas = true; - object.objcClassPrefix = ""; - object.csharpNamespace = ""; - object.swiftPrefix = ""; - object.phpClassPrefix = ""; - object.phpNamespace = ""; - object.phpGenericServices = false; - object.phpMetadataNamespace = ""; - object.rubyPackage = ""; - } - if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) - object.javaPackage = message.javaPackage; - if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) - object.javaOuterClassname = message.javaOuterClassname; - if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) - object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; - if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) - object.javaMultipleFiles = message.javaMultipleFiles; - if (message.goPackage != null && message.hasOwnProperty("goPackage")) - object.goPackage = message.goPackage; - if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) - object.ccGenericServices = message.ccGenericServices; - if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) - object.javaGenericServices = message.javaGenericServices; - if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) - object.pyGenericServices = message.pyGenericServices; - if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) - object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) - object.javaStringCheckUtf8 = message.javaStringCheckUtf8; - if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) - object.ccEnableArenas = message.ccEnableArenas; - if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) - object.objcClassPrefix = message.objcClassPrefix; - if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) - object.csharpNamespace = message.csharpNamespace; - if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) - object.swiftPrefix = message.swiftPrefix; - if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) - object.phpClassPrefix = message.phpClassPrefix; - if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) - object.phpNamespace = message.phpNamespace; - if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) - object.phpGenericServices = message.phpGenericServices; - if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) - object.phpMetadataNamespace = message.phpMetadataNamespace; - if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) - object.rubyPackage = message.rubyPackage; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); - } - return object; - }; + if (options.defaults) { + object.leadingComments = ""; + object.trailingComments = ""; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.span && message.span.length) { + object.span = []; + for (var j = 0; j < message.span.length; ++j) + object.span[j] = message.span[j]; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + object.leadingComments = message.leadingComments; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + object.trailingComments = message.trailingComments; + if (message.leadingDetachedComments && message.leadingDetachedComments.length) { + object.leadingDetachedComments = []; + for (var j = 0; j < message.leadingDetachedComments.length; ++j) + object.leadingDetachedComments[j] = message.leadingDetachedComments[j]; + } + return object; + }; - /** - * Converts this FileOptions to JSON. - * @function toJSON - * @memberof google.protobuf.FileOptions - * @instance - * @returns {Object.} JSON object - */ - FileOptions.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this Location to JSON. + * @function toJSON + * @memberof google.protobuf.SourceCodeInfo.Location + * @instance + * @returns {Object.} JSON object + */ + Location.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * OptimizeMode enum. - * @name google.protobuf.FileOptions.OptimizeMode - * @enum {number} - * @property {number} SPEED=1 SPEED value - * @property {number} CODE_SIZE=2 CODE_SIZE value - * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value - */ - FileOptions.OptimizeMode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[1] = "SPEED"] = 1; - values[valuesById[2] = "CODE_SIZE"] = 2; - values[valuesById[3] = "LITE_RUNTIME"] = 3; - return values; + return Location; })(); - return FileOptions; + return SourceCodeInfo; })(); - protobuf.MessageOptions = (function() { + protobuf.GeneratedCodeInfo = (function() { /** - * Properties of a MessageOptions. + * Properties of a GeneratedCodeInfo. * @memberof google.protobuf - * @interface IMessageOptions - * @property {boolean|null} [messageSetWireFormat] MessageOptions messageSetWireFormat - * @property {boolean|null} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor - * @property {boolean|null} [deprecated] MessageOptions deprecated - * @property {boolean|null} [mapEntry] MessageOptions mapEntry - * @property {Array.|null} [uninterpretedOption] MessageOptions uninterpretedOption + * @interface IGeneratedCodeInfo + * @property {Array.|null} [annotation] GeneratedCodeInfo annotation */ /** - * Constructs a new MessageOptions. + * Constructs a new GeneratedCodeInfo. * @memberof google.protobuf - * @classdesc Represents a MessageOptions. - * @implements IMessageOptions + * @classdesc Represents a GeneratedCodeInfo. + * @implements IGeneratedCodeInfo * @constructor - * @param {google.protobuf.IMessageOptions=} [properties] Properties to set + * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set */ - function MessageOptions(properties) { - this.uninterpretedOption = []; + function GeneratedCodeInfo(properties) { + this.annotation = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16044,301 +23339,486 @@ } /** - * MessageOptions messageSetWireFormat. - * @member {boolean} messageSetWireFormat - * @memberof google.protobuf.MessageOptions - * @instance - */ - MessageOptions.prototype.messageSetWireFormat = false; - - /** - * MessageOptions noStandardDescriptorAccessor. - * @member {boolean} noStandardDescriptorAccessor - * @memberof google.protobuf.MessageOptions - * @instance - */ - MessageOptions.prototype.noStandardDescriptorAccessor = false; - - /** - * MessageOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.MessageOptions - * @instance - */ - MessageOptions.prototype.deprecated = false; - - /** - * MessageOptions mapEntry. - * @member {boolean} mapEntry - * @memberof google.protobuf.MessageOptions - * @instance - */ - MessageOptions.prototype.mapEntry = false; - - /** - * MessageOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.MessageOptions + * GeneratedCodeInfo annotation. + * @member {Array.} annotation + * @memberof google.protobuf.GeneratedCodeInfo * @instance */ - MessageOptions.prototype.uninterpretedOption = $util.emptyArray; + GeneratedCodeInfo.prototype.annotation = $util.emptyArray; /** - * Creates a new MessageOptions instance using the specified properties. + * Creates a new GeneratedCodeInfo instance using the specified properties. * @function create - * @memberof google.protobuf.MessageOptions + * @memberof google.protobuf.GeneratedCodeInfo * @static - * @param {google.protobuf.IMessageOptions=} [properties] Properties to set - * @returns {google.protobuf.MessageOptions} MessageOptions instance + * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance */ - MessageOptions.create = function create(properties) { - return new MessageOptions(properties); + GeneratedCodeInfo.create = function create(properties) { + return new GeneratedCodeInfo(properties); }; /** - * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. * @function encode - * @memberof google.protobuf.MessageOptions + * @memberof google.protobuf.GeneratedCodeInfo * @static - * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageOptions.encode = function encode(message, writer) { + GeneratedCodeInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); - if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); - if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) - writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message.annotation != null && message.annotation.length) + for (var i = 0; i < message.annotation.length; ++i) + $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.MessageOptions + * @memberof google.protobuf.GeneratedCodeInfo * @static - * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode + * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageOptions.encodeDelimited = function encodeDelimited(message, writer) { + GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a MessageOptions message from the specified reader or buffer. + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.MessageOptions + * @memberof google.protobuf.GeneratedCodeInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.MessageOptions} MessageOptions + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MessageOptions.decode = function decode(reader, length) { + GeneratedCodeInfo.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.messageSetWireFormat = reader.bool(); - break; - case 2: - message.noStandardDescriptorAccessor = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 7: - message.mapEntry = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + if (!(message.annotation && message.annotation.length)) + message.annotation = []; + message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } - } - return message; - }; + } + return message; + }; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GeneratedCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GeneratedCodeInfo message. + * @function verify + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GeneratedCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.annotation != null && message.hasOwnProperty("annotation")) { + if (!Array.isArray(message.annotation)) + return "annotation: array expected"; + for (var i = 0; i < message.annotation.length; ++i) { + var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]); + if (error) + return "annotation." + error; + } + } + return null; + }; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + GeneratedCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo(); + if (object.annotation) { + if (!Array.isArray(object.annotation)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected"); + message.annotation = []; + for (var i = 0; i < object.annotation.length; ++i) { + if (typeof object.annotation[i] !== "object") + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); + message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GeneratedCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.annotation = []; + if (message.annotation && message.annotation.length) { + object.annotation = []; + for (var j = 0; j < message.annotation.length; ++j) + object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options); + } + return object; + }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @function toJSON + * @memberof google.protobuf.GeneratedCodeInfo + * @instance + * @returns {Object.} JSON object + */ + GeneratedCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + GeneratedCodeInfo.Annotation = (function() { + + /** + * Properties of an Annotation. + * @memberof google.protobuf.GeneratedCodeInfo + * @interface IAnnotation + * @property {Array.|null} [path] Annotation path + * @property {string|null} [sourceFile] Annotation sourceFile + * @property {number|null} [begin] Annotation begin + * @property {number|null} [end] Annotation end + */ + + /** + * Constructs a new Annotation. + * @memberof google.protobuf.GeneratedCodeInfo + * @classdesc Represents an Annotation. + * @implements IAnnotation + * @constructor + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set + */ + function Annotation(properties) { + this.path = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Annotation path. + * @member {Array.} path + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.path = $util.emptyArray; + + /** + * Annotation sourceFile. + * @member {string} sourceFile + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.sourceFile = ""; + + /** + * Annotation begin. + * @member {number} begin + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.begin = 0; + + /** + * Annotation end. + * @member {number} end + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.end = 0; + + /** + * Creates a new Annotation instance using the specified properties. + * @function create + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance + */ + Annotation.create = function create(properties) { + return new Annotation(properties); + }; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @function encode + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile); + if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); + if (message.end != null && Object.hasOwnProperty.call(message, "end")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); + return writer; + }; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + message.sourceFile = reader.string(); + break; + case 3: + message.begin = reader.int32(); + break; + case 4: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Decodes a MessageOptions message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.MessageOptions - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.MessageOptions} MessageOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - MessageOptions.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a MessageOptions message. - * @function verify - * @memberof google.protobuf.MessageOptions - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - MessageOptions.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) - if (typeof message.messageSetWireFormat !== "boolean") - return "messageSetWireFormat: boolean expected"; - if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) - if (typeof message.noStandardDescriptorAccessor !== "boolean") - return "noStandardDescriptorAccessor: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) - if (typeof message.mapEntry !== "boolean") - return "mapEntry: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; + /** + * Verifies an Annotation message. + * @function verify + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Annotation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; } - } - return null; - }; + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (!$util.isString(message.sourceFile)) + return "sourceFile: string expected"; + if (message.begin != null && message.hasOwnProperty("begin")) + if (!$util.isInteger(message.begin)) + return "begin: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; - /** - * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.MessageOptions - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.MessageOptions} MessageOptions - */ - MessageOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.MessageOptions) - return object; - var message = new $root.google.protobuf.MessageOptions(); - if (object.messageSetWireFormat != null) - message.messageSetWireFormat = Boolean(object.messageSetWireFormat); - if (object.noStandardDescriptorAccessor != null) - message.noStandardDescriptorAccessor = Boolean(object.noStandardDescriptorAccessor); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.mapEntry != null) - message.mapEntry = Boolean(object.mapEntry); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + Annotation.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; } - } - return message; - }; + if (object.sourceFile != null) + message.sourceFile = String(object.sourceFile); + if (object.begin != null) + message.begin = object.begin | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; - /** - * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.MessageOptions - * @static - * @param {google.protobuf.MessageOptions} message MessageOptions - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - MessageOptions.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (options.defaults) { - object.messageSetWireFormat = false; - object.noStandardDescriptorAccessor = false; - object.deprecated = false; - object.mapEntry = false; - } - if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) - object.messageSetWireFormat = message.messageSetWireFormat; - if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) - object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) - object.mapEntry = message.mapEntry; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); - } - return object; - }; + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Annotation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) { + object.sourceFile = ""; + object.begin = 0; + object.end = 0; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + object.sourceFile = message.sourceFile; + if (message.begin != null && message.hasOwnProperty("begin")) + object.begin = message.begin; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; - /** - * Converts this MessageOptions to JSON. - * @function toJSON - * @memberof google.protobuf.MessageOptions - * @instance - * @returns {Object.} JSON object - */ - MessageOptions.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this Annotation to JSON. + * @function toJSON + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + * @returns {Object.} JSON object + */ + Annotation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return MessageOptions; + return Annotation; + })(); + + return GeneratedCodeInfo; })(); - protobuf.FieldOptions = (function() { + protobuf.Any = (function() { /** - * Properties of a FieldOptions. + * Properties of an Any. * @memberof google.protobuf - * @interface IFieldOptions - * @property {google.protobuf.FieldOptions.CType|null} [ctype] FieldOptions ctype - * @property {boolean|null} [packed] FieldOptions packed - * @property {google.protobuf.FieldOptions.JSType|null} [jstype] FieldOptions jstype - * @property {boolean|null} [lazy] FieldOptions lazy - * @property {boolean|null} [deprecated] FieldOptions deprecated - * @property {boolean|null} [weak] FieldOptions weak - * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption - * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior + * @interface IAny + * @property {string|null} [type_url] Any type_url + * @property {Uint8Array|null} [value] Any value */ /** - * Constructs a new FieldOptions. + * Constructs a new Any. * @memberof google.protobuf - * @classdesc Represents a FieldOptions. - * @implements IFieldOptions + * @classdesc Represents an Any. + * @implements IAny * @constructor - * @param {google.protobuf.IFieldOptions=} [properties] Properties to set + * @param {google.protobuf.IAny=} [properties] Properties to set */ - function FieldOptions(properties) { - this.uninterpretedOption = []; - this[".google.api.fieldBehavior"] = []; + function Any(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16346,483 +23826,218 @@ } /** - * FieldOptions ctype. - * @member {google.protobuf.FieldOptions.CType} ctype - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.ctype = 0; - - /** - * FieldOptions packed. - * @member {boolean} packed - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.packed = false; - - /** - * FieldOptions jstype. - * @member {google.protobuf.FieldOptions.JSType} jstype - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.jstype = 0; - - /** - * FieldOptions lazy. - * @member {boolean} lazy - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.lazy = false; - - /** - * FieldOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.deprecated = false; - - /** - * FieldOptions weak. - * @member {boolean} weak - * @memberof google.protobuf.FieldOptions - * @instance - */ - FieldOptions.prototype.weak = false; - - /** - * FieldOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.FieldOptions + * Any type_url. + * @member {string} type_url + * @memberof google.protobuf.Any * @instance */ - FieldOptions.prototype.uninterpretedOption = $util.emptyArray; + Any.prototype.type_url = ""; /** - * FieldOptions .google.api.fieldBehavior. - * @member {Array.} .google.api.fieldBehavior - * @memberof google.protobuf.FieldOptions + * Any value. + * @member {Uint8Array} value + * @memberof google.protobuf.Any * @instance */ - FieldOptions.prototype[".google.api.fieldBehavior"] = $util.emptyArray; + Any.prototype.value = $util.newBuffer([]); /** - * Creates a new FieldOptions instance using the specified properties. + * Creates a new Any instance using the specified properties. * @function create - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static - * @param {google.protobuf.IFieldOptions=} [properties] Properties to set - * @returns {google.protobuf.FieldOptions} FieldOptions instance + * @param {google.protobuf.IAny=} [properties] Properties to set + * @returns {google.protobuf.Any} Any instance */ - FieldOptions.create = function create(properties) { - return new FieldOptions(properties); + Any.create = function create(properties) { + return new Any(properties); }; /** - * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. * @function encode - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static - * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {google.protobuf.IAny} message Any message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldOptions.encode = function encode(message, writer) { + Any.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype); - if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); - if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy); - if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype); - if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) - writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) { - writer.uint32(/* id 1052, wireType 2 =*/8418).fork(); - for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) - writer.int32(message[".google.api.fieldBehavior"][i]); - writer.ldelim(); - } + if (message.type_url != null && Object.hasOwnProperty.call(message, "type_url")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.type_url); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); return writer; }; /** - * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static - * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode + * @param {google.protobuf.IAny} message Any message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldOptions.encodeDelimited = function encodeDelimited(message, writer) { + Any.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a FieldOptions message from the specified reader or buffer. + * Decodes an Any message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FieldOptions} FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FieldOptions.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.ctype = reader.int32(); - break; - case 2: - message.packed = reader.bool(); - break; - case 6: - message.jstype = reader.int32(); - break; - case 5: - message.lazy = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 10: - message.weak = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - case 1052: - if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length)) - message[".google.api.fieldBehavior"] = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message[".google.api.fieldBehavior"].push(reader.int32()); - } else - message[".google.api.fieldBehavior"].push(reader.int32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a FieldOptions message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.FieldOptions - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FieldOptions} FieldOptions - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - FieldOptions.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a FieldOptions message. - * @function verify - * @memberof google.protobuf.FieldOptions - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - FieldOptions.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ctype != null && message.hasOwnProperty("ctype")) - switch (message.ctype) { - default: - return "ctype: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.packed != null && message.hasOwnProperty("packed")) - if (typeof message.packed !== "boolean") - return "packed: boolean expected"; - if (message.jstype != null && message.hasOwnProperty("jstype")) - switch (message.jstype) { - default: - return "jstype: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.lazy != null && message.hasOwnProperty("lazy")) - if (typeof message.lazy !== "boolean") - return "lazy: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.weak != null && message.hasOwnProperty("weak")) - if (typeof message.weak !== "boolean") - return "weak: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; + * @returns {google.protobuf.Any} Any + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Any.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.type_url = reader.string(); + break; + case 2: + message.value = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; } } - if (message[".google.api.fieldBehavior"] != null && message.hasOwnProperty(".google.api.fieldBehavior")) { - if (!Array.isArray(message[".google.api.fieldBehavior"])) - return ".google.api.fieldBehavior: array expected"; - for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) - switch (message[".google.api.fieldBehavior"][i]) { - default: - return ".google.api.fieldBehavior: enum value[] expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - break; - } - } + return message; + }; + + /** + * Decodes an Any message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Any + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Any} Any + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Any.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Any message. + * @function verify + * @memberof google.protobuf.Any + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Any.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.type_url != null && message.hasOwnProperty("type_url")) + if (!$util.isString(message.type_url)) + return "type_url: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; return null; }; /** - * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * Creates an Any message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static * @param {Object.} object Plain object - * @returns {google.protobuf.FieldOptions} FieldOptions + * @returns {google.protobuf.Any} Any */ - FieldOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FieldOptions) + Any.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Any) return object; - var message = new $root.google.protobuf.FieldOptions(); - switch (object.ctype) { - case "STRING": - case 0: - message.ctype = 0; - break; - case "CORD": - case 1: - message.ctype = 1; - break; - case "STRING_PIECE": - case 2: - message.ctype = 2; - break; - } - if (object.packed != null) - message.packed = Boolean(object.packed); - switch (object.jstype) { - case "JS_NORMAL": - case 0: - message.jstype = 0; - break; - case "JS_STRING": - case 1: - message.jstype = 1; - break; - case "JS_NUMBER": - case 2: - message.jstype = 2; - break; - } - if (object.lazy != null) - message.lazy = Boolean(object.lazy); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.weak != null) - message.weak = Boolean(object.weak); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); - } - } - if (object[".google.api.fieldBehavior"]) { - if (!Array.isArray(object[".google.api.fieldBehavior"])) - throw TypeError(".google.protobuf.FieldOptions..google.api.fieldBehavior: array expected"); - message[".google.api.fieldBehavior"] = []; - for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i) - switch (object[".google.api.fieldBehavior"][i]) { - default: - case "FIELD_BEHAVIOR_UNSPECIFIED": - case 0: - message[".google.api.fieldBehavior"][i] = 0; - break; - case "OPTIONAL": - case 1: - message[".google.api.fieldBehavior"][i] = 1; - break; - case "REQUIRED": - case 2: - message[".google.api.fieldBehavior"][i] = 2; - break; - case "OUTPUT_ONLY": - case 3: - message[".google.api.fieldBehavior"][i] = 3; - break; - case "INPUT_ONLY": - case 4: - message[".google.api.fieldBehavior"][i] = 4; - break; - case "IMMUTABLE": - case 5: - message[".google.api.fieldBehavior"][i] = 5; - break; - } - } + var message = new $root.google.protobuf.Any(); + if (object.type_url != null) + message.type_url = String(object.type_url); + if (object.value != null) + if (typeof object.value === "string") + $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); + else if (object.value.length) + message.value = object.value; return message; }; /** - * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * Creates a plain object from an Any message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @static - * @param {google.protobuf.FieldOptions} message FieldOptions + * @param {google.protobuf.Any} message Any * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FieldOptions.toObject = function toObject(message, options) { + Any.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) { - object.uninterpretedOption = []; - object[".google.api.fieldBehavior"] = []; - } if (options.defaults) { - object.ctype = options.enums === String ? "STRING" : 0; - object.packed = false; - object.deprecated = false; - object.lazy = false; - object.jstype = options.enums === String ? "JS_NORMAL" : 0; - object.weak = false; - } - if (message.ctype != null && message.hasOwnProperty("ctype")) - object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; - if (message.packed != null && message.hasOwnProperty("packed")) - object.packed = message.packed; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.lazy != null && message.hasOwnProperty("lazy")) - object.lazy = message.lazy; - if (message.jstype != null && message.hasOwnProperty("jstype")) - object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; - if (message.weak != null && message.hasOwnProperty("weak")) - object.weak = message.weak; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); - } - if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) { - object[".google.api.fieldBehavior"] = []; - for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j) - object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; + object.type_url = ""; + if (options.bytes === String) + object.value = ""; + else { + object.value = []; + if (options.bytes !== Array) + object.value = $util.newBuffer(object.value); + } } + if (message.type_url != null && message.hasOwnProperty("type_url")) + object.type_url = message.type_url; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; return object; }; /** - * Converts this FieldOptions to JSON. + * Converts this Any to JSON. * @function toJSON - * @memberof google.protobuf.FieldOptions + * @memberof google.protobuf.Any * @instance * @returns {Object.} JSON object */ - FieldOptions.prototype.toJSON = function toJSON() { + Any.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * CType enum. - * @name google.protobuf.FieldOptions.CType - * @enum {number} - * @property {number} STRING=0 STRING value - * @property {number} CORD=1 CORD value - * @property {number} STRING_PIECE=2 STRING_PIECE value - */ - FieldOptions.CType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "STRING"] = 0; - values[valuesById[1] = "CORD"] = 1; - values[valuesById[2] = "STRING_PIECE"] = 2; - return values; - })(); - - /** - * JSType enum. - * @name google.protobuf.FieldOptions.JSType - * @enum {number} - * @property {number} JS_NORMAL=0 JS_NORMAL value - * @property {number} JS_STRING=1 JS_STRING value - * @property {number} JS_NUMBER=2 JS_NUMBER value - */ - FieldOptions.JSType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "JS_NORMAL"] = 0; - values[valuesById[1] = "JS_STRING"] = 1; - values[valuesById[2] = "JS_NUMBER"] = 2; - return values; - })(); - - return FieldOptions; + return Any; })(); - protobuf.OneofOptions = (function() { + protobuf.Duration = (function() { /** - * Properties of an OneofOptions. + * Properties of a Duration. * @memberof google.protobuf - * @interface IOneofOptions - * @property {Array.|null} [uninterpretedOption] OneofOptions uninterpretedOption + * @interface IDuration + * @property {number|Long|null} [seconds] Duration seconds + * @property {number|null} [nanos] Duration nanos */ /** - * Constructs a new OneofOptions. + * Constructs a new Duration. * @memberof google.protobuf - * @classdesc Represents an OneofOptions. - * @implements IOneofOptions + * @classdesc Represents a Duration. + * @implements IDuration * @constructor - * @param {google.protobuf.IOneofOptions=} [properties] Properties to set + * @param {google.protobuf.IDuration=} [properties] Properties to set */ - function OneofOptions(properties) { - this.uninterpretedOption = []; + function Duration(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16830,78 +24045,88 @@ } /** - * OneofOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.OneofOptions + * Duration seconds. + * @member {number|Long} seconds + * @memberof google.protobuf.Duration * @instance */ - OneofOptions.prototype.uninterpretedOption = $util.emptyArray; + Duration.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * Creates a new OneofOptions instance using the specified properties. + * Duration nanos. + * @member {number} nanos + * @memberof google.protobuf.Duration + * @instance + */ + Duration.prototype.nanos = 0; + + /** + * Creates a new Duration instance using the specified properties. * @function create - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static - * @param {google.protobuf.IOneofOptions=} [properties] Properties to set - * @returns {google.protobuf.OneofOptions} OneofOptions instance + * @param {google.protobuf.IDuration=} [properties] Properties to set + * @returns {google.protobuf.Duration} Duration instance */ - OneofOptions.create = function create(properties) { - return new OneofOptions(properties); + Duration.create = function create(properties) { + return new Duration(properties); }; /** - * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. * @function encode - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static - * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {google.protobuf.IDuration} message Duration message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofOptions.encode = function encode(message, writer) { + Duration.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); return writer; }; /** - * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static - * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode + * @param {google.protobuf.IDuration} message Duration message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofOptions.encodeDelimited = function encodeDelimited(message, writer) { + Duration.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an OneofOptions message from the specified reader or buffer. + * Decodes a Duration message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.OneofOptions} OneofOptions + * @returns {google.protobuf.Duration} Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OneofOptions.decode = function decode(reader, length) { + Duration.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + case 1: + message.seconds = reader.int64(); + break; + case 2: + message.nanos = reader.int32(); break; default: reader.skipType(tag & 7); @@ -16912,127 +24137,129 @@ }; /** - * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * Decodes a Duration message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.OneofOptions} OneofOptions + * @returns {google.protobuf.Duration} Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OneofOptions.decodeDelimited = function decodeDelimited(reader) { + Duration.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an OneofOptions message. + * Verifies a Duration message. * @function verify - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - OneofOptions.verify = function verify(message) { + Duration.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; - } - } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; return null; }; /** - * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Duration message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static * @param {Object.} object Plain object - * @returns {google.protobuf.OneofOptions} OneofOptions + * @returns {google.protobuf.Duration} Duration */ - OneofOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.OneofOptions) + Duration.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Duration) return object; - var message = new $root.google.protobuf.OneofOptions(); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); - } - } + var message = new $root.google.protobuf.Duration(); + if (object.seconds != null) + if ($util.Long) + (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + else if (typeof object.seconds === "string") + message.seconds = parseInt(object.seconds, 10); + else if (typeof object.seconds === "number") + message.seconds = object.seconds; + else if (typeof object.seconds === "object") + message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); + if (object.nanos != null) + message.nanos = object.nanos | 0; return message; }; /** - * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * Creates a plain object from a Duration message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @static - * @param {google.protobuf.OneofOptions} message OneofOptions + * @param {google.protobuf.Duration} message Duration * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - OneofOptions.toObject = function toObject(message, options) { + Duration.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.seconds = options.longs === String ? "0" : 0; + object.nanos = 0; } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (typeof message.seconds === "number") + object.seconds = options.longs === String ? String(message.seconds) : message.seconds; + else + object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; + if (message.nanos != null && message.hasOwnProperty("nanos")) + object.nanos = message.nanos; return object; }; /** - * Converts this OneofOptions to JSON. + * Converts this Duration to JSON. * @function toJSON - * @memberof google.protobuf.OneofOptions + * @memberof google.protobuf.Duration * @instance * @returns {Object.} JSON object */ - OneofOptions.prototype.toJSON = function toJSON() { + Duration.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return OneofOptions; + return Duration; })(); - protobuf.EnumOptions = (function() { + protobuf.Empty = (function() { /** - * Properties of an EnumOptions. + * Properties of an Empty. * @memberof google.protobuf - * @interface IEnumOptions - * @property {boolean|null} [allowAlias] EnumOptions allowAlias - * @property {boolean|null} [deprecated] EnumOptions deprecated - * @property {Array.|null} [uninterpretedOption] EnumOptions uninterpretedOption + * @interface IEmpty */ /** - * Constructs a new EnumOptions. + * Constructs a new Empty. * @memberof google.protobuf - * @classdesc Represents an EnumOptions. - * @implements IEnumOptions + * @classdesc Represents an Empty. + * @implements IEmpty * @constructor - * @param {google.protobuf.IEnumOptions=} [properties] Properties to set + * @param {google.protobuf.IEmpty=} [properties] Properties to set */ - function EnumOptions(properties) { - this.uninterpretedOption = []; + function Empty(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -17040,105 +24267,63 @@ } /** - * EnumOptions allowAlias. - * @member {boolean} allowAlias - * @memberof google.protobuf.EnumOptions - * @instance - */ - EnumOptions.prototype.allowAlias = false; - - /** - * EnumOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.EnumOptions - * @instance - */ - EnumOptions.prototype.deprecated = false; - - /** - * EnumOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.EnumOptions - * @instance - */ - EnumOptions.prototype.uninterpretedOption = $util.emptyArray; - - /** - * Creates a new EnumOptions instance using the specified properties. + * Creates a new Empty instance using the specified properties. * @function create - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static - * @param {google.protobuf.IEnumOptions=} [properties] Properties to set - * @returns {google.protobuf.EnumOptions} EnumOptions instance + * @param {google.protobuf.IEmpty=} [properties] Properties to set + * @returns {google.protobuf.Empty} Empty instance */ - EnumOptions.create = function create(properties) { - return new EnumOptions(properties); + Empty.create = function create(properties) { + return new Empty(properties); }; /** - * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * Encodes the specified Empty message. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages. * @function encode - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static - * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {google.protobuf.IEmpty} message Empty message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumOptions.encode = function encode(message, writer) { + Empty.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); return writer; }; /** - * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * Encodes the specified Empty message, length delimited. Does not implicitly {@link google.protobuf.Empty.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static - * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode + * @param {google.protobuf.IEmpty} message Empty message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumOptions.encodeDelimited = function encodeDelimited(message, writer) { + Empty.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an EnumOptions message from the specified reader or buffer. + * Decodes an Empty message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.EnumOptions} EnumOptions + * @returns {google.protobuf.Empty} Empty * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumOptions.decode = function decode(reader, length) { + Empty.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.allowAlias = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; default: reader.skipType(tag & 7); break; @@ -17148,144 +24333,95 @@ }; /** - * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * Decodes an Empty message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.EnumOptions} EnumOptions + * @returns {google.protobuf.Empty} Empty * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumOptions.decodeDelimited = function decodeDelimited(reader) { + Empty.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an EnumOptions message. + * Verifies an Empty message. * @function verify - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumOptions.verify = function verify(message) { + Empty.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) - if (typeof message.allowAlias !== "boolean") - return "allowAlias: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; - } - } return null; }; /** - * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * Creates an Empty message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.EnumOptions - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.EnumOptions} EnumOptions - */ - EnumOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.EnumOptions) - return object; - var message = new $root.google.protobuf.EnumOptions(); - if (object.allowAlias != null) - message.allowAlias = Boolean(object.allowAlias); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); - } - } - return message; - }; - - /** - * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.EnumOptions - * @static - * @param {google.protobuf.EnumOptions} message EnumOptions - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - EnumOptions.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (options.defaults) { - object.allowAlias = false; - object.deprecated = false; - } - if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) - object.allowAlias = message.allowAlias; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); - } - return object; + * @memberof google.protobuf.Empty + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Empty} Empty + */ + Empty.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Empty) + return object; + return new $root.google.protobuf.Empty(); }; /** - * Converts this EnumOptions to JSON. + * Creates a plain object from an Empty message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Empty + * @static + * @param {google.protobuf.Empty} message Empty + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Empty.toObject = function toObject() { + return {}; + }; + + /** + * Converts this Empty to JSON. * @function toJSON - * @memberof google.protobuf.EnumOptions + * @memberof google.protobuf.Empty * @instance * @returns {Object.} JSON object */ - EnumOptions.prototype.toJSON = function toJSON() { + Empty.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return EnumOptions; + return Empty; })(); - protobuf.EnumValueOptions = (function() { + protobuf.Timestamp = (function() { /** - * Properties of an EnumValueOptions. + * Properties of a Timestamp. * @memberof google.protobuf - * @interface IEnumValueOptions - * @property {boolean|null} [deprecated] EnumValueOptions deprecated - * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption + * @interface ITimestamp + * @property {number|Long|null} [seconds] Timestamp seconds + * @property {number|null} [nanos] Timestamp nanos */ /** - * Constructs a new EnumValueOptions. + * Constructs a new Timestamp. * @memberof google.protobuf - * @classdesc Represents an EnumValueOptions. - * @implements IEnumValueOptions + * @classdesc Represents a Timestamp. + * @implements ITimestamp * @constructor - * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set + * @param {google.protobuf.ITimestamp=} [properties] Properties to set */ - function EnumValueOptions(properties) { - this.uninterpretedOption = []; + function Timestamp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -17293,91 +24429,88 @@ } /** - * EnumValueOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.EnumValueOptions + * Timestamp seconds. + * @member {number|Long} seconds + * @memberof google.protobuf.Timestamp * @instance */ - EnumValueOptions.prototype.deprecated = false; + Timestamp.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * EnumValueOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.EnumValueOptions + * Timestamp nanos. + * @member {number} nanos + * @memberof google.protobuf.Timestamp * @instance */ - EnumValueOptions.prototype.uninterpretedOption = $util.emptyArray; + Timestamp.prototype.nanos = 0; /** - * Creates a new EnumValueOptions instance using the specified properties. + * Creates a new Timestamp instance using the specified properties. * @function create - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static - * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set - * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance + * @param {google.protobuf.ITimestamp=} [properties] Properties to set + * @returns {google.protobuf.Timestamp} Timestamp instance */ - EnumValueOptions.create = function create(properties) { - return new EnumValueOptions(properties); + Timestamp.create = function create(properties) { + return new Timestamp(properties); }; /** - * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. * @function encode - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static - * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueOptions.encode = function encode(message, writer) { + Timestamp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); return writer; }; /** - * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static - * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode + * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) { + Timestamp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an EnumValueOptions message from the specified reader or buffer. + * Decodes a Timestamp message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @returns {google.protobuf.Timestamp} Timestamp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueOptions.decode = function decode(reader, length) { + Timestamp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.deprecated = reader.bool(); + message.seconds = reader.int64(); break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + case 2: + message.nanos = reader.int32(); break; default: reader.skipType(tag & 7); @@ -17388,255 +24521,215 @@ }; /** - * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * Decodes a Timestamp message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @returns {google.protobuf.Timestamp} Timestamp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueOptions.decodeDelimited = function decodeDelimited(reader) { + Timestamp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an EnumValueOptions message. + * Verifies a Timestamp message. * @function verify - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumValueOptions.verify = function verify(message) { + Timestamp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); - if (error) - return "uninterpretedOption." + error; - } - } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; return null; }; /** - * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static * @param {Object.} object Plain object - * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @returns {google.protobuf.Timestamp} Timestamp */ - EnumValueOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.EnumValueOptions) + Timestamp.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Timestamp) return object; - var message = new $root.google.protobuf.EnumValueOptions(); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); - } - } + var message = new $root.google.protobuf.Timestamp(); + if (object.seconds != null) + if ($util.Long) + (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + else if (typeof object.seconds === "string") + message.seconds = parseInt(object.seconds, 10); + else if (typeof object.seconds === "number") + message.seconds = object.seconds; + else if (typeof object.seconds === "object") + message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); + if (object.nanos != null) + message.nanos = object.nanos | 0; return message; }; /** - * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @static - * @param {google.protobuf.EnumValueOptions} message EnumValueOptions + * @param {google.protobuf.Timestamp} message Timestamp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumValueOptions.toObject = function toObject(message, options) { + Timestamp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (options.defaults) - object.deprecated = false; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.seconds = options.longs === String ? "0" : 0; + object.nanos = 0; } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (typeof message.seconds === "number") + object.seconds = options.longs === String ? String(message.seconds) : message.seconds; + else + object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; + if (message.nanos != null && message.hasOwnProperty("nanos")) + object.nanos = message.nanos; return object; }; /** - * Converts this EnumValueOptions to JSON. + * Converts this Timestamp to JSON. * @function toJSON - * @memberof google.protobuf.EnumValueOptions + * @memberof google.protobuf.Timestamp * @instance * @returns {Object.} JSON object */ - EnumValueOptions.prototype.toJSON = function toJSON() { + Timestamp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return EnumValueOptions; + return Timestamp; })(); - protobuf.ServiceOptions = (function() { - - /** - * Properties of a ServiceOptions. - * @memberof google.protobuf - * @interface IServiceOptions - * @property {boolean|null} [deprecated] ServiceOptions deprecated - * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption - * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost - * @property {string|null} [".google.api.oauthScopes"] ServiceOptions .google.api.oauthScopes - */ - - /** - * Constructs a new ServiceOptions. - * @memberof google.protobuf - * @classdesc Represents a ServiceOptions. - * @implements IServiceOptions - * @constructor - * @param {google.protobuf.IServiceOptions=} [properties] Properties to set - */ - function ServiceOptions(properties) { - this.uninterpretedOption = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ServiceOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.ServiceOptions - * @instance - */ - ServiceOptions.prototype.deprecated = false; + protobuf.Struct = (function() { /** - * ServiceOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.ServiceOptions - * @instance + * Properties of a Struct. + * @memberof google.protobuf + * @interface IStruct + * @property {Object.|null} [fields] Struct fields */ - ServiceOptions.prototype.uninterpretedOption = $util.emptyArray; /** - * ServiceOptions .google.api.defaultHost. - * @member {string} .google.api.defaultHost - * @memberof google.protobuf.ServiceOptions - * @instance + * Constructs a new Struct. + * @memberof google.protobuf + * @classdesc Represents a Struct. + * @implements IStruct + * @constructor + * @param {google.protobuf.IStruct=} [properties] Properties to set */ - ServiceOptions.prototype[".google.api.defaultHost"] = ""; + function Struct(properties) { + this.fields = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } /** - * ServiceOptions .google.api.oauthScopes. - * @member {string} .google.api.oauthScopes - * @memberof google.protobuf.ServiceOptions + * Struct fields. + * @member {Object.} fields + * @memberof google.protobuf.Struct * @instance */ - ServiceOptions.prototype[".google.api.oauthScopes"] = ""; + Struct.prototype.fields = $util.emptyObject; /** - * Creates a new ServiceOptions instance using the specified properties. + * Creates a new Struct instance using the specified properties. * @function create - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static - * @param {google.protobuf.IServiceOptions=} [properties] Properties to set - * @returns {google.protobuf.ServiceOptions} ServiceOptions instance + * @param {google.protobuf.IStruct=} [properties] Properties to set + * @returns {google.protobuf.Struct} Struct instance */ - ServiceOptions.create = function create(properties) { - return new ServiceOptions(properties); + Struct.create = function create(properties) { + return new Struct(properties); }; /** - * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. * @function encode - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static - * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {google.protobuf.IStruct} message Struct message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceOptions.encode = function encode(message, writer) { + Struct.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) - writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); - if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) - writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]); + if (message.fields != null && Object.hasOwnProperty.call(message, "fields")) + for (var keys = Object.keys(message.fields), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static - * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode + * @param {google.protobuf.IStruct} message Struct message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) { + Struct.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ServiceOptions message from the specified reader or buffer. + * Decodes a Struct message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @returns {google.protobuf.Struct} Struct * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceOptions.decode = function decode(reader, length) { + Struct.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - case 1049: - message[".google.api.defaultHost"] = reader.string(); - break; - case 1050: - message[".google.api.oauthScopes"] = reader.string(); + case 1: + reader.skip().pos++; + if (message.fields === $util.emptyObject) + message.fields = {}; + key = reader.string(); + reader.pos++; + message.fields[key] = $root.google.protobuf.Value.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -17647,290 +24740,286 @@ }; /** - * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * Decodes a Struct message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @returns {google.protobuf.Struct} Struct * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceOptions.decodeDelimited = function decodeDelimited(reader) { + Struct.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ServiceOptions message. + * Verifies a Struct message. * @function verify - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ServiceOptions.verify = function verify(message) { + Struct.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (message.fields != null && message.hasOwnProperty("fields")) { + if (!$util.isObject(message.fields)) + return "fields: object expected"; + var key = Object.keys(message.fields); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.protobuf.Value.verify(message.fields[key[i]]); if (error) - return "uninterpretedOption." + error; + return "fields." + error; } } - if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) - if (!$util.isString(message[".google.api.defaultHost"])) - return ".google.api.defaultHost: string expected"; - if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) - if (!$util.isString(message[".google.api.oauthScopes"])) - return ".google.api.oauthScopes: string expected"; return null; }; /** - * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Struct message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static * @param {Object.} object Plain object - * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @returns {google.protobuf.Struct} Struct */ - ServiceOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.ServiceOptions) + Struct.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Struct) return object; - var message = new $root.google.protobuf.ServiceOptions(); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + var message = new $root.google.protobuf.Struct(); + if (object.fields) { + if (typeof object.fields !== "object") + throw TypeError(".google.protobuf.Struct.fields: object expected"); + message.fields = {}; + for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) { + if (typeof object.fields[keys[i]] !== "object") + throw TypeError(".google.protobuf.Struct.fields: object expected"); + message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]]); } } - if (object[".google.api.defaultHost"] != null) - message[".google.api.defaultHost"] = String(object[".google.api.defaultHost"]); - if (object[".google.api.oauthScopes"] != null) - message[".google.api.oauthScopes"] = String(object[".google.api.oauthScopes"]); return message; }; /** - * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * Creates a plain object from a Struct message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @static - * @param {google.protobuf.ServiceOptions} message ServiceOptions + * @param {google.protobuf.Struct} message Struct * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ServiceOptions.toObject = function toObject(message, options) { + Struct.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.uninterpretedOption = []; - if (options.defaults) { - object.deprecated = false; - object[".google.api.defaultHost"] = ""; - object[".google.api.oauthScopes"] = ""; - } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + if (options.objects || options.defaults) + object.fields = {}; + var keys2; + if (message.fields && (keys2 = Object.keys(message.fields)).length) { + object.fields = {}; + for (var j = 0; j < keys2.length; ++j) + object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options); } - if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) - object[".google.api.defaultHost"] = message[".google.api.defaultHost"]; - if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) - object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"]; return object; }; /** - * Converts this ServiceOptions to JSON. + * Converts this Struct to JSON. * @function toJSON - * @memberof google.protobuf.ServiceOptions + * @memberof google.protobuf.Struct * @instance * @returns {Object.} JSON object */ - ServiceOptions.prototype.toJSON = function toJSON() { + Struct.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ServiceOptions; + return Struct; })(); - protobuf.MethodOptions = (function() { + protobuf.Value = (function() { /** - * Properties of a MethodOptions. + * Properties of a Value. * @memberof google.protobuf - * @interface IMethodOptions - * @property {boolean|null} [deprecated] MethodOptions deprecated - * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel - * @property {Array.|null} [uninterpretedOption] MethodOptions uninterpretedOption - * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http - * @property {Array.|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature + * @interface IValue + * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue + * @property {number|null} [numberValue] Value numberValue + * @property {string|null} [stringValue] Value stringValue + * @property {boolean|null} [boolValue] Value boolValue + * @property {google.protobuf.IStruct|null} [structValue] Value structValue + * @property {google.protobuf.IListValue|null} [listValue] Value listValue */ /** - * Constructs a new MethodOptions. + * Constructs a new Value. * @memberof google.protobuf - * @classdesc Represents a MethodOptions. - * @implements IMethodOptions + * @classdesc Represents a Value. + * @implements IValue * @constructor - * @param {google.protobuf.IMethodOptions=} [properties] Properties to set + * @param {google.protobuf.IValue=} [properties] Properties to set + */ + function Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Value nullValue. + * @member {google.protobuf.NullValue} nullValue + * @memberof google.protobuf.Value + * @instance + */ + Value.prototype.nullValue = 0; + + /** + * Value numberValue. + * @member {number} numberValue + * @memberof google.protobuf.Value + * @instance */ - function MethodOptions(properties) { - this.uninterpretedOption = []; - this[".google.api.methodSignature"] = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + Value.prototype.numberValue = 0; /** - * MethodOptions deprecated. - * @member {boolean} deprecated - * @memberof google.protobuf.MethodOptions + * Value stringValue. + * @member {string} stringValue + * @memberof google.protobuf.Value * @instance */ - MethodOptions.prototype.deprecated = false; + Value.prototype.stringValue = ""; /** - * MethodOptions idempotencyLevel. - * @member {google.protobuf.MethodOptions.IdempotencyLevel} idempotencyLevel - * @memberof google.protobuf.MethodOptions + * Value boolValue. + * @member {boolean} boolValue + * @memberof google.protobuf.Value * @instance */ - MethodOptions.prototype.idempotencyLevel = 0; + Value.prototype.boolValue = false; /** - * MethodOptions uninterpretedOption. - * @member {Array.} uninterpretedOption - * @memberof google.protobuf.MethodOptions + * Value structValue. + * @member {google.protobuf.IStruct|null|undefined} structValue + * @memberof google.protobuf.Value * @instance */ - MethodOptions.prototype.uninterpretedOption = $util.emptyArray; + Value.prototype.structValue = null; /** - * MethodOptions .google.api.http. - * @member {google.api.IHttpRule|null|undefined} .google.api.http - * @memberof google.protobuf.MethodOptions + * Value listValue. + * @member {google.protobuf.IListValue|null|undefined} listValue + * @memberof google.protobuf.Value * @instance */ - MethodOptions.prototype[".google.api.http"] = null; + Value.prototype.listValue = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * MethodOptions .google.api.methodSignature. - * @member {Array.} .google.api.methodSignature - * @memberof google.protobuf.MethodOptions + * Value kind. + * @member {"nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"|undefined} kind + * @memberof google.protobuf.Value * @instance */ - MethodOptions.prototype[".google.api.methodSignature"] = $util.emptyArray; + Object.defineProperty(Value.prototype, "kind", { + get: $util.oneOfGetter($oneOfFields = ["nullValue", "numberValue", "stringValue", "boolValue", "structValue", "listValue"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new MethodOptions instance using the specified properties. + * Creates a new Value instance using the specified properties. * @function create - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static - * @param {google.protobuf.IMethodOptions=} [properties] Properties to set - * @returns {google.protobuf.MethodOptions} MethodOptions instance + * @param {google.protobuf.IValue=} [properties] Properties to set + * @returns {google.protobuf.Value} Value instance */ - MethodOptions.create = function create(properties) { - return new MethodOptions(properties); + Value.create = function create(properties) { + return new Value(properties); }; /** - * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. * @function encode - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static - * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {google.protobuf.IValue} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodOptions.encode = function encode(message, writer) { + Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) - writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); - if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) - writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); - if (message.uninterpretedOption != null && message.uninterpretedOption.length) - for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length) - for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) - writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); - if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) - $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.nullValue); + if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.numberValue); + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); + if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolValue); + if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) + $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) + $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; /** - * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static - * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode + * @param {google.protobuf.IValue} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodOptions.encodeDelimited = function encodeDelimited(message, writer) { + Value.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a MethodOptions message from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.MethodOptions} MethodOptions + * @returns {google.protobuf.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodOptions.decode = function decode(reader, length) { + Value.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Value(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool(); + case 1: + message.nullValue = reader.int32(); break; - case 34: - message.idempotencyLevel = reader.int32(); + case 2: + message.numberValue = reader.double(); break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + case 3: + message.stringValue = reader.string(); break; - case 72295728: - message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); + case 4: + message.boolValue = reader.bool(); break; - case 1051: - if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length)) - message[".google.api.methodSignature"] = []; - message[".google.api.methodSignature"].push(reader.string()); + case 5: + message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + case 6: + message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -17941,217 +25030,214 @@ }; /** - * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * Decodes a Value message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.MethodOptions} MethodOptions + * @returns {google.protobuf.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodOptions.decodeDelimited = function decodeDelimited(reader) { + Value.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a MethodOptions message. + * Verifies a Value message. * @function verify - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MethodOptions.verify = function verify(message) { + Value.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - if (typeof message.deprecated !== "boolean") - return "deprecated: boolean expected"; - if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) - switch (message.idempotencyLevel) { + var properties = {}; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + properties.kind = 1; + switch (message.nullValue) { default: - return "idempotencyLevel: enum value expected"; + return "nullValue: enum value expected"; case 0: - case 1: - case 2: break; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { - if (!Array.isArray(message.uninterpretedOption)) - return "uninterpretedOption: array expected"; - for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + } + if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.numberValue !== "number") + return "numberValue: number expected"; + } + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; + } + if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.boolValue !== "boolean") + return "boolValue: boolean expected"; + } + if (message.structValue != null && message.hasOwnProperty("structValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.google.protobuf.Struct.verify(message.structValue); if (error) - return "uninterpretedOption." + error; + return "structValue." + error; } } - if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) { - var error = $root.google.api.HttpRule.verify(message[".google.api.http"]); - if (error) - return ".google.api.http." + error; - } - if (message[".google.api.methodSignature"] != null && message.hasOwnProperty(".google.api.methodSignature")) { - if (!Array.isArray(message[".google.api.methodSignature"])) - return ".google.api.methodSignature: array expected"; - for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) - if (!$util.isString(message[".google.api.methodSignature"][i])) - return ".google.api.methodSignature: string[] expected"; + if (message.listValue != null && message.hasOwnProperty("listValue")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.listValue); + if (error) + return "listValue." + error; + } } return null; }; /** - * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Value message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static * @param {Object.} object Plain object - * @returns {google.protobuf.MethodOptions} MethodOptions + * @returns {google.protobuf.Value} Value */ - MethodOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.MethodOptions) + Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Value) return object; - var message = new $root.google.protobuf.MethodOptions(); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - switch (object.idempotencyLevel) { - case "IDEMPOTENCY_UNKNOWN": + var message = new $root.google.protobuf.Value(); + switch (object.nullValue) { + case "NULL_VALUE": case 0: - message.idempotencyLevel = 0; - break; - case "NO_SIDE_EFFECTS": - case 1: - message.idempotencyLevel = 1; - break; - case "IDEMPOTENT": - case 2: - message.idempotencyLevel = 2; + message.nullValue = 0; break; } - if (object.uninterpretedOption) { - if (!Array.isArray(object.uninterpretedOption)) - throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); - message.uninterpretedOption = []; - for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") - throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); - } - } - if (object[".google.api.http"] != null) { - if (typeof object[".google.api.http"] !== "object") - throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); - message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]); + if (object.numberValue != null) + message.numberValue = Number(object.numberValue); + if (object.stringValue != null) + message.stringValue = String(object.stringValue); + if (object.boolValue != null) + message.boolValue = Boolean(object.boolValue); + if (object.structValue != null) { + if (typeof object.structValue !== "object") + throw TypeError(".google.protobuf.Value.structValue: object expected"); + message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue); } - if (object[".google.api.methodSignature"]) { - if (!Array.isArray(object[".google.api.methodSignature"])) - throw TypeError(".google.protobuf.MethodOptions..google.api.methodSignature: array expected"); - message[".google.api.methodSignature"] = []; - for (var i = 0; i < object[".google.api.methodSignature"].length; ++i) - message[".google.api.methodSignature"][i] = String(object[".google.api.methodSignature"][i]); + if (object.listValue != null) { + if (typeof object.listValue !== "object") + throw TypeError(".google.protobuf.Value.listValue: object expected"); + message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue); } return message; }; /** - * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * Creates a plain object from a Value message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @static - * @param {google.protobuf.MethodOptions} message MethodOptions + * @param {google.protobuf.Value} message Value * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MethodOptions.toObject = function toObject(message, options) { + Value.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) { - object.uninterpretedOption = []; - object[".google.api.methodSignature"] = []; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + if (options.oneofs) + object.kind = "nullValue"; } - if (options.defaults) { - object.deprecated = false; - object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; - object[".google.api.http"] = null; + if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + object.numberValue = options.json && !isFinite(message.numberValue) ? String(message.numberValue) : message.numberValue; + if (options.oneofs) + object.kind = "numberValue"; } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) - object.deprecated = message.deprecated; - if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) - object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; - if (message.uninterpretedOption && message.uninterpretedOption.length) { - object.uninterpretedOption = []; - for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + object.stringValue = message.stringValue; + if (options.oneofs) + object.kind = "stringValue"; } - if (message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length) { - object[".google.api.methodSignature"] = []; - for (var j = 0; j < message[".google.api.methodSignature"].length; ++j) - object[".google.api.methodSignature"][j] = message[".google.api.methodSignature"][j]; + if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + object.boolValue = message.boolValue; + if (options.oneofs) + object.kind = "boolValue"; + } + if (message.structValue != null && message.hasOwnProperty("structValue")) { + object.structValue = $root.google.protobuf.Struct.toObject(message.structValue, options); + if (options.oneofs) + object.kind = "structValue"; + } + if (message.listValue != null && message.hasOwnProperty("listValue")) { + object.listValue = $root.google.protobuf.ListValue.toObject(message.listValue, options); + if (options.oneofs) + object.kind = "listValue"; } - if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) - object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); return object; }; /** - * Converts this MethodOptions to JSON. + * Converts this Value to JSON. * @function toJSON - * @memberof google.protobuf.MethodOptions + * @memberof google.protobuf.Value * @instance * @returns {Object.} JSON object */ - MethodOptions.prototype.toJSON = function toJSON() { + Value.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - /** - * IdempotencyLevel enum. - * @name google.protobuf.MethodOptions.IdempotencyLevel - * @enum {number} - * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value - * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value - * @property {number} IDEMPOTENT=2 IDEMPOTENT value - */ - MethodOptions.IdempotencyLevel = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "IDEMPOTENCY_UNKNOWN"] = 0; - values[valuesById[1] = "NO_SIDE_EFFECTS"] = 1; - values[valuesById[2] = "IDEMPOTENT"] = 2; - return values; - })(); + return Value; + })(); - return MethodOptions; + /** + * NullValue enum. + * @name google.protobuf.NullValue + * @enum {number} + * @property {number} NULL_VALUE=0 NULL_VALUE value + */ + protobuf.NullValue = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NULL_VALUE"] = 0; + return values; })(); - protobuf.UninterpretedOption = (function() { + protobuf.ListValue = (function() { /** - * Properties of an UninterpretedOption. + * Properties of a ListValue. * @memberof google.protobuf - * @interface IUninterpretedOption - * @property {Array.|null} [name] UninterpretedOption name - * @property {string|null} [identifierValue] UninterpretedOption identifierValue - * @property {number|Long|null} [positiveIntValue] UninterpretedOption positiveIntValue - * @property {number|Long|null} [negativeIntValue] UninterpretedOption negativeIntValue - * @property {number|null} [doubleValue] UninterpretedOption doubleValue - * @property {Uint8Array|null} [stringValue] UninterpretedOption stringValue - * @property {string|null} [aggregateValue] UninterpretedOption aggregateValue + * @interface IListValue + * @property {Array.|null} [values] ListValue values */ /** - * Constructs a new UninterpretedOption. + * Constructs a new ListValue. * @memberof google.protobuf - * @classdesc Represents an UninterpretedOption. - * @implements IUninterpretedOption + * @classdesc Represents a ListValue. + * @implements IListValue * @constructor - * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set + * @param {google.protobuf.IListValue=} [properties] Properties to set */ - function UninterpretedOption(properties) { - this.name = []; + function ListValue(properties) { + this.values = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -18159,156 +25245,78 @@ } /** - * UninterpretedOption name. - * @member {Array.} name - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.name = $util.emptyArray; - - /** - * UninterpretedOption identifierValue. - * @member {string} identifierValue - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.identifierValue = ""; - - /** - * UninterpretedOption positiveIntValue. - * @member {number|Long} positiveIntValue - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.positiveIntValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * UninterpretedOption negativeIntValue. - * @member {number|Long} negativeIntValue - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.negativeIntValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * UninterpretedOption doubleValue. - * @member {number} doubleValue - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.doubleValue = 0; - - /** - * UninterpretedOption stringValue. - * @member {Uint8Array} stringValue - * @memberof google.protobuf.UninterpretedOption - * @instance - */ - UninterpretedOption.prototype.stringValue = $util.newBuffer([]); - - /** - * UninterpretedOption aggregateValue. - * @member {string} aggregateValue - * @memberof google.protobuf.UninterpretedOption + * ListValue values. + * @member {Array.} values + * @memberof google.protobuf.ListValue * @instance */ - UninterpretedOption.prototype.aggregateValue = ""; + ListValue.prototype.values = $util.emptyArray; /** - * Creates a new UninterpretedOption instance using the specified properties. + * Creates a new ListValue instance using the specified properties. * @function create - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static - * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set - * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance + * @param {google.protobuf.IListValue=} [properties] Properties to set + * @returns {google.protobuf.ListValue} ListValue instance */ - UninterpretedOption.create = function create(properties) { - return new UninterpretedOption(properties); + ListValue.create = function create(properties) { + return new ListValue(properties); }; /** - * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. * @function encode - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static - * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {google.protobuf.IListValue} message ListValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UninterpretedOption.encode = function encode(message, writer) { + ListValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && message.name.length) - for (var i = 0; i < message.name.length; ++i) - $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); - if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) - writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue); - if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue")) - writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue); - if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) - writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue); - if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) - writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue); - if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.protobuf.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static - * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode + * @param {google.protobuf.IListValue} message ListValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) { + ListValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an UninterpretedOption message from the specified reader or buffer. + * Decodes a ListValue message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @returns {google.protobuf.ListValue} ListValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UninterpretedOption.decode = function decode(reader, length) { + ListValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ListValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - if (!(message.name && message.name.length)) - message.name = []; - message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); - break; - case 3: - message.identifierValue = reader.string(); - break; - case 4: - message.positiveIntValue = reader.uint64(); - break; - case 5: - message.negativeIntValue = reader.int64(); - break; - case 6: - message.doubleValue = reader.double(); - break; - case 7: - message.stringValue = reader.bytes(); - break; - case 8: - message.aggregateValue = reader.string(); + case 1: + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -18319,422 +25327,311 @@ }; /** - * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * Decodes a ListValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @returns {google.protobuf.ListValue} ListValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UninterpretedOption.decodeDelimited = function decodeDelimited(reader) { + ListValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an UninterpretedOption message. + * Verifies a ListValue message. * @function verify - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UninterpretedOption.verify = function verify(message) { + ListValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) { - if (!Array.isArray(message.name)) - return "name: array expected"; - for (var i = 0; i < message.name.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]); + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.protobuf.Value.verify(message.values[i]); if (error) - return "name." + error; + return "values." + error; } } - if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) - if (!$util.isString(message.identifierValue)) - return "identifierValue: string expected"; - if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) - if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high))) - return "positiveIntValue: integer|Long expected"; - if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) - if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high))) - return "negativeIntValue: integer|Long expected"; - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) - if (typeof message.doubleValue !== "number") - return "doubleValue: number expected"; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) - if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue))) - return "stringValue: buffer expected"; - if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) - if (!$util.isString(message.aggregateValue)) - return "aggregateValue: string expected"; return null; }; /** - * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * Creates a ListValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static * @param {Object.} object Plain object - * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @returns {google.protobuf.ListValue} ListValue */ - UninterpretedOption.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.UninterpretedOption) + ListValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ListValue) return object; - var message = new $root.google.protobuf.UninterpretedOption(); - if (object.name) { - if (!Array.isArray(object.name)) - throw TypeError(".google.protobuf.UninterpretedOption.name: array expected"); - message.name = []; - for (var i = 0; i < object.name.length; ++i) { - if (typeof object.name[i] !== "object") - throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); - message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]); + var message = new $root.google.protobuf.ListValue(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.protobuf.ListValue.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.protobuf.ListValue.values: object expected"); + message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i]); } } - if (object.identifierValue != null) - message.identifierValue = String(object.identifierValue); - if (object.positiveIntValue != null) - if ($util.Long) - (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true; - else if (typeof object.positiveIntValue === "string") - message.positiveIntValue = parseInt(object.positiveIntValue, 10); - else if (typeof object.positiveIntValue === "number") - message.positiveIntValue = object.positiveIntValue; - else if (typeof object.positiveIntValue === "object") - message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true); - if (object.negativeIntValue != null) - if ($util.Long) - (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false; - else if (typeof object.negativeIntValue === "string") - message.negativeIntValue = parseInt(object.negativeIntValue, 10); - else if (typeof object.negativeIntValue === "number") - message.negativeIntValue = object.negativeIntValue; - else if (typeof object.negativeIntValue === "object") - message.negativeIntValue = new $util.LongBits(object.negativeIntValue.low >>> 0, object.negativeIntValue.high >>> 0).toNumber(); - if (object.doubleValue != null) - message.doubleValue = Number(object.doubleValue); - if (object.stringValue != null) - if (typeof object.stringValue === "string") - $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0); - else if (object.stringValue.length) - message.stringValue = object.stringValue; - if (object.aggregateValue != null) - message.aggregateValue = String(object.aggregateValue); return message; }; /** - * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * Creates a plain object from a ListValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @static - * @param {google.protobuf.UninterpretedOption} message UninterpretedOption + * @param {google.protobuf.ListValue} message ListValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UninterpretedOption.toObject = function toObject(message, options) { + ListValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.name = []; - if (options.defaults) { - object.identifierValue = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.positiveIntValue = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.negativeIntValue = options.longs === String ? "0" : 0; - object.doubleValue = 0; - if (options.bytes === String) - object.stringValue = ""; - else { - object.stringValue = []; - if (options.bytes !== Array) - object.stringValue = $util.newBuffer(object.stringValue); - } - object.aggregateValue = ""; - } - if (message.name && message.name.length) { - object.name = []; - for (var j = 0; j < message.name.length; ++j) - object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options); + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.protobuf.Value.toObject(message.values[j], options); } - if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) - object.identifierValue = message.identifierValue; - if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) - if (typeof message.positiveIntValue === "number") - object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue; - else - object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue; - if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) - if (typeof message.negativeIntValue === "number") - object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue; - else - object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue; - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) - object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) - object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue; - if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) - object.aggregateValue = message.aggregateValue; return object; }; /** - * Converts this UninterpretedOption to JSON. + * Converts this ListValue to JSON. * @function toJSON - * @memberof google.protobuf.UninterpretedOption + * @memberof google.protobuf.ListValue * @instance * @returns {Object.} JSON object */ - UninterpretedOption.prototype.toJSON = function toJSON() { + ListValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - UninterpretedOption.NamePart = (function() { + return ListValue; + })(); - /** - * Properties of a NamePart. - * @memberof google.protobuf.UninterpretedOption - * @interface INamePart - * @property {string} namePart NamePart namePart - * @property {boolean} isExtension NamePart isExtension - */ + protobuf.DoubleValue = (function() { - /** - * Constructs a new NamePart. - * @memberof google.protobuf.UninterpretedOption - * @classdesc Represents a NamePart. - * @implements INamePart - * @constructor - * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set - */ - function NamePart(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a DoubleValue. + * @memberof google.protobuf + * @interface IDoubleValue + * @property {number|null} [value] DoubleValue value + */ - /** - * NamePart namePart. - * @member {string} namePart - * @memberof google.protobuf.UninterpretedOption.NamePart - * @instance - */ - NamePart.prototype.namePart = ""; + /** + * Constructs a new DoubleValue. + * @memberof google.protobuf + * @classdesc Represents a DoubleValue. + * @implements IDoubleValue + * @constructor + * @param {google.protobuf.IDoubleValue=} [properties] Properties to set + */ + function DoubleValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * NamePart isExtension. - * @member {boolean} isExtension - * @memberof google.protobuf.UninterpretedOption.NamePart - * @instance - */ - NamePart.prototype.isExtension = false; + /** + * DoubleValue value. + * @member {number} value + * @memberof google.protobuf.DoubleValue + * @instance + */ + DoubleValue.prototype.value = 0; - /** - * Creates a new NamePart instance using the specified properties. - * @function create - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set - * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance - */ - NamePart.create = function create(properties) { - return new NamePart(properties); - }; + /** + * Creates a new DoubleValue instance using the specified properties. + * @function create + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue=} [properties] Properties to set + * @returns {google.protobuf.DoubleValue} DoubleValue instance + */ + DoubleValue.create = function create(properties) { + return new DoubleValue(properties); + }; - /** - * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @function encode - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - NamePart.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart); - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension); - return writer; - }; + /** + * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @function encode + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DoubleValue.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.value); + return writer; + }; - /** - * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - NamePart.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DoubleValue.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a NamePart message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - NamePart.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.namePart = reader.string(); - break; - case 2: - message.isExtension = reader.bool(); - break; - default: - reader.skipType(tag & 7); - break; - } + /** + * Decodes a DoubleValue message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.DoubleValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DoubleValue} DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DoubleValue.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DoubleValue(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; } - if (!message.hasOwnProperty("namePart")) - throw $util.ProtocolError("missing required 'namePart'", { instance: message }); - if (!message.hasOwnProperty("isExtension")) - throw $util.ProtocolError("missing required 'isExtension'", { instance: message }); - return message; - }; - - /** - * Decodes a NamePart message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - NamePart.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + } + return message; + }; - /** - * Verifies a NamePart message. - * @function verify - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - NamePart.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (!$util.isString(message.namePart)) - return "namePart: string expected"; - if (typeof message.isExtension !== "boolean") - return "isExtension: boolean expected"; - return null; - }; + /** + * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.DoubleValue + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DoubleValue} DoubleValue + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DoubleValue.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a NamePart message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart - */ - NamePart.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) - return object; - var message = new $root.google.protobuf.UninterpretedOption.NamePart(); - if (object.namePart != null) - message.namePart = String(object.namePart); - if (object.isExtension != null) - message.isExtension = Boolean(object.isExtension); - return message; - }; + /** + * Verifies a DoubleValue message. + * @function verify + * @memberof google.protobuf.DoubleValue + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DoubleValue.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "number") + return "value: number expected"; + return null; + }; - /** - * Creates a plain object from a NamePart message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.UninterpretedOption.NamePart - * @static - * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - NamePart.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.namePart = ""; - object.isExtension = false; - } - if (message.namePart != null && message.hasOwnProperty("namePart")) - object.namePart = message.namePart; - if (message.isExtension != null && message.hasOwnProperty("isExtension")) - object.isExtension = message.isExtension; + /** + * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.DoubleValue + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.DoubleValue} DoubleValue + */ + DoubleValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DoubleValue) return object; - }; + var message = new $root.google.protobuf.DoubleValue(); + if (object.value != null) + message.value = Number(object.value); + return message; + }; - /** - * Converts this NamePart to JSON. - * @function toJSON - * @memberof google.protobuf.UninterpretedOption.NamePart - * @instance - * @returns {Object.} JSON object - */ - NamePart.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.DoubleValue + * @static + * @param {google.protobuf.DoubleValue} message DoubleValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DoubleValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; + return object; + }; - return NamePart; - })(); + /** + * Converts this DoubleValue to JSON. + * @function toJSON + * @memberof google.protobuf.DoubleValue + * @instance + * @returns {Object.} JSON object + */ + DoubleValue.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return UninterpretedOption; + return DoubleValue; })(); - protobuf.SourceCodeInfo = (function() { + protobuf.FloatValue = (function() { /** - * Properties of a SourceCodeInfo. + * Properties of a FloatValue. * @memberof google.protobuf - * @interface ISourceCodeInfo - * @property {Array.|null} [location] SourceCodeInfo location + * @interface IFloatValue + * @property {number|null} [value] FloatValue value */ /** - * Constructs a new SourceCodeInfo. + * Constructs a new FloatValue. * @memberof google.protobuf - * @classdesc Represents a SourceCodeInfo. - * @implements ISourceCodeInfo + * @classdesc Represents a FloatValue. + * @implements IFloatValue * @constructor - * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set + * @param {google.protobuf.IFloatValue=} [properties] Properties to set */ - function SourceCodeInfo(properties) { - this.location = []; + function FloatValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -18742,78 +25639,75 @@ } /** - * SourceCodeInfo location. - * @member {Array.} location - * @memberof google.protobuf.SourceCodeInfo + * FloatValue value. + * @member {number} value + * @memberof google.protobuf.FloatValue * @instance */ - SourceCodeInfo.prototype.location = $util.emptyArray; + FloatValue.prototype.value = 0; /** - * Creates a new SourceCodeInfo instance using the specified properties. + * Creates a new FloatValue instance using the specified properties. * @function create - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static - * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set - * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance + * @param {google.protobuf.IFloatValue=} [properties] Properties to set + * @returns {google.protobuf.FloatValue} FloatValue instance */ - SourceCodeInfo.create = function create(properties) { - return new SourceCodeInfo(properties); + FloatValue.create = function create(properties) { + return new FloatValue(properties); }; /** - * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. * @function encode - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static - * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SourceCodeInfo.encode = function encode(message, writer) { + FloatValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.location != null && message.location.length) - for (var i = 0; i < message.location.length; ++i) - $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.value); return writer; }; /** - * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static - * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode + * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + FloatValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a SourceCodeInfo message from the specified reader or buffer. + * Decodes a FloatValue message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @returns {google.protobuf.FloatValue} FloatValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SourceCodeInfo.decode = function decode(reader, length) { + FloatValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FloatValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.location && message.location.length)) - message.location = []; - message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + message.value = reader.float(); break; default: reader.skipType(tag & 7); @@ -18824,467 +25718,308 @@ }; /** - * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * Decodes a FloatValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @returns {google.protobuf.FloatValue} FloatValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SourceCodeInfo.decodeDelimited = function decodeDelimited(reader) { + FloatValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a SourceCodeInfo message. + * Verifies a FloatValue message. * @function verify - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SourceCodeInfo.verify = function verify(message) { + FloatValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.location != null && message.hasOwnProperty("location")) { - if (!Array.isArray(message.location)) - return "location: array expected"; - for (var i = 0; i < message.location.length; ++i) { - var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]); - if (error) - return "location." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "number") + return "value: number expected"; return null; }; /** - * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static * @param {Object.} object Plain object - * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @returns {google.protobuf.FloatValue} FloatValue */ - SourceCodeInfo.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.SourceCodeInfo) + FloatValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FloatValue) return object; - var message = new $root.google.protobuf.SourceCodeInfo(); - if (object.location) { - if (!Array.isArray(object.location)) - throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected"); - message.location = []; - for (var i = 0; i < object.location.length; ++i) { - if (typeof object.location[i] !== "object") - throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); - message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]); - } - } + var message = new $root.google.protobuf.FloatValue(); + if (object.value != null) + message.value = Number(object.value); return message; }; /** - * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * Creates a plain object from a FloatValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @static - * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo + * @param {google.protobuf.FloatValue} message FloatValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SourceCodeInfo.toObject = function toObject(message, options) { + FloatValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.location = []; - if (message.location && message.location.length) { - object.location = []; - for (var j = 0; j < message.location.length; ++j) - object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options); - } + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; return object; }; /** - * Converts this SourceCodeInfo to JSON. + * Converts this FloatValue to JSON. * @function toJSON - * @memberof google.protobuf.SourceCodeInfo + * @memberof google.protobuf.FloatValue * @instance * @returns {Object.} JSON object */ - SourceCodeInfo.prototype.toJSON = function toJSON() { + FloatValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - SourceCodeInfo.Location = (function() { - - /** - * Properties of a Location. - * @memberof google.protobuf.SourceCodeInfo - * @interface ILocation - * @property {Array.|null} [path] Location path - * @property {Array.|null} [span] Location span - * @property {string|null} [leadingComments] Location leadingComments - * @property {string|null} [trailingComments] Location trailingComments - * @property {Array.|null} [leadingDetachedComments] Location leadingDetachedComments - */ - - /** - * Constructs a new Location. - * @memberof google.protobuf.SourceCodeInfo - * @classdesc Represents a Location. - * @implements ILocation - * @constructor - * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set - */ - function Location(properties) { - this.path = []; - this.span = []; - this.leadingDetachedComments = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Location path. - * @member {Array.} path - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - */ - Location.prototype.path = $util.emptyArray; - - /** - * Location span. - * @member {Array.} span - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - */ - Location.prototype.span = $util.emptyArray; - - /** - * Location leadingComments. - * @member {string} leadingComments - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - */ - Location.prototype.leadingComments = ""; + return FloatValue; + })(); - /** - * Location trailingComments. - * @member {string} trailingComments - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - */ - Location.prototype.trailingComments = ""; + protobuf.Int64Value = (function() { - /** - * Location leadingDetachedComments. - * @member {Array.} leadingDetachedComments - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - */ - Location.prototype.leadingDetachedComments = $util.emptyArray; + /** + * Properties of an Int64Value. + * @memberof google.protobuf + * @interface IInt64Value + * @property {number|Long|null} [value] Int64Value value + */ - /** - * Creates a new Location instance using the specified properties. - * @function create - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set - * @returns {google.protobuf.SourceCodeInfo.Location} Location instance - */ - Location.create = function create(properties) { - return new Location(properties); - }; + /** + * Constructs a new Int64Value. + * @memberof google.protobuf + * @classdesc Represents an Int64Value. + * @implements IInt64Value + * @constructor + * @param {google.protobuf.IInt64Value=} [properties] Properties to set + */ + function Int64Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @function encode - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Location.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.path != null && message.path.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.path.length; ++i) - writer.int32(message.path[i]); - writer.ldelim(); - } - if (message.span != null && message.span.length) { - writer.uint32(/* id 2, wireType 2 =*/18).fork(); - for (var i = 0; i < message.span.length; ++i) - writer.int32(message.span[i]); - writer.ldelim(); - } - if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments); - if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments); - if (message.leadingDetachedComments != null && message.leadingDetachedComments.length) - for (var i = 0; i < message.leadingDetachedComments.length; ++i) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.leadingDetachedComments[i]); - return writer; - }; + /** + * Int64Value value. + * @member {number|Long} value + * @memberof google.protobuf.Int64Value + * @instance + */ + Int64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - /** - * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Location.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new Int64Value instance using the specified properties. + * @function create + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value=} [properties] Properties to set + * @returns {google.protobuf.Int64Value} Int64Value instance + */ + Int64Value.create = function create(properties) { + return new Int64Value(properties); + }; - /** - * Decodes a Location message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.SourceCodeInfo.Location} Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Location.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.path && message.path.length)) - message.path = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.path.push(reader.int32()); - } else - message.path.push(reader.int32()); - break; - case 2: - if (!(message.span && message.span.length)) - message.span = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.span.push(reader.int32()); - } else - message.span.push(reader.int32()); - break; - case 3: - message.leadingComments = reader.string(); - break; - case 4: - message.trailingComments = reader.string(); - break; - case 6: - if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) - message.leadingDetachedComments = []; - message.leadingDetachedComments.push(reader.string()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int64Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.value); + return writer; + }; - /** - * Decodes a Location message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.SourceCodeInfo.Location} Location - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Location.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int64Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Verifies a Location message. - * @function verify - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Location.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) - if (!$util.isInteger(message.path[i])) - return "path: integer[] expected"; - } - if (message.span != null && message.hasOwnProperty("span")) { - if (!Array.isArray(message.span)) - return "span: array expected"; - for (var i = 0; i < message.span.length; ++i) - if (!$util.isInteger(message.span[i])) - return "span: integer[] expected"; - } - if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) - if (!$util.isString(message.leadingComments)) - return "leadingComments: string expected"; - if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) - if (!$util.isString(message.trailingComments)) - return "trailingComments: string expected"; - if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) { - if (!Array.isArray(message.leadingDetachedComments)) - return "leadingDetachedComments: array expected"; - for (var i = 0; i < message.leadingDetachedComments.length; ++i) - if (!$util.isString(message.leadingDetachedComments[i])) - return "leadingDetachedComments: string[] expected"; + /** + * Decodes an Int64Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Int64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Int64Value} Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int64Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int64Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.int64(); + break; + default: + reader.skipType(tag & 7); + break; } - return null; - }; + } + return message; + }; - /** - * Creates a Location message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.SourceCodeInfo.Location} Location - */ - Location.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) - return object; - var message = new $root.google.protobuf.SourceCodeInfo.Location(); - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".google.protobuf.SourceCodeInfo.Location.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) - message.path[i] = object.path[i] | 0; - } - if (object.span) { - if (!Array.isArray(object.span)) - throw TypeError(".google.protobuf.SourceCodeInfo.Location.span: array expected"); - message.span = []; - for (var i = 0; i < object.span.length; ++i) - message.span[i] = object.span[i] | 0; - } - if (object.leadingComments != null) - message.leadingComments = String(object.leadingComments); - if (object.trailingComments != null) - message.trailingComments = String(object.trailingComments); - if (object.leadingDetachedComments) { - if (!Array.isArray(object.leadingDetachedComments)) - throw TypeError(".google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected"); - message.leadingDetachedComments = []; - for (var i = 0; i < object.leadingDetachedComments.length; ++i) - message.leadingDetachedComments[i] = String(object.leadingDetachedComments[i]); - } - return message; - }; + /** + * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Int64Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Int64Value} Int64Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int64Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a plain object from a Location message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.SourceCodeInfo.Location - * @static - * @param {google.protobuf.SourceCodeInfo.Location} message Location - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Location.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.path = []; - object.span = []; - object.leadingDetachedComments = []; - } - if (options.defaults) { - object.leadingComments = ""; - object.trailingComments = ""; - } - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = message.path[j]; - } - if (message.span && message.span.length) { - object.span = []; - for (var j = 0; j < message.span.length; ++j) - object.span[j] = message.span[j]; - } - if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) - object.leadingComments = message.leadingComments; - if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) - object.trailingComments = message.trailingComments; - if (message.leadingDetachedComments && message.leadingDetachedComments.length) { - object.leadingDetachedComments = []; - for (var j = 0; j < message.leadingDetachedComments.length; ++j) - object.leadingDetachedComments[j] = message.leadingDetachedComments[j]; - } + /** + * Verifies an Int64Value message. + * @function verify + * @memberof google.protobuf.Int64Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Int64Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) + return "value: integer|Long expected"; + return null; + }; + + /** + * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Int64Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Int64Value} Int64Value + */ + Int64Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Int64Value) return object; - }; + var message = new $root.google.protobuf.Int64Value(); + if (object.value != null) + if ($util.Long) + (message.value = $util.Long.fromValue(object.value)).unsigned = false; + else if (typeof object.value === "string") + message.value = parseInt(object.value, 10); + else if (typeof object.value === "number") + message.value = object.value; + else if (typeof object.value === "object") + message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(); + return message; + }; - /** - * Converts this Location to JSON. - * @function toJSON - * @memberof google.protobuf.SourceCodeInfo.Location - * @instance - * @returns {Object.} JSON object - */ - Location.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Int64Value + * @static + * @param {google.protobuf.Int64Value} message Int64Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Int64Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.value = options.longs === String ? "0" : 0; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value === "number") + object.value = options.longs === String ? String(message.value) : message.value; + else + object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber() : message.value; + return object; + }; - return Location; - })(); + /** + * Converts this Int64Value to JSON. + * @function toJSON + * @memberof google.protobuf.Int64Value + * @instance + * @returns {Object.} JSON object + */ + Int64Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return SourceCodeInfo; + return Int64Value; })(); - protobuf.GeneratedCodeInfo = (function() { + protobuf.UInt64Value = (function() { /** - * Properties of a GeneratedCodeInfo. + * Properties of a UInt64Value. * @memberof google.protobuf - * @interface IGeneratedCodeInfo - * @property {Array.|null} [annotation] GeneratedCodeInfo annotation + * @interface IUInt64Value + * @property {number|Long|null} [value] UInt64Value value */ /** - * Constructs a new GeneratedCodeInfo. + * Constructs a new UInt64Value. * @memberof google.protobuf - * @classdesc Represents a GeneratedCodeInfo. - * @implements IGeneratedCodeInfo + * @classdesc Represents a UInt64Value. + * @implements IUInt64Value * @constructor - * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set + * @param {google.protobuf.IUInt64Value=} [properties] Properties to set */ - function GeneratedCodeInfo(properties) { - this.annotation = []; + function UInt64Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -19292,78 +26027,75 @@ } /** - * GeneratedCodeInfo annotation. - * @member {Array.} annotation - * @memberof google.protobuf.GeneratedCodeInfo + * UInt64Value value. + * @member {number|Long} value + * @memberof google.protobuf.UInt64Value * @instance */ - GeneratedCodeInfo.prototype.annotation = $util.emptyArray; + UInt64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Creates a new GeneratedCodeInfo instance using the specified properties. + * Creates a new UInt64Value instance using the specified properties. * @function create - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static - * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set - * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance + * @param {google.protobuf.IUInt64Value=} [properties] Properties to set + * @returns {google.protobuf.UInt64Value} UInt64Value instance */ - GeneratedCodeInfo.create = function create(properties) { - return new GeneratedCodeInfo(properties); + UInt64Value.create = function create(properties) { + return new UInt64Value(properties); }; /** - * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. * @function encode - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static - * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode + * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GeneratedCodeInfo.encode = function encode(message, writer) { + UInt64Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.annotation != null && message.annotation.length) - for (var i = 0; i < message.annotation.length; ++i) - $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.value); return writer; }; /** - * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static - * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode + * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + UInt64Value.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * Decodes a UInt64Value message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @returns {google.protobuf.UInt64Value} UInt64Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GeneratedCodeInfo.decode = function decode(reader, length) { + UInt64Value.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt64Value(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.annotation && message.annotation.length)) - message.annotation = []; - message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); + message.value = reader.uint64(); break; default: reader.skipType(tag & 7); @@ -19374,404 +26106,308 @@ }; /** - * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * Decodes a UInt64Value message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @returns {google.protobuf.UInt64Value} UInt64Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GeneratedCodeInfo.decodeDelimited = function decodeDelimited(reader) { + UInt64Value.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a GeneratedCodeInfo message. + * Verifies a UInt64Value message. * @function verify - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GeneratedCodeInfo.verify = function verify(message) { + UInt64Value.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.annotation != null && message.hasOwnProperty("annotation")) { - if (!Array.isArray(message.annotation)) - return "annotation: array expected"; - for (var i = 0; i < message.annotation.length; ++i) { - var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]); - if (error) - return "annotation." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) + return "value: integer|Long expected"; return null; }; /** - * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static * @param {Object.} object Plain object - * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @returns {google.protobuf.UInt64Value} UInt64Value */ - GeneratedCodeInfo.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.GeneratedCodeInfo) + UInt64Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UInt64Value) return object; - var message = new $root.google.protobuf.GeneratedCodeInfo(); - if (object.annotation) { - if (!Array.isArray(object.annotation)) - throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected"); - message.annotation = []; - for (var i = 0; i < object.annotation.length; ++i) { - if (typeof object.annotation[i] !== "object") - throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); - message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]); - } - } + var message = new $root.google.protobuf.UInt64Value(); + if (object.value != null) + if ($util.Long) + (message.value = $util.Long.fromValue(object.value)).unsigned = true; + else if (typeof object.value === "string") + message.value = parseInt(object.value, 10); + else if (typeof object.value === "number") + message.value = object.value; + else if (typeof object.value === "object") + message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(true); return message; }; /** - * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @static - * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo + * @param {google.protobuf.UInt64Value} message UInt64Value * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GeneratedCodeInfo.toObject = function toObject(message, options) { + UInt64Value.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.annotation = []; - if (message.annotation && message.annotation.length) { - object.annotation = []; - for (var j = 0; j < message.annotation.length; ++j) - object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options); - } + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.value = options.longs === String ? "0" : 0; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value === "number") + object.value = options.longs === String ? String(message.value) : message.value; + else + object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber(true) : message.value; return object; }; /** - * Converts this GeneratedCodeInfo to JSON. + * Converts this UInt64Value to JSON. * @function toJSON - * @memberof google.protobuf.GeneratedCodeInfo + * @memberof google.protobuf.UInt64Value * @instance * @returns {Object.} JSON object */ - GeneratedCodeInfo.prototype.toJSON = function toJSON() { + UInt64Value.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - GeneratedCodeInfo.Annotation = (function() { - - /** - * Properties of an Annotation. - * @memberof google.protobuf.GeneratedCodeInfo - * @interface IAnnotation - * @property {Array.|null} [path] Annotation path - * @property {string|null} [sourceFile] Annotation sourceFile - * @property {number|null} [begin] Annotation begin - * @property {number|null} [end] Annotation end - */ - - /** - * Constructs a new Annotation. - * @memberof google.protobuf.GeneratedCodeInfo - * @classdesc Represents an Annotation. - * @implements IAnnotation - * @constructor - * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set - */ - function Annotation(properties) { - this.path = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Annotation path. - * @member {Array.} path - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @instance - */ - Annotation.prototype.path = $util.emptyArray; - - /** - * Annotation sourceFile. - * @member {string} sourceFile - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @instance - */ - Annotation.prototype.sourceFile = ""; + return UInt64Value; + })(); - /** - * Annotation begin. - * @member {number} begin - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @instance - */ - Annotation.prototype.begin = 0; + protobuf.Int32Value = (function() { - /** - * Annotation end. - * @member {number} end - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @instance - */ - Annotation.prototype.end = 0; + /** + * Properties of an Int32Value. + * @memberof google.protobuf + * @interface IInt32Value + * @property {number|null} [value] Int32Value value + */ - /** - * Creates a new Annotation instance using the specified properties. - * @function create - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set - * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance - */ - Annotation.create = function create(properties) { - return new Annotation(properties); - }; + /** + * Constructs a new Int32Value. + * @memberof google.protobuf + * @classdesc Represents an Int32Value. + * @implements IInt32Value + * @constructor + * @param {google.protobuf.IInt32Value=} [properties] Properties to set + */ + function Int32Value(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @function encode - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Annotation.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.path != null && message.path.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.path.length; ++i) - writer.int32(message.path[i]); - writer.ldelim(); - } - if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile); - if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); - if (message.end != null && Object.hasOwnProperty.call(message, "end")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); - return writer; - }; + /** + * Int32Value value. + * @member {number} value + * @memberof google.protobuf.Int32Value + * @instance + */ + Int32Value.prototype.value = 0; - /** - * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Annotation.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new Int32Value instance using the specified properties. + * @function create + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value=} [properties] Properties to set + * @returns {google.protobuf.Int32Value} Int32Value instance + */ + Int32Value.create = function create(properties) { + return new Int32Value(properties); + }; - /** - * Decodes an Annotation message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Annotation.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.path && message.path.length)) - message.path = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.path.push(reader.int32()); - } else - message.path.push(reader.int32()); - break; - case 2: - message.sourceFile = reader.string(); - break; - case 3: - message.begin = reader.int32(); - break; - case 4: - message.end = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int32Value.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value); + return writer; + }; - /** - * Decodes an Annotation message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Annotation.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Int32Value.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Verifies an Annotation message. - * @function verify - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Annotation.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) - if (!$util.isInteger(message.path[i])) - return "path: integer[] expected"; + /** + * Decodes an Int32Value message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Int32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Int32Value} Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int32Value.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int32Value(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; } - if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) - if (!$util.isString(message.sourceFile)) - return "sourceFile: string expected"; - if (message.begin != null && message.hasOwnProperty("begin")) - if (!$util.isInteger(message.begin)) - return "begin: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) - if (!$util.isInteger(message.end)) - return "end: integer expected"; - return null; - }; + } + return message; + }; - /** - * Creates an Annotation message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation - */ - Annotation.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) - return object; - var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) - message.path[i] = object.path[i] | 0; - } - if (object.sourceFile != null) - message.sourceFile = String(object.sourceFile); - if (object.begin != null) - message.begin = object.begin | 0; - if (object.end != null) - message.end = object.end | 0; - return message; - }; + /** + * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Int32Value + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Int32Value} Int32Value + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Int32Value.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a plain object from an Annotation message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @static - * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Annotation.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.path = []; - if (options.defaults) { - object.sourceFile = ""; - object.begin = 0; - object.end = 0; - } - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = message.path[j]; - } - if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) - object.sourceFile = message.sourceFile; - if (message.begin != null && message.hasOwnProperty("begin")) - object.begin = message.begin; - if (message.end != null && message.hasOwnProperty("end")) - object.end = message.end; - return object; - }; + /** + * Verifies an Int32Value message. + * @function verify + * @memberof google.protobuf.Int32Value + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Int32Value.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value)) + return "value: integer expected"; + return null; + }; - /** - * Converts this Annotation to JSON. - * @function toJSON - * @memberof google.protobuf.GeneratedCodeInfo.Annotation - * @instance - * @returns {Object.} JSON object - */ - Annotation.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Int32Value + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Int32Value} Int32Value + */ + Int32Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Int32Value) + return object; + var message = new $root.google.protobuf.Int32Value(); + if (object.value != null) + message.value = object.value | 0; + return message; + }; - return Annotation; - })(); + /** + * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Int32Value + * @static + * @param {google.protobuf.Int32Value} message Int32Value + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Int32Value.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; - return GeneratedCodeInfo; + /** + * Converts this Int32Value to JSON. + * @function toJSON + * @memberof google.protobuf.Int32Value + * @instance + * @returns {Object.} JSON object + */ + Int32Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Int32Value; })(); - protobuf.Struct = (function() { + protobuf.UInt32Value = (function() { /** - * Properties of a Struct. + * Properties of a UInt32Value. * @memberof google.protobuf - * @interface IStruct - * @property {Object.|null} [fields] Struct fields + * @interface IUInt32Value + * @property {number|null} [value] UInt32Value value */ /** - * Constructs a new Struct. + * Constructs a new UInt32Value. * @memberof google.protobuf - * @classdesc Represents a Struct. - * @implements IStruct + * @classdesc Represents a UInt32Value. + * @implements IUInt32Value * @constructor - * @param {google.protobuf.IStruct=} [properties] Properties to set + * @param {google.protobuf.IUInt32Value=} [properties] Properties to set */ - function Struct(properties) { - this.fields = {}; + function UInt32Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -19779,83 +26415,75 @@ } /** - * Struct fields. - * @member {Object.} fields - * @memberof google.protobuf.Struct + * UInt32Value value. + * @member {number} value + * @memberof google.protobuf.UInt32Value * @instance */ - Struct.prototype.fields = $util.emptyObject; + UInt32Value.prototype.value = 0; /** - * Creates a new Struct instance using the specified properties. + * Creates a new UInt32Value instance using the specified properties. * @function create - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static - * @param {google.protobuf.IStruct=} [properties] Properties to set - * @returns {google.protobuf.Struct} Struct instance + * @param {google.protobuf.IUInt32Value=} [properties] Properties to set + * @returns {google.protobuf.UInt32Value} UInt32Value instance */ - Struct.create = function create(properties) { - return new Struct(properties); + UInt32Value.create = function create(properties) { + return new UInt32Value(properties); }; /** - * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. * @function encode - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static - * @param {google.protobuf.IStruct} message Struct message or plain object to encode + * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Struct.encode = function encode(message, writer) { + UInt32Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.fields != null && Object.hasOwnProperty.call(message, "fields")) - for (var keys = Object.keys(message.fields), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); return writer; }; /** - * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages. + * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static - * @param {google.protobuf.IStruct} message Struct message or plain object to encode + * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Struct.encodeDelimited = function encodeDelimited(message, writer) { + UInt32Value.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Struct message from the specified reader or buffer. + * Decodes a UInt32Value message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Struct} Struct + * @returns {google.protobuf.UInt32Value} UInt32Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Struct.decode = function decode(reader, length) { + UInt32Value.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt32Value(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; - if (message.fields === $util.emptyObject) - message.fields = {}; - key = reader.string(); - reader.pos++; - message.fields[key] = $root.google.protobuf.Value.decode(reader, reader.uint32()); + message.value = reader.uint32(); break; default: reader.skipType(tag & 7); @@ -19866,286 +26494,183 @@ }; /** - * Decodes a Struct message from the specified reader or buffer, length delimited. + * Decodes a UInt32Value message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Struct} Struct + * @returns {google.protobuf.UInt32Value} UInt32Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Struct.decodeDelimited = function decodeDelimited(reader) { + UInt32Value.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Struct message. + * Verifies a UInt32Value message. * @function verify - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Struct.verify = function verify(message) { + UInt32Value.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.fields != null && message.hasOwnProperty("fields")) { - if (!$util.isObject(message.fields)) - return "fields: object expected"; - var key = Object.keys(message.fields); - for (var i = 0; i < key.length; ++i) { - var error = $root.google.protobuf.Value.verify(message.fields[key[i]]); - if (error) - return "fields." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isInteger(message.value)) + return "value: integer expected"; return null; }; /** - * Creates a Struct message from a plain object. Also converts values to their respective internal types. + * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static * @param {Object.} object Plain object - * @returns {google.protobuf.Struct} Struct + * @returns {google.protobuf.UInt32Value} UInt32Value */ - Struct.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Struct) + UInt32Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UInt32Value) return object; - var message = new $root.google.protobuf.Struct(); - if (object.fields) { - if (typeof object.fields !== "object") - throw TypeError(".google.protobuf.Struct.fields: object expected"); - message.fields = {}; - for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) { - if (typeof object.fields[keys[i]] !== "object") - throw TypeError(".google.protobuf.Struct.fields: object expected"); - message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]]); - } - } + var message = new $root.google.protobuf.UInt32Value(); + if (object.value != null) + message.value = object.value >>> 0; return message; }; /** - * Creates a plain object from a Struct message. Also converts values to other types if specified. + * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @static - * @param {google.protobuf.Struct} message Struct + * @param {google.protobuf.UInt32Value} message UInt32Value * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Struct.toObject = function toObject(message, options) { + UInt32Value.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.objects || options.defaults) - object.fields = {}; - var keys2; - if (message.fields && (keys2 = Object.keys(message.fields)).length) { - object.fields = {}; - for (var j = 0; j < keys2.length; ++j) - object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options); - } + if (options.defaults) + object.value = 0; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; return object; }; /** - * Converts this Struct to JSON. + * Converts this UInt32Value to JSON. * @function toJSON - * @memberof google.protobuf.Struct + * @memberof google.protobuf.UInt32Value * @instance * @returns {Object.} JSON object */ - Struct.prototype.toJSON = function toJSON() { + UInt32Value.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Struct; + return UInt32Value; })(); - protobuf.Value = (function() { - - /** - * Properties of a Value. - * @memberof google.protobuf - * @interface IValue - * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue - * @property {number|null} [numberValue] Value numberValue - * @property {string|null} [stringValue] Value stringValue - * @property {boolean|null} [boolValue] Value boolValue - * @property {google.protobuf.IStruct|null} [structValue] Value structValue - * @property {google.protobuf.IListValue|null} [listValue] Value listValue - */ - - /** - * Constructs a new Value. - * @memberof google.protobuf - * @classdesc Represents a Value. - * @implements IValue - * @constructor - * @param {google.protobuf.IValue=} [properties] Properties to set - */ - function Value(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Value nullValue. - * @member {google.protobuf.NullValue} nullValue - * @memberof google.protobuf.Value - * @instance - */ - Value.prototype.nullValue = 0; - - /** - * Value numberValue. - * @member {number} numberValue - * @memberof google.protobuf.Value - * @instance - */ - Value.prototype.numberValue = 0; - - /** - * Value stringValue. - * @member {string} stringValue - * @memberof google.protobuf.Value - * @instance - */ - Value.prototype.stringValue = ""; - - /** - * Value boolValue. - * @member {boolean} boolValue - * @memberof google.protobuf.Value - * @instance - */ - Value.prototype.boolValue = false; + protobuf.BoolValue = (function() { /** - * Value structValue. - * @member {google.protobuf.IStruct|null|undefined} structValue - * @memberof google.protobuf.Value - * @instance + * Properties of a BoolValue. + * @memberof google.protobuf + * @interface IBoolValue + * @property {boolean|null} [value] BoolValue value */ - Value.prototype.structValue = null; /** - * Value listValue. - * @member {google.protobuf.IListValue|null|undefined} listValue - * @memberof google.protobuf.Value - * @instance + * Constructs a new BoolValue. + * @memberof google.protobuf + * @classdesc Represents a BoolValue. + * @implements IBoolValue + * @constructor + * @param {google.protobuf.IBoolValue=} [properties] Properties to set */ - Value.prototype.listValue = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + function BoolValue(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } /** - * Value kind. - * @member {"nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue"|undefined} kind - * @memberof google.protobuf.Value + * BoolValue value. + * @member {boolean} value + * @memberof google.protobuf.BoolValue * @instance */ - Object.defineProperty(Value.prototype, "kind", { - get: $util.oneOfGetter($oneOfFields = ["nullValue", "numberValue", "stringValue", "boolValue", "structValue", "listValue"]), - set: $util.oneOfSetter($oneOfFields) - }); + BoolValue.prototype.value = false; /** - * Creates a new Value instance using the specified properties. + * Creates a new BoolValue instance using the specified properties. * @function create - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static - * @param {google.protobuf.IValue=} [properties] Properties to set - * @returns {google.protobuf.Value} Value instance + * @param {google.protobuf.IBoolValue=} [properties] Properties to set + * @returns {google.protobuf.BoolValue} BoolValue instance */ - Value.create = function create(properties) { - return new Value(properties); + BoolValue.create = function create(properties) { + return new BoolValue(properties); }; /** - * Encodes the specified Value message. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. * @function encode - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static - * @param {google.protobuf.IValue} message Value message or plain object to encode + * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encode = function encode(message, writer) { + BoolValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.nullValue); - if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) - writer.uint32(/* id 2, wireType 1 =*/17).double(message.numberValue); - if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.stringValue); - if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolValue); - if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) - $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) - $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value); return writer; }; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.Value.verify|verify} messages. + * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static - * @param {google.protobuf.IValue} message Value message or plain object to encode + * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encodeDelimited = function encodeDelimited(message, writer) { + BoolValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes a BoolValue message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Value} Value + * @returns {google.protobuf.BoolValue} BoolValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decode = function decode(reader, length) { + BoolValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BoolValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.nullValue = reader.int32(); - break; - case 2: - message.numberValue = reader.double(); - break; - case 3: - message.stringValue = reader.string(); - break; - case 4: - message.boolValue = reader.bool(); - break; - case 5: - message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32()); - break; - case 6: - message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + message.value = reader.bool(); break; default: reader.skipType(tag & 7); @@ -20156,214 +26681,107 @@ }; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes a BoolValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Value} Value + * @returns {google.protobuf.BoolValue} BoolValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decodeDelimited = function decodeDelimited(reader) { + BoolValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Value message. + * Verifies a BoolValue message. * @function verify - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Value.verify = function verify(message) { + BoolValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - properties.kind = 1; - switch (message.nullValue) { - default: - return "nullValue: enum value expected"; - case 0: - break; - } - } - if (message.numberValue != null && message.hasOwnProperty("numberValue")) { - if (properties.kind === 1) - return "kind: multiple values"; - properties.kind = 1; - if (typeof message.numberValue !== "number") - return "numberValue: number expected"; - } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - if (properties.kind === 1) - return "kind: multiple values"; - properties.kind = 1; - if (!$util.isString(message.stringValue)) - return "stringValue: string expected"; - } - if (message.boolValue != null && message.hasOwnProperty("boolValue")) { - if (properties.kind === 1) - return "kind: multiple values"; - properties.kind = 1; - if (typeof message.boolValue !== "boolean") - return "boolValue: boolean expected"; - } - if (message.structValue != null && message.hasOwnProperty("structValue")) { - if (properties.kind === 1) - return "kind: multiple values"; - properties.kind = 1; - { - var error = $root.google.protobuf.Struct.verify(message.structValue); - if (error) - return "structValue." + error; - } - } - if (message.listValue != null && message.hasOwnProperty("listValue")) { - if (properties.kind === 1) - return "kind: multiple values"; - properties.kind = 1; - { - var error = $root.google.protobuf.ListValue.verify(message.listValue); - if (error) - return "listValue." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "boolean") + return "value: boolean expected"; return null; }; /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @static * @param {Object.} object Plain object - * @returns {google.protobuf.Value} Value + * @returns {google.protobuf.BoolValue} BoolValue */ - Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Value) + BoolValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.BoolValue) return object; - var message = new $root.google.protobuf.Value(); - switch (object.nullValue) { - case "NULL_VALUE": - case 0: - message.nullValue = 0; - break; - } - if (object.numberValue != null) - message.numberValue = Number(object.numberValue); - if (object.stringValue != null) - message.stringValue = String(object.stringValue); - if (object.boolValue != null) - message.boolValue = Boolean(object.boolValue); - if (object.structValue != null) { - if (typeof object.structValue !== "object") - throw TypeError(".google.protobuf.Value.structValue: object expected"); - message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue); - } - if (object.listValue != null) { - if (typeof object.listValue !== "object") - throw TypeError(".google.protobuf.Value.listValue: object expected"); - message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue); - } + var message = new $root.google.protobuf.BoolValue(); + if (object.value != null) + message.value = Boolean(object.value); return message; }; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.Value - * @static - * @param {google.protobuf.Value} message Value - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Value.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; - if (options.oneofs) - object.kind = "nullValue"; - } - if (message.numberValue != null && message.hasOwnProperty("numberValue")) { - object.numberValue = options.json && !isFinite(message.numberValue) ? String(message.numberValue) : message.numberValue; - if (options.oneofs) - object.kind = "numberValue"; - } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - object.stringValue = message.stringValue; - if (options.oneofs) - object.kind = "stringValue"; - } - if (message.boolValue != null && message.hasOwnProperty("boolValue")) { - object.boolValue = message.boolValue; - if (options.oneofs) - object.kind = "boolValue"; - } - if (message.structValue != null && message.hasOwnProperty("structValue")) { - object.structValue = $root.google.protobuf.Struct.toObject(message.structValue, options); - if (options.oneofs) - object.kind = "structValue"; - } - if (message.listValue != null && message.hasOwnProperty("listValue")) { - object.listValue = $root.google.protobuf.ListValue.toObject(message.listValue, options); - if (options.oneofs) - object.kind = "listValue"; - } + * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.BoolValue + * @static + * @param {google.protobuf.BoolValue} message BoolValue + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BoolValue.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = false; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; return object; }; /** - * Converts this Value to JSON. + * Converts this BoolValue to JSON. * @function toJSON - * @memberof google.protobuf.Value + * @memberof google.protobuf.BoolValue * @instance * @returns {Object.} JSON object */ - Value.prototype.toJSON = function toJSON() { + BoolValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Value; - })(); - - /** - * NullValue enum. - * @name google.protobuf.NullValue - * @enum {number} - * @property {number} NULL_VALUE=0 NULL_VALUE value - */ - protobuf.NullValue = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NULL_VALUE"] = 0; - return values; + return BoolValue; })(); - protobuf.ListValue = (function() { + protobuf.StringValue = (function() { /** - * Properties of a ListValue. + * Properties of a StringValue. * @memberof google.protobuf - * @interface IListValue - * @property {Array.|null} [values] ListValue values + * @interface IStringValue + * @property {string|null} [value] StringValue value */ /** - * Constructs a new ListValue. + * Constructs a new StringValue. * @memberof google.protobuf - * @classdesc Represents a ListValue. - * @implements IListValue + * @classdesc Represents a StringValue. + * @implements IStringValue * @constructor - * @param {google.protobuf.IListValue=} [properties] Properties to set + * @param {google.protobuf.IStringValue=} [properties] Properties to set */ - function ListValue(properties) { - this.values = []; + function StringValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -20371,78 +26789,75 @@ } /** - * ListValue values. - * @member {Array.} values - * @memberof google.protobuf.ListValue + * StringValue value. + * @member {string} value + * @memberof google.protobuf.StringValue * @instance */ - ListValue.prototype.values = $util.emptyArray; + StringValue.prototype.value = ""; /** - * Creates a new ListValue instance using the specified properties. + * Creates a new StringValue instance using the specified properties. * @function create - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static - * @param {google.protobuf.IListValue=} [properties] Properties to set - * @returns {google.protobuf.ListValue} ListValue instance + * @param {google.protobuf.IStringValue=} [properties] Properties to set + * @returns {google.protobuf.StringValue} StringValue instance */ - ListValue.create = function create(properties) { - return new ListValue(properties); + StringValue.create = function create(properties) { + return new StringValue(properties); }; /** - * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. * @function encode - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static - * @param {google.protobuf.IListValue} message ListValue message or plain object to encode + * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListValue.encode = function encode(message, writer) { + StringValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.values != null && message.values.length) - for (var i = 0; i < message.values.length; ++i) - $root.google.protobuf.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); return writer; }; /** - * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages. + * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static - * @param {google.protobuf.IListValue} message ListValue message or plain object to encode + * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListValue.encodeDelimited = function encodeDelimited(message, writer) { + StringValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ListValue message from the specified reader or buffer. + * Decodes a StringValue message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.ListValue} ListValue + * @returns {google.protobuf.StringValue} StringValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListValue.decode = function decode(reader, length) { + StringValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ListValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.StringValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - if (!(message.values && message.values.length)) - message.values = []; - message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32())); + message.value = reader.string(); break; default: reader.skipType(tag & 7); @@ -20453,125 +26868,107 @@ }; /** - * Decodes a ListValue message from the specified reader or buffer, length delimited. + * Decodes a StringValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.ListValue} ListValue + * @returns {google.protobuf.StringValue} StringValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListValue.decodeDelimited = function decodeDelimited(reader) { + StringValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ListValue message. + * Verifies a StringValue message. * @function verify - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListValue.verify = function verify(message) { + StringValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.values != null && message.hasOwnProperty("values")) { - if (!Array.isArray(message.values)) - return "values: array expected"; - for (var i = 0; i < message.values.length; ++i) { - var error = $root.google.protobuf.Value.verify(message.values[i]); - if (error) - return "values." + error; - } - } + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; return null; }; /** - * Creates a ListValue message from a plain object. Also converts values to their respective internal types. + * Creates a StringValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static * @param {Object.} object Plain object - * @returns {google.protobuf.ListValue} ListValue + * @returns {google.protobuf.StringValue} StringValue */ - ListValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.ListValue) + StringValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.StringValue) return object; - var message = new $root.google.protobuf.ListValue(); - if (object.values) { - if (!Array.isArray(object.values)) - throw TypeError(".google.protobuf.ListValue.values: array expected"); - message.values = []; - for (var i = 0; i < object.values.length; ++i) { - if (typeof object.values[i] !== "object") - throw TypeError(".google.protobuf.ListValue.values: object expected"); - message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i]); - } - } + var message = new $root.google.protobuf.StringValue(); + if (object.value != null) + message.value = String(object.value); return message; }; /** - * Creates a plain object from a ListValue message. Also converts values to other types if specified. + * Creates a plain object from a StringValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @static - * @param {google.protobuf.ListValue} message ListValue + * @param {google.protobuf.StringValue} message StringValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListValue.toObject = function toObject(message, options) { + StringValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.values = []; - if (message.values && message.values.length) { - object.values = []; - for (var j = 0; j < message.values.length; ++j) - object.values[j] = $root.google.protobuf.Value.toObject(message.values[j], options); - } + if (options.defaults) + object.value = ""; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; return object; }; /** - * Converts this ListValue to JSON. + * Converts this StringValue to JSON. * @function toJSON - * @memberof google.protobuf.ListValue + * @memberof google.protobuf.StringValue * @instance * @returns {Object.} JSON object */ - ListValue.prototype.toJSON = function toJSON() { + StringValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return ListValue; + return StringValue; })(); - protobuf.Timestamp = (function() { + protobuf.BytesValue = (function() { /** - * Properties of a Timestamp. + * Properties of a BytesValue. * @memberof google.protobuf - * @interface ITimestamp - * @property {number|Long|null} [seconds] Timestamp seconds - * @property {number|null} [nanos] Timestamp nanos + * @interface IBytesValue + * @property {Uint8Array|null} [value] BytesValue value */ /** - * Constructs a new Timestamp. + * Constructs a new BytesValue. * @memberof google.protobuf - * @classdesc Represents a Timestamp. - * @implements ITimestamp + * @classdesc Represents a BytesValue. + * @implements IBytesValue * @constructor - * @param {google.protobuf.ITimestamp=} [properties] Properties to set + * @param {google.protobuf.IBytesValue=} [properties] Properties to set */ - function Timestamp(properties) { + function BytesValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -20579,88 +26976,75 @@ } /** - * Timestamp seconds. - * @member {number|Long} seconds - * @memberof google.protobuf.Timestamp - * @instance - */ - Timestamp.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Timestamp nanos. - * @member {number} nanos - * @memberof google.protobuf.Timestamp + * BytesValue value. + * @member {Uint8Array} value + * @memberof google.protobuf.BytesValue * @instance */ - Timestamp.prototype.nanos = 0; + BytesValue.prototype.value = $util.newBuffer([]); /** - * Creates a new Timestamp instance using the specified properties. + * Creates a new BytesValue instance using the specified properties. * @function create - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static - * @param {google.protobuf.ITimestamp=} [properties] Properties to set - * @returns {google.protobuf.Timestamp} Timestamp instance + * @param {google.protobuf.IBytesValue=} [properties] Properties to set + * @returns {google.protobuf.BytesValue} BytesValue instance */ - Timestamp.create = function create(properties) { - return new Timestamp(properties); + BytesValue.create = function create(properties) { + return new BytesValue(properties); }; /** - * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. * @function encode - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static - * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode + * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Timestamp.encode = function encode(message, writer) { + BytesValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); - if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); return writer; }; /** - * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static - * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode + * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Timestamp.encodeDelimited = function encodeDelimited(message, writer) { + BytesValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Timestamp message from the specified reader or buffer. + * Decodes a BytesValue message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Timestamp} Timestamp + * @returns {google.protobuf.BytesValue} BytesValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Timestamp.decode = function decode(reader, length) { + BytesValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BytesValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.seconds = reader.int64(); - break; - case 2: - message.nanos = reader.int32(); + message.value = reader.bytes(); break; default: reader.skipType(tag & 7); @@ -20671,130 +27055,332 @@ }; /** - * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * Decodes a BytesValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Timestamp} Timestamp + * @returns {google.protobuf.BytesValue} BytesValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Timestamp.decodeDelimited = function decodeDelimited(reader) { + BytesValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Timestamp message. + * Verifies a BytesValue message. * @function verify - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Timestamp.verify = function verify(message) { + BytesValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.seconds != null && message.hasOwnProperty("seconds")) - if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) - return "seconds: integer|Long expected"; - if (message.nanos != null && message.hasOwnProperty("nanos")) - if (!$util.isInteger(message.nanos)) - return "nanos: integer expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; return null; }; /** - * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static * @param {Object.} object Plain object - * @returns {google.protobuf.Timestamp} Timestamp + * @returns {google.protobuf.BytesValue} BytesValue */ - Timestamp.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Timestamp) + BytesValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.BytesValue) return object; - var message = new $root.google.protobuf.Timestamp(); - if (object.seconds != null) - if ($util.Long) - (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; - else if (typeof object.seconds === "string") - message.seconds = parseInt(object.seconds, 10); - else if (typeof object.seconds === "number") - message.seconds = object.seconds; - else if (typeof object.seconds === "object") - message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); - if (object.nanos != null) - message.nanos = object.nanos | 0; + var message = new $root.google.protobuf.BytesValue(); + if (object.value != null) + if (typeof object.value === "string") + $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); + else if (object.value.length) + message.value = object.value; return message; }; /** - * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * Creates a plain object from a BytesValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @static - * @param {google.protobuf.Timestamp} message Timestamp + * @param {google.protobuf.BytesValue} message BytesValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Timestamp.toObject = function toObject(message, options) { + BytesValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.seconds = options.longs === String ? "0" : 0; - object.nanos = 0; - } - if (message.seconds != null && message.hasOwnProperty("seconds")) - if (typeof message.seconds === "number") - object.seconds = options.longs === String ? String(message.seconds) : message.seconds; - else - object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; - if (message.nanos != null && message.hasOwnProperty("nanos")) - object.nanos = message.nanos; + if (options.defaults) + if (options.bytes === String) + object.value = ""; + else { + object.value = []; + if (options.bytes !== Array) + object.value = $util.newBuffer(object.value); + } + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; return object; }; /** - * Converts this Timestamp to JSON. + * Converts this BytesValue to JSON. * @function toJSON - * @memberof google.protobuf.Timestamp + * @memberof google.protobuf.BytesValue * @instance * @returns {Object.} JSON object */ - Timestamp.prototype.toJSON = function toJSON() { + BytesValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Timestamp; + return BytesValue; })(); - protobuf.DoubleValue = (function() { + return protobuf; + })(); + + google.longrunning = (function() { + + /** + * Namespace longrunning. + * @memberof google + * @namespace + */ + var longrunning = {}; + + longrunning.Operations = (function() { /** - * Properties of a DoubleValue. - * @memberof google.protobuf - * @interface IDoubleValue - * @property {number|null} [value] DoubleValue value + * Constructs a new Operations service. + * @memberof google.longrunning + * @classdesc Represents an Operations + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited */ + function Operations(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (Operations.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Operations; /** - * Constructs a new DoubleValue. - * @memberof google.protobuf - * @classdesc Represents a DoubleValue. - * @implements IDoubleValue + * Creates new Operations service using the specified rpc implementation. + * @function create + * @memberof google.longrunning.Operations + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {Operations} RPC service. Useful where requests and/or responses are streamed. + */ + Operations.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; + + /** + * Callback as used by {@link google.longrunning.Operations#listOperations}. + * @memberof google.longrunning.Operations + * @typedef ListOperationsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.ListOperationsResponse} [response] ListOperationsResponse + */ + + /** + * Calls ListOperations. + * @function listOperations + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IListOperationsRequest} request ListOperationsRequest message or plain object + * @param {google.longrunning.Operations.ListOperationsCallback} callback Node-style callback called with the error, if any, and ListOperationsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Operations.prototype.listOperations = function listOperations(request, callback) { + return this.rpcCall(listOperations, $root.google.longrunning.ListOperationsRequest, $root.google.longrunning.ListOperationsResponse, request, callback); + }, "name", { value: "ListOperations" }); + + /** + * Calls ListOperations. + * @function listOperations + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IListOperationsRequest} request ListOperationsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.longrunning.Operations#getOperation}. + * @memberof google.longrunning.Operations + * @typedef GetOperationCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ + + /** + * Calls GetOperation. + * @function getOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IGetOperationRequest} request GetOperationRequest message or plain object + * @param {google.longrunning.Operations.GetOperationCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Operations.prototype.getOperation = function getOperation(request, callback) { + return this.rpcCall(getOperation, $root.google.longrunning.GetOperationRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "GetOperation" }); + + /** + * Calls GetOperation. + * @function getOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IGetOperationRequest} request GetOperationRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.longrunning.Operations#deleteOperation}. + * @memberof google.longrunning.Operations + * @typedef DeleteOperationCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.protobuf.Empty} [response] Empty + */ + + /** + * Calls DeleteOperation. + * @function deleteOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IDeleteOperationRequest} request DeleteOperationRequest message or plain object + * @param {google.longrunning.Operations.DeleteOperationCallback} callback Node-style callback called with the error, if any, and Empty + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Operations.prototype.deleteOperation = function deleteOperation(request, callback) { + return this.rpcCall(deleteOperation, $root.google.longrunning.DeleteOperationRequest, $root.google.protobuf.Empty, request, callback); + }, "name", { value: "DeleteOperation" }); + + /** + * Calls DeleteOperation. + * @function deleteOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IDeleteOperationRequest} request DeleteOperationRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.longrunning.Operations#cancelOperation}. + * @memberof google.longrunning.Operations + * @typedef CancelOperationCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.protobuf.Empty} [response] Empty + */ + + /** + * Calls CancelOperation. + * @function cancelOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.ICancelOperationRequest} request CancelOperationRequest message or plain object + * @param {google.longrunning.Operations.CancelOperationCallback} callback Node-style callback called with the error, if any, and Empty + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Operations.prototype.cancelOperation = function cancelOperation(request, callback) { + return this.rpcCall(cancelOperation, $root.google.longrunning.CancelOperationRequest, $root.google.protobuf.Empty, request, callback); + }, "name", { value: "CancelOperation" }); + + /** + * Calls CancelOperation. + * @function cancelOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.ICancelOperationRequest} request CancelOperationRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.longrunning.Operations#waitOperation}. + * @memberof google.longrunning.Operations + * @typedef WaitOperationCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ + + /** + * Calls WaitOperation. + * @function waitOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IWaitOperationRequest} request WaitOperationRequest message or plain object + * @param {google.longrunning.Operations.WaitOperationCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Operations.prototype.waitOperation = function waitOperation(request, callback) { + return this.rpcCall(waitOperation, $root.google.longrunning.WaitOperationRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "WaitOperation" }); + + /** + * Calls WaitOperation. + * @function waitOperation + * @memberof google.longrunning.Operations + * @instance + * @param {google.longrunning.IWaitOperationRequest} request WaitOperationRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return Operations; + })(); + + longrunning.Operation = (function() { + + /** + * Properties of an Operation. + * @memberof google.longrunning + * @interface IOperation + * @property {string|null} [name] Operation name + * @property {google.protobuf.IAny|null} [metadata] Operation metadata + * @property {boolean|null} [done] Operation done + * @property {google.rpc.IStatus|null} [error] Operation error + * @property {google.protobuf.IAny|null} [response] Operation response + */ + + /** + * Constructs a new Operation. + * @memberof google.longrunning + * @classdesc Represents an Operation. + * @implements IOperation * @constructor - * @param {google.protobuf.IDoubleValue=} [properties] Properties to set + * @param {google.longrunning.IOperation=} [properties] Properties to set */ - function DoubleValue(properties) { + function Operation(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -20802,75 +27388,141 @@ } /** - * DoubleValue value. - * @member {number} value - * @memberof google.protobuf.DoubleValue + * Operation name. + * @member {string} name + * @memberof google.longrunning.Operation * @instance */ - DoubleValue.prototype.value = 0; + Operation.prototype.name = ""; /** - * Creates a new DoubleValue instance using the specified properties. + * Operation metadata. + * @member {google.protobuf.IAny|null|undefined} metadata + * @memberof google.longrunning.Operation + * @instance + */ + Operation.prototype.metadata = null; + + /** + * Operation done. + * @member {boolean} done + * @memberof google.longrunning.Operation + * @instance + */ + Operation.prototype.done = false; + + /** + * Operation error. + * @member {google.rpc.IStatus|null|undefined} error + * @memberof google.longrunning.Operation + * @instance + */ + Operation.prototype.error = null; + + /** + * Operation response. + * @member {google.protobuf.IAny|null|undefined} response + * @memberof google.longrunning.Operation + * @instance + */ + Operation.prototype.response = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Operation result. + * @member {"error"|"response"|undefined} result + * @memberof google.longrunning.Operation + * @instance + */ + Object.defineProperty(Operation.prototype, "result", { + get: $util.oneOfGetter($oneOfFields = ["error", "response"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Operation instance using the specified properties. * @function create - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static - * @param {google.protobuf.IDoubleValue=} [properties] Properties to set - * @returns {google.protobuf.DoubleValue} DoubleValue instance + * @param {google.longrunning.IOperation=} [properties] Properties to set + * @returns {google.longrunning.Operation} Operation instance */ - DoubleValue.create = function create(properties) { - return new DoubleValue(properties); + Operation.create = function create(properties) { + return new Operation(properties); }; /** - * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * Encodes the specified Operation message. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages. * @function encode - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static - * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {google.longrunning.IOperation} message Operation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DoubleValue.encode = function encode(message, writer) { + Operation.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 1 =*/9).double(message.value); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.metadata != null && Object.hasOwnProperty.call(message, "metadata")) + $root.google.protobuf.Any.encode(message.metadata, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.done != null && Object.hasOwnProperty.call(message, "done")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.done); + if (message.error != null && Object.hasOwnProperty.call(message, "error")) + $root.google.rpc.Status.encode(message.error, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.response != null && Object.hasOwnProperty.call(message, "response")) + $root.google.protobuf.Any.encode(message.response, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages. + * Encodes the specified Operation message, length delimited. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static - * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode + * @param {google.longrunning.IOperation} message Operation message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DoubleValue.encodeDelimited = function encodeDelimited(message, writer) { + Operation.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a DoubleValue message from the specified reader or buffer. + * Decodes an Operation message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.DoubleValue} DoubleValue + * @returns {google.longrunning.Operation} Operation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DoubleValue.decode = function decode(reader, length) { + Operation.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DoubleValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.Operation(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.double(); + message.name = reader.string(); + break; + case 2: + message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32()); + break; + case 3: + message.done = reader.bool(); + break; + case 4: + message.error = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + case 5: + message.response = $root.google.protobuf.Any.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -20881,107 +27533,168 @@ }; /** - * Decodes a DoubleValue message from the specified reader or buffer, length delimited. + * Decodes an Operation message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.DoubleValue} DoubleValue + * @returns {google.longrunning.Operation} Operation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DoubleValue.decodeDelimited = function decodeDelimited(reader) { + Operation.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a DoubleValue message. + * Verifies an Operation message. * @function verify - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DoubleValue.verify = function verify(message) { + Operation.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (typeof message.value !== "number") - return "value: number expected"; + var properties = {}; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.google.protobuf.Any.verify(message.metadata); + if (error) + return "metadata." + error; + } + if (message.done != null && message.hasOwnProperty("done")) + if (typeof message.done !== "boolean") + return "done: boolean expected"; + if (message.error != null && message.hasOwnProperty("error")) { + properties.result = 1; + { + var error = $root.google.rpc.Status.verify(message.error); + if (error) + return "error." + error; + } + } + if (message.response != null && message.hasOwnProperty("response")) { + if (properties.result === 1) + return "result: multiple values"; + properties.result = 1; + { + var error = $root.google.protobuf.Any.verify(message.response); + if (error) + return "response." + error; + } + } return null; }; /** - * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types. + * Creates an Operation message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static * @param {Object.} object Plain object - * @returns {google.protobuf.DoubleValue} DoubleValue + * @returns {google.longrunning.Operation} Operation */ - DoubleValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.DoubleValue) + Operation.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.Operation) return object; - var message = new $root.google.protobuf.DoubleValue(); - if (object.value != null) - message.value = Number(object.value); + var message = new $root.google.longrunning.Operation(); + if (object.name != null) + message.name = String(object.name); + if (object.metadata != null) { + if (typeof object.metadata !== "object") + throw TypeError(".google.longrunning.Operation.metadata: object expected"); + message.metadata = $root.google.protobuf.Any.fromObject(object.metadata); + } + if (object.done != null) + message.done = Boolean(object.done); + if (object.error != null) { + if (typeof object.error !== "object") + throw TypeError(".google.longrunning.Operation.error: object expected"); + message.error = $root.google.rpc.Status.fromObject(object.error); + } + if (object.response != null) { + if (typeof object.response !== "object") + throw TypeError(".google.longrunning.Operation.response: object expected"); + message.response = $root.google.protobuf.Any.fromObject(object.response); + } return message; }; /** - * Creates a plain object from a DoubleValue message. Also converts values to other types if specified. + * Creates a plain object from an Operation message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @static - * @param {google.protobuf.DoubleValue} message DoubleValue + * @param {google.longrunning.Operation} message Operation * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DoubleValue.toObject = function toObject(message, options) { + Operation.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.value = 0; - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; + if (options.defaults) { + object.name = ""; + object.metadata = null; + object.done = false; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.metadata != null && message.hasOwnProperty("metadata")) + object.metadata = $root.google.protobuf.Any.toObject(message.metadata, options); + if (message.done != null && message.hasOwnProperty("done")) + object.done = message.done; + if (message.error != null && message.hasOwnProperty("error")) { + object.error = $root.google.rpc.Status.toObject(message.error, options); + if (options.oneofs) + object.result = "error"; + } + if (message.response != null && message.hasOwnProperty("response")) { + object.response = $root.google.protobuf.Any.toObject(message.response, options); + if (options.oneofs) + object.result = "response"; + } return object; }; /** - * Converts this DoubleValue to JSON. + * Converts this Operation to JSON. * @function toJSON - * @memberof google.protobuf.DoubleValue + * @memberof google.longrunning.Operation * @instance * @returns {Object.} JSON object */ - DoubleValue.prototype.toJSON = function toJSON() { + Operation.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return DoubleValue; + return Operation; })(); - protobuf.FloatValue = (function() { + longrunning.GetOperationRequest = (function() { /** - * Properties of a FloatValue. - * @memberof google.protobuf - * @interface IFloatValue - * @property {number|null} [value] FloatValue value + * Properties of a GetOperationRequest. + * @memberof google.longrunning + * @interface IGetOperationRequest + * @property {string|null} [name] GetOperationRequest name */ /** - * Constructs a new FloatValue. - * @memberof google.protobuf - * @classdesc Represents a FloatValue. - * @implements IFloatValue + * Constructs a new GetOperationRequest. + * @memberof google.longrunning + * @classdesc Represents a GetOperationRequest. + * @implements IGetOperationRequest * @constructor - * @param {google.protobuf.IFloatValue=} [properties] Properties to set + * @param {google.longrunning.IGetOperationRequest=} [properties] Properties to set */ - function FloatValue(properties) { + function GetOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -20989,75 +27702,75 @@ } /** - * FloatValue value. - * @member {number} value - * @memberof google.protobuf.FloatValue + * GetOperationRequest name. + * @member {string} name + * @memberof google.longrunning.GetOperationRequest * @instance */ - FloatValue.prototype.value = 0; + GetOperationRequest.prototype.name = ""; /** - * Creates a new FloatValue instance using the specified properties. + * Creates a new GetOperationRequest instance using the specified properties. * @function create - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static - * @param {google.protobuf.IFloatValue=} [properties] Properties to set - * @returns {google.protobuf.FloatValue} FloatValue instance + * @param {google.longrunning.IGetOperationRequest=} [properties] Properties to set + * @returns {google.longrunning.GetOperationRequest} GetOperationRequest instance */ - FloatValue.create = function create(properties) { - return new FloatValue(properties); + GetOperationRequest.create = function create(properties) { + return new GetOperationRequest(properties); }; /** - * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * Encodes the specified GetOperationRequest message. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages. * @function encode - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static - * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode + * @param {google.longrunning.IGetOperationRequest} message GetOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FloatValue.encode = function encode(message, writer) { + GetOperationRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 5 =*/13).float(message.value); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; }; /** - * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages. + * Encodes the specified GetOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static - * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode + * @param {google.longrunning.IGetOperationRequest} message GetOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FloatValue.encodeDelimited = function encodeDelimited(message, writer) { + GetOperationRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a FloatValue message from the specified reader or buffer. + * Decodes a GetOperationRequest message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.FloatValue} FloatValue + * @returns {google.longrunning.GetOperationRequest} GetOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FloatValue.decode = function decode(reader, length) { + GetOperationRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FloatValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.GetOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.float(); + message.name = reader.string(); break; default: reader.skipType(tag & 7); @@ -21068,107 +27781,110 @@ }; /** - * Decodes a FloatValue message from the specified reader or buffer, length delimited. + * Decodes a GetOperationRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.FloatValue} FloatValue + * @returns {google.longrunning.GetOperationRequest} GetOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FloatValue.decodeDelimited = function decodeDelimited(reader) { + GetOperationRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a FloatValue message. + * Verifies a GetOperationRequest message. * @function verify - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FloatValue.verify = function verify(message) { + GetOperationRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (typeof message.value !== "number") - return "value: number expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; return null; }; /** - * Creates a FloatValue message from a plain object. Also converts values to their respective internal types. + * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static * @param {Object.} object Plain object - * @returns {google.protobuf.FloatValue} FloatValue + * @returns {google.longrunning.GetOperationRequest} GetOperationRequest */ - FloatValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.FloatValue) + GetOperationRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.GetOperationRequest) return object; - var message = new $root.google.protobuf.FloatValue(); - if (object.value != null) - message.value = Number(object.value); + var message = new $root.google.longrunning.GetOperationRequest(); + if (object.name != null) + message.name = String(object.name); return message; }; /** - * Creates a plain object from a FloatValue message. Also converts values to other types if specified. + * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @static - * @param {google.protobuf.FloatValue} message FloatValue + * @param {google.longrunning.GetOperationRequest} message GetOperationRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FloatValue.toObject = function toObject(message, options) { + GetOperationRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) - object.value = 0; - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value; + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; return object; }; /** - * Converts this FloatValue to JSON. + * Converts this GetOperationRequest to JSON. * @function toJSON - * @memberof google.protobuf.FloatValue + * @memberof google.longrunning.GetOperationRequest * @instance * @returns {Object.} JSON object */ - FloatValue.prototype.toJSON = function toJSON() { + GetOperationRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return FloatValue; + return GetOperationRequest; })(); - protobuf.Int64Value = (function() { + longrunning.ListOperationsRequest = (function() { /** - * Properties of an Int64Value. - * @memberof google.protobuf - * @interface IInt64Value - * @property {number|Long|null} [value] Int64Value value + * Properties of a ListOperationsRequest. + * @memberof google.longrunning + * @interface IListOperationsRequest + * @property {string|null} [name] ListOperationsRequest name + * @property {string|null} [filter] ListOperationsRequest filter + * @property {number|null} [pageSize] ListOperationsRequest pageSize + * @property {string|null} [pageToken] ListOperationsRequest pageToken */ /** - * Constructs a new Int64Value. - * @memberof google.protobuf - * @classdesc Represents an Int64Value. - * @implements IInt64Value + * Constructs a new ListOperationsRequest. + * @memberof google.longrunning + * @classdesc Represents a ListOperationsRequest. + * @implements IListOperationsRequest * @constructor - * @param {google.protobuf.IInt64Value=} [properties] Properties to set + * @param {google.longrunning.IListOperationsRequest=} [properties] Properties to set */ - function Int64Value(properties) { + function ListOperationsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -21176,75 +27892,114 @@ } /** - * Int64Value value. - * @member {number|Long} value - * @memberof google.protobuf.Int64Value + * ListOperationsRequest name. + * @member {string} name + * @memberof google.longrunning.ListOperationsRequest * @instance */ - Int64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + ListOperationsRequest.prototype.name = ""; /** - * Creates a new Int64Value instance using the specified properties. + * ListOperationsRequest filter. + * @member {string} filter + * @memberof google.longrunning.ListOperationsRequest + * @instance + */ + ListOperationsRequest.prototype.filter = ""; + + /** + * ListOperationsRequest pageSize. + * @member {number} pageSize + * @memberof google.longrunning.ListOperationsRequest + * @instance + */ + ListOperationsRequest.prototype.pageSize = 0; + + /** + * ListOperationsRequest pageToken. + * @member {string} pageToken + * @memberof google.longrunning.ListOperationsRequest + * @instance + */ + ListOperationsRequest.prototype.pageToken = ""; + + /** + * Creates a new ListOperationsRequest instance using the specified properties. * @function create - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static - * @param {google.protobuf.IInt64Value=} [properties] Properties to set - * @returns {google.protobuf.Int64Value} Int64Value instance + * @param {google.longrunning.IListOperationsRequest=} [properties] Properties to set + * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest instance */ - Int64Value.create = function create(properties) { - return new Int64Value(properties); + ListOperationsRequest.create = function create(properties) { + return new ListOperationsRequest(properties); }; /** - * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * Encodes the specified ListOperationsRequest message. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages. * @function encode - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static - * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {google.longrunning.IListOperationsRequest} message ListOperationsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Int64Value.encode = function encode(message, writer) { + ListOperationsRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.value); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.filter); + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.pageSize); + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.pageToken); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.name); return writer; }; /** - * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages. + * Encodes the specified ListOperationsRequest message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static - * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode + * @param {google.longrunning.IListOperationsRequest} message ListOperationsRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Int64Value.encodeDelimited = function encodeDelimited(message, writer) { + ListOperationsRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an Int64Value message from the specified reader or buffer. + * Decodes a ListOperationsRequest message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Int64Value} Int64Value + * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int64Value.decode = function decode(reader, length) { + ListOperationsRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int64Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 4: + message.name = reader.string(); + break; case 1: - message.value = reader.int64(); + message.filter = reader.string(); + break; + case 2: + message.pageSize = reader.int32(); + break; + case 3: + message.pageToken = reader.string(); break; default: reader.skipType(tag & 7); @@ -21255,121 +28010,134 @@ }; /** - * Decodes an Int64Value message from the specified reader or buffer, length delimited. + * Decodes a ListOperationsRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Int64Value} Int64Value + * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int64Value.decodeDelimited = function decodeDelimited(reader) { + ListOperationsRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an Int64Value message. + * Verifies a ListOperationsRequest message. * @function verify - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Int64Value.verify = function verify(message) { + ListOperationsRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) - return "value: integer|Long expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.filter != null && message.hasOwnProperty("filter")) + if (!$util.isString(message.filter)) + return "filter: string expected"; + if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (!$util.isInteger(message.pageSize)) + return "pageSize: integer expected"; + if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (!$util.isString(message.pageToken)) + return "pageToken: string expected"; return null; }; /** - * Creates an Int64Value message from a plain object. Also converts values to their respective internal types. + * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static * @param {Object.} object Plain object - * @returns {google.protobuf.Int64Value} Int64Value + * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest */ - Int64Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Int64Value) + ListOperationsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.ListOperationsRequest) return object; - var message = new $root.google.protobuf.Int64Value(); - if (object.value != null) - if ($util.Long) - (message.value = $util.Long.fromValue(object.value)).unsigned = false; - else if (typeof object.value === "string") - message.value = parseInt(object.value, 10); - else if (typeof object.value === "number") - message.value = object.value; - else if (typeof object.value === "object") - message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(); + var message = new $root.google.longrunning.ListOperationsRequest(); + if (object.name != null) + message.name = String(object.name); + if (object.filter != null) + message.filter = String(object.filter); + if (object.pageSize != null) + message.pageSize = object.pageSize | 0; + if (object.pageToken != null) + message.pageToken = String(object.pageToken); return message; }; /** - * Creates a plain object from an Int64Value message. Also converts values to other types if specified. + * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @static - * @param {google.protobuf.Int64Value} message Int64Value + * @param {google.longrunning.ListOperationsRequest} message ListOperationsRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Int64Value.toObject = function toObject(message, options) { + ListOperationsRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.value = options.longs === String ? "0" : 0; - if (message.value != null && message.hasOwnProperty("value")) - if (typeof message.value === "number") - object.value = options.longs === String ? String(message.value) : message.value; - else - object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber() : message.value; + if (options.defaults) { + object.filter = ""; + object.pageSize = 0; + object.pageToken = ""; + object.name = ""; + } + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = message.filter; + if (message.pageSize != null && message.hasOwnProperty("pageSize")) + object.pageSize = message.pageSize; + if (message.pageToken != null && message.hasOwnProperty("pageToken")) + object.pageToken = message.pageToken; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; return object; }; /** - * Converts this Int64Value to JSON. + * Converts this ListOperationsRequest to JSON. * @function toJSON - * @memberof google.protobuf.Int64Value + * @memberof google.longrunning.ListOperationsRequest * @instance * @returns {Object.} JSON object */ - Int64Value.prototype.toJSON = function toJSON() { + ListOperationsRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Int64Value; + return ListOperationsRequest; })(); - protobuf.UInt64Value = (function() { + longrunning.ListOperationsResponse = (function() { - /** - * Properties of a UInt64Value. - * @memberof google.protobuf - * @interface IUInt64Value - * @property {number|Long|null} [value] UInt64Value value + /** + * Properties of a ListOperationsResponse. + * @memberof google.longrunning + * @interface IListOperationsResponse + * @property {Array.|null} [operations] ListOperationsResponse operations + * @property {string|null} [nextPageToken] ListOperationsResponse nextPageToken */ /** - * Constructs a new UInt64Value. - * @memberof google.protobuf - * @classdesc Represents a UInt64Value. - * @implements IUInt64Value + * Constructs a new ListOperationsResponse. + * @memberof google.longrunning + * @classdesc Represents a ListOperationsResponse. + * @implements IListOperationsResponse * @constructor - * @param {google.protobuf.IUInt64Value=} [properties] Properties to set + * @param {google.longrunning.IListOperationsResponse=} [properties] Properties to set */ - function UInt64Value(properties) { + function ListOperationsResponse(properties) { + this.operations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -21377,75 +28145,91 @@ } /** - * UInt64Value value. - * @member {number|Long} value - * @memberof google.protobuf.UInt64Value + * ListOperationsResponse operations. + * @member {Array.} operations + * @memberof google.longrunning.ListOperationsResponse * @instance */ - UInt64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + ListOperationsResponse.prototype.operations = $util.emptyArray; /** - * Creates a new UInt64Value instance using the specified properties. + * ListOperationsResponse nextPageToken. + * @member {string} nextPageToken + * @memberof google.longrunning.ListOperationsResponse + * @instance + */ + ListOperationsResponse.prototype.nextPageToken = ""; + + /** + * Creates a new ListOperationsResponse instance using the specified properties. * @function create - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static - * @param {google.protobuf.IUInt64Value=} [properties] Properties to set - * @returns {google.protobuf.UInt64Value} UInt64Value instance + * @param {google.longrunning.IListOperationsResponse=} [properties] Properties to set + * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse instance */ - UInt64Value.create = function create(properties) { - return new UInt64Value(properties); + ListOperationsResponse.create = function create(properties) { + return new ListOperationsResponse(properties); }; /** - * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * Encodes the specified ListOperationsResponse message. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages. * @function encode - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static - * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode + * @param {google.longrunning.IListOperationsResponse} message ListOperationsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UInt64Value.encode = function encode(message, writer) { + ListOperationsResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.value); + if (message.operations != null && message.operations.length) + for (var i = 0; i < message.operations.length; ++i) + $root.google.longrunning.Operation.encode(message.operations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; }; /** - * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages. + * Encodes the specified ListOperationsResponse message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static - * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode + * @param {google.longrunning.IListOperationsResponse} message ListOperationsResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UInt64Value.encodeDelimited = function encodeDelimited(message, writer) { + ListOperationsResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a UInt64Value message from the specified reader or buffer. + * Decodes a ListOperationsResponse message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.UInt64Value} UInt64Value + * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt64Value.decode = function decode(reader, length) { + ListOperationsResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt64Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.uint64(); + if (!(message.operations && message.operations.length)) + message.operations = []; + message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32())); + break; + case 2: + message.nextPageToken = reader.string(); break; default: reader.skipType(tag & 7); @@ -21456,121 +28240,133 @@ }; /** - * Decodes a UInt64Value message from the specified reader or buffer, length delimited. + * Decodes a ListOperationsResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.UInt64Value} UInt64Value + * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt64Value.decodeDelimited = function decodeDelimited(reader) { + ListOperationsResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a UInt64Value message. + * Verifies a ListOperationsResponse message. * @function verify - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UInt64Value.verify = function verify(message) { + ListOperationsResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) - return "value: integer|Long expected"; + if (message.operations != null && message.hasOwnProperty("operations")) { + if (!Array.isArray(message.operations)) + return "operations: array expected"; + for (var i = 0; i < message.operations.length; ++i) { + var error = $root.google.longrunning.Operation.verify(message.operations[i]); + if (error) + return "operations." + error; + } + } + if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (!$util.isString(message.nextPageToken)) + return "nextPageToken: string expected"; return null; }; /** - * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types. + * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static * @param {Object.} object Plain object - * @returns {google.protobuf.UInt64Value} UInt64Value + * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse */ - UInt64Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.UInt64Value) + ListOperationsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.ListOperationsResponse) return object; - var message = new $root.google.protobuf.UInt64Value(); - if (object.value != null) - if ($util.Long) - (message.value = $util.Long.fromValue(object.value)).unsigned = true; - else if (typeof object.value === "string") - message.value = parseInt(object.value, 10); - else if (typeof object.value === "number") - message.value = object.value; - else if (typeof object.value === "object") - message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(true); + var message = new $root.google.longrunning.ListOperationsResponse(); + if (object.operations) { + if (!Array.isArray(object.operations)) + throw TypeError(".google.longrunning.ListOperationsResponse.operations: array expected"); + message.operations = []; + for (var i = 0; i < object.operations.length; ++i) { + if (typeof object.operations[i] !== "object") + throw TypeError(".google.longrunning.ListOperationsResponse.operations: object expected"); + message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i]); + } + } + if (object.nextPageToken != null) + message.nextPageToken = String(object.nextPageToken); return message; }; /** - * Creates a plain object from a UInt64Value message. Also converts values to other types if specified. + * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @static - * @param {google.protobuf.UInt64Value} message UInt64Value + * @param {google.longrunning.ListOperationsResponse} message ListOperationsResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UInt64Value.toObject = function toObject(message, options) { + ListOperationsResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.operations = []; if (options.defaults) - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.value = options.longs === String ? "0" : 0; - if (message.value != null && message.hasOwnProperty("value")) - if (typeof message.value === "number") - object.value = options.longs === String ? String(message.value) : message.value; - else - object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber(true) : message.value; + object.nextPageToken = ""; + if (message.operations && message.operations.length) { + object.operations = []; + for (var j = 0; j < message.operations.length; ++j) + object.operations[j] = $root.google.longrunning.Operation.toObject(message.operations[j], options); + } + if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + object.nextPageToken = message.nextPageToken; return object; }; /** - * Converts this UInt64Value to JSON. + * Converts this ListOperationsResponse to JSON. * @function toJSON - * @memberof google.protobuf.UInt64Value + * @memberof google.longrunning.ListOperationsResponse * @instance * @returns {Object.} JSON object */ - UInt64Value.prototype.toJSON = function toJSON() { + ListOperationsResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return UInt64Value; + return ListOperationsResponse; })(); - protobuf.Int32Value = (function() { + longrunning.CancelOperationRequest = (function() { /** - * Properties of an Int32Value. - * @memberof google.protobuf - * @interface IInt32Value - * @property {number|null} [value] Int32Value value + * Properties of a CancelOperationRequest. + * @memberof google.longrunning + * @interface ICancelOperationRequest + * @property {string|null} [name] CancelOperationRequest name */ /** - * Constructs a new Int32Value. - * @memberof google.protobuf - * @classdesc Represents an Int32Value. - * @implements IInt32Value + * Constructs a new CancelOperationRequest. + * @memberof google.longrunning + * @classdesc Represents a CancelOperationRequest. + * @implements ICancelOperationRequest * @constructor - * @param {google.protobuf.IInt32Value=} [properties] Properties to set + * @param {google.longrunning.ICancelOperationRequest=} [properties] Properties to set */ - function Int32Value(properties) { + function CancelOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -21578,75 +28374,75 @@ } /** - * Int32Value value. - * @member {number} value - * @memberof google.protobuf.Int32Value + * CancelOperationRequest name. + * @member {string} name + * @memberof google.longrunning.CancelOperationRequest * @instance */ - Int32Value.prototype.value = 0; + CancelOperationRequest.prototype.name = ""; /** - * Creates a new Int32Value instance using the specified properties. + * Creates a new CancelOperationRequest instance using the specified properties. * @function create - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static - * @param {google.protobuf.IInt32Value=} [properties] Properties to set - * @returns {google.protobuf.Int32Value} Int32Value instance + * @param {google.longrunning.ICancelOperationRequest=} [properties] Properties to set + * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest instance */ - Int32Value.create = function create(properties) { - return new Int32Value(properties); + CancelOperationRequest.create = function create(properties) { + return new CancelOperationRequest(properties); }; /** - * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * Encodes the specified CancelOperationRequest message. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages. * @function encode - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static - * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {google.longrunning.ICancelOperationRequest} message CancelOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Int32Value.encode = function encode(message, writer) { + CancelOperationRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; }; /** - * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages. + * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static - * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode + * @param {google.longrunning.ICancelOperationRequest} message CancelOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Int32Value.encodeDelimited = function encodeDelimited(message, writer) { + CancelOperationRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an Int32Value message from the specified reader or buffer. + * Decodes a CancelOperationRequest message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Int32Value} Int32Value + * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int32Value.decode = function decode(reader, length) { + CancelOperationRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int32Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.CancelOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.int32(); + message.name = reader.string(); break; default: reader.skipType(tag & 7); @@ -21657,107 +28453,107 @@ }; /** - * Decodes an Int32Value message from the specified reader or buffer, length delimited. + * Decodes a CancelOperationRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Int32Value} Int32Value + * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int32Value.decodeDelimited = function decodeDelimited(reader) { + CancelOperationRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an Int32Value message. + * Verifies a CancelOperationRequest message. * @function verify - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Int32Value.verify = function verify(message) { + CancelOperationRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isInteger(message.value)) - return "value: integer expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; return null; }; /** - * Creates an Int32Value message from a plain object. Also converts values to their respective internal types. + * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static * @param {Object.} object Plain object - * @returns {google.protobuf.Int32Value} Int32Value + * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest */ - Int32Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Int32Value) + CancelOperationRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.CancelOperationRequest) return object; - var message = new $root.google.protobuf.Int32Value(); - if (object.value != null) - message.value = object.value | 0; + var message = new $root.google.longrunning.CancelOperationRequest(); + if (object.name != null) + message.name = String(object.name); return message; }; /** - * Creates a plain object from an Int32Value message. Also converts values to other types if specified. + * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @static - * @param {google.protobuf.Int32Value} message Int32Value + * @param {google.longrunning.CancelOperationRequest} message CancelOperationRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Int32Value.toObject = function toObject(message, options) { + CancelOperationRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) - object.value = 0; - if (message.value != null && message.hasOwnProperty("value")) - object.value = message.value; + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; return object; }; /** - * Converts this Int32Value to JSON. + * Converts this CancelOperationRequest to JSON. * @function toJSON - * @memberof google.protobuf.Int32Value + * @memberof google.longrunning.CancelOperationRequest * @instance * @returns {Object.} JSON object */ - Int32Value.prototype.toJSON = function toJSON() { + CancelOperationRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return Int32Value; + return CancelOperationRequest; })(); - protobuf.UInt32Value = (function() { + longrunning.DeleteOperationRequest = (function() { /** - * Properties of a UInt32Value. - * @memberof google.protobuf - * @interface IUInt32Value - * @property {number|null} [value] UInt32Value value + * Properties of a DeleteOperationRequest. + * @memberof google.longrunning + * @interface IDeleteOperationRequest + * @property {string|null} [name] DeleteOperationRequest name */ /** - * Constructs a new UInt32Value. - * @memberof google.protobuf - * @classdesc Represents a UInt32Value. - * @implements IUInt32Value + * Constructs a new DeleteOperationRequest. + * @memberof google.longrunning + * @classdesc Represents a DeleteOperationRequest. + * @implements IDeleteOperationRequest * @constructor - * @param {google.protobuf.IUInt32Value=} [properties] Properties to set + * @param {google.longrunning.IDeleteOperationRequest=} [properties] Properties to set */ - function UInt32Value(properties) { + function DeleteOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -21765,75 +28561,75 @@ } /** - * UInt32Value value. - * @member {number} value - * @memberof google.protobuf.UInt32Value + * DeleteOperationRequest name. + * @member {string} name + * @memberof google.longrunning.DeleteOperationRequest * @instance */ - UInt32Value.prototype.value = 0; + DeleteOperationRequest.prototype.name = ""; /** - * Creates a new UInt32Value instance using the specified properties. + * Creates a new DeleteOperationRequest instance using the specified properties. * @function create - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static - * @param {google.protobuf.IUInt32Value=} [properties] Properties to set - * @returns {google.protobuf.UInt32Value} UInt32Value instance + * @param {google.longrunning.IDeleteOperationRequest=} [properties] Properties to set + * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest instance */ - UInt32Value.create = function create(properties) { - return new UInt32Value(properties); + DeleteOperationRequest.create = function create(properties) { + return new DeleteOperationRequest(properties); }; /** - * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * Encodes the specified DeleteOperationRequest message. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages. * @function encode - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static - * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode + * @param {google.longrunning.IDeleteOperationRequest} message DeleteOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UInt32Value.encode = function encode(message, writer) { + DeleteOperationRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; }; /** - * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages. + * Encodes the specified DeleteOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static - * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode + * @param {google.longrunning.IDeleteOperationRequest} message DeleteOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UInt32Value.encodeDelimited = function encodeDelimited(message, writer) { + DeleteOperationRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a UInt32Value message from the specified reader or buffer. + * Decodes a DeleteOperationRequest message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.UInt32Value} UInt32Value + * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt32Value.decode = function decode(reader, length) { + DeleteOperationRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt32Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.DeleteOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.uint32(); + message.name = reader.string(); break; default: reader.skipType(tag & 7); @@ -21844,107 +28640,108 @@ }; /** - * Decodes a UInt32Value message from the specified reader or buffer, length delimited. + * Decodes a DeleteOperationRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.UInt32Value} UInt32Value + * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt32Value.decodeDelimited = function decodeDelimited(reader) { + DeleteOperationRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a UInt32Value message. + * Verifies a DeleteOperationRequest message. * @function verify - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UInt32Value.verify = function verify(message) { + DeleteOperationRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isInteger(message.value)) - return "value: integer expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; return null; }; /** - * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types. + * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static * @param {Object.} object Plain object - * @returns {google.protobuf.UInt32Value} UInt32Value + * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest */ - UInt32Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.UInt32Value) + DeleteOperationRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.DeleteOperationRequest) return object; - var message = new $root.google.protobuf.UInt32Value(); - if (object.value != null) - message.value = object.value >>> 0; + var message = new $root.google.longrunning.DeleteOperationRequest(); + if (object.name != null) + message.name = String(object.name); return message; }; /** - * Creates a plain object from a UInt32Value message. Also converts values to other types if specified. + * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @static - * @param {google.protobuf.UInt32Value} message UInt32Value + * @param {google.longrunning.DeleteOperationRequest} message DeleteOperationRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UInt32Value.toObject = function toObject(message, options) { + DeleteOperationRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) - object.value = 0; - if (message.value != null && message.hasOwnProperty("value")) - object.value = message.value; + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; return object; }; /** - * Converts this UInt32Value to JSON. + * Converts this DeleteOperationRequest to JSON. * @function toJSON - * @memberof google.protobuf.UInt32Value + * @memberof google.longrunning.DeleteOperationRequest * @instance * @returns {Object.} JSON object */ - UInt32Value.prototype.toJSON = function toJSON() { + DeleteOperationRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return UInt32Value; + return DeleteOperationRequest; })(); - protobuf.BoolValue = (function() { + longrunning.WaitOperationRequest = (function() { /** - * Properties of a BoolValue. - * @memberof google.protobuf - * @interface IBoolValue - * @property {boolean|null} [value] BoolValue value + * Properties of a WaitOperationRequest. + * @memberof google.longrunning + * @interface IWaitOperationRequest + * @property {string|null} [name] WaitOperationRequest name + * @property {google.protobuf.IDuration|null} [timeout] WaitOperationRequest timeout */ /** - * Constructs a new BoolValue. - * @memberof google.protobuf - * @classdesc Represents a BoolValue. - * @implements IBoolValue + * Constructs a new WaitOperationRequest. + * @memberof google.longrunning + * @classdesc Represents a WaitOperationRequest. + * @implements IWaitOperationRequest * @constructor - * @param {google.protobuf.IBoolValue=} [properties] Properties to set + * @param {google.longrunning.IWaitOperationRequest=} [properties] Properties to set */ - function BoolValue(properties) { + function WaitOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -21952,75 +28749,88 @@ } /** - * BoolValue value. - * @member {boolean} value - * @memberof google.protobuf.BoolValue + * WaitOperationRequest name. + * @member {string} name + * @memberof google.longrunning.WaitOperationRequest + * @instance + */ + WaitOperationRequest.prototype.name = ""; + + /** + * WaitOperationRequest timeout. + * @member {google.protobuf.IDuration|null|undefined} timeout + * @memberof google.longrunning.WaitOperationRequest * @instance */ - BoolValue.prototype.value = false; + WaitOperationRequest.prototype.timeout = null; /** - * Creates a new BoolValue instance using the specified properties. + * Creates a new WaitOperationRequest instance using the specified properties. * @function create - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static - * @param {google.protobuf.IBoolValue=} [properties] Properties to set - * @returns {google.protobuf.BoolValue} BoolValue instance + * @param {google.longrunning.IWaitOperationRequest=} [properties] Properties to set + * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest instance */ - BoolValue.create = function create(properties) { - return new BoolValue(properties); + WaitOperationRequest.create = function create(properties) { + return new WaitOperationRequest(properties); }; /** - * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * Encodes the specified WaitOperationRequest message. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages. * @function encode - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static - * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode + * @param {google.longrunning.IWaitOperationRequest} message WaitOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BoolValue.encode = function encode(message, writer) { + WaitOperationRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.timeout != null && Object.hasOwnProperty.call(message, "timeout")) + $root.google.protobuf.Duration.encode(message.timeout, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages. + * Encodes the specified WaitOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static - * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode + * @param {google.longrunning.IWaitOperationRequest} message WaitOperationRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BoolValue.encodeDelimited = function encodeDelimited(message, writer) { + WaitOperationRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a BoolValue message from the specified reader or buffer. + * Decodes a WaitOperationRequest message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.BoolValue} BoolValue + * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BoolValue.decode = function decode(reader, length) { + WaitOperationRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BoolValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.WaitOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.bool(); + message.name = reader.string(); + break; + case 2: + message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -22031,107 +28841,122 @@ }; /** - * Decodes a BoolValue message from the specified reader or buffer, length delimited. + * Decodes a WaitOperationRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.BoolValue} BoolValue + * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BoolValue.decodeDelimited = function decodeDelimited(reader) { + WaitOperationRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a BoolValue message. + * Verifies a WaitOperationRequest message. * @function verify - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BoolValue.verify = function verify(message) { + WaitOperationRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (typeof message.value !== "boolean") - return "value: boolean expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.timeout != null && message.hasOwnProperty("timeout")) { + var error = $root.google.protobuf.Duration.verify(message.timeout); + if (error) + return "timeout." + error; + } return null; }; /** - * Creates a BoolValue message from a plain object. Also converts values to their respective internal types. + * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static * @param {Object.} object Plain object - * @returns {google.protobuf.BoolValue} BoolValue + * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest */ - BoolValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.BoolValue) + WaitOperationRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.WaitOperationRequest) return object; - var message = new $root.google.protobuf.BoolValue(); - if (object.value != null) - message.value = Boolean(object.value); + var message = new $root.google.longrunning.WaitOperationRequest(); + if (object.name != null) + message.name = String(object.name); + if (object.timeout != null) { + if (typeof object.timeout !== "object") + throw TypeError(".google.longrunning.WaitOperationRequest.timeout: object expected"); + message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout); + } return message; }; /** - * Creates a plain object from a BoolValue message. Also converts values to other types if specified. + * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @static - * @param {google.protobuf.BoolValue} message BoolValue + * @param {google.longrunning.WaitOperationRequest} message WaitOperationRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - BoolValue.toObject = function toObject(message, options) { + WaitOperationRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.value = false; - if (message.value != null && message.hasOwnProperty("value")) - object.value = message.value; + if (options.defaults) { + object.name = ""; + object.timeout = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.timeout != null && message.hasOwnProperty("timeout")) + object.timeout = $root.google.protobuf.Duration.toObject(message.timeout, options); return object; }; /** - * Converts this BoolValue to JSON. + * Converts this WaitOperationRequest to JSON. * @function toJSON - * @memberof google.protobuf.BoolValue + * @memberof google.longrunning.WaitOperationRequest * @instance * @returns {Object.} JSON object */ - BoolValue.prototype.toJSON = function toJSON() { + WaitOperationRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return BoolValue; + return WaitOperationRequest; })(); - protobuf.StringValue = (function() { + longrunning.OperationInfo = (function() { /** - * Properties of a StringValue. - * @memberof google.protobuf - * @interface IStringValue - * @property {string|null} [value] StringValue value + * Properties of an OperationInfo. + * @memberof google.longrunning + * @interface IOperationInfo + * @property {string|null} [responseType] OperationInfo responseType + * @property {string|null} [metadataType] OperationInfo metadataType */ /** - * Constructs a new StringValue. - * @memberof google.protobuf - * @classdesc Represents a StringValue. - * @implements IStringValue + * Constructs a new OperationInfo. + * @memberof google.longrunning + * @classdesc Represents an OperationInfo. + * @implements IOperationInfo * @constructor - * @param {google.protobuf.IStringValue=} [properties] Properties to set + * @param {google.longrunning.IOperationInfo=} [properties] Properties to set */ - function StringValue(properties) { + function OperationInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -22139,75 +28964,88 @@ } /** - * StringValue value. - * @member {string} value - * @memberof google.protobuf.StringValue + * OperationInfo responseType. + * @member {string} responseType + * @memberof google.longrunning.OperationInfo * @instance */ - StringValue.prototype.value = ""; + OperationInfo.prototype.responseType = ""; /** - * Creates a new StringValue instance using the specified properties. + * OperationInfo metadataType. + * @member {string} metadataType + * @memberof google.longrunning.OperationInfo + * @instance + */ + OperationInfo.prototype.metadataType = ""; + + /** + * Creates a new OperationInfo instance using the specified properties. * @function create - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static - * @param {google.protobuf.IStringValue=} [properties] Properties to set - * @returns {google.protobuf.StringValue} StringValue instance + * @param {google.longrunning.IOperationInfo=} [properties] Properties to set + * @returns {google.longrunning.OperationInfo} OperationInfo instance */ - StringValue.create = function create(properties) { - return new StringValue(properties); + OperationInfo.create = function create(properties) { + return new OperationInfo(properties); }; /** - * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * Encodes the specified OperationInfo message. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages. * @function encode - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static - * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode + * @param {google.longrunning.IOperationInfo} message OperationInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StringValue.encode = function encode(message, writer) { + OperationInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.value); + if (message.responseType != null && Object.hasOwnProperty.call(message, "responseType")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.responseType); + if (message.metadataType != null && Object.hasOwnProperty.call(message, "metadataType")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.metadataType); return writer; }; /** - * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages. + * Encodes the specified OperationInfo message, length delimited. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static - * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode + * @param {google.longrunning.IOperationInfo} message OperationInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StringValue.encodeDelimited = function encodeDelimited(message, writer) { + OperationInfo.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a StringValue message from the specified reader or buffer. + * Decodes an OperationInfo message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.StringValue} StringValue + * @returns {google.longrunning.OperationInfo} OperationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StringValue.decode = function decode(reader, length) { + OperationInfo.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.StringValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.OperationInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.string(); + message.responseType = reader.string(); + break; + case 2: + message.metadataType = reader.string(); break; default: reader.skipType(tag & 7); @@ -22218,107 +29056,131 @@ }; /** - * Decodes a StringValue message from the specified reader or buffer, length delimited. + * Decodes an OperationInfo message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.StringValue} StringValue + * @returns {google.longrunning.OperationInfo} OperationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StringValue.decodeDelimited = function decodeDelimited(reader) { + OperationInfo.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a StringValue message. + * Verifies an OperationInfo message. * @function verify - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StringValue.verify = function verify(message) { + OperationInfo.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!$util.isString(message.value)) - return "value: string expected"; + if (message.responseType != null && message.hasOwnProperty("responseType")) + if (!$util.isString(message.responseType)) + return "responseType: string expected"; + if (message.metadataType != null && message.hasOwnProperty("metadataType")) + if (!$util.isString(message.metadataType)) + return "metadataType: string expected"; return null; }; /** - * Creates a StringValue message from a plain object. Also converts values to their respective internal types. + * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static * @param {Object.} object Plain object - * @returns {google.protobuf.StringValue} StringValue + * @returns {google.longrunning.OperationInfo} OperationInfo */ - StringValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.StringValue) + OperationInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.longrunning.OperationInfo) return object; - var message = new $root.google.protobuf.StringValue(); - if (object.value != null) - message.value = String(object.value); + var message = new $root.google.longrunning.OperationInfo(); + if (object.responseType != null) + message.responseType = String(object.responseType); + if (object.metadataType != null) + message.metadataType = String(object.metadataType); return message; }; /** - * Creates a plain object from a StringValue message. Also converts values to other types if specified. + * Creates a plain object from an OperationInfo message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @static - * @param {google.protobuf.StringValue} message StringValue + * @param {google.longrunning.OperationInfo} message OperationInfo * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - StringValue.toObject = function toObject(message, options) { + OperationInfo.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.value = ""; - if (message.value != null && message.hasOwnProperty("value")) - object.value = message.value; + if (options.defaults) { + object.responseType = ""; + object.metadataType = ""; + } + if (message.responseType != null && message.hasOwnProperty("responseType")) + object.responseType = message.responseType; + if (message.metadataType != null && message.hasOwnProperty("metadataType")) + object.metadataType = message.metadataType; return object; }; /** - * Converts this StringValue to JSON. + * Converts this OperationInfo to JSON. * @function toJSON - * @memberof google.protobuf.StringValue + * @memberof google.longrunning.OperationInfo * @instance * @returns {Object.} JSON object */ - StringValue.prototype.toJSON = function toJSON() { + OperationInfo.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return StringValue; + return OperationInfo; })(); - protobuf.BytesValue = (function() { + return longrunning; + })(); + + google.rpc = (function() { + + /** + * Namespace rpc. + * @memberof google + * @namespace + */ + var rpc = {}; + + rpc.Status = (function() { /** - * Properties of a BytesValue. - * @memberof google.protobuf - * @interface IBytesValue - * @property {Uint8Array|null} [value] BytesValue value + * Properties of a Status. + * @memberof google.rpc + * @interface IStatus + * @property {number|null} [code] Status code + * @property {string|null} [message] Status message + * @property {Array.|null} [details] Status details */ /** - * Constructs a new BytesValue. - * @memberof google.protobuf - * @classdesc Represents a BytesValue. - * @implements IBytesValue + * Constructs a new Status. + * @memberof google.rpc + * @classdesc Represents a Status. + * @implements IStatus * @constructor - * @param {google.protobuf.IBytesValue=} [properties] Properties to set + * @param {google.rpc.IStatus=} [properties] Properties to set */ - function BytesValue(properties) { + function Status(properties) { + this.details = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -22326,75 +29188,104 @@ } /** - * BytesValue value. - * @member {Uint8Array} value - * @memberof google.protobuf.BytesValue + * Status code. + * @member {number} code + * @memberof google.rpc.Status * @instance */ - BytesValue.prototype.value = $util.newBuffer([]); + Status.prototype.code = 0; /** - * Creates a new BytesValue instance using the specified properties. + * Status message. + * @member {string} message + * @memberof google.rpc.Status + * @instance + */ + Status.prototype.message = ""; + + /** + * Status details. + * @member {Array.} details + * @memberof google.rpc.Status + * @instance + */ + Status.prototype.details = $util.emptyArray; + + /** + * Creates a new Status instance using the specified properties. * @function create - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static - * @param {google.protobuf.IBytesValue=} [properties] Properties to set - * @returns {google.protobuf.BytesValue} BytesValue instance + * @param {google.rpc.IStatus=} [properties] Properties to set + * @returns {google.rpc.Status} Status instance */ - BytesValue.create = function create(properties) { - return new BytesValue(properties); + Status.create = function create(properties) { + return new Status(properties); }; /** - * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * Encodes the specified Status message. Does not implicitly {@link google.rpc.Status.verify|verify} messages. * @function encode - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static - * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode + * @param {google.rpc.IStatus} message Status message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BytesValue.encode = function encode(message, writer) { + Status.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value); + if (message.code != null && Object.hasOwnProperty.call(message, "code")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code); + if (message.message != null && Object.hasOwnProperty.call(message, "message")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); + if (message.details != null && message.details.length) + for (var i = 0; i < message.details.length; ++i) + $root.google.protobuf.Any.encode(message.details[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages. + * Encodes the specified Status message, length delimited. Does not implicitly {@link google.rpc.Status.verify|verify} messages. * @function encodeDelimited - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static - * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode + * @param {google.rpc.IStatus} message Status message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BytesValue.encodeDelimited = function encodeDelimited(message, writer) { + Status.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a BytesValue message from the specified reader or buffer. + * Decodes a Status message from the specified reader or buffer. * @function decode - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.BytesValue} BytesValue + * @returns {google.rpc.Status} Status * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BytesValue.decode = function decode(reader, length) { + Status.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BytesValue(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.rpc.Status(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.value = reader.bytes(); + message.code = reader.int32(); + break; + case 2: + message.message = reader.string(); + break; + case 3: + if (!(message.details && message.details.length)) + message.details = []; + message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); @@ -22405,99 +29296,125 @@ }; /** - * Decodes a BytesValue message from the specified reader or buffer, length delimited. + * Decodes a Status message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.BytesValue} BytesValue + * @returns {google.rpc.Status} Status * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BytesValue.decodeDelimited = function decodeDelimited(reader) { + Status.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a BytesValue message. + * Verifies a Status message. * @function verify - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BytesValue.verify = function verify(message) { + Status.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) - return "value: buffer expected"; + if (message.code != null && message.hasOwnProperty("code")) + if (!$util.isInteger(message.code)) + return "code: integer expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; + if (message.details != null && message.hasOwnProperty("details")) { + if (!Array.isArray(message.details)) + return "details: array expected"; + for (var i = 0; i < message.details.length; ++i) { + var error = $root.google.protobuf.Any.verify(message.details[i]); + if (error) + return "details." + error; + } + } return null; }; /** - * Creates a BytesValue message from a plain object. Also converts values to their respective internal types. + * Creates a Status message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static * @param {Object.} object Plain object - * @returns {google.protobuf.BytesValue} BytesValue + * @returns {google.rpc.Status} Status */ - BytesValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.BytesValue) + Status.fromObject = function fromObject(object) { + if (object instanceof $root.google.rpc.Status) return object; - var message = new $root.google.protobuf.BytesValue(); - if (object.value != null) - if (typeof object.value === "string") - $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length) - message.value = object.value; + var message = new $root.google.rpc.Status(); + if (object.code != null) + message.code = object.code | 0; + if (object.message != null) + message.message = String(object.message); + if (object.details) { + if (!Array.isArray(object.details)) + throw TypeError(".google.rpc.Status.details: array expected"); + message.details = []; + for (var i = 0; i < object.details.length; ++i) { + if (typeof object.details[i] !== "object") + throw TypeError(".google.rpc.Status.details: object expected"); + message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i]); + } + } return message; }; /** - * Creates a plain object from a BytesValue message. Also converts values to other types if specified. + * Creates a plain object from a Status message. Also converts values to other types if specified. * @function toObject - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @static - * @param {google.protobuf.BytesValue} message BytesValue + * @param {google.rpc.Status} message Status * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - BytesValue.toObject = function toObject(message, options) { + Status.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - if (options.bytes === String) - object.value = ""; - else { - object.value = []; - if (options.bytes !== Array) - object.value = $util.newBuffer(object.value); - } - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; + if (options.arrays || options.defaults) + object.details = []; + if (options.defaults) { + object.code = 0; + object.message = ""; + } + if (message.code != null && message.hasOwnProperty("code")) + object.code = message.code; + if (message.message != null && message.hasOwnProperty("message")) + object.message = message.message; + if (message.details && message.details.length) { + object.details = []; + for (var j = 0; j < message.details.length; ++j) + object.details[j] = $root.google.protobuf.Any.toObject(message.details[j], options); + } return object; }; /** - * Converts this BytesValue to JSON. + * Converts this Status to JSON. * @function toJSON - * @memberof google.protobuf.BytesValue + * @memberof google.rpc.Status * @instance * @returns {Object.} JSON object */ - BytesValue.prototype.toJSON = function toJSON() { + Status.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; - return BytesValue; + return Status; })(); - return protobuf; + return rpc; })(); google.type = (function() { diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 6896bb4c9ab..69e5ece463b 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -4,6 +4,401 @@ "nested": { "datastore": { "nested": { + "admin": { + "nested": { + "v1": { + "options": { + "csharp_namespace": "Google.Cloud.Datastore.Admin.V1", + "go_package": "google.golang.org/genproto/googleapis/datastore/admin/v1;admin", + "java_multiple_files": true, + "java_outer_classname": "IndexProto", + "java_package": "com.google.datastore.admin.v1", + "ruby_package": "Google::Cloud::Datastore::Admin::V1" + }, + "nested": { + "DatastoreAdmin": { + "options": { + "(google.api.default_host)": "datastore.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore" + }, + "methods": { + "ExportEntities": { + "requestType": "ExportEntitiesRequest", + "responseType": "google.longrunning.Operation", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:export", + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,labels,entity_filter,output_url_prefix", + "(google.longrunning.operation_info).response_type": "ExportEntitiesResponse", + "(google.longrunning.operation_info).metadata_type": "ExportEntitiesMetadata" + } + }, + "ImportEntities": { + "requestType": "ImportEntitiesRequest", + "responseType": "google.longrunning.Operation", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:import", + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,labels,input_url,entity_filter", + "(google.longrunning.operation_info).response_type": "google.protobuf.Empty", + "(google.longrunning.operation_info).metadata_type": "ImportEntitiesMetadata" + } + }, + "GetIndex": { + "requestType": "GetIndexRequest", + "responseType": "Index", + "options": { + "(google.api.http).get": "/v1/projects/{project_id}/indexes/{index_id}" + } + }, + "ListIndexes": { + "requestType": "ListIndexesRequest", + "responseType": "ListIndexesResponse", + "options": { + "(google.api.http).get": "/v1/projects/{project_id}/indexes" + } + } + } + }, + "CommonMetadata": { + "fields": { + "startTime": { + "type": "google.protobuf.Timestamp", + "id": 1 + }, + "endTime": { + "type": "google.protobuf.Timestamp", + "id": 2 + }, + "operationType": { + "type": "OperationType", + "id": 3 + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 4 + }, + "state": { + "type": "State", + "id": 5 + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "INITIALIZING": 1, + "PROCESSING": 2, + "CANCELLING": 3, + "FINALIZING": 4, + "SUCCESSFUL": 5, + "FAILED": 6, + "CANCELLED": 7 + } + } + } + }, + "OperationType": { + "values": { + "OPERATION_TYPE_UNSPECIFIED": 0, + "EXPORT_ENTITIES": 1, + "IMPORT_ENTITIES": 2, + "CREATE_INDEX": 3, + "DELETE_INDEX": 4 + } + }, + "Progress": { + "fields": { + "workCompleted": { + "type": "int64", + "id": 1 + }, + "workEstimated": { + "type": "int64", + "id": 2 + } + } + }, + "ExportEntitiesRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "entityFilter": { + "type": "EntityFilter", + "id": 3 + }, + "outputUrlPrefix": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "ImportEntitiesRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "inputUrl": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "entityFilter": { + "type": "EntityFilter", + "id": 4 + } + } + }, + "ExportEntitiesResponse": { + "fields": { + "outputUrl": { + "type": "string", + "id": 1 + } + } + }, + "ExportEntitiesMetadata": { + "fields": { + "common": { + "type": "CommonMetadata", + "id": 1 + }, + "progressEntities": { + "type": "Progress", + "id": 2 + }, + "progressBytes": { + "type": "Progress", + "id": 3 + }, + "entityFilter": { + "type": "EntityFilter", + "id": 4 + }, + "outputUrlPrefix": { + "type": "string", + "id": 5 + } + } + }, + "ImportEntitiesMetadata": { + "fields": { + "common": { + "type": "CommonMetadata", + "id": 1 + }, + "progressEntities": { + "type": "Progress", + "id": 2 + }, + "progressBytes": { + "type": "Progress", + "id": 3 + }, + "entityFilter": { + "type": "EntityFilter", + "id": 4 + }, + "inputUrl": { + "type": "string", + "id": 5 + } + } + }, + "EntityFilter": { + "fields": { + "kinds": { + "rule": "repeated", + "type": "string", + "id": 1 + }, + "namespaceIds": { + "rule": "repeated", + "type": "string", + "id": 2 + } + } + }, + "GetIndexRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1 + }, + "indexId": { + "type": "string", + "id": 3 + } + } + }, + "ListIndexesRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1 + }, + "filter": { + "type": "string", + "id": 3 + }, + "pageSize": { + "type": "int32", + "id": 4 + }, + "pageToken": { + "type": "string", + "id": 5 + } + } + }, + "ListIndexesResponse": { + "fields": { + "indexes": { + "rule": "repeated", + "type": "Index", + "id": 1 + }, + "nextPageToken": { + "type": "string", + "id": 2 + } + } + }, + "IndexOperationMetadata": { + "fields": { + "common": { + "type": "CommonMetadata", + "id": 1 + }, + "progressEntities": { + "type": "Progress", + "id": 2 + }, + "indexId": { + "type": "string", + "id": 3 + } + } + }, + "Index": { + "fields": { + "projectId": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "indexId": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "kind": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "ancestor": { + "type": "AncestorMode", + "id": 5, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "properties": { + "rule": "repeated", + "type": "IndexedProperty", + "id": 6, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "state": { + "type": "State", + "id": 7, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + } + }, + "nested": { + "IndexedProperty": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "direction": { + "type": "Direction", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "AncestorMode": { + "values": { + "ANCESTOR_MODE_UNSPECIFIED": 0, + "NONE": 1, + "ALL_ANCESTORS": 2 + } + }, + "Direction": { + "values": { + "DIRECTION_UNSPECIFIED": 0, + "ASCENDING": 1, + "DESCENDING": 2 + } + }, + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "CREATING": 1, + "READY": 2, + "DELETING": 3, + "ERROR": 4 + } + } + } + } + } + } + } + }, "v1": { "options": { "csharp_namespace": "Google.Cloud.Datastore.V1", @@ -1889,6 +2284,45 @@ } } }, + "Any": { + "fields": { + "type_url": { + "type": "string", + "id": 1 + }, + "value": { + "type": "bytes", + "id": 2 + } + } + }, + "Duration": { + "fields": { + "seconds": { + "type": "int64", + "id": 1 + }, + "nanos": { + "type": "int32", + "id": 2 + } + } + }, + "Empty": { + "fields": {} + }, + "Timestamp": { + "fields": { + "seconds": { + "type": "int64", + "id": 1 + }, + "nanos": { + "type": "int32", + "id": 2 + } + } + }, "Struct": { "fields": { "fields": { @@ -1952,18 +2386,6 @@ } } }, - "Timestamp": { - "fields": { - "seconds": { - "type": "int64", - "id": 1 - }, - "nanos": { - "type": "int32", - "id": 2 - } - } - }, "DoubleValue": { "fields": { "value": { @@ -2038,6 +2460,210 @@ } } }, + "longrunning": { + "options": { + "cc_enable_arenas": true, + "csharp_namespace": "Google.LongRunning", + "go_package": "google.golang.org/genproto/googleapis/longrunning;longrunning", + "java_multiple_files": true, + "java_outer_classname": "OperationsProto", + "java_package": "com.google.longrunning", + "php_namespace": "Google\\LongRunning" + }, + "nested": { + "operationInfo": { + "type": "google.longrunning.OperationInfo", + "id": 1049, + "extend": "google.protobuf.MethodOptions" + }, + "Operations": { + "options": { + "(google.api.default_host)": "longrunning.googleapis.com" + }, + "methods": { + "ListOperations": { + "requestType": "ListOperationsRequest", + "responseType": "ListOperationsResponse", + "options": { + "(google.api.http).get": "/v1/{name=operations}", + "(google.api.method_signature)": "name,filter" + } + }, + "GetOperation": { + "requestType": "GetOperationRequest", + "responseType": "Operation", + "options": { + "(google.api.http).get": "/v1/{name=operations/**}", + "(google.api.method_signature)": "name" + } + }, + "DeleteOperation": { + "requestType": "DeleteOperationRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).delete": "/v1/{name=operations/**}", + "(google.api.method_signature)": "name" + } + }, + "CancelOperation": { + "requestType": "CancelOperationRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).post": "/v1/{name=operations/**}:cancel", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name" + } + }, + "WaitOperation": { + "requestType": "WaitOperationRequest", + "responseType": "Operation" + } + } + }, + "Operation": { + "oneofs": { + "result": { + "oneof": [ + "error", + "response" + ] + } + }, + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "metadata": { + "type": "google.protobuf.Any", + "id": 2 + }, + "done": { + "type": "bool", + "id": 3 + }, + "error": { + "type": "google.rpc.Status", + "id": 4 + }, + "response": { + "type": "google.protobuf.Any", + "id": 5 + } + } + }, + "GetOperationRequest": { + "fields": { + "name": { + "type": "string", + "id": 1 + } + } + }, + "ListOperationsRequest": { + "fields": { + "name": { + "type": "string", + "id": 4 + }, + "filter": { + "type": "string", + "id": 1 + }, + "pageSize": { + "type": "int32", + "id": 2 + }, + "pageToken": { + "type": "string", + "id": 3 + } + } + }, + "ListOperationsResponse": { + "fields": { + "operations": { + "rule": "repeated", + "type": "Operation", + "id": 1 + }, + "nextPageToken": { + "type": "string", + "id": 2 + } + } + }, + "CancelOperationRequest": { + "fields": { + "name": { + "type": "string", + "id": 1 + } + } + }, + "DeleteOperationRequest": { + "fields": { + "name": { + "type": "string", + "id": 1 + } + } + }, + "WaitOperationRequest": { + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "timeout": { + "type": "google.protobuf.Duration", + "id": 2 + } + } + }, + "OperationInfo": { + "fields": { + "responseType": { + "type": "string", + "id": 1 + }, + "metadataType": { + "type": "string", + "id": 2 + } + } + } + } + }, + "rpc": { + "options": { + "cc_enable_arenas": true, + "go_package": "google.golang.org/genproto/googleapis/rpc/status;status", + "java_multiple_files": true, + "java_outer_classname": "StatusProto", + "java_package": "com.google.rpc", + "objc_class_prefix": "RPC" + }, + "nested": { + "Status": { + "fields": { + "code": { + "type": "int32", + "id": 1 + }, + "message": { + "type": "string", + "id": 2 + }, + "details": { + "rule": "repeated", + "type": "google.protobuf.Any", + "id": 3 + } + } + } + } + }, "type": { "options": { "cc_enable_arenas": true, diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts new file mode 100644 index 00000000000..e60ec13c820 --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -0,0 +1,1022 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + +import * as gax from 'google-gax'; +import { + Callback, + CallOptions, + Descriptors, + ClientOptions, + LROperation, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import * as path from 'path'; + +import {Transform} from 'stream'; +import {RequestType} from 'google-gax/build/src/apitypes'; +import * as protos from '../../protos/protos'; +import * as gapicConfig from './datastore_admin_client_config.json'; +import {operationsProtos} from 'google-gax'; +const version = require('../../../package.json').version; + +/** + * Google Cloud Datastore Admin API + * + * + * The Datastore Admin API provides several admin services for Cloud Datastore. + * + * ----------------------------------------------------------------------------- + * ## Concepts + * + * Project, namespace, kind, and entity as defined in the Google Cloud Datastore + * API. + * + * Operation: An Operation represents work being performed in the background. + * + * EntityFilter: Allows specifying a subset of entities in a project. This is + * specified as a combination of kinds and namespaces (either or both of which + * may be all). + * + * ----------------------------------------------------------------------------- + * ## Services + * + * # Export/Import + * + * The Export/Import service provides the ability to copy all or a subset of + * entities to/from Google Cloud Storage. + * + * Exported data may be imported into Cloud Datastore for any Google Cloud + * Platform project. It is not restricted to the export source project. It is + * possible to export from one project and then import into another. + * + * Exported data can also be loaded into Google BigQuery for analysis. + * + * Exports and imports are performed asynchronously. An Operation resource is + * created for each export/import. The state (including any errors encountered) + * of the export/import may be queried via the Operation resource. + * + * # Index + * + * The index service manages Cloud Datastore composite indexes. + * + * Index creation and deletion are performed asynchronously. + * An Operation resource is created for each such asynchronous operation. + * The state of the operation (including any errors encountered) + * may be queried via the Operation resource. + * + * # Operation + * + * The Operations collection provides a record of actions performed for the + * specified project (including any operations in progress). Operations are not + * created directly but through calls on other collections or resources. + * + * An operation that is not yet done may be cancelled. The request to cancel is + * asynchronous and the operation may continue to run for some time after the + * request to cancel is made. + * + * An operation that is done may be deleted so that it is no longer listed as + * part of the Operation collection. + * + * ListOperations returns all pending operations, but not completed operations. + * + * Operations are created by service DatastoreAdmin, + * but are accessed via service google.longrunning.Operations. + * @class + * @memberof v1 + */ +export class DatastoreAdminClient { + private _terminated = false; + private _opts: ClientOptions; + private _gaxModule: typeof gax | typeof gax.fallback; + private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; + private _protos: {}; + private _defaults: {[method: string]: gax.CallSettings}; + auth: gax.GoogleAuth; + descriptors: Descriptors = { + page: {}, + stream: {}, + longrunning: {}, + batching: {}, + }; + innerApiCalls: {[name: string]: Function}; + operationsClient: gax.OperationsClient; + datastoreAdminStub?: Promise<{[name: string]: Function}>; + + /** + * Construct an instance of DatastoreAdminClient. + * + * @param {object} [options] - The configuration object. See the subsequent + * parameters for more details. + * @param {object} [options.credentials] - Credentials object. + * @param {string} [options.credentials.client_email] + * @param {string} [options.credentials.private_key] + * @param {string} [options.email] - Account email address. Required when + * using a .pem or .p12 keyFilename. + * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or + * .p12 key downloaded from the Google Developers Console. If you provide + * a path to a JSON file, the projectId option below is not necessary. + * NOTE: .pem and .p12 require you to specify options.email as well. + * @param {number} [options.port] - The port on which to connect to + * the remote host. + * @param {string} [options.projectId] - The project ID from the Google + * Developer's Console, e.g. 'grape-spaceship-123'. We will also check + * the environment variable GCLOUD_PROJECT for your project ID. If your + * app is running in an environment which supports + * {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials}, + * your project ID will be detected automatically. + * @param {string} [options.apiEndpoint] - The domain name of the + * API remote host. + */ + + constructor(opts?: ClientOptions) { + // Ensure that options include the service address and port. + const staticMembers = this.constructor as typeof DatastoreAdminClient; + const servicePath = + opts && opts.servicePath + ? opts.servicePath + : opts && opts.apiEndpoint + ? opts.apiEndpoint + : staticMembers.servicePath; + const port = opts && opts.port ? opts.port : staticMembers.port; + + if (!opts) { + opts = {servicePath, port}; + } + opts.servicePath = opts.servicePath || servicePath; + opts.port = opts.port || port; + + // users can override the config from client side, like retry codes name. + // The detailed structure of the clientConfig can be found here: https://github.com/googleapis/gax-nodejs/blob/master/src/gax.ts#L546 + // The way to override client config for Showcase API: + // + // const customConfig = {"interfaces": {"google.showcase.v1beta1.Echo": {"methods": {"Echo": {"retry_codes_name": "idempotent", "retry_params_name": "default"}}}}} + // const showcaseClient = new showcaseClient({ projectId, customConfig }); + opts.clientConfig = opts.clientConfig || {}; + + // If we're running in browser, it's OK to omit `fallback` since + // google-gax has `browser` field in its `package.json`. + // For Electron (which does not respect `browser` field), + // pass `{fallback: true}` to the DatastoreAdminClient constructor. + this._gaxModule = opts.fallback ? gax.fallback : gax; + + // Create a `gaxGrpc` object, with any grpc-specific options + // sent to the client. + opts.scopes = (this.constructor as typeof DatastoreAdminClient).scopes; + this._gaxGrpc = new this._gaxModule.GrpcClient(opts); + + // Save options to use in initialize() method. + this._opts = opts; + + // Save the auth object to the client, for use by other methods. + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + + // Determine the client header string. + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; + if (typeof process !== 'undefined' && 'versions' in process) { + clientHeader.push(`gl-node/${process.versions.node}`); + } else { + clientHeader.push(`gl-web/${this._gaxModule.version}`); + } + if (!opts.fallback) { + clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); + } + if (opts.libName && opts.libVersion) { + clientHeader.push(`${opts.libName}/${opts.libVersion}`); + } + // Load the applicable protos. + // For Node.js, pass the path to JSON proto file. + // For browsers, pass the JSON content. + + const nodejsProtoPath = path.join( + __dirname, + '..', + '..', + 'protos', + 'protos.json' + ); + this._protos = this._gaxGrpc.loadProto( + opts.fallback + ? // eslint-disable-next-line @typescript-eslint/no-var-requires + require('../../protos/protos.json') + : nodejsProtoPath + ); + + // Some of the methods on this service return "paged" results, + // (e.g. 50 results at a time, with tokens to get subsequent + // pages). Denote the keys used for pagination and results. + this.descriptors.page = { + listIndexes: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'indexes' + ), + }; + + // This API contains "long-running operations", which return a + // an Operation object that allows for tracking of the operation, + // rather than holding a request open. + const protoFilesRoot = opts.fallback + ? this._gaxModule.protobuf.Root.fromJSON( + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('../../protos/protos.json') + ) + : this._gaxModule.protobuf.loadSync(nodejsProtoPath); + + this.operationsClient = this._gaxModule + .lro({ + auth: this.auth, + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, + }) + .operationsClient(opts); + const exportEntitiesResponse = protoFilesRoot.lookup( + '.google.datastore.admin.v1.ExportEntitiesResponse' + ) as gax.protobuf.Type; + const exportEntitiesMetadata = protoFilesRoot.lookup( + '.google.datastore.admin.v1.ExportEntitiesMetadata' + ) as gax.protobuf.Type; + const importEntitiesResponse = protoFilesRoot.lookup( + '.google.protobuf.Empty' + ) as gax.protobuf.Type; + const importEntitiesMetadata = protoFilesRoot.lookup( + '.google.datastore.admin.v1.ImportEntitiesMetadata' + ) as gax.protobuf.Type; + + this.descriptors.longrunning = { + exportEntities: new this._gaxModule.LongrunningDescriptor( + this.operationsClient, + exportEntitiesResponse.decode.bind(exportEntitiesResponse), + exportEntitiesMetadata.decode.bind(exportEntitiesMetadata) + ), + importEntities: new this._gaxModule.LongrunningDescriptor( + this.operationsClient, + importEntitiesResponse.decode.bind(importEntitiesResponse), + importEntitiesMetadata.decode.bind(importEntitiesMetadata) + ), + }; + + // Put together the default options sent with requests. + this._defaults = this._gaxGrpc.constructSettings( + 'google.datastore.admin.v1.DatastoreAdmin', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + {'x-goog-api-client': clientHeader.join(' ')} + ); + + // Set up a dictionary of "inner API calls"; the core implementation + // of calling the API is handled in `google-gax`, with this code + // merely providing the destination and request information. + this.innerApiCalls = {}; + } + + /** + * Initialize the client. + * Performs asynchronous operations (such as authentication) and prepares the client. + * This function will be called automatically when any class method is called for the + * first time, but if you need to initialize it before calling an actual method, + * feel free to call initialize() directly. + * + * You can await on this method if you want to make sure the client is initialized. + * + * @returns {Promise} A promise that resolves to an authenticated service stub. + */ + initialize() { + // If the client stub promise is already initialized, return immediately. + if (this.datastoreAdminStub) { + return this.datastoreAdminStub; + } + + // Put together the "service stub" for + // google.datastore.admin.v1.DatastoreAdmin. + this.datastoreAdminStub = this._gaxGrpc.createStub( + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.datastore.admin.v1.DatastoreAdmin' + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any + (this._protos as any).google.datastore.admin.v1.DatastoreAdmin, + this._opts + ) as Promise<{[method: string]: Function}>; + + // Iterate over each of the methods that the service provides + // and create an API call method for each. + const datastoreAdminStubMethods = [ + 'exportEntities', + 'importEntities', + 'getIndex', + 'listIndexes', + ]; + for (const methodName of datastoreAdminStubMethods) { + const callPromise = this.datastoreAdminStub.then( + stub => (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { + throw err; + } + ); + + const apiCall = this._gaxModule.createApiCall( + callPromise, + this._defaults[methodName], + this.descriptors.page[methodName] || + this.descriptors.stream[methodName] || + this.descriptors.longrunning[methodName] + ); + + this.innerApiCalls[methodName] = apiCall; + } + + return this.datastoreAdminStub; + } + + /** + * The DNS address for this API service. + */ + static get servicePath() { + return 'datastore.googleapis.com'; + } + + /** + * The DNS address for this API service - same as servicePath(), + * exists for compatibility reasons. + */ + static get apiEndpoint() { + return 'datastore.googleapis.com'; + } + + /** + * The port for this API service. + */ + static get port() { + return 443; + } + + /** + * The scopes needed to make gRPC calls for every method defined + * in this service. + */ + static get scopes() { + return [ + 'https://www.googleapis.com/auth/cloud-platform', + 'https://www.googleapis.com/auth/datastore', + ]; + } + + getProjectId(): Promise; + getProjectId(callback: Callback): void; + /** + * Return the project ID used by this class. + * @param {function(Error, string)} callback - the callback to + * be called with the current project Id. + */ + getProjectId( + callback?: Callback + ): Promise | void { + if (callback) { + this.auth.getProjectId(callback); + return; + } + return this.auth.getProjectId(); + } + + // ------------------- + // -- Service calls -- + // ------------------- + getIndex( + request: protos.google.datastore.admin.v1.IGetIndexRequest, + options?: gax.CallOptions + ): Promise< + [ + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | undefined, + {} | undefined + ] + >; + getIndex( + request: protos.google.datastore.admin.v1.IGetIndexRequest, + options: gax.CallOptions, + callback: Callback< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, + {} | null | undefined + > + ): void; + getIndex( + request: protos.google.datastore.admin.v1.IGetIndexRequest, + callback: Callback< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, + {} | null | undefined + > + ): void; + /** + * Gets an index. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.indexId + * The resource ID of the index to get. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [Index]{@link google.datastore.admin.v1.Index}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + getIndex( + request: protos.google.datastore.admin.v1.IGetIndexRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, + {} | null | undefined + > + ): Promise< + [ + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IGetIndexRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.getIndex(request, options, callback); + } + + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + options?: gax.CallOptions + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + options: gax.CallOptions, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + /** + * Exports a copy of all or a subset of entities from Google Cloud Datastore + * to another storage system, such as Google Cloud Storage. Recent updates to + * entities may not be reflected in the export. The export occurs in the + * background and its progress can be monitored and managed via the + * Operation resource that is created. The output of an export may only be + * used once the associated operation is done. If an export operation is + * cancelled before completion it may leave partial data behind in Google + * Cloud Storage. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. Project ID against which to make the request. + * @param {number[]} request.labels + * Client-assigned labels. + * @param {google.datastore.admin.v1.EntityFilter} request.entityFilter + * Description of what data from the project is included in the export. + * @param {string} request.outputUrlPrefix + * Required. Location for the export metadata and data files. + * + * The full resource URL of the external storage location. Currently, only + * Google Cloud Storage is supported. So output_url_prefix should be of the + * form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the + * name of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional Cloud + * Storage namespace path (this is not a Cloud Datastore namespace). For more + * information about Cloud Storage namespace paths, see + * [Object name + * considerations](https://cloud.google.com/storage/docs/naming#object-considerations). + * + * The resulting files will be nested deeper than the specified URL prefix. + * The final output URL will be provided in the + * {@link google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url} field. That + * value should be used for subsequent ImportEntities operations. + * + * By nesting the data files deeper, the same Cloud Storage bucket can be used + * in multiple ExportEntities operations without conflict. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [Operation]{@link google.longrunning.Operation}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.exportEntities(request, options, callback); + } + /** + * Check the status of the long running operation returned by the exportEntities() method. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * + * @example: + * const decodedOperation = await checkExportEntitiesProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); + * + */ + async checkExportEntitiesProgress( + name: string + ): Promise< + LROperation< + protos.google.datastore.admin.v1.ExportEntitiesResponse, + protos.google.datastore.admin.v1.ExportEntitiesMetadata + > + > { + const request = new operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); + const [operation] = await this.operationsClient.getOperation(request); + const decodeOperation = new gax.Operation( + operation, + this.descriptors.longrunning.exportEntities, + gax.createDefaultBackoffSettings() + ); + return decodeOperation as LROperation< + protos.google.datastore.admin.v1.ExportEntitiesResponse, + protos.google.datastore.admin.v1.ExportEntitiesMetadata + >; + } + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + options?: gax.CallOptions + ): Promise< + [ + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + options: gax.CallOptions, + callback: Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + callback: Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + /** + * Imports entities into Google Cloud Datastore. Existing entities with the + * same key are overwritten. The import occurs in the background and its + * progress can be monitored and managed via the Operation resource that is + * created. If an ImportEntities operation is cancelled, it is possible + * that a subset of the data has already been imported to Cloud Datastore. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. Project ID against which to make the request. + * @param {number[]} request.labels + * Client-assigned labels. + * @param {string} request.inputUrl + * Required. The full resource URL of the external storage location. Currently, only + * Google Cloud Storage is supported. So input_url should be of the form: + * `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where + * `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is + * an optional Cloud Storage namespace path (this is not a Cloud Datastore + * namespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file written + * by the ExportEntities operation. For more information about Cloud Storage + * namespace paths, see + * [Object name + * considerations](https://cloud.google.com/storage/docs/naming#object-considerations). + * + * For more information, see + * {@link google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url}. + * @param {google.datastore.admin.v1.EntityFilter} request.entityFilter + * Optionally specify which kinds/namespaces are to be imported. If provided, + * the list must be a subset of the EntityFilter used in creating the export, + * otherwise a FAILED_PRECONDITION error will be returned. If no filter is + * specified then all entities from the export are imported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [Operation]{@link google.longrunning.Operation}. + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + optionsOrCallback?: + | gax.CallOptions + | Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): Promise< + [ + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.importEntities(request, options, callback); + } + /** + * Check the status of the long running operation returned by the importEntities() method. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * + * @example: + * const decodedOperation = await checkImportEntitiesProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); + * + */ + async checkImportEntitiesProgress( + name: string + ): Promise< + LROperation< + protos.google.protobuf.Empty, + protos.google.datastore.admin.v1.ImportEntitiesMetadata + > + > { + const request = new operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); + const [operation] = await this.operationsClient.getOperation(request); + const decodeOperation = new gax.Operation( + operation, + this.descriptors.longrunning.importEntities, + gax.createDefaultBackoffSettings() + ); + return decodeOperation as LROperation< + protos.google.protobuf.Empty, + protos.google.datastore.admin.v1.ImportEntitiesMetadata + >; + } + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + options?: gax.CallOptions + ): Promise< + [ + protos.google.datastore.admin.v1.IIndex[], + protos.google.datastore.admin.v1.IListIndexesRequest | null, + protos.google.datastore.admin.v1.IListIndexesResponse + ] + >; + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + options: gax.CallOptions, + callback: PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, + protos.google.datastore.admin.v1.IIndex + > + ): void; + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + callback: PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, + protos.google.datastore.admin.v1.IIndex + > + ): void; + /** + * Lists the indexes that match the specified filters. Datastore uses an + * eventually consistent query to fetch the list of indexes and may + * occasionally return stale results. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.filter + * @param {number} request.pageSize + * The maximum number of items to return. If zero, then all results will be + * returned. + * @param {string} request.pageToken + * The next_page_token value returned from a previous List request, if any. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of [Index]{@link google.datastore.admin.v1.Index}. + * The client library support auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * + * When autoPaginate: false is specified through options, the array has three elements. + * The first element is Array of [Index]{@link google.datastore.admin.v1.Index} that corresponds to + * the one page received from the API server. + * If the second element is not null it contains the request object of type [ListIndexesRequest]{@link google.datastore.admin.v1.ListIndexesRequest} + * that can be used to obtain the next page of the results. + * If it is null, the next page does not exist. + * The third element contains the raw response received from the API server. Its type is + * [ListIndexesResponse]{@link google.datastore.admin.v1.ListIndexesResponse}. + * + * The promise has a method named "cancel" which cancels the ongoing API call. + */ + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + optionsOrCallback?: + | gax.CallOptions + | PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + | protos.google.datastore.admin.v1.IListIndexesResponse + | null + | undefined, + protos.google.datastore.admin.v1.IIndex + >, + callback?: PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, + protos.google.datastore.admin.v1.IIndex + > + ): Promise< + [ + protos.google.datastore.admin.v1.IIndex[], + protos.google.datastore.admin.v1.IListIndexesRequest | null, + protos.google.datastore.admin.v1.IListIndexesResponse + ] + > | void { + request = request || {}; + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.listIndexes(request, options, callback); + } + + /** + * Equivalent to {@link listIndexes}, but returns a NodeJS Stream object. + * + * This fetches the paged responses for {@link listIndexes} continuously + * and invokes the callback registered for 'data' event for each element in the + * responses. + * + * The returned object has 'end' method when no more elements are required. + * + * autoPaginate option will be ignored. + * + * @see {@link https://nodejs.org/api/stream.html} + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.filter + * @param {number} request.pageSize + * The maximum number of items to return. If zero, then all results will be + * returned. + * @param {string} request.pageToken + * The next_page_token value returned from a previous List request, if any. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing [Index]{@link google.datastore.admin.v1.Index} on 'data' event. + */ + listIndexesStream( + request?: protos.google.datastore.admin.v1.IListIndexesRequest, + options?: gax.CallOptions + ): Transform { + request = request || {}; + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + const callSettings = new gax.CallSettings(options); + this.initialize(); + return this.descriptors.page.listIndexes.createStream( + this.innerApiCalls.listIndexes as gax.GaxCall, + request, + callSettings + ); + } + + /** + * Equivalent to {@link listIndexes}, but returns an iterable object. + * + * for-await-of syntax is used with the iterable to recursively get response element on-demand. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.filter + * @param {number} request.pageSize + * The maximum number of items to return. If zero, then all results will be + * returned. + * @param {string} request.pageToken + * The next_page_token value returned from a previous List request, if any. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + */ + listIndexesAsync( + request?: protos.google.datastore.admin.v1.IListIndexesRequest, + options?: gax.CallOptions + ): AsyncIterable { + request = request || {}; + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + options = options || {}; + const callSettings = new gax.CallSettings(options); + this.initialize(); + return this.descriptors.page.listIndexes.asyncIterate( + this.innerApiCalls['listIndexes'] as GaxCall, + (request as unknown) as RequestType, + callSettings + ) as AsyncIterable; + } + + /** + * Terminate the GRPC channel and close the client. + * + * The client will no longer be usable and all future behavior is undefined. + */ + close(): Promise { + this.initialize(); + if (!this._terminated) { + return this.datastoreAdminStub!.then(stub => { + this._terminated = true; + stub.close(); + }); + } + return Promise.resolve(); + } +} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json new file mode 100644 index 00000000000..65283cbbc9f --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json @@ -0,0 +1,46 @@ +{ + "interfaces": { + "google.datastore.admin.v1.DatastoreAdmin": { + "retry_codes": { + "non_idempotent": [], + "idempotent": [ + "DEADLINE_EXCEEDED", + "UNAVAILABLE" + ] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "ExportEntities": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default" + }, + "ImportEntities": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default" + }, + "GetIndex": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + }, + "ListIndexes": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + } + } + } + } +} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json new file mode 100644 index 00000000000..bd1e60aca44 --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json @@ -0,0 +1,4 @@ +[ + "../../protos/google/datastore/admin/v1/datastore_admin.proto", + "../../protos/google/datastore/admin/v1/index.proto" +] diff --git a/handwritten/nodejs-datastore/src/v1/index.ts b/handwritten/nodejs-datastore/src/v1/index.ts index 2641e1741b0..5821a19109b 100644 --- a/handwritten/nodejs-datastore/src/v1/index.ts +++ b/handwritten/nodejs-datastore/src/v1/index.ts @@ -16,4 +16,5 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** +export {DatastoreAdminClient} from './datastore_admin_client'; export {DatastoreClient} from './datastore_client'; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 1241f0c1100..88bc1c87104 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,23 +3,23 @@ { "git": { "name": ".", - "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "0eea04136a68537901738e7906b9ecdf18a083ec" + "remote": "git@github.com:googleapis/nodejs-datastore.git", + "sha": "c655bfc0e69e2625cef19d833654512d314b67e9" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "c829fa0bfa725adaf20d82e86cbc1220e3ffd784", - "internalRef": "316124477" + "sha": "6bb49713fa35083d55256dd4f685f23bea4e069b", + "internalRef": "317684463" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "b10590a4a1568548dd13cfcea9aa11d40898144b" + "sha": "4f2c9f752a94042472fc03c5bd9e06e89817d2bd" } } ], @@ -32,6 +32,15 @@ "language": "typescript", "generator": "gapic-generator-typescript" } + }, + { + "client": { + "source": "googleapis", + "apiName": "datastore_admin", + "apiVersion": "v1", + "language": "typescript", + "generator": "gapic-generator-typescript" + } } ] } \ No newline at end of file diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 6884b111a01..b0188d11b96 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -7,26 +7,43 @@ AUTOSYNTH_MULTIPLE_COMMITS = True - gapic = gcp.GAPICMicrogenerator() version = 'v1' -library = gapic.typescript_library( +v1_library = gapic.typescript_library( 'datastore', version, generator_args={ "grpc-service-config": f"google/datastore/{version}/datastore_grpc_service_config.json", "package-name": "@google-cloud/datastore", "main-service": "datastore" - }, - proto_path=f'/google/datastore/{version}', - extra_proto_files=['google/cloud/common_resources.proto'], - ) + }, + proto_path=f'/google/datastore/{version}', + extra_proto_files=['google/cloud/common_resources.proto'], +) # Copy everything except for top level index, package.json, and README.md s.copy( - library, + v1_library, excludes=['package.json', 'README.md', 'src/index.ts']) -system_test_files=['system-test/fixtures/sample/src/index.ts','system-test/fixtures/sample/src/index.js'] +adminv1_library = gapic.typescript_library( + 'datastore_admin', version, + generator_args={ + "grpc-service-config": f"google/datastore/admin/{version}/datastore_admin_grpc_service_config.json", + "package-name": "@google-cloud/datastore", + "main-service": "datastore" + }, + proto_path=f'/google/datastore/admin/{version}', + extra_proto_files=['google/cloud/common_resources.proto'], +) + +# copy over the protos, but leave out the skeleton stuff +s.copy( + adminv1_library, + excludes=['package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts', 'tsconfig.json', 'tslint.json', + 'system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] +) + +system_test_files = ['system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] for file in system_test_files: s.replace(file, 'DatastoreClient', 'Datastore') common_templates = gcp.CommonTemplates() diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts new file mode 100644 index 00000000000..e424f18e896 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -0,0 +1,1019 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + +import * as protos from '../protos/protos'; +import * as assert from 'assert'; +import * as sinon from 'sinon'; +import {SinonStub} from 'sinon'; +import {describe, it} from 'mocha'; +import * as datastoreadminModule from '../src'; + +import {PassThrough} from 'stream'; + +import {protobuf, LROperation, operationsProtos} from 'google-gax'; + +function generateSampleMessage(instance: T) { + const filledObject = (instance.constructor as typeof protobuf.Message).toObject( + instance as protobuf.Message, + {defaults: true} + ); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject + ) as T; +} + +function stubSimpleCall(response?: ResponseType, error?: Error) { + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); +} + +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); +} + +function stubLongRunningCall( + response?: ResponseType, + callError?: Error, + lroError?: Error +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().rejects(callError) + : sinon.stub().resolves([mockOperation]); +} + +function stubLongRunningCallWithCallback( + response?: ResponseType, + callError?: Error, + lroError?: Error +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().callsArgWith(2, callError) + : sinon.stub().callsArgWith(2, null, mockOperation); +} + +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); + } + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); + } + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); +} + +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({done: true, value: undefined}); + } + return Promise.resolve({done: false, value: responses![counter++]}); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); +} + +describe('v1.DatastoreAdminClient', () => { + it('has servicePath', () => { + const servicePath = + datastoreadminModule.v1.DatastoreAdminClient.servicePath; + assert(servicePath); + }); + + it('has apiEndpoint', () => { + const apiEndpoint = + datastoreadminModule.v1.DatastoreAdminClient.apiEndpoint; + assert(apiEndpoint); + }); + + it('has port', () => { + const port = datastoreadminModule.v1.DatastoreAdminClient.port; + assert(port); + assert(typeof port === 'number'); + }); + + it('should create a client with no option', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + assert(client); + }); + + it('should create a client with gRPC fallback', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + fallback: true, + }); + assert(client); + }); + + it('has initialize method and supports deferred initialization', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreAdminStub, undefined); + await client.initialize(); + assert(client.datastoreAdminStub); + }); + + it('has close method', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.close(); + }); + + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); + + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + + describe('getIndex', () => { + it('invokes getIndex without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.GetIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.admin.v1.Index() + ); + client.innerApiCalls.getIndex = stubSimpleCall(expectedResponse); + const [response] = await client.getIndex(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.getIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes getIndex without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.GetIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.admin.v1.Index() + ); + client.innerApiCalls.getIndex = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.getIndex( + request, + ( + err?: Error | null, + result?: protos.google.datastore.admin.v1.IIndex | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.getIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes getIndex with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.GetIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.getIndex = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.getIndex(request), expectedError); + assert( + (client.innerApiCalls.getIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + }); + + describe('exportEntities', () => { + it('invokes exportEntities without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ExportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.exportEntities = stubLongRunningCall( + expectedResponse + ); + const [operation] = await client.exportEntities(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.exportEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes exportEntities without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ExportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.exportEntities = stubLongRunningCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.exportEntities( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + > | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const operation = (await promise) as LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.exportEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes exportEntities with call error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ExportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.exportEntities = stubLongRunningCall( + undefined, + expectedError + ); + await assert.rejects(client.exportEntities(request), expectedError); + assert( + (client.innerApiCalls.exportEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes exportEntities with LRO error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ExportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.exportEntities = stubLongRunningCall( + undefined, + undefined, + expectedError + ); + const [operation] = await client.exportEntities(request); + await assert.rejects(operation.promise(), expectedError); + assert( + (client.innerApiCalls.exportEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes checkExportEntitiesProgress without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + expectedResponse.name = 'test'; + expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; + expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkExportEntitiesProgress( + expectedResponse.name + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + + it('invokes checkExportEntitiesProgress with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects( + client.checkExportEntitiesProgress(''), + expectedError + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('importEntities', () => { + it('invokes importEntities without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ImportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.importEntities = stubLongRunningCall( + expectedResponse + ); + const [operation] = await client.importEntities(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.importEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes importEntities without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ImportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.importEntities = stubLongRunningCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.importEntities( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + > | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const operation = (await promise) as LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.importEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes importEntities with call error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ImportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.importEntities = stubLongRunningCall( + undefined, + expectedError + ); + await assert.rejects(client.importEntities(request), expectedError); + assert( + (client.innerApiCalls.importEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes importEntities with LRO error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ImportEntitiesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.importEntities = stubLongRunningCall( + undefined, + undefined, + expectedError + ); + const [operation] = await client.importEntities(request); + await assert.rejects(operation.promise(), expectedError); + assert( + (client.innerApiCalls.importEntities as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes checkImportEntitiesProgress without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + expectedResponse.name = 'test'; + expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; + expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkImportEntitiesProgress( + expectedResponse.name + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + + it('invokes checkImportEntitiesProgress with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects( + client.checkImportEntitiesProgress(''), + expectedError + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('listIndexes', () => { + it('invokes listIndexes without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = [ + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + ]; + client.innerApiCalls.listIndexes = stubSimpleCall(expectedResponse); + const [response] = await client.listIndexes(request); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.listIndexes as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes listIndexes without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = [ + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + ]; + client.innerApiCalls.listIndexes = stubSimpleCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.listIndexes( + request, + ( + err?: Error | null, + result?: protos.google.datastore.admin.v1.IIndex[] | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.listIndexes as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes listIndexes with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.listIndexes = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(client.listIndexes(request), expectedError); + assert( + (client.innerApiCalls.listIndexes as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes listIndexesStream without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedResponse = [ + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + ]; + client.descriptors.page.listIndexes.createStream = stubPageStreamingCall( + expectedResponse + ); + const stream = client.listIndexesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.datastore.admin.v1.Index[] = []; + stream.on( + 'data', + (response: protos.google.datastore.admin.v1.Index) => { + responses.push(response); + } + ); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listIndexes.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listIndexes, request) + ); + assert.strictEqual( + (client.descriptors.page.listIndexes.createStream as SinonStub).getCall( + 0 + ).args[2].otherArgs.headers['x-goog-request-params'], + expectedHeaderRequestParams + ); + }); + + it('invokes listIndexesStream with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('expected'); + client.descriptors.page.listIndexes.createStream = stubPageStreamingCall( + undefined, + expectedError + ); + const stream = client.listIndexesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.datastore.admin.v1.Index[] = []; + stream.on( + 'data', + (response: protos.google.datastore.admin.v1.Index) => { + responses.push(response); + } + ); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listIndexes.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listIndexes, request) + ); + assert.strictEqual( + (client.descriptors.page.listIndexes.createStream as SinonStub).getCall( + 0 + ).args[2].otherArgs.headers['x-goog-request-params'], + expectedHeaderRequestParams + ); + }); + + it('uses async iteration with listIndexes without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedResponse = [ + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + generateSampleMessage(new protos.google.datastore.admin.v1.Index()), + ]; + client.descriptors.page.listIndexes.asyncIterate = stubAsyncIterationCall( + expectedResponse + ); + const responses: protos.google.datastore.admin.v1.IIndex[] = []; + const iterable = client.listIndexesAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( + 0 + ).args[1], + request + ); + assert.strictEqual( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( + 0 + ).args[2].otherArgs.headers['x-goog-request-params'], + expectedHeaderRequestParams + ); + }); + + it('uses async iteration with listIndexes with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.ListIndexesRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('expected'); + client.descriptors.page.listIndexes.asyncIterate = stubAsyncIterationCall( + undefined, + expectedError + ); + const iterable = client.listIndexesAsync(request); + await assert.rejects(async () => { + const responses: protos.google.datastore.admin.v1.IIndex[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( + 0 + ).args[1], + request + ); + assert.strictEqual( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( + 0 + ).args[2].otherArgs.headers['x-goog-request-params'], + expectedHeaderRequestParams + ); + }); + }); +}); From 7d678d4dc8c5172777199dee2e79495135cf8151 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Mon, 6 Jul 2020 10:16:53 -0700 Subject: [PATCH 552/820] build: use bazel build (#695) --- handwritten/nodejs-datastore/synth.metadata | 22 +++++---------- handwritten/nodejs-datastore/synth.py | 31 +++++---------------- 2 files changed, 14 insertions(+), 39 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 88bc1c87104..68022fee7aa 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,22 +4,14 @@ "git": { "name": ".", "remote": "git@github.com:googleapis/nodejs-datastore.git", - "sha": "c655bfc0e69e2625cef19d833654512d314b67e9" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "6bb49713fa35083d55256dd4f685f23bea4e069b", - "internalRef": "317684463" + "sha": "03f4b097d6238d341a261a44f012032a9c39202d" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "4f2c9f752a94042472fc03c5bd9e06e89817d2bd" + "sha": "303271797a360f8a439203413f13a160f2f5b3b4" } } ], @@ -29,17 +21,17 @@ "source": "googleapis", "apiName": "datastore", "apiVersion": "v1", - "language": "typescript", - "generator": "gapic-generator-typescript" + "language": "nodejs", + "generator": "bazel" } }, { "client": { "source": "googleapis", - "apiName": "datastore_admin", + "apiName": "datastore-admin", "apiVersion": "v1", - "language": "typescript", - "generator": "gapic-generator-typescript" + "language": "nodejs", + "generator": "bazel" } } ] diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index b0188d11b96..4cda3c494be 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -7,40 +7,23 @@ AUTOSYNTH_MULTIPLE_COMMITS = True -gapic = gcp.GAPICMicrogenerator() +gapic = gcp.GAPICBazel() version = 'v1' -v1_library = gapic.typescript_library( - 'datastore', version, - generator_args={ - "grpc-service-config": f"google/datastore/{version}/datastore_grpc_service_config.json", - "package-name": "@google-cloud/datastore", - "main-service": "datastore" - }, - proto_path=f'/google/datastore/{version}', - extra_proto_files=['google/cloud/common_resources.proto'], -) +v1_library = gapic.node_library('datastore', version, proto_path=f'google/datastore/{version}') # Copy everything except for top level index, package.json, and README.md s.copy( v1_library, - excludes=['package.json', 'README.md', 'src/index.ts']) - -adminv1_library = gapic.typescript_library( - 'datastore_admin', version, - generator_args={ - "grpc-service-config": f"google/datastore/admin/{version}/datastore_admin_grpc_service_config.json", - "package-name": "@google-cloud/datastore", - "main-service": "datastore" - }, - proto_path=f'/google/datastore/admin/{version}', - extra_proto_files=['google/cloud/common_resources.proto'], -) + excludes=['package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts']) + +adminv1_library = gapic.node_library('datastore-admin', version, proto_path=f'google/datastore/admin/{version}') # copy over the protos, but leave out the skeleton stuff s.copy( adminv1_library, excludes=['package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts', 'tsconfig.json', 'tslint.json', - 'system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] + 'system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js', + '.jsdoc.js', 'webpack.config.js'] ) system_test_files = ['system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] From 8926f5dbe60291ff67a584b63578c11f5969dea9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 7 Jul 2020 14:03:40 -0700 Subject: [PATCH 553/820] chore: release 6.1.0 (#678) * updated CHANGELOG.md [ci skip] * updated package.json [ci skip] * updated samples/package.json Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 14 ++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index fd43c4c1be9..6c4d1eabe3b 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,20 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.0.0...v6.1.0) (2020-07-06) + + +### Features + +* move ts target to es2018 from es2016 ([#677](https://www.github.com/googleapis/nodejs-datastore/issues/677)) ([e881610](https://www.github.com/googleapis/nodejs-datastore/commit/e8816109db9a9b8f3b7d079eb542954572847364)) +* **synth:** add datastore v1 admin api ([#686](https://www.github.com/googleapis/nodejs-datastore/issues/686)) ([25d6582](https://www.github.com/googleapis/nodejs-datastore/commit/25d6582911ad2596629565af3761a6756a6fd138)) + + +### Bug Fixes + +* null value while inserting in array ([#682](https://www.github.com/googleapis/nodejs-datastore/issues/682)) ([c60fe43](https://www.github.com/googleapis/nodejs-datastore/commit/c60fe437c8e3ce1bdebb191b5623b099bf43dc58)) +* proper fallback option handling ([#684](https://www.github.com/googleapis/nodejs-datastore/issues/684)) ([feba866](https://www.github.com/googleapis/nodejs-datastore/commit/feba866be528785e3b9048eb3cf0f67f121fd4ee)) + ## [6.0.0](https://www.github.com/googleapis/nodejs-datastore/compare/v5.1.0...v6.0.0) (2020-05-27) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 207c5a57638..05ddb738457 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.0.0", + "version": "6.1.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8bb8d58fca4..ce08753f61a 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.0.0", + "@google-cloud/datastore": "^6.1.0", "sinon": "^9.0.0" }, "devDependencies": { From e6e0ce292cd3c95be2c2c235323996703f6ef926 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 10 Jul 2020 18:48:53 +0200 Subject: [PATCH 554/820] chore(deps): update dependency ts-loader to v8 (#697) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ts-loader](https://togithub.com/TypeStrong/ts-loader) | devDependencies | major | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/ts-loader/7.0.5/8.0.0) | --- ### Release Notes
TypeStrong/ts-loader ### [`v8.0.0`](https://togithub.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md#v800) [Compare Source](https://togithub.com/TypeStrong/ts-loader/compare/v7.0.5...v8.0.0) - [Support for symlinks in project references](https://togithub.com/TypeStrong/ts-loader/pull/1136) - thanks [@​sheetalkamat](https://togithub.com/sheetalkamat)! - `ts-loader` now supports TypeScript 3.6 and greater **BREAKING CHANGE**
--- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 05ddb738457..0716087ef61 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -69,7 +69,7 @@ "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^9.0.1", - "ts-loader": "^7.0.0", + "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack": "^4.42.0", "webpack-cli": "^3.3.11" From 2533edc08ef8a2ae18a3b4969fff1f6f6dcb9c4b Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Sun, 12 Jul 2020 18:48:59 +0200 Subject: [PATCH 555/820] chore(deps): update dependency @types/mocha to v8 (#699) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@types/mocha](https://togithub.com/DefinitelyTyped/DefinitelyTyped) | devDependencies | major | [`^7.0.2` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@types%2fmocha/7.0.2/8.0.0) | --- ### Renovate configuration :date: **Schedule**: "after 9am and before 3pm" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0716087ef61..8362b59adc4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@types/extend": "^3.0.1", "@types/is": "0.0.21", - "@types/mocha": "^7.0.2", + "@types/mocha": "^8.0.0", "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", "@types/sinon": "^9.0.0", From d09be16c5f62155f116e62fce0836f1e8620dd72 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 13 Jul 2020 13:00:45 -0700 Subject: [PATCH 556/820] build: typo from .gittatributes fix (#700) * changes without context autosynth cannot find the source of changes triggered by earlier changes in this repository, or by version upgrades to tools such as linters. * Update .gitattributes Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com> --- handwritten/nodejs-datastore/.gitattributes | 3 +++ handwritten/nodejs-datastore/synth.metadata | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/.gitattributes diff --git a/handwritten/nodejs-datastore/.gitattributes b/handwritten/nodejs-datastore/.gitattributes new file mode 100644 index 00000000000..d4f4169b28b --- /dev/null +++ b/handwritten/nodejs-datastore/.gitattributes @@ -0,0 +1,3 @@ +*.ts text eol=lf +*.js text eol=lf +protos/* linguist-generated diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 68022fee7aa..c88d49acc5d 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,8 +3,16 @@ { "git": { "name": ".", - "remote": "git@github.com:googleapis/nodejs-datastore.git", - "sha": "03f4b097d6238d341a261a44f012032a9c39202d" + "remote": "https://github.com/googleapis/nodejs-datastore.git", + "sha": "c7de8869a111b23386818b08ef7df93a48cf25ab" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "b70bedf8081c80a9a0606564c00eccd358d77502", + "internalRef": "320669438" } }, { From 3de8535c52eaf2302c71e8d8f8dbd842c9f3765b Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 16 Jul 2020 09:14:08 -0700 Subject: [PATCH 557/820] build: fix typo in publish (#706) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/5b03461e-47c0-40e8-a8ad-c465ee146cc5/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/388e10f5ae302d3e8de1fac99f3a95d1ab8f824a Source-Link: https://github.com/googleapis/synthtool/commit/d82deccf657a66e31bd5da9efdb96c6fa322fc7e Source-Link: https://github.com/googleapis/synthtool/commit/799d8e6522c1ef7cb55a70d9ea0b15e045c3d00b --- handwritten/nodejs-datastore/protos/protos.js | 144 ++++++++++++++---- handwritten/nodejs-datastore/synth.metadata | 4 +- 2 files changed, 116 insertions(+), 32 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index f1038fcaddb..873243f2897 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -367,7 +367,7 @@ CommonMetadata.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.CommonMetadata(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.CommonMetadata(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -381,12 +381,26 @@ message.operationType = reader.int32(); break; case 4: - reader.skip().pos++; if (message.labels === $util.emptyObject) message.labels = {}; - key = reader.string(); - reader.pos++; - message.labels[key] = reader.string(); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.labels[key] = value; break; case 5: message.state = reader.int32(); @@ -1019,7 +1033,7 @@ ExportEntitiesRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ExportEntitiesRequest(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ExportEntitiesRequest(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -1027,12 +1041,26 @@ message.projectId = reader.string(); break; case 2: - reader.skip().pos++; if (message.labels === $util.emptyObject) message.labels = {}; - key = reader.string(); - reader.pos++; - message.labels[key] = reader.string(); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.labels[key] = value; break; case 3: message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); @@ -1300,7 +1328,7 @@ ImportEntitiesRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ImportEntitiesRequest(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.ImportEntitiesRequest(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -1308,12 +1336,26 @@ message.projectId = reader.string(); break; case 2: - reader.skip().pos++; if (message.labels === $util.emptyObject) message.labels = {}; - key = reader.string(); - reader.pos++; - message.labels[key] = reader.string(); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.labels[key] = value; break; case 3: message.inputUrl = reader.string(); @@ -10733,7 +10775,7 @@ Entity.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -10741,12 +10783,26 @@ message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); break; case 3: - reader.skip().pos++; if (message.properties === $util.emptyObject) message.properties = {}; - key = reader.string(); - reader.pos++; - message.properties[key] = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.properties[key] = value; break; default: reader.skipType(tag & 7); @@ -13378,7 +13434,7 @@ GqlQuery.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -13389,12 +13445,26 @@ message.allowLiterals = reader.bool(); break; case 5: - reader.skip().pos++; if (message.namedBindings === $util.emptyObject) message.namedBindings = {}; - key = reader.string(); - reader.pos++; - message.namedBindings[key] = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.namedBindings[key] = value; break; case 4: if (!(message.positionalBindings && message.positionalBindings.length)) @@ -24719,17 +24789,31 @@ Struct.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - reader.skip().pos++; if (message.fields === $util.emptyObject) message.fields = {}; - key = reader.string(); - reader.pos++; - message.fields[key] = $root.google.protobuf.Value.decode(reader, reader.uint32()); + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.protobuf.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.fields[key] = value; break; default: reader.skipType(tag & 7); diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index c88d49acc5d..4663d207d88 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "c7de8869a111b23386818b08ef7df93a48cf25ab" + "sha": "590434816cf2f56bd326c9dafd7e4df2f6a58b3c" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "303271797a360f8a439203413f13a160f2f5b3b4" + "sha": "388e10f5ae302d3e8de1fac99f3a95d1ab8f824a" } } ], From 8db1ad0f28d4aae99f210ff8bb9b27c789b40d90 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 17 Jul 2020 15:18:59 -0700 Subject: [PATCH 558/820] chore: add config files for cloud-rad for node.js (#707) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/5e903fff-57bb-4395-bb94-8b4d1909dbf6/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/21f1470ecd01424dc91c70f1a7c798e4e87d1eec --- .../nodejs-datastore/api-extractor.json | 369 ++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 4 +- 2 files changed, 371 insertions(+), 2 deletions(-) create mode 100644 handwritten/nodejs-datastore/api-extractor.json diff --git a/handwritten/nodejs-datastore/api-extractor.json b/handwritten/nodejs-datastore/api-extractor.json new file mode 100644 index 00000000000..de228294b23 --- /dev/null +++ b/handwritten/nodejs-datastore/api-extractor.json @@ -0,0 +1,369 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/protos/protos.d.ts", + + /** + * A list of NPM package names whose exports should be treated as part of this package. + * + * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", + * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part + * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly + * imports library2. To avoid this, we can specify: + * + * "bundledPackages": [ "library2" ], + * + * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been + * local files for library1. + */ + "bundledPackages": [ ], + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + // "overrideTsconfig": { + // . . . + // } + + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": true, + + /** + * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce + * a full file path. + * + * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: ".api.md" + */ + // "reportFileName": ".api.md", + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/etc/" + */ + // "reportFolder": "/etc/", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportTempFolder": "/temp/" + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true, + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + // "apiJsonFilePath": "/temp/.api.json" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": true, + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + // "untrimmedFilePath": "/dist/.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files + * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. + * To use the OS's default newline kind, specify "os". + * + * DEFAULT VALUE: "crlf" + */ + // "newlineKind": "crlf", + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning", + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + // "addToApiReportFile": false + }, + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning", + // "addToApiReportFile": false + }, + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning", + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } + +} diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 4663d207d88..18da0e5f98a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "590434816cf2f56bd326c9dafd7e4df2f6a58b3c" + "sha": "c2af98daa5382e36cdbfbaf1206a43ec5f3da291" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "388e10f5ae302d3e8de1fac99f3a95d1ab8f824a" + "sha": "21f1470ecd01424dc91c70f1a7c798e4e87d1eec" } } ], From db00a0ff3a02de1f984225705ef1578b780b00ba Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Tue, 21 Jul 2020 14:47:05 -0400 Subject: [PATCH 559/820] chore: add dev dependencies for cloud-rad ref docs (#708) --- handwritten/nodejs-datastore/package.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8362b59adc4..2122d089d69 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -38,7 +38,9 @@ "system-test": "mocha build/system-test --timeout 600000", "pretest": "npm run compile", "test": "c8 mocha build/test", - "precompile": "gts clean" + "precompile": "gts clean", + "api-extractor": "api-extractor run --local", + "api-documenter": "api-documenter yaml --input-folder=temp" }, "dependencies": { "@google-cloud/promisify": "^2.0.0", @@ -72,7 +74,9 @@ "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack": "^4.42.0", - "webpack-cli": "^3.3.11" + "webpack-cli": "^3.3.11", + "@microsoft/api-documenter": "^7.8.10", + "@microsoft/api-extractor": "^7.8.10" }, "engines": { "node": ">=10" From daaaed780ab0472b31333bb5873d57ae7e1f7b14 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 21 Jul 2020 22:20:09 -0700 Subject: [PATCH 560/820] build: rename _toc to toc (#710) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/940354f9-15cd-4361-bbf4-dc9af1426979/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/99c93fe09f8c1dca09dfc0301c8668e3a70dd796 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 18da0e5f98a..854bd16f736 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "c2af98daa5382e36cdbfbaf1206a43ec5f3da291" + "sha": "a5e35eb69151fc682c2451f773efa52a2e7efe25" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "21f1470ecd01424dc91c70f1a7c798e4e87d1eec" + "sha": "99c93fe09f8c1dca09dfc0301c8668e3a70dd796" } } ], From b6eca533f367b780ffa13db44590746989d92a54 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 24 Jul 2020 13:36:13 -0700 Subject: [PATCH 561/820] chore: move gitattributes files to node templates (#711) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/d43b90cc-a087-4c57-864c-1e4f93292dc6/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/3a00b7fea8c4c83eaff8eb207f530a2e3e8e1de3 --- handwritten/nodejs-datastore/.gitattributes | 1 + handwritten/nodejs-datastore/synth.metadata | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.gitattributes b/handwritten/nodejs-datastore/.gitattributes index d4f4169b28b..33739cb74e4 100644 --- a/handwritten/nodejs-datastore/.gitattributes +++ b/handwritten/nodejs-datastore/.gitattributes @@ -1,3 +1,4 @@ *.ts text eol=lf *.js text eol=lf protos/* linguist-generated +**/api-extractor.json linguist-language=JSON-with-Comments diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 854bd16f736..35b76e5ebc7 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "a5e35eb69151fc682c2451f773efa52a2e7efe25" + "sha": "9118a344ccf1976424316aeef3f313b34be53e75" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "99c93fe09f8c1dca09dfc0301c8668e3a70dd796" + "sha": "3a00b7fea8c4c83eaff8eb207f530a2e3e8e1de3" } } ], From 536309993f67817ff428d05517b9c242e1685c43 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 29 Jul 2020 11:58:29 -0700 Subject: [PATCH 562/820] chore(node): fix kokoro build path for cloud-rad (#712) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/4bdc1826-2f69-49f1-a63b-94f99cceb5ee/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/89d431fb2975fc4e0ed24995a6e6dfc8ff4c24fa --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 35b76e5ebc7..83d782cef51 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "9118a344ccf1976424316aeef3f313b34be53e75" + "sha": "4a01ad4517927f3032e315bd3eeda0ca176e8774" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "3a00b7fea8c4c83eaff8eb207f530a2e3e8e1de3" + "sha": "89d431fb2975fc4e0ed24995a6e6dfc8ff4c24fa" } } ], From 076ad5ba92cf86bf0ac9be0460789be6c4f9b67e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 30 Jul 2020 19:10:19 -0700 Subject: [PATCH 563/820] build: update protos (#713) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/b205fd33-200c-4298-88b8-18b0d1c79a3e/targets - [ ] To automatically regenerate this PR, check this box. --- handwritten/nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/synth.metadata | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 994117f10ac..4723709f99e 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -13,7 +13,7 @@ // limitations under the License. import * as Long from "long"; -import * as $protobuf from "protobufjs"; +import {protobuf as $protobuf} from "google-gax"; /** Namespace google. */ export namespace google { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 873243f2897..d6eb4b402e0 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -19,7 +19,7 @@ define(["protobufjs/minimal"], factory); /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports) - module.exports = factory(require("protobufjs/minimal")); + module.exports = factory(require("google-gax").protobufMinimal); })(this, function($protobuf) { "use strict"; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 83d782cef51..c154275cd1a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "4a01ad4517927f3032e315bd3eeda0ca176e8774" + "sha": "616847c6cb687cf7e317ce3f747a759e2ffda7ca" } }, { From c1794885c041b2a2eb917eb1f2f3e5071bd75870 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 31 Jul 2020 09:24:27 -0700 Subject: [PATCH 564/820] docs: add links to the CHANGELOG from the README.md for Java and Node (#714) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/7b446397-88f3-4463-9e7d-d2ce7069989d/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/5936421202fb53ed4641bcb824017dd393a3dbcc --- handwritten/nodejs-datastore/README.md | 3 +++ handwritten/nodejs-datastore/synth.metadata | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index b1f16985510..a1ee5a5234e 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -14,6 +14,9 @@ Cloud Datastore Client Library for Node.js +A comprehensive list of changes in each version may be found in +[the CHANGELOG](https://github.com/googleapis/nodejs-datastore/blob/master/CHANGELOG.md). + * [Google Cloud Datastore Node.js Client API Reference][client-docs] * [Google Cloud Datastore Documentation][product-docs] * [github.com/googleapis/nodejs-datastore](https://github.com/googleapis/nodejs-datastore) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index c154275cd1a..313057fb17a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "616847c6cb687cf7e317ce3f747a759e2ffda7ca" + "sha": "8576dfd0b28e73e67521b864ef989ada092b6435" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "89d431fb2975fc4e0ed24995a6e6dfc8ff4c24fa" + "sha": "5936421202fb53ed4641bcb824017dd393a3dbcc" } } ], From bed8c77aea20ea339a5799ff0fab7618b24e48df Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 10 Aug 2020 18:04:54 -0700 Subject: [PATCH 565/820] build: --credential-file-override is no longer required (#716) @chingor13 has configured our runtime environment, such that we no longer need to explicitly provide a credentials file. How does this magic work, I didn't fully understand? Source-Author: Benjamin E. Coe Source-Date: Fri Aug 7 19:02:09 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 94421c47802f56a44c320257b2b4c190dc7d6b68 Source-Link: https://github.com/googleapis/synthtool/commit/94421c47802f56a44c320257b2b4c190dc7d6b68 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 313057fb17a..d2e9d2483dc 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "8576dfd0b28e73e67521b864ef989ada092b6435" + "sha": "978eb464005e4b68e84f4f54f01ca7b706742347" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5936421202fb53ed4641bcb824017dd393a3dbcc" + "sha": "94421c47802f56a44c320257b2b4c190dc7d6b68" } } ], From fd34ec36086c7dc5df7df2a0f3e421a5a06c0189 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 11 Aug 2020 11:24:08 -0700 Subject: [PATCH 566/820] build: use gapic-generator-typescript v1.0.7. (#717) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/5f7f9c6d-c75a-4c60-8bb8-0026a14cead7/targets - [ ] To automatically regenerate this PR, check this box. PiperOrigin-RevId: 325949033 Source-Link: https://github.com/googleapis/googleapis/commit/94006b3cb8d2fb44703cf535da15608eed6bf7db --- .../nodejs-datastore/src/v1/datastore_admin_client.ts | 8 +++++--- handwritten/nodejs-datastore/src/v1/datastore_client.ts | 5 ++--- handwritten/nodejs-datastore/synth.metadata | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index e60ec13c820..5aa13036dd5 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -335,12 +335,14 @@ export class DatastoreAdminClient { } ); + const descriptor = + this.descriptors.page[methodName] || + this.descriptors.longrunning[methodName] || + undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], - this.descriptors.page[methodName] || - this.descriptors.stream[methodName] || - this.descriptors.longrunning[methodName] + descriptor ); this.innerApiCalls[methodName] = apiCall; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 9097242b610..4739575d12b 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -220,12 +220,11 @@ export class DatastoreClient { } ); + const descriptor = undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], - this.descriptors.page[methodName] || - this.descriptors.stream[methodName] || - this.descriptors.longrunning[methodName] + descriptor ); this.innerApiCalls[methodName] = apiCall; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index d2e9d2483dc..822db7ec97f 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,15 +4,15 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "978eb464005e4b68e84f4f54f01ca7b706742347" + "sha": "63766afa16d4892090e056e21988a2345dc11019" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "b70bedf8081c80a9a0606564c00eccd358d77502", - "internalRef": "320669438" + "sha": "94006b3cb8d2fb44703cf535da15608eed6bf7db", + "internalRef": "325949033" } }, { From dede095cd2e697710dd64b9a2a68919c6a43aa6e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 13 Aug 2020 12:56:10 -0700 Subject: [PATCH 567/820] chore: update cloud rad kokoro build job (#718) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/5f7f9c6d-c75a-4c60-8bb8-0026a14cead7/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/bd0deaa1113b588d70449535ab9cbf0f2bd0e72f --- handwritten/nodejs-datastore/synth.metadata | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 822db7ec97f..3f730dc83c5 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "94421c47802f56a44c320257b2b4c190dc7d6b68" + "sha": "bd0deaa1113b588d70449535ab9cbf0f2bd0e72f" } } ], From 40beab24675f22f9e8a84bfbb761c0737053eb29 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 14 Aug 2020 09:09:08 -0700 Subject: [PATCH 568/820] build: perform publish using Node 12 (#719) Source-Author: Benjamin E. Coe Source-Date: Wed Aug 12 12:12:29 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 5747555f7620113d9a2078a48f4c047a99d31b3e Source-Link: https://github.com/googleapis/synthtool/commit/5747555f7620113d9a2078a48f4c047a99d31b3e --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 3f730dc83c5..8adca4a1c94 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "63766afa16d4892090e056e21988a2345dc11019" + "sha": "f6361f0eef5471436cfb00a5dc8f69ed3b2d74e1" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "bd0deaa1113b588d70449535ab9cbf0f2bd0e72f" + "sha": "5747555f7620113d9a2078a48f4c047a99d31b3e" } } ], From 4539da2724afddd6aa494afc084f9536e665a503 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 19 Aug 2020 09:42:57 -0700 Subject: [PATCH 569/820] chore: start tracking obsolete files (#720) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/7a1b0b96-8ddb-4836-a1a2-d2f73b7e6ffe/targets - [ ] To automatically regenerate this PR, check this box. --- handwritten/nodejs-datastore/synth.metadata | 86 ++++++++++++++++++++- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 8adca4a1c94..67a32e04289 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,22 +4,22 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "f6361f0eef5471436cfb00a5dc8f69ed3b2d74e1" + "sha": "d859b0fba4e611450dbb6c2b1819d28ab91cda3c" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "94006b3cb8d2fb44703cf535da15608eed6bf7db", - "internalRef": "325949033" + "sha": "4c5071b615d96ef9dfd6a63d8429090f1f2872bb", + "internalRef": "327369997" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5747555f7620113d9a2078a48f4c047a99d31b3e" + "sha": "1a60ff2a3975c2f5054431588bd95db9c3b862ba" } } ], @@ -42,5 +42,83 @@ "generator": "bazel" } } + ], + "generatedFiles": [ + ".eslintignore", + ".eslintrc.json", + ".gitattributes", + ".github/ISSUE_TEMPLATE/bug_report.md", + ".github/ISSUE_TEMPLATE/feature_request.md", + ".github/ISSUE_TEMPLATE/support_request.md", + ".github/PULL_REQUEST_TEMPLATE.md", + ".github/publish.yml", + ".github/release-please.yml", + ".github/workflows/ci.yaml", + ".gitignore", + ".jsdoc.js", + ".kokoro/.gitattributes", + ".kokoro/common.cfg", + ".kokoro/continuous/node10/common.cfg", + ".kokoro/continuous/node10/docs.cfg", + ".kokoro/continuous/node10/lint.cfg", + ".kokoro/continuous/node10/samples-test.cfg", + ".kokoro/continuous/node10/system-test.cfg", + ".kokoro/continuous/node10/test.cfg", + ".kokoro/continuous/node12/common.cfg", + ".kokoro/continuous/node12/test.cfg", + ".kokoro/docs.sh", + ".kokoro/lint.sh", + ".kokoro/populate-secrets.sh", + ".kokoro/presubmit/node10/common.cfg", + ".kokoro/presubmit/node10/samples-test.cfg", + ".kokoro/presubmit/node10/system-test.cfg", + ".kokoro/presubmit/node12/common.cfg", + ".kokoro/presubmit/node12/test.cfg", + ".kokoro/publish.sh", + ".kokoro/release/docs-devsite.cfg", + ".kokoro/release/docs-devsite.sh", + ".kokoro/release/docs.cfg", + ".kokoro/release/docs.sh", + ".kokoro/release/publish.cfg", + ".kokoro/samples-test.sh", + ".kokoro/system-test.sh", + ".kokoro/test.bat", + ".kokoro/test.sh", + ".kokoro/trampoline.sh", + ".mocharc.js", + ".nycrc", + ".prettierignore", + ".prettierrc.js", + "CODE_OF_CONDUCT.md", + "CONTRIBUTING.md", + "LICENSE", + "README.md", + "api-extractor.json", + "linkinator.config.json", + "package-lock.json.4134014932", + "protos/google/datastore/admin/v1/datastore_admin.proto", + "protos/google/datastore/admin/v1/index.proto", + "protos/google/datastore/v1/datastore.proto", + "protos/google/datastore/v1/entity.proto", + "protos/google/datastore/v1/query.proto", + "protos/protos.d.ts", + "protos/protos.js", + "protos/protos.json", + "renovate.json", + "samples/README.md", + "samples/package-lock.json.1998879170", + "src/v1/datastore_admin_client.ts", + "src/v1/datastore_admin_client_config.json", + "src/v1/datastore_admin_proto_list.json", + "src/v1/datastore_client.ts", + "src/v1/datastore_client_config.json", + "src/v1/datastore_proto_list.json", + "system-test/fixtures/sample/src/index.js", + "system-test/fixtures/sample/src/index.ts", + "system-test/install.ts", + "test/gapic_datastore_admin_v1.ts", + "test/gapic_datastore_v1.ts", + "tsconfig.json", + "webpack.config.js" ] } \ No newline at end of file From 9ec976c4d6f3bb82728683b2581128faf6cafe7a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 21 Aug 2020 09:28:04 -0700 Subject: [PATCH 570/820] build: move system and samples test from Node 10 to Node 12 (#721) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/ba2d388f-b3b2-4ad7-a163-0c6b4d86894f/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/05de3e1e14a0b07eab8b474e669164dbd31f81fb --- handwritten/nodejs-datastore/synth.metadata | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 67a32e04289..0357ced7dbc 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "d859b0fba4e611450dbb6c2b1819d28ab91cda3c" + "sha": "7f2e6cb5dce51d4ef837b44e531ab15327aa66e2" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "1a60ff2a3975c2f5054431588bd95db9c3b862ba" + "sha": "05de3e1e14a0b07eab8b474e669164dbd31f81fb" } } ], @@ -60,19 +60,19 @@ ".kokoro/common.cfg", ".kokoro/continuous/node10/common.cfg", ".kokoro/continuous/node10/docs.cfg", - ".kokoro/continuous/node10/lint.cfg", - ".kokoro/continuous/node10/samples-test.cfg", - ".kokoro/continuous/node10/system-test.cfg", ".kokoro/continuous/node10/test.cfg", ".kokoro/continuous/node12/common.cfg", + ".kokoro/continuous/node12/lint.cfg", + ".kokoro/continuous/node12/samples-test.cfg", + ".kokoro/continuous/node12/system-test.cfg", ".kokoro/continuous/node12/test.cfg", ".kokoro/docs.sh", ".kokoro/lint.sh", ".kokoro/populate-secrets.sh", ".kokoro/presubmit/node10/common.cfg", - ".kokoro/presubmit/node10/samples-test.cfg", - ".kokoro/presubmit/node10/system-test.cfg", ".kokoro/presubmit/node12/common.cfg", + ".kokoro/presubmit/node12/samples-test.cfg", + ".kokoro/presubmit/node12/system-test.cfg", ".kokoro/presubmit/node12/test.cfg", ".kokoro/publish.sh", ".kokoro/release/docs-devsite.cfg", @@ -95,7 +95,6 @@ "README.md", "api-extractor.json", "linkinator.config.json", - "package-lock.json.4134014932", "protos/google/datastore/admin/v1/datastore_admin.proto", "protos/google/datastore/admin/v1/index.proto", "protos/google/datastore/v1/datastore.proto", @@ -106,7 +105,6 @@ "protos/protos.json", "renovate.json", "samples/README.md", - "samples/package-lock.json.1998879170", "src/v1/datastore_admin_client.ts", "src/v1/datastore_admin_client_config.json", "src/v1/datastore_admin_proto_list.json", From be98583ac6bd5f168a33a38a13af8ee69c383a70 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 27 Aug 2020 09:26:20 -0700 Subject: [PATCH 571/820] build: track flaky tests for "nightly", add new secrets for tagging (#722) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/0901f4c4-aa35-478b-ad7f-b996019d3c27/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/8cf6d2834ad14318e64429c3b94f6443ae83daf9 --- handwritten/nodejs-datastore/synth.metadata | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0357ced7dbc..cc2cc08ac81 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "7f2e6cb5dce51d4ef837b44e531ab15327aa66e2" + "sha": "aedbe261308def60e6444022ba72f1caaab02b35" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "05de3e1e14a0b07eab8b474e669164dbd31f81fb" + "sha": "8cf6d2834ad14318e64429c3b94f6443ae83daf9" } } ], @@ -51,7 +51,6 @@ ".github/ISSUE_TEMPLATE/feature_request.md", ".github/ISSUE_TEMPLATE/support_request.md", ".github/PULL_REQUEST_TEMPLATE.md", - ".github/publish.yml", ".github/release-please.yml", ".github/workflows/ci.yaml", ".gitignore", From 8228d2c983f727394c0f69623acb284a45d4445f Mon Sep 17 00:00:00 2001 From: Alex <7764119+AVaksman@users.noreply.github.com> Date: Tue, 1 Sep 2020 16:28:28 -0400 Subject: [PATCH 572/820] fix: split insert, update, upsert (#693) --- handwritten/nodejs-datastore/src/index.ts | 498 ++++++++++- handwritten/nodejs-datastore/src/request.ts | 488 ----------- .../nodejs-datastore/src/transaction.ts | 74 +- handwritten/nodejs-datastore/test/index.ts | 825 +++++++++++++++++- handwritten/nodejs-datastore/test/request.ts | 778 +---------------- .../nodejs-datastore/test/transaction.ts | 226 +++-- 6 files changed, 1564 insertions(+), 1325 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index fc3f1b9769c..f2ed474aca1 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -31,18 +31,45 @@ import { ChannelCredentials, GoogleAuth, GoogleAuthOptions, + CallOptions, } from 'google-gax'; import * as is from 'is'; -import {entity} from './entity'; +import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; import {Query} from './query'; -import {DatastoreRequest} from './request'; +import { + DatastoreRequest, + CommitCallback, + CommitResponse, + PrepareEntityObjectResponse, + SaveCallback, + SaveResponse, + Mutation, +} from './request'; import {Transaction} from './transaction'; import {promisifyAll} from '@google-cloud/promisify'; +import {google} from '../protos/protos'; const {grpc} = new GrpcClient(); export type PathType = string | number | entity.Int; +export interface BooleanObject { + [key: string]: boolean; +} +export interface EntityProtoReduceAccumulator { + [key: string]: ValueProto; +} +export interface EntityProtoReduceData { + value: ValueProto; + excludeFromIndexes: ValueProto; + name: string | number; +} +export type UpdateCallback = CommitCallback; +export type UpdateResponse = CommitResponse; +export type UpsertCallback = CommitCallback; +export type UpsertResponse = CommitResponse; +export type InsertCallback = CommitCallback; +export type InsertResponse = CommitResponse; // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -425,6 +452,473 @@ class Datastore extends DatastoreRequest { return this.auth.getProjectId(); } + insert(entities: Entities): Promise; + insert(entities: Entities, callback: InsertCallback): void; + /** + * Maps to {@link Datastore#save}, forcing the method to be `insert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + insert( + entities: Entities, + callback?: InsertCallback + ): void | Promise { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'insert'; + return x; + }); + + this.save(entities, callback!); + } + + save(entities: Entities, gaxOptions?: CallOptions): Promise; + save( + entities: Entities, + gaxOptions: CallOptions, + callback: SaveCallback + ): void; + save(entities: Entities, callback: SaveCallback): void; + /** + * Insert or update the specified object(s). If a key is incomplete, its + * associated object is inserted and the original Key object is updated to + * contain the generated ID. + * + * This method will determine the correct Datastore method to execute + * (`upsert`, `insert`, or `update`) by using the key(s) provided. For + * example, if you provide an incomplete key (one without an ID), the request + * will create a new entity and have its ID automatically assigned. If you + * provide a complete key, the entity will be updated with the data specified. + * + * By default, all properties are indexed. To prevent a property from being + * included in *all* indexes, you must supply an `excludeFromIndexes` array. + * + * To prevent large properties from being included in *all* indexes, you must supply + * `excludeLargeProperties: true`. + * See below for an example. + * + * @borrows {@link Transaction#save} as save + * + * @throws {Error} If an unrecognized method is provided. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the example below to + * see how to target properties at different levels of nesting within your + * @param {boolean} [entities.excludeLargeProperties] Automatically exclude + * large properties from indexing. It help in storing large values. + * @param {string} [entities.method] Explicit method to use, either 'insert', + * 'update', or 'upsert'. + * @param {object} entities.data Data to save with the provided key. + * entity. + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + * + * @example + * //- + * // Save a single entity. + * // + * // Notice that we are providing an incomplete key. After saving, the + * // original Key object used to save will be updated to contain the path + * // with its generated ID. + * //- + * const key = datastore.key('Company'); + * const entity = { + * key: key, + * data: { + * rating: '10' + * } + * }; + * + * datastore.save(entity, (err) => { + * console.log(key.path); // [ 'Company', 5669468231434240 ] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity using a provided name instead of auto-generated ID. + * // + * // Here we are providing a key with name instead of an ID. After saving, + * // the original Key object used to save will be updated to contain the + * // path with the name instead of a generated ID. + * //- + * const key = datastore.key(['Company', 'donutshack']); + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }; + * + * datastore.save(entity, (err) => { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // undefined + * }); + * + * //- + * // Save a single entity with a provided namespace. Namespaces allow for + * // multitenancy. To read more about this, see + * // [the Datastore docs on key concepts](https://goo.gl/M1LUAu). + * // + * // Here we are providing a key with namespace. + * //- + * const key = datastore.key({ + * namespace: 'my-namespace', + * path: ['Company', 'donutshack'] + * }); + * + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: 8 + * } + * }; + * + * datastore.save(entity, (err) => { + * console.log(key.path); // ['Company', 'donutshack'] + * console.log(key.namespace); // 'my-namespace' + * }); + * + * //- + * // Save different types of data, including ints, doubles, dates, booleans, + * // blobs, and lists. + * // + * // Notice that we are providing an incomplete key. After saving, the + * // original Key object used to save will be updated to contain the path + * // with its generated ID. + * //- + * const key = datastore.key('Company'); + * const entity = { + * key: key, + * data: { + * name: 'DonutShack', + * rating: datastore.int(10), + * worth: datastore.double(123456.78), + * location: datastore.geoPoint({ + * latitude: 40.6894, + * longitude: -74.0447 + * }), + * numDonutsServed: 45, + * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), + * isStartup: true, + * donutEmoji: Buffer.from('\uD83C\uDF69'), + * keywords: [ + * 'donut', + * 'coffee', + * 'yum' + * ] + * } + * }; + * + * datastore.save(entity, (err, apiResponse) => {}); + * + * //- + * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. + * // This will allow storing string values larger than 1500 bytes. + * //- + * const entity = { + * key: datastore.key('Company'), + * excludeFromIndexes: [ + * 'description', + * 'embeddedEntity.description', + * 'arrayValue[]', + * 'arrayValue[].description' + * ], + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * 'Long string (...)', + * { + * description: 'Long string (...)' + * } + * ] + * } + * }; + * + * datastore.save(entity, (err, apiResponse) => {}); + * + * //- + * // Use boolean `excludeLargeProperties`, to auto exclude Large properties from indexing. + * // This will allow storing string values larger than 1500 bytes. + * //- + * const entity = { + * key: datastore.key('Company'), + * data: { + * description: 'Long string (...)', + * embeddedEntity: { + * description: 'Long string (...)' + * }, + * arrayValue: [ + * 'Long string (...)', + * { + * description: 'Long string (...)' + * } + * ] + * }, + * excludeLargeProperties: true + * }; + * + * datastore.save(entity, (err, apiResponse) => {}); + * + * //- + * // Save multiple entities at once. + * //- + * const companyKey = datastore.key(['Company', 123]); + * const productKey = datastore.key(['Product', 'Computer']); + * const entities = [ + * { + * key: companyKey, + * data: { + * HQ: 'Dallas, TX' + * } + * }, + * { + * key: productKey, + * data: { + * vendor: 'Dell' + * } + * } + * ]; + * + * datastore.save(entities, (err, apiResponse) => {}); + * + * //- + * // Explicitly attempt to 'insert' a specific entity. + * //- + * const userKey = datastore.key(['User', 'chilts']); + * const entity = { + * key: userKey, + * method: 'insert', + * data: { + * fullName: 'Andrew Chilton' + * } + * }; + * + * datastore.save(entity, (err, apiResponse) => {}); + * + * //- + * // Returns a Promise if callback is omitted. + * //- + * datastore.save(entity).then((data) => { + * const apiResponse = data[0]; + * }); + */ + save( + entities: Entities, + gaxOptionsOrCallback?: CallOptions | SaveCallback, + cb?: SaveCallback + ): void | Promise { + entities = arrify(entities); + const gaxOptions = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + + const insertIndexes: BooleanObject = {}; + const mutations: google.datastore.v1.IMutation[] = []; + const methods: BooleanObject = { + insert: true, + update: true, + upsert: true, + }; + + // Iterate over the entity objects, build a proto from all keys and values, + // then place in the correct mutation array (insert, update, etc). + entities + .map(DatastoreRequest.prepareEntityObject_) + .forEach((entityObject: Entity, index: number) => { + const mutation: Mutation = {}; + let entityProto: EntityProto = {}; + let method = 'upsert'; + + if (entityObject.method) { + if (methods[entityObject.method]) { + method = entityObject.method; + } else { + throw new Error( + 'Method ' + entityObject.method + ' not recognized.' + ); + } + } + + if (entityObject.excludeLargeProperties) { + entityObject.excludeFromIndexes = entity.findLargeProperties_( + entityObject.data, + '', + entityObject.excludeFromIndexes + ); + } + + if (!entity.isKeyComplete(entityObject.key)) { + insertIndexes[index] = true; + } + + // @TODO remove in @google-cloud/datastore@2.0.0 + // This was replaced with a more efficient mechanism in the top-level + // `excludeFromIndexes` option. + if (Array.isArray(entityObject.data)) { + entityProto.properties = entityObject.data.reduce( + ( + acc: EntityProtoReduceAccumulator, + data: EntityProtoReduceData + ) => { + const value = entity.encodeValue( + data.value, + data.name.toString() + ); + + if (typeof data.excludeFromIndexes === 'boolean') { + const excluded = data.excludeFromIndexes; + let values = value.arrayValue && value.arrayValue.values; + + if (values) { + values = values.map((x: ValueProto) => { + x.excludeFromIndexes = excluded; + return x; + }); + } else { + value.excludeFromIndexes = data.excludeFromIndexes; + } + } + + acc[data.name] = value; + + return acc; + }, + {} + ); + } else { + entityProto = entity.entityToEntityProto(entityObject); + } + + entityProto.key = entity.keyToKeyProto(entityObject.key); + + mutation[method] = entityProto; + mutations.push(mutation); + }); + + const reqOpts = { + mutations, + }; + + function onCommit( + err?: Error | null, + resp?: google.datastore.v1.ICommitResponse + ) { + if (err || !resp) { + callback(err, resp); + return; + } + + arrify(resp.mutationResults).forEach((result, index) => { + if (!result.key) { + return; + } + if (insertIndexes[index]) { + const id = entity.keyFromKeyProto(result.key).id; + entities[index].key.id = id; + } + }); + + callback(null, resp); + } + + if (this.id) { + this.requests_.push(reqOpts); + this.requestCallbacks_.push(onCommit); + return; + } + + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions, + }, + onCommit + ); + } + + update(entities: Entities): Promise; + update(entities: Entities, callback: UpdateCallback): void; + /** + * Maps to {@link Datastore#save}, forcing the method to be `update`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + update( + entities: Entities, + callback?: UpdateCallback + ): void | Promise { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'update'; + return x; + }); + + this.save(entities, callback!); + } + + upsert(entities: Entities): Promise; + upsert(entities: Entities, callback: UpsertCallback): void; + /** + * Maps to {@link Datastore#save}, forcing the method to be `upsert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request + * @param {object} callback.apiResponse The full API response. + */ + upsert( + entities: Entities, + callback?: UpsertCallback + ): void | Promise { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'upsert'; + return x; + }); + + this.save(entities, callback!); + } + /** * Helper function to get a Datastore Double object. * diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 643c7642024..4f054da7f22 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -36,7 +36,6 @@ import { Entity, EntityProto, KeyProto, - ValueProto, ResponseResult, Entities, } from './entity'; @@ -540,36 +539,6 @@ class DatastoreRequest { ); } - insert(entities: Entities): Promise; - insert(entities: Entities, callback: InsertCallback): void; - /** - * Maps to {@link Datastore#save}, forcing the method to be `insert`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ - insert( - entities: Entities, - callback?: InsertCallback - ): void | Promise { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'insert'; - return x; - }); - - this.save(entities, callback!); - } - runQuery(query: Query, options?: RunQueryOptions): Promise; runQuery( query: Query, @@ -829,446 +798,6 @@ class DatastoreRequest { return stream; } - save(entities: Entities, gaxOptions?: CallOptions): Promise; - save( - entities: Entities, - gaxOptions: CallOptions, - callback: SaveCallback - ): void; - save(entities: Entities, callback: SaveCallback): void; - /** - * Insert or update the specified object(s). If a key is incomplete, its - * associated object is inserted and the original Key object is updated to - * contain the generated ID. - * - * This method will determine the correct Datastore method to execute - * (`upsert`, `insert`, or `update`) by using the key(s) provided. For - * example, if you provide an incomplete key (one without an ID), the request - * will create a new entity and have its ID automatically assigned. If you - * provide a complete key, the entity will be updated with the data specified. - * - * By default, all properties are indexed. To prevent a property from being - * included in *all* indexes, you must supply an `excludeFromIndexes` array. - * - * To prevent large properties from being included in *all* indexes, you must supply - * `excludeLargeProperties: true`. - * See below for an example. - * - * @borrows {@link Transaction#save} as save - * - * @throws {Error} If an unrecognized method is provided. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the example below to - * see how to target properties at different levels of nesting within your - * @param {boolean} [entities.excludeLargeProperties] Automatically exclude - * large properties from indexing. It help in storing large values. - * @param {string} [entities.method] Explicit method to use, either 'insert', - * 'update', or 'upsert'. - * @param {object} entities.data Data to save with the provided key. - * entity. - * @param {object} [gaxOptions] Request configuration options, outlined here: - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - * - * @example - * //- - * // Save a single entity. - * // - * // Notice that we are providing an incomplete key. After saving, the - * original - * // Key object used to save will be updated to contain the path with its - * // generated ID. - * //- - * const key = datastore.key('Company'); - * const entity = { - * key: key, - * data: { - * rating: '10' - * } - * }; - * - * datastore.save(entity, (err) => { - * console.log(key.path); // [ 'Company', 5669468231434240 ] - * console.log(key.namespace); // undefined - * }); - * - * //- - * // Save a single entity using a provided name instead of auto-generated ID. - * // - * // Here we are providing a key with name instead of an ID. After saving, - * the - * // original Key object used to save will be updated to contain the path - * with - * // the name instead of a generated ID. - * //- - * const key = datastore.key(['Company', 'donutshack']); - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: 8 - * } - * }; - * - * datastore.save(entity, (err) => { - * console.log(key.path); // ['Company', 'donutshack'] - * console.log(key.namespace); // undefined - * }); - * - * //- - * // Save a single entity with a provided namespace. Namespaces allow for - * // multitenancy. To read more about this, see - * // [the Datastore docs on key concepts](https://goo.gl/M1LUAu). - * // - * // Here we are providing a key with namespace. - * //- - * const key = datastore.key({ - * namespace: 'my-namespace', - * path: ['Company', 'donutshack'] - * }); - * - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: 8 - * } - * }; - * - * datastore.save(entity, (err) => { - * console.log(key.path); // ['Company', 'donutshack'] - * console.log(key.namespace); // 'my-namespace' - * }); - * - * //- - * // Save different types of data, including ints, doubles, dates, booleans, - * // blobs, and lists. - * // - * // Notice that we are providing an incomplete key. After saving, the - * original - * // Key object used to save will be updated to contain the path with its - * // generated ID. - * //- - * const key = datastore.key('Company'); - * const entity = { - * key: key, - * data: { - * name: 'DonutShack', - * rating: datastore.int(10), - * worth: datastore.double(123456.78), - * location: datastore.geoPoint({ - * latitude: 40.6894, - * longitude: -74.0447 - * }), - * numDonutsServed: 45, - * founded: new Date('Tue May 12 2015 15:30:00 GMT-0400 (EDT)'), - * isStartup: true, - * donutEmoji: Buffer.from('\uD83C\uDF69'), - * keywords: [ - * 'donut', - * 'coffee', - * 'yum' - * ] - * } - * }; - * - * datastore.save(entity, (err, apiResponse) => {}); - * - * //- - * // Use an array, `excludeFromIndexes`, to exclude properties from indexing. - * // This will allow storing string values larger than 1500 bytes. - * //- - * const entity = { - * key: datastore.key('Company'), - * excludeFromIndexes: [ - * 'description', - * 'embeddedEntity.description', - * 'arrayValue[]', - * 'arrayValue[].description' - * ], - * data: { - * description: 'Long string (...)', - * embeddedEntity: { - * description: 'Long string (...)' - * }, - * arrayValue: [ - * 'Long string (...)', - * { - * description: 'Long string (...)' - * } - * ] - * } - * }; - * - * datastore.save(entity, (err, apiResponse) => {}); - * //- - * // Use boolean `excludeLargeProperties`, to auto exclude Large properties from indexing. - * // This will allow storing string values larger than 1500 bytes. - * //- - * const entity = { - * key: datastore.key('Company'), - * data: { - * description: 'Long string (...)', - * embeddedEntity: { - * description: 'Long string (...)' - * }, - * arrayValue: [ - * 'Long string (...)', - * { - * description: 'Long string (...)' - * } - * ] - * }, - * excludeLargeProperties: true - * }; - * - * datastore.save(entity, (err, apiResponse) => {}); - * - * //- - * // Save multiple entities at once. - * //- - * const companyKey = datastore.key(['Company', 123]); - * const productKey = datastore.key(['Product', 'Computer']); - * const entities = [ - * { - * key: companyKey, - * data: { - * HQ: 'Dallas, TX' - * } - * }, - * { - * key: productKey, - * data: { - * vendor: 'Dell' - * } - * } - * ]; - * - * datastore.save(entities, (err, apiResponse) => {}); - * - * //- - * // Explicitly attempt to 'insert' a specific entity. - * //- - * const userKey = datastore.key(['User', 'chilts']); - * const entity = { - * key: userKey, - * method: 'insert', - * data: { - * fullName: 'Andrew Chilton' - * } - * }; - * - * datastore.save(entity, (err, apiResponse) => {}); - * - * //- - * // Returns a Promise if callback is omitted. - * //- - * datastore.save(entity).then((data) => { - * const apiResponse = data[0]; - * }); - */ - save( - entities: Entities, - gaxOptionsOrCallback?: CallOptions | SaveCallback, - cb?: SaveCallback - ): void | Promise { - entities = arrify(entities); - const gaxOptions = - typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; - const callback = - typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; - - const insertIndexes: BooleanObject = {}; - const mutations: google.datastore.v1.IMutation[] = []; - const methods: BooleanObject = { - insert: true, - update: true, - upsert: true, - }; - - // Iterate over the entity objects, build a proto from all keys and values, - // then place in the correct mutation array (insert, update, etc). - entities - .map(DatastoreRequest.prepareEntityObject_) - .forEach((entityObject: Entity, index: number) => { - const mutation: Mutation = {}; - let entityProto: EntityProto = {}; - let method = 'upsert'; - - if (entityObject.method) { - if (methods[entityObject.method]) { - method = entityObject.method; - } else { - throw new Error( - 'Method ' + entityObject.method + ' not recognized.' - ); - } - } - - if (entityObject.excludeLargeProperties) { - entityObject.excludeFromIndexes = entity.findLargeProperties_( - entityObject.data, - '', - entityObject.excludeFromIndexes - ); - } - - if (!entity.isKeyComplete(entityObject.key)) { - insertIndexes[index] = true; - } - - // @TODO remove in @google-cloud/datastore@2.0.0 - // This was replaced with a more efficient mechanism in the top-level - // `excludeFromIndexes` option. - if (Array.isArray(entityObject.data)) { - entityProto.properties = entityObject.data.reduce( - ( - acc: EntityProtoReduceAccumulator, - data: EntityProtoReduceData - ) => { - const value = entity.encodeValue( - data.value, - data.name.toString() - ); - - if (typeof data.excludeFromIndexes === 'boolean') { - const excluded = data.excludeFromIndexes; - let values = value.arrayValue && value.arrayValue.values; - - if (values) { - values = values.map((x: ValueProto) => { - x.excludeFromIndexes = excluded; - return x; - }); - } else { - value.excludeFromIndexes = data.excludeFromIndexes; - } - } - - acc[data.name] = value; - - return acc; - }, - {} - ); - } else { - entityProto = entity.entityToEntityProto(entityObject); - } - - entityProto.key = entity.keyToKeyProto(entityObject.key); - - mutation[method] = entityProto; - mutations.push(mutation); - }); - - const reqOpts = { - mutations, - }; - - function onCommit( - err?: Error | null, - resp?: google.datastore.v1.ICommitResponse - ) { - if (err || !resp) { - callback(err, resp); - return; - } - - arrify(resp.mutationResults).forEach((result, index) => { - if (!result.key) { - return; - } - if (insertIndexes[index]) { - const id = entity.keyFromKeyProto(result.key).id; - entities[index].key.id = id; - } - }); - - callback(null, resp); - } - - if (this.id) { - this.requests_.push(reqOpts); - this.requestCallbacks_.push(onCommit); - return; - } - - this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions, - }, - onCommit - ); - } - - update(entities: Entities): Promise; - update(entities: Entities, callback: UpdateCallback): void; - /** - * Maps to {@link Datastore#save}, forcing the method to be `update`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ - update( - entities: Entities, - callback?: UpdateCallback - ): void | Promise { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'update'; - return x; - }); - - this.save(entities, callback!); - } - - upsert(entities: Entities): Promise; - upsert(entities: Entities, callback: UpsertCallback): void; - /** - * Maps to {@link Datastore#save}, forcing the method to be `upsert`. - * - * @param {object|object[]} entities Datastore key object(s). - * @param {Key} entities.key Datastore key object. - * @param {string[]} [entities.excludeFromIndexes] Exclude properties from - * indexing using a simple JSON path notation. See the examples in - * {@link Datastore#save} to see how to target properties at different - * levels of nesting within your entity. - * @param {object} entities.data Data to save with the provided key. - * @param {function} callback The callback function. - * @param {?error} callback.err An error returned while making this request - * @param {object} callback.apiResponse The full API response. - */ - upsert( - entities: Entities, - callback?: UpsertCallback - ): void | Promise { - entities = arrify(entities) - .map(DatastoreRequest.prepareEntityObject_) - .map((x: PrepareEntityObjectResponse) => { - x.method = 'upsert'; - return x; - }); - - this.save(entities, callback!); - } - merge(entities: Entities): Promise; merge(entities: Entities, callback: SaveCallback): void; /** @@ -1409,20 +938,9 @@ class DatastoreRequest { } } -export interface BooleanObject { - [key: string]: boolean; -} export interface ConsistencyProtoCode { [key: string]: number; } -export interface EntityProtoReduceAccumulator { - [key: string]: ValueProto; -} -export interface EntityProtoReduceData { - value: ValueProto; - excludeFromIndexes: ValueProto; - name: string | number; -} export type AllocateIdsResponse = [ entity.Key[], google.datastore.v1.IAllocateIdsResponse @@ -1489,14 +1007,8 @@ export interface CommitCallback { export type CommitResponse = [google.datastore.v1.ICommitResponse]; export type SaveCallback = CommitCallback; export type SaveResponse = CommitResponse; -export type UpdateCallback = CommitCallback; -export type UpdateResponse = CommitResponse; -export type UpsertCallback = CommitCallback; -export type UpsertResponse = CommitResponse; export type DeleteCallback = CommitCallback; export type DeleteResponse = CommitResponse; -export type InsertCallback = CommitCallback; -export type InsertResponse = CommitResponse; /*! Developer Documentation * diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 2331ce44f5b..e1ab46ab1f8 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -28,6 +28,7 @@ import { CommitResponse, DatastoreRequest, RequestOptions, + PrepareEntityObjectResponse, } from './request'; /** @@ -209,7 +210,7 @@ class Transaction extends DatastoreRequest { (modifiedEntity: {method: string; args: {reverse: () => void}}) => { const method = modifiedEntity.method; const args = modifiedEntity.args.reverse(); - DatastoreRequest.prototype[method].call(this, args, () => {}); + Datastore.prototype[method].call(this, args, () => {}); } ); @@ -379,6 +380,28 @@ class Transaction extends DatastoreRequest { }); } + /** + * Maps to {@link Datastore#save}, forcing the method to be `insert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + */ + insert(entities: Entities): void { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'insert'; + return x; + }); + + this.save(entities); + } + rollback(callback: RollbackCallback): void; rollback(gaxOptions?: CallOptions): Promise; rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; @@ -665,8 +688,7 @@ class Transaction extends DatastoreRequest { * }); * }); */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - save(entities: Entities): any { + save(entities: Entities): void { arrify(entities).forEach((ent: Entity) => { this.modifiedEntities_.push({ entity: { @@ -677,6 +699,50 @@ class Transaction extends DatastoreRequest { }); }); } + + /** + * Maps to {@link Datastore#save}, forcing the method to be `update`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + */ + update(entities: Entities): void { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'update'; + return x; + }); + + this.save(entities); + } + + /** + * Maps to {@link Datastore#save}, forcing the method to be `upsert`. + * + * @param {object|object[]} entities Datastore key object(s). + * @param {Key} entities.key Datastore key object. + * @param {string[]} [entities.excludeFromIndexes] Exclude properties from + * indexing using a simple JSON path notation. See the examples in + * {@link Datastore#save} to see how to target properties at different + * levels of nesting within your entity. + * @param {object} entities.data Data to save with the provided key. + */ + upsert(entities: Entities): void { + entities = arrify(entities) + .map(DatastoreRequest.prepareEntityObject_) + .map((x: PrepareEntityObjectResponse) => { + x.method = 'upsert'; + return x; + }); + + this.save(entities); + } } export type ModifiedEntities = Array<{ @@ -711,7 +777,7 @@ export interface RunOptions { * that a callback is omitted. */ promisifyAll(Transaction, { - exclude: ['createQuery', 'delete', 'save'], + exclude: ['createQuery', 'delete', 'insert', 'save', 'update', 'upsert'], }); /** diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index a5a3876238d..179d075980f 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -19,7 +19,11 @@ import * as proxyquire from 'proxyquire'; import * as ds from '../src'; import {DatastoreOptions} from '../src'; -import {entity} from '../src/entity'; +import {entity, Entity, EntityProto, EntityObject} from '../src/entity'; +import {RequestConfig} from '../src/request'; +import * as is from 'is'; +import * as sinon from 'sinon'; +import * as extend from 'extend'; // eslint-disable-next-line @typescript-eslint/no-var-requires const v1 = require('../src/v1/index.js'); @@ -68,6 +72,12 @@ const fakeEntity: any = { isDsKey(...args: any) { this.calledWith_ = args; }, + isKeyComplete: entity.isKeyComplete, + keyFromKeyProto: entity.keyFromKeyProto, + keyToKeyProto: entity.keyToKeyProto, + encodeValue: entity.encodeValue, + entityToEntityProto: entity.entityToEntityProto, + findLargeProperties_: entity.findLargeProperties_, URLSafeKey: entity.URLSafeKey, }; @@ -116,6 +126,8 @@ class FakeTransaction { function FakeV1() {} +const sandbox = sinon.createSandbox(); + describe('Datastore', () => { let Datastore: typeof ds.Datastore; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -506,6 +518,53 @@ describe('Datastore', () => { }); }); + describe('insert', () => { + afterEach(() => { + sandbox.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'insert', + }); + + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + datastore.insert(entityObject, assert.ifError); + }); + + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'insert', + }, + ]); + callback(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.insert({key, data: {}}, done); + }); + }); + describe('key', () => { it('should return a Key object', () => { const options = {} as entity.KeyOptions; @@ -523,6 +582,770 @@ describe('Datastore', () => { }); }); + describe('save', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + type Any = any; + let key: entity.Key; + + beforeEach(() => { + key = new entity.Key({ + namespace: 'namespace', + path: ['Company', 123], + }); + }); + + afterEach(() => { + sandbox.restore(); + }); + + it('should save with keys', done => { + const expectedReq = { + mutations: [ + { + upsert: { + key: { + partitionId: { + namespaceId: 'namespace', + }, + path: [ + { + kind: 'Company', + id: 123, + }, + ], + }, + properties: { + k: { + stringValue: 'v', + }, + }, + }, + }, + { + upsert: { + key: { + partitionId: { + namespaceId: 'namespace', + }, + path: [ + { + kind: 'Company', + id: 123, + }, + ], + }, + properties: { + k: { + stringValue: 'v', + }, + }, + }, + }, + ], + }; + + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); + + assert.deepStrictEqual(config.reqOpts, expectedReq); + assert.deepStrictEqual(config.gaxOpts, {}); + + callback(); + }; + datastore.save( + [ + {key, data: {k: 'v'}}, + {key, data: {k: 'v'}}, + ], + done + ); + }); + + it('should save null value when excludeLargeProperties enabled', done => { + const expectedProperties = { + stringField: { + stringValue: 'string value', + }, + nullField: { + nullValue: 0, + }, + arrayField: { + arrayValue: { + values: [ + { + integerValue: '0', + }, + { + nullValue: 0, + }, + ], + }, + }, + objectField: { + nullValue: 0, + }, + }; + + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties, + expectedProperties + ); + callback(); + }; + + const entities = { + key: key, + data: { + stringField: 'string value', + nullField: null, + arrayField: [0, null], + objectField: null, + }, + excludeLargeProperties: true, + }; + datastore.save(entities, done); + }); + + it('should allow customization of GAX options', done => { + const gaxOptions = {}; + + datastore.request_ = (config: RequestConfig) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + datastore.save( + { + key, + data: {}, + }, + gaxOptions, + assert.ifError + ); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + let prepared = false; + + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + prepared = true; + return { + key, + method: 'insert', + data: {k: 'v'}, + } as {}; + }); + + datastore.request_ = () => { + assert.strictEqual(prepared, true); + done(); + }; + + datastore.save(entityObject, assert.ifError); + }); + + it('should save with specific method', done => { + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.strictEqual(config.reqOpts!.mutations!.length, 3); + assert(is.object(config.reqOpts!.mutations![0].insert)); + assert(is.object(config.reqOpts!.mutations![1].update)); + assert(is.object(config.reqOpts!.mutations![2].upsert)); + + const insert = config.reqOpts!.mutations![0].insert!; + assert.deepStrictEqual(insert.properties!.k, {stringValue: 'v'}); + + const update = config.reqOpts!.mutations![1].update!; + assert.deepStrictEqual(update.properties!.k2, {stringValue: 'v2'}); + + const upsert = config.reqOpts!.mutations![2].upsert!; + assert.deepStrictEqual(upsert.properties!.k3, {stringValue: 'v3'}); + + callback(); + }; + + datastore.save( + [ + {key, method: 'insert', data: {k: 'v'}}, + {key, method: 'update', data: {k2: 'v2'}}, + {key, method: 'upsert', data: {k3: 'v3'}}, + ], + done + ); + }); + + it('should throw if a given method is not recognized', () => { + assert.throws(() => { + datastore.save( + { + key, + method: 'auto_insert_id', + data: { + k: 'v', + }, + }, + assert.ifError + ); + }, /Method auto_insert_id not recognized/); + }); + + it('should not alter the provided data object', done => { + const entities = [ + { + key, + method: 'insert', + indexed: false, + data: { + value: { + a: 'b', + c: [1, 2, 3], + }, + }, + }, + ]; + const expectedEntities = entities.map(x => extend(true, {}, x)); + + datastore.request_ = () => { + // By the time the request is made, the original object has already been + // transformed into a raw request. + assert.deepStrictEqual(entities, expectedEntities); + done(); + }; + + datastore.save(entities, assert.ifError); + }); + + it('should return apiResponse in callback', done => { + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + const mockCommitResponse = {}; + datastore.request_ = (config: RequestConfig, callback: Function) => { + callback(null, mockCommitResponse); + }; + datastore.save( + {key, data: {}}, + (err: Error | null, apiResponse: Entity) => { + assert.ifError(err); + assert.strictEqual(mockCommitResponse, apiResponse); + done(); + } + ); + }); + + it('should allow setting the indexed value of a property', done => { + datastore.request_ = (config: RequestConfig) => { + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + assert.strictEqual(property.stringValue, 'value'); + assert.strictEqual(property.excludeFromIndexes, true); + done(); + }; + + datastore.save( + { + key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); + }); + + it('should allow setting the indexed value on arrays', done => { + datastore.request_ = (config: RequestConfig) => { + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + + property.arrayValue!.values!.forEach((value: Any) => { + assert.strictEqual(value.excludeFromIndexes, true); + }); + + done(); + }; + + datastore.save( + { + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); + }); + + it('should allow exclude property indexed with "*" wildcard from root', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + datastore.request_ = (config: RequestConfig) => { + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); + }); + done(); + }; + + datastore.save( + { + key, + data, + excludeFromIndexes: ['.*'], + }, + assert.ifError + ); + }); + + it('should allow exclude property indexed with "*" wildcard for object and array', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + datastore.request_ = (config: RequestConfig) => { + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); + }); + done(); + }; + + datastore.save( + { + key, + data, + excludeFromIndexes: [ + 'longString', + 'notMetadata', + 'longStringArray[]', + 'metadata.longString', + 'metadata.otherProperty', + 'metadata.obj.*', + 'metadata.longStringArray[].*', + ], + }, + assert.ifError + ); + }); + + it('should allow setting the indexed value on arrays', done => { + datastore.request_ = (config: RequestConfig) => { + const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + + property.arrayValue!.values!.forEach((value: Any) => { + assert.strictEqual(value.excludeFromIndexes, true); + }); + + done(); + }; + + datastore.save( + { + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], + }, + assert.ifError + ); + }); + + it('should prepare excludeFromIndexes array for large values', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + const excludeFromIndexes = [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ]; + + fakeEntity.entityToEntityProto = (entity: EntityObject) => { + return (entity as unknown) as EntityProto; + }; + datastore.request_ = (config: RequestConfig) => { + assert.strictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity) + .excludeLargeProperties, + true + ); + assert.deepStrictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity).excludeFromIndexes, + excludeFromIndexes + ); + done(); + }; + + datastore.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); + + it('should allow auto setting the indexed value of a property with excludeLargeProperties', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = [ + { + name: 'name', + value: longString, + }, + { + name: 'description', + value: 'value', + }, + ]; + + datastore.request_ = (config: RequestConfig) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties!.name + .excludeFromIndexes, + true + ); + done(); + }; + + datastore.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); + + it('should assign ID on keys without them', done => { + const incompleteKey = new entity.Key({path: ['Incomplete']}); + const incompleteKey2 = new entity.Key({path: ['Incomplete']}); + const completeKey = new entity.Key({path: ['Complete', 'Key']}); + + const keyProtos: Array<{}> = []; + const ids = [1, 2]; + + const response = { + mutationResults: [ + { + key: {}, + }, + { + key: {}, + }, + {}, + ], + }; + + datastore.request_ = (config: RequestConfig, callback: Function) => { + callback(null, response); + }; + + sandbox.stub(fakeEntity, 'keyFromKeyProto').callsFake(keyProto => { + keyProtos.push(keyProto); + return ({ + id: ids[keyProtos.length - 1], + } as {}) as entity.Key; + }); + + datastore.save( + [ + {key: incompleteKey, data: {}}, + {key: incompleteKey2, data: {}}, + {key: completeKey, data: {}}, + ], + (err: Error) => { + assert.ifError(err); + + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); + + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + + done(); + } + ); + }); + + describe('transactions', () => { + beforeEach(() => { + // Trigger transaction mode. + datastore.id = 'transaction-id'; + datastore.requestCallbacks_ = []; + datastore.requests_ = []; + }); + + it('should queue request & callback', () => { + datastore.save({ + key, + data: [{name: 'name', value: 'value'}], + }); + + assert.strictEqual(typeof datastore.requestCallbacks_[0], 'function'); + assert.strictEqual(typeof datastore.requests_[0], 'object'); + }); + }); + }); + + describe('update', () => { + afterEach(() => { + sandbox.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'update', + }); + + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + datastore.update(entityObject, assert.ifError); + }); + + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'update', + }, + ]); + callback(); + }; + + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.update({key, data: {}}, done); + }); + }); + + describe('upsert', () => { + afterEach(() => { + sandbox.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'upsert', + }); + + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + datastore.upsert(entityObject, assert.ifError); + }); + + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'upsert', + }, + ]); + + callback(); + }; + + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.upsert({key, data: {}}, done); + }); + }); + describe('transaction', () => { it('should return a Transaction object', () => { const transaction = datastore.transaction(); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index c6b4e1b4092..1a9d668e450 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -23,7 +23,7 @@ import {Transform} from 'stream'; import {google} from '../protos/protos'; import * as ds from '../src'; -import {entity, Entity, KeyProto, EntityProto} from '../src/entity.js'; +import {entity, Entity, KeyProto} from '../src/entity.js'; import {IntegerTypeCastOptions, Query, QueryProto} from '../src/query.js'; import {outOfBoundsError} from './entity'; import { @@ -801,47 +801,6 @@ describe('Request', () => { }); }); - describe('insert', () => { - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'insert', - }); - - sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; - }); - - request.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; - - request.insert(entityObject, assert.ifError); - }); - - it('should pass the correct arguments to save', done => { - request.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'insert', - }, - ]); - callback(); - }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.insert({key, data: {}}, done); - }); - }); - describe('runQueryStream', () => { beforeEach(() => { request.request_ = () => {}; @@ -1433,741 +1392,6 @@ describe('Request', () => { }); }); - describe('save', () => { - it('should save with keys', done => { - const expectedReq = { - mutations: [ - { - upsert: { - key: { - partitionId: { - namespaceId: 'namespace', - }, - path: [ - { - kind: 'Company', - id: 123, - }, - ], - }, - properties: { - k: { - stringValue: 'v', - }, - }, - }, - }, - { - upsert: { - key: { - partitionId: { - namespaceId: 'namespace', - }, - path: [ - { - kind: 'Company', - id: 123, - }, - ], - }, - properties: { - k: { - stringValue: 'v', - }, - }, - }, - }, - ], - }; - - request.request_ = (config: RequestConfig, callback: Function) => { - assert.strictEqual(config.client, 'DatastoreClient'); - assert.strictEqual(config.method, 'commit'); - - assert.deepStrictEqual(config.reqOpts, expectedReq); - assert.deepStrictEqual(config.gaxOpts, {}); - - callback(); - }; - request.save( - [ - {key, data: {k: 'v'}}, - {key, data: {k: 'v'}}, - ], - done - ); - }); - - it('should save null value when excludeLargeProperties enabled', done => { - const expectedProperties = { - stringField: { - stringValue: 'string value', - }, - nullField: { - nullValue: 0, - }, - arrayField: { - arrayValue: { - values: [ - { - integerValue: '0', - }, - { - nullValue: 0, - }, - ], - }, - }, - objectField: { - nullValue: 0, - }, - }; - - request.request_ = (config: RequestConfig, callback: Function) => { - assert.deepStrictEqual( - config.reqOpts!.mutations![0].upsert!.properties, - expectedProperties - ); - callback(); - }; - - const entities = { - key: key, - data: { - stringField: 'string value', - nullField: null, - arrayField: [0, null], - objectField: null, - }, - excludeLargeProperties: true, - }; - request.save(entities, done); - }); - - it('should allow customization of GAX options', done => { - const gaxOptions = {}; - - request.request_ = (config: RequestConfig) => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; - - request.save( - { - key, - data: {}, - }, - gaxOptions, - assert.ifError - ); - }); - - it('should prepare entity objects', done => { - const entityObject = {}; - let prepared = false; - - sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - prepared = true; - return { - key, - method: 'insert', - data: {k: 'v'}, - } as {}; - }); - - request.request_ = () => { - assert.strictEqual(prepared, true); - done(); - }; - - request.save(entityObject, assert.ifError); - }); - - it('should save with specific method', done => { - request.request_ = (config: RequestConfig, callback: Function) => { - assert.strictEqual(config.reqOpts!.mutations!.length, 3); - assert(is.object(config.reqOpts!.mutations![0].insert)); - assert(is.object(config.reqOpts!.mutations![1].update)); - assert(is.object(config.reqOpts!.mutations![2].upsert)); - - const insert = config.reqOpts!.mutations![0].insert!; - assert.deepStrictEqual(insert.properties!.k, {stringValue: 'v'}); - - const update = config.reqOpts!.mutations![1].update!; - assert.deepStrictEqual(update.properties!.k2, {stringValue: 'v2'}); - - const upsert = config.reqOpts!.mutations![2].upsert!; - assert.deepStrictEqual(upsert.properties!.k3, {stringValue: 'v3'}); - - callback(); - }; - - request.save( - [ - {key, method: 'insert', data: {k: 'v'}}, - {key, method: 'update', data: {k2: 'v2'}}, - {key, method: 'upsert', data: {k3: 'v3'}}, - ], - done - ); - }); - - it('should throw if a given method is not recognized', () => { - assert.throws(() => { - request.save( - { - key, - method: 'auto_insert_id', - data: { - k: 'v', - }, - }, - assert.ifError - ); - }, /Method auto_insert_id not recognized/); - }); - - it('should not alter the provided data object', done => { - const entities = [ - { - key, - method: 'insert', - indexed: false, - data: { - value: { - a: 'b', - c: [1, 2, 3], - }, - }, - }, - ]; - const expectedEntities = entities.map(x => extend(true, {}, x)); - - request.request_ = () => { - // By the time the request is made, the original object has already been - // transformed into a raw request. - assert.deepStrictEqual(entities, expectedEntities); - done(); - }; - - request.save(entities, assert.ifError); - }); - - it('should return apiResponse in callback', done => { - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - const mockCommitResponse = {}; - request.request_ = (config: RequestConfig, callback: Function) => { - callback(null, mockCommitResponse); - }; - request.save( - {key, data: {}}, - (err: Error | null, apiResponse: Entity) => { - assert.ifError(err); - assert.strictEqual(mockCommitResponse, apiResponse); - done(); - } - ); - }); - - it('should allow setting the indexed value of a property', done => { - request.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; - assert.strictEqual(property.stringValue, 'value'); - assert.strictEqual(property.excludeFromIndexes, true); - done(); - }; - - request.save( - { - key, - data: [ - { - name: 'name', - value: 'value', - excludeFromIndexes: true, - }, - ], - }, - assert.ifError - ); - }); - - it('should allow setting the indexed value on arrays', done => { - request.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; - - property.arrayValue!.values!.forEach((value: Any) => { - assert.strictEqual(value.excludeFromIndexes, true); - }); - - done(); - }; - - request.save( - { - key, - data: [ - { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, - }, - ], - }, - assert.ifError - ); - }); - - it('should allow exclude property indexed with "*" wildcard from root', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - }; - - const validateIndex = (data: Any) => { - if (data.arrayValue) { - data.arrayValue.values.forEach((value: Any) => { - validateIndex(value); - }); - } else if (data.entityValue) { - Object.keys(data.entityValue.properties).forEach(path => { - validateIndex(data.entityValue.properties[path]); - }); - } else { - assert.strictEqual(data.excludeFromIndexes, true); - } - }; - - request.request_ = (config: RequestConfig) => { - const properties = config.reqOpts!.mutations![0].upsert!.properties; - Object.keys(properties!).forEach(path => { - validateIndex(properties![path]); - }); - done(); - }; - - request.save( - { - key, - data, - excludeFromIndexes: ['.*'], - }, - assert.ifError - ); - }); - - it('should allow exclude property indexed with "*" wildcard for object and array', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - }; - - const validateIndex = (data: Any) => { - if (data.arrayValue) { - data.arrayValue.values.forEach((value: Any) => { - validateIndex(value); - }); - } else if (data.entityValue) { - Object.keys(data.entityValue.properties).forEach(path => { - validateIndex(data.entityValue.properties[path]); - }); - } else { - assert.strictEqual(data.excludeFromIndexes, true); - } - }; - - request.request_ = (config: RequestConfig) => { - const properties = config.reqOpts!.mutations![0].upsert!.properties; - Object.keys(properties!).forEach(path => { - validateIndex(properties![path]); - }); - done(); - }; - - request.save( - { - key, - data, - excludeFromIndexes: [ - 'longString', - 'notMetadata', - 'longStringArray[]', - 'metadata.longString', - 'metadata.otherProperty', - 'metadata.obj.*', - 'metadata.longStringArray[].*', - ], - }, - assert.ifError - ); - }); - - it('should allow setting the indexed value on arrays', done => { - request.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; - - property.arrayValue!.values!.forEach((value: Any) => { - assert.strictEqual(value.excludeFromIndexes, true); - }); - - done(); - }; - - request.save( - { - key, - data: [ - { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, - }, - ], - }, - assert.ifError - ); - }); - - it('should prepare excludeFromIndexes array for large values', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, - { - longString, - }, - ], - }, - ], - }, - }; - - const excludeFromIndexes = [ - 'longString', - 'longStringArray[]', - 'metadata.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString', - ]; - - entity.entityToEntityProto = entity => { - return (entity as unknown) as EntityProto; - }; - request.request_ = (config: RequestConfig) => { - assert.strictEqual( - (config.reqOpts!.mutations![0].upsert! as Entity) - .excludeLargeProperties, - true - ); - assert.deepStrictEqual( - (config.reqOpts!.mutations![0].upsert! as Entity).excludeFromIndexes, - excludeFromIndexes - ); - done(); - }; - - request.save( - { - key, - data, - excludeLargeProperties: true, - }, - assert.ifError - ); - }); - - it('should allow auto setting the indexed value of a property with excludeLargeProperties', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = [ - { - name: 'name', - value: longString, - }, - { - name: 'description', - value: 'value', - }, - ]; - - request.request_ = (config: RequestConfig) => { - assert.deepStrictEqual( - config.reqOpts!.mutations![0].upsert!.properties!.name - .excludeFromIndexes, - true - ); - done(); - }; - - request.save( - { - key, - data, - excludeLargeProperties: true, - }, - assert.ifError - ); - }); - - it('should assign ID on keys without them', done => { - const incompleteKey = new entity.Key({path: ['Incomplete']}); - const incompleteKey2 = new entity.Key({path: ['Incomplete']}); - const completeKey = new entity.Key({path: ['Complete', 'Key']}); - - const keyProtos: Array<{}> = []; - const ids = [1, 2]; - - const response = { - mutationResults: [ - { - key: {}, - }, - { - key: {}, - }, - {}, - ], - }; - - request.request_ = (config: RequestConfig, callback: Function) => { - callback(null, response); - }; - - sandbox.stub(entity, 'keyFromKeyProto').callsFake(keyProto => { - keyProtos.push(keyProto); - return ({ - id: ids[keyProtos.length - 1], - } as {}) as entity.Key; - }); - - request.save( - [ - {key: incompleteKey, data: {}}, - {key: incompleteKey2, data: {}}, - {key: completeKey, data: {}}, - ], - (err: Error) => { - assert.ifError(err); - - assert.strictEqual(incompleteKey.id, ids[0]); - assert.strictEqual(incompleteKey2.id, ids[1]); - - assert.strictEqual(keyProtos.length, 2); - assert.strictEqual(keyProtos[0], response.mutationResults[0].key); - assert.strictEqual(keyProtos[1], response.mutationResults[1].key); - - done(); - } - ); - }); - - describe('transactions', () => { - beforeEach(() => { - // Trigger transaction mode. - request.id = 'transaction-id'; - request.requestCallbacks_ = []; - request.requests_ = []; - }); - - it('should queue request & callback', () => { - request.save({ - key, - data: [{name: 'name', value: 'value'}], - }); - - assert.strictEqual(typeof request.requestCallbacks_[0], 'function'); - assert.strictEqual(typeof request.requests_[0], 'object'); - }); - }); - }); - - describe('update', () => { - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'update', - }); - - sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; - }); - - request.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; - - request.update(entityObject, assert.ifError); - }); - - it('should pass the correct arguments to save', done => { - request.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'update', - }, - ]); - callback(); - }; - - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.update({key, data: {}}, done); - }); - }); - - describe('upsert', () => { - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'upsert', - }); - - sandbox.stub(Request, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; - }); - - request.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; - - request.upsert(entityObject, assert.ifError); - }); - - it('should pass the correct arguments to save', done => { - request.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'upsert', - }, - ]); - - callback(); - }; - - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - request.upsert({key, data: {}}, done); - }); - }); - describe('merge', () => { let Transaction: typeof ds.Transaction; let transaction: ds.Transaction; diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 29545d23688..f97020c56f7 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -15,14 +15,14 @@ import * as pfy from '@google-cloud/promisify'; import arrify = require('arrify'); import * as assert from 'assert'; -import {beforeEach, before, describe, it} from 'mocha'; +import {afterEach, beforeEach, before, describe, it} from 'mocha'; import * as proxyquire from 'proxyquire'; // import {google} from '../proto/datastore'; -import {Datastore, Query, TransactionOptions} from '../src'; +import {Datastore, DatastoreRequest, Query, TransactionOptions} from '../src'; import {Entity} from '../src/entity'; -import {DatastoreRequest} from '../src/request'; import * as tsTypes from '../src/transaction'; +import * as sinon from 'sinon'; // eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; @@ -38,31 +38,17 @@ const fakePfy = Object.assign({}, pfy, { return; } promisified = true; - assert.deepStrictEqual(options.exclude, ['createQuery', 'delete', 'save']); + assert.deepStrictEqual(options.exclude, [ + 'createQuery', + 'delete', + 'insert', + 'save', + 'update', + 'upsert', + ]); }, }); -const DatastoreRequestOverride = ({ - delete() {}, - save() {}, -} as {}) as DatastoreRequest; - -class FakeDatastoreRequest { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - delete(...args: any[]) { - const results = DatastoreRequestOverride.delete.apply(null, args as Any); - DatastoreRequestOverride.delete = (() => {}) as Any; - return results; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - save(...args: any[]) { - const results = DatastoreRequestOverride.save.apply(null, args as Any); - DatastoreRequestOverride.save = (() => {}) as Any; - return results; - } -} - describe('Transaction', () => { let Transaction: typeof tsTypes.Transaction; let transaction: tsTypes.Transaction; @@ -83,7 +69,6 @@ describe('Transaction', () => { before(() => { Transaction = proxyquire('../src/transaction.js', { '@google-cloud/promisify': fakePfy, - './request.js': {DatastoreRequest: FakeDatastoreRequest}, }).Transaction; }); @@ -153,6 +138,10 @@ describe('Transaction', () => { transaction.id = TRANSACTION_ID; }); + afterEach(() => { + sinon.restore(); + }); + it('should commit', done => { transaction.request_ = config => { assert.strictEqual(config.client, 'DatastoreClient'); @@ -236,24 +225,21 @@ describe('Transaction', () => { const args: Array<{}> = []; - let deleteCalled = 0; - DatastoreRequestOverride.delete = ((a: {}) => { - args.push(a); - deleteCalled++; - }) as Any; - - let saveCalled = 0; - DatastoreRequestOverride.save = ((a: {}) => { + const deleteStub = sinon + .stub(Datastore.prototype, 'delete') + .callsFake(a => { + args.push(a); + }); + const saveStub = sinon.stub(Datastore.prototype, 'save').callsFake(a => { args.push(a); - saveCalled++; - }) as Any; + }); transaction.request_ = () => {}; transaction.commit(); - assert.strictEqual(deleteCalled, 1); - assert.strictEqual(saveCalled, 1); + assert.strictEqual(deleteStub.calledOnce, true); + assert.strictEqual(saveStub.calledOnce, true); assert.strictEqual(args.length, 2); @@ -269,31 +255,30 @@ describe('Transaction', () => { transaction.delete(key(['Product', 123])); transaction.save({key: key(['Product', 123]), data: ''}); - let deleteCalled = 0; - DatastoreRequestOverride.delete = (() => { - deleteCalled++; - }) as Any; - - let saveCalled = 0; - DatastoreRequestOverride.save = (() => { - saveCalled++; - }) as Any; + const deleteSpy = sinon + .stub(Datastore.prototype, 'delete') + .callsFake(() => {}); + const saveStub = sinon + .stub(Datastore.prototype, 'save') + .callsFake(() => {}); transaction.request_ = () => {}; transaction.commit(); - assert.strictEqual(deleteCalled, 0); - assert.strictEqual(saveCalled, 1); + assert.strictEqual(deleteSpy.notCalled, true); + assert.strictEqual(saveStub.calledOnce, true); }); it('should not squash key-incomplete mutations', done => { transaction.save({key: key(['Product']), data: ''}); transaction.save({key: key(['Product']), data: ''}); - DatastoreRequestOverride.save = ((entities: Entity[]) => { - assert.strictEqual(entities.length, 2); - done(); - }) as Any; + sinon + .stub(Datastore.prototype, 'save') + .callsFake((entities: Entity[]) => { + assert.strictEqual(entities.length, 2); + done(); + }); transaction.request_ = () => {}; @@ -377,6 +362,51 @@ describe('Transaction', () => { }); }); + describe('insert', () => { + afterEach(() => { + sinon.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'insert', + }); + + sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + transaction.insert(entityObject); + }); + + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'insert', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.insert({key, data: {}}); + }); + }); + describe('rollback', () => { beforeEach(() => { transaction.id = TRANSACTION_ID; @@ -629,4 +659,94 @@ describe('Transaction', () => { }); }); }); + + describe('update', () => { + afterEach(() => { + sinon.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'update', + }); + + sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + transaction.update(entityObject); + }); + + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'update', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.update({key, data: {}}); + }); + }); + + describe('upsert', () => { + afterEach(() => { + sinon.restore(); + }); + + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'upsert', + }); + + sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); + + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; + + transaction.upsert(entityObject); + }); + + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'upsert', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.upsert({key, data: {}}); + }); + }); }); From dc1b8c3eff3c4d5fd249bfc7c2a7922fb77ec59e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Sat, 12 Sep 2020 11:20:03 -0700 Subject: [PATCH 573/820] build(test): recursively find test files; fail on unsupported dependency versions (#728) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/28f926df-4479-489a-b60f-ecf7782e1eb7/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/fdd03c161003ab97657cc0218f25c82c89ddf4b6 --- handwritten/nodejs-datastore/.mocharc.js | 3 ++- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/.mocharc.js b/handwritten/nodejs-datastore/.mocharc.js index ff7b34fa5d1..0b600509bed 100644 --- a/handwritten/nodejs-datastore/.mocharc.js +++ b/handwritten/nodejs-datastore/.mocharc.js @@ -14,7 +14,8 @@ const config = { "enable-source-maps": true, "throw-deprecation": true, - "timeout": 10000 + "timeout": 10000, + "recursive": true } if (process.env.MOCHA_THROW_DEPRECATION === 'false') { delete config['throw-deprecation']; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index cc2cc08ac81..7013c78e0c2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "aedbe261308def60e6444022ba72f1caaab02b35" + "sha": "fa5faacb16b8c021314348acc5534e1802e0826e" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "8cf6d2834ad14318e64429c3b94f6443ae83daf9" + "sha": "fdd03c161003ab97657cc0218f25c82c89ddf4b6" } } ], From 8f37a95e3eea153d3384d93a0ab1c2316c0a448f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 17 Sep 2020 15:17:14 -0700 Subject: [PATCH 574/820] chore: release 6.1.1 (#725) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 6c4d1eabe3b..aa630f47ca2 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.1.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.1.0...v6.1.1) (2020-09-12) + + +### Bug Fixes + +* split insert, update, upsert ([#693](https://www.github.com/googleapis/nodejs-datastore/issues/693)) ([fa5faac](https://www.github.com/googleapis/nodejs-datastore/commit/fa5faacb16b8c021314348acc5534e1802e0826e)) + ## [6.1.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.0.0...v6.1.0) (2020-07-06) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2122d089d69..8ec4e97edd2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.1.0", + "version": "6.1.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ce08753f61a..55a69a2c273 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.1.0", + "@google-cloud/datastore": "^6.1.1", "sinon": "^9.0.0" }, "devDependencies": { From 43ca37962b778347b30f099b6282aec409e5852b Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Wed, 23 Sep 2020 11:08:04 -0700 Subject: [PATCH 575/820] docs(samples): await on commit operations in sample code (#730) --- handwritten/nodejs-datastore/samples/concepts.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index c96a7e53f8f..b52d8136efc 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -981,7 +981,7 @@ async function transferFunds(fromKey, toKey, amount) { }, ]); - return transaction.commit(); + return await transaction.commit(); } // [END datastore_transactional_update] @@ -1106,7 +1106,7 @@ class Transaction extends TestHelper { } else { // Create the task entity. transaction.save(taskEntity); - transaction.commit(); + await transaction.commit(); } return taskEntity; } catch (err) { From 2361df6bf7c1049a24e01e638a2ed0a4b7e4f65a Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Wed, 23 Sep 2020 12:38:58 -0700 Subject: [PATCH 576/820] docs: direct to documentation for datastore, not the product landing page (#731) --- handwritten/nodejs-datastore/.repo-metadata.json | 2 +- handwritten/nodejs-datastore/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index 3dc8a39e9e4..d108b355031 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -1,7 +1,7 @@ { "name": "datastore", "name_pretty": "Google Cloud Datastore", - "product_documentation": "https://cloud.google.com/datastore", + "product_documentation": "https://cloud.google.com/datastore/docs", "client_documentation": "https://googleapis.dev/nodejs/datastore/latest", "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", "release_level": "ga", diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index a1ee5a5234e..e9a191bac68 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -175,7 +175,7 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) [client-docs]: https://googleapis.dev/nodejs/datastore/latest -[product-docs]: https://cloud.google.com/datastore +[product-docs]: https://cloud.google.com/datastore/docs [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project [billing]: https://support.google.com/cloud/answer/6293499#enable-billing From c5df7c51de5bdcde19546a37ab24d06df9495582 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 24 Sep 2020 01:47:37 -0700 Subject: [PATCH 577/820] changes without context (#733) autosynth cannot find the source of changes triggered by earlier changes in this repository, or by version upgrades to tools such as linters. --- handwritten/nodejs-datastore/samples/README.md | 2 +- handwritten/nodejs-datastore/synth.metadata | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 337cd27c473..496c575ad20 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -181,4 +181,4 @@ __Usage:__ [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/README.md -[product-docs]: https://cloud.google.com/datastore +[product-docs]: https://cloud.google.com/datastore/docs diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 7013c78e0c2..12e9010cde1 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "fa5faacb16b8c021314348acc5534e1802e0826e" + "sha": "773a848ecba0d27565471a85b8274e6cb3a87ffd" } }, { From ad188933d3a30b75323ce28d1dde78cc7f745c95 Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Fri, 25 Sep 2020 01:40:45 +0530 Subject: [PATCH 578/820] test: fix flaky sample test (#732) Co-authored-by: Alex <7764119+AVaksman@users.noreply.github.com> --- handwritten/nodejs-datastore/samples/concepts.js | 3 +++ .../nodejs-datastore/samples/test/concepts.test.js | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index b52d8136efc..9e1eb741970 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -39,10 +39,12 @@ let datastore = { save: makeStub(), }; +const namespace = `${Date.now()}`; class TestHelper { constructor(projectId) { const options = { projectId: projectId, + namespace, }; this.datastore = new Datastore(options); } @@ -53,6 +55,7 @@ class Entity extends TestHelper { super(projectId); // To create the keys, we have to use this instance of Datastore. datastore.key = this.datastore.key; + datastore.namespace = this.datastore.namespace; this.incompleteKey = this.getIncompleteKey(); this.namedKey = this.getNamedKey(); diff --git a/handwritten/nodejs-datastore/samples/test/concepts.test.js b/handwritten/nodejs-datastore/samples/test/concepts.test.js index d5a76d59e3c..ef977bd298c 100644 --- a/handwritten/nodejs-datastore/samples/test/concepts.test.js +++ b/handwritten/nodejs-datastore/samples/test/concepts.test.js @@ -43,9 +43,19 @@ describe('concepts', () => { after(async () => { const datastore = transaction.datastore; - const query = datastore.createQuery('Task').select('__key__'); + const query = datastore.createQuery('__kind__').select('__key__'); const [entities] = await datastore.runQuery(query); - await datastore.delete(entities.map(entity => entity[datastore.KEY])); + const testKinds = entities.map(entity => entity[datastore.KEY].name); + + async function deleteEntities(kind) { + const query = datastore.createQuery(kind).select('__key__'); + const [entities] = await datastore.runQuery(query); + const keys = entities.map(entity => { + return entity[datastore.KEY]; + }); + await datastore.delete(keys); + } + await Promise.all(testKinds.map(kind => deleteEntities(kind))); }); // Transactions From df33589918a62bc411ad7610afc19dbb1452b6c6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 1 Oct 2020 05:07:38 -0700 Subject: [PATCH 579/820] chore: update bucket for cloud-rad (#735) Co-authored-by: gcf-merge-on-green[bot] <60162190+gcf-merge-on-green[bot]@users.noreply.github.com> Source-Author: F. Hinkelmann Source-Date: Wed Sep 30 14:13:57 2020 -0400 Source-Repo: googleapis/synthtool Source-Sha: 079dcce498117f9570cebe6e6cff254b38ba3860 Source-Link: https://github.com/googleapis/synthtool/commit/079dcce498117f9570cebe6e6cff254b38ba3860 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 12e9010cde1..7ba5759c8e2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "773a848ecba0d27565471a85b8274e6cb3a87ffd" + "sha": "100e904e7e7cf74661bd411ea58a57bd00a01a30" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "fdd03c161003ab97657cc0218f25c82c89ddf4b6" + "sha": "079dcce498117f9570cebe6e6cff254b38ba3860" } } ], From 70ab3580b590e92eed95e8d99e9d63e3c40ba63f Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 7 Oct 2020 18:26:43 -0700 Subject: [PATCH 580/820] build(node_library): migrate to Trampoline V2 (#736) Source-Author: Takashi Matsuo Source-Date: Fri Oct 2 12:13:27 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 0c868d49b8e05bc1f299bc773df9eb4ef9ed96e9 Source-Link: https://github.com/googleapis/synthtool/commit/0c868d49b8e05bc1f299bc773df9eb4ef9ed96e9 --- handwritten/nodejs-datastore/synth.metadata | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 7ba5759c8e2..0d3cccf3329 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "100e904e7e7cf74661bd411ea58a57bd00a01a30" + "sha": "d8504a7b21ee188168df8c37cf993cd06f42c0d2" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "079dcce498117f9570cebe6e6cff254b38ba3860" + "sha": "0c868d49b8e05bc1f299bc773df9eb4ef9ed96e9" } } ], @@ -84,10 +84,12 @@ ".kokoro/test.bat", ".kokoro/test.sh", ".kokoro/trampoline.sh", + ".kokoro/trampoline_v2.sh", ".mocharc.js", ".nycrc", ".prettierignore", ".prettierrc.js", + ".trampolinerc", "CODE_OF_CONDUCT.md", "CONTRIBUTING.md", "LICENSE", From 783e093367039656a6ddf9fa5aaf37aea3206803 Mon Sep 17 00:00:00 2001 From: Stephen Date: Thu, 8 Oct 2020 11:40:23 -0400 Subject: [PATCH 581/820] feat: introduce import/export + Index class (#734) --- handwritten/nodejs-datastore/package.json | 14 +- .../nodejs-datastore/samples/export.js | 48 ++ .../nodejs-datastore/samples/import.js | 53 ++ .../nodejs-datastore/samples/indexes.get.js | 39 ++ .../nodejs-datastore/samples/indexes.list.js | 45 ++ .../samples/test/import-export.test.js | 46 ++ .../samples/test/indexes.test.js | 41 ++ .../nodejs-datastore/src/index-class.ts | 158 +++++ handwritten/nodejs-datastore/src/index.ts | 309 ++++++++- handwritten/nodejs-datastore/src/request.ts | 91 ++- .../nodejs-datastore/system-test/datastore.ts | 95 ++- .../nodejs-datastore/test/index-class.ts | 153 +++++ handwritten/nodejs-datastore/test/index.ts | 642 ++++++++++++++++++ handwritten/nodejs-datastore/test/request.ts | 176 ++++- 14 files changed, 1870 insertions(+), 40 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/export.js create mode 100644 handwritten/nodejs-datastore/samples/import.js create mode 100644 handwritten/nodejs-datastore/samples/indexes.get.js create mode 100644 handwritten/nodejs-datastore/samples/indexes.list.js create mode 100644 handwritten/nodejs-datastore/samples/test/import-export.test.js create mode 100644 handwritten/nodejs-datastore/samples/test/indexes.test.js create mode 100644 handwritten/nodejs-datastore/src/index-class.ts create mode 100644 handwritten/nodejs-datastore/test/index-class.ts diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8ec4e97edd2..7e1e424d00e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -24,7 +24,7 @@ ], "scripts": { "clean": "gts clean", - "compile": "tsc -p . && cp -r proto* build/", + "compile": "tsc -p . && cp -r proto* build/ && cp -r system-test/data build/system-test", "compile-protos": "compileProtos src", "docs": "jsdoc -c .jsdoc.js", "predocs-test": "npm run docs", @@ -49,34 +49,40 @@ "extend": "^3.0.2", "google-gax": "^2.2.0", "is": "^3.3.0", + "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" }, "devDependencies": { + "@google-cloud/storage": "^5.3.0", + "@microsoft/api-documenter": "^7.8.10", + "@microsoft/api-extractor": "^7.8.10", "@types/extend": "^3.0.1", "@types/is": "0.0.21", + "@types/js-yaml": "^3.12.5", "@types/mocha": "^8.0.0", "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", + "@types/pumpify": "^1.4.1", "@types/sinon": "^9.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", "gts": "^2.0.0", + "js-yaml": "^3.14.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", "mocha": "^8.0.0", "null-loader": "^4.0.0", + "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^9.0.1", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack": "^4.42.0", - "webpack-cli": "^3.3.11", - "@microsoft/api-documenter": "^7.8.10", - "@microsoft/api-extractor": "^7.8.10" + "webpack-cli": "^3.3.11" }, "engines": { "node": ">=10" diff --git a/handwritten/nodejs-datastore/samples/export.js b/handwritten/nodejs-datastore/samples/export.js new file mode 100644 index 00000000000..49a385f37b3 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/export.js @@ -0,0 +1,48 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +async function main(bucket = 'YOUR_BUCKET_NAME') { + // [START datastore_admin_entities_export] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function exportEntities() { + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const bucket = 'YOUR_BUCKET_NAME'; + + const [exportOperation] = await datastore.export({bucket}); + await exportOperation.promise(); + + // The export operation has created a new file in your bucket, e.g. + // gs://{YOUR_BUCKET_NAME}/{timestamp}/{timestamp}.overall_export.metadata + console.log(`Export file created: ${exportOperation.result.outputUrl}`); + + // You may also choose to include only specific kinds and namespaces. + const [specificExportOperation] = await datastore.export({ + bucket, + kinds: ['Employee', 'Task'], + namespaces: ['Company'], + }); + await specificExportOperation.promise(); + console.log(specificExportOperation.result.outputUrl); + } + + await exportEntities(); + // [END datastore_admin_entities_export] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/import.js b/handwritten/nodejs-datastore/samples/import.js new file mode 100644 index 00000000000..b97eae509b2 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/import.js @@ -0,0 +1,53 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +async function main(file = 'YOUR_FILE_NAME') { + // [START datastore_admin_entities_import] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function importEntities() { + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const file = 'YOUR_FILE_NAME'; + + const [importOperation] = await datastore.import({file}); + + // Uncomment to await the results of the operation. + // await importOperation.promise(); + + // Or cancel the operation. + await importOperation.cancel(); + + // You may also choose to include only specific kinds and namespaces. + const [specificImportOperation] = await datastore.import({ + file, + kinds: ['Employee', 'Task'], + namespaces: ['Company'], + }); + + // Uncomment to await the results of the operation. + // await specificImportOperation.promise(); + + // Or cancel the operation. + await specificImportOperation.cancel(); + } + + await importEntities(); + // [END datastore_admin_entities_import] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/indexes.get.js b/handwritten/nodejs-datastore/samples/indexes.get.js new file mode 100644 index 00000000000..f8eb0450c18 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/indexes.get.js @@ -0,0 +1,39 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +async function main(indexId = 'YOUR_INDEX_ID') { + // [START datastore_admin_index_get] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function getIndex() { + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const indexId = 'YOUR_INDEX_ID'; + + // Create a reference to the index before performing operations on it. + const index = datastore.index(indexId); + + // Get the index's metadata, including its state, properties, and more. + const [metadata] = await index.getMetadata(); + console.log('Properties:', metadata.properties); + } + + await getIndex(); + // [END datastore_admin_index_get] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/indexes.list.js b/handwritten/nodejs-datastore/samples/indexes.list.js new file mode 100644 index 00000000000..1243b6a5717 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/indexes.list.js @@ -0,0 +1,45 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +async function main() { + // [START datastore_admin_index_list] + const {Datastore} = require('@google-cloud/datastore'); + const datastore = new Datastore(); + + async function listIndexes() { + const [indexes] = await datastore.getIndexes(); + + console.log(`${indexes.length} indexes returned.`); + + // Each returned Index object includes metadata about the index. + const [firstIndex] = indexes; + console.log('Properties:', firstIndex.metadata.properties); + + // You may also get Index references as a readable object stream. + datastore + .getIndexesStream() + .on('data', index => { + console.log('Properties:', index.metadata.properties); + }) + .on('end', () => { + // All matching Index objects have been returned. + }); + } + + await listIndexes(); + // [END datastore_admin_index_list] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/test/import-export.test.js b/handwritten/nodejs-datastore/samples/test/import-export.test.js new file mode 100644 index 00000000000..2a0bc3d5d42 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/import-export.test.js @@ -0,0 +1,46 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const {Datastore} = require('@google-cloud/datastore'); +const {assert} = require('chai'); +const cp = require('child_process'); +const {before, describe, it} = require('mocha'); + +const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); + +describe('import/export entities', async () => { + const datastore = new Datastore(); + + const BUCKET_ID = 'nodejs-datastore-system-tests'; + let EXPORTED_FILE; + + before(async () => { + const [exportOperation] = await datastore.export({ + bucket: BUCKET_ID, + }); + await exportOperation.promise(); + EXPORTED_FILE = exportOperation.result.outputUrl; + }); + + it('should export entities', async () => { + const stdout = execSync(`node ./export.js ${BUCKET_ID}`); + assert.include(stdout, 'Export file created:'); + }); + + it('should import entities', () => { + execSync(`node ./import.js ${EXPORTED_FILE}`); + }); +}); diff --git a/handwritten/nodejs-datastore/samples/test/indexes.test.js b/handwritten/nodejs-datastore/samples/test/indexes.test.js new file mode 100644 index 00000000000..b1bab339039 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/indexes.test.js @@ -0,0 +1,41 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +const {Datastore} = require('@google-cloud/datastore'); +const {assert} = require('chai'); +const cp = require('child_process'); +const {describe, it} = require('mocha'); + +const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); + +describe('indexes', async () => { + const datastore = new Datastore(); + + // @TODO: Until the protos support creating indexes, these tests depend on + // the remote state of declared indexes. Could be flaky! + + it('should list indexes', async () => { + const [indexes] = await datastore.getIndexes(); + const stdout = execSync('node ./indexes.list.js'); + assert.include(stdout, `${indexes.length} indexes returned.`); + }); + + it('should get a specific index', async () => { + const [indexes] = await datastore.getIndexes(); + const stdout = execSync(`node ./indexes.get.js ${indexes[0].id}`); + assert.include(stdout, 'Properties:'); + }); +}); diff --git a/handwritten/nodejs-datastore/src/index-class.ts b/handwritten/nodejs-datastore/src/index-class.ts new file mode 100644 index 00000000000..f47f1b6affd --- /dev/null +++ b/handwritten/nodejs-datastore/src/index-class.ts @@ -0,0 +1,158 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {CallOptions, ServiceError} from 'google-gax'; +import {promisifyAll} from '@google-cloud/promisify'; + +import {Datastore} from './'; +import {google} from '../protos/protos'; + +export interface GenericIndexCallback { + ( + err?: ServiceError | null, + index?: Index | null, + apiResponse?: T | null + ): void; +} + +export type GetIndexCallback = GenericIndexCallback; +export type GetIndexResponse = [Index, IIndex]; + +export type IndexGetMetadataCallback = ( + err?: ServiceError | null, + metadata?: IIndex | null +) => void; +export type IndexGetMetadataResponse = [IIndex]; + +export interface GetIndexesOptions { + filter?: string; + gaxOptions?: CallOptions; + pageSize?: number; + pageToken?: string; + autoPaginate?: boolean; +} +export type GetIndexesResponse = [ + Index[], + GetIndexesOptions, + google.datastore.admin.v1.IListIndexesResponse +]; +export type GetIndexesCallback = ( + err?: ServiceError | null, + indexes?: Index[], + nextQuery?: GetIndexesOptions, + apiResponse?: google.datastore.admin.v1.IListIndexesResponse +) => void; + +export type IIndex = google.datastore.admin.v1.IIndex; + +/** + * @class + * @param {Datastore} datastore The parent instance of this index. + * @param {string} id The index name or id. + * + * @example + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const index = datastore.index('my-index'); + */ +export class Index { + datastore: Datastore; + id: string; + metadata?: IIndex; + + constructor(datastore: Datastore, id: string) { + this.datastore = datastore; + this.id = id.split('/').pop()!; + } + + get(gaxOptions?: CallOptions): Promise; + get(callback: GetIndexCallback): void; + get(gaxOptions: CallOptions, callback: GetIndexCallback): void; + /** + * Get an index if it exists. + * + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/CallSettings.html. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {Index} callback.index The Index instance. + * @param {object} callback.apiResponse The full API response. + */ + get( + gaxOptionsOrCallback?: CallOptions | GetIndexCallback, + cb?: GetIndexCallback + ): void | Promise { + const gaxOpts = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + + this.getMetadata(gaxOpts, (err, metadata) => { + callback(err, err ? null : this, metadata); + }); + } + + getMetadata(gaxOptions?: CallOptions): Promise; + getMetadata(callback: IndexGetMetadataCallback): void; + getMetadata( + gaxOptions: CallOptions, + callback: IndexGetMetadataCallback + ): void; + /** + * Get the metadata of this index. + * + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/CallSettings.html. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {object} callback.metadata The metadata. + */ + getMetadata( + gaxOptionsOrCallback?: CallOptions | IndexGetMetadataCallback, + cb?: IndexGetMetadataCallback + ): void | Promise { + const gaxOpts = + typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + const callback = + typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + + this.datastore.request_( + { + client: 'DatastoreAdminClient', + method: 'getIndex', + reqOpts: { + indexId: this.id, + }, + gaxOpts, + }, + (err, resp) => { + if (resp) { + this.metadata = resp; + } + callback(err as ServiceError, resp); + } + ); + } + + // @TODO implement create() + // @TODO implement delete() + // @TODO implement exists() +} + +/*! Developer Documentation + * + * All async methods (except for streams) will return a Promise in the event + * that a callback is omitted. + */ +promisifyAll(Index); diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index f2ed474aca1..69240741baa 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -25,6 +25,7 @@ */ import arrify = require('arrify'); +import extend = require('extend'); import { GrpcClient, ClientStub, @@ -32,10 +33,22 @@ import { GoogleAuth, GoogleAuthOptions, CallOptions, + Operation, + ServiceError, } from 'google-gax'; import * as is from 'is'; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pumpify = require('pumpify'); +import {Transform} from 'stream'; import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; +import { + GetIndexesCallback, + GetIndexesOptions, + GetIndexesResponse, + IIndex, + Index, +} from './index-class'; import {Query} from './query'; import { DatastoreRequest, @@ -45,6 +58,7 @@ import { SaveCallback, SaveResponse, Mutation, + RequestOptions, } from './request'; import {Transaction} from './transaction'; import {promisifyAll} from '@google-cloud/promisify'; @@ -71,6 +85,31 @@ export type UpsertResponse = CommitResponse; export type InsertCallback = CommitCallback; export type InsertResponse = CommitResponse; +export interface LongRunningCallback { + ( + err: ServiceError | null, + operation?: Operation, + apiResponse?: google.longrunning.IOperation + ): void; +} +export type LongRunningResponse = [Operation, google.longrunning.IOperation]; + +export interface ExportEntitiesConfig + extends Omit { + bucket?: string | {name: string}; + kinds?: string[]; + namespaces?: string[]; + gaxOptions?: CallOptions; +} + +export interface ImportEntitiesConfig + extends Omit { + file?: string | {bucket: {name: string}; name: string}; + kinds?: string[]; + namespaces?: string[]; + gaxOptions?: CallOptions; +} + // Import the clients for each version supported by this package. const gapic = Object.freeze({ v1: require('./v1'), @@ -431,11 +470,18 @@ class Datastore extends DatastoreRequest { this.defaultBaseUrl_ = 'datastore.googleapis.com'; this.determineBaseUrl_(options.apiEndpoint); + const scopes: string[] = Array.from( + new Set([ + ...gapic.v1.DatastoreClient.scopes, + ...gapic.v1.DatastoreAdminClient.scopes, + ]) + ); + this.options = Object.assign( { libName: 'gccl', libVersion: require('../../package.json').version, - scopes: gapic.v1.DatastoreClient.scopes, + scopes, servicePath: this.baseUrl_, port: typeof this.port_ === 'number' ? this.port_ : 443, }, @@ -448,10 +494,266 @@ class Datastore extends DatastoreRequest { this.auth = new GoogleAuth(this.options); } + export(config: ExportEntitiesConfig): Promise; + export(config: ExportEntitiesConfig, callback: LongRunningCallback): void; + /** + * Export entities from this project to a Google Cloud Storage bucket. + * + * @param {ExportEntitiesConfig} config Configuration object. + * @param {string | Bucket} config.bucket The `gs://bucket` path or a + * @google-cloud/storage Bucket object. + * @param {string[]} [config.kinds] The kinds to include in this import. + * @param {string[]} [config.namespaces] The namespace IDs to include in this + * import. + * @param {object} [config.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {Operation} callback.operation An operation object that can be used + * to check the status of the request. + */ + export( + config: ExportEntitiesConfig, + callback?: LongRunningCallback + ): void | Promise { + const reqOpts: ExportEntitiesConfig = { + entityFilter: {}, + ...config, + }; + + if (reqOpts.bucket && reqOpts.outputUrlPrefix) { + throw new Error('Both `bucket` and `outputUrlPrefix` were provided.'); + } + + if (!reqOpts.outputUrlPrefix) { + if (typeof config.bucket === 'string') { + reqOpts.outputUrlPrefix = `gs://${config.bucket.replace('gs://', '')}`; + } else if (typeof config.bucket === 'object') { + reqOpts.outputUrlPrefix = `gs://${config.bucket.name}`; + } else { + throw new Error('A Bucket object or URL must be provided.'); + } + } + + if (reqOpts.kinds) { + if (typeof config.entityFilter === 'object') { + throw new Error('Both `entityFilter` and `kinds` were provided.'); + } + reqOpts.entityFilter!.kinds = reqOpts.kinds; + } + + if (reqOpts.namespaces) { + if (typeof config.entityFilter === 'object') { + throw new Error('Both `entityFilter` and `namespaces` were provided.'); + } + reqOpts.entityFilter!.namespaceIds = reqOpts.namespaces; + } + + delete reqOpts.bucket; + delete reqOpts.gaxOptions; + delete reqOpts.kinds; + delete reqOpts.namespaces; + + this.request_( + { + client: 'DatastoreAdminClient', + method: 'exportEntities', + reqOpts: reqOpts as RequestOptions, + gaxOpts: config.gaxOptions, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + callback as any + ); + } + + getIndexes(options?: GetIndexesOptions): Promise; + getIndexes(options: GetIndexesOptions, callback: GetIndexesCallback): void; + getIndexes(callback: GetIndexesCallback): void; + /** + * Get all of the indexes in this project. + * + * @param {GetIndexesOptions | GetIndexesCallback} [optionsOrCallback] + * @param {object} [options.gaxOptions] Request configuration options, + * outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {GetIndexesResponse} [callback] The callback function. + * @param {?error} callback.error An error returned while making this request. + * @param {Index[]} callback.indexes All matching Index instances. + * @param {object} callback.apiResponse The full API response. + * @return {void | Promise} + */ + getIndexes( + optionsOrCallback?: GetIndexesOptions | GetIndexesCallback, + cb?: GetIndexesCallback + ): void | Promise { + let options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + + options = extend(true, {}, options); + + const gaxOpts = options.gaxOptions || {}; + + const reqOpts = { + pageSize: gaxOpts.pageSize, + pageToken: gaxOpts.pageToken, + ...options, + }; + + delete gaxOpts.pageSize; + delete gaxOpts.pageToken; + delete (reqOpts as CallOptions).autoPaginate; + delete (reqOpts as GetIndexesOptions).gaxOptions; + + if ( + typeof options.autoPaginate === 'boolean' && + typeof gaxOpts.autoPaginate === 'undefined' + ) { + gaxOpts.autoPaginate = options.autoPaginate; + } + + this.request_( + { + client: 'DatastoreAdminClient', + method: 'listIndexes', + reqOpts, + gaxOpts, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (err, ...resp: any[]) => { + let indexes: Index[] = []; + + if (resp[0]) { + indexes = resp[0].map((index: IIndex) => { + const indexInstance = this.index(index.indexId!); + indexInstance.metadata = index; + return indexInstance; + }); + } + + const nextQuery = resp[1]! ? Object.assign(options, resp[1]) : null; + const apiResp: google.datastore.admin.v1.IListIndexesResponse = resp[2]; + + callback(err as ServiceError, indexes, nextQuery, apiResp); + } + ); + } + + /** + * Get all of the indexes in this project as a readable object stream. + * + * @param {GetIndexesOptions} [options] Configuration object. See + * {@link Datastore#getIndexes} for a complete list of options. + * @returns {ReadableStream} + */ + getIndexesStream(options?: GetIndexesOptions): NodeJS.ReadableStream { + const {gaxOptions, ...reqOpts} = options || {}; + + return pumpify.obj([ + this.requestStream_({ + client: 'DatastoreAdminClient', + method: 'listIndexesStream', + reqOpts, + gaxOpts: gaxOptions, + }), + new Transform({ + objectMode: true, + transform: (index: IIndex, enc: string, next: Function) => { + const indexInstance = this.index(index.indexId!); + indexInstance.metadata = index; + next(null, indexInstance); + }, + }), + ]); + } + getProjectId(): Promise { return this.auth.getProjectId(); } + import(config: ImportEntitiesConfig): Promise; + import(config: ImportEntitiesConfig, callback: LongRunningCallback): void; + /** + * Import entities into this project from a remote file. + * + * @param {ImportEntitiesConfig} config Configuration object. + * @param {string | File} config.file The `gs://bucket/file` path or a + * @google-cloud/storage File object. + * @param {string[]} [config.kinds] The kinds to include in this import. + * @param {string[]} [config.namespaces] The namespace IDs to include in this + * import. + * @param {object} [config.gaxOptions] Request configuration options, outlined + * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @param {?error} callback.err An error returned while making this request. + * @param {Operation} callback.operation An operation object that can be used + * to check the status of the request. + */ + import( + config: ImportEntitiesConfig, + callback?: LongRunningCallback + ): void | Promise { + const reqOpts: ImportEntitiesConfig = { + entityFilter: {}, + ...config, + }; + + if (config.file && config.inputUrl) { + throw new Error('Both `file` and `inputUrl` were provided.'); + } + + if (!reqOpts.inputUrl) { + if (typeof config.file === 'string') { + reqOpts.inputUrl = `gs://${config.file.replace('gs://', '')}`; + } else if (typeof config.file === 'object') { + reqOpts.inputUrl = `gs://${config.file.bucket.name}/${config.file.name}`; + } else { + throw new Error('An input URL must be provided.'); + } + } + + if (reqOpts.kinds) { + if (typeof config.entityFilter === 'object') { + throw new Error('Both `entityFilter` and `kinds` were provided.'); + } + reqOpts.entityFilter!.kinds = reqOpts.kinds; + } + + if (reqOpts.namespaces) { + if (typeof config.entityFilter === 'object') { + throw new Error('Both `entityFilter` and `namespaces` were provided.'); + } + reqOpts.entityFilter!.namespaceIds = reqOpts.namespaces; + } + + delete reqOpts.file; + delete reqOpts.gaxOptions; + delete reqOpts.kinds; + delete reqOpts.namespaces; + + this.request_( + { + client: 'DatastoreAdminClient', + method: 'importEntities', + reqOpts: reqOpts as RequestOptions, + gaxOpts: config.gaxOptions, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + callback as any + ); + } + + /** + * Get a reference to an Index. + * + * @param {string} id The index name or id. + * @returns {Index} + */ + index(id: string): Index { + return new Index(this, id); + } + insert(entities: Entities): Promise; insert(entities: Entities, callback: InsertCallback): void; /** @@ -1420,6 +1722,7 @@ promisifyAll(Datastore, { 'isDouble', 'geoPoint', 'isGeoPoint', + 'index', 'int', 'isInt', 'createQuery', @@ -1485,7 +1788,7 @@ export interface TransactionOptions { readOnly?: boolean; } -export {DatastoreRequest, Query, Transaction}; +export {Index, DatastoreRequest, Query, Transaction}; export interface DatastoreOptions extends GoogleAuthOptions { namespace?: string; @@ -1498,5 +1801,3 @@ export interface KeyToLegacyUrlSafeCallback { } const v1 = gapic.v1; export {v1}; -import * as protos from '../protos/protos'; -export {protos}; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 4f054da7f22..09f8ac1c4ff 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -21,10 +21,16 @@ import arrify = require('arrify'); const concat = require('concat-stream'); import * as extend from 'extend'; import {split} from 'split-array-stream'; -import * as streamEvents from 'stream-events'; import {google} from '../protos/protos'; -import {CallOptions} from 'google-gax'; -import {Transform} from 'stream'; +import {CallOptions, CancellableStream} from 'google-gax'; +import {Duplex, PassThrough, Transform} from 'stream'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const streamEvents = require('stream-events'); + +export interface AbortableDuplex extends Duplex { + abort(): void; +} // Import the clients for each version supported by this package. const gapic = Object.freeze({ @@ -868,20 +874,10 @@ class DatastoreRequest { }); } - request_(config: RequestConfig, callback: RequestCallback): void; /** - * Make a request to the API endpoint. Properties to indicate a transactional - * or non-transactional operation are added automatically. - * - * @param {object} config Configuration object. - * @param {object} config.gaxOpts GAX options. - * @param {function} config.method The gax method to call. - * @param {object} config.reqOpts Request options. - * @param {function} callback The callback function. - * * @private */ - request_(config: RequestConfig, callback: RequestCallback): void { + prepareGaxRequest_(config: RequestConfig, callback: Function): void { const datastore = this.datastore; const isTransaction = this.id ? true : false; @@ -933,8 +929,70 @@ class DatastoreRequest { 'google-cloud-resource-prefix': `projects/${projectId}`, }, }); - gaxClient![method](reqOpts, gaxOpts, callback); + const requestFn = gaxClient![method].bind(gaxClient, reqOpts, gaxOpts); + callback(null, requestFn); + }); + } + + request_(config: RequestConfig, callback: RequestCallback): void; + /** + * Make a request to the API endpoint. Properties to indicate a transactional + * or non-transactional operation are added automatically. + * + * @param {object} config Configuration object. + * @param {object} config.gaxOpts GAX options. + * @param {string} config.client The name of the gax client. + * @param {function} config.method The gax method to call. + * @param {object} config.reqOpts Request options. + * @param {function} callback The callback function. + * + * @private + */ + request_(config: RequestConfig, callback: RequestCallback): void { + this.prepareGaxRequest_(config, (err: Error, requestFn: Function) => { + if (err) { + callback(err); + return; + } + requestFn(callback); + }); + } + + /** + * Make a request as a stream. + * + * @param {object} config Configuration object. + * @param {object} config.gaxOpts GAX options. + * @param {string} config.client The name of the gax client. + * @param {string} config.method The gax method to call. + * @param {object} config.reqOpts Request options. + */ + requestStream_(config: RequestConfig): AbortableDuplex { + let gaxStream: CancellableStream; + const stream = streamEvents(new PassThrough({objectMode: true})); + + stream.abort = () => { + if (gaxStream && gaxStream.cancel) { + gaxStream.cancel(); + } + }; + + stream.once('reading', () => { + this.prepareGaxRequest_(config, (err: Error, requestFn: Function) => { + if (err) { + stream.destroy(err); + return; + } + + gaxStream = requestFn(); + gaxStream + .on('error', stream.destroy.bind(stream)) + .on('response', stream.emit.bind(stream, 'response')) + .pipe(stream); + }); }); + + return stream as AbortableDuplex; } } @@ -999,6 +1057,9 @@ export interface RequestOptions { mode?: string; projectId?: string; query?: QueryProto; + filter?: string; + indexId?: string; + entityFilter?: google.datastore.admin.v1.IEntityFilter; } export type RunQueryStreamOptions = RunQueryOptions; export interface CommitCallback { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 2f1842f1b05..b2758df00c0 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -13,8 +13,13 @@ // limitations under the License. import * as assert from 'assert'; +import {readFileSync} from 'fs'; +import * as path from 'path'; import {before, after, describe, it} from 'mocha'; -import {Datastore} from '../src'; +import * as yaml from 'js-yaml'; +import {Datastore, Index} from '../src'; +import {google} from '../protos/protos'; +import {Storage} from '@google-cloud/storage'; describe('Datastore', () => { const testKinds: string[] = []; @@ -31,6 +36,13 @@ describe('Datastore', () => { return keyObject; }; + const {indexes: DECLARED_INDEXES} = yaml.safeLoad( + readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8') + ) as {indexes: google.datastore.admin.v1.IIndex[]}; + + // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after + // possible implications with kokoro project + after(async () => { async function deleteEntities(kind: string) { const query = datastore.createQuery(kind).select('__key__'); @@ -923,4 +935,85 @@ describe('Datastore', () => { await assert.rejects(transaction.commit()); }); }); + + describe('indexes', () => { + // @TODO: Until the protos support creating indexes, these tests depend on + // the remote state of declared indexes. Could be flaky! + it('should get all indexes', async () => { + const [indexes] = await datastore.getIndexes(); + assert.ok( + indexes.length >= DECLARED_INDEXES.length, + 'has at least the number of indexes per system-test/data/index.yaml' + ); + + // Comparing index.yaml and the actual defined index in Datastore requires + // assumptions to complete a shape transformation, so let's just see if + // a returned index has the right shape and not inspect the values. + const [firstIndex] = indexes; + + assert.ok(firstIndex, 'first index is readable'); + assert.ok(firstIndex.metadata!.properties, 'has properties collection'); + assert.ok( + firstIndex.metadata!.properties.length, + 'with properties inside' + ); + assert.ok(firstIndex.metadata!.ancestor, 'has the ancestor property'); + }); + + it('should get all indexes as a stream', done => { + const indexes: Index[] = []; + + datastore + .getIndexesStream() + .on('error', done) + .on('data', index => { + indexes.push(index); + }) + .on('end', () => { + assert(indexes.length >= DECLARED_INDEXES.length); + done(); + }); + }); + + it('should get a specific index', async () => { + const [indexes] = await datastore.getIndexes(); + const [firstIndex] = indexes; + + const index = datastore.index(firstIndex.id); + const [metadata] = await index.getMetadata(); + assert.deepStrictEqual( + metadata, + firstIndex.metadata, + 'asked index is the same as received index' + ); + }); + }); + + describe('importing and exporting entities', () => { + const gcs = new Storage(); + const bucket = gcs.bucket('nodejs-datastore-system-tests'); + + it('should export, then import entities', async () => { + const [exportOperation] = await datastore.export({bucket}); + await exportOperation.promise(); + + const [files] = await bucket.getFiles({maxResults: 1}); + const [exportedFile] = files; + assert.ok(exportedFile.name.includes('overall_export_metadata')); + + const [importOperation] = await datastore.import({ + file: exportedFile, + }); + + // This is a >20 minute operation, so we're just going to make sure the + // right type of operation was started. + assert.strictEqual( + (importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata) + .inputUrl, + `gs://${exportedFile.bucket.name}/${exportedFile.name}` + ); + + await importOperation.cancel(); + }); + }); }); diff --git a/handwritten/nodejs-datastore/test/index-class.ts b/handwritten/nodejs-datastore/test/index-class.ts new file mode 100644 index 00000000000..3754e467274 --- /dev/null +++ b/handwritten/nodejs-datastore/test/index-class.ts @@ -0,0 +1,153 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as promisify from '@google-cloud/promisify'; +import * as assert from 'assert'; +import {before, beforeEach, describe, it} from 'mocha'; +import * as proxyquire from 'proxyquire'; + +import * as ds from '../src'; + +let promisified = false; +const fakePromisify = Object.assign({}, promisify, { + promisifyAll(klass: Function) { + if (klass.name === 'Index') { + promisified = true; + } + }, +}); + +describe('Index', () => { + const INDEX_ID = 'my-index'; + let DATASTORE: ds.Datastore; + + let Index: typeof ds.Index; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let index: any; + + before(() => { + Index = proxyquire('../src/index-class.js', { + '@google-cloud/promisify': fakePromisify, + }).Index; + }); + + beforeEach(() => { + DATASTORE = {} as ds.Datastore; + index = new Index(DATASTORE, INDEX_ID); + }); + + describe('instantiation', () => { + it('should promisify all the things', () => { + assert(promisified); + }); + + it('should localize datastore instance', () => { + assert.strictEqual(index.datastore, DATASTORE); + }); + + it('should localize id from name', () => { + const name = 'long/formatted/name'; + const index = new Index(DATASTORE, name); + assert.strictEqual(index.id, name.split('/').pop()); + }); + + it('should localize id from id', () => { + assert.strictEqual(index.id, INDEX_ID); + }); + }); + + describe('get', () => { + it('should call getMetadata', done => { + const gaxOptions = {}; + index.getMetadata = (options: {}) => { + assert.strictEqual(options, gaxOptions); + done(); + }; + index.get(gaxOptions, assert.ifError); + }); + + it('should not require an options object', done => { + index.getMetadata = (options: {}) => { + assert.deepStrictEqual(options, {}); + done(); + }; + index.get(assert.ifError); + }); + + it('should return an error from getMetadata', done => { + const error = new Error('Error.'); + index.getMetadata = (gaxOptions: {}, callback: Function) => { + callback(error); + }; + index.get((err: Error | null) => { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should return self and API response', done => { + const apiResponse = {}; + index.getMetadata = (gaxOptions: {}, callback: Function) => { + callback(null, apiResponse); + }; + index.get((err: Error | null, _index: {}, _apiResponse: {}) => { + assert.ifError(err); + assert.strictEqual(_index, index); + assert.strictEqual(_apiResponse, apiResponse); + done(); + }); + }); + }); + + describe('getMetadata', () => { + it('should make the correct request', done => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + index.datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'getIndex'); + assert.deepStrictEqual(config.reqOpts, { + indexId: index.id, + }); + assert.deepStrictEqual(config.gaxOpts, {}); + done(); + }; + + index.getMetadata(assert.ifError); + }); + + it('should accept gaxOptions', done => { + const gaxOptions = {}; + + index.datastore.request_ = (config: {gaxOpts: {}}) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + index.getMetadata(gaxOptions, assert.ifError); + }); + + it('should update the metadata', done => { + const response = {}; + index.datastore.request_ = (config: {}, callback: Function) => { + callback(null, response); + }; + index.getMetadata((err: Error | null, metadata: {}) => { + assert.ifError(err); + assert.strictEqual(metadata, response); + assert.strictEqual(index.metadata, response); + done(); + }); + }); + }); +}); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 179d075980f..42bb76d5291 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -16,6 +16,7 @@ import * as assert from 'assert'; import {before, beforeEach, after, afterEach, describe, it} from 'mocha'; import * as gax from 'google-gax'; import * as proxyquire from 'proxyquire'; +import {PassThrough, Readable} from 'stream'; import * as ds from '../src'; import {DatastoreOptions} from '../src'; @@ -106,6 +107,14 @@ const fakeGoogleGax = { }, }; +class FakeIndex { + calledWith_: Array<{}>; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + this.calledWith_ = args; + } +} + class FakeQuery { // eslint-disable-next-line @typescript-eslint/no-explicit-any calledWith_: any[]; @@ -150,6 +159,7 @@ describe('Datastore', () => { before(() => { Datastore = proxyquire('../src', { './entity.js': {entity: fakeEntity}, + './index-class.js': {Index: FakeIndex}, './query.js': {Query: FakeQuery}, './transaction.js': {Transaction: FakeTransaction}, './v1': FakeV1, @@ -518,6 +528,638 @@ describe('Datastore', () => { }); }); + describe('export', () => { + it('should accept a bucket string destination', done => { + const bucket = 'bucket'; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.outputUrlPrefix, `gs://${bucket}`); + done(); + }; + + datastore.export({bucket}, assert.ifError); + }); + + it('should remove extraneous gs:// prefix from input', done => { + const bucket = 'gs://bucket'; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.outputUrlPrefix, `${bucket}`); + done(); + }; + + datastore.export({bucket}, assert.ifError); + }); + + it('should accept a Bucket object destination', done => { + const bucket = {name: 'bucket'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.outputUrlPrefix, + `gs://${bucket.name}` + ); + done(); + }; + + datastore.export({bucket}, assert.ifError); + }); + + it('should throw if a destination is not provided', () => { + assert.throws(() => { + datastore.export({}, assert.ifError); + }, /A Bucket object or URL must be provided\./); + }); + + it('should throw if bucket and outputUrlPrefix are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + outputUrlPrefix: 'output-url-prefix', + }, + assert.ifError + ); + }, /Both `bucket` and `outputUrlPrefix` were provided\./); + }); + + it('should accept kinds', done => { + const kinds = ['kind1', 'kind2']; + const config = {bucket: 'bucket', kinds}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); + done(); + }; + + datastore.export(config, assert.ifError); + }); + + it('should throw if both kinds and entityFilter are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + kinds: ['kind1', 'kind2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `kinds` were provided\./); + }); + + it('should accept namespaces', done => { + const namespaces = ['ns1', 'n2']; + const config = {bucket: 'bucket', namespaces}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual( + config.reqOpts.entityFilter.namespaceIds, + namespaces + ); + done(); + }; + + datastore.export(config, assert.ifError); + }); + + it('should throw if both namespaces and entityFilter are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + namespaces: ['ns1', 'ns2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `namespaces` were provided\./); + }); + + it('should remove extraneous properties from request', done => { + const config = { + bucket: 'bucket', + gaxOptions: {}, + kinds: ['kind1', 'kind2'], + namespaces: ['ns1', 'ns2'], + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.bucket, 'undefined'); + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); + assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); + done(); + }; + + datastore.export(config, assert.ifError); + }); + + it('should send any user input to API', done => { + const userProperty = 'abc'; + const config = {bucket: 'bucket', userProperty}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.userProperty, userProperty); + done(); + }; + + datastore.export(config, assert.ifError); + }); + + it('should send correct request', done => { + const config = {bucket: 'bucket'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'exportEntities'); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + done(); + }; + + datastore.export(config, assert.ifError); + }); + + it('should accept gaxOptions', done => { + const gaxOptions = {}; + const config = {bucket: 'bucket', gaxOptions}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + datastore.export(config, assert.ifError); + }); + }); + + describe('getIndexes', () => { + it('should send the correct request', done => { + const options = {a: 'b'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'listIndexes'); + assert.deepStrictEqual(config.reqOpts, { + pageSize: undefined, + pageToken: undefined, + ...options, + }); + assert.deepStrictEqual(config.gaxOpts, {}); + + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should locate pagination settings from gaxOptions', done => { + const options = { + gaxOptions: { + pageSize: 'size', + pageToken: 'token', + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.pageSize, + options.gaxOptions.pageSize + ); + assert.strictEqual( + config.reqOpts.pageToken, + options.gaxOptions.pageToken + ); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should prefer pageSize and pageToken from options over gaxOptions', done => { + const options = { + pageSize: 'size-good', + pageToken: 'token-good', + gaxOptions: { + pageSize: 'size-bad', + pageToken: 'token-bad', + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.pageSize, options.pageSize); + assert.strictEqual(config.reqOpts.pageToken, options.pageToken); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should remove extraneous pagination settings from request', done => { + const options = { + gaxOptions: { + pageSize: 'size', + pageToken: 'token', + }, + autoPaginate: true, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.gaxOpts.pageSize, 'undefined'); + assert.strictEqual(typeof config.gaxOpts.pageToken, 'undefined'); + assert.strictEqual(typeof config.reqOpts.autoPaginate, 'undefined'); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should accept gaxOptions', done => { + const options = { + gaxOptions: {a: 'b'}, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.deepStrictEqual(config.gaxOpts, options.gaxOptions); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should not send gaxOptions as request options', done => { + const options = { + gaxOptions: {a: 'b'}, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert(Object.keys(options.gaxOptions).every(k => !config.reqOpts[k])); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should set autoPaginate from options', done => { + const options = { + autoPaginate: true, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts.autoPaginate, options.autoPaginate); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should prefer autoPaginate from gaxOpts', done => { + const options = { + autoPaginate: false, + gaxOptions: { + autoPaginate: true, + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts.autoPaginate, true); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); + + it('should execute callback with error and correct response arguments', done => { + const error = new Error('Error.'); + const apiResponse = {}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(error, [], null, apiResponse); + }; + + datastore.getIndexes( + (err: Error, indexes: [], nextQuery: {}, apiResp: {}) => { + assert.strictEqual(err, error); + assert.deepStrictEqual(indexes, []); + assert.strictEqual(nextQuery, null); + assert.strictEqual(apiResp, apiResponse); + done(); + } + ); + }); + + it('should execute callback with Index instances', done => { + const rawIndex = {indexId: 'name', a: 'b'}; + const indexInstance = {}; + + datastore.index = (id: string) => { + assert.strictEqual(id, rawIndex.indexId); + return indexInstance; + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(null, [rawIndex]); + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.getIndexes((err: Error, indexes: any[]) => { + assert.ifError(err); + assert.deepStrictEqual(indexes, [indexInstance]); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + assert.strictEqual((indexes[0] as any)!.metadata, rawIndex); + done(); + }); + }); + + it('should execute callback with prepared nextQuery', done => { + const options = {pageToken: '1'}; + const nextQuery = {pageToken: '2'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(null, [], nextQuery); + }; + + datastore.getIndexes( + options, + (err: Error, indexes: [], _nextQuery: {}) => { + assert.ifError(err); + assert.deepStrictEqual(_nextQuery, nextQuery); + done(); + } + ); + }); + }); + + describe('getIndexesStream', () => { + it('should make correct request', done => { + const options = {a: 'b'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.requestStream_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'listIndexesStream'); + assert.deepStrictEqual(config.reqOpts, { + ...options, + }); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + setImmediate(done); + return new PassThrough(); + }; + + datastore.getIndexesStream(options); + }); + + it('should accept gaxOptions', done => { + const options = {gaxOptions: {}}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.requestStream_ = (config: any) => { + assert.strictEqual(config.gaxOpts, options.gaxOptions); + setImmediate(done); + return new PassThrough(); + }; + + datastore.getIndexesStream(options); + }); + + it('should transform response indexes into Index objects', done => { + const rawIndex = {indexId: 'name', a: 'b'}; + const indexInstance = {}; + const requestStream = new Readable({ + objectMode: true, + read() { + this.push(rawIndex); + this.push(null); + }, + }); + + datastore.index = (id: string) => { + assert.strictEqual(id, rawIndex.indexId); + return indexInstance; + }; + + datastore.requestStream_ = () => requestStream; + + datastore + .getIndexesStream() + .on('error', done) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .on('data', (index: any) => { + assert.strictEqual(index, indexInstance); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + assert.strictEqual((index as any).metadata, rawIndex); + done(); + }); + }); + }); + + describe('import', () => { + it('should throw if both file and inputUrl are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + inputUrl: 'gs://file', + }, + assert.ifError + ); + }, /Both `file` and `inputUrl` were provided\./); + }); + + it('should accept a file string source', done => { + const file = 'file'; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.inputUrl, `gs://${file}`); + done(); + }; + + datastore.import({file}, assert.ifError); + }); + + it('should remove extraneous gs:// prefix from input', done => { + const file = 'gs://file'; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.inputUrl, `${file}`); + done(); + }; + + datastore.import({file}, assert.ifError); + }); + + it('should accept a File object source', done => { + const file = {bucket: {name: 'bucket'}, name: 'file'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.inputUrl, + `gs://${file.bucket.name}/${file.name}` + ); + done(); + }; + + datastore.import({file}, assert.ifError); + }); + + it('should throw if a source is not provided', () => { + assert.throws(() => { + datastore.import({}, assert.ifError); + }, /An input URL must be provided\./); + }); + + it('should accept kinds', done => { + const kinds = ['kind1', 'kind2']; + const config = {file: 'file', kinds}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); + done(); + }; + + datastore.import(config, assert.ifError); + }); + + it('should throw if both kinds and entityFilter are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + kinds: ['kind1', 'kind2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `kinds` were provided\./); + }); + + it('should accept namespaces', done => { + const namespaces = ['ns1', 'n2']; + const config = {file: 'file', namespaces}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual( + config.reqOpts.entityFilter.namespaceIds, + namespaces + ); + done(); + }; + + datastore.import(config, assert.ifError); + }); + + it('should throw if both namespaces and entityFilter are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + namespaces: ['ns1', 'ns2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `namespaces` were provided\./); + }); + + it('should remove extraneous properties from request', done => { + const config = { + file: 'file', + gaxOptions: {}, + kinds: ['kind1', 'kind2'], + namespaces: ['ns1', 'ns2'], + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.file, 'undefined'); + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); + assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); + done(); + }; + + datastore.import(config, assert.ifError); + }); + + it('should send any user input to API', done => { + const userProperty = 'abc'; + const config = {file: 'file', userProperty}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.userProperty, userProperty); + done(); + }; + + datastore.import(config, assert.ifError); + }); + + it('should send correct request', done => { + const config = {file: 'file'}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'importEntities'); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + done(); + }; + + datastore.import(config, assert.ifError); + }); + + it('should accept gaxOptions', done => { + const gaxOptions = {}; + const config = {file: 'file', gaxOptions}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; + + datastore.import(config, assert.ifError); + }); + }); + + describe('index', () => { + it('should return an Index object', () => { + const indexId = 'index-id'; + const index = datastore.index(indexId); + assert(index instanceof FakeIndex); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const args = (index as any).calledWith_; + assert.strictEqual(args[0], datastore); + assert.strictEqual(args[1], indexId); + }); + }); + describe('insert', () => { afterEach(() => { sandbox.restore(); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 1a9d668e450..830c6f605a5 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -16,10 +16,11 @@ import * as pfy from '@google-cloud/promisify'; import * as assert from 'assert'; import {after, afterEach, before, beforeEach, describe, it} from 'mocha'; import * as extend from 'extend'; +import * as gax from 'google-gax'; import * as is from 'is'; import * as proxyquire from 'proxyquire'; import * as sinon from 'sinon'; -import {Transform} from 'stream'; +import {PassThrough, Transform} from 'stream'; import {google} from '../protos/protos'; import * as ds from '../src'; @@ -1555,7 +1556,7 @@ describe('Request', () => { }); }); - describe('request_', () => { + describe('prepareGaxRequest_', () => { const CONFIG = { client: 'FakeClient', // name set at top of file method: 'method', @@ -1590,7 +1591,7 @@ describe('Request', () => { request.datastore.auth.getProjectId = () => { done(); }; - request.request_(CONFIG, assert.ifError); + request.prepareGaxRequest_(CONFIG, assert.ifError); }); it('should return error if getting project ID failed', done => { @@ -1599,7 +1600,7 @@ describe('Request', () => { request.datastore.auth.getProjectId = (callback: Function) => { callback(error); }; - request.request_(CONFIG, (err: Error) => { + request.prepareGaxRequest_(CONFIG, (err: Error) => { assert.strictEqual(err, error); done(); }); @@ -1614,18 +1615,21 @@ describe('Request', () => { return fakeClient; }; request.datastore.clients_ = new Map(); - request.request_(CONFIG, assert.ifError); + request.prepareGaxRequest_(CONFIG, assert.ifError); const client = request.datastore.clients_.get(CONFIG.client); assert.strictEqual(client, fakeClient); }); - it('should use the cached client', done => { + it('should return the cached client', done => { v1FakeClientOverride = () => { done(new Error('Should not re-instantiate a GAX client.')); }; - request.request_(CONFIG); - done(); + request.prepareGaxRequest_(CONFIG, (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + done(); + }); }); it('should send gaxOpts', done => { @@ -1639,7 +1643,10 @@ describe('Request', () => { }, }); - request.request_(CONFIG, assert.ifError); + request.prepareGaxRequest_(CONFIG, (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + }); }); it('should send google-cloud-resource-prefix', done => { @@ -1654,7 +1661,10 @@ describe('Request', () => { }, }); - request.request_(CONFIG, assert.ifError); + request.prepareGaxRequest_(CONFIG, (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + }); }); describe('commit', () => { @@ -1669,7 +1679,13 @@ describe('Request', () => { const config = Object.assign({}, CONFIG, { method: 'commit', }); - request.request_(config, assert.ifError); + request.prepareGaxRequest_( + config, + (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + } + ); }); }); @@ -1693,7 +1709,13 @@ describe('Request', () => { const config = Object.assign({}, CONFIG, { method: 'commit', }); - request.request_(config, assert.ifError); + request.prepareGaxRequest_( + config, + (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + } + ); }); it('should set the rollback transaction info', done => { @@ -1708,7 +1730,13 @@ describe('Request', () => { const config = Object.assign({}, CONFIG, { method: 'rollback', }); - request.request_(config, assert.ifError); + request.prepareGaxRequest_( + config, + (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + } + ); }); it('should set the lookup transaction info', done => { @@ -1727,7 +1755,13 @@ describe('Request', () => { }, }); - request.request_(config, assert.ifError); + request.prepareGaxRequest_( + config, + (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + } + ); }); it('should set the runQuery transaction info', done => { @@ -1746,7 +1780,13 @@ describe('Request', () => { }, }); - request.request_(config, assert.ifError); + request.prepareGaxRequest_( + config, + (err: Error, requestFn: Function) => { + assert.ifError(err); + requestFn(); + } + ); }); it('should throw if read consistency is specified', () => { @@ -1760,9 +1800,113 @@ describe('Request', () => { }); assert.throws(() => { - request.request_(config, assert.ifError); + request.prepareGaxRequest_(config, assert.ifError); }, /Read consistency cannot be specified in a transaction\./); }); }); }); + + describe('request_', () => { + const CONFIG = {}; + + it('should pass config to prepare function', done => { + request.prepareGaxRequest_ = (config: {}) => { + assert.strictEqual(config, CONFIG); + done(); + }; + + request.request_(CONFIG, assert.ifError); + }); + + it('should execute callback with error from prepare function', done => { + const error = new Error('Error.'); + + request.prepareGaxRequest_ = (config: {}, callback: Function) => { + callback(error); + }; + + request.request_(CONFIG, (err: Error) => { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should execute returned request function with callback', done => { + const requestFn = (callback: Function) => { + callback(); // done() + }; + + request.prepareGaxRequest_ = (config: {}, callback: Function) => { + callback(null, requestFn); + }; + + request.request_(CONFIG, done); + }); + }); + + describe('requestStream_', () => { + let GAX_STREAM: gax.CancellableStream; + const CONFIG = {}; + + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (GAX_STREAM as any) = new PassThrough(); + request.prepareGaxRequest_ = (config: {}, callback: Function) => { + callback(null, () => GAX_STREAM); + }; + }); + + it('should expose an abort function', done => { + GAX_STREAM.cancel = done; + + const requestStream = request.requestStream_(CONFIG); + requestStream.emit('reading'); + requestStream.abort(); + }); + + it('should prepare the request once reading', done => { + request.prepareGaxRequest_ = (config: {}) => { + assert.strictEqual(config, CONFIG); + done(); + }; + + const requestStream = request.requestStream_(CONFIG); + requestStream.emit('reading'); + }); + + it('should destroy the stream with prepare error', done => { + const error = new Error('Error.'); + request.prepareGaxRequest_ = (config: {}, callback: Function) => { + callback(error); + }; + const requestStream = request.requestStream_(CONFIG); + requestStream.emit('reading'); + requestStream.on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should destroy the stream with GAX error', done => { + const error = new Error('Error.'); + const requestStream = request.requestStream_(CONFIG); + requestStream.emit('reading'); + GAX_STREAM.emit('error', error); + requestStream.on('error', (err: Error) => { + assert.strictEqual(err, error); + done(); + }); + }); + + it('should emit response from GAX stream', done => { + const response = {}; + const requestStream = request.requestStream_(CONFIG); + requestStream.emit('reading'); + requestStream.on('response', (resp: {}) => { + assert.strictEqual(resp, response); + done(); + }); + GAX_STREAM.emit('response', response); + }); + }); }); From 6287653195b52d9657445572cd74c0bc8377edb2 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 8 Oct 2020 11:53:01 -0400 Subject: [PATCH 582/820] chore: release 6.2.0 (#738) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index aa630f47ca2..fb68e74cabc 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.2.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.1.1...v6.2.0) (2020-10-08) + + +### Features + +* introduce import/export + Index class ([#734](https://www.github.com/googleapis/nodejs-datastore/issues/734)) ([e329095](https://www.github.com/googleapis/nodejs-datastore/commit/e329095cb363989e11a1793a0b49ebcadd7a9093)) + ### [6.1.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.1.0...v6.1.1) (2020-09-12) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 7e1e424d00e..568ed53cde0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.1.1", + "version": "6.2.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 55a69a2c273..efe9ffe9da7 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.1.1", + "@google-cloud/datastore": "^6.2.0", "sinon": "^9.0.0" }, "devDependencies": { From 2eddf4a0fb98fc1235afaf8a3abd60ee9f6a9fc5 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 9 Oct 2020 05:14:33 -0700 Subject: [PATCH 583/820] docs: updated README.md (#739) autosynth cannot find the source of changes triggered by earlier changes in this repository, or by version upgrades to tools such as linters. --- handwritten/nodejs-datastore/README.md | 4 ++ .../nodejs-datastore/samples/README.md | 72 +++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index e9a191bac68..afd585e8cec 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -106,6 +106,10 @@ has instructions for running the samples. | --------------------------- | --------------------------------- | ------ | | Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | | Error | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | +| Export | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/export.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/export.js,samples/README.md) | +| Import | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/import.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) | +| Indexes.get | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.get.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) | +| Indexes.list | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 496c575ad20..0cf6f98eac4 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -14,6 +14,10 @@ * [Samples](#samples) * [Concepts](#concepts) * [Error](#error) + * [Export](#export) + * [Import](#import) + * [Indexes.get](#indexes.get) + * [Indexes.list](#indexes.list) * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) @@ -70,6 +74,74 @@ __Usage:__ +### Export + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/export.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/export.js,samples/README.md) + +__Usage:__ + + +`node samples/export.js` + + +----- + + + + +### Import + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/import.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) + +__Usage:__ + + +`node samples/import.js` + + +----- + + + + +### Indexes.get + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.get.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) + +__Usage:__ + + +`node samples/indexes.get.js` + + +----- + + + + +### Indexes.list + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.list.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) + +__Usage:__ + + +`node samples/indexes.list.js` + + +----- + + + + ### Quickstart View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0d3cccf3329..58fdb02f744 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "d8504a7b21ee188168df8c37cf993cd06f42c0d2" + "sha": "bc6bf677aefc91fd4442e87034a5fa6ebd7272f2" } }, { From 744bcc8b3783fb87ad7db9fccd79c206a490835a Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 16 Oct 2020 09:06:05 -0700 Subject: [PATCH 584/820] build: only check --engine-strict for production deps (#740) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/9b1f5306-e1f1-4834-baa7-c436ccd06c13/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/5451633881133e5573cc271a18e73b18caca8b1b --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 58fdb02f744..3ee0b916b98 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "bc6bf677aefc91fd4442e87034a5fa6ebd7272f2" + "sha": "90684c0c54d9b79ab5fa3c75769b750859462505" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "0c868d49b8e05bc1f299bc773df9eb4ef9ed96e9" + "sha": "5451633881133e5573cc271a18e73b18caca8b1b" } } ], From 0b58d68cdb0403da2cb044b87b9b5f55356a75b1 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 21 Oct 2020 16:14:17 -0700 Subject: [PATCH 585/820] chore: clean up Node.js TOC for cloud-rad (#741) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/e0137a63-bb5b-4789-864f-390ba4ea7d6a/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/901ddd44e9ef7887ee681b9183bbdea99437fdcc Source-Link: https://github.com/googleapis/synthtool/commit/f96d3b455fe27c3dc7bc37c3c9cd27b1c6d269c8 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 3ee0b916b98..aa74c62b309 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "90684c0c54d9b79ab5fa3c75769b750859462505" + "sha": "d5c9106f4af0fc4c1c959fa46b728192af6efc6d" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5451633881133e5573cc271a18e73b18caca8b1b" + "sha": "901ddd44e9ef7887ee681b9183bbdea99437fdcc" } } ], From c6206e42a80ebb5ea5d6a1cfd4edcbe68ffd89c6 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 27 Oct 2020 08:38:11 -0700 Subject: [PATCH 586/820] docs: updated code of conduct (includes update to actions) (#744) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/1ba764cb-0d2b-415e-8df3-550cb9bd34aa/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/89c849ba5013e45e8fb688b138f33c2ec6083dc5 Source-Link: https://github.com/googleapis/synthtool/commit/a783321fd55f010709294455584a553f4b24b944 Source-Link: https://github.com/googleapis/synthtool/commit/b7413d38b763827c72c0360f0a3d286c84656eeb Source-Link: https://github.com/googleapis/synthtool/commit/5f6ef0ec5501d33c4667885b37a7685a30d41a76 --- .../nodejs-datastore/CODE_OF_CONDUCT.md | 123 +++++++++++++----- handwritten/nodejs-datastore/synth.metadata | 4 +- 2 files changed, 89 insertions(+), 38 deletions(-) diff --git a/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md b/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md index 46b2a08ea6d..2add2547a81 100644 --- a/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md +++ b/handwritten/nodejs-datastore/CODE_OF_CONDUCT.md @@ -1,43 +1,94 @@ -# Contributor Code of Conduct + +# Code of Conduct -As contributors and maintainers of this project, -and in the interest of fostering an open and welcoming community, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. +## Our Pledge -We are committed to making participation in this project -a harassment-free experience for everyone, -regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of +experience, education, socio-economic status, nationality, personal appearance, +race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, -such as physical or electronic -addresses, without explicit permission -* Other unethical or unprofessional conduct. +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -By adopting this Code of Conduct, -project maintainers commit themselves to fairly and consistently -applying these principles to every aspect of managing this project. -Project maintainers who do not follow or enforce the Code of Conduct -may be permanently removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue -or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, -available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, or to ban temporarily or permanently any +contributor for other behaviors that they deem inappropriate, threatening, +offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +This Code of Conduct also applies outside the project spaces when the Project +Steward has a reasonable belief that an individual's behavior may have a +negative impact on the project or its community. + +## Conflict Resolution + +We do not believe that all conflict is bad; healthy debate and disagreement +often yield positive results. However, it is never okay to be disrespectful or +to engage in behavior that violates the project’s code of conduct. + +If you see someone violating the code of conduct, you are encouraged to address +the behavior directly with those involved. Many issues can be resolved quickly +and easily, and this gives people more control over the outcome of their +dispute. If you are unable to resolve the matter for any reason, or if the +behavior is threatening or harassing, report it. We are dedicated to providing +an environment where participants feel welcome and safe. + +Reports should be directed to *googleapis-stewards@google.com*, the +Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to +receive and address reported violations of the code of conduct. They will then +work with a committee consisting of representatives from the Open Source +Programs Office and the Google Open Source Strategy team. If for any reason you +are uncomfortable reaching out to the Project Steward, please email +opensource@google.com. + +We will investigate every complaint, but you may not receive a direct response. +We will use our discretion in determining when and how to follow up on reported +incidents, which may range from not taking action to permanent expulsion from +the project and project-sponsored spaces. We will notify the accused of the +report and provide them an opportunity to discuss it before any action is taken. +The identity of the reporter will be omitted from the details of the report +supplied to the accused. In potentially harmful situations, such as ongoing +harassment or threats to anyone's safety, we may take action without notice. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, +available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html \ No newline at end of file diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index aa74c62b309..9961e8d3556 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "d5c9106f4af0fc4c1c959fa46b728192af6efc6d" + "sha": "6d3c0900ed6182ae1c1ac94caf3ef68b23db9e1b" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "901ddd44e9ef7887ee681b9183bbdea99437fdcc" + "sha": "89c849ba5013e45e8fb688b138f33c2ec6083dc5" } } ], From ba2b4222e361eb9ad806432e5da316e8d7e15d4b Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 2 Nov 2020 15:58:04 -0800 Subject: [PATCH 587/820] build(node): add KOKORO_BUILD_ARTIFACTS_SUBDIR to env (#747) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/bfc25924-7584-48c7-bead-23b659b9a9b8/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/ba9918cd22874245b55734f57470c719b577e591 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 9961e8d3556..a4373c14ec1 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "6d3c0900ed6182ae1c1ac94caf3ef68b23db9e1b" + "sha": "8ec44df602d92649a34a99d20556d901c463061c" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "89c849ba5013e45e8fb688b138f33c2ec6083dc5" + "sha": "ba9918cd22874245b55734f57470c719b577e591" } } ], From e3a8233fad113a3f395633a7bc2f2f1abe13875c Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Tue, 3 Nov 2020 09:39:07 -0800 Subject: [PATCH 588/820] docs: correct method name referenced by datastore.merge() (#748) `merge` is not a method of `Datastore#save`. The method is set to `upsert` on l 856. --- handwritten/nodejs-datastore/src/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 09f8ac1c4ff..2efa50a024a 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -816,7 +816,7 @@ class DatastoreRequest { * By default, all properties are indexed. To prevent a property from being * included in *all* indexes, you must supply an `excludeFromIndexes` array. * - * Maps to {@link Datastore#save}, forcing the method to be `merge`. + * Maps to {@link Datastore#save}, forcing the method to be `upsert`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. From 9ae85db41cb9b420a6a309c9f9ca44396177b860 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Fri, 6 Nov 2020 16:54:05 -0800 Subject: [PATCH 589/820] fix: do not modify options object, use defaultScopes (#751) Regenerated the library using [gapic-generator-typescript](https://github.com/googleapis/gapic-generator-typescript) v1.2.1. --- handwritten/nodejs-datastore/package.json | 2 +- .../src/v1/datastore_admin_client.ts | 185 ++++++++++-------- .../src/v1/datastore_client.ts | 108 ++++++---- handwritten/nodejs-datastore/synth.metadata | 16 +- handwritten/nodejs-datastore/synth.py | 1 + .../system-test/fixtures/sample/src/index.ts | 9 +- .../nodejs-datastore/system-test/install.ts | 18 +- 7 files changed, 197 insertions(+), 142 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 568ed53cde0..397faabe7f8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,7 +47,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.2.0", + "google-gax": "^2.9.2", "is": "^3.3.0", "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 5aa13036dd5..509a4005504 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -121,8 +121,10 @@ export class DatastoreAdminClient { /** * Construct an instance of DatastoreAdminClient. * - * @param {object} [options] - The configuration object. See the subsequent - * parameters for more details. + * @param {object} [options] - The configuration object. + * The options accepted by the constructor are described in detail + * in [this document](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#creating-the-client-instance). + * The common options are: * @param {object} [options.credentials] - Credentials object. * @param {string} [options.credentials.client_email] * @param {string} [options.credentials.private_key] @@ -142,42 +144,33 @@ export class DatastoreAdminClient { * your project ID will be detected automatically. * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. + * @param {gax.ClientConfig} [options.clientConfig] - client configuration override. + * TODO(@alexander-fenster): link to gax documentation. + * @param {boolean} fallback - Use HTTP fallback mode. + * In fallback mode, a special browser-compatible transport implementation is used + * instead of gRPC transport. In browser context (if the `window` object is defined) + * the fallback mode is enabled automatically; set `options.fallback` to `false` + * if you need to override this behavior. */ - constructor(opts?: ClientOptions) { - // Ensure that options include the service address and port. + // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreAdminClient; const servicePath = - opts && opts.servicePath - ? opts.servicePath - : opts && opts.apiEndpoint - ? opts.apiEndpoint - : staticMembers.servicePath; - const port = opts && opts.port ? opts.port : staticMembers.port; + opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + const port = opts?.port || staticMembers.port; + const clientConfig = opts?.clientConfig ?? {}; + const fallback = opts?.fallback ?? typeof window !== 'undefined'; + opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); - if (!opts) { - opts = {servicePath, port}; + // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. + if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { + opts['scopes'] = staticMembers.scopes; } - opts.servicePath = opts.servicePath || servicePath; - opts.port = opts.port || port; - - // users can override the config from client side, like retry codes name. - // The detailed structure of the clientConfig can be found here: https://github.com/googleapis/gax-nodejs/blob/master/src/gax.ts#L546 - // The way to override client config for Showcase API: - // - // const customConfig = {"interfaces": {"google.showcase.v1beta1.Echo": {"methods": {"Echo": {"retry_codes_name": "idempotent", "retry_params_name": "default"}}}}} - // const showcaseClient = new showcaseClient({ projectId, customConfig }); - opts.clientConfig = opts.clientConfig || {}; - // If we're running in browser, it's OK to omit `fallback` since - // google-gax has `browser` field in its `package.json`. - // For Electron (which does not respect `browser` field), - // pass `{fallback: true}` to the DatastoreAdminClient constructor. + // Choose either gRPC or proto-over-HTTP implementation of google-gax. this._gaxModule = opts.fallback ? gax.fallback : gax; - // Create a `gaxGrpc` object, with any grpc-specific options - // sent to the client. - opts.scopes = (this.constructor as typeof DatastoreAdminClient).scopes; + // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. this._gaxGrpc = new this._gaxModule.GrpcClient(opts); // Save options to use in initialize() method. @@ -186,6 +179,11 @@ export class DatastoreAdminClient { // Save the auth object to the client, for use by other methods. this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + // Set the default scopes in auth client if needed. + if (servicePath === staticMembers.servicePath) { + this.auth.defaultScopes = staticMembers.scopes; + } + // Determine the client header string. const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process !== 'undefined' && 'versions' in process) { @@ -353,6 +351,7 @@ export class DatastoreAdminClient { /** * The DNS address for this API service. + * @returns {string} The DNS address for this service. */ static get servicePath() { return 'datastore.googleapis.com'; @@ -361,6 +360,7 @@ export class DatastoreAdminClient { /** * The DNS address for this API service - same as servicePath(), * exists for compatibility reasons. + * @returns {string} The DNS address for this service. */ static get apiEndpoint() { return 'datastore.googleapis.com'; @@ -368,6 +368,7 @@ export class DatastoreAdminClient { /** * The port for this API service. + * @returns {number} The default port for this service. */ static get port() { return 443; @@ -376,6 +377,7 @@ export class DatastoreAdminClient { /** * The scopes needed to make gRPC calls for every method defined * in this service. + * @returns {string[]} List of default scopes. */ static get scopes() { return [ @@ -388,8 +390,7 @@ export class DatastoreAdminClient { getProjectId(callback: Callback): void; /** * Return the project ID used by this class. - * @param {function(Error, string)} callback - the callback to - * be called with the current project Id. + * @returns {Promise} A promise that resolves to string containing the project ID. */ getProjectId( callback?: Callback @@ -444,7 +445,11 @@ export class DatastoreAdminClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [Index]{@link google.datastore.admin.v1.Index}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.getIndex(request); */ getIndex( request: protos.google.datastore.admin.v1.IGetIndexRequest, @@ -563,8 +568,15 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [Operation]{@link google.longrunning.Operation}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const [operation] = await client.exportEntities(request); + * const [response] = await operation.promise(); */ exportEntities( request: protos.google.datastore.admin.v1.IExportEntitiesRequest, @@ -616,18 +628,19 @@ export class DatastoreAdminClient { return this.innerApiCalls.exportEntities(request, options, callback); } /** - * Check the status of the long running operation returned by the exportEntities() method. + * Check the status of the long running operation returned by `exportEntities()`. * @param {String} name * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * - * @example: - * const decodedOperation = await checkExportEntitiesProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const decodedOperation = await checkExportEntitiesProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); */ async checkExportEntitiesProgress( name: string @@ -722,8 +735,15 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [Operation]{@link google.longrunning.Operation}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const [operation] = await client.importEntities(request); + * const [response] = await operation.promise(); */ importEntities( request: protos.google.datastore.admin.v1.IImportEntitiesRequest, @@ -775,18 +795,19 @@ export class DatastoreAdminClient { return this.innerApiCalls.importEntities(request, options, callback); } /** - * Check the status of the long running operation returned by the importEntities() method. + * Check the status of the long running operation returned by `importEntities()`. * @param {String} name * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * - * @example: - * const decodedOperation = await checkImportEntitiesProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const decodedOperation = await checkImportEntitiesProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); */ async checkImportEntitiesProgress( name: string @@ -856,19 +877,14 @@ export class DatastoreAdminClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is Array of [Index]{@link google.datastore.admin.v1.Index}. - * The client library support auto-pagination by default: it will call the API as many + * The client library will perform auto-pagination by default: it will call the API as many * times as needed and will merge results from all the pages into this array. - * - * When autoPaginate: false is specified through options, the array has three elements. - * The first element is Array of [Index]{@link google.datastore.admin.v1.Index} that corresponds to - * the one page received from the API server. - * If the second element is not null it contains the request object of type [ListIndexesRequest]{@link google.datastore.admin.v1.ListIndexesRequest} - * that can be used to obtain the next page of the results. - * If it is null, the next page does not exist. - * The third element contains the raw response received from the API server. Its type is - * [ListIndexesResponse]{@link google.datastore.admin.v1.ListIndexesResponse}. - * - * The promise has a method named "cancel" which cancels the ongoing API call. + * Note that it can affect your quota. + * We recommend using `listIndexesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * for more details and examples. */ listIndexes( request: protos.google.datastore.admin.v1.IListIndexesRequest, @@ -914,18 +930,7 @@ export class DatastoreAdminClient { } /** - * Equivalent to {@link listIndexes}, but returns a NodeJS Stream object. - * - * This fetches the paged responses for {@link listIndexes} continuously - * and invokes the callback registered for 'data' event for each element in the - * responses. - * - * The returned object has 'end' method when no more elements are required. - * - * autoPaginate option will be ignored. - * - * @see {@link https://nodejs.org/api/stream.html} - * + * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object. * @param {Object} request * The request object that will be sent. * @param {string} request.projectId @@ -940,6 +945,13 @@ export class DatastoreAdminClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Stream} * An object stream which emits an object representing [Index]{@link google.datastore.admin.v1.Index} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listIndexesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * for more details and examples. */ listIndexesStream( request?: protos.google.datastore.admin.v1.IListIndexesRequest, @@ -964,10 +976,9 @@ export class DatastoreAdminClient { } /** - * Equivalent to {@link listIndexes}, but returns an iterable object. - * - * for-await-of syntax is used with the iterable to recursively get response element on-demand. + * Equivalent to `listIndexes`, but returns an iterable object. * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. * @param {Object} request * The request object that will be sent. * @param {string} request.projectId @@ -981,7 +992,18 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Object} - * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * An iterable Object that allows [async iteration](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols). + * When you iterate the returned iterable, each element will be an object representing + * [Index]{@link google.datastore.admin.v1.Index}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * for more details and examples. + * @example + * const iterable = client.listIndexesAsync(request); + * for await (const response of iterable) { + * // process response + * } */ listIndexesAsync( request?: protos.google.datastore.admin.v1.IListIndexesRequest, @@ -1007,9 +1029,10 @@ export class DatastoreAdminClient { } /** - * Terminate the GRPC channel and close the client. + * Terminate the gRPC channel and close the client. * * The client will no longer be usable and all future behavior is undefined. + * @returns {Promise} A promise that resolves when the client is closed. */ close(): Promise { this.initialize(); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 4739575d12b..1f990a798df 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -56,8 +56,10 @@ export class DatastoreClient { /** * Construct an instance of DatastoreClient. * - * @param {object} [options] - The configuration object. See the subsequent - * parameters for more details. + * @param {object} [options] - The configuration object. + * The options accepted by the constructor are described in detail + * in [this document](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#creating-the-client-instance). + * The common options are: * @param {object} [options.credentials] - Credentials object. * @param {string} [options.credentials.client_email] * @param {string} [options.credentials.private_key] @@ -77,42 +79,33 @@ export class DatastoreClient { * your project ID will be detected automatically. * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. + * @param {gax.ClientConfig} [options.clientConfig] - client configuration override. + * TODO(@alexander-fenster): link to gax documentation. + * @param {boolean} fallback - Use HTTP fallback mode. + * In fallback mode, a special browser-compatible transport implementation is used + * instead of gRPC transport. In browser context (if the `window` object is defined) + * the fallback mode is enabled automatically; set `options.fallback` to `false` + * if you need to override this behavior. */ - constructor(opts?: ClientOptions) { - // Ensure that options include the service address and port. + // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreClient; const servicePath = - opts && opts.servicePath - ? opts.servicePath - : opts && opts.apiEndpoint - ? opts.apiEndpoint - : staticMembers.servicePath; - const port = opts && opts.port ? opts.port : staticMembers.port; + opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + const port = opts?.port || staticMembers.port; + const clientConfig = opts?.clientConfig ?? {}; + const fallback = opts?.fallback ?? typeof window !== 'undefined'; + opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); - if (!opts) { - opts = {servicePath, port}; + // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. + if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { + opts['scopes'] = staticMembers.scopes; } - opts.servicePath = opts.servicePath || servicePath; - opts.port = opts.port || port; - - // users can override the config from client side, like retry codes name. - // The detailed structure of the clientConfig can be found here: https://github.com/googleapis/gax-nodejs/blob/master/src/gax.ts#L546 - // The way to override client config for Showcase API: - // - // const customConfig = {"interfaces": {"google.showcase.v1beta1.Echo": {"methods": {"Echo": {"retry_codes_name": "idempotent", "retry_params_name": "default"}}}}} - // const showcaseClient = new showcaseClient({ projectId, customConfig }); - opts.clientConfig = opts.clientConfig || {}; - // If we're running in browser, it's OK to omit `fallback` since - // google-gax has `browser` field in its `package.json`. - // For Electron (which does not respect `browser` field), - // pass `{fallback: true}` to the DatastoreClient constructor. + // Choose either gRPC or proto-over-HTTP implementation of google-gax. this._gaxModule = opts.fallback ? gax.fallback : gax; - // Create a `gaxGrpc` object, with any grpc-specific options - // sent to the client. - opts.scopes = (this.constructor as typeof DatastoreClient).scopes; + // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. this._gaxGrpc = new this._gaxModule.GrpcClient(opts); // Save options to use in initialize() method. @@ -121,6 +114,11 @@ export class DatastoreClient { // Save the auth object to the client, for use by other methods. this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + // Set the default scopes in auth client if needed. + if (servicePath === staticMembers.servicePath) { + this.auth.defaultScopes = staticMembers.scopes; + } + // Determine the client header string. const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process !== 'undefined' && 'versions' in process) { @@ -235,6 +233,7 @@ export class DatastoreClient { /** * The DNS address for this API service. + * @returns {string} The DNS address for this service. */ static get servicePath() { return 'datastore.googleapis.com'; @@ -243,6 +242,7 @@ export class DatastoreClient { /** * The DNS address for this API service - same as servicePath(), * exists for compatibility reasons. + * @returns {string} The DNS address for this service. */ static get apiEndpoint() { return 'datastore.googleapis.com'; @@ -250,6 +250,7 @@ export class DatastoreClient { /** * The port for this API service. + * @returns {number} The default port for this service. */ static get port() { return 443; @@ -258,6 +259,7 @@ export class DatastoreClient { /** * The scopes needed to make gRPC calls for every method defined * in this service. + * @returns {string[]} List of default scopes. */ static get scopes() { return [ @@ -270,8 +272,7 @@ export class DatastoreClient { getProjectId(callback: Callback): void; /** * Return the project ID used by this class. - * @param {function(Error, string)} callback - the callback to - * be called with the current project Id. + * @returns {Promise} A promise that resolves to string containing the project ID. */ getProjectId( callback?: Callback @@ -328,7 +329,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.lookup(request); */ lookup( request: protos.google.datastore.v1.ILookupRequest, @@ -419,7 +424,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.runQuery(request); */ runQuery( request: protos.google.datastore.v1.IRunQueryRequest, @@ -501,7 +510,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.beginTransaction(request); */ beginTransaction( request: protos.google.datastore.v1.IBeginTransactionRequest, @@ -604,7 +617,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.commit(request); */ commit( request: protos.google.datastore.v1.ICommitRequest, @@ -687,7 +704,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.rollback(request); */ rollback( request: protos.google.datastore.v1.IRollbackRequest, @@ -771,7 +792,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.allocateIds(request); */ allocateIds( request: protos.google.datastore.v1.IAllocateIdsRequest, @@ -857,7 +882,11 @@ export class DatastoreClient { * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example + * const [response] = await client.reserveIds(request); */ reserveIds( request: protos.google.datastore.v1.IReserveIdsRequest, @@ -901,9 +930,10 @@ export class DatastoreClient { } /** - * Terminate the GRPC channel and close the client. + * Terminate the gRPC channel and close the client. * * The client will no longer be usable and all future behavior is undefined. + * @returns {Promise} A promise that resolves when the client is closed. */ close(): Promise { this.initialize(); diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index a4373c14ec1..37cda3d1ce4 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,23 +3,15 @@ { "git": { "name": ".", - "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "8ec44df602d92649a34a99d20556d901c463061c" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "4c5071b615d96ef9dfd6a63d8429090f1f2872bb", - "internalRef": "327369997" + "remote": "git@github.com:googleapis/nodejs-datastore.git", + "sha": "e6473b76a8df8a95d2985728781bba924f7dcba7" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "ba9918cd22874245b55734f57470c719b577e591" + "sha": "1f1148d3c7a7a52f0c98077f976bd9b3c948ee2b" } } ], @@ -96,6 +88,7 @@ "README.md", "api-extractor.json", "linkinator.config.json", + "package-lock.json.1585799656", "protos/google/datastore/admin/v1/datastore_admin.proto", "protos/google/datastore/admin/v1/index.proto", "protos/google/datastore/v1/datastore.proto", @@ -106,6 +99,7 @@ "protos/protos.json", "renovate.json", "samples/README.md", + "samples/package-lock.json.4106555370", "src/v1/datastore_admin_client.ts", "src/v1/datastore_admin_client_config.json", "src/v1/datastore_admin_proto_list.json", diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py index 4cda3c494be..dd1f17bf221 100644 --- a/handwritten/nodejs-datastore/synth.py +++ b/handwritten/nodejs-datastore/synth.py @@ -29,6 +29,7 @@ system_test_files = ['system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] for file in system_test_files: s.replace(file, 'DatastoreClient', 'Datastore') + s.replace(file, 'client.close', '// client.close'); # does not work with the manual layer common_templates = gcp.CommonTemplates() templates = common_templates.node_library(source_location="build/src") s.copy(templates) diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index f30742fb116..6dfcf276fde 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -18,8 +18,15 @@ import {Datastore} from '@google-cloud/datastore'; +// check that the client class type name can be used +function doStuffWithDatastore(client: Datastore) { + // client.close(); +} + function main() { - new Datastore(); + // check that the client instance can be created + const datastoreClient = new Datastore(); + doStuffWithDatastore(datastoreClient); } main(); diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 4c1ba3eb79a..39d90f771de 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -20,32 +20,32 @@ import {packNTest} from 'pack-n-play'; import {readFileSync} from 'fs'; import {describe, it} from 'mocha'; -describe('typescript consumer tests', () => { - it('should have correct type signature for typescript users', async function () { +describe('📦 pack-n-play test', () => { + it('TypeScript code', async function () { this.timeout(300000); const options = { - packageDir: process.cwd(), // path to your module. + packageDir: process.cwd(), sample: { - description: 'typescript based user can use the type definitions', + description: 'TypeScript user can use the type definitions', ts: readFileSync( './system-test/fixtures/sample/src/index.ts' ).toString(), }, }; - await packNTest(options); // will throw upon error. + await packNTest(options); }); - it('should have correct type signature for javascript users', async function () { + it('JavaScript code', async function () { this.timeout(300000); const options = { - packageDir: process.cwd(), // path to your module. + packageDir: process.cwd(), sample: { - description: 'typescript based user can use the type definitions', + description: 'JavaScript user can use the library', ts: readFileSync( './system-test/fixtures/sample/src/index.js' ).toString(), }, }; - await packNTest(options); // will throw upon error. + await packNTest(options); }); }); From b26cdf8d2016472b48f4a2be45d9f76de0927e93 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Mon, 9 Nov 2020 06:51:24 -0800 Subject: [PATCH 590/820] feat: export Key and Entity (#749) fixes #568 --- handwritten/nodejs-datastore/src/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 69240741baa..4decd7c8919 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -42,6 +42,9 @@ const pumpify = require('pumpify'); import {Transform} from 'stream'; import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; +import Key = entity.Key; +export {Entity, Key}; + import { GetIndexesCallback, GetIndexesOptions, From 928d8bc4160847e13377d7c2601fd8fac6ac2f47 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 11:01:18 -0500 Subject: [PATCH 591/820] chore: release 6.3.0 (#753) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index fb68e74cabc..9bd1e8a5a39 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.3.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.2.0...v6.3.0) (2020-11-09) + + +### Features + +* export Key and Entity ([#749](https://www.github.com/googleapis/nodejs-datastore/issues/749)) ([f4c8d0b](https://www.github.com/googleapis/nodejs-datastore/commit/f4c8d0b9cf172a39fbe9ce1906775418d16c1852)), closes [#568](https://www.github.com/googleapis/nodejs-datastore/issues/568) + + +### Bug Fixes + +* do not modify options object, use defaultScopes ([#751](https://www.github.com/googleapis/nodejs-datastore/issues/751)) ([07a77fe](https://www.github.com/googleapis/nodejs-datastore/commit/07a77fe0f69aecb378c965f403226b29fde57360)) + ## [6.2.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.1.1...v6.2.0) (2020-10-08) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 397faabe7f8..9409ad6bba0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.2.0", + "version": "6.3.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index efe9ffe9da7..6b07a83bdba 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.2.0", + "@google-cloud/datastore": "^6.3.0", "sinon": "^9.0.0" }, "devDependencies": { From 1e1ffb4c0746bec6c3a3e78d7895dbcf0247c648 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 19 Nov 2020 17:32:38 +0100 Subject: [PATCH 592/820] chore(deps): update dependency gts to v3 (#761) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9409ad6bba0..98486ebfa89 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -67,7 +67,7 @@ "@types/sinon": "^9.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", - "gts": "^2.0.0", + "gts": "^3.0.0", "js-yaml": "^3.14.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", From 4f348d05dc9e54f421893565f592cccbc74314e6 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 19 Nov 2020 10:37:29 -0800 Subject: [PATCH 593/820] refactor: use "value is" to propagate type (#758) --- handwritten/nodejs-datastore/src/entity.ts | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 56d2e675750..2ae14ed79dc 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -83,7 +83,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsDouble(value?: {}) { + export function isDsDouble(value?: {}): value is entity.Double { return value instanceof entity.Double; } @@ -95,7 +95,8 @@ export namespace entity { * @returns {boolean} */ export function isDsDoubleLike(value: unknown) { - const maybeDsDouble = value as Double; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const maybeDsDouble = value as any; return ( isDsDouble(maybeDsDouble) || (is.object(maybeDsDouble) && @@ -198,7 +199,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsInt(value?: {}) { + export function isDsInt(value?: {}): value is entity.Int { return value instanceof entity.Int; } @@ -210,7 +211,8 @@ export namespace entity { * @returns {boolean} */ export function isDsIntLike(value: unknown) { - const maybeDsInt = value as Int; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const maybeDsInt = value as any; return ( isDsInt(maybeDsInt) || (is.object(maybeDsInt) && @@ -264,7 +266,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsGeoPoint(value?: {}) { + export function isDsGeoPoint(value?: {}): value is entity.GeoPoint { return value instanceof entity.GeoPoint; } @@ -429,7 +431,7 @@ export namespace entity { * @param {*} value * @returns {boolean} */ - export function isDsKey(value?: {}) { + export function isDsKey(value?: {}): value is entity.Key { return value instanceof entity.Key; } @@ -596,17 +598,17 @@ export namespace entity { } if (isDsInt(value)) { - valueProto.integerValue = (value as Int).value; + valueProto.integerValue = value.value; return valueProto; } if (isDsDouble(value)) { - valueProto.doubleValue = (value as Double).value; + valueProto.doubleValue = value.value; return valueProto; } if (isDsGeoPoint(value)) { - valueProto.geoPointValue = (value as GeoPoint).value; + valueProto.geoPointValue = value.value; return valueProto; } @@ -1390,9 +1392,7 @@ export namespace entity { */ convertToBuffer_(val: string): Buffer { val = val.replace(/-/g, '+').replace(/_/g, '/'); - while (val.length % 4) { - val += '='; - } + val += '='.repeat(val.length % 4); return Buffer.from(val, 'base64'); } From ae819e7c60fe4204194913055c87068ccc1b0f85 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 19 Nov 2020 19:57:01 +0100 Subject: [PATCH 594/820] chore(deps): update dependency webpack to v5 (#762) --- handwritten/nodejs-datastore/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 98486ebfa89..1afa5480252 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -81,7 +81,6 @@ "sinon": "^9.0.1", "ts-loader": "^8.0.0", "typescript": "^3.8.3", - "webpack": "^4.42.0", "webpack-cli": "^3.3.11" }, "engines": { From fcc855e7a080cc3605e2cff4e21c865cc85e2c36 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Wed, 25 Nov 2020 09:03:51 -0800 Subject: [PATCH 595/820] fix: storing an empty Buffer (#767) --- handwritten/nodejs-datastore/src/entity.ts | 5 ++++- .../nodejs-datastore/system-test/datastore.ts | 14 ++++++++++++++ handwritten/nodejs-datastore/test/entity.ts | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 2ae14ed79dc..a8c812f8fc1 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -629,7 +629,10 @@ export namespace entity { } if (value instanceof Buffer) { - valueProto.blobValue = value; + // Convert the buffer to a base 64 string to workaround a bug of + // protobufs encoding empty buffer. + // See https://github.com/googleapis/nodejs-datastore/issues/755 + valueProto.blobValue = value.toString('base64'); return valueProto; } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index b2758df00c0..f9398ffb92c 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -326,6 +326,20 @@ describe('Datastore', () => { await datastore.delete(datastore.key(['Post', assignedId as string])); }); + it('should save/get/delete an empty buffer', async () => { + const postKey = datastore.key(['Post']); + const data = { + buf: Buffer.from([]), + }; + await datastore.save({key: postKey, data}); + const assignedId = postKey.id; + assert(assignedId); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(datastore.key(['Post', assignedId as string])); + }); + it('should save/get/delete with a generated key id', async () => { const postKey = datastore.key('Post'); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 12e0c513822..84ca5b3dd0b 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -849,7 +849,7 @@ describe('entity', () => { const value = Buffer.from('Hi'); const expectedValueProto = { - blobValue: value, + blobValue: value.toString('base64'), }; assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); From e6b57e9b1d9173c8556965ca2f03fdf702589e17 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 25 Nov 2020 09:14:05 -0800 Subject: [PATCH 596/820] fix(browser): check for fetch on window (#768) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/4c7dd1d3-21d2-4d5c-80cf-c7fc00653dca/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/15013eff642a7e7e855aed5a29e6e83c39beba2a --- handwritten/nodejs-datastore/README.md | 2 +- .../nodejs-datastore/protos/protos.json | 196 ++++++++++++++++-- .../src/v1/datastore_admin_client.ts | 60 +++--- .../src/v1/datastore_client.ts | 86 ++++---- handwritten/nodejs-datastore/synth.metadata | 93 +-------- 5 files changed, 274 insertions(+), 163 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index afd585e8cec..4ed306f6d13 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -128,7 +128,7 @@ Our client libraries follow the [Node.js release schedule](https://nodejs.org/en Libraries are compatible with all current _active_ and _maintenance_ versions of Node.js. -Client libraries targetting some end-of-life versions of Node.js are available, and +Client libraries targeting some end-of-life versions of Node.js are available, and can be installed via npm [dist-tags](https://docs.npmjs.com/cli/dist-tag). The dist-tags follow the naming convention `legacy-(version)`. diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 69e5ece463b..de351e54df8 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -31,7 +31,24 @@ "(google.api.method_signature)": "project_id,labels,entity_filter,output_url_prefix", "(google.longrunning.operation_info).response_type": "ExportEntitiesResponse", "(google.longrunning.operation_info).metadata_type": "ExportEntitiesMetadata" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:export", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,labels,entity_filter,output_url_prefix" + }, + { + "(google.longrunning.operation_info)": { + "response_type": "ExportEntitiesResponse", + "metadata_type": "ExportEntitiesMetadata" + } + } + ] }, "ImportEntities": { "requestType": "ImportEntitiesRequest", @@ -42,21 +59,52 @@ "(google.api.method_signature)": "project_id,labels,input_url,entity_filter", "(google.longrunning.operation_info).response_type": "google.protobuf.Empty", "(google.longrunning.operation_info).metadata_type": "ImportEntitiesMetadata" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:import", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,labels,input_url,entity_filter" + }, + { + "(google.longrunning.operation_info)": { + "response_type": "google.protobuf.Empty", + "metadata_type": "ImportEntitiesMetadata" + } + } + ] }, "GetIndex": { "requestType": "GetIndexRequest", "responseType": "Index", "options": { "(google.api.http).get": "/v1/projects/{project_id}/indexes/{index_id}" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/projects/{project_id}/indexes/{index_id}" + } + } + ] }, "ListIndexes": { "requestType": "ListIndexesRequest", "responseType": "ListIndexesResponse", "options": { "(google.api.http).get": "/v1/projects/{project_id}/indexes" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/projects/{project_id}/indexes" + } + } + ] } } }, @@ -423,7 +471,18 @@ "(google.api.http).post": "/v1/projects/{project_id}:lookup", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id,read_options,keys" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:lookup", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,read_options,keys" + } + ] }, "RunQuery": { "requestType": "RunQueryRequest", @@ -431,7 +490,15 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:runQuery", "(google.api.http).body": "*" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:runQuery", + "body": "*" + } + } + ] }, "BeginTransaction": { "requestType": "BeginTransactionRequest", @@ -440,7 +507,18 @@ "(google.api.http).post": "/v1/projects/{project_id}:beginTransaction", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:beginTransaction", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id" + } + ] }, "Commit": { "requestType": "CommitRequest", @@ -449,7 +527,21 @@ "(google.api.http).post": "/v1/projects/{project_id}:commit", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id,mode,mutations" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:commit", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,mode,transaction,mutations" + }, + { + "(google.api.method_signature)": "project_id,mode,mutations" + } + ] }, "Rollback": { "requestType": "RollbackRequest", @@ -458,7 +550,18 @@ "(google.api.http).post": "/v1/projects/{project_id}:rollback", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id,transaction" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:rollback", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,transaction" + } + ] }, "AllocateIds": { "requestType": "AllocateIdsRequest", @@ -467,7 +570,18 @@ "(google.api.http).post": "/v1/projects/{project_id}:allocateIds", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id,keys" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:allocateIds", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,keys" + } + ] }, "ReserveIds": { "requestType": "ReserveIdsRequest", @@ -476,7 +590,18 @@ "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", "(google.api.http).body": "*", "(google.api.method_signature)": "project_id,keys" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:reserveIds", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,keys" + } + ] } } }, @@ -2487,7 +2612,17 @@ "options": { "(google.api.http).get": "/v1/{name=operations}", "(google.api.method_signature)": "name,filter" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{name=operations}" + } + }, + { + "(google.api.method_signature)": "name,filter" + } + ] }, "GetOperation": { "requestType": "GetOperationRequest", @@ -2495,7 +2630,17 @@ "options": { "(google.api.http).get": "/v1/{name=operations/**}", "(google.api.method_signature)": "name" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{name=operations/**}" + } + }, + { + "(google.api.method_signature)": "name" + } + ] }, "DeleteOperation": { "requestType": "DeleteOperationRequest", @@ -2503,7 +2648,17 @@ "options": { "(google.api.http).delete": "/v1/{name=operations/**}", "(google.api.method_signature)": "name" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{name=operations/**}" + } + }, + { + "(google.api.method_signature)": "name" + } + ] }, "CancelOperation": { "requestType": "CancelOperationRequest", @@ -2512,7 +2667,18 @@ "(google.api.http).post": "/v1/{name=operations/**}:cancel", "(google.api.http).body": "*", "(google.api.method_signature)": "name" - } + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{name=operations/**}:cancel", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name" + } + ] }, "WaitOperation": { "requestType": "WaitOperationRequest", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 509a4005504..266aea59332 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -16,6 +16,7 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** +/* global window */ import * as gax from 'google-gax'; import { Callback, @@ -31,6 +32,11 @@ import * as path from 'path'; import {Transform} from 'stream'; import {RequestType} from 'google-gax/build/src/apitypes'; import * as protos from '../../protos/protos'; +/** + * Client JSON configuration object, loaded from + * `src/v1/datastore_admin_client_config.json`. + * This file defines retry strategy and timeouts for all API methods in this library. + */ import * as gapicConfig from './datastore_admin_client_config.json'; import {operationsProtos} from 'google-gax'; const version = require('../../../package.json').version; @@ -144,9 +150,9 @@ export class DatastoreAdminClient { * your project ID will be detected automatically. * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. - * @param {gax.ClientConfig} [options.clientConfig] - client configuration override. - * TODO(@alexander-fenster): link to gax documentation. - * @param {boolean} fallback - Use HTTP fallback mode. + * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. + * Follows the structure of {@link gapicConfig}. + * @param {boolean} [options.fallback] - Use HTTP fallback mode. * In fallback mode, a special browser-compatible transport implementation is used * instead of gRPC transport. In browser context (if the `window` object is defined) * the fallback mode is enabled automatically; set `options.fallback` to `false` @@ -159,7 +165,9 @@ export class DatastoreAdminClient { opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? typeof window !== 'undefined'; + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. @@ -407,7 +415,7 @@ export class DatastoreAdminClient { // ------------------- getIndex( request: protos.google.datastore.admin.v1.IGetIndexRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.admin.v1.IIndex, @@ -417,7 +425,7 @@ export class DatastoreAdminClient { >; getIndex( request: protos.google.datastore.admin.v1.IGetIndexRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.admin.v1.IIndex, protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, @@ -454,7 +462,7 @@ export class DatastoreAdminClient { getIndex( request: protos.google.datastore.admin.v1.IGetIndexRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.admin.v1.IIndex, protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined, @@ -473,12 +481,12 @@ export class DatastoreAdminClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -494,7 +502,7 @@ export class DatastoreAdminClient { exportEntities( request: protos.google.datastore.admin.v1.IExportEntitiesRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ LROperation< @@ -507,7 +515,7 @@ export class DatastoreAdminClient { >; exportEntities( request: protos.google.datastore.admin.v1.IExportEntitiesRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< LROperation< protos.google.datastore.admin.v1.IExportEntitiesResponse, @@ -581,7 +589,7 @@ export class DatastoreAdminClient { exportEntities( request: protos.google.datastore.admin.v1.IExportEntitiesRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< LROperation< protos.google.datastore.admin.v1.IExportEntitiesResponse, @@ -609,12 +617,12 @@ export class DatastoreAdminClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -666,7 +674,7 @@ export class DatastoreAdminClient { } importEntities( request: protos.google.datastore.admin.v1.IImportEntitiesRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ LROperation< @@ -679,7 +687,7 @@ export class DatastoreAdminClient { >; importEntities( request: protos.google.datastore.admin.v1.IImportEntitiesRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< LROperation< protos.google.protobuf.IEmpty, @@ -748,7 +756,7 @@ export class DatastoreAdminClient { importEntities( request: protos.google.datastore.admin.v1.IImportEntitiesRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< LROperation< protos.google.protobuf.IEmpty, @@ -776,12 +784,12 @@ export class DatastoreAdminClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -833,7 +841,7 @@ export class DatastoreAdminClient { } listIndexes( request: protos.google.datastore.admin.v1.IListIndexesRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.admin.v1.IIndex[], @@ -843,7 +851,7 @@ export class DatastoreAdminClient { >; listIndexes( request: protos.google.datastore.admin.v1.IListIndexesRequest, - options: gax.CallOptions, + options: CallOptions, callback: PaginationCallback< protos.google.datastore.admin.v1.IListIndexesRequest, protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, @@ -889,7 +897,7 @@ export class DatastoreAdminClient { listIndexes( request: protos.google.datastore.admin.v1.IListIndexesRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | PaginationCallback< protos.google.datastore.admin.v1.IListIndexesRequest, | protos.google.datastore.admin.v1.IListIndexesResponse @@ -910,12 +918,12 @@ export class DatastoreAdminClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -955,7 +963,7 @@ export class DatastoreAdminClient { */ listIndexesStream( request?: protos.google.datastore.admin.v1.IListIndexesRequest, - options?: gax.CallOptions + options?: CallOptions ): Transform { request = request || {}; options = options || {}; @@ -1007,7 +1015,7 @@ export class DatastoreAdminClient { */ listIndexesAsync( request?: protos.google.datastore.admin.v1.IListIndexesRequest, - options?: gax.CallOptions + options?: CallOptions ): AsyncIterable { request = request || {}; options = options || {}; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 1f990a798df..26e74e7108a 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -16,11 +16,17 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** +/* global window */ import * as gax from 'google-gax'; import {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; import * as path from 'path'; import * as protos from '../../protos/protos'; +/** + * Client JSON configuration object, loaded from + * `src/v1/datastore_client_config.json`. + * This file defines retry strategy and timeouts for all API methods in this library. + */ import * as gapicConfig from './datastore_client_config.json'; const version = require('../../../package.json').version; @@ -79,9 +85,9 @@ export class DatastoreClient { * your project ID will be detected automatically. * @param {string} [options.apiEndpoint] - The domain name of the * API remote host. - * @param {gax.ClientConfig} [options.clientConfig] - client configuration override. - * TODO(@alexander-fenster): link to gax documentation. - * @param {boolean} fallback - Use HTTP fallback mode. + * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. + * Follows the structure of {@link gapicConfig}. + * @param {boolean} [options.fallback] - Use HTTP fallback mode. * In fallback mode, a special browser-compatible transport implementation is used * instead of gRPC transport. In browser context (if the `window` object is defined) * the fallback mode is enabled automatically; set `options.fallback` to `false` @@ -94,7 +100,9 @@ export class DatastoreClient { opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? typeof window !== 'undefined'; + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. @@ -289,7 +297,7 @@ export class DatastoreClient { // ------------------- lookup( request: protos.google.datastore.v1.ILookupRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.ILookupResponse, @@ -299,7 +307,7 @@ export class DatastoreClient { >; lookup( request: protos.google.datastore.v1.ILookupRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.ILookupResponse, protos.google.datastore.v1.ILookupRequest | null | undefined, @@ -338,7 +346,7 @@ export class DatastoreClient { lookup( request: protos.google.datastore.v1.ILookupRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.ILookupResponse, protos.google.datastore.v1.ILookupRequest | null | undefined, @@ -357,12 +365,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -377,7 +385,7 @@ export class DatastoreClient { } runQuery( request: protos.google.datastore.v1.IRunQueryRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.IRunQueryResponse, @@ -387,7 +395,7 @@ export class DatastoreClient { >; runQuery( request: protos.google.datastore.v1.IRunQueryRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.IRunQueryResponse, protos.google.datastore.v1.IRunQueryRequest | null | undefined, @@ -433,7 +441,7 @@ export class DatastoreClient { runQuery( request: protos.google.datastore.v1.IRunQueryRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.IRunQueryResponse, protos.google.datastore.v1.IRunQueryRequest | null | undefined, @@ -452,12 +460,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -472,7 +480,7 @@ export class DatastoreClient { } beginTransaction( request: protos.google.datastore.v1.IBeginTransactionRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.IBeginTransactionResponse, @@ -482,7 +490,7 @@ export class DatastoreClient { >; beginTransaction( request: protos.google.datastore.v1.IBeginTransactionRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.IBeginTransactionResponse, protos.google.datastore.v1.IBeginTransactionRequest | null | undefined, @@ -519,7 +527,7 @@ export class DatastoreClient { beginTransaction( request: protos.google.datastore.v1.IBeginTransactionRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.IBeginTransactionResponse, | protos.google.datastore.v1.IBeginTransactionRequest @@ -540,12 +548,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -560,7 +568,7 @@ export class DatastoreClient { } commit( request: protos.google.datastore.v1.ICommitRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.ICommitResponse, @@ -570,7 +578,7 @@ export class DatastoreClient { >; commit( request: protos.google.datastore.v1.ICommitRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.ICommitResponse, protos.google.datastore.v1.ICommitRequest | null | undefined, @@ -626,7 +634,7 @@ export class DatastoreClient { commit( request: protos.google.datastore.v1.ICommitRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.ICommitResponse, protos.google.datastore.v1.ICommitRequest | null | undefined, @@ -645,12 +653,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -665,7 +673,7 @@ export class DatastoreClient { } rollback( request: protos.google.datastore.v1.IRollbackRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.IRollbackResponse, @@ -675,7 +683,7 @@ export class DatastoreClient { >; rollback( request: protos.google.datastore.v1.IRollbackRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.IRollbackResponse, protos.google.datastore.v1.IRollbackRequest | null | undefined, @@ -713,7 +721,7 @@ export class DatastoreClient { rollback( request: protos.google.datastore.v1.IRollbackRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.IRollbackResponse, protos.google.datastore.v1.IRollbackRequest | null | undefined, @@ -732,12 +740,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -752,7 +760,7 @@ export class DatastoreClient { } allocateIds( request: protos.google.datastore.v1.IAllocateIdsRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.IAllocateIdsResponse, @@ -762,7 +770,7 @@ export class DatastoreClient { >; allocateIds( request: protos.google.datastore.v1.IAllocateIdsRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.IAllocateIdsResponse, protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, @@ -801,7 +809,7 @@ export class DatastoreClient { allocateIds( request: protos.google.datastore.v1.IAllocateIdsRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.IAllocateIdsResponse, protos.google.datastore.v1.IAllocateIdsRequest | null | undefined, @@ -820,12 +828,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; @@ -840,7 +848,7 @@ export class DatastoreClient { } reserveIds( request: protos.google.datastore.v1.IReserveIdsRequest, - options?: gax.CallOptions + options?: CallOptions ): Promise< [ protos.google.datastore.v1.IReserveIdsResponse, @@ -850,7 +858,7 @@ export class DatastoreClient { >; reserveIds( request: protos.google.datastore.v1.IReserveIdsRequest, - options: gax.CallOptions, + options: CallOptions, callback: Callback< protos.google.datastore.v1.IReserveIdsResponse, protos.google.datastore.v1.IReserveIdsRequest | null | undefined, @@ -891,7 +899,7 @@ export class DatastoreClient { reserveIds( request: protos.google.datastore.v1.IReserveIdsRequest, optionsOrCallback?: - | gax.CallOptions + | CallOptions | Callback< protos.google.datastore.v1.IReserveIdsResponse, protos.google.datastore.v1.IReserveIdsRequest | null | undefined, @@ -910,12 +918,12 @@ export class DatastoreClient { ] > | void { request = request || {}; - let options: gax.CallOptions; + let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; } else { - options = optionsOrCallback as gax.CallOptions; + options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 37cda3d1ce4..0e11cd4ec74 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -3,15 +3,23 @@ { "git": { "name": ".", - "remote": "git@github.com:googleapis/nodejs-datastore.git", - "sha": "e6473b76a8df8a95d2985728781bba924f7dcba7" + "remote": "https://github.com/googleapis/nodejs-datastore.git", + "sha": "96ecdfa7b2b85e781803487680a4dd64b866b404" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "ebdbe9ab534486cf900700add1e129dff780b481", + "internalRef": "344172074" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "1f1148d3c7a7a52f0c98077f976bd9b3c948ee2b" + "sha": "15013eff642a7e7e855aed5a29e6e83c39beba2a" } } ], @@ -34,84 +42,5 @@ "generator": "bazel" } } - ], - "generatedFiles": [ - ".eslintignore", - ".eslintrc.json", - ".gitattributes", - ".github/ISSUE_TEMPLATE/bug_report.md", - ".github/ISSUE_TEMPLATE/feature_request.md", - ".github/ISSUE_TEMPLATE/support_request.md", - ".github/PULL_REQUEST_TEMPLATE.md", - ".github/release-please.yml", - ".github/workflows/ci.yaml", - ".gitignore", - ".jsdoc.js", - ".kokoro/.gitattributes", - ".kokoro/common.cfg", - ".kokoro/continuous/node10/common.cfg", - ".kokoro/continuous/node10/docs.cfg", - ".kokoro/continuous/node10/test.cfg", - ".kokoro/continuous/node12/common.cfg", - ".kokoro/continuous/node12/lint.cfg", - ".kokoro/continuous/node12/samples-test.cfg", - ".kokoro/continuous/node12/system-test.cfg", - ".kokoro/continuous/node12/test.cfg", - ".kokoro/docs.sh", - ".kokoro/lint.sh", - ".kokoro/populate-secrets.sh", - ".kokoro/presubmit/node10/common.cfg", - ".kokoro/presubmit/node12/common.cfg", - ".kokoro/presubmit/node12/samples-test.cfg", - ".kokoro/presubmit/node12/system-test.cfg", - ".kokoro/presubmit/node12/test.cfg", - ".kokoro/publish.sh", - ".kokoro/release/docs-devsite.cfg", - ".kokoro/release/docs-devsite.sh", - ".kokoro/release/docs.cfg", - ".kokoro/release/docs.sh", - ".kokoro/release/publish.cfg", - ".kokoro/samples-test.sh", - ".kokoro/system-test.sh", - ".kokoro/test.bat", - ".kokoro/test.sh", - ".kokoro/trampoline.sh", - ".kokoro/trampoline_v2.sh", - ".mocharc.js", - ".nycrc", - ".prettierignore", - ".prettierrc.js", - ".trampolinerc", - "CODE_OF_CONDUCT.md", - "CONTRIBUTING.md", - "LICENSE", - "README.md", - "api-extractor.json", - "linkinator.config.json", - "package-lock.json.1585799656", - "protos/google/datastore/admin/v1/datastore_admin.proto", - "protos/google/datastore/admin/v1/index.proto", - "protos/google/datastore/v1/datastore.proto", - "protos/google/datastore/v1/entity.proto", - "protos/google/datastore/v1/query.proto", - "protos/protos.d.ts", - "protos/protos.js", - "protos/protos.json", - "renovate.json", - "samples/README.md", - "samples/package-lock.json.4106555370", - "src/v1/datastore_admin_client.ts", - "src/v1/datastore_admin_client_config.json", - "src/v1/datastore_admin_proto_list.json", - "src/v1/datastore_client.ts", - "src/v1/datastore_client_config.json", - "src/v1/datastore_proto_list.json", - "system-test/fixtures/sample/src/index.js", - "system-test/fixtures/sample/src/index.ts", - "system-test/install.ts", - "test/gapic_datastore_admin_v1.ts", - "test/gapic_datastore_v1.ts", - "tsconfig.json", - "webpack.config.js" ] } \ No newline at end of file From 8f71e7d302a6e62ca1b39cd53dac1b2085da7254 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 25 Nov 2020 20:10:20 +0100 Subject: [PATCH 597/820] chore(deps): update dependency webpack-cli to v4 (#763) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1afa5480252..5f32e3185e7 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -81,7 +81,7 @@ "sinon": "^9.0.1", "ts-loader": "^8.0.0", "typescript": "^3.8.3", - "webpack-cli": "^3.3.11" + "webpack-cli": "^4.0.0" }, "engines": { "node": ">=10" From f2d341c375864dc26a6bb325c31911728db72a9d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 2 Dec 2020 09:59:49 -0800 Subject: [PATCH 598/820] chore: release 6.3.1 (#770) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Christopher Wilcox --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 9bd1e8a5a39..fc8c1d04ec1 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.3.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.3.0...v6.3.1) (2020-11-25) + + +### Bug Fixes + +* **browser:** check for fetch on window ([#768](https://www.github.com/googleapis/nodejs-datastore/issues/768)) ([282dc99](https://www.github.com/googleapis/nodejs-datastore/commit/282dc99bd78ff086f57fca1a22ce530d44784dd7)) +* storing an empty Buffer ([#767](https://www.github.com/googleapis/nodejs-datastore/issues/767)) ([cf88927](https://www.github.com/googleapis/nodejs-datastore/commit/cf88927998ada76614fbe500c6e59e0d81c1b78b)) + ## [6.3.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.2.0...v6.3.0) (2020-11-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5f32e3185e7..ba422b39c03 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.3.0", + "version": "6.3.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 6b07a83bdba..78e6f631ea9 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.3.0", + "@google-cloud/datastore": "^6.3.1", "sinon": "^9.0.0" }, "devDependencies": { From 67c5053eabe53f64bf7533436794d1429e8ca19e Mon Sep 17 00:00:00 2001 From: Lalji Kanjareeya <46327204+laljikanjareeya@users.noreply.github.com> Date: Thu, 3 Dec 2020 01:56:06 +0530 Subject: [PATCH 599/820] docs: expand geopoint example to show filtering (#771) Fixes #757 --- handwritten/nodejs-datastore/src/index.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 4decd7c8919..0f733702684 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1280,6 +1280,15 @@ class Datastore extends DatastoreRequest { * }; * * const geoPoint = datastore.geoPoint(coordinates); + * + * //- + * // List all companies that are located at 40.123 latitude + * // and -74.0447 longitude. + * //- + * const query = datastore.createQuery('Company'); + * const companyQuery = query + * .filter('geoPoint.latitude', datastore.double(40.123)) + * .filter('geoPoint.longitude', datastore.double(-74.0447)); */ static geoPoint(coordinates: entity.Coordinates) { return new entity.GeoPoint(coordinates); From ef5461fd408270a974cc445edb43d2ef1f596cd1 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 4 Dec 2020 08:58:20 -0800 Subject: [PATCH 600/820] chore: generate GAPIC metadata JSON file (#772) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/4dafeee7-014d-47f6-a950-0e8b4e9c606e/targets - [ ] To automatically regenerate this PR, check this box. PiperOrigin-RevId: 345596855 Source-Link: https://github.com/googleapis/googleapis/commit/d189e871205fea665a9648f7c4676f027495ccaf --- .../src/v1/gapic_metadata.json | 67 +++++++++++++++++++ handwritten/nodejs-datastore/synth.metadata | 6 +- 2 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/v1/gapic_metadata.json diff --git a/handwritten/nodejs-datastore/src/v1/gapic_metadata.json b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json new file mode 100644 index 00000000000..0564d17e0c7 --- /dev/null +++ b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json @@ -0,0 +1,67 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods", + "language": "typescript", + "protoPackage": "google.datastore.admin.v1", + "libraryPackage": "admin", + "services": { + "DatastoreAdmin": { + "clients": { + "grpc": { + "libraryClient": "DatastoreAdminClient", + "rpcs": { + "GetIndex": { + "methods": [ + "getIndex" + ] + }, + "ExportEntities": { + "methods": [ + "exportEntities" + ] + }, + "ImportEntities": { + "methods": [ + "importEntities" + ] + }, + "ListIndexes": { + "methods": [ + "listIndexes", + "listIndexesStream", + "listIndexesAsync" + ] + } + } + }, + "grpc-fallback": { + "libraryClient": "DatastoreAdminClient", + "rpcs": { + "GetIndex": { + "methods": [ + "getIndex" + ] + }, + "ExportEntities": { + "methods": [ + "exportEntities" + ] + }, + "ImportEntities": { + "methods": [ + "importEntities" + ] + }, + "ListIndexes": { + "methods": [ + "listIndexes", + "listIndexesStream", + "listIndexesAsync" + ] + } + } + } + } + } + } +} diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 0e11cd4ec74..a22c35e75d6 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,15 +4,15 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "96ecdfa7b2b85e781803487680a4dd64b866b404" + "sha": "4c765a11f93489a4e649ae20ba77eb0f3e725216" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "ebdbe9ab534486cf900700add1e129dff780b481", - "internalRef": "344172074" + "sha": "d189e871205fea665a9648f7c4676f027495ccaf", + "internalRef": "345596855" } }, { From aa9e0115ede2f96248bb9946a87103687a6cfbef Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 22 Dec 2020 11:46:07 -0800 Subject: [PATCH 601/820] docs: add instructions for authenticating for system tests (#776) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/cacd5a12-e156-415f-94a2-533984f6802a/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/363fe305e9ce34a6cd53951c6ee5f997094b54ee --- handwritten/nodejs-datastore/CONTRIBUTING.md | 14 ++++++++++++-- handwritten/nodejs-datastore/README.md | 3 +-- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/CONTRIBUTING.md b/handwritten/nodejs-datastore/CONTRIBUTING.md index f6c4cf010e3..27ec36b41f9 100644 --- a/handwritten/nodejs-datastore/CONTRIBUTING.md +++ b/handwritten/nodejs-datastore/CONTRIBUTING.md @@ -37,6 +37,14 @@ accept your pull requests. 1. Title your pull request following [Conventional Commits](https://www.conventionalcommits.org/) styling. 1. Submit a pull request. +### Before you begin + +1. [Select or create a Cloud Platform project][projects]. +1. [Enable the Google Cloud Datastore API][enable_api]. +1. [Set up authentication with a service account][auth] so you can access the + API from your local workstation. + + ## Running the tests 1. [Prepare your environment for Node.js setup][setup]. @@ -51,11 +59,9 @@ accept your pull requests. npm test # Run sample integration tests. - gcloud auth application-default login npm run samples-test # Run all system tests. - gcloud auth application-default login npm run system-test 1. Lint (and maybe fix) any changes: @@ -63,3 +69,7 @@ accept your pull requests. npm run fix [setup]: https://cloud.google.com/nodejs/docs/setup +[projects]: https://console.cloud.google.com/project +[billing]: https://support.google.com/cloud/answer/6293499#enable-billing +[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com +[auth]: https://cloud.google.com/docs/authentication/getting-started \ No newline at end of file diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 4ed306f6d13..cee01d3f49f 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -99,8 +99,7 @@ A workaround is available, provided by [@ohmpatel1997](https://github.com/ohmpat ## Samples -Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/master/samples) directory. The samples' `README.md` -has instructions for running the samples. +Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/master/samples) directory. Each sample's `README.md` has instructions for running its sample. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index a22c35e75d6..d7053f45dfb 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "4c765a11f93489a4e649ae20ba77eb0f3e725216" + "sha": "cf31ede03f0282f314a6b42f534a8bf69b76a036" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "15013eff642a7e7e855aed5a29e6e83c39beba2a" + "sha": "363fe305e9ce34a6cd53951c6ee5f997094b54ee" } } ], From b4e486302e4e76718f8ceea33b325781e833c1ef Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 1 Jan 2021 03:03:08 -0800 Subject: [PATCH 602/820] chore: update license headers (#777) --- handwritten/nodejs-datastore/.jsdoc.js | 4 ++-- handwritten/nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts | 2 +- handwritten/nodejs-datastore/src/v1/datastore_client.ts | 2 +- handwritten/nodejs-datastore/synth.metadata | 2 +- .../nodejs-datastore/system-test/fixtures/sample/src/index.js | 2 +- .../nodejs-datastore/system-test/fixtures/sample/src/index.ts | 2 +- handwritten/nodejs-datastore/system-test/install.ts | 2 +- handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts | 2 +- handwritten/nodejs-datastore/test/gapic_datastore_v1.ts | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 469ce79cae1..8bcf69b5cee 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2020 Google LLC', + copyright: 'Copyright 2021 Google LLC', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 4723709f99e..7ccff5887c2 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index d6eb4b402e0..4f517a8a10b 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 266aea59332..331c91945db 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 26e74e7108a..7f3fb0a9de9 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index d7053f45dfb..ffc90f5613e 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "cf31ede03f0282f314a6b42f534a8bf69b76a036" + "sha": "8bfa45b1b218d4f80e7425938ff3fa002b78455c" } }, { diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index 7808e112634..6575a6a7bf8 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 6dfcf276fde..1b82ede9176 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 39d90f771de..d2d61c0396f 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index e424f18e896..99eda0c1d27 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 58017d1ac04..894e236be09 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From e6d42b3347a0cbbbfcce8bae57ae601b73fd549e Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 6 Jan 2021 14:49:00 -0800 Subject: [PATCH 603/820] docs: update go link --- handwritten/nodejs-datastore/protos/protos.json | 2 +- handwritten/nodejs-datastore/synth.metadata | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index de351e54df8..723454a965d 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1516,7 +1516,7 @@ }, "protobuf": { "options": { - "go_package": "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor", + "go_package": "google.golang.org/protobuf/types/descriptorpb", "java_package": "com.google.protobuf", "java_outer_classname": "DescriptorProtos", "csharp_namespace": "Google.Protobuf.Reflection", diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index ffc90f5613e..c7673a31c0e 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "8bfa45b1b218d4f80e7425938ff3fa002b78455c" + "sha": "5222583f8efbb54229d5209943e014808f8389fd" } }, { From cfba0c51e5fadce1674a381bc5e452e24c8afb35 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 27 Jan 2021 08:44:07 -0800 Subject: [PATCH 604/820] refactor(nodejs): move build cop to flakybot (#785) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/0e11e365-f1b7-4b92-a9c3-48fa670eb1a0/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/57c23fa5705499a4181095ced81f0ee0933b64f6 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index c7673a31c0e..8c7aef63aaf 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "5222583f8efbb54229d5209943e014808f8389fd" + "sha": "b40e3be924fb0c23bc68c639f3db8c7caabb19f4" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "363fe305e9ce34a6cd53951c6ee5f997094b54ee" + "sha": "57c23fa5705499a4181095ced81f0ee0933b64f6" } } ], From 957698814f6c9d7a75e9b7dbc5b29b23cbb6f1ff Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Tue, 2 Feb 2021 17:52:31 -0800 Subject: [PATCH 605/820] chore: update CODEOWNERS config (#789) --- handwritten/nodejs-datastore/.repo-metadata.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index d108b355031..ded9c68d7eb 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -8,5 +8,6 @@ "language": "nodejs", "repo": "googleapis/nodejs-datastore", "distribution_name": "@google-cloud/datastore", - "api_id": "datastore.googleapis.com" -} \ No newline at end of file + "api_id": "datastore.googleapis.com", + "codeowner_team": "@googleapis/firestore-dpe" +} From 55a04401f666e69a60d4f55571c69c8f41dcb7ef Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 3 Feb 2021 18:06:09 -0800 Subject: [PATCH 606/820] build: adds UNORDERED_LIST enum (#790) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/b97795fd-83e4-446d-82df-a81e380dba2c/targets - [ ] To automatically regenerate this PR, check this box. --- handwritten/nodejs-datastore/protos/protos.d.ts | 3 ++- handwritten/nodejs-datastore/protos/protos.js | 7 +++++++ handwritten/nodejs-datastore/protos/protos.json | 3 ++- handwritten/nodejs-datastore/synth.metadata | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 7ccff5887c2..e9257af47ce 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -6091,7 +6091,8 @@ export namespace google { REQUIRED = 2, OUTPUT_ONLY = 3, INPUT_ONLY = 4, - IMMUTABLE = 5 + IMMUTABLE = 5, + UNORDERED_LIST = 6 } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 4f517a8a10b..3f67d1611a2 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -15242,6 +15242,7 @@ * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value * @property {number} INPUT_ONLY=4 INPUT_ONLY value * @property {number} IMMUTABLE=5 IMMUTABLE value + * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value */ api.FieldBehavior = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15251,6 +15252,7 @@ values[valuesById[3] = "OUTPUT_ONLY"] = 3; values[valuesById[4] = "INPUT_ONLY"] = 4; values[valuesById[5] = "IMMUTABLE"] = 5; + values[valuesById[6] = "UNORDERED_LIST"] = 6; return values; })(); @@ -20698,6 +20700,7 @@ case 3: case 4: case 5: + case 6: break; } } @@ -20793,6 +20796,10 @@ case 5: message[".google.api.fieldBehavior"][i] = 5; break; + case "UNORDERED_LIST": + case 6: + message[".google.api.fieldBehavior"][i] = 6; + break; } } return message; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 723454a965d..db35cca4fa7 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1509,7 +1509,8 @@ "REQUIRED": 2, "OUTPUT_ONLY": 3, "INPUT_ONLY": 4, - "IMMUTABLE": 5 + "IMMUTABLE": 5, + "UNORDERED_LIST": 6 } } } diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index 8c7aef63aaf..a5868061f8a 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "b40e3be924fb0c23bc68c639f3db8c7caabb19f4" + "sha": "0c919ebb4bab943df0fb4b039f3e9e21e2fd6e3e" } }, { From 4401bc5f6568fa814d775663409eb9d61f108119 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 4 Feb 2021 08:46:16 -0800 Subject: [PATCH 607/820] chore: use repo metadata to populate nodejs CODEOWNERS (#792) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/7dafd97e-012a-40d8-83de-75f08c081431/targets - [ ] To automatically regenerate this PR, check this box. Source-Link: https://github.com/googleapis/synthtool/commit/318e351e26ba65b2b3cfa3f61b3b64e3540c3525 --- handwritten/nodejs-datastore/synth.metadata | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index a5868061f8a..bb20f9a93c2 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "0c919ebb4bab943df0fb4b039f3e9e21e2fd6e3e" + "sha": "1f96d86d8fa6063bd3f592026da72c35a350f453" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "57c23fa5705499a4181095ced81f0ee0933b64f6" + "sha": "318e351e26ba65b2b3cfa3f61b3b64e3540c3525" } } ], From ec41cd84342fcf014511cc7ed8345770458d2a36 Mon Sep 17 00:00:00 2001 From: Rafael Galani Date: Fri, 12 Feb 2021 19:30:03 -0300 Subject: [PATCH 608/820] docs: fix database instance examples and description (#794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just a simple documentation fix for the `Database` instances section. #### Before: ![image](https://user-images.githubusercontent.com/18705930/107685994-6b33bb00-6c83-11eb-91f8-2940890576f7.png) #### After: ![image](https://user-images.githubusercontent.com/18705930/107686049-7c7cc780-6c83-11eb-8fb5-1158dcc75715.png) --- Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [X] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/nodejs-datastore/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [X] Ensure the tests and linter pass - [X] Code coverage does not decrease (if any source code was changed) - [X] Appropriate docs were updated (if necessary) --- Fixes #793. 🦕 --- handwritten/nodejs-datastore/src/index.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 0f733702684..748028c4892 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -171,14 +171,13 @@ const urlSafeKey = new entity.URLSafeKey(); * @example Import the client library * const {Datastore} = require('@google-cloud/datastore'); * - * @example Create a client that uses Application - * Default Credentials (ADC): const datastore = new Datastore(); + * @example Create a client that uses Application Default Credentials (ADC): + * const datastore = new Datastore(); * - * @example Create a client with explicit - * credentials: const datastore = new Datastore({ projectId: - * 'your-project-id', keyFilename: '/path/to/keyfile.json' + * @example Create a client with explicit credentials: + * const datastore = new Datastore({ + * projectId: 'your-project-id', + * keyFilename: '/path/to/keyfile.json' * }); * * @example Retrieving Records From 6c918804c1ca609b51d6c494854d83df03b7e99d Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Mon, 8 Mar 2021 16:56:57 -0800 Subject: [PATCH 609/820] feat: Add createIndex, deleteIndex protos (#797) * chore: synth * chore: run npx compileProtos src * chore: npm run fix --- .../datastore/admin/v1/datastore_admin.proto | 103 +++- .../google/datastore/admin/v1/index.proto | 5 +- .../nodejs-datastore/protos/protos.d.ts | 255 ++++++++- handwritten/nodejs-datastore/protos/protos.js | 538 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 94 ++- .../src/v1/datastore_admin_client.ts | 335 +++++++++++ .../src/v1/datastore_admin_client_config.json | 10 + .../src/v1/gapic_metadata.json | 20 + .../test/gapic_datastore_admin_v1.ts | 382 +++++++++++++ .../nodejs-datastore/webpack.config.js | 2 +- 10 files changed, 1673 insertions(+), 71 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index c0f47076651..99a9bd4fda4 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -28,6 +28,7 @@ option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;ad option java_multiple_files = true; option java_outer_classname = "DatastoreAdminProto"; option java_package = "com.google.datastore.admin.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\Admin\\V1"; option ruby_package = "Google::Cloud::Datastore::Admin::V1"; // Google Cloud Datastore Admin API @@ -134,6 +135,51 @@ service DatastoreAdmin { }; } + // Creates the specified index. + // A newly created index's initial state is `CREATING`. On completion of the + // returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. + // If the index already exists, the call will return an `ALREADY_EXISTS` + // status. + // + // During index creation, the process could result in an error, in which + // case the index will move to the `ERROR` state. The process can be recovered + // by fixing the data that caused the error, removing the index with + // [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex], then + // re-creating the index with [create] + // [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. + // + // Indexes with a single property cannot be created. + rpc CreateIndex(CreateIndexRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/projects/{project_id}/indexes" + body: "index" + }; + option (google.longrunning.operation_info) = { + response_type: "Index" + metadata_type: "IndexOperationMetadata" + }; + } + + // Deletes an existing index. + // An index can only be deleted if it is in a `READY` or `ERROR` state. On + // successful execution of the request, the index will be in a `DELETING` + // [state][google.datastore.admin.v1.Index.State]. And on completion of the + // returned [google.longrunning.Operation][google.longrunning.Operation], the index will be removed. + // + // During index deletion, the process could result in an error, in which + // case the index will move to the `ERROR` state. The process can be recovered + // by fixing the data that caused the error, followed by calling + // [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex] again. + rpc DeleteIndex(DeleteIndexRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/projects/{project_id}/indexes/{index_id}" + }; + option (google.longrunning.operation_info) = { + response_type: "Index" + metadata_type: "IndexOperationMetadata" + }; + } + // Gets an index. rpc GetIndex(GetIndexRequest) returns (Index) { option (google.api.http) = { @@ -200,24 +246,6 @@ message CommonMetadata { State state = 5; } -// Operation types. -enum OperationType { - // Unspecified. - OPERATION_TYPE_UNSPECIFIED = 0; - - // ExportEntities. - EXPORT_ENTITIES = 1; - - // ImportEntities. - IMPORT_ENTITIES = 2; - - // CreateIndex. - CREATE_INDEX = 3; - - // DeleteIndex. - DELETE_INDEX = 4; -} - // Measures the progress of a particular metric. message Progress { // The amount of work that has been completed. Note that this may be greater @@ -325,6 +353,24 @@ message ExportEntitiesMetadata { string output_url_prefix = 5; } +// Operation types. +enum OperationType { + // Unspecified. + OPERATION_TYPE_UNSPECIFIED = 0; + + // ExportEntities. + EXPORT_ENTITIES = 1; + + // ImportEntities. + IMPORT_ENTITIES = 2; + + // CreateIndex. + CREATE_INDEX = 3; + + // DeleteIndex. + DELETE_INDEX = 4; +} + // Metadata for ImportEntities operations. message ImportEntitiesMetadata { // Metadata common to all Datastore Admin operations. @@ -377,6 +423,27 @@ message EntityFilter { repeated string namespace_ids = 2; } +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.CreateIndex][google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. +message CreateIndexRequest { + // Project ID against which to make the request. + string project_id = 1; + + // The index to create. The name and state fields are output only and will be + // ignored. Single property indexes cannot be created or deleted. + Index index = 3; +} + +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.DeleteIndex][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex]. +message DeleteIndexRequest { + // Project ID against which to make the request. + string project_id = 1; + + // The resource ID of the index to delete. + string index_id = 3; +} + // The request for [google.datastore.admin.v1.DatastoreAdmin.GetIndex][google.datastore.admin.v1.DatastoreAdmin.GetIndex]. message GetIndexRequest { // Project ID against which to make the request. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto index 96c2278b3b6..a211e7c97a9 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,9 +24,10 @@ option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;ad option java_multiple_files = true; option java_outer_classname = "IndexProto"; option java_package = "com.google.datastore.admin.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\Admin\\V1"; option ruby_package = "Google::Cloud::Datastore::Admin::V1"; -// A minimal index definition. +// Datastore composite index definition. message Index { // A property of an index. message IndexedProperty { diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index e9257af47ce..7b35bd709ae 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -74,6 +74,34 @@ export namespace google { */ public importEntities(request: google.datastore.admin.v1.IImportEntitiesRequest): Promise; + /** + * Calls CreateIndex. + * @param request CreateIndexRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation + */ + public createIndex(request: google.datastore.admin.v1.ICreateIndexRequest, callback: google.datastore.admin.v1.DatastoreAdmin.CreateIndexCallback): void; + + /** + * Calls CreateIndex. + * @param request CreateIndexRequest message or plain object + * @returns Promise + */ + public createIndex(request: google.datastore.admin.v1.ICreateIndexRequest): Promise; + + /** + * Calls DeleteIndex. + * @param request DeleteIndexRequest message or plain object + * @param callback Node-style callback called with the error, if any, and Operation + */ + public deleteIndex(request: google.datastore.admin.v1.IDeleteIndexRequest, callback: google.datastore.admin.v1.DatastoreAdmin.DeleteIndexCallback): void; + + /** + * Calls DeleteIndex. + * @param request DeleteIndexRequest message or plain object + * @returns Promise + */ + public deleteIndex(request: google.datastore.admin.v1.IDeleteIndexRequest): Promise; + /** * Calls GetIndex. * @param request GetIndexRequest message or plain object @@ -119,6 +147,20 @@ export namespace google { */ type ImportEntitiesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#createIndex}. + * @param error Error, if any + * @param [response] Operation + */ + type CreateIndexCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; + + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#deleteIndex}. + * @param error Error, if any + * @param [response] Operation + */ + type DeleteIndexCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; + /** * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. * @param error Error, if any @@ -263,15 +305,6 @@ export namespace google { } } - /** OperationType enum. */ - enum OperationType { - OPERATION_TYPE_UNSPECIFIED = 0, - EXPORT_ENTITIES = 1, - IMPORT_ENTITIES = 2, - CREATE_INDEX = 3, - DELETE_INDEX = 4 - } - /** Properties of a Progress. */ interface IProgress { @@ -788,6 +821,15 @@ export namespace google { public toJSON(): { [k: string]: any }; } + /** OperationType enum. */ + enum OperationType { + OPERATION_TYPE_UNSPECIFIED = 0, + EXPORT_ENTITIES = 1, + IMPORT_ENTITIES = 2, + CREATE_INDEX = 3, + DELETE_INDEX = 4 + } + /** Properties of an ImportEntitiesMetadata. */ interface IImportEntitiesMetadata { @@ -998,6 +1040,198 @@ export namespace google { public toJSON(): { [k: string]: any }; } + /** Properties of a CreateIndexRequest. */ + interface ICreateIndexRequest { + + /** CreateIndexRequest projectId */ + projectId?: (string|null); + + /** CreateIndexRequest index */ + index?: (google.datastore.admin.v1.IIndex|null); + } + + /** Represents a CreateIndexRequest. */ + class CreateIndexRequest implements ICreateIndexRequest { + + /** + * Constructs a new CreateIndexRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.ICreateIndexRequest); + + /** CreateIndexRequest projectId. */ + public projectId: string; + + /** CreateIndexRequest index. */ + public index?: (google.datastore.admin.v1.IIndex|null); + + /** + * Creates a new CreateIndexRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CreateIndexRequest instance + */ + public static create(properties?: google.datastore.admin.v1.ICreateIndexRequest): google.datastore.admin.v1.CreateIndexRequest; + + /** + * Encodes the specified CreateIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.CreateIndexRequest.verify|verify} messages. + * @param message CreateIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.ICreateIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CreateIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.CreateIndexRequest.verify|verify} messages. + * @param message CreateIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.ICreateIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CreateIndexRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CreateIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.CreateIndexRequest; + + /** + * Decodes a CreateIndexRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CreateIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.CreateIndexRequest; + + /** + * Verifies a CreateIndexRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CreateIndexRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CreateIndexRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.CreateIndexRequest; + + /** + * Creates a plain object from a CreateIndexRequest message. Also converts values to other types if specified. + * @param message CreateIndexRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.CreateIndexRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CreateIndexRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DeleteIndexRequest. */ + interface IDeleteIndexRequest { + + /** DeleteIndexRequest projectId */ + projectId?: (string|null); + + /** DeleteIndexRequest indexId */ + indexId?: (string|null); + } + + /** Represents a DeleteIndexRequest. */ + class DeleteIndexRequest implements IDeleteIndexRequest { + + /** + * Constructs a new DeleteIndexRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IDeleteIndexRequest); + + /** DeleteIndexRequest projectId. */ + public projectId: string; + + /** DeleteIndexRequest indexId. */ + public indexId: string; + + /** + * Creates a new DeleteIndexRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns DeleteIndexRequest instance + */ + public static create(properties?: google.datastore.admin.v1.IDeleteIndexRequest): google.datastore.admin.v1.DeleteIndexRequest; + + /** + * Encodes the specified DeleteIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.DeleteIndexRequest.verify|verify} messages. + * @param message DeleteIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IDeleteIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DeleteIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.DeleteIndexRequest.verify|verify} messages. + * @param message DeleteIndexRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IDeleteIndexRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DeleteIndexRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DeleteIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.DeleteIndexRequest; + + /** + * Decodes a DeleteIndexRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DeleteIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.DeleteIndexRequest; + + /** + * Verifies a DeleteIndexRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DeleteIndexRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DeleteIndexRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.DeleteIndexRequest; + + /** + * Creates a plain object from a DeleteIndexRequest message. Also converts values to other types if specified. + * @param message DeleteIndexRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.DeleteIndexRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DeleteIndexRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a GetIndexRequest. */ interface IGetIndexRequest { @@ -6091,8 +6325,7 @@ export namespace google { REQUIRED = 2, OUTPUT_ONLY = 3, INPUT_ONLY = 4, - IMMUTABLE = 5, - UNORDERED_LIST = 6 + IMMUTABLE = 5 } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 3f67d1611a2..96c6d5ba395 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -164,6 +164,72 @@ * @variation 2 */ + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#createIndex}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef CreateIndexCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ + + /** + * Calls CreateIndex. + * @function createIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.ICreateIndexRequest} request CreateIndexRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.CreateIndexCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.createIndex = function createIndex(request, callback) { + return this.rpcCall(createIndex, $root.google.datastore.admin.v1.CreateIndexRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "CreateIndex" }); + + /** + * Calls CreateIndex. + * @function createIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.ICreateIndexRequest} request CreateIndexRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#deleteIndex}. + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @typedef DeleteIndexCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.longrunning.Operation} [response] Operation + */ + + /** + * Calls DeleteIndex. + * @function deleteIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IDeleteIndexRequest} request DeleteIndexRequest message or plain object + * @param {google.datastore.admin.v1.DatastoreAdmin.DeleteIndexCallback} callback Node-style callback called with the error, if any, and Operation + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(DatastoreAdmin.prototype.deleteIndex = function deleteIndex(request, callback) { + return this.rpcCall(deleteIndex, $root.google.datastore.admin.v1.DeleteIndexRequest, $root.google.longrunning.Operation, request, callback); + }, "name", { value: "DeleteIndex" }); + + /** + * Calls DeleteIndex. + * @function deleteIndex + * @memberof google.datastore.admin.v1.DatastoreAdmin + * @instance + * @param {google.datastore.admin.v1.IDeleteIndexRequest} request DeleteIndexRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + /** * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. * @memberof google.datastore.admin.v1.DatastoreAdmin @@ -652,26 +718,6 @@ return CommonMetadata; })(); - /** - * OperationType enum. - * @name google.datastore.admin.v1.OperationType - * @enum {number} - * @property {number} OPERATION_TYPE_UNSPECIFIED=0 OPERATION_TYPE_UNSPECIFIED value - * @property {number} EXPORT_ENTITIES=1 EXPORT_ENTITIES value - * @property {number} IMPORT_ENTITIES=2 IMPORT_ENTITIES value - * @property {number} CREATE_INDEX=3 CREATE_INDEX value - * @property {number} DELETE_INDEX=4 DELETE_INDEX value - */ - v1.OperationType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATION_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "EXPORT_ENTITIES"] = 1; - values[valuesById[2] = "IMPORT_ENTITIES"] = 2; - values[valuesById[3] = "CREATE_INDEX"] = 3; - values[valuesById[4] = "DELETE_INDEX"] = 4; - return values; - })(); - v1.Progress = (function() { /** @@ -1983,6 +2029,26 @@ return ExportEntitiesMetadata; })(); + /** + * OperationType enum. + * @name google.datastore.admin.v1.OperationType + * @enum {number} + * @property {number} OPERATION_TYPE_UNSPECIFIED=0 OPERATION_TYPE_UNSPECIFIED value + * @property {number} EXPORT_ENTITIES=1 EXPORT_ENTITIES value + * @property {number} IMPORT_ENTITIES=2 IMPORT_ENTITIES value + * @property {number} CREATE_INDEX=3 CREATE_INDEX value + * @property {number} DELETE_INDEX=4 DELETE_INDEX value + */ + v1.OperationType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATION_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "EXPORT_ENTITIES"] = 1; + values[valuesById[2] = "IMPORT_ENTITIES"] = 2; + values[valuesById[3] = "CREATE_INDEX"] = 3; + values[valuesById[4] = "DELETE_INDEX"] = 4; + return values; + })(); + v1.ImportEntitiesMetadata = (function() { /** @@ -2521,6 +2587,431 @@ return EntityFilter; })(); + v1.CreateIndexRequest = (function() { + + /** + * Properties of a CreateIndexRequest. + * @memberof google.datastore.admin.v1 + * @interface ICreateIndexRequest + * @property {string|null} [projectId] CreateIndexRequest projectId + * @property {google.datastore.admin.v1.IIndex|null} [index] CreateIndexRequest index + */ + + /** + * Constructs a new CreateIndexRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a CreateIndexRequest. + * @implements ICreateIndexRequest + * @constructor + * @param {google.datastore.admin.v1.ICreateIndexRequest=} [properties] Properties to set + */ + function CreateIndexRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CreateIndexRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @instance + */ + CreateIndexRequest.prototype.projectId = ""; + + /** + * CreateIndexRequest index. + * @member {google.datastore.admin.v1.IIndex|null|undefined} index + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @instance + */ + CreateIndexRequest.prototype.index = null; + + /** + * Creates a new CreateIndexRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {google.datastore.admin.v1.ICreateIndexRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.CreateIndexRequest} CreateIndexRequest instance + */ + CreateIndexRequest.create = function create(properties) { + return new CreateIndexRequest(properties); + }; + + /** + * Encodes the specified CreateIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.CreateIndexRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {google.datastore.admin.v1.ICreateIndexRequest} message CreateIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateIndexRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.index != null && Object.hasOwnProperty.call(message, "index")) + $root.google.datastore.admin.v1.Index.encode(message.index, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CreateIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.CreateIndexRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {google.datastore.admin.v1.ICreateIndexRequest} message CreateIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateIndexRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CreateIndexRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.CreateIndexRequest} CreateIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateIndexRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.CreateIndexRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 3: + message.index = $root.google.datastore.admin.v1.Index.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CreateIndexRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.CreateIndexRequest} CreateIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateIndexRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CreateIndexRequest message. + * @function verify + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CreateIndexRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.index != null && message.hasOwnProperty("index")) { + var error = $root.google.datastore.admin.v1.Index.verify(message.index); + if (error) + return "index." + error; + } + return null; + }; + + /** + * Creates a CreateIndexRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.CreateIndexRequest} CreateIndexRequest + */ + CreateIndexRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.CreateIndexRequest) + return object; + var message = new $root.google.datastore.admin.v1.CreateIndexRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.index != null) { + if (typeof object.index !== "object") + throw TypeError(".google.datastore.admin.v1.CreateIndexRequest.index: object expected"); + message.index = $root.google.datastore.admin.v1.Index.fromObject(object.index); + } + return message; + }; + + /** + * Creates a plain object from a CreateIndexRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {google.datastore.admin.v1.CreateIndexRequest} message CreateIndexRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CreateIndexRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.index = null; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.index != null && message.hasOwnProperty("index")) + object.index = $root.google.datastore.admin.v1.Index.toObject(message.index, options); + return object; + }; + + /** + * Converts this CreateIndexRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @instance + * @returns {Object.} JSON object + */ + CreateIndexRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CreateIndexRequest; + })(); + + v1.DeleteIndexRequest = (function() { + + /** + * Properties of a DeleteIndexRequest. + * @memberof google.datastore.admin.v1 + * @interface IDeleteIndexRequest + * @property {string|null} [projectId] DeleteIndexRequest projectId + * @property {string|null} [indexId] DeleteIndexRequest indexId + */ + + /** + * Constructs a new DeleteIndexRequest. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a DeleteIndexRequest. + * @implements IDeleteIndexRequest + * @constructor + * @param {google.datastore.admin.v1.IDeleteIndexRequest=} [properties] Properties to set + */ + function DeleteIndexRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DeleteIndexRequest projectId. + * @member {string} projectId + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @instance + */ + DeleteIndexRequest.prototype.projectId = ""; + + /** + * DeleteIndexRequest indexId. + * @member {string} indexId + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @instance + */ + DeleteIndexRequest.prototype.indexId = ""; + + /** + * Creates a new DeleteIndexRequest instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {google.datastore.admin.v1.IDeleteIndexRequest=} [properties] Properties to set + * @returns {google.datastore.admin.v1.DeleteIndexRequest} DeleteIndexRequest instance + */ + DeleteIndexRequest.create = function create(properties) { + return new DeleteIndexRequest(properties); + }; + + /** + * Encodes the specified DeleteIndexRequest message. Does not implicitly {@link google.datastore.admin.v1.DeleteIndexRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {google.datastore.admin.v1.IDeleteIndexRequest} message DeleteIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DeleteIndexRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.projectId); + if (message.indexId != null && Object.hasOwnProperty.call(message, "indexId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.indexId); + return writer; + }; + + /** + * Encodes the specified DeleteIndexRequest message, length delimited. Does not implicitly {@link google.datastore.admin.v1.DeleteIndexRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {google.datastore.admin.v1.IDeleteIndexRequest} message DeleteIndexRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DeleteIndexRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DeleteIndexRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.DeleteIndexRequest} DeleteIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DeleteIndexRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.DeleteIndexRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.projectId = reader.string(); + break; + case 3: + message.indexId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DeleteIndexRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.DeleteIndexRequest} DeleteIndexRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DeleteIndexRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DeleteIndexRequest message. + * @function verify + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DeleteIndexRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.indexId != null && message.hasOwnProperty("indexId")) + if (!$util.isString(message.indexId)) + return "indexId: string expected"; + return null; + }; + + /** + * Creates a DeleteIndexRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.DeleteIndexRequest} DeleteIndexRequest + */ + DeleteIndexRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.DeleteIndexRequest) + return object; + var message = new $root.google.datastore.admin.v1.DeleteIndexRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.indexId != null) + message.indexId = String(object.indexId); + return message; + }; + + /** + * Creates a plain object from a DeleteIndexRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {google.datastore.admin.v1.DeleteIndexRequest} message DeleteIndexRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DeleteIndexRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.projectId = ""; + object.indexId = ""; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.indexId != null && message.hasOwnProperty("indexId")) + object.indexId = message.indexId; + return object; + }; + + /** + * Converts this DeleteIndexRequest to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @instance + * @returns {Object.} JSON object + */ + DeleteIndexRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DeleteIndexRequest; + })(); + v1.GetIndexRequest = (function() { /** @@ -15242,7 +15733,6 @@ * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value * @property {number} INPUT_ONLY=4 INPUT_ONLY value * @property {number} IMMUTABLE=5 IMMUTABLE value - * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value */ api.FieldBehavior = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15252,7 +15742,6 @@ values[valuesById[3] = "OUTPUT_ONLY"] = 3; values[valuesById[4] = "INPUT_ONLY"] = 4; values[valuesById[5] = "IMMUTABLE"] = 5; - values[valuesById[6] = "UNORDERED_LIST"] = 6; return values; })(); @@ -20700,7 +21189,6 @@ case 3: case 4: case 5: - case 6: break; } } @@ -20796,10 +21284,6 @@ case 5: message[".google.api.fieldBehavior"][i] = 5; break; - case "UNORDERED_LIST": - case 6: - message[".google.api.fieldBehavior"][i] = 6; - break; } } return message; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index db35cca4fa7..f38ef5ad7fa 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -13,6 +13,7 @@ "java_multiple_files": true, "java_outer_classname": "IndexProto", "java_package": "com.google.datastore.admin.v1", + "php_namespace": "Google\\Cloud\\Datastore\\Admin\\V1", "ruby_package": "Google::Cloud::Datastore::Admin::V1" }, "nested": { @@ -78,6 +79,52 @@ } ] }, + "CreateIndex": { + "requestType": "CreateIndexRequest", + "responseType": "google.longrunning.Operation", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}/indexes", + "(google.api.http).body": "index", + "(google.longrunning.operation_info).response_type": "Index", + "(google.longrunning.operation_info).metadata_type": "IndexOperationMetadata" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}/indexes", + "body": "index" + } + }, + { + "(google.longrunning.operation_info)": { + "response_type": "Index", + "metadata_type": "IndexOperationMetadata" + } + } + ] + }, + "DeleteIndex": { + "requestType": "DeleteIndexRequest", + "responseType": "google.longrunning.Operation", + "options": { + "(google.api.http).delete": "/v1/projects/{project_id}/indexes/{index_id}", + "(google.longrunning.operation_info).response_type": "Index", + "(google.longrunning.operation_info).metadata_type": "IndexOperationMetadata" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/projects/{project_id}/indexes/{index_id}" + } + }, + { + "(google.longrunning.operation_info)": { + "response_type": "Index", + "metadata_type": "IndexOperationMetadata" + } + } + ] + }, "GetIndex": { "requestType": "GetIndexRequest", "responseType": "Index", @@ -147,15 +194,6 @@ } } }, - "OperationType": { - "values": { - "OPERATION_TYPE_UNSPECIFIED": 0, - "EXPORT_ENTITIES": 1, - "IMPORT_ENTITIES": 2, - "CREATE_INDEX": 3, - "DELETE_INDEX": 4 - } - }, "Progress": { "fields": { "workCompleted": { @@ -254,6 +292,15 @@ } } }, + "OperationType": { + "values": { + "OPERATION_TYPE_UNSPECIFIED": 0, + "EXPORT_ENTITIES": 1, + "IMPORT_ENTITIES": 2, + "CREATE_INDEX": 3, + "DELETE_INDEX": 4 + } + }, "ImportEntitiesMetadata": { "fields": { "common": { @@ -292,6 +339,30 @@ } } }, + "CreateIndexRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1 + }, + "index": { + "type": "Index", + "id": 3 + } + } + }, + "DeleteIndexRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 1 + }, + "indexId": { + "type": "string", + "id": 3 + } + } + }, "GetIndexRequest": { "fields": { "projectId": { @@ -1509,15 +1580,14 @@ "REQUIRED": 2, "OUTPUT_ONLY": 3, "INPUT_ONLY": 4, - "IMMUTABLE": 5, - "UNORDERED_LIST": 6 + "IMMUTABLE": 5 } } } }, "protobuf": { "options": { - "go_package": "google.golang.org/protobuf/types/descriptorpb", + "go_package": "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor", "java_package": "com.google.protobuf", "java_outer_classname": "DescriptorProtos", "csharp_namespace": "Google.Protobuf.Reflection", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 331c91945db..0dcfe79765d 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -262,6 +262,18 @@ export class DatastoreAdminClient { const importEntitiesMetadata = protoFilesRoot.lookup( '.google.datastore.admin.v1.ImportEntitiesMetadata' ) as gax.protobuf.Type; + const createIndexResponse = protoFilesRoot.lookup( + '.google.datastore.admin.v1.Index' + ) as gax.protobuf.Type; + const createIndexMetadata = protoFilesRoot.lookup( + '.google.datastore.admin.v1.IndexOperationMetadata' + ) as gax.protobuf.Type; + const deleteIndexResponse = protoFilesRoot.lookup( + '.google.datastore.admin.v1.Index' + ) as gax.protobuf.Type; + const deleteIndexMetadata = protoFilesRoot.lookup( + '.google.datastore.admin.v1.IndexOperationMetadata' + ) as gax.protobuf.Type; this.descriptors.longrunning = { exportEntities: new this._gaxModule.LongrunningDescriptor( @@ -274,6 +286,16 @@ export class DatastoreAdminClient { importEntitiesResponse.decode.bind(importEntitiesResponse), importEntitiesMetadata.decode.bind(importEntitiesMetadata) ), + createIndex: new this._gaxModule.LongrunningDescriptor( + this.operationsClient, + createIndexResponse.decode.bind(createIndexResponse), + createIndexMetadata.decode.bind(createIndexMetadata) + ), + deleteIndex: new this._gaxModule.LongrunningDescriptor( + this.operationsClient, + deleteIndexResponse.decode.bind(deleteIndexResponse), + deleteIndexMetadata.decode.bind(deleteIndexMetadata) + ), }; // Put together the default options sent with requests. @@ -324,6 +346,8 @@ export class DatastoreAdminClient { const datastoreAdminStubMethods = [ 'exportEntities', 'importEntities', + 'createIndex', + 'deleteIndex', 'getIndex', 'listIndexes', ]; @@ -839,6 +863,317 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.ImportEntitiesMetadata >; } + createIndex( + request: protos.google.datastore.admin.v1.ICreateIndexRequest, + options?: CallOptions + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + createIndex( + request: protos.google.datastore.admin.v1.ICreateIndexRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + createIndex( + request: protos.google.datastore.admin.v1.ICreateIndexRequest, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + /** + * Creates the specified index. + * A newly created index's initial state is `CREATING`. On completion of the + * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the state will be `READY`. + * If the index already exists, the call will return an `ALREADY_EXISTS` + * status. + * + * During index creation, the process could result in an error, in which + * case the index will move to the `ERROR` state. The process can be recovered + * by fixing the data that caused the error, removing the index with + * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete}, then + * re-creating the index with [create] + * [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. + * + * Indexes with a single property cannot be created. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {google.datastore.admin.v1.Index} request.index + * The index to create. The name and state fields are output only and will be + * ignored. Single property indexes cannot be created or deleted. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const [operation] = await client.createIndex(request); + * const [response] = await operation.promise(); + */ + createIndex( + request: protos.google.datastore.admin.v1.ICreateIndexRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.createIndex(request, options, callback); + } + /** + * Check the status of the long running operation returned by `createIndex()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const decodedOperation = await checkCreateIndexProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); + */ + async checkCreateIndexProgress( + name: string + ): Promise< + LROperation< + protos.google.datastore.admin.v1.Index, + protos.google.datastore.admin.v1.IndexOperationMetadata + > + > { + const request = new operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); + const [operation] = await this.operationsClient.getOperation(request); + const decodeOperation = new gax.Operation( + operation, + this.descriptors.longrunning.createIndex, + gax.createDefaultBackoffSettings() + ); + return decodeOperation as LROperation< + protos.google.datastore.admin.v1.Index, + protos.google.datastore.admin.v1.IndexOperationMetadata + >; + } + deleteIndex( + request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + options?: CallOptions + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + deleteIndex( + request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + deleteIndex( + request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + /** + * Deletes an existing index. + * An index can only be deleted if it is in a `READY` or `ERROR` state. On + * successful execution of the request, the index will be in a `DELETING` + * {@link google.datastore.admin.v1.Index.State|state}. And on completion of the + * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the index will be removed. + * + * During index deletion, the process could result in an error, in which + * case the index will move to the `ERROR` state. The process can be recovered + * by fixing the data that caused the error, followed by calling + * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete} again. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.indexId + * The resource ID of the index to delete. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const [operation] = await client.deleteIndex(request); + * const [response] = await operation.promise(); + */ + deleteIndex( + request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers[ + 'x-goog-request-params' + ] = gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); + this.initialize(); + return this.innerApiCalls.deleteIndex(request, options, callback); + } + /** + * Check the status of the long running operation returned by `deleteIndex()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example + * const decodedOperation = await checkDeleteIndexProgress(name); + * console.log(decodedOperation.result); + * console.log(decodedOperation.done); + * console.log(decodedOperation.metadata); + */ + async checkDeleteIndexProgress( + name: string + ): Promise< + LROperation< + protos.google.datastore.admin.v1.Index, + protos.google.datastore.admin.v1.IndexOperationMetadata + > + > { + const request = new operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); + const [operation] = await this.operationsClient.getOperation(request); + const decodeOperation = new gax.Operation( + operation, + this.descriptors.longrunning.deleteIndex, + gax.createDefaultBackoffSettings() + ); + return decodeOperation as LROperation< + protos.google.datastore.admin.v1.Index, + protos.google.datastore.admin.v1.IndexOperationMetadata + >; + } listIndexes( request: protos.google.datastore.admin.v1.IListIndexesRequest, options?: CallOptions diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json index 65283cbbc9f..9dbc3f5fff3 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client_config.json @@ -30,6 +30,16 @@ "retry_codes_name": "non_idempotent", "retry_params_name": "default" }, + "CreateIndex": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default" + }, + "DeleteIndex": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default" + }, "GetIndex": { "timeout_millis": 60000, "retry_codes_name": "idempotent", diff --git a/handwritten/nodejs-datastore/src/v1/gapic_metadata.json b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json index 0564d17e0c7..e0579963555 100644 --- a/handwritten/nodejs-datastore/src/v1/gapic_metadata.json +++ b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json @@ -25,6 +25,16 @@ "importEntities" ] }, + "CreateIndex": { + "methods": [ + "createIndex" + ] + }, + "DeleteIndex": { + "methods": [ + "deleteIndex" + ] + }, "ListIndexes": { "methods": [ "listIndexes", @@ -52,6 +62,16 @@ "importEntities" ] }, + "CreateIndex": { + "methods": [ + "createIndex" + ] + }, + "DeleteIndex": { + "methods": [ + "deleteIndex" + ] + }, "ListIndexes": { "methods": [ "listIndexes", diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 99eda0c1d27..a49d2f95186 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -729,6 +729,388 @@ describe('v1.DatastoreAdminClient', () => { }); }); + describe('createIndex', () => { + it('invokes createIndex without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.CreateIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.createIndex = stubLongRunningCall(expectedResponse); + const [operation] = await client.createIndex(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.createIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes createIndex without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.CreateIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.createIndex = stubLongRunningCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.createIndex( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + > | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const operation = (await promise) as LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.createIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes createIndex with call error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.CreateIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.createIndex = stubLongRunningCall( + undefined, + expectedError + ); + await assert.rejects(client.createIndex(request), expectedError); + assert( + (client.innerApiCalls.createIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes createIndex with LRO error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.CreateIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.createIndex = stubLongRunningCall( + undefined, + undefined, + expectedError + ); + const [operation] = await client.createIndex(request); + await assert.rejects(operation.promise(), expectedError); + assert( + (client.innerApiCalls.createIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes checkCreateIndexProgress without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + expectedResponse.name = 'test'; + expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; + expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkCreateIndexProgress( + expectedResponse.name + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + + it('invokes checkCreateIndexProgress with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(client.checkCreateIndexProgress(''), expectedError); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('deleteIndex', () => { + it('invokes deleteIndex without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.DeleteIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.deleteIndex = stubLongRunningCall(expectedResponse); + const [operation] = await client.deleteIndex(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.deleteIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes deleteIndex without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.DeleteIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation() + ); + client.innerApiCalls.deleteIndex = stubLongRunningCallWithCallback( + expectedResponse + ); + const promise = new Promise((resolve, reject) => { + client.deleteIndex( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + > | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const operation = (await promise) as LROperation< + protos.google.datastore.admin.v1.IIndex, + protos.google.datastore.admin.v1.IIndexOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + assert( + (client.innerApiCalls.deleteIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions /*, callback defined above */) + ); + }); + + it('invokes deleteIndex with call error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.DeleteIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteIndex = stubLongRunningCall( + undefined, + expectedError + ); + await assert.rejects(client.deleteIndex(request), expectedError); + assert( + (client.innerApiCalls.deleteIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes deleteIndex with LRO error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.DeleteIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedOptions = { + otherArgs: { + headers: { + 'x-goog-request-params': expectedHeaderRequestParams, + }, + }, + }; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteIndex = stubLongRunningCall( + undefined, + undefined, + expectedError + ); + const [operation] = await client.deleteIndex(request); + await assert.rejects(operation.promise(), expectedError); + assert( + (client.innerApiCalls.deleteIndex as SinonStub) + .getCall(0) + .calledWith(request, expectedOptions, undefined) + ); + }); + + it('invokes checkDeleteIndexProgress without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + expectedResponse.name = 'test'; + expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; + expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkDeleteIndexProgress( + expectedResponse.name + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + + it('invokes checkDeleteIndexProgress with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(client.checkDeleteIndexProgress(''), expectedError); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + describe('listIndexes', () => { it('invokes listIndexes without error', async () => { const client = new datastoreadminModule.v1.DatastoreAdminClient({ diff --git a/handwritten/nodejs-datastore/webpack.config.js b/handwritten/nodejs-datastore/webpack.config.js index 1729722ead6..f37985e3589 100644 --- a/handwritten/nodejs-datastore/webpack.config.js +++ b/handwritten/nodejs-datastore/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright 2020 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From c2c2711a25a7fd6b48d64a9e621cb9fbc34b8109 Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Tue, 9 Mar 2021 11:06:33 -0800 Subject: [PATCH 610/820] chore: update npm prepare target (#804) Fixes #799 --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ba422b39c03..437662c8789 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -32,7 +32,7 @@ "fix": "gts fix", "prelint": "cd samples; npm link ../; npm install", "lint": "gts check", - "prepare": "npm run compile", + "prepare": "npm run compile-protos && npm run compile", "samples-test": "cd samples/ && npm link ../ && npm install && npm test && cd ../", "presystem-test": "npm run compile", "system-test": "mocha build/system-test --timeout 600000", From 41ff0f1643ac89b5194befac8657619cc648b527 Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Wed, 10 Mar 2021 14:04:14 -0800 Subject: [PATCH 611/820] test: add retry to import export flaky test (#805) --- .../nodejs-datastore/system-test/datastore.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index f9398ffb92c..ae245b8d116 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1007,7 +1007,20 @@ describe('Datastore', () => { const gcs = new Storage(); const bucket = gcs.bucket('nodejs-datastore-system-tests'); - it('should export, then import entities', async () => { + const delay = async (test: Mocha.Context) => { + const retries = test.currentRetry(); + if (retries === 0) return; // no retry on the first failure. + // see: https://cloud.google.com/storage/docs/exponential-backoff: + const ms = Math.pow(2, retries) * 500 + Math.random() * 1000; + return new Promise(done => { + console.info(`retrying "${test.title}" in ${ms}ms`); + setTimeout(done, ms); + }); + }; + + it('should export, then import entities', async function () { + this.retries(3); + delay(this); const [exportOperation] = await datastore.export({bucket}); await exportOperation.promise(); From 347029a3ef96d256a8e094d71df4302cbab84333 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Wed, 10 Mar 2021 14:10:14 -0800 Subject: [PATCH 612/820] chore(deps): upgrade to js-yaml 4 (#800) --- handwritten/nodejs-datastore/package.json | 4 ++-- handwritten/nodejs-datastore/system-test/datastore.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 437662c8789..6526d47260a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -59,7 +59,7 @@ "@microsoft/api-extractor": "^7.8.10", "@types/extend": "^3.0.1", "@types/is": "0.0.21", - "@types/js-yaml": "^3.12.5", + "@types/js-yaml": "^4.0.0", "@types/mocha": "^8.0.0", "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", @@ -68,7 +68,7 @@ "c8": "^7.1.0", "codecov": "^3.6.5", "gts": "^3.0.0", - "js-yaml": "^3.14.0", + "js-yaml": "^4.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index ae245b8d116..bccf9d72e37 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -36,7 +36,7 @@ describe('Datastore', () => { return keyObject; }; - const {indexes: DECLARED_INDEXES} = yaml.safeLoad( + const {indexes: DECLARED_INDEXES} = yaml.load( readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8') ) as {indexes: google.datastore.admin.v1.IIndex[]}; From 9b91f9db73ec6065662ab77c2f74fe5cd1d2ed5e Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 29 Apr 2021 02:47:23 +0200 Subject: [PATCH 613/820] fix(deps): update dependency sinon to v10 (#810) Co-authored-by: Benjamin E. Coe --- handwritten/nodejs-datastore/package.json | 4 ++-- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6526d47260a..6592ba0b73e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "@types/node": "^13.9.0", "@types/proxyquire": "^1.3.28", "@types/pumpify": "^1.4.1", - "@types/sinon": "^9.0.0", + "@types/sinon": "^10.0.0", "c8": "^7.1.0", "codecov": "^3.6.5", "gts": "^3.0.0", @@ -78,7 +78,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^9.0.1", + "sinon": "^10.0.0", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack-cli": "^4.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 78e6f631ea9..6091355ead3 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^6.3.1", - "sinon": "^9.0.0" + "sinon": "^10.0.0" }, "devDependencies": { "chai": "^4.2.0", From 27f676d7ff6748a75504ff26703df175227b9ae2 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 29 Apr 2021 00:56:05 +0000 Subject: [PATCH 614/820] chore: release 6.4.0 (#798) :robot: I have created a release \*beep\* \*boop\* --- ## [6.4.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.3.1...v6.4.0) (2021-04-29) ### Features * Add createIndex, deleteIndex protos ([#797](https://www.github.com/googleapis/nodejs-datastore/issues/797)) ([3ff1f51](https://www.github.com/googleapis/nodejs-datastore/commit/3ff1f51f19297db94a370ec3fc9130f36e25ea70)) ### Bug Fixes * **deps:** update dependency sinon to v10 ([#810](https://www.github.com/googleapis/nodejs-datastore/issues/810)) ([267992f](https://www.github.com/googleapis/nodejs-datastore/commit/267992f4f1523fc5038715b009ebc697c5ca8255)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index fc8c1d04ec1..da6a014ce65 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.4.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.3.1...v6.4.0) (2021-04-29) + + +### Features + +* Add createIndex, deleteIndex protos ([#797](https://www.github.com/googleapis/nodejs-datastore/issues/797)) ([3ff1f51](https://www.github.com/googleapis/nodejs-datastore/commit/3ff1f51f19297db94a370ec3fc9130f36e25ea70)) + + +### Bug Fixes + +* **deps:** update dependency sinon to v10 ([#810](https://www.github.com/googleapis/nodejs-datastore/issues/810)) ([267992f](https://www.github.com/googleapis/nodejs-datastore/commit/267992f4f1523fc5038715b009ebc697c5ca8255)) + ### [6.3.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.3.0...v6.3.1) (2020-11-25) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6592ba0b73e..8f1a9783c13 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.3.1", + "version": "6.4.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 6091355ead3..a7b1b8733fe 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.3.1", + "@google-cloud/datastore": "^6.4.0", "sinon": "^10.0.0" }, "devDependencies": { From d561d5a0b945789dfd5d11cf8adcb872248ed2d7 Mon Sep 17 00:00:00 2001 From: Craig Labenz Date: Tue, 4 May 2021 10:16:00 -0700 Subject: [PATCH 615/820] docs: clarified key samples (#808) --- handwritten/nodejs-datastore/src/index.ts | 35 +++++++++++++++++------ 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 748028c4892..e43a6e713c8 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1471,41 +1471,58 @@ class Datastore extends DatastoreRequest { * @returns {Key} A newly created Key from the options given. * * @example - * Create an incomplete key with a kind value of `Company`. + * Create an incomplete key with a kind value of `Company`. + * Since no Id is supplied, Datastore will generate one on save. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key('Company'); * * @example - * Create a complete key with a kind value of `Company` and id - * `123`. const {Datastore} = require('@google-cloud/datastore'); + * Create a complete key with a kind value of `Company` and Id `123`. + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 123]); * * @example * If the ID integer is outside the bounds of a JavaScript Number - * object, create an Int. const {Datastore} = - * require('@google-cloud/datastore'); const datastore = new Datastore(); + * object, create an Int. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); * const key = datastore.key([ * 'Company', * datastore.int('100000000000001234') * ]); * * @example + * Create a complete key with a kind value of `Company` and name `Google`. + * Because the supplied Id is a string, Datastore will prefix it with "name=". + * Had the supplied Id been numeric, Datastore would prefix it with the standard, "id=". * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); - * // Create a complete key with a kind value of `Company` and name `Google`. - * // Note: `id` is used for numeric identifiers and `name` is used otherwise. * const key = datastore.key(['Company', 'Google']); * * @example - * Create a complete key from a provided namespace and - * path. const {Datastore} = require('@google-cloud/datastore'); + * Create a complete key from a provided namespace and path. + * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key({ * namespace: 'My-NS', * path: ['Company', 123] * }); + * + * @example + * Create a complete key that specifies an ancestor. This will create a Team entity + * with a name of "Datastore", which belongs to the Company with the "name=Google" key. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 'Google', 'Team', 'Datastore']); + * + * @example + * Create a incomplete key that specifies an ancestor. This will create an Employee entity + * with an auto-generated Id, which belongs to the Company with the "name=Google" key. + * const {Datastore} = require('@google-cloud/datastore'); + * const datastore = new Datastore(); + * const key = datastore.key(['Company', 'Google', 'Employee']); */ key(options: string | entity.KeyOptions | PathType[]): entity.Key { const keyOptions = is.object(options) From 3966dd426f44d7c5801deedd0a7a65280c2971fc Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 5 May 2021 12:20:03 -0700 Subject: [PATCH 616/820] build: update falsy types in protos.js (#824) This PR was generated using Autosynth. :rainbow: Synth log will be available here: https://source.cloud.google.com/results/invocations/cff9d817-e273-40bd-93c2-641247ec10e0/targets - [ ] To automatically regenerate this PR, check this box. (May take up to 24 hours.) PiperOrigin-RevId: 361273630 Source-Link: https://github.com/googleapis/googleapis/commit/5477122b3e8037a1dc5bc920536158edbd151dc4 PiperOrigin-RevId: 359094122 Source-Link: https://github.com/googleapis/googleapis/commit/cc4a85665e5118be2472eefadf28e6deb2aafb88 --- .../nodejs-datastore/protos/protos.d.ts | 47 ++++----- handwritten/nodejs-datastore/protos/protos.js | 95 ++++++++++--------- .../nodejs-datastore/protos/protos.json | 5 +- handwritten/nodejs-datastore/synth.metadata | 6 +- 4 files changed, 81 insertions(+), 72 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 7b35bd709ae..d0225fc0679 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -2867,7 +2867,7 @@ export namespace google { public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); /** CommitRequest transaction. */ - public transaction: (Uint8Array|string); + public transaction?: (Uint8Array|string|null); /** CommitRequest mutations. */ public mutations: google.datastore.v1.IMutation[]; @@ -3465,7 +3465,7 @@ export namespace google { public delete?: (google.datastore.v1.IKey|null); /** Mutation baseVersion. */ - public baseVersion: (number|Long|string); + public baseVersion?: (number|Long|string|null); /** Mutation operation. */ public operation?: ("insert"|"update"|"upsert"|"delete"); @@ -3666,10 +3666,10 @@ export namespace google { constructor(properties?: google.datastore.v1.IReadOptions); /** ReadOptions readConsistency. */ - public readConsistency: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency); + public readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); /** ReadOptions transaction. */ - public transaction: (Uint8Array|string); + public transaction?: (Uint8Array|string|null); /** ReadOptions consistencyType. */ public consistencyType?: ("readConsistency"|"transaction"); @@ -4251,10 +4251,10 @@ export namespace google { public kind: string; /** PathElement id. */ - public id: (number|Long|string); + public id?: (number|Long|string|null); /** PathElement name. */ - public name: string; + public name?: (string|null); /** PathElement idType. */ public idType?: ("id"|"name"); @@ -4474,16 +4474,16 @@ export namespace google { constructor(properties?: google.datastore.v1.IValue); /** Value nullValue. */ - public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); + public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); /** Value booleanValue. */ - public booleanValue: boolean; + public booleanValue?: (boolean|null); /** Value integerValue. */ - public integerValue: (number|Long|string); + public integerValue?: (number|Long|string|null); /** Value doubleValue. */ - public doubleValue: number; + public doubleValue?: (number|null); /** Value timestampValue. */ public timestampValue?: (google.protobuf.ITimestamp|null); @@ -4492,10 +4492,10 @@ export namespace google { public keyValue?: (google.datastore.v1.IKey|null); /** Value stringValue. */ - public stringValue: string; + public stringValue?: (string|null); /** Value blobValue. */ - public blobValue: (Uint8Array|string); + public blobValue?: (Uint8Array|string|null); /** Value geoPointValue. */ public geoPointValue?: (google.type.ILatLng|null); @@ -5760,7 +5760,7 @@ export namespace google { public value?: (google.datastore.v1.IValue|null); /** GqlQueryParameter cursor. */ - public cursor: (Uint8Array|string); + public cursor?: (Uint8Array|string|null); /** GqlQueryParameter parameterType. */ public parameterType?: ("value"|"cursor"); @@ -6122,19 +6122,19 @@ export namespace google { public selector: string; /** HttpRule get. */ - public get: string; + public get?: (string|null); /** HttpRule put. */ - public put: string; + public put?: (string|null); /** HttpRule post. */ - public post: string; + public post?: (string|null); /** HttpRule delete. */ - public delete: string; + public delete?: (string|null); /** HttpRule patch. */ - public patch: string; + public patch?: (string|null); /** HttpRule custom. */ public custom?: (google.api.ICustomHttpPattern|null); @@ -6325,7 +6325,8 @@ export namespace google { REQUIRED = 2, OUTPUT_ONLY = 3, INPUT_ONLY = 4, - IMMUTABLE = 5 + IMMUTABLE = 5, + UNORDERED_LIST = 6 } } @@ -9946,16 +9947,16 @@ export namespace google { constructor(properties?: google.protobuf.IValue); /** Value nullValue. */ - public nullValue: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue); + public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); /** Value numberValue. */ - public numberValue: number; + public numberValue?: (number|null); /** Value stringValue. */ - public stringValue: string; + public stringValue?: (string|null); /** Value boolValue. */ - public boolValue: boolean; + public boolValue?: (boolean|null); /** Value structValue. */ public structValue?: (google.protobuf.IStruct|null); diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 96c6d5ba395..011b2d4c722 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -6809,11 +6809,11 @@ /** * CommitRequest transaction. - * @member {Uint8Array} transaction + * @member {Uint8Array|null|undefined} transaction * @memberof google.datastore.v1.CommitRequest * @instance */ - CommitRequest.prototype.transaction = $util.newBuffer([]); + CommitRequest.prototype.transaction = null; /** * CommitRequest mutations. @@ -8241,11 +8241,11 @@ /** * Mutation baseVersion. - * @member {number|Long} baseVersion + * @member {number|Long|null|undefined} baseVersion * @memberof google.datastore.v1.Mutation * @instance */ - Mutation.prototype.baseVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + Mutation.prototype.baseVersion = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -8817,19 +8817,19 @@ /** * ReadOptions readConsistency. - * @member {google.datastore.v1.ReadOptions.ReadConsistency} readConsistency + * @member {google.datastore.v1.ReadOptions.ReadConsistency|null|undefined} readConsistency * @memberof google.datastore.v1.ReadOptions * @instance */ - ReadOptions.prototype.readConsistency = 0; + ReadOptions.prototype.readConsistency = null; /** * ReadOptions transaction. - * @member {Uint8Array} transaction + * @member {Uint8Array|null|undefined} transaction * @memberof google.datastore.v1.ReadOptions * @instance */ - ReadOptions.prototype.transaction = $util.newBuffer([]); + ReadOptions.prototype.transaction = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -10140,19 +10140,19 @@ /** * PathElement id. - * @member {number|Long} id + * @member {number|Long|null|undefined} id * @memberof google.datastore.v1.Key.PathElement * @instance */ - PathElement.prototype.id = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + PathElement.prototype.id = null; /** * PathElement name. - * @member {string} name + * @member {string|null|undefined} name * @memberof google.datastore.v1.Key.PathElement * @instance */ - PathElement.prototype.name = ""; + PathElement.prototype.name = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -10619,35 +10619,35 @@ /** * Value nullValue. - * @member {google.protobuf.NullValue} nullValue + * @member {google.protobuf.NullValue|null|undefined} nullValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.nullValue = 0; + Value.prototype.nullValue = null; /** * Value booleanValue. - * @member {boolean} booleanValue + * @member {boolean|null|undefined} booleanValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.booleanValue = false; + Value.prototype.booleanValue = null; /** * Value integerValue. - * @member {number|Long} integerValue + * @member {number|Long|null|undefined} integerValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.integerValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + Value.prototype.integerValue = null; /** * Value doubleValue. - * @member {number} doubleValue + * @member {number|null|undefined} doubleValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.doubleValue = 0; + Value.prototype.doubleValue = null; /** * Value timestampValue. @@ -10667,19 +10667,19 @@ /** * Value stringValue. - * @member {string} stringValue + * @member {string|null|undefined} stringValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.stringValue = ""; + Value.prototype.stringValue = null; /** * Value blobValue. - * @member {Uint8Array} blobValue + * @member {Uint8Array|null|undefined} blobValue * @memberof google.datastore.v1.Value * @instance */ - Value.prototype.blobValue = $util.newBuffer([]); + Value.prototype.blobValue = null; /** * Value geoPointValue. @@ -14152,11 +14152,11 @@ /** * GqlQueryParameter cursor. - * @member {Uint8Array} cursor + * @member {Uint8Array|null|undefined} cursor * @memberof google.datastore.v1.GqlQueryParameter * @instance */ - GqlQueryParameter.prototype.cursor = $util.newBuffer([]); + GqlQueryParameter.prototype.cursor = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -15094,43 +15094,43 @@ /** * HttpRule get. - * @member {string} get + * @member {string|null|undefined} get * @memberof google.api.HttpRule * @instance */ - HttpRule.prototype.get = ""; + HttpRule.prototype.get = null; /** * HttpRule put. - * @member {string} put + * @member {string|null|undefined} put * @memberof google.api.HttpRule * @instance */ - HttpRule.prototype.put = ""; + HttpRule.prototype.put = null; /** * HttpRule post. - * @member {string} post + * @member {string|null|undefined} post * @memberof google.api.HttpRule * @instance */ - HttpRule.prototype.post = ""; + HttpRule.prototype.post = null; /** * HttpRule delete. - * @member {string} delete + * @member {string|null|undefined} delete * @memberof google.api.HttpRule * @instance */ - HttpRule.prototype["delete"] = ""; + HttpRule.prototype["delete"] = null; /** * HttpRule patch. - * @member {string} patch + * @member {string|null|undefined} patch * @memberof google.api.HttpRule * @instance */ - HttpRule.prototype.patch = ""; + HttpRule.prototype.patch = null; /** * HttpRule custom. @@ -15733,6 +15733,7 @@ * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value * @property {number} INPUT_ONLY=4 INPUT_ONLY value * @property {number} IMMUTABLE=5 IMMUTABLE value + * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value */ api.FieldBehavior = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15742,6 +15743,7 @@ values[valuesById[3] = "OUTPUT_ONLY"] = 3; values[valuesById[4] = "INPUT_ONLY"] = 4; values[valuesById[5] = "IMMUTABLE"] = 5; + values[valuesById[6] = "UNORDERED_LIST"] = 6; return values; })(); @@ -21189,6 +21191,7 @@ case 3: case 4: case 5: + case 6: break; } } @@ -21284,6 +21287,10 @@ case 5: message[".google.api.fieldBehavior"][i] = 5; break; + case "UNORDERED_LIST": + case 6: + message[".google.api.fieldBehavior"][i] = 6; + break; } } return message; @@ -25448,35 +25455,35 @@ /** * Value nullValue. - * @member {google.protobuf.NullValue} nullValue + * @member {google.protobuf.NullValue|null|undefined} nullValue * @memberof google.protobuf.Value * @instance */ - Value.prototype.nullValue = 0; + Value.prototype.nullValue = null; /** * Value numberValue. - * @member {number} numberValue + * @member {number|null|undefined} numberValue * @memberof google.protobuf.Value * @instance */ - Value.prototype.numberValue = 0; + Value.prototype.numberValue = null; /** * Value stringValue. - * @member {string} stringValue + * @member {string|null|undefined} stringValue * @memberof google.protobuf.Value * @instance */ - Value.prototype.stringValue = ""; + Value.prototype.stringValue = null; /** * Value boolValue. - * @member {boolean} boolValue + * @member {boolean|null|undefined} boolValue * @memberof google.protobuf.Value * @instance */ - Value.prototype.boolValue = false; + Value.prototype.boolValue = null; /** * Value structValue. diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index f38ef5ad7fa..0c31642a0e2 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1580,14 +1580,15 @@ "REQUIRED": 2, "OUTPUT_ONLY": 3, "INPUT_ONLY": 4, - "IMMUTABLE": 5 + "IMMUTABLE": 5, + "UNORDERED_LIST": 6 } } } }, "protobuf": { "options": { - "go_package": "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor", + "go_package": "google.golang.org/protobuf/types/descriptorpb", "java_package": "com.google.protobuf", "java_outer_classname": "DescriptorProtos", "csharp_namespace": "Google.Protobuf.Reflection", diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata index bb20f9a93c2..44e593f8717 100644 --- a/handwritten/nodejs-datastore/synth.metadata +++ b/handwritten/nodejs-datastore/synth.metadata @@ -4,15 +4,15 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "1f96d86d8fa6063bd3f592026da72c35a350f453" + "sha": "cadb3f99f6908ba0c21b02b2eaafea93a7a08c27" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "d189e871205fea665a9648f7c4676f027495ccaf", - "internalRef": "345596855" + "sha": "5477122b3e8037a1dc5bc920536158edbd151dc4", + "internalRef": "361273630" } }, { From 74f3b58348836346104d096c881bfe838e80e4eb Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Thu, 6 May 2021 17:50:13 -0700 Subject: [PATCH 617/820] fix(deps): require google-gax v2.12.0 (#825) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8f1a9783c13..27ebc083521 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,7 +47,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.9.2", + "google-gax": "^2.12.0", "is": "^3.3.0", "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", From c5be4a98675406679fb77557549f0c096aad2dae Mon Sep 17 00:00:00 2001 From: Jeffrey Rennie Date: Wed, 26 May 2021 19:50:41 -0700 Subject: [PATCH 618/820] chore: migrate to owl bot (#834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: migrate to owl bot * chore: copy files from googleapis-gen fb91803ccef5d7c695139b22788b309e2197856b * chore: run the post processor * 🦉 Updates from OwlBot * chore: update post processor docker image * 🦉 Updates from OwlBot Co-authored-by: Owl Bot --- .../nodejs-datastore/.github/.OwlBot.yaml | 28 ++++++ handwritten/nodejs-datastore/owlbot.py | 59 ++++++++++++ handwritten/nodejs-datastore/src/entity.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 5 +- .../src/v1/datastore_admin_client.ts | 89 +++++++++---------- .../src/v1/datastore_client.ts | 78 ++++++++-------- handwritten/nodejs-datastore/synth.metadata | 46 ---------- handwritten/nodejs-datastore/synth.py | 37 -------- .../nodejs-datastore/system-test/datastore.ts | 5 +- .../test/gapic_datastore_admin_v1.ts | 57 +++++------- .../test/gapic_datastore_v1.ts | 42 ++++----- handwritten/nodejs-datastore/test/index.ts | 10 +-- handwritten/nodejs-datastore/test/query.ts | 2 +- handwritten/nodejs-datastore/test/request.ts | 21 +++-- .../nodejs-datastore/test/transaction.ts | 8 +- 15 files changed, 230 insertions(+), 259 deletions(-) create mode 100644 handwritten/nodejs-datastore/.github/.OwlBot.yaml create mode 100644 handwritten/nodejs-datastore/owlbot.py delete mode 100644 handwritten/nodejs-datastore/synth.metadata delete mode 100644 handwritten/nodejs-datastore/synth.py diff --git a/handwritten/nodejs-datastore/.github/.OwlBot.yaml b/handwritten/nodejs-datastore/.github/.OwlBot.yaml new file mode 100644 index 00000000000..ab6146536a5 --- /dev/null +++ b/handwritten/nodejs-datastore/.github/.OwlBot.yaml @@ -0,0 +1,28 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +docker: + image: gcr.io/repo-automation-bots/owlbot-nodejs:latest + + +deep-remove-regex: + - /owl-bot-staging + +deep-copy-regex: + - source: /google/datastore/(v.*)/.*-nodejs/(.*) + dest: /owl-bot-staging/$1/$2 + - source: /google/datastore/(admin/v.*)/.*-nodejs/(.*) + dest: /owl-bot-staging/$1/$2 + +begin-after-commit-hash: fb91803ccef5d7c695139b22788b309e2197856b + diff --git a/handwritten/nodejs-datastore/owlbot.py b/handwritten/nodejs-datastore/owlbot.py new file mode 100644 index 00000000000..ac9cc386db2 --- /dev/null +++ b/handwritten/nodejs-datastore/owlbot.py @@ -0,0 +1,59 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import synthtool as s +import synthtool.gcp as gcp +import synthtool.languages.node as node +import logging +from pathlib import Path +from synthtool import _tracked_paths +import shutil + +logging.basicConfig(level=logging.DEBUG) + +staging = Path("owl-bot-staging") + +if staging.is_dir(): + logging.info(f"Copying files from staging directory ${staging}.") + + # Copy the datastore library. + for version in ['v1']: + library = staging / version + _tracked_paths.add(library) + s.copy([library],excludes=[ + 'package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts']) + + # Copy the admin library. + for version in ['v1']: + library = staging / 'admin' / version + _tracked_paths.add(library) + s.copy([library],excludes=[ + 'package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts', 'tsconfig.json', 'tslint.json', + 'system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js', + '.jsdoc.js', 'webpack.config.js']) + + # Patch the code. + system_test_files = ['system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] + for file in system_test_files: + s.replace(file, 'DatastoreClient', 'Datastore') + s.replace(file, 'client.close', '// client.close'); # does not work with the manual layer + + # The staging directory should never be merged into the main branch. + shutil.rmtree(staging) + +common_templates = gcp.CommonTemplates() +templates = common_templates.node_library(source_location="build/src") +s.copy(templates) + +node.postprocess_gapic_library_hermetic() diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index a8c812f8fc1..4869c0148ec 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -364,7 +364,7 @@ export namespace entity { isDsInt(identifier) || isDsIntLike(identifier) ) { - this.id = (((identifier as {}) as Int).value || identifier) as string; + this.id = ((identifier as {} as Int).value || identifier) as string; } else if (is.string(identifier)) { this.name = identifier as string; } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 2efa50a024a..13f68c6b9fa 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -849,9 +849,8 @@ class DatastoreRequest { try { await Promise.all( arrify(entities).map(async (objEntity: Entity) => { - const obj: Entity = DatastoreRequest.prepareEntityObject_( - objEntity - ); + const obj: Entity = + DatastoreRequest.prepareEntityObject_(objEntity); const [data] = await transaction.get(obj.key); obj.method = 'upsert'; obj.data = Object.assign({}, data, obj.data); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 0dcfe79765d..dd9b58a9b1d 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -353,13 +353,14 @@ export class DatastoreAdminClient { ]; for (const methodName of datastoreAdminStubMethods) { const callPromise = this.datastoreAdminStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, + stub => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, (err: Error | null | undefined) => () => { throw err; } @@ -515,11 +516,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.getIndex(request, options, callback); } @@ -651,11 +651,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.exportEntities(request, options, callback); } @@ -818,11 +817,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.importEntities(request, options, callback); } @@ -976,11 +974,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.createIndex(request, options, callback); } @@ -1129,11 +1126,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.deleteIndex(request, options, callback); } @@ -1263,11 +1259,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.listIndexes(request, options, callback); } @@ -1304,11 +1299,10 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); const callSettings = new gax.CallSettings(options); this.initialize(); return this.descriptors.page.listIndexes.createStream( @@ -1356,17 +1350,16 @@ export class DatastoreAdminClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); options = options || {}; const callSettings = new gax.CallSettings(options); this.initialize(); return this.descriptors.page.listIndexes.asyncIterate( this.innerApiCalls['listIndexes'] as GaxCall, - (request as unknown) as RequestType, + request as unknown as RequestType, callSettings ) as AsyncIterable; } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 7f3fb0a9de9..01745b4d4af 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -214,13 +214,14 @@ export class DatastoreClient { ]; for (const methodName of datastoreStubMethods) { const callPromise = this.datastoreStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, + stub => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, (err: Error | null | undefined) => () => { throw err; } @@ -375,11 +376,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.lookup(request, options, callback); } @@ -470,11 +470,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); } @@ -558,11 +557,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.beginTransaction(request, options, callback); } @@ -663,11 +661,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.commit(request, options, callback); } @@ -750,11 +747,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.rollback(request, options, callback); } @@ -838,11 +834,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.allocateIds(request, options, callback); } @@ -928,11 +923,10 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = gax.routingHeader.fromParams({ - project_id: request.projectId || '', - }); + options.otherArgs.headers['x-goog-request-params'] = + gax.routingHeader.fromParams({ + project_id: request.projectId || '', + }); this.initialize(); return this.innerApiCalls.reserveIds(request, options, callback); } diff --git a/handwritten/nodejs-datastore/synth.metadata b/handwritten/nodejs-datastore/synth.metadata deleted file mode 100644 index 44e593f8717..00000000000 --- a/handwritten/nodejs-datastore/synth.metadata +++ /dev/null @@ -1,46 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "https://github.com/googleapis/nodejs-datastore.git", - "sha": "cadb3f99f6908ba0c21b02b2eaafea93a7a08c27" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "5477122b3e8037a1dc5bc920536158edbd151dc4", - "internalRef": "361273630" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "318e351e26ba65b2b3cfa3f61b3b64e3540c3525" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "datastore", - "apiVersion": "v1", - "language": "nodejs", - "generator": "bazel" - } - }, - { - "client": { - "source": "googleapis", - "apiName": "datastore-admin", - "apiVersion": "v1", - "language": "nodejs", - "generator": "bazel" - } - } - ] -} \ No newline at end of file diff --git a/handwritten/nodejs-datastore/synth.py b/handwritten/nodejs-datastore/synth.py deleted file mode 100644 index dd1f17bf221..00000000000 --- a/handwritten/nodejs-datastore/synth.py +++ /dev/null @@ -1,37 +0,0 @@ -import synthtool as s -import synthtool.gcp as gcp -import synthtool.languages.node as node -import logging - -logging.basicConfig(level=logging.DEBUG) - -AUTOSYNTH_MULTIPLE_COMMITS = True - -gapic = gcp.GAPICBazel() -version = 'v1' -v1_library = gapic.node_library('datastore', version, proto_path=f'google/datastore/{version}') - -# Copy everything except for top level index, package.json, and README.md -s.copy( - v1_library, - excludes=['package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts']) - -adminv1_library = gapic.node_library('datastore-admin', version, proto_path=f'google/datastore/admin/{version}') - -# copy over the protos, but leave out the skeleton stuff -s.copy( - adminv1_library, - excludes=['package.json', 'README.md', 'src/index.ts', 'src/v1/index.ts', 'tsconfig.json', 'tslint.json', - 'system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js', - '.jsdoc.js', 'webpack.config.js'] -) - -system_test_files = ['system-test/fixtures/sample/src/index.ts', 'system-test/fixtures/sample/src/index.js'] -for file in system_test_files: - s.replace(file, 'DatastoreClient', 'Datastore') - s.replace(file, 'client.close', '// client.close'); # does not work with the manual layer -common_templates = gcp.CommonTemplates() -templates = common_templates.node_library(source_location="build/src") -s.copy(templates) - -node.postprocess_gapic_library() diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index bccf9d72e37..e6d4267be31 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1035,8 +1035,9 @@ describe('Datastore', () => { // This is a >20 minute operation, so we're just going to make sure the // right type of operation was started. assert.strictEqual( - (importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata) - .inputUrl, + ( + importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata + ).inputUrl, `gs://${exportedFile.bucket.name}/${exportedFile.name}` ); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index a49d2f95186..39924823e8e 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -28,10 +28,9 @@ import {PassThrough} from 'stream'; import {protobuf, LROperation, operationsProtos} from 'google-gax'; function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message).toObject( - instance as protobuf.Message, - {defaults: true} - ); + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, {defaults: true}); return (instance.constructor as typeof protobuf.Message).fromObject( filledObject ) as T; @@ -281,9 +280,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.admin.v1.Index() ); - client.innerApiCalls.getIndex = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.getIndex = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.getIndex( request, @@ -359,9 +357,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.exportEntities = stubLongRunningCall( - expectedResponse - ); + client.innerApiCalls.exportEntities = + stubLongRunningCall(expectedResponse); const [operation] = await client.exportEntities(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); @@ -393,9 +390,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.exportEntities = stubLongRunningCallWithCallback( - expectedResponse - ); + client.innerApiCalls.exportEntities = + stubLongRunningCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.exportEntities( request, @@ -555,9 +551,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.importEntities = stubLongRunningCall( - expectedResponse - ); + client.innerApiCalls.importEntities = + stubLongRunningCall(expectedResponse); const [operation] = await client.importEntities(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); @@ -589,9 +584,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.importEntities = stubLongRunningCallWithCallback( - expectedResponse - ); + client.innerApiCalls.importEntities = + stubLongRunningCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.importEntities( request, @@ -783,9 +777,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.createIndex = stubLongRunningCallWithCallback( - expectedResponse - ); + client.innerApiCalls.createIndex = + stubLongRunningCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.createIndex( request, @@ -974,9 +967,8 @@ describe('v1.DatastoreAdminClient', () => { const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); - client.innerApiCalls.deleteIndex = stubLongRunningCallWithCallback( - expectedResponse - ); + client.innerApiCalls.deleteIndex = + stubLongRunningCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.deleteIndex( request, @@ -1168,9 +1160,8 @@ describe('v1.DatastoreAdminClient', () => { generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), ]; - client.innerApiCalls.listIndexes = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.listIndexes = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.listIndexes( request, @@ -1242,9 +1233,8 @@ describe('v1.DatastoreAdminClient', () => { generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), ]; - client.descriptors.page.listIndexes.createStream = stubPageStreamingCall( - expectedResponse - ); + client.descriptors.page.listIndexes.createStream = + stubPageStreamingCall(expectedResponse); const stream = client.listIndexesStream(request); const promise = new Promise((resolve, reject) => { const responses: protos.google.datastore.admin.v1.Index[] = []; @@ -1338,9 +1328,8 @@ describe('v1.DatastoreAdminClient', () => { generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), ]; - client.descriptors.page.listIndexes.asyncIterate = stubAsyncIterationCall( - expectedResponse - ); + client.descriptors.page.listIndexes.asyncIterate = + stubAsyncIterationCall(expectedResponse); const responses: protos.google.datastore.admin.v1.IIndex[] = []; const iterable = client.listIndexesAsync(request); for await (const resource of iterable) { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 894e236be09..e0c41f63004 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -26,10 +26,9 @@ import * as datastoreModule from '../src'; import {protobuf} from 'google-gax'; function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message).toObject( - instance as protobuf.Message, - {defaults: true} - ); + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, {defaults: true}); return (instance.constructor as typeof protobuf.Message).fromObject( filledObject ) as T; @@ -184,9 +183,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); - client.innerApiCalls.lookup = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.lookup = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.lookup( request, @@ -293,9 +291,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); - client.innerApiCalls.runQuery = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.runQuery = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.runQuery( request, @@ -402,9 +399,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); - client.innerApiCalls.beginTransaction = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.beginTransaction = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.beginTransaction( request, @@ -514,9 +510,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); - client.innerApiCalls.commit = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.commit = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.commit( request, @@ -623,9 +618,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); - client.innerApiCalls.rollback = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.rollback = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.rollback( request, @@ -732,9 +726,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); - client.innerApiCalls.allocateIds = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.allocateIds = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.allocateIds( request, @@ -844,9 +837,8 @@ describe('v1.DatastoreClient', () => { const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); - client.innerApiCalls.reserveIds = stubSimpleCallWithCallback( - expectedResponse - ); + client.innerApiCalls.reserveIds = + stubSimpleCallWithCallback(expectedResponse); const promise = new Promise((resolve, reject) => { client.reserveIds( request, diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 42bb76d5291..06cbe9849f2 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -95,14 +95,14 @@ const fakeGoogleGax = { constructor(opts: gax.GrpcClientOptions) { // super constructor must be called first! super(opts); - this.grpc = ({ + this.grpc = { credentials: { // eslint-disable-next-line @typescript-eslint/no-explicit-any createInsecure(...args: any[]) { return (createInsecureOverride || (() => {}))(...args); }, }, - } as {}) as gax.GrpcModule; + } as {} as gax.GrpcModule; } }, }; @@ -1762,7 +1762,7 @@ describe('Datastore', () => { ]; fakeEntity.entityToEntityProto = (entity: EntityObject) => { - return (entity as unknown) as EntityProto; + return entity as unknown as EntityProto; }; datastore.request_ = (config: RequestConfig) => { assert.strictEqual( @@ -1845,9 +1845,9 @@ describe('Datastore', () => { sandbox.stub(fakeEntity, 'keyFromKeyProto').callsFake(keyProto => { keyProtos.push(keyProto); - return ({ + return { id: ids[keyProtos.length - 1], - } as {}) as entity.Key; + } as {} as entity.Key; }); datastore.save( diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index d2546f38353..6a99685de30 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -49,7 +49,7 @@ describe('Query', () => { new Query(SCOPE, '', KINDS), new Query(SCOPE, null, KINDS), new Query(SCOPE, undefined, KINDS), - new Query(SCOPE, (0 as {}) as string, KINDS), + new Query(SCOPE, 0 as {} as string, KINDS), new Query(SCOPE, KINDS), ].forEach(query => { assert.strictEqual(query.namespace, null); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 830c6f605a5..15892900172 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -729,8 +729,8 @@ describe('Request', () => { request.get(keys, (err: Error) => { assert.ifError(err); - const createReadStreamOptions = request.createReadStream.getCall(0) - .args[1]; + const createReadStreamOptions = + request.createReadStream.getCall(0).args[1]; assert.strictEqual(createReadStreamOptions.wrapNumbers, undefined); done(); }); @@ -740,8 +740,8 @@ describe('Request', () => { request.get(keys, {wrapNumbers: true}, (err: Error) => { assert.ifError(err); - const createReadStreamOptions = request.createReadStream.getCall(0) - .args[1]; + const createReadStreamOptions = + request.createReadStream.getCall(0).args[1]; assert.strictEqual( typeof createReadStreamOptions.wrapNumbers, 'boolean' @@ -762,9 +762,8 @@ describe('Request', () => { (err: Error) => { assert.ifError(err); - const createReadStreamOptions = request.createReadStream.getCall( - 0 - ).args[1]; + const createReadStreamOptions = + request.createReadStream.getCall(0).args[1]; assert.strictEqual( createReadStreamOptions.wrapNumbers, integerTypeCastOptions @@ -1067,11 +1066,11 @@ describe('Request', () => { limitVal: 1, offsetVal: 8, }; - const queryProto = ({ + const queryProto = { limit: { value: query.limitVal, }, - } as {}) as QueryProto; + } as {} as QueryProto; let timesRequestCalled = 0; let startCalled = false; @@ -1399,11 +1398,11 @@ describe('Request', () => { const PROJECT_ID = 'project-id'; const NAMESPACE = 'a-namespace'; - const DATASTORE = ({ + const DATASTORE = { request_() {}, projectId: PROJECT_ID, namespace: NAMESPACE, - } as {}) as ds.Datastore; + } as {} as ds.Datastore; const key = { namespace: 'ns', diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index f97020c56f7..41e62be1df5 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -56,11 +56,11 @@ describe('Transaction', () => { const PROJECT_ID = 'project-id'; const NAMESPACE = 'a-namespace'; - const DATASTORE = ({ + const DATASTORE = { request_() {}, projectId: PROJECT_ID, namespace: NAMESPACE, - } as {}) as Datastore; + } as {} as Datastore; function key(path: Path) { return new entity.Key({path: arrify(path)}); @@ -573,13 +573,13 @@ describe('Transaction', () => { it('should allow full override of transactionOptions', done => { transaction.readOnly = true; - const options = ({ + const options = { transactionOptions: { readWrite: { previousTransaction: 'transaction-id', }, }, - } as {}) as TransactionOptions; + } as {} as TransactionOptions; transaction.request_ = config => { assert.deepStrictEqual(config.reqOpts, options); From 5db04eadf514db63e122c7f9af7e349f2efabbd7 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 8 Jun 2021 21:13:27 +0200 Subject: [PATCH 619/820] chore(deps): update dependency @types/node to v14 (#831) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 27ebc083521..904308b8863 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -61,7 +61,7 @@ "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", "@types/mocha": "^8.0.0", - "@types/node": "^13.9.0", + "@types/node": "^14.0.0", "@types/proxyquire": "^1.3.28", "@types/pumpify": "^1.4.1", "@types/sinon": "^10.0.0", From eaf2dba93c873a5897bb227b35824a7c499c83b5 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 8 Jun 2021 21:20:14 +0200 Subject: [PATCH 620/820] fix(deps): update dependency sinon to v11 (#832) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 904308b8863..ac44f62d3bd 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -78,7 +78,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^10.0.0", + "sinon": "^11.0.0", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack-cli": "^4.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a7b1b8733fe..e12ef657581 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^6.4.0", - "sinon": "^10.0.0" + "sinon": "^11.0.0" }, "devDependencies": { "chai": "^4.2.0", From 0c2847227439185f1567e0f825495d481efed40f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 10 Jun 2021 06:26:13 +0000 Subject: [PATCH 621/820] chore: release 6.4.1 (#826) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.0...v6.4.1) (2021-06-10) ### Bug Fixes * **deps:** require google-gax v2.12.0 ([#825](https://www.github.com/googleapis/nodejs-datastore/issues/825)) ([0dee08a](https://www.github.com/googleapis/nodejs-datastore/commit/0dee08a912620c114ddfcf38a1d0636893f6f15a)) * **deps:** update dependency sinon to v11 ([#832](https://www.github.com/googleapis/nodejs-datastore/issues/832)) ([d32610c](https://www.github.com/googleapis/nodejs-datastore/commit/d32610cdbe08151effc1a8d4b74540e68cbf4012)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index da6a014ce65..ae54f431672 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.0...v6.4.1) (2021-06-10) + + +### Bug Fixes + +* **deps:** require google-gax v2.12.0 ([#825](https://www.github.com/googleapis/nodejs-datastore/issues/825)) ([0dee08a](https://www.github.com/googleapis/nodejs-datastore/commit/0dee08a912620c114ddfcf38a1d0636893f6f15a)) +* **deps:** update dependency sinon to v11 ([#832](https://www.github.com/googleapis/nodejs-datastore/issues/832)) ([d32610c](https://www.github.com/googleapis/nodejs-datastore/commit/d32610cdbe08151effc1a8d4b74540e68cbf4012)) + ## [6.4.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.3.1...v6.4.0) (2021-04-29) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ac44f62d3bd..6e5fb43a11b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.0", + "version": "6.4.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index e12ef657581..238d50b412d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.0", + "@google-cloud/datastore": "^6.4.1", "sinon": "^11.0.0" }, "devDependencies": { From 0ef344969f1a49939511720980b0ed0d5fb77867 Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Thu, 10 Jun 2021 23:00:23 +0200 Subject: [PATCH 622/820] chore(nodejs): remove api-extractor dependencies (#840) --- handwritten/nodejs-datastore/package.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 6e5fb43a11b..a2ccbd4c2d4 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -38,9 +38,7 @@ "system-test": "mocha build/system-test --timeout 600000", "pretest": "npm run compile", "test": "c8 mocha build/test", - "precompile": "gts clean", - "api-extractor": "api-extractor run --local", - "api-documenter": "api-documenter yaml --input-folder=temp" + "precompile": "gts clean" }, "dependencies": { "@google-cloud/promisify": "^2.0.0", @@ -55,8 +53,6 @@ }, "devDependencies": { "@google-cloud/storage": "^5.3.0", - "@microsoft/api-documenter": "^7.8.10", - "@microsoft/api-extractor": "^7.8.10", "@types/extend": "^3.0.1", "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", From 6a457971b13c91957705653ca2a5f453114d700f Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 23 Jun 2021 15:48:31 +0000 Subject: [PATCH 623/820] fix: make request optional in all cases (#843) ... chore: update gapic-generator-ruby to the latest commit chore: release gapic-generator-typescript 1.5.0 Committer: @miraleung PiperOrigin-RevId: 380641501 Source-Link: https://github.com/googleapis/googleapis/commit/076f7e9f0b258bdb54338895d7251b202e8f0de3 Source-Link: https://github.com/googleapis/googleapis-gen/commit/27e4c88b4048e5f56508d4e1aa417d60a3380892 --- .../src/v1/datastore_admin_client.ts | 53 +++++++------------ .../src/v1/datastore_client.ts | 49 +++++++---------- 2 files changed, 36 insertions(+), 66 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index dd9b58a9b1d..07df81af243 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -27,11 +27,11 @@ import { PaginationCallback, GaxCall, } from 'google-gax'; -import * as path from 'path'; import {Transform} from 'stream'; import {RequestType} from 'google-gax/build/src/apitypes'; import * as protos from '../../protos/protos'; +import jsonProtos = require('../../protos/protos.json'); /** * Client JSON configuration object, loaded from * `src/v1/datastore_admin_client_config.json`. @@ -201,27 +201,14 @@ export class DatastoreAdminClient { } if (!opts.fallback) { clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); + } else if (opts.fallback === 'rest') { + clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); } if (opts.libName && opts.libVersion) { clientHeader.push(`${opts.libName}/${opts.libVersion}`); } // Load the applicable protos. - // For Node.js, pass the path to JSON proto file. - // For browsers, pass the JSON content. - - const nodejsProtoPath = path.join( - __dirname, - '..', - '..', - 'protos', - 'protos.json' - ); - this._protos = this._gaxGrpc.loadProto( - opts.fallback - ? // eslint-disable-next-line @typescript-eslint/no-var-requires - require('../../protos/protos.json') - : nodejsProtoPath - ); + this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); // Some of the methods on this service return "paged" results, // (e.g. 50 results at a time, with tokens to get subsequent @@ -234,15 +221,11 @@ export class DatastoreAdminClient { ), }; + const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos); + // This API contains "long-running operations", which return a // an Operation object that allows for tracking of the operation, // rather than holding a request open. - const protoFilesRoot = opts.fallback - ? this._gaxModule.protobuf.Root.fromJSON( - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('../../protos/protos.json') - ) - : this._gaxModule.protobuf.loadSync(nodejsProtoPath); this.operationsClient = this._gaxModule .lro({ @@ -439,7 +422,7 @@ export class DatastoreAdminClient { // -- Service calls -- // ------------------- getIndex( - request: protos.google.datastore.admin.v1.IGetIndexRequest, + request?: protos.google.datastore.admin.v1.IGetIndexRequest, options?: CallOptions ): Promise< [ @@ -485,7 +468,7 @@ export class DatastoreAdminClient { * const [response] = await client.getIndex(request); */ getIndex( - request: protos.google.datastore.admin.v1.IGetIndexRequest, + request?: protos.google.datastore.admin.v1.IGetIndexRequest, optionsOrCallback?: | CallOptions | Callback< @@ -525,7 +508,7 @@ export class DatastoreAdminClient { } exportEntities( - request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, options?: CallOptions ): Promise< [ @@ -611,7 +594,7 @@ export class DatastoreAdminClient { * const [response] = await operation.promise(); */ exportEntities( - request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, optionsOrCallback?: | CallOptions | Callback< @@ -696,7 +679,7 @@ export class DatastoreAdminClient { >; } importEntities( - request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, options?: CallOptions ): Promise< [ @@ -777,7 +760,7 @@ export class DatastoreAdminClient { * const [response] = await operation.promise(); */ importEntities( - request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, optionsOrCallback?: | CallOptions | Callback< @@ -862,7 +845,7 @@ export class DatastoreAdminClient { >; } createIndex( - request: protos.google.datastore.admin.v1.ICreateIndexRequest, + request?: protos.google.datastore.admin.v1.ICreateIndexRequest, options?: CallOptions ): Promise< [ @@ -934,7 +917,7 @@ export class DatastoreAdminClient { * const [response] = await operation.promise(); */ createIndex( - request: protos.google.datastore.admin.v1.ICreateIndexRequest, + request?: protos.google.datastore.admin.v1.ICreateIndexRequest, optionsOrCallback?: | CallOptions | Callback< @@ -1019,7 +1002,7 @@ export class DatastoreAdminClient { >; } deleteIndex( - request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + request?: protos.google.datastore.admin.v1.IDeleteIndexRequest, options?: CallOptions ): Promise< [ @@ -1086,7 +1069,7 @@ export class DatastoreAdminClient { * const [response] = await operation.promise(); */ deleteIndex( - request: protos.google.datastore.admin.v1.IDeleteIndexRequest, + request?: protos.google.datastore.admin.v1.IDeleteIndexRequest, optionsOrCallback?: | CallOptions | Callback< @@ -1171,7 +1154,7 @@ export class DatastoreAdminClient { >; } listIndexes( - request: protos.google.datastore.admin.v1.IListIndexesRequest, + request?: protos.google.datastore.admin.v1.IListIndexesRequest, options?: CallOptions ): Promise< [ @@ -1226,7 +1209,7 @@ export class DatastoreAdminClient { * for more details and examples. */ listIndexes( - request: protos.google.datastore.admin.v1.IListIndexesRequest, + request?: protos.google.datastore.admin.v1.IListIndexesRequest, optionsOrCallback?: | CallOptions | PaginationCallback< diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 01745b4d4af..797ceec58e4 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -19,9 +19,9 @@ /* global window */ import * as gax from 'google-gax'; import {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; -import * as path from 'path'; import * as protos from '../../protos/protos'; +import jsonProtos = require('../../protos/protos.json'); /** * Client JSON configuration object, loaded from * `src/v1/datastore_client_config.json`. @@ -136,27 +136,14 @@ export class DatastoreClient { } if (!opts.fallback) { clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); + } else if (opts.fallback === 'rest') { + clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); } if (opts.libName && opts.libVersion) { clientHeader.push(`${opts.libName}/${opts.libVersion}`); } // Load the applicable protos. - // For Node.js, pass the path to JSON proto file. - // For browsers, pass the JSON content. - - const nodejsProtoPath = path.join( - __dirname, - '..', - '..', - 'protos', - 'protos.json' - ); - this._protos = this._gaxGrpc.loadProto( - opts.fallback - ? // eslint-disable-next-line @typescript-eslint/no-var-requires - require('../../protos/protos.json') - : nodejsProtoPath - ); + this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( @@ -297,7 +284,7 @@ export class DatastoreClient { // -- Service calls -- // ------------------- lookup( - request: protos.google.datastore.v1.ILookupRequest, + request?: protos.google.datastore.v1.ILookupRequest, options?: CallOptions ): Promise< [ @@ -345,7 +332,7 @@ export class DatastoreClient { * const [response] = await client.lookup(request); */ lookup( - request: protos.google.datastore.v1.ILookupRequest, + request?: protos.google.datastore.v1.ILookupRequest, optionsOrCallback?: | CallOptions | Callback< @@ -384,7 +371,7 @@ export class DatastoreClient { return this.innerApiCalls.lookup(request, options, callback); } runQuery( - request: protos.google.datastore.v1.IRunQueryRequest, + request?: protos.google.datastore.v1.IRunQueryRequest, options?: CallOptions ): Promise< [ @@ -439,7 +426,7 @@ export class DatastoreClient { * const [response] = await client.runQuery(request); */ runQuery( - request: protos.google.datastore.v1.IRunQueryRequest, + request?: protos.google.datastore.v1.IRunQueryRequest, optionsOrCallback?: | CallOptions | Callback< @@ -478,7 +465,7 @@ export class DatastoreClient { return this.innerApiCalls.runQuery(request, options, callback); } beginTransaction( - request: protos.google.datastore.v1.IBeginTransactionRequest, + request?: protos.google.datastore.v1.IBeginTransactionRequest, options?: CallOptions ): Promise< [ @@ -524,7 +511,7 @@ export class DatastoreClient { * const [response] = await client.beginTransaction(request); */ beginTransaction( - request: protos.google.datastore.v1.IBeginTransactionRequest, + request?: protos.google.datastore.v1.IBeginTransactionRequest, optionsOrCallback?: | CallOptions | Callback< @@ -565,7 +552,7 @@ export class DatastoreClient { return this.innerApiCalls.beginTransaction(request, options, callback); } commit( - request: protos.google.datastore.v1.ICommitRequest, + request?: protos.google.datastore.v1.ICommitRequest, options?: CallOptions ): Promise< [ @@ -630,7 +617,7 @@ export class DatastoreClient { * const [response] = await client.commit(request); */ commit( - request: protos.google.datastore.v1.ICommitRequest, + request?: protos.google.datastore.v1.ICommitRequest, optionsOrCallback?: | CallOptions | Callback< @@ -669,7 +656,7 @@ export class DatastoreClient { return this.innerApiCalls.commit(request, options, callback); } rollback( - request: protos.google.datastore.v1.IRollbackRequest, + request?: protos.google.datastore.v1.IRollbackRequest, options?: CallOptions ): Promise< [ @@ -716,7 +703,7 @@ export class DatastoreClient { * const [response] = await client.rollback(request); */ rollback( - request: protos.google.datastore.v1.IRollbackRequest, + request?: protos.google.datastore.v1.IRollbackRequest, optionsOrCallback?: | CallOptions | Callback< @@ -755,7 +742,7 @@ export class DatastoreClient { return this.innerApiCalls.rollback(request, options, callback); } allocateIds( - request: protos.google.datastore.v1.IAllocateIdsRequest, + request?: protos.google.datastore.v1.IAllocateIdsRequest, options?: CallOptions ): Promise< [ @@ -803,7 +790,7 @@ export class DatastoreClient { * const [response] = await client.allocateIds(request); */ allocateIds( - request: protos.google.datastore.v1.IAllocateIdsRequest, + request?: protos.google.datastore.v1.IAllocateIdsRequest, optionsOrCallback?: | CallOptions | Callback< @@ -842,7 +829,7 @@ export class DatastoreClient { return this.innerApiCalls.allocateIds(request, options, callback); } reserveIds( - request: protos.google.datastore.v1.IReserveIdsRequest, + request?: protos.google.datastore.v1.IReserveIdsRequest, options?: CallOptions ): Promise< [ @@ -892,7 +879,7 @@ export class DatastoreClient { * const [response] = await client.reserveIds(request); */ reserveIds( - request: protos.google.datastore.v1.IReserveIdsRequest, + request?: protos.google.datastore.v1.IReserveIdsRequest, optionsOrCallback?: | CallOptions | Callback< From b10f56fa1ce00ea040c4f68d53c35a23ff72d945 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 23 Jun 2021 15:56:15 +0000 Subject: [PATCH 624/820] chore: release 6.4.2 (#845) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.1...v6.4.2) (2021-06-23) ### Bug Fixes * make request optional in all cases ([#843](https://www.github.com/googleapis/nodejs-datastore/issues/843)) ([d025627](https://www.github.com/googleapis/nodejs-datastore/commit/d0256278d1003a789c8b9ca082f923c5999b3257)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index ae54f431672..5f15eaa3697 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.1...v6.4.2) (2021-06-23) + + +### Bug Fixes + +* make request optional in all cases ([#843](https://www.github.com/googleapis/nodejs-datastore/issues/843)) ([d025627](https://www.github.com/googleapis/nodejs-datastore/commit/d0256278d1003a789c8b9ca082f923c5999b3257)) + ### [6.4.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.0...v6.4.1) (2021-06-10) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a2ccbd4c2d4..bf70bbe2ef0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.1", + "version": "6.4.2", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 238d50b412d..23f4cf82dca 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.1", + "@google-cloud/datastore": "^6.4.2", "sinon": "^11.0.0" }, "devDependencies": { From 942489ae3637c72b44fa48c56abb138d71889728 Mon Sep 17 00:00:00 2001 From: Billy Jacobson Date: Tue, 29 Jun 2021 22:55:26 -0400 Subject: [PATCH 625/820] fix: Resolve getProjectId (#848) * bug: Resolve getProjectId * add tests --- handwritten/nodejs-datastore/src/index.ts | 1 + handwritten/nodejs-datastore/system-test/datastore.ts | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index e43a6e713c8..d873fafde19 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -1749,6 +1749,7 @@ promisifyAll(Datastore, { 'double', 'isDouble', 'geoPoint', + 'getProjectId', 'isGeoPoint', 'index', 'int', diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index e6d4267be31..875a4133e88 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -60,6 +60,11 @@ describe('Datastore', () => { assert.ok(keys); }); + it('should get the project id', async () => { + const projectId = await datastore.getProjectId(); + assert.notEqual(projectId, null); + }); + describe('create, retrieve and delete', () => { const post = { title: 'How to make the perfect pizza in your grill', From 0aba60d9fe809393fbbc7419c8c97d3d4e8ffe4a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 30 Jun 2021 03:02:23 +0000 Subject: [PATCH 626/820] chore: release 6.4.3 (#850) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.3](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.2...v6.4.3) (2021-06-30) ### Bug Fixes * Resolve getProjectId ([#848](https://www.github.com/googleapis/nodejs-datastore/issues/848)) ([9bfa885](https://www.github.com/googleapis/nodejs-datastore/commit/9bfa8857e832435112a38c8ab35f21d9054fbaa5)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 5f15eaa3697..3d6d5f443d2 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.3](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.2...v6.4.3) (2021-06-30) + + +### Bug Fixes + +* Resolve getProjectId ([#848](https://www.github.com/googleapis/nodejs-datastore/issues/848)) ([9bfa885](https://www.github.com/googleapis/nodejs-datastore/commit/9bfa8857e832435112a38c8ab35f21d9054fbaa5)) + ### [6.4.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.1...v6.4.2) (2021-06-23) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index bf70bbe2ef0..4177e8473fa 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.2", + "version": "6.4.3", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 23f4cf82dca..fe689e7e710 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.2", + "@google-cloud/datastore": "^6.4.3", "sinon": "^11.0.0" }, "devDependencies": { From 5812b0bf5879e9c9180d26919f3553adf1f4e73d Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Wed, 30 Jun 2021 12:14:49 -0400 Subject: [PATCH 627/820] fix(deps): google-gax v2.17.0 with mTLS (#849) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4177e8473fa..eb4eb9b579b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.12.0", + "google-gax": "^2.17.0", "is": "^3.3.0", "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", From 8cd93de3cb2dc142fdb7934efbd8b08fcfdf4621 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 30 Jun 2021 16:26:39 +0000 Subject: [PATCH 628/820] chore: release 6.4.4 (#852) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.4](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.3...v6.4.4) (2021-06-30) ### Bug Fixes * **deps:** google-gax v2.17.0 with mTLS ([#849](https://www.github.com/googleapis/nodejs-datastore/issues/849)) ([76fa921](https://www.github.com/googleapis/nodejs-datastore/commit/76fa9217732060e2e408a49d9b6aaa7606ce13e6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 3d6d5f443d2..46b0452e767 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.4](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.3...v6.4.4) (2021-06-30) + + +### Bug Fixes + +* **deps:** google-gax v2.17.0 with mTLS ([#849](https://www.github.com/googleapis/nodejs-datastore/issues/849)) ([76fa921](https://www.github.com/googleapis/nodejs-datastore/commit/76fa9217732060e2e408a49d9b6aaa7606ce13e6)) + ### [6.4.3](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.2...v6.4.3) (2021-06-30) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index eb4eb9b579b..33471fb5991 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.3", + "version": "6.4.4", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index fe689e7e710..14050f68e07 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.3", + "@google-cloud/datastore": "^6.4.4", "sinon": "^11.0.0" }, "devDependencies": { From b85d0ced90dd4eb639877566a8f29dd2eea53db6 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 12 Jul 2021 17:44:29 -0400 Subject: [PATCH 629/820] fix(deps): google-gax v2.17.1 (#853) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 33471fb5991..0418e521d95 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.17.0", + "google-gax": "^2.17.1", "is": "^3.3.0", "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", From fade88811cd7ee5c56440b3ee906975bcf321a7e Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 22:06:16 +0000 Subject: [PATCH 630/820] chore: release 6.4.5 (#854) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.5](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.4...v6.4.5) (2021-07-12) ### Bug Fixes * **deps:** google-gax v2.17.1 ([#853](https://www.github.com/googleapis/nodejs-datastore/issues/853)) ([67b47ce](https://www.github.com/googleapis/nodejs-datastore/commit/67b47cee28f317ea5e4a3e24bd4def2189496dff)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 46b0452e767..5ec541fea2f 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.5](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.4...v6.4.5) (2021-07-12) + + +### Bug Fixes + +* **deps:** google-gax v2.17.1 ([#853](https://www.github.com/googleapis/nodejs-datastore/issues/853)) ([67b47ce](https://www.github.com/googleapis/nodejs-datastore/commit/67b47cee28f317ea5e4a3e24bd4def2189496dff)) + ### [6.4.4](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.3...v6.4.4) (2021-06-30) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0418e521d95..aee1a76cde9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.4", + "version": "6.4.5", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 14050f68e07..408df0e1feb 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.4", + "@google-cloud/datastore": "^6.4.5", "sinon": "^11.0.0" }, "devDependencies": { From d8c8798c66fe6d584fdf1b90006f40de6ca30f98 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 19 Jul 2021 22:34:24 +0000 Subject: [PATCH 631/820] fix: Updating WORKSPACE files to use the newest version of the Typescript generator. (#855) Also removing the explicit generator tag for the IAMPolicy mixin for the kms and pubsub APIS as the generator will now read it from the .yaml file. PiperOrigin-RevId: 385101839 Source-Link: https://github.com/googleapis/googleapis/commit/80f404215a9346259db760d80d0671f28c433453 Source-Link: https://github.com/googleapis/googleapis-gen/commit/d3509d2520fb8db862129633f1cf8406d17454e1 --- .../nodejs-datastore/src/v1/datastore_admin_client.ts | 11 ++++++++++- .../nodejs-datastore/src/v1/datastore_client.ts | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 07df81af243..0fc034e7a2c 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -109,6 +109,7 @@ const version = require('../../../package.json').version; export class DatastoreAdminClient { private _terminated = false; private _opts: ClientOptions; + private _providedCustomServicePath: boolean; private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; @@ -120,6 +121,7 @@ export class DatastoreAdminClient { longrunning: {}, batching: {}, }; + warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: {[name: string]: Function}; operationsClient: gax.OperationsClient; datastoreAdminStub?: Promise<{[name: string]: Function}>; @@ -163,6 +165,9 @@ export class DatastoreAdminClient { const staticMembers = this.constructor as typeof DatastoreAdminClient; const servicePath = opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; const fallback = @@ -293,6 +298,9 @@ export class DatastoreAdminClient { // of calling the API is handled in `google-gax`, with this code // merely providing the destination and request information. this.innerApiCalls = {}; + + // Add a warn function to the client constructor so it can be easily tested. + this.warn = gax.warn; } /** @@ -321,7 +329,8 @@ export class DatastoreAdminClient { ) : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.datastore.admin.v1.DatastoreAdmin, - this._opts + this._opts, + this._providedCustomServicePath ) as Promise<{[method: string]: Function}>; // Iterate over each of the methods that the service provides diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 797ceec58e4..3c4e1de9e75 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -45,6 +45,7 @@ const version = require('../../../package.json').version; export class DatastoreClient { private _terminated = false; private _opts: ClientOptions; + private _providedCustomServicePath: boolean; private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; @@ -56,6 +57,7 @@ export class DatastoreClient { longrunning: {}, batching: {}, }; + warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: {[name: string]: Function}; datastoreStub?: Promise<{[name: string]: Function}>; @@ -98,6 +100,9 @@ export class DatastoreClient { const staticMembers = this.constructor as typeof DatastoreClient; const servicePath = opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; const fallback = @@ -157,6 +162,9 @@ export class DatastoreClient { // of calling the API is handled in `google-gax`, with this code // merely providing the destination and request information. this.innerApiCalls = {}; + + // Add a warn function to the client constructor so it can be easily tested. + this.warn = gax.warn; } /** @@ -185,7 +193,8 @@ export class DatastoreClient { ) : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.datastore.v1.Datastore, - this._opts + this._opts, + this._providedCustomServicePath ) as Promise<{[method: string]: Function}>; // Iterate over each of the methods that the service provides From a89a8d27f3291f0e4bb7b1cd58e931d9809a0ca1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 19 Jul 2021 22:42:25 +0000 Subject: [PATCH 632/820] chore: release 6.4.6 (#857) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.6](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.5...v6.4.6) (2021-07-19) ### Bug Fixes * Updating WORKSPACE files to use the newest version of the Typescript generator. ([#855](https://www.github.com/googleapis/nodejs-datastore/issues/855)) ([1cdba8c](https://www.github.com/googleapis/nodejs-datastore/commit/1cdba8cc446b592170a8e404b24e09845524f50a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 5ec541fea2f..c32e3037693 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.6](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.5...v6.4.6) (2021-07-19) + + +### Bug Fixes + +* Updating WORKSPACE files to use the newest version of the Typescript generator. ([#855](https://www.github.com/googleapis/nodejs-datastore/issues/855)) ([1cdba8c](https://www.github.com/googleapis/nodejs-datastore/commit/1cdba8cc446b592170a8e404b24e09845524f50a)) + ### [6.4.5](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.4...v6.4.5) (2021-07-12) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index aee1a76cde9..86b8dd0d239 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.5", + "version": "6.4.6", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 408df0e1feb..ff579b4fa3d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.5", + "@google-cloud/datastore": "^6.4.6", "sinon": "^11.0.0" }, "devDependencies": { From c389c3f89cbb5b41dd17f838005d2621738739e1 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 26 Jul 2021 10:39:31 -0700 Subject: [PATCH 633/820] fix: drop dependency on pumpify (#860) --- handwritten/nodejs-datastore/package.json | 3 --- handwritten/nodejs-datastore/src/index.ts | 10 ++++------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 86b8dd0d239..8e6d75d901e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -47,7 +47,6 @@ "extend": "^3.0.2", "google-gax": "^2.17.1", "is": "^3.3.0", - "pumpify": "^2.0.1", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" }, @@ -59,10 +58,8 @@ "@types/mocha": "^8.0.0", "@types/node": "^14.0.0", "@types/proxyquire": "^1.3.28", - "@types/pumpify": "^1.4.1", "@types/sinon": "^10.0.0", "c8": "^7.1.0", - "codecov": "^3.6.5", "gts": "^3.0.0", "js-yaml": "^4.0.0", "jsdoc": "^3.6.3", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index d873fafde19..5071c309eae 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -37,9 +37,7 @@ import { ServiceError, } from 'google-gax'; import * as is from 'is'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const pumpify = require('pumpify'); -import {Transform} from 'stream'; +import {Transform, pipeline} from 'stream'; import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; import Key = entity.Key; @@ -651,8 +649,7 @@ class Datastore extends DatastoreRequest { */ getIndexesStream(options?: GetIndexesOptions): NodeJS.ReadableStream { const {gaxOptions, ...reqOpts} = options || {}; - - return pumpify.obj([ + return pipeline( this.requestStream_({ client: 'DatastoreAdminClient', method: 'listIndexesStream', @@ -667,7 +664,8 @@ class Datastore extends DatastoreRequest { next(null, indexInstance); }, }), - ]); + () => {} + ); } getProjectId(): Promise { From 55592935b39aaabd2ca0e3454d8089f841a620ca Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 26 Jul 2021 17:48:39 +0000 Subject: [PATCH 634/820] chore: release 6.4.7 (#861) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.7](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.6...v6.4.7) (2021-07-26) ### Bug Fixes * drop dependency on pumpify ([#860](https://www.github.com/googleapis/nodejs-datastore/issues/860)) ([f3d4fd9](https://www.github.com/googleapis/nodejs-datastore/commit/f3d4fd97de3c90550977a096667088d063b51623)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index c32e3037693..a634f94d472 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.7](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.6...v6.4.7) (2021-07-26) + + +### Bug Fixes + +* drop dependency on pumpify ([#860](https://www.github.com/googleapis/nodejs-datastore/issues/860)) ([f3d4fd9](https://www.github.com/googleapis/nodejs-datastore/commit/f3d4fd97de3c90550977a096667088d063b51623)) + ### [6.4.6](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.5...v6.4.6) (2021-07-19) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8e6d75d901e..ddb99a5ce26 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.6", + "version": "6.4.7", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ff579b4fa3d..bf4274aeb61 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.6", + "@google-cloud/datastore": "^6.4.7", "sinon": "^11.0.0" }, "devDependencies": { From 34f8b3bb837f0f6323c03f7d69ddb93133c572b5 Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Wed, 4 Aug 2021 16:00:32 -0400 Subject: [PATCH 635/820] chore(nodejs): update client ref docs link in metadata (#864) --- handwritten/nodejs-datastore/.repo-metadata.json | 2 +- handwritten/nodejs-datastore/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index ded9c68d7eb..584c7bf292e 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -2,7 +2,7 @@ "name": "datastore", "name_pretty": "Google Cloud Datastore", "product_documentation": "https://cloud.google.com/datastore/docs", - "client_documentation": "https://googleapis.dev/nodejs/datastore/latest", + "client_documentation": "https://cloud.google.com/nodejs/docs/reference/datastore/latest", "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", "release_level": "ga", "language": "nodejs", diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index cee01d3f49f..c9eab029998 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -177,7 +177,7 @@ Apache Version 2.0 See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) -[client-docs]: https://googleapis.dev/nodejs/datastore/latest +[client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest [product-docs]: https://cloud.google.com/datastore/docs [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project From 9bf084d0e7379a8d2a3a0e0bab93a47b5a8be5c7 Mon Sep 17 00:00:00 2001 From: sofisl <55454395+sofisl@users.noreply.github.com> Date: Fri, 13 Aug 2021 09:20:22 -0700 Subject: [PATCH 636/820] fix(build): migrate to using main branch (#866) --- handwritten/nodejs-datastore/README.md | 38 +++++++++---------- .../nodejs-datastore/samples/README.md | 24 ++++++------ 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index c9eab029998..43e088aec88 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -6,7 +6,7 @@ [![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) -[![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/master.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) +[![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/main.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) @@ -15,7 +15,7 @@ Cloud Datastore Client Library for Node.js A comprehensive list of changes in each version may be found in -[the CHANGELOG](https://github.com/googleapis/nodejs-datastore/blob/master/CHANGELOG.md). +[the CHANGELOG](https://github.com/googleapis/nodejs-datastore/blob/main/CHANGELOG.md). * [Google Cloud Datastore Node.js Client API Reference][client-docs] * [Google Cloud Datastore Documentation][product-docs] @@ -99,22 +99,22 @@ A workaround is available, provided by [@ohmpatel1997](https://github.com/ohmpat ## Samples -Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/master/samples) directory. Each sample's `README.md` has instructions for running its sample. +Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/tree/main/samples) directory. Each sample's `README.md` has instructions for running its sample. | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | -| Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | -| Error | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | -| Export | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/export.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/export.js,samples/README.md) | -| Import | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/import.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) | -| Indexes.get | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.get.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) | -| Indexes.list | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) | -| Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | -| Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | -| Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | -| Legacy Samples | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | -| List Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) | -| Update Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) | +| Concepts | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/concepts.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) | +| Error | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/error.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) | +| Export | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/export.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/export.js,samples/README.md) | +| Import | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/import.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) | +| Indexes.get | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.get.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) | +| Indexes.list | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) | +| Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | +| Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | +| Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | +| Legacy Samples | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | +| List Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) | +| Update Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.markdone.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) | @@ -163,19 +163,19 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages] ## Contributing -Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/master/CONTRIBUTING.md). +Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/nodejs-datastore/blob/main/CONTRIBUTING.md). Please note that this `README.md`, the `samples/README.md`, and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`) are generated from a central template. To edit one of these files, make an edit -to its template in this -[directory](https://github.com/googleapis/synthtool/tree/master/synthtool/gcp/templates/node_library). +to its templates in +[directory](https://github.com/googleapis/synthtool). ## License Apache Version 2.0 -See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/master/LICENSE) +See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/main/LICENSE) [client-docs]: https://cloud.google.com/nodejs/docs/reference/datastore/latest [product-docs]: https://cloud.google.com/datastore/docs diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 0cf6f98eac4..2ad623c6d9f 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -42,7 +42,7 @@ Before running the samples, make sure you've followed the steps outlined in ### Concepts -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/concepts.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/concepts.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/concepts.js,samples/README.md) @@ -59,7 +59,7 @@ __Usage:__ ### Error -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/error.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/error.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/error.js,samples/README.md) @@ -76,7 +76,7 @@ __Usage:__ ### Export -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/export.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/export.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/export.js,samples/README.md) @@ -93,7 +93,7 @@ __Usage:__ ### Import -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/import.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/import.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) @@ -110,7 +110,7 @@ __Usage:__ ### Indexes.get -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.get.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.get.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) @@ -127,7 +127,7 @@ __Usage:__ ### Indexes.list -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/indexes.list.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.list.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) @@ -144,7 +144,7 @@ __Usage:__ ### Quickstart -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/quickstart.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) @@ -163,7 +163,7 @@ __Usage:__ Adds a task with a description . -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.add.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) @@ -182,7 +182,7 @@ __Usage:__ Deletes task . -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.delete.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) @@ -199,7 +199,7 @@ __Usage:__ ### Legacy Samples -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) @@ -218,7 +218,7 @@ __Usage:__ Lists all tasks ordered by creation time. -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.list.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) @@ -237,7 +237,7 @@ __Usage:__ Marks task as Done. -View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js). +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.markdone.js). [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) From c21e77651e53c866a7167536c06b149c84cc583e Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Mon, 16 Aug 2021 22:46:19 -0400 Subject: [PATCH 637/820] fix(deps): google-gax v2.24.1 (#868) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ddb99a5ce26..62e4ec54f6a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.17.1", + "google-gax": "^2.24.1", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" From b778dd96012ddd4027d3f68605bf20bb56ddf820 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 17 Aug 2021 17:12:21 +0000 Subject: [PATCH 638/820] chore: release 6.4.8 (#867) :robot: I have created a release \*beep\* \*boop\* --- ### [6.4.8](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.7...v6.4.8) (2021-08-17) ### Bug Fixes * **build:** migrate to using main branch ([#866](https://www.github.com/googleapis/nodejs-datastore/issues/866)) ([85844a4](https://www.github.com/googleapis/nodejs-datastore/commit/85844a4ff618fcb96c00802941d72135fc65bb98)) * **deps:** google-gax v2.24.1 ([#868](https://www.github.com/googleapis/nodejs-datastore/issues/868)) ([1c0d40f](https://www.github.com/googleapis/nodejs-datastore/commit/1c0d40f27789d7f923b1a004d2b3589269969c93)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 8 ++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index a634f94d472..4e8dac3790e 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,14 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.4.8](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.7...v6.4.8) (2021-08-17) + + +### Bug Fixes + +* **build:** migrate to using main branch ([#866](https://www.github.com/googleapis/nodejs-datastore/issues/866)) ([85844a4](https://www.github.com/googleapis/nodejs-datastore/commit/85844a4ff618fcb96c00802941d72135fc65bb98)) +* **deps:** google-gax v2.24.1 ([#868](https://www.github.com/googleapis/nodejs-datastore/issues/868)) ([1c0d40f](https://www.github.com/googleapis/nodejs-datastore/commit/1c0d40f27789d7f923b1a004d2b3589269969c93)) + ### [6.4.7](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.6...v6.4.7) (2021-07-26) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 62e4ec54f6a..fa92bfaf426 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.7", + "version": "6.4.8", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index bf4274aeb61..8d75daf26a5 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.7", + "@google-cloud/datastore": "^6.4.8", "sinon": "^11.0.0" }, "devDependencies": { From 7a84274f6654bd79f7fdd205d48abca6fc323cb5 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 23 Aug 2021 18:30:11 +0000 Subject: [PATCH 639/820] feat: turns on self-signed JWT feature flag (#869) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 392067151 Source-Link: https://github.com/googleapis/googleapis/commit/06345f7b95c4b4a3ffe4303f1f2984ccc304b2e0 Source-Link: https://github.com/googleapis/googleapis-gen/commit/95882b37970e41e4cd51b22fa507cfd46dc7c4b6 --- .../nodejs-datastore/src/v1/datastore_admin_client.ts | 7 +++++++ handwritten/nodejs-datastore/src/v1/datastore_client.ts | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 0fc034e7a2c..f0305d985f3 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -192,6 +192,12 @@ export class DatastoreAdminClient { // Save the auth object to the client, for use by other methods. this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + // Set useJWTAccessWithScope on the auth object. + this.auth.useJWTAccessWithScope = true; + + // Set defaultServicePath on the auth object. + this.auth.defaultServicePath = staticMembers.servicePath; + // Set the default scopes in auth client if needed. if (servicePath === staticMembers.servicePath) { this.auth.defaultScopes = staticMembers.scopes; @@ -1368,6 +1374,7 @@ export class DatastoreAdminClient { return this.datastoreAdminStub!.then(stub => { this._terminated = true; stub.close(); + this.operationsClient.close(); }); } return Promise.resolve(); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 3c4e1de9e75..09d3d46eb0d 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -127,6 +127,12 @@ export class DatastoreClient { // Save the auth object to the client, for use by other methods. this.auth = this._gaxGrpc.auth as gax.GoogleAuth; + // Set useJWTAccessWithScope on the auth object. + this.auth.useJWTAccessWithScope = true; + + // Set defaultServicePath on the auth object. + this.auth.defaultServicePath = staticMembers.servicePath; + // Set the default scopes in auth client if needed. if (servicePath === staticMembers.servicePath) { this.auth.defaultScopes = staticMembers.scopes; From 422e1895727be872296a3db02b51e830a273d64b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 23 Aug 2021 18:46:11 +0000 Subject: [PATCH 640/820] chore: release 6.5.0 (#870) :robot: I have created a release \*beep\* \*boop\* --- ## [6.5.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.8...v6.5.0) (2021-08-23) ### Features * turns on self-signed JWT feature flag ([#869](https://www.github.com/googleapis/nodejs-datastore/issues/869)) ([a42c88e](https://www.github.com/googleapis/nodejs-datastore/commit/a42c88e1b87ffcf38b1c45e94a846d1defb8fda2)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 4e8dac3790e..d980b2dfe94 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.5.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.8...v6.5.0) (2021-08-23) + + +### Features + +* turns on self-signed JWT feature flag ([#869](https://www.github.com/googleapis/nodejs-datastore/issues/869)) ([a42c88e](https://www.github.com/googleapis/nodejs-datastore/commit/a42c88e1b87ffcf38b1c45e94a846d1defb8fda2)) + ### [6.4.8](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.7...v6.4.8) (2021-08-17) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fa92bfaf426..1ae1f91dc7b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.4.8", + "version": "6.5.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8d75daf26a5..5b307cf53a9 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.4.8", + "@google-cloud/datastore": "^6.5.0", "sinon": "^11.0.0" }, "devDependencies": { From 770b8956544c6ef930e3dbb8257fd8b89fb97c1b Mon Sep 17 00:00:00 2001 From: Jeffrey Rennie Date: Tue, 21 Sep 2021 07:14:25 -0700 Subject: [PATCH 641/820] chore: relocate owl bot post processor (#874) chore: relocate owl bot post processor --- handwritten/nodejs-datastore/.github/.OwlBot.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.github/.OwlBot.yaml b/handwritten/nodejs-datastore/.github/.OwlBot.yaml index ab6146536a5..903589314b8 100644 --- a/handwritten/nodejs-datastore/.github/.OwlBot.yaml +++ b/handwritten/nodejs-datastore/.github/.OwlBot.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. docker: - image: gcr.io/repo-automation-bots/owlbot-nodejs:latest + image: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest deep-remove-regex: From ff1909515adeba74e321ae01adade1dda83430af Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Fri, 8 Oct 2021 20:20:51 -0400 Subject: [PATCH 642/820] chore(cloud-rad): explicitly export v1 classes (#881) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(cloud-rad): explicitely export v1 classes * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/src/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 5071c309eae..293cee87687 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -120,11 +120,11 @@ const urlSafeKey = new entity.URLSafeKey(); /** * Idiomatic class for interacting with Cloud Datastore. Uses the lower-level - * {@link v1.DatastoreClient} class under the hood. + * {@link DatastoreClient} class under the hood. * * In addition to the constructor options shown here, the {@link Datastore} * class constructor accepts the same options accepted by - * {@link v1.DatastoreClient}. + * {@link DatastoreClient}. * *

The Datastore Emulator

* @@ -1828,3 +1828,5 @@ export interface KeyToLegacyUrlSafeCallback { } const v1 = gapic.v1; export {v1}; + +export {DatastoreClient, DatastoreAdminClient} from './v1'; From 38d7360974af3e0a48c878423c9d5e25130ca3ca Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Wed, 13 Oct 2021 12:27:31 -0400 Subject: [PATCH 643/820] chore(cloud-rad): fix links in docs (#882) See internally b/179484422 --- handwritten/nodejs-datastore/src/index.ts | 7 ++----- handwritten/nodejs-datastore/src/query.ts | 18 +++++++++--------- handwritten/nodejs-datastore/src/request.ts | 4 ++-- .../nodejs-datastore/src/transaction.ts | 4 ++-- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 293cee87687..dedda47375c 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -155,10 +155,7 @@ const urlSafeKey = new entity.URLSafeKey(); * you don't need to provide a `projectId`. * * - * @class - * @extends {DatastoreRequest} - * - * @see [Cloud Datastore Concepts Overview]{@link https://cloud.google.com/datastore/docs/concepts/overview} + * See {@link https://cloud.google.com/datastore/docs/concepts/overview| Cloud Datastore Concepts Overview} * * @param {object} [options] Configuration options. * @param {string} [options.apiEndpoint] Override the default API endpoint used @@ -1429,7 +1426,7 @@ class Datastore extends DatastoreRequest { * Create a query for the specified kind. See {@link Query} for all * of the available methods. * - * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries| Datastore Queries} * @see {@link Query} * * @param {string} [namespace] Namespace. diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 0c5c2064681..afabf53ebe3 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -46,7 +46,7 @@ export interface Filter { * **Queries are built with {module:datastore#createQuery} and * {@link Transaction#createQuery}.** * - * @see [Datastore Queries]{@link http://goo.gl/Cag0r6} + * @see {@link http://goo.gl/Cag0r6| Datastore Queries} * * @class * @param {Datastore|Transaction} scope The parent scope the query was created @@ -159,7 +159,7 @@ class Query { * * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* * - * @see [Datastore Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs| Datastore Filters} * * @param {string} property The field name. * @param {string} [operator="="] Operator (=, <, >, <=, >=). @@ -208,7 +208,7 @@ class Query { /** * Filter a query by ancestors. * - * @see [Datastore Ancestor Filters]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ancestor-query-nodejs| Datastore Ancestor Filters} * * @param {Key} key Key object to filter by. * @returns {Query} @@ -228,7 +228,7 @@ class Query { * Sort the results by a property name in ascending or descending order. By * default, an ascending sort order will be used. * - * @see [Datastore Sort Orders]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-ascending-sort-nodejs| Datastore Sort Orders} * * @param {string} property The property to order by. * @param {object} [options] Options object. @@ -277,7 +277,7 @@ class Query { * * Queries that select a subset of properties are called Projection Queries. * - * @see [Projection Queries]{@link https://cloud.google.com/datastore/docs/concepts/projectionqueries} + * @see {@link https://cloud.google.com/datastore/docs/concepts/projectionqueries| Projection Queries} * * @param {string|string[]} fieldNames Properties to return from the matched * entities. @@ -302,7 +302,7 @@ class Query { /** * Set a starting cursor to a query. * - * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets| Query Cursors} * * @param {string} cursorToken The starting cursor token. * @returns {Query} @@ -325,7 +325,7 @@ class Query { /** * Set an ending cursor to a query. * - * @see [Query Cursors]{@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#Datastore_Query_cursors| Query Cursors} * * @param {string} cursorToken The ending cursor token. * @returns {Query} @@ -348,7 +348,7 @@ class Query { /** * Set a limit on a query. * - * @see [Query Limits]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs| Query Limits} * * @param {number} n The number of results to limit the query to. * @returns {Query} @@ -369,7 +369,7 @@ class Query { /** * Set an offset on a query. * - * @see [Query Offsets]{@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-limit-nodejs| Query Offsets} * * @param {number} n The offset to start from after the start cursor. * @returns {Query} diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 13f68c6b9fa..6b3f9e4b690 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -104,9 +104,9 @@ class DatastoreRequest { * entity[datastore.KEY] = datastore.key('Kind') * datastore.save(entity, (err) => {}) * - * @private + * @internal * - * @see [#1803]{@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} + * @see {@link https://github.com/GoogleCloudPlatform/google-cloud-node/issues/1803} * * @param {object} obj The user's input object. */ diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index e1ab46ab1f8..aa52cf57508 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -37,7 +37,7 @@ import { * never partially applied. Either all of the operations in the transaction are * applied, or none of them are applied. * - * @see [Transactions Reference]{@link https://cloud.google.com/datastore/docs/concepts/transactions} + * @see {@link https://cloud.google.com/datastore/docs/concepts/transactions| Transactions Reference} * * @class * @extends {Request} @@ -265,7 +265,7 @@ class Transaction extends DatastoreRequest { * Create a query for the specified kind. See {module:datastore/query} for all * of the available methods. * - * @see [Datastore Queries]{@link https://cloud.google.com/datastore/docs/concepts/queries} + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries| Datastore Queries} * * @see {@link Query} * From 88f78aa8e0a3580e1f2be0fdac16bd939bbecbc4 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 13 Oct 2021 15:26:49 -0700 Subject: [PATCH 644/820] feat: update retry and timeout logic for generated async/stream (#883) PiperOrigin-RevId: 402634944 Source-Link: https://github.com/googleapis/googleapis/commit/29de512cce92f10b182287c2fb9116a4fd38f668 Source-Link: https://github.com/googleapis/googleapis-gen/commit/2a306fa9cd7735704235713cca1cf926419847d6 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmEzMDZmYTljZDc3MzU3MDQyMzU3MTNjY2ExY2Y5MjY0MTk4NDdkNiJ9 --- handwritten/nodejs-datastore/owlbot.py | 4 ++++ .../nodejs-datastore/src/v1/datastore_admin_client.ts | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/owlbot.py b/handwritten/nodejs-datastore/owlbot.py index ac9cc386db2..22902f03f13 100644 --- a/handwritten/nodejs-datastore/owlbot.py +++ b/handwritten/nodejs-datastore/owlbot.py @@ -18,6 +18,7 @@ import logging from pathlib import Path from synthtool import _tracked_paths +from synthtool import shell import shutil logging.basicConfig(level=logging.DEBUG) @@ -57,3 +58,6 @@ s.copy(templates) node.postprocess_gapic_library_hermetic() + +# Remove generated samples from veneer library: +shell.run(('rm', '-rf', 'samples/generated'), hide_output = False) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index f0305d985f3..a0fd55d5fc0 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1301,7 +1301,8 @@ export class DatastoreAdminClient { gax.routingHeader.fromParams({ project_id: request.projectId || '', }); - const callSettings = new gax.CallSettings(options); + const defaultCallSettings = this._defaults['listIndexes']; + const callSettings = defaultCallSettings.merge(options); this.initialize(); return this.descriptors.page.listIndexes.createStream( this.innerApiCalls.listIndexes as gax.GaxCall, @@ -1353,7 +1354,8 @@ export class DatastoreAdminClient { project_id: request.projectId || '', }); options = options || {}; - const callSettings = new gax.CallSettings(options); + const defaultCallSettings = this._defaults['listIndexes']; + const callSettings = defaultCallSettings.merge(options); this.initialize(); return this.descriptors.page.listIndexes.asyncIterate( this.innerApiCalls['listIndexes'] as GaxCall, From b9144889084a45b2082453fa970f72e7bb82280b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 13 Oct 2021 22:34:13 +0000 Subject: [PATCH 645/820] chore: release 6.6.0 (#884) :robot: I have created a release \*beep\* \*boop\* --- ## [6.6.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.5.0...v6.6.0) (2021-10-13) ### Features * update retry and timeout logic for generated async/stream ([#883](https://www.github.com/googleapis/nodejs-datastore/issues/883)) ([cd3ae5c](https://www.github.com/googleapis/nodejs-datastore/commit/cd3ae5c12eddac3cc1149308c96cf9a8b0265e21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index d980b2dfe94..18363fdf8c8 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [6.6.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.5.0...v6.6.0) (2021-10-13) + + +### Features + +* update retry and timeout logic for generated async/stream ([#883](https://www.github.com/googleapis/nodejs-datastore/issues/883)) ([cd3ae5c](https://www.github.com/googleapis/nodejs-datastore/commit/cd3ae5c12eddac3cc1149308c96cf9a8b0265e21)) + ## [6.5.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.4.8...v6.5.0) (2021-08-23) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1ae1f91dc7b..0ec1694b977 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.5.0", + "version": "6.6.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5b307cf53a9..2ab6fa17c21 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.5.0", + "@google-cloud/datastore": "^6.6.0", "sinon": "^11.0.0" }, "devDependencies": { From 069190c5e94a829ef3dcb880a78e25d8a7850fcc Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 14 Oct 2021 00:45:21 +0000 Subject: [PATCH 646/820] build(node): update deps used during postprocessing (#1243) (#885) --- handwritten/nodejs-datastore/protos/protos.d.ts | 3 ++- handwritten/nodejs-datastore/protos/protos.js | 7 +++++++ handwritten/nodejs-datastore/protos/protos.json | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index d0225fc0679..ecabe93d995 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -6326,7 +6326,8 @@ export namespace google { OUTPUT_ONLY = 3, INPUT_ONLY = 4, IMMUTABLE = 5, - UNORDERED_LIST = 6 + UNORDERED_LIST = 6, + NON_EMPTY_DEFAULT = 7 } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 011b2d4c722..0dfb3c6c78b 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -15734,6 +15734,7 @@ * @property {number} INPUT_ONLY=4 INPUT_ONLY value * @property {number} IMMUTABLE=5 IMMUTABLE value * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value + * @property {number} NON_EMPTY_DEFAULT=7 NON_EMPTY_DEFAULT value */ api.FieldBehavior = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15744,6 +15745,7 @@ values[valuesById[4] = "INPUT_ONLY"] = 4; values[valuesById[5] = "IMMUTABLE"] = 5; values[valuesById[6] = "UNORDERED_LIST"] = 6; + values[valuesById[7] = "NON_EMPTY_DEFAULT"] = 7; return values; })(); @@ -21192,6 +21194,7 @@ case 4: case 5: case 6: + case 7: break; } } @@ -21291,6 +21294,10 @@ case 6: message[".google.api.fieldBehavior"][i] = 6; break; + case "NON_EMPTY_DEFAULT": + case 7: + message[".google.api.fieldBehavior"][i] = 7; + break; } } return message; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 0c31642a0e2..43d6b305a0f 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1581,7 +1581,8 @@ "OUTPUT_ONLY": 3, "INPUT_ONLY": 4, "IMMUTABLE": 5, - "UNORDERED_LIST": 6 + "UNORDERED_LIST": 6, + "NON_EMPTY_DEFAULT": 7 } } } @@ -2147,6 +2148,18 @@ ] ], "reserved": [ + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 6, + 6 + ], [ 8, 8 From 120c2e5851d2be1a1b2cdbc02c8cc387d6398449 Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Thu, 21 Oct 2021 11:28:32 -0400 Subject: [PATCH 647/820] chore(cloud-rad): delete api-extractor config (#888) --- .../nodejs-datastore/api-extractor.json | 369 ------------------ 1 file changed, 369 deletions(-) delete mode 100644 handwritten/nodejs-datastore/api-extractor.json diff --git a/handwritten/nodejs-datastore/api-extractor.json b/handwritten/nodejs-datastore/api-extractor.json deleted file mode 100644 index de228294b23..00000000000 --- a/handwritten/nodejs-datastore/api-extractor.json +++ /dev/null @@ -1,369 +0,0 @@ -/** - * Config file for API Extractor. For more info, please visit: https://api-extractor.com - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - - /** - * Optionally specifies another JSON config file that this file extends from. This provides a way for - * standard settings to be shared across multiple projects. - * - * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains - * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be - * resolved using NodeJS require(). - * - * SUPPORTED TOKENS: none - * DEFAULT VALUE: "" - */ - // "extends": "./shared/api-extractor-base.json" - // "extends": "my-package/include/api-extractor-base.json" - - /** - * Determines the "" token that can be used with other config file settings. The project folder - * typically contains the tsconfig.json and package.json config files, but the path is user-defined. - * - * The path is resolved relative to the folder of the config file that contains the setting. - * - * The default value for "projectFolder" is the token "", which means the folder is determined by traversing - * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder - * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error - * will be reported. - * - * SUPPORTED TOKENS: - * DEFAULT VALUE: "" - */ - // "projectFolder": "..", - - /** - * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor - * analyzes the symbols exported by this module. - * - * The file extension must be ".d.ts" and not ".ts". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - */ - "mainEntryPointFilePath": "/protos/protos.d.ts", - - /** - * A list of NPM package names whose exports should be treated as part of this package. - * - * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", - * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part - * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly - * imports library2. To avoid this, we can specify: - * - * "bundledPackages": [ "library2" ], - * - * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been - * local files for library1. - */ - "bundledPackages": [ ], - - /** - * Determines how the TypeScript compiler engine will be invoked by API Extractor. - */ - "compiler": { - /** - * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * Note: This setting will be ignored if "overrideTsconfig" is used. - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/tsconfig.json" - */ - // "tsconfigFilePath": "/tsconfig.json", - - /** - * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. - * The object must conform to the TypeScript tsconfig schema: - * - * http://json.schemastore.org/tsconfig - * - * If omitted, then the tsconfig.json file will be read from the "projectFolder". - * - * DEFAULT VALUE: no overrideTsconfig section - */ - // "overrideTsconfig": { - // . . . - // } - - /** - * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended - * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when - * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses - * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. - * - * DEFAULT VALUE: false - */ - // "skipLibCheck": true, - }, - - /** - * Configures how the API report file (*.api.md) will be generated. - */ - "apiReport": { - /** - * (REQUIRED) Whether to generate an API report. - */ - "enabled": true, - - /** - * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce - * a full file path. - * - * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". - * - * SUPPORTED TOKENS: , - * DEFAULT VALUE: ".api.md" - */ - // "reportFileName": ".api.md", - - /** - * Specifies the folder where the API report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, - * e.g. for an API review. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/etc/" - */ - // "reportFolder": "/etc/", - - /** - * Specifies the folder where the temporary report file is written. The file name portion is determined by - * the "reportFileName" setting. - * - * After the temporary file is written to disk, it is compared with the file in the "reportFolder". - * If they are different, a production build will fail. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/temp/" - */ - // "reportTempFolder": "/temp/" - }, - - /** - * Configures how the doc model file (*.api.json) will be generated. - */ - "docModel": { - /** - * (REQUIRED) Whether to generate a doc model file. - */ - "enabled": true, - - /** - * The output path for the doc model file. The file extension should be ".api.json". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/temp/.api.json" - */ - // "apiJsonFilePath": "/temp/.api.json" - }, - - /** - * Configures how the .d.ts rollup file will be generated. - */ - "dtsRollup": { - /** - * (REQUIRED) Whether to generate the .d.ts rollup file. - */ - "enabled": true, - - /** - * Specifies the output path for a .d.ts rollup file to be generated without any trimming. - * This file will include all declarations that are exported by the main entry point. - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "/dist/.d.ts" - */ - // "untrimmedFilePath": "/dist/.d.ts", - - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. - * This file will include only declarations that are marked as "@public" or "@beta". - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "betaTrimmedFilePath": "/dist/-beta.d.ts", - - - /** - * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. - * This file will include only declarations that are marked as "@public". - * - * If the path is an empty string, then this file will not be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "publicTrimmedFilePath": "/dist/-public.d.ts", - - /** - * When a declaration is trimmed, by default it will be replaced by a code comment such as - * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the - * declaration completely. - * - * DEFAULT VALUE: false - */ - // "omitTrimmingComments": true - }, - - /** - * Configures how the tsdoc-metadata.json file will be generated. - */ - "tsdocMetadata": { - /** - * Whether to generate the tsdoc-metadata.json file. - * - * DEFAULT VALUE: true - */ - // "enabled": true, - - /** - * Specifies where the TSDoc metadata file should be written. - * - * The path is resolved relative to the folder of the config file that contains the setting; to change this, - * prepend a folder token such as "". - * - * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", - * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup - * falls back to "tsdoc-metadata.json" in the package folder. - * - * SUPPORTED TOKENS: , , - * DEFAULT VALUE: "" - */ - // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" - }, - - /** - * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files - * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. - * To use the OS's default newline kind, specify "os". - * - * DEFAULT VALUE: "crlf" - */ - // "newlineKind": "crlf", - - /** - * Configures how API Extractor reports error and warning messages produced during analysis. - * - * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. - */ - "messages": { - /** - * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing - * the input .d.ts files. - * - * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "compilerMessageReporting": { - /** - * Configures the default routing for messages that don't match an explicit rule in this table. - */ - "default": { - /** - * Specifies whether the message should be written to the the tool's output log. Note that - * the "addToApiReportFile" property may supersede this option. - * - * Possible values: "error", "warning", "none" - * - * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail - * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes - * the "--local" option), the warning is displayed but the build will not fail. - * - * DEFAULT VALUE: "warning" - */ - "logLevel": "warning", - - /** - * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), - * then the message will be written inside that file; otherwise, the message is instead logged according to - * the "logLevel" option. - * - * DEFAULT VALUE: false - */ - // "addToApiReportFile": false - }, - - // "TS2551": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - - /** - * Configures handling of messages reported by API Extractor during its analysis. - * - * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" - * - * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings - */ - "extractorMessageReporting": { - "default": { - "logLevel": "warning", - // "addToApiReportFile": false - }, - - // "ae-extra-release-tag": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - }, - - /** - * Configures handling of messages reported by the TSDoc parser when analyzing code comments. - * - * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" - * - * DEFAULT VALUE: A single "default" entry with logLevel=warning. - */ - "tsdocMessageReporting": { - "default": { - "logLevel": "warning", - // "addToApiReportFile": false - } - - // "tsdoc-link-tag-unescaped-text": { - // "logLevel": "warning", - // "addToApiReportFile": true - // }, - // - // . . . - } - } - -} From f74606f01217dfccc84881af5b9fc59e9f16a36b Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 26 Oct 2021 23:18:37 +0200 Subject: [PATCH 648/820] chore(deps): update dependency @types/node to v16 (#890) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped) | [`^14.0.0` -> `^16.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/14.17.32/16.11.6) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/16.11.6/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/16.11.6/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/16.11.6/compatibility-slim/14.17.32)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/16.11.6/confidence-slim/14.17.32)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: "after 9am and before 3pm" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0ec1694b977..f76d2a220e3 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -56,7 +56,7 @@ "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", "@types/mocha": "^8.0.0", - "@types/node": "^14.0.0", + "@types/node": "^16.0.0", "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", "c8": "^7.1.0", From 7c09ca9f4a906d5df663c3dc412fd16b40511404 Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Wed, 3 Nov 2021 15:39:30 -0400 Subject: [PATCH 649/820] chore(cloud-rad): Add code fencing (#893) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix caption * chore(cloud-rad): Add code fencing Code examples need code fencing around them to distingish from rich text for TSDoc. Internally b/179483748 Script used: https://github.com/fhinkel/cloud-rad-script/blob/main/fixExampleComments.js * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/src/entity.ts | 40 +++++++- .../nodejs-datastore/src/index-class.ts | 2 + handwritten/nodejs-datastore/src/index.ts | 98 +++++++++++++++---- handwritten/nodejs-datastore/src/query.ts | 24 +++++ handwritten/nodejs-datastore/src/request.ts | 12 +++ .../nodejs-datastore/src/transaction.ts | 18 ++++ .../src/v1/datastore_admin_client.ts | 20 ++++ .../src/v1/datastore_client.ts | 14 +++ 8 files changed, 209 insertions(+), 19 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 4869c0148ec..f729e8ff715 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -55,9 +55,11 @@ export namespace entity { * @param {number} value The double value. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const aDouble = datastore.double(7.3); + * ``` */ export class Double { type: string; @@ -119,9 +121,11 @@ export namespace entity { * names to be converted using `integerTypeCastFunction`. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const anInt = datastore.int(7); + * ``` */ export class Int extends Number { type: string; @@ -235,6 +239,7 @@ export namespace entity { * @param {number} coordinates.longitude Longitudinal value. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const coordinates = { @@ -243,6 +248,7 @@ export namespace entity { * }; * * const geoPoint = datastore.geoPoint(coordinates); + * ``` */ export class GeoPoint { value: Coordinates; @@ -284,6 +290,7 @@ export namespace entity { * @param {string} [options.namespace] Optional namespace. * * @example + * ``` * //- * // Create an incomplete key with a kind value of `Company`. * //- @@ -291,7 +298,9 @@ export namespace entity { * const datastore = new Datastore(); * const key = datastore.key('Company'); * + * ``` * @example + * ``` * //- * // Create a complete key with a kind value of `Company` and id`123`. * //- @@ -299,7 +308,9 @@ export namespace entity { * const datastore = new Datastore(); * const key = datastore.key(['Company', 123]); * + * ``` * @example + * ``` * //- * // If the ID integer is outside the bounds of a JavaScript Number * // object, create an Int. @@ -311,14 +322,18 @@ export namespace entity { * datastore.int('100000000000001234') * ]); * + * ``` * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * // Create a complete key with a kind value of `Company` and name `Google`. * // Note: `id` is used for numeric identifiers and `name` is used otherwise. * const key = datastore.key(['Company', 'Google']); * + * ``` * @example + * ``` * //- * // Create a complete key from a provided namespace and path. * //- @@ -329,7 +344,9 @@ export namespace entity { * path: ['Company', 123] * }); * - * @example Serialize the key for later re-use. + * ``` + * @example Serialize the key for later re-use. + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key({ @@ -338,6 +355,7 @@ export namespace entity { * }); * // Later... * const key = datastore.key(key.serialized); + * ``` */ export class Key { namespace?: string; @@ -400,6 +418,7 @@ export namespace entity { * @returns {object} * * @example + * ``` * const key = datastore.key({ * namespace: 'My-NS', * path: ['Company', 123] @@ -407,6 +426,7 @@ export namespace entity { * * // Later... * const key = datastore.key(key.serialized); + * ``` */ get serialized() { const serializedKey = { @@ -484,6 +504,7 @@ export namespace entity { * @returns {*} * * @example + * ``` * decodeValueProto({ * booleanValue: false * }); @@ -498,6 +519,7 @@ export namespace entity { * blobValue: Buffer.from('68656c6c6f') * }); * // + * ``` */ export function decodeValueProto( valueProto: ValueProto, @@ -561,10 +583,12 @@ export namespace entity { * @returns {object} * * @example + * ``` * encodeValue('Hi'); * // { * // stringValue: 'Hi' * // } + * ``` */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function encodeValue(value: any, property: string): ValueProto { @@ -683,6 +707,7 @@ export namespace entity { * @returns {object} * * @example + * ``` * entityFromEntityProto({ * properties: { * map: { @@ -698,6 +723,7 @@ export namespace entity { * // { * // name: 'Stephen' * // } + * ``` */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function entityFromEntityProto( @@ -725,6 +751,7 @@ export namespace entity { * @returns {object} * * @example + * ``` * entityToEntityProto({ * excludeFromIndexes: [ * 'name' @@ -746,6 +773,7 @@ export namespace entity { * // } * // } * // } + * ``` */ export function entityToEntityProto(entityObject: EntityObject): EntityProto { const properties = entityObject.data; @@ -905,6 +933,7 @@ export namespace entity { * Please see {@link IntegerTypeCastOptions} for options descriptions. * * @example + * ``` * request_('runQuery', {}, (err, response) => { * const entityObjects = formatArray(response.batch.entityResults); * // { @@ -915,6 +944,7 @@ export namespace entity { * // } * // * }); + * ``` */ export function formatArray( results: ResponseResult[], @@ -984,8 +1014,10 @@ export namespace entity { * @returns {boolean} * * @example + * ``` * isKeyComplete(new Key(['Company', 'Google'])); // true * isKeyComplete(new Key('Company')); // false + * ``` */ export function isKeyComplete(key: Key) { const lastPathElement = entity.keyToKeyProto(key).path!.pop()!; @@ -1000,6 +1032,7 @@ export namespace entity { * @returns {Key} * * @example + * ``` * const key = keyFromKeyProto({ * partitionId: { * projectId: 'project-id', @@ -1012,6 +1045,7 @@ export namespace entity { * } * ] * }); + * ``` */ export function keyFromKeyProto(keyProto: KeyProto): Key { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -1052,6 +1086,7 @@ export namespace entity { * @returns {object} * * @example + * ``` * const keyProto = keyToKeyProto(new Key(['Company', 1])); * // { * // path: [ @@ -1061,6 +1096,7 @@ export namespace entity { * // } * // ] * // } + * ``` */ export function keyToKeyProto(key: Key): KeyProto { if (is.undefined(key.kind)) { @@ -1118,6 +1154,7 @@ export namespace entity { * @returns {object} * * @example + * ``` * queryToQueryProto({ * namespace: '', * kinds: [ @@ -1142,6 +1179,7 @@ export namespace entity { * // order: [], * // groupBy: [] * // } + * ``` */ export function queryToQueryProto(query: Query): QueryProto { const OP_TO_OPERATOR = { diff --git a/handwritten/nodejs-datastore/src/index-class.ts b/handwritten/nodejs-datastore/src/index-class.ts index f47f1b6affd..6950a101257 100644 --- a/handwritten/nodejs-datastore/src/index-class.ts +++ b/handwritten/nodejs-datastore/src/index-class.ts @@ -62,9 +62,11 @@ export type IIndex = google.datastore.admin.v1.IIndex; * @param {string} id The index name or id. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const index = datastore.index('my-index'); + * ``` */ export class Index { datastore: Datastore; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index dedda47375c..a34dc4d0eb9 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -163,19 +163,26 @@ const urlSafeKey = new entity.URLSafeKey(); * server (usually "http://localhost:8080"). * @param {string} [options.namespace] Namespace to isolate transactions to. * - * @example Import the client library + * @example Import the client library + * ``` * const {Datastore} = require('@google-cloud/datastore'); * - * @example Create a client that uses Application Default Credentials (ADC): + * ``` + * @example Create a client that uses Application Default Credentials (ADC): + * ``` * const datastore = new Datastore(); * - * @example Create a client with explicit credentials: + * ``` + * @example Create a client with explicit credentials: + * ``` * const datastore = new Datastore({ * projectId: 'your-project-id', * keyFilename: '/path/to/keyfile.json' * }); * - * @example Retrieving Records + * ``` + * @example Retrieving Records + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * @@ -236,7 +243,9 @@ const urlSafeKey = new entity.URLSafeKey(); * const firstEntityKey = entities[0][datastore.KEY]; * }); * - * @example Paginating Records + * ``` + * @example Paginating Records + * ``` * // Imagine building a website that allows a user to sift through hundreds of * // their contacts. You'll likely want to only display a subset of these at * // once, so you set a limit. @@ -275,7 +284,9 @@ const urlSafeKey = new entity.URLSafeKey(); * }); * }); * - * @example Creating Records + * ``` + * @example Creating Records + * ``` * // New entities can be created and persisted with {@link Datastore#save}. * // The entitiy must have a key to be saved. If you don't specify an * // identifier for the key, one is generated for you. @@ -323,7 +334,9 @@ const urlSafeKey = new entity.URLSafeKey(); * } * }); * - * @example Deleting Records + * ``` + * @example Deleting Records + * ``` * // Entities can be removed from Datastore by passing the entity's key object * // to {@link Datastore#delete}. * //- @@ -335,7 +348,9 @@ const urlSafeKey = new entity.URLSafeKey(); * } * }); * - * @example Transactions + * ``` + * @example Transactions + * ``` * // Complex logic can be wrapped in a transaction with * // {@link Datastore#transaction}. All queries and updates run within * // the transaction will be applied when the `done` function is called. @@ -366,7 +381,9 @@ const urlSafeKey = new entity.URLSafeKey(); * }); * }); * - * @example Queries with Ancestors + * ``` + * @example Queries with Ancestors + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * @@ -440,6 +457,7 @@ const urlSafeKey = new entity.URLSafeKey(); * datastore.runQuery(query2, (entities) => { * console.log(entities); * }); + * ``` */ class Datastore extends DatastoreRequest { clients_: Map; @@ -828,6 +846,7 @@ class Datastore extends DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * //- * // Save a single entity. * // @@ -1020,6 +1039,7 @@ class Datastore extends DatastoreRequest { * datastore.save(entity).then((data) => { * const apiResponse = data[0]; * }); + * ``` */ save( entities: Entities, @@ -1225,9 +1245,11 @@ class Datastore extends DatastoreRequest { * @returns {object} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const threeDouble = datastore.double(3.0); + * ``` */ static double(value: number) { return new entity.Double(value); @@ -1244,10 +1266,12 @@ class Datastore extends DatastoreRequest { * @returns {boolean} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * datastore.isDouble(0.42); // false * datastore.isDouble(datastore.double(0.42)); // true + * ``` */ static isDouble(value?: {}) { return entity.isDsDouble(value); @@ -1266,6 +1290,7 @@ class Datastore extends DatastoreRequest { * @returns {object} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const coordinates = { @@ -1283,6 +1308,7 @@ class Datastore extends DatastoreRequest { * const companyQuery = query * .filter('geoPoint.latitude', datastore.double(40.123)) * .filter('geoPoint.longitude', datastore.double(-74.0447)); + * ``` */ static geoPoint(coordinates: entity.Coordinates) { return new entity.GeoPoint(coordinates); @@ -1299,6 +1325,7 @@ class Datastore extends DatastoreRequest { * @returns {boolean} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const coordinates = { @@ -1308,6 +1335,7 @@ class Datastore extends DatastoreRequest { * * datastore.isGeoPoint(coordinates); // false * datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true + * ``` */ static isGeoPoint(value?: {}) { return entity.isDsGeoPoint(value); @@ -1327,6 +1355,7 @@ class Datastore extends DatastoreRequest { * @returns {object} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const sevenInteger = datastore.int(7); @@ -1338,6 +1367,7 @@ class Datastore extends DatastoreRequest { * 'Kind', * datastore.int('100000000000001234') * ]); + * ``` */ static int(value: number | string) { return new entity.Int(value); @@ -1354,10 +1384,12 @@ class Datastore extends DatastoreRequest { * @returns {boolean} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * datastore.isInt(42); // false * datastore.isInt(datastore.int(42)); // true + * ``` */ static isInt(value?: {}) { return entity.isDsInt(value); @@ -1434,9 +1466,11 @@ class Datastore extends DatastoreRequest { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); + * ``` */ createQuery( namespaceOrKind?: string | string[], @@ -1466,19 +1500,24 @@ class Datastore extends DatastoreRequest { * @returns {Key} A newly created Key from the options given. * * @example + * ``` * Create an incomplete key with a kind value of `Company`. * Since no Id is supplied, Datastore will generate one on save. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key('Company'); * + * ``` * @example + * ``` * Create a complete key with a kind value of `Company` and Id `123`. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 123]); * + * ``` * @example + * ``` * If the ID integer is outside the bounds of a JavaScript Number * object, create an Int. * const {Datastore} = require('@google-cloud/datastore'); @@ -1488,7 +1527,9 @@ class Datastore extends DatastoreRequest { * datastore.int('100000000000001234') * ]); * + * ``` * @example + * ``` * Create a complete key with a kind value of `Company` and name `Google`. * Because the supplied Id is a string, Datastore will prefix it with "name=". * Had the supplied Id been numeric, Datastore would prefix it with the standard, "id=". @@ -1496,7 +1537,9 @@ class Datastore extends DatastoreRequest { * const datastore = new Datastore(); * const key = datastore.key(['Company', 'Google']); * + * ``` * @example + * ``` * Create a complete key from a provided namespace and path. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); @@ -1505,19 +1548,24 @@ class Datastore extends DatastoreRequest { * path: ['Company', 123] * }); * + * ``` * @example + * ``` * Create a complete key that specifies an ancestor. This will create a Team entity * with a name of "Datastore", which belongs to the Company with the "name=Google" key. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 'Google', 'Team', 'Datastore']); * + * ``` * @example + * ``` * Create a incomplete key that specifies an ancestor. This will create an Employee entity * with an auto-generated Id, which belongs to the Company with the "name=Google" key. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 'Google', 'Employee']); + * ``` */ key(options: string | entity.KeyOptions | PathType[]): entity.Key { const keyOptions = is.object(options) @@ -1536,10 +1584,12 @@ class Datastore extends DatastoreRequest { * @returns {boolean} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * datastore.isKey({path: ['Company', 123]}); // false * datastore.isKey(datastore.key(['Company', 123])); // true + * ``` */ static isKey(value?: {}) { return entity.isDsKey(value); @@ -1577,6 +1627,7 @@ class Datastore extends DatastoreRequest { * @param {string} callback.urlSafeKey A Base64-encoded URL-safe key. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const key = datastore.key(['Company', 'Google']); @@ -1607,6 +1658,7 @@ class Datastore extends DatastoreRequest { * const urlSafeKey = data[0]; * console.log(urlSafeKey); * }); + * ``` */ keyToLegacyUrlSafe( key: entity.Key, @@ -1644,12 +1696,14 @@ class Datastore extends DatastoreRequest { * @returns {string} Created urlsafe key. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const urlSafeKey = 'ag9ncmFzcy1jbHVtcC00NzlyEwsSB0NvbXBhbnkiBkdvb2dsZQw'; * * datastore.keyFromLegacyUrlsafe(key); * + * ``` */ keyFromLegacyUrlsafe(key: string): entity.Key { return urlSafeKey.legacyDecode(key); @@ -1665,9 +1719,11 @@ class Datastore extends DatastoreRequest { * @returns {Transaction} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); + * ``` */ transaction(options?: TransactionOptions) { return new Transaction(this, options); @@ -1768,23 +1824,29 @@ export {Datastore}; * @module {Datastore} @google-cloud/datastore * @alias nodejs-datastore * - * @example Install the client library with npm: npm install --save + * @example Install the client library with npm: + * ``` + * npm install --save + * ``` * @google-cloud/datastore * - * @example Import the client library + * @example Import the client library + * ``` * const {Datastore} = require('@google-cloud/datastore'); * - * @example Create a client that uses Application - * Default Credentials (ADC): const datastore = new Datastore(); + * ``` + * @example Create a client that uses Application Default Credentials (ADC): + * ``` + * const datastore = new Datastore(); * - * @example Create a client with explicit - * credentials: const datastore = new Datastore({ projectId: + * ``` + * @example Create a client with explicit credentials: + * ``` + * const datastore = new Datastore({ projectId: * 'your-project-id', keyFilename: '/path/to/keyfile.json' * }); * + * ``` * @example include:samples/quickstart.js * region_tag:datastore_quickstart * Full quickstart example: diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index afabf53ebe3..fadeb7e3e6d 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -55,9 +55,11 @@ export interface Filter { * @param {string[]} kinds Kind to query. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('AnimalNamespace', 'Lion'); + * ``` */ class Query { scope?: Datastore | Transaction; @@ -167,6 +169,7 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); @@ -189,6 +192,7 @@ class Query { * //- * const key = datastore.key(['Company', 'Google']); * const keyQuery = query.filter('__key__', key); + * ``` */ filter(property: string, operatorOrValue: Operator, value?: {}): Query { let operator = operatorOrValue as Operator; @@ -214,10 +218,12 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('MyKind'); * const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123])); + * ``` */ hasAncestor(key: Key) { this.filters.push({name: '__key__', op: 'HAS_ANCESTOR', val: key}); @@ -237,6 +243,7 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); @@ -248,6 +255,7 @@ class Query { * const companiesDescending = companyQuery.order('size', { * descending: true * }); + * ``` */ order(property: string, options?: OrderOptions) { const sign = options && options.descending ? '-' : '+'; @@ -262,10 +270,12 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * const groupedQuery = companyQuery.groupBy(['name', 'size']); + * ``` */ groupBy(fieldNames: string | string[]) { this.groupByVal = arrify(fieldNames); @@ -284,6 +294,7 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); @@ -293,6 +304,7 @@ class Query { * * // Only retrieve the name and size properties. * const selectQuery = companyQuery.select(['name', 'size']); + * ``` */ select(fieldNames: string | string[]) { this.selectVal = arrify(fieldNames); @@ -308,6 +320,7 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); @@ -316,6 +329,7 @@ class Query { * * // Retrieve results starting from cursorToken. * const startQuery = companyQuery.start(cursorToken); + * ``` */ start(start: string | Buffer) { this.startVal = start; @@ -331,6 +345,7 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); @@ -339,6 +354,7 @@ class Query { * * // Retrieve results limited to the extent of cursorToken. * const endQuery = companyQuery.end(cursorToken); + * ``` */ end(end: string | Buffer) { this.endVal = end; @@ -354,12 +370,14 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * * // Limit the results to 10 entities. * const limitQuery = companyQuery.limit(10); + * ``` */ limit(n: number) { this.limitVal = n; @@ -375,12 +393,14 @@ class Query { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const companyQuery = datastore.createQuery('Company'); * * // Start from the 101st result. * const offsetQuery = companyQuery.offset(100); + * ``` */ offset(n: number) { this.offsetVal = n; @@ -422,6 +442,7 @@ class Query { * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); @@ -452,6 +473,7 @@ class Query { * query.run().then((data) => { * const entities = data[0]; * }); + * ``` */ run( optionsOrCallback?: RunQueryOptions | RunQueryCallback, @@ -474,6 +496,7 @@ class Query { * @returns {stream} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const query = datastore.createQuery('Company'); @@ -497,6 +520,7 @@ class Query { * .on('data', function (entity) { * this.end(); * }); + * ``` */ runStream(options?: RunQueryStreamOptions) { return this.scope!.runQueryStream(this, options); diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 6b3f9e4b690..20b39dd677c 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -148,6 +148,7 @@ class DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * const incompleteKey = datastore.key(['Company']); * * //- @@ -204,6 +205,7 @@ class DatastoreRequest { * const keys = data[0]; * const apiResponse = data[1]; * }); + * ``` */ allocateIds( key: entity.Key, @@ -245,6 +247,7 @@ class DatastoreRequest { * for a complete list of options. * * @example + * ``` * const keys = [ * datastore.key(['Company', 123]), * datastore.key(['Product', 'Computer']) @@ -258,6 +261,7 @@ class DatastoreRequest { * .on('end', () => { * // All entities retrieved. * }); + * ``` */ createReadStream( keys: Entities, @@ -350,6 +354,7 @@ class DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * const key = datastore.key(['Company', 123]); * datastore.delete(key, (err, apiResp) => {}); * @@ -386,6 +391,7 @@ class DatastoreRequest { * datastore.delete().then((data) => { * const apiResponse = data[0]; * }); + * ``` */ delete( keys: entity.Key | entity.Key[], @@ -459,6 +465,7 @@ class DatastoreRequest { * the provided keys. * * @example + * ``` * //- * // Get a single entity. * //- @@ -522,6 +529,7 @@ class DatastoreRequest { * datastore.get(keys).then((data) => { * const entities = data[0]; * }); + * ``` */ get( keys: entity.Key | entity.Key[], @@ -592,6 +600,7 @@ class DatastoreRequest { * - {@link Datastore#NO_MORE_RESULTS}: There are no more results. * * @example + * ``` * //- * // Where you see `transaction`, assume this is the context that's relevant * to @@ -648,6 +657,7 @@ class DatastoreRequest { * datastore.runQuery(query).then((data) => { * const entities = data[0]; * }); + * ``` */ runQuery( query: Query, @@ -684,6 +694,7 @@ class DatastoreRequest { * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. * * @example + * ``` * datastore.runQueryStream(query) * .on('error', console.error) * .on('data', (entity) => { @@ -703,6 +714,7 @@ class DatastoreRequest { * .on('data', (entity) => { * this.end(); * }); + * ``` */ runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Transform { query = extend(true, new Query(), query); diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index aa52cf57508..c3f7d44e103 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -45,9 +45,11 @@ import { * @mixes module:datastore/request * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); + * ``` */ class Transaction extends DatastoreRequest { namespace?: string; @@ -115,6 +117,7 @@ class Transaction extends DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -131,6 +134,7 @@ class Transaction extends DatastoreRequest { * transaction.commit().then((data) => { * const apiResponse = data[0]; * }); + * ``` */ commit( gaxOptionsOrCallback?: CallOptions | CommitCallback, @@ -274,6 +278,7 @@ class Transaction extends DatastoreRequest { * @returns {Query} * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -323,6 +328,7 @@ class Transaction extends DatastoreRequest { * }); * }); * }); + * ``` */ createQuery( namespaceOrKind?: string | string[], @@ -342,6 +348,7 @@ class Transaction extends DatastoreRequest { * @param {Key|Key[]} key Datastore key object(s). * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -366,6 +373,7 @@ class Transaction extends DatastoreRequest { * } * }); * }); + * ``` */ // eslint-disable-next-line @typescript-eslint/no-explicit-any delete(entities?: Entities): any { @@ -416,6 +424,7 @@ class Transaction extends DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -438,6 +447,7 @@ class Transaction extends DatastoreRequest { * transaction.rollback().then((data) => { * const apiResponse = data[0]; * }); + * ``` */ rollback( gaxOptionsOrCallback?: CallOptions | RollbackCallback, @@ -482,6 +492,7 @@ class Transaction extends DatastoreRequest { * @param {object} callback.apiResponse The full API response. * * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -513,6 +524,7 @@ class Transaction extends DatastoreRequest { * const transaction = data[0]; * const apiResponse = data[1]; * }); + * ``` */ run( optionsOrCallback?: RunOptions | RunCallback, @@ -583,6 +595,7 @@ class Transaction extends DatastoreRequest { * @param {object} entities.data Data to save with the provided key. * * @example + * ``` * Save a single entity. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); @@ -613,7 +626,9 @@ class Transaction extends DatastoreRequest { * }); * }); * + * ``` * @example + * ``` * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); * const transaction = datastore.transaction(); @@ -653,7 +668,9 @@ class Transaction extends DatastoreRequest { * }); * }); * + * ``` * @example + * ``` * Save multiple entities at once. * const {Datastore} = require('@google-cloud/datastore'); * const datastore = new Datastore(); @@ -687,6 +704,7 @@ class Transaction extends DatastoreRequest { * } * }); * }); + * ``` */ save(entities: Entities): void { arrify(entities).forEach((ent: Entity) => { diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index a0fd55d5fc0..34afefdfc87 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -480,7 +480,9 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.getIndex(request); + * ``` */ getIndex( request?: protos.google.datastore.admin.v1.IGetIndexRequest, @@ -605,8 +607,10 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const [operation] = await client.exportEntities(request); * const [response] = await operation.promise(); + * ``` */ exportEntities( request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, @@ -666,10 +670,12 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const decodedOperation = await checkExportEntitiesProgress(name); * console.log(decodedOperation.result); * console.log(decodedOperation.done); * console.log(decodedOperation.metadata); + * ``` */ async checkExportEntitiesProgress( name: string @@ -771,8 +777,10 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const [operation] = await client.importEntities(request); * const [response] = await operation.promise(); + * ``` */ importEntities( request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, @@ -832,10 +840,12 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const decodedOperation = await checkImportEntitiesProgress(name); * console.log(decodedOperation.result); * console.log(decodedOperation.done); * console.log(decodedOperation.metadata); + * ``` */ async checkImportEntitiesProgress( name: string @@ -928,8 +938,10 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const [operation] = await client.createIndex(request); * const [response] = await operation.promise(); + * ``` */ createIndex( request?: protos.google.datastore.admin.v1.ICreateIndexRequest, @@ -989,10 +1001,12 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const decodedOperation = await checkCreateIndexProgress(name); * console.log(decodedOperation.result); * console.log(decodedOperation.done); * console.log(decodedOperation.metadata); + * ``` */ async checkCreateIndexProgress( name: string @@ -1080,8 +1094,10 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const [operation] = await client.deleteIndex(request); * const [response] = await operation.promise(); + * ``` */ deleteIndex( request?: protos.google.datastore.admin.v1.IDeleteIndexRequest, @@ -1141,10 +1157,12 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. * @example + * ``` * const decodedOperation = await checkDeleteIndexProgress(name); * console.log(decodedOperation.result); * console.log(decodedOperation.done); * console.log(decodedOperation.metadata); + * ``` */ async checkDeleteIndexProgress( name: string @@ -1336,10 +1354,12 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) * for more details and examples. * @example + * ``` * const iterable = client.listIndexesAsync(request); * for await (const response of iterable) { * // process response * } + * ``` */ listIndexesAsync( request?: protos.google.datastore.admin.v1.IListIndexesRequest, diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 09d3d46eb0d..12da1919758 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -344,7 +344,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.lookup(request); + * ``` */ lookup( request?: protos.google.datastore.v1.ILookupRequest, @@ -438,7 +440,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.runQuery(request); + * ``` */ runQuery( request?: protos.google.datastore.v1.IRunQueryRequest, @@ -523,7 +527,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.beginTransaction(request); + * ``` */ beginTransaction( request?: protos.google.datastore.v1.IBeginTransactionRequest, @@ -629,7 +635,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.commit(request); + * ``` */ commit( request?: protos.google.datastore.v1.ICommitRequest, @@ -715,7 +723,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.rollback(request); + * ``` */ rollback( request?: protos.google.datastore.v1.IRollbackRequest, @@ -802,7 +812,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.allocateIds(request); + * ``` */ allocateIds( request?: protos.google.datastore.v1.IAllocateIdsRequest, @@ -891,7 +903,9 @@ export class DatastoreClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. * @example + * ``` * const [response] = await client.reserveIds(request); + * ``` */ reserveIds( request?: protos.google.datastore.v1.IReserveIdsRequest, From 83e86921e73a2f36e638831d6ca0cbb4e24a5172 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 4 Nov 2021 20:40:21 +0100 Subject: [PATCH 650/820] fix(deps): update dependency sinon to v12 (#894) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^11.0.0` -> `^12.0.0`](https://renovatebot.com/diffs/npm/sinon/11.1.2/12.0.1) | [![age](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/compatibility-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/12.0.1/confidence-slim/11.1.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
sinonjs/sinon ### [`v12.0.1`](https://togithub.com/sinonjs/sinon/blob/master/CHANGES.md#​1201) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v12.0.0...v12.0.1) - [`3f598221`](https://togithub.com/sinonjs/sinon/commit/3f598221045904681f2b3b3ba1df617ed5e230e3) Fix issue with npm unlink for npm version > 6 (Carl-Erik Kopseng) > 'npm unlink' would implicitly unlink the current dir > until version 7, which requires an argument - [`51417a38`](https://togithub.com/sinonjs/sinon/commit/51417a38111eeeb7cd14338bfb762cc2df487e1b) Fix bundling of cjs module ([#​2412](https://togithub.com/sinonjs/sinon/issues/2412)) (Julian Grinblat) > - Fix bundling of cjs module > > - Run prettier *Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2021-11-04.* #### 12.0.0 ### [`v12.0.0`](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v11.1.2...v12.0.0)
--- ### Configuration 📅 **Schedule**: "after 9am and before 3pm" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f76d2a220e3..f8de82ba76a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^11.0.0", + "sinon": "^12.0.0", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack-cli": "^4.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 2ab6fa17c21..bb578a8321a 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^6.6.0", - "sinon": "^11.0.0" + "sinon": "^12.0.0" }, "devDependencies": { "chai": "^4.2.0", From 93456acfbcc633e9c9ceaddec9c42ffc8a6a3e99 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 4 Nov 2021 19:58:19 +0000 Subject: [PATCH 651/820] chore: release 6.6.1 (#895) :robot: I have created a release \*beep\* \*boop\* --- ### [6.6.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.0...v6.6.1) (2021-11-04) ### Bug Fixes * **deps:** update dependency sinon to v12 ([#894](https://www.github.com/googleapis/nodejs-datastore/issues/894)) ([6010464](https://www.github.com/googleapis/nodejs-datastore/commit/60104649455aefdfba100a9e5c57543faf9278fb)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 18363fdf8c8..16ae5f3ab49 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.6.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.0...v6.6.1) (2021-11-04) + + +### Bug Fixes + +* **deps:** update dependency sinon to v12 ([#894](https://www.github.com/googleapis/nodejs-datastore/issues/894)) ([6010464](https://www.github.com/googleapis/nodejs-datastore/commit/60104649455aefdfba100a9e5c57543faf9278fb)) + ## [6.6.0](https://www.github.com/googleapis/nodejs-datastore/compare/v6.5.0...v6.6.0) (2021-10-13) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f8de82ba76a..5c124271c73 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.6.0", + "version": "6.6.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index bb578a8321a..f106c92c495 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.6.0", + "@google-cloud/datastore": "^6.6.1", "sinon": "^12.0.0" }, "devDependencies": { From a2db928c220b7b4d8663c475aa84d62555042693 Mon Sep 17 00:00:00 2001 From: "F. Hinkelmann" Date: Mon, 8 Nov 2021 11:40:16 -0500 Subject: [PATCH 652/820] fix(cloud-rad): move comments for TSDoc (#896) As we move our ref docs to cloud.google.com, we rely on TSDoc rather JSDoc. TSDoc expects comments before the first overloaded function, we currently have those on the last function. Those comments don't make it into the d.ts files. We need to move comments to the first overloaded function rather than the last one. Internally b/190631834 Script used: https://github.com/fhinkel/cloud-rad-script/blob/main/moveComments.js --- .../nodejs-datastore/src/index-class.ts | 18 ++--- handwritten/nodejs-datastore/src/index.ts | 74 +++++++++---------- handwritten/nodejs-datastore/src/query.ts | 10 +-- handwritten/nodejs-datastore/src/request.ts | 72 +++++++++--------- .../nodejs-datastore/src/transaction.ts | 26 +++---- 5 files changed, 100 insertions(+), 100 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index-class.ts b/handwritten/nodejs-datastore/src/index-class.ts index 6950a101257..e33958b6c6f 100644 --- a/handwritten/nodejs-datastore/src/index-class.ts +++ b/handwritten/nodejs-datastore/src/index-class.ts @@ -78,9 +78,6 @@ export class Index { this.id = id.split('/').pop()!; } - get(gaxOptions?: CallOptions): Promise; - get(callback: GetIndexCallback): void; - get(gaxOptions: CallOptions, callback: GetIndexCallback): void; /** * Get an index if it exists. * @@ -91,6 +88,9 @@ export class Index { * @param {Index} callback.index The Index instance. * @param {object} callback.apiResponse The full API response. */ + get(gaxOptions?: CallOptions): Promise; + get(callback: GetIndexCallback): void; + get(gaxOptions: CallOptions, callback: GetIndexCallback): void; get( gaxOptionsOrCallback?: CallOptions | GetIndexCallback, cb?: GetIndexCallback @@ -105,12 +105,6 @@ export class Index { }); } - getMetadata(gaxOptions?: CallOptions): Promise; - getMetadata(callback: IndexGetMetadataCallback): void; - getMetadata( - gaxOptions: CallOptions, - callback: IndexGetMetadataCallback - ): void; /** * Get the metadata of this index. * @@ -120,6 +114,12 @@ export class Index { * @param {?error} callback.err An error returned while making this request. * @param {object} callback.metadata The metadata. */ + getMetadata(gaxOptions?: CallOptions): Promise; + getMetadata(callback: IndexGetMetadataCallback): void; + getMetadata( + gaxOptions: CallOptions, + callback: IndexGetMetadataCallback + ): void; getMetadata( gaxOptionsOrCallback?: CallOptions | IndexGetMetadataCallback, cb?: IndexGetMetadataCallback diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index a34dc4d0eb9..2725598720f 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -509,8 +509,6 @@ class Datastore extends DatastoreRequest { this.auth = new GoogleAuth(this.options); } - export(config: ExportEntitiesConfig): Promise; - export(config: ExportEntitiesConfig, callback: LongRunningCallback): void; /** * Export entities from this project to a Google Cloud Storage bucket. * @@ -527,6 +525,8 @@ class Datastore extends DatastoreRequest { * @param {Operation} callback.operation An operation object that can be used * to check the status of the request. */ + export(config: ExportEntitiesConfig): Promise; + export(config: ExportEntitiesConfig, callback: LongRunningCallback): void; export( config: ExportEntitiesConfig, callback?: LongRunningCallback @@ -581,9 +581,6 @@ class Datastore extends DatastoreRequest { ); } - getIndexes(options?: GetIndexesOptions): Promise; - getIndexes(options: GetIndexesOptions, callback: GetIndexesCallback): void; - getIndexes(callback: GetIndexesCallback): void; /** * Get all of the indexes in this project. * @@ -597,6 +594,9 @@ class Datastore extends DatastoreRequest { * @param {object} callback.apiResponse The full API response. * @return {void | Promise} */ + getIndexes(options?: GetIndexesOptions): Promise; + getIndexes(options: GetIndexesOptions, callback: GetIndexesCallback): void; + getIndexes(callback: GetIndexesCallback): void; getIndexes( optionsOrCallback?: GetIndexesOptions | GetIndexesCallback, cb?: GetIndexesCallback @@ -687,8 +687,6 @@ class Datastore extends DatastoreRequest { return this.auth.getProjectId(); } - import(config: ImportEntitiesConfig): Promise; - import(config: ImportEntitiesConfig, callback: LongRunningCallback): void; /** * Import entities into this project from a remote file. * @@ -705,6 +703,8 @@ class Datastore extends DatastoreRequest { * @param {Operation} callback.operation An operation object that can be used * to check the status of the request. */ + import(config: ImportEntitiesConfig): Promise; + import(config: ImportEntitiesConfig, callback: LongRunningCallback): void; import( config: ImportEntitiesConfig, callback?: LongRunningCallback @@ -769,8 +769,6 @@ class Datastore extends DatastoreRequest { return new Index(this, id); } - insert(entities: Entities): Promise; - insert(entities: Entities, callback: InsertCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `insert`. * @@ -785,6 +783,8 @@ class Datastore extends DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ + insert(entities: Entities): Promise; + insert(entities: Entities, callback: InsertCallback): void; insert( entities: Entities, callback?: InsertCallback @@ -799,13 +799,6 @@ class Datastore extends DatastoreRequest { this.save(entities, callback!); } - save(entities: Entities, gaxOptions?: CallOptions): Promise; - save( - entities: Entities, - gaxOptions: CallOptions, - callback: SaveCallback - ): void; - save(entities: Entities, callback: SaveCallback): void; /** * Insert or update the specified object(s). If a key is incomplete, its * associated object is inserted and the original Key object is updated to @@ -1041,6 +1034,13 @@ class Datastore extends DatastoreRequest { * }); * ``` */ + save(entities: Entities, gaxOptions?: CallOptions): Promise; + save( + entities: Entities, + gaxOptions: CallOptions, + callback: SaveCallback + ): void; + save(entities: Entities, callback: SaveCallback): void; save( entities: Entities, gaxOptionsOrCallback?: CallOptions | SaveCallback, @@ -1178,8 +1178,6 @@ class Datastore extends DatastoreRequest { ); } - update(entities: Entities): Promise; - update(entities: Entities, callback: UpdateCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `update`. * @@ -1194,6 +1192,8 @@ class Datastore extends DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ + update(entities: Entities): Promise; + update(entities: Entities, callback: UpdateCallback): void; update( entities: Entities, callback?: UpdateCallback @@ -1208,8 +1208,6 @@ class Datastore extends DatastoreRequest { this.save(entities, callback!); } - upsert(entities: Entities): Promise; - upsert(entities: Entities, callback: UpsertCallback): void; /** * Maps to {@link Datastore#save}, forcing the method to be `upsert`. * @@ -1224,6 +1222,8 @@ class Datastore extends DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ + upsert(entities: Entities): Promise; + upsert(entities: Entities, callback: UpsertCallback): void; upsert( entities: Entities, callback?: UpsertCallback @@ -1450,10 +1450,6 @@ class Datastore extends DatastoreRequest { static NO_MORE_RESULTS = 'NO_MORE_RESULTS'; NO_MORE_RESULTS = Datastore.NO_MORE_RESULTS; - createQuery(kind?: string): Query; - createQuery(kind?: string[]): Query; - createQuery(namespace: string, kind: string): Query; - createQuery(namespace: string, kind: string[]): Query; /** * Create a query for the specified kind. See {@link Query} for all * of the available methods. @@ -1472,6 +1468,10 @@ class Datastore extends DatastoreRequest { * const query = datastore.createQuery('Company'); * ``` */ + createQuery(kind?: string): Query; + createQuery(kind?: string[]): Query; + createQuery(namespace: string, kind: string): Query; + createQuery(namespace: string, kind: string[]): Query; createQuery( namespaceOrKind?: string | string[], kind?: string | string[] @@ -1484,9 +1484,6 @@ class Datastore extends DatastoreRequest { return new Query(this, namespace, arrify(kind) as string[]); } - key(options: entity.KeyOptions): entity.Key; - key(path: PathType[]): entity.Key; - key(path: string): entity.Key; /** * Helper to create a Key object, scoped to the instance's namespace by * default. @@ -1567,6 +1564,9 @@ class Datastore extends DatastoreRequest { * const key = datastore.key(['Company', 'Google', 'Employee']); * ``` */ + key(options: entity.KeyOptions): entity.Key; + key(path: PathType[]): entity.Key; + key(path: string): entity.Key; key(options: string | entity.KeyOptions | PathType[]): entity.Key { const keyOptions = is.object(options) ? (options as entity.KeyOptions) @@ -1598,16 +1598,6 @@ class Datastore extends DatastoreRequest { return Datastore.isKey(value); } - keyToLegacyUrlSafe(key: entity.Key, locationPrefix?: string): Promise; - keyToLegacyUrlSafe( - key: entity.Key, - callback: KeyToLegacyUrlSafeCallback - ): void; - keyToLegacyUrlSafe( - key: entity.Key, - locationPrefix: string, - callback: KeyToLegacyUrlSafeCallback - ): void; /** * Helper to create a URL safe key. * @@ -1660,6 +1650,16 @@ class Datastore extends DatastoreRequest { * }); * ``` */ + keyToLegacyUrlSafe(key: entity.Key, locationPrefix?: string): Promise; + keyToLegacyUrlSafe( + key: entity.Key, + callback: KeyToLegacyUrlSafeCallback + ): void; + keyToLegacyUrlSafe( + key: entity.Key, + locationPrefix: string, + callback: KeyToLegacyUrlSafeCallback + ): void; keyToLegacyUrlSafe( key: entity.Key, locationPrefixOrCallback?: string | KeyToLegacyUrlSafeCallback, diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index fadeb7e3e6d..a605165e8d0 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -152,8 +152,6 @@ class Query { this.offsetVal = -1; } - filter(property: string, value: {}): Query; - filter(property: string, operator: Operator, value: {}): Query; /** * Datastore allows querying on properties. Supported comparison operators * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are @@ -194,6 +192,8 @@ class Query { * const keyQuery = query.filter('__key__', key); * ``` */ + filter(property: string, value: {}): Query; + filter(property: string, operator: Operator, value: {}): Query; filter(property: string, operatorOrValue: Operator, value?: {}): Query { let operator = operatorOrValue as Operator; if (arguments.length === 2) { @@ -407,9 +407,6 @@ class Query { return this; } - run(options?: RunQueryOptions): Promise; - run(options: RunQueryOptions, callback: RunQueryCallback): void; - run(callback: RunQueryCallback): void; /** * Run the query. * @@ -475,6 +472,9 @@ class Query { * }); * ``` */ + run(options?: RunQueryOptions): Promise; + run(options: RunQueryOptions, callback: RunQueryCallback): void; + run(callback: RunQueryCallback): void; run( optionsOrCallback?: RunQueryOptions | RunQueryCallback, cb?: RunQueryCallback diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 20b39dd677c..733d1bc490c 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -124,15 +124,6 @@ class DatastoreRequest { return entityObject; } - allocateIds( - key: entity.Key, - options: AllocateIdsOptions | number - ): Promise; - allocateIds( - key: entity.Key, - options: AllocateIdsOptions | number, - callback: AllocateIdsCallback - ): void; /** * Generate IDs without creating entities. * @@ -207,6 +198,15 @@ class DatastoreRequest { * }); * ``` */ + allocateIds( + key: entity.Key, + options: AllocateIdsOptions | number + ): Promise; + allocateIds( + key: entity.Key, + options: AllocateIdsOptions | number, + callback: AllocateIdsCallback + ): void; allocateIds( key: entity.Key, options: AllocateIdsOptions | number, @@ -336,13 +336,6 @@ class DatastoreRequest { return stream; } - delete(keys: Entities, gaxOptions?: CallOptions): Promise; - delete(keys: Entities, callback: DeleteCallback): void; - delete( - keys: Entities, - gaxOptions: CallOptions, - callback: DeleteCallback - ): void; /** * Delete all entities identified with the specified key(s). * @@ -393,6 +386,13 @@ class DatastoreRequest { * }); * ``` */ + delete(keys: Entities, gaxOptions?: CallOptions): Promise; + delete(keys: Entities, callback: DeleteCallback): void; + delete( + keys: Entities, + gaxOptions: CallOptions, + callback: DeleteCallback + ): void; delete( keys: entity.Key | entity.Key[], gaxOptionsOrCallback?: CallOptions | DeleteCallback, @@ -428,16 +428,6 @@ class DatastoreRequest { ); } - get( - keys: entity.Key | entity.Key[], - options?: CreateReadStreamOptions - ): Promise; - get(keys: entity.Key | entity.Key[], callback: GetCallback): void; - get( - keys: entity.Key | entity.Key[], - options: CreateReadStreamOptions, - callback: GetCallback - ): void; /** * Retrieve the entities identified with the specified key(s) in the current * transaction. Get operations require a valid key to retrieve the @@ -531,6 +521,16 @@ class DatastoreRequest { * }); * ``` */ + get( + keys: entity.Key | entity.Key[], + options?: CreateReadStreamOptions + ): Promise; + get(keys: entity.Key | entity.Key[], callback: GetCallback): void; + get( + keys: entity.Key | entity.Key[], + options: CreateReadStreamOptions, + callback: GetCallback + ): void; get( keys: entity.Key | entity.Key[], optionsOrCallback?: CreateReadStreamOptions | GetCallback, @@ -553,13 +553,6 @@ class DatastoreRequest { ); } - runQuery(query: Query, options?: RunQueryOptions): Promise; - runQuery( - query: Query, - options: RunQueryOptions, - callback: RunQueryCallback - ): void; - runQuery(query: Query, callback: RunQueryCallback): void; /** * Datastore allows you to query entities by kind, filter them by property * filters, and sort them by a property name. Projection and pagination are @@ -659,6 +652,13 @@ class DatastoreRequest { * }); * ``` */ + runQuery(query: Query, options?: RunQueryOptions): Promise; + runQuery( + query: Query, + options: RunQueryOptions, + callback: RunQueryCallback + ): void; + runQuery(query: Query, callback: RunQueryCallback): void; runQuery( query: Query, optionsOrCallback?: RunQueryOptions | RunQueryCallback, @@ -816,8 +816,6 @@ class DatastoreRequest { return stream; } - merge(entities: Entities): Promise; - merge(entities: Entities, callback: SaveCallback): void; /** * Merge the specified object(s). If a key is incomplete, its associated object * is inserted and the original Key object is updated to contain the generated ID. @@ -841,6 +839,8 @@ class DatastoreRequest { * @param {?error} callback.err An error returned while making this request * @param {object} callback.apiResponse The full API response. */ + merge(entities: Entities): Promise; + merge(entities: Entities, callback: SaveCallback): void; merge( entities: Entities, callback?: SaveCallback @@ -945,7 +945,6 @@ class DatastoreRequest { }); } - request_(config: RequestConfig, callback: RequestCallback): void; /** * Make a request to the API endpoint. Properties to indicate a transactional * or non-transactional operation are added automatically. @@ -959,6 +958,7 @@ class DatastoreRequest { * * @private */ + request_(config: RequestConfig, callback: RequestCallback): void; request_(config: RequestConfig, callback: RequestCallback): void { this.prepareGaxRequest_(config, (err: Error, requestFn: Function) => { if (err) { diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index c3f7d44e103..3e4b995057c 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -98,9 +98,6 @@ class Transaction extends DatastoreRequest { * the final commit request with. */ - commit(gaxOptions?: CallOptions): Promise; - commit(callback: CommitCallback): void; - commit(gaxOptions: CallOptions, callback: CommitCallback): void; /** * Commit the remote transaction and finalize the current transaction * instance. @@ -136,6 +133,9 @@ class Transaction extends DatastoreRequest { * }); * ``` */ + commit(gaxOptions?: CallOptions): Promise; + commit(callback: CommitCallback): void; + commit(gaxOptions: CallOptions, callback: CommitCallback): void; commit( gaxOptionsOrCallback?: CallOptions | CommitCallback, cb?: CommitCallback @@ -261,10 +261,6 @@ class Transaction extends DatastoreRequest { ); } - createQuery(kind?: string): Query; - createQuery(kind?: string[]): Query; - createQuery(namespace: string, kind: string): Query; - createQuery(namespace: string, kind: string[]): Query; /** * Create a query for the specified kind. See {module:datastore/query} for all * of the available methods. @@ -330,6 +326,10 @@ class Transaction extends DatastoreRequest { * }); * ``` */ + createQuery(kind?: string): Query; + createQuery(kind?: string[]): Query; + createQuery(namespace: string, kind: string): Query; + createQuery(namespace: string, kind: string[]): Query; createQuery( namespaceOrKind?: string | string[], kind?: string | string[] @@ -410,9 +410,6 @@ class Transaction extends DatastoreRequest { this.save(entities); } - rollback(callback: RollbackCallback): void; - rollback(gaxOptions?: CallOptions): Promise; - rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; /** * Reverse a transaction remotely and finalize the current transaction * instance. @@ -449,6 +446,9 @@ class Transaction extends DatastoreRequest { * }); * ``` */ + rollback(callback: RollbackCallback): void; + rollback(gaxOptions?: CallOptions): Promise; + rollback(gaxOptions: CallOptions, callback: RollbackCallback): void; rollback( gaxOptionsOrCallback?: CallOptions | RollbackCallback, cb?: RollbackCallback @@ -471,9 +471,6 @@ class Transaction extends DatastoreRequest { ); } - run(options?: RunOptions): Promise; - run(callback: RunCallback): void; - run(options: RunOptions, callback: RunCallback): void; /** * Begin a remote transaction. In the callback provided, run your * transactional commands. @@ -526,6 +523,9 @@ class Transaction extends DatastoreRequest { * }); * ``` */ + run(options?: RunOptions): Promise; + run(callback: RunCallback): void; + run(options: RunOptions, callback: RunCallback): void; run( optionsOrCallback?: RunOptions | RunCallback, cb?: RunCallback From 40fc21a1f76c11833e595f73bd65a9899371a323 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 8 Nov 2021 16:50:16 +0000 Subject: [PATCH 653/820] chore: release 6.6.2 (#897) :robot: I have created a release \*beep\* \*boop\* --- ### [6.6.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.1...v6.6.2) (2021-11-08) ### Bug Fixes * **cloud-rad:** move comments for TSDoc ([#896](https://www.github.com/googleapis/nodejs-datastore/issues/896)) ([2941f2f](https://www.github.com/googleapis/nodejs-datastore/commit/2941f2f0f132b41534e303d441d837051ce88fd7)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 16ae5f3ab49..8339ab69ac5 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +### [6.6.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.1...v6.6.2) (2021-11-08) + + +### Bug Fixes + +* **cloud-rad:** move comments for TSDoc ([#896](https://www.github.com/googleapis/nodejs-datastore/issues/896)) ([2941f2f](https://www.github.com/googleapis/nodejs-datastore/commit/2941f2f0f132b41534e303d441d837051ce88fd7)) + ### [6.6.1](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.0...v6.6.1) (2021-11-04) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5c124271c73..2355f81fd0a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.6.1", + "version": "6.6.2", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index f106c92c495..302c20fa7dd 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.6.1", + "@google-cloud/datastore": "^6.6.2", "sinon": "^12.0.0" }, "devDependencies": { From 51f1f8aba8588d487d6265da9836daad4794d3ff Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 10 Nov 2021 14:34:46 -0800 Subject: [PATCH 654/820] docs(samples): add example tags to generated samples (#898) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(samples): add example tags to generated samples PiperOrigin-RevId: 408439482 Source-Link: https://github.com/googleapis/googleapis/commit/b9f61843dc80c7c285fc34fd3a40aae55082c2b9 Source-Link: https://github.com/googleapis/googleapis-gen/commit/eb888bc214efc7bf43bf4634b470254565a659a5 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZWI4ODhiYzIxNGVmYzdiZjQzYmY0NjM0YjQ3MDI1NDU2NWE2NTlhNSJ9 * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../nodejs-datastore/linkinator.config.json | 2 +- .../src/v1/datastore_admin_client.ts | 434 ++++++++---------- .../src/v1/datastore_client.ts | 336 +++++++------- 3 files changed, 359 insertions(+), 413 deletions(-) diff --git a/handwritten/nodejs-datastore/linkinator.config.json b/handwritten/nodejs-datastore/linkinator.config.json index 29a223b6db6..0121dfa684f 100644 --- a/handwritten/nodejs-datastore/linkinator.config.json +++ b/handwritten/nodejs-datastore/linkinator.config.json @@ -6,5 +6,5 @@ "img.shields.io" ], "silent": true, - "concurrency": 10 + "concurrency": 5 } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 34afefdfc87..f79328409da 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -436,6 +436,25 @@ export class DatastoreAdminClient { // ------------------- // -- Service calls -- // ------------------- + /** + * Gets an index. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.indexId + * The resource ID of the index to get. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [Index]{@link google.datastore.admin.v1.Index}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore_admin.get_index.js + * region_tag:datastore_v1_generated_DatastoreAdmin_GetIndex_async + */ getIndex( request?: protos.google.datastore.admin.v1.IGetIndexRequest, options?: CallOptions @@ -463,27 +482,6 @@ export class DatastoreAdminClient { {} | null | undefined > ): void; - /** - * Gets an index. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Project ID against which to make the request. - * @param {string} request.indexId - * The resource ID of the index to get. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [Index]{@link google.datastore.admin.v1.Index}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.getIndex(request); - * ``` - */ getIndex( request?: protos.google.datastore.admin.v1.IGetIndexRequest, optionsOrCallback?: @@ -524,42 +522,6 @@ export class DatastoreAdminClient { return this.innerApiCalls.getIndex(request, options, callback); } - exportEntities( - request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, - options?: CallOptions - ): Promise< - [ - LROperation< - protos.google.datastore.admin.v1.IExportEntitiesResponse, - protos.google.datastore.admin.v1.IExportEntitiesMetadata - >, - protos.google.longrunning.IOperation | undefined, - {} | undefined - ] - >; - exportEntities( - request: protos.google.datastore.admin.v1.IExportEntitiesRequest, - options: CallOptions, - callback: Callback< - LROperation< - protos.google.datastore.admin.v1.IExportEntitiesResponse, - protos.google.datastore.admin.v1.IExportEntitiesMetadata - >, - protos.google.longrunning.IOperation | null | undefined, - {} | null | undefined - > - ): void; - exportEntities( - request: protos.google.datastore.admin.v1.IExportEntitiesRequest, - callback: Callback< - LROperation< - protos.google.datastore.admin.v1.IExportEntitiesResponse, - protos.google.datastore.admin.v1.IExportEntitiesMetadata - >, - protos.google.longrunning.IOperation | null | undefined, - {} | null | undefined - > - ): void; /** * Exports a copy of all or a subset of entities from Google Cloud Datastore * to another storage system, such as Google Cloud Storage. Recent updates to @@ -606,12 +568,45 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const [operation] = await client.exportEntities(request); - * const [response] = await operation.promise(); - * ``` + * @example include:samples/generated/v1/datastore_admin.export_entities.js + * region_tag:datastore_v1_generated_DatastoreAdmin_ExportEntities_async */ + exportEntities( + request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, + options?: CallOptions + ): Promise< + [ + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + exportEntities( + request: protos.google.datastore.admin.v1.IExportEntitiesRequest, + callback: Callback< + LROperation< + protos.google.datastore.admin.v1.IExportEntitiesResponse, + protos.google.datastore.admin.v1.IExportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; exportEntities( request?: protos.google.datastore.admin.v1.IExportEntitiesRequest, optionsOrCallback?: @@ -669,13 +664,8 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const decodedOperation = await checkExportEntitiesProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * ``` + * @example include:samples/generated/v1/datastore_admin.export_entities.js + * region_tag:datastore_v1_generated_DatastoreAdmin_ExportEntities_async */ async checkExportEntitiesProgress( name: string @@ -699,42 +689,6 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.ExportEntitiesMetadata >; } - importEntities( - request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, - options?: CallOptions - ): Promise< - [ - LROperation< - protos.google.protobuf.IEmpty, - protos.google.datastore.admin.v1.IImportEntitiesMetadata - >, - protos.google.longrunning.IOperation | undefined, - {} | undefined - ] - >; - importEntities( - request: protos.google.datastore.admin.v1.IImportEntitiesRequest, - options: CallOptions, - callback: Callback< - LROperation< - protos.google.protobuf.IEmpty, - protos.google.datastore.admin.v1.IImportEntitiesMetadata - >, - protos.google.longrunning.IOperation | null | undefined, - {} | null | undefined - > - ): void; - importEntities( - request: protos.google.datastore.admin.v1.IImportEntitiesRequest, - callback: Callback< - LROperation< - protos.google.protobuf.IEmpty, - protos.google.datastore.admin.v1.IImportEntitiesMetadata - >, - protos.google.longrunning.IOperation | null | undefined, - {} | null | undefined - > - ): void; /** * Imports entities into Google Cloud Datastore. Existing entities with the * same key are overwritten. The import occurs in the background and its @@ -776,12 +730,45 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const [operation] = await client.importEntities(request); - * const [response] = await operation.promise(); - * ``` + * @example include:samples/generated/v1/datastore_admin.import_entities.js + * region_tag:datastore_v1_generated_DatastoreAdmin_ImportEntities_async */ + importEntities( + request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, + options?: CallOptions + ): Promise< + [ + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined + ] + >; + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; + importEntities( + request: protos.google.datastore.admin.v1.IImportEntitiesRequest, + callback: Callback< + LROperation< + protos.google.protobuf.IEmpty, + protos.google.datastore.admin.v1.IImportEntitiesMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + ): void; importEntities( request?: protos.google.datastore.admin.v1.IImportEntitiesRequest, optionsOrCallback?: @@ -839,13 +826,8 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const decodedOperation = await checkImportEntitiesProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * ``` + * @example include:samples/generated/v1/datastore_admin.import_entities.js + * region_tag:datastore_v1_generated_DatastoreAdmin_ImportEntities_async */ async checkImportEntitiesProgress( name: string @@ -869,6 +851,41 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.ImportEntitiesMetadata >; } + /** + * Creates the specified index. + * A newly created index's initial state is `CREATING`. On completion of the + * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the state will be `READY`. + * If the index already exists, the call will return an `ALREADY_EXISTS` + * status. + * + * During index creation, the process could result in an error, in which + * case the index will move to the `ERROR` state. The process can be recovered + * by fixing the data that caused the error, removing the index with + * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete}, then + * re-creating the index with [create] + * [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. + * + * Indexes with a single property cannot be created. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {google.datastore.admin.v1.Index} request.index + * The index to create. The name and state fields are output only and will be + * ignored. Single property indexes cannot be created or deleted. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example include:samples/generated/v1/datastore_admin.create_index.js + * region_tag:datastore_v1_generated_DatastoreAdmin_CreateIndex_async + */ createIndex( request?: protos.google.datastore.admin.v1.ICreateIndexRequest, options?: CallOptions @@ -905,44 +922,6 @@ export class DatastoreAdminClient { {} | null | undefined > ): void; - /** - * Creates the specified index. - * A newly created index's initial state is `CREATING`. On completion of the - * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the state will be `READY`. - * If the index already exists, the call will return an `ALREADY_EXISTS` - * status. - * - * During index creation, the process could result in an error, in which - * case the index will move to the `ERROR` state. The process can be recovered - * by fixing the data that caused the error, removing the index with - * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete}, then - * re-creating the index with [create] - * [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. - * - * Indexes with a single property cannot be created. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Project ID against which to make the request. - * @param {google.datastore.admin.v1.Index} request.index - * The index to create. The name and state fields are output only and will be - * ignored. Single property indexes cannot be created or deleted. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) - * for more details and examples. - * @example - * ``` - * const [operation] = await client.createIndex(request); - * const [response] = await operation.promise(); - * ``` - */ createIndex( request?: protos.google.datastore.admin.v1.ICreateIndexRequest, optionsOrCallback?: @@ -1000,13 +979,8 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const decodedOperation = await checkCreateIndexProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * ``` + * @example include:samples/generated/v1/datastore_admin.create_index.js + * region_tag:datastore_v1_generated_DatastoreAdmin_CreateIndex_async */ async checkCreateIndexProgress( name: string @@ -1030,6 +1004,36 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IndexOperationMetadata >; } + /** + * Deletes an existing index. + * An index can only be deleted if it is in a `READY` or `ERROR` state. On + * successful execution of the request, the index will be in a `DELETING` + * {@link google.datastore.admin.v1.Index.State|state}. And on completion of the + * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the index will be removed. + * + * During index deletion, the process could result in an error, in which + * case the index will move to the `ERROR` state. The process can be recovered + * by fixing the data that caused the error, followed by calling + * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete} again. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Project ID against which to make the request. + * @param {string} request.indexId + * The resource ID of the index to delete. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * for more details and examples. + * @example include:samples/generated/v1/datastore_admin.delete_index.js + * region_tag:datastore_v1_generated_DatastoreAdmin_DeleteIndex_async + */ deleteIndex( request?: protos.google.datastore.admin.v1.IDeleteIndexRequest, options?: CallOptions @@ -1066,39 +1070,6 @@ export class DatastoreAdminClient { {} | null | undefined > ): void; - /** - * Deletes an existing index. - * An index can only be deleted if it is in a `READY` or `ERROR` state. On - * successful execution of the request, the index will be in a `DELETING` - * {@link google.datastore.admin.v1.Index.State|state}. And on completion of the - * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the index will be removed. - * - * During index deletion, the process could result in an error, in which - * case the index will move to the `ERROR` state. The process can be recovered - * by fixing the data that caused the error, followed by calling - * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete} again. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Project ID against which to make the request. - * @param {string} request.indexId - * The resource ID of the index to delete. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) - * for more details and examples. - * @example - * ``` - * const [operation] = await client.deleteIndex(request); - * const [response] = await operation.promise(); - * ``` - */ deleteIndex( request?: protos.google.datastore.admin.v1.IDeleteIndexRequest, optionsOrCallback?: @@ -1156,13 +1127,8 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) * for more details and examples. - * @example - * ``` - * const decodedOperation = await checkDeleteIndexProgress(name); - * console.log(decodedOperation.result); - * console.log(decodedOperation.done); - * console.log(decodedOperation.metadata); - * ``` + * @example include:samples/generated/v1/datastore_admin.delete_index.js + * region_tag:datastore_v1_generated_DatastoreAdmin_DeleteIndex_async */ async checkDeleteIndexProgress( name: string @@ -1186,33 +1152,6 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IndexOperationMetadata >; } - listIndexes( - request?: protos.google.datastore.admin.v1.IListIndexesRequest, - options?: CallOptions - ): Promise< - [ - protos.google.datastore.admin.v1.IIndex[], - protos.google.datastore.admin.v1.IListIndexesRequest | null, - protos.google.datastore.admin.v1.IListIndexesResponse - ] - >; - listIndexes( - request: protos.google.datastore.admin.v1.IListIndexesRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.datastore.admin.v1.IListIndexesRequest, - protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, - protos.google.datastore.admin.v1.IIndex - > - ): void; - listIndexes( - request: protos.google.datastore.admin.v1.IListIndexesRequest, - callback: PaginationCallback< - protos.google.datastore.admin.v1.IListIndexesRequest, - protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, - protos.google.datastore.admin.v1.IIndex - > - ): void; /** * Lists the indexes that match the specified filters. Datastore uses an * eventually consistent query to fetch the list of indexes and may @@ -1241,6 +1180,33 @@ export class DatastoreAdminClient { * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) * for more details and examples. */ + listIndexes( + request?: protos.google.datastore.admin.v1.IListIndexesRequest, + options?: CallOptions + ): Promise< + [ + protos.google.datastore.admin.v1.IIndex[], + protos.google.datastore.admin.v1.IListIndexesRequest | null, + protos.google.datastore.admin.v1.IListIndexesResponse + ] + >; + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, + protos.google.datastore.admin.v1.IIndex + > + ): void; + listIndexes( + request: protos.google.datastore.admin.v1.IListIndexesRequest, + callback: PaginationCallback< + protos.google.datastore.admin.v1.IListIndexesRequest, + protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined, + protos.google.datastore.admin.v1.IIndex + > + ): void; listIndexes( request?: protos.google.datastore.admin.v1.IListIndexesRequest, optionsOrCallback?: @@ -1353,13 +1319,8 @@ export class DatastoreAdminClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) * for more details and examples. - * @example - * ``` - * const iterable = client.listIndexesAsync(request); - * for await (const response of iterable) { - * // process response - * } - * ``` + * @example include:samples/generated/v1/datastore_admin.list_indexes.js + * region_tag:datastore_v1_generated_DatastoreAdmin_ListIndexes_async */ listIndexesAsync( request?: protos.google.datastore.admin.v1.IListIndexesRequest, @@ -1373,7 +1334,6 @@ export class DatastoreAdminClient { gax.routingHeader.fromParams({ project_id: request.projectId || '', }); - options = options || {}; const defaultCallSettings = this._defaults['listIndexes']; const callSettings = defaultCallSettings.merge(options); this.initialize(); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 12da1919758..ba453615bc5 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -298,6 +298,27 @@ export class DatastoreClient { // ------------------- // -- Service calls -- // ------------------- + /** + * Looks up entities by key. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.ReadOptions} request.readOptions + * The options for this lookup request. + * @param {number[]} request.keys + * Required. Keys of entities to look up. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.lookup.js + * region_tag:datastore_v1_generated_Datastore_Lookup_async + */ lookup( request?: protos.google.datastore.v1.ILookupRequest, options?: CallOptions @@ -325,29 +346,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Looks up entities by key. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {google.datastore.v1.ReadOptions} request.readOptions - * The options for this lookup request. - * @param {number[]} request.keys - * Required. Keys of entities to look up. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.lookup(request); - * ``` - */ lookup( request?: protos.google.datastore.v1.ILookupRequest, optionsOrCallback?: @@ -387,6 +385,34 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.lookup(request, options, callback); } + /** + * Queries for entities. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.PartitionId} request.partitionId + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + * @param {google.datastore.v1.ReadOptions} request.readOptions + * The options for this query. + * @param {google.datastore.v1.Query} request.query + * The query to run. + * @param {google.datastore.v1.GqlQuery} request.gqlQuery + * The GQL query to run. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.run_query.js + * region_tag:datastore_v1_generated_Datastore_RunQuery_async + */ runQuery( request?: protos.google.datastore.v1.IRunQueryRequest, options?: CallOptions @@ -414,36 +440,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Queries for entities. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {google.datastore.v1.PartitionId} request.partitionId - * Entities are partitioned into subsets, identified by a partition ID. - * Queries are scoped to a single partition. - * This partition ID is normalized with the standard default context - * partition ID. - * @param {google.datastore.v1.ReadOptions} request.readOptions - * The options for this query. - * @param {google.datastore.v1.Query} request.query - * The query to run. - * @param {google.datastore.v1.GqlQuery} request.gqlQuery - * The GQL query to run. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.runQuery(request); - * ``` - */ runQuery( request?: protos.google.datastore.v1.IRunQueryRequest, optionsOrCallback?: @@ -483,6 +479,25 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); } + /** + * Begins a new transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {google.datastore.v1.TransactionOptions} request.transactionOptions + * Options for a new transaction. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.begin_transaction.js + * region_tag:datastore_v1_generated_Datastore_BeginTransaction_async + */ beginTransaction( request?: protos.google.datastore.v1.IBeginTransactionRequest, options?: CallOptions @@ -510,27 +525,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Begins a new transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {google.datastore.v1.TransactionOptions} request.transactionOptions - * Options for a new transaction. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.beginTransaction(request); - * ``` - */ beginTransaction( request?: protos.google.datastore.v1.IBeginTransactionRequest, optionsOrCallback?: @@ -572,33 +566,6 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.beginTransaction(request, options, callback); } - commit( - request?: protos.google.datastore.v1.ICommitRequest, - options?: CallOptions - ): Promise< - [ - protos.google.datastore.v1.ICommitResponse, - protos.google.datastore.v1.ICommitRequest | undefined, - {} | undefined - ] - >; - commit( - request: protos.google.datastore.v1.ICommitRequest, - options: CallOptions, - callback: Callback< - protos.google.datastore.v1.ICommitResponse, - protos.google.datastore.v1.ICommitRequest | null | undefined, - {} | null | undefined - > - ): void; - commit( - request: protos.google.datastore.v1.ICommitRequest, - callback: Callback< - protos.google.datastore.v1.ICommitResponse, - protos.google.datastore.v1.ICommitRequest | null | undefined, - {} | null | undefined - > - ): void; /** * Commits a transaction, optionally creating, deleting or modifying some * entities. @@ -634,11 +601,36 @@ export class DatastoreClient { * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. - * @example - * ``` - * const [response] = await client.commit(request); - * ``` + * @example include:samples/generated/v1/datastore.commit.js + * region_tag:datastore_v1_generated_Datastore_Commit_async */ + commit( + request?: protos.google.datastore.v1.ICommitRequest, + options?: CallOptions + ): Promise< + [ + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | undefined, + {} | undefined + ] + >; + commit( + request: protos.google.datastore.v1.ICommitRequest, + options: CallOptions, + callback: Callback< + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined + > + ): void; + commit( + request: protos.google.datastore.v1.ICommitRequest, + callback: Callback< + protos.google.datastore.v1.ICommitResponse, + protos.google.datastore.v1.ICommitRequest | null | undefined, + {} | null | undefined + > + ): void; commit( request?: protos.google.datastore.v1.ICommitRequest, optionsOrCallback?: @@ -678,6 +670,26 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.commit(request, options, callback); } + /** + * Rolls back a transaction. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {Buffer} request.transaction + * Required. The transaction identifier, returned by a call to + * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.rollback.js + * region_tag:datastore_v1_generated_Datastore_Rollback_async + */ rollback( request?: protos.google.datastore.v1.IRollbackRequest, options?: CallOptions @@ -705,28 +717,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Rolls back a transaction. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {Buffer} request.transaction - * Required. The transaction identifier, returned by a call to - * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.rollback(request); - * ``` - */ rollback( request?: protos.google.datastore.v1.IRollbackRequest, optionsOrCallback?: @@ -766,6 +756,27 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.rollback(request, options, callback); } + /** + * Allocates IDs for the given keys, which is useful for referencing an entity + * before it is inserted. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {number[]} request.keys + * Required. A list of keys with incomplete key paths for which to allocate IDs. + * No key may be reserved/read-only. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.allocate_ids.js + * region_tag:datastore_v1_generated_Datastore_AllocateIds_async + */ allocateIds( request?: protos.google.datastore.v1.IAllocateIdsRequest, options?: CallOptions @@ -793,29 +804,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Allocates IDs for the given keys, which is useful for referencing an entity - * before it is inserted. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {number[]} request.keys - * Required. A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.allocateIds(request); - * ``` - */ allocateIds( request?: protos.google.datastore.v1.IAllocateIdsRequest, optionsOrCallback?: @@ -855,6 +843,29 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.allocateIds(request, options, callback); } + /** + * Prevents the supplied keys' IDs from being auto-allocated by Cloud + * Datastore. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * If not empty, the ID of the database against which to make the request. + * @param {number[]} request.keys + * Required. A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.reserve_ids.js + * region_tag:datastore_v1_generated_Datastore_ReserveIds_async + */ reserveIds( request?: protos.google.datastore.v1.IReserveIdsRequest, options?: CallOptions @@ -882,31 +893,6 @@ export class DatastoreClient { {} | null | undefined > ): void; - /** - * Prevents the supplied keys' IDs from being auto-allocated by Cloud - * Datastore. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.projectId - * Required. The ID of the project against which to make the request. - * @param {string} request.databaseId - * If not empty, the ID of the database against which to make the request. - * @param {number[]} request.keys - * Required. A list of keys with complete key paths whose numeric IDs should not be - * auto-allocated. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) - * for more details and examples. - * @example - * ``` - * const [response] = await client.reserveIds(request); - * ``` - */ reserveIds( request?: protos.google.datastore.v1.IReserveIdsRequest, optionsOrCallback?: From 4254e20747063d2235a4619f7bc549c26ca523fe Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 25 Nov 2021 10:37:54 -0500 Subject: [PATCH 655/820] build: set minimum version to 10 in samples (#877) PiperOrigin-RevId: 399287285 Source-Link: https://github.com/googleapis/googleapis/commit/15759865d1c54e3d46429010f7e472fe6c3d3715 Source-Link: https://github.com/googleapis/googleapis-gen/commit/b27fff623a5d8d586b703b5e4919856abe7c2eb3 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjI3ZmZmNjIzYTVkOGQ1ODZiNzAzYjVlNDkxOTg1NmFiZTdjMmViMyJ9 --- handwritten/nodejs-datastore/samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 302c20fa7dd..a04826f7c1e 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -8,7 +8,7 @@ ], "repository": "googleapis/nodejs-datastore", "engines": { - "node": ">=8" + "node": ">=10" }, "scripts": { "test": "mocha --timeout=600000" From 1e51a546194fad1daffd640fa249c83554a72754 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 9 Dec 2021 22:44:27 +0000 Subject: [PATCH 656/820] build: add generated samples to .eslintignore (#900) --- handwritten/nodejs-datastore/.eslintignore | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index 9340ad9b86d..ea5b04aebe6 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -4,3 +4,4 @@ test/fixtures build/ docs/ protos/ +samples/generated/ From 2ffed0618bd3c91769458794967807ead866c203 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 29 Dec 2021 20:02:19 +0000 Subject: [PATCH 657/820] docs(node): support "stable"/"preview" release level (#1312) (#904) --- handwritten/nodejs-datastore/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 43e088aec88..9317dcb7cb5 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -157,6 +157,8 @@ are addressed with the highest priority. + + More Information: [Google Cloud Platform Launch Stages][launch_stages] [launch_stages]: https://cloud.google.com/terms/launch-stages From fb02b37544bc4dd3cf1577a909f168ece8d7ed56 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 30 Dec 2021 23:20:19 +0000 Subject: [PATCH 658/820] docs(badges): tweak badge to use new preview/stable language (#1314) (#905) --- handwritten/nodejs-datastore/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 9317dcb7cb5..d87874ed2cb 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -6,7 +6,6 @@ [![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) -[![codecov](https://img.shields.io/codecov/c/github/googleapis/nodejs-datastore/main.svg?style=flat)](https://codecov.io/gh/googleapis/nodejs-datastore) From 11f572ebd9c4b8f1ecbec5216960c5b04f7d490e Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Thu, 30 Dec 2021 18:56:17 -0500 Subject: [PATCH 659/820] chore: add api_shortname and library_type to repo metadata (#903) Update .repo-metadata.json as required by go/library-data-integrity --- handwritten/nodejs-datastore/.repo-metadata.json | 6 ++++-- handwritten/nodejs-datastore/README.md | 9 ++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index 584c7bf292e..6c4d562e75d 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -4,10 +4,12 @@ "product_documentation": "https://cloud.google.com/datastore/docs", "client_documentation": "https://cloud.google.com/nodejs/docs/reference/datastore/latest", "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", - "release_level": "ga", + "release_level": "stable", "language": "nodejs", "repo": "googleapis/nodejs-datastore", "distribution_name": "@google-cloud/datastore", "api_id": "datastore.googleapis.com", - "codeowner_team": "@googleapis/firestore-dpe" + "codeowner_team": "@googleapis/firestore-dpe", + "api_shortname": "datastore", + "library_type": "GAPIC_COMBO" } diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index d87874ed2cb..3c199954975 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -4,7 +4,7 @@ # [Google Cloud Datastore: Node.js Client](https://github.com/googleapis/nodejs-datastore) -[![release level](https://img.shields.io/badge/release%20level-general%20availability%20%28GA%29-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) +[![release level](https://img.shields.io/badge/release%20level-stable-brightgreen.svg?style=flat)](https://cloud.google.com/terms/launch-stages) [![npm version](https://img.shields.io/npm/v/@google-cloud/datastore.svg)](https://www.npmjs.org/package/@google-cloud/datastore) @@ -146,10 +146,10 @@ _Legacy Node.js versions are supported as a best effort:_ This library follows [Semantic Versioning](http://semver.org/). -This library is considered to be **General Availability (GA)**. This means it -is stable; the code surface will not change in backwards-incompatible ways + +This library is considered to be **stable**. The code surface will not change in backwards-incompatible ways unless absolutely necessary (e.g. because of critical security issues) or with -an extensive deprecation period. Issues and requests against **GA** libraries +an extensive deprecation period. Issues and requests against **stable** libraries are addressed with the highest priority. @@ -157,7 +157,6 @@ are addressed with the highest priority. - More Information: [Google Cloud Platform Launch Stages][launch_stages] [launch_stages]: https://cloud.google.com/terms/launch-stages From 89553711c707eb7b03f9723ee6cb74d5875cec3d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 7 Jan 2022 11:29:49 -0800 Subject: [PATCH 660/820] feat: define Datastore -> Firestore in Datastore mode migration long running operation metadata (#907) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: define Datastore -> Firestore in Datastore mode migration long running operation metadata PiperOrigin-RevId: 419875388 Source-Link: https://github.com/googleapis/googleapis/commit/1236b08b701363015cbc876a850b60a061f23bb3 Source-Link: https://github.com/googleapis/googleapis-gen/commit/46a0f8e309a32ffef9fada159daab709c91933b6 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDZhMGY4ZTMwOWEzMmZmZWY5ZmFkYTE1OWRhYWI3MDljOTE5MzNiNiJ9 * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../datastore/admin/v1/datastore_admin.proto | 57 +- .../google/datastore/admin/v1/migration.proto | 123 ++ .../nodejs-datastore/protos/protos.d.ts | 521 ++++++- handwritten/nodejs-datastore/protos/protos.js | 1309 ++++++++++++++++- .../nodejs-datastore/protos/protos.json | 109 +- .../src/v1/datastore_admin_client.ts | 2 +- .../src/v1/datastore_admin_proto_list.json | 3 +- .../src/v1/gapic_metadata.json | 2 +- .../nodejs-datastore/system-test/install.ts | 2 +- .../test/gapic_datastore_admin_v1.ts | 2 +- 10 files changed, 2065 insertions(+), 65 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index 99a9bd4fda4..3bd4f4c7278 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/datastore/admin/v1/index.proto"; +import "google/datastore/admin/v1/migration.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/timestamp.proto"; @@ -353,24 +354,6 @@ message ExportEntitiesMetadata { string output_url_prefix = 5; } -// Operation types. -enum OperationType { - // Unspecified. - OPERATION_TYPE_UNSPECIFIED = 0; - - // ExportEntities. - EXPORT_ENTITIES = 1; - - // ImportEntities. - IMPORT_ENTITIES = 2; - - // CreateIndex. - CREATE_INDEX = 3; - - // DeleteIndex. - DELETE_INDEX = 4; -} - // Metadata for ImportEntities operations. message ImportEntitiesMetadata { // Metadata common to all Datastore Admin operations. @@ -490,3 +473,39 @@ message IndexOperationMetadata { // The index resource ID that this operation is acting on. string index_id = 3; } + +// Metadata for Datastore to Firestore migration operations. +// +// The DatastoreFirestoreMigration operation is not started by the end-user via +// an explicit "creation" method. This is an intentional deviation from the LRO +// design pattern. +// +// This singleton resource can be accessed at: +// `projects/{project_id}/datastore-firestore-migration` +message DatastoreFirestoreMigrationMetadata { + // The current state of migration from Cloud Datastore to Cloud Firestore in + // Datastore mode. + MigrationState migration_state = 1; + + // The current step of migration from Cloud Datastore to Cloud Firestore in + // Datastore mode. + MigrationStep migration_step = 2; +} + +// Operation types. +enum OperationType { + // Unspecified. + OPERATION_TYPE_UNSPECIFIED = 0; + + // ExportEntities. + EXPORT_ENTITIES = 1; + + // ImportEntities. + IMPORT_ENTITIES = 2; + + // CreateIndex. + CREATE_INDEX = 3; + + // DeleteIndex. + DELETE_INDEX = 4; +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto new file mode 100644 index 00000000000..aab41706fe5 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto @@ -0,0 +1,123 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.admin.v1; + +import "google/api/annotations.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option java_multiple_files = true; +option java_outer_classname = "MigrationProto"; +option java_package = "com.google.datastore.admin.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\Admin\\V1"; +option ruby_package = "Google::Cloud::Datastore::Admin::V1"; + +// An event signifying a change in state of a [migration from Cloud Datastore to +// Cloud Firestore in Datastore +// mode](https://cloud.google.com/datastore/docs/upgrade-to-firestore). +message MigrationStateEvent { + // The new state of the migration. + MigrationState state = 1; +} + +// An event signifying the start of a new step in a [migration from Cloud +// Datastore to Cloud Firestore in Datastore +// mode](https://cloud.google.com/datastore/docs/upgrade-to-firestore). +message MigrationProgressEvent { + // Details for the `PREPARE` step. + message PrepareStepDetails { + // The concurrency mode this database will use when it reaches the + // `REDIRECT_WRITES` step. + ConcurrencyMode concurrency_mode = 1; + } + + // Details for the `REDIRECT_WRITES` step. + message RedirectWritesStepDetails { + // Ths concurrency mode for this database. + ConcurrencyMode concurrency_mode = 1; + } + + // Concurrency modes for transactions in Cloud Firestore. + enum ConcurrencyMode { + // Unspecified. + CONCURRENCY_MODE_UNSPECIFIED = 0; + + // Pessimistic concurrency. + PESSIMISTIC = 1; + + // Optimistic concurrency. + OPTIMISTIC = 2; + } + + // The step that is starting. + // + // An event with step set to `START` indicates that the migration + // has been reverted back to the initial pre-migration state. + MigrationStep step = 1; + + // Details about this step. + oneof step_details { + // Details for the `PREPARE` step. + PrepareStepDetails prepare_step_details = 2; + + // Details for the `REDIRECT_WRITES` step. + RedirectWritesStepDetails redirect_writes_step_details = 3; + } +} + +// States for a migration. +enum MigrationState { + // Unspecified. + MIGRATION_STATE_UNSPECIFIED = 0; + + // The migration is running. + RUNNING = 1; + + // The migration is paused. + PAUSED = 2; + + // The migration is complete. + COMPLETE = 3; +} + +// Steps in a migration. +enum MigrationStep { + // Unspecified. + MIGRATION_STEP_UNSPECIFIED = 0; + + // Pre-migration: the database is prepared for migration. + PREPARE = 6; + + // Start of migration. + START = 1; + + // Writes are applied synchronously to at least one replica. + APPLY_WRITES_SYNCHRONOUSLY = 7; + + // Data is copied to Cloud Firestore and then verified to match the data in + // Cloud Datastore. + COPY_AND_VERIFY = 2; + + // Eventually-consistent reads are redirected to Cloud Firestore. + REDIRECT_EVENTUALLY_CONSISTENT_READS = 3; + + // Strongly-consistent reads are redirected to Cloud Firestore. + REDIRECT_STRONGLY_CONSISTENT_READS = 4; + + // Writes are redirected to Cloud Firestore. + REDIRECT_WRITES = 5; +} diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index ecabe93d995..c43ae4bcb52 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -821,15 +821,6 @@ export namespace google { public toJSON(): { [k: string]: any }; } - /** OperationType enum. */ - enum OperationType { - OPERATION_TYPE_UNSPECIFIED = 0, - EXPORT_ENTITIES = 1, - IMPORT_ENTITIES = 2, - CREATE_INDEX = 3, - DELETE_INDEX = 4 - } - /** Properties of an ImportEntitiesMetadata. */ interface IImportEntitiesMetadata { @@ -1634,6 +1625,111 @@ export namespace google { public toJSON(): { [k: string]: any }; } + /** Properties of a DatastoreFirestoreMigrationMetadata. */ + interface IDatastoreFirestoreMigrationMetadata { + + /** DatastoreFirestoreMigrationMetadata migrationState */ + migrationState?: (google.datastore.admin.v1.MigrationState|keyof typeof google.datastore.admin.v1.MigrationState|null); + + /** DatastoreFirestoreMigrationMetadata migrationStep */ + migrationStep?: (google.datastore.admin.v1.MigrationStep|keyof typeof google.datastore.admin.v1.MigrationStep|null); + } + + /** Represents a DatastoreFirestoreMigrationMetadata. */ + class DatastoreFirestoreMigrationMetadata implements IDatastoreFirestoreMigrationMetadata { + + /** + * Constructs a new DatastoreFirestoreMigrationMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata); + + /** DatastoreFirestoreMigrationMetadata migrationState. */ + public migrationState: (google.datastore.admin.v1.MigrationState|keyof typeof google.datastore.admin.v1.MigrationState); + + /** DatastoreFirestoreMigrationMetadata migrationStep. */ + public migrationStep: (google.datastore.admin.v1.MigrationStep|keyof typeof google.datastore.admin.v1.MigrationStep); + + /** + * Creates a new DatastoreFirestoreMigrationMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns DatastoreFirestoreMigrationMetadata instance + */ + public static create(properties?: google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata): google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata; + + /** + * Encodes the specified DatastoreFirestoreMigrationMetadata message. Does not implicitly {@link google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata.verify|verify} messages. + * @param message DatastoreFirestoreMigrationMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DatastoreFirestoreMigrationMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata.verify|verify} messages. + * @param message DatastoreFirestoreMigrationMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DatastoreFirestoreMigrationMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DatastoreFirestoreMigrationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata; + + /** + * Decodes a DatastoreFirestoreMigrationMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DatastoreFirestoreMigrationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata; + + /** + * Verifies a DatastoreFirestoreMigrationMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DatastoreFirestoreMigrationMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DatastoreFirestoreMigrationMetadata + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata; + + /** + * Creates a plain object from a DatastoreFirestoreMigrationMetadata message. Also converts values to other types if specified. + * @param message DatastoreFirestoreMigrationMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DatastoreFirestoreMigrationMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** OperationType enum. */ + enum OperationType { + OPERATION_TYPE_UNSPECIFIED = 0, + EXPORT_ENTITIES = 1, + IMPORT_ENTITIES = 2, + CREATE_INDEX = 3, + DELETE_INDEX = 4 + } + /** Properties of an Index. */ interface IIndex { @@ -1875,6 +1971,411 @@ export namespace google { ERROR = 4 } } + + /** Properties of a MigrationStateEvent. */ + interface IMigrationStateEvent { + + /** MigrationStateEvent state */ + state?: (google.datastore.admin.v1.MigrationState|keyof typeof google.datastore.admin.v1.MigrationState|null); + } + + /** Represents a MigrationStateEvent. */ + class MigrationStateEvent implements IMigrationStateEvent { + + /** + * Constructs a new MigrationStateEvent. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IMigrationStateEvent); + + /** MigrationStateEvent state. */ + public state: (google.datastore.admin.v1.MigrationState|keyof typeof google.datastore.admin.v1.MigrationState); + + /** + * Creates a new MigrationStateEvent instance using the specified properties. + * @param [properties] Properties to set + * @returns MigrationStateEvent instance + */ + public static create(properties?: google.datastore.admin.v1.IMigrationStateEvent): google.datastore.admin.v1.MigrationStateEvent; + + /** + * Encodes the specified MigrationStateEvent message. Does not implicitly {@link google.datastore.admin.v1.MigrationStateEvent.verify|verify} messages. + * @param message MigrationStateEvent message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IMigrationStateEvent, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MigrationStateEvent message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationStateEvent.verify|verify} messages. + * @param message MigrationStateEvent message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IMigrationStateEvent, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MigrationStateEvent message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MigrationStateEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.MigrationStateEvent; + + /** + * Decodes a MigrationStateEvent message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MigrationStateEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.MigrationStateEvent; + + /** + * Verifies a MigrationStateEvent message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MigrationStateEvent message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MigrationStateEvent + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.MigrationStateEvent; + + /** + * Creates a plain object from a MigrationStateEvent message. Also converts values to other types if specified. + * @param message MigrationStateEvent + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.MigrationStateEvent, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MigrationStateEvent to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a MigrationProgressEvent. */ + interface IMigrationProgressEvent { + + /** MigrationProgressEvent step */ + step?: (google.datastore.admin.v1.MigrationStep|keyof typeof google.datastore.admin.v1.MigrationStep|null); + + /** MigrationProgressEvent prepareStepDetails */ + prepareStepDetails?: (google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails|null); + + /** MigrationProgressEvent redirectWritesStepDetails */ + redirectWritesStepDetails?: (google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails|null); + } + + /** Represents a MigrationProgressEvent. */ + class MigrationProgressEvent implements IMigrationProgressEvent { + + /** + * Constructs a new MigrationProgressEvent. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.IMigrationProgressEvent); + + /** MigrationProgressEvent step. */ + public step: (google.datastore.admin.v1.MigrationStep|keyof typeof google.datastore.admin.v1.MigrationStep); + + /** MigrationProgressEvent prepareStepDetails. */ + public prepareStepDetails?: (google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails|null); + + /** MigrationProgressEvent redirectWritesStepDetails. */ + public redirectWritesStepDetails?: (google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails|null); + + /** MigrationProgressEvent stepDetails. */ + public stepDetails?: ("prepareStepDetails"|"redirectWritesStepDetails"); + + /** + * Creates a new MigrationProgressEvent instance using the specified properties. + * @param [properties] Properties to set + * @returns MigrationProgressEvent instance + */ + public static create(properties?: google.datastore.admin.v1.IMigrationProgressEvent): google.datastore.admin.v1.MigrationProgressEvent; + + /** + * Encodes the specified MigrationProgressEvent message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.verify|verify} messages. + * @param message MigrationProgressEvent message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.IMigrationProgressEvent, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MigrationProgressEvent message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.verify|verify} messages. + * @param message MigrationProgressEvent message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.IMigrationProgressEvent, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MigrationProgressEvent message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MigrationProgressEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.MigrationProgressEvent; + + /** + * Decodes a MigrationProgressEvent message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MigrationProgressEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.MigrationProgressEvent; + + /** + * Verifies a MigrationProgressEvent message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MigrationProgressEvent message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MigrationProgressEvent + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.MigrationProgressEvent; + + /** + * Creates a plain object from a MigrationProgressEvent message. Also converts values to other types if specified. + * @param message MigrationProgressEvent + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.MigrationProgressEvent, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MigrationProgressEvent to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MigrationProgressEvent { + + /** Properties of a PrepareStepDetails. */ + interface IPrepareStepDetails { + + /** PrepareStepDetails concurrencyMode */ + concurrencyMode?: (google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|keyof typeof google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null); + } + + /** Represents a PrepareStepDetails. */ + class PrepareStepDetails implements IPrepareStepDetails { + + /** + * Constructs a new PrepareStepDetails. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails); + + /** PrepareStepDetails concurrencyMode. */ + public concurrencyMode: (google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|keyof typeof google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode); + + /** + * Creates a new PrepareStepDetails instance using the specified properties. + * @param [properties] Properties to set + * @returns PrepareStepDetails instance + */ + public static create(properties?: google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails): google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails; + + /** + * Encodes the specified PrepareStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.verify|verify} messages. + * @param message PrepareStepDetails message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PrepareStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.verify|verify} messages. + * @param message PrepareStepDetails message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PrepareStepDetails message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PrepareStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails; + + /** + * Decodes a PrepareStepDetails message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PrepareStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails; + + /** + * Verifies a PrepareStepDetails message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PrepareStepDetails message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PrepareStepDetails + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails; + + /** + * Creates a plain object from a PrepareStepDetails message. Also converts values to other types if specified. + * @param message PrepareStepDetails + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PrepareStepDetails to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a RedirectWritesStepDetails. */ + interface IRedirectWritesStepDetails { + + /** RedirectWritesStepDetails concurrencyMode */ + concurrencyMode?: (google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|keyof typeof google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null); + } + + /** Represents a RedirectWritesStepDetails. */ + class RedirectWritesStepDetails implements IRedirectWritesStepDetails { + + /** + * Constructs a new RedirectWritesStepDetails. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails); + + /** RedirectWritesStepDetails concurrencyMode. */ + public concurrencyMode: (google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|keyof typeof google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode); + + /** + * Creates a new RedirectWritesStepDetails instance using the specified properties. + * @param [properties] Properties to set + * @returns RedirectWritesStepDetails instance + */ + public static create(properties?: google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails): google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails; + + /** + * Encodes the specified RedirectWritesStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages. + * @param message RedirectWritesStepDetails message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RedirectWritesStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages. + * @param message RedirectWritesStepDetails message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RedirectWritesStepDetails message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RedirectWritesStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails; + + /** + * Decodes a RedirectWritesStepDetails message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RedirectWritesStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails; + + /** + * Verifies a RedirectWritesStepDetails message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RedirectWritesStepDetails message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RedirectWritesStepDetails + */ + public static fromObject(object: { [k: string]: any }): google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails; + + /** + * Creates a plain object from a RedirectWritesStepDetails message. Also converts values to other types if specified. + * @param message RedirectWritesStepDetails + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RedirectWritesStepDetails to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** ConcurrencyMode enum. */ + enum ConcurrencyMode { + CONCURRENCY_MODE_UNSPECIFIED = 0, + PESSIMISTIC = 1, + OPTIMISTIC = 2 + } + } + + /** MigrationState enum. */ + enum MigrationState { + MIGRATION_STATE_UNSPECIFIED = 0, + RUNNING = 1, + PAUSED = 2, + COMPLETE = 3 + } + + /** MigrationStep enum. */ + enum MigrationStep { + MIGRATION_STEP_UNSPECIFIED = 0, + PREPARE = 6, + START = 1, + APPLY_WRITES_SYNCHRONOUSLY = 7, + COPY_AND_VERIFY = 2, + REDIRECT_EVENTUALLY_CONSISTENT_READS = 3, + REDIRECT_STRONGLY_CONSISTENT_READS = 4, + REDIRECT_WRITES = 5 + } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 0dfb3c6c78b..3bab32dee73 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -2029,26 +2029,6 @@ return ExportEntitiesMetadata; })(); - /** - * OperationType enum. - * @name google.datastore.admin.v1.OperationType - * @enum {number} - * @property {number} OPERATION_TYPE_UNSPECIFIED=0 OPERATION_TYPE_UNSPECIFIED value - * @property {number} EXPORT_ENTITIES=1 EXPORT_ENTITIES value - * @property {number} IMPORT_ENTITIES=2 IMPORT_ENTITIES value - * @property {number} CREATE_INDEX=3 CREATE_INDEX value - * @property {number} DELETE_INDEX=4 DELETE_INDEX value - */ - v1.OperationType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATION_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "EXPORT_ENTITIES"] = 1; - values[valuesById[2] = "IMPORT_ENTITIES"] = 2; - values[valuesById[3] = "CREATE_INDEX"] = 3; - values[valuesById[4] = "DELETE_INDEX"] = 4; - return values; - })(); - v1.ImportEntitiesMetadata = (function() { /** @@ -3949,6 +3929,302 @@ return IndexOperationMetadata; })(); + v1.DatastoreFirestoreMigrationMetadata = (function() { + + /** + * Properties of a DatastoreFirestoreMigrationMetadata. + * @memberof google.datastore.admin.v1 + * @interface IDatastoreFirestoreMigrationMetadata + * @property {google.datastore.admin.v1.MigrationState|null} [migrationState] DatastoreFirestoreMigrationMetadata migrationState + * @property {google.datastore.admin.v1.MigrationStep|null} [migrationStep] DatastoreFirestoreMigrationMetadata migrationStep + */ + + /** + * Constructs a new DatastoreFirestoreMigrationMetadata. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a DatastoreFirestoreMigrationMetadata. + * @implements IDatastoreFirestoreMigrationMetadata + * @constructor + * @param {google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata=} [properties] Properties to set + */ + function DatastoreFirestoreMigrationMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DatastoreFirestoreMigrationMetadata migrationState. + * @member {google.datastore.admin.v1.MigrationState} migrationState + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @instance + */ + DatastoreFirestoreMigrationMetadata.prototype.migrationState = 0; + + /** + * DatastoreFirestoreMigrationMetadata migrationStep. + * @member {google.datastore.admin.v1.MigrationStep} migrationStep + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @instance + */ + DatastoreFirestoreMigrationMetadata.prototype.migrationStep = 0; + + /** + * Creates a new DatastoreFirestoreMigrationMetadata instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata=} [properties] Properties to set + * @returns {google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata} DatastoreFirestoreMigrationMetadata instance + */ + DatastoreFirestoreMigrationMetadata.create = function create(properties) { + return new DatastoreFirestoreMigrationMetadata(properties); + }; + + /** + * Encodes the specified DatastoreFirestoreMigrationMetadata message. Does not implicitly {@link google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata} message DatastoreFirestoreMigrationMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DatastoreFirestoreMigrationMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.migrationState != null && Object.hasOwnProperty.call(message, "migrationState")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.migrationState); + if (message.migrationStep != null && Object.hasOwnProperty.call(message, "migrationStep")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.migrationStep); + return writer; + }; + + /** + * Encodes the specified DatastoreFirestoreMigrationMetadata message, length delimited. Does not implicitly {@link google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {google.datastore.admin.v1.IDatastoreFirestoreMigrationMetadata} message DatastoreFirestoreMigrationMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DatastoreFirestoreMigrationMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DatastoreFirestoreMigrationMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata} DatastoreFirestoreMigrationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DatastoreFirestoreMigrationMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.migrationState = reader.int32(); + break; + case 2: + message.migrationStep = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DatastoreFirestoreMigrationMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata} DatastoreFirestoreMigrationMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DatastoreFirestoreMigrationMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DatastoreFirestoreMigrationMetadata message. + * @function verify + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DatastoreFirestoreMigrationMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.migrationState != null && message.hasOwnProperty("migrationState")) + switch (message.migrationState) { + default: + return "migrationState: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.migrationStep != null && message.hasOwnProperty("migrationStep")) + switch (message.migrationStep) { + default: + return "migrationStep: enum value expected"; + case 0: + case 6: + case 1: + case 7: + case 2: + case 3: + case 4: + case 5: + break; + } + return null; + }; + + /** + * Creates a DatastoreFirestoreMigrationMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata} DatastoreFirestoreMigrationMetadata + */ + DatastoreFirestoreMigrationMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata) + return object; + var message = new $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata(); + switch (object.migrationState) { + case "MIGRATION_STATE_UNSPECIFIED": + case 0: + message.migrationState = 0; + break; + case "RUNNING": + case 1: + message.migrationState = 1; + break; + case "PAUSED": + case 2: + message.migrationState = 2; + break; + case "COMPLETE": + case 3: + message.migrationState = 3; + break; + } + switch (object.migrationStep) { + case "MIGRATION_STEP_UNSPECIFIED": + case 0: + message.migrationStep = 0; + break; + case "PREPARE": + case 6: + message.migrationStep = 6; + break; + case "START": + case 1: + message.migrationStep = 1; + break; + case "APPLY_WRITES_SYNCHRONOUSLY": + case 7: + message.migrationStep = 7; + break; + case "COPY_AND_VERIFY": + case 2: + message.migrationStep = 2; + break; + case "REDIRECT_EVENTUALLY_CONSISTENT_READS": + case 3: + message.migrationStep = 3; + break; + case "REDIRECT_STRONGLY_CONSISTENT_READS": + case 4: + message.migrationStep = 4; + break; + case "REDIRECT_WRITES": + case 5: + message.migrationStep = 5; + break; + } + return message; + }; + + /** + * Creates a plain object from a DatastoreFirestoreMigrationMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata} message DatastoreFirestoreMigrationMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DatastoreFirestoreMigrationMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.migrationState = options.enums === String ? "MIGRATION_STATE_UNSPECIFIED" : 0; + object.migrationStep = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0; + } + if (message.migrationState != null && message.hasOwnProperty("migrationState")) + object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState; + if (message.migrationStep != null && message.hasOwnProperty("migrationStep")) + object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep; + return object; + }; + + /** + * Converts this DatastoreFirestoreMigrationMetadata to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @instance + * @returns {Object.} JSON object + */ + DatastoreFirestoreMigrationMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DatastoreFirestoreMigrationMetadata; + })(); + + /** + * OperationType enum. + * @name google.datastore.admin.v1.OperationType + * @enum {number} + * @property {number} OPERATION_TYPE_UNSPECIFIED=0 OPERATION_TYPE_UNSPECIFIED value + * @property {number} EXPORT_ENTITIES=1 EXPORT_ENTITIES value + * @property {number} IMPORT_ENTITIES=2 IMPORT_ENTITIES value + * @property {number} CREATE_INDEX=3 CREATE_INDEX value + * @property {number} DELETE_INDEX=4 DELETE_INDEX value + */ + v1.OperationType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATION_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "EXPORT_ENTITIES"] = 1; + values[valuesById[2] = "IMPORT_ENTITIES"] = 2; + values[valuesById[3] = "CREATE_INDEX"] = 3; + values[valuesById[4] = "DELETE_INDEX"] = 4; + return values; + })(); + v1.Index = (function() { /** @@ -4595,6 +4871,997 @@ return Index; })(); + v1.MigrationStateEvent = (function() { + + /** + * Properties of a MigrationStateEvent. + * @memberof google.datastore.admin.v1 + * @interface IMigrationStateEvent + * @property {google.datastore.admin.v1.MigrationState|null} [state] MigrationStateEvent state + */ + + /** + * Constructs a new MigrationStateEvent. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a MigrationStateEvent. + * @implements IMigrationStateEvent + * @constructor + * @param {google.datastore.admin.v1.IMigrationStateEvent=} [properties] Properties to set + */ + function MigrationStateEvent(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MigrationStateEvent state. + * @member {google.datastore.admin.v1.MigrationState} state + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @instance + */ + MigrationStateEvent.prototype.state = 0; + + /** + * Creates a new MigrationStateEvent instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {google.datastore.admin.v1.IMigrationStateEvent=} [properties] Properties to set + * @returns {google.datastore.admin.v1.MigrationStateEvent} MigrationStateEvent instance + */ + MigrationStateEvent.create = function create(properties) { + return new MigrationStateEvent(properties); + }; + + /** + * Encodes the specified MigrationStateEvent message. Does not implicitly {@link google.datastore.admin.v1.MigrationStateEvent.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {google.datastore.admin.v1.IMigrationStateEvent} message MigrationStateEvent message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MigrationStateEvent.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.state != null && Object.hasOwnProperty.call(message, "state")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); + return writer; + }; + + /** + * Encodes the specified MigrationStateEvent message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationStateEvent.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {google.datastore.admin.v1.IMigrationStateEvent} message MigrationStateEvent message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MigrationStateEvent.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MigrationStateEvent message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.MigrationStateEvent} MigrationStateEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MigrationStateEvent.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationStateEvent(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.state = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MigrationStateEvent message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.MigrationStateEvent} MigrationStateEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MigrationStateEvent.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MigrationStateEvent message. + * @function verify + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MigrationStateEvent.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + return null; + }; + + /** + * Creates a MigrationStateEvent message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.MigrationStateEvent} MigrationStateEvent + */ + MigrationStateEvent.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.MigrationStateEvent) + return object; + var message = new $root.google.datastore.admin.v1.MigrationStateEvent(); + switch (object.state) { + case "MIGRATION_STATE_UNSPECIFIED": + case 0: + message.state = 0; + break; + case "RUNNING": + case 1: + message.state = 1; + break; + case "PAUSED": + case 2: + message.state = 2; + break; + case "COMPLETE": + case 3: + message.state = 3; + break; + } + return message; + }; + + /** + * Creates a plain object from a MigrationStateEvent message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {google.datastore.admin.v1.MigrationStateEvent} message MigrationStateEvent + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MigrationStateEvent.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.state = options.enums === String ? "MIGRATION_STATE_UNSPECIFIED" : 0; + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] : message.state; + return object; + }; + + /** + * Converts this MigrationStateEvent to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @instance + * @returns {Object.} JSON object + */ + MigrationStateEvent.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MigrationStateEvent; + })(); + + v1.MigrationProgressEvent = (function() { + + /** + * Properties of a MigrationProgressEvent. + * @memberof google.datastore.admin.v1 + * @interface IMigrationProgressEvent + * @property {google.datastore.admin.v1.MigrationStep|null} [step] MigrationProgressEvent step + * @property {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails|null} [prepareStepDetails] MigrationProgressEvent prepareStepDetails + * @property {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails|null} [redirectWritesStepDetails] MigrationProgressEvent redirectWritesStepDetails + */ + + /** + * Constructs a new MigrationProgressEvent. + * @memberof google.datastore.admin.v1 + * @classdesc Represents a MigrationProgressEvent. + * @implements IMigrationProgressEvent + * @constructor + * @param {google.datastore.admin.v1.IMigrationProgressEvent=} [properties] Properties to set + */ + function MigrationProgressEvent(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MigrationProgressEvent step. + * @member {google.datastore.admin.v1.MigrationStep} step + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @instance + */ + MigrationProgressEvent.prototype.step = 0; + + /** + * MigrationProgressEvent prepareStepDetails. + * @member {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails|null|undefined} prepareStepDetails + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @instance + */ + MigrationProgressEvent.prototype.prepareStepDetails = null; + + /** + * MigrationProgressEvent redirectWritesStepDetails. + * @member {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails|null|undefined} redirectWritesStepDetails + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @instance + */ + MigrationProgressEvent.prototype.redirectWritesStepDetails = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * MigrationProgressEvent stepDetails. + * @member {"prepareStepDetails"|"redirectWritesStepDetails"|undefined} stepDetails + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @instance + */ + Object.defineProperty(MigrationProgressEvent.prototype, "stepDetails", { + get: $util.oneOfGetter($oneOfFields = ["prepareStepDetails", "redirectWritesStepDetails"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new MigrationProgressEvent instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {google.datastore.admin.v1.IMigrationProgressEvent=} [properties] Properties to set + * @returns {google.datastore.admin.v1.MigrationProgressEvent} MigrationProgressEvent instance + */ + MigrationProgressEvent.create = function create(properties) { + return new MigrationProgressEvent(properties); + }; + + /** + * Encodes the specified MigrationProgressEvent message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {google.datastore.admin.v1.IMigrationProgressEvent} message MigrationProgressEvent message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MigrationProgressEvent.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.step != null && Object.hasOwnProperty.call(message, "step")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.step); + if (message.prepareStepDetails != null && Object.hasOwnProperty.call(message, "prepareStepDetails")) + $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.encode(message.prepareStepDetails, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.redirectWritesStepDetails != null && Object.hasOwnProperty.call(message, "redirectWritesStepDetails")) + $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.encode(message.redirectWritesStepDetails, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MigrationProgressEvent message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {google.datastore.admin.v1.IMigrationProgressEvent} message MigrationProgressEvent message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MigrationProgressEvent.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MigrationProgressEvent message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.MigrationProgressEvent} MigrationProgressEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MigrationProgressEvent.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationProgressEvent(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.step = reader.int32(); + break; + case 2: + message.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.decode(reader, reader.uint32()); + break; + case 3: + message.redirectWritesStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MigrationProgressEvent message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.MigrationProgressEvent} MigrationProgressEvent + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MigrationProgressEvent.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MigrationProgressEvent message. + * @function verify + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MigrationProgressEvent.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.step != null && message.hasOwnProperty("step")) + switch (message.step) { + default: + return "step: enum value expected"; + case 0: + case 6: + case 1: + case 7: + case 2: + case 3: + case 4: + case 5: + break; + } + if (message.prepareStepDetails != null && message.hasOwnProperty("prepareStepDetails")) { + properties.stepDetails = 1; + { + var error = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.verify(message.prepareStepDetails); + if (error) + return "prepareStepDetails." + error; + } + } + if (message.redirectWritesStepDetails != null && message.hasOwnProperty("redirectWritesStepDetails")) { + if (properties.stepDetails === 1) + return "stepDetails: multiple values"; + properties.stepDetails = 1; + { + var error = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify(message.redirectWritesStepDetails); + if (error) + return "redirectWritesStepDetails." + error; + } + } + return null; + }; + + /** + * Creates a MigrationProgressEvent message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.MigrationProgressEvent} MigrationProgressEvent + */ + MigrationProgressEvent.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.MigrationProgressEvent) + return object; + var message = new $root.google.datastore.admin.v1.MigrationProgressEvent(); + switch (object.step) { + case "MIGRATION_STEP_UNSPECIFIED": + case 0: + message.step = 0; + break; + case "PREPARE": + case 6: + message.step = 6; + break; + case "START": + case 1: + message.step = 1; + break; + case "APPLY_WRITES_SYNCHRONOUSLY": + case 7: + message.step = 7; + break; + case "COPY_AND_VERIFY": + case 2: + message.step = 2; + break; + case "REDIRECT_EVENTUALLY_CONSISTENT_READS": + case 3: + message.step = 3; + break; + case "REDIRECT_STRONGLY_CONSISTENT_READS": + case 4: + message.step = 4; + break; + case "REDIRECT_WRITES": + case 5: + message.step = 5; + break; + } + if (object.prepareStepDetails != null) { + if (typeof object.prepareStepDetails !== "object") + throw TypeError(".google.datastore.admin.v1.MigrationProgressEvent.prepareStepDetails: object expected"); + message.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.fromObject(object.prepareStepDetails); + } + if (object.redirectWritesStepDetails != null) { + if (typeof object.redirectWritesStepDetails !== "object") + throw TypeError(".google.datastore.admin.v1.MigrationProgressEvent.redirectWritesStepDetails: object expected"); + message.redirectWritesStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.fromObject(object.redirectWritesStepDetails); + } + return message; + }; + + /** + * Creates a plain object from a MigrationProgressEvent message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent} message MigrationProgressEvent + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MigrationProgressEvent.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.step = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0; + if (message.step != null && message.hasOwnProperty("step")) + object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step; + if (message.prepareStepDetails != null && message.hasOwnProperty("prepareStepDetails")) { + object.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.toObject(message.prepareStepDetails, options); + if (options.oneofs) + object.stepDetails = "prepareStepDetails"; + } + if (message.redirectWritesStepDetails != null && message.hasOwnProperty("redirectWritesStepDetails")) { + object.redirectWritesStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.toObject(message.redirectWritesStepDetails, options); + if (options.oneofs) + object.stepDetails = "redirectWritesStepDetails"; + } + return object; + }; + + /** + * Converts this MigrationProgressEvent to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @instance + * @returns {Object.} JSON object + */ + MigrationProgressEvent.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + MigrationProgressEvent.PrepareStepDetails = (function() { + + /** + * Properties of a PrepareStepDetails. + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @interface IPrepareStepDetails + * @property {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null} [concurrencyMode] PrepareStepDetails concurrencyMode + */ + + /** + * Constructs a new PrepareStepDetails. + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @classdesc Represents a PrepareStepDetails. + * @implements IPrepareStepDetails + * @constructor + * @param {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails=} [properties] Properties to set + */ + function PrepareStepDetails(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PrepareStepDetails concurrencyMode. + * @member {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode} concurrencyMode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @instance + */ + PrepareStepDetails.prototype.concurrencyMode = 0; + + /** + * Creates a new PrepareStepDetails instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails=} [properties] Properties to set + * @returns {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} PrepareStepDetails instance + */ + PrepareStepDetails.create = function create(properties) { + return new PrepareStepDetails(properties); + }; + + /** + * Encodes the specified PrepareStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails} message PrepareStepDetails message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PrepareStepDetails.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.concurrencyMode != null && Object.hasOwnProperty.call(message, "concurrencyMode")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.concurrencyMode); + return writer; + }; + + /** + * Encodes the specified PrepareStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IPrepareStepDetails} message PrepareStepDetails message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PrepareStepDetails.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PrepareStepDetails message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} PrepareStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PrepareStepDetails.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.concurrencyMode = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PrepareStepDetails message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} PrepareStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PrepareStepDetails.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PrepareStepDetails message. + * @function verify + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PrepareStepDetails.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) + switch (message.concurrencyMode) { + default: + return "concurrencyMode: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates a PrepareStepDetails message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} PrepareStepDetails + */ + PrepareStepDetails.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails) + return object; + var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails(); + switch (object.concurrencyMode) { + case "CONCURRENCY_MODE_UNSPECIFIED": + case 0: + message.concurrencyMode = 0; + break; + case "PESSIMISTIC": + case 1: + message.concurrencyMode = 1; + break; + case "OPTIMISTIC": + case 2: + message.concurrencyMode = 2; + break; + } + return message; + }; + + /** + * Creates a plain object from a PrepareStepDetails message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} message PrepareStepDetails + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PrepareStepDetails.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0; + if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) + object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; + return object; + }; + + /** + * Converts this PrepareStepDetails to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @instance + * @returns {Object.} JSON object + */ + PrepareStepDetails.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PrepareStepDetails; + })(); + + MigrationProgressEvent.RedirectWritesStepDetails = (function() { + + /** + * Properties of a RedirectWritesStepDetails. + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @interface IRedirectWritesStepDetails + * @property {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null} [concurrencyMode] RedirectWritesStepDetails concurrencyMode + */ + + /** + * Constructs a new RedirectWritesStepDetails. + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @classdesc Represents a RedirectWritesStepDetails. + * @implements IRedirectWritesStepDetails + * @constructor + * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set + */ + function RedirectWritesStepDetails(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RedirectWritesStepDetails concurrencyMode. + * @member {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode} concurrencyMode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @instance + */ + RedirectWritesStepDetails.prototype.concurrencyMode = 0; + + /** + * Creates a new RedirectWritesStepDetails instance using the specified properties. + * @function create + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set + * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails instance + */ + RedirectWritesStepDetails.create = function create(properties) { + return new RedirectWritesStepDetails(properties); + }; + + /** + * Encodes the specified RedirectWritesStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages. + * @function encode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RedirectWritesStepDetails.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.concurrencyMode != null && Object.hasOwnProperty.call(message, "concurrencyMode")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.concurrencyMode); + return writer; + }; + + /** + * Encodes the specified RedirectWritesStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RedirectWritesStepDetails.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RedirectWritesStepDetails message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RedirectWritesStepDetails.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.concurrencyMode = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RedirectWritesStepDetails message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RedirectWritesStepDetails.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RedirectWritesStepDetails message. + * @function verify + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RedirectWritesStepDetails.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) + switch (message.concurrencyMode) { + default: + return "concurrencyMode: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates a RedirectWritesStepDetails message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails + */ + RedirectWritesStepDetails.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails) + return object; + var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails(); + switch (object.concurrencyMode) { + case "CONCURRENCY_MODE_UNSPECIFIED": + case 0: + message.concurrencyMode = 0; + break; + case "PESSIMISTIC": + case 1: + message.concurrencyMode = 1; + break; + case "OPTIMISTIC": + case 2: + message.concurrencyMode = 2; + break; + } + return message; + }; + + /** + * Creates a plain object from a RedirectWritesStepDetails message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} message RedirectWritesStepDetails + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RedirectWritesStepDetails.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0; + if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) + object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; + return object; + }; + + /** + * Converts this RedirectWritesStepDetails to JSON. + * @function toJSON + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @instance + * @returns {Object.} JSON object + */ + RedirectWritesStepDetails.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RedirectWritesStepDetails; + })(); + + /** + * ConcurrencyMode enum. + * @name google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode + * @enum {number} + * @property {number} CONCURRENCY_MODE_UNSPECIFIED=0 CONCURRENCY_MODE_UNSPECIFIED value + * @property {number} PESSIMISTIC=1 PESSIMISTIC value + * @property {number} OPTIMISTIC=2 OPTIMISTIC value + */ + MigrationProgressEvent.ConcurrencyMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "CONCURRENCY_MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "PESSIMISTIC"] = 1; + values[valuesById[2] = "OPTIMISTIC"] = 2; + return values; + })(); + + return MigrationProgressEvent; + })(); + + /** + * MigrationState enum. + * @name google.datastore.admin.v1.MigrationState + * @enum {number} + * @property {number} MIGRATION_STATE_UNSPECIFIED=0 MIGRATION_STATE_UNSPECIFIED value + * @property {number} RUNNING=1 RUNNING value + * @property {number} PAUSED=2 PAUSED value + * @property {number} COMPLETE=3 COMPLETE value + */ + v1.MigrationState = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MIGRATION_STATE_UNSPECIFIED"] = 0; + values[valuesById[1] = "RUNNING"] = 1; + values[valuesById[2] = "PAUSED"] = 2; + values[valuesById[3] = "COMPLETE"] = 3; + return values; + })(); + + /** + * MigrationStep enum. + * @name google.datastore.admin.v1.MigrationStep + * @enum {number} + * @property {number} MIGRATION_STEP_UNSPECIFIED=0 MIGRATION_STEP_UNSPECIFIED value + * @property {number} PREPARE=6 PREPARE value + * @property {number} START=1 START value + * @property {number} APPLY_WRITES_SYNCHRONOUSLY=7 APPLY_WRITES_SYNCHRONOUSLY value + * @property {number} COPY_AND_VERIFY=2 COPY_AND_VERIFY value + * @property {number} REDIRECT_EVENTUALLY_CONSISTENT_READS=3 REDIRECT_EVENTUALLY_CONSISTENT_READS value + * @property {number} REDIRECT_STRONGLY_CONSISTENT_READS=4 REDIRECT_STRONGLY_CONSISTENT_READS value + * @property {number} REDIRECT_WRITES=5 REDIRECT_WRITES value + */ + v1.MigrationStep = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MIGRATION_STEP_UNSPECIFIED"] = 0; + values[valuesById[6] = "PREPARE"] = 6; + values[valuesById[1] = "START"] = 1; + values[valuesById[7] = "APPLY_WRITES_SYNCHRONOUSLY"] = 7; + values[valuesById[2] = "COPY_AND_VERIFY"] = 2; + values[valuesById[3] = "REDIRECT_EVENTUALLY_CONSISTENT_READS"] = 3; + values[valuesById[4] = "REDIRECT_STRONGLY_CONSISTENT_READS"] = 4; + values[valuesById[5] = "REDIRECT_WRITES"] = 5; + return values; + })(); + return v1; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 43d6b305a0f..5ed5a0e0e00 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -11,7 +11,7 @@ "csharp_namespace": "Google.Cloud.Datastore.Admin.V1", "go_package": "google.golang.org/genproto/googleapis/datastore/admin/v1;admin", "java_multiple_files": true, - "java_outer_classname": "IndexProto", + "java_outer_classname": "MigrationProto", "java_package": "com.google.datastore.admin.v1", "php_namespace": "Google\\Cloud\\Datastore\\Admin\\V1", "ruby_package": "Google::Cloud::Datastore::Admin::V1" @@ -292,15 +292,6 @@ } } }, - "OperationType": { - "values": { - "OPERATION_TYPE_UNSPECIFIED": 0, - "EXPORT_ENTITIES": 1, - "IMPORT_ENTITIES": 2, - "CREATE_INDEX": 3, - "DELETE_INDEX": 4 - } - }, "ImportEntitiesMetadata": { "fields": { "common": { @@ -424,6 +415,27 @@ } } }, + "DatastoreFirestoreMigrationMetadata": { + "fields": { + "migrationState": { + "type": "MigrationState", + "id": 1 + }, + "migrationStep": { + "type": "MigrationStep", + "id": 2 + } + } + }, + "OperationType": { + "values": { + "OPERATION_TYPE_UNSPECIFIED": 0, + "EXPORT_ENTITIES": 1, + "IMPORT_ENTITIES": 2, + "CREATE_INDEX": 3, + "DELETE_INDEX": 4 + } + }, "Index": { "fields": { "projectId": { @@ -513,6 +525,83 @@ } } } + }, + "MigrationStateEvent": { + "fields": { + "state": { + "type": "MigrationState", + "id": 1 + } + } + }, + "MigrationProgressEvent": { + "oneofs": { + "stepDetails": { + "oneof": [ + "prepareStepDetails", + "redirectWritesStepDetails" + ] + } + }, + "fields": { + "step": { + "type": "MigrationStep", + "id": 1 + }, + "prepareStepDetails": { + "type": "PrepareStepDetails", + "id": 2 + }, + "redirectWritesStepDetails": { + "type": "RedirectWritesStepDetails", + "id": 3 + } + }, + "nested": { + "PrepareStepDetails": { + "fields": { + "concurrencyMode": { + "type": "ConcurrencyMode", + "id": 1 + } + } + }, + "RedirectWritesStepDetails": { + "fields": { + "concurrencyMode": { + "type": "ConcurrencyMode", + "id": 1 + } + } + }, + "ConcurrencyMode": { + "values": { + "CONCURRENCY_MODE_UNSPECIFIED": 0, + "PESSIMISTIC": 1, + "OPTIMISTIC": 2 + } + } + } + }, + "MigrationState": { + "values": { + "MIGRATION_STATE_UNSPECIFIED": 0, + "RUNNING": 1, + "PAUSED": 2, + "COMPLETE": 3 + } + }, + "MigrationStep": { + "values": { + "MIGRATION_STEP_UNSPECIFIED": 0, + "PREPARE": 6, + "START": 1, + "APPLY_WRITES_SYNCHRONOUSLY": 7, + "COPY_AND_VERIFY": 2, + "REDIRECT_EVENTUALLY_CONSISTENT_READS": 3, + "REDIRECT_STRONGLY_CONSISTENT_READS": 4, + "REDIRECT_WRITES": 5 + } } } } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index f79328409da..1ef1f3f4e1c 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json index bd1e60aca44..7a038c3a12f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_proto_list.json @@ -1,4 +1,5 @@ [ "../../protos/google/datastore/admin/v1/datastore_admin.proto", - "../../protos/google/datastore/admin/v1/index.proto" + "../../protos/google/datastore/admin/v1/index.proto", + "../../protos/google/datastore/admin/v1/migration.proto" ] diff --git a/handwritten/nodejs-datastore/src/v1/gapic_metadata.json b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json index e0579963555..2b53e796b47 100644 --- a/handwritten/nodejs-datastore/src/v1/gapic_metadata.json +++ b/handwritten/nodejs-datastore/src/v1/gapic_metadata.json @@ -3,7 +3,7 @@ "comment": "This file maps proto services/RPCs to the corresponding library clients/methods", "language": "typescript", "protoPackage": "google.datastore.admin.v1", - "libraryPackage": "admin", + "libraryPackage": "@google-cloud/datastore-admin", "services": { "DatastoreAdmin": { "clients": { diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index d2d61c0396f..6dd1eaadafa 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 39924823e8e..7c76a9a5874 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 0ef1165a6dbe74eb90f3f273f5d920344402d1e7 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 20:00:17 +0000 Subject: [PATCH 661/820] chore: update v2.12.0 gapic-generator-typescript (#915) - [ ] Regenerate this pull request now. Committer: @summer-ji-eng PiperOrigin-RevId: 424244721 Source-Link: https://github.com/googleapis/googleapis/commit/4b6b01f507ebc3df95fdf8e1d76b0ae0ae33e52c Source-Link: https://github.com/googleapis/googleapis-gen/commit/8ac83fba606d008c7e8a42e7d55b6596ec4be35f Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGFjODNmYmE2MDZkMDA4YzdlOGE0MmU3ZDU1YjY1OTZlYzRiZTM1ZiJ9 --- handwritten/nodejs-datastore/.jsdoc.js | 4 ++-- handwritten/nodejs-datastore/linkinator.config.json | 10 ++++++++-- .../nodejs-datastore/src/v1/datastore_client.ts | 2 +- .../system-test/fixtures/sample/src/index.js | 2 +- .../system-test/fixtures/sample/src/index.ts | 2 +- .../nodejs-datastore/test/gapic_datastore_v1.ts | 2 +- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 8bcf69b5cee..a3585eb98c7 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2021 Google LLC', + copyright: 'Copyright 2022 Google LLC', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', diff --git a/handwritten/nodejs-datastore/linkinator.config.json b/handwritten/nodejs-datastore/linkinator.config.json index 0121dfa684f..befd23c8633 100644 --- a/handwritten/nodejs-datastore/linkinator.config.json +++ b/handwritten/nodejs-datastore/linkinator.config.json @@ -3,8 +3,14 @@ "skip": [ "https://codecov.io/gh/googleapis/", "www.googleapis.com", - "img.shields.io" + "img.shields.io", + "https://console.cloud.google.com/cloudshell", + "https://support.google.com" ], "silent": true, - "concurrency": 5 + "concurrency": 5, + "retry": true, + "retryErrors": true, + "retryErrorsCount": 5, + "retryErrorsJitter": 3000 } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index ba453615bc5..12e3d430f9a 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index 6575a6a7bf8..44c29691c26 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 1b82ede9176..97fdbf6f7eb 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index e0c41f63004..cafe0cf1354 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 5e3e3e7cbf49ad96c86925457caaf8fa206ba1b6 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 31 Jan 2022 23:44:29 +0100 Subject: [PATCH 662/820] fix(deps): update dependency sinon to v13 (#918) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^12.0.0` -> `^13.0.0`](https://renovatebot.com/diffs/npm/sinon/12.0.1/13.0.0) | [![age](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/compatibility-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/13.0.0/confidence-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
sinonjs/sinon ### [`v13.0.0`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#​1300) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v12.0.1...v13.0.0) - [`cf3d6c0c`](https://togithub.com/sinonjs/sinon/commit/cf3d6c0cd9689c0ee673b3daa8bf9abd70304392) Upgrade packages ([#​2431](https://togithub.com/sinonjs/sinon/issues/2431)) (Carl-Erik Kopseng) > - Update all @​sinonjs/ packages > > - Upgrade to fake-timers 9 > > - chore: ensure always using latest LTS release - [`41710467`](https://togithub.com/sinonjs/sinon/commit/417104670d575e96a1b645ea40ce763afa76fb1b) Adjust deploy scripts to archive old releases in a separate branch, move existing releases out of master ([#​2426](https://togithub.com/sinonjs/sinon/issues/2426)) (Joel Bradshaw) > Co-authored-by: Carl-Erik Kopseng - [`c80a7266`](https://togithub.com/sinonjs/sinon/commit/c80a72660e89d88b08275eff1028ecb9e26fd8e9) Bump node-fetch from 2.6.1 to 2.6.7 ([#​2430](https://togithub.com/sinonjs/sinon/issues/2430)) (dependabot\[bot]) > Co-authored-by: dependabot\[bot] <49699333+dependabot\[bot][@​users](https://togithub.com/users).noreply.github.com> - [`a00f14a9`](https://togithub.com/sinonjs/sinon/commit/a00f14a97dbe8c65afa89674e16ad73fc7d2fdc0) Add explicit export for `./*` ([#​2413](https://togithub.com/sinonjs/sinon/issues/2413)) (なつき) - [`b82ca7ad`](https://togithub.com/sinonjs/sinon/commit/b82ca7ad9b1add59007771f65a18ee34415de8ca) Bump cached-path-relative from 1.0.2 to 1.1.0 ([#​2428](https://togithub.com/sinonjs/sinon/issues/2428)) (dependabot\[bot]) - [`a9ea1427`](https://togithub.com/sinonjs/sinon/commit/a9ea142716c094ef3c432ecc4089f8207b8dd8b6) Add documentation for assert.calledOnceWithMatch ([#​2424](https://togithub.com/sinonjs/sinon/issues/2424)) (Mathias Schreck) - [`1d5ab86b`](https://togithub.com/sinonjs/sinon/commit/1d5ab86ba60e50dd69593ffed2bffd4b8faa0d38) Be more general in stripping off stack frames to fix Firefox tests ([#​2425](https://togithub.com/sinonjs/sinon/issues/2425)) (Joel Bradshaw) - [`56b06129`](https://togithub.com/sinonjs/sinon/commit/56b06129e223eae690265c37b1113067e2b31bdc) Check call count type ([#​2410](https://togithub.com/sinonjs/sinon/issues/2410)) (Joel Bradshaw) - [`7863e2df`](https://togithub.com/sinonjs/sinon/commit/7863e2dfdbda79e0a32e42af09e6539fc2f2b80f) Fix [#​2414](https://togithub.com/sinonjs/sinon/issues/2414): make Sinon available on homepage (Carl-Erik Kopseng) - [`fabaabdd`](https://togithub.com/sinonjs/sinon/commit/fabaabdda82f39a7f5b75b55bd56cf77b1cd4a8f) Bump nokogiri from 1.11.4 to 1.13.1 ([#​2423](https://togithub.com/sinonjs/sinon/issues/2423)) (dependabot\[bot]) - [`dbc0fbd2`](https://togithub.com/sinonjs/sinon/commit/dbc0fbd263c8419fa47f9c3b20cf47890a242d21) Bump shelljs from 0.8.4 to 0.8.5 ([#​2422](https://togithub.com/sinonjs/sinon/issues/2422)) (dependabot\[bot]) - [`fb8b3d72`](https://togithub.com/sinonjs/sinon/commit/fb8b3d72a85dc8fb0547f859baf3f03a22a039f7) Run Prettier (Carl-Erik Kopseng) - [`12a45939`](https://togithub.com/sinonjs/sinon/commit/12a45939e9b047b6d3663fe55f2eb383ec63c4e1) Fix 2377: Throw error when trying to stub non-configurable or non-writable properties ([#​2417](https://togithub.com/sinonjs/sinon/issues/2417)) (Stuart Dotson) > Fixes issue [#​2377](https://togithub.com/sinonjs/sinon/issues/2377) by throwing an error when trying to stub non-configurable or non-writable properties *Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2022-01-28.*
--- ### Configuration 📅 **Schedule**: "after 9am and before 3pm" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 2355f81fd0a..0ed545fb471 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^12.0.0", + "sinon": "^13.0.0", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack-cli": "^4.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a04826f7c1e..a0435462277 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^6.6.2", - "sinon": "^12.0.0" + "sinon": "^13.0.0" }, "devDependencies": { "chai": "^4.2.0", From ce25890251e1903bdf6f68bc7f0c0510355f1761 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 3 Feb 2022 22:05:04 +0000 Subject: [PATCH 663/820] docs(nodejs): version support policy edits (#1346) (#920) --- handwritten/nodejs-datastore/README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 3c199954975..b4b902f00a8 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -125,21 +125,21 @@ also contains samples. Our client libraries follow the [Node.js release schedule](https://nodejs.org/en/about/releases/). Libraries are compatible with all current _active_ and _maintenance_ versions of Node.js. +If you are using an end-of-life version of Node.js, we recommend that you update +as soon as possible to an actively supported LTS version. -Client libraries targeting some end-of-life versions of Node.js are available, and -can be installed via npm [dist-tags](https://docs.npmjs.com/cli/dist-tag). -The dist-tags follow the naming convention `legacy-(version)`. - -_Legacy Node.js versions are supported as a best effort:_ +Google's client libraries support legacy versions of Node.js runtimes on a +best-efforts basis with the following warnings: -* Legacy versions will not be tested in continuous integration. -* Some security patches may not be able to be backported. -* Dependencies will not be kept up-to-date, and features will not be backported. +* Legacy versions are not tested in continuous integration. +* Some security patches and features cannot be backported. +* Dependencies cannot be kept up-to-date. -#### Legacy tags available - -* `legacy-8`: install client libraries from this dist-tag for versions - compatible with Node.js 8. +Client libraries targeting some end-of-life versions of Node.js are available, and +can be installed through npm [dist-tags](https://docs.npmjs.com/cli/dist-tag). +The dist-tags follow the naming convention `legacy-(version)`. +For example, `npm install @google-cloud/datastore@legacy-8` installs client libraries +for versions compatible with Node.js 8. ## Versioning From 471dd62ba3fa1c907c88ec5f18ba1de1c6aab03d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 18 Feb 2022 00:56:42 +0000 Subject: [PATCH 664/820] docs(samples): include metadata file, add exclusions for samples to handwritten libraries (#921) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 429395631 Source-Link: https://github.com/googleapis/googleapis/commit/84594b35af0c38efcd6967e8179d801702ad96ff Source-Link: https://github.com/googleapis/googleapis-gen/commit/ed74f970fd82914874e6b27b04763cfa66bafe9b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZWQ3NGY5NzBmZDgyOTE0ODc0ZTZiMjdiMDQ3NjNjZmE2NmJhZmU5YiJ9 --- .../src/v1/datastore_admin_client.ts | 5 +- .../src/v1/datastore_client.ts | 5 +- .../test/gapic_datastore_admin_v1.ts | 35 ++++- .../test/gapic_datastore_v1.ts | 131 +++++++++++++++++- 4 files changed, 166 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 1ef1f3f4e1c..3b2d07357c9 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1351,9 +1351,8 @@ export class DatastoreAdminClient { * @returns {Promise} A promise that resolves when the client is closed. */ close(): Promise { - this.initialize(); - if (!this._terminated) { - return this.datastoreAdminStub!.then(stub => { + if (this.datastoreAdminStub && !this._terminated) { + return this.datastoreAdminStub.then(stub => { this._terminated = true; stub.close(); this.operationsClient.close(); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 12e3d430f9a..0b332a9777a 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -940,9 +940,8 @@ export class DatastoreClient { * @returns {Promise} A promise that resolves when the client is closed. */ close(): Promise { - this.initialize(); - if (!this._terminated) { - return this.datastoreStub!.then(stub => { + if (this.datastoreStub && !this._terminated) { + return this.datastoreStub.then(stub => { this._terminated = true; stub.close(); }); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 7c76a9a5874..8e818b82f95 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -185,12 +185,27 @@ describe('v1.DatastoreAdminClient', () => { assert(client.datastoreAdminStub); }); - it('has close method', () => { + it('has close method for the initialized client', done => { const client = new datastoreadminModule.v1.DatastoreAdminClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - client.close(); + client.initialize(); + assert(client.datastoreAdminStub); + client.close().then(() => { + done(); + }); + }); + + it('has close method for the non-initialized client', done => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreAdminStub, undefined); + client.close().then(() => { + done(); + }); }); it('has getProjectId method', async () => { @@ -333,6 +348,22 @@ describe('v1.DatastoreAdminClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes getIndex with closed client', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.admin.v1.GetIndexRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.getIndex(request), expectedError); + }); }); describe('exportEntities', () => { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index cafe0cf1354..b64d61a3bbf 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -88,12 +88,27 @@ describe('v1.DatastoreClient', () => { assert(client.datastoreStub); }); - it('has close method', () => { + it('has close method for the initialized client', done => { const client = new datastoreModule.v1.DatastoreClient({ credentials: {client_email: 'bogus', private_key: 'bogus'}, projectId: 'bogus', }); - client.close(); + client.initialize(); + assert(client.datastoreStub); + client.close().then(() => { + done(); + }); + }); + + it('has close method for the non-initialized client', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreStub, undefined); + client.close().then(() => { + done(); + }); }); it('has getProjectId method', async () => { @@ -236,6 +251,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes lookup with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.LookupRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.lookup(request), expectedError); + }); }); describe('runQuery', () => { @@ -344,6 +375,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes runQuery with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunQueryRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.runQuery(request), expectedError); + }); }); describe('beginTransaction', () => { @@ -455,6 +502,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes beginTransaction with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.BeginTransactionRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.beginTransaction(request), expectedError); + }); }); describe('commit', () => { @@ -563,6 +626,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes commit with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.CommitRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.commit(request), expectedError); + }); }); describe('rollback', () => { @@ -671,6 +750,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes rollback with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RollbackRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.rollback(request), expectedError); + }); }); describe('allocateIds', () => { @@ -782,6 +877,22 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes allocateIds with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.AllocateIdsRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.allocateIds(request), expectedError); + }); }); describe('reserveIds', () => { @@ -893,5 +1004,21 @@ describe('v1.DatastoreClient', () => { .calledWith(request, expectedOptions, undefined) ); }); + + it('invokes reserveIds with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.ReserveIdsRequest() + ); + request.projectId = ''; + const expectedHeaderRequestParams = 'project_id='; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.reserveIds(request), expectedError); + }); }); }); From 7fdd786f630e655479ab1d4d6fb7a3a6341c85ff Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:32:21 +0000 Subject: [PATCH 665/820] chore: update v2.14.2 gapic-generator-typescript (#925) - [ ] Regenerate this pull request now. Committer: @summer-ji-eng PiperOrigin-RevId: 434859890 Source-Link: https://github.com/googleapis/googleapis/commit/bc2432d50cba657e95212122e3fa112591b5bec2 Source-Link: https://github.com/googleapis/googleapis-gen/commit/930b673103e92523f8cfed38decd7d3afae8ebe7 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOTMwYjY3MzEwM2U5MjUyM2Y4Y2ZlZDM4ZGVjZDdkM2FmYWU4ZWJlNyJ9 feat: add IN/NOT_IN/NOT_EQUALS support to cloud datastore proto PiperOrigin-RevId: 434824722 Source-Link: https://github.com/googleapis/googleapis/commit/4bfdcd371b9fac734d4b2ee8d8beae4f9f5e1aba Source-Link: https://github.com/googleapis/googleapis-gen/commit/5982b9b085388d6c9a90a5578ebe47518fe0932e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTk4MmI5YjA4NTM4OGQ2YzlhOTBhNTU3OGViZTQ3NTE4ZmUwOTMyZSJ9 --- .../google/datastore/v1/datastore.proto | 20 ++++-- .../protos/google/datastore/v1/entity.proto | 10 ++- .../protos/google/datastore/v1/query.proto | 61 ++++++++++++++++--- .../nodejs-datastore/protos/protos.d.ts | 5 +- handwritten/nodejs-datastore/protos/protos.js | 21 +++++++ .../nodejs-datastore/protos/protos.json | 5 +- .../test/gapic_datastore_admin_v1.ts | 1 - .../test/gapic_datastore_v1.ts | 7 --- 8 files changed, 99 insertions(+), 31 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index ad016194ab2..6a29b0e9840 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -328,8 +328,9 @@ message Mutation { // with the current version of the entity on the server. Conflicting mutations // are not applied, and are marked as such in MutationResult. oneof conflict_detection_strategy { - // The version of the entity that this mutation is being applied to. If this - // does not match the current version on the server, the mutation conflicts. + // The version of the entity that this mutation is being applied + // to. If this does not match the current version on the server, the + // mutation conflicts. int64 base_version = 8; } } @@ -366,9 +367,16 @@ message ReadOptions { EVENTUAL = 2; } - // If not specified, lookups and ancestor queries default to - // `read_consistency`=`STRONG`, global queries default to - // `read_consistency`=`EVENTUAL`. + // For Cloud Datastore, if read_consistency is not specified, then lookups and + // ancestor queries default to `read_consistency`=`STRONG`, global queries + // default to `read_consistency`=`EVENTUAL`. + // + // For Cloud Firestore in Datastore mode, if read_consistency is not specified + // then lookups and all queries default to `read_consistency`=`STRONG`. + // + // Explicitly setting `read_consistency`=`EVENTUAL` will result in eventually + // consistent lookups & queries in both Cloud Datastore & Cloud Firestore in + // Datastore mode. oneof consistency_type { // The non-transactional read consistency to use. // Cannot be set to `STRONG` for global queries. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 61286cd7a2c..befbcd7b657 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ syntax = "proto3"; package google.datastore.v1; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/type/latlng.proto"; @@ -47,8 +46,7 @@ option ruby_package = "Google::Cloud::Datastore::V1"; // // Foreign partition IDs (in which the project ID does // not match the context project ID ) are discouraged. -// Reads and writes of foreign partition IDs may fail if the project is not in -// an active state. +// Reads and writes of foreign partition IDs may fail if the project is not in an active state. message PartitionId { // The ID of the project to which the entities belong. string project_id = 2; @@ -146,8 +144,8 @@ message Value { Key key_value = 5; // A UTF-8 encoded string value. - // When `exclude_from_indexes` is false (it is indexed), may have at most - // 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes. + // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. + // Otherwise, may be set to at most 1,000,000 bytes. string string_value = 17; // A blob value. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 4cb3ef99b83..3e64618393b 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Google LLC. +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,10 +16,8 @@ syntax = "proto3"; package google.datastore.v1; -import "google/api/annotations.proto"; import "google/datastore/v1/entity.proto"; import "google/protobuf/wrappers.proto"; -import "google/type/latlng.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; @@ -190,23 +188,68 @@ message PropertyFilter { // Unspecified. This value must not be used. OPERATOR_UNSPECIFIED = 0; - // Less than. + // The given `property` is less than the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. LESS_THAN = 1; - // Less than or equal. + // The given `property` is less than or equal to the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. LESS_THAN_OR_EQUAL = 2; - // Greater than. + // The given `property` is greater than the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. GREATER_THAN = 3; - // Greater than or equal. + // The given `property` is greater than or equal to the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. GREATER_THAN_OR_EQUAL = 4; - // Equal. + // The given `property` is equal to the given `value`. EQUAL = 5; - // Has ancestor. + // The given `property` is equal to at least one value in the given array. + // + // Requires: + // + // * That `value` is a non-empty `ArrayValue` with at most 10 values. + // * No other `IN` or `NOT_IN` is in the same query. + IN = 6; + + // The given `property` is not equal to the given `value`. + // + // Requires: + // + // * No other `NOT_EQUAL` or `NOT_IN` is in the same query. + // * That `property` comes first in the `order_by`. + NOT_EQUAL = 9; + + // Limit the result set to the given entity and its descendants. + // + // Requires: + // + // * That `value` is an entity key. HAS_ANCESTOR = 11; + + // The value of the `property` is not in the given array. + // + // Requires: + // + // * That `value` is a non-empty `ArrayValue` with at most 10 values. + // * No other `IN`, `NOT_IN`, `NOT_EQUAL` is in the same query. + // * That `field` comes first in the `order_by`. + NOT_IN = 13; } // The property to filter by. diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index c43ae4bcb52..bec90fad7d5 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -6126,7 +6126,10 @@ export namespace google { GREATER_THAN = 3, GREATER_THAN_OR_EQUAL = 4, EQUAL = 5, - HAS_ANCESTOR = 11 + IN = 6, + NOT_EQUAL = 9, + HAS_ANCESTOR = 11, + NOT_IN = 13 } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 3bab32dee73..5f2b4ee15e3 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -14934,7 +14934,10 @@ case 3: case 4: case 5: + case 6: + case 9: case 11: + case 13: break; } if (message.value != null && message.hasOwnProperty("value")) { @@ -14987,10 +14990,22 @@ case 5: message.op = 5; break; + case "IN": + case 6: + message.op = 6; + break; + case "NOT_EQUAL": + case 9: + message.op = 9; + break; case "HAS_ANCESTOR": case 11: message.op = 11; break; + case "NOT_IN": + case 13: + message.op = 13; + break; } if (object.value != null) { if (typeof object.value !== "object") @@ -15048,7 +15063,10 @@ * @property {number} GREATER_THAN=3 GREATER_THAN value * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value * @property {number} EQUAL=5 EQUAL value + * @property {number} IN=6 IN value + * @property {number} NOT_EQUAL=9 NOT_EQUAL value * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value + * @property {number} NOT_IN=13 NOT_IN value */ PropertyFilter.Operator = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -15058,7 +15076,10 @@ values[valuesById[3] = "GREATER_THAN"] = 3; values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; values[valuesById[5] = "EQUAL"] = 5; + values[valuesById[6] = "IN"] = 6; + values[valuesById[9] = "NOT_EQUAL"] = 9; values[valuesById[11] = "HAS_ANCESTOR"] = 11; + values[valuesById[13] = "NOT_IN"] = 13; return values; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 5ed5a0e0e00..dabeaa8a9a2 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1448,7 +1448,10 @@ "GREATER_THAN": 3, "GREATER_THAN_OR_EQUAL": 4, "EQUAL": 5, - "HAS_ANCESTOR": 11 + "IN": 6, + "NOT_EQUAL": 9, + "HAS_ANCESTOR": 11, + "NOT_IN": 13 } } } diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 8e818b82f95..ae17a35128d 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -359,7 +359,6 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.GetIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getIndex(request), expectedError); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index b64d61a3bbf..722a27d04e6 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -262,7 +262,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.LookupRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.lookup(request), expectedError); @@ -386,7 +385,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.RunQueryRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.runQuery(request), expectedError); @@ -513,7 +511,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.BeginTransactionRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.beginTransaction(request), expectedError); @@ -637,7 +634,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.CommitRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.commit(request), expectedError); @@ -761,7 +757,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.RollbackRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.rollback(request), expectedError); @@ -888,7 +883,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.AllocateIdsRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.allocateIds(request), expectedError); @@ -1015,7 +1009,6 @@ describe('v1.DatastoreClient', () => { new protos.google.datastore.v1.ReserveIdsRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.reserveIds(request), expectedError); From 3aeb1f180534033a659622ceb306dff6f1018faa Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 16:11:55 -0400 Subject: [PATCH 666/820] feat: expose new read_time API fields, currently only available in private preview (#932) PiperOrigin-RevId: 440914241 Source-Link: https://github.com/googleapis/googleapis/commit/0ed730f27474890a727a72bdc85e6d20715e2f87 Source-Link: https://github.com/googleapis/googleapis-gen/commit/b2e5ae97fd24f64af0fef1999dad14945fdc3663 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjJlNWFlOTdmZDI0ZjY0YWYwZmVmMTk5OWRhZDE0OTQ1ZmRjMzY2MyJ9 See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../google/datastore/v1/datastore.proto | 27 +- .../protos/google/datastore/v1/query.proto | 19 ++ .../nodejs-datastore/protos/protos.d.ts | 52 +++- handwritten/nodejs-datastore/protos/protos.js | 253 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 41 ++- 5 files changed, 378 insertions(+), 14 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 6a29b0e9840..22d930ad0d8 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -21,6 +21,7 @@ import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; +import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; @@ -138,6 +139,9 @@ message LookupResponse { // order of results in this field is undefined and has no relation to the // order of the keys in the input. repeated Key deferred = 3; + + // The time at which these entities were read or found missing. + google.protobuf.Timestamp read_time = 7; } // The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. @@ -259,6 +263,9 @@ message CommitResponse { // The number of index entries updated during the commit, or zero if none were // updated. int32 index_updates = 4; + + // The transaction commit timestamp. Not set for non-transactional commits. + google.protobuf.Timestamp commit_time = 8; } // The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. @@ -332,6 +339,11 @@ message Mutation { // to. If this does not match the current version on the server, the // mutation conflicts. int64 base_version = 8; + + // The update time of the entity that this mutation is being applied + // to. If this does not match the current update time on the server, the + // mutation conflicts. + google.protobuf.Timestamp update_time = 11; } } @@ -348,6 +360,12 @@ message MutationResult { // than the version of any possible future entity. int64 version = 4; + // The update time of the entity on the server after processing the mutation. + // If the mutation doesn't change anything on the server, then the timestamp + // will be the update timestamp of the current entity. This field will not be + // set after a 'delete'. + google.protobuf.Timestamp update_time = 6; + // Whether a conflict was detected for this mutation. Always false when a // conflict detection strategy field is not set in the mutation. bool conflict_detected = 5; @@ -386,6 +404,11 @@ message ReadOptions { // transaction identifier is returned by a call to // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. bytes transaction = 2; + + // Reads entities as they were at the given time. This may not be older + // than 270 seconds. This value is only supported for Cloud Firestore in + // Datastore mode. + google.protobuf.Timestamp read_time = 4; } } @@ -403,7 +426,9 @@ message TransactionOptions { // Options specific to read-only transactions. message ReadOnly { - + // Reads entities at the given time. + // This may not be older than 60 seconds. + google.protobuf.Timestamp read_time = 1; } // The `mode` of the transaction, indicating whether write operations are diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 3e64618393b..00c020021fb 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -17,6 +17,7 @@ syntax = "proto3"; package google.datastore.v1; import "google/datastore/v1/entity.proto"; +import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; @@ -62,6 +63,12 @@ message EntityResult { // is always set except for eventually consistent reads. int64 version = 4; + // The time at which the entity was last changed. + // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity + // results. + // If this entity is missing, this field will not be set. + google.protobuf.Timestamp update_time = 5; + // A cursor that points to the position after the result entity. // Set only when the `EntityResult` is part of a `QueryResultBatch` message. bytes cursor = 3; @@ -353,4 +360,16 @@ message QueryResultBatch { // is valid for all preceding batches. // The value will be zero for eventually consistent queries. int64 snapshot_version = 7; + + // Read timestamp this batch was returned from. + // This applies to the range of results from the query's `start_cursor` (or + // the beginning of the query if no cursor was given) to this batch's + // `end_cursor` (not the query's `end_cursor`). + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater timestamp. Each batch's read timestamp + // is valid for all preceding batches. + // This value will not be set for eventually consistent queries in Cloud + // Datastore. + google.protobuf.Timestamp read_time = 8; } diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index bec90fad7d5..380e781ffb6 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -2666,6 +2666,9 @@ export namespace google { /** LookupResponse deferred */ deferred?: (google.datastore.v1.IKey[]|null); + + /** LookupResponse readTime */ + readTime?: (google.protobuf.ITimestamp|null); } /** Represents a LookupResponse. */ @@ -2686,6 +2689,9 @@ export namespace google { /** LookupResponse deferred. */ public deferred: google.datastore.v1.IKey[]; + /** LookupResponse readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + /** * Creates a new LookupResponse instance using the specified properties. * @param [properties] Properties to set @@ -3465,6 +3471,9 @@ export namespace google { /** CommitResponse indexUpdates */ indexUpdates?: (number|null); + + /** CommitResponse commitTime */ + commitTime?: (google.protobuf.ITimestamp|null); } /** Represents a CommitResponse. */ @@ -3482,6 +3491,9 @@ export namespace google { /** CommitResponse indexUpdates. */ public indexUpdates: number; + /** CommitResponse commitTime. */ + public commitTime?: (google.protobuf.ITimestamp|null); + /** * Creates a new CommitResponse instance using the specified properties. * @param [properties] Properties to set @@ -3942,6 +3954,9 @@ export namespace google { /** Mutation baseVersion */ baseVersion?: (number|Long|string|null); + + /** Mutation updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); } /** Represents a Mutation. */ @@ -3968,11 +3983,14 @@ export namespace google { /** Mutation baseVersion. */ public baseVersion?: (number|Long|string|null); + /** Mutation updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); + /** Mutation operation. */ public operation?: ("insert"|"update"|"upsert"|"delete"); /** Mutation conflictDetectionStrategy. */ - public conflictDetectionStrategy?: "baseVersion"; + public conflictDetectionStrategy?: ("baseVersion"|"updateTime"); /** * Creates a new Mutation instance using the specified properties. @@ -4054,6 +4072,9 @@ export namespace google { /** MutationResult version */ version?: (number|Long|string|null); + /** MutationResult updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); + /** MutationResult conflictDetected */ conflictDetected?: (boolean|null); } @@ -4073,6 +4094,9 @@ export namespace google { /** MutationResult version. */ public version: (number|Long|string); + /** MutationResult updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); + /** MutationResult conflictDetected. */ public conflictDetected: boolean; @@ -4155,6 +4179,9 @@ export namespace google { /** ReadOptions transaction */ transaction?: (Uint8Array|string|null); + + /** ReadOptions readTime */ + readTime?: (google.protobuf.ITimestamp|null); } /** Represents a ReadOptions. */ @@ -4172,8 +4199,11 @@ export namespace google { /** ReadOptions transaction. */ public transaction?: (Uint8Array|string|null); + /** ReadOptions readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + /** ReadOptions consistencyType. */ - public consistencyType?: ("readConsistency"|"transaction"); + public consistencyType?: ("readConsistency"|"transaction"|"readTime"); /** * Creates a new ReadOptions instance using the specified properties. @@ -4449,6 +4479,9 @@ export namespace google { /** Properties of a ReadOnly. */ interface IReadOnly { + + /** ReadOnly readTime */ + readTime?: (google.protobuf.ITimestamp|null); } /** Represents a ReadOnly. */ @@ -4460,6 +4493,9 @@ export namespace google { */ constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + /** ReadOnly readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + /** * Creates a new ReadOnly instance using the specified properties. * @param [properties] Properties to set @@ -5192,6 +5228,9 @@ export namespace google { /** EntityResult version */ version?: (number|Long|string|null); + /** EntityResult updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); + /** EntityResult cursor */ cursor?: (Uint8Array|string|null); } @@ -5211,6 +5250,9 @@ export namespace google { /** EntityResult version. */ public version: (number|Long|string); + /** EntityResult updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); + /** EntityResult cursor. */ public cursor: (Uint8Array|string); @@ -6363,6 +6405,9 @@ export namespace google { /** QueryResultBatch snapshotVersion */ snapshotVersion?: (number|Long|string|null); + + /** QueryResultBatch readTime */ + readTime?: (google.protobuf.ITimestamp|null); } /** Represents a QueryResultBatch. */ @@ -6395,6 +6440,9 @@ export namespace google { /** QueryResultBatch snapshotVersion. */ public snapshotVersion: (number|Long|string); + /** QueryResultBatch readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + /** * Creates a new QueryResultBatch instance using the specified properties. * @param [properties] Properties to set diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 5f2b4ee15e3..1e4f4d11991 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -6411,6 +6411,7 @@ * @property {Array.|null} [found] LookupResponse found * @property {Array.|null} [missing] LookupResponse missing * @property {Array.|null} [deferred] LookupResponse deferred + * @property {google.protobuf.ITimestamp|null} [readTime] LookupResponse readTime */ /** @@ -6455,6 +6456,14 @@ */ LookupResponse.prototype.deferred = $util.emptyArray; + /** + * LookupResponse readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.readTime = null; + /** * Creates a new LookupResponse instance using the specified properties. * @function create @@ -6488,6 +6497,8 @@ if (message.deferred != null && message.deferred.length) for (var i = 0; i < message.deferred.length; ++i) $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -6537,6 +6548,9 @@ message.deferred = []; message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; + case 7: + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -6599,6 +6613,11 @@ return "deferred." + error; } } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; + } return null; }; @@ -6644,6 +6663,11 @@ message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); } } + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } return message; }; @@ -6665,6 +6689,8 @@ object.missing = []; object.deferred = []; } + if (options.defaults) + object.readTime = null; if (message.found && message.found.length) { object.found = []; for (var j = 0; j < message.found.length; ++j) @@ -6680,6 +6706,8 @@ for (var j = 0; j < message.deferred.length; ++j) object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); } + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; }; @@ -8370,6 +8398,7 @@ * @interface ICommitResponse * @property {Array.|null} [mutationResults] CommitResponse mutationResults * @property {number|null} [indexUpdates] CommitResponse indexUpdates + * @property {google.protobuf.ITimestamp|null} [commitTime] CommitResponse commitTime */ /** @@ -8404,6 +8433,14 @@ */ CommitResponse.prototype.indexUpdates = 0; + /** + * CommitResponse commitTime. + * @member {google.protobuf.ITimestamp|null|undefined} commitTime + * @memberof google.datastore.v1.CommitResponse + * @instance + */ + CommitResponse.prototype.commitTime = null; + /** * Creates a new CommitResponse instance using the specified properties. * @function create @@ -8433,6 +8470,8 @@ $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); + if (message.commitTime != null && Object.hasOwnProperty.call(message, "commitTime")) + $root.google.protobuf.Timestamp.encode(message.commitTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; @@ -8475,6 +8514,9 @@ case 4: message.indexUpdates = reader.int32(); break; + case 8: + message.commitTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -8522,6 +8564,11 @@ if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) if (!$util.isInteger(message.indexUpdates)) return "indexUpdates: integer expected"; + if (message.commitTime != null && message.hasOwnProperty("commitTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.commitTime); + if (error) + return "commitTime." + error; + } return null; }; @@ -8549,6 +8596,11 @@ } if (object.indexUpdates != null) message.indexUpdates = object.indexUpdates | 0; + if (object.commitTime != null) { + if (typeof object.commitTime !== "object") + throw TypeError(".google.datastore.v1.CommitResponse.commitTime: object expected"); + message.commitTime = $root.google.protobuf.Timestamp.fromObject(object.commitTime); + } return message; }; @@ -8567,8 +8619,10 @@ var object = {}; if (options.arrays || options.defaults) object.mutationResults = []; - if (options.defaults) + if (options.defaults) { object.indexUpdates = 0; + object.commitTime = null; + } if (message.mutationResults && message.mutationResults.length) { object.mutationResults = []; for (var j = 0; j < message.mutationResults.length; ++j) @@ -8576,6 +8630,8 @@ } if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) object.indexUpdates = message.indexUpdates; + if (message.commitTime != null && message.hasOwnProperty("commitTime")) + object.commitTime = $root.google.protobuf.Timestamp.toObject(message.commitTime, options); return object; }; @@ -9457,6 +9513,7 @@ * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete * @property {number|Long|null} [baseVersion] Mutation baseVersion + * @property {google.protobuf.ITimestamp|null} [updateTime] Mutation updateTime */ /** @@ -9514,6 +9571,14 @@ */ Mutation.prototype.baseVersion = null; + /** + * Mutation updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.updateTime = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -9530,12 +9595,12 @@ /** * Mutation conflictDetectionStrategy. - * @member {"baseVersion"|undefined} conflictDetectionStrategy + * @member {"baseVersion"|"updateTime"|undefined} conflictDetectionStrategy * @memberof google.datastore.v1.Mutation * @instance */ Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { - get: $util.oneOfGetter($oneOfFields = ["baseVersion"]), + get: $util.oneOfGetter($oneOfFields = ["baseVersion", "updateTime"]), set: $util.oneOfSetter($oneOfFields) }); @@ -9573,6 +9638,8 @@ $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); return writer; }; @@ -9622,6 +9689,9 @@ case 8: message.baseVersion = reader.int64(); break; + case 11: + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -9701,6 +9771,16 @@ if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) return "baseVersion: integer|Long expected"; } + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + if (properties.conflictDetectionStrategy === 1) + return "conflictDetectionStrategy: multiple values"; + properties.conflictDetectionStrategy = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; + } + } return null; }; @@ -9745,6 +9825,11 @@ message.baseVersion = object.baseVersion; else if (typeof object.baseVersion === "object") message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.Mutation.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + } return message; }; @@ -9789,6 +9874,11 @@ if (options.oneofs) object.conflictDetectionStrategy = "baseVersion"; } + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (options.oneofs) + object.conflictDetectionStrategy = "updateTime"; + } return object; }; @@ -9814,6 +9904,7 @@ * @interface IMutationResult * @property {google.datastore.v1.IKey|null} [key] MutationResult key * @property {number|Long|null} [version] MutationResult version + * @property {google.protobuf.ITimestamp|null} [updateTime] MutationResult updateTime * @property {boolean|null} [conflictDetected] MutationResult conflictDetected */ @@ -9848,6 +9939,14 @@ */ MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * MutationResult updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.updateTime = null; + /** * MutationResult conflictDetected. * @member {boolean} conflictDetected @@ -9886,6 +9985,8 @@ writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -9926,6 +10027,9 @@ case 4: message.version = reader.int64(); break; + case 6: + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; case 5: message.conflictDetected = reader.bool(); break; @@ -9972,6 +10076,11 @@ if (message.version != null && message.hasOwnProperty("version")) if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) return "version: integer|Long expected"; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; + } if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) if (typeof message.conflictDetected !== "boolean") return "conflictDetected: boolean expected"; @@ -10004,6 +10113,11 @@ message.version = object.version; else if (typeof object.version === "object") message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.MutationResult.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + } if (object.conflictDetected != null) message.conflictDetected = Boolean(object.conflictDetected); return message; @@ -10030,6 +10144,7 @@ } else object.version = options.longs === String ? "0" : 0; object.conflictDetected = false; + object.updateTime = null; } if (message.key != null && message.hasOwnProperty("key")) object.key = $root.google.datastore.v1.Key.toObject(message.key, options); @@ -10040,6 +10155,8 @@ object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) object.conflictDetected = message.conflictDetected; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); return object; }; @@ -10065,6 +10182,7 @@ * @interface IReadOptions * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency * @property {Uint8Array|null} [transaction] ReadOptions transaction + * @property {google.protobuf.ITimestamp|null} [readTime] ReadOptions readTime */ /** @@ -10098,17 +10216,25 @@ */ ReadOptions.prototype.transaction = null; + /** + * ReadOptions readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.readTime = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * ReadOptions consistencyType. - * @member {"readConsistency"|"transaction"|undefined} consistencyType + * @member {"readConsistency"|"transaction"|"readTime"|undefined} consistencyType * @memberof google.datastore.v1.ReadOptions * @instance */ Object.defineProperty(ReadOptions.prototype, "consistencyType", { - get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction"]), + get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction", "readTime"]), set: $util.oneOfSetter($oneOfFields) }); @@ -10140,6 +10266,8 @@ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; @@ -10180,6 +10308,9 @@ case 2: message.transaction = reader.bytes(); break; + case 4: + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -10234,6 +10365,16 @@ if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; + } + } return null; }; @@ -10268,6 +10409,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length) message.transaction = object.transaction; + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.ReadOptions.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } return message; }; @@ -10294,6 +10440,11 @@ if (options.oneofs) object.consistencyType = "transaction"; } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + if (options.oneofs) + object.consistencyType = "readTime"; + } return object; }; @@ -10771,6 +10922,7 @@ * Properties of a ReadOnly. * @memberof google.datastore.v1.TransactionOptions * @interface IReadOnly + * @property {google.protobuf.ITimestamp|null} [readTime] ReadOnly readTime */ /** @@ -10788,6 +10940,14 @@ this[keys[i]] = properties[keys[i]]; } + /** + * ReadOnly readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.readTime = null; + /** * Creates a new ReadOnly instance using the specified properties. * @function create @@ -10812,6 +10972,8 @@ ReadOnly.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; @@ -10846,6 +11008,9 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -10881,6 +11046,11 @@ ReadOnly.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; + } return null; }; @@ -10895,7 +11065,13 @@ ReadOnly.fromObject = function fromObject(object) { if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) return object; - return new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + var message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.ReadOnly.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } + return message; }; /** @@ -10907,8 +11083,15 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReadOnly.toObject = function toObject() { - return {}; + ReadOnly.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.readTime = null; + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + return object; }; /** @@ -12695,6 +12878,7 @@ * @interface IEntityResult * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity * @property {number|Long|null} [version] EntityResult version + * @property {google.protobuf.ITimestamp|null} [updateTime] EntityResult updateTime * @property {Uint8Array|null} [cursor] EntityResult cursor */ @@ -12729,6 +12913,14 @@ */ EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * EntityResult updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.updateTime = null; + /** * EntityResult cursor. * @member {Uint8Array} cursor @@ -12767,6 +12959,8 @@ writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); if (message.version != null && Object.hasOwnProperty.call(message, "version")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -12807,6 +13001,9 @@ case 4: message.version = reader.int64(); break; + case 5: + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; case 3: message.cursor = reader.bytes(); break; @@ -12853,6 +13050,11 @@ if (message.version != null && message.hasOwnProperty("version")) if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) return "version: integer|Long expected"; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; + } if (message.cursor != null && message.hasOwnProperty("cursor")) if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) return "cursor: buffer expected"; @@ -12885,6 +13087,11 @@ message.version = object.version; else if (typeof object.version === "object") message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.EntityResult.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + } if (object.cursor != null) if (typeof object.cursor === "string") $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); @@ -12920,6 +13127,7 @@ object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.version = options.longs === String ? "0" : 0; + object.updateTime = null; } if (message.entity != null && message.hasOwnProperty("entity")) object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); @@ -12930,6 +13138,8 @@ object.version = options.longs === String ? String(message.version) : message.version; else object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); return object; }; @@ -15660,6 +15870,7 @@ * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion + * @property {google.protobuf.ITimestamp|null} [readTime] QueryResultBatch readTime */ /** @@ -15734,6 +15945,14 @@ */ QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * QueryResultBatch readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.QueryResultBatch + * @instance + */ + QueryResultBatch.prototype.readTime = null; + /** * Creates a new QueryResultBatch instance using the specified properties. * @function create @@ -15773,6 +15992,8 @@ writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; @@ -15830,6 +16051,9 @@ case 7: message.snapshotVersion = reader.int64(); break; + case 8: + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -15907,6 +16131,11 @@ if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) return "snapshotVersion: integer|Long expected"; + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; + } return null; }; @@ -15993,6 +16222,11 @@ message.snapshotVersion = object.snapshotVersion; else if (typeof object.snapshotVersion === "object") message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.QueryResultBatch.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } return message; }; @@ -16034,6 +16268,7 @@ object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; } else object.snapshotVersion = options.longs === String ? "0" : 0; + object.readTime = null; } if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; @@ -16055,6 +16290,8 @@ object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; else object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; }; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index dabeaa8a9a2..8308c22ecca 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -804,6 +804,10 @@ "rule": "repeated", "type": "Key", "id": 3 + }, + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 7 } } }, @@ -948,6 +952,10 @@ "indexUpdates": { "type": "int32", "id": 4 + }, + "commitTime": { + "type": "google.protobuf.Timestamp", + "id": 8 } } }, @@ -1017,7 +1025,8 @@ }, "conflictDetectionStrategy": { "oneof": [ - "baseVersion" + "baseVersion", + "updateTime" ] } }, @@ -1041,6 +1050,10 @@ "baseVersion": { "type": "int64", "id": 8 + }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 11 } } }, @@ -1054,6 +1067,10 @@ "type": "int64", "id": 4 }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 6 + }, "conflictDetected": { "type": "bool", "id": 5 @@ -1065,7 +1082,8 @@ "consistencyType": { "oneof": [ "readConsistency", - "transaction" + "transaction", + "readTime" ] } }, @@ -1077,6 +1095,10 @@ "transaction": { "type": "bytes", "id": 2 + }, + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 4 } }, "nested": { @@ -1118,7 +1140,12 @@ } }, "ReadOnly": { - "fields": {} + "fields": { + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 1 + } + } } } }, @@ -1278,6 +1305,10 @@ "type": "int64", "id": 4 }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 5 + }, "cursor": { "type": "bytes", "id": 3 @@ -1528,6 +1559,10 @@ "snapshotVersion": { "type": "int64", "id": 7 + }, + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 8 } }, "nested": { From 1b22746645b6e57b27915247b24f74f5a802c288 Mon Sep 17 00:00:00 2001 From: Mariatta Wijaya Date: Mon, 11 Apr 2022 15:00:33 -0700 Subject: [PATCH 667/820] chore: Change the Codeowner to cloud-native-db-dpes (#927) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Change the Codeowner to cloud-native-db-dpes * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot Co-authored-by: Benjamin E. Coe --- handwritten/nodejs-datastore/.repo-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index 6c4d562e75d..9fa14cf0f10 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -9,7 +9,7 @@ "repo": "googleapis/nodejs-datastore", "distribution_name": "@google-cloud/datastore", "api_id": "datastore.googleapis.com", - "codeowner_team": "@googleapis/firestore-dpe", + "codeowner_team": "@googleapis/cloud-native-db-dpes", "api_shortname": "datastore", "library_type": "GAPIC_COMBO" } From b934f640b071fae6b05ca0bed1e52989e07facbf Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 3 May 2022 02:26:20 +0200 Subject: [PATCH 668/820] chore(deps): update dependency @types/mocha to v9 (#938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/mocha](https://togithub.com/DefinitelyTyped/DefinitelyTyped) | [`^8.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@types%2fmocha/8.2.3/9.1.1) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fmocha/9.1.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fmocha/9.1.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fmocha/9.1.1/compatibility-slim/8.2.3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fmocha/9.1.1/confidence-slim/8.2.3)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: "after 9am and before 3pm" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0ed545fb471..8fc96ff72de 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -55,7 +55,7 @@ "@types/extend": "^3.0.1", "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", - "@types/mocha": "^8.0.0", + "@types/mocha": "^9.0.0", "@types/node": "^16.0.0", "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", From ef3ac01822d5750fde2e708348d223ae6726ab9f Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 9 May 2022 17:44:16 +0200 Subject: [PATCH 669/820] fix(deps): update dependency sinon to v14 (#943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^13.0.0` -> `^14.0.0`](https://renovatebot.com/diffs/npm/sinon/13.0.2/14.0.0) | [![age](https://badges.renovateapi.com/packages/npm/sinon/14.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/14.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/14.0.0/compatibility-slim/13.0.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/14.0.0/confidence-slim/13.0.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
sinonjs/sinon ### [`v14.0.0`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#​1400) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v13.0.2...v14.0.0) - [`c2bbd826`](https://togithub.com/sinonjs/sinon/commit/c2bbd82641444eb5b32822489ae40f185afbbf00) Drop node 12 (Morgan Roderick) > And embrace Node 18 > > See https://nodejs.org/en/about/releases/ *Released by Morgan Roderick on 2022-05-07.*
--- ### Configuration 📅 **Schedule**: "after 9am and before 3pm" (UTC). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8fc96ff72de..1bb304c2c71 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^13.0.0", + "sinon": "^14.0.0", "ts-loader": "^8.0.0", "typescript": "^3.8.3", "webpack-cli": "^4.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a0435462277..80c09c8070c 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^6.6.2", - "sinon": "^13.0.0" + "sinon": "^14.0.0" }, "devDependencies": { "chai": "^4.2.0", From d5bd2fc9572adb3868a1be20fe66b578a19ef5bc Mon Sep 17 00:00:00 2001 From: sofisl <55454395+sofisl@users.noreply.github.com> Date: Fri, 20 May 2022 10:28:33 -0700 Subject: [PATCH 670/820] build!: update library to use Node 12 (#945) * build!: Update library to use Node 12 Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/package.json | 10 ++++----- .../nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/src/entity.ts | 6 +++++- handwritten/nodejs-datastore/src/index.ts | 8 +++---- handwritten/nodejs-datastore/src/request.ts | 4 ++-- handwritten/nodejs-datastore/test/entity.ts | 21 +++++++++++++------ 6 files changed, 32 insertions(+), 19 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1bb304c2c71..372e0f390af 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^2.24.1", + "google-gax": "^3.0.1", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" @@ -60,23 +60,23 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", "c8": "^7.1.0", - "gts": "^3.0.0", + "gts": "^3.1.0", "js-yaml": "^4.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^1.0.2", "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", - "mocha": "^8.0.0", + "mocha": "^9.2.2", "null-loader": "^4.0.0", "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", "sinon": "^14.0.0", "ts-loader": "^8.0.0", - "typescript": "^3.8.3", + "typescript": "^4.6.4", "webpack-cli": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 80c09c8070c..ad055a825d0 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -8,7 +8,7 @@ ], "repository": "googleapis/nodejs-datastore", "engines": { - "node": ">=10" + "node": ">=12.0.0" }, "scripts": { "test": "mocha --timeout=600000" diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index f729e8ff715..4d349968860 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -180,7 +180,11 @@ export namespace entity { try { return this.typeCastFunction!(this.value); } catch (error) { - error.message = `integerTypeCastFunction threw an error:\n\n - ${error.message}`; + ( + error as Error + ).message = `integerTypeCastFunction threw an error:\n\n - ${ + (error as Error).message + }`; throw error; } } else { diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 2725598720f..48ec56d9566 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -611,13 +611,13 @@ class Datastore extends DatastoreRequest { const gaxOpts = options.gaxOptions || {}; const reqOpts = { - pageSize: gaxOpts.pageSize, - pageToken: gaxOpts.pageToken, + pageSize: (gaxOpts as GetIndexesOptions).pageSize, + pageToken: (gaxOpts as GetIndexesOptions).pageToken, ...options, }; - delete gaxOpts.pageSize; - delete gaxOpts.pageToken; + delete (gaxOpts as GetIndexesOptions).pageSize; + delete (gaxOpts as GetIndexesOptions).pageToken; delete (reqOpts as CallOptions).autoPaginate; delete (reqOpts as GetIndexesOptions).gaxOptions; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 733d1bc490c..261abb95b49 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -727,7 +727,7 @@ class DatastoreRequest { } catch (e) { // using setImmediate here to make sure this doesn't throw a // synchronous error - setImmediate(onResultSet, e); + setImmediate(onResultSet, e as Error); return; } @@ -880,7 +880,7 @@ class DatastoreRequest { // Even a failed rollback should be transparent. // RE: https://github.com/GoogleCloudPlatform/gcloud-node/pull/1369#discussion_r66833976 } - callback!(err); + callback!(err as Error); } }); } diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 84ca5b3dd0b..e79d6360da4 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1675,8 +1675,11 @@ describe('entity', () => { try { entity.keyFromKeyProto(keyProtoInvalid); } catch (e) { - assert.strictEqual(e.name, 'InvalidKey'); - assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); + assert.strictEqual((e as Error).name, 'InvalidKey'); + assert.strictEqual( + (e as Error).message, + 'Ancestor keys require an id or name.' + ); done(); } }); @@ -1756,8 +1759,11 @@ describe('entity', () => { try { entity.keyToKeyProto(key); } catch (e) { - assert.strictEqual(e.name, 'InvalidKey'); - assert.strictEqual(e.message, 'A key should contain at least a kind.'); + assert.strictEqual((e as Error).name, 'InvalidKey'); + assert.strictEqual( + (e as Error).message, + 'A key should contain at least a kind.' + ); done(); } }); @@ -1771,8 +1777,11 @@ describe('entity', () => { try { entity.keyToKeyProto(key); } catch (e) { - assert.strictEqual(e.name, 'InvalidKey'); - assert.strictEqual(e.message, 'Ancestor keys require an id or name.'); + assert.strictEqual((e as Error).name, 'InvalidKey'); + assert.strictEqual( + (e as Error).message, + 'Ancestor keys require an id or name.' + ); done(); } }); From 6bacc547f043f3e94351aeca8cd395c614774dfe Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 31 May 2022 22:14:11 +0000 Subject: [PATCH 671/820] fix: fixes for dynamic routing and streaming descriptors (#947) - [ ] Regenerate this pull request now. Use gapic-generator-typescript v2.14.5. PiperOrigin-RevId: 450616838 Source-Link: https://github.com/googleapis/googleapis/commit/7a47b72791e0b84d78beca4c2b26bec42ce31572 Source-Link: https://github.com/googleapis/googleapis-gen/commit/42cc6331bae0b99f61b8e01ae15b05211716c4f9 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDJjYzYzMzFiYWUwYjk5ZjYxYjhlMDFhZTE1YjA1MjExNzE2YzRmOSJ9 docs: Document encoding of non-UTF-8 key strings in the Cloud Datastore API PiperOrigin-RevId: 450535507 Source-Link: https://github.com/googleapis/googleapis/commit/2f003c03e819c5faa3018c3e0e964e9aeef9c833 Source-Link: https://github.com/googleapis/googleapis-gen/commit/7d78e9ed96dbea6bf5e0179c0ee16561007616ac Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2Q3OGU5ZWQ5NmRiZWE2YmY1ZTAxNzljMGVlMTY1NjEwMDc2MTZhYyJ9 --- .../protos/google/datastore/v1/entity.proto | 11 ++++++++++ .../src/v1/datastore_admin_client.ts | 2 ++ .../test/gapic_datastore_admin_v1.ts | 22 +++++++++++++------ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index befbcd7b657..55d7b64fe5f 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -66,22 +66,33 @@ message Key { // If neither is set, the element is incomplete. message PathElement { // The kind of the entity. + // // A kind matching regex `__.*__` is reserved/read-only. // A kind must not contain more than 1500 bytes when UTF-8 encoded. // Cannot be `""`. + // + // Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are + // encoded as `__bytes__` where `` is the base-64 encoding of the + // bytes. string kind = 1; // The type of ID. oneof id_type { // The auto-allocated ID of the entity. + // // Never equal to zero. Values less than zero are discouraged and may not // be supported in the future. int64 id = 2; // The name of the entity. + // // A name matching regex `__.*__` is reserved/read-only. // A name must not be more than 1500 bytes when UTF-8 encoded. // Cannot be `""`. + // + // Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are + // encoded as `__bytes__` where `` is the base-64 encoding of the + // bytes. string name = 3; } } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 3b2d07357c9..a636e5f577f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -517,6 +517,7 @@ export class DatastoreAdminClient { options.otherArgs.headers['x-goog-request-params'] = gax.routingHeader.fromParams({ project_id: request.projectId || '', + index_id: request.indexId || '', }); this.initialize(); return this.innerApiCalls.getIndex(request, options, callback); @@ -1114,6 +1115,7 @@ export class DatastoreAdminClient { options.otherArgs.headers['x-goog-request-params'] = gax.routingHeader.fromParams({ project_id: request.projectId || '', + index_id: request.indexId || '', }); this.initialize(); return this.innerApiCalls.deleteIndex(request, options, callback); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index ae17a35128d..122789d41a2 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -253,7 +253,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.GetIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -284,7 +285,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.GetIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -331,7 +333,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.GetIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -359,6 +362,7 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.GetIndexRequest() ); request.projectId = ''; + request.indexId = ''; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getIndex(request), expectedError); @@ -954,7 +958,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.DeleteIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -986,7 +991,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.DeleteIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -1040,7 +1046,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.DeleteIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { @@ -1071,7 +1078,8 @@ describe('v1.DatastoreAdminClient', () => { new protos.google.datastore.admin.v1.DeleteIndexRequest() ); request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + request.indexId = ''; + const expectedHeaderRequestParams = 'project_id=&index_id='; const expectedOptions = { otherArgs: { headers: { From 728e28d3859934c53429375526477b0bd57ce311 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 09:52:54 -0700 Subject: [PATCH 672/820] docs: clarifications for `DatastoreFirestoreMigraitonMetadata` (#950) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: clarifications for `DatastoreFirestoreMigraitonMetadata` feat: new enum value `OPTIMISTIC_WITH_ENTITY_GROUPS` for `ConcurrencyMode` PiperOrigin-RevId: 452220654 Source-Link: https://github.com/googleapis/googleapis/commit/454ad5ec43997b2b2fff15b2c0d86677fecdc60e Source-Link: https://github.com/googleapis/googleapis-gen/commit/45e72318c728b40c2131df1b5650965b68eb3bed Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDVlNzIzMThjNzI4YjQwYzIxMzFkZjFiNTY1MDk2NWI2OGViM2JlZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../datastore/admin/v1/datastore_admin.proto | 4 +- .../google/datastore/admin/v1/index.proto | 21 +- .../google/datastore/admin/v1/migration.proto | 31 +- .../nodejs-datastore/protos/protos.d.ts | 43 +-- handwritten/nodejs-datastore/protos/protos.js | 108 ++++--- .../nodejs-datastore/protos/protos.json | 43 +-- .../src/v1/datastore_admin_client.ts | 176 ++++++++++ .../test/gapic_datastore_admin_v1.ts | 305 ++++++++++++++++++ 8 files changed, 613 insertions(+), 118 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index 3bd4f4c7278..0d624956e33 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -481,7 +481,7 @@ message IndexOperationMetadata { // design pattern. // // This singleton resource can be accessed at: -// `projects/{project_id}/datastore-firestore-migration` +// "projects/{project_id}/operations/datastore-firestore-migration" message DatastoreFirestoreMigrationMetadata { // The current state of migration from Cloud Datastore to Cloud Firestore in // Datastore mode. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto index a211e7c97a9..0162af52384 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ syntax = "proto3"; package google.datastore.admin.v1; import "google/api/field_behavior.proto"; -import "google/api/annotations.proto"; option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; @@ -29,15 +28,6 @@ option ruby_package = "Google::Cloud::Datastore::Admin::V1"; // Datastore composite index definition. message Index { - // A property of an index. - message IndexedProperty { - // Required. The property name to index. - string name = 1 [(google.api.field_behavior) = REQUIRED]; - - // Required. The indexed property's direction. Must not be DIRECTION_UNSPECIFIED. - Direction direction = 2 [(google.api.field_behavior) = REQUIRED]; - } - // For an ordered index, specifies whether each of the entity's ancestors // will be included. enum AncestorMode { @@ -65,6 +55,15 @@ message Index { DESCENDING = 2; } + // A property of an index. + message IndexedProperty { + // Required. The property name to index. + string name = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The indexed property's direction. Must not be DIRECTION_UNSPECIFIED. + Direction direction = 2 [(google.api.field_behavior) = REQUIRED]; + } + // The possible set of states of an index. enum State { // The state is unspecified. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto index aab41706fe5..dbbe473c904 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ syntax = "proto3"; package google.datastore.admin.v1; -import "google/api/annotations.proto"; - option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; option java_multiple_files = true; @@ -38,6 +36,21 @@ message MigrationStateEvent { // Datastore to Cloud Firestore in Datastore // mode](https://cloud.google.com/datastore/docs/upgrade-to-firestore). message MigrationProgressEvent { + // Concurrency modes for transactions in Cloud Firestore. + enum ConcurrencyMode { + // Unspecified. + CONCURRENCY_MODE_UNSPECIFIED = 0; + + // Pessimistic concurrency. + PESSIMISTIC = 1; + + // Optimistic concurrency. + OPTIMISTIC = 2; + + // Optimistic concurrency with entity groups. + OPTIMISTIC_WITH_ENTITY_GROUPS = 3; + } + // Details for the `PREPARE` step. message PrepareStepDetails { // The concurrency mode this database will use when it reaches the @@ -51,18 +64,6 @@ message MigrationProgressEvent { ConcurrencyMode concurrency_mode = 1; } - // Concurrency modes for transactions in Cloud Firestore. - enum ConcurrencyMode { - // Unspecified. - CONCURRENCY_MODE_UNSPECIFIED = 0; - - // Pessimistic concurrency. - PESSIMISTIC = 1; - - // Optimistic concurrency. - OPTIMISTIC = 2; - } - // The step that is starting. // // An event with step set to `START` indicates that the migration diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 380e781ffb6..97c79d5baba 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1852,6 +1852,20 @@ export namespace google { namespace Index { + /** AncestorMode enum. */ + enum AncestorMode { + ANCESTOR_MODE_UNSPECIFIED = 0, + NONE = 1, + ALL_ANCESTORS = 2 + } + + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + /** Properties of an IndexedProperty. */ interface IIndexedProperty { @@ -1948,20 +1962,6 @@ export namespace google { public toJSON(): { [k: string]: any }; } - /** AncestorMode enum. */ - enum AncestorMode { - ANCESTOR_MODE_UNSPECIFIED = 0, - NONE = 1, - ALL_ANCESTORS = 2 - } - - /** Direction enum. */ - enum Direction { - DIRECTION_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2 - } - /** State enum. */ enum State { STATE_UNSPECIFIED = 0, @@ -2169,6 +2169,14 @@ export namespace google { namespace MigrationProgressEvent { + /** ConcurrencyMode enum. */ + enum ConcurrencyMode { + CONCURRENCY_MODE_UNSPECIFIED = 0, + PESSIMISTIC = 1, + OPTIMISTIC = 2, + OPTIMISTIC_WITH_ENTITY_GROUPS = 3 + } + /** Properties of a PrepareStepDetails. */ interface IPrepareStepDetails { @@ -2348,13 +2356,6 @@ export namespace google { */ public toJSON(): { [k: string]: any }; } - - /** ConcurrencyMode enum. */ - enum ConcurrencyMode { - CONCURRENCY_MODE_UNSPECIFIED = 0, - PESSIMISTIC = 1, - OPTIMISTIC = 2 - } } /** MigrationState enum. */ diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 1e4f4d11991..58051ce1956 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -4588,6 +4588,38 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * AncestorMode enum. + * @name google.datastore.admin.v1.Index.AncestorMode + * @enum {number} + * @property {number} ANCESTOR_MODE_UNSPECIFIED=0 ANCESTOR_MODE_UNSPECIFIED value + * @property {number} NONE=1 NONE value + * @property {number} ALL_ANCESTORS=2 ALL_ANCESTORS value + */ + Index.AncestorMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ANCESTOR_MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "NONE"] = 1; + values[valuesById[2] = "ALL_ANCESTORS"] = 2; + return values; + })(); + + /** + * Direction enum. + * @name google.datastore.admin.v1.Index.Direction + * @enum {number} + * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + Index.Direction = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); + Index.IndexedProperty = (function() { /** @@ -4816,38 +4848,6 @@ return IndexedProperty; })(); - /** - * AncestorMode enum. - * @name google.datastore.admin.v1.Index.AncestorMode - * @enum {number} - * @property {number} ANCESTOR_MODE_UNSPECIFIED=0 ANCESTOR_MODE_UNSPECIFIED value - * @property {number} NONE=1 NONE value - * @property {number} ALL_ANCESTORS=2 ALL_ANCESTORS value - */ - Index.AncestorMode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "ANCESTOR_MODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "NONE"] = 1; - values[valuesById[2] = "ALL_ANCESTORS"] = 2; - return values; - })(); - - /** - * Direction enum. - * @name google.datastore.admin.v1.Index.Direction - * @enum {number} - * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value - * @property {number} ASCENDING=1 ASCENDING value - * @property {number} DESCENDING=2 DESCENDING value - */ - Index.Direction = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; - values[valuesById[1] = "ASCENDING"] = 1; - values[valuesById[2] = "DESCENDING"] = 2; - return values; - })(); - /** * State enum. * @name google.datastore.admin.v1.Index.State @@ -5389,6 +5389,24 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * ConcurrencyMode enum. + * @name google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode + * @enum {number} + * @property {number} CONCURRENCY_MODE_UNSPECIFIED=0 CONCURRENCY_MODE_UNSPECIFIED value + * @property {number} PESSIMISTIC=1 PESSIMISTIC value + * @property {number} OPTIMISTIC=2 OPTIMISTIC value + * @property {number} OPTIMISTIC_WITH_ENTITY_GROUPS=3 OPTIMISTIC_WITH_ENTITY_GROUPS value + */ + MigrationProgressEvent.ConcurrencyMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "CONCURRENCY_MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "PESSIMISTIC"] = 1; + values[valuesById[2] = "OPTIMISTIC"] = 2; + values[valuesById[3] = "OPTIMISTIC_WITH_ENTITY_GROUPS"] = 3; + return values; + })(); + MigrationProgressEvent.PrepareStepDetails = (function() { /** @@ -5526,6 +5544,7 @@ case 0: case 1: case 2: + case 3: break; } return null; @@ -5556,6 +5575,10 @@ case 2: message.concurrencyMode = 2; break; + case "OPTIMISTIC_WITH_ENTITY_GROUPS": + case 3: + message.concurrencyMode = 3; + break; } return message; }; @@ -5731,6 +5754,7 @@ case 0: case 1: case 2: + case 3: break; } return null; @@ -5761,6 +5785,10 @@ case 2: message.concurrencyMode = 2; break; + case "OPTIMISTIC_WITH_ENTITY_GROUPS": + case 3: + message.concurrencyMode = 3; + break; } return message; }; @@ -5799,22 +5827,6 @@ return RedirectWritesStepDetails; })(); - /** - * ConcurrencyMode enum. - * @name google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode - * @enum {number} - * @property {number} CONCURRENCY_MODE_UNSPECIFIED=0 CONCURRENCY_MODE_UNSPECIFIED value - * @property {number} PESSIMISTIC=1 PESSIMISTIC value - * @property {number} OPTIMISTIC=2 OPTIMISTIC value - */ - MigrationProgressEvent.ConcurrencyMode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "CONCURRENCY_MODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "PESSIMISTIC"] = 1; - values[valuesById[2] = "OPTIMISTIC"] = 2; - return values; - })(); - return MigrationProgressEvent; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 8308c22ecca..f40ddedcc94 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -483,6 +483,20 @@ } }, "nested": { + "AncestorMode": { + "values": { + "ANCESTOR_MODE_UNSPECIFIED": 0, + "NONE": 1, + "ALL_ANCESTORS": 2 + } + }, + "Direction": { + "values": { + "DIRECTION_UNSPECIFIED": 0, + "ASCENDING": 1, + "DESCENDING": 2 + } + }, "IndexedProperty": { "fields": { "name": { @@ -501,20 +515,6 @@ } } }, - "AncestorMode": { - "values": { - "ANCESTOR_MODE_UNSPECIFIED": 0, - "NONE": 1, - "ALL_ANCESTORS": 2 - } - }, - "Direction": { - "values": { - "DIRECTION_UNSPECIFIED": 0, - "ASCENDING": 1, - "DESCENDING": 2 - } - }, "State": { "values": { "STATE_UNSPECIFIED": 0, @@ -558,6 +558,14 @@ } }, "nested": { + "ConcurrencyMode": { + "values": { + "CONCURRENCY_MODE_UNSPECIFIED": 0, + "PESSIMISTIC": 1, + "OPTIMISTIC": 2, + "OPTIMISTIC_WITH_ENTITY_GROUPS": 3 + } + }, "PrepareStepDetails": { "fields": { "concurrencyMode": { @@ -573,13 +581,6 @@ "id": 1 } } - }, - "ConcurrencyMode": { - "values": { - "CONCURRENCY_MODE_UNSPECIFIED": 0, - "PESSIMISTIC": 1, - "OPTIMISTIC": 2 - } } } }, diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index a636e5f577f..2ebe984055d 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1345,6 +1345,182 @@ export class DatastoreAdminClient { callSettings ) as AsyncIterable; } + /** + * Gets the latest state of a long-running operation. Clients can use this + * method to poll the operation result at intervals as recommended by the API + * service. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error, ?Object)=} callback + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. + * @return {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. The promise has a method named + * "cancel" which cancels the ongoing API call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * const name = ''; + * const [response] = await client.getOperation({name}); + * // doThingsWith(response) + * ``` + */ + getOperation( + request: protos.google.longrunning.GetOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + > + ): Promise<[protos.google.longrunning.Operation]> { + return this.operationsClient.getOperation(request, options, callback); + } + /** + * Lists operations that match the specified filter in the request. If the + * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object. + * + * For-await-of syntax is used with the iterable to recursively get response element on-demand. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation collection. + * @param {string} request.filter - The standard list filter. + * @param {number=} request.pageSize - + * The maximum number of resources contained in the underlying API + * response. If page streaming is performed per-resource, this + * parameter does not affect the return value. If page streaming is + * performed per-page, this determines the maximum number of + * resources in a page. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @returns {Object} + * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * for await (const response of client.listOperationsAsync(request)); + * // doThingsWith(response) + * ``` + */ + listOperationsAsync( + request: protos.google.longrunning.ListOperationsRequest, + options?: gax.CallOptions + ): AsyncIterable { + return this.operationsClient.listOperationsAsync(request, options); + } + /** + * Starts asynchronous cancellation on a long-running operation. The server + * makes a best effort to cancel the operation, but success is not + * guaranteed. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. Clients can use + * {@link Operations.GetOperation} or + * other methods to check whether the cancellation succeeded or whether the + * operation completed despite cancellation. On successful cancellation, + * the operation is not deleted; instead, it becomes an operation with + * an {@link Operation.error} value with a {@link google.rpc.Status.code} of + * 1, corresponding to `Code.CANCELLED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be cancelled. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.cancelOperation({name: ''}); + * ``` + */ + cancelOperation( + request: protos.google.longrunning.CancelOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.CancelOperationRequest, + {} | undefined | null + >, + callback?: Callback< + protos.google.longrunning.CancelOperationRequest, + protos.google.protobuf.Empty, + {} | undefined | null + > + ): Promise { + return this.operationsClient.cancelOperation(request, options, callback); + } + + /** + * Deletes a long-running operation. This method indicates that the client is + * no longer interested in the operation result. It does not cancel the + * operation. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be deleted. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.deleteOperation({name: ''}); + * ``` + */ + deleteOperation( + request: protos.google.longrunning.DeleteOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + > + ): Promise { + return this.operationsClient.deleteOperation(request, options, callback); + } /** * Terminate the gRPC channel and close the client. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 122789d41a2..9e31998c374 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1425,4 +1425,309 @@ describe('v1.DatastoreAdminClient', () => { ); }); }); + describe('getOperation', () => { + it('invokes getOperation without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const response = await client.getOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes getOperation without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.getOperation( + request, + undefined, + ( + err?: Error | null, + result?: operationsProtos.google.longrunning.Operation | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + it('invokes getOperation with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.getOperation(request); + }, expectedError); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('cancelOperation', () => { + it('invokes cancelOperation without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = + stubSimpleCall(expectedResponse); + const response = await client.cancelOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes cancelOperation without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.cancelOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); + }); + it('invokes cancelOperation with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.cancelOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.cancelOperation(request); + }, expectedError); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('deleteOperation', () => { + it('invokes deleteOperation without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = + stubSimpleCall(expectedResponse); + const response = await client.deleteOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes deleteOperation without error using callback', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.deleteOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); + }); + it('invokes deleteOperation with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.deleteOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.deleteOperation(request); + }, expectedError); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('listOperationsAsync', () => { + it('uses async iteration with listOperations without error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedResponse = [ + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + ]; + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + const iterable = client.operationsClient.listOperationsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + it('uses async iteration with listOperations with error', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.operationsClient.listOperationsAsync(request); + await assert.rejects(async () => { + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + }); }); From 4b54e1a06e0fb591782d350e8aec65677f2632d7 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 9 Jun 2022 22:10:11 +0200 Subject: [PATCH 673/820] chore(deps): update dependency jsdoc-fresh to v2 (#953) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jsdoc-fresh](https://togithub.com/googleapis/jsdoc-fresh) | [`^1.0.2` -> `^2.0.0`](https://renovatebot.com/diffs/npm/jsdoc-fresh/1.1.1/2.0.0) | [![age](https://badges.renovateapi.com/packages/npm/jsdoc-fresh/2.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jsdoc-fresh/2.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jsdoc-fresh/2.0.0/compatibility-slim/1.1.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jsdoc-fresh/2.0.0/confidence-slim/1.1.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/jsdoc-fresh ### [`v2.0.0`](https://togithub.com/googleapis/jsdoc-fresh/blob/HEAD/CHANGELOG.md#​200-httpsgithubcomgoogleapisjsdoc-freshcomparev111v200-2022-05-18) [Compare Source](https://togithub.com/googleapis/jsdoc-fresh/compare/v1.1.1...v2.0.0) ##### ⚠ BREAKING CHANGES - update library to use Node 12 ([#​108](https://togithub.com/googleapis/jsdoc-fresh/issues/108)) ##### Build System - update library to use Node 12 ([#​108](https://togithub.com/googleapis/jsdoc-fresh/issues/108)) ([e61c223](https://togithub.com/googleapis/jsdoc-fresh/commit/e61c2238db8900e339e5fe7fb8aea09642290182)) ##### [1.1.1](https://www.github.com/googleapis/jsdoc-fresh/compare/v1.1.0...v1.1.1) (2021-08-11) ##### Bug Fixes - **build:** migrate to using main branch ([#​83](https://www.togithub.com/googleapis/jsdoc-fresh/issues/83)) ([9474adb](https://www.github.com/googleapis/jsdoc-fresh/commit/9474adbf0d559d319ff207397ba2be6b557999ac))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 372e0f390af..86ffff12e5b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -63,7 +63,7 @@ "gts": "^3.1.0", "js-yaml": "^4.0.0", "jsdoc": "^3.6.3", - "jsdoc-fresh": "^1.0.2", + "jsdoc-fresh": "^2.0.0", "jsdoc-region-tag": "^1.0.4", "linkinator": "^2.0.3", "mocha": "^9.2.2", From b33b20dda6a0a3311f323be208b2592e8b652b93 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 9 Jun 2022 22:26:25 +0200 Subject: [PATCH 674/820] chore(deps): update dependency jsdoc-region-tag to v2 (#954) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jsdoc-region-tag](https://togithub.com/googleapis/jsdoc-region-tag) | [`^1.0.4` -> `^2.0.0`](https://renovatebot.com/diffs/npm/jsdoc-region-tag/1.3.1/2.0.0) | [![age](https://badges.renovateapi.com/packages/npm/jsdoc-region-tag/2.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jsdoc-region-tag/2.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jsdoc-region-tag/2.0.0/compatibility-slim/1.3.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jsdoc-region-tag/2.0.0/confidence-slim/1.3.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/jsdoc-region-tag ### [`v2.0.0`](https://togithub.com/googleapis/jsdoc-region-tag/blob/HEAD/CHANGELOG.md#​200-httpsgithubcomgoogleapisjsdoc-region-tagcomparev131v200-2022-05-20) [Compare Source](https://togithub.com/googleapis/jsdoc-region-tag/compare/v1.3.1...v2.0.0) ##### ⚠ BREAKING CHANGES - update library to use Node 12 ([#​107](https://togithub.com/googleapis/jsdoc-region-tag/issues/107)) ##### Build System - update library to use Node 12 ([#​107](https://togithub.com/googleapis/jsdoc-region-tag/issues/107)) ([5b51796](https://togithub.com/googleapis/jsdoc-region-tag/commit/5b51796771984cf8b978990025f14faa03c19923)) ##### [1.3.1](https://www.github.com/googleapis/jsdoc-region-tag/compare/v1.3.0...v1.3.1) (2021-08-11) ##### Bug Fixes - **build:** migrate to using main branch ([#​79](https://www.togithub.com/googleapis/jsdoc-region-tag/issues/79)) ([5050615](https://www.github.com/googleapis/jsdoc-region-tag/commit/50506150b7758592df5e389c6a5c3d82b3b20881))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 86ffff12e5b..622d45f0913 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -64,7 +64,7 @@ "js-yaml": "^4.0.0", "jsdoc": "^3.6.3", "jsdoc-fresh": "^2.0.0", - "jsdoc-region-tag": "^1.0.4", + "jsdoc-region-tag": "^2.0.0", "linkinator": "^2.0.3", "mocha": "^9.2.2", "null-loader": "^4.0.0", From dfd7c7a158cbd081eb1cdfd7500583ef764df4a4 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 13 Jun 2022 17:25:59 -0400 Subject: [PATCH 675/820] feat: Query filters for datastore (#936) * First change - tests still passing * Enhanced test to test new properties * linting fixes * Update comment on operators. * Added 3 system tests * Count fix --- handwritten/nodejs-datastore/src/entity.ts | 3 +++ handwritten/nodejs-datastore/src/query.ts | 14 +++++++--- .../nodejs-datastore/system-test/datastore.ts | 27 +++++++++++++++++++ handwritten/nodejs-datastore/test/query.ts | 17 +++++++++++- 4 files changed, 57 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 4d349968860..49dddf63d5e 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -1193,6 +1193,9 @@ export namespace entity { '<': 'LESS_THAN', '<=': 'LESS_THAN_OR_EQUAL', HAS_ANCESTOR: 'HAS_ANCESTOR', + '!=': 'NOT_EQUAL', + IN: 'IN', + NOT_IN: 'NOT_IN', }; const SIGN_TO_ORDER = { diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index a605165e8d0..c062a4c64bb 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -22,7 +22,16 @@ import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; -export type Operator = '=' | '<' | '>' | '<=' | '>=' | 'HAS_ANCESTOR'; +export type Operator = + | '=' + | '<' + | '>' + | '<=' + | '>=' + | 'HAS_ANCESTOR' + | '!=' + | 'IN' + | 'NOT_IN'; export interface OrderOptions { descending?: boolean; @@ -154,8 +163,7 @@ class Query { /** * Datastore allows querying on properties. Supported comparison operators - * are `=`, `<`, `>`, `<=`, and `>=`. "Not equal" and `IN` operators are - * currently not supported. + * are `=`, `<`, `>`, `<=`, `>=`, `!=`, `HAS_ANCESTOR`, `IN` and `NOT_IN`. * * *To filter by ancestors, see {module:datastore/query#hasAncestor}.* * diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 875a4133e88..3615ce206ba 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -725,6 +725,33 @@ describe('Datastore', () => { assert.strictEqual(entities!.length, 6); }); + it('should filter queries with NOT_EQUAL', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '!=', 9); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + }); + + it('should filter queries with IN', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', 'IN', [9, 25]); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); + + it('should filter queries with NOT_IN', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', 'NOT_IN', [9, 25]); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 5); + }); + it('should filter queries with defined indexes', async () => { const q = datastore .createQuery('Character') diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 6a99685de30..10959256c23 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -75,7 +75,10 @@ describe('Query', () => { .filter('name', '=', 'Title') .filter('count', '>', 20) .filter('size', '<', 10) - .filter('something', '>=', 11); + .filter('something', '>=', 11) + .filter('neProperty', '!=', 12) + .filter('inProperty', 'IN', 13) + .filter('notInProperty', 'NOT_IN', 14); assert.strictEqual(query.filters[0].name, 'date'); assert.strictEqual(query.filters[0].op, '<='); @@ -96,6 +99,18 @@ describe('Query', () => { assert.strictEqual(query.filters[4].name, 'something'); assert.strictEqual(query.filters[4].op, '>='); assert.strictEqual(query.filters[4].val, 11); + + assert.strictEqual(query.filters[5].name, 'neProperty'); + assert.strictEqual(query.filters[5].op, '!='); + assert.strictEqual(query.filters[5].val, 12); + + assert.strictEqual(query.filters[6].name, 'inProperty'); + assert.strictEqual(query.filters[6].op, 'IN'); + assert.strictEqual(query.filters[6].val, 13); + + assert.strictEqual(query.filters[7].name, 'notInProperty'); + assert.strictEqual(query.filters[7].op, 'NOT_IN'); + assert.strictEqual(query.filters[7].val, 14); }); it('should remove any whitespace surrounding the filter name', () => { From 21bc03723f1c1476438e9527bff685802fc741ba Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:20:29 -0400 Subject: [PATCH 676/820] chore(main): release 7.0.0 (#946) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 26 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 8339ab69ac5..8fe4124aba6 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,32 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.0.0](https://github.com/googleapis/nodejs-datastore/compare/v6.6.2...v7.0.0) (2022-06-13) + + +### ⚠ BREAKING CHANGES + +* update library to use Node 12 (#945) + +### Features + +* add IN/NOT_IN/NOT_EQUALS support to cloud datastore proto ([6f22f0f](https://github.com/googleapis/nodejs-datastore/commit/6f22f0f473de8a5b07addc83523a6215e165563d)) +* define Datastore -> Firestore in Datastore mode migration long running operation metadata ([#907](https://github.com/googleapis/nodejs-datastore/issues/907)) ([652f66d](https://github.com/googleapis/nodejs-datastore/commit/652f66d2f88d80c900499890e7dd474cdbbc9c0b)) +* expose new read_time API fields, currently only available in private preview ([#932](https://github.com/googleapis/nodejs-datastore/issues/932)) ([aef00f8](https://github.com/googleapis/nodejs-datastore/commit/aef00f81864598fbd18b96dbf6986e3147d2a7a0)) +* Query filters for datastore ([#936](https://github.com/googleapis/nodejs-datastore/issues/936)) ([51725fa](https://github.com/googleapis/nodejs-datastore/commit/51725fab85cb1fcc231c71f6e8f56d58e958f676)) + + +### Bug Fixes + +* **deps:** update dependency sinon to v13 ([#918](https://github.com/googleapis/nodejs-datastore/issues/918)) ([fa01bd4](https://github.com/googleapis/nodejs-datastore/commit/fa01bd43ba1733a17411c071850c45de2b3ecd90)) +* **deps:** update dependency sinon to v14 ([#943](https://github.com/googleapis/nodejs-datastore/issues/943)) ([e117702](https://github.com/googleapis/nodejs-datastore/commit/e1177025eb3b6f2c6b1c20e3e83ad478c8eff366)) +* fixes for dynamic routing and streaming descriptors ([#947](https://github.com/googleapis/nodejs-datastore/issues/947)) ([ba6c190](https://github.com/googleapis/nodejs-datastore/commit/ba6c1902ba5ce19df651ed49d1d9a911c598fe5d)) + + +### Build System + +* update library to use Node 12 ([#945](https://github.com/googleapis/nodejs-datastore/issues/945)) ([eecf7ac](https://github.com/googleapis/nodejs-datastore/commit/eecf7ac37597ec4a84a1f4ceb9421764fddd1d0b)) + ### [6.6.2](https://www.github.com/googleapis/nodejs-datastore/compare/v6.6.1...v6.6.2) (2021-11-08) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 622d45f0913..696699ae565 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "6.6.2", + "version": "7.0.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ad055a825d0..af62ea7c3ae 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^6.6.2", + "@google-cloud/datastore": "^7.0.0", "sinon": "^14.0.0" }, "devDependencies": { From a4070b369a6968fa57b03759b37a18a0f869281c Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 22 Jun 2022 22:40:24 +0200 Subject: [PATCH 677/820] chore(deps): update dependency @google-cloud/storage to v6 (#948) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 696699ae565..fa7f0fae049 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -51,7 +51,7 @@ "stream-events": "^1.0.5" }, "devDependencies": { - "@google-cloud/storage": "^5.3.0", + "@google-cloud/storage": "^6.0.0", "@types/extend": "^3.0.1", "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", From f48f14991389c5ede07717d4bfc09ce5cfdd247c Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 15:10:39 -0700 Subject: [PATCH 678/820] feat: support regapic LRO (#957) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: support regapic LRO Use gapic-generator-typescript v2.15.1. PiperOrigin-RevId: 456946341 Source-Link: https://github.com/googleapis/googleapis/commit/88fd18d9d3b872b3d06a3d9392879f50b5bf3ce5 Source-Link: https://github.com/googleapis/googleapis-gen/commit/accfa371f667439313335c64042b063c1c53102e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYWNjZmEzNzFmNjY3NDM5MzEzMzM1YzY0MDQyYjA2M2MxYzUzMTAyZSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../src/v1/datastore_admin_client.ts | 44 ++++++++++++++----- .../src/v1/datastore_client.ts | 11 +++-- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 2ebe984055d..8f52e460ab2 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -23,6 +23,7 @@ import { CallOptions, Descriptors, ClientOptions, + GrpcClientOptions, LROperation, PaginationCallback, GaxCall, @@ -131,7 +132,7 @@ export class DatastoreAdminClient { * * @param {object} [options] - The configuration object. * The options accepted by the constructor are described in detail - * in [this document](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#creating-the-client-instance). + * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). * The common options are: * @param {object} [options.credentials] - Credentials object. * @param {string} [options.credentials.client_email] @@ -154,11 +155,10 @@ export class DatastoreAdminClient { * API remote host. * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. * Follows the structure of {@link gapicConfig}. - * @param {boolean} [options.fallback] - Use HTTP fallback mode. - * In fallback mode, a special browser-compatible transport implementation is used - * instead of gRPC transport. In browser context (if the `window` object is defined) - * the fallback mode is enabled automatically; set `options.fallback` to `false` - * if you need to override this behavior. + * @param {boolean | "rest"} [options.fallback] - Use HTTP fallback mode. + * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. + * For more information, please check the + * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. */ constructor(opts?: ClientOptions) { // Ensure that options include all the required fields. @@ -233,16 +233,36 @@ export class DatastoreAdminClient { }; const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos); - // This API contains "long-running operations", which return a // an Operation object that allows for tracking of the operation, // rather than holding a request open. - + const lroOptions: GrpcClientOptions = { + auth: this.auth, + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, + }; + if (opts.fallback === 'rest') { + lroOptions.protoJson = protoFilesRoot; + lroOptions.httpRules = [ + { + selector: 'google.longrunning.Operations.CancelOperation', + post: '/v1/{name=projects/*/operations/*}:cancel', + }, + { + selector: 'google.longrunning.Operations.DeleteOperation', + delete: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.GetOperation', + get: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.ListOperations', + get: '/v1/{name=projects/*}/operations', + }, + ]; + } this.operationsClient = this._gaxModule - .lro({ - auth: this.auth, - grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, - }) + .lro(lroOptions) .operationsClient(opts); const exportEntitiesResponse = protoFilesRoot.lookup( '.google.datastore.admin.v1.ExportEntitiesResponse' diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 0b332a9777a..d75cf5a155e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -66,7 +66,7 @@ export class DatastoreClient { * * @param {object} [options] - The configuration object. * The options accepted by the constructor are described in detail - * in [this document](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#creating-the-client-instance). + * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). * The common options are: * @param {object} [options.credentials] - Credentials object. * @param {string} [options.credentials.client_email] @@ -89,11 +89,10 @@ export class DatastoreClient { * API remote host. * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. * Follows the structure of {@link gapicConfig}. - * @param {boolean} [options.fallback] - Use HTTP fallback mode. - * In fallback mode, a special browser-compatible transport implementation is used - * instead of gRPC transport. In browser context (if the `window` object is defined) - * the fallback mode is enabled automatically; set `options.fallback` to `false` - * if you need to override this behavior. + * @param {boolean | "rest"} [options.fallback] - Use HTTP fallback mode. + * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. + * For more information, please check the + * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. */ constructor(opts?: ClientOptions) { // Ensure that options include all the required fields. From d56e20cc38865166d7cd6e8039907d9530b05b6a Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 8 Jul 2022 23:12:37 +0200 Subject: [PATCH 679/820] chore(deps): update dependency linkinator to v4 (#962) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [linkinator](https://togithub.com/JustinBeckwith/linkinator) | [`^2.0.3` -> `^4.0.0`](https://renovatebot.com/diffs/npm/linkinator/2.16.2/4.0.0) | [![age](https://badges.renovateapi.com/packages/npm/linkinator/4.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/linkinator/4.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/linkinator/4.0.0/compatibility-slim/2.16.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/linkinator/4.0.0/confidence-slim/2.16.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
JustinBeckwith/linkinator ### [`v4.0.0`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v4.0.0) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.1.0...v4.0.0) ##### Features - create new release with notes ([#​508](https://togithub.com/JustinBeckwith/linkinator/issues/508)) ([2cab633](https://togithub.com/JustinBeckwith/linkinator/commit/2cab633c9659eb10794a4bac06f8b0acdc3e2c0c)) ##### BREAKING CHANGES - The commits in [#​507](https://togithub.com/JustinBeckwith/linkinator/issues/507) and [#​506](https://togithub.com/JustinBeckwith/linkinator/issues/506) both had breaking changes. They included dropping support for Node.js 12.x and updating the CSV export to be streaming, and to use a new way of writing the CSV file. This is an empty to commit using the `BREAKING CHANGE` format in the commit message to ensure a release is triggered. ### [`v3.1.0`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.1.0) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.6...v3.1.0) ##### Features - allow --skip to be defined multiple times ([#​399](https://togithub.com/JustinBeckwith/linkinator/issues/399)) ([5ca5a46](https://togithub.com/JustinBeckwith/linkinator/commit/5ca5a461508e688de12e5ae6b4cfb6565f832ebf)) ### [`v3.0.6`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.6) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.5...v3.0.6) ##### Bug Fixes - **deps:** upgrade node-glob to v8 ([#​397](https://togithub.com/JustinBeckwith/linkinator/issues/397)) ([d334dc6](https://togithub.com/JustinBeckwith/linkinator/commit/d334dc6734cd7c2b73d7ed3dea0550a6c3072ad5)) ### [`v3.0.5`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.5) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.4...v3.0.5) ##### Bug Fixes - **deps:** upgrade to htmlparser2 v8.0.1 ([#​396](https://togithub.com/JustinBeckwith/linkinator/issues/396)) ([ba3b9a8](https://togithub.com/JustinBeckwith/linkinator/commit/ba3b9a8a9b19d39af6ed91790135e833b80c1eb6)) ### [`v3.0.4`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.4) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.3...v3.0.4) ##### Bug Fixes - **deps:** update dependency gaxios to v5 ([#​391](https://togithub.com/JustinBeckwith/linkinator/issues/391)) ([48af50e](https://togithub.com/JustinBeckwith/linkinator/commit/48af50e787731204aeb7eff41325c62291311e45)) ### [`v3.0.3`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.3) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.2...v3.0.3) ##### Bug Fixes - export getConfig from index ([#​371](https://togithub.com/JustinBeckwith/linkinator/issues/371)) ([0bc0355](https://togithub.com/JustinBeckwith/linkinator/commit/0bc0355c7e2ea457f247e6b52d1577b8c4ecb3a1)) ### [`v3.0.2`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.2) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.1...v3.0.2) ##### Bug Fixes - allow server root with trailing slash ([#​370](https://togithub.com/JustinBeckwith/linkinator/issues/370)) ([8adf6b0](https://togithub.com/JustinBeckwith/linkinator/commit/8adf6b025fda250e38461f1cdad40fe08c3b3b7c)) ### [`v3.0.1`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.1) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v3.0.0...v3.0.1) ##### Bug Fixes - decode path parts in local web server ([#​369](https://togithub.com/JustinBeckwith/linkinator/issues/369)) ([4696a0c](https://togithub.com/JustinBeckwith/linkinator/commit/4696a0c38c341b178ed815f47371fca955979feb)) ### [`v3.0.0`](https://togithub.com/JustinBeckwith/linkinator/releases/tag/v3.0.0) [Compare Source](https://togithub.com/JustinBeckwith/linkinator/compare/v2.16.2...v3.0.0) ##### Bug Fixes - **deps:** update dependency chalk to v5 ([#​362](https://togithub.com/JustinBeckwith/linkinator/issues/362)) ([4b17a8d](https://togithub.com/JustinBeckwith/linkinator/commit/4b17a8d87b649eaf813428f8ee6955e1d21dae4f)) - feat!: convert to es modules, drop node 10 ([#​359](https://togithub.com/JustinBeckwith/linkinator/issues/359)) ([efee299](https://togithub.com/JustinBeckwith/linkinator/commit/efee299ab8a805accef751eecf8538915a4e7783)), closes [#​359](https://togithub.com/JustinBeckwith/linkinator/issues/359) ##### BREAKING CHANGES - this module now requires node.js 12 and above, and has moved to es modules by default.
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fa7f0fae049..1a1c71ef422 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "jsdoc": "^3.6.3", "jsdoc-fresh": "^2.0.0", "jsdoc-region-tag": "^2.0.0", - "linkinator": "^2.0.3", + "linkinator": "^4.0.0", "mocha": "^9.2.2", "null-loader": "^4.0.0", "p-queue": "^6.6.1", From b269bb395028e00498960e043d053b9fee52ef3b Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 25 Jul 2022 18:14:15 +0200 Subject: [PATCH 680/820] fix(deps): update dependency @google-cloud/promisify to v3 (#942) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@google-cloud/promisify](https://togithub.com/googleapis/nodejs-promisify) | [`^2.0.0` -> `^3.0.0`](https://renovatebot.com/diffs/npm/@google-cloud%2fpromisify/2.0.4/3.0.0) | [![age](https://badges.renovateapi.com/packages/npm/@google-cloud%2fpromisify/3.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@google-cloud%2fpromisify/3.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@google-cloud%2fpromisify/3.0.0/compatibility-slim/2.0.4)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@google-cloud%2fpromisify/3.0.0/confidence-slim/2.0.4)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/nodejs-promisify ### [`v3.0.0`](https://togithub.com/googleapis/nodejs-promisify/blob/HEAD/CHANGELOG.md#​300-httpsgithubcomgoogleapisnodejs-promisifycomparev204v300-2022-05-03) [Compare Source](https://togithub.com/googleapis/nodejs-promisify/compare/v2.0.4...v3.0.0) ##### ⚠ BREAKING CHANGES - drop node 10 from engines list, update typescript to 4.6.3 ([#​300](https://togithub.com/googleapis/nodejs-promisify/issues/300)) ##### Build System - drop node 10 from engines list, update typescript to 4.6.3 ([#​300](https://togithub.com/googleapis/nodejs-promisify/issues/300)) ([fed2f14](https://togithub.com/googleapis/nodejs-promisify/commit/fed2f145a5256c939eb66b85a5c7c48332b8841d)) ##### [2.0.4](https://www.github.com/googleapis/nodejs-promisify/compare/v2.0.3...v2.0.4) (2021-09-09) ##### Bug Fixes - **build:** switch primary branch to main ([#​270](https://www.togithub.com/googleapis/nodejs-promisify/issues/270)) ([11242f7](https://www.github.com/googleapis/nodejs-promisify/commit/11242f7f76e170dae7a429f8d4064bf33be9bb3f)) ##### [2.0.3](https://www.github.com/googleapis/nodejs-promisify/compare/v2.0.2...v2.0.3) (2020-09-04) ##### Bug Fixes - allow excluding accessor methods ([#​228](https://www.togithub.com/googleapis/nodejs-promisify/issues/228)) ([114d8bc](https://www.github.com/googleapis/nodejs-promisify/commit/114d8bcef7093bdfda195a15e0c2f376195fd3fc)) ##### [2.0.2](https://www.github.com/googleapis/nodejs-promisify/compare/v2.0.1...v2.0.2) (2020-07-06) ##### Bug Fixes - update node issue template ([#​204](https://www.togithub.com/googleapis/nodejs-promisify/issues/204)) ([a2ba8d8](https://www.github.com/googleapis/nodejs-promisify/commit/a2ba8d8e45ef03d093d987292a467696745fc9fd)) ##### [2.0.1](https://www.github.com/googleapis/nodejs-promisify/compare/v2.0.0...v2.0.1) (2020-05-08) ##### Bug Fixes - apache license URL ([#​468](https://www.togithub.com/googleapis/nodejs-promisify/issues/468)) ([#​191](https://www.togithub.com/googleapis/nodejs-promisify/issues/191)) ([0edc724](https://www.github.com/googleapis/nodejs-promisify/commit/0edc7246c53d25d9dd220b813561bcee97250783))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 1a1c71ef422..c30bf2e3eff 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -41,7 +41,7 @@ "precompile": "gts clean" }, "dependencies": { - "@google-cloud/promisify": "^2.0.0", + "@google-cloud/promisify": "^3.0.0", "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", From a8ffdee9a48c4b37e7857a4904645a6d6c60e050 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Tue, 26 Jul 2022 09:52:01 -0400 Subject: [PATCH 681/820] feat: Snapshot reads (#963) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial implementation of read time parameter * linting fix * system test works * Almost there * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Finished unit test for snapshot reads * PR follow-up * PR changes * system test fix * system test fix again Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/src/query.ts | 1 + handwritten/nodejs-datastore/src/request.ts | 17 +++++++- .../nodejs-datastore/system-test/datastore.ts | 36 ++++++++++++++++ handwritten/nodejs-datastore/test/request.ts | 42 +++++++++++++++++++ 4 files changed, 95 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index c062a4c64bb..d4891f58fe3 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -561,6 +561,7 @@ export interface IntegerTypeCastOptions { export interface RunQueryOptions { consistency?: 'strong' | 'eventual'; + readTime?: number; gaxOptions?: CallOptions; wrapNumbers?: boolean | IntegerTypeCastOptions; } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 261abb95b49..e93dd115484 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -54,6 +54,7 @@ import { RunQueryCallback, } from './query'; import {Datastore} from '.'; +import ITimestamp = google.protobuf.ITimestamp; /** * A map of read consistency values to proto codes. @@ -284,6 +285,16 @@ class DatastoreRequest { readConsistency: code, }; } + if (options.readTime) { + if (reqOpts.readOptions === undefined) { + reqOpts.readOptions = {}; + } + const readTime = options.readTime; + const seconds = readTime / 1000; + reqOpts.readOptions.readTime = { + seconds: Math.floor(seconds), + }; + } this.request_( { @@ -1058,7 +1069,11 @@ export interface RequestConfig { export interface RequestOptions { mutations?: google.datastore.v1.IMutation[]; keys?: Entity; - readOptions?: {readConsistency?: number; transaction?: string}; + readOptions?: { + readConsistency?: number; + transaction?: string; + readTime?: ITimestamp; + }; partitionId?: google.datastore.v1.IPartitionId | null; transactionOptions?: { readOnly?: {}; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 3615ce206ba..1a778c02d36 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -308,6 +308,42 @@ describe('Datastore', () => { await datastore.delete(postKey); }); + it('should save/get/delete from a snapshot', async () => { + function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + const post2 = { + title: 'Another way to make pizza', + tags: ['pizza', 'grill'], + publishedAt: new Date(), + author: 'Silvano', + isDraft: false, + wordCount: 400, + rating: 5.0, + likes: null, + metadata: { + views: 100, + }, + }; + const path = ['Post', 'post1']; + const postKey = datastore.key(path); + await datastore.save({key: postKey, data: post}); + await sleep(1000); + const savedTime = Date.now(); + await sleep(1000); + // Save new post2 data, but then verify the timestamp read has post1 data + await datastore.save({key: postKey, data: post2}); + const [entity] = await datastore.get(postKey, {readTime: savedTime}); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + const [entityNoOptions] = await datastore.get(postKey); + assert.deepStrictEqual(entityNoOptions[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + delete entityNoOptions[datastore.KEY]; + assert.deepStrictEqual(entityNoOptions, post2); + await datastore.delete(postKey); + }); + it('should save/get/delete with a numeric key id', async () => { const postKey = datastore.key(['Post', 123456789]); await datastore.save({key: postKey, data: post}); diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts index 15892900172..53296642090 100644 --- a/handwritten/nodejs-datastore/test/request.ts +++ b/handwritten/nodejs-datastore/test/request.ts @@ -34,6 +34,7 @@ import { PrepareEntityObjectResponse, CommitResponse, GetResponse, + RequestCallback, } from '../src/request'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -672,6 +673,47 @@ describe('Request', () => { }); describe('get', () => { + it('should pass along readTime for reading snapshots', done => { + const savedTime = Date.now(); + request.request_ = (config: RequestConfig, callback: RequestCallback) => { + assert.deepStrictEqual(config, { + client: 'DatastoreClient', + method: 'lookup', + gaxOpts: undefined, + reqOpts: { + keys: [ + { + path: [ + { + kind: 'Company', + id: 123, + }, + ], + partitionId: {namespaceId: 'namespace'}, + }, + ], + readOptions: { + readTime: { + seconds: Math.floor(savedTime / 1000), + }, + }, + }, + }); + callback(null, { + deferred: [], + found: [], + missing: [], + readTime: {seconds: Math.floor(savedTime / 1000), nanos: 0}, + }); + }; + request.get(key, {readTime: savedTime}, (err: any) => { + if (err) { + throw err; + } + done(); + }); + }); + describe('success', () => { const keys = [key]; const fakeEntities = [{a: 'a'}, {b: 'b'}]; From 8889f3fc4d9a9a5c2fae8a654f55ce9eac1f5055 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 20:20:21 +0000 Subject: [PATCH 682/820] chore: remove unused proto imports (#965) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 468735472 Source-Link: https://github.com/googleapis/googleapis/commit/cfa1b3782da7ccae31673d45401a0b79d2d4a84b Source-Link: https://github.com/googleapis/googleapis-gen/commit/09b7666656510f5b00b893f003a0ba5766f9e250 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDliNzY2NjY1NjUxMGY1YjAwYjg5M2YwMDNhMGJhNTc2NmY5ZTI1MCJ9 feat: Add "or" query support (only in the preview API surface) docs: Clarify wording around default database_id usage PiperOrigin-RevId: 462444231 Source-Link: https://github.com/googleapis/googleapis/commit/b9cbfce1714be863ce3e405fbc6b409105298206 Source-Link: https://github.com/googleapis/googleapis-gen/commit/934e426ab421006f20454568821b61bb30979b10 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOTM0ZTQyNmFiNDIxMDA2ZjIwNDU0NTY4ODIxYjYxYmIzMDk3OWIxMCJ9 --- .../google/datastore/v1/datastore.proto | 43 ++- .../protos/google/datastore/v1/entity.proto | 4 + .../protos/google/datastore/v1/query.proto | 5 +- .../nodejs-datastore/protos/protos.d.ts | 42 +++ handwritten/nodejs-datastore/protos/protos.js | 157 ++++++++- .../nodejs-datastore/protos/protos.json | 28 ++ .../src/v1/datastore_client.ts | 261 +++++++++++++- .../test/gapic_datastore_v1.ts | 330 +++++++++++++++++- 8 files changed, 861 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 22d930ad0d8..6d243749978 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -116,6 +116,12 @@ message LookupRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // The options for this lookup request. ReadOptions read_options = 1; @@ -149,6 +155,12 @@ message RunQueryRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // Entities are partitioned into subsets, identified by a partition ID. // Queries are scoped to a single partition. // This partition ID is normalized with the standard default context @@ -163,7 +175,7 @@ message RunQueryRequest { // The query to run. Query query = 3; - // The GQL query to run. + // The GQL query to run. This query must be a non-aggregation query. GqlQuery gql_query = 7; } } @@ -182,6 +194,12 @@ message BeginTransactionRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // Options for a new transaction. TransactionOptions transaction_options = 10; } @@ -197,6 +215,12 @@ message RollbackRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // Required. The transaction identifier, returned by a call to // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. bytes transaction = 1 [(google.api.field_behavior) = REQUIRED]; @@ -227,6 +251,12 @@ message CommitRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // The type of commit to perform. Defaults to `TRANSACTIONAL`. Mode mode = 5; @@ -273,6 +303,12 @@ message AllocateIdsRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + // Required. A list of keys with incomplete key paths for which to allocate IDs. // No key may be reserved/read-only. repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED]; @@ -290,7 +326,10 @@ message ReserveIdsRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; - // If not empty, the ID of the database against which to make the request. + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. string database_id = 9; // Required. A list of keys with complete key paths whose numeric IDs should not be diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 55d7b64fe5f..010f1b3af83 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -51,6 +51,10 @@ message PartitionId { // The ID of the project to which the entities belong. string project_id = 2; + // If not empty, the ID of the database to which the entities + // belong. + string database_id = 3; + // If not empty, the ID of the namespace to which the entities belong. string namespace_id = 4; } diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 00c020021fb..5e9dd9158eb 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -184,7 +184,10 @@ message CompositeFilter { Operator op = 1; // The list of filters to combine. - // Must contain at least one filter. + // + // Requires: + // + // * At least one filter is present. repeated Filter filters = 2; } diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 97c79d5baba..c255171f0d1 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -2560,6 +2560,9 @@ export namespace google { /** LookupRequest projectId */ projectId?: (string|null); + /** LookupRequest databaseId */ + databaseId?: (string|null); + /** LookupRequest readOptions */ readOptions?: (google.datastore.v1.IReadOptions|null); @@ -2579,6 +2582,9 @@ export namespace google { /** LookupRequest projectId. */ public projectId: string; + /** LookupRequest databaseId. */ + public databaseId: string; + /** LookupRequest readOptions. */ public readOptions?: (google.datastore.v1.IReadOptions|null); @@ -2770,6 +2776,9 @@ export namespace google { /** RunQueryRequest projectId */ projectId?: (string|null); + /** RunQueryRequest databaseId */ + databaseId?: (string|null); + /** RunQueryRequest partitionId */ partitionId?: (google.datastore.v1.IPartitionId|null); @@ -2795,6 +2804,9 @@ export namespace google { /** RunQueryRequest projectId. */ public projectId: string; + /** RunQueryRequest databaseId. */ + public databaseId: string; + /** RunQueryRequest partitionId. */ public partitionId?: (google.datastore.v1.IPartitionId|null); @@ -2983,6 +2995,9 @@ export namespace google { /** BeginTransactionRequest projectId */ projectId?: (string|null); + /** BeginTransactionRequest databaseId */ + databaseId?: (string|null); + /** BeginTransactionRequest transactionOptions */ transactionOptions?: (google.datastore.v1.ITransactionOptions|null); } @@ -2999,6 +3014,9 @@ export namespace google { /** BeginTransactionRequest projectId. */ public projectId: string; + /** BeginTransactionRequest databaseId. */ + public databaseId: string; + /** BeginTransactionRequest transactionOptions. */ public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); @@ -3169,6 +3187,9 @@ export namespace google { /** RollbackRequest projectId */ projectId?: (string|null); + /** RollbackRequest databaseId */ + databaseId?: (string|null); + /** RollbackRequest transaction */ transaction?: (Uint8Array|string|null); } @@ -3185,6 +3206,9 @@ export namespace google { /** RollbackRequest projectId. */ public projectId: string; + /** RollbackRequest databaseId. */ + public databaseId: string; + /** RollbackRequest transaction. */ public transaction: (Uint8Array|string); @@ -3349,6 +3373,9 @@ export namespace google { /** CommitRequest projectId */ projectId?: (string|null); + /** CommitRequest databaseId */ + databaseId?: (string|null); + /** CommitRequest mode */ mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); @@ -3371,6 +3398,9 @@ export namespace google { /** CommitRequest projectId. */ public projectId: string; + /** CommitRequest databaseId. */ + public databaseId: string; + /** CommitRequest mode. */ public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); @@ -3572,6 +3602,9 @@ export namespace google { /** AllocateIdsRequest projectId */ projectId?: (string|null); + /** AllocateIdsRequest databaseId */ + databaseId?: (string|null); + /** AllocateIdsRequest keys */ keys?: (google.datastore.v1.IKey[]|null); } @@ -3588,6 +3621,9 @@ export namespace google { /** AllocateIdsRequest projectId. */ public projectId: string; + /** AllocateIdsRequest databaseId. */ + public databaseId: string; + /** AllocateIdsRequest keys. */ public keys: google.datastore.v1.IKey[]; @@ -4575,6 +4611,9 @@ export namespace google { /** PartitionId projectId */ projectId?: (string|null); + /** PartitionId databaseId */ + databaseId?: (string|null); + /** PartitionId namespaceId */ namespaceId?: (string|null); } @@ -4591,6 +4630,9 @@ export namespace google { /** PartitionId projectId. */ public projectId: string; + /** PartitionId databaseId. */ + public databaseId: string; + /** PartitionId namespaceId. */ public namespaceId: string; diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 58051ce1956..4e75e7b66c5 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -6162,6 +6162,7 @@ * @memberof google.datastore.v1 * @interface ILookupRequest * @property {string|null} [projectId] LookupRequest projectId + * @property {string|null} [databaseId] LookupRequest databaseId * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions * @property {Array.|null} [keys] LookupRequest keys */ @@ -6190,6 +6191,14 @@ */ LookupRequest.prototype.projectId = ""; + /** + * LookupRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.databaseId = ""; + /** * LookupRequest readOptions. * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions @@ -6237,6 +6246,8 @@ $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -6274,6 +6285,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 1: message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); break; @@ -6320,6 +6334,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.readOptions != null && message.hasOwnProperty("readOptions")) { var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); if (error) @@ -6351,6 +6368,8 @@ var message = new $root.google.datastore.v1.LookupRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.readOptions != null) { if (typeof object.readOptions !== "object") throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); @@ -6387,6 +6406,7 @@ if (options.defaults) { object.readOptions = null; object.projectId = ""; + object.databaseId = ""; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -6397,6 +6417,8 @@ } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; @@ -6744,6 +6766,7 @@ * @memberof google.datastore.v1 * @interface IRunQueryRequest * @property {string|null} [projectId] RunQueryRequest projectId + * @property {string|null} [databaseId] RunQueryRequest databaseId * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query @@ -6773,6 +6796,14 @@ */ RunQueryRequest.prototype.projectId = ""; + /** + * RunQueryRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.databaseId = ""; + /** * RunQueryRequest partitionId. * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId @@ -6853,6 +6884,8 @@ $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -6890,6 +6923,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 2: message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); break; @@ -6941,6 +6977,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.partitionId != null && message.hasOwnProperty("partitionId")) { var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); if (error) @@ -6986,6 +7025,8 @@ var message = new $root.google.datastore.v1.RunQueryRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.partitionId != null) { if (typeof object.partitionId !== "object") throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); @@ -7026,6 +7067,7 @@ object.readOptions = null; object.partitionId = null; object.projectId = ""; + object.databaseId = ""; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -7043,6 +7085,8 @@ } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; @@ -7287,6 +7331,7 @@ * @memberof google.datastore.v1 * @interface IBeginTransactionRequest * @property {string|null} [projectId] BeginTransactionRequest projectId + * @property {string|null} [databaseId] BeginTransactionRequest databaseId * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions */ @@ -7313,6 +7358,14 @@ */ BeginTransactionRequest.prototype.projectId = ""; + /** + * BeginTransactionRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.databaseId = ""; + /** * BeginTransactionRequest transactionOptions. * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions @@ -7347,6 +7400,8 @@ writer = $Writer.create(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; @@ -7386,6 +7441,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 10: message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); break; @@ -7427,6 +7485,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); if (error) @@ -7449,6 +7510,8 @@ var message = new $root.google.datastore.v1.BeginTransactionRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.transactionOptions != null) { if (typeof object.transactionOptions !== "object") throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); @@ -7472,10 +7535,13 @@ var object = {}; if (options.defaults) { object.projectId = ""; + object.databaseId = ""; object.transactionOptions = null; } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); return object; @@ -7698,6 +7764,7 @@ * @memberof google.datastore.v1 * @interface IRollbackRequest * @property {string|null} [projectId] RollbackRequest projectId + * @property {string|null} [databaseId] RollbackRequest databaseId * @property {Uint8Array|null} [transaction] RollbackRequest transaction */ @@ -7724,6 +7791,14 @@ */ RollbackRequest.prototype.projectId = ""; + /** + * RollbackRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.RollbackRequest + * @instance + */ + RollbackRequest.prototype.databaseId = ""; + /** * RollbackRequest transaction. * @member {Uint8Array} transaction @@ -7760,6 +7835,8 @@ writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -7797,6 +7874,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 1: message.transaction = reader.bytes(); break; @@ -7838,6 +7918,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; @@ -7858,6 +7941,8 @@ var message = new $root.google.datastore.v1.RollbackRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.transaction != null) if (typeof object.transaction === "string") $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); @@ -7888,11 +7973,14 @@ object.transaction = $util.newBuffer(object.transaction); } object.projectId = ""; + object.databaseId = ""; } if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; @@ -8077,6 +8165,7 @@ * @memberof google.datastore.v1 * @interface ICommitRequest * @property {string|null} [projectId] CommitRequest projectId + * @property {string|null} [databaseId] CommitRequest databaseId * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode * @property {Uint8Array|null} [transaction] CommitRequest transaction * @property {Array.|null} [mutations] CommitRequest mutations @@ -8106,6 +8195,14 @@ */ CommitRequest.prototype.projectId = ""; + /** + * CommitRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.databaseId = ""; + /** * CommitRequest mode. * @member {google.datastore.v1.CommitRequest.Mode} mode @@ -8177,6 +8274,8 @@ $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -8214,6 +8313,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 5: message.mode = reader.int32(); break; @@ -8264,6 +8366,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.mode != null && message.hasOwnProperty("mode")) switch (message.mode) { default: @@ -8304,6 +8409,8 @@ var message = new $root.google.datastore.v1.CommitRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); switch (object.mode) { case "MODE_UNSPECIFIED": case 0: @@ -8354,6 +8461,7 @@ if (options.defaults) { object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; object.projectId = ""; + object.databaseId = ""; } if (message.transaction != null && message.hasOwnProperty("transaction")) { object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; @@ -8369,6 +8477,8 @@ } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; @@ -8668,6 +8778,7 @@ * @memberof google.datastore.v1 * @interface IAllocateIdsRequest * @property {string|null} [projectId] AllocateIdsRequest projectId + * @property {string|null} [databaseId] AllocateIdsRequest databaseId * @property {Array.|null} [keys] AllocateIdsRequest keys */ @@ -8695,6 +8806,14 @@ */ AllocateIdsRequest.prototype.projectId = ""; + /** + * AllocateIdsRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.databaseId = ""; + /** * AllocateIdsRequest keys. * @member {Array.} keys @@ -8732,6 +8851,8 @@ $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; @@ -8769,6 +8890,9 @@ case 8: message.projectId = reader.string(); break; + case 9: + message.databaseId = reader.string(); + break; case 1: if (!(message.keys && message.keys.length)) message.keys = []; @@ -8812,6 +8936,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.keys != null && message.hasOwnProperty("keys")) { if (!Array.isArray(message.keys)) return "keys: array expected"; @@ -8838,6 +8965,8 @@ var message = new $root.google.datastore.v1.AllocateIdsRequest(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.keys) { if (!Array.isArray(object.keys)) throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); @@ -8866,8 +8995,10 @@ var object = {}; if (options.arrays || options.defaults) object.keys = []; - if (options.defaults) + if (options.defaults) { object.projectId = ""; + object.databaseId = ""; + } if (message.keys && message.keys.length) { object.keys = []; for (var j = 0; j < message.keys.length; ++j) @@ -8875,6 +9006,8 @@ } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; @@ -11130,6 +11263,7 @@ * @memberof google.datastore.v1 * @interface IPartitionId * @property {string|null} [projectId] PartitionId projectId + * @property {string|null} [databaseId] PartitionId databaseId * @property {string|null} [namespaceId] PartitionId namespaceId */ @@ -11156,6 +11290,14 @@ */ PartitionId.prototype.projectId = ""; + /** + * PartitionId databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.PartitionId + * @instance + */ + PartitionId.prototype.databaseId = ""; + /** * PartitionId namespaceId. * @member {string} namespaceId @@ -11190,6 +11332,8 @@ writer = $Writer.create(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.databaseId); if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); return writer; @@ -11229,6 +11373,9 @@ case 2: message.projectId = reader.string(); break; + case 3: + message.databaseId = reader.string(); + break; case 4: message.namespaceId = reader.string(); break; @@ -11270,6 +11417,9 @@ if (message.projectId != null && message.hasOwnProperty("projectId")) if (!$util.isString(message.projectId)) return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) if (!$util.isString(message.namespaceId)) return "namespaceId: string expected"; @@ -11290,6 +11440,8 @@ var message = new $root.google.datastore.v1.PartitionId(); if (object.projectId != null) message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); if (object.namespaceId != null) message.namespaceId = String(object.namespaceId); return message; @@ -11310,10 +11462,13 @@ var object = {}; if (options.defaults) { object.projectId = ""; + object.databaseId = ""; object.namespaceId = ""; } if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) object.namespaceId = message.namespaceId; return object; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index f40ddedcc94..5d2a5a010dd 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -775,6 +775,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "readOptions": { "type": "ReadOptions", "id": 1 @@ -829,6 +833,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "partitionId": { "type": "PartitionId", "id": 2 @@ -868,6 +876,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "transactionOptions": { "type": "TransactionOptions", "id": 10 @@ -891,6 +903,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "transaction": { "type": "bytes", "id": 1, @@ -919,6 +935,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "mode": { "type": "Mode", "id": 5 @@ -969,6 +989,10 @@ "(google.api.field_behavior)": "REQUIRED" } }, + "databaseId": { + "type": "string", + "id": 9 + }, "keys": { "rule": "repeated", "type": "Key", @@ -1156,6 +1180,10 @@ "type": "string", "id": 2 }, + "databaseId": { + "type": "string", + "id": 3 + }, "namespaceId": { "type": "string", "id": 4 diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index d75cf5a155e..d98796061e4 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -18,7 +18,13 @@ /* global window */ import * as gax from 'google-gax'; -import {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; +import { + Callback, + CallOptions, + Descriptors, + ClientOptions, + GrpcClientOptions, +} from 'google-gax'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); @@ -28,7 +34,7 @@ import jsonProtos = require('../../protos/protos.json'); * This file defines retry strategy and timeouts for all API methods in this library. */ import * as gapicConfig from './datastore_client_config.json'; - +import {operationsProtos} from 'google-gax'; const version = require('../../../package.json').version; /** @@ -59,6 +65,7 @@ export class DatastoreClient { }; warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: {[name: string]: Function}; + operationsClient: gax.OperationsClient; datastoreStub?: Promise<{[name: string]: Function}>; /** @@ -155,6 +162,41 @@ export class DatastoreClient { // Load the applicable protos. this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); + const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos); + // This API contains "long-running operations", which return a + // an Operation object that allows for tracking of the operation, + // rather than holding a request open. + const lroOptions: GrpcClientOptions = { + auth: this.auth, + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, + }; + if (opts.fallback === 'rest') { + lroOptions.protoJson = protoFilesRoot; + lroOptions.httpRules = [ + { + selector: 'google.longrunning.Operations.CancelOperation', + post: '/v1/{name=projects/*/operations/*}:cancel', + }, + { + selector: 'google.longrunning.Operations.DeleteOperation', + delete: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.GetOperation', + get: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.ListOperations', + get: '/v1/{name=projects/*}/operations', + }, + ]; + } + this.operationsClient = this._gaxModule + .lro(lroOptions) + .operationsClient(opts); + + this.descriptors.longrunning = {}; + // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( 'google.datastore.v1.Datastore', @@ -304,6 +346,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {google.datastore.v1.ReadOptions} request.readOptions * The options for this lookup request. * @param {number[]} request.keys @@ -391,6 +438,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {google.datastore.v1.PartitionId} request.partitionId * Entities are partitioned into subsets, identified by a partition ID. * Queries are scoped to a single partition. @@ -401,7 +453,7 @@ export class DatastoreClient { * @param {google.datastore.v1.Query} request.query * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery - * The GQL query to run. + * The GQL query to run. This query must be a non-aggregation query. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -485,6 +537,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {google.datastore.v1.TransactionOptions} request.transactionOptions * Options for a new transaction. * @param {object} [options] @@ -573,6 +630,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {google.datastore.v1.CommitRequest.Mode} request.mode * The type of commit to perform. Defaults to `TRANSACTIONAL`. * @param {Buffer} request.transaction @@ -676,6 +738,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {Buffer} request.transaction * Required. The transaction identifier, returned by a call to * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. @@ -763,6 +830,11 @@ export class DatastoreClient { * The request object that will be sent. * @param {string} request.projectId * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {number[]} request.keys * Required. A list of keys with incomplete key paths for which to allocate IDs. * No key may be reserved/read-only. @@ -851,7 +923,10 @@ export class DatastoreClient { * @param {string} request.projectId * Required. The ID of the project against which to make the request. * @param {string} request.databaseId - * If not empty, the ID of the database against which to make the request. + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. * @param {number[]} request.keys * Required. A list of keys with complete key paths whose numeric IDs should not be * auto-allocated. @@ -932,6 +1007,183 @@ export class DatastoreClient { return this.innerApiCalls.reserveIds(request, options, callback); } + /** + * Gets the latest state of a long-running operation. Clients can use this + * method to poll the operation result at intervals as recommended by the API + * service. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error, ?Object)=} callback + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. + * @return {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. The promise has a method named + * "cancel" which cancels the ongoing API call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * const name = ''; + * const [response] = await client.getOperation({name}); + * // doThingsWith(response) + * ``` + */ + getOperation( + request: protos.google.longrunning.GetOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + > + ): Promise<[protos.google.longrunning.Operation]> { + return this.operationsClient.getOperation(request, options, callback); + } + /** + * Lists operations that match the specified filter in the request. If the + * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object. + * + * For-await-of syntax is used with the iterable to recursively get response element on-demand. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation collection. + * @param {string} request.filter - The standard list filter. + * @param {number=} request.pageSize - + * The maximum number of resources contained in the underlying API + * response. If page streaming is performed per-resource, this + * parameter does not affect the return value. If page streaming is + * performed per-page, this determines the maximum number of + * resources in a page. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @returns {Object} + * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * for await (const response of client.listOperationsAsync(request)); + * // doThingsWith(response) + * ``` + */ + listOperationsAsync( + request: protos.google.longrunning.ListOperationsRequest, + options?: gax.CallOptions + ): AsyncIterable { + return this.operationsClient.listOperationsAsync(request, options); + } + /** + * Starts asynchronous cancellation on a long-running operation. The server + * makes a best effort to cancel the operation, but success is not + * guaranteed. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. Clients can use + * {@link Operations.GetOperation} or + * other methods to check whether the cancellation succeeded or whether the + * operation completed despite cancellation. On successful cancellation, + * the operation is not deleted; instead, it becomes an operation with + * an {@link Operation.error} value with a {@link google.rpc.Status.code} of + * 1, corresponding to `Code.CANCELLED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be cancelled. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.cancelOperation({name: ''}); + * ``` + */ + cancelOperation( + request: protos.google.longrunning.CancelOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.CancelOperationRequest, + {} | undefined | null + >, + callback?: Callback< + protos.google.longrunning.CancelOperationRequest, + protos.google.protobuf.Empty, + {} | undefined | null + > + ): Promise { + return this.operationsClient.cancelOperation(request, options, callback); + } + + /** + * Deletes a long-running operation. This method indicates that the client is + * no longer interested in the operation result. It does not cancel the + * operation. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be deleted. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.deleteOperation({name: ''}); + * ``` + */ + deleteOperation( + request: protos.google.longrunning.DeleteOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + > + ): Promise { + return this.operationsClient.deleteOperation(request, options, callback); + } + /** * Terminate the gRPC channel and close the client. * @@ -943,6 +1195,7 @@ export class DatastoreClient { return this.datastoreStub.then(stub => { this._terminated = true; stub.close(); + this.operationsClient.close(); }); } return Promise.resolve(); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 722a27d04e6..15851a1000d 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -23,7 +23,7 @@ import {SinonStub} from 'sinon'; import {describe, it} from 'mocha'; import * as datastoreModule from '../src'; -import {protobuf} from 'google-gax'; +import {protobuf, LROperation, operationsProtos} from 'google-gax'; function generateSampleMessage(instance: T) { const filledObject = ( @@ -49,6 +49,29 @@ function stubSimpleCallWithCallback( : sinon.stub().callsArgWith(2, null, response); } +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({done: true, value: undefined}); + } + return Promise.resolve({done: false, value: responses![counter++]}); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); +} + describe('v1.DatastoreClient', () => { it('has servicePath', () => { const servicePath = datastoreModule.v1.DatastoreClient.servicePath; @@ -1014,4 +1037,309 @@ describe('v1.DatastoreClient', () => { await assert.rejects(client.reserveIds(request), expectedError); }); }); + describe('getOperation', () => { + it('invokes getOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const response = await client.getOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes getOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.getOperation( + request, + undefined, + ( + err?: Error | null, + result?: operationsProtos.google.longrunning.Operation | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + it('invokes getOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.getOperation(request); + }, expectedError); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('cancelOperation', () => { + it('invokes cancelOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = + stubSimpleCall(expectedResponse); + const response = await client.cancelOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes cancelOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.cancelOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); + }); + it('invokes cancelOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.cancelOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.cancelOperation(request); + }, expectedError); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('deleteOperation', () => { + it('invokes deleteOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = + stubSimpleCall(expectedResponse); + const response = await client.deleteOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes deleteOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.deleteOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); + }); + it('invokes deleteOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.deleteOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.deleteOperation(request); + }, expectedError); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('listOperationsAsync', () => { + it('uses async iteration with listOperations without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedResponse = [ + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + ]; + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + const iterable = client.operationsClient.listOperationsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + it('uses async iteration with listOperations with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.operationsClient.listOperationsAsync(request); + await assert.rejects(async () => { + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + }); }); From 08aafed9711631adce88898b4f58434df87e8c37 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 00:04:24 +0000 Subject: [PATCH 683/820] fix: better support for fallback mode (#967) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 468790263 Source-Link: https://github.com/googleapis/googleapis/commit/873ab456273d105245df0fb82a6c17a814553b80 Source-Link: https://github.com/googleapis/googleapis-gen/commit/cb6f37aeff2a3472e40a7bbace8c67d75e24bee5 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2I2ZjM3YWVmZjJhMzQ3MmU0MGE3YmJhY2U4YzY3ZDc1ZTI0YmVlNSJ9 --- .../src/v1/datastore_admin_client.ts | 16 +- .../src/v1/datastore_client.ts | 5 +- .../test/gapic_datastore_admin_v1.ts | 160 +++++++++--------- .../test/gapic_datastore_v1.ts | 158 ++++++++--------- 4 files changed, 172 insertions(+), 167 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 8f52e460ab2..8d6ffa0141f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -30,7 +30,6 @@ import { } from 'google-gax'; import {Transform} from 'stream'; -import {RequestType} from 'google-gax/build/src/apitypes'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); /** @@ -391,7 +390,8 @@ export class DatastoreAdminClient { const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], - descriptor + descriptor, + this._opts.fallback ); this.innerApiCalls[methodName] = apiCall; @@ -703,7 +703,7 @@ export class DatastoreAdminClient { const decodeOperation = new gax.Operation( operation, this.descriptors.longrunning.exportEntities, - gax.createDefaultBackoffSettings() + this._gaxModule.createDefaultBackoffSettings() ); return decodeOperation as LROperation< protos.google.datastore.admin.v1.ExportEntitiesResponse, @@ -865,7 +865,7 @@ export class DatastoreAdminClient { const decodeOperation = new gax.Operation( operation, this.descriptors.longrunning.importEntities, - gax.createDefaultBackoffSettings() + this._gaxModule.createDefaultBackoffSettings() ); return decodeOperation as LROperation< protos.google.protobuf.Empty, @@ -1018,7 +1018,7 @@ export class DatastoreAdminClient { const decodeOperation = new gax.Operation( operation, this.descriptors.longrunning.createIndex, - gax.createDefaultBackoffSettings() + this._gaxModule.createDefaultBackoffSettings() ); return decodeOperation as LROperation< protos.google.datastore.admin.v1.Index, @@ -1167,7 +1167,7 @@ export class DatastoreAdminClient { const decodeOperation = new gax.Operation( operation, this.descriptors.longrunning.deleteIndex, - gax.createDefaultBackoffSettings() + this._gaxModule.createDefaultBackoffSettings() ); return decodeOperation as LROperation< protos.google.datastore.admin.v1.Index, @@ -1311,7 +1311,7 @@ export class DatastoreAdminClient { const callSettings = defaultCallSettings.merge(options); this.initialize(); return this.descriptors.page.listIndexes.createStream( - this.innerApiCalls.listIndexes as gax.GaxCall, + this.innerApiCalls.listIndexes as GaxCall, request, callSettings ); @@ -1361,7 +1361,7 @@ export class DatastoreAdminClient { this.initialize(); return this.descriptors.page.listIndexes.asyncIterate( this.innerApiCalls['listIndexes'] as GaxCall, - request as unknown as RequestType, + request as {}, callSettings ) as AsyncIterable; } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index d98796061e4..b740f230f29 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -34,7 +34,7 @@ import jsonProtos = require('../../protos/protos.json'); * This file defines retry strategy and timeouts for all API methods in this library. */ import * as gapicConfig from './datastore_client_config.json'; -import {operationsProtos} from 'google-gax'; + const version = require('../../../package.json').version; /** @@ -274,7 +274,8 @@ export class DatastoreClient { const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], - descriptor + descriptor, + this._opts.fallback ); this.innerApiCalls[methodName] = apiCall; diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 9e31998c374..0f872163107 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -145,101 +145,103 @@ function stubAsyncIterationCall( } describe('v1.DatastoreAdminClient', () => { - it('has servicePath', () => { - const servicePath = - datastoreadminModule.v1.DatastoreAdminClient.servicePath; - assert(servicePath); - }); - - it('has apiEndpoint', () => { - const apiEndpoint = - datastoreadminModule.v1.DatastoreAdminClient.apiEndpoint; - assert(apiEndpoint); - }); - - it('has port', () => { - const port = datastoreadminModule.v1.DatastoreAdminClient.port; - assert(port); - assert(typeof port === 'number'); - }); - - it('should create a client with no option', () => { - const client = new datastoreadminModule.v1.DatastoreAdminClient(); - assert(client); - }); + describe('Common methods', () => { + it('has servicePath', () => { + const servicePath = + datastoreadminModule.v1.DatastoreAdminClient.servicePath; + assert(servicePath); + }); - it('should create a client with gRPC fallback', () => { - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - fallback: true, + it('has apiEndpoint', () => { + const apiEndpoint = + datastoreadminModule.v1.DatastoreAdminClient.apiEndpoint; + assert(apiEndpoint); }); - assert(client); - }); - it('has initialize method and supports deferred initialization', async () => { - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has port', () => { + const port = datastoreadminModule.v1.DatastoreAdminClient.port; + assert(port); + assert(typeof port === 'number'); }); - assert.strictEqual(client.datastoreAdminStub, undefined); - await client.initialize(); - assert(client.datastoreAdminStub); - }); - it('has close method for the initialized client', done => { - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('should create a client with no option', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + assert(client); }); - client.initialize(); - assert(client.datastoreAdminStub); - client.close().then(() => { - done(); + + it('should create a client with gRPC fallback', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + fallback: true, + }); + assert(client); }); - }); - it('has close method for the non-initialized client', done => { - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has initialize method and supports deferred initialization', async () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreAdminStub, undefined); + await client.initialize(); + assert(client.datastoreAdminStub); }); - assert.strictEqual(client.datastoreAdminStub, undefined); - client.close().then(() => { - done(); + + it('has close method for the initialized client', done => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + assert(client.datastoreAdminStub); + client.close().then(() => { + done(); + }); }); - }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has close method for the non-initialized client', done => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreAdminStub, undefined); + client.close().then(() => { + done(); + }); }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new datastoreadminModule.v1.DatastoreAdminClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); }); - client.auth.getProjectId = sinon - .stub() - .callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error | null, projectId?: string | null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } + + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); }); describe('getIndex', () => { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 15851a1000d..4b66ca3867f 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -23,7 +23,7 @@ import {SinonStub} from 'sinon'; import {describe, it} from 'mocha'; import * as datastoreModule from '../src'; -import {protobuf, LROperation, operationsProtos} from 'google-gax'; +import {protobuf, operationsProtos} from 'google-gax'; function generateSampleMessage(instance: T) { const filledObject = ( @@ -73,99 +73,101 @@ function stubAsyncIterationCall( } describe('v1.DatastoreClient', () => { - it('has servicePath', () => { - const servicePath = datastoreModule.v1.DatastoreClient.servicePath; - assert(servicePath); - }); - - it('has apiEndpoint', () => { - const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; - assert(apiEndpoint); - }); - - it('has port', () => { - const port = datastoreModule.v1.DatastoreClient.port; - assert(port); - assert(typeof port === 'number'); - }); - - it('should create a client with no option', () => { - const client = new datastoreModule.v1.DatastoreClient(); - assert(client); - }); + describe('Common methods', () => { + it('has servicePath', () => { + const servicePath = datastoreModule.v1.DatastoreClient.servicePath; + assert(servicePath); + }); - it('should create a client with gRPC fallback', () => { - const client = new datastoreModule.v1.DatastoreClient({ - fallback: true, + it('has apiEndpoint', () => { + const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; + assert(apiEndpoint); }); - assert(client); - }); - it('has initialize method and supports deferred initialization', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has port', () => { + const port = datastoreModule.v1.DatastoreClient.port; + assert(port); + assert(typeof port === 'number'); }); - assert.strictEqual(client.datastoreStub, undefined); - await client.initialize(); - assert(client.datastoreStub); - }); - it('has close method for the initialized client', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('should create a client with no option', () => { + const client = new datastoreModule.v1.DatastoreClient(); + assert(client); }); - client.initialize(); - assert(client.datastoreStub); - client.close().then(() => { - done(); + + it('should create a client with gRPC fallback', () => { + const client = new datastoreModule.v1.DatastoreClient({ + fallback: true, + }); + assert(client); }); - }); - it('has close method for the non-initialized client', done => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has initialize method and supports deferred initialization', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreStub, undefined); + await client.initialize(); + assert(client.datastoreStub); }); - assert.strictEqual(client.datastoreStub, undefined); - client.close().then(() => { - done(); + + it('has close method for the initialized client', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + assert(client.datastoreStub); + client.close().then(() => { + done(); + }); }); - }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has close method for the non-initialized client', done => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + assert.strictEqual(client.datastoreStub, undefined); + client.close().then(() => { + done(); + }); }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); }); - client.auth.getProjectId = sinon - .stub() - .callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error | null, projectId?: string | null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } + + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); }); describe('lookup', () => { From ebf39883fd0311a5751a49bea63b27879e0b656e Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:00:30 +0000 Subject: [PATCH 684/820] fix: change import long to require (#968) Source-Link: https://github.com/googleapis/synthtool/commit/d229a1258999f599a90a9b674a1c5541e00db588 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:74ab2b3c71ef27e6d8b69b1d0a0c9d31447777b79ac3cd4be82c265b45f37e5e --- .../nodejs-datastore/protos/protos.d.ts | 871 ++- handwritten/nodejs-datastore/protos/protos.js | 4992 ++++++++++++----- .../nodejs-datastore/protos/protos.json | 24 + 3 files changed, 4470 insertions(+), 1417 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index c255171f0d1..8ce5df7c825 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import * as Long from "long"; +import Long = require("long"); import {protobuf as $protobuf} from "google-gax"; /** Namespace google. */ export namespace google { @@ -134,42 +134,42 @@ export namespace google { namespace DatastoreAdmin { /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#exportEntities}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|exportEntities}. * @param error Error, if any * @param [response] Operation */ type ExportEntitiesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#importEntities}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|importEntities}. * @param error Error, if any * @param [response] Operation */ type ImportEntitiesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#createIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|createIndex}. * @param error Error, if any * @param [response] Operation */ type CreateIndexCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#deleteIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|deleteIndex}. * @param error Error, if any * @param [response] Operation */ type DeleteIndexCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|getIndex}. * @param error Error, if any * @param [response] Index */ type GetIndexCallback = (error: (Error|null), response?: google.datastore.admin.v1.Index) => void; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#listIndexes}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|listIndexes}. * @param error Error, if any * @param [response] ListIndexesResponse */ @@ -288,6 +288,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CommonMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace CommonMetadata { @@ -399,6 +406,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Progress + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an ExportEntitiesRequest. */ @@ -507,6 +521,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExportEntitiesRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an ImportEntitiesRequest. */ @@ -615,6 +636,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ImportEntitiesRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an ExportEntitiesResponse. */ @@ -705,6 +733,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExportEntitiesResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an ExportEntitiesMetadata. */ @@ -819,6 +854,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExportEntitiesMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an ImportEntitiesMetadata. */ @@ -933,6 +975,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ImportEntitiesMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an EntityFilter. */ @@ -1029,6 +1078,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EntityFilter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a CreateIndexRequest. */ @@ -1125,6 +1181,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CreateIndexRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a DeleteIndexRequest. */ @@ -1221,6 +1284,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DeleteIndexRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a GetIndexRequest. */ @@ -1317,6 +1387,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GetIndexRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ListIndexesRequest. */ @@ -1425,6 +1502,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ListIndexesRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ListIndexesResponse. */ @@ -1521,6 +1605,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ListIndexesResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an IndexOperationMetadata. */ @@ -1623,6 +1714,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for IndexOperationMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a DatastoreFirestoreMigrationMetadata. */ @@ -1719,6 +1817,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DatastoreFirestoreMigrationMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** OperationType enum. */ @@ -1848,6 +1953,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Index + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace Index { @@ -1960,6 +2072,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for IndexedProperty + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** State enum. */ @@ -2060,6 +2179,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MigrationStateEvent + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a MigrationProgressEvent. */ @@ -2165,6 +2291,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MigrationProgressEvent + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace MigrationProgressEvent { @@ -2265,6 +2398,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PrepareStepDetails + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a RedirectWritesStepDetails. */ @@ -2355,6 +2495,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RedirectWritesStepDetails + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -2505,49 +2652,49 @@ export namespace google { namespace Datastore { /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * Callback as used by {@link google.datastore.v1.Datastore|lookup}. * @param error Error, if any * @param [response] LookupResponse */ type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. * @param error Error, if any * @param [response] RunQueryResponse */ type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. * @param error Error, if any * @param [response] BeginTransactionResponse */ type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * Callback as used by {@link google.datastore.v1.Datastore|commit}. * @param error Error, if any * @param [response] CommitResponse */ type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * Callback as used by {@link google.datastore.v1.Datastore|rollback}. * @param error Error, if any * @param [response] RollbackResponse */ type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. * @param error Error, if any * @param [response] AllocateIdsResponse */ type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. * @param error Error, if any * @param [response] ReserveIdsResponse */ @@ -2660,6 +2807,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for LookupRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a LookupResponse. */ @@ -2768,6 +2922,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for LookupResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a RunQueryRequest. */ @@ -2891,6 +3052,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RunQueryRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a RunQueryResponse. */ @@ -2987,6 +3155,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RunQueryResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a BeginTransactionRequest. */ @@ -3089,6 +3264,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for BeginTransactionRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a BeginTransactionResponse. */ @@ -3179,6 +3361,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for BeginTransactionResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a RollbackRequest. */ @@ -3281,6 +3470,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RollbackRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a RollbackResponse. */ @@ -3365,6 +3561,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RollbackResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a CommitRequest. */ @@ -3482,6 +3685,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CommitRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace CommitRequest { @@ -3594,6 +3804,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CommitResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an AllocateIdsRequest. */ @@ -3696,6 +3913,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for AllocateIdsRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an AllocateIdsResponse. */ @@ -3786,6 +4010,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for AllocateIdsResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ReserveIdsRequest. */ @@ -3888,6 +4119,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReserveIdsRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ReserveIdsResponse. */ @@ -3972,6 +4210,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReserveIdsResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Mutation. */ @@ -4098,6 +4343,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Mutation + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a MutationResult. */ @@ -4206,6 +4458,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MutationResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ReadOptions. */ @@ -4311,6 +4570,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace ReadOptions { @@ -4420,6 +4686,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for TransactionOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace TransactionOptions { @@ -4512,6 +4785,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadWrite + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ReadOnly. */ @@ -4602,6 +4882,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadOnly + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -4705,6 +4992,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PartitionId + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Key. */ @@ -4801,6 +5095,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Key + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace Key { @@ -4908,6 +5209,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PathElement + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -4999,6 +5307,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ArrayValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Value. */ @@ -5164,6 +5479,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an Entity. */ @@ -5260,6 +5582,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Entity + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an EntityResult. */ @@ -5368,6 +5697,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EntityResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace EntityResult { @@ -5517,6 +5853,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Query + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a KindExpression. */ @@ -5607,6 +5950,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for KindExpression + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a PropertyReference. */ @@ -5697,6 +6047,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PropertyReference + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Projection. */ @@ -5787,6 +6144,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Projection + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a PropertyOrder. */ @@ -5883,6 +6247,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PropertyOrder + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace PropertyOrder { @@ -5992,6 +6363,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Filter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a CompositeFilter. */ @@ -6088,6 +6466,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CompositeFilter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace CompositeFilter { @@ -6199,6 +6584,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PropertyFilter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace PropertyFilter { @@ -6324,6 +6716,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GqlQuery + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a GqlQueryParameter. */ @@ -6423,6 +6822,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GqlQueryParameter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a QueryResultBatch. */ @@ -6555,6 +6961,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for QueryResultBatch + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace QueryResultBatch { @@ -6668,6 +7081,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Http + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a HttpRule. */ @@ -6815,6 +7235,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for HttpRule + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a CustomHttpPattern. */ @@ -6911,6 +7338,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CustomHttpPattern + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** FieldBehavior enum. */ @@ -7017,6 +7451,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FileDescriptorSet + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a FileDescriptorProto. */ @@ -7057,6 +7498,9 @@ export namespace google { /** FileDescriptorProto syntax */ syntax?: (string|null); + + /** FileDescriptorProto edition */ + edition?: (string|null); } /** Represents a FileDescriptorProto. */ @@ -7104,6 +7548,9 @@ export namespace google { /** FileDescriptorProto syntax. */ public syntax: string; + /** FileDescriptorProto edition. */ + public edition: string; + /** * Creates a new FileDescriptorProto instance using the specified properties. * @param [properties] Properties to set @@ -7173,6 +7620,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FileDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a DescriptorProto. */ @@ -7317,6 +7771,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace DescriptorProto { @@ -7421,6 +7882,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExtensionRange + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ReservedRange. */ @@ -7517,6 +7985,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReservedRange + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -7608,6 +8083,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExtensionRangeOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a FieldDescriptorProto. */ @@ -7758,6 +8240,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FieldDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace FieldDescriptorProto { @@ -7886,6 +8375,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for OneofDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an EnumDescriptorProto. */ @@ -8000,6 +8496,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EnumDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace EnumDescriptorProto { @@ -8098,6 +8601,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EnumReservedRange + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -8201,6 +8711,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EnumValueDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ServiceDescriptorProto. */ @@ -8303,6 +8820,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ServiceDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a MethodDescriptorProto. */ @@ -8423,6 +8947,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MethodDescriptorProto + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a FileOptions. */ @@ -8633,6 +9164,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FileOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace FileOptions { @@ -8757,6 +9295,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MessageOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a FieldOptions. */ @@ -8774,6 +9319,9 @@ export namespace google { /** FieldOptions lazy */ lazy?: (boolean|null); + /** FieldOptions unverifiedLazy */ + unverifiedLazy?: (boolean|null); + /** FieldOptions deprecated */ deprecated?: (boolean|null); @@ -8808,6 +9356,9 @@ export namespace google { /** FieldOptions lazy. */ public lazy: boolean; + /** FieldOptions unverifiedLazy. */ + public unverifiedLazy: boolean; + /** FieldOptions deprecated. */ public deprecated: boolean; @@ -8886,6 +9437,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FieldOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace FieldOptions { @@ -8993,6 +9551,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for OneofOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an EnumOptions. */ @@ -9095,6 +9660,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EnumOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an EnumValueOptions. */ @@ -9191,6 +9763,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EnumValueOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ServiceOptions. */ @@ -9293,6 +9872,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ServiceOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a MethodOptions. */ @@ -9404,6 +9990,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MethodOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace MethodOptions { @@ -9540,6 +10133,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for UninterpretedOption + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace UninterpretedOption { @@ -9638,6 +10238,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for NamePart + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -9729,6 +10336,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SourceCodeInfo + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace SourceCodeInfo { @@ -9845,6 +10459,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Location + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -9936,6 +10557,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GeneratedCodeInfo + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } namespace GeneratedCodeInfo { @@ -9954,6 +10582,9 @@ export namespace google { /** Annotation end */ end?: (number|null); + + /** Annotation semantic */ + semantic?: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null); } /** Represents an Annotation. */ @@ -9977,6 +10608,9 @@ export namespace google { /** Annotation end. */ public end: number; + /** Annotation semantic. */ + public semantic: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic); + /** * Creates a new Annotation instance using the specified properties. * @param [properties] Properties to set @@ -10046,6 +10680,23 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Annotation + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace Annotation { + + /** Semantic enum. */ + enum Semantic { + NONE = 0, + SET = 1, + ALIAS = 2 + } } } @@ -10143,6 +10794,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Any + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Duration. */ @@ -10239,6 +10897,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Duration + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an Empty. */ @@ -10323,6 +10988,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Empty + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Timestamp. */ @@ -10419,6 +11091,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Timestamp + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Struct. */ @@ -10509,6 +11188,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Struct + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a Value. */ @@ -10632,6 +11318,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** NullValue enum. */ @@ -10727,6 +11420,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ListValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a DoubleValue. */ @@ -10817,6 +11517,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DoubleValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a FloatValue. */ @@ -10907,6 +11614,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FloatValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an Int64Value. */ @@ -10997,6 +11711,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Int64Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a UInt64Value. */ @@ -11087,6 +11808,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for UInt64Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an Int32Value. */ @@ -11177,6 +11905,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Int32Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a UInt32Value. */ @@ -11267,6 +12002,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for UInt32Value + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a BoolValue. */ @@ -11357,6 +12099,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for BoolValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a StringValue. */ @@ -11447,6 +12196,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for StringValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a BytesValue. */ @@ -11537,6 +12293,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for BytesValue + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -11637,35 +12400,35 @@ export namespace google { namespace Operations { /** - * Callback as used by {@link google.longrunning.Operations#listOperations}. + * Callback as used by {@link google.longrunning.Operations|listOperations}. * @param error Error, if any * @param [response] ListOperationsResponse */ type ListOperationsCallback = (error: (Error|null), response?: google.longrunning.ListOperationsResponse) => void; /** - * Callback as used by {@link google.longrunning.Operations#getOperation}. + * Callback as used by {@link google.longrunning.Operations|getOperation}. * @param error Error, if any * @param [response] Operation */ type GetOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void; /** - * Callback as used by {@link google.longrunning.Operations#deleteOperation}. + * Callback as used by {@link google.longrunning.Operations|deleteOperation}. * @param error Error, if any * @param [response] Empty */ type DeleteOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void; /** - * Callback as used by {@link google.longrunning.Operations#cancelOperation}. + * Callback as used by {@link google.longrunning.Operations|cancelOperation}. * @param error Error, if any * @param [response] Empty */ type CancelOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void; /** - * Callback as used by {@link google.longrunning.Operations#waitOperation}. + * Callback as used by {@link google.longrunning.Operations|waitOperation}. * @param error Error, if any * @param [response] Operation */ @@ -11787,6 +12550,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Operation + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a GetOperationRequest. */ @@ -11877,6 +12647,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GetOperationRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ListOperationsRequest. */ @@ -11985,6 +12762,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ListOperationsRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a ListOperationsResponse. */ @@ -12081,6 +12865,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ListOperationsResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a CancelOperationRequest. */ @@ -12171,6 +12962,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CancelOperationRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a DeleteOperationRequest. */ @@ -12261,6 +13059,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DeleteOperationRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of a WaitOperationRequest. */ @@ -12357,6 +13162,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for WaitOperationRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } /** Properties of an OperationInfo. */ @@ -12453,6 +13265,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for OperationInfo + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -12559,6 +13378,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Status + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } @@ -12659,6 +13485,13 @@ export namespace google { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for LatLng + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 4e75e7b66c5..a0d57723d0b 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -99,7 +99,7 @@ }; /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#exportEntities}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|exportEntities}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef ExportEntitiesCallback * @type {function} @@ -132,7 +132,7 @@ */ /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#importEntities}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|importEntities}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef ImportEntitiesCallback * @type {function} @@ -165,7 +165,7 @@ */ /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#createIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|createIndex}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef CreateIndexCallback * @type {function} @@ -198,7 +198,7 @@ */ /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#deleteIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|deleteIndex}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef DeleteIndexCallback * @type {function} @@ -231,7 +231,7 @@ */ /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#getIndex}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|getIndex}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef GetIndexCallback * @type {function} @@ -264,7 +264,7 @@ */ /** - * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin#listIndexes}. + * Callback as used by {@link google.datastore.admin.v1.DatastoreAdmin|listIndexes}. * @memberof google.datastore.admin.v1.DatastoreAdmin * @typedef ListIndexesCallback * @type {function} @@ -437,40 +437,45 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 2: - message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 3: - message.operationType = reader.int32(); - break; - case 4: - if (message.labels === $util.emptyObject) - message.labels = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = ""; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = reader.string(); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 2: { + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 3: { + message.operationType = reader.int32(); + break; + } + case 4: { + if (message.labels === $util.emptyObject) + message.labels = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.labels[key] = value; + break; + } + case 5: { + message.state = reader.int32(); + break; } - message.labels[key] = value; - break; - case 5: - message.state = reader.int32(); - break; default: reader.skipType(tag & 7); break; @@ -689,6 +694,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CommonMetadata + * @function getTypeUrl + * @memberof google.datastore.admin.v1.CommonMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CommonMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.CommonMetadata"; + }; + /** * State enum. * @name google.datastore.admin.v1.CommonMetadata.State @@ -821,12 +841,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.workCompleted = reader.int64(); - break; - case 2: - message.workEstimated = reader.int64(); - break; + case 1: { + message.workCompleted = reader.int64(); + break; + } + case 2: { + message.workEstimated = reader.int64(); + break; + } default: reader.skipType(tag & 7); break; @@ -953,6 +975,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Progress + * @function getTypeUrl + * @memberof google.datastore.admin.v1.Progress + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Progress.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.Progress"; + }; + return Progress; })(); @@ -1083,37 +1120,41 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 2: - if (message.labels === $util.emptyObject) - message.labels = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = ""; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = reader.string(); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 2: { + if (message.labels === $util.emptyObject) + message.labels = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.labels[key] = value; + break; + } + case 3: { + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + } + case 4: { + message.outputUrlPrefix = reader.string(); + break; } - message.labels[key] = value; - break; - case 3: - message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); - break; - case 4: - message.outputUrlPrefix = reader.string(); - break; default: reader.skipType(tag & 7); break; @@ -1248,6 +1289,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ExportEntitiesRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ExportEntitiesRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExportEntitiesRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ExportEntitiesRequest"; + }; + return ExportEntitiesRequest; })(); @@ -1378,37 +1434,41 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 2: - if (message.labels === $util.emptyObject) - message.labels = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = ""; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = reader.string(); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 2: { + if (message.labels === $util.emptyObject) + message.labels = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.labels[key] = value; + break; + } + case 3: { + message.inputUrl = reader.string(); + break; + } + case 4: { + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; } - message.labels[key] = value; - break; - case 3: - message.inputUrl = reader.string(); - break; - case 4: - message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); - break; default: reader.skipType(tag & 7); break; @@ -1543,6 +1603,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ImportEntitiesRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ImportEntitiesRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ImportEntitiesRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ImportEntitiesRequest"; + }; + return ImportEntitiesRequest; })(); @@ -1638,9 +1713,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.outputUrl = reader.string(); - break; + case 1: { + message.outputUrl = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -1730,6 +1806,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ExportEntitiesResponse + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ExportEntitiesResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExportEntitiesResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ExportEntitiesResponse"; + }; + return ExportEntitiesResponse; })(); @@ -1869,21 +1960,26 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); - break; - case 2: - message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); - break; - case 3: - message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); - break; - case 4: - message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); - break; - case 5: - message.outputUrlPrefix = reader.string(); - break; + case 1: { + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + } + case 2: { + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + } + case 3: { + message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + } + case 4: { + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + } + case 5: { + message.outputUrlPrefix = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -2026,6 +2122,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ExportEntitiesMetadata + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ExportEntitiesMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExportEntitiesMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ExportEntitiesMetadata"; + }; + return ExportEntitiesMetadata; })(); @@ -2165,21 +2276,26 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); - break; - case 2: - message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); - break; - case 3: - message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); - break; - case 4: - message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); - break; - case 5: - message.inputUrl = reader.string(); - break; + case 1: { + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + } + case 2: { + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + } + case 3: { + message.progressBytes = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + } + case 4: { + message.entityFilter = $root.google.datastore.admin.v1.EntityFilter.decode(reader, reader.uint32()); + break; + } + case 5: { + message.inputUrl = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -2322,6 +2438,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ImportEntitiesMetadata + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ImportEntitiesMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ImportEntitiesMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ImportEntitiesMetadata"; + }; + return ImportEntitiesMetadata; })(); @@ -2432,16 +2563,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.kinds && message.kinds.length)) - message.kinds = []; - message.kinds.push(reader.string()); - break; - case 2: - if (!(message.namespaceIds && message.namespaceIds.length)) - message.namespaceIds = []; - message.namespaceIds.push(reader.string()); - break; + case 1: { + if (!(message.kinds && message.kinds.length)) + message.kinds = []; + message.kinds.push(reader.string()); + break; + } + case 2: { + if (!(message.namespaceIds && message.namespaceIds.length)) + message.namespaceIds = []; + message.namespaceIds.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -2564,6 +2697,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EntityFilter + * @function getTypeUrl + * @memberof google.datastore.admin.v1.EntityFilter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EntityFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.EntityFilter"; + }; + return EntityFilter; })(); @@ -2670,12 +2818,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 3: - message.index = $root.google.datastore.admin.v1.Index.decode(reader, reader.uint32()); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 3: { + message.index = $root.google.datastore.admin.v1.Index.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -2779,6 +2929,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CreateIndexRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.CreateIndexRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CreateIndexRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.CreateIndexRequest"; + }; + return CreateIndexRequest; })(); @@ -2885,12 +3050,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 3: - message.indexId = reader.string(); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 3: { + message.indexId = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -2989,6 +3156,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for DeleteIndexRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.DeleteIndexRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DeleteIndexRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.DeleteIndexRequest"; + }; + return DeleteIndexRequest; })(); @@ -3095,12 +3277,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 3: - message.indexId = reader.string(); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 3: { + message.indexId = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -3199,6 +3383,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for GetIndexRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.GetIndexRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GetIndexRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.GetIndexRequest"; + }; + return GetIndexRequest; })(); @@ -3327,18 +3526,22 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 3: - message.filter = reader.string(); - break; - case 4: - message.pageSize = reader.int32(); - break; - case 5: - message.pageToken = reader.string(); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 3: { + message.filter = reader.string(); + break; + } + case 4: { + message.pageSize = reader.int32(); + break; + } + case 5: { + message.pageToken = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -3453,6 +3656,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ListIndexesRequest + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ListIndexesRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ListIndexesRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ListIndexesRequest"; + }; + return ListIndexesRequest; })(); @@ -3561,14 +3779,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.indexes && message.indexes.length)) - message.indexes = []; - message.indexes.push($root.google.datastore.admin.v1.Index.decode(reader, reader.uint32())); - break; - case 2: - message.nextPageToken = reader.string(); - break; + case 1: { + if (!(message.indexes && message.indexes.length)) + message.indexes = []; + message.indexes.push($root.google.datastore.admin.v1.Index.decode(reader, reader.uint32())); + break; + } + case 2: { + message.nextPageToken = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -3684,6 +3904,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ListIndexesResponse + * @function getTypeUrl + * @memberof google.datastore.admin.v1.ListIndexesResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ListIndexesResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.ListIndexesResponse"; + }; + return ListIndexesResponse; })(); @@ -3801,15 +4036,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); - break; - case 2: - message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); - break; - case 3: - message.indexId = reader.string(); - break; + case 1: { + message.common = $root.google.datastore.admin.v1.CommonMetadata.decode(reader, reader.uint32()); + break; + } + case 2: { + message.progressEntities = $root.google.datastore.admin.v1.Progress.decode(reader, reader.uint32()); + break; + } + case 3: { + message.indexId = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -3926,6 +4164,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for IndexOperationMetadata + * @function getTypeUrl + * @memberof google.datastore.admin.v1.IndexOperationMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + IndexOperationMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.IndexOperationMetadata"; + }; + return IndexOperationMetadata; })(); @@ -4032,12 +4285,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.migrationState = reader.int32(); - break; - case 2: - message.migrationStep = reader.int32(); - break; + case 1: { + message.migrationState = reader.int32(); + break; + } + case 2: { + message.migrationStep = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -4202,6 +4457,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for DatastoreFirestoreMigrationMetadata + * @function getTypeUrl + * @memberof google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DatastoreFirestoreMigrationMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata"; + }; + return DatastoreFirestoreMigrationMetadata; })(); @@ -4374,26 +4644,32 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.projectId = reader.string(); - break; - case 3: - message.indexId = reader.string(); - break; - case 4: - message.kind = reader.string(); - break; - case 5: - message.ancestor = reader.int32(); - break; - case 6: - if (!(message.properties && message.properties.length)) - message.properties = []; - message.properties.push($root.google.datastore.admin.v1.Index.IndexedProperty.decode(reader, reader.uint32())); - break; - case 7: - message.state = reader.int32(); - break; + case 1: { + message.projectId = reader.string(); + break; + } + case 3: { + message.indexId = reader.string(); + break; + } + case 4: { + message.kind = reader.string(); + break; + } + case 5: { + message.ancestor = reader.int32(); + break; + } + case 6: { + if (!(message.properties && message.properties.length)) + message.properties = []; + message.properties.push($root.google.datastore.admin.v1.Index.IndexedProperty.decode(reader, reader.uint32())); + break; + } + case 7: { + message.state = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -4588,6 +4864,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Index + * @function getTypeUrl + * @memberof google.datastore.admin.v1.Index + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Index.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.Index"; + }; + /** * AncestorMode enum. * @name google.datastore.admin.v1.Index.AncestorMode @@ -4723,12 +5014,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.direction = reader.int32(); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.direction = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -4845,6 +5138,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for IndexedProperty + * @function getTypeUrl + * @memberof google.datastore.admin.v1.Index.IndexedProperty + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + IndexedProperty.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.Index.IndexedProperty"; + }; + return IndexedProperty; })(); @@ -4963,9 +5271,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.state = reader.int32(); - break; + case 1: { + message.state = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -5078,6 +5387,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MigrationStateEvent + * @function getTypeUrl + * @memberof google.datastore.admin.v1.MigrationStateEvent + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MigrationStateEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.MigrationStateEvent"; + }; + return MigrationStateEvent; })(); @@ -5209,15 +5533,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.step = reader.int32(); - break; - case 2: - message.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.decode(reader, reader.uint32()); - break; - case 3: - message.redirectWritesStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.decode(reader, reader.uint32()); - break; + case 1: { + message.step = reader.int32(); + break; + } + case 2: { + message.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.decode(reader, reader.uint32()); + break; + } + case 3: { + message.redirectWritesStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -5389,6 +5716,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MigrationProgressEvent + * @function getTypeUrl + * @memberof google.datastore.admin.v1.MigrationProgressEvent + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MigrationProgressEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.MigrationProgressEvent"; + }; + /** * ConcurrencyMode enum. * @name google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode @@ -5499,9 +5841,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.concurrencyMode = reader.int32(); - break; + case 1: { + message.concurrencyMode = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -5614,6 +5957,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PrepareStepDetails + * @function getTypeUrl + * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PrepareStepDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails"; + }; + return PrepareStepDetails; })(); @@ -5709,9 +6067,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.concurrencyMode = reader.int32(); - break; + case 1: { + message.concurrencyMode = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -5824,6 +6183,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for RedirectWritesStepDetails + * @function getTypeUrl + * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RedirectWritesStepDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails"; + }; + return RedirectWritesStepDetails; })(); @@ -5922,7 +6296,7 @@ }; /** - * Callback as used by {@link google.datastore.v1.Datastore#lookup}. + * Callback as used by {@link google.datastore.v1.Datastore|lookup}. * @memberof google.datastore.v1.Datastore * @typedef LookupCallback * @type {function} @@ -5955,7 +6329,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#runQuery}. + * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. * @memberof google.datastore.v1.Datastore * @typedef RunQueryCallback * @type {function} @@ -5988,7 +6362,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#beginTransaction}. + * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. * @memberof google.datastore.v1.Datastore * @typedef BeginTransactionCallback * @type {function} @@ -6021,7 +6395,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#commit}. + * Callback as used by {@link google.datastore.v1.Datastore|commit}. * @memberof google.datastore.v1.Datastore * @typedef CommitCallback * @type {function} @@ -6054,7 +6428,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#rollback}. + * Callback as used by {@link google.datastore.v1.Datastore|rollback}. * @memberof google.datastore.v1.Datastore * @typedef RollbackCallback * @type {function} @@ -6087,7 +6461,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#allocateIds}. + * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. * @memberof google.datastore.v1.Datastore * @typedef AllocateIdsCallback * @type {function} @@ -6120,7 +6494,7 @@ */ /** - * Callback as used by {@link google.datastore.v1.Datastore#reserveIds}. + * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. * @memberof google.datastore.v1.Datastore * @typedef ReserveIdsCallback * @type {function} @@ -6282,20 +6656,24 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 1: - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); - break; - case 3: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + } + case 3: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -6433,6 +6811,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for LookupRequest + * @function getTypeUrl + * @memberof google.datastore.v1.LookupRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + LookupRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.LookupRequest"; + }; + return LookupRequest; })(); @@ -6567,24 +6960,28 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.found && message.found.length)) - message.found = []; - message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 2: - if (!(message.missing && message.missing.length)) - message.missing = []; - message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.deferred && message.deferred.length)) - message.deferred = []; - message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; - case 7: - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 1: { + if (!(message.found && message.found.length)) + message.found = []; + message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + } + case 2: { + if (!(message.missing && message.missing.length)) + message.missing = []; + message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + } + case 3: { + if (!(message.deferred && message.deferred.length)) + message.deferred = []; + message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } + case 7: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -6756,6 +7153,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for LookupResponse + * @function getTypeUrl + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + LookupResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.LookupResponse"; + }; + return LookupResponse; })(); @@ -6920,24 +7332,30 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 2: - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); - break; - case 1: - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); - break; - case 3: - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); - break; - case 7: - message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 2: { + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + } + case 1: { + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + } + case 3: { + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + } + case 7: { + message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -7101,6 +7519,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for RunQueryRequest + * @function getTypeUrl + * @memberof google.datastore.v1.RunQueryRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RunQueryRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.RunQueryRequest"; + }; + return RunQueryRequest; })(); @@ -7207,14 +7640,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); - break; - case 2: - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); + case 1: { + message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); + break; + } + case 2: { + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); break; } } @@ -7321,6 +7756,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for RunQueryResponse + * @function getTypeUrl + * @memberof google.datastore.v1.RunQueryResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RunQueryResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.RunQueryResponse"; + }; + return RunQueryResponse; })(); @@ -7438,15 +7888,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 10: - message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 10: { + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -7558,6 +8011,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for BeginTransactionRequest + * @function getTypeUrl + * @memberof google.datastore.v1.BeginTransactionRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + BeginTransactionRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.BeginTransactionRequest"; + }; + return BeginTransactionRequest; })(); @@ -7653,9 +8121,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.transaction = reader.bytes(); - break; + case 1: { + message.transaction = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -7712,7 +8181,7 @@ if (object.transaction != null) if (typeof object.transaction === "string") $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) + else if (object.transaction.length >= 0) message.transaction = object.transaction; return message; }; @@ -7754,6 +8223,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for BeginTransactionResponse + * @function getTypeUrl + * @memberof google.datastore.v1.BeginTransactionResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + BeginTransactionResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.BeginTransactionResponse"; + }; + return BeginTransactionResponse; })(); @@ -7871,15 +8355,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 1: - message.transaction = reader.bytes(); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + message.transaction = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -7946,7 +8433,7 @@ if (object.transaction != null) if (typeof object.transaction === "string") $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) + else if (object.transaction.length >= 0) message.transaction = object.transaction; return message; }; @@ -7995,6 +8482,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for RollbackRequest + * @function getTypeUrl + * @memberof google.datastore.v1.RollbackRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RollbackRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.RollbackRequest"; + }; + return RollbackRequest; })(); @@ -8155,6 +8657,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for RollbackResponse + * @function getTypeUrl + * @memberof google.datastore.v1.RollbackResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RollbackResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.RollbackResponse"; + }; + return RollbackResponse; })(); @@ -8310,23 +8827,28 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 5: - message.mode = reader.int32(); - break; - case 1: - message.transaction = reader.bytes(); - break; - case 6: - if (!(message.mutations && message.mutations.length)) - message.mutations = []; - message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 5: { + message.mode = reader.int32(); + break; + } + case 1: { + message.transaction = reader.bytes(); + break; + } + case 6: { + if (!(message.mutations && message.mutations.length)) + message.mutations = []; + message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -8428,7 +8950,7 @@ if (object.transaction != null) if (typeof object.transaction === "string") $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) + else if (object.transaction.length >= 0) message.transaction = object.transaction; if (object.mutations) { if (!Array.isArray(object.mutations)) @@ -8493,6 +9015,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CommitRequest + * @function getTypeUrl + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CommitRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.CommitRequest"; + }; + /** * Mode enum. * @name google.datastore.v1.CommitRequest.Mode @@ -8628,17 +9165,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 3: - if (!(message.mutationResults && message.mutationResults.length)) - message.mutationResults = []; - message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); - break; - case 4: - message.indexUpdates = reader.int32(); - break; - case 8: - message.commitTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 3: { + if (!(message.mutationResults && message.mutationResults.length)) + message.mutationResults = []; + message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); + break; + } + case 4: { + message.indexUpdates = reader.int32(); + break; + } + case 8: { + message.commitTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -8768,6 +9308,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CommitResponse + * @function getTypeUrl + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CommitResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.CommitResponse"; + }; + return CommitResponse; })(); @@ -8887,17 +9442,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -9022,6 +9580,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for AllocateIdsRequest + * @function getTypeUrl + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + AllocateIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AllocateIdsRequest"; + }; + return AllocateIdsRequest; })(); @@ -9119,11 +9692,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -9230,6 +9804,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for AllocateIdsResponse + * @function getTypeUrl + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + AllocateIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AllocateIdsResponse"; + }; + return AllocateIdsResponse; })(); @@ -9349,17 +9938,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: - message.projectId = reader.string(); - break; - case 9: - message.databaseId = reader.string(); - break; - case 1: - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); - break; + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -9484,6 +10076,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReserveIdsRequest + * @function getTypeUrl + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReserveIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReserveIdsRequest"; + }; + return ReserveIdsRequest; })(); @@ -9644,6 +10251,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReserveIdsResponse + * @function getTypeUrl + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReserveIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReserveIdsResponse"; + }; + return ReserveIdsResponse; })(); @@ -9819,24 +10441,30 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 4: - message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 5: - message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 6: - message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 7: - message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 8: - message.baseVersion = reader.int64(); - break; - case 11: - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 4: { + message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 5: { + message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 6: { + message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 7: { + message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 8: { + message.baseVersion = reader.int64(); + break; + } + case 11: { + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -10038,6 +10666,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Mutation + * @function getTypeUrl + * @memberof google.datastore.v1.Mutation + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Mutation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Mutation"; + }; + return Mutation; })(); @@ -10166,18 +10809,22 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 3: - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 4: - message.version = reader.int64(); - break; - case 6: - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 5: - message.conflictDetected = reader.bool(); - break; + case 3: { + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 4: { + message.version = reader.int64(); + break; + } + case 6: { + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 5: { + message.conflictDetected = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -10316,6 +10963,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MutationResult + * @function getTypeUrl + * @memberof google.datastore.v1.MutationResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutationResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.MutationResult"; + }; + return MutationResult; })(); @@ -10447,15 +11109,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.readConsistency = reader.int32(); - break; - case 2: - message.transaction = reader.bytes(); - break; - case 4: - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 1: { + message.readConsistency = reader.int32(); + break; + } + case 2: { + message.transaction = reader.bytes(); + break; + } + case 4: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -10552,7 +11217,7 @@ if (object.transaction != null) if (typeof object.transaction === "string") $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length) + else if (object.transaction.length >= 0) message.transaction = object.transaction; if (object.readTime != null) { if (typeof object.readTime !== "object") @@ -10604,6 +11269,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReadOptions + * @function getTypeUrl + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReadOptions"; + }; + /** * ReadConsistency enum. * @name google.datastore.v1.ReadOptions.ReadConsistency @@ -10740,12 +11420,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); - break; - case 2: - message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); - break; + case 1: { + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + break; + } + case 2: { + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -10865,6 +11547,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for TransactionOptions + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TransactionOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions"; + }; + TransactionOptions.ReadWrite = (function() { /** @@ -10957,9 +11654,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.previousTransaction = reader.bytes(); - break; + case 1: { + message.previousTransaction = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -11016,7 +11714,7 @@ if (object.previousTransaction != null) if (typeof object.previousTransaction === "string") $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); - else if (object.previousTransaction.length) + else if (object.previousTransaction.length >= 0) message.previousTransaction = object.previousTransaction; return message; }; @@ -11058,6 +11756,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReadWrite + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadWrite.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadWrite"; + }; + return ReadWrite; })(); @@ -11153,9 +11866,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 1: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -11250,6 +11964,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReadOnly + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadOnly.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadOnly"; + }; + return ReadOnly; })(); @@ -11370,15 +12099,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.projectId = reader.string(); - break; - case 3: - message.databaseId = reader.string(); - break; - case 4: - message.namespaceId = reader.string(); - break; + case 2: { + message.projectId = reader.string(); + break; + } + case 3: { + message.databaseId = reader.string(); + break; + } + case 4: { + message.namespaceId = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -11485,6 +12217,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PartitionId + * @function getTypeUrl + * @memberof google.datastore.v1.PartitionId + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PartitionId.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PartitionId"; + }; + return PartitionId; })(); @@ -11593,14 +12340,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); - break; - case 2: - if (!(message.path && message.path.length)) - message.path = []; - message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); - break; + case 1: { + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + } + case 2: { + if (!(message.path && message.path.length)) + message.path = []; + message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -11721,6 +12470,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Key + * @function getTypeUrl + * @memberof google.datastore.v1.Key + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Key.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Key"; + }; + Key.PathElement = (function() { /** @@ -11849,15 +12613,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.kind = reader.string(); - break; - case 2: - message.id = reader.int64(); - break; - case 3: - message.name = reader.string(); - break; + case 1: { + message.kind = reader.string(); + break; + } + case 2: { + message.id = reader.int64(); + break; + } + case 3: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -11984,6 +12751,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PathElement + * @function getTypeUrl + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PathElement.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Key.PathElement"; + }; + return PathElement; })(); @@ -12084,11 +12866,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.values && message.values.length)) - message.values = []; - message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -12195,6 +12978,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ArrayValue + * @function getTypeUrl + * @memberof google.datastore.v1.ArrayValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ArrayValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ArrayValue"; + }; + return ArrayValue; })(); @@ -12436,45 +13234,58 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 11: - message.nullValue = reader.int32(); - break; - case 1: - message.booleanValue = reader.bool(); - break; - case 2: - message.integerValue = reader.int64(); - break; - case 3: - message.doubleValue = reader.double(); - break; - case 10: - message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 5: - message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 17: - message.stringValue = reader.string(); - break; - case 18: - message.blobValue = reader.bytes(); - break; - case 8: - message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); - break; - case 6: - message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 9: - message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); - break; - case 14: - message.meaning = reader.int32(); - break; - case 19: - message.excludeFromIndexes = reader.bool(); - break; + case 11: { + message.nullValue = reader.int32(); + break; + } + case 1: { + message.booleanValue = reader.bool(); + break; + } + case 2: { + message.integerValue = reader.int64(); + break; + } + case 3: { + message.doubleValue = reader.double(); + break; + } + case 10: { + message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 5: { + message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 17: { + message.stringValue = reader.string(); + break; + } + case 18: { + message.blobValue = reader.bytes(); + break; + } + case 8: { + message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); + break; + } + case 6: { + message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 9: { + message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); + break; + } + case 14: { + message.meaning = reader.int32(); + break; + } + case 19: { + message.excludeFromIndexes = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -12660,7 +13471,7 @@ if (object.blobValue != null) if (typeof object.blobValue === "string") $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); - else if (object.blobValue.length) + else if (object.blobValue.length >= 0) message.blobValue = object.blobValue; if (object.geoPointValue != null) { if (typeof object.geoPointValue !== "object") @@ -12777,6 +13588,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Value + * @function getTypeUrl + * @memberof google.datastore.v1.Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Value"; + }; + return Value; })(); @@ -12887,31 +13713,33 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - case 3: - if (message.properties === $util.emptyObject) - message.properties = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = null; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 3: { + if (message.properties === $util.emptyObject) + message.properties = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.properties[key] = value; + break; } - message.properties[key] = value; - break; default: reader.skipType(tag & 7); break; @@ -13034,6 +13862,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Entity + * @function getTypeUrl + * @memberof google.datastore.v1.Entity + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Entity.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Entity"; + }; + return Entity; })(); @@ -13162,18 +14005,22 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - case 4: - message.version = reader.int64(); - break; - case 5: - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - case 3: - message.cursor = reader.bytes(); - break; + case 1: { + message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 4: { + message.version = reader.int64(); + break; + } + case 5: { + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 3: { + message.cursor = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -13262,7 +14109,7 @@ if (object.cursor != null) if (typeof object.cursor === "string") $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length) + else if (object.cursor.length >= 0) message.cursor = object.cursor; return message; }; @@ -13321,6 +14168,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EntityResult + * @function getTypeUrl + * @memberof google.datastore.v1.EntityResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EntityResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.EntityResult"; + }; + /** * ResultType enum. * @name google.datastore.v1.EntityResult.ResultType @@ -13530,41 +14392,50 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - if (!(message.projection && message.projection.length)) - message.projection = []; - message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.kind && message.kind.length)) - message.kind = []; - message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); - break; - case 4: - message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); - break; - case 5: - if (!(message.order && message.order.length)) - message.order = []; - message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.distinctOn && message.distinctOn.length)) - message.distinctOn = []; - message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); - break; - case 7: - message.startCursor = reader.bytes(); - break; - case 8: - message.endCursor = reader.bytes(); - break; - case 10: - message.offset = reader.int32(); - break; - case 12: - message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); - break; + case 2: { + if (!(message.projection && message.projection.length)) + message.projection = []; + message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); + break; + } + case 3: { + if (!(message.kind && message.kind.length)) + message.kind = []; + message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); + break; + } + case 4: { + message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); + break; + } + case 5: { + if (!(message.order && message.order.length)) + message.order = []; + message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); + break; + } + case 6: { + if (!(message.distinctOn && message.distinctOn.length)) + message.distinctOn = []; + message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); + break; + } + case 7: { + message.startCursor = reader.bytes(); + break; + } + case 8: { + message.endCursor = reader.bytes(); + break; + } + case 10: { + message.offset = reader.int32(); + break; + } + case 12: { + message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -13718,12 +14589,12 @@ if (object.startCursor != null) if (typeof object.startCursor === "string") $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); - else if (object.startCursor.length) + else if (object.startCursor.length >= 0) message.startCursor = object.startCursor; if (object.endCursor != null) if (typeof object.endCursor === "string") $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length) + else if (object.endCursor.length >= 0) message.endCursor = object.endCursor; if (object.offset != null) message.offset = object.offset | 0; @@ -13817,6 +14688,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Query + * @function getTypeUrl + * @memberof google.datastore.v1.Query + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Query.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Query"; + }; + return Query; })(); @@ -13912,9 +14798,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; + case 1: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -14004,6 +14891,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for KindExpression + * @function getTypeUrl + * @memberof google.datastore.v1.KindExpression + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + KindExpression.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.KindExpression"; + }; + return KindExpression; })(); @@ -14099,9 +15001,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.name = reader.string(); - break; + case 2: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -14191,6 +15094,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PropertyReference + * @function getTypeUrl + * @memberof google.datastore.v1.PropertyReference + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PropertyReference.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PropertyReference"; + }; + return PropertyReference; })(); @@ -14286,9 +15204,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); - break; + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -14383,6 +15302,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Projection + * @function getTypeUrl + * @memberof google.datastore.v1.Projection + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Projection.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Projection"; + }; + return Projection; })(); @@ -14489,12 +15423,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); - break; - case 2: - message.direction = reader.int32(); - break; + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } + case 2: { + message.direction = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -14616,6 +15552,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PropertyOrder + * @function getTypeUrl + * @memberof google.datastore.v1.PropertyOrder + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PropertyOrder.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PropertyOrder"; + }; + /** * Direction enum. * @name google.datastore.v1.PropertyOrder.Direction @@ -14752,12 +15703,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); - break; - case 2: - message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); - break; + case 1: { + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); + break; + } + case 2: { + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -14877,6 +15830,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Filter + * @function getTypeUrl + * @memberof google.datastore.v1.Filter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Filter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Filter"; + }; + return Filter; })(); @@ -14985,14 +15953,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.op = reader.int32(); - break; - case 2: - if (!(message.filters && message.filters.length)) - message.filters = []; - message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); - break; + case 1: { + message.op = reader.int32(); + break; + } + case 2: { + if (!(message.filters && message.filters.length)) + message.filters = []; + message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -15121,6 +16091,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CompositeFilter + * @function getTypeUrl + * @memberof google.datastore.v1.CompositeFilter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CompositeFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.CompositeFilter"; + }; + /** * Operator enum. * @name google.datastore.v1.CompositeFilter.Operator @@ -15252,15 +16237,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); - break; - case 2: - message.op = reader.int32(); - break; - case 3: - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); - break; + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } + case 2: { + message.op = reader.int32(); + break; + } + case 3: { + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15430,6 +16418,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for PropertyFilter + * @function getTypeUrl + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PropertyFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PropertyFilter"; + }; + /** * Operator enum. * @name google.datastore.v1.PropertyFilter.Operator @@ -15594,39 +16597,43 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.queryString = reader.string(); - break; - case 2: - message.allowLiterals = reader.bool(); - break; - case 5: - if (message.namedBindings === $util.emptyObject) - message.namedBindings = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = null; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + message.queryString = reader.string(); + break; + } + case 2: { + message.allowLiterals = reader.bool(); + break; + } + case 5: { + if (message.namedBindings === $util.emptyObject) + message.namedBindings = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.namedBindings[key] = value; + break; + } + case 4: { + if (!(message.positionalBindings && message.positionalBindings.length)) + message.positionalBindings = []; + message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); + break; } - message.namedBindings[key] = value; - break; - case 4: - if (!(message.positionalBindings && message.positionalBindings.length)) - message.positionalBindings = []; - message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); - break; default: reader.skipType(tag & 7); break; @@ -15779,6 +16786,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for GqlQuery + * @function getTypeUrl + * @memberof google.datastore.v1.GqlQuery + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GqlQuery.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.GqlQuery"; + }; + return GqlQuery; })(); @@ -15899,12 +16921,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); - break; - case 3: - message.cursor = reader.bytes(); - break; + case 2: { + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + case 3: { + message.cursor = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -15979,7 +17003,7 @@ if (object.cursor != null) if (typeof object.cursor === "string") $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length) + else if (object.cursor.length >= 0) message.cursor = object.cursor; return message; }; @@ -16021,6 +17045,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for GqlQueryParameter + * @function getTypeUrl + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GqlQueryParameter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.GqlQueryParameter"; + }; + return GqlQueryParameter; })(); @@ -16195,32 +17234,40 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 6: - message.skippedResults = reader.int32(); - break; - case 3: - message.skippedCursor = reader.bytes(); - break; - case 1: - message.entityResultType = reader.int32(); - break; - case 2: - if (!(message.entityResults && message.entityResults.length)) - message.entityResults = []; - message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - case 4: - message.endCursor = reader.bytes(); - break; - case 5: - message.moreResults = reader.int32(); - break; - case 7: - message.snapshotVersion = reader.int64(); - break; - case 8: - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; + case 6: { + message.skippedResults = reader.int32(); + break; + } + case 3: { + message.skippedCursor = reader.bytes(); + break; + } + case 1: { + message.entityResultType = reader.int32(); + break; + } + case 2: { + if (!(message.entityResults && message.entityResults.length)) + message.entityResults = []; + message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + break; + } + case 4: { + message.endCursor = reader.bytes(); + break; + } + case 5: { + message.moreResults = reader.int32(); + break; + } + case 7: { + message.snapshotVersion = reader.int64(); + break; + } + case 8: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -16323,7 +17370,7 @@ if (object.skippedCursor != null) if (typeof object.skippedCursor === "string") $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); - else if (object.skippedCursor.length) + else if (object.skippedCursor.length >= 0) message.skippedCursor = object.skippedCursor; switch (object.entityResultType) { case "RESULT_TYPE_UNSPECIFIED": @@ -16356,7 +17403,7 @@ if (object.endCursor != null) if (typeof object.endCursor === "string") $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length) + else if (object.endCursor.length >= 0) message.endCursor = object.endCursor; switch (object.moreResults) { case "MORE_RESULTS_TYPE_UNSPECIFIED": @@ -16473,6 +17520,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for QueryResultBatch + * @function getTypeUrl + * @memberof google.datastore.v1.QueryResultBatch + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + QueryResultBatch.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.QueryResultBatch"; + }; + /** * MoreResultsType enum. * @name google.datastore.v1.QueryResultBatch.MoreResultsType @@ -16616,14 +17678,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.rules && message.rules.length)) - message.rules = []; - message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); - break; - case 2: - message.fullyDecodeReservedExpansion = reader.bool(); - break; + case 1: { + if (!(message.rules && message.rules.length)) + message.rules = []; + message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + break; + } + case 2: { + message.fullyDecodeReservedExpansion = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -16739,6 +17803,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Http + * @function getTypeUrl + * @memberof google.api.Http + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Http.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.Http"; + }; + return Http; })(); @@ -16949,38 +18028,48 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.selector = reader.string(); - break; - case 2: - message.get = reader.string(); - break; - case 3: - message.put = reader.string(); - break; - case 4: - message.post = reader.string(); - break; - case 5: - message["delete"] = reader.string(); - break; - case 6: - message.patch = reader.string(); - break; - case 8: - message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); - break; - case 7: - message.body = reader.string(); - break; - case 12: - message.responseBody = reader.string(); - break; - case 11: - if (!(message.additionalBindings && message.additionalBindings.length)) - message.additionalBindings = []; - message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); - break; + case 1: { + message.selector = reader.string(); + break; + } + case 2: { + message.get = reader.string(); + break; + } + case 3: { + message.put = reader.string(); + break; + } + case 4: { + message.post = reader.string(); + break; + } + case 5: { + message["delete"] = reader.string(); + break; + } + case 6: { + message.patch = reader.string(); + break; + } + case 8: { + message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); + break; + } + case 7: { + message.body = reader.string(); + break; + } + case 12: { + message.responseBody = reader.string(); + break; + } + case 11: { + if (!(message.additionalBindings && message.additionalBindings.length)) + message.additionalBindings = []; + message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -17202,6 +18291,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for HttpRule + * @function getTypeUrl + * @memberof google.api.HttpRule + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + HttpRule.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.HttpRule"; + }; + return HttpRule; })(); @@ -17308,12 +18412,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.kind = reader.string(); - break; - case 2: - message.path = reader.string(); - break; + case 1: { + message.kind = reader.string(); + break; + } + case 2: { + message.path = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -17412,6 +18518,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CustomHttpPattern + * @function getTypeUrl + * @memberof google.api.CustomHttpPattern + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CustomHttpPattern.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.CustomHttpPattern"; + }; + return CustomHttpPattern; })(); @@ -17547,11 +18668,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.file && message.file.length)) - message.file = []; - message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.file && message.file.length)) + message.file = []; + message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -17658,6 +18780,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FileDescriptorSet + * @function getTypeUrl + * @memberof google.protobuf.FileDescriptorSet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FileDescriptorSet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FileDescriptorSet"; + }; + return FileDescriptorSet; })(); @@ -17679,6 +18816,7 @@ * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo * @property {string|null} [syntax] FileDescriptorProto syntax + * @property {string|null} [edition] FileDescriptorProto edition */ /** @@ -17799,6 +18937,14 @@ */ FileDescriptorProto.prototype.syntax = ""; + /** + * FileDescriptorProto edition. + * @member {string} edition + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.edition = ""; + /** * Creates a new FileDescriptorProto instance using the specified properties. * @function create @@ -17854,6 +19000,8 @@ writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) + writer.uint32(/* id 13, wireType 2 =*/106).string(message.edition); return writer; }; @@ -17888,66 +19036,82 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message["package"] = reader.string(); - break; - case 3: - if (!(message.dependency && message.dependency.length)) - message.dependency = []; - message.dependency.push(reader.string()); - break; - case 10: - if (!(message.publicDependency && message.publicDependency.length)) - message.publicDependency = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message["package"] = reader.string(); + break; + } + case 3: { + if (!(message.dependency && message.dependency.length)) + message.dependency = []; + message.dependency.push(reader.string()); + break; + } + case 10: { + if (!(message.publicDependency && message.publicDependency.length)) + message.publicDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.publicDependency.push(reader.int32()); + } else message.publicDependency.push(reader.int32()); - } else - message.publicDependency.push(reader.int32()); - break; - case 11: - if (!(message.weakDependency && message.weakDependency.length)) - message.weakDependency = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + break; + } + case 11: { + if (!(message.weakDependency && message.weakDependency.length)) + message.weakDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.weakDependency.push(reader.int32()); + } else message.weakDependency.push(reader.int32()); - } else - message.weakDependency.push(reader.int32()); - break; - case 4: - if (!(message.messageType && message.messageType.length)) - message.messageType = []; - message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.enumType && message.enumType.length)) - message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.service && message.service.length)) - message.service = []; - message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); - break; - case 7: - if (!(message.extension && message.extension.length)) - message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 8: - message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); - break; - case 9: - message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); - break; - case 12: - message.syntax = reader.string(); - break; + break; + } + case 4: { + if (!(message.messageType && message.messageType.length)) + message.messageType = []; + message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + } + case 5: { + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 6: { + if (!(message.service && message.service.length)) + message.service = []; + message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 7: { + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 8: { + message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); + break; + } + case 9: { + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); + break; + } + case 12: { + message.syntax = reader.string(); + break; + } + case 13: { + message.edition = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -18059,6 +19223,9 @@ if (message.syntax != null && message.hasOwnProperty("syntax")) if (!$util.isString(message.syntax)) return "syntax: string expected"; + if (message.edition != null && message.hasOwnProperty("edition")) + if (!$util.isString(message.edition)) + return "edition: string expected"; return null; }; @@ -18151,6 +19318,8 @@ } if (object.syntax != null) message.syntax = String(object.syntax); + if (object.edition != null) + message.edition = String(object.edition); return message; }; @@ -18182,6 +19351,7 @@ object.options = null; object.sourceCodeInfo = null; object.syntax = ""; + object.edition = ""; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -18228,6 +19398,8 @@ } if (message.syntax != null && message.hasOwnProperty("syntax")) object.syntax = message.syntax; + if (message.edition != null && message.hasOwnProperty("edition")) + object.edition = message.edition; return object; }; @@ -18242,6 +19414,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FileDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.FileDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FileDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FileDescriptorProto"; + }; + return FileDescriptorProto; })(); @@ -18452,52 +19639,62 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - if (!(message.field && message.field.length)) - message.field = []; - message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 6: - if (!(message.extension && message.extension.length)) - message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); - break; - case 3: - if (!(message.nestedType && message.nestedType.length)) - message.nestedType = []; - message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); - break; - case 4: - if (!(message.enumType && message.enumType.length)) - message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.extensionRange && message.extensionRange.length)) - message.extensionRange = []; - message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); - break; - case 8: - if (!(message.oneofDecl && message.oneofDecl.length)) - message.oneofDecl = []; - message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); - break; - case 7: - message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); - break; - case 9: - if (!(message.reservedRange && message.reservedRange.length)) - message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); - break; - case 10: - if (!(message.reservedName && message.reservedName.length)) - message.reservedName = []; - message.reservedName.push(reader.string()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + if (!(message.field && message.field.length)) + message.field = []; + message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 6: { + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 3: { + if (!(message.nestedType && message.nestedType.length)) + message.nestedType = []; + message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + } + case 4: { + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 5: { + if (!(message.extensionRange && message.extensionRange.length)) + message.extensionRange = []; + message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); + break; + } + case 8: { + if (!(message.oneofDecl && message.oneofDecl.length)) + message.oneofDecl = []; + message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 7: { + message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); + break; + } + case 9: { + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); + break; + } + case 10: { + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -18798,6 +19995,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for DescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.DescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.DescriptorProto"; + }; + DescriptorProto.ExtensionRange = (function() { /** @@ -18911,16 +20123,19 @@ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); while (reader.pos < end) { var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.start = reader.int32(); - break; - case 2: - message.end = reader.int32(); - break; - case 3: - message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); - break; + switch (tag >>> 3) { + case 1: { + message.start = reader.int32(); + break; + } + case 2: { + message.end = reader.int32(); + break; + } + case 3: { + message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -19032,6 +20247,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ExtensionRange + * @function getTypeUrl + * @memberof google.protobuf.DescriptorProto.ExtensionRange + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExtensionRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.DescriptorProto.ExtensionRange"; + }; + return ExtensionRange; })(); @@ -19138,12 +20368,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.start = reader.int32(); - break; - case 2: - message.end = reader.int32(); - break; + case 1: { + message.start = reader.int32(); + break; + } + case 2: { + message.end = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -19242,6 +20474,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ReservedRange + * @function getTypeUrl + * @memberof google.protobuf.DescriptorProto.ReservedRange + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReservedRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.DescriptorProto.ReservedRange"; + }; + return ReservedRange; })(); @@ -19342,11 +20589,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -19453,6 +20701,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ExtensionRangeOptions + * @function getTypeUrl + * @memberof google.protobuf.ExtensionRangeOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExtensionRangeOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.ExtensionRangeOptions"; + }; + return ExtensionRangeOptions; })(); @@ -19658,39 +20921,50 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 3: - message.number = reader.int32(); - break; - case 4: - message.label = reader.int32(); - break; - case 5: - message.type = reader.int32(); - break; - case 6: - message.typeName = reader.string(); - break; - case 2: - message.extendee = reader.string(); - break; - case 7: - message.defaultValue = reader.string(); - break; - case 9: - message.oneofIndex = reader.int32(); - break; - case 10: - message.jsonName = reader.string(); - break; - case 8: - message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); - break; - case 17: - message.proto3Optional = reader.bool(); - break; + case 1: { + message.name = reader.string(); + break; + } + case 3: { + message.number = reader.int32(); + break; + } + case 4: { + message.label = reader.int32(); + break; + } + case 5: { + message.type = reader.int32(); + break; + } + case 6: { + message.typeName = reader.string(); + break; + } + case 2: { + message.extendee = reader.string(); + break; + } + case 7: { + message.defaultValue = reader.string(); + break; + } + case 9: { + message.oneofIndex = reader.int32(); + break; + } + case 10: { + message.jsonName = reader.string(); + break; + } + case 8: { + message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); + break; + } + case 17: { + message.proto3Optional = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -19977,6 +21251,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FieldDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.FieldDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FieldDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FieldDescriptorProto"; + }; + /** * Type enum. * @name google.protobuf.FieldDescriptorProto.Type @@ -20145,12 +21434,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -20254,6 +21545,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for OneofDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.OneofDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + OneofDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.OneofDescriptorProto"; + }; + return OneofDescriptorProto; })(); @@ -20399,27 +21705,32 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - if (!(message.value && message.value.length)) - message.value = []; - message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); - break; - case 3: - message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.reservedRange && message.reservedRange.length)) - message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); - break; - case 5: - if (!(message.reservedName && message.reservedName.length)) - message.reservedName = []; - message.reservedName.push(reader.string()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + if (!(message.value && message.value.length)) + message.value = []; + message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 3: { + message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); + break; + } + case 4: { + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); + break; + } + case 5: { + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -20595,6 +21906,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EnumDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.EnumDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EnumDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.EnumDescriptorProto"; + }; + EnumDescriptorProto.EnumReservedRange = (function() { /** @@ -20698,12 +22024,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.start = reader.int32(); - break; - case 2: - message.end = reader.int32(); - break; + case 1: { + message.start = reader.int32(); + break; + } + case 2: { + message.end = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -20802,6 +22130,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EnumReservedRange + * @function getTypeUrl + * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EnumReservedRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.EnumDescriptorProto.EnumReservedRange"; + }; + return EnumReservedRange; })(); @@ -20922,15 +22265,18 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.number = reader.int32(); - break; - case 3: - message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.number = reader.int32(); + break; + } + case 3: { + message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -21042,6 +22388,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EnumValueDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.EnumValueDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EnumValueDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.EnumValueDescriptorProto"; + }; + return EnumValueDescriptorProto; })(); @@ -21161,17 +22522,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - if (!(message.method && message.method.length)) - message.method = []; - message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); - break; - case 3: - message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + if (!(message.method && message.method.length)) + message.method = []; + message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); + break; + } + case 3: { + message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -21301,6 +22665,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ServiceDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.ServiceDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ServiceDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.ServiceDescriptorProto"; + }; + return ServiceDescriptorProto; })(); @@ -21451,24 +22830,30 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.inputType = reader.string(); - break; - case 3: - message.outputType = reader.string(); - break; - case 4: - message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); - break; - case 5: - message.clientStreaming = reader.bool(); - break; - case 6: - message.serverStreaming = reader.bool(); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.inputType = reader.string(); + break; + } + case 3: { + message.outputType = reader.string(); + break; + } + case 4: { + message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); + break; + } + case 5: { + message.clientStreaming = reader.bool(); + break; + } + case 6: { + message.serverStreaming = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -21604,6 +22989,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MethodDescriptorProto + * @function getTypeUrl + * @memberof google.protobuf.MethodDescriptorProto + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MethodDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.MethodDescriptorProto"; + }; + return MethodDescriptorProto; })(); @@ -21921,71 +23321,92 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.javaPackage = reader.string(); - break; - case 8: - message.javaOuterClassname = reader.string(); - break; - case 10: - message.javaMultipleFiles = reader.bool(); - break; - case 20: - message.javaGenerateEqualsAndHash = reader.bool(); - break; - case 27: - message.javaStringCheckUtf8 = reader.bool(); - break; - case 9: - message.optimizeFor = reader.int32(); - break; - case 11: - message.goPackage = reader.string(); - break; - case 16: - message.ccGenericServices = reader.bool(); - break; - case 17: - message.javaGenericServices = reader.bool(); - break; - case 18: - message.pyGenericServices = reader.bool(); - break; - case 42: - message.phpGenericServices = reader.bool(); - break; - case 23: - message.deprecated = reader.bool(); - break; - case 31: - message.ccEnableArenas = reader.bool(); - break; - case 36: - message.objcClassPrefix = reader.string(); - break; - case 37: - message.csharpNamespace = reader.string(); - break; - case 39: - message.swiftPrefix = reader.string(); - break; - case 40: - message.phpClassPrefix = reader.string(); - break; - case 41: - message.phpNamespace = reader.string(); - break; - case 44: - message.phpMetadataNamespace = reader.string(); - break; - case 45: - message.rubyPackage = reader.string(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 1: { + message.javaPackage = reader.string(); + break; + } + case 8: { + message.javaOuterClassname = reader.string(); + break; + } + case 10: { + message.javaMultipleFiles = reader.bool(); + break; + } + case 20: { + message.javaGenerateEqualsAndHash = reader.bool(); + break; + } + case 27: { + message.javaStringCheckUtf8 = reader.bool(); + break; + } + case 9: { + message.optimizeFor = reader.int32(); + break; + } + case 11: { + message.goPackage = reader.string(); + break; + } + case 16: { + message.ccGenericServices = reader.bool(); + break; + } + case 17: { + message.javaGenericServices = reader.bool(); + break; + } + case 18: { + message.pyGenericServices = reader.bool(); + break; + } + case 42: { + message.phpGenericServices = reader.bool(); + break; + } + case 23: { + message.deprecated = reader.bool(); + break; + } + case 31: { + message.ccEnableArenas = reader.bool(); + break; + } + case 36: { + message.objcClassPrefix = reader.string(); + break; + } + case 37: { + message.csharpNamespace = reader.string(); + break; + } + case 39: { + message.swiftPrefix = reader.string(); + break; + } + case 40: { + message.phpClassPrefix = reader.string(); + break; + } + case 41: { + message.phpNamespace = reader.string(); + break; + } + case 44: { + message.phpMetadataNamespace = reader.string(); + break; + } + case 45: { + message.rubyPackage = reader.string(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -22272,6 +23693,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FileOptions + * @function getTypeUrl + * @memberof google.protobuf.FileOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FileOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FileOptions"; + }; + /** * OptimizeMode enum. * @name google.protobuf.FileOptions.OptimizeMode @@ -22429,23 +23865,28 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.messageSetWireFormat = reader.bool(); - break; - case 2: - message.noStandardDescriptorAccessor = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 7: - message.mapEntry = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 1: { + message.messageSetWireFormat = reader.bool(); + break; + } + case 2: { + message.noStandardDescriptorAccessor = reader.bool(); + break; + } + case 3: { + message.deprecated = reader.bool(); + break; + } + case 7: { + message.mapEntry = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -22586,6 +24027,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MessageOptions + * @function getTypeUrl + * @memberof google.protobuf.MessageOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MessageOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.MessageOptions"; + }; + return MessageOptions; })(); @@ -22599,6 +24055,7 @@ * @property {boolean|null} [packed] FieldOptions packed * @property {google.protobuf.FieldOptions.JSType|null} [jstype] FieldOptions jstype * @property {boolean|null} [lazy] FieldOptions lazy + * @property {boolean|null} [unverifiedLazy] FieldOptions unverifiedLazy * @property {boolean|null} [deprecated] FieldOptions deprecated * @property {boolean|null} [weak] FieldOptions weak * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption @@ -22654,6 +24111,14 @@ */ FieldOptions.prototype.lazy = false; + /** + * FieldOptions unverifiedLazy. + * @member {boolean} unverifiedLazy + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.unverifiedLazy = false; + /** * FieldOptions deprecated. * @member {boolean} deprecated @@ -22722,6 +24187,8 @@ writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype); if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); + if (message.unverifiedLazy != null && Object.hasOwnProperty.call(message, "unverifiedLazy")) + writer.uint32(/* id 15, wireType 0 =*/120).bool(message.unverifiedLazy); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -22765,39 +24232,51 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.ctype = reader.int32(); - break; - case 2: - message.packed = reader.bool(); - break; - case 6: - message.jstype = reader.int32(); - break; - case 5: - message.lazy = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 10: - message.weak = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - case 1052: - if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length)) - message[".google.api.fieldBehavior"] = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + case 1: { + message.ctype = reader.int32(); + break; + } + case 2: { + message.packed = reader.bool(); + break; + } + case 6: { + message.jstype = reader.int32(); + break; + } + case 5: { + message.lazy = reader.bool(); + break; + } + case 15: { + message.unverifiedLazy = reader.bool(); + break; + } + case 3: { + message.deprecated = reader.bool(); + break; + } + case 10: { + message.weak = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } + case 1052: { + if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length)) + message[".google.api.fieldBehavior"] = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message[".google.api.fieldBehavior"].push(reader.int32()); + } else message[".google.api.fieldBehavior"].push(reader.int32()); - } else - message[".google.api.fieldBehavior"].push(reader.int32()); - break; + break; + } default: reader.skipType(tag & 7); break; @@ -22857,6 +24336,9 @@ if (message.lazy != null && message.hasOwnProperty("lazy")) if (typeof message.lazy !== "boolean") return "lazy: boolean expected"; + if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) + if (typeof message.unverifiedLazy !== "boolean") + return "unverifiedLazy: boolean expected"; if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; @@ -22937,6 +24419,8 @@ } if (object.lazy != null) message.lazy = Boolean(object.lazy); + if (object.unverifiedLazy != null) + message.unverifiedLazy = Boolean(object.unverifiedLazy); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); if (object.weak != null) @@ -23019,6 +24503,7 @@ object.lazy = false; object.jstype = options.enums === String ? "JS_NORMAL" : 0; object.weak = false; + object.unverifiedLazy = false; } if (message.ctype != null && message.hasOwnProperty("ctype")) object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; @@ -23032,6 +24517,8 @@ object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; if (message.weak != null && message.hasOwnProperty("weak")) object.weak = message.weak; + if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) + object.unverifiedLazy = message.unverifiedLazy; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -23056,6 +24543,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FieldOptions + * @function getTypeUrl + * @memberof google.protobuf.FieldOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FieldOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FieldOptions"; + }; + /** * CType enum. * @name google.protobuf.FieldOptions.CType @@ -23185,11 +24687,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -23296,6 +24799,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for OneofOptions + * @function getTypeUrl + * @memberof google.protobuf.OneofOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + OneofOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.OneofOptions"; + }; + return OneofOptions; })(); @@ -23415,17 +24933,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - message.allowAlias = reader.bool(); - break; - case 3: - message.deprecated = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 2: { + message.allowAlias = reader.bool(); + break; + } + case 3: { + message.deprecated = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -23550,6 +25071,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EnumOptions + * @function getTypeUrl + * @memberof google.protobuf.EnumOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EnumOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.EnumOptions"; + }; + return EnumOptions; })(); @@ -23658,14 +25194,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.deprecated = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; + case 1: { + message.deprecated = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -23781,6 +25319,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for EnumValueOptions + * @function getTypeUrl + * @memberof google.protobuf.EnumValueOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EnumValueOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.EnumValueOptions"; + }; + return EnumValueOptions; })(); @@ -23911,20 +25464,24 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - case 1049: - message[".google.api.defaultHost"] = reader.string(); - break; - case 1050: - message[".google.api.oauthScopes"] = reader.string(); - break; + case 33: { + message.deprecated = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } + case 1049: { + message[".google.api.defaultHost"] = reader.string(); + break; + } + case 1050: { + message[".google.api.oauthScopes"] = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -24057,6 +25614,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ServiceOptions + * @function getTypeUrl + * @memberof google.protobuf.ServiceOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ServiceOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.ServiceOptions"; + }; + return ServiceOptions; })(); @@ -24211,28 +25783,34 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 33: - message.deprecated = reader.bool(); - break; - case 34: - message.idempotencyLevel = reader.int32(); - break; - case 999: - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); - break; - case 72295728: - message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); - break; - case 1051: - if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length)) - message[".google.api.methodSignature"] = []; - message[".google.api.methodSignature"].push(reader.string()); - break; - case 1049: - message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32()); - break; + case 33: { + message.deprecated = reader.bool(); + break; + } + case 34: { + message.idempotencyLevel = reader.int32(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + } + case 72295728: { + message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); + break; + } + case 1051: { + if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length)) + message[".google.api.methodSignature"] = []; + message[".google.api.methodSignature"].push(reader.string()); + break; + } + case 1049: { + message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -24422,6 +26000,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for MethodOptions + * @function getTypeUrl + * @memberof google.protobuf.MethodOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MethodOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.MethodOptions"; + }; + /** * IdempotencyLevel enum. * @name google.protobuf.MethodOptions.IdempotencyLevel @@ -24601,29 +26194,36 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: - if (!(message.name && message.name.length)) - message.name = []; - message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); - break; - case 3: - message.identifierValue = reader.string(); - break; - case 4: - message.positiveIntValue = reader.uint64(); - break; - case 5: - message.negativeIntValue = reader.int64(); - break; - case 6: - message.doubleValue = reader.double(); - break; - case 7: - message.stringValue = reader.bytes(); - break; - case 8: - message.aggregateValue = reader.string(); - break; + case 2: { + if (!(message.name && message.name.length)) + message.name = []; + message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); + break; + } + case 3: { + message.identifierValue = reader.string(); + break; + } + case 4: { + message.positiveIntValue = reader.uint64(); + break; + } + case 5: { + message.negativeIntValue = reader.int64(); + break; + } + case 6: { + message.doubleValue = reader.double(); + break; + } + case 7: { + message.stringValue = reader.bytes(); + break; + } + case 8: { + message.aggregateValue = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -24736,7 +26336,7 @@ if (object.stringValue != null) if (typeof object.stringValue === "string") $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0); - else if (object.stringValue.length) + else if (object.stringValue.length >= 0) message.stringValue = object.stringValue; if (object.aggregateValue != null) message.aggregateValue = String(object.aggregateValue); @@ -24817,6 +26417,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for UninterpretedOption + * @function getTypeUrl + * @memberof google.protobuf.UninterpretedOption + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + UninterpretedOption.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.UninterpretedOption"; + }; + UninterpretedOption.NamePart = (function() { /** @@ -24918,12 +26533,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.namePart = reader.string(); - break; - case 2: - message.isExtension = reader.bool(); - break; + case 1: { + message.namePart = reader.string(); + break; + } + case 2: { + message.isExtension = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -25020,8 +26637,23 @@ * @instance * @returns {Object.} JSON object */ - NamePart.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + NamePart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for NamePart + * @function getTypeUrl + * @memberof google.protobuf.UninterpretedOption.NamePart + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + NamePart.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.UninterpretedOption.NamePart"; }; return NamePart; @@ -25124,11 +26756,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.location && message.location.length)) - message.location = []; - message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.location && message.location.length)) + message.location = []; + message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -25235,6 +26868,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for SourceCodeInfo + * @function getTypeUrl + * @memberof google.protobuf.SourceCodeInfo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SourceCodeInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.SourceCodeInfo"; + }; + SourceCodeInfo.Location = (function() { /** @@ -25383,37 +27031,42 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.path && message.path.length)) - message.path = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + case 1: { + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else message.path.push(reader.int32()); - } else - message.path.push(reader.int32()); - break; - case 2: - if (!(message.span && message.span.length)) - message.span = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + break; + } + case 2: { + if (!(message.span && message.span.length)) + message.span = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.span.push(reader.int32()); + } else message.span.push(reader.int32()); - } else - message.span.push(reader.int32()); - break; - case 3: - message.leadingComments = reader.string(); - break; - case 4: - message.trailingComments = reader.string(); - break; - case 6: - if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) - message.leadingDetachedComments = []; - message.leadingDetachedComments.push(reader.string()); - break; + break; + } + case 3: { + message.leadingComments = reader.string(); + break; + } + case 4: { + message.trailingComments = reader.string(); + break; + } + case 6: { + if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) + message.leadingDetachedComments = []; + message.leadingDetachedComments.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -25574,6 +27227,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Location + * @function getTypeUrl + * @memberof google.protobuf.SourceCodeInfo.Location + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Location.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.SourceCodeInfo.Location"; + }; + return Location; })(); @@ -25674,11 +27342,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.annotation && message.annotation.length)) - message.annotation = []; - message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.annotation && message.annotation.length)) + message.annotation = []; + message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -25785,6 +27454,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for GeneratedCodeInfo + * @function getTypeUrl + * @memberof google.protobuf.GeneratedCodeInfo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GeneratedCodeInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.GeneratedCodeInfo"; + }; + GeneratedCodeInfo.Annotation = (function() { /** @@ -25795,6 +27479,7 @@ * @property {string|null} [sourceFile] Annotation sourceFile * @property {number|null} [begin] Annotation begin * @property {number|null} [end] Annotation end + * @property {google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null} [semantic] Annotation semantic */ /** @@ -25845,6 +27530,14 @@ */ Annotation.prototype.end = 0; + /** + * Annotation semantic. + * @member {google.protobuf.GeneratedCodeInfo.Annotation.Semantic} semantic + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @instance + */ + Annotation.prototype.semantic = 0; + /** * Creates a new Annotation instance using the specified properties. * @function create @@ -25881,6 +27574,8 @@ writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); + if (message.semantic != null && Object.hasOwnProperty.call(message, "semantic")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.semantic); return writer; }; @@ -25915,25 +27610,33 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.path && message.path.length)) - message.path = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) + case 1: { + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else message.path.push(reader.int32()); - } else - message.path.push(reader.int32()); - break; - case 2: - message.sourceFile = reader.string(); - break; - case 3: - message.begin = reader.int32(); - break; - case 4: - message.end = reader.int32(); - break; + break; + } + case 2: { + message.sourceFile = reader.string(); + break; + } + case 3: { + message.begin = reader.int32(); + break; + } + case 4: { + message.end = reader.int32(); + break; + } + case 5: { + message.semantic = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -25985,6 +27688,15 @@ if (message.end != null && message.hasOwnProperty("end")) if (!$util.isInteger(message.end)) return "end: integer expected"; + if (message.semantic != null && message.hasOwnProperty("semantic")) + switch (message.semantic) { + default: + return "semantic: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; @@ -26013,6 +27725,20 @@ message.begin = object.begin | 0; if (object.end != null) message.end = object.end | 0; + switch (object.semantic) { + case "NONE": + case 0: + message.semantic = 0; + break; + case "SET": + case 1: + message.semantic = 1; + break; + case "ALIAS": + case 2: + message.semantic = 2; + break; + } return message; }; @@ -26035,6 +27761,7 @@ object.sourceFile = ""; object.begin = 0; object.end = 0; + object.semantic = options.enums === String ? "NONE" : 0; } if (message.path && message.path.length) { object.path = []; @@ -26047,6 +27774,8 @@ object.begin = message.begin; if (message.end != null && message.hasOwnProperty("end")) object.end = message.end; + if (message.semantic != null && message.hasOwnProperty("semantic")) + object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic; return object; }; @@ -26061,6 +27790,37 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Annotation + * @function getTypeUrl + * @memberof google.protobuf.GeneratedCodeInfo.Annotation + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Annotation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.GeneratedCodeInfo.Annotation"; + }; + + /** + * Semantic enum. + * @name google.protobuf.GeneratedCodeInfo.Annotation.Semantic + * @enum {number} + * @property {number} NONE=0 NONE value + * @property {number} SET=1 SET value + * @property {number} ALIAS=2 ALIAS value + */ + Annotation.Semantic = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NONE"] = 0; + values[valuesById[1] = "SET"] = 1; + values[valuesById[2] = "ALIAS"] = 2; + return values; + })(); + return Annotation; })(); @@ -26170,12 +27930,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.type_url = reader.string(); - break; - case 2: - message.value = reader.bytes(); - break; + case 1: { + message.type_url = reader.string(); + break; + } + case 2: { + message.value = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -26237,7 +27999,7 @@ if (object.value != null) if (typeof object.value === "string") $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length) + else if (object.value.length >= 0) message.value = object.value; return message; }; @@ -26283,6 +28045,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Any + * @function getTypeUrl + * @memberof google.protobuf.Any + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Any.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Any"; + }; + return Any; })(); @@ -26389,12 +28166,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.seconds = reader.int64(); - break; - case 2: - message.nanos = reader.int32(); - break; + case 1: { + message.seconds = reader.int64(); + break; + } + case 2: { + message.nanos = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -26507,6 +28286,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Duration + * @function getTypeUrl + * @memberof google.protobuf.Duration + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Duration.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Duration"; + }; + return Duration; })(); @@ -26667,6 +28461,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Empty + * @function getTypeUrl + * @memberof google.protobuf.Empty + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Empty.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Empty"; + }; + return Empty; })(); @@ -26773,12 +28582,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.seconds = reader.int64(); - break; - case 2: - message.nanos = reader.int32(); - break; + case 1: { + message.seconds = reader.int64(); + break; + } + case 2: { + message.nanos = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -26891,6 +28702,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Timestamp + * @function getTypeUrl + * @memberof google.protobuf.Timestamp + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Timestamp.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Timestamp"; + }; + return Timestamp; })(); @@ -26990,28 +28816,29 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (message.fields === $util.emptyObject) - message.fields = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = null; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = $root.google.protobuf.Value.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag2 & 7); - break; + case 1: { + if (message.fields === $util.emptyObject) + message.fields = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.protobuf.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } } + message.fields[key] = value; + break; } - message.fields[key] = value; - break; default: reader.skipType(tag & 7); break; @@ -27120,6 +28947,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Struct + * @function getTypeUrl + * @memberof google.protobuf.Struct + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Struct.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Struct"; + }; + return Struct; })(); @@ -27284,24 +29126,30 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.nullValue = reader.int32(); - break; - case 2: - message.numberValue = reader.double(); - break; - case 3: - message.stringValue = reader.string(); - break; - case 4: - message.boolValue = reader.bool(); - break; - case 5: - message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32()); - break; - case 6: - message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); - break; + case 1: { + message.nullValue = reader.int32(); + break; + } + case 2: { + message.numberValue = reader.double(); + break; + } + case 3: { + message.stringValue = reader.string(); + break; + } + case 4: { + message.boolValue = reader.bool(); + break; + } + case 5: { + message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + } + case 6: { + message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -27485,6 +29333,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Value + * @function getTypeUrl + * @memberof google.protobuf.Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Value"; + }; + return Value; })(); @@ -27594,11 +29457,12 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.values && message.values.length)) - message.values = []; - message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32())); - break; + case 1: { + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -27705,6 +29569,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ListValue + * @function getTypeUrl + * @memberof google.protobuf.ListValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ListValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.ListValue"; + }; + return ListValue; })(); @@ -27800,9 +29679,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.double(); - break; + case 1: { + message.value = reader.double(); + break; + } default: reader.skipType(tag & 7); break; @@ -27892,6 +29772,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for DoubleValue + * @function getTypeUrl + * @memberof google.protobuf.DoubleValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DoubleValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.DoubleValue"; + }; + return DoubleValue; })(); @@ -27987,9 +29882,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.float(); - break; + case 1: { + message.value = reader.float(); + break; + } default: reader.skipType(tag & 7); break; @@ -28079,6 +29975,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for FloatValue + * @function getTypeUrl + * @memberof google.protobuf.FloatValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FloatValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FloatValue"; + }; + return FloatValue; })(); @@ -28174,9 +30085,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.int64(); - break; + case 1: { + message.value = reader.int64(); + break; + } default: reader.skipType(tag & 7); break; @@ -28280,6 +30192,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Int64Value + * @function getTypeUrl + * @memberof google.protobuf.Int64Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Int64Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Int64Value"; + }; + return Int64Value; })(); @@ -28375,9 +30302,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.uint64(); - break; + case 1: { + message.value = reader.uint64(); + break; + } default: reader.skipType(tag & 7); break; @@ -28481,6 +30409,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for UInt64Value + * @function getTypeUrl + * @memberof google.protobuf.UInt64Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + UInt64Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.UInt64Value"; + }; + return UInt64Value; })(); @@ -28576,9 +30519,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.int32(); - break; + case 1: { + message.value = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -28668,6 +30612,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Int32Value + * @function getTypeUrl + * @memberof google.protobuf.Int32Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Int32Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Int32Value"; + }; + return Int32Value; })(); @@ -28763,9 +30722,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.uint32(); - break; + case 1: { + message.value = reader.uint32(); + break; + } default: reader.skipType(tag & 7); break; @@ -28855,6 +30815,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for UInt32Value + * @function getTypeUrl + * @memberof google.protobuf.UInt32Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + UInt32Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.UInt32Value"; + }; + return UInt32Value; })(); @@ -28950,9 +30925,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.bool(); - break; + case 1: { + message.value = reader.bool(); + break; + } default: reader.skipType(tag & 7); break; @@ -29042,6 +31018,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for BoolValue + * @function getTypeUrl + * @memberof google.protobuf.BoolValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + BoolValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.BoolValue"; + }; + return BoolValue; })(); @@ -29137,9 +31128,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.string(); - break; + case 1: { + message.value = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -29229,6 +31221,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for StringValue + * @function getTypeUrl + * @memberof google.protobuf.StringValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + StringValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.StringValue"; + }; + return StringValue; })(); @@ -29324,9 +31331,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.value = reader.bytes(); - break; + case 1: { + message.value = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -29383,7 +31391,7 @@ if (object.value != null) if (typeof object.value === "string") $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length) + else if (object.value.length >= 0) message.value = object.value; return message; }; @@ -29425,6 +31433,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for BytesValue + * @function getTypeUrl + * @memberof google.protobuf.BytesValue + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + BytesValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.BytesValue"; + }; + return BytesValue; })(); @@ -29473,7 +31496,7 @@ }; /** - * Callback as used by {@link google.longrunning.Operations#listOperations}. + * Callback as used by {@link google.longrunning.Operations|listOperations}. * @memberof google.longrunning.Operations * @typedef ListOperationsCallback * @type {function} @@ -29506,7 +31529,7 @@ */ /** - * Callback as used by {@link google.longrunning.Operations#getOperation}. + * Callback as used by {@link google.longrunning.Operations|getOperation}. * @memberof google.longrunning.Operations * @typedef GetOperationCallback * @type {function} @@ -29539,7 +31562,7 @@ */ /** - * Callback as used by {@link google.longrunning.Operations#deleteOperation}. + * Callback as used by {@link google.longrunning.Operations|deleteOperation}. * @memberof google.longrunning.Operations * @typedef DeleteOperationCallback * @type {function} @@ -29572,7 +31595,7 @@ */ /** - * Callback as used by {@link google.longrunning.Operations#cancelOperation}. + * Callback as used by {@link google.longrunning.Operations|cancelOperation}. * @memberof google.longrunning.Operations * @typedef CancelOperationCallback * @type {function} @@ -29605,7 +31628,7 @@ */ /** - * Callback as used by {@link google.longrunning.Operations#waitOperation}. + * Callback as used by {@link google.longrunning.Operations|waitOperation}. * @memberof google.longrunning.Operations * @typedef WaitOperationCallback * @type {function} @@ -29790,21 +31813,26 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32()); - break; - case 3: - message.done = reader.bool(); - break; - case 4: - message.error = $root.google.rpc.Status.decode(reader, reader.uint32()); - break; - case 5: - message.response = $root.google.protobuf.Any.decode(reader, reader.uint32()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32()); + break; + } + case 3: { + message.done = reader.bool(); + break; + } + case 4: { + message.error = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 5: { + message.response = $root.google.protobuf.Any.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -29955,6 +31983,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Operation + * @function getTypeUrl + * @memberof google.longrunning.Operation + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Operation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.Operation"; + }; + return Operation; })(); @@ -30050,9 +32093,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; + case 1: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -30142,6 +32186,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for GetOperationRequest + * @function getTypeUrl + * @memberof google.longrunning.GetOperationRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GetOperationRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.GetOperationRequest"; + }; + return GetOperationRequest; })(); @@ -30270,18 +32329,22 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 4: - message.name = reader.string(); - break; - case 1: - message.filter = reader.string(); - break; - case 2: - message.pageSize = reader.int32(); - break; - case 3: - message.pageToken = reader.string(); - break; + case 4: { + message.name = reader.string(); + break; + } + case 1: { + message.filter = reader.string(); + break; + } + case 2: { + message.pageSize = reader.int32(); + break; + } + case 3: { + message.pageToken = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -30396,6 +32459,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ListOperationsRequest + * @function getTypeUrl + * @memberof google.longrunning.ListOperationsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ListOperationsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.ListOperationsRequest"; + }; + return ListOperationsRequest; })(); @@ -30504,14 +32582,16 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - if (!(message.operations && message.operations.length)) - message.operations = []; - message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32())); - break; - case 2: - message.nextPageToken = reader.string(); - break; + case 1: { + if (!(message.operations && message.operations.length)) + message.operations = []; + message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32())); + break; + } + case 2: { + message.nextPageToken = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -30627,6 +32707,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for ListOperationsResponse + * @function getTypeUrl + * @memberof google.longrunning.ListOperationsResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ListOperationsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.ListOperationsResponse"; + }; + return ListOperationsResponse; })(); @@ -30722,9 +32817,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; + case 1: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -30814,6 +32910,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for CancelOperationRequest + * @function getTypeUrl + * @memberof google.longrunning.CancelOperationRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CancelOperationRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.CancelOperationRequest"; + }; + return CancelOperationRequest; })(); @@ -30909,9 +33020,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; + case 1: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -31001,6 +33113,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for DeleteOperationRequest + * @function getTypeUrl + * @memberof google.longrunning.DeleteOperationRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DeleteOperationRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.DeleteOperationRequest"; + }; + return DeleteOperationRequest; })(); @@ -31107,12 +33234,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.name = reader.string(); - break; - case 2: - message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); - break; + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -31216,6 +33345,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for WaitOperationRequest + * @function getTypeUrl + * @memberof google.longrunning.WaitOperationRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + WaitOperationRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.WaitOperationRequest"; + }; + return WaitOperationRequest; })(); @@ -31322,12 +33466,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.responseType = reader.string(); - break; - case 2: - message.metadataType = reader.string(); - break; + case 1: { + message.responseType = reader.string(); + break; + } + case 2: { + message.metadataType = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -31426,6 +33572,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for OperationInfo + * @function getTypeUrl + * @memberof google.longrunning.OperationInfo + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + OperationInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.longrunning.OperationInfo"; + }; + return OperationInfo; })(); @@ -31557,17 +33718,20 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.code = reader.int32(); - break; - case 2: - message.message = reader.string(); - break; - case 3: - if (!(message.details && message.details.length)) - message.details = []; - message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32())); - break; + case 1: { + message.code = reader.int32(); + break; + } + case 2: { + message.message = reader.string(); + break; + } + case 3: { + if (!(message.details && message.details.length)) + message.details = []; + message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -31692,6 +33856,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for Status + * @function getTypeUrl + * @memberof google.rpc.Status + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Status.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.rpc.Status"; + }; + return Status; })(); @@ -31810,12 +33989,14 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: - message.latitude = reader.double(); - break; - case 2: - message.longitude = reader.double(); - break; + case 1: { + message.latitude = reader.double(); + break; + } + case 2: { + message.longitude = reader.double(); + break; + } default: reader.skipType(tag & 7); break; @@ -31914,6 +34095,21 @@ return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + /** + * Gets the default type url for LatLng + * @function getTypeUrl + * @memberof google.type.LatLng + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + LatLng.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.type.LatLng"; + }; + return LatLng; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 5d2a5a010dd..28fdf086954 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1825,6 +1825,10 @@ "syntax": { "type": "string", "id": 12 + }, + "edition": { + "type": "string", + "id": 13 } } }, @@ -2353,6 +2357,13 @@ "default": false } }, + "unverifiedLazy": { + "type": "bool", + "id": 15, + "options": { + "default": false + } + }, "deprecated": { "type": "bool", "id": 3, @@ -2645,6 +2656,19 @@ "end": { "type": "int32", "id": 4 + }, + "semantic": { + "type": "Semantic", + "id": 5 + } + }, + "nested": { + "Semantic": { + "values": { + "NONE": 0, + "SET": 1, + "ALIAS": 2 + } } } } From 2eb42ef2a3e194a946b956727f935e152ee85abe Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 24 Aug 2022 09:53:14 -0400 Subject: [PATCH 685/820] chore: update count up_to field type in aggregation queries (#971) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update count up_to field type in aggregation queries PiperOrigin-RevId: 469555077 Source-Link: https://github.com/googleapis/googleapis/commit/7c3a38d624bcb786a7258ab3878cbe5517ade414 Source-Link: https://github.com/googleapis/googleapis-gen/commit/cb40e6e892a9c33da0b2e6a6335d5f1e45a870da Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2I0MGU2ZTg5MmE5YzMzZGEwYjJlNmE2MzM1ZDVmMWU0NWE4NzBkYSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../nodejs-datastore/protos/google/datastore/v1/datastore.proto | 1 - .../nodejs-datastore/protos/google/datastore/v1/query.proto | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 6d243749978..4c8ac762629 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -436,7 +436,6 @@ message ReadOptions { // Datastore mode. oneof consistency_type { // The non-transactional read consistency to use. - // Cannot be set to `STRONG` for global queries. ReadConsistency read_consistency = 1; // The identifier of the transaction in which to read. A diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 5e9dd9158eb..cbe44932d0f 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -16,6 +16,7 @@ syntax = "proto3"; package google.datastore.v1; +import "google/api/field_behavior.proto"; import "google/datastore/v1/entity.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; From 61882e86e1ad583622ca8cb9e88fdbe0c9e9c5bc Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sat, 27 Aug 2022 05:02:20 +0000 Subject: [PATCH 686/820] fix: do not import the whole google-gax from proto JS (#1553) (#973) fix: use google-gax v3.3.0 Source-Link: https://github.com/googleapis/synthtool/commit/c73d112a11a1f1a93efa67c50495c19aa3a88910 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:b15a6f06cc06dcffa11e1bebdf1a74b6775a134aac24a0f86f51ddf728eb373e --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c30bf2e3eff..9faa6d51f56 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^3.0.1", + "google-gax": "^3.3.0", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 8ce5df7c825..7591fa95709 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -13,7 +13,7 @@ // limitations under the License. import Long = require("long"); -import {protobuf as $protobuf} from "google-gax"; +import type {protobuf as $protobuf} from "google-gax"; /** Namespace google. */ export namespace google { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index a0d57723d0b..934b7f3d405 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -19,7 +19,7 @@ define(["protobufjs/minimal"], factory); /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports) - module.exports = factory(require("google-gax").protobufMinimal); + module.exports = factory(require("google-gax/build/src/protobuf").protobufMinimal); })(this, function($protobuf) { "use strict"; From d5c4ea6ad1f48e17b2d0c5fb8d999df0c81ffb8d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 20:58:22 +0000 Subject: [PATCH 687/820] fix: allow passing gax instance to client constructor (#974) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 470911839 Source-Link: https://github.com/googleapis/googleapis/commit/352756699ebc5b2144c252867c265ea44448712e Source-Link: https://github.com/googleapis/googleapis-gen/commit/f16a1d224f00a630ea43d6a9a1a31f566f45cdea Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjE2YTFkMjI0ZjAwYTYzMGVhNDNkNmE5YTFhMzFmNTY2ZjQ1Y2RlYSJ9 feat: accept google-gax instance as a parameter Please see the documentation of the client constructor for details. PiperOrigin-RevId: 470332808 Source-Link: https://github.com/googleapis/googleapis/commit/d4a23675457cd8f0b44080e0594ec72de1291b89 Source-Link: https://github.com/googleapis/googleapis-gen/commit/e97a1ac204ead4fe7341f91e72db7c6ac6016341 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTk3YTFhYzIwNGVhZDRmZTczNDFmOTFlNzJkYjdjNmFjNjAxNjM0MSJ9 --- .../src/v1/datastore_admin_client.ts | 79 +++++++++++-------- .../src/v1/datastore_client.ts | 40 +++++++--- 2 files changed, 75 insertions(+), 44 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 8d6ffa0141f..16aaa65f5fe 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -17,8 +17,8 @@ // ** All changes to this file may be overwritten. ** /* global window */ -import * as gax from 'google-gax'; -import { +import type * as gax from 'google-gax'; +import type { Callback, CallOptions, Descriptors, @@ -28,7 +28,6 @@ import { PaginationCallback, GaxCall, } from 'google-gax'; - import {Transform} from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); @@ -38,7 +37,6 @@ import jsonProtos = require('../../protos/protos.json'); * This file defines retry strategy and timeouts for all API methods in this library. */ import * as gapicConfig from './datastore_admin_client_config.json'; -import {operationsProtos} from 'google-gax'; const version = require('../../../package.json').version; /** @@ -158,8 +156,18 @@ export class DatastoreAdminClient { * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. * For more information, please check the * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. + * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you + * need to avoid loading the default gRPC version and want to use the fallback + * HTTP implementation. Load only fallback version and pass it to the constructor: + * ``` + * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC + * const client = new DatastoreAdminClient({fallback: 'rest'}, gax); + * ``` */ - constructor(opts?: ClientOptions) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreAdminClient; const servicePath = @@ -179,8 +187,13 @@ export class DatastoreAdminClient { opts['scopes'] = staticMembers.scopes; } + // Load google-gax module synchronously if needed + if (!gaxInstance) { + gaxInstance = require('google-gax') as typeof gax; + } + // Choose either gRPC or proto-over-HTTP implementation of google-gax. - this._gaxModule = opts.fallback ? gax.fallback : gax; + this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance; // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. this._gaxGrpc = new this._gaxModule.GrpcClient(opts); @@ -325,7 +338,7 @@ export class DatastoreAdminClient { this.innerApiCalls = {}; // Add a warn function to the client constructor so it can be easily tested. - this.warn = gax.warn; + this.warn = this._gaxModule.warn; } /** @@ -535,7 +548,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', index_id: request.indexId || '', }); @@ -670,7 +683,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -696,11 +709,12 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.ExportEntitiesMetadata > > { - const request = new operationsProtos.google.longrunning.GetOperationRequest( - {name} - ); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new gax.Operation( + const decodeOperation = new this._gaxModule.Operation( operation, this.descriptors.longrunning.exportEntities, this._gaxModule.createDefaultBackoffSettings() @@ -832,7 +846,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -858,11 +872,12 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.ImportEntitiesMetadata > > { - const request = new operationsProtos.google.longrunning.GetOperationRequest( - {name} - ); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new gax.Operation( + const decodeOperation = new this._gaxModule.Operation( operation, this.descriptors.longrunning.importEntities, this._gaxModule.createDefaultBackoffSettings() @@ -985,7 +1000,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -1011,11 +1026,12 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IndexOperationMetadata > > { - const request = new operationsProtos.google.longrunning.GetOperationRequest( - {name} - ); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new gax.Operation( + const decodeOperation = new this._gaxModule.Operation( operation, this.descriptors.longrunning.createIndex, this._gaxModule.createDefaultBackoffSettings() @@ -1133,7 +1149,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', index_id: request.indexId || '', }); @@ -1160,11 +1176,12 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IndexOperationMetadata > > { - const request = new operationsProtos.google.longrunning.GetOperationRequest( - {name} - ); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + {name} + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new gax.Operation( + const decodeOperation = new this._gaxModule.Operation( operation, this.descriptors.longrunning.deleteIndex, this._gaxModule.createDefaultBackoffSettings() @@ -1264,7 +1281,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -1304,7 +1321,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); const defaultCallSettings = this._defaults['listIndexes']; @@ -1353,7 +1370,7 @@ export class DatastoreAdminClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); const defaultCallSettings = this._defaults['listIndexes']; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index b740f230f29..6da19ae262f 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -17,8 +17,8 @@ // ** All changes to this file may be overwritten. ** /* global window */ -import * as gax from 'google-gax'; -import { +import type * as gax from 'google-gax'; +import type { Callback, CallOptions, Descriptors, @@ -34,7 +34,6 @@ import jsonProtos = require('../../protos/protos.json'); * This file defines retry strategy and timeouts for all API methods in this library. */ import * as gapicConfig from './datastore_client_config.json'; - const version = require('../../../package.json').version; /** @@ -100,8 +99,18 @@ export class DatastoreClient { * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. * For more information, please check the * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. + * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you + * need to avoid loading the default gRPC version and want to use the fallback + * HTTP implementation. Load only fallback version and pass it to the constructor: + * ``` + * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC + * const client = new DatastoreClient({fallback: 'rest'}, gax); + * ``` */ - constructor(opts?: ClientOptions) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreClient; const servicePath = @@ -121,8 +130,13 @@ export class DatastoreClient { opts['scopes'] = staticMembers.scopes; } + // Load google-gax module synchronously if needed + if (!gaxInstance) { + gaxInstance = require('google-gax') as typeof gax; + } + // Choose either gRPC or proto-over-HTTP implementation of google-gax. - this._gaxModule = opts.fallback ? gax.fallback : gax; + this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance; // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. this._gaxGrpc = new this._gaxModule.GrpcClient(opts); @@ -211,7 +225,7 @@ export class DatastoreClient { this.innerApiCalls = {}; // Add a warn function to the client constructor so it can be easily tested. - this.warn = gax.warn; + this.warn = this._gaxModule.warn; } /** @@ -426,7 +440,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -525,7 +539,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -617,7 +631,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -726,7 +740,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -817,7 +831,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -909,7 +923,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); @@ -1001,7 +1015,7 @@ export class DatastoreClient { options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = - gax.routingHeader.fromParams({ + this._gaxModule.routingHeader.fromParams({ project_id: request.projectId || '', }); this.initialize(); From b38d84652e784f021184dad547b77b84a275e401 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 22:30:32 +0000 Subject: [PATCH 688/820] fix: preserve default values in x-goog-request-params header (#979) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 474338479 Source-Link: https://github.com/googleapis/googleapis/commit/d5d35e0353b59719e8917103b1bc7df2782bf6ba Source-Link: https://github.com/googleapis/googleapis-gen/commit/efcd3f93962a103f68f003e2a1eecde6fa216a27 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZWZjZDNmOTM5NjJhMTAzZjY4ZjAwM2UyYTFlZWNkZTZmYTIxNmEyNyJ9 --- .../src/v1/datastore_admin_client.ts | 20 +- .../src/v1/datastore_client.ts | 14 +- .../test/gapic_datastore_admin_v1.ts | 718 +++++++++--------- .../test/gapic_datastore_v1.ts | 601 ++++++++------- 4 files changed, 690 insertions(+), 663 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 16aaa65f5fe..02a594c11ee 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -549,8 +549,8 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', - index_id: request.indexId || '', + project_id: request.projectId ?? '', + index_id: request.indexId ?? '', }); this.initialize(); return this.innerApiCalls.getIndex(request, options, callback); @@ -684,7 +684,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.exportEntities(request, options, callback); @@ -847,7 +847,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.importEntities(request, options, callback); @@ -1001,7 +1001,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.createIndex(request, options, callback); @@ -1150,8 +1150,8 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', - index_id: request.indexId || '', + project_id: request.projectId ?? '', + index_id: request.indexId ?? '', }); this.initialize(); return this.innerApiCalls.deleteIndex(request, options, callback); @@ -1282,7 +1282,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.listIndexes(request, options, callback); @@ -1322,7 +1322,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); const defaultCallSettings = this._defaults['listIndexes']; const callSettings = defaultCallSettings.merge(options); @@ -1371,7 +1371,7 @@ export class DatastoreAdminClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); const defaultCallSettings = this._defaults['listIndexes']; const callSettings = defaultCallSettings.merge(options); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 6da19ae262f..ea19a44f14a 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -441,7 +441,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.lookup(request, options, callback); @@ -540,7 +540,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); @@ -632,7 +632,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.beginTransaction(request, options, callback); @@ -741,7 +741,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.commit(request, options, callback); @@ -832,7 +832,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.rollback(request, options, callback); @@ -924,7 +924,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.allocateIds(request, options, callback); @@ -1016,7 +1016,7 @@ export class DatastoreClient { options.otherArgs.headers = options.otherArgs.headers || {}; options.otherArgs.headers['x-goog-request-params'] = this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId || '', + project_id: request.projectId ?? '', }); this.initialize(); return this.innerApiCalls.reserveIds(request, options, callback); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 0f872163107..54e40035526 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -27,6 +27,21 @@ import {PassThrough} from 'stream'; import {protobuf, LROperation, operationsProtos} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -254,27 +269,27 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.admin.v1.Index() ); client.innerApiCalls.getIndex = stubSimpleCall(expectedResponse); const [response] = await client.getIndex(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getIndex without error using callback', async () => { @@ -286,16 +301,13 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.admin.v1.Index() ); @@ -318,11 +330,14 @@ describe('v1.DatastoreAdminClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.getIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getIndex with error', async () => { @@ -334,24 +349,24 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); client.innerApiCalls.getIndex = stubSimpleCall(undefined, expectedError); await assert.rejects(client.getIndex(request), expectedError); - assert( - (client.innerApiCalls.getIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes getIndex with closed client', async () => { @@ -363,8 +378,12 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - request.projectId = ''; - request.indexId = ''; + const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + request.indexId = defaultValue2; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.getIndex(request), expectedError); @@ -381,15 +400,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -398,11 +413,14 @@ describe('v1.DatastoreAdminClient', () => { const [operation] = await client.exportEntities(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.exportEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes exportEntities without error using callback', async () => { @@ -414,15 +432,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -452,11 +466,14 @@ describe('v1.DatastoreAdminClient', () => { >; const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.exportEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes exportEntities with call error', async () => { @@ -468,26 +485,25 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.exportEntities = stubLongRunningCall( undefined, expectedError ); await assert.rejects(client.exportEntities(request), expectedError); - assert( - (client.innerApiCalls.exportEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes exportEntities with LRO error', async () => { @@ -499,15 +515,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.exportEntities = stubLongRunningCall( undefined, @@ -516,11 +528,14 @@ describe('v1.DatastoreAdminClient', () => { ); const [operation] = await client.exportEntities(request); await assert.rejects(operation.promise(), expectedError); - assert( - (client.innerApiCalls.exportEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.exportEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes checkExportEntitiesProgress without error', async () => { @@ -575,15 +590,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -592,11 +603,14 @@ describe('v1.DatastoreAdminClient', () => { const [operation] = await client.importEntities(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.importEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes importEntities without error using callback', async () => { @@ -608,15 +622,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -646,11 +656,14 @@ describe('v1.DatastoreAdminClient', () => { >; const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.importEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes importEntities with call error', async () => { @@ -662,26 +675,25 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.importEntities = stubLongRunningCall( undefined, expectedError ); await assert.rejects(client.importEntities(request), expectedError); - assert( - (client.innerApiCalls.importEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes importEntities with LRO error', async () => { @@ -693,15 +705,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.importEntities = stubLongRunningCall( undefined, @@ -710,11 +718,14 @@ describe('v1.DatastoreAdminClient', () => { ); const [operation] = await client.importEntities(request); await assert.rejects(operation.promise(), expectedError); - assert( - (client.innerApiCalls.importEntities as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.importEntities as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes checkImportEntitiesProgress without error', async () => { @@ -769,15 +780,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -785,11 +792,14 @@ describe('v1.DatastoreAdminClient', () => { const [operation] = await client.createIndex(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createIndex without error using callback', async () => { @@ -801,15 +811,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -839,11 +845,14 @@ describe('v1.DatastoreAdminClient', () => { >; const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.createIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createIndex with call error', async () => { @@ -855,26 +864,25 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.createIndex = stubLongRunningCall( undefined, expectedError ); await assert.rejects(client.createIndex(request), expectedError); - assert( - (client.innerApiCalls.createIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes createIndex with LRO error', async () => { @@ -886,15 +894,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.createIndex = stubLongRunningCall( undefined, @@ -903,11 +907,14 @@ describe('v1.DatastoreAdminClient', () => { ); const [operation] = await client.createIndex(request); await assert.rejects(operation.promise(), expectedError); - assert( - (client.innerApiCalls.createIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes checkCreateIndexProgress without error', async () => { @@ -959,16 +966,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ + 'indexId', + ]); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -976,11 +982,14 @@ describe('v1.DatastoreAdminClient', () => { const [operation] = await client.deleteIndex(request); const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteIndex without error using callback', async () => { @@ -992,16 +1001,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ + 'indexId', + ]); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( new protos.google.longrunning.Operation() ); @@ -1031,11 +1039,14 @@ describe('v1.DatastoreAdminClient', () => { >; const [response] = await operation.promise(); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.deleteIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteIndex with call error', async () => { @@ -1047,27 +1058,29 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ + 'indexId', + ]); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); client.innerApiCalls.deleteIndex = stubLongRunningCall( undefined, expectedError ); await assert.rejects(client.deleteIndex(request), expectedError); - assert( - (client.innerApiCalls.deleteIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes deleteIndex with LRO error', async () => { @@ -1079,16 +1092,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - request.projectId = ''; - request.indexId = ''; - const expectedHeaderRequestParams = 'project_id=&index_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ + 'indexId', + ]); + request.indexId = defaultValue2; + const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); client.innerApiCalls.deleteIndex = stubLongRunningCall( undefined, @@ -1097,11 +1109,14 @@ describe('v1.DatastoreAdminClient', () => { ); const [operation] = await client.deleteIndex(request); await assert.rejects(operation.promise(), expectedError); - assert( - (client.innerApiCalls.deleteIndex as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteIndex as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes checkDeleteIndexProgress without error', async () => { @@ -1153,15 +1168,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), @@ -1170,11 +1181,14 @@ describe('v1.DatastoreAdminClient', () => { client.innerApiCalls.listIndexes = stubSimpleCall(expectedResponse); const [response] = await client.listIndexes(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listIndexes as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listIndexes without error using callback', async () => { @@ -1186,15 +1200,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), @@ -1219,11 +1229,14 @@ describe('v1.DatastoreAdminClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.listIndexes as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listIndexes with error', async () => { @@ -1235,26 +1248,25 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.listIndexes = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.listIndexes(request), expectedError); - assert( - (client.innerApiCalls.listIndexes as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listIndexes as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes listIndexesStream without error', async () => { @@ -1266,8 +1278,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), @@ -1298,11 +1313,12 @@ describe('v1.DatastoreAdminClient', () => { .getCall(0) .calledWith(client.innerApiCalls.listIndexes, request) ); - assert.strictEqual( - (client.descriptors.page.listIndexes.createStream as SinonStub).getCall( - 0 - ).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listIndexes.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1315,8 +1331,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listIndexes.createStream = stubPageStreamingCall( undefined, @@ -1344,11 +1363,12 @@ describe('v1.DatastoreAdminClient', () => { .getCall(0) .calledWith(client.innerApiCalls.listIndexes, request) ); - assert.strictEqual( - (client.descriptors.page.listIndexes.createStream as SinonStub).getCall( - 0 - ).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listIndexes.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1361,8 +1381,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ generateSampleMessage(new protos.google.datastore.admin.v1.Index()), generateSampleMessage(new protos.google.datastore.admin.v1.Index()), @@ -1382,11 +1405,12 @@ describe('v1.DatastoreAdminClient', () => { ).args[1], request ); - assert.strictEqual( - (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( - 0 - ).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); @@ -1399,8 +1423,11 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; + const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.descriptors.page.listIndexes.asyncIterate = stubAsyncIterationCall( undefined, @@ -1419,11 +1446,12 @@ describe('v1.DatastoreAdminClient', () => { ).args[1], request ); - assert.strictEqual( - (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall( - 0 - ).args[2].otherArgs.headers['x-goog-request-params'], - expectedHeaderRequestParams + assert( + (client.descriptors.page.listIndexes.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers['x-goog-request-params'].includes( + expectedHeaderRequestParams + ) ); }); }); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 4b66ca3867f..3750bfdfb21 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -25,6 +25,21 @@ import * as datastoreModule from '../src'; import {protobuf, operationsProtos} from 'google-gax'; +// Dynamically loaded proto JSON is needed to get the type information +// to fill in default values for request objects +const root = protobuf.Root.fromJSON( + require('../protos/protos.json') +).resolveAll(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function getTypeDefaultValue(typeName: string, fields: string[]) { + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; +} + function generateSampleMessage(instance: T) { const filledObject = ( instance.constructor as typeof protobuf.Message @@ -180,26 +195,23 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); client.innerApiCalls.lookup = stubSimpleCall(expectedResponse); const [response] = await client.lookup(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.lookup as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.lookup as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes lookup without error using callback', async () => { @@ -211,15 +223,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); @@ -242,11 +248,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.lookup as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.lookup as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes lookup with error', async () => { @@ -258,23 +267,20 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); await assert.rejects(client.lookup(request), expectedError); - assert( - (client.innerApiCalls.lookup as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.lookup as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes lookup with closed client', async () => { @@ -286,7 +292,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.lookup(request), expectedError); @@ -303,26 +310,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); client.innerApiCalls.runQuery = stubSimpleCall(expectedResponse); const [response] = await client.runQuery(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.runQuery as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes runQuery without error using callback', async () => { @@ -334,15 +340,11 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); @@ -365,11 +367,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.runQuery as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes runQuery with error', async () => { @@ -381,23 +386,22 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); await assert.rejects(client.runQuery(request), expectedError); - assert( - (client.innerApiCalls.runQuery as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes runQuery with closed client', async () => { @@ -409,7 +413,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.runQuery(request), expectedError); @@ -426,26 +433,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); client.innerApiCalls.beginTransaction = stubSimpleCall(expectedResponse); const [response] = await client.beginTransaction(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.beginTransaction as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes beginTransaction without error using callback', async () => { @@ -457,15 +463,11 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); @@ -488,11 +490,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.beginTransaction as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes beginTransaction with error', async () => { @@ -504,26 +509,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.beginTransaction = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.beginTransaction(request), expectedError); - assert( - (client.innerApiCalls.beginTransaction as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.beginTransaction as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes beginTransaction with closed client', async () => { @@ -535,7 +539,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.beginTransaction(request), expectedError); @@ -552,26 +559,23 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); client.innerApiCalls.commit = stubSimpleCall(expectedResponse); const [response] = await client.commit(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.commit as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.commit as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes commit without error using callback', async () => { @@ -583,15 +587,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); @@ -614,11 +612,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.commit as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.commit as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes commit with error', async () => { @@ -630,23 +631,20 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); await assert.rejects(client.commit(request), expectedError); - assert( - (client.innerApiCalls.commit as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall( + 0 + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.commit as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes commit with closed client', async () => { @@ -658,7 +656,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.commit(request), expectedError); @@ -675,26 +674,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); client.innerApiCalls.rollback = stubSimpleCall(expectedResponse); const [response] = await client.rollback(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.rollback as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes rollback without error using callback', async () => { @@ -706,15 +704,11 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); @@ -737,11 +731,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.rollback as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes rollback with error', async () => { @@ -753,23 +750,22 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); await assert.rejects(client.rollback(request), expectedError); - assert( - (client.innerApiCalls.rollback as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.rollback as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes rollback with closed client', async () => { @@ -781,7 +777,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.rollback(request), expectedError); @@ -798,26 +797,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); client.innerApiCalls.allocateIds = stubSimpleCall(expectedResponse); const [response] = await client.allocateIds(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.allocateIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes allocateIds without error using callback', async () => { @@ -829,15 +827,11 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); @@ -860,11 +854,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.allocateIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes allocateIds with error', async () => { @@ -876,26 +873,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.allocateIds = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.allocateIds(request), expectedError); - assert( - (client.innerApiCalls.allocateIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.allocateIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes allocateIds with closed client', async () => { @@ -907,7 +903,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.allocateIds(request), expectedError); @@ -924,26 +923,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); client.innerApiCalls.reserveIds = stubSimpleCall(expectedResponse); const [response] = await client.reserveIds(request); assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.reserveIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes reserveIds without error using callback', async () => { @@ -955,15 +953,11 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); @@ -986,11 +980,14 @@ describe('v1.DatastoreClient', () => { }); const response = await promise; assert.deepStrictEqual(response, expectedResponse); - assert( - (client.innerApiCalls.reserveIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions /*, callback defined above */) - ); + const actualRequest = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes reserveIds with error', async () => { @@ -1002,26 +999,25 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - request.projectId = ''; - const expectedHeaderRequestParams = 'project_id='; - const expectedOptions = { - otherArgs: { - headers: { - 'x-goog-request-params': expectedHeaderRequestParams, - }, - }, - }; + const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); client.innerApiCalls.reserveIds = stubSimpleCall( undefined, expectedError ); await assert.rejects(client.reserveIds(request), expectedError); - assert( - (client.innerApiCalls.reserveIds as SinonStub) - .getCall(0) - .calledWith(request, expectedOptions, undefined) - ); + const actualRequest = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.reserveIds as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); it('invokes reserveIds with closed client', async () => { @@ -1033,7 +1029,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - request.projectId = ''; + const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ + 'projectId', + ]); + request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.reserveIds(request), expectedError); From 72ddd6d3294f0c9a4ccb63d5d65327674308dea7 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 11:53:58 -0700 Subject: [PATCH 689/820] test: use fully qualified request type name in tests (#1007) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: use fully qualified request type name in tests PiperOrigin-RevId: 475685359 Source-Link: https://github.com/googleapis/googleapis/commit/7a129736313ceb1f277c3b7f7e16d2e04cc901dd Source-Link: https://github.com/googleapis/googleapis-gen/commit/370c729e2ba062a167449c27882ba5f379c5c34d Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzcwYzcyOWUyYmEwNjJhMTY3NDQ5YzI3ODgyYmE1ZjM3OWM1YzM0ZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * chore: override API mixins when needed PiperOrigin-RevId: 477248447 Source-Link: https://github.com/googleapis/googleapis/commit/4689c7380444972caf11fd1b96e7ec1f864b7dfb Source-Link: https://github.com/googleapis/googleapis-gen/commit/c4059786a5cd805a0151d95b477fbc486bcbcedc Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYzQwNTk3ODZhNWNkODA1YTAxNTFkOTViNDc3ZmJjNDg2YmNiY2VkYyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../test/gapic_datastore_admin_v1.ts | 237 +++++++++++------- .../test/gapic_datastore_v1.ts | 180 ++++++++----- 2 files changed, 252 insertions(+), 165 deletions(-) diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 54e40035526..4fe35cf2c64 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -269,11 +269,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( @@ -301,11 +305,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( @@ -349,11 +357,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); @@ -378,11 +390,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.GetIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('GetIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('GetIndexRequest', ['indexId']); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.GetIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -400,9 +416,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ExportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -432,9 +449,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ExportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -485,9 +503,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ExportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -515,9 +534,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ExportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ExportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ExportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -590,9 +610,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ImportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -622,9 +643,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ImportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -675,9 +697,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ImportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -705,9 +728,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ImportEntitiesRequest() ); - const defaultValue1 = getTypeDefaultValue('ImportEntitiesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ImportEntitiesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -780,9 +804,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.CreateIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -811,9 +836,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.CreateIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -864,9 +890,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.CreateIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -894,9 +921,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.CreateIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('CreateIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.CreateIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -966,13 +994,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ - 'indexId', - ]); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( @@ -1001,13 +1031,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ - 'indexId', - ]); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedResponse = generateSampleMessage( @@ -1058,13 +1090,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ - 'indexId', - ]); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); @@ -1092,13 +1126,15 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.DeleteIndexRequest() ); - const defaultValue1 = getTypeDefaultValue('DeleteIndexRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['projectId'] + ); request.projectId = defaultValue1; - const defaultValue2 = getTypeDefaultValue('DeleteIndexRequest', [ - 'indexId', - ]); + const defaultValue2 = getTypeDefaultValue( + '.google.datastore.admin.v1.DeleteIndexRequest', + ['indexId'] + ); request.indexId = defaultValue2; const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`; const expectedError = new Error('expected'); @@ -1168,9 +1204,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ @@ -1200,9 +1237,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ @@ -1248,9 +1286,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -1278,9 +1317,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ @@ -1331,9 +1371,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -1381,9 +1422,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = [ @@ -1423,9 +1465,10 @@ describe('v1.DatastoreAdminClient', () => { const request = generateSampleMessage( new protos.google.datastore.admin.v1.ListIndexesRequest() ); - const defaultValue1 = getTypeDefaultValue('ListIndexesRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.admin.v1.ListIndexesRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 3750bfdfb21..230dd7bfcfc 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -195,7 +195,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.LookupRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -223,7 +226,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.LookupRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -267,7 +273,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.LookupRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -292,7 +301,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue('LookupRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.LookupRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -310,9 +322,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunQueryRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -340,9 +353,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunQueryRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -386,9 +400,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunQueryRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -413,9 +428,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue('RunQueryRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunQueryRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -433,9 +449,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.BeginTransactionRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -463,9 +480,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.BeginTransactionRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -509,9 +527,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.BeginTransactionRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -539,9 +558,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue('BeginTransactionRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.BeginTransactionRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -559,7 +579,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.CommitRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -587,7 +610,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.CommitRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -631,7 +657,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.CommitRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -656,7 +685,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue('CommitRequest', ['projectId']); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.CommitRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -674,9 +706,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RollbackRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -704,9 +737,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RollbackRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -750,9 +784,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RollbackRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -777,9 +812,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue('RollbackRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RollbackRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -797,9 +833,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.AllocateIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -827,9 +864,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.AllocateIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -873,9 +911,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.AllocateIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -903,9 +942,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('AllocateIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.AllocateIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); @@ -923,9 +963,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.ReserveIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -953,9 +994,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.ReserveIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedResponse = generateSampleMessage( @@ -999,9 +1041,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.ReserveIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedHeaderRequestParams = `project_id=${defaultValue1}`; const expectedError = new Error('expected'); @@ -1029,9 +1072,10 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue('ReserveIdsRequest', [ - 'projectId', - ]); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.ReserveIdsRequest', + ['projectId'] + ); request.projectId = defaultValue1; const expectedError = new Error('The client has already been closed.'); client.close(); From e5edb7e9c9d0aa348e985f57b37ad3a42ca583b9 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 18 Oct 2022 09:05:28 -0700 Subject: [PATCH 690/820] feat: add datastore aggregation query APIs (#1008) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add datastore aggregation query APIs PiperOrigin-RevId: 477890345 Source-Link: https://github.com/googleapis/googleapis/commit/82bf6749a84d54a098092ae3a0ec135475b18c31 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5fb8115161ea14a5c551885c681c3627c2f66630 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWZiODExNTE2MWVhMTRhNWM1NTE4ODVjNjgxYzM2MjdjMmY2NjYzMCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../datastore/v1/aggregation_result.proto | 61 + .../google/datastore/v1/datastore.proto | 48 + .../protos/google/datastore/v1/query.proto | 87 + .../nodejs-datastore/protos/protos.d.ts | 4935 +++-- handwritten/nodejs-datastore/protos/protos.js | 15605 +++++++++------- .../nodejs-datastore/protos/protos.json | 1549 +- .../src/v1/datastore_client.ts | 317 +- .../src/v1/datastore_client_config.json | 5 + .../src/v1/datastore_proto_list.json | 1 + .../test/gapic_datastore_v1.ts | 461 +- 10 files changed, 12903 insertions(+), 10166 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto new file mode 100644 index 00000000000..e9c1d49400e --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto @@ -0,0 +1,61 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.v1; + +import "google/datastore/v1/entity.proto"; +import "google/datastore/v1/query.proto"; +import "google/protobuf/timestamp.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option java_multiple_files = true; +option java_outer_classname = "AggregationResultProto"; +option java_package = "com.google.datastore.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\V1"; +option ruby_package = "Google::Cloud::Datastore::V1"; + +// The result of a single bucket from a Datastore aggregation query. +// +// The keys of `aggregate_properties` are the same for all results in an +// aggregation query, unlike entity queries which can have different fields +// present for each result. +message AggregationResult { + // The result of the aggregation functions, ex: `COUNT(*) AS total_entities`. + // + // The key is the [alias][google.datastore.v1.AggregationQuery.Aggregation.alias] + // assigned to the aggregation function on input and the size of this map + // equals the number of aggregation functions in the query. + map aggregate_properties = 2; +} + +// A batch of aggregation results produced by an aggregation query. +message AggregationResultBatch { + // The aggregation results for this batch. + repeated AggregationResult aggregation_results = 1; + + // The state of the query after the current batch. + // Only COUNT(*) aggregations are supported in the initial launch. Therefore, + // expected result type is limited to `NO_MORE_RESULTS`. + QueryResultBatch.MoreResultsType more_results = 2; + + // Read timestamp this batch was returned from. + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater timestamp. Each batch's read timestamp + // is valid for all preceding batches. + google.protobuf.Timestamp read_time = 3; +} diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 4c8ac762629..e891e058f81 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -19,6 +19,7 @@ package google.datastore.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; +import "google/datastore/v1/aggregation_result.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; import "google/protobuf/timestamp.proto"; @@ -61,6 +62,14 @@ service Datastore { }; } + // Runs an aggregation query. + rpc RunAggregationQuery(RunAggregationQueryRequest) returns (RunAggregationQueryResponse) { + option (google.api.http) = { + post: "/v1/projects/{project_id}:runAggregationQuery" + body: "*" + }; + } + // Begins a new transaction. rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { option (google.api.http) = { @@ -189,6 +198,45 @@ message RunQueryResponse { Query query = 2; } +// The request for [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +message RunAggregationQueryRequest { + // Required. The ID of the project against which to make the request. + string project_id = 8 [(google.api.field_behavior) = REQUIRED]; + + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string '' to refer the default + // database. + string database_id = 9; + + // Entities are partitioned into subsets, identified by a partition ID. + // Queries are scoped to a single partition. + // This partition ID is normalized with the standard default context + // partition ID. + PartitionId partition_id = 2; + + // The options for this query. + ReadOptions read_options = 1; + + // The type of query. + oneof query_type { + // The query to run. + AggregationQuery aggregation_query = 3; + + // The GQL query to run. This query must be an aggregation query. + GqlQuery gql_query = 7; + } +} + +// The response for [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +message RunAggregationQueryResponse { + // A batch of aggregation results. Always present. + AggregationResultBatch batch = 1; + + // The parsed form of the `GqlQuery` from the request, if it was set. + AggregationQuery query = 2; +} + // The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionRequest { // Required. The ID of the project against which to make the request. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index cbe44932d0f..b16806ef26d 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -118,6 +118,93 @@ message Query { google.protobuf.Int32Value limit = 12; } +// Datastore query for running an aggregation over a [Query][google.datastore.v1.Query]. +message AggregationQuery { + // Defines a aggregation that produces a single result. + message Aggregation { + // Count of entities that match the query. + // + // The `COUNT(*)` aggregation function operates on the entire entity + // so it does not require a field reference. + message Count { + // Optional. Optional constraint on the maximum number of entities to count. + // + // This provides a way to set an upper bound on the number of entities + // to scan, limiting latency and cost. + // + // Unspecified is interpreted as no bound. + // + // If a zero value is provided, a count result of zero should always be + // expected. + // + // High-Level Example: + // + // ``` + // AGGREGATE COUNT_UP_TO(1000) OVER ( SELECT * FROM k ); + // ``` + // + // Requires: + // + // * Must be non-negative when present. + google.protobuf.Int64Value up_to = 1 [(google.api.field_behavior) = OPTIONAL]; + } + + // The type of aggregation to perform, required. + oneof operator { + // Count aggregator. + Count count = 1; + } + + // Optional. Optional name of the property to store the result of the aggregation. + // + // If not provided, Datastore will pick a default name following the format + // `property_`. For example: + // + // ``` + // AGGREGATE + // COUNT_UP_TO(1) AS count_up_to_1, + // COUNT_UP_TO(2), + // COUNT_UP_TO(3) AS count_up_to_3, + // COUNT_UP_TO(4) + // OVER ( + // ... + // ); + // ``` + // + // becomes: + // + // ``` + // AGGREGATE + // COUNT_UP_TO(1) AS count_up_to_1, + // COUNT_UP_TO(2) AS property_1, + // COUNT_UP_TO(3) AS count_up_to_3, + // COUNT_UP_TO(4) AS property_2 + // OVER ( + // ... + // ); + // ``` + // + // Requires: + // + // * Must be unique across all aggregation aliases. + // * Conform to [entity property name][google.datastore.v1.Entity.properties] limitations. + string alias = 7 [(google.api.field_behavior) = OPTIONAL]; + } + + // The base query to aggregate over. + oneof query_type { + // Nested query for aggregation + Query nested_query = 1; + } + + // Optional. Series of aggregations to apply over the results of the `nested_query`. + // + // Requires: + // + // * A minimum of one and maximum of five aggregations per query. + repeated Aggregation aggregations = 3 [(google.api.field_behavior) = OPTIONAL]; +} + // A representation of a kind. message KindExpression { // The name of the kind. diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 7591fa95709..efdba35c4b3 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -2530,4455 +2530,5230 @@ export namespace google { /** Namespace v1. */ namespace v1 { - /** Represents a Datastore */ - class Datastore extends $protobuf.rpc.Service { + /** Properties of an AggregationResult. */ + interface IAggregationResult { - /** - * Constructs a new Datastore service. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - */ - constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + /** AggregationResult aggregateProperties */ + aggregateProperties?: ({ [k: string]: google.datastore.v1.IValue }|null); + } + + /** Represents an AggregationResult. */ + class AggregationResult implements IAggregationResult { /** - * Creates new Datastore service using the specified rpc implementation. - * @param rpcImpl RPC implementation - * @param [requestDelimited=false] Whether requests are length-delimited - * @param [responseDelimited=false] Whether responses are length-delimited - * @returns RPC service. Useful where requests and/or responses are streamed. + * Constructs a new AggregationResult. + * @param [properties] Properties to set */ - public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; + constructor(properties?: google.datastore.v1.IAggregationResult); + + /** AggregationResult aggregateProperties. */ + public aggregateProperties: { [k: string]: google.datastore.v1.IValue }; /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @param callback Node-style callback called with the error, if any, and LookupResponse + * Creates a new AggregationResult instance using the specified properties. + * @param [properties] Properties to set + * @returns AggregationResult instance */ - public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; + public static create(properties?: google.datastore.v1.IAggregationResult): google.datastore.v1.AggregationResult; /** - * Calls Lookup. - * @param request LookupRequest message or plain object - * @returns Promise + * Encodes the specified AggregationResult message. Does not implicitly {@link google.datastore.v1.AggregationResult.verify|verify} messages. + * @param message AggregationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer */ - public lookup(request: google.datastore.v1.ILookupRequest): Promise; + public static encode(message: google.datastore.v1.IAggregationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RunQueryResponse + * Encodes the specified AggregationResult message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationResult.verify|verify} messages. + * @param message AggregationResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer */ - public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; + public static encodeDelimited(message: google.datastore.v1.IAggregationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Calls RunQuery. - * @param request RunQueryRequest message or plain object - * @returns Promise + * Decodes an AggregationResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AggregationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationResult; /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse + * Decodes an AggregationResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AggregationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationResult; /** - * Calls BeginTransaction. - * @param request BeginTransactionRequest message or plain object - * @returns Promise + * Verifies an AggregationResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not */ - public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; + public static verify(message: { [k: string]: any }): (string|null); /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @param callback Node-style callback called with the error, if any, and CommitResponse + * Creates an AggregationResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AggregationResult */ - public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationResult; /** - * Calls Commit. - * @param request CommitRequest message or plain object - * @returns Promise + * Creates a plain object from an AggregationResult message. Also converts values to other types if specified. + * @param message AggregationResult + * @param [options] Conversion options + * @returns Plain object */ - public commit(request: google.datastore.v1.ICommitRequest): Promise; + public static toObject(message: google.datastore.v1.AggregationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @param callback Node-style callback called with the error, if any, and RollbackResponse + * Converts this AggregationResult to JSON. + * @returns JSON object */ - public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; + public toJSON(): { [k: string]: any }; /** - * Calls Rollback. - * @param request RollbackRequest message or plain object - * @returns Promise + * Gets the default type url for AggregationResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url */ - public rollback(request: google.datastore.v1.IRollbackRequest): Promise; + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an AggregationResultBatch. */ + interface IAggregationResultBatch { + + /** AggregationResultBatch aggregationResults */ + aggregationResults?: (google.datastore.v1.IAggregationResult[]|null); + + /** AggregationResultBatch moreResults */ + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); + + /** AggregationResultBatch readTime */ + readTime?: (google.protobuf.ITimestamp|null); + } + + /** Represents an AggregationResultBatch. */ + class AggregationResultBatch implements IAggregationResultBatch { /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse + * Constructs a new AggregationResultBatch. + * @param [properties] Properties to set */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; + constructor(properties?: google.datastore.v1.IAggregationResultBatch); + + /** AggregationResultBatch aggregationResults. */ + public aggregationResults: google.datastore.v1.IAggregationResult[]; + + /** AggregationResultBatch moreResults. */ + public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); + + /** AggregationResultBatch readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); /** - * Calls AllocateIds. - * @param request AllocateIdsRequest message or plain object - * @returns Promise + * Creates a new AggregationResultBatch instance using the specified properties. + * @param [properties] Properties to set + * @returns AggregationResultBatch instance */ - public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; + public static create(properties?: google.datastore.v1.IAggregationResultBatch): google.datastore.v1.AggregationResultBatch; /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse + * Encodes the specified AggregationResultBatch message. Does not implicitly {@link google.datastore.v1.AggregationResultBatch.verify|verify} messages. + * @param message AggregationResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; + public static encode(message: google.datastore.v1.IAggregationResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Calls ReserveIds. - * @param request ReserveIdsRequest message or plain object - * @returns Promise + * Encodes the specified AggregationResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationResultBatch.verify|verify} messages. + * @param message AggregationResultBatch message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer */ - public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; - } - - namespace Datastore { + public static encodeDelimited(message: google.datastore.v1.IAggregationResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Callback as used by {@link google.datastore.v1.Datastore|lookup}. - * @param error Error, if any - * @param [response] LookupResponse + * Decodes an AggregationResultBatch message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns AggregationResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationResultBatch; /** - * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. - * @param error Error, if any - * @param [response] RunQueryResponse + * Decodes an AggregationResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns AggregationResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationResultBatch; /** - * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. - * @param error Error, if any - * @param [response] BeginTransactionResponse + * Verifies an AggregationResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not */ - type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; + public static verify(message: { [k: string]: any }): (string|null); /** - * Callback as used by {@link google.datastore.v1.Datastore|commit}. - * @param error Error, if any - * @param [response] CommitResponse + * Creates an AggregationResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns AggregationResultBatch */ - type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationResultBatch; /** - * Callback as used by {@link google.datastore.v1.Datastore|rollback}. - * @param error Error, if any - * @param [response] RollbackResponse + * Creates a plain object from an AggregationResultBatch message. Also converts values to other types if specified. + * @param message AggregationResultBatch + * @param [options] Conversion options + * @returns Plain object */ - type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; + public static toObject(message: google.datastore.v1.AggregationResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. - * @param error Error, if any - * @param [response] AllocateIdsResponse + * Converts this AggregationResultBatch to JSON. + * @returns JSON object */ - type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; + public toJSON(): { [k: string]: any }; /** - * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. - * @param error Error, if any - * @param [response] ReserveIdsResponse + * Gets the default type url for AggregationResultBatch + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url */ - type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; + public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a LookupRequest. */ - interface ILookupRequest { + /** Properties of a PartitionId. */ + interface IPartitionId { - /** LookupRequest projectId */ + /** PartitionId projectId */ projectId?: (string|null); - /** LookupRequest databaseId */ + /** PartitionId databaseId */ databaseId?: (string|null); - /** LookupRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); - - /** LookupRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); + /** PartitionId namespaceId */ + namespaceId?: (string|null); } - /** Represents a LookupRequest. */ - class LookupRequest implements ILookupRequest { + /** Represents a PartitionId. */ + class PartitionId implements IPartitionId { /** - * Constructs a new LookupRequest. + * Constructs a new PartitionId. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ILookupRequest); + constructor(properties?: google.datastore.v1.IPartitionId); - /** LookupRequest projectId. */ + /** PartitionId projectId. */ public projectId: string; - /** LookupRequest databaseId. */ + /** PartitionId databaseId. */ public databaseId: string; - /** LookupRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); - - /** LookupRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** PartitionId namespaceId. */ + public namespaceId: string; /** - * Creates a new LookupRequest instance using the specified properties. + * Creates a new PartitionId instance using the specified properties. * @param [properties] Properties to set - * @returns LookupRequest instance + * @returns PartitionId instance */ - public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; + public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. - * @param message LookupRequest message or plain object to encode + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. + * @param message PartitionId message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LookupRequest message from the specified reader or buffer. + * Decodes a PartitionId message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LookupRequest + * @returns PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * Decodes a PartitionId message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns LookupRequest + * @returns PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; /** - * Verifies a LookupRequest message. + * Verifies a PartitionId message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns LookupRequest + * @returns PartitionId */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. - * @param message LookupRequest + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * @param message PartitionId * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this LookupRequest to JSON. + * Converts this PartitionId to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for LookupRequest + * Gets the default type url for PartitionId * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a LookupResponse. */ - interface ILookupResponse { - - /** LookupResponse found */ - found?: (google.datastore.v1.IEntityResult[]|null); + /** Properties of a Key. */ + interface IKey { - /** LookupResponse missing */ - missing?: (google.datastore.v1.IEntityResult[]|null); - - /** LookupResponse deferred */ - deferred?: (google.datastore.v1.IKey[]|null); + /** Key partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); - /** LookupResponse readTime */ - readTime?: (google.protobuf.ITimestamp|null); + /** Key path */ + path?: (google.datastore.v1.Key.IPathElement[]|null); } - /** Represents a LookupResponse. */ - class LookupResponse implements ILookupResponse { + /** Represents a Key. */ + class Key implements IKey { /** - * Constructs a new LookupResponse. + * Constructs a new Key. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ILookupResponse); - - /** LookupResponse found. */ - public found: google.datastore.v1.IEntityResult[]; - - /** LookupResponse missing. */ - public missing: google.datastore.v1.IEntityResult[]; + constructor(properties?: google.datastore.v1.IKey); - /** LookupResponse deferred. */ - public deferred: google.datastore.v1.IKey[]; + /** Key partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); - /** LookupResponse readTime. */ - public readTime?: (google.protobuf.ITimestamp|null); + /** Key path. */ + public path: google.datastore.v1.Key.IPathElement[]; /** - * Creates a new LookupResponse instance using the specified properties. + * Creates a new Key instance using the specified properties. * @param [properties] Properties to set - * @returns LookupResponse instance + * @returns Key instance */ - public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; + public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. - * @param message LookupResponse message or plain object to encode + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * @param message Key message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a LookupResponse message from the specified reader or buffer. + * Decodes a Key message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns LookupResponse + * @returns Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * Decodes a Key message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns LookupResponse + * @returns Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; /** - * Verifies a LookupResponse message. + * Verifies a Key message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * Creates a Key message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns LookupResponse + * @returns Key */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. - * @param message LookupResponse + * Creates a plain object from a Key message. Also converts values to other types if specified. + * @param message Key * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this LookupResponse to JSON. + * Converts this Key to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for LookupResponse + * Gets the default type url for Key * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a RunQueryRequest. */ - interface IRunQueryRequest { + namespace Key { - /** RunQueryRequest projectId */ - projectId?: (string|null); + /** Properties of a PathElement. */ + interface IPathElement { - /** RunQueryRequest databaseId */ - databaseId?: (string|null); + /** PathElement kind */ + kind?: (string|null); - /** RunQueryRequest partitionId */ - partitionId?: (google.datastore.v1.IPartitionId|null); + /** PathElement id */ + id?: (number|Long|string|null); - /** RunQueryRequest readOptions */ - readOptions?: (google.datastore.v1.IReadOptions|null); + /** PathElement name */ + name?: (string|null); + } - /** RunQueryRequest query */ - query?: (google.datastore.v1.IQuery|null); + /** Represents a PathElement. */ + class PathElement implements IPathElement { - /** RunQueryRequest gqlQuery */ - gqlQuery?: (google.datastore.v1.IGqlQuery|null); - } + /** + * Constructs a new PathElement. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.Key.IPathElement); - /** Represents a RunQueryRequest. */ - class RunQueryRequest implements IRunQueryRequest { + /** PathElement kind. */ + public kind: string; - /** - * Constructs a new RunQueryRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IRunQueryRequest); + /** PathElement id. */ + public id?: (number|Long|string|null); - /** RunQueryRequest projectId. */ - public projectId: string; + /** PathElement name. */ + public name?: (string|null); - /** RunQueryRequest databaseId. */ - public databaseId: string; + /** PathElement idType. */ + public idType?: ("id"|"name"); - /** RunQueryRequest partitionId. */ - public partitionId?: (google.datastore.v1.IPartitionId|null); + /** + * Creates a new PathElement instance using the specified properties. + * @param [properties] Properties to set + * @returns PathElement instance + */ + public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; - /** RunQueryRequest readOptions. */ - public readOptions?: (google.datastore.v1.IReadOptions|null); + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - /** RunQueryRequest query. */ - public query?: (google.datastore.v1.IQuery|null); + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @param message PathElement message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - /** RunQueryRequest gqlQuery. */ - public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** + * Decodes a PathElement message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; - /** RunQueryRequest queryType. */ - public queryType?: ("query"|"gqlQuery"); + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; + + /** + * Verifies a PathElement message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PathElement + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; + + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @param message PathElement + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PathElement to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PathElement + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + + /** Properties of an ArrayValue. */ + interface IArrayValue { + + /** ArrayValue values */ + values?: (google.datastore.v1.IValue[]|null); + } + + /** Represents an ArrayValue. */ + class ArrayValue implements IArrayValue { /** - * Creates a new RunQueryRequest instance using the specified properties. + * Constructs a new ArrayValue. * @param [properties] Properties to set - * @returns RunQueryRequest instance */ - public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; + constructor(properties?: google.datastore.v1.IArrayValue); + + /** ArrayValue values. */ + public values: google.datastore.v1.IValue[]; /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode + * Creates a new ArrayValue instance using the specified properties. + * @param [properties] Properties to set + * @returns ArrayValue instance + */ + public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + + /** + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. - * @param message RunQueryRequest message or plain object to encode + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. + * @param message ArrayValue message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RunQueryRequest message from the specified reader or buffer. + * Decodes an ArrayValue message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RunQueryRequest + * @returns ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RunQueryRequest + * @returns ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; /** - * Verifies a RunQueryRequest message. + * Verifies an ArrayValue message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RunQueryRequest + * @returns ArrayValue */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. - * @param message RunQueryRequest + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * @param message ArrayValue * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RunQueryRequest to JSON. + * Converts this ArrayValue to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RunQueryRequest + * Gets the default type url for ArrayValue * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a RunQueryResponse. */ - interface IRunQueryResponse { + /** Properties of a Value. */ + interface IValue { - /** RunQueryResponse batch */ - batch?: (google.datastore.v1.IQueryResultBatch|null); + /** Value nullValue */ + nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - /** RunQueryResponse query */ - query?: (google.datastore.v1.IQuery|null); + /** Value booleanValue */ + booleanValue?: (boolean|null); + + /** Value integerValue */ + integerValue?: (number|Long|string|null); + + /** Value doubleValue */ + doubleValue?: (number|null); + + /** Value timestampValue */ + timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue */ + keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue */ + stringValue?: (string|null); + + /** Value blobValue */ + blobValue?: (Uint8Array|string|null); + + /** Value geoPointValue */ + geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue */ + entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue */ + arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning */ + meaning?: (number|null); + + /** Value excludeFromIndexes */ + excludeFromIndexes?: (boolean|null); } - /** Represents a RunQueryResponse. */ - class RunQueryResponse implements IRunQueryResponse { + /** Represents a Value. */ + class Value implements IValue { /** - * Constructs a new RunQueryResponse. + * Constructs a new Value. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IRunQueryResponse); + constructor(properties?: google.datastore.v1.IValue); - /** RunQueryResponse batch. */ - public batch?: (google.datastore.v1.IQueryResultBatch|null); + /** Value nullValue. */ + public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - /** RunQueryResponse query. */ - public query?: (google.datastore.v1.IQuery|null); + /** Value booleanValue. */ + public booleanValue?: (boolean|null); + + /** Value integerValue. */ + public integerValue?: (number|Long|string|null); + + /** Value doubleValue. */ + public doubleValue?: (number|null); + + /** Value timestampValue. */ + public timestampValue?: (google.protobuf.ITimestamp|null); + + /** Value keyValue. */ + public keyValue?: (google.datastore.v1.IKey|null); + + /** Value stringValue. */ + public stringValue?: (string|null); + + /** Value blobValue. */ + public blobValue?: (Uint8Array|string|null); + + /** Value geoPointValue. */ + public geoPointValue?: (google.type.ILatLng|null); + + /** Value entityValue. */ + public entityValue?: (google.datastore.v1.IEntity|null); + + /** Value arrayValue. */ + public arrayValue?: (google.datastore.v1.IArrayValue|null); + + /** Value meaning. */ + public meaning: number; + + /** Value excludeFromIndexes. */ + public excludeFromIndexes: boolean; + + /** Value valueType. */ + public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); /** - * Creates a new RunQueryResponse instance using the specified properties. + * Creates a new Value instance using the specified properties. * @param [properties] Properties to set - * @returns RunQueryResponse instance + * @returns Value instance */ - public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; + public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @param message RunQueryResponse message or plain object to encode + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * @param message Value message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RunQueryResponse message from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RunQueryResponse + * @returns Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. + * Decodes a Value message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RunQueryResponse + * @returns Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; /** - * Verifies a RunQueryResponse message. + * Verifies a Value message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. + * Creates a Value message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RunQueryResponse + * @returns Value */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @param message RunQueryResponse + * Creates a plain object from a Value message. Also converts values to other types if specified. + * @param message Value * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RunQueryResponse to JSON. + * Converts this Value to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RunQueryResponse + * Gets the default type url for Value * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a BeginTransactionRequest. */ - interface IBeginTransactionRequest { - - /** BeginTransactionRequest projectId */ - projectId?: (string|null); + /** Properties of an Entity. */ + interface IEntity { - /** BeginTransactionRequest databaseId */ - databaseId?: (string|null); + /** Entity key */ + key?: (google.datastore.v1.IKey|null); - /** BeginTransactionRequest transactionOptions */ - transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + /** Entity properties */ + properties?: ({ [k: string]: google.datastore.v1.IValue }|null); } - /** Represents a BeginTransactionRequest. */ - class BeginTransactionRequest implements IBeginTransactionRequest { + /** Represents an Entity. */ + class Entity implements IEntity { /** - * Constructs a new BeginTransactionRequest. + * Constructs a new Entity. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IBeginTransactionRequest); - - /** BeginTransactionRequest projectId. */ - public projectId: string; + constructor(properties?: google.datastore.v1.IEntity); - /** BeginTransactionRequest databaseId. */ - public databaseId: string; + /** Entity key. */ + public key?: (google.datastore.v1.IKey|null); - /** BeginTransactionRequest transactionOptions. */ - public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + /** Entity properties. */ + public properties: { [k: string]: google.datastore.v1.IValue }; /** - * Creates a new BeginTransactionRequest instance using the specified properties. + * Creates a new Entity instance using the specified properties. * @param [properties] Properties to set - * @returns BeginTransactionRequest instance + * @returns Entity instance */ - public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; + public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. - * @param message BeginTransactionRequest message or plain object to encode + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. + * @param message Entity message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * Decodes an Entity message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BeginTransactionRequest + * @returns Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * Decodes an Entity message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns BeginTransactionRequest + * @returns Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; /** - * Verifies a BeginTransactionRequest message. + * Verifies an Entity message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + * Creates an Entity message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns BeginTransactionRequest + * @returns Entity */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. - * @param message BeginTransactionRequest + * Creates a plain object from an Entity message. Also converts values to other types if specified. + * @param message Entity * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this BeginTransactionRequest to JSON. + * Converts this Entity to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for BeginTransactionRequest + * Gets the default type url for Entity * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a BeginTransactionResponse. */ - interface IBeginTransactionResponse { + /** Properties of an EntityResult. */ + interface IEntityResult { - /** BeginTransactionResponse transaction */ - transaction?: (Uint8Array|string|null); + /** EntityResult entity */ + entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version */ + version?: (number|Long|string|null); + + /** EntityResult updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); + + /** EntityResult cursor */ + cursor?: (Uint8Array|string|null); } - /** Represents a BeginTransactionResponse. */ - class BeginTransactionResponse implements IBeginTransactionResponse { + /** Represents an EntityResult. */ + class EntityResult implements IEntityResult { /** - * Constructs a new BeginTransactionResponse. + * Constructs a new EntityResult. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IBeginTransactionResponse); + constructor(properties?: google.datastore.v1.IEntityResult); - /** BeginTransactionResponse transaction. */ - public transaction: (Uint8Array|string); + /** EntityResult entity. */ + public entity?: (google.datastore.v1.IEntity|null); + + /** EntityResult version. */ + public version: (number|Long|string); + + /** EntityResult updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); + + /** EntityResult cursor. */ + public cursor: (Uint8Array|string); /** - * Creates a new BeginTransactionResponse instance using the specified properties. + * Creates a new EntityResult instance using the specified properties. * @param [properties] Properties to set - * @returns BeginTransactionResponse instance + * @returns EntityResult instance */ - public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; + public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @param message BeginTransactionResponse message or plain object to encode + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * @param message EntityResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. + * Decodes an EntityResult message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns BeginTransactionResponse + * @returns EntityResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. + * Decodes an EntityResult message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns BeginTransactionResponse + * @returns EntityResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; /** - * Verifies a BeginTransactionResponse message. + * Verifies an EntityResult message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns BeginTransactionResponse + * @returns EntityResult */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @param message BeginTransactionResponse + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * @param message EntityResult * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this BeginTransactionResponse to JSON. + * Converts this EntityResult to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for BeginTransactionResponse + * Gets the default type url for EntityResult * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a RollbackRequest. */ - interface IRollbackRequest { + namespace EntityResult { - /** RollbackRequest projectId */ - projectId?: (string|null); + /** ResultType enum. */ + enum ResultType { + RESULT_TYPE_UNSPECIFIED = 0, + FULL = 1, + PROJECTION = 2, + KEY_ONLY = 3 + } + } - /** RollbackRequest databaseId */ - databaseId?: (string|null); + /** Properties of a Query. */ + interface IQuery { - /** RollbackRequest transaction */ - transaction?: (Uint8Array|string|null); + /** Query projection */ + projection?: (google.datastore.v1.IProjection[]|null); + + /** Query kind */ + kind?: (google.datastore.v1.IKindExpression[]|null); + + /** Query filter */ + filter?: (google.datastore.v1.IFilter|null); + + /** Query order */ + order?: (google.datastore.v1.IPropertyOrder[]|null); + + /** Query distinctOn */ + distinctOn?: (google.datastore.v1.IPropertyReference[]|null); + + /** Query startCursor */ + startCursor?: (Uint8Array|string|null); + + /** Query endCursor */ + endCursor?: (Uint8Array|string|null); + + /** Query offset */ + offset?: (number|null); + + /** Query limit */ + limit?: (google.protobuf.IInt32Value|null); } - /** Represents a RollbackRequest. */ - class RollbackRequest implements IRollbackRequest { + /** Represents a Query. */ + class Query implements IQuery { /** - * Constructs a new RollbackRequest. + * Constructs a new Query. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IRollbackRequest); + constructor(properties?: google.datastore.v1.IQuery); - /** RollbackRequest projectId. */ - public projectId: string; + /** Query projection. */ + public projection: google.datastore.v1.IProjection[]; - /** RollbackRequest databaseId. */ - public databaseId: string; + /** Query kind. */ + public kind: google.datastore.v1.IKindExpression[]; - /** RollbackRequest transaction. */ - public transaction: (Uint8Array|string); + /** Query filter. */ + public filter?: (google.datastore.v1.IFilter|null); + + /** Query order. */ + public order: google.datastore.v1.IPropertyOrder[]; + + /** Query distinctOn. */ + public distinctOn: google.datastore.v1.IPropertyReference[]; + + /** Query startCursor. */ + public startCursor: (Uint8Array|string); + + /** Query endCursor. */ + public endCursor: (Uint8Array|string); + + /** Query offset. */ + public offset: number; + + /** Query limit. */ + public limit?: (google.protobuf.IInt32Value|null); /** - * Creates a new RollbackRequest instance using the specified properties. + * Creates a new Query instance using the specified properties. * @param [properties] Properties to set - * @returns RollbackRequest instance + * @returns Query instance */ - public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; + public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. - * @param message RollbackRequest message or plain object to encode + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @param message Query message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RollbackRequest message from the specified reader or buffer. + * Decodes a Query message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RollbackRequest + * @returns Query * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * Decodes a Query message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RollbackRequest + * @returns Query * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; /** - * Verifies a RollbackRequest message. + * Verifies a Query message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * Creates a Query message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RollbackRequest + * @returns Query */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. - * @param message RollbackRequest + * Creates a plain object from a Query message. Also converts values to other types if specified. + * @param message Query * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RollbackRequest to JSON. + * Converts this Query to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RollbackRequest + * Gets the default type url for Query * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a RollbackResponse. */ - interface IRollbackResponse { + /** Properties of an AggregationQuery. */ + interface IAggregationQuery { + + /** AggregationQuery nestedQuery */ + nestedQuery?: (google.datastore.v1.IQuery|null); + + /** AggregationQuery aggregations */ + aggregations?: (google.datastore.v1.AggregationQuery.IAggregation[]|null); } - /** Represents a RollbackResponse. */ - class RollbackResponse implements IRollbackResponse { + /** Represents an AggregationQuery. */ + class AggregationQuery implements IAggregationQuery { /** - * Constructs a new RollbackResponse. + * Constructs a new AggregationQuery. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IRollbackResponse); + constructor(properties?: google.datastore.v1.IAggregationQuery); + + /** AggregationQuery nestedQuery. */ + public nestedQuery?: (google.datastore.v1.IQuery|null); + + /** AggregationQuery aggregations. */ + public aggregations: google.datastore.v1.AggregationQuery.IAggregation[]; + + /** AggregationQuery queryType. */ + public queryType?: "nestedQuery"; /** - * Creates a new RollbackResponse instance using the specified properties. + * Creates a new AggregationQuery instance using the specified properties. * @param [properties] Properties to set - * @returns RollbackResponse instance + * @returns AggregationQuery instance */ - public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; + public static create(properties?: google.datastore.v1.IAggregationQuery): google.datastore.v1.AggregationQuery; /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode + * Encodes the specified AggregationQuery message. Does not implicitly {@link google.datastore.v1.AggregationQuery.verify|verify} messages. + * @param message AggregationQuery message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IAggregationQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. - * @param message RollbackResponse message or plain object to encode + * Encodes the specified AggregationQuery message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.verify|verify} messages. + * @param message AggregationQuery message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IAggregationQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RollbackResponse message from the specified reader or buffer. + * Decodes an AggregationQuery message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RollbackResponse + * @returns AggregationQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationQuery; /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * Decodes an AggregationQuery message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RollbackResponse + * @returns AggregationQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationQuery; /** - * Verifies a RollbackResponse message. + * Verifies an AggregationQuery message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * Creates an AggregationQuery message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RollbackResponse + * @returns AggregationQuery */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationQuery; /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. - * @param message RollbackResponse + * Creates a plain object from an AggregationQuery message. Also converts values to other types if specified. + * @param message AggregationQuery * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.AggregationQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RollbackResponse to JSON. + * Converts this AggregationQuery to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RollbackResponse + * Gets the default type url for AggregationQuery * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CommitRequest. */ - interface ICommitRequest { + namespace AggregationQuery { - /** CommitRequest projectId */ - projectId?: (string|null); + /** Properties of an Aggregation. */ + interface IAggregation { - /** CommitRequest databaseId */ - databaseId?: (string|null); + /** Aggregation count */ + count?: (google.datastore.v1.AggregationQuery.Aggregation.ICount|null); - /** CommitRequest mode */ - mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); + /** Aggregation alias */ + alias?: (string|null); + } - /** CommitRequest transaction */ - transaction?: (Uint8Array|string|null); + /** Represents an Aggregation. */ + class Aggregation implements IAggregation { - /** CommitRequest mutations */ - mutations?: (google.datastore.v1.IMutation[]|null); - } + /** + * Constructs a new Aggregation. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.AggregationQuery.IAggregation); - /** Represents a CommitRequest. */ - class CommitRequest implements ICommitRequest { + /** Aggregation count. */ + public count?: (google.datastore.v1.AggregationQuery.Aggregation.ICount|null); - /** - * Constructs a new CommitRequest. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.ICommitRequest); + /** Aggregation alias. */ + public alias: string; - /** CommitRequest projectId. */ - public projectId: string; + /** Aggregation operator. */ + public operator?: "count"; - /** CommitRequest databaseId. */ - public databaseId: string; + /** + * Creates a new Aggregation instance using the specified properties. + * @param [properties] Properties to set + * @returns Aggregation instance + */ + public static create(properties?: google.datastore.v1.AggregationQuery.IAggregation): google.datastore.v1.AggregationQuery.Aggregation; - /** CommitRequest mode. */ - public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); + /** + * Encodes the specified Aggregation message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.verify|verify} messages. + * @param message Aggregation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.AggregationQuery.IAggregation, writer?: $protobuf.Writer): $protobuf.Writer; - /** CommitRequest transaction. */ - public transaction?: (Uint8Array|string|null); + /** + * Encodes the specified Aggregation message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.verify|verify} messages. + * @param message Aggregation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.AggregationQuery.IAggregation, writer?: $protobuf.Writer): $protobuf.Writer; - /** CommitRequest mutations. */ - public mutations: google.datastore.v1.IMutation[]; + /** + * Decodes an Aggregation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Aggregation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationQuery.Aggregation; - /** CommitRequest transactionSelector. */ - public transactionSelector?: "transaction"; + /** + * Decodes an Aggregation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Aggregation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationQuery.Aggregation; + + /** + * Verifies an Aggregation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Aggregation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Aggregation + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationQuery.Aggregation; + + /** + * Creates a plain object from an Aggregation message. Also converts values to other types if specified. + * @param message Aggregation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AggregationQuery.Aggregation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Aggregation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Aggregation + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace Aggregation { + + /** Properties of a Count. */ + interface ICount { + + /** Count upTo */ + upTo?: (google.protobuf.IInt64Value|null); + } + + /** Represents a Count. */ + class Count implements ICount { + + /** + * Constructs a new Count. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.AggregationQuery.Aggregation.ICount); + + /** Count upTo. */ + public upTo?: (google.protobuf.IInt64Value|null); + + /** + * Creates a new Count instance using the specified properties. + * @param [properties] Properties to set + * @returns Count instance + */ + public static create(properties?: google.datastore.v1.AggregationQuery.Aggregation.ICount): google.datastore.v1.AggregationQuery.Aggregation.Count; + + /** + * Encodes the specified Count message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Count.verify|verify} messages. + * @param message Count message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.AggregationQuery.Aggregation.ICount, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Count message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Count.verify|verify} messages. + * @param message Count message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.AggregationQuery.Aggregation.ICount, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Count message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Count + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationQuery.Aggregation.Count; + + /** + * Decodes a Count message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Count + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationQuery.Aggregation.Count; + + /** + * Verifies a Count message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Count message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Count + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationQuery.Aggregation.Count; + + /** + * Creates a plain object from a Count message. Also converts values to other types if specified. + * @param message Count + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AggregationQuery.Aggregation.Count, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Count to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Count + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + } + + /** Properties of a KindExpression. */ + interface IKindExpression { + + /** KindExpression name */ + name?: (string|null); + } + + /** Represents a KindExpression. */ + class KindExpression implements IKindExpression { /** - * Creates a new CommitRequest instance using the specified properties. + * Constructs a new KindExpression. * @param [properties] Properties to set - * @returns CommitRequest instance */ - public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; + constructor(properties?: google.datastore.v1.IKindExpression); + + /** KindExpression name. */ + public name: string; /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode + * Creates a new KindExpression instance using the specified properties. + * @param [properties] Properties to set + * @returns KindExpression instance + */ + public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + + /** + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. - * @param message CommitRequest message or plain object to encode + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * @param message KindExpression message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CommitRequest message from the specified reader or buffer. + * Decodes a KindExpression message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CommitRequest + * @returns KindExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * Decodes a KindExpression message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CommitRequest + * @returns KindExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; /** - * Verifies a CommitRequest message. + * Verifies a KindExpression message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CommitRequest + * @returns KindExpression */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. - * @param message CommitRequest + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * @param message KindExpression * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CommitRequest to JSON. + * Converts this KindExpression to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for CommitRequest + * Gets the default type url for KindExpression * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace CommitRequest { - - /** Mode enum. */ - enum Mode { - MODE_UNSPECIFIED = 0, - TRANSACTIONAL = 1, - NON_TRANSACTIONAL = 2 - } - } - - /** Properties of a CommitResponse. */ - interface ICommitResponse { - - /** CommitResponse mutationResults */ - mutationResults?: (google.datastore.v1.IMutationResult[]|null); - - /** CommitResponse indexUpdates */ - indexUpdates?: (number|null); + /** Properties of a PropertyReference. */ + interface IPropertyReference { - /** CommitResponse commitTime */ - commitTime?: (google.protobuf.ITimestamp|null); + /** PropertyReference name */ + name?: (string|null); } - /** Represents a CommitResponse. */ - class CommitResponse implements ICommitResponse { + /** Represents a PropertyReference. */ + class PropertyReference implements IPropertyReference { /** - * Constructs a new CommitResponse. + * Constructs a new PropertyReference. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ICommitResponse); - - /** CommitResponse mutationResults. */ - public mutationResults: google.datastore.v1.IMutationResult[]; - - /** CommitResponse indexUpdates. */ - public indexUpdates: number; + constructor(properties?: google.datastore.v1.IPropertyReference); - /** CommitResponse commitTime. */ - public commitTime?: (google.protobuf.ITimestamp|null); + /** PropertyReference name. */ + public name: string; /** - * Creates a new CommitResponse instance using the specified properties. + * Creates a new PropertyReference instance using the specified properties. * @param [properties] Properties to set - * @returns CommitResponse instance + * @returns PropertyReference instance */ - public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; + public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @param message CommitResponse message or plain object to encode + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * @param message PropertyReference message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CommitResponse message from the specified reader or buffer. + * Decodes a PropertyReference message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CommitResponse + * @returns PropertyReference * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CommitResponse + * @returns PropertyReference * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; /** - * Verifies a CommitResponse message. + * Verifies a PropertyReference message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CommitResponse + * @returns PropertyReference */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. - * @param message CommitResponse + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * @param message PropertyReference * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CommitResponse to JSON. + * Converts this PropertyReference to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for CommitResponse + * Gets the default type url for PropertyReference * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of an AllocateIdsRequest. */ - interface IAllocateIdsRequest { - - /** AllocateIdsRequest projectId */ - projectId?: (string|null); - - /** AllocateIdsRequest databaseId */ - databaseId?: (string|null); + /** Properties of a Projection. */ + interface IProjection { - /** AllocateIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); + /** Projection property */ + property?: (google.datastore.v1.IPropertyReference|null); } - /** Represents an AllocateIdsRequest. */ - class AllocateIdsRequest implements IAllocateIdsRequest { + /** Represents a Projection. */ + class Projection implements IProjection { /** - * Constructs a new AllocateIdsRequest. + * Constructs a new Projection. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IAllocateIdsRequest); - - /** AllocateIdsRequest projectId. */ - public projectId: string; - - /** AllocateIdsRequest databaseId. */ - public databaseId: string; + constructor(properties?: google.datastore.v1.IProjection); - /** AllocateIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** Projection property. */ + public property?: (google.datastore.v1.IPropertyReference|null); /** - * Creates a new AllocateIdsRequest instance using the specified properties. + * Creates a new Projection instance using the specified properties. * @param [properties] Properties to set - * @returns AllocateIdsRequest instance + * @returns Projection instance */ - public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; + public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. - * @param message AllocateIdsRequest message or plain object to encode + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * @param message Projection message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * Decodes a Projection message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns AllocateIdsRequest + * @returns Projection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * Decodes a Projection message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns AllocateIdsRequest + * @returns Projection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; /** - * Verifies an AllocateIdsRequest message. + * Verifies a Projection message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * Creates a Projection message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns AllocateIdsRequest + * @returns Projection */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. - * @param message AllocateIdsRequest + * Creates a plain object from a Projection message. Also converts values to other types if specified. + * @param message Projection * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this AllocateIdsRequest to JSON. + * Converts this Projection to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for AllocateIdsRequest + * Gets the default type url for Projection * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of an AllocateIdsResponse. */ - interface IAllocateIdsResponse { + /** Properties of a PropertyOrder. */ + interface IPropertyOrder { - /** AllocateIdsResponse keys */ - keys?: (google.datastore.v1.IKey[]|null); + /** PropertyOrder property */ + property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction */ + direction?: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction|null); } - /** Represents an AllocateIdsResponse. */ - class AllocateIdsResponse implements IAllocateIdsResponse { + /** Represents a PropertyOrder. */ + class PropertyOrder implements IPropertyOrder { /** - * Constructs a new AllocateIdsResponse. + * Constructs a new PropertyOrder. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IAllocateIdsResponse); + constructor(properties?: google.datastore.v1.IPropertyOrder); - /** AllocateIdsResponse keys. */ - public keys: google.datastore.v1.IKey[]; + /** PropertyOrder property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** PropertyOrder direction. */ + public direction: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction); /** - * Creates a new AllocateIdsResponse instance using the specified properties. + * Creates a new PropertyOrder instance using the specified properties. * @param [properties] Properties to set - * @returns AllocateIdsResponse instance + * @returns PropertyOrder instance */ - public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; + public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @param message AllocateIdsResponse message or plain object to encode + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * @param message PropertyOrder message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * Decodes a PropertyOrder message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns AllocateIdsResponse + * @returns PropertyOrder * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns AllocateIdsResponse + * @returns PropertyOrder * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; /** - * Verifies an AllocateIdsResponse message. + * Verifies a PropertyOrder message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns AllocateIdsResponse + * @returns PropertyOrder */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @param message AllocateIdsResponse + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * @param message PropertyOrder * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this AllocateIdsResponse to JSON. + * Converts this PropertyOrder to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for AllocateIdsResponse + * Gets the default type url for PropertyOrder * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a ReserveIdsRequest. */ - interface IReserveIdsRequest { + namespace PropertyOrder { - /** ReserveIdsRequest projectId */ - projectId?: (string|null); + /** Direction enum. */ + enum Direction { + DIRECTION_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } + } - /** ReserveIdsRequest databaseId */ - databaseId?: (string|null); + /** Properties of a Filter. */ + interface IFilter { - /** ReserveIdsRequest keys */ - keys?: (google.datastore.v1.IKey[]|null); + /** Filter compositeFilter */ + compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + + /** Filter propertyFilter */ + propertyFilter?: (google.datastore.v1.IPropertyFilter|null); } - /** Represents a ReserveIdsRequest. */ - class ReserveIdsRequest implements IReserveIdsRequest { + /** Represents a Filter. */ + class Filter implements IFilter { /** - * Constructs a new ReserveIdsRequest. + * Constructs a new Filter. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IReserveIdsRequest); + constructor(properties?: google.datastore.v1.IFilter); - /** ReserveIdsRequest projectId. */ - public projectId: string; + /** Filter compositeFilter. */ + public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); - /** ReserveIdsRequest databaseId. */ - public databaseId: string; + /** Filter propertyFilter. */ + public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); - /** ReserveIdsRequest keys. */ - public keys: google.datastore.v1.IKey[]; + /** Filter filterType. */ + public filterType?: ("compositeFilter"|"propertyFilter"); /** - * Creates a new ReserveIdsRequest instance using the specified properties. + * Creates a new Filter instance using the specified properties. * @param [properties] Properties to set - * @returns ReserveIdsRequest instance + * @returns Filter instance */ - public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; + public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. - * @param message ReserveIdsRequest message or plain object to encode + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * @param message Filter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * Decodes a Filter message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ReserveIdsRequest + * @returns Filter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * Decodes a Filter message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ReserveIdsRequest + * @returns Filter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; /** - * Verifies a ReserveIdsRequest message. + * Verifies a Filter message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * Creates a Filter message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ReserveIdsRequest + * @returns Filter */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. - * @param message ReserveIdsRequest + * Creates a plain object from a Filter message. Also converts values to other types if specified. + * @param message Filter * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ReserveIdsRequest to JSON. + * Converts this Filter to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for ReserveIdsRequest + * Gets the default type url for Filter * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a ReserveIdsResponse. */ - interface IReserveIdsResponse { + /** Properties of a CompositeFilter. */ + interface ICompositeFilter { + + /** CompositeFilter op */ + op?: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator|null); + + /** CompositeFilter filters */ + filters?: (google.datastore.v1.IFilter[]|null); } - /** Represents a ReserveIdsResponse. */ - class ReserveIdsResponse implements IReserveIdsResponse { + /** Represents a CompositeFilter. */ + class CompositeFilter implements ICompositeFilter { /** - * Constructs a new ReserveIdsResponse. + * Constructs a new CompositeFilter. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IReserveIdsResponse); + constructor(properties?: google.datastore.v1.ICompositeFilter); + + /** CompositeFilter op. */ + public op: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator); + + /** CompositeFilter filters. */ + public filters: google.datastore.v1.IFilter[]; /** - * Creates a new ReserveIdsResponse instance using the specified properties. + * Creates a new CompositeFilter instance using the specified properties. * @param [properties] Properties to set - * @returns ReserveIdsResponse instance + * @returns CompositeFilter instance */ - public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; + public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. - * @param message ReserveIdsResponse message or plain object to encode + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * @param message CompositeFilter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * Decodes a CompositeFilter message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ReserveIdsResponse + * @returns CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ReserveIdsResponse + * @returns CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; /** - * Verifies a ReserveIdsResponse message. + * Verifies a CompositeFilter message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ReserveIdsResponse + * @returns CompositeFilter */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. - * @param message ReserveIdsResponse + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * @param message CompositeFilter * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ReserveIdsResponse to JSON. + * Converts this CompositeFilter to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for ReserveIdsResponse + * Gets the default type url for CompositeFilter * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Mutation. */ - interface IMutation { - - /** Mutation insert */ - insert?: (google.datastore.v1.IEntity|null); + namespace CompositeFilter { - /** Mutation update */ - update?: (google.datastore.v1.IEntity|null); + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + AND = 1 + } + } - /** Mutation upsert */ - upsert?: (google.datastore.v1.IEntity|null); + /** Properties of a PropertyFilter. */ + interface IPropertyFilter { - /** Mutation delete */ - "delete"?: (google.datastore.v1.IKey|null); + /** PropertyFilter property */ + property?: (google.datastore.v1.IPropertyReference|null); - /** Mutation baseVersion */ - baseVersion?: (number|Long|string|null); + /** PropertyFilter op */ + op?: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator|null); - /** Mutation updateTime */ - updateTime?: (google.protobuf.ITimestamp|null); + /** PropertyFilter value */ + value?: (google.datastore.v1.IValue|null); } - /** Represents a Mutation. */ - class Mutation implements IMutation { + /** Represents a PropertyFilter. */ + class PropertyFilter implements IPropertyFilter { /** - * Constructs a new Mutation. + * Constructs a new PropertyFilter. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IMutation); - - /** Mutation insert. */ - public insert?: (google.datastore.v1.IEntity|null); - - /** Mutation update. */ - public update?: (google.datastore.v1.IEntity|null); - - /** Mutation upsert. */ - public upsert?: (google.datastore.v1.IEntity|null); - - /** Mutation delete. */ - public delete?: (google.datastore.v1.IKey|null); - - /** Mutation baseVersion. */ - public baseVersion?: (number|Long|string|null); + constructor(properties?: google.datastore.v1.IPropertyFilter); - /** Mutation updateTime. */ - public updateTime?: (google.protobuf.ITimestamp|null); + /** PropertyFilter property. */ + public property?: (google.datastore.v1.IPropertyReference|null); - /** Mutation operation. */ - public operation?: ("insert"|"update"|"upsert"|"delete"); + /** PropertyFilter op. */ + public op: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator); - /** Mutation conflictDetectionStrategy. */ - public conflictDetectionStrategy?: ("baseVersion"|"updateTime"); + /** PropertyFilter value. */ + public value?: (google.datastore.v1.IValue|null); /** - * Creates a new Mutation instance using the specified properties. + * Creates a new PropertyFilter instance using the specified properties. * @param [properties] Properties to set - * @returns Mutation instance + * @returns PropertyFilter instance */ - public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; + public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. - * @param message Mutation message or plain object to encode + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @param message PropertyFilter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Mutation message from the specified reader or buffer. + * Decodes a PropertyFilter message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Mutation + * @returns PropertyFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Mutation + * @returns PropertyFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; /** - * Verifies a Mutation message. + * Verifies a PropertyFilter message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Mutation + * @returns PropertyFilter */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. - * @param message Mutation + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * @param message PropertyFilter * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Mutation to JSON. + * Converts this PropertyFilter to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Mutation + * Gets the default type url for PropertyFilter * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a MutationResult. */ - interface IMutationResult { + namespace PropertyFilter { - /** MutationResult key */ - key?: (google.datastore.v1.IKey|null); + /** Operator enum. */ + enum Operator { + OPERATOR_UNSPECIFIED = 0, + LESS_THAN = 1, + LESS_THAN_OR_EQUAL = 2, + GREATER_THAN = 3, + GREATER_THAN_OR_EQUAL = 4, + EQUAL = 5, + IN = 6, + NOT_EQUAL = 9, + HAS_ANCESTOR = 11, + NOT_IN = 13 + } + } - /** MutationResult version */ - version?: (number|Long|string|null); + /** Properties of a GqlQuery. */ + interface IGqlQuery { - /** MutationResult updateTime */ - updateTime?: (google.protobuf.ITimestamp|null); + /** GqlQuery queryString */ + queryString?: (string|null); - /** MutationResult conflictDetected */ - conflictDetected?: (boolean|null); - } + /** GqlQuery allowLiterals */ + allowLiterals?: (boolean|null); - /** Represents a MutationResult. */ - class MutationResult implements IMutationResult { + /** GqlQuery namedBindings */ + namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + + /** GqlQuery positionalBindings */ + positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); + } + + /** Represents a GqlQuery. */ + class GqlQuery implements IGqlQuery { /** - * Constructs a new MutationResult. + * Constructs a new GqlQuery. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IMutationResult); + constructor(properties?: google.datastore.v1.IGqlQuery); - /** MutationResult key. */ - public key?: (google.datastore.v1.IKey|null); + /** GqlQuery queryString. */ + public queryString: string; - /** MutationResult version. */ - public version: (number|Long|string); + /** GqlQuery allowLiterals. */ + public allowLiterals: boolean; - /** MutationResult updateTime. */ - public updateTime?: (google.protobuf.ITimestamp|null); + /** GqlQuery namedBindings. */ + public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; - /** MutationResult conflictDetected. */ - public conflictDetected: boolean; + /** GqlQuery positionalBindings. */ + public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; /** - * Creates a new MutationResult instance using the specified properties. + * Creates a new GqlQuery instance using the specified properties. * @param [properties] Properties to set - * @returns MutationResult instance + * @returns GqlQuery instance */ - public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; + public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. - * @param message MutationResult message or plain object to encode + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * @param message GqlQuery message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MutationResult message from the specified reader or buffer. + * Decodes a GqlQuery message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MutationResult + * @returns GqlQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns MutationResult + * @returns GqlQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; /** - * Verifies a MutationResult message. + * Verifies a GqlQuery message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns MutationResult + * @returns GqlQuery */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. - * @param message MutationResult + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * @param message GqlQuery * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this MutationResult to JSON. + * Converts this GqlQuery to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for MutationResult + * Gets the default type url for GqlQuery * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a ReadOptions. */ - interface IReadOptions { - - /** ReadOptions readConsistency */ - readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); + /** Properties of a GqlQueryParameter. */ + interface IGqlQueryParameter { - /** ReadOptions transaction */ - transaction?: (Uint8Array|string|null); + /** GqlQueryParameter value */ + value?: (google.datastore.v1.IValue|null); - /** ReadOptions readTime */ - readTime?: (google.protobuf.ITimestamp|null); + /** GqlQueryParameter cursor */ + cursor?: (Uint8Array|string|null); } - /** Represents a ReadOptions. */ - class ReadOptions implements IReadOptions { + /** Represents a GqlQueryParameter. */ + class GqlQueryParameter implements IGqlQueryParameter { /** - * Constructs a new ReadOptions. + * Constructs a new GqlQueryParameter. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IReadOptions); - - /** ReadOptions readConsistency. */ - public readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); + constructor(properties?: google.datastore.v1.IGqlQueryParameter); - /** ReadOptions transaction. */ - public transaction?: (Uint8Array|string|null); + /** GqlQueryParameter value. */ + public value?: (google.datastore.v1.IValue|null); - /** ReadOptions readTime. */ - public readTime?: (google.protobuf.ITimestamp|null); + /** GqlQueryParameter cursor. */ + public cursor?: (Uint8Array|string|null); - /** ReadOptions consistencyType. */ - public consistencyType?: ("readConsistency"|"transaction"|"readTime"); + /** GqlQueryParameter parameterType. */ + public parameterType?: ("value"|"cursor"); /** - * Creates a new ReadOptions instance using the specified properties. + * Creates a new GqlQueryParameter instance using the specified properties. * @param [properties] Properties to set - * @returns ReadOptions instance + * @returns GqlQueryParameter instance */ - public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; + public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. - * @param message ReadOptions message or plain object to encode + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @param message GqlQueryParameter message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a ReadOptions message from the specified reader or buffer. + * Decodes a GqlQueryParameter message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ReadOptions + * @returns GqlQueryParameter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ReadOptions + * @returns GqlQueryParameter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; /** - * Verifies a ReadOptions message. + * Verifies a GqlQueryParameter message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ReadOptions + * @returns GqlQueryParameter */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. - * @param message ReadOptions + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * @param message GqlQueryParameter * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ReadOptions to JSON. + * Converts this GqlQueryParameter to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for ReadOptions + * Gets the default type url for GqlQueryParameter * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace ReadOptions { + /** Properties of a QueryResultBatch. */ + interface IQueryResultBatch { - /** ReadConsistency enum. */ - enum ReadConsistency { - READ_CONSISTENCY_UNSPECIFIED = 0, - STRONG = 1, - EVENTUAL = 2 - } - } + /** QueryResultBatch skippedResults */ + skippedResults?: (number|null); - /** Properties of a TransactionOptions. */ - interface ITransactionOptions { + /** QueryResultBatch skippedCursor */ + skippedCursor?: (Uint8Array|string|null); - /** TransactionOptions readWrite */ - readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + /** QueryResultBatch entityResultType */ + entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null); - /** TransactionOptions readOnly */ - readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + /** QueryResultBatch entityResults */ + entityResults?: (google.datastore.v1.IEntityResult[]|null); + + /** QueryResultBatch endCursor */ + endCursor?: (Uint8Array|string|null); + + /** QueryResultBatch moreResults */ + moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); + + /** QueryResultBatch snapshotVersion */ + snapshotVersion?: (number|Long|string|null); + + /** QueryResultBatch readTime */ + readTime?: (google.protobuf.ITimestamp|null); } - /** Represents a TransactionOptions. */ - class TransactionOptions implements ITransactionOptions { + /** Represents a QueryResultBatch. */ + class QueryResultBatch implements IQueryResultBatch { /** - * Constructs a new TransactionOptions. + * Constructs a new QueryResultBatch. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ITransactionOptions); + constructor(properties?: google.datastore.v1.IQueryResultBatch); - /** TransactionOptions readWrite. */ - public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); + /** QueryResultBatch skippedResults. */ + public skippedResults: number; - /** TransactionOptions readOnly. */ - public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + /** QueryResultBatch skippedCursor. */ + public skippedCursor: (Uint8Array|string); - /** TransactionOptions mode. */ - public mode?: ("readWrite"|"readOnly"); + /** QueryResultBatch entityResultType. */ + public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType); + + /** QueryResultBatch entityResults. */ + public entityResults: google.datastore.v1.IEntityResult[]; + + /** QueryResultBatch endCursor. */ + public endCursor: (Uint8Array|string); + + /** QueryResultBatch moreResults. */ + public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); + + /** QueryResultBatch snapshotVersion. */ + public snapshotVersion: (number|Long|string); + + /** QueryResultBatch readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new QueryResultBatch instance using the specified properties. * @param [properties] Properties to set - * @returns TransactionOptions instance + * @returns QueryResultBatch instance */ - public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; + public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * @param message QueryResultBatch message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a QueryResultBatch message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TransactionOptions + * @returns QueryResultBatch * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryResultBatch + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + + /** + * Verifies a QueryResultBatch message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryResultBatch + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + + /** + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. + * @param message QueryResultBatch + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this QueryResultBatch to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for QueryResultBatch + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace QueryResultBatch { + + /** MoreResultsType enum. */ + enum MoreResultsType { + MORE_RESULTS_TYPE_UNSPECIFIED = 0, + NOT_FINISHED = 1, + MORE_RESULTS_AFTER_LIMIT = 2, + MORE_RESULTS_AFTER_CURSOR = 4, + NO_MORE_RESULTS = 3 + } + } + + /** Represents a Datastore */ + class Datastore extends $protobuf.rpc.Service { + + /** + * Constructs a new Datastore service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new Datastore service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Datastore; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @param callback Node-style callback called with the error, if any, and LookupResponse + */ + public lookup(request: google.datastore.v1.ILookupRequest, callback: google.datastore.v1.Datastore.LookupCallback): void; + + /** + * Calls Lookup. + * @param request LookupRequest message or plain object + * @returns Promise + */ + public lookup(request: google.datastore.v1.ILookupRequest): Promise; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunQueryResponse + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest, callback: google.datastore.v1.Datastore.RunQueryCallback): void; + + /** + * Calls RunQuery. + * @param request RunQueryRequest message or plain object + * @returns Promise + */ + public runQuery(request: google.datastore.v1.IRunQueryRequest): Promise; + + /** + * Calls RunAggregationQuery. + * @param request RunAggregationQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RunAggregationQueryResponse + */ + public runAggregationQuery(request: google.datastore.v1.IRunAggregationQueryRequest, callback: google.datastore.v1.Datastore.RunAggregationQueryCallback): void; + + /** + * Calls RunAggregationQuery. + * @param request RunAggregationQueryRequest message or plain object + * @returns Promise + */ + public runAggregationQuery(request: google.datastore.v1.IRunAggregationQueryRequest): Promise; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @param callback Node-style callback called with the error, if any, and BeginTransactionResponse + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest, callback: google.datastore.v1.Datastore.BeginTransactionCallback): void; + + /** + * Calls BeginTransaction. + * @param request BeginTransactionRequest message or plain object + * @returns Promise + */ + public beginTransaction(request: google.datastore.v1.IBeginTransactionRequest): Promise; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CommitResponse + */ + public commit(request: google.datastore.v1.ICommitRequest, callback: google.datastore.v1.Datastore.CommitCallback): void; + + /** + * Calls Commit. + * @param request CommitRequest message or plain object + * @returns Promise + */ + public commit(request: google.datastore.v1.ICommitRequest): Promise; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RollbackResponse + */ + public rollback(request: google.datastore.v1.IRollbackRequest, callback: google.datastore.v1.Datastore.RollbackCallback): void; + + /** + * Calls Rollback. + * @param request RollbackRequest message or plain object + * @returns Promise + */ + public rollback(request: google.datastore.v1.IRollbackRequest): Promise; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and AllocateIdsResponse + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest, callback: google.datastore.v1.Datastore.AllocateIdsCallback): void; + + /** + * Calls AllocateIds. + * @param request AllocateIdsRequest message or plain object + * @returns Promise + */ + public allocateIds(request: google.datastore.v1.IAllocateIdsRequest): Promise; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ReserveIdsResponse + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest, callback: google.datastore.v1.Datastore.ReserveIdsCallback): void; + + /** + * Calls ReserveIds. + * @param request ReserveIdsRequest message or plain object + * @returns Promise + */ + public reserveIds(request: google.datastore.v1.IReserveIdsRequest): Promise; + } + + namespace Datastore { + + /** + * Callback as used by {@link google.datastore.v1.Datastore|lookup}. + * @param error Error, if any + * @param [response] LookupResponse + */ + type LookupCallback = (error: (Error|null), response?: google.datastore.v1.LookupResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. + * @param error Error, if any + * @param [response] RunQueryResponse + */ + type RunQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunQueryResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|runAggregationQuery}. + * @param error Error, if any + * @param [response] RunAggregationQueryResponse + */ + type RunAggregationQueryCallback = (error: (Error|null), response?: google.datastore.v1.RunAggregationQueryResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. + * @param error Error, if any + * @param [response] BeginTransactionResponse + */ + type BeginTransactionCallback = (error: (Error|null), response?: google.datastore.v1.BeginTransactionResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|commit}. + * @param error Error, if any + * @param [response] CommitResponse + */ + type CommitCallback = (error: (Error|null), response?: google.datastore.v1.CommitResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|rollback}. + * @param error Error, if any + * @param [response] RollbackResponse + */ + type RollbackCallback = (error: (Error|null), response?: google.datastore.v1.RollbackResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. + * @param error Error, if any + * @param [response] AllocateIdsResponse + */ + type AllocateIdsCallback = (error: (Error|null), response?: google.datastore.v1.AllocateIdsResponse) => void; + + /** + * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. + * @param error Error, if any + * @param [response] ReserveIdsResponse + */ + type ReserveIdsCallback = (error: (Error|null), response?: google.datastore.v1.ReserveIdsResponse) => void; + } + + /** Properties of a LookupRequest. */ + interface ILookupRequest { + + /** LookupRequest projectId */ + projectId?: (string|null); + + /** LookupRequest databaseId */ + databaseId?: (string|null); + + /** LookupRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); + } + + /** Represents a LookupRequest. */ + class LookupRequest implements ILookupRequest { + + /** + * Constructs a new LookupRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupRequest); + + /** LookupRequest projectId. */ + public projectId: string; + + /** LookupRequest databaseId. */ + public databaseId: string; + + /** LookupRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** LookupRequest keys. */ + public keys: google.datastore.v1.IKey[]; + + /** + * Creates a new LookupRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupRequest instance + */ + public static create(properties?: google.datastore.v1.ILookupRequest): google.datastore.v1.LookupRequest; + + /** + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * @param message LookupRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookupRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from - * @returns TransactionOptions + * @param [length] Message length if known beforehand + * @returns LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupRequest; /** - * Verifies a TransactionOptions message. + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupRequest; + + /** + * Verifies a LookupRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns TransactionOptions + * @returns LookupRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupRequest; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. - * @param message TransactionOptions + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + * @param message LookupRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.LookupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this TransactionOptions to JSON. + * Converts this LookupRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for TransactionOptions + * Gets the default type url for LookupRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace TransactionOptions { + /** Properties of a LookupResponse. */ + interface ILookupResponse { - /** Properties of a ReadWrite. */ - interface IReadWrite { + /** LookupResponse found */ + found?: (google.datastore.v1.IEntityResult[]|null); - /** ReadWrite previousTransaction */ - previousTransaction?: (Uint8Array|string|null); - } + /** LookupResponse missing */ + missing?: (google.datastore.v1.IEntityResult[]|null); - /** Represents a ReadWrite. */ - class ReadWrite implements IReadWrite { + /** LookupResponse deferred */ + deferred?: (google.datastore.v1.IKey[]|null); - /** - * Constructs a new ReadWrite. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); + /** LookupResponse readTime */ + readTime?: (google.protobuf.ITimestamp|null); + } - /** ReadWrite previousTransaction. */ - public previousTransaction: (Uint8Array|string); + /** Represents a LookupResponse. */ + class LookupResponse implements ILookupResponse { - /** - * Creates a new ReadWrite instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadWrite instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; + /** + * Constructs a new LookupResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.ILookupResponse); - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + /** LookupResponse found. */ + public found: google.datastore.v1.IEntityResult[]; - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + /** LookupResponse missing. */ + public missing: google.datastore.v1.IEntityResult[]; - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; + /** LookupResponse deferred. */ + public deferred: google.datastore.v1.IKey[]; - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; + /** LookupResponse readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); - /** - * Verifies a ReadWrite message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Creates a new LookupResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns LookupResponse instance + */ + public static create(properties?: google.datastore.v1.ILookupResponse): google.datastore.v1.LookupResponse; - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadWrite - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; + /** + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @param message ReadWrite - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @param message LookupResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.ILookupResponse, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Converts this ReadWrite to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Decodes a LookupResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.LookupResponse; - /** - * Gets the default type url for ReadWrite - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } + /** + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LookupResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.LookupResponse; - /** Properties of a ReadOnly. */ - interface IReadOnly { + /** + * Verifies a LookupResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** ReadOnly readTime */ - readTime?: (google.protobuf.ITimestamp|null); - } + /** + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LookupResponse + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.LookupResponse; + + /** + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * @param message LookupResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.LookupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LookupResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for LookupResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RunQueryRequest. */ + interface IRunQueryRequest { + + /** RunQueryRequest projectId */ + projectId?: (string|null); + + /** RunQueryRequest databaseId */ + databaseId?: (string|null); + + /** RunQueryRequest partitionId */ + partitionId?: (google.datastore.v1.IPartitionId|null); + + /** RunQueryRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunQueryRequest query */ + query?: (google.datastore.v1.IQuery|null); + + /** RunQueryRequest gqlQuery */ + gqlQuery?: (google.datastore.v1.IGqlQuery|null); + } + + /** Represents a RunQueryRequest. */ + class RunQueryRequest implements IRunQueryRequest { + + /** + * Constructs a new RunQueryRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IRunQueryRequest); + + /** RunQueryRequest projectId. */ + public projectId: string; + + /** RunQueryRequest databaseId. */ + public databaseId: string; + + /** RunQueryRequest partitionId. */ + public partitionId?: (google.datastore.v1.IPartitionId|null); - /** Represents a ReadOnly. */ - class ReadOnly implements IReadOnly { + /** RunQueryRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); - /** - * Constructs a new ReadOnly. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + /** RunQueryRequest query. */ + public query?: (google.datastore.v1.IQuery|null); - /** ReadOnly readTime. */ - public readTime?: (google.protobuf.ITimestamp|null); + /** RunQueryRequest gqlQuery. */ + public gqlQuery?: (google.datastore.v1.IGqlQuery|null); - /** - * Creates a new ReadOnly instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOnly instance - */ - public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; + /** RunQueryRequest queryType. */ + public queryType?: ("query"|"gqlQuery"); - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new RunQueryRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RunQueryRequest instance + */ + public static create(properties?: google.datastore.v1.IRunQueryRequest): google.datastore.v1.RunQueryRequest; - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; + /** + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * @param message RunQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IRunQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; + /** + * Decodes a RunQueryRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryRequest; - /** - * Verifies a ReadOnly message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RunQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryRequest; - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOnly - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + /** + * Verifies a RunQueryRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @param message ReadOnly - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RunQueryRequest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryRequest; - /** - * Converts this ReadOnly to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * @param message RunQueryRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.RunQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Gets the default type url for ReadOnly - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - } + /** + * Converts this RunQueryRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; - /** Properties of a PartitionId. */ - interface IPartitionId { + /** + * Gets the default type url for RunQueryRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } - /** PartitionId projectId */ - projectId?: (string|null); + /** Properties of a RunQueryResponse. */ + interface IRunQueryResponse { - /** PartitionId databaseId */ - databaseId?: (string|null); + /** RunQueryResponse batch */ + batch?: (google.datastore.v1.IQueryResultBatch|null); - /** PartitionId namespaceId */ - namespaceId?: (string|null); + /** RunQueryResponse query */ + query?: (google.datastore.v1.IQuery|null); } - /** Represents a PartitionId. */ - class PartitionId implements IPartitionId { + /** Represents a RunQueryResponse. */ + class RunQueryResponse implements IRunQueryResponse { /** - * Constructs a new PartitionId. + * Constructs a new RunQueryResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPartitionId); - - /** PartitionId projectId. */ - public projectId: string; + constructor(properties?: google.datastore.v1.IRunQueryResponse); - /** PartitionId databaseId. */ - public databaseId: string; + /** RunQueryResponse batch. */ + public batch?: (google.datastore.v1.IQueryResultBatch|null); - /** PartitionId namespaceId. */ - public namespaceId: string; + /** RunQueryResponse query. */ + public query?: (google.datastore.v1.IQuery|null); /** - * Creates a new PartitionId instance using the specified properties. + * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set - * @returns PartitionId instance + * @returns RunQueryResponse instance */ - public static create(properties?: google.datastore.v1.IPartitionId): google.datastore.v1.PartitionId; + public static create(properties?: google.datastore.v1.IRunQueryResponse): google.datastore.v1.RunQueryResponse; /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @param message PartitionId message or plain object to encode + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. + * @param message RunQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPartitionId, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRunQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PartitionId message from the specified reader or buffer. + * Decodes a RunQueryResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PartitionId + * @returns RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PartitionId; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunQueryResponse; /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PartitionId + * @returns RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PartitionId; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunQueryResponse; /** - * Verifies a PartitionId message. + * Verifies a RunQueryResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PartitionId + * @returns RunQueryResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PartitionId; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunQueryResponse; /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. - * @param message PartitionId + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. + * @param message RunQueryResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PartitionId, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RunQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PartitionId to JSON. + * Converts this RunQueryResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for PartitionId + * Gets the default type url for RunQueryResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Key. */ - interface IKey { + /** Properties of a RunAggregationQueryRequest. */ + interface IRunAggregationQueryRequest { - /** Key partitionId */ + /** RunAggregationQueryRequest projectId */ + projectId?: (string|null); + + /** RunAggregationQueryRequest databaseId */ + databaseId?: (string|null); + + /** RunAggregationQueryRequest partitionId */ partitionId?: (google.datastore.v1.IPartitionId|null); - /** Key path */ - path?: (google.datastore.v1.Key.IPathElement[]|null); + /** RunAggregationQueryRequest readOptions */ + readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunAggregationQueryRequest aggregationQuery */ + aggregationQuery?: (google.datastore.v1.IAggregationQuery|null); + + /** RunAggregationQueryRequest gqlQuery */ + gqlQuery?: (google.datastore.v1.IGqlQuery|null); } - /** Represents a Key. */ - class Key implements IKey { + /** Represents a RunAggregationQueryRequest. */ + class RunAggregationQueryRequest implements IRunAggregationQueryRequest { /** - * Constructs a new Key. + * Constructs a new RunAggregationQueryRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IKey); + constructor(properties?: google.datastore.v1.IRunAggregationQueryRequest); + + /** RunAggregationQueryRequest projectId. */ + public projectId: string; + + /** RunAggregationQueryRequest databaseId. */ + public databaseId: string; - /** Key partitionId. */ + /** RunAggregationQueryRequest partitionId. */ public partitionId?: (google.datastore.v1.IPartitionId|null); - /** Key path. */ - public path: google.datastore.v1.Key.IPathElement[]; + /** RunAggregationQueryRequest readOptions. */ + public readOptions?: (google.datastore.v1.IReadOptions|null); + + /** RunAggregationQueryRequest aggregationQuery. */ + public aggregationQuery?: (google.datastore.v1.IAggregationQuery|null); + + /** RunAggregationQueryRequest gqlQuery. */ + public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunAggregationQueryRequest queryType. */ + public queryType?: ("aggregationQuery"|"gqlQuery"); /** - * Creates a new Key instance using the specified properties. + * Creates a new RunAggregationQueryRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Key instance + * @returns RunAggregationQueryRequest instance */ - public static create(properties?: google.datastore.v1.IKey): google.datastore.v1.Key; + public static create(properties?: google.datastore.v1.IRunAggregationQueryRequest): google.datastore.v1.RunAggregationQueryRequest; /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode + * Encodes the specified RunAggregationQueryRequest message. Does not implicitly {@link google.datastore.v1.RunAggregationQueryRequest.verify|verify} messages. + * @param message RunAggregationQueryRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRunAggregationQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. - * @param message Key message or plain object to encode + * Encodes the specified RunAggregationQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunAggregationQueryRequest.verify|verify} messages. + * @param message RunAggregationQueryRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IKey, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRunAggregationQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Key message from the specified reader or buffer. + * Decodes a RunAggregationQueryRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Key + * @returns RunAggregationQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunAggregationQueryRequest; /** - * Decodes a Key message from the specified reader or buffer, length delimited. + * Decodes a RunAggregationQueryRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Key + * @returns RunAggregationQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunAggregationQueryRequest; /** - * Verifies a Key message. + * Verifies a RunAggregationQueryRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. + * Creates a RunAggregationQueryRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Key + * @returns RunAggregationQueryRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunAggregationQueryRequest; /** - * Creates a plain object from a Key message. Also converts values to other types if specified. - * @param message Key + * Creates a plain object from a RunAggregationQueryRequest message. Also converts values to other types if specified. + * @param message RunAggregationQueryRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Key, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RunAggregationQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Key to JSON. + * Converts this RunAggregationQueryRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Key + * Gets the default type url for RunAggregationQueryRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace Key { - - /** Properties of a PathElement. */ - interface IPathElement { - - /** PathElement kind */ - kind?: (string|null); - - /** PathElement id */ - id?: (number|Long|string|null); - - /** PathElement name */ - name?: (string|null); - } - - /** Represents a PathElement. */ - class PathElement implements IPathElement { - - /** - * Constructs a new PathElement. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.Key.IPathElement); - - /** PathElement kind. */ - public kind: string; - - /** PathElement id. */ - public id?: (number|Long|string|null); - - /** PathElement name. */ - public name?: (string|null); - - /** PathElement idType. */ - public idType?: ("id"|"name"); - - /** - * Creates a new PathElement instance using the specified properties. - * @param [properties] Properties to set - * @returns PathElement instance - */ - public static create(properties?: google.datastore.v1.Key.IPathElement): google.datastore.v1.Key.PathElement; - - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @param message PathElement message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.Key.IPathElement, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a PathElement message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Key.PathElement; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Key.PathElement; - - /** - * Verifies a PathElement message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PathElement - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Key.PathElement; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @param message PathElement - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.Key.PathElement, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PathElement to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for PathElement - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - } + /** Properties of a RunAggregationQueryResponse. */ + interface IRunAggregationQueryResponse { - /** Properties of an ArrayValue. */ - interface IArrayValue { + /** RunAggregationQueryResponse batch */ + batch?: (google.datastore.v1.IAggregationResultBatch|null); - /** ArrayValue values */ - values?: (google.datastore.v1.IValue[]|null); + /** RunAggregationQueryResponse query */ + query?: (google.datastore.v1.IAggregationQuery|null); } - /** Represents an ArrayValue. */ - class ArrayValue implements IArrayValue { + /** Represents a RunAggregationQueryResponse. */ + class RunAggregationQueryResponse implements IRunAggregationQueryResponse { /** - * Constructs a new ArrayValue. + * Constructs a new RunAggregationQueryResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IArrayValue); + constructor(properties?: google.datastore.v1.IRunAggregationQueryResponse); - /** ArrayValue values. */ - public values: google.datastore.v1.IValue[]; + /** RunAggregationQueryResponse batch. */ + public batch?: (google.datastore.v1.IAggregationResultBatch|null); + + /** RunAggregationQueryResponse query. */ + public query?: (google.datastore.v1.IAggregationQuery|null); /** - * Creates a new ArrayValue instance using the specified properties. + * Creates a new RunAggregationQueryResponse instance using the specified properties. * @param [properties] Properties to set - * @returns ArrayValue instance + * @returns RunAggregationQueryResponse instance */ - public static create(properties?: google.datastore.v1.IArrayValue): google.datastore.v1.ArrayValue; + public static create(properties?: google.datastore.v1.IRunAggregationQueryResponse): google.datastore.v1.RunAggregationQueryResponse; /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode + * Encodes the specified RunAggregationQueryResponse message. Does not implicitly {@link google.datastore.v1.RunAggregationQueryResponse.verify|verify} messages. + * @param message RunAggregationQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRunAggregationQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @param message ArrayValue message or plain object to encode + * Encodes the specified RunAggregationQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunAggregationQueryResponse.verify|verify} messages. + * @param message RunAggregationQueryResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IArrayValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRunAggregationQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an ArrayValue message from the specified reader or buffer. + * Decodes a RunAggregationQueryResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns ArrayValue + * @returns RunAggregationQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ArrayValue; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RunAggregationQueryResponse; /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. + * Decodes a RunAggregationQueryResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns ArrayValue + * @returns RunAggregationQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ArrayValue; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RunAggregationQueryResponse; /** - * Verifies an ArrayValue message. + * Verifies a RunAggregationQueryResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * Creates a RunAggregationQueryResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns ArrayValue + * @returns RunAggregationQueryResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ArrayValue; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RunAggregationQueryResponse; /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. - * @param message ArrayValue + * Creates a plain object from a RunAggregationQueryResponse message. Also converts values to other types if specified. + * @param message RunAggregationQueryResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.ArrayValue, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RunAggregationQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this ArrayValue to JSON. + * Converts this RunAggregationQueryResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; - /** - * Gets the default type url for ArrayValue - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a Value. */ - interface IValue { - - /** Value nullValue */ - nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - - /** Value booleanValue */ - booleanValue?: (boolean|null); - - /** Value integerValue */ - integerValue?: (number|Long|string|null); - - /** Value doubleValue */ - doubleValue?: (number|null); - - /** Value timestampValue */ - timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue */ - keyValue?: (google.datastore.v1.IKey|null); - - /** Value stringValue */ - stringValue?: (string|null); - - /** Value blobValue */ - blobValue?: (Uint8Array|string|null); - - /** Value geoPointValue */ - geoPointValue?: (google.type.ILatLng|null); - - /** Value entityValue */ - entityValue?: (google.datastore.v1.IEntity|null); - - /** Value arrayValue */ - arrayValue?: (google.datastore.v1.IArrayValue|null); - - /** Value meaning */ - meaning?: (number|null); - - /** Value excludeFromIndexes */ - excludeFromIndexes?: (boolean|null); - } - - /** Represents a Value. */ - class Value implements IValue { - - /** - * Constructs a new Value. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IValue); - - /** Value nullValue. */ - public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null); - - /** Value booleanValue. */ - public booleanValue?: (boolean|null); - - /** Value integerValue. */ - public integerValue?: (number|Long|string|null); - - /** Value doubleValue. */ - public doubleValue?: (number|null); - - /** Value timestampValue. */ - public timestampValue?: (google.protobuf.ITimestamp|null); - - /** Value keyValue. */ - public keyValue?: (google.datastore.v1.IKey|null); + /** + * Gets the default type url for RunAggregationQueryResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } - /** Value stringValue. */ - public stringValue?: (string|null); + /** Properties of a BeginTransactionRequest. */ + interface IBeginTransactionRequest { - /** Value blobValue. */ - public blobValue?: (Uint8Array|string|null); + /** BeginTransactionRequest projectId */ + projectId?: (string|null); - /** Value geoPointValue. */ - public geoPointValue?: (google.type.ILatLng|null); + /** BeginTransactionRequest databaseId */ + databaseId?: (string|null); - /** Value entityValue. */ - public entityValue?: (google.datastore.v1.IEntity|null); + /** BeginTransactionRequest transactionOptions */ + transactionOptions?: (google.datastore.v1.ITransactionOptions|null); + } - /** Value arrayValue. */ - public arrayValue?: (google.datastore.v1.IArrayValue|null); + /** Represents a BeginTransactionRequest. */ + class BeginTransactionRequest implements IBeginTransactionRequest { - /** Value meaning. */ - public meaning: number; + /** + * Constructs a new BeginTransactionRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IBeginTransactionRequest); - /** Value excludeFromIndexes. */ - public excludeFromIndexes: boolean; + /** BeginTransactionRequest projectId. */ + public projectId: string; - /** Value valueType. */ - public valueType?: ("nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"); + /** BeginTransactionRequest databaseId. */ + public databaseId: string; + + /** BeginTransactionRequest transactionOptions. */ + public transactionOptions?: (google.datastore.v1.ITransactionOptions|null); /** - * Creates a new Value instance using the specified properties. + * Creates a new BeginTransactionRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Value instance + * @returns BeginTransactionRequest instance */ - public static create(properties?: google.datastore.v1.IValue): google.datastore.v1.Value; + public static create(properties?: google.datastore.v1.IBeginTransactionRequest): google.datastore.v1.BeginTransactionRequest; /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. - * @param message Value message or plain object to encode + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * @param message BeginTransactionRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes a BeginTransactionRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Value + * @returns BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Value; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionRequest; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Value + * @returns BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Value; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionRequest; /** - * Verifies a Value message. + * Verifies a BeginTransactionRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Value + * @returns BeginTransactionRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Value; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionRequest; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. - * @param message Value + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * @param message BeginTransactionRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Value to JSON. + * Converts this BeginTransactionRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Value + * Gets the default type url for BeginTransactionRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of an Entity. */ - interface IEntity { - - /** Entity key */ - key?: (google.datastore.v1.IKey|null); + /** Properties of a BeginTransactionResponse. */ + interface IBeginTransactionResponse { - /** Entity properties */ - properties?: ({ [k: string]: google.datastore.v1.IValue }|null); + /** BeginTransactionResponse transaction */ + transaction?: (Uint8Array|string|null); } - /** Represents an Entity. */ - class Entity implements IEntity { + /** Represents a BeginTransactionResponse. */ + class BeginTransactionResponse implements IBeginTransactionResponse { /** - * Constructs a new Entity. + * Constructs a new BeginTransactionResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IEntity); - - /** Entity key. */ - public key?: (google.datastore.v1.IKey|null); + constructor(properties?: google.datastore.v1.IBeginTransactionResponse); - /** Entity properties. */ - public properties: { [k: string]: google.datastore.v1.IValue }; + /** BeginTransactionResponse transaction. */ + public transaction: (Uint8Array|string); /** - * Creates a new Entity instance using the specified properties. + * Creates a new BeginTransactionResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Entity instance + * @returns BeginTransactionResponse instance */ - public static create(properties?: google.datastore.v1.IEntity): google.datastore.v1.Entity; + public static create(properties?: google.datastore.v1.IBeginTransactionResponse): google.datastore.v1.BeginTransactionResponse; /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @param message Entity message or plain object to encode + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. + * @param message BeginTransactionResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IEntity, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IBeginTransactionResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Entity message from the specified reader or buffer. + * Decodes a BeginTransactionResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Entity + * @returns BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Entity; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.BeginTransactionResponse; /** - * Decodes an Entity message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Entity + * @returns BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Entity; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.BeginTransactionResponse; /** - * Verifies an Entity message. + * Verifies a BeginTransactionResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Entity + * @returns BeginTransactionResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Entity; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.BeginTransactionResponse; /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @param message Entity + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. + * @param message BeginTransactionResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Entity, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.BeginTransactionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Entity to JSON. + * Converts this BeginTransactionResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Entity + * Gets the default type url for BeginTransactionResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of an EntityResult. */ - interface IEntityResult { - - /** EntityResult entity */ - entity?: (google.datastore.v1.IEntity|null); + /** Properties of a RollbackRequest. */ + interface IRollbackRequest { - /** EntityResult version */ - version?: (number|Long|string|null); + /** RollbackRequest projectId */ + projectId?: (string|null); - /** EntityResult updateTime */ - updateTime?: (google.protobuf.ITimestamp|null); + /** RollbackRequest databaseId */ + databaseId?: (string|null); - /** EntityResult cursor */ - cursor?: (Uint8Array|string|null); + /** RollbackRequest transaction */ + transaction?: (Uint8Array|string|null); } - /** Represents an EntityResult. */ - class EntityResult implements IEntityResult { + /** Represents a RollbackRequest. */ + class RollbackRequest implements IRollbackRequest { /** - * Constructs a new EntityResult. + * Constructs a new RollbackRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IEntityResult); - - /** EntityResult entity. */ - public entity?: (google.datastore.v1.IEntity|null); + constructor(properties?: google.datastore.v1.IRollbackRequest); - /** EntityResult version. */ - public version: (number|Long|string); + /** RollbackRequest projectId. */ + public projectId: string; - /** EntityResult updateTime. */ - public updateTime?: (google.protobuf.ITimestamp|null); + /** RollbackRequest databaseId. */ + public databaseId: string; - /** EntityResult cursor. */ - public cursor: (Uint8Array|string); + /** RollbackRequest transaction. */ + public transaction: (Uint8Array|string); /** - * Creates a new EntityResult instance using the specified properties. + * Creates a new RollbackRequest instance using the specified properties. * @param [properties] Properties to set - * @returns EntityResult instance + * @returns RollbackRequest instance */ - public static create(properties?: google.datastore.v1.IEntityResult): google.datastore.v1.EntityResult; + public static create(properties?: google.datastore.v1.IRollbackRequest): google.datastore.v1.RollbackRequest; /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. - * @param message EntityResult message or plain object to encode + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * @param message RollbackRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IEntityResult, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an EntityResult message from the specified reader or buffer. + * Decodes a RollbackRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns EntityResult + * @returns RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.EntityResult; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackRequest; /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns EntityResult + * @returns RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.EntityResult; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackRequest; /** - * Verifies an EntityResult message. + * Verifies a RollbackRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns EntityResult + * @returns RollbackRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.EntityResult; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackRequest; /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. - * @param message EntityResult + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * @param message RollbackRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.EntityResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this EntityResult to JSON. + * Converts this RollbackRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for EntityResult + * Gets the default type url for RollbackRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace EntityResult { - - /** ResultType enum. */ - enum ResultType { - RESULT_TYPE_UNSPECIFIED = 0, - FULL = 1, - PROJECTION = 2, - KEY_ONLY = 3 - } - } - - /** Properties of a Query. */ - interface IQuery { - - /** Query projection */ - projection?: (google.datastore.v1.IProjection[]|null); - - /** Query kind */ - kind?: (google.datastore.v1.IKindExpression[]|null); - - /** Query filter */ - filter?: (google.datastore.v1.IFilter|null); - - /** Query order */ - order?: (google.datastore.v1.IPropertyOrder[]|null); - - /** Query distinctOn */ - distinctOn?: (google.datastore.v1.IPropertyReference[]|null); - - /** Query startCursor */ - startCursor?: (Uint8Array|string|null); - - /** Query endCursor */ - endCursor?: (Uint8Array|string|null); - - /** Query offset */ - offset?: (number|null); - - /** Query limit */ - limit?: (google.protobuf.IInt32Value|null); + /** Properties of a RollbackResponse. */ + interface IRollbackResponse { } - /** Represents a Query. */ - class Query implements IQuery { + /** Represents a RollbackResponse. */ + class RollbackResponse implements IRollbackResponse { /** - * Constructs a new Query. + * Constructs a new RollbackResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IQuery); - - /** Query projection. */ - public projection: google.datastore.v1.IProjection[]; - - /** Query kind. */ - public kind: google.datastore.v1.IKindExpression[]; - - /** Query filter. */ - public filter?: (google.datastore.v1.IFilter|null); - - /** Query order. */ - public order: google.datastore.v1.IPropertyOrder[]; - - /** Query distinctOn. */ - public distinctOn: google.datastore.v1.IPropertyReference[]; - - /** Query startCursor. */ - public startCursor: (Uint8Array|string); - - /** Query endCursor. */ - public endCursor: (Uint8Array|string); - - /** Query offset. */ - public offset: number; - - /** Query limit. */ - public limit?: (google.protobuf.IInt32Value|null); + constructor(properties?: google.datastore.v1.IRollbackResponse); /** - * Creates a new Query instance using the specified properties. + * Creates a new RollbackResponse instance using the specified properties. * @param [properties] Properties to set - * @returns Query instance + * @returns RollbackResponse instance */ - public static create(properties?: google.datastore.v1.IQuery): google.datastore.v1.Query; + public static create(properties?: google.datastore.v1.IRollbackResponse): google.datastore.v1.RollbackResponse; /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @param message Query message or plain object to encode + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * @param message RollbackResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IRollbackResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Query message from the specified reader or buffer. + * Decodes a RollbackResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Query + * @returns RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Query; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.RollbackResponse; /** - * Decodes a Query message from the specified reader or buffer, length delimited. + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Query + * @returns RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Query; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.RollbackResponse; /** - * Verifies a Query message. + * Verifies a RollbackResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Query + * @returns RollbackResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Query; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.RollbackResponse; /** - * Creates a plain object from a Query message. Also converts values to other types if specified. - * @param message Query + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * @param message RollbackResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Query, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.RollbackResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Query to JSON. + * Converts this RollbackResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Query + * Gets the default type url for RollbackResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a KindExpression. */ - interface IKindExpression { + /** Properties of a CommitRequest. */ + interface ICommitRequest { - /** KindExpression name */ - name?: (string|null); + /** CommitRequest projectId */ + projectId?: (string|null); + + /** CommitRequest databaseId */ + databaseId?: (string|null); + + /** CommitRequest mode */ + mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null); + + /** CommitRequest transaction */ + transaction?: (Uint8Array|string|null); + + /** CommitRequest mutations */ + mutations?: (google.datastore.v1.IMutation[]|null); } - /** Represents a KindExpression. */ - class KindExpression implements IKindExpression { + /** Represents a CommitRequest. */ + class CommitRequest implements ICommitRequest { /** - * Constructs a new KindExpression. + * Constructs a new CommitRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IKindExpression); + constructor(properties?: google.datastore.v1.ICommitRequest); - /** KindExpression name. */ - public name: string; + /** CommitRequest projectId. */ + public projectId: string; + + /** CommitRequest databaseId. */ + public databaseId: string; + + /** CommitRequest mode. */ + public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode); + + /** CommitRequest transaction. */ + public transaction?: (Uint8Array|string|null); + + /** CommitRequest mutations. */ + public mutations: google.datastore.v1.IMutation[]; + + /** CommitRequest transactionSelector. */ + public transactionSelector?: "transaction"; /** - * Creates a new KindExpression instance using the specified properties. + * Creates a new CommitRequest instance using the specified properties. * @param [properties] Properties to set - * @returns KindExpression instance + * @returns CommitRequest instance */ - public static create(properties?: google.datastore.v1.IKindExpression): google.datastore.v1.KindExpression; + public static create(properties?: google.datastore.v1.ICommitRequest): google.datastore.v1.CommitRequest; /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. - * @param message KindExpression message or plain object to encode + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @param message CommitRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IKindExpression, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a KindExpression message from the specified reader or buffer. + * Decodes a CommitRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns KindExpression + * @returns CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.KindExpression; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitRequest; /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns KindExpression + * @returns CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.KindExpression; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitRequest; /** - * Verifies a KindExpression message. + * Verifies a CommitRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns KindExpression + * @returns CommitRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.KindExpression; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitRequest; /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. - * @param message KindExpression + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * @param message CommitRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.KindExpression, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this KindExpression to JSON. + * Converts this CommitRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for KindExpression + * Gets the default type url for CommitRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a PropertyReference. */ - interface IPropertyReference { + namespace CommitRequest { - /** PropertyReference name */ - name?: (string|null); + /** Mode enum. */ + enum Mode { + MODE_UNSPECIFIED = 0, + TRANSACTIONAL = 1, + NON_TRANSACTIONAL = 2 + } } - /** Represents a PropertyReference. */ - class PropertyReference implements IPropertyReference { + /** Properties of a CommitResponse. */ + interface ICommitResponse { + + /** CommitResponse mutationResults */ + mutationResults?: (google.datastore.v1.IMutationResult[]|null); + + /** CommitResponse indexUpdates */ + indexUpdates?: (number|null); + + /** CommitResponse commitTime */ + commitTime?: (google.protobuf.ITimestamp|null); + } + + /** Represents a CommitResponse. */ + class CommitResponse implements ICommitResponse { /** - * Constructs a new PropertyReference. + * Constructs a new CommitResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyReference); + constructor(properties?: google.datastore.v1.ICommitResponse); + + /** CommitResponse mutationResults. */ + public mutationResults: google.datastore.v1.IMutationResult[]; - /** PropertyReference name. */ - public name: string; + /** CommitResponse indexUpdates. */ + public indexUpdates: number; + + /** CommitResponse commitTime. */ + public commitTime?: (google.protobuf.ITimestamp|null); /** - * Creates a new PropertyReference instance using the specified properties. + * Creates a new CommitResponse instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyReference instance + * @returns CommitResponse instance */ - public static create(properties?: google.datastore.v1.IPropertyReference): google.datastore.v1.PropertyReference; + public static create(properties?: google.datastore.v1.ICommitResponse): google.datastore.v1.CommitResponse; /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. - * @param message PropertyReference message or plain object to encode + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. + * @param message CommitResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyReference, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyReference message from the specified reader or buffer. + * Decodes a CommitResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyReference + * @returns CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyReference; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CommitResponse; /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyReference + * @returns CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyReference; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CommitResponse; /** - * Verifies a PropertyReference message. + * Verifies a CommitResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyReference + * @returns CommitResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyReference; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.CommitResponse; /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. - * @param message PropertyReference + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @param message CommitResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyReference, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PropertyReference to JSON. + * Converts this CommitResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for PropertyReference + * Gets the default type url for CommitResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Projection. */ - interface IProjection { + /** Properties of an AllocateIdsRequest. */ + interface IAllocateIdsRequest { - /** Projection property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** AllocateIdsRequest projectId */ + projectId?: (string|null); + + /** AllocateIdsRequest databaseId */ + databaseId?: (string|null); + + /** AllocateIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a Projection. */ - class Projection implements IProjection { + /** Represents an AllocateIdsRequest. */ + class AllocateIdsRequest implements IAllocateIdsRequest { /** - * Constructs a new Projection. + * Constructs a new AllocateIdsRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IProjection); + constructor(properties?: google.datastore.v1.IAllocateIdsRequest); - /** Projection property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + /** AllocateIdsRequest projectId. */ + public projectId: string; + + /** AllocateIdsRequest databaseId. */ + public databaseId: string; + + /** AllocateIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new Projection instance using the specified properties. + * Creates a new AllocateIdsRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Projection instance + * @returns AllocateIdsRequest instance */ - public static create(properties?: google.datastore.v1.IProjection): google.datastore.v1.Projection; + public static create(properties?: google.datastore.v1.IAllocateIdsRequest): google.datastore.v1.AllocateIdsRequest; /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. - * @param message Projection message or plain object to encode + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @param message AllocateIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IProjection, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Projection message from the specified reader or buffer. + * Decodes an AllocateIdsRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Projection + * @returns AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Projection; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsRequest; /** - * Decodes a Projection message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Projection + * @returns AllocateIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Projection; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsRequest; /** - * Verifies a Projection message. + * Verifies an AllocateIdsRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Projection + * @returns AllocateIdsRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Projection; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsRequest; /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. - * @param message Projection + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @param message AllocateIdsRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Projection, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.AllocateIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Projection to JSON. + * Converts this AllocateIdsRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Projection + * Gets the default type url for AllocateIdsRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a PropertyOrder. */ - interface IPropertyOrder { - - /** PropertyOrder property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** Properties of an AllocateIdsResponse. */ + interface IAllocateIdsResponse { - /** PropertyOrder direction */ - direction?: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction|null); + /** AllocateIdsResponse keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a PropertyOrder. */ - class PropertyOrder implements IPropertyOrder { + /** Represents an AllocateIdsResponse. */ + class AllocateIdsResponse implements IAllocateIdsResponse { /** - * Constructs a new PropertyOrder. + * Constructs a new AllocateIdsResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyOrder); - - /** PropertyOrder property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + constructor(properties?: google.datastore.v1.IAllocateIdsResponse); - /** PropertyOrder direction. */ - public direction: (google.datastore.v1.PropertyOrder.Direction|keyof typeof google.datastore.v1.PropertyOrder.Direction); + /** AllocateIdsResponse keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new PropertyOrder instance using the specified properties. + * Creates a new AllocateIdsResponse instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyOrder instance + * @returns AllocateIdsResponse instance */ - public static create(properties?: google.datastore.v1.IPropertyOrder): google.datastore.v1.PropertyOrder; + public static create(properties?: google.datastore.v1.IAllocateIdsResponse): google.datastore.v1.AllocateIdsResponse; /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. - * @param message PropertyOrder message or plain object to encode + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @param message AllocateIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyOrder, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IAllocateIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyOrder message from the specified reader or buffer. + * Decodes an AllocateIdsResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyOrder + * @returns AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyOrder; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AllocateIdsResponse; /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyOrder + * @returns AllocateIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyOrder; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AllocateIdsResponse; /** - * Verifies a PropertyOrder message. + * Verifies an AllocateIdsResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyOrder + * @returns AllocateIdsResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyOrder; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AllocateIdsResponse; /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. - * @param message PropertyOrder + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @param message AllocateIdsResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyOrder, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.AllocateIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this PropertyOrder to JSON. + * Converts this AllocateIdsResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for PropertyOrder + * Gets the default type url for AllocateIdsResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace PropertyOrder { - - /** Direction enum. */ - enum Direction { - DIRECTION_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2 - } - } + /** Properties of a ReserveIdsRequest. */ + interface IReserveIdsRequest { - /** Properties of a Filter. */ - interface IFilter { + /** ReserveIdsRequest projectId */ + projectId?: (string|null); - /** Filter compositeFilter */ - compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + /** ReserveIdsRequest databaseId */ + databaseId?: (string|null); - /** Filter propertyFilter */ - propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + /** ReserveIdsRequest keys */ + keys?: (google.datastore.v1.IKey[]|null); } - /** Represents a Filter. */ - class Filter implements IFilter { + /** Represents a ReserveIdsRequest. */ + class ReserveIdsRequest implements IReserveIdsRequest { /** - * Constructs a new Filter. + * Constructs a new ReserveIdsRequest. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IFilter); + constructor(properties?: google.datastore.v1.IReserveIdsRequest); - /** Filter compositeFilter. */ - public compositeFilter?: (google.datastore.v1.ICompositeFilter|null); + /** ReserveIdsRequest projectId. */ + public projectId: string; - /** Filter propertyFilter. */ - public propertyFilter?: (google.datastore.v1.IPropertyFilter|null); + /** ReserveIdsRequest databaseId. */ + public databaseId: string; - /** Filter filterType. */ - public filterType?: ("compositeFilter"|"propertyFilter"); + /** ReserveIdsRequest keys. */ + public keys: google.datastore.v1.IKey[]; /** - * Creates a new Filter instance using the specified properties. + * Creates a new ReserveIdsRequest instance using the specified properties. * @param [properties] Properties to set - * @returns Filter instance + * @returns ReserveIdsRequest instance */ - public static create(properties?: google.datastore.v1.IFilter): google.datastore.v1.Filter; + public static create(properties?: google.datastore.v1.IReserveIdsRequest): google.datastore.v1.ReserveIdsRequest; /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. - * @param message Filter message or plain object to encode + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @param message ReserveIdsRequest message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IReserveIdsRequest, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Filter message from the specified reader or buffer. + * Decodes a ReserveIdsRequest message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Filter + * @returns ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Filter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsRequest; /** - * Decodes a Filter message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Filter + * @returns ReserveIdsRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Filter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsRequest; /** - * Verifies a Filter message. + * Verifies a ReserveIdsRequest message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Filter + * @returns ReserveIdsRequest */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.Filter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsRequest; /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. - * @param message Filter + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @param message ReserveIdsRequest * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.Filter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ReserveIdsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Filter to JSON. + * Converts this ReserveIdsRequest to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Filter + * Gets the default type url for ReserveIdsRequest * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CompositeFilter. */ - interface ICompositeFilter { - - /** CompositeFilter op */ - op?: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator|null); - - /** CompositeFilter filters */ - filters?: (google.datastore.v1.IFilter[]|null); + /** Properties of a ReserveIdsResponse. */ + interface IReserveIdsResponse { } - /** Represents a CompositeFilter. */ - class CompositeFilter implements ICompositeFilter { + /** Represents a ReserveIdsResponse. */ + class ReserveIdsResponse implements IReserveIdsResponse { /** - * Constructs a new CompositeFilter. + * Constructs a new ReserveIdsResponse. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.ICompositeFilter); - - /** CompositeFilter op. */ - public op: (google.datastore.v1.CompositeFilter.Operator|keyof typeof google.datastore.v1.CompositeFilter.Operator); - - /** CompositeFilter filters. */ - public filters: google.datastore.v1.IFilter[]; + constructor(properties?: google.datastore.v1.IReserveIdsResponse); /** - * Creates a new CompositeFilter instance using the specified properties. + * Creates a new ReserveIdsResponse instance using the specified properties. * @param [properties] Properties to set - * @returns CompositeFilter instance + * @returns ReserveIdsResponse instance */ - public static create(properties?: google.datastore.v1.ICompositeFilter): google.datastore.v1.CompositeFilter; + public static create(properties?: google.datastore.v1.IReserveIdsResponse): google.datastore.v1.ReserveIdsResponse; /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. - * @param message CompositeFilter message or plain object to encode + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @param message ReserveIdsResponse message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.ICompositeFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IReserveIdsResponse, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CompositeFilter message from the specified reader or buffer. + * Decodes a ReserveIdsResponse message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CompositeFilter + * @returns ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.CompositeFilter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReserveIdsResponse; /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CompositeFilter + * @returns ReserveIdsResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.CompositeFilter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReserveIdsResponse; /** - * Verifies a CompositeFilter message. + * Verifies a ReserveIdsResponse message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CompositeFilter + * @returns ReserveIdsResponse */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.CompositeFilter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReserveIdsResponse; /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. - * @param message CompositeFilter + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @param message ReserveIdsResponse * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.CompositeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ReserveIdsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CompositeFilter to JSON. + * Converts this ReserveIdsResponse to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for CompositeFilter + * Gets the default type url for ReserveIdsResponse * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace CompositeFilter { + /** Properties of a Mutation. */ + interface IMutation { - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - AND = 1 - } - } + /** Mutation insert */ + insert?: (google.datastore.v1.IEntity|null); - /** Properties of a PropertyFilter. */ - interface IPropertyFilter { + /** Mutation update */ + update?: (google.datastore.v1.IEntity|null); - /** PropertyFilter property */ - property?: (google.datastore.v1.IPropertyReference|null); + /** Mutation upsert */ + upsert?: (google.datastore.v1.IEntity|null); - /** PropertyFilter op */ - op?: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator|null); + /** Mutation delete */ + "delete"?: (google.datastore.v1.IKey|null); - /** PropertyFilter value */ - value?: (google.datastore.v1.IValue|null); + /** Mutation baseVersion */ + baseVersion?: (number|Long|string|null); + + /** Mutation updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); } - /** Represents a PropertyFilter. */ - class PropertyFilter implements IPropertyFilter { + /** Represents a Mutation. */ + class Mutation implements IMutation { /** - * Constructs a new PropertyFilter. + * Constructs a new Mutation. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IPropertyFilter); + constructor(properties?: google.datastore.v1.IMutation); - /** PropertyFilter property. */ - public property?: (google.datastore.v1.IPropertyReference|null); + /** Mutation insert. */ + public insert?: (google.datastore.v1.IEntity|null); - /** PropertyFilter op. */ - public op: (google.datastore.v1.PropertyFilter.Operator|keyof typeof google.datastore.v1.PropertyFilter.Operator); + /** Mutation update. */ + public update?: (google.datastore.v1.IEntity|null); - /** PropertyFilter value. */ - public value?: (google.datastore.v1.IValue|null); + /** Mutation upsert. */ + public upsert?: (google.datastore.v1.IEntity|null); + + /** Mutation delete. */ + public delete?: (google.datastore.v1.IKey|null); + + /** Mutation baseVersion. */ + public baseVersion?: (number|Long|string|null); + + /** Mutation updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); + + /** Mutation operation. */ + public operation?: ("insert"|"update"|"upsert"|"delete"); + + /** Mutation conflictDetectionStrategy. */ + public conflictDetectionStrategy?: ("baseVersion"|"updateTime"); /** - * Creates a new PropertyFilter instance using the specified properties. + * Creates a new Mutation instance using the specified properties. * @param [properties] Properties to set - * @returns PropertyFilter instance + * @returns Mutation instance */ - public static create(properties?: google.datastore.v1.IPropertyFilter): google.datastore.v1.PropertyFilter; + public static create(properties?: google.datastore.v1.IMutation): google.datastore.v1.Mutation; /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. - * @param message PropertyFilter message or plain object to encode + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @param message Mutation message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IPropertyFilter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a PropertyFilter message from the specified reader or buffer. + * Decodes a Mutation message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns PropertyFilter + * @returns Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyFilter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.Mutation; /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * Decodes a Mutation message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns PropertyFilter + * @returns Mutation * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyFilter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.Mutation; /** - * Verifies a PropertyFilter message. + * Verifies a Mutation message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns PropertyFilter + * @returns Mutation */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyFilter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.Mutation; /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. - * @param message PropertyFilter + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @param message Mutation * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.PropertyFilter, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this PropertyFilter to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for PropertyFilter - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - - namespace PropertyFilter { + public static toObject(message: google.datastore.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Operator enum. */ - enum Operator { - OPERATOR_UNSPECIFIED = 0, - LESS_THAN = 1, - LESS_THAN_OR_EQUAL = 2, - GREATER_THAN = 3, - GREATER_THAN_OR_EQUAL = 4, - EQUAL = 5, - IN = 6, - NOT_EQUAL = 9, - HAS_ANCESTOR = 11, - NOT_IN = 13 - } + /** + * Converts this Mutation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Mutation + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a GqlQuery. */ - interface IGqlQuery { + /** Properties of a MutationResult. */ + interface IMutationResult { - /** GqlQuery queryString */ - queryString?: (string|null); + /** MutationResult key */ + key?: (google.datastore.v1.IKey|null); - /** GqlQuery allowLiterals */ - allowLiterals?: (boolean|null); + /** MutationResult version */ + version?: (number|Long|string|null); - /** GqlQuery namedBindings */ - namedBindings?: ({ [k: string]: google.datastore.v1.IGqlQueryParameter }|null); + /** MutationResult updateTime */ + updateTime?: (google.protobuf.ITimestamp|null); - /** GqlQuery positionalBindings */ - positionalBindings?: (google.datastore.v1.IGqlQueryParameter[]|null); + /** MutationResult conflictDetected */ + conflictDetected?: (boolean|null); } - /** Represents a GqlQuery. */ - class GqlQuery implements IGqlQuery { + /** Represents a MutationResult. */ + class MutationResult implements IMutationResult { /** - * Constructs a new GqlQuery. + * Constructs a new MutationResult. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IGqlQuery); + constructor(properties?: google.datastore.v1.IMutationResult); - /** GqlQuery queryString. */ - public queryString: string; + /** MutationResult key. */ + public key?: (google.datastore.v1.IKey|null); - /** GqlQuery allowLiterals. */ - public allowLiterals: boolean; + /** MutationResult version. */ + public version: (number|Long|string); - /** GqlQuery namedBindings. */ - public namedBindings: { [k: string]: google.datastore.v1.IGqlQueryParameter }; + /** MutationResult updateTime. */ + public updateTime?: (google.protobuf.ITimestamp|null); - /** GqlQuery positionalBindings. */ - public positionalBindings: google.datastore.v1.IGqlQueryParameter[]; + /** MutationResult conflictDetected. */ + public conflictDetected: boolean; /** - * Creates a new GqlQuery instance using the specified properties. + * Creates a new MutationResult instance using the specified properties. * @param [properties] Properties to set - * @returns GqlQuery instance + * @returns MutationResult instance */ - public static create(properties?: google.datastore.v1.IGqlQuery): google.datastore.v1.GqlQuery; + public static create(properties?: google.datastore.v1.IMutationResult): google.datastore.v1.MutationResult; /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. - * @param message GqlQuery message or plain object to encode + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @param message MutationResult message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IGqlQuery, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IMutationResult, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GqlQuery message from the specified reader or buffer. + * Decodes a MutationResult message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GqlQuery + * @returns MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQuery; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.MutationResult; /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * Decodes a MutationResult message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GqlQuery + * @returns MutationResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQuery; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.MutationResult; /** - * Verifies a GqlQuery message. + * Verifies a MutationResult message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns GqlQuery + * @returns MutationResult */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQuery; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.MutationResult; /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. - * @param message GqlQuery + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @param message MutationResult * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.GqlQuery, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.MutationResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this GqlQuery to JSON. + * Converts this MutationResult to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for GqlQuery + * Gets the default type url for MutationResult * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a GqlQueryParameter. */ - interface IGqlQueryParameter { + /** Properties of a ReadOptions. */ + interface IReadOptions { - /** GqlQueryParameter value */ - value?: (google.datastore.v1.IValue|null); + /** ReadOptions readConsistency */ + readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); - /** GqlQueryParameter cursor */ - cursor?: (Uint8Array|string|null); + /** ReadOptions transaction */ + transaction?: (Uint8Array|string|null); + + /** ReadOptions readTime */ + readTime?: (google.protobuf.ITimestamp|null); } - /** Represents a GqlQueryParameter. */ - class GqlQueryParameter implements IGqlQueryParameter { + /** Represents a ReadOptions. */ + class ReadOptions implements IReadOptions { /** - * Constructs a new GqlQueryParameter. + * Constructs a new ReadOptions. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IGqlQueryParameter); + constructor(properties?: google.datastore.v1.IReadOptions); - /** GqlQueryParameter value. */ - public value?: (google.datastore.v1.IValue|null); + /** ReadOptions readConsistency. */ + public readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null); - /** GqlQueryParameter cursor. */ - public cursor?: (Uint8Array|string|null); + /** ReadOptions transaction. */ + public transaction?: (Uint8Array|string|null); - /** GqlQueryParameter parameterType. */ - public parameterType?: ("value"|"cursor"); + /** ReadOptions readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + + /** ReadOptions consistencyType. */ + public consistencyType?: ("readConsistency"|"transaction"|"readTime"); /** - * Creates a new GqlQueryParameter instance using the specified properties. + * Creates a new ReadOptions instance using the specified properties. * @param [properties] Properties to set - * @returns GqlQueryParameter instance + * @returns ReadOptions instance */ - public static create(properties?: google.datastore.v1.IGqlQueryParameter): google.datastore.v1.GqlQueryParameter; + public static create(properties?: google.datastore.v1.IReadOptions): google.datastore.v1.ReadOptions; /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @param message GqlQueryParameter message or plain object to encode + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @param message ReadOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IGqlQueryParameter, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.IReadOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. + * Decodes a ReadOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GqlQueryParameter + * @returns ReadOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.GqlQueryParameter; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ReadOptions; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GqlQueryParameter + * @returns ReadOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.GqlQueryParameter; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ReadOptions; /** - * Verifies a GqlQueryParameter message. + * Verifies a ReadOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns GqlQueryParameter + * @returns ReadOptions */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.GqlQueryParameter; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ReadOptions; /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. - * @param message GqlQueryParameter + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @param message ReadOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.GqlQueryParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.ReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this GqlQueryParameter to JSON. + * Converts this ReadOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for GqlQueryParameter + * Gets the default type url for ReadOptions * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a QueryResultBatch. */ - interface IQueryResultBatch { - - /** QueryResultBatch skippedResults */ - skippedResults?: (number|null); - - /** QueryResultBatch skippedCursor */ - skippedCursor?: (Uint8Array|string|null); - - /** QueryResultBatch entityResultType */ - entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null); - - /** QueryResultBatch entityResults */ - entityResults?: (google.datastore.v1.IEntityResult[]|null); + namespace ReadOptions { - /** QueryResultBatch endCursor */ - endCursor?: (Uint8Array|string|null); + /** ReadConsistency enum. */ + enum ReadConsistency { + READ_CONSISTENCY_UNSPECIFIED = 0, + STRONG = 1, + EVENTUAL = 2 + } + } - /** QueryResultBatch moreResults */ - moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null); + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { - /** QueryResultBatch snapshotVersion */ - snapshotVersion?: (number|Long|string|null); + /** TransactionOptions readWrite */ + readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); - /** QueryResultBatch readTime */ - readTime?: (google.protobuf.ITimestamp|null); + /** TransactionOptions readOnly */ + readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); } - /** Represents a QueryResultBatch. */ - class QueryResultBatch implements IQueryResultBatch { + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { /** - * Constructs a new QueryResultBatch. + * Constructs a new TransactionOptions. * @param [properties] Properties to set */ - constructor(properties?: google.datastore.v1.IQueryResultBatch); - - /** QueryResultBatch skippedResults. */ - public skippedResults: number; - - /** QueryResultBatch skippedCursor. */ - public skippedCursor: (Uint8Array|string); - - /** QueryResultBatch entityResultType. */ - public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType); - - /** QueryResultBatch entityResults. */ - public entityResults: google.datastore.v1.IEntityResult[]; - - /** QueryResultBatch endCursor. */ - public endCursor: (Uint8Array|string); - - /** QueryResultBatch moreResults. */ - public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType); + constructor(properties?: google.datastore.v1.ITransactionOptions); - /** QueryResultBatch snapshotVersion. */ - public snapshotVersion: (number|Long|string); + /** TransactionOptions readWrite. */ + public readWrite?: (google.datastore.v1.TransactionOptions.IReadWrite|null); - /** QueryResultBatch readTime. */ - public readTime?: (google.protobuf.ITimestamp|null); + /** TransactionOptions readOnly. */ + public readOnly?: (google.datastore.v1.TransactionOptions.IReadOnly|null); + + /** TransactionOptions mode. */ + public mode?: ("readWrite"|"readOnly"); /** - * Creates a new QueryResultBatch instance using the specified properties. + * Creates a new TransactionOptions instance using the specified properties. * @param [properties] Properties to set - * @returns QueryResultBatch instance + * @returns TransactionOptions instance */ - public static create(properties?: google.datastore.v1.IQueryResultBatch): google.datastore.v1.QueryResultBatch; + public static create(properties?: google.datastore.v1.ITransactionOptions): google.datastore.v1.TransactionOptions; /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. - * @param message QueryResultBatch message or plain object to encode + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.datastore.v1.IQueryResultBatch, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.datastore.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a QueryResultBatch message from the specified reader or buffer. + * Decodes a TransactionOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns QueryResultBatch + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryResultBatch; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions; /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns QueryResultBatch + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryResultBatch; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions; /** - * Verifies a QueryResultBatch message. + * Verifies a TransactionOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns QueryResultBatch + * @returns TransactionOptions */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryResultBatch; + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions; /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. - * @param message QueryResultBatch + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.datastore.v1.QueryResultBatch, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.datastore.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this QueryResultBatch to JSON. + * Converts this TransactionOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for QueryResultBatch + * Gets the default type url for TransactionOptions * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace QueryResultBatch { + namespace TransactionOptions { - /** MoreResultsType enum. */ - enum MoreResultsType { - MORE_RESULTS_TYPE_UNSPECIFIED = 0, - NOT_FINISHED = 1, - MORE_RESULTS_AFTER_LIMIT = 2, - MORE_RESULTS_AFTER_CURSOR = 4, - NO_MORE_RESULTS = 3 + /** Properties of a ReadWrite. */ + interface IReadWrite { + + /** ReadWrite previousTransaction */ + previousTransaction?: (Uint8Array|string|null); + } + + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { + + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite); + + /** ReadWrite previousTransaction. */ + public previousTransaction: (Uint8Array|string); + + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadWrite): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadWrite + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ReadOnly. */ + interface IReadOnly { + + /** ReadOnly readTime */ + readTime?: (google.protobuf.ITimestamp|null); + } + + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { + + /** + * Constructs a new ReadOnly. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.TransactionOptions.IReadOnly); + + /** ReadOnly readTime. */ + public readTime?: (google.protobuf.ITimestamp|null); + + /** + * Creates a new ReadOnly instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadOnly instance + */ + public static create(properties?: google.datastore.v1.TransactionOptions.IReadOnly): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Verifies a ReadOnly message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadOnly + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.TransactionOptions.ReadOnly; + + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadOnly to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadOnly + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 934b7f3d405..08de1423567 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -6263,415 +6263,379 @@ */ var v1 = {}; - v1.Datastore = (function() { + v1.AggregationResult = (function() { /** - * Constructs a new Datastore service. + * Properties of an AggregationResult. * @memberof google.datastore.v1 - * @classdesc Represents a Datastore - * @extends $protobuf.rpc.Service + * @interface IAggregationResult + * @property {Object.|null} [aggregateProperties] AggregationResult aggregateProperties + */ + + /** + * Constructs a new AggregationResult. + * @memberof google.datastore.v1 + * @classdesc Represents an AggregationResult. + * @implements IAggregationResult * @constructor - * @param {$protobuf.RPCImpl} rpcImpl RPC implementation - * @param {boolean} [requestDelimited=false] Whether requests are length-delimited - * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @param {google.datastore.v1.IAggregationResult=} [properties] Properties to set */ - function Datastore(rpcImpl, requestDelimited, responseDelimited) { - $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + function AggregationResult(properties) { + this.aggregateProperties = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - (Datastore.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Datastore; + /** + * AggregationResult aggregateProperties. + * @member {Object.} aggregateProperties + * @memberof google.datastore.v1.AggregationResult + * @instance + */ + AggregationResult.prototype.aggregateProperties = $util.emptyObject; /** - * Creates new Datastore service using the specified rpc implementation. + * Creates a new AggregationResult instance using the specified properties. * @function create - * @memberof google.datastore.v1.Datastore + * @memberof google.datastore.v1.AggregationResult * @static - * @param {$protobuf.RPCImpl} rpcImpl RPC implementation - * @param {boolean} [requestDelimited=false] Whether requests are length-delimited - * @param {boolean} [responseDelimited=false] Whether responses are length-delimited - * @returns {Datastore} RPC service. Useful where requests and/or responses are streamed. + * @param {google.datastore.v1.IAggregationResult=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationResult} AggregationResult instance */ - Datastore.create = function create(rpcImpl, requestDelimited, responseDelimited) { - return new this(rpcImpl, requestDelimited, responseDelimited); + AggregationResult.create = function create(properties) { + return new AggregationResult(properties); }; /** - * Callback as used by {@link google.datastore.v1.Datastore|lookup}. - * @memberof google.datastore.v1.Datastore - * @typedef LookupCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.LookupResponse} [response] LookupResponse + * Encodes the specified AggregationResult message. Does not implicitly {@link google.datastore.v1.AggregationResult.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {google.datastore.v1.IAggregationResult} message AggregationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ + AggregationResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.aggregateProperties != null && Object.hasOwnProperty.call(message, "aggregateProperties")) + for (var keys = Object.keys(message.aggregateProperties), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.Value.encode(message.aggregateProperties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + return writer; + }; /** - * Calls Lookup. - * @function lookup - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object - * @param {google.datastore.v1.Datastore.LookupCallback} callback Node-style callback called with the error, if any, and LookupResponse - * @returns {undefined} - * @variation 1 + * Encodes the specified AggregationResult message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {google.datastore.v1.IAggregationResult} message AggregationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Object.defineProperty(Datastore.prototype.lookup = function lookup(request, callback) { - return this.rpcCall(lookup, $root.google.datastore.v1.LookupRequest, $root.google.datastore.v1.LookupResponse, request, callback); - }, "name", { value: "Lookup" }); + AggregationResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; /** - * Calls Lookup. - * @function lookup - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object - * @returns {Promise} Promise - * @variation 2 + * Decodes an AggregationResult message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AggregationResult} AggregationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ + AggregationResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationResult(), key, value; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: { + if (message.aggregateProperties === $util.emptyObject) + message.aggregateProperties = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.aggregateProperties[key] = value; + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; /** - * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. - * @memberof google.datastore.v1.Datastore - * @typedef RunQueryCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.RunQueryResponse} [response] RunQueryResponse + * Decodes an AggregationResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AggregationResult} AggregationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ + AggregationResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; /** - * Calls RunQuery. - * @function runQuery - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object - * @param {google.datastore.v1.Datastore.RunQueryCallback} callback Node-style callback called with the error, if any, and RunQueryResponse - * @returns {undefined} - * @variation 1 + * Verifies an AggregationResult message. + * @function verify + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Object.defineProperty(Datastore.prototype.runQuery = function runQuery(request, callback) { - return this.rpcCall(runQuery, $root.google.datastore.v1.RunQueryRequest, $root.google.datastore.v1.RunQueryResponse, request, callback); - }, "name", { value: "RunQuery" }); + AggregationResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.aggregateProperties != null && message.hasOwnProperty("aggregateProperties")) { + if (!$util.isObject(message.aggregateProperties)) + return "aggregateProperties: object expected"; + var key = Object.keys(message.aggregateProperties); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.aggregateProperties[key[i]]); + if (error) + return "aggregateProperties." + error; + } + } + return null; + }; /** - * Calls RunQuery. - * @function runQuery - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object - * @returns {Promise} Promise - * @variation 2 + * Creates an AggregationResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AggregationResult} AggregationResult */ + AggregationResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationResult) + return object; + var message = new $root.google.datastore.v1.AggregationResult(); + if (object.aggregateProperties) { + if (typeof object.aggregateProperties !== "object") + throw TypeError(".google.datastore.v1.AggregationResult.aggregateProperties: object expected"); + message.aggregateProperties = {}; + for (var keys = Object.keys(object.aggregateProperties), i = 0; i < keys.length; ++i) { + if (typeof object.aggregateProperties[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.AggregationResult.aggregateProperties: object expected"); + message.aggregateProperties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.aggregateProperties[keys[i]]); + } + } + return message; + }; /** - * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. - * @memberof google.datastore.v1.Datastore - * @typedef BeginTransactionCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.BeginTransactionResponse} [response] BeginTransactionResponse + * Creates a plain object from an AggregationResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {google.datastore.v1.AggregationResult} message AggregationResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object */ + AggregationResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.aggregateProperties = {}; + var keys2; + if (message.aggregateProperties && (keys2 = Object.keys(message.aggregateProperties)).length) { + object.aggregateProperties = {}; + for (var j = 0; j < keys2.length; ++j) + object.aggregateProperties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.aggregateProperties[keys2[j]], options); + } + return object; + }; /** - * Calls BeginTransaction. - * @function beginTransaction - * @memberof google.datastore.v1.Datastore + * Converts this AggregationResult to JSON. + * @function toJSON + * @memberof google.datastore.v1.AggregationResult * @instance - * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object - * @param {google.datastore.v1.Datastore.BeginTransactionCallback} callback Node-style callback called with the error, if any, and BeginTransactionResponse - * @returns {undefined} - * @variation 1 + * @returns {Object.} JSON object */ - Object.defineProperty(Datastore.prototype.beginTransaction = function beginTransaction(request, callback) { - return this.rpcCall(beginTransaction, $root.google.datastore.v1.BeginTransactionRequest, $root.google.datastore.v1.BeginTransactionResponse, request, callback); - }, "name", { value: "BeginTransaction" }); + AggregationResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; /** - * Calls BeginTransaction. - * @function beginTransaction - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object - * @returns {Promise} Promise - * @variation 2 + * Gets the default type url for AggregationResult + * @function getTypeUrl + * @memberof google.datastore.v1.AggregationResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url */ + AggregationResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AggregationResult"; + }; + + return AggregationResult; + })(); + + v1.AggregationResultBatch = (function() { /** - * Callback as used by {@link google.datastore.v1.Datastore|commit}. - * @memberof google.datastore.v1.Datastore - * @typedef CommitCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.CommitResponse} [response] CommitResponse + * Properties of an AggregationResultBatch. + * @memberof google.datastore.v1 + * @interface IAggregationResultBatch + * @property {Array.|null} [aggregationResults] AggregationResultBatch aggregationResults + * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] AggregationResultBatch moreResults + * @property {google.protobuf.ITimestamp|null} [readTime] AggregationResultBatch readTime */ /** - * Calls Commit. - * @function commit - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object - * @param {google.datastore.v1.Datastore.CommitCallback} callback Node-style callback called with the error, if any, and CommitResponse - * @returns {undefined} - * @variation 1 + * Constructs a new AggregationResultBatch. + * @memberof google.datastore.v1 + * @classdesc Represents an AggregationResultBatch. + * @implements IAggregationResultBatch + * @constructor + * @param {google.datastore.v1.IAggregationResultBatch=} [properties] Properties to set */ - Object.defineProperty(Datastore.prototype.commit = function commit(request, callback) { - return this.rpcCall(commit, $root.google.datastore.v1.CommitRequest, $root.google.datastore.v1.CommitResponse, request, callback); - }, "name", { value: "Commit" }); + function AggregationResultBatch(properties) { + this.aggregationResults = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } /** - * Calls Commit. - * @function commit - * @memberof google.datastore.v1.Datastore + * AggregationResultBatch aggregationResults. + * @member {Array.} aggregationResults + * @memberof google.datastore.v1.AggregationResultBatch * @instance - * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object - * @returns {Promise} Promise - * @variation 2 */ + AggregationResultBatch.prototype.aggregationResults = $util.emptyArray; /** - * Callback as used by {@link google.datastore.v1.Datastore|rollback}. - * @memberof google.datastore.v1.Datastore - * @typedef RollbackCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.RollbackResponse} [response] RollbackResponse + * AggregationResultBatch moreResults. + * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults + * @memberof google.datastore.v1.AggregationResultBatch + * @instance */ + AggregationResultBatch.prototype.moreResults = 0; /** - * Calls Rollback. - * @function rollback - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object - * @param {google.datastore.v1.Datastore.RollbackCallback} callback Node-style callback called with the error, if any, and RollbackResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.rollback = function rollback(request, callback) { - return this.rpcCall(rollback, $root.google.datastore.v1.RollbackRequest, $root.google.datastore.v1.RollbackResponse, request, callback); - }, "name", { value: "Rollback" }); - - /** - * Calls Rollback. - * @function rollback - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ - - /** - * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. - * @memberof google.datastore.v1.Datastore - * @typedef AllocateIdsCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.AllocateIdsResponse} [response] AllocateIdsResponse - */ - - /** - * Calls AllocateIds. - * @function allocateIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object - * @param {google.datastore.v1.Datastore.AllocateIdsCallback} callback Node-style callback called with the error, if any, and AllocateIdsResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.allocateIds = function allocateIds(request, callback) { - return this.rpcCall(allocateIds, $root.google.datastore.v1.AllocateIdsRequest, $root.google.datastore.v1.AllocateIdsResponse, request, callback); - }, "name", { value: "AllocateIds" }); - - /** - * Calls AllocateIds. - * @function allocateIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ - - /** - * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. - * @memberof google.datastore.v1.Datastore - * @typedef ReserveIdsCallback - * @type {function} - * @param {Error|null} error Error, if any - * @param {google.datastore.v1.ReserveIdsResponse} [response] ReserveIdsResponse - */ - - /** - * Calls ReserveIds. - * @function reserveIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object - * @param {google.datastore.v1.Datastore.ReserveIdsCallback} callback Node-style callback called with the error, if any, and ReserveIdsResponse - * @returns {undefined} - * @variation 1 - */ - Object.defineProperty(Datastore.prototype.reserveIds = function reserveIds(request, callback) { - return this.rpcCall(reserveIds, $root.google.datastore.v1.ReserveIdsRequest, $root.google.datastore.v1.ReserveIdsResponse, request, callback); - }, "name", { value: "ReserveIds" }); - - /** - * Calls ReserveIds. - * @function reserveIds - * @memberof google.datastore.v1.Datastore - * @instance - * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object - * @returns {Promise} Promise - * @variation 2 - */ - - return Datastore; - })(); - - v1.LookupRequest = (function() { - - /** - * Properties of a LookupRequest. - * @memberof google.datastore.v1 - * @interface ILookupRequest - * @property {string|null} [projectId] LookupRequest projectId - * @property {string|null} [databaseId] LookupRequest databaseId - * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions - * @property {Array.|null} [keys] LookupRequest keys - */ - - /** - * Constructs a new LookupRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a LookupRequest. - * @implements ILookupRequest - * @constructor - * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set - */ - function LookupRequest(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * LookupRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.projectId = ""; - - /** - * LookupRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.databaseId = ""; - - /** - * LookupRequest readOptions. - * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions - * @memberof google.datastore.v1.LookupRequest - * @instance - */ - LookupRequest.prototype.readOptions = null; - - /** - * LookupRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.LookupRequest + * AggregationResultBatch readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.AggregationResultBatch * @instance */ - LookupRequest.prototype.keys = $util.emptyArray; + AggregationResultBatch.prototype.readTime = null; /** - * Creates a new LookupRequest instance using the specified properties. + * Creates a new AggregationResultBatch instance using the specified properties. * @function create - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static - * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set - * @returns {google.datastore.v1.LookupRequest} LookupRequest instance + * @param {google.datastore.v1.IAggregationResultBatch=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationResultBatch} AggregationResultBatch instance */ - LookupRequest.create = function create(properties) { - return new LookupRequest(properties); + AggregationResultBatch.create = function create(properties) { + return new AggregationResultBatch(properties); }; /** - * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * Encodes the specified AggregationResultBatch message. Does not implicitly {@link google.datastore.v1.AggregationResultBatch.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static - * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode + * @param {google.datastore.v1.IAggregationResultBatch} message AggregationResultBatch message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LookupRequest.encode = function encode(message, writer) { + AggregationResultBatch.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) - $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.aggregationResults != null && message.aggregationResults.length) + for (var i = 0; i < message.aggregationResults.length; ++i) + $root.google.datastore.v1.AggregationResult.encode(message.aggregationResults[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.moreResults); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. + * Encodes the specified AggregationResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationResultBatch.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static - * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode + * @param {google.datastore.v1.IAggregationResultBatch} message AggregationResultBatch message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LookupRequest.encodeDelimited = function encodeDelimited(message, writer) { + AggregationResultBatch.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a LookupRequest message from the specified reader or buffer. + * Decodes an AggregationResultBatch message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.LookupRequest} LookupRequest + * @returns {google.datastore.v1.AggregationResultBatch} AggregationResultBatch * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LookupRequest.decode = function decode(reader, length) { + AggregationResultBatch.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationResultBatch(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); - break; - } - case 9: { - message.databaseId = reader.string(); + case 1: { + if (!(message.aggregationResults && message.aggregationResults.length)) + message.aggregationResults = []; + message.aggregationResults.push($root.google.datastore.v1.AggregationResult.decode(reader, reader.uint32())); break; } - case 1: { - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + case 2: { + message.moreResults = reader.int32(); break; } case 3: { - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } default: @@ -6683,176 +6647,192 @@ }; /** - * Decodes a LookupRequest message from the specified reader or buffer, length delimited. + * Decodes an AggregationResultBatch message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.LookupRequest} LookupRequest + * @returns {google.datastore.v1.AggregationResultBatch} AggregationResultBatch * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LookupRequest.decodeDelimited = function decodeDelimited(reader) { + AggregationResultBatch.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a LookupRequest message. + * Verifies an AggregationResultBatch message. * @function verify - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LookupRequest.verify = function verify(message) { + AggregationResultBatch.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.readOptions != null && message.hasOwnProperty("readOptions")) { - var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); - if (error) - return "readOptions." + error; - } - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (message.aggregationResults != null && message.hasOwnProperty("aggregationResults")) { + if (!Array.isArray(message.aggregationResults)) + return "aggregationResults: array expected"; + for (var i = 0; i < message.aggregationResults.length; ++i) { + var error = $root.google.datastore.v1.AggregationResult.verify(message.aggregationResults[i]); if (error) - return "keys." + error; + return "aggregationResults." + error; + } + } + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + switch (message.moreResults) { + default: + return "moreResults: enum value expected"; + case 0: + case 1: + case 2: + case 4: + case 3: + break; } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; } return null; }; /** - * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. + * Creates an AggregationResultBatch message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.LookupRequest} LookupRequest + * @returns {google.datastore.v1.AggregationResultBatch} AggregationResultBatch */ - LookupRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.LookupRequest) + AggregationResultBatch.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationResultBatch) return object; - var message = new $root.google.datastore.v1.LookupRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.readOptions != null) { - if (typeof object.readOptions !== "object") - throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); - message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); - } - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.LookupRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.LookupRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + var message = new $root.google.datastore.v1.AggregationResultBatch(); + if (object.aggregationResults) { + if (!Array.isArray(object.aggregationResults)) + throw TypeError(".google.datastore.v1.AggregationResultBatch.aggregationResults: array expected"); + message.aggregationResults = []; + for (var i = 0; i < object.aggregationResults.length; ++i) { + if (typeof object.aggregationResults[i] !== "object") + throw TypeError(".google.datastore.v1.AggregationResultBatch.aggregationResults: object expected"); + message.aggregationResults[i] = $root.google.datastore.v1.AggregationResult.fromObject(object.aggregationResults[i]); } } - return message; - }; - - /** - * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. + switch (object.moreResults) { + case "MORE_RESULTS_TYPE_UNSPECIFIED": + case 0: + message.moreResults = 0; + break; + case "NOT_FINISHED": + case 1: + message.moreResults = 1; + break; + case "MORE_RESULTS_AFTER_LIMIT": + case 2: + message.moreResults = 2; + break; + case "MORE_RESULTS_AFTER_CURSOR": + case 4: + message.moreResults = 4; + break; + case "NO_MORE_RESULTS": + case 3: + message.moreResults = 3; + break; + } + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.AggregationResultBatch.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } + return message; + }; + + /** + * Creates a plain object from an AggregationResultBatch message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static - * @param {google.datastore.v1.LookupRequest} message LookupRequest + * @param {google.datastore.v1.AggregationResultBatch} message AggregationResultBatch * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - LookupRequest.toObject = function toObject(message, options) { + AggregationResultBatch.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.keys = []; + object.aggregationResults = []; if (options.defaults) { - object.readOptions = null; - object.projectId = ""; - object.databaseId = ""; + object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; + object.readTime = null; } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) - object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + if (message.aggregationResults && message.aggregationResults.length) { + object.aggregationResults = []; + for (var j = 0; j < message.aggregationResults.length; ++j) + object.aggregationResults[j] = $root.google.datastore.v1.AggregationResult.toObject(message.aggregationResults[j], options); } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; }; /** - * Converts this LookupRequest to JSON. + * Converts this AggregationResultBatch to JSON. * @function toJSON - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @instance * @returns {Object.} JSON object */ - LookupRequest.prototype.toJSON = function toJSON() { + AggregationResultBatch.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for LookupRequest + * Gets the default type url for AggregationResultBatch * @function getTypeUrl - * @memberof google.datastore.v1.LookupRequest + * @memberof google.datastore.v1.AggregationResultBatch * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - LookupRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + AggregationResultBatch.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.LookupRequest"; + return typeUrlPrefix + "/google.datastore.v1.AggregationResultBatch"; }; - return LookupRequest; + return AggregationResultBatch; })(); - v1.LookupResponse = (function() { + v1.PartitionId = (function() { /** - * Properties of a LookupResponse. + * Properties of a PartitionId. * @memberof google.datastore.v1 - * @interface ILookupResponse - * @property {Array.|null} [found] LookupResponse found - * @property {Array.|null} [missing] LookupResponse missing - * @property {Array.|null} [deferred] LookupResponse deferred - * @property {google.protobuf.ITimestamp|null} [readTime] LookupResponse readTime + * @interface IPartitionId + * @property {string|null} [projectId] PartitionId projectId + * @property {string|null} [databaseId] PartitionId databaseId + * @property {string|null} [namespaceId] PartitionId namespaceId */ /** - * Constructs a new LookupResponse. + * Constructs a new PartitionId. * @memberof google.datastore.v1 - * @classdesc Represents a LookupResponse. - * @implements ILookupResponse + * @classdesc Represents a PartitionId. + * @implements IPartitionId * @constructor - * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set */ - function LookupResponse(properties) { - this.found = []; - this.missing = []; - this.deferred = []; + function PartitionId(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -6860,126 +6840,103 @@ } /** - * LookupResponse found. - * @member {Array.} found - * @memberof google.datastore.v1.LookupResponse - * @instance - */ - LookupResponse.prototype.found = $util.emptyArray; - - /** - * LookupResponse missing. - * @member {Array.} missing - * @memberof google.datastore.v1.LookupResponse + * PartitionId projectId. + * @member {string} projectId + * @memberof google.datastore.v1.PartitionId * @instance */ - LookupResponse.prototype.missing = $util.emptyArray; + PartitionId.prototype.projectId = ""; /** - * LookupResponse deferred. - * @member {Array.} deferred - * @memberof google.datastore.v1.LookupResponse + * PartitionId databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.PartitionId * @instance */ - LookupResponse.prototype.deferred = $util.emptyArray; + PartitionId.prototype.databaseId = ""; /** - * LookupResponse readTime. - * @member {google.protobuf.ITimestamp|null|undefined} readTime - * @memberof google.datastore.v1.LookupResponse + * PartitionId namespaceId. + * @member {string} namespaceId + * @memberof google.datastore.v1.PartitionId * @instance */ - LookupResponse.prototype.readTime = null; + PartitionId.prototype.namespaceId = ""; /** - * Creates a new LookupResponse instance using the specified properties. + * Creates a new PartitionId instance using the specified properties. * @function create - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set - * @returns {google.datastore.v1.LookupResponse} LookupResponse instance + * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + * @returns {google.datastore.v1.PartitionId} PartitionId instance */ - LookupResponse.create = function create(properties) { - return new LookupResponse(properties); + PartitionId.create = function create(properties) { + return new PartitionId(properties); }; /** - * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LookupResponse.encode = function encode(message, writer) { + PartitionId.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.found != null && message.found.length) - for (var i = 0; i < message.found.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.found[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.missing != null && message.missing.length) - for (var i = 0; i < message.missing.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.missing[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.deferred != null && message.deferred.length) - for (var i = 0; i < message.deferred.length; ++i) - $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) - $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.databaseId); + if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); return writer; }; /** - * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode + * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LookupResponse.encodeDelimited = function encodeDelimited(message, writer) { + PartitionId.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a LookupResponse message from the specified reader or buffer. + * Decodes a PartitionId message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.LookupResponse} LookupResponse + * @returns {google.datastore.v1.PartitionId} PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LookupResponse.decode = function decode(reader, length) { + PartitionId.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PartitionId(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - if (!(message.found && message.found.length)) - message.found = []; - message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); - break; - } case 2: { - if (!(message.missing && message.missing.length)) - message.missing = []; - message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + message.projectId = reader.string(); break; } case 3: { - if (!(message.deferred && message.deferred.length)) - message.deferred = []; - message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + message.databaseId = reader.string(); break; } - case 7: { - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + case 4: { + message.namespaceId = reader.string(); break; } default: @@ -6991,209 +6948,141 @@ }; /** - * Decodes a LookupResponse message from the specified reader or buffer, length delimited. + * Decodes a PartitionId message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.LookupResponse} LookupResponse + * @returns {google.datastore.v1.PartitionId} PartitionId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LookupResponse.decodeDelimited = function decodeDelimited(reader) { + PartitionId.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a LookupResponse message. + * Verifies a PartitionId message. * @function verify - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LookupResponse.verify = function verify(message) { + PartitionId.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.found != null && message.hasOwnProperty("found")) { - if (!Array.isArray(message.found)) - return "found: array expected"; - for (var i = 0; i < message.found.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.found[i]); - if (error) - return "found." + error; - } - } - if (message.missing != null && message.hasOwnProperty("missing")) { - if (!Array.isArray(message.missing)) - return "missing: array expected"; - for (var i = 0; i < message.missing.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.missing[i]); - if (error) - return "missing." + error; - } - } - if (message.deferred != null && message.hasOwnProperty("deferred")) { - if (!Array.isArray(message.deferred)) - return "deferred: array expected"; - for (var i = 0; i < message.deferred.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.deferred[i]); - if (error) - return "deferred." + error; - } - } - if (message.readTime != null && message.hasOwnProperty("readTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.readTime); - if (error) - return "readTime." + error; - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + if (!$util.isString(message.namespaceId)) + return "namespaceId: string expected"; return null; }; /** - * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. + * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.LookupResponse} LookupResponse + * @returns {google.datastore.v1.PartitionId} PartitionId */ - LookupResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.LookupResponse) - return object; - var message = new $root.google.datastore.v1.LookupResponse(); - if (object.found) { - if (!Array.isArray(object.found)) - throw TypeError(".google.datastore.v1.LookupResponse.found: array expected"); - message.found = []; - for (var i = 0; i < object.found.length; ++i) { - if (typeof object.found[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.found: object expected"); - message.found[i] = $root.google.datastore.v1.EntityResult.fromObject(object.found[i]); - } - } - if (object.missing) { - if (!Array.isArray(object.missing)) - throw TypeError(".google.datastore.v1.LookupResponse.missing: array expected"); - message.missing = []; - for (var i = 0; i < object.missing.length; ++i) { - if (typeof object.missing[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.missing: object expected"); - message.missing[i] = $root.google.datastore.v1.EntityResult.fromObject(object.missing[i]); - } - } - if (object.deferred) { - if (!Array.isArray(object.deferred)) - throw TypeError(".google.datastore.v1.LookupResponse.deferred: array expected"); - message.deferred = []; - for (var i = 0; i < object.deferred.length; ++i) { - if (typeof object.deferred[i] !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.deferred: object expected"); - message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); - } - } - if (object.readTime != null) { - if (typeof object.readTime !== "object") - throw TypeError(".google.datastore.v1.LookupResponse.readTime: object expected"); - message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); - } + PartitionId.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PartitionId) + return object; + var message = new $root.google.datastore.v1.PartitionId(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.namespaceId != null) + message.namespaceId = String(object.namespaceId); return message; }; /** - * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. + * Creates a plain object from a PartitionId message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static - * @param {google.datastore.v1.LookupResponse} message LookupResponse + * @param {google.datastore.v1.PartitionId} message PartitionId * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - LookupResponse.toObject = function toObject(message, options) { + PartitionId.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) { - object.found = []; - object.missing = []; - object.deferred = []; - } - if (options.defaults) - object.readTime = null; - if (message.found && message.found.length) { - object.found = []; - for (var j = 0; j < message.found.length; ++j) - object.found[j] = $root.google.datastore.v1.EntityResult.toObject(message.found[j], options); - } - if (message.missing && message.missing.length) { - object.missing = []; - for (var j = 0; j < message.missing.length; ++j) - object.missing[j] = $root.google.datastore.v1.EntityResult.toObject(message.missing[j], options); - } - if (message.deferred && message.deferred.length) { - object.deferred = []; - for (var j = 0; j < message.deferred.length; ++j) - object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); + if (options.defaults) { + object.projectId = ""; + object.databaseId = ""; + object.namespaceId = ""; } - if (message.readTime != null && message.hasOwnProperty("readTime")) - object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; + if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) + object.namespaceId = message.namespaceId; return object; }; /** - * Converts this LookupResponse to JSON. + * Converts this PartitionId to JSON. * @function toJSON - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @instance * @returns {Object.} JSON object */ - LookupResponse.prototype.toJSON = function toJSON() { + PartitionId.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for LookupResponse + * Gets the default type url for PartitionId * @function getTypeUrl - * @memberof google.datastore.v1.LookupResponse + * @memberof google.datastore.v1.PartitionId * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - LookupResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + PartitionId.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.LookupResponse"; + return typeUrlPrefix + "/google.datastore.v1.PartitionId"; }; - return LookupResponse; + return PartitionId; })(); - v1.RunQueryRequest = (function() { + v1.Key = (function() { /** - * Properties of a RunQueryRequest. + * Properties of a Key. * @memberof google.datastore.v1 - * @interface IRunQueryRequest - * @property {string|null} [projectId] RunQueryRequest projectId - * @property {string|null} [databaseId] RunQueryRequest databaseId - * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId - * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions - * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query - * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery + * @interface IKey + * @property {google.datastore.v1.IPartitionId|null} [partitionId] Key partitionId + * @property {Array.|null} [path] Key path */ /** - * Constructs a new RunQueryRequest. + * Constructs a new Key. * @memberof google.datastore.v1 - * @classdesc Represents a RunQueryRequest. - * @implements IRunQueryRequest + * @classdesc Represents a Key. + * @implements IKey * @constructor - * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set + * @param {google.datastore.v1.IKey=} [properties] Properties to set */ - function RunQueryRequest(properties) { + function Key(properties) { + this.path = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7201,159 +7090,92 @@ } /** - * RunQueryRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.projectId = ""; - - /** - * RunQueryRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.databaseId = ""; - - /** - * RunQueryRequest partitionId. + * Key partitionId. * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.partitionId = null; - - /** - * RunQueryRequest readOptions. - * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.readOptions = null; - - /** - * RunQueryRequest query. - * @member {google.datastore.v1.IQuery|null|undefined} query - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.query = null; - - /** - * RunQueryRequest gqlQuery. - * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @instance */ - RunQueryRequest.prototype.gqlQuery = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + Key.prototype.partitionId = null; /** - * RunQueryRequest queryType. - * @member {"query"|"gqlQuery"|undefined} queryType - * @memberof google.datastore.v1.RunQueryRequest + * Key path. + * @member {Array.} path + * @memberof google.datastore.v1.Key * @instance */ - Object.defineProperty(RunQueryRequest.prototype, "queryType", { - get: $util.oneOfGetter($oneOfFields = ["query", "gqlQuery"]), - set: $util.oneOfSetter($oneOfFields) - }); + Key.prototype.path = $util.emptyArray; /** - * Creates a new RunQueryRequest instance using the specified properties. + * Creates a new Key instance using the specified properties. * @function create - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest instance + * @param {google.datastore.v1.IKey=} [properties] Properties to set + * @returns {google.datastore.v1.Key} Key instance */ - RunQueryRequest.create = function create(properties) { - return new RunQueryRequest(properties); + Key.create = function create(properties) { + return new Key(properties); }; /** - * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode + * @param {google.datastore.v1.IKey} message Key message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RunQueryRequest.encode = function encode(message, writer) { + Key.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) - $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) - $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.query != null && Object.hasOwnProperty.call(message, "query")) - $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) - $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.path != null && message.path.length) + for (var i = 0; i < message.path.length; ++i) + $root.google.datastore.v1.Key.PathElement.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. + * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode + * @param {google.datastore.v1.IKey} message Key message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RunQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { + Key.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a RunQueryRequest message from the specified reader or buffer. + * Decodes a Key message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + * @returns {google.datastore.v1.Key} Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RunQueryRequest.decode = function decode(reader, length) { + Key.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); - break; - } - case 9: { - message.databaseId = reader.string(); + case 1: { + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); break; } case 2: { - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); - break; - } - case 1: { - message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); - break; - } - case 3: { - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); - break; - } - case 7: { - message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); + if (!(message.path && message.path.length)) + message.path = []; + message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); break; } default: @@ -7365,435 +7187,438 @@ }; /** - * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. + * Decodes a Key message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + * @returns {google.datastore.v1.Key} Key * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RunQueryRequest.decodeDelimited = function decodeDelimited(reader) { + Key.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a RunQueryRequest message. + * Verifies a Key message. * @function verify - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RunQueryRequest.verify = function verify(message) { + Key.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; if (message.partitionId != null && message.hasOwnProperty("partitionId")) { var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); if (error) return "partitionId." + error; } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) { - var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); - if (error) - return "readOptions." + error; - } - if (message.query != null && message.hasOwnProperty("query")) { - properties.queryType = 1; - { - var error = $root.google.datastore.v1.Query.verify(message.query); - if (error) - return "query." + error; - } - } - if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { - if (properties.queryType === 1) - return "queryType: multiple values"; - properties.queryType = 1; - { - var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) { + var error = $root.google.datastore.v1.Key.PathElement.verify(message.path[i]); if (error) - return "gqlQuery." + error; + return "path." + error; } } return null; }; /** - * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. + * Creates a Key message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest + * @returns {google.datastore.v1.Key} Key */ - RunQueryRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RunQueryRequest) + Key.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key) return object; - var message = new $root.google.datastore.v1.RunQueryRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); + var message = new $root.google.datastore.v1.Key(); if (object.partitionId != null) { if (typeof object.partitionId !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); + throw TypeError(".google.datastore.v1.Key.partitionId: object expected"); message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); } - if (object.readOptions != null) { - if (typeof object.readOptions !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.readOptions: object expected"); - message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); - } - if (object.query != null) { - if (typeof object.query !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.query: object expected"); - message.query = $root.google.datastore.v1.Query.fromObject(object.query); - } - if (object.gqlQuery != null) { - if (typeof object.gqlQuery !== "object") - throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); - message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.datastore.v1.Key.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) { + if (typeof object.path[i] !== "object") + throw TypeError(".google.datastore.v1.Key.path: object expected"); + message.path[i] = $root.google.datastore.v1.Key.PathElement.fromObject(object.path[i]); + } } return message; }; /** - * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. + * Creates a plain object from a Key message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static - * @param {google.datastore.v1.RunQueryRequest} message RunQueryRequest + * @param {google.datastore.v1.Key} message Key * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RunQueryRequest.toObject = function toObject(message, options) { + Key.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.readOptions = null; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) object.partitionId = null; - object.projectId = ""; - object.databaseId = ""; - } - if (message.readOptions != null && message.hasOwnProperty("readOptions")) - object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); if (message.partitionId != null && message.hasOwnProperty("partitionId")) object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); - if (message.query != null && message.hasOwnProperty("query")) { - object.query = $root.google.datastore.v1.Query.toObject(message.query, options); - if (options.oneofs) - object.queryType = "query"; - } - if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { - object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); - if (options.oneofs) - object.queryType = "gqlQuery"; + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = $root.google.datastore.v1.Key.PathElement.toObject(message.path[j], options); } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; return object; }; /** - * Converts this RunQueryRequest to JSON. + * Converts this Key to JSON. * @function toJSON - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @instance * @returns {Object.} JSON object */ - RunQueryRequest.prototype.toJSON = function toJSON() { + Key.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for RunQueryRequest + * Gets the default type url for Key * @function getTypeUrl - * @memberof google.datastore.v1.RunQueryRequest + * @memberof google.datastore.v1.Key * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - RunQueryRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Key.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.RunQueryRequest"; + return typeUrlPrefix + "/google.datastore.v1.Key"; }; - return RunQueryRequest; - })(); + Key.PathElement = (function() { - v1.RunQueryResponse = (function() { + /** + * Properties of a PathElement. + * @memberof google.datastore.v1.Key + * @interface IPathElement + * @property {string|null} [kind] PathElement kind + * @property {number|Long|null} [id] PathElement id + * @property {string|null} [name] PathElement name + */ - /** - * Properties of a RunQueryResponse. - * @memberof google.datastore.v1 - * @interface IRunQueryResponse - * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch - * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query - */ + /** + * Constructs a new PathElement. + * @memberof google.datastore.v1.Key + * @classdesc Represents a PathElement. + * @implements IPathElement + * @constructor + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + */ + function PathElement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Constructs a new RunQueryResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a RunQueryResponse. - * @implements IRunQueryResponse - * @constructor - * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set - */ - function RunQueryResponse(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * PathElement kind. + * @member {string} kind + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.kind = ""; - /** - * RunQueryResponse batch. - * @member {google.datastore.v1.IQueryResultBatch|null|undefined} batch - * @memberof google.datastore.v1.RunQueryResponse - * @instance - */ - RunQueryResponse.prototype.batch = null; + /** + * PathElement id. + * @member {number|Long|null|undefined} id + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.id = null; - /** - * RunQueryResponse query. - * @member {google.datastore.v1.IQuery|null|undefined} query - * @memberof google.datastore.v1.RunQueryResponse - * @instance - */ - RunQueryResponse.prototype.query = null; + /** + * PathElement name. + * @member {string|null|undefined} name + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + PathElement.prototype.name = null; - /** - * Creates a new RunQueryResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse instance - */ - RunQueryResponse.create = function create(properties) { - return new RunQueryResponse(properties); - }; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) - $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.query != null && Object.hasOwnProperty.call(message, "query")) - $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; + /** + * PathElement idType. + * @member {"id"|"name"|undefined} idType + * @memberof google.datastore.v1.Key.PathElement + * @instance + */ + Object.defineProperty(PathElement.prototype, "idType", { + get: $util.oneOfGetter($oneOfFields = ["id", "name"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RunQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new PathElement instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set + * @returns {google.datastore.v1.Key.PathElement} PathElement instance + */ + PathElement.create = function create(properties) { + return new PathElement(properties); + }; - /** - * Decodes a RunQueryResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); - break; - } - case 2: { - message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + /** + * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + return writer; + }; + + /** + * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PathElement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PathElement message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key.PathElement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.kind = reader.string(); + break; + } + case 2: { + message.id = reader.int64(); + break; + } + case 3: { + message.name = reader.string(); + break; + } + default: + reader.skipType(tag & 7); break; } - default: - reader.skipType(tag & 7); - break; } - } - return message; - }; - - /** - * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RunQueryResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + return message; + }; - /** - * Verifies a RunQueryResponse message. - * @function verify - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RunQueryResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.batch != null && message.hasOwnProperty("batch")) { - var error = $root.google.datastore.v1.QueryResultBatch.verify(message.batch); - if (error) - return "batch." + error; - } - if (message.query != null && message.hasOwnProperty("query")) { - var error = $root.google.datastore.v1.Query.verify(message.query); - if (error) - return "query." + error; - } - return null; - }; + /** + * Decodes a PathElement message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Key.PathElement} PathElement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PathElement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse - */ - RunQueryResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RunQueryResponse) - return object; - var message = new $root.google.datastore.v1.RunQueryResponse(); - if (object.batch != null) { - if (typeof object.batch !== "object") - throw TypeError(".google.datastore.v1.RunQueryResponse.batch: object expected"); - message.batch = $root.google.datastore.v1.QueryResultBatch.fromObject(object.batch); - } - if (object.query != null) { - if (typeof object.query !== "object") - throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); - message.query = $root.google.datastore.v1.Query.fromObject(object.query); - } - return message; - }; + /** + * Verifies a PathElement message. + * @function verify + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PathElement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.kind != null && message.hasOwnProperty("kind")) + if (!$util.isString(message.kind)) + return "kind: string expected"; + if (message.id != null && message.hasOwnProperty("id")) { + properties.idType = 1; + if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) + return "id: integer|Long expected"; + } + if (message.name != null && message.hasOwnProperty("name")) { + if (properties.idType === 1) + return "idType: multiple values"; + properties.idType = 1; + if (!$util.isString(message.name)) + return "name: string expected"; + } + return null; + }; - /** - * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {google.datastore.v1.RunQueryResponse} message RunQueryResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RunQueryResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.batch = null; - object.query = null; - } - if (message.batch != null && message.hasOwnProperty("batch")) - object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); - if (message.query != null && message.hasOwnProperty("query")) - object.query = $root.google.datastore.v1.Query.toObject(message.query, options); - return object; - }; + /** + * Creates a PathElement message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Key.PathElement} PathElement + */ + PathElement.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Key.PathElement) + return object; + var message = new $root.google.datastore.v1.Key.PathElement(); + if (object.kind != null) + message.kind = String(object.kind); + if (object.id != null) + if ($util.Long) + (message.id = $util.Long.fromValue(object.id)).unsigned = false; + else if (typeof object.id === "string") + message.id = parseInt(object.id, 10); + else if (typeof object.id === "number") + message.id = object.id; + else if (typeof object.id === "object") + message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(); + if (object.name != null) + message.name = String(object.name); + return message; + }; - /** - * Converts this RunQueryResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.RunQueryResponse - * @instance - * @returns {Object.} JSON object - */ - RunQueryResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from a PathElement message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {google.datastore.v1.Key.PathElement} message PathElement + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PathElement.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.kind = ""; + if (message.kind != null && message.hasOwnProperty("kind")) + object.kind = message.kind; + if (message.id != null && message.hasOwnProperty("id")) { + if (typeof message.id === "number") + object.id = options.longs === String ? String(message.id) : message.id; + else + object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id; + if (options.oneofs) + object.idType = "id"; + } + if (message.name != null && message.hasOwnProperty("name")) { + object.name = message.name; + if (options.oneofs) + object.idType = "name"; + } + return object; + }; - /** - * Gets the default type url for RunQueryResponse - * @function getTypeUrl - * @memberof google.datastore.v1.RunQueryResponse - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RunQueryResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.RunQueryResponse"; - }; + /** + * Converts this PathElement to JSON. + * @function toJSON + * @memberof google.datastore.v1.Key.PathElement + * @instance + * @returns {Object.} JSON object + */ + PathElement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return RunQueryResponse; + /** + * Gets the default type url for PathElement + * @function getTypeUrl + * @memberof google.datastore.v1.Key.PathElement + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PathElement.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Key.PathElement"; + }; + + return PathElement; + })(); + + return Key; })(); - v1.BeginTransactionRequest = (function() { + v1.ArrayValue = (function() { /** - * Properties of a BeginTransactionRequest. + * Properties of an ArrayValue. * @memberof google.datastore.v1 - * @interface IBeginTransactionRequest - * @property {string|null} [projectId] BeginTransactionRequest projectId - * @property {string|null} [databaseId] BeginTransactionRequest databaseId - * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions + * @interface IArrayValue + * @property {Array.|null} [values] ArrayValue values */ /** - * Constructs a new BeginTransactionRequest. + * Constructs a new ArrayValue. * @memberof google.datastore.v1 - * @classdesc Represents a BeginTransactionRequest. - * @implements IBeginTransactionRequest + * @classdesc Represents an ArrayValue. + * @implements IArrayValue * @constructor - * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set */ - function BeginTransactionRequest(properties) { + function ArrayValue(properties) { + this.values = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -7801,103 +7626,78 @@ } /** - * BeginTransactionRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.BeginTransactionRequest - * @instance - */ - BeginTransactionRequest.prototype.projectId = ""; - - /** - * BeginTransactionRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.BeginTransactionRequest - * @instance - */ - BeginTransactionRequest.prototype.databaseId = ""; - - /** - * BeginTransactionRequest transactionOptions. - * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions - * @memberof google.datastore.v1.BeginTransactionRequest + * ArrayValue values. + * @member {Array.} values + * @memberof google.datastore.v1.ArrayValue * @instance */ - BeginTransactionRequest.prototype.transactionOptions = null; + ArrayValue.prototype.values = $util.emptyArray; /** - * Creates a new BeginTransactionRequest instance using the specified properties. + * Creates a new ArrayValue instance using the specified properties. * @function create - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest instance + * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set + * @returns {google.datastore.v1.ArrayValue} ArrayValue instance */ - BeginTransactionRequest.create = function create(properties) { - return new BeginTransactionRequest(properties); + ArrayValue.create = function create(properties) { + return new ArrayValue(properties); }; /** - * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BeginTransactionRequest.encode = function encode(message, writer) { + ArrayValue.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); - if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) - $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.datastore.v1.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. + * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode + * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BeginTransactionRequest.encodeDelimited = function encodeDelimited(message, writer) { + ArrayValue.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer. + * Decodes an ArrayValue message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @returns {google.datastore.v1.ArrayValue} ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BeginTransactionRequest.decode = function decode(reader, length) { + ArrayValue.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ArrayValue(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); - break; - } - case 9: { - message.databaseId = reader.string(); - break; - } - case 10: { - message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + case 1: { + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); break; } default: @@ -7909,144 +7709,151 @@ }; /** - * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. + * Decodes an ArrayValue message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @returns {google.datastore.v1.ArrayValue} ArrayValue * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BeginTransactionRequest.decodeDelimited = function decodeDelimited(reader) { + ArrayValue.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a BeginTransactionRequest message. + * Verifies an ArrayValue message. * @function verify - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BeginTransactionRequest.verify = function verify(message) { + ArrayValue.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { - var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); - if (error) - return "transactionOptions." + error; - } - return null; - }; - - /** - * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.values[i]); + if (error) + return "values." + error; + } + } + return null; + }; + + /** + * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest + * @returns {google.datastore.v1.ArrayValue} ArrayValue */ - BeginTransactionRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.BeginTransactionRequest) + ArrayValue.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ArrayValue) return object; - var message = new $root.google.datastore.v1.BeginTransactionRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.transactionOptions != null) { - if (typeof object.transactionOptions !== "object") - throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); - message.transactionOptions = $root.google.datastore.v1.TransactionOptions.fromObject(object.transactionOptions); + var message = new $root.google.datastore.v1.ArrayValue(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.datastore.v1.ArrayValue.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.datastore.v1.ArrayValue.values: object expected"); + message.values[i] = $root.google.datastore.v1.Value.fromObject(object.values[i]); + } } return message; }; /** - * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. + * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static - * @param {google.datastore.v1.BeginTransactionRequest} message BeginTransactionRequest + * @param {google.datastore.v1.ArrayValue} message ArrayValue * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - BeginTransactionRequest.toObject = function toObject(message, options) { + ArrayValue.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) { - object.projectId = ""; - object.databaseId = ""; - object.transactionOptions = null; + if (options.arrays || options.defaults) + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.datastore.v1.Value.toObject(message.values[j], options); } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; - if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) - object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); return object; }; /** - * Converts this BeginTransactionRequest to JSON. + * Converts this ArrayValue to JSON. * @function toJSON - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @instance * @returns {Object.} JSON object */ - BeginTransactionRequest.prototype.toJSON = function toJSON() { + ArrayValue.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for BeginTransactionRequest + * Gets the default type url for ArrayValue * @function getTypeUrl - * @memberof google.datastore.v1.BeginTransactionRequest + * @memberof google.datastore.v1.ArrayValue * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - BeginTransactionRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + ArrayValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.BeginTransactionRequest"; + return typeUrlPrefix + "/google.datastore.v1.ArrayValue"; }; - return BeginTransactionRequest; + return ArrayValue; })(); - v1.BeginTransactionResponse = (function() { + v1.Value = (function() { /** - * Properties of a BeginTransactionResponse. + * Properties of a Value. * @memberof google.datastore.v1 - * @interface IBeginTransactionResponse - * @property {Uint8Array|null} [transaction] BeginTransactionResponse transaction + * @interface IValue + * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue + * @property {boolean|null} [booleanValue] Value booleanValue + * @property {number|Long|null} [integerValue] Value integerValue + * @property {number|null} [doubleValue] Value doubleValue + * @property {google.protobuf.ITimestamp|null} [timestampValue] Value timestampValue + * @property {google.datastore.v1.IKey|null} [keyValue] Value keyValue + * @property {string|null} [stringValue] Value stringValue + * @property {Uint8Array|null} [blobValue] Value blobValue + * @property {google.type.ILatLng|null} [geoPointValue] Value geoPointValue + * @property {google.datastore.v1.IEntity|null} [entityValue] Value entityValue + * @property {google.datastore.v1.IArrayValue|null} [arrayValue] Value arrayValue + * @property {number|null} [meaning] Value meaning + * @property {boolean|null} [excludeFromIndexes] Value excludeFromIndexes */ /** - * Constructs a new BeginTransactionResponse. + * Constructs a new Value. * @memberof google.datastore.v1 - * @classdesc Represents a BeginTransactionResponse. - * @implements IBeginTransactionResponse + * @classdesc Represents a Value. + * @implements IValue * @constructor - * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + * @param {google.datastore.v1.IValue=} [properties] Properties to set */ - function BeginTransactionResponse(properties) { + function Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8054,317 +7861,257 @@ } /** - * BeginTransactionResponse transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.BeginTransactionResponse + * Value nullValue. + * @member {google.protobuf.NullValue|null|undefined} nullValue + * @memberof google.datastore.v1.Value * @instance */ - BeginTransactionResponse.prototype.transaction = $util.newBuffer([]); + Value.prototype.nullValue = null; /** - * Creates a new BeginTransactionResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse instance + * Value booleanValue. + * @member {boolean|null|undefined} booleanValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.create = function create(properties) { - return new BeginTransactionResponse(properties); - }; + Value.prototype.booleanValue = null; /** - * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Value integerValue. + * @member {number|Long|null|undefined} integerValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - return writer; - }; + Value.prototype.integerValue = null; /** - * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Value doubleValue. + * @member {number|null|undefined} doubleValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + Value.prototype.doubleValue = null; /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Value timestampValue. + * @member {google.protobuf.ITimestamp|null|undefined} timestampValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.transaction = reader.bytes(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + Value.prototype.timestampValue = null; /** - * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Value keyValue. + * @member {google.datastore.v1.IKey|null|undefined} keyValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + Value.prototype.keyValue = null; /** - * Verifies a BeginTransactionResponse message. - * @function verify - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * Value stringValue. + * @member {string|null|undefined} stringValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.transaction != null && message.hasOwnProperty("transaction")) - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; - return null; - }; + Value.prototype.stringValue = null; /** - * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse + * Value blobValue. + * @member {Uint8Array|null|undefined} blobValue + * @memberof google.datastore.v1.Value + * @instance */ - BeginTransactionResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.BeginTransactionResponse) - return object; - var message = new $root.google.datastore.v1.BeginTransactionResponse(); - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length >= 0) - message.transaction = object.transaction; - return message; - }; - - /** - * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {google.datastore.v1.BeginTransactionResponse} message BeginTransactionResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BeginTransactionResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.transaction = ""; - else { - object.transaction = []; - if (options.bytes !== Array) - object.transaction = $util.newBuffer(object.transaction); - } - if (message.transaction != null && message.hasOwnProperty("transaction")) - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - return object; - }; + Value.prototype.blobValue = null; /** - * Converts this BeginTransactionResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.BeginTransactionResponse + * Value geoPointValue. + * @member {google.type.ILatLng|null|undefined} geoPointValue + * @memberof google.datastore.v1.Value * @instance - * @returns {Object.} JSON object - */ - BeginTransactionResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for BeginTransactionResponse - * @function getTypeUrl - * @memberof google.datastore.v1.BeginTransactionResponse - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url */ - BeginTransactionResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.BeginTransactionResponse"; - }; - - return BeginTransactionResponse; - })(); - - v1.RollbackRequest = (function() { + Value.prototype.geoPointValue = null; /** - * Properties of a RollbackRequest. - * @memberof google.datastore.v1 - * @interface IRollbackRequest - * @property {string|null} [projectId] RollbackRequest projectId - * @property {string|null} [databaseId] RollbackRequest databaseId - * @property {Uint8Array|null} [transaction] RollbackRequest transaction + * Value entityValue. + * @member {google.datastore.v1.IEntity|null|undefined} entityValue + * @memberof google.datastore.v1.Value + * @instance */ + Value.prototype.entityValue = null; /** - * Constructs a new RollbackRequest. - * @memberof google.datastore.v1 - * @classdesc Represents a RollbackRequest. - * @implements IRollbackRequest - * @constructor - * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set + * Value arrayValue. + * @member {google.datastore.v1.IArrayValue|null|undefined} arrayValue + * @memberof google.datastore.v1.Value + * @instance */ - function RollbackRequest(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + Value.prototype.arrayValue = null; /** - * RollbackRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.RollbackRequest + * Value meaning. + * @member {number} meaning + * @memberof google.datastore.v1.Value * @instance */ - RollbackRequest.prototype.projectId = ""; + Value.prototype.meaning = 0; /** - * RollbackRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.RollbackRequest + * Value excludeFromIndexes. + * @member {boolean} excludeFromIndexes + * @memberof google.datastore.v1.Value * @instance */ - RollbackRequest.prototype.databaseId = ""; + Value.prototype.excludeFromIndexes = false; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * RollbackRequest transaction. - * @member {Uint8Array} transaction - * @memberof google.datastore.v1.RollbackRequest + * Value valueType. + * @member {"nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"|undefined} valueType + * @memberof google.datastore.v1.Value * @instance */ - RollbackRequest.prototype.transaction = $util.newBuffer([]); + Object.defineProperty(Value.prototype, "valueType", { + get: $util.oneOfGetter($oneOfFields = ["nullValue", "booleanValue", "integerValue", "doubleValue", "timestampValue", "keyValue", "stringValue", "blobValue", "geoPointValue", "entityValue", "arrayValue"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new RollbackRequest instance using the specified properties. + * Creates a new Value instance using the specified properties. * @function create - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static - * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest instance + * @param {google.datastore.v1.IValue=} [properties] Properties to set + * @returns {google.datastore.v1.Value} Value instance */ - RollbackRequest.create = function create(properties) { - return new RollbackRequest(properties); + Value.create = function create(properties) { + return new Value(properties); }; /** - * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static - * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode + * @param {google.datastore.v1.IValue} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RollbackRequest.encode = function encode(message, writer) { + Value.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.booleanValue != null && Object.hasOwnProperty.call(message, "booleanValue")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); + if (message.integerValue != null && Object.hasOwnProperty.call(message, "integerValue")) + writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); + if (message.keyValue != null && Object.hasOwnProperty.call(message, "keyValue")) + $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.entityValue != null && Object.hasOwnProperty.call(message, "entityValue")) + $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.geoPointValue != null && Object.hasOwnProperty.call(message, "geoPointValue")) + $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.arrayValue != null && Object.hasOwnProperty.call(message, "arrayValue")) + $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.timestampValue != null && Object.hasOwnProperty.call(message, "timestampValue")) + $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); + if (message.meaning != null && Object.hasOwnProperty.call(message, "meaning")) + writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) + writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); + if (message.blobValue != null && Object.hasOwnProperty.call(message, "blobValue")) + writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); + if (message.excludeFromIndexes != null && Object.hasOwnProperty.call(message, "excludeFromIndexes")) + writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); return writer; }; /** - * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. + * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static - * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode + * @param {google.datastore.v1.IValue} message Value message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RollbackRequest.encodeDelimited = function encodeDelimited(message, writer) { + Value.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a RollbackRequest message from the specified reader or buffer. + * Decodes a Value message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + * @returns {google.datastore.v1.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RollbackRequest.decode = function decode(reader, length) { + Value.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Value(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 11: { + message.nullValue = reader.int32(); + break; + } + case 1: { + message.booleanValue = reader.bool(); + break; + } + case 2: { + message.integerValue = reader.int64(); + break; + } + case 3: { + message.doubleValue = reader.double(); + break; + } + case 10: { + message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 5: { + message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 17: { + message.stringValue = reader.string(); + break; + } + case 18: { + message.blobValue = reader.bytes(); + break; + } case 8: { - message.projectId = reader.string(); + message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); + break; + } + case 6: { + message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); break; } case 9: { - message.databaseId = reader.string(); + message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); break; } - case 1: { - message.transaction = reader.bytes(); + case 14: { + message.meaning = reader.int32(); + break; + } + case 19: { + message.excludeFromIndexes = reader.bool(); break; } default: @@ -8376,147 +8123,337 @@ }; /** - * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. + * Decodes a Value message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + * @returns {google.datastore.v1.Value} Value * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RollbackRequest.decodeDelimited = function decodeDelimited(reader) { + Value.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a RollbackRequest message. + * Verifies a Value message. * @function verify - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RollbackRequest.verify = function verify(message) { + Value.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.transaction != null && message.hasOwnProperty("transaction")) - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; + var properties = {}; + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + properties.valueType = 1; + switch (message.nullValue) { + default: + return "nullValue: enum value expected"; + case 0: + break; + } + } + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.booleanValue !== "boolean") + return "booleanValue: boolean expected"; + } + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isInteger(message.integerValue) && !(message.integerValue && $util.isInteger(message.integerValue.low) && $util.isInteger(message.integerValue.high))) + return "integerValue: integer|Long expected"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.timestampValue); + if (error) + return "timestampValue." + error; + } + } + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Key.verify(message.keyValue); + if (error) + return "keyValue." + error; + } + } + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!$util.isString(message.stringValue)) + return "stringValue: string expected"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (!(message.blobValue && typeof message.blobValue.length === "number" || $util.isString(message.blobValue))) + return "blobValue: buffer expected"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.type.LatLng.verify(message.geoPointValue); + if (error) + return "geoPointValue." + error; + } + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.entityValue); + if (error) + return "entityValue." + error; + } + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.datastore.v1.ArrayValue.verify(message.arrayValue); + if (error) + return "arrayValue." + error; + } + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + if (!$util.isInteger(message.meaning)) + return "meaning: integer expected"; + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + if (typeof message.excludeFromIndexes !== "boolean") + return "excludeFromIndexes: boolean expected"; return null; }; /** - * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. + * Creates a Value message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.RollbackRequest} RollbackRequest + * @returns {google.datastore.v1.Value} Value */ - RollbackRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RollbackRequest) + Value.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Value) return object; - var message = new $root.google.datastore.v1.RollbackRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length >= 0) - message.transaction = object.transaction; + var message = new $root.google.datastore.v1.Value(); + switch (object.nullValue) { + case "NULL_VALUE": + case 0: + message.nullValue = 0; + break; + } + if (object.booleanValue != null) + message.booleanValue = Boolean(object.booleanValue); + if (object.integerValue != null) + if ($util.Long) + (message.integerValue = $util.Long.fromValue(object.integerValue)).unsigned = false; + else if (typeof object.integerValue === "string") + message.integerValue = parseInt(object.integerValue, 10); + else if (typeof object.integerValue === "number") + message.integerValue = object.integerValue; + else if (typeof object.integerValue === "object") + message.integerValue = new $util.LongBits(object.integerValue.low >>> 0, object.integerValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.timestampValue != null) { + if (typeof object.timestampValue !== "object") + throw TypeError(".google.datastore.v1.Value.timestampValue: object expected"); + message.timestampValue = $root.google.protobuf.Timestamp.fromObject(object.timestampValue); + } + if (object.keyValue != null) { + if (typeof object.keyValue !== "object") + throw TypeError(".google.datastore.v1.Value.keyValue: object expected"); + message.keyValue = $root.google.datastore.v1.Key.fromObject(object.keyValue); + } + if (object.stringValue != null) + message.stringValue = String(object.stringValue); + if (object.blobValue != null) + if (typeof object.blobValue === "string") + $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); + else if (object.blobValue.length >= 0) + message.blobValue = object.blobValue; + if (object.geoPointValue != null) { + if (typeof object.geoPointValue !== "object") + throw TypeError(".google.datastore.v1.Value.geoPointValue: object expected"); + message.geoPointValue = $root.google.type.LatLng.fromObject(object.geoPointValue); + } + if (object.entityValue != null) { + if (typeof object.entityValue !== "object") + throw TypeError(".google.datastore.v1.Value.entityValue: object expected"); + message.entityValue = $root.google.datastore.v1.Entity.fromObject(object.entityValue); + } + if (object.arrayValue != null) { + if (typeof object.arrayValue !== "object") + throw TypeError(".google.datastore.v1.Value.arrayValue: object expected"); + message.arrayValue = $root.google.datastore.v1.ArrayValue.fromObject(object.arrayValue); + } + if (object.meaning != null) + message.meaning = object.meaning | 0; + if (object.excludeFromIndexes != null) + message.excludeFromIndexes = Boolean(object.excludeFromIndexes); return message; }; /** - * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. + * Creates a plain object from a Value message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.RollbackRequest + * @memberof google.datastore.v1.Value * @static - * @param {google.datastore.v1.RollbackRequest} message RollbackRequest + * @param {google.datastore.v1.Value} message Value * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RollbackRequest.toObject = function toObject(message, options) { + Value.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - if (options.bytes === String) - object.transaction = ""; - else { - object.transaction = []; - if (options.bytes !== Array) - object.transaction = $util.newBuffer(object.transaction); - } - object.projectId = ""; - object.databaseId = ""; + object.meaning = 0; + object.excludeFromIndexes = false; } - if (message.transaction != null && message.hasOwnProperty("transaction")) - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; - return object; - }; - - /** - * Converts this RollbackRequest to JSON. - * @function toJSON - * @memberof google.datastore.v1.RollbackRequest - * @instance - * @returns {Object.} JSON object - */ - RollbackRequest.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RollbackRequest - * @function getTypeUrl - * @memberof google.datastore.v1.RollbackRequest - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RollbackRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; + if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { + object.booleanValue = message.booleanValue; + if (options.oneofs) + object.valueType = "booleanValue"; } - return typeUrlPrefix + "/google.datastore.v1.RollbackRequest"; - }; - - return RollbackRequest; - })(); - - v1.RollbackResponse = (function() { - - /** - * Properties of a RollbackResponse. - * @memberof google.datastore.v1 - * @interface IRollbackResponse - */ - - /** - * Constructs a new RollbackResponse. - * @memberof google.datastore.v1 - * @classdesc Represents a RollbackResponse. - * @implements IRollbackResponse - * @constructor - * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set - */ - function RollbackResponse(properties) { + if (message.integerValue != null && message.hasOwnProperty("integerValue")) { + if (typeof message.integerValue === "number") + object.integerValue = options.longs === String ? String(message.integerValue) : message.integerValue; + else + object.integerValue = options.longs === String ? $util.Long.prototype.toString.call(message.integerValue) : options.longs === Number ? new $util.LongBits(message.integerValue.low >>> 0, message.integerValue.high >>> 0).toNumber() : message.integerValue; + if (options.oneofs) + object.valueType = "integerValue"; + } + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { + object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; + if (options.oneofs) + object.valueType = "doubleValue"; + } + if (message.keyValue != null && message.hasOwnProperty("keyValue")) { + object.keyValue = $root.google.datastore.v1.Key.toObject(message.keyValue, options); + if (options.oneofs) + object.valueType = "keyValue"; + } + if (message.entityValue != null && message.hasOwnProperty("entityValue")) { + object.entityValue = $root.google.datastore.v1.Entity.toObject(message.entityValue, options); + if (options.oneofs) + object.valueType = "entityValue"; + } + if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { + object.geoPointValue = $root.google.type.LatLng.toObject(message.geoPointValue, options); + if (options.oneofs) + object.valueType = "geoPointValue"; + } + if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { + object.arrayValue = $root.google.datastore.v1.ArrayValue.toObject(message.arrayValue, options); + if (options.oneofs) + object.valueType = "arrayValue"; + } + if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { + object.timestampValue = $root.google.protobuf.Timestamp.toObject(message.timestampValue, options); + if (options.oneofs) + object.valueType = "timestampValue"; + } + if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + if (options.oneofs) + object.valueType = "nullValue"; + } + if (message.meaning != null && message.hasOwnProperty("meaning")) + object.meaning = message.meaning; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + object.stringValue = message.stringValue; + if (options.oneofs) + object.valueType = "stringValue"; + } + if (message.blobValue != null && message.hasOwnProperty("blobValue")) { + object.blobValue = options.bytes === String ? $util.base64.encode(message.blobValue, 0, message.blobValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.blobValue) : message.blobValue; + if (options.oneofs) + object.valueType = "blobValue"; + } + if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) + object.excludeFromIndexes = message.excludeFromIndexes; + return object; + }; + + /** + * Converts this Value to JSON. + * @function toJSON + * @memberof google.datastore.v1.Value + * @instance + * @returns {Object.} JSON object + */ + Value.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Value + * @function getTypeUrl + * @memberof google.datastore.v1.Value + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Value"; + }; + + return Value; + })(); + + v1.Entity = (function() { + + /** + * Properties of an Entity. + * @memberof google.datastore.v1 + * @interface IEntity + * @property {google.datastore.v1.IKey|null} [key] Entity key + * @property {Object.|null} [properties] Entity properties + */ + + /** + * Constructs a new Entity. + * @memberof google.datastore.v1 + * @classdesc Represents an Entity. + * @implements IEntity + * @constructor + * @param {google.datastore.v1.IEntity=} [properties] Properties to set + */ + function Entity(properties) { + this.properties = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8524,63 +8461,113 @@ } /** - * Creates a new RollbackResponse instance using the specified properties. + * Entity key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.Entity + * @instance + */ + Entity.prototype.key = null; + + /** + * Entity properties. + * @member {Object.} properties + * @memberof google.datastore.v1.Entity + * @instance + */ + Entity.prototype.properties = $util.emptyObject; + + /** + * Creates a new Entity instance using the specified properties. * @function create - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse instance + * @param {google.datastore.v1.IEntity=} [properties] Properties to set + * @returns {google.datastore.v1.Entity} Entity instance */ - RollbackResponse.create = function create(properties) { - return new RollbackResponse(properties); + Entity.create = function create(properties) { + return new Entity(properties); }; /** - * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RollbackResponse.encode = function encode(message, writer) { + Entity.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.properties != null && Object.hasOwnProperty.call(message, "properties")) + for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. + * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode + * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RollbackResponse.encodeDelimited = function encodeDelimited(message, writer) { + Entity.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a RollbackResponse message from the specified reader or buffer. + * Decodes an Entity message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @returns {google.datastore.v1.Entity} Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RollbackResponse.decode = function decode(reader, length) { + Entity.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: { + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 3: { + if (message.properties === $util.emptyObject) + message.properties = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.properties[key] = value; + break; + } default: reader.skipType(tag & 7); break; @@ -8590,114 +8577,158 @@ }; /** - * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. + * Decodes an Entity message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @returns {google.datastore.v1.Entity} Entity * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RollbackResponse.decodeDelimited = function decodeDelimited(reader) { + Entity.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a RollbackResponse message. + * Verifies an Entity message. * @function verify - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RollbackResponse.verify = function verify(message) { + Entity.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.properties != null && message.hasOwnProperty("properties")) { + if (!$util.isObject(message.properties)) + return "properties: object expected"; + var key = Object.keys(message.properties); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.properties[key[i]]); + if (error) + return "properties." + error; + } + } return null; }; /** - * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. + * Creates an Entity message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.RollbackResponse} RollbackResponse + * @returns {google.datastore.v1.Entity} Entity */ - RollbackResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.RollbackResponse) + Entity.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Entity) return object; - return new $root.google.datastore.v1.RollbackResponse(); + var message = new $root.google.datastore.v1.Entity(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.Entity.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); + } + if (object.properties) { + if (typeof object.properties !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties = {}; + for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) { + if (typeof object.properties[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.Entity.properties: object expected"); + message.properties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.properties[keys[i]]); + } + } + return message; }; /** - * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. + * Creates a plain object from an Entity message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static - * @param {google.datastore.v1.RollbackResponse} message RollbackResponse + * @param {google.datastore.v1.Entity} message Entity * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RollbackResponse.toObject = function toObject() { - return {}; + Entity.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.properties = {}; + if (options.defaults) + object.key = null; + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + var keys2; + if (message.properties && (keys2 = Object.keys(message.properties)).length) { + object.properties = {}; + for (var j = 0; j < keys2.length; ++j) + object.properties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.properties[keys2[j]], options); + } + return object; }; /** - * Converts this RollbackResponse to JSON. + * Converts this Entity to JSON. * @function toJSON - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @instance * @returns {Object.} JSON object */ - RollbackResponse.prototype.toJSON = function toJSON() { + Entity.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for RollbackResponse + * Gets the default type url for Entity * @function getTypeUrl - * @memberof google.datastore.v1.RollbackResponse + * @memberof google.datastore.v1.Entity * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - RollbackResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Entity.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.RollbackResponse"; + return typeUrlPrefix + "/google.datastore.v1.Entity"; }; - return RollbackResponse; + return Entity; })(); - v1.CommitRequest = (function() { + v1.EntityResult = (function() { /** - * Properties of a CommitRequest. + * Properties of an EntityResult. * @memberof google.datastore.v1 - * @interface ICommitRequest - * @property {string|null} [projectId] CommitRequest projectId - * @property {string|null} [databaseId] CommitRequest databaseId - * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode - * @property {Uint8Array|null} [transaction] CommitRequest transaction - * @property {Array.|null} [mutations] CommitRequest mutations + * @interface IEntityResult + * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity + * @property {number|Long|null} [version] EntityResult version + * @property {google.protobuf.ITimestamp|null} [updateTime] EntityResult updateTime + * @property {Uint8Array|null} [cursor] EntityResult cursor */ /** - * Constructs a new CommitRequest. + * Constructs a new EntityResult. * @memberof google.datastore.v1 - * @classdesc Represents a CommitRequest. - * @implements ICommitRequest + * @classdesc Represents an EntityResult. + * @implements IEntityResult * @constructor - * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set */ - function CommitRequest(properties) { - this.mutations = []; + function EntityResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -8705,148 +8736,117 @@ } /** - * CommitRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.projectId = ""; - - /** - * CommitRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.CommitRequest - * @instance - */ - CommitRequest.prototype.databaseId = ""; - - /** - * CommitRequest mode. - * @member {google.datastore.v1.CommitRequest.Mode} mode - * @memberof google.datastore.v1.CommitRequest + * EntityResult entity. + * @member {google.datastore.v1.IEntity|null|undefined} entity + * @memberof google.datastore.v1.EntityResult * @instance */ - CommitRequest.prototype.mode = 0; + EntityResult.prototype.entity = null; /** - * CommitRequest transaction. - * @member {Uint8Array|null|undefined} transaction - * @memberof google.datastore.v1.CommitRequest + * EntityResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.EntityResult * @instance */ - CommitRequest.prototype.transaction = null; + EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * CommitRequest mutations. - * @member {Array.} mutations - * @memberof google.datastore.v1.CommitRequest + * EntityResult updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.EntityResult * @instance */ - CommitRequest.prototype.mutations = $util.emptyArray; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + EntityResult.prototype.updateTime = null; /** - * CommitRequest transactionSelector. - * @member {"transaction"|undefined} transactionSelector - * @memberof google.datastore.v1.CommitRequest + * EntityResult cursor. + * @member {Uint8Array} cursor + * @memberof google.datastore.v1.EntityResult * @instance */ - Object.defineProperty(CommitRequest.prototype, "transactionSelector", { - get: $util.oneOfGetter($oneOfFields = ["transaction"]), - set: $util.oneOfSetter($oneOfFields) - }); + EntityResult.prototype.cursor = $util.newBuffer([]); /** - * Creates a new CommitRequest instance using the specified properties. + * Creates a new EntityResult instance using the specified properties. * @function create - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static - * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set - * @returns {google.datastore.v1.CommitRequest} CommitRequest instance + * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + * @returns {google.datastore.v1.EntityResult} EntityResult instance */ - CommitRequest.create = function create(properties) { - return new CommitRequest(properties); + EntityResult.create = function create(properties) { + return new EntityResult(properties); }; /** - * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static - * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CommitRequest.encode = function encode(message, writer) { + EntityResult.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); - if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); - if (message.mutations != null && message.mutations.length) - for (var i = 0; i < message.mutations.length; ++i) - $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.entity != null && Object.hasOwnProperty.call(message, "entity")) + $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + if (message.version != null && Object.hasOwnProperty.call(message, "version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static - * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode + * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CommitRequest.encodeDelimited = function encodeDelimited(message, writer) { + EntityResult.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CommitRequest message from the specified reader or buffer. + * Decodes an EntityResult message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CommitRequest} CommitRequest + * @returns {google.datastore.v1.EntityResult} EntityResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommitRequest.decode = function decode(reader, length) { + EntityResult.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.EntityResult(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); + case 1: { + message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); break; } - case 9: { - message.databaseId = reader.string(); + case 4: { + message.version = reader.int64(); break; } case 5: { - message.mode = reader.int32(); - break; - } - case 1: { - message.transaction = reader.bytes(); + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } - case 6: { - if (!(message.mutations && message.mutations.length)) - message.mutations = []; - message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); + case 3: { + message.cursor = reader.bytes(); break; } default: @@ -8858,218 +8858,210 @@ }; /** - * Decodes a CommitRequest message from the specified reader or buffer, length delimited. + * Decodes an EntityResult message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CommitRequest} CommitRequest + * @returns {google.datastore.v1.EntityResult} EntityResult * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommitRequest.decodeDelimited = function decodeDelimited(reader) { + EntityResult.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CommitRequest message. + * Verifies an EntityResult message. * @function verify - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommitRequest.verify = function verify(message) { + EntityResult.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.mode != null && message.hasOwnProperty("mode")) - switch (message.mode) { - default: - return "mode: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - properties.transactionSelector = 1; - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; + if (message.entity != null && message.hasOwnProperty("entity")) { + var error = $root.google.datastore.v1.Entity.verify(message.entity); + if (error) + return "entity." + error; } - if (message.mutations != null && message.hasOwnProperty("mutations")) { - if (!Array.isArray(message.mutations)) - return "mutations: array expected"; - for (var i = 0; i < message.mutations.length; ++i) { - var error = $root.google.datastore.v1.Mutation.verify(message.mutations[i]); - if (error) - return "mutations." + error; - } + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; } + if (message.cursor != null && message.hasOwnProperty("cursor")) + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; return null; }; /** - * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. + * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.CommitRequest} CommitRequest + * @returns {google.datastore.v1.EntityResult} EntityResult */ - CommitRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CommitRequest) + EntityResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.EntityResult) return object; - var message = new $root.google.datastore.v1.CommitRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - switch (object.mode) { - case "MODE_UNSPECIFIED": - case 0: - message.mode = 0; - break; - case "TRANSACTIONAL": - case 1: - message.mode = 1; - break; - case "NON_TRANSACTIONAL": - case 2: - message.mode = 2; - break; + var message = new $root.google.datastore.v1.EntityResult(); + if (object.entity != null) { + if (typeof object.entity !== "object") + throw TypeError(".google.datastore.v1.EntityResult.entity: object expected"); + message.entity = $root.google.datastore.v1.Entity.fromObject(object.entity); } - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length >= 0) - message.transaction = object.transaction; - if (object.mutations) { - if (!Array.isArray(object.mutations)) - throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); - message.mutations = []; - for (var i = 0; i < object.mutations.length; ++i) { - if (typeof object.mutations[i] !== "object") - throw TypeError(".google.datastore.v1.CommitRequest.mutations: object expected"); - message.mutations[i] = $root.google.datastore.v1.Mutation.fromObject(object.mutations[i]); - } + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.EntityResult.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); } + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length >= 0) + message.cursor = object.cursor; return message; }; /** - * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. + * Creates a plain object from an EntityResult message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static - * @param {google.datastore.v1.CommitRequest} message CommitRequest + * @param {google.datastore.v1.EntityResult} message EntityResult * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CommitRequest.toObject = function toObject(message, options) { + EntityResult.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.mutations = []; if (options.defaults) { - object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; - object.projectId = ""; - object.databaseId = ""; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (options.oneofs) - object.transactionSelector = "transaction"; - } - if (message.mode != null && message.hasOwnProperty("mode")) - object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; - if (message.mutations && message.mutations.length) { - object.mutations = []; - for (var j = 0; j < message.mutations.length; ++j) - object.mutations[j] = $root.google.datastore.v1.Mutation.toObject(message.mutations[j], options); + object.entity = null; + if (options.bytes === String) + object.cursor = ""; + else { + object.cursor = []; + if (options.bytes !== Array) + object.cursor = $util.newBuffer(object.cursor); + } + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + object.updateTime = null; } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; + if (message.entity != null && message.hasOwnProperty("entity")) + object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); + if (message.cursor != null && message.hasOwnProperty("cursor")) + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); return object; }; /** - * Converts this CommitRequest to JSON. + * Converts this EntityResult to JSON. * @function toJSON - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @instance * @returns {Object.} JSON object */ - CommitRequest.prototype.toJSON = function toJSON() { + EntityResult.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CommitRequest + * Gets the default type url for EntityResult * @function getTypeUrl - * @memberof google.datastore.v1.CommitRequest + * @memberof google.datastore.v1.EntityResult * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CommitRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + EntityResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.CommitRequest"; + return typeUrlPrefix + "/google.datastore.v1.EntityResult"; }; /** - * Mode enum. - * @name google.datastore.v1.CommitRequest.Mode + * ResultType enum. + * @name google.datastore.v1.EntityResult.ResultType * @enum {number} - * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value - * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value - * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value + * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value + * @property {number} FULL=1 FULL value + * @property {number} PROJECTION=2 PROJECTION value + * @property {number} KEY_ONLY=3 KEY_ONLY value */ - CommitRequest.Mode = (function() { + EntityResult.ResultType = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "MODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "TRANSACTIONAL"] = 1; - values[valuesById[2] = "NON_TRANSACTIONAL"] = 2; + values[valuesById[0] = "RESULT_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "FULL"] = 1; + values[valuesById[2] = "PROJECTION"] = 2; + values[valuesById[3] = "KEY_ONLY"] = 3; return values; })(); - return CommitRequest; + return EntityResult; })(); - v1.CommitResponse = (function() { + v1.Query = (function() { /** - * Properties of a CommitResponse. + * Properties of a Query. * @memberof google.datastore.v1 - * @interface ICommitResponse - * @property {Array.|null} [mutationResults] CommitResponse mutationResults - * @property {number|null} [indexUpdates] CommitResponse indexUpdates - * @property {google.protobuf.ITimestamp|null} [commitTime] CommitResponse commitTime + * @interface IQuery + * @property {Array.|null} [projection] Query projection + * @property {Array.|null} [kind] Query kind + * @property {google.datastore.v1.IFilter|null} [filter] Query filter + * @property {Array.|null} [order] Query order + * @property {Array.|null} [distinctOn] Query distinctOn + * @property {Uint8Array|null} [startCursor] Query startCursor + * @property {Uint8Array|null} [endCursor] Query endCursor + * @property {number|null} [offset] Query offset + * @property {google.protobuf.IInt32Value|null} [limit] Query limit */ /** - * Constructs a new CommitResponse. + * Constructs a new Query. * @memberof google.datastore.v1 - * @classdesc Represents a CommitResponse. - * @implements ICommitResponse + * @classdesc Represents a Query. + * @implements IQuery * @constructor - * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set + * @param {google.datastore.v1.IQuery=} [properties] Properties to set */ - function CommitResponse(properties) { - this.mutationResults = []; + function Query(properties) { + this.projection = []; + this.kind = []; + this.order = []; + this.distinctOn = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9077,106 +9069,199 @@ } /** - * CommitResponse mutationResults. - * @member {Array.} mutationResults - * @memberof google.datastore.v1.CommitResponse + * Query projection. + * @member {Array.} projection + * @memberof google.datastore.v1.Query * @instance */ - CommitResponse.prototype.mutationResults = $util.emptyArray; + Query.prototype.projection = $util.emptyArray; /** - * CommitResponse indexUpdates. - * @member {number} indexUpdates - * @memberof google.datastore.v1.CommitResponse + * Query kind. + * @member {Array.} kind + * @memberof google.datastore.v1.Query * @instance */ - CommitResponse.prototype.indexUpdates = 0; + Query.prototype.kind = $util.emptyArray; /** - * CommitResponse commitTime. - * @member {google.protobuf.ITimestamp|null|undefined} commitTime - * @memberof google.datastore.v1.CommitResponse + * Query filter. + * @member {google.datastore.v1.IFilter|null|undefined} filter + * @memberof google.datastore.v1.Query * @instance */ - CommitResponse.prototype.commitTime = null; + Query.prototype.filter = null; /** - * Creates a new CommitResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set - * @returns {google.datastore.v1.CommitResponse} CommitResponse instance + * Query order. + * @member {Array.} order + * @memberof google.datastore.v1.Query + * @instance */ - CommitResponse.create = function create(properties) { - return new CommitResponse(properties); - }; + Query.prototype.order = $util.emptyArray; /** - * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Query distinctOn. + * @member {Array.} distinctOn + * @memberof google.datastore.v1.Query + * @instance */ - CommitResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.mutationResults != null && message.mutationResults.length) - for (var i = 0; i < message.mutationResults.length; ++i) - $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); - if (message.commitTime != null && Object.hasOwnProperty.call(message, "commitTime")) - $root.google.protobuf.Timestamp.encode(message.commitTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - return writer; - }; + Query.prototype.distinctOn = $util.emptyArray; /** - * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.CommitResponse - * @static - * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitResponse.encodeDelimited = function encodeDelimited(message, writer) { + * Query startCursor. + * @member {Uint8Array} startCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.startCursor = $util.newBuffer([]); + + /** + * Query endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.endCursor = $util.newBuffer([]); + + /** + * Query offset. + * @member {number} offset + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.offset = 0; + + /** + * Query limit. + * @member {google.protobuf.IInt32Value|null|undefined} limit + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.limit = null; + + /** + * Creates a new Query instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery=} [properties] Properties to set + * @returns {google.datastore.v1.Query} Query instance + */ + Query.create = function create(properties) { + return new Query(properties); + }; + + /** + * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.projection != null && message.projection.length) + for (var i = 0; i < message.projection.length; ++i) + $root.google.datastore.v1.Projection.encode(message.projection[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kind != null && message.kind.length) + for (var i = 0; i < message.kind.length; ++i) + $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.order != null && message.order.length) + for (var i = 0; i < message.order.length; ++i) + $root.google.datastore.v1.PropertyOrder.encode(message.order[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.distinctOn != null && message.distinctOn.length) + for (var i = 0; i < message.distinctOn.length; ++i) + $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.startCursor != null && Object.hasOwnProperty.call(message, "startCursor")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) + writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); + if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) + $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Query + * @static + * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Query.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CommitResponse message from the specified reader or buffer. + * Decodes a Query message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @returns {google.datastore.v1.Query} Query * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommitResponse.decode = function decode(reader, length) { + Query.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Query(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 2: { + if (!(message.projection && message.projection.length)) + message.projection = []; + message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); + break; + } case 3: { - if (!(message.mutationResults && message.mutationResults.length)) - message.mutationResults = []; - message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); + if (!(message.kind && message.kind.length)) + message.kind = []; + message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); break; } case 4: { - message.indexUpdates = reader.int32(); + message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); + break; + } + case 5: { + if (!(message.order && message.order.length)) + message.order = []; + message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); + break; + } + case 6: { + if (!(message.distinctOn && message.distinctOn.length)) + message.distinctOn = []; + message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); + break; + } + case 7: { + message.startCursor = reader.bytes(); break; } case 8: { - message.commitTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.endCursor = reader.bytes(); + break; + } + case 10: { + message.offset = reader.int32(); + break; + } + case 12: { + message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); break; } default: @@ -9188,165 +9273,287 @@ }; /** - * Decodes a CommitResponse message from the specified reader or buffer, length delimited. + * Decodes a Query message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @returns {google.datastore.v1.Query} Query * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommitResponse.decodeDelimited = function decodeDelimited(reader) { + Query.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CommitResponse message. + * Verifies a Query message. * @function verify - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommitResponse.verify = function verify(message) { + Query.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.mutationResults != null && message.hasOwnProperty("mutationResults")) { - if (!Array.isArray(message.mutationResults)) - return "mutationResults: array expected"; - for (var i = 0; i < message.mutationResults.length; ++i) { - var error = $root.google.datastore.v1.MutationResult.verify(message.mutationResults[i]); + if (message.projection != null && message.hasOwnProperty("projection")) { + if (!Array.isArray(message.projection)) + return "projection: array expected"; + for (var i = 0; i < message.projection.length; ++i) { + var error = $root.google.datastore.v1.Projection.verify(message.projection[i]); if (error) - return "mutationResults." + error; + return "projection." + error; } } - if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) - if (!$util.isInteger(message.indexUpdates)) - return "indexUpdates: integer expected"; - if (message.commitTime != null && message.hasOwnProperty("commitTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.commitTime); + if (message.kind != null && message.hasOwnProperty("kind")) { + if (!Array.isArray(message.kind)) + return "kind: array expected"; + for (var i = 0; i < message.kind.length; ++i) { + var error = $root.google.datastore.v1.KindExpression.verify(message.kind[i]); + if (error) + return "kind." + error; + } + } + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.google.datastore.v1.Filter.verify(message.filter); if (error) - return "commitTime." + error; + return "filter." + error; + } + if (message.order != null && message.hasOwnProperty("order")) { + if (!Array.isArray(message.order)) + return "order: array expected"; + for (var i = 0; i < message.order.length; ++i) { + var error = $root.google.datastore.v1.PropertyOrder.verify(message.order[i]); + if (error) + return "order." + error; + } + } + if (message.distinctOn != null && message.hasOwnProperty("distinctOn")) { + if (!Array.isArray(message.distinctOn)) + return "distinctOn: array expected"; + for (var i = 0; i < message.distinctOn.length; ++i) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.distinctOn[i]); + if (error) + return "distinctOn." + error; + } + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + if (!(message.startCursor && typeof message.startCursor.length === "number" || $util.isString(message.startCursor))) + return "startCursor: buffer expected"; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.offset != null && message.hasOwnProperty("offset")) + if (!$util.isInteger(message.offset)) + return "offset: integer expected"; + if (message.limit != null && message.hasOwnProperty("limit")) { + var error = $root.google.protobuf.Int32Value.verify(message.limit); + if (error) + return "limit." + error; } return null; }; /** - * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. + * Creates a Query message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.CommitResponse} CommitResponse + * @returns {google.datastore.v1.Query} Query */ - CommitResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CommitResponse) + Query.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Query) return object; - var message = new $root.google.datastore.v1.CommitResponse(); - if (object.mutationResults) { - if (!Array.isArray(object.mutationResults)) - throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: array expected"); - message.mutationResults = []; - for (var i = 0; i < object.mutationResults.length; ++i) { - if (typeof object.mutationResults[i] !== "object") - throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: object expected"); - message.mutationResults[i] = $root.google.datastore.v1.MutationResult.fromObject(object.mutationResults[i]); + var message = new $root.google.datastore.v1.Query(); + if (object.projection) { + if (!Array.isArray(object.projection)) + throw TypeError(".google.datastore.v1.Query.projection: array expected"); + message.projection = []; + for (var i = 0; i < object.projection.length; ++i) { + if (typeof object.projection[i] !== "object") + throw TypeError(".google.datastore.v1.Query.projection: object expected"); + message.projection[i] = $root.google.datastore.v1.Projection.fromObject(object.projection[i]); } } - if (object.indexUpdates != null) - message.indexUpdates = object.indexUpdates | 0; - if (object.commitTime != null) { - if (typeof object.commitTime !== "object") - throw TypeError(".google.datastore.v1.CommitResponse.commitTime: object expected"); - message.commitTime = $root.google.protobuf.Timestamp.fromObject(object.commitTime); - } - return message; - }; - - /** - * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + if (object.kind) { + if (!Array.isArray(object.kind)) + throw TypeError(".google.datastore.v1.Query.kind: array expected"); + message.kind = []; + for (var i = 0; i < object.kind.length; ++i) { + if (typeof object.kind[i] !== "object") + throw TypeError(".google.datastore.v1.Query.kind: object expected"); + message.kind[i] = $root.google.datastore.v1.KindExpression.fromObject(object.kind[i]); + } + } + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".google.datastore.v1.Query.filter: object expected"); + message.filter = $root.google.datastore.v1.Filter.fromObject(object.filter); + } + if (object.order) { + if (!Array.isArray(object.order)) + throw TypeError(".google.datastore.v1.Query.order: array expected"); + message.order = []; + for (var i = 0; i < object.order.length; ++i) { + if (typeof object.order[i] !== "object") + throw TypeError(".google.datastore.v1.Query.order: object expected"); + message.order[i] = $root.google.datastore.v1.PropertyOrder.fromObject(object.order[i]); + } + } + if (object.distinctOn) { + if (!Array.isArray(object.distinctOn)) + throw TypeError(".google.datastore.v1.Query.distinctOn: array expected"); + message.distinctOn = []; + for (var i = 0; i < object.distinctOn.length; ++i) { + if (typeof object.distinctOn[i] !== "object") + throw TypeError(".google.datastore.v1.Query.distinctOn: object expected"); + message.distinctOn[i] = $root.google.datastore.v1.PropertyReference.fromObject(object.distinctOn[i]); + } + } + if (object.startCursor != null) + if (typeof object.startCursor === "string") + $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); + else if (object.startCursor.length >= 0) + message.startCursor = object.startCursor; + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length >= 0) + message.endCursor = object.endCursor; + if (object.offset != null) + message.offset = object.offset | 0; + if (object.limit != null) { + if (typeof object.limit !== "object") + throw TypeError(".google.datastore.v1.Query.limit: object expected"); + message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); + } + return message; + }; + + /** + * Creates a plain object from a Query message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static - * @param {google.datastore.v1.CommitResponse} message CommitResponse + * @param {google.datastore.v1.Query} message Query * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CommitResponse.toObject = function toObject(message, options) { + Query.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.mutationResults = []; + if (options.arrays || options.defaults) { + object.projection = []; + object.kind = []; + object.order = []; + object.distinctOn = []; + } if (options.defaults) { - object.indexUpdates = 0; - object.commitTime = null; + object.filter = null; + if (options.bytes === String) + object.startCursor = ""; + else { + object.startCursor = []; + if (options.bytes !== Array) + object.startCursor = $util.newBuffer(object.startCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.offset = 0; + object.limit = null; } - if (message.mutationResults && message.mutationResults.length) { - object.mutationResults = []; - for (var j = 0; j < message.mutationResults.length; ++j) - object.mutationResults[j] = $root.google.datastore.v1.MutationResult.toObject(message.mutationResults[j], options); + if (message.projection && message.projection.length) { + object.projection = []; + for (var j = 0; j < message.projection.length; ++j) + object.projection[j] = $root.google.datastore.v1.Projection.toObject(message.projection[j], options); } - if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) - object.indexUpdates = message.indexUpdates; - if (message.commitTime != null && message.hasOwnProperty("commitTime")) - object.commitTime = $root.google.protobuf.Timestamp.toObject(message.commitTime, options); + if (message.kind && message.kind.length) { + object.kind = []; + for (var j = 0; j < message.kind.length; ++j) + object.kind[j] = $root.google.datastore.v1.KindExpression.toObject(message.kind[j], options); + } + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.google.datastore.v1.Filter.toObject(message.filter, options); + if (message.order && message.order.length) { + object.order = []; + for (var j = 0; j < message.order.length; ++j) + object.order[j] = $root.google.datastore.v1.PropertyOrder.toObject(message.order[j], options); + } + if (message.distinctOn && message.distinctOn.length) { + object.distinctOn = []; + for (var j = 0; j < message.distinctOn.length; ++j) + object.distinctOn[j] = $root.google.datastore.v1.PropertyReference.toObject(message.distinctOn[j], options); + } + if (message.startCursor != null && message.hasOwnProperty("startCursor")) + object.startCursor = options.bytes === String ? $util.base64.encode(message.startCursor, 0, message.startCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.startCursor) : message.startCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.offset != null && message.hasOwnProperty("offset")) + object.offset = message.offset; + if (message.limit != null && message.hasOwnProperty("limit")) + object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); return object; }; /** - * Converts this CommitResponse to JSON. + * Converts this Query to JSON. * @function toJSON - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @instance * @returns {Object.} JSON object */ - CommitResponse.prototype.toJSON = function toJSON() { + Query.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CommitResponse + * Gets the default type url for Query * @function getTypeUrl - * @memberof google.datastore.v1.CommitResponse + * @memberof google.datastore.v1.Query * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CommitResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Query.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.CommitResponse"; + return typeUrlPrefix + "/google.datastore.v1.Query"; }; - return CommitResponse; + return Query; })(); - v1.AllocateIdsRequest = (function() { + v1.AggregationQuery = (function() { /** - * Properties of an AllocateIdsRequest. + * Properties of an AggregationQuery. * @memberof google.datastore.v1 - * @interface IAllocateIdsRequest - * @property {string|null} [projectId] AllocateIdsRequest projectId - * @property {string|null} [databaseId] AllocateIdsRequest databaseId - * @property {Array.|null} [keys] AllocateIdsRequest keys + * @interface IAggregationQuery + * @property {google.datastore.v1.IQuery|null} [nestedQuery] AggregationQuery nestedQuery + * @property {Array.|null} [aggregations] AggregationQuery aggregations */ /** - * Constructs a new AllocateIdsRequest. + * Constructs a new AggregationQuery. * @memberof google.datastore.v1 - * @classdesc Represents an AllocateIdsRequest. - * @implements IAllocateIdsRequest + * @classdesc Represents an AggregationQuery. + * @implements IAggregationQuery * @constructor - * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + * @param {google.datastore.v1.IAggregationQuery=} [properties] Properties to set */ - function AllocateIdsRequest(properties) { - this.keys = []; + function AggregationQuery(properties) { + this.aggregations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9354,106 +9561,106 @@ } /** - * AllocateIdsRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.AllocateIdsRequest + * AggregationQuery nestedQuery. + * @member {google.datastore.v1.IQuery|null|undefined} nestedQuery + * @memberof google.datastore.v1.AggregationQuery * @instance */ - AllocateIdsRequest.prototype.projectId = ""; + AggregationQuery.prototype.nestedQuery = null; /** - * AllocateIdsRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.AllocateIdsRequest + * AggregationQuery aggregations. + * @member {Array.} aggregations + * @memberof google.datastore.v1.AggregationQuery * @instance */ - AllocateIdsRequest.prototype.databaseId = ""; + AggregationQuery.prototype.aggregations = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * AllocateIdsRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.AllocateIdsRequest + * AggregationQuery queryType. + * @member {"nestedQuery"|undefined} queryType + * @memberof google.datastore.v1.AggregationQuery * @instance */ - AllocateIdsRequest.prototype.keys = $util.emptyArray; + Object.defineProperty(AggregationQuery.prototype, "queryType", { + get: $util.oneOfGetter($oneOfFields = ["nestedQuery"]), + set: $util.oneOfSetter($oneOfFields) + }); /** - * Creates a new AllocateIdsRequest instance using the specified properties. + * Creates a new AggregationQuery instance using the specified properties. * @function create - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static - * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest instance + * @param {google.datastore.v1.IAggregationQuery=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationQuery} AggregationQuery instance */ - AllocateIdsRequest.create = function create(properties) { - return new AllocateIdsRequest(properties); + AggregationQuery.create = function create(properties) { + return new AggregationQuery(properties); }; /** - * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * Encodes the specified AggregationQuery message. Does not implicitly {@link google.datastore.v1.AggregationQuery.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static - * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {google.datastore.v1.IAggregationQuery} message AggregationQuery message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AllocateIdsRequest.encode = function encode(message, writer) { + AggregationQuery.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.nestedQuery != null && Object.hasOwnProperty.call(message, "nestedQuery")) + $root.google.datastore.v1.Query.encode(message.nestedQuery, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.aggregations != null && message.aggregations.length) + for (var i = 0; i < message.aggregations.length; ++i) + $root.google.datastore.v1.AggregationQuery.Aggregation.encode(message.aggregations[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * Encodes the specified AggregationQuery message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static - * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {google.datastore.v1.IAggregationQuery} message AggregationQuery message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AllocateIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + AggregationQuery.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * Decodes an AggregationQuery message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @returns {google.datastore.v1.AggregationQuery} AggregationQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - AllocateIdsRequest.decode = function decode(reader, length) { + AggregationQuery.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationQuery(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); - break; - } - case 9: { - message.databaseId = reader.string(); + case 1: { + message.nestedQuery = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); break; } - case 1: { - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + case 3: { + if (!(message.aggregations && message.aggregations.length)) + message.aggregations = []; + message.aggregations.push($root.google.datastore.v1.AggregationQuery.Aggregation.decode(reader, reader.uint32())); break; } default: @@ -9465,384 +9672,617 @@ }; /** - * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * Decodes an AggregationQuery message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @returns {google.datastore.v1.AggregationQuery} AggregationQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - AllocateIdsRequest.decodeDelimited = function decodeDelimited(reader) { + AggregationQuery.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an AllocateIdsRequest message. + * Verifies an AggregationQuery message. * @function verify - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - AllocateIdsRequest.verify = function verify(message) { + AggregationQuery.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + var properties = {}; + if (message.nestedQuery != null && message.hasOwnProperty("nestedQuery")) { + properties.queryType = 1; + { + var error = $root.google.datastore.v1.Query.verify(message.nestedQuery); if (error) - return "keys." + error; + return "nestedQuery." + error; + } + } + if (message.aggregations != null && message.hasOwnProperty("aggregations")) { + if (!Array.isArray(message.aggregations)) + return "aggregations: array expected"; + for (var i = 0; i < message.aggregations.length; ++i) { + var error = $root.google.datastore.v1.AggregationQuery.Aggregation.verify(message.aggregations[i]); + if (error) + return "aggregations." + error; } } return null; }; /** - * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * Creates an AggregationQuery message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @returns {google.datastore.v1.AggregationQuery} AggregationQuery */ - AllocateIdsRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.AllocateIdsRequest) + AggregationQuery.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationQuery) return object; - var message = new $root.google.datastore.v1.AllocateIdsRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + var message = new $root.google.datastore.v1.AggregationQuery(); + if (object.nestedQuery != null) { + if (typeof object.nestedQuery !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.nestedQuery: object expected"); + message.nestedQuery = $root.google.datastore.v1.Query.fromObject(object.nestedQuery); + } + if (object.aggregations) { + if (!Array.isArray(object.aggregations)) + throw TypeError(".google.datastore.v1.AggregationQuery.aggregations: array expected"); + message.aggregations = []; + for (var i = 0; i < object.aggregations.length; ++i) { + if (typeof object.aggregations[i] !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.aggregations: object expected"); + message.aggregations[i] = $root.google.datastore.v1.AggregationQuery.Aggregation.fromObject(object.aggregations[i]); } } return message; }; /** - * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * Creates a plain object from an AggregationQuery message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static - * @param {google.datastore.v1.AllocateIdsRequest} message AllocateIdsRequest + * @param {google.datastore.v1.AggregationQuery} message AggregationQuery * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AllocateIdsRequest.toObject = function toObject(message, options) { + AggregationQuery.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.keys = []; - if (options.defaults) { - object.projectId = ""; - object.databaseId = ""; + object.aggregations = []; + if (message.nestedQuery != null && message.hasOwnProperty("nestedQuery")) { + object.nestedQuery = $root.google.datastore.v1.Query.toObject(message.nestedQuery, options); + if (options.oneofs) + object.queryType = "nestedQuery"; } - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + if (message.aggregations && message.aggregations.length) { + object.aggregations = []; + for (var j = 0; j < message.aggregations.length; ++j) + object.aggregations[j] = $root.google.datastore.v1.AggregationQuery.Aggregation.toObject(message.aggregations[j], options); } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; return object; }; /** - * Converts this AllocateIdsRequest to JSON. + * Converts this AggregationQuery to JSON. * @function toJSON - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @instance * @returns {Object.} JSON object */ - AllocateIdsRequest.prototype.toJSON = function toJSON() { + AggregationQuery.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for AllocateIdsRequest + * Gets the default type url for AggregationQuery * @function getTypeUrl - * @memberof google.datastore.v1.AllocateIdsRequest + * @memberof google.datastore.v1.AggregationQuery * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - AllocateIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + AggregationQuery.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.AllocateIdsRequest"; + return typeUrlPrefix + "/google.datastore.v1.AggregationQuery"; }; - return AllocateIdsRequest; - })(); + AggregationQuery.Aggregation = (function() { - v1.AllocateIdsResponse = (function() { + /** + * Properties of an Aggregation. + * @memberof google.datastore.v1.AggregationQuery + * @interface IAggregation + * @property {google.datastore.v1.AggregationQuery.Aggregation.ICount|null} [count] Aggregation count + * @property {string|null} [alias] Aggregation alias + */ - /** - * Properties of an AllocateIdsResponse. - * @memberof google.datastore.v1 - * @interface IAllocateIdsResponse - * @property {Array.|null} [keys] AllocateIdsResponse keys - */ + /** + * Constructs a new Aggregation. + * @memberof google.datastore.v1.AggregationQuery + * @classdesc Represents an Aggregation. + * @implements IAggregation + * @constructor + * @param {google.datastore.v1.AggregationQuery.IAggregation=} [properties] Properties to set + */ + function Aggregation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Constructs a new AllocateIdsResponse. - * @memberof google.datastore.v1 - * @classdesc Represents an AllocateIdsResponse. - * @implements IAllocateIdsResponse - * @constructor - * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set - */ - function AllocateIdsResponse(properties) { - this.keys = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Aggregation count. + * @member {google.datastore.v1.AggregationQuery.Aggregation.ICount|null|undefined} count + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + */ + Aggregation.prototype.count = null; - /** - * AllocateIdsResponse keys. - * @member {Array.} keys - * @memberof google.datastore.v1.AllocateIdsResponse - * @instance - */ - AllocateIdsResponse.prototype.keys = $util.emptyArray; + /** + * Aggregation alias. + * @member {string} alias + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + */ + Aggregation.prototype.alias = ""; - /** - * Creates a new AllocateIdsResponse instance using the specified properties. - * @function create - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse instance - */ - AllocateIdsResponse.create = function create(properties) { - return new AllocateIdsResponse(properties); - }; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsResponse.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; + /** + * Aggregation operator. + * @member {"count"|undefined} operator + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + */ + Object.defineProperty(Aggregation.prototype, "operator", { + get: $util.oneOfGetter($oneOfFields = ["count"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - AllocateIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Creates a new Aggregation instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {google.datastore.v1.AggregationQuery.IAggregation=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationQuery.Aggregation} Aggregation instance + */ + Aggregation.create = function create(properties) { + return new Aggregation(properties); + }; - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsResponse.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsResponse(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + /** + * Encodes the specified Aggregation message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {google.datastore.v1.AggregationQuery.IAggregation} message Aggregation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Aggregation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.count != null && Object.hasOwnProperty.call(message, "count")) + $root.google.datastore.v1.AggregationQuery.Aggregation.Count.encode(message.count, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.alias != null && Object.hasOwnProperty.call(message, "alias")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.alias); + return writer; + }; + + /** + * Encodes the specified Aggregation message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {google.datastore.v1.AggregationQuery.IAggregation} message Aggregation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Aggregation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Aggregation message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AggregationQuery.Aggregation} Aggregation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Aggregation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationQuery.Aggregation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.count = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.decode(reader, reader.uint32()); + break; + } + case 7: { + message.alias = reader.string(); + break; + } + default: + reader.skipType(tag & 7); break; } - default: - reader.skipType(tag & 7); - break; } - } - return message; - }; + return message; + }; - /** - * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - AllocateIdsResponse.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes an Aggregation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AggregationQuery.Aggregation} Aggregation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Aggregation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies an AllocateIdsResponse message. - * @function verify - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - AllocateIdsResponse.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); - if (error) - return "keys." + error; + /** + * Verifies an Aggregation message. + * @function verify + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Aggregation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.count != null && message.hasOwnProperty("count")) { + properties.operator = 1; + { + var error = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.verify(message.count); + if (error) + return "count." + error; + } } - } - return null; - }; + if (message.alias != null && message.hasOwnProperty("alias")) + if (!$util.isString(message.alias)) + return "alias: string expected"; + return null; + }; - /** - * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse - */ - AllocateIdsResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.AllocateIdsResponse) + /** + * Creates an Aggregation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AggregationQuery.Aggregation} Aggregation + */ + Aggregation.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationQuery.Aggregation) + return object; + var message = new $root.google.datastore.v1.AggregationQuery.Aggregation(); + if (object.count != null) { + if (typeof object.count !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.count: object expected"); + message.count = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.fromObject(object.count); + } + if (object.alias != null) + message.alias = String(object.alias); + return message; + }; + + /** + * Creates a plain object from an Aggregation message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation} message Aggregation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Aggregation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.alias = ""; + if (message.count != null && message.hasOwnProperty("count")) { + object.count = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.toObject(message.count, options); + if (options.oneofs) + object.operator = "count"; + } + if (message.alias != null && message.hasOwnProperty("alias")) + object.alias = message.alias; return object; - var message = new $root.google.datastore.v1.AllocateIdsResponse(); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + }; + + /** + * Converts this Aggregation to JSON. + * @function toJSON + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + * @returns {Object.} JSON object + */ + Aggregation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Aggregation + * @function getTypeUrl + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Aggregation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; } - } - return message; - }; + return typeUrlPrefix + "/google.datastore.v1.AggregationQuery.Aggregation"; + }; - /** - * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {google.datastore.v1.AllocateIdsResponse} message AllocateIdsResponse - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - AllocateIdsResponse.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - return object; - }; + Aggregation.Count = (function() { - /** - * Converts this AllocateIdsResponse to JSON. - * @function toJSON - * @memberof google.datastore.v1.AllocateIdsResponse - * @instance - * @returns {Object.} JSON object - */ - AllocateIdsResponse.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Properties of a Count. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @interface ICount + * @property {google.protobuf.IInt64Value|null} [upTo] Count upTo + */ - /** - * Gets the default type url for AllocateIdsResponse - * @function getTypeUrl - * @memberof google.datastore.v1.AllocateIdsResponse - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - AllocateIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.AllocateIdsResponse"; - }; + /** + * Constructs a new Count. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @classdesc Represents a Count. + * @implements ICount + * @constructor + * @param {google.datastore.v1.AggregationQuery.Aggregation.ICount=} [properties] Properties to set + */ + function Count(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - return AllocateIdsResponse; + /** + * Count upTo. + * @member {google.protobuf.IInt64Value|null|undefined} upTo + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @instance + */ + Count.prototype.upTo = null; + + /** + * Creates a new Count instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ICount=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Count} Count instance + */ + Count.create = function create(properties) { + return new Count(properties); + }; + + /** + * Encodes the specified Count message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Count.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ICount} message Count message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Count.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.upTo != null && Object.hasOwnProperty.call(message, "upTo")) + $root.google.protobuf.Int64Value.encode(message.upTo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Count message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Count.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ICount} message Count message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Count.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Count message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Count} Count + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Count.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Count(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.upTo = $root.google.protobuf.Int64Value.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Count message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Count} Count + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Count.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Count message. + * @function verify + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Count.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.upTo != null && message.hasOwnProperty("upTo")) { + var error = $root.google.protobuf.Int64Value.verify(message.upTo); + if (error) + return "upTo." + error; + } + return null; + }; + + /** + * Creates a Count message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Count} Count + */ + Count.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationQuery.Aggregation.Count) + return object; + var message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Count(); + if (object.upTo != null) { + if (typeof object.upTo !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.Count.upTo: object expected"); + message.upTo = $root.google.protobuf.Int64Value.fromObject(object.upTo); + } + return message; + }; + + /** + * Creates a plain object from a Count message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.Count} message Count + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Count.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.upTo = null; + if (message.upTo != null && message.hasOwnProperty("upTo")) + object.upTo = $root.google.protobuf.Int64Value.toObject(message.upTo, options); + return object; + }; + + /** + * Converts this Count to JSON. + * @function toJSON + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @instance + * @returns {Object.} JSON object + */ + Count.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Count + * @function getTypeUrl + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Count + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Count.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AggregationQuery.Aggregation.Count"; + }; + + return Count; + })(); + + return Aggregation; + })(); + + return AggregationQuery; })(); - v1.ReserveIdsRequest = (function() { + v1.KindExpression = (function() { /** - * Properties of a ReserveIdsRequest. + * Properties of a KindExpression. * @memberof google.datastore.v1 - * @interface IReserveIdsRequest - * @property {string|null} [projectId] ReserveIdsRequest projectId - * @property {string|null} [databaseId] ReserveIdsRequest databaseId - * @property {Array.|null} [keys] ReserveIdsRequest keys + * @interface IKindExpression + * @property {string|null} [name] KindExpression name */ /** - * Constructs a new ReserveIdsRequest. + * Constructs a new KindExpression. * @memberof google.datastore.v1 - * @classdesc Represents a ReserveIdsRequest. - * @implements IReserveIdsRequest + * @classdesc Represents a KindExpression. + * @implements IKindExpression * @constructor - * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set */ - function ReserveIdsRequest(properties) { - this.keys = []; + function KindExpression(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -9850,106 +10290,75 @@ } /** - * ReserveIdsRequest projectId. - * @member {string} projectId - * @memberof google.datastore.v1.ReserveIdsRequest - * @instance - */ - ReserveIdsRequest.prototype.projectId = ""; - - /** - * ReserveIdsRequest databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.ReserveIdsRequest - * @instance - */ - ReserveIdsRequest.prototype.databaseId = ""; - - /** - * ReserveIdsRequest keys. - * @member {Array.} keys - * @memberof google.datastore.v1.ReserveIdsRequest + * KindExpression name. + * @member {string} name + * @memberof google.datastore.v1.KindExpression * @instance */ - ReserveIdsRequest.prototype.keys = $util.emptyArray; + KindExpression.prototype.name = ""; /** - * Creates a new ReserveIdsRequest instance using the specified properties. + * Creates a new KindExpression instance using the specified properties. * @function create - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static - * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest instance + * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + * @returns {google.datastore.v1.KindExpression} KindExpression instance */ - ReserveIdsRequest.create = function create(properties) { - return new ReserveIdsRequest(properties); + KindExpression.create = function create(properties) { + return new KindExpression(properties); }; /** - * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static - * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReserveIdsRequest.encode = function encode(message, writer) { + KindExpression.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; }; /** - * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static - * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReserveIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + KindExpression.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * Decodes a KindExpression message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @returns {google.datastore.v1.KindExpression} KindExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReserveIdsRequest.decode = function decode(reader, length) { + KindExpression.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsRequest(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.KindExpression(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 8: { - message.projectId = reader.string(); - break; - } - case 9: { - message.databaseId = reader.string(); - break; - } case 1: { - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + message.name = reader.string(); break; } default: @@ -9961,156 +10370,122 @@ }; /** - * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * Decodes a KindExpression message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @returns {google.datastore.v1.KindExpression} KindExpression * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReserveIdsRequest.decodeDelimited = function decodeDelimited(reader) { + KindExpression.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ReserveIdsRequest message. + * Verifies a KindExpression message. * @function verify - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReserveIdsRequest.verify = function verify(message) { + KindExpression.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.datastore.v1.Key.verify(message.keys[i]); - if (error) - return "keys." + error; - } - } + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; return null; }; /** - * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @returns {google.datastore.v1.KindExpression} KindExpression */ - ReserveIdsRequest.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReserveIdsRequest) + KindExpression.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.KindExpression) return object; - var message = new $root.google.datastore.v1.ReserveIdsRequest(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: object expected"); - message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); - } - } + var message = new $root.google.datastore.v1.KindExpression(); + if (object.name != null) + message.name = String(object.name); return message; }; /** - * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * Creates a plain object from a KindExpression message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static - * @param {google.datastore.v1.ReserveIdsRequest} message ReserveIdsRequest + * @param {google.datastore.v1.KindExpression} message KindExpression * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReserveIdsRequest.toObject = function toObject(message, options) { + KindExpression.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.keys = []; - if (options.defaults) { - object.projectId = ""; - object.databaseId = ""; - } - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); - } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; return object; }; /** - * Converts this ReserveIdsRequest to JSON. + * Converts this KindExpression to JSON. * @function toJSON - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @instance * @returns {Object.} JSON object */ - ReserveIdsRequest.prototype.toJSON = function toJSON() { + KindExpression.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for ReserveIdsRequest + * Gets the default type url for KindExpression * @function getTypeUrl - * @memberof google.datastore.v1.ReserveIdsRequest + * @memberof google.datastore.v1.KindExpression * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - ReserveIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + KindExpression.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.ReserveIdsRequest"; + return typeUrlPrefix + "/google.datastore.v1.KindExpression"; }; - return ReserveIdsRequest; + return KindExpression; })(); - v1.ReserveIdsResponse = (function() { + v1.PropertyReference = (function() { /** - * Properties of a ReserveIdsResponse. + * Properties of a PropertyReference. * @memberof google.datastore.v1 - * @interface IReserveIdsResponse + * @interface IPropertyReference + * @property {string|null} [name] PropertyReference name */ /** - * Constructs a new ReserveIdsResponse. + * Constructs a new PropertyReference. * @memberof google.datastore.v1 - * @classdesc Represents a ReserveIdsResponse. - * @implements IReserveIdsResponse + * @classdesc Represents a PropertyReference. + * @implements IPropertyReference * @constructor - * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set */ - function ReserveIdsResponse(properties) { + function PropertyReference(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10118,63 +10493,77 @@ } /** - * Creates a new ReserveIdsResponse instance using the specified properties. + * PropertyReference name. + * @member {string} name + * @memberof google.datastore.v1.PropertyReference + * @instance + */ + PropertyReference.prototype.name = ""; + + /** + * Creates a new PropertyReference instance using the specified properties. * @function create - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static - * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse instance + * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyReference} PropertyReference instance */ - ReserveIdsResponse.create = function create(properties) { - return new ReserveIdsResponse(properties); + PropertyReference.create = function create(properties) { + return new PropertyReference(properties); }; /** - * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static - * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReserveIdsResponse.encode = function encode(message, writer) { + PropertyReference.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); return writer; }; /** - * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static - * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReserveIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { + PropertyReference.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * Decodes a PropertyReference message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @returns {google.datastore.v1.PropertyReference} PropertyReference * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReserveIdsResponse.decode = function decode(reader, length) { + PropertyReference.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsResponse(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyReference(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 2: { + message.name = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -10184,114 +10573,122 @@ }; /** - * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * Decodes a PropertyReference message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @returns {google.datastore.v1.PropertyReference} PropertyReference * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReserveIdsResponse.decodeDelimited = function decodeDelimited(reader) { + PropertyReference.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ReserveIdsResponse message. + * Verifies a PropertyReference message. * @function verify - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReserveIdsResponse.verify = function verify(message) { + PropertyReference.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; return null; }; /** - * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @returns {google.datastore.v1.PropertyReference} PropertyReference */ - ReserveIdsResponse.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReserveIdsResponse) + PropertyReference.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyReference) return object; - return new $root.google.datastore.v1.ReserveIdsResponse(); + var message = new $root.google.datastore.v1.PropertyReference(); + if (object.name != null) + message.name = String(object.name); + return message; }; /** - * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static - * @param {google.datastore.v1.ReserveIdsResponse} message ReserveIdsResponse + * @param {google.datastore.v1.PropertyReference} message PropertyReference * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReserveIdsResponse.toObject = function toObject() { - return {}; + PropertyReference.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; }; /** - * Converts this ReserveIdsResponse to JSON. + * Converts this PropertyReference to JSON. * @function toJSON - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @instance * @returns {Object.} JSON object */ - ReserveIdsResponse.prototype.toJSON = function toJSON() { + PropertyReference.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for ReserveIdsResponse + * Gets the default type url for PropertyReference * @function getTypeUrl - * @memberof google.datastore.v1.ReserveIdsResponse + * @memberof google.datastore.v1.PropertyReference * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - ReserveIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + PropertyReference.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.ReserveIdsResponse"; + return typeUrlPrefix + "/google.datastore.v1.PropertyReference"; }; - return ReserveIdsResponse; + return PropertyReference; })(); - v1.Mutation = (function() { + v1.Projection = (function() { /** - * Properties of a Mutation. + * Properties of a Projection. * @memberof google.datastore.v1 - * @interface IMutation - * @property {google.datastore.v1.IEntity|null} [insert] Mutation insert - * @property {google.datastore.v1.IEntity|null} [update] Mutation update - * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert - * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete - * @property {number|Long|null} [baseVersion] Mutation baseVersion - * @property {google.protobuf.ITimestamp|null} [updateTime] Mutation updateTime + * @interface IProjection + * @property {google.datastore.v1.IPropertyReference|null} [property] Projection property */ /** - * Constructs a new Mutation. + * Constructs a new Projection. * @memberof google.datastore.v1 - * @classdesc Represents a Mutation. - * @implements IMutation + * @classdesc Represents a Projection. + * @implements IProjection * @constructor - * @param {google.datastore.v1.IMutation=} [properties] Properties to set + * @param {google.datastore.v1.IProjection=} [properties] Properties to set */ - function Mutation(properties) { + function Projection(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10299,170 +10696,75 @@ } /** - * Mutation insert. - * @member {google.datastore.v1.IEntity|null|undefined} insert - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.insert = null; - - /** - * Mutation update. - * @member {google.datastore.v1.IEntity|null|undefined} update - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.update = null; - - /** - * Mutation upsert. - * @member {google.datastore.v1.IEntity|null|undefined} upsert - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.upsert = null; - - /** - * Mutation delete. - * @member {google.datastore.v1.IKey|null|undefined} delete - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype["delete"] = null; - - /** - * Mutation baseVersion. - * @member {number|Long|null|undefined} baseVersion - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.baseVersion = null; - - /** - * Mutation updateTime. - * @member {google.protobuf.ITimestamp|null|undefined} updateTime - * @memberof google.datastore.v1.Mutation - * @instance - */ - Mutation.prototype.updateTime = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * Mutation operation. - * @member {"insert"|"update"|"upsert"|"delete"|undefined} operation - * @memberof google.datastore.v1.Mutation - * @instance - */ - Object.defineProperty(Mutation.prototype, "operation", { - get: $util.oneOfGetter($oneOfFields = ["insert", "update", "upsert", "delete"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Mutation conflictDetectionStrategy. - * @member {"baseVersion"|"updateTime"|undefined} conflictDetectionStrategy - * @memberof google.datastore.v1.Mutation + * Projection property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.Projection * @instance */ - Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { - get: $util.oneOfGetter($oneOfFields = ["baseVersion", "updateTime"]), - set: $util.oneOfSetter($oneOfFields) - }); + Projection.prototype.property = null; /** - * Creates a new Mutation instance using the specified properties. + * Creates a new Projection instance using the specified properties. * @function create - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static - * @param {google.datastore.v1.IMutation=} [properties] Properties to set - * @returns {google.datastore.v1.Mutation} Mutation instance + * @param {google.datastore.v1.IProjection=} [properties] Properties to set + * @returns {google.datastore.v1.Projection} Projection instance */ - Mutation.create = function create(properties) { - return new Mutation(properties); + Projection.create = function create(properties) { + return new Projection(properties); }; /** - * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static - * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Mutation.encode = function encode(message, writer) { + Projection.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.insert != null && Object.hasOwnProperty.call(message, "insert")) - $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.update != null && Object.hasOwnProperty.call(message, "update")) - $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.upsert != null && Object.hasOwnProperty.call(message, "upsert")) - $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) - $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) - writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); - if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) - $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static - * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Mutation.encodeDelimited = function encodeDelimited(message, writer) { + Projection.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Mutation message from the specified reader or buffer. + * Decodes a Projection message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.Projection} Projection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Mutation.decode = function decode(reader, length) { + Projection.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Mutation(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Projection(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 4: { - message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - } - case 5: { - message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - } - case 6: { - message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - } - case 7: { - message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - } - case 8: { - message.baseVersion = reader.int64(); - break; - } - case 11: { - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); break; } default: @@ -10474,237 +10776,128 @@ }; /** - * Decodes a Mutation message from the specified reader or buffer, length delimited. + * Decodes a Projection message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.Projection} Projection * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Mutation.decodeDelimited = function decodeDelimited(reader) { + Projection.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Mutation message. + * Verifies a Projection message. * @function verify - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Mutation.verify = function verify(message) { + Projection.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.insert != null && message.hasOwnProperty("insert")) { - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.insert); - if (error) - return "insert." + error; - } - } - if (message.update != null && message.hasOwnProperty("update")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.update); - if (error) - return "update." + error; - } - } - if (message.upsert != null && message.hasOwnProperty("upsert")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.upsert); - if (error) - return "upsert." + error; - } - } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - if (properties.operation === 1) - return "operation: multiple values"; - properties.operation = 1; - { - var error = $root.google.datastore.v1.Key.verify(message["delete"]); - if (error) - return "delete." + error; - } - } - if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { - properties.conflictDetectionStrategy = 1; - if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) - return "baseVersion: integer|Long expected"; - } - if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - if (properties.conflictDetectionStrategy === 1) - return "conflictDetectionStrategy: multiple values"; - properties.conflictDetectionStrategy = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.updateTime); - if (error) - return "updateTime." + error; - } + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; } return null; }; /** - * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * Creates a Projection message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Mutation} Mutation + * @returns {google.datastore.v1.Projection} Projection */ - Mutation.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Mutation) + Projection.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Projection) return object; - var message = new $root.google.datastore.v1.Mutation(); - if (object.insert != null) { - if (typeof object.insert !== "object") - throw TypeError(".google.datastore.v1.Mutation.insert: object expected"); - message.insert = $root.google.datastore.v1.Entity.fromObject(object.insert); - } - if (object.update != null) { - if (typeof object.update !== "object") - throw TypeError(".google.datastore.v1.Mutation.update: object expected"); - message.update = $root.google.datastore.v1.Entity.fromObject(object.update); - } - if (object.upsert != null) { - if (typeof object.upsert !== "object") - throw TypeError(".google.datastore.v1.Mutation.upsert: object expected"); - message.upsert = $root.google.datastore.v1.Entity.fromObject(object.upsert); - } - if (object["delete"] != null) { - if (typeof object["delete"] !== "object") - throw TypeError(".google.datastore.v1.Mutation.delete: object expected"); - message["delete"] = $root.google.datastore.v1.Key.fromObject(object["delete"]); - } - if (object.baseVersion != null) - if ($util.Long) - (message.baseVersion = $util.Long.fromValue(object.baseVersion)).unsigned = false; - else if (typeof object.baseVersion === "string") - message.baseVersion = parseInt(object.baseVersion, 10); - else if (typeof object.baseVersion === "number") - message.baseVersion = object.baseVersion; - else if (typeof object.baseVersion === "object") - message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); - if (object.updateTime != null) { - if (typeof object.updateTime !== "object") - throw TypeError(".google.datastore.v1.Mutation.updateTime: object expected"); - message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + var message = new $root.google.datastore.v1.Projection(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.Projection.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); } return message; }; /** - * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * Creates a plain object from a Projection message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static - * @param {google.datastore.v1.Mutation} message Mutation + * @param {google.datastore.v1.Projection} message Projection * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Mutation.toObject = function toObject(message, options) { + Projection.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.insert != null && message.hasOwnProperty("insert")) { - object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); - if (options.oneofs) - object.operation = "insert"; - } - if (message.update != null && message.hasOwnProperty("update")) { - object.update = $root.google.datastore.v1.Entity.toObject(message.update, options); - if (options.oneofs) - object.operation = "update"; - } - if (message.upsert != null && message.hasOwnProperty("upsert")) { - object.upsert = $root.google.datastore.v1.Entity.toObject(message.upsert, options); - if (options.oneofs) - object.operation = "upsert"; - } - if (message["delete"] != null && message.hasOwnProperty("delete")) { - object["delete"] = $root.google.datastore.v1.Key.toObject(message["delete"], options); - if (options.oneofs) - object.operation = "delete"; - } - if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { - if (typeof message.baseVersion === "number") - object.baseVersion = options.longs === String ? String(message.baseVersion) : message.baseVersion; - else - object.baseVersion = options.longs === String ? $util.Long.prototype.toString.call(message.baseVersion) : options.longs === Number ? new $util.LongBits(message.baseVersion.low >>> 0, message.baseVersion.high >>> 0).toNumber() : message.baseVersion; - if (options.oneofs) - object.conflictDetectionStrategy = "baseVersion"; - } - if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); - if (options.oneofs) - object.conflictDetectionStrategy = "updateTime"; - } + if (options.defaults) + object.property = null; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); return object; }; /** - * Converts this Mutation to JSON. + * Converts this Projection to JSON. * @function toJSON - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @instance * @returns {Object.} JSON object */ - Mutation.prototype.toJSON = function toJSON() { + Projection.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Mutation + * Gets the default type url for Projection * @function getTypeUrl - * @memberof google.datastore.v1.Mutation + * @memberof google.datastore.v1.Projection * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Mutation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Projection.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Mutation"; + return typeUrlPrefix + "/google.datastore.v1.Projection"; }; - return Mutation; + return Projection; })(); - v1.MutationResult = (function() { + v1.PropertyOrder = (function() { /** - * Properties of a MutationResult. + * Properties of a PropertyOrder. * @memberof google.datastore.v1 - * @interface IMutationResult - * @property {google.datastore.v1.IKey|null} [key] MutationResult key - * @property {number|Long|null} [version] MutationResult version - * @property {google.protobuf.ITimestamp|null} [updateTime] MutationResult updateTime - * @property {boolean|null} [conflictDetected] MutationResult conflictDetected + * @interface IPropertyOrder + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyOrder property + * @property {google.datastore.v1.PropertyOrder.Direction|null} [direction] PropertyOrder direction */ /** - * Constructs a new MutationResult. + * Constructs a new PropertyOrder. * @memberof google.datastore.v1 - * @classdesc Represents a MutationResult. - * @implements IMutationResult + * @classdesc Represents a PropertyOrder. + * @implements IPropertyOrder * @constructor - * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set */ - function MutationResult(properties) { + function PropertyOrder(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -10712,117 +10905,89 @@ } /** - * MutationResult key. - * @member {google.datastore.v1.IKey|null|undefined} key - * @memberof google.datastore.v1.MutationResult - * @instance - */ - MutationResult.prototype.key = null; - - /** - * MutationResult version. - * @member {number|Long} version - * @memberof google.datastore.v1.MutationResult - * @instance - */ - MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * MutationResult updateTime. - * @member {google.protobuf.ITimestamp|null|undefined} updateTime - * @memberof google.datastore.v1.MutationResult + * PropertyOrder property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyOrder * @instance */ - MutationResult.prototype.updateTime = null; + PropertyOrder.prototype.property = null; /** - * MutationResult conflictDetected. - * @member {boolean} conflictDetected - * @memberof google.datastore.v1.MutationResult + * PropertyOrder direction. + * @member {google.datastore.v1.PropertyOrder.Direction} direction + * @memberof google.datastore.v1.PropertyOrder * @instance */ - MutationResult.prototype.conflictDetected = false; + PropertyOrder.prototype.direction = 0; /** - * Creates a new MutationResult instance using the specified properties. + * Creates a new PropertyOrder instance using the specified properties. * @function create - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static - * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set - * @returns {google.datastore.v1.MutationResult} MutationResult instance + * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder instance */ - MutationResult.create = function create(properties) { - return new MutationResult(properties); + PropertyOrder.create = function create(properties) { + return new PropertyOrder(properties); }; /** - * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static - * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MutationResult.encode = function encode(message, writer) { + PropertyOrder.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.version != null && Object.hasOwnProperty.call(message, "version")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); - if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); - if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) - $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); return writer; }; /** - * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static - * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MutationResult.encodeDelimited = function encodeDelimited(message, writer) { + PropertyOrder.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a MutationResult message from the specified reader or buffer. + * Decodes a PropertyOrder message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MutationResult.decode = function decode(reader, length) { + PropertyOrder.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.MutationResult(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyOrder(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 3: { - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - } - case 4: { - message.version = reader.int64(); - break; - } - case 6: { - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); break; } - case 5: { - message.conflictDetected = reader.bool(); + case 2: { + message.direction = reader.int32(); break; } default: @@ -10834,173 +10999,171 @@ }; /** - * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MutationResult.decodeDelimited = function decodeDelimited(reader) { + PropertyOrder.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a MutationResult message. + * Verifies a PropertyOrder message. * @function verify - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MutationResult.verify = function verify(message) { + PropertyOrder.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) { - var error = $root.google.datastore.v1.Key.verify(message.key); - if (error) - return "key." + error; - } - if (message.version != null && message.hasOwnProperty("version")) - if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) - return "version: integer|Long expected"; - if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); if (error) - return "updateTime." + error; + return "property." + error; } - if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) - if (typeof message.conflictDetected !== "boolean") - return "conflictDetected: boolean expected"; + if (message.direction != null && message.hasOwnProperty("direction")) + switch (message.direction) { + default: + return "direction: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; /** - * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.MutationResult} MutationResult + * @returns {google.datastore.v1.PropertyOrder} PropertyOrder */ - MutationResult.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.MutationResult) + PropertyOrder.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyOrder) return object; - var message = new $root.google.datastore.v1.MutationResult(); - if (object.key != null) { - if (typeof object.key !== "object") - throw TypeError(".google.datastore.v1.MutationResult.key: object expected"); - message.key = $root.google.datastore.v1.Key.fromObject(object.key); + var message = new $root.google.datastore.v1.PropertyOrder(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyOrder.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); } - if (object.version != null) - if ($util.Long) - (message.version = $util.Long.fromValue(object.version)).unsigned = false; - else if (typeof object.version === "string") - message.version = parseInt(object.version, 10); - else if (typeof object.version === "number") - message.version = object.version; - else if (typeof object.version === "object") - message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); - if (object.updateTime != null) { - if (typeof object.updateTime !== "object") - throw TypeError(".google.datastore.v1.MutationResult.updateTime: object expected"); - message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + switch (object.direction) { + case "DIRECTION_UNSPECIFIED": + case 0: + message.direction = 0; + break; + case "ASCENDING": + case 1: + message.direction = 1; + break; + case "DESCENDING": + case 2: + message.direction = 2; + break; } - if (object.conflictDetected != null) - message.conflictDetected = Boolean(object.conflictDetected); return message; }; /** - * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static - * @param {google.datastore.v1.MutationResult} message MutationResult + * @param {google.datastore.v1.PropertyOrder} message PropertyOrder * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MutationResult.toObject = function toObject(message, options) { + PropertyOrder.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.key = null; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.version = options.longs === String ? "0" : 0; - object.conflictDetected = false; - object.updateTime = null; + object.property = null; + object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; } - if (message.key != null && message.hasOwnProperty("key")) - object.key = $root.google.datastore.v1.Key.toObject(message.key, options); - if (message.version != null && message.hasOwnProperty("version")) - if (typeof message.version === "number") - object.version = options.longs === String ? String(message.version) : message.version; - else - object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; - if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) - object.conflictDetected = message.conflictDetected; - if (message.updateTime != null && message.hasOwnProperty("updateTime")) - object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; return object; }; /** - * Converts this MutationResult to JSON. + * Converts this PropertyOrder to JSON. * @function toJSON - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @instance * @returns {Object.} JSON object */ - MutationResult.prototype.toJSON = function toJSON() { + PropertyOrder.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for MutationResult + * Gets the default type url for PropertyOrder * @function getTypeUrl - * @memberof google.datastore.v1.MutationResult + * @memberof google.datastore.v1.PropertyOrder * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - MutationResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + PropertyOrder.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.MutationResult"; + return typeUrlPrefix + "/google.datastore.v1.PropertyOrder"; }; - return MutationResult; + /** + * Direction enum. + * @name google.datastore.v1.PropertyOrder.Direction + * @enum {number} + * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + PropertyOrder.Direction = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); + + return PropertyOrder; })(); - v1.ReadOptions = (function() { + v1.Filter = (function() { /** - * Properties of a ReadOptions. + * Properties of a Filter. * @memberof google.datastore.v1 - * @interface IReadOptions - * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency - * @property {Uint8Array|null} [transaction] ReadOptions transaction - * @property {google.protobuf.ITimestamp|null} [readTime] ReadOptions readTime + * @interface IFilter + * @property {google.datastore.v1.ICompositeFilter|null} [compositeFilter] Filter compositeFilter + * @property {google.datastore.v1.IPropertyFilter|null} [propertyFilter] Filter propertyFilter */ /** - * Constructs a new ReadOptions. + * Constructs a new Filter. * @memberof google.datastore.v1 - * @classdesc Represents a ReadOptions. - * @implements IReadOptions + * @classdesc Represents a Filter. + * @implements IFilter * @constructor - * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + * @param {google.datastore.v1.IFilter=} [properties] Properties to set */ - function ReadOptions(properties) { + function Filter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11008,117 +11171,103 @@ } /** - * ReadOptions readConsistency. - * @member {google.datastore.v1.ReadOptions.ReadConsistency|null|undefined} readConsistency - * @memberof google.datastore.v1.ReadOptions - * @instance - */ - ReadOptions.prototype.readConsistency = null; - - /** - * ReadOptions transaction. - * @member {Uint8Array|null|undefined} transaction - * @memberof google.datastore.v1.ReadOptions + * Filter compositeFilter. + * @member {google.datastore.v1.ICompositeFilter|null|undefined} compositeFilter + * @memberof google.datastore.v1.Filter * @instance */ - ReadOptions.prototype.transaction = null; + Filter.prototype.compositeFilter = null; /** - * ReadOptions readTime. - * @member {google.protobuf.ITimestamp|null|undefined} readTime - * @memberof google.datastore.v1.ReadOptions + * Filter propertyFilter. + * @member {google.datastore.v1.IPropertyFilter|null|undefined} propertyFilter + * @memberof google.datastore.v1.Filter * @instance */ - ReadOptions.prototype.readTime = null; + Filter.prototype.propertyFilter = null; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * ReadOptions consistencyType. - * @member {"readConsistency"|"transaction"|"readTime"|undefined} consistencyType - * @memberof google.datastore.v1.ReadOptions + * Filter filterType. + * @member {"compositeFilter"|"propertyFilter"|undefined} filterType + * @memberof google.datastore.v1.Filter * @instance */ - Object.defineProperty(ReadOptions.prototype, "consistencyType", { - get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction", "readTime"]), + Object.defineProperty(Filter.prototype, "filterType", { + get: $util.oneOfGetter($oneOfFields = ["compositeFilter", "propertyFilter"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new ReadOptions instance using the specified properties. + * Creates a new Filter instance using the specified properties. * @function create - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static - * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set - * @returns {google.datastore.v1.ReadOptions} ReadOptions instance + * @param {google.datastore.v1.IFilter=} [properties] Properties to set + * @returns {google.datastore.v1.Filter} Filter instance */ - ReadOptions.create = function create(properties) { - return new ReadOptions(properties); + Filter.create = function create(properties) { + return new Filter(properties); }; /** - * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static - * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReadOptions.encode = function encode(message, writer) { + Filter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readConsistency != null && Object.hasOwnProperty.call(message, "readConsistency")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); - if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); - if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) - $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.compositeFilter != null && Object.hasOwnProperty.call(message, "compositeFilter")) + $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.propertyFilter != null && Object.hasOwnProperty.call(message, "propertyFilter")) + $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static - * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReadOptions.encodeDelimited = function encodeDelimited(message, writer) { + Filter.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a ReadOptions message from the specified reader or buffer. + * Decodes a Filter message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.Filter} Filter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReadOptions.decode = function decode(reader, length) { + Filter.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReadOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Filter(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: { - message.readConsistency = reader.int32(); + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); break; } case 2: { - message.transaction = reader.bytes(); - break; - } - case 4: { - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); break; } default: @@ -11130,198 +11279,154 @@ }; /** - * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * Decodes a Filter message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.Filter} Filter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReadOptions.decodeDelimited = function decodeDelimited(reader) { + Filter.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a ReadOptions message. + * Verifies a Filter message. * @function verify - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReadOptions.verify = function verify(message) { + Filter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { - properties.consistencyType = 1; - switch (message.readConsistency) { - default: - return "readConsistency: enum value expected"; - case 0: - case 1: - case 2: - break; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + properties.filterType = 1; + { + var error = $root.google.datastore.v1.CompositeFilter.verify(message.compositeFilter); + if (error) + return "compositeFilter." + error; } } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - if (properties.consistencyType === 1) - return "consistencyType: multiple values"; - properties.consistencyType = 1; - if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) - return "transaction: buffer expected"; - } - if (message.readTime != null && message.hasOwnProperty("readTime")) { - if (properties.consistencyType === 1) - return "consistencyType: multiple values"; - properties.consistencyType = 1; + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + if (properties.filterType === 1) + return "filterType: multiple values"; + properties.filterType = 1; { - var error = $root.google.protobuf.Timestamp.verify(message.readTime); + var error = $root.google.datastore.v1.PropertyFilter.verify(message.propertyFilter); if (error) - return "readTime." + error; + return "propertyFilter." + error; } } return null; }; /** - * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Filter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @returns {google.datastore.v1.Filter} Filter */ - ReadOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ReadOptions) + Filter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Filter) return object; - var message = new $root.google.datastore.v1.ReadOptions(); - switch (object.readConsistency) { - case "READ_CONSISTENCY_UNSPECIFIED": - case 0: - message.readConsistency = 0; - break; - case "STRONG": - case 1: - message.readConsistency = 1; - break; - case "EVENTUAL": - case 2: - message.readConsistency = 2; - break; + var message = new $root.google.datastore.v1.Filter(); + if (object.compositeFilter != null) { + if (typeof object.compositeFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.compositeFilter: object expected"); + message.compositeFilter = $root.google.datastore.v1.CompositeFilter.fromObject(object.compositeFilter); } - if (object.transaction != null) - if (typeof object.transaction === "string") - $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); - else if (object.transaction.length >= 0) - message.transaction = object.transaction; - if (object.readTime != null) { - if (typeof object.readTime !== "object") - throw TypeError(".google.datastore.v1.ReadOptions.readTime: object expected"); - message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + if (object.propertyFilter != null) { + if (typeof object.propertyFilter !== "object") + throw TypeError(".google.datastore.v1.Filter.propertyFilter: object expected"); + message.propertyFilter = $root.google.datastore.v1.PropertyFilter.fromObject(object.propertyFilter); } return message; }; /** - * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * Creates a plain object from a Filter message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static - * @param {google.datastore.v1.ReadOptions} message ReadOptions + * @param {google.datastore.v1.Filter} message Filter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReadOptions.toObject = function toObject(message, options) { + Filter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { - object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; - if (options.oneofs) - object.consistencyType = "readConsistency"; - } - if (message.transaction != null && message.hasOwnProperty("transaction")) { - object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { + object.compositeFilter = $root.google.datastore.v1.CompositeFilter.toObject(message.compositeFilter, options); if (options.oneofs) - object.consistencyType = "transaction"; + object.filterType = "compositeFilter"; } - if (message.readTime != null && message.hasOwnProperty("readTime")) { - object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { + object.propertyFilter = $root.google.datastore.v1.PropertyFilter.toObject(message.propertyFilter, options); if (options.oneofs) - object.consistencyType = "readTime"; + object.filterType = "propertyFilter"; } return object; }; /** - * Converts this ReadOptions to JSON. + * Converts this Filter to JSON. * @function toJSON - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @instance * @returns {Object.} JSON object */ - ReadOptions.prototype.toJSON = function toJSON() { + Filter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for ReadOptions + * Gets the default type url for Filter * @function getTypeUrl - * @memberof google.datastore.v1.ReadOptions + * @memberof google.datastore.v1.Filter * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - ReadOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Filter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.ReadOptions"; + return typeUrlPrefix + "/google.datastore.v1.Filter"; }; - /** - * ReadConsistency enum. - * @name google.datastore.v1.ReadOptions.ReadConsistency - * @enum {number} - * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value - * @property {number} STRONG=1 STRONG value - * @property {number} EVENTUAL=2 EVENTUAL value - */ - ReadOptions.ReadConsistency = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "READ_CONSISTENCY_UNSPECIFIED"] = 0; - values[valuesById[1] = "STRONG"] = 1; - values[valuesById[2] = "EVENTUAL"] = 2; - return values; - })(); - - return ReadOptions; + return Filter; })(); - v1.TransactionOptions = (function() { + v1.CompositeFilter = (function() { /** - * Properties of a TransactionOptions. + * Properties of a CompositeFilter. * @memberof google.datastore.v1 - * @interface ITransactionOptions - * @property {google.datastore.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite - * @property {google.datastore.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly + * @interface ICompositeFilter + * @property {google.datastore.v1.CompositeFilter.Operator|null} [op] CompositeFilter op + * @property {Array.|null} [filters] CompositeFilter filters */ /** - * Constructs a new TransactionOptions. + * Constructs a new CompositeFilter. * @memberof google.datastore.v1 - * @classdesc Represents a TransactionOptions. - * @implements ITransactionOptions + * @classdesc Represents a CompositeFilter. + * @implements ICompositeFilter * @constructor - * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set */ - function TransactionOptions(properties) { + function CompositeFilter(properties) { + this.filters = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -11329,103 +11434,92 @@ } /** - * TransactionOptions readWrite. - * @member {google.datastore.v1.TransactionOptions.IReadWrite|null|undefined} readWrite - * @memberof google.datastore.v1.TransactionOptions - * @instance - */ - TransactionOptions.prototype.readWrite = null; - - /** - * TransactionOptions readOnly. - * @member {google.datastore.v1.TransactionOptions.IReadOnly|null|undefined} readOnly - * @memberof google.datastore.v1.TransactionOptions + * CompositeFilter op. + * @member {google.datastore.v1.CompositeFilter.Operator} op + * @memberof google.datastore.v1.CompositeFilter * @instance */ - TransactionOptions.prototype.readOnly = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + CompositeFilter.prototype.op = 0; /** - * TransactionOptions mode. - * @member {"readWrite"|"readOnly"|undefined} mode - * @memberof google.datastore.v1.TransactionOptions + * CompositeFilter filters. + * @member {Array.} filters + * @memberof google.datastore.v1.CompositeFilter * @instance */ - Object.defineProperty(TransactionOptions.prototype, "mode", { - get: $util.oneOfGetter($oneOfFields = ["readWrite", "readOnly"]), - set: $util.oneOfSetter($oneOfFields) - }); + CompositeFilter.prototype.filters = $util.emptyArray; /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new CompositeFilter instance using the specified properties. * @function create - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions instance + * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter instance */ - TransactionOptions.create = function create(properties) { - return new TransactionOptions(properties); + CompositeFilter.create = function create(properties) { + return new CompositeFilter(properties); }; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encode = function encode(message, writer) { + CompositeFilter.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) - $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) - $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.op != null && Object.hasOwnProperty.call(message, "op")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); + if (message.filters != null && message.filters.length) + for (var i = 0; i < message.filters.length; ++i) + $root.google.datastore.v1.Filter.encode(message.filters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { + CompositeFilter.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a CompositeFilter message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decode = function decode(reader, length) { + CompositeFilter.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CompositeFilter(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: { - message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + message.op = reader.int32(); break; } case 2: { - message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + if (!(message.filters && message.filters.length)) + message.filters = []; + message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); break; } default: @@ -11437,824 +11531,523 @@ }; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decodeDelimited = function decodeDelimited(reader) { + CompositeFilter.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a TransactionOptions message. + * Verifies a CompositeFilter message. * @function verify - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TransactionOptions.verify = function verify(message) { + CompositeFilter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - properties.mode = 1; - { - var error = $root.google.datastore.v1.TransactionOptions.ReadWrite.verify(message.readWrite); - if (error) - return "readWrite." + error; + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + break; } - } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - if (properties.mode === 1) - return "mode: multiple values"; - properties.mode = 1; - { - var error = $root.google.datastore.v1.TransactionOptions.ReadOnly.verify(message.readOnly); + if (message.filters != null && message.hasOwnProperty("filters")) { + if (!Array.isArray(message.filters)) + return "filters: array expected"; + for (var i = 0; i < message.filters.length; ++i) { + var error = $root.google.datastore.v1.Filter.verify(message.filters[i]); if (error) - return "readOnly." + error; + return "filters." + error; } } return null; }; /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @returns {google.datastore.v1.CompositeFilter} CompositeFilter */ - TransactionOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions) + CompositeFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CompositeFilter) return object; - var message = new $root.google.datastore.v1.TransactionOptions(); - if (object.readWrite != null) { - if (typeof object.readWrite !== "object") - throw TypeError(".google.datastore.v1.TransactionOptions.readWrite: object expected"); - message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); + var message = new $root.google.datastore.v1.CompositeFilter(); + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "AND": + case 1: + message.op = 1; + break; } - if (object.readOnly != null) { - if (typeof object.readOnly !== "object") - throw TypeError(".google.datastore.v1.TransactionOptions.readOnly: object expected"); - message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); + if (object.filters) { + if (!Array.isArray(object.filters)) + throw TypeError(".google.datastore.v1.CompositeFilter.filters: array expected"); + message.filters = []; + for (var i = 0; i < object.filters.length; ++i) { + if (typeof object.filters[i] !== "object") + throw TypeError(".google.datastore.v1.CompositeFilter.filters: object expected"); + message.filters[i] = $root.google.datastore.v1.Filter.fromObject(object.filters[i]); + } } return message; }; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static - * @param {google.datastore.v1.TransactionOptions} message TransactionOptions + * @param {google.datastore.v1.CompositeFilter} message CompositeFilter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - TransactionOptions.toObject = function toObject(message, options) { + CompositeFilter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - object.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); - if (options.oneofs) - object.mode = "readWrite"; - } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - object.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); - if (options.oneofs) - object.mode = "readOnly"; + if (options.arrays || options.defaults) + object.filters = []; + if (options.defaults) + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; + if (message.filters && message.filters.length) { + object.filters = []; + for (var j = 0; j < message.filters.length; ++j) + object.filters[j] = $root.google.datastore.v1.Filter.toObject(message.filters[j], options); } return object; }; /** - * Converts this TransactionOptions to JSON. + * Converts this CompositeFilter to JSON. * @function toJSON - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @instance * @returns {Object.} JSON object */ - TransactionOptions.prototype.toJSON = function toJSON() { + CompositeFilter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for TransactionOptions + * Gets the default type url for CompositeFilter * @function getTypeUrl - * @memberof google.datastore.v1.TransactionOptions + * @memberof google.datastore.v1.CompositeFilter * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - TransactionOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CompositeFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.TransactionOptions"; + return typeUrlPrefix + "/google.datastore.v1.CompositeFilter"; }; - TransactionOptions.ReadWrite = (function() { + /** + * Operator enum. + * @name google.datastore.v1.CompositeFilter.Operator + * @enum {number} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} AND=1 AND value + */ + CompositeFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "AND"] = 1; + return values; + })(); - /** - * Properties of a ReadWrite. - * @memberof google.datastore.v1.TransactionOptions - * @interface IReadWrite - * @property {Uint8Array|null} [previousTransaction] ReadWrite previousTransaction - */ + return CompositeFilter; + })(); - /** - * Constructs a new ReadWrite. - * @memberof google.datastore.v1.TransactionOptions - * @classdesc Represents a ReadWrite. - * @implements IReadWrite - * @constructor - * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - */ - function ReadWrite(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + v1.PropertyFilter = (function() { - /** - * ReadWrite previousTransaction. - * @member {Uint8Array} previousTransaction - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @instance - */ - ReadWrite.prototype.previousTransaction = $util.newBuffer([]); + /** + * Properties of a PropertyFilter. + * @memberof google.datastore.v1 + * @interface IPropertyFilter + * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyFilter property + * @property {google.datastore.v1.PropertyFilter.Operator|null} [op] PropertyFilter op + * @property {google.datastore.v1.IValue|null} [value] PropertyFilter value + */ - /** - * Creates a new ReadWrite instance using the specified properties. - * @function create - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite instance - */ - ReadWrite.create = function create(properties) { - return new ReadWrite(properties); - }; + /** + * Constructs a new PropertyFilter. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyFilter. + * @implements IPropertyFilter + * @constructor + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + */ + function PropertyFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.previousTransaction != null && Object.hasOwnProperty.call(message, "previousTransaction")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); - return writer; - }; + /** + * PropertyFilter property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.property = null; - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * PropertyFilter op. + * @member {google.datastore.v1.PropertyFilter.Operator} op + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.op = 0; - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.previousTransaction = reader.bytes(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + /** + * PropertyFilter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.PropertyFilter + * @instance + */ + PropertyFilter.prototype.value = null; - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Creates a new PropertyFilter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter instance + */ + PropertyFilter.create = function create(properties) { + return new PropertyFilter(properties); + }; - /** - * Verifies a ReadWrite message. - * @function verify - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadWrite.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) - if (!(message.previousTransaction && typeof message.previousTransaction.length === "number" || $util.isString(message.previousTransaction))) - return "previousTransaction: buffer expected"; - return null; - }; + /** + * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.op != null && Object.hasOwnProperty.call(message, "op")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite - */ - ReadWrite.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadWrite) - return object; - var message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); - if (object.previousTransaction != null) - if (typeof object.previousTransaction === "string") - $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); - else if (object.previousTransaction.length >= 0) - message.previousTransaction = object.previousTransaction; - return message; - }; + /** + * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {google.datastore.v1.TransactionOptions.ReadWrite} message ReadWrite - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadWrite.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.previousTransaction = ""; - else { - object.previousTransaction = []; - if (options.bytes !== Array) - object.previousTransaction = $util.newBuffer(object.previousTransaction); + /** + * Decodes a PropertyFilter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; } - if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) - object.previousTransaction = options.bytes === String ? $util.base64.encode(message.previousTransaction, 0, message.previousTransaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.previousTransaction) : message.previousTransaction; - return object; - }; - - /** - * Converts this ReadWrite to JSON. - * @function toJSON - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @instance - * @returns {Object.} JSON object - */ - ReadWrite.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ReadWrite - * @function getTypeUrl - * @memberof google.datastore.v1.TransactionOptions.ReadWrite - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ReadWrite.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; + case 2: { + message.op = reader.int32(); + break; + } + case 3: { + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; } - return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadWrite"; - }; - - return ReadWrite; - })(); - - TransactionOptions.ReadOnly = (function() { - - /** - * Properties of a ReadOnly. - * @memberof google.datastore.v1.TransactionOptions - * @interface IReadOnly - * @property {google.protobuf.ITimestamp|null} [readTime] ReadOnly readTime - */ - - /** - * Constructs a new ReadOnly. - * @memberof google.datastore.v1.TransactionOptions - * @classdesc Represents a ReadOnly. - * @implements IReadOnly - * @constructor - * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - */ - function ReadOnly(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; } - - /** - * ReadOnly readTime. - * @member {google.protobuf.ITimestamp|null|undefined} readTime - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.readTime = null; - - /** - * Creates a new ReadOnly instance using the specified properties. - * @function create - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly instance - */ - ReadOnly.create = function create(properties) { - return new ReadOnly(properties); - }; - - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) - $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ReadOnly message. - * @function verify - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadOnly.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.readTime != null && message.hasOwnProperty("readTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.readTime); - if (error) - return "readTime." + error; - } - return null; - }; - - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly - */ - ReadOnly.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) - return object; - var message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); - if (object.readTime != null) { - if (typeof object.readTime !== "object") - throw TypeError(".google.datastore.v1.TransactionOptions.ReadOnly.readTime: object expected"); - message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); - } - return message; - }; - - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {google.datastore.v1.TransactionOptions.ReadOnly} message ReadOnly - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadOnly.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.readTime = null; - if (message.readTime != null && message.hasOwnProperty("readTime")) - object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); - return object; - }; - - /** - * Converts this ReadOnly to JSON. - * @function toJSON - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @instance - * @returns {Object.} JSON object - */ - ReadOnly.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ReadOnly - * @function getTypeUrl - * @memberof google.datastore.v1.TransactionOptions.ReadOnly - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ReadOnly.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadOnly"; - }; - - return ReadOnly; - })(); - - return TransactionOptions; - })(); - - v1.PartitionId = (function() { + return message; + }; /** - * Properties of a PartitionId. - * @memberof google.datastore.v1 - * @interface IPartitionId - * @property {string|null} [projectId] PartitionId projectId - * @property {string|null} [databaseId] PartitionId databaseId - * @property {string|null} [namespaceId] PartitionId namespaceId + * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ + PropertyFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; /** - * Constructs a new PartitionId. - * @memberof google.datastore.v1 - * @classdesc Represents a PartitionId. - * @implements IPartitionId - * @constructor - * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set + * Verifies a PropertyFilter message. + * @function verify + * @memberof google.datastore.v1.PropertyFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - function PartitionId(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + PropertyFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + if (message.op != null && message.hasOwnProperty("op")) + switch (message.op) { + default: + return "op: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 9: + case 11: + case 13: + break; + } + if (message.value != null && message.hasOwnProperty("value")) { + var error = $root.google.datastore.v1.Value.verify(message.value); + if (error) + return "value." + error; + } + return null; + }; /** - * PartitionId projectId. - * @member {string} projectId - * @memberof google.datastore.v1.PartitionId - * @instance - */ - PartitionId.prototype.projectId = ""; - - /** - * PartitionId databaseId. - * @member {string} databaseId - * @memberof google.datastore.v1.PartitionId - * @instance - */ - PartitionId.prototype.databaseId = ""; - - /** - * PartitionId namespaceId. - * @member {string} namespaceId - * @memberof google.datastore.v1.PartitionId - * @instance - */ - PartitionId.prototype.namespaceId = ""; - - /** - * Creates a new PartitionId instance using the specified properties. - * @function create - * @memberof google.datastore.v1.PartitionId - * @static - * @param {google.datastore.v1.IPartitionId=} [properties] Properties to set - * @returns {google.datastore.v1.PartitionId} PartitionId instance - */ - PartitionId.create = function create(properties) { - return new PartitionId(properties); - }; - - /** - * Encodes the specified PartitionId message. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.PartitionId - * @static - * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PartitionId.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.projectId); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.databaseId); - if (message.namespaceId != null && Object.hasOwnProperty.call(message, "namespaceId")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.namespaceId); - return writer; - }; - - /** - * Encodes the specified PartitionId message, length delimited. Does not implicitly {@link google.datastore.v1.PartitionId.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.PartitionId - * @static - * @param {google.datastore.v1.IPartitionId} message PartitionId message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PartitionId.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PartitionId message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.PartitionId - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PartitionId} PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PartitionId.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PartitionId(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 2: { - message.projectId = reader.string(); - break; - } - case 3: { - message.databaseId = reader.string(); - break; - } - case 4: { - message.namespaceId = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PartitionId message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.PartitionId - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PartitionId} PartitionId - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PartitionId.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PartitionId message. - * @function verify - * @memberof google.datastore.v1.PartitionId - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PartitionId.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.projectId != null && message.hasOwnProperty("projectId")) - if (!$util.isString(message.projectId)) - return "projectId: string expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isString(message.databaseId)) - return "databaseId: string expected"; - if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) - if (!$util.isString(message.namespaceId)) - return "namespaceId: string expected"; - return null; - }; - - /** - * Creates a PartitionId message from a plain object. Also converts values to their respective internal types. + * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.PropertyFilter * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PartitionId} PartitionId + * @returns {google.datastore.v1.PropertyFilter} PropertyFilter */ - PartitionId.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PartitionId) + PropertyFilter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyFilter) return object; - var message = new $root.google.datastore.v1.PartitionId(); - if (object.projectId != null) - message.projectId = String(object.projectId); - if (object.databaseId != null) - message.databaseId = String(object.databaseId); - if (object.namespaceId != null) - message.namespaceId = String(object.namespaceId); + var message = new $root.google.datastore.v1.PropertyFilter(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + switch (object.op) { + case "OPERATOR_UNSPECIFIED": + case 0: + message.op = 0; + break; + case "LESS_THAN": + case 1: + message.op = 1; + break; + case "LESS_THAN_OR_EQUAL": + case 2: + message.op = 2; + break; + case "GREATER_THAN": + case 3: + message.op = 3; + break; + case "GREATER_THAN_OR_EQUAL": + case 4: + message.op = 4; + break; + case "EQUAL": + case 5: + message.op = 5; + break; + case "IN": + case 6: + message.op = 6; + break; + case "NOT_EQUAL": + case 9: + message.op = 9; + break; + case "HAS_ANCESTOR": + case 11: + message.op = 11; + break; + case "NOT_IN": + case 13: + message.op = 13; + break; + } + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.PropertyFilter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); + } return message; }; /** - * Creates a plain object from a PartitionId message. Also converts values to other types if specified. + * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.PropertyFilter * @static - * @param {google.datastore.v1.PartitionId} message PartitionId + * @param {google.datastore.v1.PropertyFilter} message PropertyFilter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PartitionId.toObject = function toObject(message, options) { + PropertyFilter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.projectId = ""; - object.databaseId = ""; - object.namespaceId = ""; + object.property = null; + object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; + object.value = null; } - if (message.projectId != null && message.hasOwnProperty("projectId")) - object.projectId = message.projectId; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - object.databaseId = message.databaseId; - if (message.namespaceId != null && message.hasOwnProperty("namespaceId")) - object.namespaceId = message.namespaceId; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (message.op != null && message.hasOwnProperty("op")) + object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; + if (message.value != null && message.hasOwnProperty("value")) + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); return object; }; /** - * Converts this PartitionId to JSON. + * Converts this PropertyFilter to JSON. * @function toJSON - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.PropertyFilter * @instance * @returns {Object.} JSON object */ - PartitionId.prototype.toJSON = function toJSON() { + PropertyFilter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for PartitionId + * Gets the default type url for PropertyFilter * @function getTypeUrl - * @memberof google.datastore.v1.PartitionId + * @memberof google.datastore.v1.PropertyFilter * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - PartitionId.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + PropertyFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.PartitionId"; + return typeUrlPrefix + "/google.datastore.v1.PropertyFilter"; }; - return PartitionId; + /** + * Operator enum. + * @name google.datastore.v1.PropertyFilter.Operator + * @enum {number} + * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value + * @property {number} LESS_THAN=1 LESS_THAN value + * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value + * @property {number} GREATER_THAN=3 GREATER_THAN value + * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value + * @property {number} EQUAL=5 EQUAL value + * @property {number} IN=6 IN value + * @property {number} NOT_EQUAL=9 NOT_EQUAL value + * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value + * @property {number} NOT_IN=13 NOT_IN value + */ + PropertyFilter.Operator = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; + values[valuesById[1] = "LESS_THAN"] = 1; + values[valuesById[2] = "LESS_THAN_OR_EQUAL"] = 2; + values[valuesById[3] = "GREATER_THAN"] = 3; + values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; + values[valuesById[5] = "EQUAL"] = 5; + values[valuesById[6] = "IN"] = 6; + values[valuesById[9] = "NOT_EQUAL"] = 9; + values[valuesById[11] = "HAS_ANCESTOR"] = 11; + values[valuesById[13] = "NOT_IN"] = 13; + return values; + })(); + + return PropertyFilter; })(); - v1.Key = (function() { + v1.GqlQuery = (function() { /** - * Properties of a Key. + * Properties of a GqlQuery. * @memberof google.datastore.v1 - * @interface IKey - * @property {google.datastore.v1.IPartitionId|null} [partitionId] Key partitionId - * @property {Array.|null} [path] Key path + * @interface IGqlQuery + * @property {string|null} [queryString] GqlQuery queryString + * @property {boolean|null} [allowLiterals] GqlQuery allowLiterals + * @property {Object.|null} [namedBindings] GqlQuery namedBindings + * @property {Array.|null} [positionalBindings] GqlQuery positionalBindings */ /** - * Constructs a new Key. + * Constructs a new GqlQuery. * @memberof google.datastore.v1 - * @classdesc Represents a Key. - * @implements IKey + * @classdesc Represents a GqlQuery. + * @implements IGqlQuery * @constructor - * @param {google.datastore.v1.IKey=} [properties] Properties to set + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set */ - function Key(properties) { - this.path = []; + function GqlQuery(properties) { + this.namedBindings = {}; + this.positionalBindings = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -12262,92 +12055,142 @@ } /** - * Key partitionId. - * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId - * @memberof google.datastore.v1.Key + * GqlQuery queryString. + * @member {string} queryString + * @memberof google.datastore.v1.GqlQuery * @instance */ - Key.prototype.partitionId = null; + GqlQuery.prototype.queryString = ""; /** - * Key path. - * @member {Array.} path - * @memberof google.datastore.v1.Key + * GqlQuery allowLiterals. + * @member {boolean} allowLiterals + * @memberof google.datastore.v1.GqlQuery * @instance */ - Key.prototype.path = $util.emptyArray; + GqlQuery.prototype.allowLiterals = false; /** - * Creates a new Key instance using the specified properties. + * GqlQuery namedBindings. + * @member {Object.} namedBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.namedBindings = $util.emptyObject; + + /** + * GqlQuery positionalBindings. + * @member {Array.} positionalBindings + * @memberof google.datastore.v1.GqlQuery + * @instance + */ + GqlQuery.prototype.positionalBindings = $util.emptyArray; + + /** + * Creates a new GqlQuery instance using the specified properties. * @function create - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static - * @param {google.datastore.v1.IKey=} [properties] Properties to set - * @returns {google.datastore.v1.Key} Key instance + * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQuery} GqlQuery instance */ - Key.create = function create(properties) { - return new Key(properties); + GqlQuery.create = function create(properties) { + return new GqlQuery(properties); }; /** - * Encodes the specified Key message. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static - * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Key.encode = function encode(message, writer) { + GqlQuery.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) - $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.path != null && message.path.length) - for (var i = 0; i < message.path.length; ++i) - $root.google.datastore.v1.Key.PathElement.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.queryString != null && Object.hasOwnProperty.call(message, "queryString")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); + if (message.allowLiterals != null && Object.hasOwnProperty.call(message, "allowLiterals")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); + if (message.positionalBindings != null && message.positionalBindings.length) + for (var i = 0; i < message.positionalBindings.length; ++i) + $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.namedBindings != null && Object.hasOwnProperty.call(message, "namedBindings")) + for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); + $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } return writer; }; /** - * Encodes the specified Key message, length delimited. Does not implicitly {@link google.datastore.v1.Key.verify|verify} messages. + * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static - * @param {google.datastore.v1.IKey} message Key message or plain object to encode + * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Key.encodeDelimited = function encodeDelimited(message, writer) { + GqlQuery.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Key message from the specified reader or buffer. + * Decodes a GqlQuery message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.GqlQuery} GqlQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Key.decode = function decode(reader, length) { + GqlQuery.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: { - message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + message.queryString = reader.string(); break; } case 2: { - if (!(message.path && message.path.length)) - message.path = []; - message.path.push($root.google.datastore.v1.Key.PathElement.decode(reader, reader.uint32())); + message.allowLiterals = reader.bool(); + break; + } + case 5: { + if (message.namedBindings === $util.emptyObject) + message.namedBindings = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = null; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.namedBindings[key] = value; + break; + } + case 4: { + if (!(message.positionalBindings && message.positionalBindings.length)) + message.positionalBindings = []; + message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); break; } default: @@ -12359,673 +12202,452 @@ }; /** - * Decodes a Key message from the specified reader or buffer, length delimited. + * Decodes a GqlQuery message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.GqlQuery} GqlQuery * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Key.decodeDelimited = function decodeDelimited(reader) { + GqlQuery.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Key message. + * Verifies a GqlQuery message. * @function verify - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Key.verify = function verify(message) { + GqlQuery.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) { - var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); - if (error) - return "partitionId." + error; + if (message.queryString != null && message.hasOwnProperty("queryString")) + if (!$util.isString(message.queryString)) + return "queryString: string expected"; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + if (typeof message.allowLiterals !== "boolean") + return "allowLiterals: boolean expected"; + if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) { + if (!$util.isObject(message.namedBindings)) + return "namedBindings: object expected"; + var key = Object.keys(message.namedBindings); + for (var i = 0; i < key.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.namedBindings[key[i]]); + if (error) + return "namedBindings." + error; + } } - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) { - var error = $root.google.datastore.v1.Key.PathElement.verify(message.path[i]); + if (message.positionalBindings != null && message.hasOwnProperty("positionalBindings")) { + if (!Array.isArray(message.positionalBindings)) + return "positionalBindings: array expected"; + for (var i = 0; i < message.positionalBindings.length; ++i) { + var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.positionalBindings[i]); if (error) - return "path." + error; + return "positionalBindings." + error; } } return null; }; /** - * Creates a Key message from a plain object. Also converts values to their respective internal types. + * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Key} Key + * @returns {google.datastore.v1.GqlQuery} GqlQuery */ - Key.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Key) + GqlQuery.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQuery) return object; - var message = new $root.google.datastore.v1.Key(); - if (object.partitionId != null) { - if (typeof object.partitionId !== "object") - throw TypeError(".google.datastore.v1.Key.partitionId: object expected"); - message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + var message = new $root.google.datastore.v1.GqlQuery(); + if (object.queryString != null) + message.queryString = String(object.queryString); + if (object.allowLiterals != null) + message.allowLiterals = Boolean(object.allowLiterals); + if (object.namedBindings) { + if (typeof object.namedBindings !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings = {}; + for (var keys = Object.keys(object.namedBindings), i = 0; i < keys.length; ++i) { + if (typeof object.namedBindings[keys[i]] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); + message.namedBindings[keys[i]] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.namedBindings[keys[i]]); + } } - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".google.datastore.v1.Key.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) { - if (typeof object.path[i] !== "object") - throw TypeError(".google.datastore.v1.Key.path: object expected"); - message.path[i] = $root.google.datastore.v1.Key.PathElement.fromObject(object.path[i]); + if (object.positionalBindings) { + if (!Array.isArray(object.positionalBindings)) + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: array expected"); + message.positionalBindings = []; + for (var i = 0; i < object.positionalBindings.length; ++i) { + if (typeof object.positionalBindings[i] !== "object") + throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: object expected"); + message.positionalBindings[i] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.positionalBindings[i]); } } return message; }; /** - * Creates a plain object from a Key message. Also converts values to other types if specified. + * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static - * @param {google.datastore.v1.Key} message Key + * @param {google.datastore.v1.GqlQuery} message GqlQuery * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Key.toObject = function toObject(message, options) { + GqlQuery.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) - object.path = []; - if (options.defaults) - object.partitionId = null; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = $root.google.datastore.v1.Key.PathElement.toObject(message.path[j], options); + object.positionalBindings = []; + if (options.objects || options.defaults) + object.namedBindings = {}; + if (options.defaults) { + object.queryString = ""; + object.allowLiterals = false; + } + if (message.queryString != null && message.hasOwnProperty("queryString")) + object.queryString = message.queryString; + if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) + object.allowLiterals = message.allowLiterals; + if (message.positionalBindings && message.positionalBindings.length) { + object.positionalBindings = []; + for (var j = 0; j < message.positionalBindings.length; ++j) + object.positionalBindings[j] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.positionalBindings[j], options); + } + var keys2; + if (message.namedBindings && (keys2 = Object.keys(message.namedBindings)).length) { + object.namedBindings = {}; + for (var j = 0; j < keys2.length; ++j) + object.namedBindings[keys2[j]] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.namedBindings[keys2[j]], options); } return object; }; /** - * Converts this Key to JSON. + * Converts this GqlQuery to JSON. * @function toJSON - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @instance * @returns {Object.} JSON object */ - Key.prototype.toJSON = function toJSON() { + GqlQuery.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Key + * Gets the default type url for GqlQuery * @function getTypeUrl - * @memberof google.datastore.v1.Key + * @memberof google.datastore.v1.GqlQuery * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Key.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + GqlQuery.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Key"; + return typeUrlPrefix + "/google.datastore.v1.GqlQuery"; }; - Key.PathElement = (function() { + return GqlQuery; + })(); - /** - * Properties of a PathElement. - * @memberof google.datastore.v1.Key - * @interface IPathElement - * @property {string|null} [kind] PathElement kind - * @property {number|Long|null} [id] PathElement id - * @property {string|null} [name] PathElement name - */ + v1.GqlQueryParameter = (function() { - /** - * Constructs a new PathElement. - * @memberof google.datastore.v1.Key - * @classdesc Represents a PathElement. - * @implements IPathElement - * @constructor - * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set - */ - function PathElement(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a GqlQueryParameter. + * @memberof google.datastore.v1 + * @interface IGqlQueryParameter + * @property {google.datastore.v1.IValue|null} [value] GqlQueryParameter value + * @property {Uint8Array|null} [cursor] GqlQueryParameter cursor + */ - /** - * PathElement kind. - * @member {string} kind - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.kind = ""; + /** + * Constructs a new GqlQueryParameter. + * @memberof google.datastore.v1 + * @classdesc Represents a GqlQueryParameter. + * @implements IGqlQueryParameter + * @constructor + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + */ + function GqlQueryParameter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * PathElement id. - * @member {number|Long|null|undefined} id - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.id = null; + /** + * GqlQueryParameter value. + * @member {google.datastore.v1.IValue|null|undefined} value + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.value = null; - /** - * PathElement name. - * @member {string|null|undefined} name - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - PathElement.prototype.name = null; + /** + * GqlQueryParameter cursor. + * @member {Uint8Array|null|undefined} cursor + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + GqlQueryParameter.prototype.cursor = null; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * PathElement idType. - * @member {"id"|"name"|undefined} idType - * @memberof google.datastore.v1.Key.PathElement - * @instance - */ - Object.defineProperty(PathElement.prototype, "idType", { - get: $util.oneOfGetter($oneOfFields = ["id", "name"]), - set: $util.oneOfSetter($oneOfFields) - }); + /** + * GqlQueryParameter parameterType. + * @member {"value"|"cursor"|undefined} parameterType + * @memberof google.datastore.v1.GqlQueryParameter + * @instance + */ + Object.defineProperty(GqlQueryParameter.prototype, "parameterType", { + get: $util.oneOfGetter($oneOfFields = ["value", "cursor"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * Creates a new PathElement instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement=} [properties] Properties to set - * @returns {google.datastore.v1.Key.PathElement} PathElement instance - */ - PathElement.create = function create(properties) { - return new PathElement(properties); - }; + /** + * Creates a new GqlQueryParameter instance using the specified properties. + * @function create + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter instance + */ + GqlQueryParameter.create = function create(properties) { + return new GqlQueryParameter(properties); + }; - /** - * Encodes the specified PathElement message. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PathElement.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.id); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); - return writer; - }; + /** + * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + return writer; + }; - /** - * Encodes the specified PathElement message, length delimited. Does not implicitly {@link google.datastore.v1.Key.PathElement.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.IPathElement} message PathElement message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PathElement.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GqlQueryParameter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a PathElement message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Key.PathElement} PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PathElement.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Key.PathElement(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.kind = reader.string(); - break; - } - case 2: { - message.id = reader.int64(); - break; - } - case 3: { - message.name = reader.string(); - break; - } - default: - reader.skipType(tag & 7); + /** + * Decodes a GqlQueryParameter message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.GqlQueryParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GqlQueryParameter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQueryParameter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: { + message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); break; } + case 3: { + message.cursor = reader.bytes(); + break; + } + default: + reader.skipType(tag & 7); + break; } - return message; - }; - - /** - * Decodes a PathElement message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Key.PathElement} PathElement - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PathElement.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PathElement message. - * @function verify - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PathElement.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.kind != null && message.hasOwnProperty("kind")) - if (!$util.isString(message.kind)) - return "kind: string expected"; - if (message.id != null && message.hasOwnProperty("id")) { - properties.idType = 1; - if (!$util.isInteger(message.id) && !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))) - return "id: integer|Long expected"; - } - if (message.name != null && message.hasOwnProperty("name")) { - if (properties.idType === 1) - return "idType: multiple values"; - properties.idType = 1; - if (!$util.isString(message.name)) - return "name: string expected"; - } - return null; - }; - - /** - * Creates a PathElement message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.Key.PathElement} PathElement - */ - PathElement.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Key.PathElement) - return object; - var message = new $root.google.datastore.v1.Key.PathElement(); - if (object.kind != null) - message.kind = String(object.kind); - if (object.id != null) - if ($util.Long) - (message.id = $util.Long.fromValue(object.id)).unsigned = false; - else if (typeof object.id === "string") - message.id = parseInt(object.id, 10); - else if (typeof object.id === "number") - message.id = object.id; - else if (typeof object.id === "object") - message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(); - if (object.name != null) - message.name = String(object.name); - return message; - }; - - /** - * Creates a plain object from a PathElement message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {google.datastore.v1.Key.PathElement} message PathElement - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PathElement.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.kind = ""; - if (message.kind != null && message.hasOwnProperty("kind")) - object.kind = message.kind; - if (message.id != null && message.hasOwnProperty("id")) { - if (typeof message.id === "number") - object.id = options.longs === String ? String(message.id) : message.id; - else - object.id = options.longs === String ? $util.Long.prototype.toString.call(message.id) : options.longs === Number ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber() : message.id; - if (options.oneofs) - object.idType = "id"; - } - if (message.name != null && message.hasOwnProperty("name")) { - object.name = message.name; - if (options.oneofs) - object.idType = "name"; - } - return object; - }; - - /** - * Converts this PathElement to JSON. - * @function toJSON - * @memberof google.datastore.v1.Key.PathElement - * @instance - * @returns {Object.} JSON object - */ - PathElement.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PathElement - * @function getTypeUrl - * @memberof google.datastore.v1.Key.PathElement - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PathElement.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.Key.PathElement"; - }; - - return PathElement; - })(); - - return Key; - })(); - - v1.ArrayValue = (function() { - - /** - * Properties of an ArrayValue. - * @memberof google.datastore.v1 - * @interface IArrayValue - * @property {Array.|null} [values] ArrayValue values - */ - - /** - * Constructs a new ArrayValue. - * @memberof google.datastore.v1 - * @classdesc Represents an ArrayValue. - * @implements IArrayValue - * @constructor - * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set - */ - function ArrayValue(properties) { - this.values = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ArrayValue values. - * @member {Array.} values - * @memberof google.datastore.v1.ArrayValue - * @instance - */ - ArrayValue.prototype.values = $util.emptyArray; + } + return message; + }; /** - * Creates a new ArrayValue instance using the specified properties. - * @function create - * @memberof google.datastore.v1.ArrayValue + * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.GqlQueryParameter * @static - * @param {google.datastore.v1.IArrayValue=} [properties] Properties to set - * @returns {google.datastore.v1.ArrayValue} ArrayValue instance + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ArrayValue.create = function create(properties) { - return new ArrayValue(properties); + GqlQueryParameter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); }; /** - * Encodes the specified ArrayValue message. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.ArrayValue - * @static - * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ArrayValue.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.values != null && message.values.length) - for (var i = 0; i < message.values.length; ++i) - $root.google.datastore.v1.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link google.datastore.v1.ArrayValue.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.ArrayValue - * @static - * @param {google.datastore.v1.IArrayValue} message ArrayValue message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ArrayValue.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an ArrayValue message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.ArrayValue - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ArrayValue} ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ArrayValue.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ArrayValue(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.values && message.values.length)) - message.values = []; - message.values.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an ArrayValue message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.ArrayValue - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ArrayValue} ArrayValue - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ArrayValue.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an ArrayValue message. + * Verifies a GqlQueryParameter message. * @function verify - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.GqlQueryParameter * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ArrayValue.verify = function verify(message) { + GqlQueryParameter.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.values != null && message.hasOwnProperty("values")) { - if (!Array.isArray(message.values)) - return "values: array expected"; - for (var i = 0; i < message.values.length; ++i) { - var error = $root.google.datastore.v1.Value.verify(message.values[i]); + var properties = {}; + if (message.value != null && message.hasOwnProperty("value")) { + properties.parameterType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.value); if (error) - return "values." + error; + return "value." + error; } } + if (message.cursor != null && message.hasOwnProperty("cursor")) { + if (properties.parameterType === 1) + return "parameterType: multiple values"; + properties.parameterType = 1; + if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) + return "cursor: buffer expected"; + } return null; }; /** - * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types. + * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.GqlQueryParameter * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.ArrayValue} ArrayValue + * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter */ - ArrayValue.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ArrayValue) + GqlQueryParameter.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.GqlQueryParameter) return object; - var message = new $root.google.datastore.v1.ArrayValue(); - if (object.values) { - if (!Array.isArray(object.values)) - throw TypeError(".google.datastore.v1.ArrayValue.values: array expected"); - message.values = []; - for (var i = 0; i < object.values.length; ++i) { - if (typeof object.values[i] !== "object") - throw TypeError(".google.datastore.v1.ArrayValue.values: object expected"); - message.values[i] = $root.google.datastore.v1.Value.fromObject(object.values[i]); - } + var message = new $root.google.datastore.v1.GqlQueryParameter(); + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.datastore.v1.GqlQueryParameter.value: object expected"); + message.value = $root.google.datastore.v1.Value.fromObject(object.value); } + if (object.cursor != null) + if (typeof object.cursor === "string") + $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); + else if (object.cursor.length >= 0) + message.cursor = object.cursor; return message; }; /** - * Creates a plain object from an ArrayValue message. Also converts values to other types if specified. + * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.GqlQueryParameter * @static - * @param {google.datastore.v1.ArrayValue} message ArrayValue + * @param {google.datastore.v1.GqlQueryParameter} message GqlQueryParameter * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ArrayValue.toObject = function toObject(message, options) { + GqlQueryParameter.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.values = []; - if (message.values && message.values.length) { - object.values = []; - for (var j = 0; j < message.values.length; ++j) - object.values[j] = $root.google.datastore.v1.Value.toObject(message.values[j], options); + if (message.value != null && message.hasOwnProperty("value")) { + object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + if (options.oneofs) + object.parameterType = "value"; + } + if (message.cursor != null && message.hasOwnProperty("cursor")) { + object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (options.oneofs) + object.parameterType = "cursor"; } return object; }; /** - * Converts this ArrayValue to JSON. + * Converts this GqlQueryParameter to JSON. * @function toJSON - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.GqlQueryParameter * @instance * @returns {Object.} JSON object */ - ArrayValue.prototype.toJSON = function toJSON() { + GqlQueryParameter.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for ArrayValue + * Gets the default type url for GqlQueryParameter * @function getTypeUrl - * @memberof google.datastore.v1.ArrayValue + * @memberof google.datastore.v1.GqlQueryParameter * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - ArrayValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + GqlQueryParameter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.ArrayValue"; + return typeUrlPrefix + "/google.datastore.v1.GqlQueryParameter"; }; - return ArrayValue; + return GqlQueryParameter; })(); - v1.Value = (function() { + v1.QueryResultBatch = (function() { /** - * Properties of a Value. + * Properties of a QueryResultBatch. * @memberof google.datastore.v1 - * @interface IValue - * @property {google.protobuf.NullValue|null} [nullValue] Value nullValue - * @property {boolean|null} [booleanValue] Value booleanValue - * @property {number|Long|null} [integerValue] Value integerValue - * @property {number|null} [doubleValue] Value doubleValue - * @property {google.protobuf.ITimestamp|null} [timestampValue] Value timestampValue - * @property {google.datastore.v1.IKey|null} [keyValue] Value keyValue - * @property {string|null} [stringValue] Value stringValue - * @property {Uint8Array|null} [blobValue] Value blobValue - * @property {google.type.ILatLng|null} [geoPointValue] Value geoPointValue - * @property {google.datastore.v1.IEntity|null} [entityValue] Value entityValue - * @property {google.datastore.v1.IArrayValue|null} [arrayValue] Value arrayValue - * @property {number|null} [meaning] Value meaning - * @property {boolean|null} [excludeFromIndexes] Value excludeFromIndexes + * @interface IQueryResultBatch + * @property {number|null} [skippedResults] QueryResultBatch skippedResults + * @property {Uint8Array|null} [skippedCursor] QueryResultBatch skippedCursor + * @property {google.datastore.v1.EntityResult.ResultType|null} [entityResultType] QueryResultBatch entityResultType + * @property {Array.|null} [entityResults] QueryResultBatch entityResults + * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor + * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults + * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion + * @property {google.protobuf.ITimestamp|null} [readTime] QueryResultBatch readTime */ /** - * Constructs a new Value. + * Constructs a new QueryResultBatch. * @memberof google.datastore.v1 - * @classdesc Represents a Value. - * @implements IValue + * @classdesc Represents a QueryResultBatch. + * @implements IQueryResultBatch * @constructor - * @param {google.datastore.v1.IValue=} [properties] Properties to set + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set */ - function Value(properties) { + function QueryResultBatch(properties) { + this.entityResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -13033,257 +12655,176 @@ } /** - * Value nullValue. - * @member {google.protobuf.NullValue|null|undefined} nullValue - * @memberof google.datastore.v1.Value + * QueryResultBatch skippedResults. + * @member {number} skippedResults + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.nullValue = null; + QueryResultBatch.prototype.skippedResults = 0; /** - * Value booleanValue. - * @member {boolean|null|undefined} booleanValue - * @memberof google.datastore.v1.Value + * QueryResultBatch skippedCursor. + * @member {Uint8Array} skippedCursor + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.booleanValue = null; + QueryResultBatch.prototype.skippedCursor = $util.newBuffer([]); /** - * Value integerValue. - * @member {number|Long|null|undefined} integerValue - * @memberof google.datastore.v1.Value + * QueryResultBatch entityResultType. + * @member {google.datastore.v1.EntityResult.ResultType} entityResultType + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.integerValue = null; + QueryResultBatch.prototype.entityResultType = 0; /** - * Value doubleValue. - * @member {number|null|undefined} doubleValue - * @memberof google.datastore.v1.Value + * QueryResultBatch entityResults. + * @member {Array.} entityResults + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.doubleValue = null; + QueryResultBatch.prototype.entityResults = $util.emptyArray; /** - * Value timestampValue. - * @member {google.protobuf.ITimestamp|null|undefined} timestampValue - * @memberof google.datastore.v1.Value + * QueryResultBatch endCursor. + * @member {Uint8Array} endCursor + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.timestampValue = null; + QueryResultBatch.prototype.endCursor = $util.newBuffer([]); /** - * Value keyValue. - * @member {google.datastore.v1.IKey|null|undefined} keyValue - * @memberof google.datastore.v1.Value + * QueryResultBatch moreResults. + * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.keyValue = null; - - /** - * Value stringValue. - * @member {string|null|undefined} stringValue - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.stringValue = null; - - /** - * Value blobValue. - * @member {Uint8Array|null|undefined} blobValue - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.blobValue = null; - - /** - * Value geoPointValue. - * @member {google.type.ILatLng|null|undefined} geoPointValue - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.geoPointValue = null; - - /** - * Value entityValue. - * @member {google.datastore.v1.IEntity|null|undefined} entityValue - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.entityValue = null; - - /** - * Value arrayValue. - * @member {google.datastore.v1.IArrayValue|null|undefined} arrayValue - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.arrayValue = null; - - /** - * Value meaning. - * @member {number} meaning - * @memberof google.datastore.v1.Value - * @instance - */ - Value.prototype.meaning = 0; + QueryResultBatch.prototype.moreResults = 0; /** - * Value excludeFromIndexes. - * @member {boolean} excludeFromIndexes - * @memberof google.datastore.v1.Value + * QueryResultBatch snapshotVersion. + * @member {number|Long} snapshotVersion + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Value.prototype.excludeFromIndexes = false; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * Value valueType. - * @member {"nullValue"|"booleanValue"|"integerValue"|"doubleValue"|"timestampValue"|"keyValue"|"stringValue"|"blobValue"|"geoPointValue"|"entityValue"|"arrayValue"|undefined} valueType - * @memberof google.datastore.v1.Value + * QueryResultBatch readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.QueryResultBatch * @instance */ - Object.defineProperty(Value.prototype, "valueType", { - get: $util.oneOfGetter($oneOfFields = ["nullValue", "booleanValue", "integerValue", "doubleValue", "timestampValue", "keyValue", "stringValue", "blobValue", "geoPointValue", "entityValue", "arrayValue"]), - set: $util.oneOfSetter($oneOfFields) - }); + QueryResultBatch.prototype.readTime = null; /** - * Creates a new Value instance using the specified properties. + * Creates a new QueryResultBatch instance using the specified properties. * @function create - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static - * @param {google.datastore.v1.IValue=} [properties] Properties to set - * @returns {google.datastore.v1.Value} Value instance + * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch instance */ - Value.create = function create(properties) { - return new Value(properties); + QueryResultBatch.create = function create(properties) { + return new QueryResultBatch(properties); }; /** - * Encodes the specified Value message. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static - * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encode = function encode(message, writer) { + QueryResultBatch.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.booleanValue != null && Object.hasOwnProperty.call(message, "booleanValue")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.booleanValue); - if (message.integerValue != null && Object.hasOwnProperty.call(message, "integerValue")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.integerValue); - if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) - writer.uint32(/* id 3, wireType 1 =*/25).double(message.doubleValue); - if (message.keyValue != null && Object.hasOwnProperty.call(message, "keyValue")) - $root.google.datastore.v1.Key.encode(message.keyValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.entityValue != null && Object.hasOwnProperty.call(message, "entityValue")) - $root.google.datastore.v1.Entity.encode(message.entityValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.geoPointValue != null && Object.hasOwnProperty.call(message, "geoPointValue")) - $root.google.type.LatLng.encode(message.geoPointValue, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - if (message.arrayValue != null && Object.hasOwnProperty.call(message, "arrayValue")) - $root.google.datastore.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.timestampValue != null && Object.hasOwnProperty.call(message, "timestampValue")) - $root.google.protobuf.Timestamp.encode(message.timestampValue, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); - if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.nullValue); - if (message.meaning != null && Object.hasOwnProperty.call(message, "meaning")) - writer.uint32(/* id 14, wireType 0 =*/112).int32(message.meaning); - if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) - writer.uint32(/* id 17, wireType 2 =*/138).string(message.stringValue); - if (message.blobValue != null && Object.hasOwnProperty.call(message, "blobValue")) - writer.uint32(/* id 18, wireType 2 =*/146).bytes(message.blobValue); - if (message.excludeFromIndexes != null && Object.hasOwnProperty.call(message, "excludeFromIndexes")) - writer.uint32(/* id 19, wireType 0 =*/152).bool(message.excludeFromIndexes); + if (message.entityResultType != null && Object.hasOwnProperty.call(message, "entityResultType")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); + if (message.entityResults != null && message.entityResults.length) + for (var i = 0; i < message.entityResults.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.skippedCursor != null && Object.hasOwnProperty.call(message, "skippedCursor")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); + if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); + if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); + if (message.skippedResults != null && Object.hasOwnProperty.call(message, "skippedResults")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); + if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) + writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; /** - * Encodes the specified Value message, length delimited. Does not implicitly {@link google.datastore.v1.Value.verify|verify} messages. + * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static - * @param {google.datastore.v1.IValue} message Value message or plain object to encode + * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encodeDelimited = function encodeDelimited(message, writer) { + QueryResultBatch.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Value message from the specified reader or buffer. + * Decodes a QueryResultBatch message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decode = function decode(reader, length) { + QueryResultBatch.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Value(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryResultBatch(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 11: { - message.nullValue = reader.int32(); + case 6: { + message.skippedResults = reader.int32(); break; } - case 1: { - message.booleanValue = reader.bool(); + case 3: { + message.skippedCursor = reader.bytes(); break; } - case 2: { - message.integerValue = reader.int64(); + case 1: { + message.entityResultType = reader.int32(); break; } - case 3: { - message.doubleValue = reader.double(); + case 2: { + if (!(message.entityResults && message.entityResults.length)) + message.entityResults = []; + message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); break; } - case 10: { - message.timestampValue = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + case 4: { + message.endCursor = reader.bytes(); break; } case 5: { - message.keyValue = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - } - case 17: { - message.stringValue = reader.string(); + message.moreResults = reader.int32(); break; } - case 18: { - message.blobValue = reader.bytes(); + case 7: { + message.snapshotVersion = reader.int64(); break; } case 8: { - message.geoPointValue = $root.google.type.LatLng.decode(reader, reader.uint32()); - break; - } - case 6: { - message.entityValue = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); - break; - } - case 9: { - message.arrayValue = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); - break; - } - case 14: { - message.meaning = reader.int32(); - break; - } - case 19: { - message.excludeFromIndexes = reader.bool(); + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } default: @@ -13295,730 +12836,729 @@ }; /** - * Decodes a Value message from the specified reader or buffer, length delimited. + * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Value.decodeDelimited = function decodeDelimited(reader) { + QueryResultBatch.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Value message. + * Verifies a QueryResultBatch message. * @function verify - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Value.verify = function verify(message) { + QueryResultBatch.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - properties.valueType = 1; - switch (message.nullValue) { + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + if (!$util.isInteger(message.skippedResults)) + return "skippedResults: integer expected"; + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + if (!(message.skippedCursor && typeof message.skippedCursor.length === "number" || $util.isString(message.skippedCursor))) + return "skippedCursor: buffer expected"; + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + switch (message.entityResultType) { default: - return "nullValue: enum value expected"; + return "entityResultType: enum value expected"; case 0: + case 1: + case 2: + case 3: break; } + if (message.entityResults != null && message.hasOwnProperty("entityResults")) { + if (!Array.isArray(message.entityResults)) + return "entityResults: array expected"; + for (var i = 0; i < message.entityResults.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.entityResults[i]); + if (error) + return "entityResults." + error; + } } - if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (typeof message.booleanValue !== "boolean") - return "booleanValue: boolean expected"; - } - if (message.integerValue != null && message.hasOwnProperty("integerValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!$util.isInteger(message.integerValue) && !(message.integerValue && $util.isInteger(message.integerValue.low) && $util.isInteger(message.integerValue.high))) - return "integerValue: integer|Long expected"; - } - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (typeof message.doubleValue !== "number") - return "doubleValue: number expected"; - } - if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.timestampValue); - if (error) - return "timestampValue." + error; - } - } - if (message.keyValue != null && message.hasOwnProperty("keyValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.Key.verify(message.keyValue); - if (error) - return "keyValue." + error; - } - } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!$util.isString(message.stringValue)) - return "stringValue: string expected"; - } - if (message.blobValue != null && message.hasOwnProperty("blobValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (!(message.blobValue && typeof message.blobValue.length === "number" || $util.isString(message.blobValue))) - return "blobValue: buffer expected"; - } - if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.type.LatLng.verify(message.geoPointValue); - if (error) - return "geoPointValue." + error; - } - } - if (message.entityValue != null && message.hasOwnProperty("entityValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.Entity.verify(message.entityValue); - if (error) - return "entityValue." + error; - } - } - if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.datastore.v1.ArrayValue.verify(message.arrayValue); - if (error) - return "arrayValue." + error; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) + return "endCursor: buffer expected"; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + switch (message.moreResults) { + default: + return "moreResults: enum value expected"; + case 0: + case 1: + case 2: + case 4: + case 3: + break; } + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) + return "snapshotVersion: integer|Long expected"; + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; } - if (message.meaning != null && message.hasOwnProperty("meaning")) - if (!$util.isInteger(message.meaning)) - return "meaning: integer expected"; - if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) - if (typeof message.excludeFromIndexes !== "boolean") - return "excludeFromIndexes: boolean expected"; return null; }; /** - * Creates a Value message from a plain object. Also converts values to their respective internal types. + * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Value} Value + * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch */ - Value.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Value) + QueryResultBatch.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.QueryResultBatch) return object; - var message = new $root.google.datastore.v1.Value(); - switch (object.nullValue) { - case "NULL_VALUE": + var message = new $root.google.datastore.v1.QueryResultBatch(); + if (object.skippedResults != null) + message.skippedResults = object.skippedResults | 0; + if (object.skippedCursor != null) + if (typeof object.skippedCursor === "string") + $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); + else if (object.skippedCursor.length >= 0) + message.skippedCursor = object.skippedCursor; + switch (object.entityResultType) { + case "RESULT_TYPE_UNSPECIFIED": case 0: - message.nullValue = 0; + message.entityResultType = 0; + break; + case "FULL": + case 1: + message.entityResultType = 1; + break; + case "PROJECTION": + case 2: + message.entityResultType = 2; + break; + case "KEY_ONLY": + case 3: + message.entityResultType = 3; break; } - if (object.booleanValue != null) - message.booleanValue = Boolean(object.booleanValue); - if (object.integerValue != null) - if ($util.Long) - (message.integerValue = $util.Long.fromValue(object.integerValue)).unsigned = false; - else if (typeof object.integerValue === "string") - message.integerValue = parseInt(object.integerValue, 10); - else if (typeof object.integerValue === "number") - message.integerValue = object.integerValue; - else if (typeof object.integerValue === "object") - message.integerValue = new $util.LongBits(object.integerValue.low >>> 0, object.integerValue.high >>> 0).toNumber(); - if (object.doubleValue != null) - message.doubleValue = Number(object.doubleValue); - if (object.timestampValue != null) { - if (typeof object.timestampValue !== "object") - throw TypeError(".google.datastore.v1.Value.timestampValue: object expected"); - message.timestampValue = $root.google.protobuf.Timestamp.fromObject(object.timestampValue); - } - if (object.keyValue != null) { - if (typeof object.keyValue !== "object") - throw TypeError(".google.datastore.v1.Value.keyValue: object expected"); - message.keyValue = $root.google.datastore.v1.Key.fromObject(object.keyValue); - } - if (object.stringValue != null) - message.stringValue = String(object.stringValue); - if (object.blobValue != null) - if (typeof object.blobValue === "string") - $util.base64.decode(object.blobValue, message.blobValue = $util.newBuffer($util.base64.length(object.blobValue)), 0); - else if (object.blobValue.length >= 0) - message.blobValue = object.blobValue; - if (object.geoPointValue != null) { - if (typeof object.geoPointValue !== "object") - throw TypeError(".google.datastore.v1.Value.geoPointValue: object expected"); - message.geoPointValue = $root.google.type.LatLng.fromObject(object.geoPointValue); + if (object.entityResults) { + if (!Array.isArray(object.entityResults)) + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: array expected"); + message.entityResults = []; + for (var i = 0; i < object.entityResults.length; ++i) { + if (typeof object.entityResults[i] !== "object") + throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: object expected"); + message.entityResults[i] = $root.google.datastore.v1.EntityResult.fromObject(object.entityResults[i]); + } } - if (object.entityValue != null) { - if (typeof object.entityValue !== "object") - throw TypeError(".google.datastore.v1.Value.entityValue: object expected"); - message.entityValue = $root.google.datastore.v1.Entity.fromObject(object.entityValue); + if (object.endCursor != null) + if (typeof object.endCursor === "string") + $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); + else if (object.endCursor.length >= 0) + message.endCursor = object.endCursor; + switch (object.moreResults) { + case "MORE_RESULTS_TYPE_UNSPECIFIED": + case 0: + message.moreResults = 0; + break; + case "NOT_FINISHED": + case 1: + message.moreResults = 1; + break; + case "MORE_RESULTS_AFTER_LIMIT": + case 2: + message.moreResults = 2; + break; + case "MORE_RESULTS_AFTER_CURSOR": + case 4: + message.moreResults = 4; + break; + case "NO_MORE_RESULTS": + case 3: + message.moreResults = 3; + break; } - if (object.arrayValue != null) { - if (typeof object.arrayValue !== "object") - throw TypeError(".google.datastore.v1.Value.arrayValue: object expected"); - message.arrayValue = $root.google.datastore.v1.ArrayValue.fromObject(object.arrayValue); + if (object.snapshotVersion != null) + if ($util.Long) + (message.snapshotVersion = $util.Long.fromValue(object.snapshotVersion)).unsigned = false; + else if (typeof object.snapshotVersion === "string") + message.snapshotVersion = parseInt(object.snapshotVersion, 10); + else if (typeof object.snapshotVersion === "number") + message.snapshotVersion = object.snapshotVersion; + else if (typeof object.snapshotVersion === "object") + message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.QueryResultBatch.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); } - if (object.meaning != null) - message.meaning = object.meaning | 0; - if (object.excludeFromIndexes != null) - message.excludeFromIndexes = Boolean(object.excludeFromIndexes); return message; }; /** - * Creates a plain object from a Value message. Also converts values to other types if specified. + * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static - * @param {google.datastore.v1.Value} message Value + * @param {google.datastore.v1.QueryResultBatch} message QueryResultBatch * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Value.toObject = function toObject(message, options) { + QueryResultBatch.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.entityResults = []; if (options.defaults) { - object.meaning = 0; - object.excludeFromIndexes = false; - } - if (message.booleanValue != null && message.hasOwnProperty("booleanValue")) { - object.booleanValue = message.booleanValue; - if (options.oneofs) - object.valueType = "booleanValue"; - } - if (message.integerValue != null && message.hasOwnProperty("integerValue")) { - if (typeof message.integerValue === "number") - object.integerValue = options.longs === String ? String(message.integerValue) : message.integerValue; - else - object.integerValue = options.longs === String ? $util.Long.prototype.toString.call(message.integerValue) : options.longs === Number ? new $util.LongBits(message.integerValue.low >>> 0, message.integerValue.high >>> 0).toNumber() : message.integerValue; - if (options.oneofs) - object.valueType = "integerValue"; - } - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) { - object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; - if (options.oneofs) - object.valueType = "doubleValue"; - } - if (message.keyValue != null && message.hasOwnProperty("keyValue")) { - object.keyValue = $root.google.datastore.v1.Key.toObject(message.keyValue, options); - if (options.oneofs) - object.valueType = "keyValue"; - } - if (message.entityValue != null && message.hasOwnProperty("entityValue")) { - object.entityValue = $root.google.datastore.v1.Entity.toObject(message.entityValue, options); - if (options.oneofs) - object.valueType = "entityValue"; - } - if (message.geoPointValue != null && message.hasOwnProperty("geoPointValue")) { - object.geoPointValue = $root.google.type.LatLng.toObject(message.geoPointValue, options); - if (options.oneofs) - object.valueType = "geoPointValue"; - } - if (message.arrayValue != null && message.hasOwnProperty("arrayValue")) { - object.arrayValue = $root.google.datastore.v1.ArrayValue.toObject(message.arrayValue, options); - if (options.oneofs) - object.valueType = "arrayValue"; - } - if (message.timestampValue != null && message.hasOwnProperty("timestampValue")) { - object.timestampValue = $root.google.protobuf.Timestamp.toObject(message.timestampValue, options); - if (options.oneofs) - object.valueType = "timestampValue"; - } - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; - if (options.oneofs) - object.valueType = "nullValue"; - } - if (message.meaning != null && message.hasOwnProperty("meaning")) - object.meaning = message.meaning; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { - object.stringValue = message.stringValue; - if (options.oneofs) - object.valueType = "stringValue"; + object.entityResultType = options.enums === String ? "RESULT_TYPE_UNSPECIFIED" : 0; + if (options.bytes === String) + object.skippedCursor = ""; + else { + object.skippedCursor = []; + if (options.bytes !== Array) + object.skippedCursor = $util.newBuffer(object.skippedCursor); + } + if (options.bytes === String) + object.endCursor = ""; + else { + object.endCursor = []; + if (options.bytes !== Array) + object.endCursor = $util.newBuffer(object.endCursor); + } + object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; + object.skippedResults = 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.snapshotVersion = options.longs === String ? "0" : 0; + object.readTime = null; } - if (message.blobValue != null && message.hasOwnProperty("blobValue")) { - object.blobValue = options.bytes === String ? $util.base64.encode(message.blobValue, 0, message.blobValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.blobValue) : message.blobValue; - if (options.oneofs) - object.valueType = "blobValue"; + if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) + object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; + if (message.entityResults && message.entityResults.length) { + object.entityResults = []; + for (var j = 0; j < message.entityResults.length; ++j) + object.entityResults[j] = $root.google.datastore.v1.EntityResult.toObject(message.entityResults[j], options); } - if (message.excludeFromIndexes != null && message.hasOwnProperty("excludeFromIndexes")) - object.excludeFromIndexes = message.excludeFromIndexes; + if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) + object.skippedCursor = options.bytes === String ? $util.base64.encode(message.skippedCursor, 0, message.skippedCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.skippedCursor) : message.skippedCursor; + if (message.endCursor != null && message.hasOwnProperty("endCursor")) + object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; + if (message.moreResults != null && message.hasOwnProperty("moreResults")) + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) + object.skippedResults = message.skippedResults; + if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) + if (typeof message.snapshotVersion === "number") + object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; + else + object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; }; /** - * Converts this Value to JSON. + * Converts this QueryResultBatch to JSON. * @function toJSON - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @instance * @returns {Object.} JSON object */ - Value.prototype.toJSON = function toJSON() { + QueryResultBatch.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Value + * Gets the default type url for QueryResultBatch * @function getTypeUrl - * @memberof google.datastore.v1.Value + * @memberof google.datastore.v1.QueryResultBatch * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + QueryResultBatch.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Value"; + return typeUrlPrefix + "/google.datastore.v1.QueryResultBatch"; }; - return Value; + /** + * MoreResultsType enum. + * @name google.datastore.v1.QueryResultBatch.MoreResultsType + * @enum {number} + * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value + * @property {number} NOT_FINISHED=1 NOT_FINISHED value + * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value + * @property {number} MORE_RESULTS_AFTER_CURSOR=4 MORE_RESULTS_AFTER_CURSOR value + * @property {number} NO_MORE_RESULTS=3 NO_MORE_RESULTS value + */ + QueryResultBatch.MoreResultsType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MORE_RESULTS_TYPE_UNSPECIFIED"] = 0; + values[valuesById[1] = "NOT_FINISHED"] = 1; + values[valuesById[2] = "MORE_RESULTS_AFTER_LIMIT"] = 2; + values[valuesById[4] = "MORE_RESULTS_AFTER_CURSOR"] = 4; + values[valuesById[3] = "NO_MORE_RESULTS"] = 3; + return values; + })(); + + return QueryResultBatch; })(); - v1.Entity = (function() { + v1.Datastore = (function() { /** - * Properties of an Entity. + * Constructs a new Datastore service. * @memberof google.datastore.v1 - * @interface IEntity - * @property {google.datastore.v1.IKey|null} [key] Entity key - * @property {Object.|null} [properties] Entity properties + * @classdesc Represents a Datastore + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited */ + function Datastore(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (Datastore.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = Datastore; /** - * Constructs a new Entity. - * @memberof google.datastore.v1 - * @classdesc Represents an Entity. - * @implements IEntity - * @constructor - * @param {google.datastore.v1.IEntity=} [properties] Properties to set + * Creates new Datastore service using the specified rpc implementation. + * @function create + * @memberof google.datastore.v1.Datastore + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {Datastore} RPC service. Useful where requests and/or responses are streamed. */ - function Entity(properties) { - this.properties = {}; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + Datastore.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; /** - * Entity key. - * @member {google.datastore.v1.IKey|null|undefined} key - * @memberof google.datastore.v1.Entity - * @instance + * Callback as used by {@link google.datastore.v1.Datastore|lookup}. + * @memberof google.datastore.v1.Datastore + * @typedef LookupCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.LookupResponse} [response] LookupResponse */ - Entity.prototype.key = null; /** - * Entity properties. - * @member {Object.} properties - * @memberof google.datastore.v1.Entity + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @param {google.datastore.v1.Datastore.LookupCallback} callback Node-style callback called with the error, if any, and LookupResponse + * @returns {undefined} + * @variation 1 */ - Entity.prototype.properties = $util.emptyObject; + Object.defineProperty(Datastore.prototype.lookup = function lookup(request, callback) { + return this.rpcCall(lookup, $root.google.datastore.v1.LookupRequest, $root.google.datastore.v1.LookupResponse, request, callback); + }, "name", { value: "Lookup" }); /** - * Creates a new Entity instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Entity - * @static - * @param {google.datastore.v1.IEntity=} [properties] Properties to set - * @returns {google.datastore.v1.Entity} Entity instance + * Calls Lookup. + * @function lookup + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.ILookupRequest} request LookupRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - Entity.create = function create(properties) { - return new Entity(properties); - }; /** - * Encodes the specified Entity message. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.Entity - * @static - * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Callback as used by {@link google.datastore.v1.Datastore|runQuery}. + * @memberof google.datastore.v1.Datastore + * @typedef RunQueryCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RunQueryResponse} [response] RunQueryResponse */ - Entity.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.properties != null && Object.hasOwnProperty.call(message, "properties")) - for (var keys = Object.keys(message.properties), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.datastore.v1.Value.encode(message.properties[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } - return writer; - }; /** - * Encodes the specified Entity message, length delimited. Does not implicitly {@link google.datastore.v1.Entity.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.Entity - * @static - * @param {google.datastore.v1.IEntity} message Entity message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @param {google.datastore.v1.Datastore.RunQueryCallback} callback Node-style callback called with the error, if any, and RunQueryResponse + * @returns {undefined} + * @variation 1 */ - Entity.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + Object.defineProperty(Datastore.prototype.runQuery = function runQuery(request, callback) { + return this.rpcCall(runQuery, $root.google.datastore.v1.RunQueryRequest, $root.google.datastore.v1.RunQueryResponse, request, callback); + }, "name", { value: "RunQuery" }); /** - * Decodes an Entity message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.Entity - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Entity} Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Calls RunQuery. + * @function runQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunQueryRequest} request RunQueryRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - Entity.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Entity(), key, value; - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); - break; - } - case 3: { - if (message.properties === $util.emptyObject) - message.properties = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = null; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag2 & 7); - break; - } - } - message.properties[key] = value; - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; /** - * Decodes an Entity message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.Entity - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Entity} Entity - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * Callback as used by {@link google.datastore.v1.Datastore|runAggregationQuery}. + * @memberof google.datastore.v1.Datastore + * @typedef RunAggregationQueryCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RunAggregationQueryResponse} [response] RunAggregationQueryResponse */ - Entity.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; /** - * Verifies an Entity message. - * @function verify - * @memberof google.datastore.v1.Entity - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * Calls RunAggregationQuery. + * @function runAggregationQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunAggregationQueryRequest} request RunAggregationQueryRequest message or plain object + * @param {google.datastore.v1.Datastore.RunAggregationQueryCallback} callback Node-style callback called with the error, if any, and RunAggregationQueryResponse + * @returns {undefined} + * @variation 1 */ - Entity.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) { - var error = $root.google.datastore.v1.Key.verify(message.key); - if (error) - return "key." + error; - } - if (message.properties != null && message.hasOwnProperty("properties")) { - if (!$util.isObject(message.properties)) - return "properties: object expected"; - var key = Object.keys(message.properties); - for (var i = 0; i < key.length; ++i) { - var error = $root.google.datastore.v1.Value.verify(message.properties[key[i]]); - if (error) - return "properties." + error; - } - } - return null; - }; + Object.defineProperty(Datastore.prototype.runAggregationQuery = function runAggregationQuery(request, callback) { + return this.rpcCall(runAggregationQuery, $root.google.datastore.v1.RunAggregationQueryRequest, $root.google.datastore.v1.RunAggregationQueryResponse, request, callback); + }, "name", { value: "RunAggregationQuery" }); /** - * Creates an Entity message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.Entity - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.Entity} Entity + * Calls RunAggregationQuery. + * @function runAggregationQuery + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRunAggregationQueryRequest} request RunAggregationQueryRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - Entity.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Entity) - return object; - var message = new $root.google.datastore.v1.Entity(); - if (object.key != null) { - if (typeof object.key !== "object") - throw TypeError(".google.datastore.v1.Entity.key: object expected"); - message.key = $root.google.datastore.v1.Key.fromObject(object.key); - } - if (object.properties) { - if (typeof object.properties !== "object") - throw TypeError(".google.datastore.v1.Entity.properties: object expected"); - message.properties = {}; - for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) { - if (typeof object.properties[keys[i]] !== "object") - throw TypeError(".google.datastore.v1.Entity.properties: object expected"); - message.properties[keys[i]] = $root.google.datastore.v1.Value.fromObject(object.properties[keys[i]]); - } - } - return message; - }; /** - * Creates a plain object from an Entity message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.Entity - * @static - * @param {google.datastore.v1.Entity} message Entity - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object + * Callback as used by {@link google.datastore.v1.Datastore|beginTransaction}. + * @memberof google.datastore.v1.Datastore + * @typedef BeginTransactionCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.BeginTransactionResponse} [response] BeginTransactionResponse */ - Entity.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.objects || options.defaults) - object.properties = {}; - if (options.defaults) - object.key = null; - if (message.key != null && message.hasOwnProperty("key")) - object.key = $root.google.datastore.v1.Key.toObject(message.key, options); - var keys2; - if (message.properties && (keys2 = Object.keys(message.properties)).length) { - object.properties = {}; - for (var j = 0; j < keys2.length; ++j) - object.properties[keys2[j]] = $root.google.datastore.v1.Value.toObject(message.properties[keys2[j]], options); - } - return object; - }; /** - * Converts this Entity to JSON. - * @function toJSON - * @memberof google.datastore.v1.Entity + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore * @instance - * @returns {Object.} JSON object - */ - Entity.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for Entity - * @function getTypeUrl - * @memberof google.datastore.v1.Entity - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @param {google.datastore.v1.Datastore.BeginTransactionCallback} callback Node-style callback called with the error, if any, and BeginTransactionResponse + * @returns {undefined} + * @variation 1 */ - Entity.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.Entity"; - }; - - return Entity; - })(); - - v1.EntityResult = (function() { + Object.defineProperty(Datastore.prototype.beginTransaction = function beginTransaction(request, callback) { + return this.rpcCall(beginTransaction, $root.google.datastore.v1.BeginTransactionRequest, $root.google.datastore.v1.BeginTransactionResponse, request, callback); + }, "name", { value: "BeginTransaction" }); /** - * Properties of an EntityResult. - * @memberof google.datastore.v1 - * @interface IEntityResult - * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity - * @property {number|Long|null} [version] EntityResult version - * @property {google.protobuf.ITimestamp|null} [updateTime] EntityResult updateTime - * @property {Uint8Array|null} [cursor] EntityResult cursor + * Calls BeginTransaction. + * @function beginTransaction + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IBeginTransactionRequest} request BeginTransactionRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ /** - * Constructs a new EntityResult. - * @memberof google.datastore.v1 - * @classdesc Represents an EntityResult. - * @implements IEntityResult - * @constructor - * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set + * Callback as used by {@link google.datastore.v1.Datastore|commit}. + * @memberof google.datastore.v1.Datastore + * @typedef CommitCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.CommitResponse} [response] CommitResponse */ - function EntityResult(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } /** - * EntityResult entity. - * @member {google.datastore.v1.IEntity|null|undefined} entity - * @memberof google.datastore.v1.EntityResult + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @param {google.datastore.v1.Datastore.CommitCallback} callback Node-style callback called with the error, if any, and CommitResponse + * @returns {undefined} + * @variation 1 */ - EntityResult.prototype.entity = null; + Object.defineProperty(Datastore.prototype.commit = function commit(request, callback) { + return this.rpcCall(commit, $root.google.datastore.v1.CommitRequest, $root.google.datastore.v1.CommitResponse, request, callback); + }, "name", { value: "Commit" }); /** - * EntityResult version. - * @member {number|Long} version - * @memberof google.datastore.v1.EntityResult + * Calls Commit. + * @function commit + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.ICommitRequest} request CommitRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; /** - * EntityResult updateTime. - * @member {google.protobuf.ITimestamp|null|undefined} updateTime - * @memberof google.datastore.v1.EntityResult - * @instance + * Callback as used by {@link google.datastore.v1.Datastore|rollback}. + * @memberof google.datastore.v1.Datastore + * @typedef RollbackCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.RollbackResponse} [response] RollbackResponse */ - EntityResult.prototype.updateTime = null; /** - * EntityResult cursor. - * @member {Uint8Array} cursor - * @memberof google.datastore.v1.EntityResult + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @param {google.datastore.v1.Datastore.RollbackCallback} callback Node-style callback called with the error, if any, and RollbackResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.rollback = function rollback(request, callback) { + return this.rpcCall(rollback, $root.google.datastore.v1.RollbackRequest, $root.google.datastore.v1.RollbackResponse, request, callback); + }, "name", { value: "Rollback" }); + + /** + * Calls Rollback. + * @function rollback + * @memberof google.datastore.v1.Datastore * @instance + * @param {google.datastore.v1.IRollbackRequest} request RollbackRequest message or plain object + * @returns {Promise} Promise + * @variation 2 */ - EntityResult.prototype.cursor = $util.newBuffer([]); /** - * Creates a new EntityResult instance using the specified properties. + * Callback as used by {@link google.datastore.v1.Datastore|allocateIds}. + * @memberof google.datastore.v1.Datastore + * @typedef AllocateIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.AllocateIdsResponse} [response] AllocateIdsResponse + */ + + /** + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.AllocateIdsCallback} callback Node-style callback called with the error, if any, and AllocateIdsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.allocateIds = function allocateIds(request, callback) { + return this.rpcCall(allocateIds, $root.google.datastore.v1.AllocateIdsRequest, $root.google.datastore.v1.AllocateIdsResponse, request, callback); + }, "name", { value: "AllocateIds" }); + + /** + * Calls AllocateIds. + * @function allocateIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IAllocateIdsRequest} request AllocateIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.datastore.v1.Datastore|reserveIds}. + * @memberof google.datastore.v1.Datastore + * @typedef ReserveIdsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.datastore.v1.ReserveIdsResponse} [response] ReserveIdsResponse + */ + + /** + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @param {google.datastore.v1.Datastore.ReserveIdsCallback} callback Node-style callback called with the error, if any, and ReserveIdsResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Datastore.prototype.reserveIds = function reserveIds(request, callback) { + return this.rpcCall(reserveIds, $root.google.datastore.v1.ReserveIdsRequest, $root.google.datastore.v1.ReserveIdsResponse, request, callback); + }, "name", { value: "ReserveIds" }); + + /** + * Calls ReserveIds. + * @function reserveIds + * @memberof google.datastore.v1.Datastore + * @instance + * @param {google.datastore.v1.IReserveIdsRequest} request ReserveIdsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return Datastore; + })(); + + v1.LookupRequest = (function() { + + /** + * Properties of a LookupRequest. + * @memberof google.datastore.v1 + * @interface ILookupRequest + * @property {string|null} [projectId] LookupRequest projectId + * @property {string|null} [databaseId] LookupRequest databaseId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions + * @property {Array.|null} [keys] LookupRequest keys + */ + + /** + * Constructs a new LookupRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a LookupRequest. + * @implements ILookupRequest + * @constructor + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set + */ + function LookupRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LookupRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.projectId = ""; + + /** + * LookupRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.databaseId = ""; + + /** + * LookupRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.readOptions = null; + + /** + * LookupRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new LookupRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IEntityResult=} [properties] Properties to set - * @returns {google.datastore.v1.EntityResult} EntityResult instance + * @param {google.datastore.v1.ILookupRequest=} [properties] Properties to set + * @returns {google.datastore.v1.LookupRequest} LookupRequest instance */ - EntityResult.create = function create(properties) { - return new EntityResult(properties); + LookupRequest.create = function create(properties) { + return new LookupRequest(properties); }; /** - * Encodes the specified EntityResult message. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * Encodes the specified LookupRequest message. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EntityResult.encode = function encode(message, writer) { + LookupRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entity != null && Object.hasOwnProperty.call(message, "entity")) - $root.google.datastore.v1.Entity.encode(message.entity, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); - if (message.version != null && Object.hasOwnProperty.call(message, "version")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); - if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) - $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified EntityResult message, length delimited. Does not implicitly {@link google.datastore.v1.EntityResult.verify|verify} messages. + * Encodes the specified LookupRequest message, length delimited. Does not implicitly {@link google.datastore.v1.LookupRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.IEntityResult} message EntityResult message or plain object to encode + * @param {google.datastore.v1.ILookupRequest} message LookupRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EntityResult.encodeDelimited = function encodeDelimited(message, writer) { + LookupRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes an EntityResult message from the specified reader or buffer. + * Decodes a LookupRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.LookupRequest} LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EntityResult.decode = function decode(reader, length) { + LookupRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.EntityResult(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - message.entity = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + case 8: { + message.projectId = reader.string(); break; } - case 4: { - message.version = reader.int64(); + case 9: { + message.databaseId = reader.string(); break; } - case 5: { - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + case 1: { + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); break; } case 3: { - message.cursor = reader.bytes(); + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; } default: @@ -14030,210 +13570,176 @@ }; /** - * Decodes an EntityResult message from the specified reader or buffer, length delimited. + * Decodes a LookupRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.LookupRequest} LookupRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EntityResult.decodeDelimited = function decodeDelimited(reader) { + LookupRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies an EntityResult message. + * Verifies a LookupRequest message. * @function verify - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EntityResult.verify = function verify(message) { + LookupRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.entity != null && message.hasOwnProperty("entity")) { - var error = $root.google.datastore.v1.Entity.verify(message.entity); + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); if (error) - return "entity." + error; + return "readOptions." + error; } - if (message.version != null && message.hasOwnProperty("version")) - if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) - return "version: integer|Long expected"; - if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.updateTime); - if (error) - return "updateTime." + error; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } } - if (message.cursor != null && message.hasOwnProperty("cursor")) - if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) - return "cursor: buffer expected"; return null; }; /** - * Creates an EntityResult message from a plain object. Also converts values to their respective internal types. + * Creates a LookupRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.EntityResult} EntityResult + * @returns {google.datastore.v1.LookupRequest} LookupRequest */ - EntityResult.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.EntityResult) + LookupRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupRequest) return object; - var message = new $root.google.datastore.v1.EntityResult(); - if (object.entity != null) { - if (typeof object.entity !== "object") - throw TypeError(".google.datastore.v1.EntityResult.entity: object expected"); - message.entity = $root.google.datastore.v1.Entity.fromObject(object.entity); + var message = new $root.google.datastore.v1.LookupRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); } - if (object.version != null) - if ($util.Long) - (message.version = $util.Long.fromValue(object.version)).unsigned = false; - else if (typeof object.version === "string") - message.version = parseInt(object.version, 10); - else if (typeof object.version === "number") - message.version = object.version; - else if (typeof object.version === "object") - message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); - if (object.updateTime != null) { - if (typeof object.updateTime !== "object") - throw TypeError(".google.datastore.v1.EntityResult.updateTime: object expected"); - message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.LookupRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } } - if (object.cursor != null) - if (typeof object.cursor === "string") - $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length >= 0) - message.cursor = object.cursor; return message; }; /** - * Creates a plain object from an EntityResult message. Also converts values to other types if specified. + * Creates a plain object from a LookupRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static - * @param {google.datastore.v1.EntityResult} message EntityResult + * @param {google.datastore.v1.LookupRequest} message LookupRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EntityResult.toObject = function toObject(message, options) { + LookupRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.keys = []; if (options.defaults) { - object.entity = null; - if (options.bytes === String) - object.cursor = ""; - else { - object.cursor = []; - if (options.bytes !== Array) - object.cursor = $util.newBuffer(object.cursor); - } - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.version = options.longs === String ? "0" : 0; - object.updateTime = null; + object.readOptions = null; + object.projectId = ""; + object.databaseId = ""; } - if (message.entity != null && message.hasOwnProperty("entity")) - object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); - if (message.cursor != null && message.hasOwnProperty("cursor")) - object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; - if (message.version != null && message.hasOwnProperty("version")) - if (typeof message.version === "number") - object.version = options.longs === String ? String(message.version) : message.version; - else - object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; - if (message.updateTime != null && message.hasOwnProperty("updateTime")) - object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this EntityResult to JSON. + * Converts this LookupRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @instance * @returns {Object.} JSON object */ - EntityResult.prototype.toJSON = function toJSON() { + LookupRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for EntityResult + * Gets the default type url for LookupRequest * @function getTypeUrl - * @memberof google.datastore.v1.EntityResult + * @memberof google.datastore.v1.LookupRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - EntityResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + LookupRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.EntityResult"; + return typeUrlPrefix + "/google.datastore.v1.LookupRequest"; }; - /** - * ResultType enum. - * @name google.datastore.v1.EntityResult.ResultType - * @enum {number} - * @property {number} RESULT_TYPE_UNSPECIFIED=0 RESULT_TYPE_UNSPECIFIED value - * @property {number} FULL=1 FULL value - * @property {number} PROJECTION=2 PROJECTION value - * @property {number} KEY_ONLY=3 KEY_ONLY value - */ - EntityResult.ResultType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "RESULT_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "FULL"] = 1; - values[valuesById[2] = "PROJECTION"] = 2; - values[valuesById[3] = "KEY_ONLY"] = 3; - return values; - })(); - - return EntityResult; + return LookupRequest; })(); - v1.Query = (function() { + v1.LookupResponse = (function() { /** - * Properties of a Query. + * Properties of a LookupResponse. * @memberof google.datastore.v1 - * @interface IQuery - * @property {Array.|null} [projection] Query projection - * @property {Array.|null} [kind] Query kind - * @property {google.datastore.v1.IFilter|null} [filter] Query filter - * @property {Array.|null} [order] Query order - * @property {Array.|null} [distinctOn] Query distinctOn - * @property {Uint8Array|null} [startCursor] Query startCursor - * @property {Uint8Array|null} [endCursor] Query endCursor - * @property {number|null} [offset] Query offset - * @property {google.protobuf.IInt32Value|null} [limit] Query limit + * @interface ILookupResponse + * @property {Array.|null} [found] LookupResponse found + * @property {Array.|null} [missing] LookupResponse missing + * @property {Array.|null} [deferred] LookupResponse deferred + * @property {google.protobuf.ITimestamp|null} [readTime] LookupResponse readTime */ /** - * Constructs a new Query. + * Constructs a new LookupResponse. * @memberof google.datastore.v1 - * @classdesc Represents a Query. - * @implements IQuery + * @classdesc Represents a LookupResponse. + * @implements ILookupResponse * @constructor - * @param {google.datastore.v1.IQuery=} [properties] Properties to set + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set */ - function Query(properties) { - this.projection = []; - this.kind = []; - this.order = []; - this.distinctOn = []; + function LookupResponse(properties) { + this.found = []; + this.missing = []; + this.deferred = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -14241,199 +13747,126 @@ } /** - * Query projection. - * @member {Array.} projection - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.projection = $util.emptyArray; - - /** - * Query kind. - * @member {Array.} kind - * @memberof google.datastore.v1.Query + * LookupResponse found. + * @member {Array.} found + * @memberof google.datastore.v1.LookupResponse * @instance */ - Query.prototype.kind = $util.emptyArray; + LookupResponse.prototype.found = $util.emptyArray; /** - * Query filter. - * @member {google.datastore.v1.IFilter|null|undefined} filter - * @memberof google.datastore.v1.Query + * LookupResponse missing. + * @member {Array.} missing + * @memberof google.datastore.v1.LookupResponse * @instance */ - Query.prototype.filter = null; + LookupResponse.prototype.missing = $util.emptyArray; /** - * Query order. - * @member {Array.} order - * @memberof google.datastore.v1.Query + * LookupResponse deferred. + * @member {Array.} deferred + * @memberof google.datastore.v1.LookupResponse * @instance */ - Query.prototype.order = $util.emptyArray; + LookupResponse.prototype.deferred = $util.emptyArray; /** - * Query distinctOn. - * @member {Array.} distinctOn - * @memberof google.datastore.v1.Query + * LookupResponse readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.LookupResponse * @instance */ - Query.prototype.distinctOn = $util.emptyArray; + LookupResponse.prototype.readTime = null; /** - * Query startCursor. - * @member {Uint8Array} startCursor - * @memberof google.datastore.v1.Query - * @instance + * Creates a new LookupResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.ILookupResponse=} [properties] Properties to set + * @returns {google.datastore.v1.LookupResponse} LookupResponse instance */ - Query.prototype.startCursor = $util.newBuffer([]); + LookupResponse.create = function create(properties) { + return new LookupResponse(properties); + }; /** - * Query endCursor. - * @member {Uint8Array} endCursor - * @memberof google.datastore.v1.Query - * @instance + * Encodes the specified LookupResponse message. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.LookupResponse + * @static + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Query.prototype.endCursor = $util.newBuffer([]); - - /** - * Query offset. - * @member {number} offset - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.offset = 0; - - /** - * Query limit. - * @member {google.protobuf.IInt32Value|null|undefined} limit - * @memberof google.datastore.v1.Query - * @instance - */ - Query.prototype.limit = null; - - /** - * Creates a new Query instance using the specified properties. - * @function create - * @memberof google.datastore.v1.Query - * @static - * @param {google.datastore.v1.IQuery=} [properties] Properties to set - * @returns {google.datastore.v1.Query} Query instance - */ - Query.create = function create(properties) { - return new Query(properties); - }; - - /** - * Encodes the specified Query message. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.Query - * @static - * @param {google.datastore.v1.IQuery} message Query message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Query.encode = function encode(message, writer) { + LookupResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.projection != null && message.projection.length) - for (var i = 0; i < message.projection.length; ++i) - $root.google.datastore.v1.Projection.encode(message.projection[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.kind != null && message.kind.length) - for (var i = 0; i < message.kind.length; ++i) - $root.google.datastore.v1.KindExpression.encode(message.kind[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) - $root.google.datastore.v1.Filter.encode(message.filter, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.order != null && message.order.length) - for (var i = 0; i < message.order.length; ++i) - $root.google.datastore.v1.PropertyOrder.encode(message.order[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.distinctOn != null && message.distinctOn.length) - for (var i = 0; i < message.distinctOn.length; ++i) - $root.google.datastore.v1.PropertyReference.encode(message.distinctOn[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.startCursor != null && Object.hasOwnProperty.call(message, "startCursor")) - writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.startCursor); - if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) - writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.endCursor); - if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); - if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) - $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.found != null && message.found.length) + for (var i = 0; i < message.found.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.found[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.missing != null && message.missing.length) + for (var i = 0; i < message.missing.length; ++i) + $root.google.datastore.v1.EntityResult.encode(message.missing[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.deferred != null && message.deferred.length) + for (var i = 0; i < message.deferred.length; ++i) + $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; /** - * Encodes the specified Query message, length delimited. Does not implicitly {@link google.datastore.v1.Query.verify|verify} messages. + * Encodes the specified LookupResponse message, length delimited. Does not implicitly {@link google.datastore.v1.LookupResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.IQuery} message Query message or plain object to encode + * @param {google.datastore.v1.ILookupResponse} message LookupResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Query.encodeDelimited = function encodeDelimited(message, writer) { + LookupResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Query message from the specified reader or buffer. + * Decodes a LookupResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.LookupResponse} LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Query.decode = function decode(reader, length) { + LookupResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Query(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.LookupResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: { - if (!(message.projection && message.projection.length)) - message.projection = []; - message.projection.push($root.google.datastore.v1.Projection.decode(reader, reader.uint32())); - break; - } - case 3: { - if (!(message.kind && message.kind.length)) - message.kind = []; - message.kind.push($root.google.datastore.v1.KindExpression.decode(reader, reader.uint32())); - break; - } - case 4: { - message.filter = $root.google.datastore.v1.Filter.decode(reader, reader.uint32()); + case 1: { + if (!(message.found && message.found.length)) + message.found = []; + message.found.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); break; } - case 5: { - if (!(message.order && message.order.length)) - message.order = []; - message.order.push($root.google.datastore.v1.PropertyOrder.decode(reader, reader.uint32())); + case 2: { + if (!(message.missing && message.missing.length)) + message.missing = []; + message.missing.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); break; } - case 6: { - if (!(message.distinctOn && message.distinctOn.length)) - message.distinctOn = []; - message.distinctOn.push($root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32())); + case 3: { + if (!(message.deferred && message.deferred.length)) + message.deferred = []; + message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; } case 7: { - message.startCursor = reader.bytes(); - break; - } - case 8: { - message.endCursor = reader.bytes(); - break; - } - case 10: { - message.offset = reader.int32(); - break; - } - case 12: { - message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } default: @@ -14445,285 +13878,209 @@ }; /** - * Decodes a Query message from the specified reader or buffer, length delimited. + * Decodes a LookupResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.LookupResponse} LookupResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Query.decodeDelimited = function decodeDelimited(reader) { + LookupResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Query message. + * Verifies a LookupResponse message. * @function verify - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Query.verify = function verify(message) { + LookupResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.projection != null && message.hasOwnProperty("projection")) { - if (!Array.isArray(message.projection)) - return "projection: array expected"; - for (var i = 0; i < message.projection.length; ++i) { - var error = $root.google.datastore.v1.Projection.verify(message.projection[i]); - if (error) - return "projection." + error; - } - } - if (message.kind != null && message.hasOwnProperty("kind")) { - if (!Array.isArray(message.kind)) - return "kind: array expected"; - for (var i = 0; i < message.kind.length; ++i) { - var error = $root.google.datastore.v1.KindExpression.verify(message.kind[i]); + if (message.found != null && message.hasOwnProperty("found")) { + if (!Array.isArray(message.found)) + return "found: array expected"; + for (var i = 0; i < message.found.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.found[i]); if (error) - return "kind." + error; + return "found." + error; } } - if (message.filter != null && message.hasOwnProperty("filter")) { - var error = $root.google.datastore.v1.Filter.verify(message.filter); - if (error) - return "filter." + error; - } - if (message.order != null && message.hasOwnProperty("order")) { - if (!Array.isArray(message.order)) - return "order: array expected"; - for (var i = 0; i < message.order.length; ++i) { - var error = $root.google.datastore.v1.PropertyOrder.verify(message.order[i]); + if (message.missing != null && message.hasOwnProperty("missing")) { + if (!Array.isArray(message.missing)) + return "missing: array expected"; + for (var i = 0; i < message.missing.length; ++i) { + var error = $root.google.datastore.v1.EntityResult.verify(message.missing[i]); if (error) - return "order." + error; + return "missing." + error; } } - if (message.distinctOn != null && message.hasOwnProperty("distinctOn")) { - if (!Array.isArray(message.distinctOn)) - return "distinctOn: array expected"; - for (var i = 0; i < message.distinctOn.length; ++i) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.distinctOn[i]); + if (message.deferred != null && message.hasOwnProperty("deferred")) { + if (!Array.isArray(message.deferred)) + return "deferred: array expected"; + for (var i = 0; i < message.deferred.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.deferred[i]); if (error) - return "distinctOn." + error; + return "deferred." + error; } } - if (message.startCursor != null && message.hasOwnProperty("startCursor")) - if (!(message.startCursor && typeof message.startCursor.length === "number" || $util.isString(message.startCursor))) - return "startCursor: buffer expected"; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) - return "endCursor: buffer expected"; - if (message.offset != null && message.hasOwnProperty("offset")) - if (!$util.isInteger(message.offset)) - return "offset: integer expected"; - if (message.limit != null && message.hasOwnProperty("limit")) { - var error = $root.google.protobuf.Int32Value.verify(message.limit); + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); if (error) - return "limit." + error; + return "readTime." + error; } return null; }; /** - * Creates a Query message from a plain object. Also converts values to their respective internal types. + * Creates a LookupResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Query} Query + * @returns {google.datastore.v1.LookupResponse} LookupResponse */ - Query.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Query) + LookupResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.LookupResponse) return object; - var message = new $root.google.datastore.v1.Query(); - if (object.projection) { - if (!Array.isArray(object.projection)) - throw TypeError(".google.datastore.v1.Query.projection: array expected"); - message.projection = []; - for (var i = 0; i < object.projection.length; ++i) { - if (typeof object.projection[i] !== "object") - throw TypeError(".google.datastore.v1.Query.projection: object expected"); - message.projection[i] = $root.google.datastore.v1.Projection.fromObject(object.projection[i]); - } - } - if (object.kind) { - if (!Array.isArray(object.kind)) - throw TypeError(".google.datastore.v1.Query.kind: array expected"); - message.kind = []; - for (var i = 0; i < object.kind.length; ++i) { - if (typeof object.kind[i] !== "object") - throw TypeError(".google.datastore.v1.Query.kind: object expected"); - message.kind[i] = $root.google.datastore.v1.KindExpression.fromObject(object.kind[i]); + var message = new $root.google.datastore.v1.LookupResponse(); + if (object.found) { + if (!Array.isArray(object.found)) + throw TypeError(".google.datastore.v1.LookupResponse.found: array expected"); + message.found = []; + for (var i = 0; i < object.found.length; ++i) { + if (typeof object.found[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.found: object expected"); + message.found[i] = $root.google.datastore.v1.EntityResult.fromObject(object.found[i]); } } - if (object.filter != null) { - if (typeof object.filter !== "object") - throw TypeError(".google.datastore.v1.Query.filter: object expected"); - message.filter = $root.google.datastore.v1.Filter.fromObject(object.filter); - } - if (object.order) { - if (!Array.isArray(object.order)) - throw TypeError(".google.datastore.v1.Query.order: array expected"); - message.order = []; - for (var i = 0; i < object.order.length; ++i) { - if (typeof object.order[i] !== "object") - throw TypeError(".google.datastore.v1.Query.order: object expected"); - message.order[i] = $root.google.datastore.v1.PropertyOrder.fromObject(object.order[i]); + if (object.missing) { + if (!Array.isArray(object.missing)) + throw TypeError(".google.datastore.v1.LookupResponse.missing: array expected"); + message.missing = []; + for (var i = 0; i < object.missing.length; ++i) { + if (typeof object.missing[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.missing: object expected"); + message.missing[i] = $root.google.datastore.v1.EntityResult.fromObject(object.missing[i]); } } - if (object.distinctOn) { - if (!Array.isArray(object.distinctOn)) - throw TypeError(".google.datastore.v1.Query.distinctOn: array expected"); - message.distinctOn = []; - for (var i = 0; i < object.distinctOn.length; ++i) { - if (typeof object.distinctOn[i] !== "object") - throw TypeError(".google.datastore.v1.Query.distinctOn: object expected"); - message.distinctOn[i] = $root.google.datastore.v1.PropertyReference.fromObject(object.distinctOn[i]); + if (object.deferred) { + if (!Array.isArray(object.deferred)) + throw TypeError(".google.datastore.v1.LookupResponse.deferred: array expected"); + message.deferred = []; + for (var i = 0; i < object.deferred.length; ++i) { + if (typeof object.deferred[i] !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.deferred: object expected"); + message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); } } - if (object.startCursor != null) - if (typeof object.startCursor === "string") - $util.base64.decode(object.startCursor, message.startCursor = $util.newBuffer($util.base64.length(object.startCursor)), 0); - else if (object.startCursor.length >= 0) - message.startCursor = object.startCursor; - if (object.endCursor != null) - if (typeof object.endCursor === "string") - $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length >= 0) - message.endCursor = object.endCursor; - if (object.offset != null) - message.offset = object.offset | 0; - if (object.limit != null) { - if (typeof object.limit !== "object") - throw TypeError(".google.datastore.v1.Query.limit: object expected"); - message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.LookupResponse.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); } return message; }; /** - * Creates a plain object from a Query message. Also converts values to other types if specified. + * Creates a plain object from a LookupResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static - * @param {google.datastore.v1.Query} message Query + * @param {google.datastore.v1.LookupResponse} message LookupResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Query.toObject = function toObject(message, options) { + LookupResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) { - object.projection = []; - object.kind = []; - object.order = []; - object.distinctOn = []; - } - if (options.defaults) { - object.filter = null; - if (options.bytes === String) - object.startCursor = ""; - else { - object.startCursor = []; - if (options.bytes !== Array) - object.startCursor = $util.newBuffer(object.startCursor); - } - if (options.bytes === String) - object.endCursor = ""; - else { - object.endCursor = []; - if (options.bytes !== Array) - object.endCursor = $util.newBuffer(object.endCursor); - } - object.offset = 0; - object.limit = null; - } - if (message.projection && message.projection.length) { - object.projection = []; - for (var j = 0; j < message.projection.length; ++j) - object.projection[j] = $root.google.datastore.v1.Projection.toObject(message.projection[j], options); + object.found = []; + object.missing = []; + object.deferred = []; } - if (message.kind && message.kind.length) { - object.kind = []; - for (var j = 0; j < message.kind.length; ++j) - object.kind[j] = $root.google.datastore.v1.KindExpression.toObject(message.kind[j], options); + if (options.defaults) + object.readTime = null; + if (message.found && message.found.length) { + object.found = []; + for (var j = 0; j < message.found.length; ++j) + object.found[j] = $root.google.datastore.v1.EntityResult.toObject(message.found[j], options); } - if (message.filter != null && message.hasOwnProperty("filter")) - object.filter = $root.google.datastore.v1.Filter.toObject(message.filter, options); - if (message.order && message.order.length) { - object.order = []; - for (var j = 0; j < message.order.length; ++j) - object.order[j] = $root.google.datastore.v1.PropertyOrder.toObject(message.order[j], options); + if (message.missing && message.missing.length) { + object.missing = []; + for (var j = 0; j < message.missing.length; ++j) + object.missing[j] = $root.google.datastore.v1.EntityResult.toObject(message.missing[j], options); } - if (message.distinctOn && message.distinctOn.length) { - object.distinctOn = []; - for (var j = 0; j < message.distinctOn.length; ++j) - object.distinctOn[j] = $root.google.datastore.v1.PropertyReference.toObject(message.distinctOn[j], options); + if (message.deferred && message.deferred.length) { + object.deferred = []; + for (var j = 0; j < message.deferred.length; ++j) + object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); } - if (message.startCursor != null && message.hasOwnProperty("startCursor")) - object.startCursor = options.bytes === String ? $util.base64.encode(message.startCursor, 0, message.startCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.startCursor) : message.startCursor; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; - if (message.offset != null && message.hasOwnProperty("offset")) - object.offset = message.offset; - if (message.limit != null && message.hasOwnProperty("limit")) - object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; }; /** - * Converts this Query to JSON. + * Converts this LookupResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @instance * @returns {Object.} JSON object */ - Query.prototype.toJSON = function toJSON() { + LookupResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Query + * Gets the default type url for LookupResponse * @function getTypeUrl - * @memberof google.datastore.v1.Query + * @memberof google.datastore.v1.LookupResponse * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Query.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + LookupResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Query"; + return typeUrlPrefix + "/google.datastore.v1.LookupResponse"; }; - return Query; + return LookupResponse; })(); - v1.KindExpression = (function() { + v1.RunQueryRequest = (function() { /** - * Properties of a KindExpression. + * Properties of a RunQueryRequest. * @memberof google.datastore.v1 - * @interface IKindExpression - * @property {string|null} [name] KindExpression name + * @interface IRunQueryRequest + * @property {string|null} [projectId] RunQueryRequest projectId + * @property {string|null} [databaseId] RunQueryRequest databaseId + * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunQueryRequest partitionId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions + * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query + * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery */ /** - * Constructs a new KindExpression. + * Constructs a new RunQueryRequest. * @memberof google.datastore.v1 - * @classdesc Represents a KindExpression. - * @implements IKindExpression + * @classdesc Represents a RunQueryRequest. + * @implements IRunQueryRequest * @constructor - * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set */ - function KindExpression(properties) { + function RunQueryRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -14731,75 +14088,159 @@ } /** - * KindExpression name. - * @member {string} name - * @memberof google.datastore.v1.KindExpression + * RunQueryRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RunQueryRequest * @instance */ - KindExpression.prototype.name = ""; + RunQueryRequest.prototype.projectId = ""; /** - * Creates a new KindExpression instance using the specified properties. + * RunQueryRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.databaseId = ""; + + /** + * RunQueryRequest partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.partitionId = null; + + /** + * RunQueryRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.readOptions = null; + + /** + * RunQueryRequest query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.query = null; + + /** + * RunQueryRequest gqlQuery. + * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.gqlQuery = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * RunQueryRequest queryType. + * @member {"query"|"gqlQuery"|undefined} queryType + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + Object.defineProperty(RunQueryRequest.prototype, "queryType", { + get: $util.oneOfGetter($oneOfFields = ["query", "gqlQuery"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new RunQueryRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IKindExpression=} [properties] Properties to set - * @returns {google.datastore.v1.KindExpression} KindExpression instance + * @param {google.datastore.v1.IRunQueryRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest instance */ - KindExpression.create = function create(properties) { - return new KindExpression(properties); + RunQueryRequest.create = function create(properties) { + return new RunQueryRequest(properties); }; /** - * Encodes the specified KindExpression message. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * Encodes the specified RunQueryRequest message. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KindExpression.encode = function encode(message, writer) { + RunQueryRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.query != null && Object.hasOwnProperty.call(message, "query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) + $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified KindExpression message, length delimited. Does not implicitly {@link google.datastore.v1.KindExpression.verify|verify} messages. + * Encodes the specified RunQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.IKindExpression} message KindExpression message or plain object to encode + * @param {google.datastore.v1.IRunQueryRequest} message RunQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KindExpression.encodeDelimited = function encodeDelimited(message, writer) { + RunQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a KindExpression message from the specified reader or buffer. + * Decodes a RunQueryRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KindExpression.decode = function decode(reader, length) { + RunQueryRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.KindExpression(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 2: { + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + } case 1: { - message.name = reader.string(); + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + } + case 3: { + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); + break; + } + case 7: { + message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } default: @@ -14811,122 +14252,197 @@ }; /** - * Decodes a KindExpression message from the specified reader or buffer, length delimited. + * Decodes a RunQueryRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KindExpression.decodeDelimited = function decodeDelimited(reader) { + RunQueryRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a KindExpression message. + * Verifies a RunQueryRequest message. * @function verify - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KindExpression.verify = function verify(message) { + RunQueryRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; + var properties = {}; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); + if (error) + return "partitionId." + error; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + properties.queryType = 1; + { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; + } + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + if (properties.queryType === 1) + return "queryType: multiple values"; + properties.queryType = 1; + { + var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (error) + return "gqlQuery." + error; + } + } return null; }; /** - * Creates a KindExpression message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.KindExpression} KindExpression + * @returns {google.datastore.v1.RunQueryRequest} RunQueryRequest */ - KindExpression.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.KindExpression) + RunQueryRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryRequest) return object; - var message = new $root.google.datastore.v1.KindExpression(); - if (object.name != null) - message.name = String(object.name); + var message = new $root.google.datastore.v1.RunQueryRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + } + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); + } + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); + } + if (object.gqlQuery != null) { + if (typeof object.gqlQuery !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); + message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); + } return message; }; /** - * Creates a plain object from a KindExpression message. Also converts values to other types if specified. + * Creates a plain object from a RunQueryRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static - * @param {google.datastore.v1.KindExpression} message KindExpression + * @param {google.datastore.v1.RunQueryRequest} message RunQueryRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - KindExpression.toObject = function toObject(message, options) { + RunQueryRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.name = ""; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; + if (options.defaults) { + object.readOptions = null; + object.partitionId = null; + object.projectId = ""; + object.databaseId = ""; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.query != null && message.hasOwnProperty("query")) { + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); + if (options.oneofs) + object.queryType = "query"; + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); + if (options.oneofs) + object.queryType = "gqlQuery"; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this KindExpression to JSON. + * Converts this RunQueryRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @instance * @returns {Object.} JSON object */ - KindExpression.prototype.toJSON = function toJSON() { + RunQueryRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for KindExpression + * Gets the default type url for RunQueryRequest * @function getTypeUrl - * @memberof google.datastore.v1.KindExpression + * @memberof google.datastore.v1.RunQueryRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - KindExpression.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RunQueryRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.KindExpression"; + return typeUrlPrefix + "/google.datastore.v1.RunQueryRequest"; }; - return KindExpression; + return RunQueryRequest; })(); - v1.PropertyReference = (function() { + v1.RunQueryResponse = (function() { /** - * Properties of a PropertyReference. + * Properties of a RunQueryResponse. * @memberof google.datastore.v1 - * @interface IPropertyReference - * @property {string|null} [name] PropertyReference name + * @interface IRunQueryResponse + * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch + * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query */ /** - * Constructs a new PropertyReference. + * Constructs a new RunQueryResponse. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyReference. - * @implements IPropertyReference + * @classdesc Represents a RunQueryResponse. + * @implements IRunQueryResponse * @constructor - * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set */ - function PropertyReference(properties) { + function RunQueryResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -14934,75 +14450,89 @@ } /** - * PropertyReference name. - * @member {string} name - * @memberof google.datastore.v1.PropertyReference + * RunQueryResponse batch. + * @member {google.datastore.v1.IQueryResultBatch|null|undefined} batch + * @memberof google.datastore.v1.RunQueryResponse * @instance */ - PropertyReference.prototype.name = ""; + RunQueryResponse.prototype.batch = null; /** - * Creates a new PropertyReference instance using the specified properties. + * RunQueryResponse query. + * @member {google.datastore.v1.IQuery|null|undefined} query + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.query = null; + + /** + * Creates a new RunQueryResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.IPropertyReference=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyReference} PropertyReference instance + * @param {google.datastore.v1.IRunQueryResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse instance */ - PropertyReference.create = function create(properties) { - return new PropertyReference(properties); + RunQueryResponse.create = function create(properties) { + return new RunQueryResponse(properties); }; /** - * Encodes the specified PropertyReference message. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * Encodes the specified RunQueryResponse message. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyReference.encode = function encode(message, writer) { + RunQueryResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) + $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.query != null && Object.hasOwnProperty.call(message, "query")) + $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified PropertyReference message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyReference.verify|verify} messages. + * Encodes the specified RunQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunQueryResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.IPropertyReference} message PropertyReference message or plain object to encode + * @param {google.datastore.v1.IRunQueryResponse} message RunQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyReference.encodeDelimited = function encodeDelimited(message, writer) { + RunQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyReference message from the specified reader or buffer. + * Decodes a RunQueryResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyReference.decode = function decode(reader, length) { + RunQueryResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyReference(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunQueryResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: { + message.batch = $root.google.datastore.v1.QueryResultBatch.decode(reader, reader.uint32()); + break; + } case 2: { - message.name = reader.string(); + message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); break; } default: @@ -15014,122 +14544,146 @@ }; /** - * Decodes a PropertyReference message from the specified reader or buffer, length delimited. + * Decodes a RunQueryResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyReference.decodeDelimited = function decodeDelimited(reader) { + RunQueryResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyReference message. + * Verifies a RunQueryResponse message. * @function verify - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyReference.verify = function verify(message) { + RunQueryResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; + if (message.batch != null && message.hasOwnProperty("batch")) { + var error = $root.google.datastore.v1.QueryResultBatch.verify(message.batch); + if (error) + return "batch." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + var error = $root.google.datastore.v1.Query.verify(message.query); + if (error) + return "query." + error; + } return null; }; /** - * Creates a PropertyReference message from a plain object. Also converts values to their respective internal types. + * Creates a RunQueryResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyReference} PropertyReference + * @returns {google.datastore.v1.RunQueryResponse} RunQueryResponse */ - PropertyReference.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyReference) + RunQueryResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunQueryResponse) return object; - var message = new $root.google.datastore.v1.PropertyReference(); - if (object.name != null) - message.name = String(object.name); + var message = new $root.google.datastore.v1.RunQueryResponse(); + if (object.batch != null) { + if (typeof object.batch !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.batch: object expected"); + message.batch = $root.google.datastore.v1.QueryResultBatch.fromObject(object.batch); + } + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); + message.query = $root.google.datastore.v1.Query.fromObject(object.query); + } return message; }; /** - * Creates a plain object from a PropertyReference message. Also converts values to other types if specified. + * Creates a plain object from a RunQueryResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static - * @param {google.datastore.v1.PropertyReference} message PropertyReference + * @param {google.datastore.v1.RunQueryResponse} message RunQueryResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyReference.toObject = function toObject(message, options) { + RunQueryResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.name = ""; - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; + if (options.defaults) { + object.batch = null; + object.query = null; + } + if (message.batch != null && message.hasOwnProperty("batch")) + object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); + if (message.query != null && message.hasOwnProperty("query")) + object.query = $root.google.datastore.v1.Query.toObject(message.query, options); return object; }; /** - * Converts this PropertyReference to JSON. + * Converts this RunQueryResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @instance * @returns {Object.} JSON object */ - PropertyReference.prototype.toJSON = function toJSON() { + RunQueryResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for PropertyReference + * Gets the default type url for RunQueryResponse * @function getTypeUrl - * @memberof google.datastore.v1.PropertyReference + * @memberof google.datastore.v1.RunQueryResponse * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - PropertyReference.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RunQueryResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.PropertyReference"; + return typeUrlPrefix + "/google.datastore.v1.RunQueryResponse"; }; - return PropertyReference; + return RunQueryResponse; })(); - v1.Projection = (function() { + v1.RunAggregationQueryRequest = (function() { /** - * Properties of a Projection. + * Properties of a RunAggregationQueryRequest. * @memberof google.datastore.v1 - * @interface IProjection - * @property {google.datastore.v1.IPropertyReference|null} [property] Projection property + * @interface IRunAggregationQueryRequest + * @property {string|null} [projectId] RunAggregationQueryRequest projectId + * @property {string|null} [databaseId] RunAggregationQueryRequest databaseId + * @property {google.datastore.v1.IPartitionId|null} [partitionId] RunAggregationQueryRequest partitionId + * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunAggregationQueryRequest readOptions + * @property {google.datastore.v1.IAggregationQuery|null} [aggregationQuery] RunAggregationQueryRequest aggregationQuery + * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunAggregationQueryRequest gqlQuery */ /** - * Constructs a new Projection. + * Constructs a new RunAggregationQueryRequest. * @memberof google.datastore.v1 - * @classdesc Represents a Projection. - * @implements IProjection + * @classdesc Represents a RunAggregationQueryRequest. + * @implements IRunAggregationQueryRequest * @constructor - * @param {google.datastore.v1.IProjection=} [properties] Properties to set + * @param {google.datastore.v1.IRunAggregationQueryRequest=} [properties] Properties to set */ - function Projection(properties) { + function RunAggregationQueryRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15137,75 +14691,159 @@ } /** - * Projection property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.Projection + * RunAggregationQueryRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RunAggregationQueryRequest * @instance */ - Projection.prototype.property = null; + RunAggregationQueryRequest.prototype.projectId = ""; /** - * Creates a new Projection instance using the specified properties. + * RunAggregationQueryRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.databaseId = ""; + + /** + * RunAggregationQueryRequest partitionId. + * @member {google.datastore.v1.IPartitionId|null|undefined} partitionId + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.partitionId = null; + + /** + * RunAggregationQueryRequest readOptions. + * @member {google.datastore.v1.IReadOptions|null|undefined} readOptions + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.readOptions = null; + + /** + * RunAggregationQueryRequest aggregationQuery. + * @member {google.datastore.v1.IAggregationQuery|null|undefined} aggregationQuery + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.aggregationQuery = null; + + /** + * RunAggregationQueryRequest gqlQuery. + * @member {google.datastore.v1.IGqlQuery|null|undefined} gqlQuery + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.gqlQuery = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * RunAggregationQueryRequest queryType. + * @member {"aggregationQuery"|"gqlQuery"|undefined} queryType + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + Object.defineProperty(RunAggregationQueryRequest.prototype, "queryType", { + get: $util.oneOfGetter($oneOfFields = ["aggregationQuery", "gqlQuery"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new RunAggregationQueryRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static - * @param {google.datastore.v1.IProjection=} [properties] Properties to set - * @returns {google.datastore.v1.Projection} Projection instance + * @param {google.datastore.v1.IRunAggregationQueryRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RunAggregationQueryRequest} RunAggregationQueryRequest instance */ - Projection.create = function create(properties) { - return new Projection(properties); + RunAggregationQueryRequest.create = function create(properties) { + return new RunAggregationQueryRequest(properties); }; /** - * Encodes the specified Projection message. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * Encodes the specified RunAggregationQueryRequest message. Does not implicitly {@link google.datastore.v1.RunAggregationQueryRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static - * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {google.datastore.v1.IRunAggregationQueryRequest} message RunAggregationQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Projection.encode = function encode(message, writer) { + RunAggregationQueryRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readOptions != null && Object.hasOwnProperty.call(message, "readOptions")) + $root.google.datastore.v1.ReadOptions.encode(message.readOptions, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + $root.google.datastore.v1.PartitionId.encode(message.partitionId, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.aggregationQuery != null && Object.hasOwnProperty.call(message, "aggregationQuery")) + $root.google.datastore.v1.AggregationQuery.encode(message.aggregationQuery, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.gqlQuery != null && Object.hasOwnProperty.call(message, "gqlQuery")) + $root.google.datastore.v1.GqlQuery.encode(message.gqlQuery, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified Projection message, length delimited. Does not implicitly {@link google.datastore.v1.Projection.verify|verify} messages. + * Encodes the specified RunAggregationQueryRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RunAggregationQueryRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static - * @param {google.datastore.v1.IProjection} message Projection message or plain object to encode + * @param {google.datastore.v1.IRunAggregationQueryRequest} message RunAggregationQueryRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Projection.encodeDelimited = function encodeDelimited(message, writer) { + RunAggregationQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Projection message from the specified reader or buffer. + * Decodes a RunAggregationQueryRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.RunAggregationQueryRequest} RunAggregationQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Projection.decode = function decode(reader, length) { + RunAggregationQueryRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Projection(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunAggregationQueryRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 2: { + message.partitionId = $root.google.datastore.v1.PartitionId.decode(reader, reader.uint32()); + break; + } case 1: { - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + message.readOptions = $root.google.datastore.v1.ReadOptions.decode(reader, reader.uint32()); + break; + } + case 3: { + message.aggregationQuery = $root.google.datastore.v1.AggregationQuery.decode(reader, reader.uint32()); + break; + } + case 7: { + message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } default: @@ -15217,128 +14855,197 @@ }; /** - * Decodes a Projection message from the specified reader or buffer, length delimited. + * Decodes a RunAggregationQueryRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.RunAggregationQueryRequest} RunAggregationQueryRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Projection.decodeDelimited = function decodeDelimited(reader) { + RunAggregationQueryRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Projection message. + * Verifies a RunAggregationQueryRequest message. * @function verify - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Projection.verify = function verify(message) { + RunAggregationQueryRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + var properties = {}; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.partitionId != null && message.hasOwnProperty("partitionId")) { + var error = $root.google.datastore.v1.PartitionId.verify(message.partitionId); if (error) - return "property." + error; + return "partitionId." + error; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) { + var error = $root.google.datastore.v1.ReadOptions.verify(message.readOptions); + if (error) + return "readOptions." + error; + } + if (message.aggregationQuery != null && message.hasOwnProperty("aggregationQuery")) { + properties.queryType = 1; + { + var error = $root.google.datastore.v1.AggregationQuery.verify(message.aggregationQuery); + if (error) + return "aggregationQuery." + error; + } + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + if (properties.queryType === 1) + return "queryType: multiple values"; + properties.queryType = 1; + { + var error = $root.google.datastore.v1.GqlQuery.verify(message.gqlQuery); + if (error) + return "gqlQuery." + error; + } } return null; }; /** - * Creates a Projection message from a plain object. Also converts values to their respective internal types. + * Creates a RunAggregationQueryRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Projection} Projection + * @returns {google.datastore.v1.RunAggregationQueryRequest} RunAggregationQueryRequest */ - Projection.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Projection) + RunAggregationQueryRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunAggregationQueryRequest) return object; - var message = new $root.google.datastore.v1.Projection(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.Projection.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + var message = new $root.google.datastore.v1.RunAggregationQueryRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.partitionId != null) { + if (typeof object.partitionId !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.partitionId: object expected"); + message.partitionId = $root.google.datastore.v1.PartitionId.fromObject(object.partitionId); + } + if (object.readOptions != null) { + if (typeof object.readOptions !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.readOptions: object expected"); + message.readOptions = $root.google.datastore.v1.ReadOptions.fromObject(object.readOptions); + } + if (object.aggregationQuery != null) { + if (typeof object.aggregationQuery !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.aggregationQuery: object expected"); + message.aggregationQuery = $root.google.datastore.v1.AggregationQuery.fromObject(object.aggregationQuery); + } + if (object.gqlQuery != null) { + if (typeof object.gqlQuery !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.gqlQuery: object expected"); + message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } return message; }; /** - * Creates a plain object from a Projection message. Also converts values to other types if specified. + * Creates a plain object from a RunAggregationQueryRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static - * @param {google.datastore.v1.Projection} message Projection + * @param {google.datastore.v1.RunAggregationQueryRequest} message RunAggregationQueryRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Projection.toObject = function toObject(message, options) { + RunAggregationQueryRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.defaults) - object.property = null; - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + if (options.defaults) { + object.readOptions = null; + object.partitionId = null; + object.projectId = ""; + object.databaseId = ""; + } + if (message.readOptions != null && message.hasOwnProperty("readOptions")) + object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); + if (message.partitionId != null && message.hasOwnProperty("partitionId")) + object.partitionId = $root.google.datastore.v1.PartitionId.toObject(message.partitionId, options); + if (message.aggregationQuery != null && message.hasOwnProperty("aggregationQuery")) { + object.aggregationQuery = $root.google.datastore.v1.AggregationQuery.toObject(message.aggregationQuery, options); + if (options.oneofs) + object.queryType = "aggregationQuery"; + } + if (message.gqlQuery != null && message.hasOwnProperty("gqlQuery")) { + object.gqlQuery = $root.google.datastore.v1.GqlQuery.toObject(message.gqlQuery, options); + if (options.oneofs) + object.queryType = "gqlQuery"; + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this Projection to JSON. + * Converts this RunAggregationQueryRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @instance * @returns {Object.} JSON object */ - Projection.prototype.toJSON = function toJSON() { + RunAggregationQueryRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Projection + * Gets the default type url for RunAggregationQueryRequest * @function getTypeUrl - * @memberof google.datastore.v1.Projection + * @memberof google.datastore.v1.RunAggregationQueryRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Projection.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RunAggregationQueryRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Projection"; + return typeUrlPrefix + "/google.datastore.v1.RunAggregationQueryRequest"; }; - return Projection; + return RunAggregationQueryRequest; })(); - v1.PropertyOrder = (function() { + v1.RunAggregationQueryResponse = (function() { /** - * Properties of a PropertyOrder. + * Properties of a RunAggregationQueryResponse. * @memberof google.datastore.v1 - * @interface IPropertyOrder - * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyOrder property - * @property {google.datastore.v1.PropertyOrder.Direction|null} [direction] PropertyOrder direction + * @interface IRunAggregationQueryResponse + * @property {google.datastore.v1.IAggregationResultBatch|null} [batch] RunAggregationQueryResponse batch + * @property {google.datastore.v1.IAggregationQuery|null} [query] RunAggregationQueryResponse query */ /** - * Constructs a new PropertyOrder. + * Constructs a new RunAggregationQueryResponse. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyOrder. - * @implements IPropertyOrder + * @classdesc Represents a RunAggregationQueryResponse. + * @implements IRunAggregationQueryResponse * @constructor - * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set + * @param {google.datastore.v1.IRunAggregationQueryResponse=} [properties] Properties to set */ - function PropertyOrder(properties) { + function RunAggregationQueryResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15346,89 +15053,89 @@ } /** - * PropertyOrder property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.PropertyOrder + * RunAggregationQueryResponse batch. + * @member {google.datastore.v1.IAggregationResultBatch|null|undefined} batch + * @memberof google.datastore.v1.RunAggregationQueryResponse * @instance */ - PropertyOrder.prototype.property = null; + RunAggregationQueryResponse.prototype.batch = null; /** - * PropertyOrder direction. - * @member {google.datastore.v1.PropertyOrder.Direction} direction - * @memberof google.datastore.v1.PropertyOrder + * RunAggregationQueryResponse query. + * @member {google.datastore.v1.IAggregationQuery|null|undefined} query + * @memberof google.datastore.v1.RunAggregationQueryResponse * @instance */ - PropertyOrder.prototype.direction = 0; + RunAggregationQueryResponse.prototype.query = null; /** - * Creates a new PropertyOrder instance using the specified properties. + * Creates a new RunAggregationQueryResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static - * @param {google.datastore.v1.IPropertyOrder=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder instance + * @param {google.datastore.v1.IRunAggregationQueryResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RunAggregationQueryResponse} RunAggregationQueryResponse instance */ - PropertyOrder.create = function create(properties) { - return new PropertyOrder(properties); + RunAggregationQueryResponse.create = function create(properties) { + return new RunAggregationQueryResponse(properties); }; /** - * Encodes the specified PropertyOrder message. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * Encodes the specified RunAggregationQueryResponse message. Does not implicitly {@link google.datastore.v1.RunAggregationQueryResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static - * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {google.datastore.v1.IRunAggregationQueryResponse} message RunAggregationQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyOrder.encode = function encode(message, writer) { + RunAggregationQueryResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.direction != null && Object.hasOwnProperty.call(message, "direction")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.direction); + if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) + $root.google.datastore.v1.AggregationResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.query != null && Object.hasOwnProperty.call(message, "query")) + $root.google.datastore.v1.AggregationQuery.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; /** - * Encodes the specified PropertyOrder message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyOrder.verify|verify} messages. + * Encodes the specified RunAggregationQueryResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RunAggregationQueryResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static - * @param {google.datastore.v1.IPropertyOrder} message PropertyOrder message or plain object to encode + * @param {google.datastore.v1.IRunAggregationQueryResponse} message RunAggregationQueryResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyOrder.encodeDelimited = function encodeDelimited(message, writer) { + RunAggregationQueryResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyOrder message from the specified reader or buffer. + * Decodes a RunAggregationQueryResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.RunAggregationQueryResponse} RunAggregationQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyOrder.decode = function decode(reader, length) { + RunAggregationQueryResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyOrder(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RunAggregationQueryResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: { - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + message.batch = $root.google.datastore.v1.AggregationResultBatch.decode(reader, reader.uint32()); break; } case 2: { - message.direction = reader.int32(); + message.query = $root.google.datastore.v1.AggregationQuery.decode(reader, reader.uint32()); break; } default: @@ -15440,171 +15147,143 @@ }; /** - * Decodes a PropertyOrder message from the specified reader or buffer, length delimited. + * Decodes a RunAggregationQueryResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.RunAggregationQueryResponse} RunAggregationQueryResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyOrder.decodeDelimited = function decodeDelimited(reader) { + RunAggregationQueryResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyOrder message. + * Verifies a RunAggregationQueryResponse message. * @function verify - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyOrder.verify = function verify(message) { + RunAggregationQueryResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (message.batch != null && message.hasOwnProperty("batch")) { + var error = $root.google.datastore.v1.AggregationResultBatch.verify(message.batch); if (error) - return "property." + error; + return "batch." + error; + } + if (message.query != null && message.hasOwnProperty("query")) { + var error = $root.google.datastore.v1.AggregationQuery.verify(message.query); + if (error) + return "query." + error; } - if (message.direction != null && message.hasOwnProperty("direction")) - switch (message.direction) { - default: - return "direction: enum value expected"; - case 0: - case 1: - case 2: - break; - } return null; }; /** - * Creates a PropertyOrder message from a plain object. Also converts values to their respective internal types. + * Creates a RunAggregationQueryResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyOrder} PropertyOrder + * @returns {google.datastore.v1.RunAggregationQueryResponse} RunAggregationQueryResponse */ - PropertyOrder.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyOrder) + RunAggregationQueryResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RunAggregationQueryResponse) return object; - var message = new $root.google.datastore.v1.PropertyOrder(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.PropertyOrder.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + var message = new $root.google.datastore.v1.RunAggregationQueryResponse(); + if (object.batch != null) { + if (typeof object.batch !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.batch: object expected"); + message.batch = $root.google.datastore.v1.AggregationResultBatch.fromObject(object.batch); } - switch (object.direction) { - case "DIRECTION_UNSPECIFIED": - case 0: - message.direction = 0; - break; - case "ASCENDING": - case 1: - message.direction = 1; - break; - case "DESCENDING": - case 2: - message.direction = 2; - break; + if (object.query != null) { + if (typeof object.query !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.query: object expected"); + message.query = $root.google.datastore.v1.AggregationQuery.fromObject(object.query); } return message; }; /** - * Creates a plain object from a PropertyOrder message. Also converts values to other types if specified. + * Creates a plain object from a RunAggregationQueryResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static - * @param {google.datastore.v1.PropertyOrder} message PropertyOrder + * @param {google.datastore.v1.RunAggregationQueryResponse} message RunAggregationQueryResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyOrder.toObject = function toObject(message, options) { + RunAggregationQueryResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.property = null; - object.direction = options.enums === String ? "DIRECTION_UNSPECIFIED" : 0; + object.batch = null; + object.query = null; } - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); - if (message.direction != null && message.hasOwnProperty("direction")) - object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; + if (message.batch != null && message.hasOwnProperty("batch")) + object.batch = $root.google.datastore.v1.AggregationResultBatch.toObject(message.batch, options); + if (message.query != null && message.hasOwnProperty("query")) + object.query = $root.google.datastore.v1.AggregationQuery.toObject(message.query, options); return object; }; /** - * Converts this PropertyOrder to JSON. + * Converts this RunAggregationQueryResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @instance * @returns {Object.} JSON object */ - PropertyOrder.prototype.toJSON = function toJSON() { + RunAggregationQueryResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for PropertyOrder + * Gets the default type url for RunAggregationQueryResponse * @function getTypeUrl - * @memberof google.datastore.v1.PropertyOrder + * @memberof google.datastore.v1.RunAggregationQueryResponse * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - PropertyOrder.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RunAggregationQueryResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.PropertyOrder"; + return typeUrlPrefix + "/google.datastore.v1.RunAggregationQueryResponse"; }; - /** - * Direction enum. - * @name google.datastore.v1.PropertyOrder.Direction - * @enum {number} - * @property {number} DIRECTION_UNSPECIFIED=0 DIRECTION_UNSPECIFIED value - * @property {number} ASCENDING=1 ASCENDING value - * @property {number} DESCENDING=2 DESCENDING value - */ - PropertyOrder.Direction = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "DIRECTION_UNSPECIFIED"] = 0; - values[valuesById[1] = "ASCENDING"] = 1; - values[valuesById[2] = "DESCENDING"] = 2; - return values; - })(); - - return PropertyOrder; + return RunAggregationQueryResponse; })(); - v1.Filter = (function() { + v1.BeginTransactionRequest = (function() { /** - * Properties of a Filter. + * Properties of a BeginTransactionRequest. * @memberof google.datastore.v1 - * @interface IFilter - * @property {google.datastore.v1.ICompositeFilter|null} [compositeFilter] Filter compositeFilter - * @property {google.datastore.v1.IPropertyFilter|null} [propertyFilter] Filter propertyFilter + * @interface IBeginTransactionRequest + * @property {string|null} [projectId] BeginTransactionRequest projectId + * @property {string|null} [databaseId] BeginTransactionRequest databaseId + * @property {google.datastore.v1.ITransactionOptions|null} [transactionOptions] BeginTransactionRequest transactionOptions */ /** - * Constructs a new Filter. + * Constructs a new BeginTransactionRequest. * @memberof google.datastore.v1 - * @classdesc Represents a Filter. - * @implements IFilter + * @classdesc Represents a BeginTransactionRequest. + * @implements IBeginTransactionRequest * @constructor - * @param {google.datastore.v1.IFilter=} [properties] Properties to set + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set */ - function Filter(properties) { + function BeginTransactionRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15612,103 +15291,103 @@ } /** - * Filter compositeFilter. - * @member {google.datastore.v1.ICompositeFilter|null|undefined} compositeFilter - * @memberof google.datastore.v1.Filter + * BeginTransactionRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.BeginTransactionRequest * @instance */ - Filter.prototype.compositeFilter = null; + BeginTransactionRequest.prototype.projectId = ""; /** - * Filter propertyFilter. - * @member {google.datastore.v1.IPropertyFilter|null|undefined} propertyFilter - * @memberof google.datastore.v1.Filter + * BeginTransactionRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.BeginTransactionRequest * @instance */ - Filter.prototype.propertyFilter = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + BeginTransactionRequest.prototype.databaseId = ""; /** - * Filter filterType. - * @member {"compositeFilter"|"propertyFilter"|undefined} filterType - * @memberof google.datastore.v1.Filter + * BeginTransactionRequest transactionOptions. + * @member {google.datastore.v1.ITransactionOptions|null|undefined} transactionOptions + * @memberof google.datastore.v1.BeginTransactionRequest * @instance */ - Object.defineProperty(Filter.prototype, "filterType", { - get: $util.oneOfGetter($oneOfFields = ["compositeFilter", "propertyFilter"]), - set: $util.oneOfSetter($oneOfFields) - }); + BeginTransactionRequest.prototype.transactionOptions = null; /** - * Creates a new Filter instance using the specified properties. + * Creates a new BeginTransactionRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static - * @param {google.datastore.v1.IFilter=} [properties] Properties to set - * @returns {google.datastore.v1.Filter} Filter instance + * @param {google.datastore.v1.IBeginTransactionRequest=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest instance */ - Filter.create = function create(properties) { - return new Filter(properties); + BeginTransactionRequest.create = function create(properties) { + return new BeginTransactionRequest(properties); }; /** - * Encodes the specified Filter message. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static - * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Filter.encode = function encode(message, writer) { + BeginTransactionRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.compositeFilter != null && Object.hasOwnProperty.call(message, "compositeFilter")) - $root.google.datastore.v1.CompositeFilter.encode(message.compositeFilter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.propertyFilter != null && Object.hasOwnProperty.call(message, "propertyFilter")) - $root.google.datastore.v1.PropertyFilter.encode(message.propertyFilter, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.transactionOptions != null && Object.hasOwnProperty.call(message, "transactionOptions")) + $root.google.datastore.v1.TransactionOptions.encode(message.transactionOptions, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; /** - * Encodes the specified Filter message, length delimited. Does not implicitly {@link google.datastore.v1.Filter.verify|verify} messages. + * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static - * @param {google.datastore.v1.IFilter} message Filter message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionRequest} message BeginTransactionRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Filter.encodeDelimited = function encodeDelimited(message, writer) { + BeginTransactionRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Filter message from the specified reader or buffer. + * Decodes a BeginTransactionRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.Filter} Filter + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Filter.decode = function decode(reader, length) { + BeginTransactionRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Filter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - message.compositeFilter = $root.google.datastore.v1.CompositeFilter.decode(reader, reader.uint32()); + case 8: { + message.projectId = reader.string(); break; } - case 2: { - message.propertyFilter = $root.google.datastore.v1.PropertyFilter.decode(reader, reader.uint32()); + case 9: { + message.databaseId = reader.string(); + break; + } + case 10: { + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); break; } default: @@ -15720,154 +15399,144 @@ }; /** - * Decodes a Filter message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.Filter} Filter + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Filter.decodeDelimited = function decodeDelimited(reader) { + BeginTransactionRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Filter message. + * Verifies a BeginTransactionRequest message. * @function verify - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Filter.verify = function verify(message) { + BeginTransactionRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { - properties.filterType = 1; - { - var error = $root.google.datastore.v1.CompositeFilter.verify(message.compositeFilter); - if (error) - return "compositeFilter." + error; - } - } - if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { - if (properties.filterType === 1) - return "filterType: multiple values"; - properties.filterType = 1; - { - var error = $root.google.datastore.v1.PropertyFilter.verify(message.propertyFilter); - if (error) - return "propertyFilter." + error; - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) { + var error = $root.google.datastore.v1.TransactionOptions.verify(message.transactionOptions); + if (error) + return "transactionOptions." + error; } return null; }; /** - * Creates a Filter message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.Filter} Filter + * @returns {google.datastore.v1.BeginTransactionRequest} BeginTransactionRequest */ - Filter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.Filter) + BeginTransactionRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionRequest) return object; - var message = new $root.google.datastore.v1.Filter(); - if (object.compositeFilter != null) { - if (typeof object.compositeFilter !== "object") - throw TypeError(".google.datastore.v1.Filter.compositeFilter: object expected"); - message.compositeFilter = $root.google.datastore.v1.CompositeFilter.fromObject(object.compositeFilter); - } - if (object.propertyFilter != null) { - if (typeof object.propertyFilter !== "object") - throw TypeError(".google.datastore.v1.Filter.propertyFilter: object expected"); - message.propertyFilter = $root.google.datastore.v1.PropertyFilter.fromObject(object.propertyFilter); + var message = new $root.google.datastore.v1.BeginTransactionRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.transactionOptions != null) { + if (typeof object.transactionOptions !== "object") + throw TypeError(".google.datastore.v1.BeginTransactionRequest.transactionOptions: object expected"); + message.transactionOptions = $root.google.datastore.v1.TransactionOptions.fromObject(object.transactionOptions); } return message; }; /** - * Creates a plain object from a Filter message. Also converts values to other types if specified. + * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static - * @param {google.datastore.v1.Filter} message Filter + * @param {google.datastore.v1.BeginTransactionRequest} message BeginTransactionRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Filter.toObject = function toObject(message, options) { + BeginTransactionRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.compositeFilter != null && message.hasOwnProperty("compositeFilter")) { - object.compositeFilter = $root.google.datastore.v1.CompositeFilter.toObject(message.compositeFilter, options); - if (options.oneofs) - object.filterType = "compositeFilter"; - } - if (message.propertyFilter != null && message.hasOwnProperty("propertyFilter")) { - object.propertyFilter = $root.google.datastore.v1.PropertyFilter.toObject(message.propertyFilter, options); - if (options.oneofs) - object.filterType = "propertyFilter"; + if (options.defaults) { + object.projectId = ""; + object.databaseId = ""; + object.transactionOptions = null; } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; + if (message.transactionOptions != null && message.hasOwnProperty("transactionOptions")) + object.transactionOptions = $root.google.datastore.v1.TransactionOptions.toObject(message.transactionOptions, options); return object; }; /** - * Converts this Filter to JSON. + * Converts this BeginTransactionRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @instance * @returns {Object.} JSON object */ - Filter.prototype.toJSON = function toJSON() { + BeginTransactionRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Filter + * Gets the default type url for BeginTransactionRequest * @function getTypeUrl - * @memberof google.datastore.v1.Filter + * @memberof google.datastore.v1.BeginTransactionRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Filter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + BeginTransactionRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.Filter"; + return typeUrlPrefix + "/google.datastore.v1.BeginTransactionRequest"; }; - return Filter; + return BeginTransactionRequest; })(); - v1.CompositeFilter = (function() { + v1.BeginTransactionResponse = (function() { /** - * Properties of a CompositeFilter. + * Properties of a BeginTransactionResponse. * @memberof google.datastore.v1 - * @interface ICompositeFilter - * @property {google.datastore.v1.CompositeFilter.Operator|null} [op] CompositeFilter op - * @property {Array.|null} [filters] CompositeFilter filters + * @interface IBeginTransactionResponse + * @property {Uint8Array|null} [transaction] BeginTransactionResponse transaction */ /** - * Constructs a new CompositeFilter. + * Constructs a new BeginTransactionResponse. * @memberof google.datastore.v1 - * @classdesc Represents a CompositeFilter. - * @implements ICompositeFilter + * @classdesc Represents a BeginTransactionResponse. + * @implements IBeginTransactionResponse * @constructor - * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set */ - function CompositeFilter(properties) { - this.filters = []; + function BeginTransactionResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -15875,92 +15544,75 @@ } /** - * CompositeFilter op. - * @member {google.datastore.v1.CompositeFilter.Operator} op - * @memberof google.datastore.v1.CompositeFilter - * @instance - */ - CompositeFilter.prototype.op = 0; - - /** - * CompositeFilter filters. - * @member {Array.} filters - * @memberof google.datastore.v1.CompositeFilter + * BeginTransactionResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.BeginTransactionResponse * @instance */ - CompositeFilter.prototype.filters = $util.emptyArray; + BeginTransactionResponse.prototype.transaction = $util.newBuffer([]); /** - * Creates a new CompositeFilter instance using the specified properties. + * Creates a new BeginTransactionResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.ICompositeFilter=} [properties] Properties to set - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter instance + * @param {google.datastore.v1.IBeginTransactionResponse=} [properties] Properties to set + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse instance */ - CompositeFilter.create = function create(properties) { - return new CompositeFilter(properties); + BeginTransactionResponse.create = function create(properties) { + return new BeginTransactionResponse(properties); }; /** - * Encodes the specified CompositeFilter message. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * Encodes the specified BeginTransactionResponse message. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CompositeFilter.encode = function encode(message, writer) { + BeginTransactionResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.op != null && Object.hasOwnProperty.call(message, "op")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.op); - if (message.filters != null && message.filters.length) - for (var i = 0; i < message.filters.length; ++i) - $root.google.datastore.v1.Filter.encode(message.filters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); return writer; }; /** - * Encodes the specified CompositeFilter message, length delimited. Does not implicitly {@link google.datastore.v1.CompositeFilter.verify|verify} messages. + * Encodes the specified BeginTransactionResponse message, length delimited. Does not implicitly {@link google.datastore.v1.BeginTransactionResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.ICompositeFilter} message CompositeFilter message or plain object to encode + * @param {google.datastore.v1.IBeginTransactionResponse} message BeginTransactionResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CompositeFilter.encodeDelimited = function encodeDelimited(message, writer) { + BeginTransactionResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a CompositeFilter message from the specified reader or buffer. + * Decodes a BeginTransactionResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompositeFilter.decode = function decode(reader, length) { + BeginTransactionResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CompositeFilter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.BeginTransactionResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: { - message.op = reader.int32(); - break; - } - case 2: { - if (!(message.filters && message.filters.length)) - message.filters = []; - message.filters.push($root.google.datastore.v1.Filter.decode(reader, reader.uint32())); + message.transaction = reader.bytes(); break; } default: @@ -15972,177 +15624,133 @@ }; /** - * Decodes a CompositeFilter message from the specified reader or buffer, length delimited. + * Decodes a BeginTransactionResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompositeFilter.decodeDelimited = function decodeDelimited(reader) { + BeginTransactionResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a CompositeFilter message. + * Verifies a BeginTransactionResponse message. * @function verify - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompositeFilter.verify = function verify(message) { + BeginTransactionResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.op != null && message.hasOwnProperty("op")) - switch (message.op) { - default: - return "op: enum value expected"; - case 0: - case 1: - break; - } - if (message.filters != null && message.hasOwnProperty("filters")) { - if (!Array.isArray(message.filters)) - return "filters: array expected"; - for (var i = 0; i < message.filters.length; ++i) { - var error = $root.google.datastore.v1.Filter.verify(message.filters[i]); - if (error) - return "filters." + error; - } - } + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; /** - * Creates a CompositeFilter message from a plain object. Also converts values to their respective internal types. + * Creates a BeginTransactionResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.CompositeFilter} CompositeFilter + * @returns {google.datastore.v1.BeginTransactionResponse} BeginTransactionResponse */ - CompositeFilter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.CompositeFilter) + BeginTransactionResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.BeginTransactionResponse) return object; - var message = new $root.google.datastore.v1.CompositeFilter(); - switch (object.op) { - case "OPERATOR_UNSPECIFIED": - case 0: - message.op = 0; - break; - case "AND": - case 1: - message.op = 1; - break; - } - if (object.filters) { - if (!Array.isArray(object.filters)) - throw TypeError(".google.datastore.v1.CompositeFilter.filters: array expected"); - message.filters = []; - for (var i = 0; i < object.filters.length; ++i) { - if (typeof object.filters[i] !== "object") - throw TypeError(".google.datastore.v1.CompositeFilter.filters: object expected"); - message.filters[i] = $root.google.datastore.v1.Filter.fromObject(object.filters[i]); - } - } + var message = new $root.google.datastore.v1.BeginTransactionResponse(); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a CompositeFilter message. Also converts values to other types if specified. + * Creates a plain object from a BeginTransactionResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static - * @param {google.datastore.v1.CompositeFilter} message CompositeFilter + * @param {google.datastore.v1.BeginTransactionResponse} message BeginTransactionResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CompositeFilter.toObject = function toObject(message, options) { + BeginTransactionResponse.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.filters = []; if (options.defaults) - object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; - if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; - if (message.filters && message.filters.length) { - object.filters = []; - for (var j = 0; j < message.filters.length; ++j) - object.filters[j] = $root.google.datastore.v1.Filter.toObject(message.filters[j], options); - } + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; return object; }; /** - * Converts this CompositeFilter to JSON. + * Converts this BeginTransactionResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @instance * @returns {Object.} JSON object */ - CompositeFilter.prototype.toJSON = function toJSON() { + BeginTransactionResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for CompositeFilter + * Gets the default type url for BeginTransactionResponse * @function getTypeUrl - * @memberof google.datastore.v1.CompositeFilter + * @memberof google.datastore.v1.BeginTransactionResponse * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - CompositeFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + BeginTransactionResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.CompositeFilter"; + return typeUrlPrefix + "/google.datastore.v1.BeginTransactionResponse"; }; - /** - * Operator enum. - * @name google.datastore.v1.CompositeFilter.Operator - * @enum {number} - * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value - * @property {number} AND=1 AND value - */ - CompositeFilter.Operator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; - values[valuesById[1] = "AND"] = 1; - return values; - })(); - - return CompositeFilter; + return BeginTransactionResponse; })(); - v1.PropertyFilter = (function() { + v1.RollbackRequest = (function() { /** - * Properties of a PropertyFilter. + * Properties of a RollbackRequest. * @memberof google.datastore.v1 - * @interface IPropertyFilter - * @property {google.datastore.v1.IPropertyReference|null} [property] PropertyFilter property - * @property {google.datastore.v1.PropertyFilter.Operator|null} [op] PropertyFilter op - * @property {google.datastore.v1.IValue|null} [value] PropertyFilter value + * @interface IRollbackRequest + * @property {string|null} [projectId] RollbackRequest projectId + * @property {string|null} [databaseId] RollbackRequest databaseId + * @property {Uint8Array|null} [transaction] RollbackRequest transaction */ /** - * Constructs a new PropertyFilter. + * Constructs a new RollbackRequest. * @memberof google.datastore.v1 - * @classdesc Represents a PropertyFilter. - * @implements IPropertyFilter + * @classdesc Represents a RollbackRequest. + * @implements IRollbackRequest * @constructor - * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set */ - function PropertyFilter(properties) { + function RollbackRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16150,103 +15758,103 @@ } /** - * PropertyFilter property. - * @member {google.datastore.v1.IPropertyReference|null|undefined} property - * @memberof google.datastore.v1.PropertyFilter + * RollbackRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.RollbackRequest * @instance */ - PropertyFilter.prototype.property = null; + RollbackRequest.prototype.projectId = ""; /** - * PropertyFilter op. - * @member {google.datastore.v1.PropertyFilter.Operator} op - * @memberof google.datastore.v1.PropertyFilter + * RollbackRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.RollbackRequest * @instance */ - PropertyFilter.prototype.op = 0; + RollbackRequest.prototype.databaseId = ""; /** - * PropertyFilter value. - * @member {google.datastore.v1.IValue|null|undefined} value - * @memberof google.datastore.v1.PropertyFilter + * RollbackRequest transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.RollbackRequest * @instance */ - PropertyFilter.prototype.value = null; + RollbackRequest.prototype.transaction = $util.newBuffer([]); /** - * Creates a new PropertyFilter instance using the specified properties. + * Creates a new RollbackRequest instance using the specified properties. * @function create - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IPropertyFilter=} [properties] Properties to set - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter instance + * @param {google.datastore.v1.IRollbackRequest=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest instance */ - PropertyFilter.create = function create(properties) { - return new PropertyFilter(properties); + RollbackRequest.create = function create(properties) { + return new RollbackRequest(properties); }; /** - * Encodes the specified PropertyFilter message. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * Encodes the specified RollbackRequest message. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyFilter.encode = function encode(message, writer) { + RollbackRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.property != null && Object.hasOwnProperty.call(message, "property")) - $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.op != null && Object.hasOwnProperty.call(message, "op")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.op); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified PropertyFilter message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyFilter.verify|verify} messages. + * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.IPropertyFilter} message PropertyFilter message or plain object to encode + * @param {google.datastore.v1.IRollbackRequest} message RollbackRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PropertyFilter.encodeDelimited = function encodeDelimited(message, writer) { + RollbackRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a PropertyFilter message from the specified reader or buffer. + * Decodes a RollbackRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyFilter.decode = function decode(reader, length) { + RollbackRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyFilter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + case 8: { + message.projectId = reader.string(); break; } - case 2: { - message.op = reader.int32(); + case 9: { + message.databaseId = reader.string(); break; } - case 3: { - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + case 1: { + message.transaction = reader.bytes(); break; } default: @@ -16258,237 +15866,147 @@ }; /** - * Decodes a PropertyFilter message from the specified reader or buffer, length delimited. + * Decodes a RollbackRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PropertyFilter.decodeDelimited = function decodeDelimited(reader) { + RollbackRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a PropertyFilter message. + * Verifies a RollbackRequest message. * @function verify - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PropertyFilter.verify = function verify(message) { + RollbackRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.property != null && message.hasOwnProperty("property")) { - var error = $root.google.datastore.v1.PropertyReference.verify(message.property); - if (error) - return "property." + error; - } - if (message.op != null && message.hasOwnProperty("op")) - switch (message.op) { - default: - return "op: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 9: - case 11: - case 13: - break; - } - if (message.value != null && message.hasOwnProperty("value")) { - var error = $root.google.datastore.v1.Value.verify(message.value); - if (error) - return "value." + error; - } + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; /** - * Creates a PropertyFilter message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.PropertyFilter} PropertyFilter + * @returns {google.datastore.v1.RollbackRequest} RollbackRequest */ - PropertyFilter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.PropertyFilter) + RollbackRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackRequest) return object; - var message = new $root.google.datastore.v1.PropertyFilter(); - if (object.property != null) { - if (typeof object.property !== "object") - throw TypeError(".google.datastore.v1.PropertyFilter.property: object expected"); - message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); - } - switch (object.op) { - case "OPERATOR_UNSPECIFIED": - case 0: - message.op = 0; - break; - case "LESS_THAN": - case 1: - message.op = 1; - break; - case "LESS_THAN_OR_EQUAL": - case 2: - message.op = 2; - break; - case "GREATER_THAN": - case 3: - message.op = 3; - break; - case "GREATER_THAN_OR_EQUAL": - case 4: - message.op = 4; - break; - case "EQUAL": - case 5: - message.op = 5; - break; - case "IN": - case 6: - message.op = 6; - break; - case "NOT_EQUAL": - case 9: - message.op = 9; - break; - case "HAS_ANCESTOR": - case 11: - message.op = 11; - break; - case "NOT_IN": - case 13: - message.op = 13; - break; - } - if (object.value != null) { - if (typeof object.value !== "object") - throw TypeError(".google.datastore.v1.PropertyFilter.value: object expected"); - message.value = $root.google.datastore.v1.Value.fromObject(object.value); - } + var message = new $root.google.datastore.v1.RollbackRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; return message; }; /** - * Creates a plain object from a PropertyFilter message. Also converts values to other types if specified. + * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static - * @param {google.datastore.v1.PropertyFilter} message PropertyFilter + * @param {google.datastore.v1.RollbackRequest} message RollbackRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PropertyFilter.toObject = function toObject(message, options) { + RollbackRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.property = null; - object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; - object.value = null; + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } + object.projectId = ""; + object.databaseId = ""; } - if (message.property != null && message.hasOwnProperty("property")) - object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); - if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; - if (message.value != null && message.hasOwnProperty("value")) - object.value = $root.google.datastore.v1.Value.toObject(message.value, options); + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this PropertyFilter to JSON. + * Converts this RollbackRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @instance * @returns {Object.} JSON object */ - PropertyFilter.prototype.toJSON = function toJSON() { + RollbackRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for PropertyFilter + * Gets the default type url for RollbackRequest * @function getTypeUrl - * @memberof google.datastore.v1.PropertyFilter + * @memberof google.datastore.v1.RollbackRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - PropertyFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RollbackRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.PropertyFilter"; + return typeUrlPrefix + "/google.datastore.v1.RollbackRequest"; }; - /** - * Operator enum. - * @name google.datastore.v1.PropertyFilter.Operator - * @enum {number} - * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value - * @property {number} LESS_THAN=1 LESS_THAN value - * @property {number} LESS_THAN_OR_EQUAL=2 LESS_THAN_OR_EQUAL value - * @property {number} GREATER_THAN=3 GREATER_THAN value - * @property {number} GREATER_THAN_OR_EQUAL=4 GREATER_THAN_OR_EQUAL value - * @property {number} EQUAL=5 EQUAL value - * @property {number} IN=6 IN value - * @property {number} NOT_EQUAL=9 NOT_EQUAL value - * @property {number} HAS_ANCESTOR=11 HAS_ANCESTOR value - * @property {number} NOT_IN=13 NOT_IN value - */ - PropertyFilter.Operator = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; - values[valuesById[1] = "LESS_THAN"] = 1; - values[valuesById[2] = "LESS_THAN_OR_EQUAL"] = 2; - values[valuesById[3] = "GREATER_THAN"] = 3; - values[valuesById[4] = "GREATER_THAN_OR_EQUAL"] = 4; - values[valuesById[5] = "EQUAL"] = 5; - values[valuesById[6] = "IN"] = 6; - values[valuesById[9] = "NOT_EQUAL"] = 9; - values[valuesById[11] = "HAS_ANCESTOR"] = 11; - values[valuesById[13] = "NOT_IN"] = 13; - return values; - })(); - - return PropertyFilter; + return RollbackRequest; })(); - v1.GqlQuery = (function() { + v1.RollbackResponse = (function() { /** - * Properties of a GqlQuery. + * Properties of a RollbackResponse. * @memberof google.datastore.v1 - * @interface IGqlQuery - * @property {string|null} [queryString] GqlQuery queryString - * @property {boolean|null} [allowLiterals] GqlQuery allowLiterals - * @property {Object.|null} [namedBindings] GqlQuery namedBindings - * @property {Array.|null} [positionalBindings] GqlQuery positionalBindings + * @interface IRollbackResponse */ /** - * Constructs a new GqlQuery. + * Constructs a new RollbackResponse. * @memberof google.datastore.v1 - * @classdesc Represents a GqlQuery. - * @implements IGqlQuery + * @classdesc Represents a RollbackResponse. + * @implements IRollbackResponse * @constructor - * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set */ - function GqlQuery(properties) { - this.namedBindings = {}; - this.positionalBindings = []; + function RollbackResponse(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16496,144 +16014,63 @@ } /** - * GqlQuery queryString. - * @member {string} queryString - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.queryString = ""; - - /** - * GqlQuery allowLiterals. - * @member {boolean} allowLiterals - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.allowLiterals = false; - - /** - * GqlQuery namedBindings. - * @member {Object.} namedBindings - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.namedBindings = $util.emptyObject; - - /** - * GqlQuery positionalBindings. - * @member {Array.} positionalBindings - * @memberof google.datastore.v1.GqlQuery - * @instance - */ - GqlQuery.prototype.positionalBindings = $util.emptyArray; - - /** - * Creates a new GqlQuery instance using the specified properties. + * Creates a new RollbackResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static - * @param {google.datastore.v1.IGqlQuery=} [properties] Properties to set - * @returns {google.datastore.v1.GqlQuery} GqlQuery instance + * @param {google.datastore.v1.IRollbackResponse=} [properties] Properties to set + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse instance */ - GqlQuery.create = function create(properties) { - return new GqlQuery(properties); + RollbackResponse.create = function create(properties) { + return new RollbackResponse(properties); }; /** - * Encodes the specified GqlQuery message. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * Encodes the specified RollbackResponse message. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static - * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQuery.encode = function encode(message, writer) { + RollbackResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.queryString != null && Object.hasOwnProperty.call(message, "queryString")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.queryString); - if (message.allowLiterals != null && Object.hasOwnProperty.call(message, "allowLiterals")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowLiterals); - if (message.positionalBindings != null && message.positionalBindings.length) - for (var i = 0; i < message.positionalBindings.length; ++i) - $root.google.datastore.v1.GqlQueryParameter.encode(message.positionalBindings[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.namedBindings != null && Object.hasOwnProperty.call(message, "namedBindings")) - for (var keys = Object.keys(message.namedBindings), i = 0; i < keys.length; ++i) { - writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.datastore.v1.GqlQueryParameter.encode(message.namedBindings[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); - } return writer; }; /** - * Encodes the specified GqlQuery message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQuery.verify|verify} messages. + * Encodes the specified RollbackResponse message, length delimited. Does not implicitly {@link google.datastore.v1.RollbackResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static - * @param {google.datastore.v1.IGqlQuery} message GqlQuery message or plain object to encode + * @param {google.datastore.v1.IRollbackResponse} message RollbackResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQuery.encodeDelimited = function encodeDelimited(message, writer) { + RollbackResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a GqlQuery message from the specified reader or buffer. + * Decodes a RollbackResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQuery.decode = function decode(reader, length) { + RollbackResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQuery(), key, value; + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.RollbackResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - message.queryString = reader.string(); - break; - } - case 2: { - message.allowLiterals = reader.bool(); - break; - } - case 5: { - if (message.namedBindings === $util.emptyObject) - message.namedBindings = {}; - var end2 = reader.uint32() + reader.pos; - key = ""; - value = null; - while (reader.pos < end2) { - var tag2 = reader.uint32(); - switch (tag2 >>> 3) { - case 1: - key = reader.string(); - break; - case 2: - value = $root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag2 & 7); - break; - } - } - message.namedBindings[key] = value; - break; - } - case 4: { - if (!(message.positionalBindings && message.positionalBindings.length)) - message.positionalBindings = []; - message.positionalBindings.push($root.google.datastore.v1.GqlQueryParameter.decode(reader, reader.uint32())); - break; - } default: reader.skipType(tag & 7); break; @@ -16643,186 +16080,114 @@ }; /** - * Decodes a GqlQuery message from the specified reader or buffer, length delimited. + * Decodes a RollbackResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQuery.decodeDelimited = function decodeDelimited(reader) { + RollbackResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a GqlQuery message. + * Verifies a RollbackResponse message. * @function verify - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GqlQuery.verify = function verify(message) { + RollbackResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.queryString != null && message.hasOwnProperty("queryString")) - if (!$util.isString(message.queryString)) - return "queryString: string expected"; - if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) - if (typeof message.allowLiterals !== "boolean") - return "allowLiterals: boolean expected"; - if (message.namedBindings != null && message.hasOwnProperty("namedBindings")) { - if (!$util.isObject(message.namedBindings)) - return "namedBindings: object expected"; - var key = Object.keys(message.namedBindings); - for (var i = 0; i < key.length; ++i) { - var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.namedBindings[key[i]]); - if (error) - return "namedBindings." + error; - } - } - if (message.positionalBindings != null && message.hasOwnProperty("positionalBindings")) { - if (!Array.isArray(message.positionalBindings)) - return "positionalBindings: array expected"; - for (var i = 0; i < message.positionalBindings.length; ++i) { - var error = $root.google.datastore.v1.GqlQueryParameter.verify(message.positionalBindings[i]); - if (error) - return "positionalBindings." + error; - } - } return null; }; /** - * Creates a GqlQuery message from a plain object. Also converts values to their respective internal types. + * Creates a RollbackResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.GqlQuery} GqlQuery + * @returns {google.datastore.v1.RollbackResponse} RollbackResponse */ - GqlQuery.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.GqlQuery) + RollbackResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.RollbackResponse) return object; - var message = new $root.google.datastore.v1.GqlQuery(); - if (object.queryString != null) - message.queryString = String(object.queryString); - if (object.allowLiterals != null) - message.allowLiterals = Boolean(object.allowLiterals); - if (object.namedBindings) { - if (typeof object.namedBindings !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); - message.namedBindings = {}; - for (var keys = Object.keys(object.namedBindings), i = 0; i < keys.length; ++i) { - if (typeof object.namedBindings[keys[i]] !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.namedBindings: object expected"); - message.namedBindings[keys[i]] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.namedBindings[keys[i]]); - } - } - if (object.positionalBindings) { - if (!Array.isArray(object.positionalBindings)) - throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: array expected"); - message.positionalBindings = []; - for (var i = 0; i < object.positionalBindings.length; ++i) { - if (typeof object.positionalBindings[i] !== "object") - throw TypeError(".google.datastore.v1.GqlQuery.positionalBindings: object expected"); - message.positionalBindings[i] = $root.google.datastore.v1.GqlQueryParameter.fromObject(object.positionalBindings[i]); - } - } - return message; + return new $root.google.datastore.v1.RollbackResponse(); }; /** - * Creates a plain object from a GqlQuery message. Also converts values to other types if specified. + * Creates a plain object from a RollbackResponse message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static - * @param {google.datastore.v1.GqlQuery} message GqlQuery + * @param {google.datastore.v1.RollbackResponse} message RollbackResponse * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GqlQuery.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.positionalBindings = []; - if (options.objects || options.defaults) - object.namedBindings = {}; - if (options.defaults) { - object.queryString = ""; - object.allowLiterals = false; - } - if (message.queryString != null && message.hasOwnProperty("queryString")) - object.queryString = message.queryString; - if (message.allowLiterals != null && message.hasOwnProperty("allowLiterals")) - object.allowLiterals = message.allowLiterals; - if (message.positionalBindings && message.positionalBindings.length) { - object.positionalBindings = []; - for (var j = 0; j < message.positionalBindings.length; ++j) - object.positionalBindings[j] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.positionalBindings[j], options); - } - var keys2; - if (message.namedBindings && (keys2 = Object.keys(message.namedBindings)).length) { - object.namedBindings = {}; - for (var j = 0; j < keys2.length; ++j) - object.namedBindings[keys2[j]] = $root.google.datastore.v1.GqlQueryParameter.toObject(message.namedBindings[keys2[j]], options); - } - return object; + RollbackResponse.toObject = function toObject() { + return {}; }; /** - * Converts this GqlQuery to JSON. + * Converts this RollbackResponse to JSON. * @function toJSON - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @instance * @returns {Object.} JSON object */ - GqlQuery.prototype.toJSON = function toJSON() { + RollbackResponse.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for GqlQuery + * Gets the default type url for RollbackResponse * @function getTypeUrl - * @memberof google.datastore.v1.GqlQuery + * @memberof google.datastore.v1.RollbackResponse * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - GqlQuery.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RollbackResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.GqlQuery"; + return typeUrlPrefix + "/google.datastore.v1.RollbackResponse"; }; - return GqlQuery; + return RollbackResponse; })(); - v1.GqlQueryParameter = (function() { + v1.CommitRequest = (function() { /** - * Properties of a GqlQueryParameter. + * Properties of a CommitRequest. * @memberof google.datastore.v1 - * @interface IGqlQueryParameter - * @property {google.datastore.v1.IValue|null} [value] GqlQueryParameter value - * @property {Uint8Array|null} [cursor] GqlQueryParameter cursor + * @interface ICommitRequest + * @property {string|null} [projectId] CommitRequest projectId + * @property {string|null} [databaseId] CommitRequest databaseId + * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode + * @property {Uint8Array|null} [transaction] CommitRequest transaction + * @property {Array.|null} [mutations] CommitRequest mutations */ /** - * Constructs a new GqlQueryParameter. + * Constructs a new CommitRequest. * @memberof google.datastore.v1 - * @classdesc Represents a GqlQueryParameter. - * @implements IGqlQueryParameter + * @classdesc Represents a CommitRequest. + * @implements ICommitRequest * @constructor - * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set */ - function GqlQueryParameter(properties) { + function CommitRequest(properties) { + this.mutations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -16830,103 +16195,148 @@ } /** - * GqlQueryParameter value. - * @member {google.datastore.v1.IValue|null|undefined} value - * @memberof google.datastore.v1.GqlQueryParameter + * CommitRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.CommitRequest * @instance */ - GqlQueryParameter.prototype.value = null; + CommitRequest.prototype.projectId = ""; /** - * GqlQueryParameter cursor. - * @member {Uint8Array|null|undefined} cursor - * @memberof google.datastore.v1.GqlQueryParameter + * CommitRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.CommitRequest * @instance */ - GqlQueryParameter.prototype.cursor = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + CommitRequest.prototype.databaseId = ""; /** - * GqlQueryParameter parameterType. - * @member {"value"|"cursor"|undefined} parameterType - * @memberof google.datastore.v1.GqlQueryParameter + * CommitRequest mode. + * @member {google.datastore.v1.CommitRequest.Mode} mode + * @memberof google.datastore.v1.CommitRequest * @instance */ - Object.defineProperty(GqlQueryParameter.prototype, "parameterType", { - get: $util.oneOfGetter($oneOfFields = ["value", "cursor"]), - set: $util.oneOfSetter($oneOfFields) - }); + CommitRequest.prototype.mode = 0; /** - * Creates a new GqlQueryParameter instance using the specified properties. - * @function create - * @memberof google.datastore.v1.GqlQueryParameter - * @static - * @param {google.datastore.v1.IGqlQueryParameter=} [properties] Properties to set - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter instance + * CommitRequest transaction. + * @member {Uint8Array|null|undefined} transaction + * @memberof google.datastore.v1.CommitRequest + * @instance */ - GqlQueryParameter.create = function create(properties) { - return new GqlQueryParameter(properties); - }; + CommitRequest.prototype.transaction = null; /** - * Encodes the specified GqlQueryParameter message. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.GqlQueryParameter + * CommitRequest mutations. + * @member {Array.} mutations + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.mutations = $util.emptyArray; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * CommitRequest transactionSelector. + * @member {"transaction"|undefined} transactionSelector + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + Object.defineProperty(CommitRequest.prototype, "transactionSelector", { + get: $util.oneOfGetter($oneOfFields = ["transaction"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new CommitRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {google.datastore.v1.ICommitRequest=} [properties] Properties to set + * @returns {google.datastore.v1.CommitRequest} CommitRequest instance + */ + CommitRequest.create = function create(properties) { + return new CommitRequest(properties); + }; + + /** + * Encodes the specified CommitRequest message. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.CommitRequest + * @static + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQueryParameter.encode = function encode(message, writer) { + CommitRequest.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - $root.google.datastore.v1.Value.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.cursor != null && Object.hasOwnProperty.call(message, "cursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.cursor); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.transaction); + if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.mode); + if (message.mutations != null && message.mutations.length) + for (var i = 0; i < message.mutations.length; ++i) + $root.google.datastore.v1.Mutation.encode(message.mutations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); return writer; }; /** - * Encodes the specified GqlQueryParameter message, length delimited. Does not implicitly {@link google.datastore.v1.GqlQueryParameter.verify|verify} messages. + * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.datastore.v1.CommitRequest.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.IGqlQueryParameter} message GqlQueryParameter message or plain object to encode + * @param {google.datastore.v1.ICommitRequest} message CommitRequest message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GqlQueryParameter.encodeDelimited = function encodeDelimited(message, writer) { + CommitRequest.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer. + * Decodes a CommitRequest message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.CommitRequest} CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQueryParameter.decode = function decode(reader, length) { + CommitRequest.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.GqlQueryParameter(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitRequest(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 2: { - message.value = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + case 8: { + message.projectId = reader.string(); break; } - case 3: { - message.cursor = reader.bytes(); + case 9: { + message.databaseId = reader.string(); + break; + } + case 5: { + message.mode = reader.int32(); + break; + } + case 1: { + message.transaction = reader.bytes(); + break; + } + case 6: { + if (!(message.mutations && message.mutations.length)) + message.mutations = []; + message.mutations.push($root.google.datastore.v1.Mutation.decode(reader, reader.uint32())); break; } default: @@ -16938,157 +16348,218 @@ }; /** - * Decodes a GqlQueryParameter message from the specified reader or buffer, length delimited. + * Decodes a CommitRequest message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.CommitRequest} CommitRequest * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GqlQueryParameter.decodeDelimited = function decodeDelimited(reader) { + CommitRequest.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a GqlQueryParameter message. + * Verifies a CommitRequest message. * @function verify - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GqlQueryParameter.verify = function verify(message) { + CommitRequest.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.value != null && message.hasOwnProperty("value")) { - properties.parameterType = 1; - { - var error = $root.google.datastore.v1.Value.verify(message.value); - if (error) - return "value." + error; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + break; } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + properties.transactionSelector = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; } - if (message.cursor != null && message.hasOwnProperty("cursor")) { - if (properties.parameterType === 1) - return "parameterType: multiple values"; - properties.parameterType = 1; - if (!(message.cursor && typeof message.cursor.length === "number" || $util.isString(message.cursor))) - return "cursor: buffer expected"; + if (message.mutations != null && message.hasOwnProperty("mutations")) { + if (!Array.isArray(message.mutations)) + return "mutations: array expected"; + for (var i = 0; i < message.mutations.length; ++i) { + var error = $root.google.datastore.v1.Mutation.verify(message.mutations[i]); + if (error) + return "mutations." + error; + } } return null; }; /** - * Creates a GqlQueryParameter message from a plain object. Also converts values to their respective internal types. + * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.GqlQueryParameter} GqlQueryParameter + * @returns {google.datastore.v1.CommitRequest} CommitRequest */ - GqlQueryParameter.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.GqlQueryParameter) + CommitRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitRequest) return object; - var message = new $root.google.datastore.v1.GqlQueryParameter(); - if (object.value != null) { - if (typeof object.value !== "object") - throw TypeError(".google.datastore.v1.GqlQueryParameter.value: object expected"); - message.value = $root.google.datastore.v1.Value.fromObject(object.value); + var message = new $root.google.datastore.v1.CommitRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + switch (object.mode) { + case "MODE_UNSPECIFIED": + case 0: + message.mode = 0; + break; + case "TRANSACTIONAL": + case 1: + message.mode = 1; + break; + case "NON_TRANSACTIONAL": + case 2: + message.mode = 2; + break; + } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; + if (object.mutations) { + if (!Array.isArray(object.mutations)) + throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); + message.mutations = []; + for (var i = 0; i < object.mutations.length; ++i) { + if (typeof object.mutations[i] !== "object") + throw TypeError(".google.datastore.v1.CommitRequest.mutations: object expected"); + message.mutations[i] = $root.google.datastore.v1.Mutation.fromObject(object.mutations[i]); + } } - if (object.cursor != null) - if (typeof object.cursor === "string") - $util.base64.decode(object.cursor, message.cursor = $util.newBuffer($util.base64.length(object.cursor)), 0); - else if (object.cursor.length >= 0) - message.cursor = object.cursor; return message; }; /** - * Creates a plain object from a GqlQueryParameter message. Also converts values to other types if specified. + * Creates a plain object from a CommitRequest message. Also converts values to other types if specified. * @function toObject - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static - * @param {google.datastore.v1.GqlQueryParameter} message GqlQueryParameter + * @param {google.datastore.v1.CommitRequest} message CommitRequest * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GqlQueryParameter.toObject = function toObject(message, options) { + CommitRequest.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.value != null && message.hasOwnProperty("value")) { - object.value = $root.google.datastore.v1.Value.toObject(message.value, options); - if (options.oneofs) - object.parameterType = "value"; + if (options.arrays || options.defaults) + object.mutations = []; + if (options.defaults) { + object.mode = options.enums === String ? "MODE_UNSPECIFIED" : 0; + object.projectId = ""; + object.databaseId = ""; } - if (message.cursor != null && message.hasOwnProperty("cursor")) { - object.cursor = options.bytes === String ? $util.base64.encode(message.cursor, 0, message.cursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.cursor) : message.cursor; + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; if (options.oneofs) - object.parameterType = "cursor"; + object.transactionSelector = "transaction"; + } + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; + if (message.mutations && message.mutations.length) { + object.mutations = []; + for (var j = 0; j < message.mutations.length; ++j) + object.mutations[j] = $root.google.datastore.v1.Mutation.toObject(message.mutations[j], options); } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; return object; }; /** - * Converts this GqlQueryParameter to JSON. + * Converts this CommitRequest to JSON. * @function toJSON - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @instance * @returns {Object.} JSON object */ - GqlQueryParameter.prototype.toJSON = function toJSON() { + CommitRequest.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for GqlQueryParameter + * Gets the default type url for CommitRequest * @function getTypeUrl - * @memberof google.datastore.v1.GqlQueryParameter + * @memberof google.datastore.v1.CommitRequest * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - GqlQueryParameter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CommitRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.datastore.v1.GqlQueryParameter"; + return typeUrlPrefix + "/google.datastore.v1.CommitRequest"; }; - return GqlQueryParameter; - })(); - - v1.QueryResultBatch = (function() { - /** - * Properties of a QueryResultBatch. + * Mode enum. + * @name google.datastore.v1.CommitRequest.Mode + * @enum {number} + * @property {number} MODE_UNSPECIFIED=0 MODE_UNSPECIFIED value + * @property {number} TRANSACTIONAL=1 TRANSACTIONAL value + * @property {number} NON_TRANSACTIONAL=2 NON_TRANSACTIONAL value + */ + CommitRequest.Mode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "TRANSACTIONAL"] = 1; + values[valuesById[2] = "NON_TRANSACTIONAL"] = 2; + return values; + })(); + + return CommitRequest; + })(); + + v1.CommitResponse = (function() { + + /** + * Properties of a CommitResponse. * @memberof google.datastore.v1 - * @interface IQueryResultBatch - * @property {number|null} [skippedResults] QueryResultBatch skippedResults - * @property {Uint8Array|null} [skippedCursor] QueryResultBatch skippedCursor - * @property {google.datastore.v1.EntityResult.ResultType|null} [entityResultType] QueryResultBatch entityResultType - * @property {Array.|null} [entityResults] QueryResultBatch entityResults - * @property {Uint8Array|null} [endCursor] QueryResultBatch endCursor - * @property {google.datastore.v1.QueryResultBatch.MoreResultsType|null} [moreResults] QueryResultBatch moreResults - * @property {number|Long|null} [snapshotVersion] QueryResultBatch snapshotVersion - * @property {google.protobuf.ITimestamp|null} [readTime] QueryResultBatch readTime + * @interface ICommitResponse + * @property {Array.|null} [mutationResults] CommitResponse mutationResults + * @property {number|null} [indexUpdates] CommitResponse indexUpdates + * @property {google.protobuf.ITimestamp|null} [commitTime] CommitResponse commitTime */ /** - * Constructs a new QueryResultBatch. + * Constructs a new CommitResponse. * @memberof google.datastore.v1 - * @classdesc Represents a QueryResultBatch. - * @implements IQueryResultBatch + * @classdesc Represents a CommitResponse. + * @implements ICommitResponse * @constructor - * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set */ - function QueryResultBatch(properties) { - this.entityResults = []; + function CommitResponse(properties) { + this.mutationResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -17096,176 +16567,106 @@ } /** - * QueryResultBatch skippedResults. - * @member {number} skippedResults - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.skippedResults = 0; - - /** - * QueryResultBatch skippedCursor. - * @member {Uint8Array} skippedCursor - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.skippedCursor = $util.newBuffer([]); - - /** - * QueryResultBatch entityResultType. - * @member {google.datastore.v1.EntityResult.ResultType} entityResultType - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.entityResultType = 0; - - /** - * QueryResultBatch entityResults. - * @member {Array.} entityResults - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.entityResults = $util.emptyArray; - - /** - * QueryResultBatch endCursor. - * @member {Uint8Array} endCursor - * @memberof google.datastore.v1.QueryResultBatch - * @instance - */ - QueryResultBatch.prototype.endCursor = $util.newBuffer([]); - - /** - * QueryResultBatch moreResults. - * @member {google.datastore.v1.QueryResultBatch.MoreResultsType} moreResults - * @memberof google.datastore.v1.QueryResultBatch + * CommitResponse mutationResults. + * @member {Array.} mutationResults + * @memberof google.datastore.v1.CommitResponse * @instance */ - QueryResultBatch.prototype.moreResults = 0; + CommitResponse.prototype.mutationResults = $util.emptyArray; /** - * QueryResultBatch snapshotVersion. - * @member {number|Long} snapshotVersion - * @memberof google.datastore.v1.QueryResultBatch + * CommitResponse indexUpdates. + * @member {number} indexUpdates + * @memberof google.datastore.v1.CommitResponse * @instance */ - QueryResultBatch.prototype.snapshotVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + CommitResponse.prototype.indexUpdates = 0; /** - * QueryResultBatch readTime. - * @member {google.protobuf.ITimestamp|null|undefined} readTime - * @memberof google.datastore.v1.QueryResultBatch + * CommitResponse commitTime. + * @member {google.protobuf.ITimestamp|null|undefined} commitTime + * @memberof google.datastore.v1.CommitResponse * @instance */ - QueryResultBatch.prototype.readTime = null; + CommitResponse.prototype.commitTime = null; /** - * Creates a new QueryResultBatch instance using the specified properties. + * Creates a new CommitResponse instance using the specified properties. * @function create - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static - * @param {google.datastore.v1.IQueryResultBatch=} [properties] Properties to set - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch instance + * @param {google.datastore.v1.ICommitResponse=} [properties] Properties to set + * @returns {google.datastore.v1.CommitResponse} CommitResponse instance */ - QueryResultBatch.create = function create(properties) { - return new QueryResultBatch(properties); + CommitResponse.create = function create(properties) { + return new CommitResponse(properties); }; /** - * Encodes the specified QueryResultBatch message. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * Encodes the specified CommitResponse message. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. * @function encode - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static - * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QueryResultBatch.encode = function encode(message, writer) { + CommitResponse.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.entityResultType != null && Object.hasOwnProperty.call(message, "entityResultType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.entityResultType); - if (message.entityResults != null && message.entityResults.length) - for (var i = 0; i < message.entityResults.length; ++i) - $root.google.datastore.v1.EntityResult.encode(message.entityResults[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.skippedCursor != null && Object.hasOwnProperty.call(message, "skippedCursor")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.skippedCursor); - if (message.endCursor != null && Object.hasOwnProperty.call(message, "endCursor")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.endCursor); - if (message.moreResults != null && Object.hasOwnProperty.call(message, "moreResults")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.moreResults); - if (message.skippedResults != null && Object.hasOwnProperty.call(message, "skippedResults")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.skippedResults); - if (message.snapshotVersion != null && Object.hasOwnProperty.call(message, "snapshotVersion")) - writer.uint32(/* id 7, wireType 0 =*/56).int64(message.snapshotVersion); - if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) - $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.mutationResults != null && message.mutationResults.length) + for (var i = 0; i < message.mutationResults.length; ++i) + $root.google.datastore.v1.MutationResult.encode(message.mutationResults[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.indexUpdates != null && Object.hasOwnProperty.call(message, "indexUpdates")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.indexUpdates); + if (message.commitTime != null && Object.hasOwnProperty.call(message, "commitTime")) + $root.google.protobuf.Timestamp.encode(message.commitTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; /** - * Encodes the specified QueryResultBatch message, length delimited. Does not implicitly {@link google.datastore.v1.QueryResultBatch.verify|verify} messages. + * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.datastore.v1.CommitResponse.verify|verify} messages. * @function encodeDelimited - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static - * @param {google.datastore.v1.IQueryResultBatch} message QueryResultBatch message or plain object to encode + * @param {google.datastore.v1.ICommitResponse} message CommitResponse message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - QueryResultBatch.encodeDelimited = function encodeDelimited(message, writer) { + CommitResponse.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a QueryResultBatch message from the specified reader or buffer. + * Decodes a CommitResponse message from the specified reader or buffer. * @function decode - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.CommitResponse} CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QueryResultBatch.decode = function decode(reader, length) { + CommitResponse.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryResultBatch(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.CommitResponse(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 6: { - message.skippedResults = reader.int32(); - break; - } case 3: { - message.skippedCursor = reader.bytes(); - break; - } - case 1: { - message.entityResultType = reader.int32(); - break; - } - case 2: { - if (!(message.entityResults && message.entityResults.length)) - message.entityResults = []; - message.entityResults.push($root.google.datastore.v1.EntityResult.decode(reader, reader.uint32())); + if (!(message.mutationResults && message.mutationResults.length)) + message.mutationResults = []; + message.mutationResults.push($root.google.datastore.v1.MutationResult.decode(reader, reader.uint32())); break; } case 4: { - message.endCursor = reader.bytes(); - break; - } - case 5: { - message.moreResults = reader.int32(); - break; - } - case 7: { - message.snapshotVersion = reader.int64(); + message.indexUpdates = reader.int32(); break; } case 8: { - message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.commitTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } default: @@ -17277,285 +16678,2801 @@ }; /** - * Decodes a QueryResultBatch message from the specified reader or buffer, length delimited. + * Decodes a CommitResponse message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.CommitResponse} CommitResponse * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - QueryResultBatch.decodeDelimited = function decodeDelimited(reader) { + CommitResponse.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a QueryResultBatch message. + * Verifies a CommitResponse message. * @function verify - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - QueryResultBatch.verify = function verify(message) { + CommitResponse.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) - if (!$util.isInteger(message.skippedResults)) - return "skippedResults: integer expected"; - if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) - if (!(message.skippedCursor && typeof message.skippedCursor.length === "number" || $util.isString(message.skippedCursor))) - return "skippedCursor: buffer expected"; - if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) - switch (message.entityResultType) { - default: - return "entityResultType: enum value expected"; - case 0: - case 1: - case 2: - case 3: - break; - } - if (message.entityResults != null && message.hasOwnProperty("entityResults")) { - if (!Array.isArray(message.entityResults)) - return "entityResults: array expected"; - for (var i = 0; i < message.entityResults.length; ++i) { - var error = $root.google.datastore.v1.EntityResult.verify(message.entityResults[i]); + if (message.mutationResults != null && message.hasOwnProperty("mutationResults")) { + if (!Array.isArray(message.mutationResults)) + return "mutationResults: array expected"; + for (var i = 0; i < message.mutationResults.length; ++i) { + var error = $root.google.datastore.v1.MutationResult.verify(message.mutationResults[i]); if (error) - return "entityResults." + error; + return "mutationResults." + error; } } - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - if (!(message.endCursor && typeof message.endCursor.length === "number" || $util.isString(message.endCursor))) - return "endCursor: buffer expected"; - if (message.moreResults != null && message.hasOwnProperty("moreResults")) - switch (message.moreResults) { - default: - return "moreResults: enum value expected"; - case 0: - case 1: - case 2: - case 4: - case 3: - break; - } - if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) - if (!$util.isInteger(message.snapshotVersion) && !(message.snapshotVersion && $util.isInteger(message.snapshotVersion.low) && $util.isInteger(message.snapshotVersion.high))) - return "snapshotVersion: integer|Long expected"; - if (message.readTime != null && message.hasOwnProperty("readTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + if (!$util.isInteger(message.indexUpdates)) + return "indexUpdates: integer expected"; + if (message.commitTime != null && message.hasOwnProperty("commitTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.commitTime); if (error) - return "readTime." + error; + return "commitTime." + error; } return null; }; /** - * Creates a QueryResultBatch message from a plain object. Also converts values to their respective internal types. + * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.datastore.v1.QueryResultBatch + * @memberof google.datastore.v1.CommitResponse * @static * @param {Object.} object Plain object - * @returns {google.datastore.v1.QueryResultBatch} QueryResultBatch + * @returns {google.datastore.v1.CommitResponse} CommitResponse */ - QueryResultBatch.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.QueryResultBatch) + CommitResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.CommitResponse) return object; - var message = new $root.google.datastore.v1.QueryResultBatch(); - if (object.skippedResults != null) - message.skippedResults = object.skippedResults | 0; - if (object.skippedCursor != null) - if (typeof object.skippedCursor === "string") - $util.base64.decode(object.skippedCursor, message.skippedCursor = $util.newBuffer($util.base64.length(object.skippedCursor)), 0); - else if (object.skippedCursor.length >= 0) - message.skippedCursor = object.skippedCursor; - switch (object.entityResultType) { - case "RESULT_TYPE_UNSPECIFIED": - case 0: - message.entityResultType = 0; - break; - case "FULL": - case 1: - message.entityResultType = 1; - break; - case "PROJECTION": - case 2: - message.entityResultType = 2; - break; - case "KEY_ONLY": - case 3: - message.entityResultType = 3; - break; + var message = new $root.google.datastore.v1.CommitResponse(); + if (object.mutationResults) { + if (!Array.isArray(object.mutationResults)) + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: array expected"); + message.mutationResults = []; + for (var i = 0; i < object.mutationResults.length; ++i) { + if (typeof object.mutationResults[i] !== "object") + throw TypeError(".google.datastore.v1.CommitResponse.mutationResults: object expected"); + message.mutationResults[i] = $root.google.datastore.v1.MutationResult.fromObject(object.mutationResults[i]); + } } - if (object.entityResults) { - if (!Array.isArray(object.entityResults)) - throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: array expected"); - message.entityResults = []; - for (var i = 0; i < object.entityResults.length; ++i) { - if (typeof object.entityResults[i] !== "object") - throw TypeError(".google.datastore.v1.QueryResultBatch.entityResults: object expected"); - message.entityResults[i] = $root.google.datastore.v1.EntityResult.fromObject(object.entityResults[i]); + if (object.indexUpdates != null) + message.indexUpdates = object.indexUpdates | 0; + if (object.commitTime != null) { + if (typeof object.commitTime !== "object") + throw TypeError(".google.datastore.v1.CommitResponse.commitTime: object expected"); + message.commitTime = $root.google.protobuf.Timestamp.fromObject(object.commitTime); + } + return message; + }; + + /** + * Creates a plain object from a CommitResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {google.datastore.v1.CommitResponse} message CommitResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CommitResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.mutationResults = []; + if (options.defaults) { + object.indexUpdates = 0; + object.commitTime = null; + } + if (message.mutationResults && message.mutationResults.length) { + object.mutationResults = []; + for (var j = 0; j < message.mutationResults.length; ++j) + object.mutationResults[j] = $root.google.datastore.v1.MutationResult.toObject(message.mutationResults[j], options); + } + if (message.indexUpdates != null && message.hasOwnProperty("indexUpdates")) + object.indexUpdates = message.indexUpdates; + if (message.commitTime != null && message.hasOwnProperty("commitTime")) + object.commitTime = $root.google.protobuf.Timestamp.toObject(message.commitTime, options); + return object; + }; + + /** + * Converts this CommitResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.CommitResponse + * @instance + * @returns {Object.} JSON object + */ + CommitResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CommitResponse + * @function getTypeUrl + * @memberof google.datastore.v1.CommitResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CommitResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.CommitResponse"; + }; + + return CommitResponse; + })(); + + v1.AllocateIdsRequest = (function() { + + /** + * Properties of an AllocateIdsRequest. + * @memberof google.datastore.v1 + * @interface IAllocateIdsRequest + * @property {string|null} [projectId] AllocateIdsRequest projectId + * @property {string|null} [databaseId] AllocateIdsRequest databaseId + * @property {Array.|null} [keys] AllocateIdsRequest keys + */ + + /** + * Constructs a new AllocateIdsRequest. + * @memberof google.datastore.v1 + * @classdesc Represents an AllocateIdsRequest. + * @implements IAllocateIdsRequest + * @constructor + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + */ + function AllocateIdsRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AllocateIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.projectId = ""; + + /** + * AllocateIdsRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.databaseId = ""; + + /** + * AllocateIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + */ + AllocateIdsRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new AllocateIdsRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest instance + */ + AllocateIdsRequest.create = function create(properties) { + return new AllocateIdsRequest(properties); + }; + + /** + * Encodes the specified AllocateIdsRequest message. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + return writer; + }; + + /** + * Encodes the specified AllocateIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.IAllocateIdsRequest} message AllocateIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllocateIdsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllocateIdsRequest message. + * @function verify + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllocateIdsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates an AllocateIdsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AllocateIdsRequest} AllocateIdsRequest + */ + AllocateIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsRequest) + return object; + var message = new $root.google.datastore.v1.AllocateIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an AllocateIdsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {google.datastore.v1.AllocateIdsRequest} message AllocateIdsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllocateIdsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) { + object.projectId = ""; + object.databaseId = ""; + } + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; + return object; + }; + + /** + * Converts this AllocateIdsRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.AllocateIdsRequest + * @instance + * @returns {Object.} JSON object + */ + AllocateIdsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for AllocateIdsRequest + * @function getTypeUrl + * @memberof google.datastore.v1.AllocateIdsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + AllocateIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AllocateIdsRequest"; + }; + + return AllocateIdsRequest; + })(); + + v1.AllocateIdsResponse = (function() { + + /** + * Properties of an AllocateIdsResponse. + * @memberof google.datastore.v1 + * @interface IAllocateIdsResponse + * @property {Array.|null} [keys] AllocateIdsResponse keys + */ + + /** + * Constructs a new AllocateIdsResponse. + * @memberof google.datastore.v1 + * @classdesc Represents an AllocateIdsResponse. + * @implements IAllocateIdsResponse + * @constructor + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set + */ + function AllocateIdsResponse(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AllocateIdsResponse keys. + * @member {Array.} keys + * @memberof google.datastore.v1.AllocateIdsResponse + * @instance + */ + AllocateIdsResponse.prototype.keys = $util.emptyArray; + + /** + * Creates a new AllocateIdsResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse instance + */ + AllocateIdsResponse.create = function create(properties) { + return new AllocateIdsResponse(properties); + }; + + /** + * Encodes the specified AllocateIdsResponse message. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified AllocateIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.AllocateIdsResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.IAllocateIdsResponse} message AllocateIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllocateIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AllocateIdsResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllocateIdsResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllocateIdsResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllocateIdsResponse message. + * @function verify + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllocateIdsResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates an AllocateIdsResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AllocateIdsResponse} AllocateIdsResponse + */ + AllocateIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AllocateIdsResponse) + return object; + var message = new $root.google.datastore.v1.AllocateIdsResponse(); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.AllocateIdsResponse.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an AllocateIdsResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {google.datastore.v1.AllocateIdsResponse} message AllocateIdsResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllocateIdsResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + return object; + }; + + /** + * Converts this AllocateIdsResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.AllocateIdsResponse + * @instance + * @returns {Object.} JSON object + */ + AllocateIdsResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for AllocateIdsResponse + * @function getTypeUrl + * @memberof google.datastore.v1.AllocateIdsResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + AllocateIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AllocateIdsResponse"; + }; + + return AllocateIdsResponse; + })(); + + v1.ReserveIdsRequest = (function() { + + /** + * Properties of a ReserveIdsRequest. + * @memberof google.datastore.v1 + * @interface IReserveIdsRequest + * @property {string|null} [projectId] ReserveIdsRequest projectId + * @property {string|null} [databaseId] ReserveIdsRequest databaseId + * @property {Array.|null} [keys] ReserveIdsRequest keys + */ + + /** + * Constructs a new ReserveIdsRequest. + * @memberof google.datastore.v1 + * @classdesc Represents a ReserveIdsRequest. + * @implements IReserveIdsRequest + * @constructor + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + */ + function ReserveIdsRequest(properties) { + this.keys = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReserveIdsRequest projectId. + * @member {string} projectId + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.projectId = ""; + + /** + * ReserveIdsRequest databaseId. + * @member {string} databaseId + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.databaseId = ""; + + /** + * ReserveIdsRequest keys. + * @member {Array.} keys + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + */ + ReserveIdsRequest.prototype.keys = $util.emptyArray; + + /** + * Creates a new ReserveIdsRequest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest instance + */ + ReserveIdsRequest.create = function create(properties) { + return new ReserveIdsRequest(properties); + }; + + /** + * Encodes the specified ReserveIdsRequest message. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + return writer; + }; + + /** + * Encodes the specified ReserveIdsRequest message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.IReserveIdsRequest} message ReserveIdsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 8: { + message.projectId = reader.string(); + break; + } + case 9: { + message.databaseId = reader.string(); + break; + } + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReserveIdsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReserveIdsRequest message. + * @function verify + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReserveIdsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isString(message.databaseId)) + return "databaseId: string expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.datastore.v1.Key.verify(message.keys[i]); + if (error) + return "keys." + error; + } + } + return null; + }; + + /** + * Creates a ReserveIdsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReserveIdsRequest} ReserveIdsRequest + */ + ReserveIdsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsRequest) + return object; + var message = new $root.google.datastore.v1.ReserveIdsRequest(); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.databaseId != null) + message.databaseId = String(object.databaseId); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.datastore.v1.ReserveIdsRequest.keys: object expected"); + message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a ReserveIdsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {google.datastore.v1.ReserveIdsRequest} message ReserveIdsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReserveIdsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.keys = []; + if (options.defaults) { + object.projectId = ""; + object.databaseId = ""; + } + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); + } + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + object.databaseId = message.databaseId; + return object; + }; + + /** + * Converts this ReserveIdsRequest to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReserveIdsRequest + * @instance + * @returns {Object.} JSON object + */ + ReserveIdsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReserveIdsRequest + * @function getTypeUrl + * @memberof google.datastore.v1.ReserveIdsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReserveIdsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReserveIdsRequest"; + }; + + return ReserveIdsRequest; + })(); + + v1.ReserveIdsResponse = (function() { + + /** + * Properties of a ReserveIdsResponse. + * @memberof google.datastore.v1 + * @interface IReserveIdsResponse + */ + + /** + * Constructs a new ReserveIdsResponse. + * @memberof google.datastore.v1 + * @classdesc Represents a ReserveIdsResponse. + * @implements IReserveIdsResponse + * @constructor + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + */ + function ReserveIdsResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ReserveIdsResponse instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse=} [properties] Properties to set + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse instance + */ + ReserveIdsResponse.create = function create(properties) { + return new ReserveIdsResponse(properties); + }; + + /** + * Encodes the specified ReserveIdsResponse message. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ReserveIdsResponse message, length delimited. Does not implicitly {@link google.datastore.v1.ReserveIdsResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.IReserveIdsResponse} message ReserveIdsResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReserveIdsResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReserveIdsResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReserveIdsResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReserveIdsResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReserveIdsResponse message. + * @function verify + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReserveIdsResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ReserveIdsResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReserveIdsResponse} ReserveIdsResponse + */ + ReserveIdsResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReserveIdsResponse) + return object; + return new $root.google.datastore.v1.ReserveIdsResponse(); + }; + + /** + * Creates a plain object from a ReserveIdsResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {google.datastore.v1.ReserveIdsResponse} message ReserveIdsResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReserveIdsResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this ReserveIdsResponse to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReserveIdsResponse + * @instance + * @returns {Object.} JSON object + */ + ReserveIdsResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReserveIdsResponse + * @function getTypeUrl + * @memberof google.datastore.v1.ReserveIdsResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReserveIdsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReserveIdsResponse"; + }; + + return ReserveIdsResponse; + })(); + + v1.Mutation = (function() { + + /** + * Properties of a Mutation. + * @memberof google.datastore.v1 + * @interface IMutation + * @property {google.datastore.v1.IEntity|null} [insert] Mutation insert + * @property {google.datastore.v1.IEntity|null} [update] Mutation update + * @property {google.datastore.v1.IEntity|null} [upsert] Mutation upsert + * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete + * @property {number|Long|null} [baseVersion] Mutation baseVersion + * @property {google.protobuf.ITimestamp|null} [updateTime] Mutation updateTime + */ + + /** + * Constructs a new Mutation. + * @memberof google.datastore.v1 + * @classdesc Represents a Mutation. + * @implements IMutation + * @constructor + * @param {google.datastore.v1.IMutation=} [properties] Properties to set + */ + function Mutation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Mutation insert. + * @member {google.datastore.v1.IEntity|null|undefined} insert + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.insert = null; + + /** + * Mutation update. + * @member {google.datastore.v1.IEntity|null|undefined} update + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.update = null; + + /** + * Mutation upsert. + * @member {google.datastore.v1.IEntity|null|undefined} upsert + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.upsert = null; + + /** + * Mutation delete. + * @member {google.datastore.v1.IKey|null|undefined} delete + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype["delete"] = null; + + /** + * Mutation baseVersion. + * @member {number|Long|null|undefined} baseVersion + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.baseVersion = null; + + /** + * Mutation updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.updateTime = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * Mutation operation. + * @member {"insert"|"update"|"upsert"|"delete"|undefined} operation + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "operation", { + get: $util.oneOfGetter($oneOfFields = ["insert", "update", "upsert", "delete"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Mutation conflictDetectionStrategy. + * @member {"baseVersion"|"updateTime"|undefined} conflictDetectionStrategy + * @memberof google.datastore.v1.Mutation + * @instance + */ + Object.defineProperty(Mutation.prototype, "conflictDetectionStrategy", { + get: $util.oneOfGetter($oneOfFields = ["baseVersion", "updateTime"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Mutation instance using the specified properties. + * @function create + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation=} [properties] Properties to set + * @returns {google.datastore.v1.Mutation} Mutation instance + */ + Mutation.create = function create(properties) { + return new Mutation(properties); + }; + + /** + * Encodes the specified Mutation message. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Mutation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.insert != null && Object.hasOwnProperty.call(message, "insert")) + $root.google.datastore.v1.Entity.encode(message.insert, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.update != null && Object.hasOwnProperty.call(message, "update")) + $root.google.datastore.v1.Entity.encode(message.update, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.upsert != null && Object.hasOwnProperty.call(message, "upsert")) + $root.google.datastore.v1.Entity.encode(message.upsert, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) + $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) + writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.datastore.v1.Mutation.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.IMutation} message Mutation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Mutation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Mutation message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.Mutation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.Mutation} Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Mutation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.Mutation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 4: { + message.insert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 5: { + message.update = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 6: { + message.upsert = $root.google.datastore.v1.Entity.decode(reader, reader.uint32()); + break; + } + case 7: { + message["delete"] = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 8: { + message.baseVersion = reader.int64(); + break; + } + case 11: { + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Mutation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.Mutation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.Mutation} Mutation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Mutation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Mutation message. + * @function verify + * @memberof google.datastore.v1.Mutation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Mutation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.insert != null && message.hasOwnProperty("insert")) { + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.insert); + if (error) + return "insert." + error; + } + } + if (message.update != null && message.hasOwnProperty("update")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.update); + if (error) + return "update." + error; + } + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Entity.verify(message.upsert); + if (error) + return "upsert." + error; + } + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (properties.operation === 1) + return "operation: multiple values"; + properties.operation = 1; + { + var error = $root.google.datastore.v1.Key.verify(message["delete"]); + if (error) + return "delete." + error; + } + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + properties.conflictDetectionStrategy = 1; + if (!$util.isInteger(message.baseVersion) && !(message.baseVersion && $util.isInteger(message.baseVersion.low) && $util.isInteger(message.baseVersion.high))) + return "baseVersion: integer|Long expected"; + } + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + if (properties.conflictDetectionStrategy === 1) + return "conflictDetectionStrategy: multiple values"; + properties.conflictDetectionStrategy = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; + } + } + return null; + }; + + /** + * Creates a Mutation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.Mutation + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.Mutation} Mutation + */ + Mutation.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.Mutation) + return object; + var message = new $root.google.datastore.v1.Mutation(); + if (object.insert != null) { + if (typeof object.insert !== "object") + throw TypeError(".google.datastore.v1.Mutation.insert: object expected"); + message.insert = $root.google.datastore.v1.Entity.fromObject(object.insert); + } + if (object.update != null) { + if (typeof object.update !== "object") + throw TypeError(".google.datastore.v1.Mutation.update: object expected"); + message.update = $root.google.datastore.v1.Entity.fromObject(object.update); + } + if (object.upsert != null) { + if (typeof object.upsert !== "object") + throw TypeError(".google.datastore.v1.Mutation.upsert: object expected"); + message.upsert = $root.google.datastore.v1.Entity.fromObject(object.upsert); + } + if (object["delete"] != null) { + if (typeof object["delete"] !== "object") + throw TypeError(".google.datastore.v1.Mutation.delete: object expected"); + message["delete"] = $root.google.datastore.v1.Key.fromObject(object["delete"]); + } + if (object.baseVersion != null) + if ($util.Long) + (message.baseVersion = $util.Long.fromValue(object.baseVersion)).unsigned = false; + else if (typeof object.baseVersion === "string") + message.baseVersion = parseInt(object.baseVersion, 10); + else if (typeof object.baseVersion === "number") + message.baseVersion = object.baseVersion; + else if (typeof object.baseVersion === "object") + message.baseVersion = new $util.LongBits(object.baseVersion.low >>> 0, object.baseVersion.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.Mutation.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + } + return message; + }; + + /** + * Creates a plain object from a Mutation message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.Mutation + * @static + * @param {google.datastore.v1.Mutation} message Mutation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Mutation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.insert != null && message.hasOwnProperty("insert")) { + object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); + if (options.oneofs) + object.operation = "insert"; + } + if (message.update != null && message.hasOwnProperty("update")) { + object.update = $root.google.datastore.v1.Entity.toObject(message.update, options); + if (options.oneofs) + object.operation = "update"; + } + if (message.upsert != null && message.hasOwnProperty("upsert")) { + object.upsert = $root.google.datastore.v1.Entity.toObject(message.upsert, options); + if (options.oneofs) + object.operation = "upsert"; + } + if (message["delete"] != null && message.hasOwnProperty("delete")) { + object["delete"] = $root.google.datastore.v1.Key.toObject(message["delete"], options); + if (options.oneofs) + object.operation = "delete"; + } + if (message.baseVersion != null && message.hasOwnProperty("baseVersion")) { + if (typeof message.baseVersion === "number") + object.baseVersion = options.longs === String ? String(message.baseVersion) : message.baseVersion; + else + object.baseVersion = options.longs === String ? $util.Long.prototype.toString.call(message.baseVersion) : options.longs === Number ? new $util.LongBits(message.baseVersion.low >>> 0, message.baseVersion.high >>> 0).toNumber() : message.baseVersion; + if (options.oneofs) + object.conflictDetectionStrategy = "baseVersion"; + } + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (options.oneofs) + object.conflictDetectionStrategy = "updateTime"; + } + return object; + }; + + /** + * Converts this Mutation to JSON. + * @function toJSON + * @memberof google.datastore.v1.Mutation + * @instance + * @returns {Object.} JSON object + */ + Mutation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Mutation + * @function getTypeUrl + * @memberof google.datastore.v1.Mutation + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Mutation.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.Mutation"; + }; + + return Mutation; + })(); + + v1.MutationResult = (function() { + + /** + * Properties of a MutationResult. + * @memberof google.datastore.v1 + * @interface IMutationResult + * @property {google.datastore.v1.IKey|null} [key] MutationResult key + * @property {number|Long|null} [version] MutationResult version + * @property {google.protobuf.ITimestamp|null} [updateTime] MutationResult updateTime + * @property {boolean|null} [conflictDetected] MutationResult conflictDetected + */ + + /** + * Constructs a new MutationResult. + * @memberof google.datastore.v1 + * @classdesc Represents a MutationResult. + * @implements IMutationResult + * @constructor + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + */ + function MutationResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutationResult key. + * @member {google.datastore.v1.IKey|null|undefined} key + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.key = null; + + /** + * MutationResult version. + * @member {number|Long} version + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * MutationResult updateTime. + * @member {google.protobuf.ITimestamp|null|undefined} updateTime + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.updateTime = null; + + /** + * MutationResult conflictDetected. + * @member {boolean} conflictDetected + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.conflictDetected = false; + + /** + * Creates a new MutationResult instance using the specified properties. + * @function create + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set + * @returns {google.datastore.v1.MutationResult} MutationResult instance + */ + MutationResult.create = function create(properties) { + return new MutationResult(properties); + }; + + /** + * Encodes the specified MutationResult message. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutationResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + $root.google.datastore.v1.Key.encode(message.key, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.version != null && Object.hasOwnProperty.call(message, "version")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); + if (message.conflictDetected != null && Object.hasOwnProperty.call(message, "conflictDetected")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); + if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) + $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MutationResult message, length delimited. Does not implicitly {@link google.datastore.v1.MutationResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.IMutationResult} message MutationResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutationResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutationResult message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.MutationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.MutationResult} MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutationResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.MutationResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 3: { + message.key = $root.google.datastore.v1.Key.decode(reader, reader.uint32()); + break; + } + case 4: { + message.version = reader.int64(); + break; + } + case 6: { + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 5: { + message.conflictDetected = reader.bool(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutationResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.MutationResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.MutationResult} MutationResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutationResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutationResult message. + * @function verify + * @memberof google.datastore.v1.MutationResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutationResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) { + var error = $root.google.datastore.v1.Key.verify(message.key); + if (error) + return "key." + error; + } + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) + return "version: integer|Long expected"; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + if (error) + return "updateTime." + error; + } + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + if (typeof message.conflictDetected !== "boolean") + return "conflictDetected: boolean expected"; + return null; + }; + + /** + * Creates a MutationResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.MutationResult + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.MutationResult} MutationResult + */ + MutationResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.MutationResult) + return object; + var message = new $root.google.datastore.v1.MutationResult(); + if (object.key != null) { + if (typeof object.key !== "object") + throw TypeError(".google.datastore.v1.MutationResult.key: object expected"); + message.key = $root.google.datastore.v1.Key.fromObject(object.key); + } + if (object.version != null) + if ($util.Long) + (message.version = $util.Long.fromValue(object.version)).unsigned = false; + else if (typeof object.version === "string") + message.version = parseInt(object.version, 10); + else if (typeof object.version === "number") + message.version = object.version; + else if (typeof object.version === "object") + message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.updateTime != null) { + if (typeof object.updateTime !== "object") + throw TypeError(".google.datastore.v1.MutationResult.updateTime: object expected"); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + } + if (object.conflictDetected != null) + message.conflictDetected = Boolean(object.conflictDetected); + return message; + }; + + /** + * Creates a plain object from a MutationResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.MutationResult + * @static + * @param {google.datastore.v1.MutationResult} message MutationResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutationResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.key = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.version = options.longs === String ? "0" : 0; + object.conflictDetected = false; + object.updateTime = null; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = $root.google.datastore.v1.Key.toObject(message.key, options); + if (message.version != null && message.hasOwnProperty("version")) + if (typeof message.version === "number") + object.version = options.longs === String ? String(message.version) : message.version; + else + object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; + if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) + object.conflictDetected = message.conflictDetected; + if (message.updateTime != null && message.hasOwnProperty("updateTime")) + object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + return object; + }; + + /** + * Converts this MutationResult to JSON. + * @function toJSON + * @memberof google.datastore.v1.MutationResult + * @instance + * @returns {Object.} JSON object + */ + MutationResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MutationResult + * @function getTypeUrl + * @memberof google.datastore.v1.MutationResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutationResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.MutationResult"; + }; + + return MutationResult; + })(); + + v1.ReadOptions = (function() { + + /** + * Properties of a ReadOptions. + * @memberof google.datastore.v1 + * @interface IReadOptions + * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency + * @property {Uint8Array|null} [transaction] ReadOptions transaction + * @property {google.protobuf.ITimestamp|null} [readTime] ReadOptions readTime + */ + + /** + * Constructs a new ReadOptions. + * @memberof google.datastore.v1 + * @classdesc Represents a ReadOptions. + * @implements IReadOptions + * @constructor + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + */ + function ReadOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadOptions readConsistency. + * @member {google.datastore.v1.ReadOptions.ReadConsistency|null|undefined} readConsistency + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.readConsistency = null; + + /** + * ReadOptions transaction. + * @member {Uint8Array|null|undefined} transaction + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.transaction = null; + + /** + * ReadOptions readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.readTime = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * ReadOptions consistencyType. + * @member {"readConsistency"|"transaction"|"readTime"|undefined} consistencyType + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + Object.defineProperty(ReadOptions.prototype, "consistencyType", { + get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction", "readTime"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new ReadOptions instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions=} [properties] Properties to set + * @returns {google.datastore.v1.ReadOptions} ReadOptions instance + */ + ReadOptions.create = function create(properties) { + return new ReadOptions(properties); + }; + + /** + * Encodes the specified ReadOptions message. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readConsistency != null && Object.hasOwnProperty.call(message, "readConsistency")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ReadOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ReadOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.IReadOptions} message ReadOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadOptions message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ReadOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.readConsistency = reader.int32(); + break; + } + case 2: { + message.transaction = reader.bytes(); + break; + } + case 4: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ReadOptions} ReadOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOptions message. + * @function verify + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + properties.consistencyType = 1; + switch (message.readConsistency) { + default: + return "readConsistency: enum value expected"; + case 0: + case 1: + case 2: + break; + } + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; + } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; + } + } + return null; + }; + + /** + * Creates a ReadOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ReadOptions} ReadOptions + */ + ReadOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ReadOptions) + return object; + var message = new $root.google.datastore.v1.ReadOptions(); + switch (object.readConsistency) { + case "READ_CONSISTENCY_UNSPECIFIED": + case 0: + message.readConsistency = 0; + break; + case "STRONG": + case 1: + message.readConsistency = 1; + break; + case "EVENTUAL": + case 2: + message.readConsistency = 2; + break; + } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.ReadOptions.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); + } + return message; + }; + + /** + * Creates a plain object from a ReadOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {google.datastore.v1.ReadOptions} message ReadOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { + object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; + if (options.oneofs) + object.consistencyType = "readConsistency"; + } + if (message.transaction != null && message.hasOwnProperty("transaction")) { + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (options.oneofs) + object.consistencyType = "transaction"; + } + if (message.readTime != null && message.hasOwnProperty("readTime")) { + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + if (options.oneofs) + object.consistencyType = "readTime"; + } + return object; + }; + + /** + * Converts this ReadOptions to JSON. + * @function toJSON + * @memberof google.datastore.v1.ReadOptions + * @instance + * @returns {Object.} JSON object + */ + ReadOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReadOptions + * @function getTypeUrl + * @memberof google.datastore.v1.ReadOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ReadOptions"; + }; + + /** + * ReadConsistency enum. + * @name google.datastore.v1.ReadOptions.ReadConsistency + * @enum {number} + * @property {number} READ_CONSISTENCY_UNSPECIFIED=0 READ_CONSISTENCY_UNSPECIFIED value + * @property {number} STRONG=1 STRONG value + * @property {number} EVENTUAL=2 EVENTUAL value + */ + ReadOptions.ReadConsistency = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "READ_CONSISTENCY_UNSPECIFIED"] = 0; + values[valuesById[1] = "STRONG"] = 1; + values[valuesById[2] = "EVENTUAL"] = 2; + return values; + })(); + + return ReadOptions; + })(); + + v1.TransactionOptions = (function() { + + /** + * Properties of a TransactionOptions. + * @memberof google.datastore.v1 + * @interface ITransactionOptions + * @property {google.datastore.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite + * @property {google.datastore.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly + */ + + /** + * Constructs a new TransactionOptions. + * @memberof google.datastore.v1 + * @classdesc Represents a TransactionOptions. + * @implements ITransactionOptions + * @constructor + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + */ + function TransactionOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TransactionOptions readWrite. + * @member {google.datastore.v1.TransactionOptions.IReadWrite|null|undefined} readWrite + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + TransactionOptions.prototype.readWrite = null; + + /** + * TransactionOptions readOnly. + * @member {google.datastore.v1.TransactionOptions.IReadOnly|null|undefined} readOnly + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + TransactionOptions.prototype.readOnly = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * TransactionOptions mode. + * @member {"readWrite"|"readOnly"|undefined} mode + * @memberof google.datastore.v1.TransactionOptions + * @instance + */ + Object.defineProperty(TransactionOptions.prototype, "mode", { + get: $util.oneOfGetter($oneOfFields = ["readWrite", "readOnly"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new TransactionOptions instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions instance + */ + TransactionOptions.create = function create(properties) { + return new TransactionOptions(properties); + }; + + /** + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TransactionOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) + $root.google.datastore.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) + $root.google.datastore.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TransactionOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + break; + } + case 2: { + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TransactionOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TransactionOptions message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TransactionOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadWrite.verify(message.readWrite); + if (error) + return "readWrite." + error; + } + } + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + if (properties.mode === 1) + return "mode: multiple values"; + properties.mode = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.ReadOnly.verify(message.readOnly); + if (error) + return "readOnly." + error; + } + } + return null; + }; + + /** + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions} TransactionOptions + */ + TransactionOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions) + return object; + var message = new $root.google.datastore.v1.TransactionOptions(); + if (object.readWrite != null) { + if (typeof object.readWrite !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readWrite: object expected"); + message.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); + } + if (object.readOnly != null) { + if (typeof object.readOnly !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.readOnly: object expected"); + message.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); + } + return message; + }; + + /** + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {google.datastore.v1.TransactionOptions} message TransactionOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TransactionOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + object.readWrite = $root.google.datastore.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); + if (options.oneofs) + object.mode = "readWrite"; + } + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + object.readOnly = $root.google.datastore.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); + if (options.oneofs) + object.mode = "readOnly"; + } + return object; + }; + + /** + * Converts this TransactionOptions to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions + * @instance + * @returns {Object.} JSON object + */ + TransactionOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for TransactionOptions + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + TransactionOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions"; + }; + + TransactionOptions.ReadWrite = (function() { + + /** + * Properties of a ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadWrite + * @property {Uint8Array|null} [previousTransaction] ReadWrite previousTransaction + */ + + /** + * Constructs a new ReadWrite. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadWrite. + * @implements IReadWrite + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + */ + function ReadWrite(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadWrite previousTransaction. + * @member {Uint8Array} previousTransaction + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + */ + ReadWrite.prototype.previousTransaction = $util.newBuffer([]); + + /** + * Creates a new ReadWrite instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite instance + */ + ReadWrite.create = function create(properties) { + return new ReadWrite(properties); + }; + + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.previousTransaction != null && Object.hasOwnProperty.call(message, "previousTransaction")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.previousTransaction); + return writer; + }; + + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.previousTransaction = reader.bytes(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadWrite.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadWrite message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadWrite.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + if (!(message.previousTransaction && typeof message.previousTransaction.length === "number" || $util.isString(message.previousTransaction))) + return "previousTransaction: buffer expected"; + return null; + }; + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadWrite} ReadWrite + */ + ReadWrite.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadWrite) + return object; + var message = new $root.google.datastore.v1.TransactionOptions.ReadWrite(); + if (object.previousTransaction != null) + if (typeof object.previousTransaction === "string") + $util.base64.decode(object.previousTransaction, message.previousTransaction = $util.newBuffer($util.base64.length(object.previousTransaction)), 0); + else if (object.previousTransaction.length >= 0) + message.previousTransaction = object.previousTransaction; + return message; + }; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {google.datastore.v1.TransactionOptions.ReadWrite} message ReadWrite + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadWrite.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.previousTransaction = ""; + else { + object.previousTransaction = []; + if (options.bytes !== Array) + object.previousTransaction = $util.newBuffer(object.previousTransaction); + } + if (message.previousTransaction != null && message.hasOwnProperty("previousTransaction")) + object.previousTransaction = options.bytes === String ? $util.base64.encode(message.previousTransaction, 0, message.previousTransaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.previousTransaction) : message.previousTransaction; + return object; + }; + + /** + * Converts this ReadWrite to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @instance + * @returns {Object.} JSON object + */ + ReadWrite.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReadWrite + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions.ReadWrite + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadWrite.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadWrite"; + }; + + return ReadWrite; + })(); + + TransactionOptions.ReadOnly = (function() { + + /** + * Properties of a ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @interface IReadOnly + * @property {google.protobuf.ITimestamp|null} [readTime] ReadOnly readTime + */ + + /** + * Constructs a new ReadOnly. + * @memberof google.datastore.v1.TransactionOptions + * @classdesc Represents a ReadOnly. + * @implements IReadOnly + * @constructor + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + */ + function ReadOnly(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadOnly readTime. + * @member {google.protobuf.ITimestamp|null|undefined} readTime + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.readTime = null; + + /** + * Creates a new ReadOnly instance using the specified properties. + * @function create + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly instance + */ + ReadOnly.create = function create(properties) { + return new ReadOnly(properties); + }; + + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) + $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.datastore.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } } - } - if (object.endCursor != null) - if (typeof object.endCursor === "string") - $util.base64.decode(object.endCursor, message.endCursor = $util.newBuffer($util.base64.length(object.endCursor)), 0); - else if (object.endCursor.length >= 0) - message.endCursor = object.endCursor; - switch (object.moreResults) { - case "MORE_RESULTS_TYPE_UNSPECIFIED": - case 0: - message.moreResults = 0; - break; - case "NOT_FINISHED": - case 1: - message.moreResults = 1; - break; - case "MORE_RESULTS_AFTER_LIMIT": - case 2: - message.moreResults = 2; - break; - case "MORE_RESULTS_AFTER_CURSOR": - case 4: - message.moreResults = 4; - break; - case "NO_MORE_RESULTS": - case 3: - message.moreResults = 3; - break; - } - if (object.snapshotVersion != null) - if ($util.Long) - (message.snapshotVersion = $util.Long.fromValue(object.snapshotVersion)).unsigned = false; - else if (typeof object.snapshotVersion === "string") - message.snapshotVersion = parseInt(object.snapshotVersion, 10); - else if (typeof object.snapshotVersion === "number") - message.snapshotVersion = object.snapshotVersion; - else if (typeof object.snapshotVersion === "object") - message.snapshotVersion = new $util.LongBits(object.snapshotVersion.low >>> 0, object.snapshotVersion.high >>> 0).toNumber(); - if (object.readTime != null) { - if (typeof object.readTime !== "object") - throw TypeError(".google.datastore.v1.QueryResultBatch.readTime: object expected"); - message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); - } - return message; - }; + return message; + }; - /** - * Creates a plain object from a QueryResultBatch message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.QueryResultBatch - * @static - * @param {google.datastore.v1.QueryResultBatch} message QueryResultBatch - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - QueryResultBatch.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.entityResults = []; - if (options.defaults) { - object.entityResultType = options.enums === String ? "RESULT_TYPE_UNSPECIFIED" : 0; - if (options.bytes === String) - object.skippedCursor = ""; - else { - object.skippedCursor = []; - if (options.bytes !== Array) - object.skippedCursor = $util.newBuffer(object.skippedCursor); + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOnly message. + * @function verify + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOnly.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.readTime != null && message.hasOwnProperty("readTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTime); + if (error) + return "readTime." + error; } - if (options.bytes === String) - object.endCursor = ""; - else { - object.endCursor = []; - if (options.bytes !== Array) - object.endCursor = $util.newBuffer(object.endCursor); + return null; + }; + + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.TransactionOptions.ReadOnly} ReadOnly + */ + ReadOnly.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.TransactionOptions.ReadOnly) + return object; + var message = new $root.google.datastore.v1.TransactionOptions.ReadOnly(); + if (object.readTime != null) { + if (typeof object.readTime !== "object") + throw TypeError(".google.datastore.v1.TransactionOptions.ReadOnly.readTime: object expected"); + message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime); } - object.moreResults = options.enums === String ? "MORE_RESULTS_TYPE_UNSPECIFIED" : 0; - object.skippedResults = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.snapshotVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.snapshotVersion = options.longs === String ? "0" : 0; - object.readTime = null; - } - if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) - object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; - if (message.entityResults && message.entityResults.length) { - object.entityResults = []; - for (var j = 0; j < message.entityResults.length; ++j) - object.entityResults[j] = $root.google.datastore.v1.EntityResult.toObject(message.entityResults[j], options); - } - if (message.skippedCursor != null && message.hasOwnProperty("skippedCursor")) - object.skippedCursor = options.bytes === String ? $util.base64.encode(message.skippedCursor, 0, message.skippedCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.skippedCursor) : message.skippedCursor; - if (message.endCursor != null && message.hasOwnProperty("endCursor")) - object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; - if (message.moreResults != null && message.hasOwnProperty("moreResults")) - object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; - if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) - object.skippedResults = message.skippedResults; - if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) - if (typeof message.snapshotVersion === "number") - object.snapshotVersion = options.longs === String ? String(message.snapshotVersion) : message.snapshotVersion; - else - object.snapshotVersion = options.longs === String ? $util.Long.prototype.toString.call(message.snapshotVersion) : options.longs === Number ? new $util.LongBits(message.snapshotVersion.low >>> 0, message.snapshotVersion.high >>> 0).toNumber() : message.snapshotVersion; - if (message.readTime != null && message.hasOwnProperty("readTime")) - object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); - return object; - }; + return message; + }; - /** - * Converts this QueryResultBatch to JSON. - * @function toJSON - * @memberof google.datastore.v1.QueryResultBatch - * @instance - * @returns {Object.} JSON object - */ - QueryResultBatch.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {google.datastore.v1.TransactionOptions.ReadOnly} message ReadOnly + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOnly.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.readTime = null; + if (message.readTime != null && message.hasOwnProperty("readTime")) + object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); + return object; + }; - /** - * Gets the default type url for QueryResultBatch - * @function getTypeUrl - * @memberof google.datastore.v1.QueryResultBatch - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - QueryResultBatch.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.QueryResultBatch"; - }; + /** + * Converts this ReadOnly to JSON. + * @function toJSON + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @instance + * @returns {Object.} JSON object + */ + ReadOnly.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * MoreResultsType enum. - * @name google.datastore.v1.QueryResultBatch.MoreResultsType - * @enum {number} - * @property {number} MORE_RESULTS_TYPE_UNSPECIFIED=0 MORE_RESULTS_TYPE_UNSPECIFIED value - * @property {number} NOT_FINISHED=1 NOT_FINISHED value - * @property {number} MORE_RESULTS_AFTER_LIMIT=2 MORE_RESULTS_AFTER_LIMIT value - * @property {number} MORE_RESULTS_AFTER_CURSOR=4 MORE_RESULTS_AFTER_CURSOR value - * @property {number} NO_MORE_RESULTS=3 NO_MORE_RESULTS value - */ - QueryResultBatch.MoreResultsType = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "MORE_RESULTS_TYPE_UNSPECIFIED"] = 0; - values[valuesById[1] = "NOT_FINISHED"] = 1; - values[valuesById[2] = "MORE_RESULTS_AFTER_LIMIT"] = 2; - values[valuesById[4] = "MORE_RESULTS_AFTER_CURSOR"] = 4; - values[valuesById[3] = "NO_MORE_RESULTS"] = 3; - return values; + /** + * Gets the default type url for ReadOnly + * @function getTypeUrl + * @memberof google.datastore.v1.TransactionOptions.ReadOnly + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadOnly.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.TransactionOptions.ReadOnly"; + }; + + return ReadOnly; })(); - return QueryResultBatch; + return TransactionOptions; })(); return v1; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 28fdf086954..f8f14245507 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -613,12 +613,530 @@ "csharp_namespace": "Google.Cloud.Datastore.V1", "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", "java_multiple_files": true, - "java_outer_classname": "QueryProto", + "java_outer_classname": "DatastoreProto", "java_package": "com.google.datastore.v1", "php_namespace": "Google\\Cloud\\Datastore\\V1", "ruby_package": "Google::Cloud::Datastore::V1" }, "nested": { + "AggregationResult": { + "fields": { + "aggregateProperties": { + "keyType": "string", + "type": "Value", + "id": 2 + } + } + }, + "AggregationResultBatch": { + "fields": { + "aggregationResults": { + "rule": "repeated", + "type": "AggregationResult", + "id": 1 + }, + "moreResults": { + "type": "QueryResultBatch.MoreResultsType", + "id": 2 + }, + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 3 + } + } + }, + "PartitionId": { + "fields": { + "projectId": { + "type": "string", + "id": 2 + }, + "databaseId": { + "type": "string", + "id": 3 + }, + "namespaceId": { + "type": "string", + "id": 4 + } + } + }, + "Key": { + "fields": { + "partitionId": { + "type": "PartitionId", + "id": 1 + }, + "path": { + "rule": "repeated", + "type": "PathElement", + "id": 2 + } + }, + "nested": { + "PathElement": { + "oneofs": { + "idType": { + "oneof": [ + "id", + "name" + ] + } + }, + "fields": { + "kind": { + "type": "string", + "id": 1 + }, + "id": { + "type": "int64", + "id": 2 + }, + "name": { + "type": "string", + "id": 3 + } + } + } + } + }, + "ArrayValue": { + "fields": { + "values": { + "rule": "repeated", + "type": "Value", + "id": 1 + } + } + }, + "Value": { + "oneofs": { + "valueType": { + "oneof": [ + "nullValue", + "booleanValue", + "integerValue", + "doubleValue", + "timestampValue", + "keyValue", + "stringValue", + "blobValue", + "geoPointValue", + "entityValue", + "arrayValue" + ] + } + }, + "fields": { + "nullValue": { + "type": "google.protobuf.NullValue", + "id": 11 + }, + "booleanValue": { + "type": "bool", + "id": 1 + }, + "integerValue": { + "type": "int64", + "id": 2 + }, + "doubleValue": { + "type": "double", + "id": 3 + }, + "timestampValue": { + "type": "google.protobuf.Timestamp", + "id": 10 + }, + "keyValue": { + "type": "Key", + "id": 5 + }, + "stringValue": { + "type": "string", + "id": 17 + }, + "blobValue": { + "type": "bytes", + "id": 18 + }, + "geoPointValue": { + "type": "google.type.LatLng", + "id": 8 + }, + "entityValue": { + "type": "Entity", + "id": 6 + }, + "arrayValue": { + "type": "ArrayValue", + "id": 9 + }, + "meaning": { + "type": "int32", + "id": 14 + }, + "excludeFromIndexes": { + "type": "bool", + "id": 19 + } + } + }, + "Entity": { + "fields": { + "key": { + "type": "Key", + "id": 1 + }, + "properties": { + "keyType": "string", + "type": "Value", + "id": 3 + } + } + }, + "EntityResult": { + "fields": { + "entity": { + "type": "Entity", + "id": 1 + }, + "version": { + "type": "int64", + "id": 4 + }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 5 + }, + "cursor": { + "type": "bytes", + "id": 3 + } + }, + "nested": { + "ResultType": { + "values": { + "RESULT_TYPE_UNSPECIFIED": 0, + "FULL": 1, + "PROJECTION": 2, + "KEY_ONLY": 3 + } + } + } + }, + "Query": { + "fields": { + "projection": { + "rule": "repeated", + "type": "Projection", + "id": 2 + }, + "kind": { + "rule": "repeated", + "type": "KindExpression", + "id": 3 + }, + "filter": { + "type": "Filter", + "id": 4 + }, + "order": { + "rule": "repeated", + "type": "PropertyOrder", + "id": 5 + }, + "distinctOn": { + "rule": "repeated", + "type": "PropertyReference", + "id": 6 + }, + "startCursor": { + "type": "bytes", + "id": 7 + }, + "endCursor": { + "type": "bytes", + "id": 8 + }, + "offset": { + "type": "int32", + "id": 10 + }, + "limit": { + "type": "google.protobuf.Int32Value", + "id": 12 + } + } + }, + "AggregationQuery": { + "oneofs": { + "queryType": { + "oneof": [ + "nestedQuery" + ] + } + }, + "fields": { + "nestedQuery": { + "type": "Query", + "id": 1 + }, + "aggregations": { + "rule": "repeated", + "type": "Aggregation", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "Aggregation": { + "oneofs": { + "operator": { + "oneof": [ + "count" + ] + } + }, + "fields": { + "count": { + "type": "Count", + "id": 1 + }, + "alias": { + "type": "string", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "Count": { + "fields": { + "upTo": { + "type": "google.protobuf.Int64Value", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + } + } + }, + "KindExpression": { + "fields": { + "name": { + "type": "string", + "id": 1 + } + } + }, + "PropertyReference": { + "fields": { + "name": { + "type": "string", + "id": 2 + } + } + }, + "Projection": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + } + } + }, + "PropertyOrder": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + }, + "direction": { + "type": "Direction", + "id": 2 + } + }, + "nested": { + "Direction": { + "values": { + "DIRECTION_UNSPECIFIED": 0, + "ASCENDING": 1, + "DESCENDING": 2 + } + } + } + }, + "Filter": { + "oneofs": { + "filterType": { + "oneof": [ + "compositeFilter", + "propertyFilter" + ] + } + }, + "fields": { + "compositeFilter": { + "type": "CompositeFilter", + "id": 1 + }, + "propertyFilter": { + "type": "PropertyFilter", + "id": 2 + } + } + }, + "CompositeFilter": { + "fields": { + "op": { + "type": "Operator", + "id": 1 + }, + "filters": { + "rule": "repeated", + "type": "Filter", + "id": 2 + } + }, + "nested": { + "Operator": { + "values": { + "OPERATOR_UNSPECIFIED": 0, + "AND": 1 + } + } + } + }, + "PropertyFilter": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + }, + "op": { + "type": "Operator", + "id": 2 + }, + "value": { + "type": "Value", + "id": 3 + } + }, + "nested": { + "Operator": { + "values": { + "OPERATOR_UNSPECIFIED": 0, + "LESS_THAN": 1, + "LESS_THAN_OR_EQUAL": 2, + "GREATER_THAN": 3, + "GREATER_THAN_OR_EQUAL": 4, + "EQUAL": 5, + "IN": 6, + "NOT_EQUAL": 9, + "HAS_ANCESTOR": 11, + "NOT_IN": 13 + } + } + } + }, + "GqlQuery": { + "fields": { + "queryString": { + "type": "string", + "id": 1 + }, + "allowLiterals": { + "type": "bool", + "id": 2 + }, + "namedBindings": { + "keyType": "string", + "type": "GqlQueryParameter", + "id": 5 + }, + "positionalBindings": { + "rule": "repeated", + "type": "GqlQueryParameter", + "id": 4 + } + } + }, + "GqlQueryParameter": { + "oneofs": { + "parameterType": { + "oneof": [ + "value", + "cursor" + ] + } + }, + "fields": { + "value": { + "type": "Value", + "id": 2 + }, + "cursor": { + "type": "bytes", + "id": 3 + } + } + }, + "QueryResultBatch": { + "fields": { + "skippedResults": { + "type": "int32", + "id": 6 + }, + "skippedCursor": { + "type": "bytes", + "id": 3 + }, + "entityResultType": { + "type": "EntityResult.ResultType", + "id": 1 + }, + "entityResults": { + "rule": "repeated", + "type": "EntityResult", + "id": 2 + }, + "endCursor": { + "type": "bytes", + "id": 4 + }, + "moreResults": { + "type": "MoreResultsType", + "id": 5 + }, + "snapshotVersion": { + "type": "int64", + "id": 7 + }, + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 8 + } + }, + "nested": { + "MoreResultsType": { + "values": { + "MORE_RESULTS_TYPE_UNSPECIFIED": 0, + "NOT_FINISHED": 1, + "MORE_RESULTS_AFTER_LIMIT": 2, + "MORE_RESULTS_AFTER_CURSOR": 4, + "NO_MORE_RESULTS": 3 + } + } + } + }, "Datastore": { "options": { "(google.api.default_host)": "datastore.googleapis.com", @@ -661,6 +1179,22 @@ } ] }, + "RunAggregationQuery": { + "requestType": "RunAggregationQueryRequest", + "responseType": "RunAggregationQueryResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:runAggregationQuery", + "(google.api.http).body": "*" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:runAggregationQuery", + "body": "*" + } + } + ] + }, "BeginTransaction": { "requestType": "BeginTransactionRequest", "responseType": "BeginTransactionResponse", @@ -735,252 +1269,38 @@ "parsedOptions": [ { "(google.api.http)": { - "post": "/v1/projects/{project_id}:allocateIds", - "body": "*" - } - }, - { - "(google.api.method_signature)": "project_id,keys" - } - ] - }, - "ReserveIds": { - "requestType": "ReserveIdsRequest", - "responseType": "ReserveIdsResponse", - "options": { - "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", - "(google.api.http).body": "*", - "(google.api.method_signature)": "project_id,keys" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/projects/{project_id}:reserveIds", - "body": "*" - } - }, - { - "(google.api.method_signature)": "project_id,keys" - } - ] - } - } - }, - "LookupRequest": { - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 - }, - "readOptions": { - "type": "ReadOptions", - "id": 1 - }, - "keys": { - "rule": "repeated", - "type": "Key", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "LookupResponse": { - "fields": { - "found": { - "rule": "repeated", - "type": "EntityResult", - "id": 1 - }, - "missing": { - "rule": "repeated", - "type": "EntityResult", - "id": 2 - }, - "deferred": { - "rule": "repeated", - "type": "Key", - "id": 3 - }, - "readTime": { - "type": "google.protobuf.Timestamp", - "id": 7 - } - } - }, - "RunQueryRequest": { - "oneofs": { - "queryType": { - "oneof": [ - "query", - "gqlQuery" - ] - } - }, - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 - }, - "partitionId": { - "type": "PartitionId", - "id": 2 - }, - "readOptions": { - "type": "ReadOptions", - "id": 1 - }, - "query": { - "type": "Query", - "id": 3 - }, - "gqlQuery": { - "type": "GqlQuery", - "id": 7 - } - } - }, - "RunQueryResponse": { - "fields": { - "batch": { - "type": "QueryResultBatch", - "id": 1 - }, - "query": { - "type": "Query", - "id": 2 - } - } - }, - "BeginTransactionRequest": { - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 - }, - "transactionOptions": { - "type": "TransactionOptions", - "id": 10 - } - } - }, - "BeginTransactionResponse": { - "fields": { - "transaction": { - "type": "bytes", - "id": 1 - } - } - }, - "RollbackRequest": { - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 - }, - "transaction": { - "type": "bytes", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "RollbackResponse": { - "fields": {} - }, - "CommitRequest": { - "oneofs": { - "transactionSelector": { - "oneof": [ - "transaction" - ] - } - }, - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 - }, - "mode": { - "type": "Mode", - "id": 5 - }, - "transaction": { - "type": "bytes", - "id": 1 - }, - "mutations": { - "rule": "repeated", - "type": "Mutation", - "id": 6 - } - }, - "nested": { - "Mode": { - "values": { - "MODE_UNSPECIFIED": 0, - "TRANSACTIONAL": 1, - "NON_TRANSACTIONAL": 2 - } - } - } - }, - "CommitResponse": { - "fields": { - "mutationResults": { - "rule": "repeated", - "type": "MutationResult", - "id": 3 - }, - "indexUpdates": { - "type": "int32", - "id": 4 + "post": "/v1/projects/{project_id}:allocateIds", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,keys" + } + ] }, - "commitTime": { - "type": "google.protobuf.Timestamp", - "id": 8 + "ReserveIds": { + "requestType": "ReserveIdsRequest", + "responseType": "ReserveIdsResponse", + "options": { + "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", + "(google.api.http).body": "*", + "(google.api.method_signature)": "project_id,keys" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/projects/{project_id}:reserveIds", + "body": "*" + } + }, + { + "(google.api.method_signature)": "project_id,keys" + } + ] } } }, - "AllocateIdsRequest": { + "LookupRequest": { "fields": { "projectId": { "type": "string", @@ -993,615 +1313,448 @@ "type": "string", "id": 9 }, + "readOptions": { + "type": "ReadOptions", + "id": 1 + }, "keys": { "rule": "repeated", "type": "Key", - "id": 1, + "id": 3, "options": { "(google.api.field_behavior)": "REQUIRED" } } } }, - "AllocateIdsResponse": { + "LookupResponse": { "fields": { - "keys": { + "found": { "rule": "repeated", - "type": "Key", + "type": "EntityResult", "id": 1 - } - } - }, - "ReserveIdsRequest": { - "fields": { - "projectId": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "databaseId": { - "type": "string", - "id": 9 }, - "keys": { + "missing": { "rule": "repeated", - "type": "Key", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "ReserveIdsResponse": { - "fields": {} - }, - "Mutation": { - "oneofs": { - "operation": { - "oneof": [ - "insert", - "update", - "upsert", - "delete" - ] - }, - "conflictDetectionStrategy": { - "oneof": [ - "baseVersion", - "updateTime" - ] - } - }, - "fields": { - "insert": { - "type": "Entity", - "id": 4 - }, - "update": { - "type": "Entity", - "id": 5 - }, - "upsert": { - "type": "Entity", - "id": 6 - }, - "delete": { - "type": "Key", - "id": 7 - }, - "baseVersion": { - "type": "int64", - "id": 8 + "type": "EntityResult", + "id": 2 }, - "updateTime": { - "type": "google.protobuf.Timestamp", - "id": 11 - } - } - }, - "MutationResult": { - "fields": { - "key": { + "deferred": { + "rule": "repeated", "type": "Key", "id": 3 }, - "version": { - "type": "int64", - "id": 4 - }, - "updateTime": { - "type": "google.protobuf.Timestamp", - "id": 6 - }, - "conflictDetected": { - "type": "bool", - "id": 5 - } - } - }, - "ReadOptions": { - "oneofs": { - "consistencyType": { - "oneof": [ - "readConsistency", - "transaction", - "readTime" - ] - } - }, - "fields": { - "readConsistency": { - "type": "ReadConsistency", - "id": 1 - }, - "transaction": { - "type": "bytes", - "id": 2 - }, "readTime": { "type": "google.protobuf.Timestamp", - "id": 4 - } - }, - "nested": { - "ReadConsistency": { - "values": { - "READ_CONSISTENCY_UNSPECIFIED": 0, - "STRONG": 1, - "EVENTUAL": 2 - } + "id": 7 } } }, - "TransactionOptions": { + "RunQueryRequest": { "oneofs": { - "mode": { + "queryType": { "oneof": [ - "readWrite", - "readOnly" + "query", + "gqlQuery" ] } }, - "fields": { - "readWrite": { - "type": "ReadWrite", - "id": 1 - }, - "readOnly": { - "type": "ReadOnly", - "id": 2 - } - }, - "nested": { - "ReadWrite": { - "fields": { - "previousTransaction": { - "type": "bytes", - "id": 1 - } - } - }, - "ReadOnly": { - "fields": { - "readTime": { - "type": "google.protobuf.Timestamp", - "id": 1 - } - } - } - } - }, - "PartitionId": { "fields": { "projectId": { "type": "string", - "id": 2 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, "databaseId": { "type": "string", - "id": 3 + "id": 9 }, - "namespaceId": { - "type": "string", - "id": 4 - } - } - }, - "Key": { - "fields": { "partitionId": { "type": "PartitionId", + "id": 2 + }, + "readOptions": { + "type": "ReadOptions", "id": 1 }, - "path": { - "rule": "repeated", - "type": "PathElement", - "id": 2 - } - }, - "nested": { - "PathElement": { - "oneofs": { - "idType": { - "oneof": [ - "id", - "name" - ] - } - }, - "fields": { - "kind": { - "type": "string", - "id": 1 - }, - "id": { - "type": "int64", - "id": 2 - }, - "name": { - "type": "string", - "id": 3 - } - } + "query": { + "type": "Query", + "id": 3 + }, + "gqlQuery": { + "type": "GqlQuery", + "id": 7 } } }, - "ArrayValue": { + "RunQueryResponse": { "fields": { - "values": { - "rule": "repeated", - "type": "Value", + "batch": { + "type": "QueryResultBatch", "id": 1 + }, + "query": { + "type": "Query", + "id": 2 } } }, - "Value": { + "RunAggregationQueryRequest": { "oneofs": { - "valueType": { + "queryType": { "oneof": [ - "nullValue", - "booleanValue", - "integerValue", - "doubleValue", - "timestampValue", - "keyValue", - "stringValue", - "blobValue", - "geoPointValue", - "entityValue", - "arrayValue" + "aggregationQuery", + "gqlQuery" ] } }, "fields": { - "nullValue": { - "type": "google.protobuf.NullValue", - "id": 11 + "projectId": { + "type": "string", + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, - "booleanValue": { - "type": "bool", - "id": 1 + "databaseId": { + "type": "string", + "id": 9 }, - "integerValue": { - "type": "int64", + "partitionId": { + "type": "PartitionId", "id": 2 }, - "doubleValue": { - "type": "double", - "id": 3 + "readOptions": { + "type": "ReadOptions", + "id": 1 }, - "timestampValue": { - "type": "google.protobuf.Timestamp", - "id": 10 + "aggregationQuery": { + "type": "AggregationQuery", + "id": 3 }, - "keyValue": { - "type": "Key", - "id": 5 + "gqlQuery": { + "type": "GqlQuery", + "id": 7 + } + } + }, + "RunAggregationQueryResponse": { + "fields": { + "batch": { + "type": "AggregationResultBatch", + "id": 1 }, - "stringValue": { + "query": { + "type": "AggregationQuery", + "id": 2 + } + } + }, + "BeginTransactionRequest": { + "fields": { + "projectId": { "type": "string", - "id": 17 - }, - "blobValue": { - "type": "bytes", - "id": 18 - }, - "geoPointValue": { - "type": "google.type.LatLng", - "id": 8 - }, - "entityValue": { - "type": "Entity", - "id": 6 + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, - "arrayValue": { - "type": "ArrayValue", + "databaseId": { + "type": "string", "id": 9 }, - "meaning": { - "type": "int32", - "id": 14 - }, - "excludeFromIndexes": { - "type": "bool", - "id": 19 + "transactionOptions": { + "type": "TransactionOptions", + "id": 10 } } }, - "Entity": { + "BeginTransactionResponse": { "fields": { - "key": { - "type": "Key", + "transaction": { + "type": "bytes", "id": 1 + } + } + }, + "RollbackRequest": { + "fields": { + "projectId": { + "type": "string", + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, - "properties": { - "keyType": "string", - "type": "Value", - "id": 3 + "databaseId": { + "type": "string", + "id": 9 + }, + "transaction": { + "type": "bytes", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, - "EntityResult": { + "RollbackResponse": { + "fields": {} + }, + "CommitRequest": { + "oneofs": { + "transactionSelector": { + "oneof": [ + "transaction" + ] + } + }, "fields": { - "entity": { - "type": "Entity", - "id": 1 + "projectId": { + "type": "string", + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, - "version": { - "type": "int64", - "id": 4 + "databaseId": { + "type": "string", + "id": 9 }, - "updateTime": { - "type": "google.protobuf.Timestamp", + "mode": { + "type": "Mode", "id": 5 }, - "cursor": { + "transaction": { "type": "bytes", - "id": 3 + "id": 1 + }, + "mutations": { + "rule": "repeated", + "type": "Mutation", + "id": 6 } }, "nested": { - "ResultType": { + "Mode": { "values": { - "RESULT_TYPE_UNSPECIFIED": 0, - "FULL": 1, - "PROJECTION": 2, - "KEY_ONLY": 3 + "MODE_UNSPECIFIED": 0, + "TRANSACTIONAL": 1, + "NON_TRANSACTIONAL": 2 } } } }, - "Query": { + "CommitResponse": { "fields": { - "projection": { - "rule": "repeated", - "type": "Projection", - "id": 2 - }, - "kind": { + "mutationResults": { "rule": "repeated", - "type": "KindExpression", + "type": "MutationResult", "id": 3 }, - "filter": { - "type": "Filter", + "indexUpdates": { + "type": "int32", "id": 4 }, - "order": { - "rule": "repeated", - "type": "PropertyOrder", - "id": 5 - }, - "distinctOn": { - "rule": "repeated", - "type": "PropertyReference", - "id": 6 - }, - "startCursor": { - "type": "bytes", - "id": 7 - }, - "endCursor": { - "type": "bytes", + "commitTime": { + "type": "google.protobuf.Timestamp", "id": 8 - }, - "offset": { - "type": "int32", - "id": 10 - }, - "limit": { - "type": "google.protobuf.Int32Value", - "id": 12 } } }, - "KindExpression": { + "AllocateIdsRequest": { "fields": { - "name": { + "projectId": { "type": "string", - "id": 1 - } - } - }, - "PropertyReference": { - "fields": { - "name": { + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "databaseId": { "type": "string", - "id": 2 + "id": 9 + }, + "keys": { + "rule": "repeated", + "type": "Key", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } } } }, - "Projection": { + "AllocateIdsResponse": { "fields": { - "property": { - "type": "PropertyReference", + "keys": { + "rule": "repeated", + "type": "Key", "id": 1 } } }, - "PropertyOrder": { + "ReserveIdsRequest": { "fields": { - "property": { - "type": "PropertyReference", - "id": 1 + "projectId": { + "type": "string", + "id": 8, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } }, - "direction": { - "type": "Direction", - "id": 2 - } - }, - "nested": { - "Direction": { - "values": { - "DIRECTION_UNSPECIFIED": 0, - "ASCENDING": 1, - "DESCENDING": 2 + "databaseId": { + "type": "string", + "id": 9 + }, + "keys": { + "rule": "repeated", + "type": "Key", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" } } } }, - "Filter": { + "ReserveIdsResponse": { + "fields": {} + }, + "Mutation": { "oneofs": { - "filterType": { + "operation": { "oneof": [ - "compositeFilter", - "propertyFilter" + "insert", + "update", + "upsert", + "delete" + ] + }, + "conflictDetectionStrategy": { + "oneof": [ + "baseVersion", + "updateTime" ] } }, "fields": { - "compositeFilter": { - "type": "CompositeFilter", - "id": 1 + "insert": { + "type": "Entity", + "id": 4 }, - "propertyFilter": { - "type": "PropertyFilter", - "id": 2 + "update": { + "type": "Entity", + "id": 5 + }, + "upsert": { + "type": "Entity", + "id": 6 + }, + "delete": { + "type": "Key", + "id": 7 + }, + "baseVersion": { + "type": "int64", + "id": 8 + }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 11 } } }, - "CompositeFilter": { + "MutationResult": { "fields": { - "op": { - "type": "Operator", - "id": 1 + "key": { + "type": "Key", + "id": 3 }, - "filters": { - "rule": "repeated", - "type": "Filter", - "id": 2 - } - }, - "nested": { - "Operator": { - "values": { - "OPERATOR_UNSPECIFIED": 0, - "AND": 1 - } + "version": { + "type": "int64", + "id": 4 + }, + "updateTime": { + "type": "google.protobuf.Timestamp", + "id": 6 + }, + "conflictDetected": { + "type": "bool", + "id": 5 } } }, - "PropertyFilter": { + "ReadOptions": { + "oneofs": { + "consistencyType": { + "oneof": [ + "readConsistency", + "transaction", + "readTime" + ] + } + }, "fields": { - "property": { - "type": "PropertyReference", + "readConsistency": { + "type": "ReadConsistency", "id": 1 }, - "op": { - "type": "Operator", + "transaction": { + "type": "bytes", "id": 2 }, - "value": { - "type": "Value", - "id": 3 + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 4 } }, "nested": { - "Operator": { + "ReadConsistency": { "values": { - "OPERATOR_UNSPECIFIED": 0, - "LESS_THAN": 1, - "LESS_THAN_OR_EQUAL": 2, - "GREATER_THAN": 3, - "GREATER_THAN_OR_EQUAL": 4, - "EQUAL": 5, - "IN": 6, - "NOT_EQUAL": 9, - "HAS_ANCESTOR": 11, - "NOT_IN": 13 + "READ_CONSISTENCY_UNSPECIFIED": 0, + "STRONG": 1, + "EVENTUAL": 2 } } } }, - "GqlQuery": { - "fields": { - "queryString": { - "type": "string", - "id": 1 - }, - "allowLiterals": { - "type": "bool", - "id": 2 - }, - "namedBindings": { - "keyType": "string", - "type": "GqlQueryParameter", - "id": 5 - }, - "positionalBindings": { - "rule": "repeated", - "type": "GqlQueryParameter", - "id": 4 - } - } - }, - "GqlQueryParameter": { + "TransactionOptions": { "oneofs": { - "parameterType": { + "mode": { "oneof": [ - "value", - "cursor" + "readWrite", + "readOnly" ] } }, "fields": { - "value": { - "type": "Value", - "id": 2 - }, - "cursor": { - "type": "bytes", - "id": 3 - } - } - }, - "QueryResultBatch": { - "fields": { - "skippedResults": { - "type": "int32", - "id": 6 - }, - "skippedCursor": { - "type": "bytes", - "id": 3 - }, - "entityResultType": { - "type": "EntityResult.ResultType", + "readWrite": { + "type": "ReadWrite", "id": 1 }, - "entityResults": { - "rule": "repeated", - "type": "EntityResult", + "readOnly": { + "type": "ReadOnly", "id": 2 - }, - "endCursor": { - "type": "bytes", - "id": 4 - }, - "moreResults": { - "type": "MoreResultsType", - "id": 5 - }, - "snapshotVersion": { - "type": "int64", - "id": 7 - }, - "readTime": { - "type": "google.protobuf.Timestamp", - "id": 8 } }, "nested": { - "MoreResultsType": { - "values": { - "MORE_RESULTS_TYPE_UNSPECIFIED": 0, - "NOT_FINISHED": 1, - "MORE_RESULTS_AFTER_LIMIT": 2, - "MORE_RESULTS_AFTER_CURSOR": 4, - "NO_MORE_RESULTS": 3 + "ReadWrite": { + "fields": { + "previousTransaction": { + "type": "bytes", + "id": 1 + } + } + }, + "ReadOnly": { + "fields": { + "readTime": { + "type": "google.protobuf.Timestamp", + "id": 1 + } } } } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index ea19a44f14a..bcd480263e8 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -23,7 +23,6 @@ import type { CallOptions, Descriptors, ClientOptions, - GrpcClientOptions, } from 'google-gax'; import * as protos from '../../protos/protos'; @@ -64,7 +63,6 @@ export class DatastoreClient { }; warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: {[name: string]: Function}; - operationsClient: gax.OperationsClient; datastoreStub?: Promise<{[name: string]: Function}>; /** @@ -176,41 +174,6 @@ export class DatastoreClient { // Load the applicable protos. this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); - const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos); - // This API contains "long-running operations", which return a - // an Operation object that allows for tracking of the operation, - // rather than holding a request open. - const lroOptions: GrpcClientOptions = { - auth: this.auth, - grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, - }; - if (opts.fallback === 'rest') { - lroOptions.protoJson = protoFilesRoot; - lroOptions.httpRules = [ - { - selector: 'google.longrunning.Operations.CancelOperation', - post: '/v1/{name=projects/*/operations/*}:cancel', - }, - { - selector: 'google.longrunning.Operations.DeleteOperation', - delete: '/v1/{name=projects/*/operations/*}', - }, - { - selector: 'google.longrunning.Operations.GetOperation', - get: '/v1/{name=projects/*/operations/*}', - }, - { - selector: 'google.longrunning.Operations.ListOperations', - get: '/v1/{name=projects/*}/operations', - }, - ]; - } - this.operationsClient = this._gaxModule - .lro(lroOptions) - .operationsClient(opts); - - this.descriptors.longrunning = {}; - // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( 'google.datastore.v1.Datastore', @@ -263,6 +226,7 @@ export class DatastoreClient { const datastoreStubMethods = [ 'lookup', 'runQuery', + 'runAggregationQuery', 'beginTransaction', 'commit', 'rollback', @@ -545,6 +509,107 @@ export class DatastoreClient { this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); } + /** + * Runs an aggregation query. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.projectId + * Required. The ID of the project against which to make the request. + * @param {string} request.databaseId + * The ID of the database against which to make the request. + * + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + * @param {google.datastore.v1.PartitionId} request.partitionId + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + * @param {google.datastore.v1.ReadOptions} request.readOptions + * The options for this query. + * @param {google.datastore.v1.AggregationQuery} request.aggregationQuery + * The query to run. + * @param {google.datastore.v1.GqlQuery} request.gqlQuery + * The GQL query to run. This query must be an aggregation query. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing [RunAggregationQueryResponse]{@link google.datastore.v1.RunAggregationQueryResponse}. + * Please see the + * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * for more details and examples. + * @example include:samples/generated/v1/datastore.run_aggregation_query.js + * region_tag:datastore_v1_generated_Datastore_RunAggregationQuery_async + */ + runAggregationQuery( + request?: protos.google.datastore.v1.IRunAggregationQueryRequest, + options?: CallOptions + ): Promise< + [ + protos.google.datastore.v1.IRunAggregationQueryResponse, + protos.google.datastore.v1.IRunAggregationQueryRequest | undefined, + {} | undefined + ] + >; + runAggregationQuery( + request: protos.google.datastore.v1.IRunAggregationQueryRequest, + options: CallOptions, + callback: Callback< + protos.google.datastore.v1.IRunAggregationQueryResponse, + protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined, + {} | null | undefined + > + ): void; + runAggregationQuery( + request: protos.google.datastore.v1.IRunAggregationQueryRequest, + callback: Callback< + protos.google.datastore.v1.IRunAggregationQueryResponse, + protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined, + {} | null | undefined + > + ): void; + runAggregationQuery( + request?: protos.google.datastore.v1.IRunAggregationQueryRequest, + optionsOrCallback?: + | CallOptions + | Callback< + protos.google.datastore.v1.IRunAggregationQueryResponse, + | protos.google.datastore.v1.IRunAggregationQueryRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.datastore.v1.IRunAggregationQueryResponse, + protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined, + {} | null | undefined + > + ): Promise< + [ + protos.google.datastore.v1.IRunAggregationQueryResponse, + protos.google.datastore.v1.IRunAggregationQueryRequest | undefined, + {} | undefined + ] + > | void { + request = request || {}; + let options: CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + project_id: request.projectId ?? '', + }); + this.initialize(); + return this.innerApiCalls.runAggregationQuery(request, options, callback); + } /** * Begins a new transaction. * @@ -1022,183 +1087,6 @@ export class DatastoreClient { return this.innerApiCalls.reserveIds(request, options, callback); } - /** - * Gets the latest state of a long-running operation. Clients can use this - * method to poll the operation result at intervals as recommended by the API - * service. - * - * @param {Object} request - The request object that will be sent. - * @param {string} request.name - The name of the operation resource. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. - * @param {function(?Error, ?Object)=} callback - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. - * @return {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. The promise has a method named - * "cancel" which cancels the ongoing API call. - * - * @example - * ``` - * const client = longrunning.operationsClient(); - * const name = ''; - * const [response] = await client.getOperation({name}); - * // doThingsWith(response) - * ``` - */ - getOperation( - request: protos.google.longrunning.GetOperationRequest, - options?: - | gax.CallOptions - | Callback< - protos.google.longrunning.Operation, - protos.google.longrunning.GetOperationRequest, - {} | null | undefined - >, - callback?: Callback< - protos.google.longrunning.Operation, - protos.google.longrunning.GetOperationRequest, - {} | null | undefined - > - ): Promise<[protos.google.longrunning.Operation]> { - return this.operationsClient.getOperation(request, options, callback); - } - /** - * Lists operations that match the specified filter in the request. If the - * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object. - * - * For-await-of syntax is used with the iterable to recursively get response element on-demand. - * - * @param {Object} request - The request object that will be sent. - * @param {string} request.name - The name of the operation collection. - * @param {string} request.filter - The standard list filter. - * @param {number=} request.pageSize - - * The maximum number of resources contained in the underlying API - * response. If page streaming is performed per-resource, this - * parameter does not affect the return value. If page streaming is - * performed per-page, this determines the maximum number of - * resources in a page. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. - * @returns {Object} - * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. - * - * @example - * ``` - * const client = longrunning.operationsClient(); - * for await (const response of client.listOperationsAsync(request)); - * // doThingsWith(response) - * ``` - */ - listOperationsAsync( - request: protos.google.longrunning.ListOperationsRequest, - options?: gax.CallOptions - ): AsyncIterable { - return this.operationsClient.listOperationsAsync(request, options); - } - /** - * Starts asynchronous cancellation on a long-running operation. The server - * makes a best effort to cancel the operation, but success is not - * guaranteed. If the server doesn't support this method, it returns - * `google.rpc.Code.UNIMPLEMENTED`. Clients can use - * {@link Operations.GetOperation} or - * other methods to check whether the cancellation succeeded or whether the - * operation completed despite cancellation. On successful cancellation, - * the operation is not deleted; instead, it becomes an operation with - * an {@link Operation.error} value with a {@link google.rpc.Status.code} of - * 1, corresponding to `Code.CANCELLED`. - * - * @param {Object} request - The request object that will be sent. - * @param {string} request.name - The name of the operation resource to be cancelled. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. - * @param {function(?Error)=} callback - * The function which will be called with the result of the API call. - * @return {Promise} - The promise which resolves when API call finishes. - * The promise has a method named "cancel" which cancels the ongoing API - * call. - * - * @example - * ``` - * const client = longrunning.operationsClient(); - * await client.cancelOperation({name: ''}); - * ``` - */ - cancelOperation( - request: protos.google.longrunning.CancelOperationRequest, - options?: - | gax.CallOptions - | Callback< - protos.google.protobuf.Empty, - protos.google.longrunning.CancelOperationRequest, - {} | undefined | null - >, - callback?: Callback< - protos.google.longrunning.CancelOperationRequest, - protos.google.protobuf.Empty, - {} | undefined | null - > - ): Promise { - return this.operationsClient.cancelOperation(request, options, callback); - } - - /** - * Deletes a long-running operation. This method indicates that the client is - * no longer interested in the operation result. It does not cancel the - * operation. If the server doesn't support this method, it returns - * `google.rpc.Code.UNIMPLEMENTED`. - * - * @param {Object} request - The request object that will be sent. - * @param {string} request.name - The name of the operation resource to be deleted. - * @param {Object=} options - * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. - * @param {function(?Error)=} callback - * The function which will be called with the result of the API call. - * @return {Promise} - The promise which resolves when API call finishes. - * The promise has a method named "cancel" which cancels the ongoing API - * call. - * - * @example - * ``` - * const client = longrunning.operationsClient(); - * await client.deleteOperation({name: ''}); - * ``` - */ - deleteOperation( - request: protos.google.longrunning.DeleteOperationRequest, - options?: - | gax.CallOptions - | Callback< - protos.google.protobuf.Empty, - protos.google.longrunning.DeleteOperationRequest, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.Empty, - protos.google.longrunning.DeleteOperationRequest, - {} | null | undefined - > - ): Promise { - return this.operationsClient.deleteOperation(request, options, callback); - } - /** * Terminate the gRPC channel and close the client. * @@ -1210,7 +1098,6 @@ export class DatastoreClient { return this.datastoreStub.then(stub => { this._terminated = true; stub.close(); - this.operationsClient.close(); }); } return Promise.resolve(); diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json index 37bd1c737d3..00d94ed6e47 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client_config.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_client_config.json @@ -30,6 +30,11 @@ "retry_codes_name": "idempotent", "retry_params_name": "default" }, + "RunAggregationQuery": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + }, "BeginTransaction": { "timeout_millis": 60000, "retry_codes_name": "non_idempotent", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json index 0636f1215be..87f7c47ccd1 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -1,4 +1,5 @@ [ + "../../protos/google/datastore/v1/aggregation_result.proto", "../../protos/google/datastore/v1/datastore.proto", "../../protos/google/datastore/v1/entity.proto", "../../protos/google/datastore/v1/query.proto" diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 230dd7bfcfc..38b556fc6ee 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -23,7 +23,7 @@ import {SinonStub} from 'sinon'; import {describe, it} from 'mocha'; import * as datastoreModule from '../src'; -import {protobuf, operationsProtos} from 'google-gax'; +import {protobuf} from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects @@ -64,29 +64,6 @@ function stubSimpleCallWithCallback( : sinon.stub().callsArgWith(2, null, response); } -function stubAsyncIterationCall( - responses?: ResponseType[], - error?: Error -) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - }, - }; - }, - }; - return sinon.stub().returns(asyncIterable); -} - describe('v1.DatastoreClient', () => { describe('Common methods', () => { it('has servicePath', () => { @@ -439,6 +416,137 @@ describe('v1.DatastoreClient', () => { }); }); + describe('runAggregationQuery', () => { + it('invokes runAggregationQuery without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryRequest() + ); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunAggregationQueryRequest', + ['projectId'] + ); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryResponse() + ); + client.innerApiCalls.runAggregationQuery = + stubSimpleCall(expectedResponse); + const [response] = await client.runAggregationQuery(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); + + it('invokes runAggregationQuery without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryRequest() + ); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunAggregationQueryRequest', + ['projectId'] + ); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + const expectedResponse = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryResponse() + ); + client.innerApiCalls.runAggregationQuery = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.runAggregationQuery( + request, + ( + err?: Error | null, + result?: protos.google.datastore.v1.IRunAggregationQueryResponse | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); + + it('invokes runAggregationQuery with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryRequest() + ); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunAggregationQueryRequest', + ['projectId'] + ); + request.projectId = defaultValue1; + const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + const expectedError = new Error('expected'); + client.innerApiCalls.runAggregationQuery = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(client.runAggregationQuery(request), expectedError); + const actualRequest = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.runAggregationQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); + + it('invokes runAggregationQuery with closed client', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new protos.google.datastore.v1.RunAggregationQueryRequest() + ); + const defaultValue1 = getTypeDefaultValue( + '.google.datastore.v1.RunAggregationQueryRequest', + ['projectId'] + ); + request.projectId = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close(); + await assert.rejects(client.runAggregationQuery(request), expectedError); + }); + }); + describe('beginTransaction', () => { it('invokes beginTransaction without error', async () => { const client = new datastoreModule.v1.DatastoreClient({ @@ -1082,309 +1190,4 @@ describe('v1.DatastoreClient', () => { await assert.rejects(client.reserveIds(request), expectedError); }); }); - describe('getOperation', () => { - it('invokes getOperation without error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const response = await client.getOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert( - (client.operationsClient.getOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - it('invokes getOperation without error using callback', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = sinon - .stub() - .callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.getOperation( - request, - undefined, - ( - err?: Error | null, - result?: operationsProtos.google.longrunning.Operation | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - } - ); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); - it('invokes getOperation with error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.getOperation = stubSimpleCall( - undefined, - expectedError - ); - await assert.rejects(async () => { - await client.getOperation(request); - }, expectedError); - assert( - (client.operationsClient.getOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - }); - describe('cancelOperation', () => { - it('invokes cancelOperation without error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = - stubSimpleCall(expectedResponse); - const response = await client.cancelOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert( - (client.operationsClient.cancelOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - it('invokes cancelOperation without error using callback', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = sinon - .stub() - .callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.cancelOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - } - ); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); - }); - it('invokes cancelOperation with error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.cancelOperation = stubSimpleCall( - undefined, - expectedError - ); - await assert.rejects(async () => { - await client.cancelOperation(request); - }, expectedError); - assert( - (client.operationsClient.cancelOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - }); - describe('deleteOperation', () => { - it('invokes deleteOperation without error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = - stubSimpleCall(expectedResponse); - const response = await client.deleteOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert( - (client.operationsClient.deleteOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - it('invokes deleteOperation without error using callback', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = sinon - .stub() - .callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.deleteOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - } - ); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); - }); - it('invokes deleteOperation with error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.deleteOperation = stubSimpleCall( - undefined, - expectedError - ); - await assert.rejects(async () => { - await client.deleteOperation(request); - }, expectedError); - assert( - (client.operationsClient.deleteOperation as SinonStub) - .getCall(0) - .calledWith(request) - ); - }); - }); - describe('listOperationsAsync', () => { - it('uses async iteration with listOperations without error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedResponse = [ - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - ]; - client.operationsClient.descriptor.listOperations.asyncIterate = - stubAsyncIterationCall(expectedResponse); - const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = - []; - const iterable = client.operationsClient.listOperationsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - ( - client.operationsClient.descriptor.listOperations - .asyncIterate as SinonStub - ).getCall(0).args[1], - request - ); - }); - it('uses async iteration with listOperations with error', async () => { - const client = new datastoreModule.v1.DatastoreClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.descriptor.listOperations.asyncIterate = - stubAsyncIterationCall(undefined, expectedError); - const iterable = client.operationsClient.listOperationsAsync(request); - await assert.rejects(async () => { - const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = - []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - ( - client.operationsClient.descriptor.listOperations - .asyncIterate as SinonStub - ).getCall(0).args[1], - request - ); - }); - }); }); From 455b9ac612eb51d961ff13187ff9668b46a9829d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 19:56:15 +0000 Subject: [PATCH 691/820] fix: bring back LRO mixin (#1009) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 483421797 Source-Link: https://togithub.com/googleapis/googleapis/commit/bb964feba5980ed70c9fb8f84fe6e86694df65b0 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/a95ec39af865efffe0d885f306cdcacc82aba1f8 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYTk1ZWMzOWFmODY1ZWZmZmUwZDg4NWYzMDZjZGNhY2M4MmFiYTFmOCJ9 --- .../src/v1/datastore_client.ts | 215 ++++++++++++ .../test/gapic_datastore_v1.ts | 330 +++++++++++++++++- 2 files changed, 544 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index bcd480263e8..b83576f02b0 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -23,6 +23,7 @@ import type { CallOptions, Descriptors, ClientOptions, + GrpcClientOptions, } from 'google-gax'; import * as protos from '../../protos/protos'; @@ -63,6 +64,7 @@ export class DatastoreClient { }; warn: (code: string, message: string, warnType?: string) => void; innerApiCalls: {[name: string]: Function}; + operationsClient: gax.OperationsClient; datastoreStub?: Promise<{[name: string]: Function}>; /** @@ -174,6 +176,41 @@ export class DatastoreClient { // Load the applicable protos. this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); + const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos); + // This API contains "long-running operations", which return a + // an Operation object that allows for tracking of the operation, + // rather than holding a request open. + const lroOptions: GrpcClientOptions = { + auth: this.auth, + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, + }; + if (opts.fallback === 'rest') { + lroOptions.protoJson = protoFilesRoot; + lroOptions.httpRules = [ + { + selector: 'google.longrunning.Operations.CancelOperation', + post: '/v1/{name=projects/*/operations/*}:cancel', + }, + { + selector: 'google.longrunning.Operations.DeleteOperation', + delete: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.GetOperation', + get: '/v1/{name=projects/*/operations/*}', + }, + { + selector: 'google.longrunning.Operations.ListOperations', + get: '/v1/{name=projects/*}/operations', + }, + ]; + } + this.operationsClient = this._gaxModule + .lro(lroOptions) + .operationsClient(opts); + + this.descriptors.longrunning = {}; + // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( 'google.datastore.v1.Datastore', @@ -1087,6 +1124,183 @@ export class DatastoreClient { return this.innerApiCalls.reserveIds(request, options, callback); } + /** + * Gets the latest state of a long-running operation. Clients can use this + * method to poll the operation result at intervals as recommended by the API + * service. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error, ?Object)=} callback + * The function which will be called with the result of the API call. + * + * The second parameter to the callback is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. + * @return {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * [google.longrunning.Operation]{@link + * external:"google.longrunning.Operation"}. The promise has a method named + * "cancel" which cancels the ongoing API call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * const name = ''; + * const [response] = await client.getOperation({name}); + * // doThingsWith(response) + * ``` + */ + getOperation( + request: protos.google.longrunning.GetOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.longrunning.Operation, + protos.google.longrunning.GetOperationRequest, + {} | null | undefined + > + ): Promise<[protos.google.longrunning.Operation]> { + return this.operationsClient.getOperation(request, options, callback); + } + /** + * Lists operations that match the specified filter in the request. If the + * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object. + * + * For-await-of syntax is used with the iterable to recursively get response element on-demand. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation collection. + * @param {string} request.filter - The standard list filter. + * @param {number=} request.pageSize - + * The maximum number of resources contained in the underlying API + * response. If page streaming is performed per-resource, this + * parameter does not affect the return value. If page streaming is + * performed per-page, this determines the maximum number of + * resources in a page. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @returns {Object} + * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * for await (const response of client.listOperationsAsync(request)); + * // doThingsWith(response) + * ``` + */ + listOperationsAsync( + request: protos.google.longrunning.ListOperationsRequest, + options?: gax.CallOptions + ): AsyncIterable { + return this.operationsClient.listOperationsAsync(request, options); + } + /** + * Starts asynchronous cancellation on a long-running operation. The server + * makes a best effort to cancel the operation, but success is not + * guaranteed. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. Clients can use + * {@link Operations.GetOperation} or + * other methods to check whether the cancellation succeeded or whether the + * operation completed despite cancellation. On successful cancellation, + * the operation is not deleted; instead, it becomes an operation with + * an {@link Operation.error} value with a {@link google.rpc.Status.code} of + * 1, corresponding to `Code.CANCELLED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be cancelled. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.cancelOperation({name: ''}); + * ``` + */ + cancelOperation( + request: protos.google.longrunning.CancelOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.CancelOperationRequest, + {} | undefined | null + >, + callback?: Callback< + protos.google.longrunning.CancelOperationRequest, + protos.google.protobuf.Empty, + {} | undefined | null + > + ): Promise { + return this.operationsClient.cancelOperation(request, options, callback); + } + + /** + * Deletes a long-running operation. This method indicates that the client is + * no longer interested in the operation result. It does not cancel the + * operation. If the server doesn't support this method, it returns + * `google.rpc.Code.UNIMPLEMENTED`. + * + * @param {Object} request - The request object that will be sent. + * @param {string} request.name - The name of the operation resource to be deleted. + * @param {Object=} options + * Optional parameters. You can override the default settings for this call, + * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * details. + * @param {function(?Error)=} callback + * The function which will be called with the result of the API call. + * @return {Promise} - The promise which resolves when API call finishes. + * The promise has a method named "cancel" which cancels the ongoing API + * call. + * + * @example + * ``` + * const client = longrunning.operationsClient(); + * await client.deleteOperation({name: ''}); + * ``` + */ + deleteOperation( + request: protos.google.longrunning.DeleteOperationRequest, + options?: + | gax.CallOptions + | Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.Empty, + protos.google.longrunning.DeleteOperationRequest, + {} | null | undefined + > + ): Promise { + return this.operationsClient.deleteOperation(request, options, callback); + } + /** * Terminate the gRPC channel and close the client. * @@ -1098,6 +1312,7 @@ export class DatastoreClient { return this.datastoreStub.then(stub => { this._terminated = true; stub.close(); + this.operationsClient.close(); }); } return Promise.resolve(); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 38b556fc6ee..3698f5ec9f7 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -23,7 +23,7 @@ import {SinonStub} from 'sinon'; import {describe, it} from 'mocha'; import * as datastoreModule from '../src'; -import {protobuf} from 'google-gax'; +import {protobuf, operationsProtos} from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects @@ -64,6 +64,29 @@ function stubSimpleCallWithCallback( : sinon.stub().callsArgWith(2, null, response); } +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({done: true, value: undefined}); + } + return Promise.resolve({done: false, value: responses![counter++]}); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); +} + describe('v1.DatastoreClient', () => { describe('Common methods', () => { it('has servicePath', () => { @@ -1190,4 +1213,309 @@ describe('v1.DatastoreClient', () => { await assert.rejects(client.reserveIds(request), expectedError); }); }); + describe('getOperation', () => { + it('invokes getOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const response = await client.getOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes getOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation() + ); + client.operationsClient.getOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.getOperation( + request, + undefined, + ( + err?: Error | null, + result?: operationsProtos.google.longrunning.Operation | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + it('invokes getOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.getOperation(request); + }, expectedError); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('cancelOperation', () => { + it('invokes cancelOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = + stubSimpleCall(expectedResponse); + const response = await client.cancelOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes cancelOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.cancelOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.cancelOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); + }); + it('invokes cancelOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.cancelOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.cancelOperation(request); + }, expectedError); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('deleteOperation', () => { + it('invokes deleteOperation without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = + stubSimpleCall(expectedResponse); + const response = await client.deleteOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + it('invokes deleteOperation without error using callback', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty() + ); + client.operationsClient.deleteOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient.deleteOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); + }); + it('invokes deleteOperation with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.deleteOperation = stubSimpleCall( + undefined, + expectedError + ); + await assert.rejects(async () => { + await client.deleteOperation(request); + }, expectedError); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request) + ); + }); + }); + describe('listOperationsAsync', () => { + it('uses async iteration with listOperations without error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedResponse = [ + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse() + ), + ]; + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + const iterable = client.operationsClient.listOperationsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + it('uses async iteration with listOperations with error', async () => { + const client = new datastoreModule.v1.DatastoreClient({ + credentials: {client_email: 'bogus', private_key: 'bogus'}, + projectId: 'bogus', + }); + client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest() + ); + const expectedError = new Error('expected'); + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.operationsClient.listOperationsAsync(request); + await assert.rejects(async () => { + const responses: operationsProtos.google.longrunning.ListOperationsResponse[] = + []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request + ); + }); + }); }); From 8a43a79a531fe7eeaaeff334efecae6e8cdf9926 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 2 Nov 2022 14:56:21 -0700 Subject: [PATCH 692/820] fix(deps): use google-gax v3.5.2 (#1013) - fix(deps): use google-gax v3.5.2 - fix: add comma --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9faa6d51f56..9e0abed3e18 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^3.3.0", + "google-gax": "^3.5.2", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" From 47dfbdedd47aa21520a88774e5f39ef5f3b02512 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 10 Nov 2022 10:18:37 +0100 Subject: [PATCH 693/820] chore(deps): update dependency @types/node to v18 (#1010) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`^16.0.0` -> `^18.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/16.18.3/18.11.9) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/compatibility-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/18.11.9/confidence-slim/16.18.3)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9e0abed3e18..881fc4d9547 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -56,7 +56,7 @@ "@types/is": "0.0.21", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", - "@types/node": "^16.0.0", + "@types/node": "^18.0.0", "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", "c8": "^7.1.0", From b504da6f556c17b46cbaffb8c6f1d6f905c324c5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 10 Nov 2022 10:26:18 +0100 Subject: [PATCH 694/820] chore(deps): update dependency jsdoc to v4 (#1015) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jsdoc](https://togithub.com/jsdoc/jsdoc) | [`^3.6.3` -> `^4.0.0`](https://renovatebot.com/diffs/npm/jsdoc/3.6.11/4.0.0) | [![age](https://badges.renovateapi.com/packages/npm/jsdoc/4.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/jsdoc/4.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/jsdoc/4.0.0/compatibility-slim/3.6.11)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/jsdoc/4.0.0/confidence-slim/3.6.11)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
jsdoc/jsdoc ### [`v4.0.0`](https://togithub.com/jsdoc/jsdoc/blob/HEAD/CHANGES.md#​400-November-2022) [Compare Source](https://togithub.com/jsdoc/jsdoc/compare/3.6.11...084218523a7d69fec14a852ce680f374f526af28) - JSDoc releases now use [semantic versioning](https://semver.org/). If JSDoc makes backwards-incompatible changes in the future, the major version will be incremented. - JSDoc no longer uses the [`taffydb`](https://taffydb.com/) package. If your JSDoc template or plugin uses the `taffydb` package, see the [instructions for replacing `taffydb` with `@jsdoc/salty`](https://togithub.com/jsdoc/jsdoc/tree/main/packages/jsdoc-salty#use-salty-in-a-jsdoc-template). - JSDoc now supports Node.js 12.0.0 and later.
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 881fc4d9547..9532af03b5d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,7 +62,7 @@ "c8": "^7.1.0", "gts": "^3.1.0", "js-yaml": "^4.0.0", - "jsdoc": "^3.6.3", + "jsdoc": "^4.0.0", "jsdoc-fresh": "^2.0.0", "jsdoc-region-tag": "^2.0.0", "linkinator": "^4.0.0", From 1ec5e75d90c8508c14223830db091baee8bd379b Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 10:16:31 +0000 Subject: [PATCH 695/820] fix: regenerated protos JS and TS definitions (#1016) samples: pull in latest typeless bot, clean up some comments Source-Link: https://togithub.com/googleapis/synthtool/commit/0a68e568b6911b60bb6fd452eba4848b176031d8 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:5b05f26103855c3a15433141389c478d1d3fe088fb5d4e3217c4793f6b3f245e --- .../nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 230 +++++++++++++++--- 2 files changed, 202 insertions(+), 30 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index efdba35c4b3..827262b9d50 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -import Long = require("long"); import type {protobuf as $protobuf} from "google-gax"; +import Long = require("long"); /** Namespace google. */ export namespace google { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 08de1423567..27b7744e707 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -580,6 +580,12 @@ message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); } switch (object.operationType) { + default: + if (typeof object.operationType === "number") { + message.operationType = object.operationType; + break; + } + break; case "OPERATION_TYPE_UNSPECIFIED": case 0: message.operationType = 0; @@ -609,6 +615,12 @@ message.labels[keys[i]] = String(object.labels[keys[i]]); } switch (object.state) { + default: + if (typeof object.state === "number") { + message.state = object.state; + break; + } + break; case "STATE_UNSPECIFIED": case 0: message.state = 0; @@ -671,7 +683,7 @@ if (message.endTime != null && message.hasOwnProperty("endTime")) object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options); if (message.operationType != null && message.hasOwnProperty("operationType")) - object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType; + object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] === undefined ? message.operationType : $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType; var keys2; if (message.labels && (keys2 = Object.keys(message.labels)).length) { object.labels = {}; @@ -679,7 +691,7 @@ object.labels[keys2[j]] = message.labels[keys2[j]]; } if (message.state != null && message.hasOwnProperty("state")) - object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state; + object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state; return object; }; @@ -4368,6 +4380,12 @@ return object; var message = new $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata(); switch (object.migrationState) { + default: + if (typeof object.migrationState === "number") { + message.migrationState = object.migrationState; + break; + } + break; case "MIGRATION_STATE_UNSPECIFIED": case 0: message.migrationState = 0; @@ -4386,6 +4404,12 @@ break; } switch (object.migrationStep) { + default: + if (typeof object.migrationStep === "number") { + message.migrationStep = object.migrationStep; + break; + } + break; case "MIGRATION_STEP_UNSPECIFIED": case 0: message.migrationStep = 0; @@ -4440,9 +4464,9 @@ object.migrationStep = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0; } if (message.migrationState != null && message.hasOwnProperty("migrationState")) - object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState; + object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] === undefined ? message.migrationState : $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState; if (message.migrationStep != null && message.hasOwnProperty("migrationStep")) - object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep; + object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] === undefined ? message.migrationStep : $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep; return object; }; @@ -4765,6 +4789,12 @@ if (object.kind != null) message.kind = String(object.kind); switch (object.ancestor) { + default: + if (typeof object.ancestor === "number") { + message.ancestor = object.ancestor; + break; + } + break; case "ANCESTOR_MODE_UNSPECIFIED": case 0: message.ancestor = 0; @@ -4789,6 +4819,12 @@ } } switch (object.state) { + default: + if (typeof object.state === "number") { + message.state = object.state; + break; + } + break; case "STATE_UNSPECIFIED": case 0: message.state = 0; @@ -4842,14 +4878,14 @@ if (message.kind != null && message.hasOwnProperty("kind")) object.kind = message.kind; if (message.ancestor != null && message.hasOwnProperty("ancestor")) - object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor; + object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] === undefined ? message.ancestor : $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor; if (message.properties && message.properties.length) { object.properties = []; for (var j = 0; j < message.properties.length; ++j) object.properties[j] = $root.google.datastore.admin.v1.Index.IndexedProperty.toObject(message.properties[j], options); } if (message.state != null && message.hasOwnProperty("state")) - object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] : message.state; + object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.Index.State[message.state] : message.state; return object; }; @@ -5087,6 +5123,12 @@ if (object.name != null) message.name = String(object.name); switch (object.direction) { + default: + if (typeof object.direction === "number") { + message.direction = object.direction; + break; + } + break; case "DIRECTION_UNSPECIFIED": case 0: message.direction = 0; @@ -5123,7 +5165,7 @@ if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; if (message.direction != null && message.hasOwnProperty("direction")) - object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction; + object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction; return object; }; @@ -5336,6 +5378,12 @@ return object; var message = new $root.google.datastore.admin.v1.MigrationStateEvent(); switch (object.state) { + default: + if (typeof object.state === "number") { + message.state = object.state; + break; + } + break; case "MIGRATION_STATE_UNSPECIFIED": case 0: message.state = 0; @@ -5372,7 +5420,7 @@ if (options.defaults) object.state = options.enums === String ? "MIGRATION_STATE_UNSPECIFIED" : 0; if (message.state != null && message.hasOwnProperty("state")) - object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] : message.state; + object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.MigrationState[message.state] : message.state; return object; }; @@ -5629,6 +5677,12 @@ return object; var message = new $root.google.datastore.admin.v1.MigrationProgressEvent(); switch (object.step) { + default: + if (typeof object.step === "number") { + message.step = object.step; + break; + } + break; case "MIGRATION_STEP_UNSPECIFIED": case 0: message.step = 0; @@ -5691,7 +5745,7 @@ if (options.defaults) object.step = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0; if (message.step != null && message.hasOwnProperty("step")) - object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step; + object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] === undefined ? message.step : $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step; if (message.prepareStepDetails != null && message.hasOwnProperty("prepareStepDetails")) { object.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.toObject(message.prepareStepDetails, options); if (options.oneofs) @@ -5906,6 +5960,12 @@ return object; var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails(); switch (object.concurrencyMode) { + default: + if (typeof object.concurrencyMode === "number") { + message.concurrencyMode = object.concurrencyMode; + break; + } + break; case "CONCURRENCY_MODE_UNSPECIFIED": case 0: message.concurrencyMode = 0; @@ -5942,7 +6002,7 @@ if (options.defaults) object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0; if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) - object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; + object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; return object; }; @@ -6132,6 +6192,12 @@ return object; var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails(); switch (object.concurrencyMode) { + default: + if (typeof object.concurrencyMode === "number") { + message.concurrencyMode = object.concurrencyMode; + break; + } + break; case "CONCURRENCY_MODE_UNSPECIFIED": case 0: message.concurrencyMode = 0; @@ -6168,7 +6234,7 @@ if (options.defaults) object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0; if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode")) - object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; + object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode; return object; }; @@ -6724,6 +6790,12 @@ } } switch (object.moreResults) { + default: + if (typeof object.moreResults === "number") { + message.moreResults = object.moreResults; + break; + } + break; case "MORE_RESULTS_TYPE_UNSPECIFIED": case 0: message.moreResults = 0; @@ -6778,7 +6850,7 @@ object.aggregationResults[j] = $root.google.datastore.v1.AggregationResult.toObject(message.aggregationResults[j], options); } if (message.moreResults != null && message.hasOwnProperty("moreResults")) - object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; if (message.readTime != null && message.hasOwnProperty("readTime")) object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; @@ -8266,6 +8338,12 @@ return object; var message = new $root.google.datastore.v1.Value(); switch (object.nullValue) { + default: + if (typeof object.nullValue === "number") { + message.nullValue = object.nullValue; + break; + } + break; case "NULL_VALUE": case 0: message.nullValue = 0; @@ -8384,7 +8462,7 @@ object.valueType = "timestampValue"; } if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; if (options.oneofs) object.valueType = "nullValue"; } @@ -11060,6 +11138,12 @@ message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); } switch (object.direction) { + default: + if (typeof object.direction === "number") { + message.direction = object.direction; + break; + } + break; case "DIRECTION_UNSPECIFIED": case 0: message.direction = 0; @@ -11096,7 +11180,7 @@ if (message.property != null && message.hasOwnProperty("property")) object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); if (message.direction != null && message.hasOwnProperty("direction")) - object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; + object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction; return object; }; @@ -11590,6 +11674,12 @@ return object; var message = new $root.google.datastore.v1.CompositeFilter(); switch (object.op) { + default: + if (typeof object.op === "number") { + message.op = object.op; + break; + } + break; case "OPERATOR_UNSPECIFIED": case 0: message.op = 0; @@ -11630,7 +11720,7 @@ if (options.defaults) object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0; if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; + object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op; if (message.filters && message.filters.length) { object.filters = []; for (var j = 0; j < message.filters.length; ++j) @@ -11890,6 +11980,12 @@ message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); } switch (object.op) { + default: + if (typeof object.op === "number") { + message.op = object.op; + break; + } + break; case "OPERATOR_UNSPECIFIED": case 0: message.op = 0; @@ -11960,7 +12056,7 @@ if (message.property != null && message.hasOwnProperty("property")) object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); if (message.op != null && message.hasOwnProperty("op")) - object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; + object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op; if (message.value != null && message.hasOwnProperty("value")) object.value = $root.google.datastore.v1.Value.toObject(message.value, options); return object; @@ -12932,6 +13028,12 @@ else if (object.skippedCursor.length >= 0) message.skippedCursor = object.skippedCursor; switch (object.entityResultType) { + default: + if (typeof object.entityResultType === "number") { + message.entityResultType = object.entityResultType; + break; + } + break; case "RESULT_TYPE_UNSPECIFIED": case 0: message.entityResultType = 0; @@ -12965,6 +13067,12 @@ else if (object.endCursor.length >= 0) message.endCursor = object.endCursor; switch (object.moreResults) { + default: + if (typeof object.moreResults === "number") { + message.moreResults = object.moreResults; + break; + } + break; case "MORE_RESULTS_TYPE_UNSPECIFIED": case 0: message.moreResults = 0; @@ -13044,7 +13152,7 @@ object.readTime = null; } if (message.entityResultType != null && message.hasOwnProperty("entityResultType")) - object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; + object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] === undefined ? message.entityResultType : $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType; if (message.entityResults && message.entityResults.length) { object.entityResults = []; for (var j = 0; j < message.entityResults.length; ++j) @@ -13055,7 +13163,7 @@ if (message.endCursor != null && message.hasOwnProperty("endCursor")) object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor; if (message.moreResults != null && message.hasOwnProperty("moreResults")) - object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; + object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults; if (message.skippedResults != null && message.hasOwnProperty("skippedResults")) object.skippedResults = message.skippedResults; if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion")) @@ -16424,6 +16532,12 @@ if (object.databaseId != null) message.databaseId = String(object.databaseId); switch (object.mode) { + default: + if (typeof object.mode === "number") { + message.mode = object.mode; + break; + } + break; case "MODE_UNSPECIFIED": case 0: message.mode = 0; @@ -16481,7 +16595,7 @@ object.transactionSelector = "transaction"; } if (message.mode != null && message.hasOwnProperty("mode")) - object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; + object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode; if (message.mutations && message.mutations.length) { object.mutations = []; for (var j = 0; j < message.mutations.length; ++j) @@ -18691,6 +18805,12 @@ return object; var message = new $root.google.datastore.v1.ReadOptions(); switch (object.readConsistency) { + default: + if (typeof object.readConsistency === "number") { + message.readConsistency = object.readConsistency; + break; + } + break; case "READ_CONSISTENCY_UNSPECIFIED": case 0: message.readConsistency = 0; @@ -18731,7 +18851,7 @@ options = {}; var object = {}; if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) { - object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; + object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] === undefined ? message.readConsistency : $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency; if (options.oneofs) object.consistencyType = "readConsistency"; } @@ -22999,6 +23119,12 @@ if (object.number != null) message.number = object.number | 0; switch (object.label) { + default: + if (typeof object.label === "number") { + message.label = object.label; + break; + } + break; case "LABEL_OPTIONAL": case 1: message.label = 1; @@ -23013,6 +23139,12 @@ break; } switch (object.type) { + default: + if (typeof object.type === "number") { + message.type = object.type; + break; + } + break; case "TYPE_DOUBLE": case 1: message.type = 1; @@ -23139,9 +23271,9 @@ if (message.number != null && message.hasOwnProperty("number")) object.number = message.number; if (message.label != null && message.hasOwnProperty("label")) - object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; + object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] === undefined ? message.label : $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; if (message.type != null && message.hasOwnProperty("type")) - object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; + object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] === undefined ? message.type : $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; if (message.typeName != null && message.hasOwnProperty("typeName")) object.typeName = message.typeName; if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) @@ -25460,6 +25592,12 @@ if (object.javaStringCheckUtf8 != null) message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8); switch (object.optimizeFor) { + default: + if (typeof object.optimizeFor === "number") { + message.optimizeFor = object.optimizeFor; + break; + } + break; case "SPEED": case 1: message.optimizeFor = 1; @@ -25556,7 +25694,7 @@ if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) object.javaOuterClassname = message.javaOuterClassname; if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) - object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; + object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] === undefined ? message.optimizeFor : $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) object.javaMultipleFiles = message.javaMultipleFiles; if (message.goPackage != null && message.hasOwnProperty("goPackage")) @@ -26305,6 +26443,12 @@ return object; var message = new $root.google.protobuf.FieldOptions(); switch (object.ctype) { + default: + if (typeof object.ctype === "number") { + message.ctype = object.ctype; + break; + } + break; case "STRING": case 0: message.ctype = 0; @@ -26321,6 +26465,12 @@ if (object.packed != null) message.packed = Boolean(object.packed); switch (object.jstype) { + default: + if (typeof object.jstype === "number") { + message.jstype = object.jstype; + break; + } + break; case "JS_NORMAL": case 0: message.jstype = 0; @@ -26359,6 +26509,10 @@ for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i) switch (object[".google.api.fieldBehavior"][i]) { default: + if (typeof object[".google.api.fieldBehavior"][i] === "number") { + message[".google.api.fieldBehavior"][i] = object[".google.api.fieldBehavior"][i]; + break; + } case "FIELD_BEHAVIOR_UNSPECIFIED": case 0: message[".google.api.fieldBehavior"][i] = 0; @@ -26423,7 +26577,7 @@ object.unverifiedLazy = false; } if (message.ctype != null && message.hasOwnProperty("ctype")) - object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; + object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; if (message.packed != null && message.hasOwnProperty("packed")) object.packed = message.packed; if (message.deprecated != null && message.hasOwnProperty("deprecated")) @@ -26431,7 +26585,7 @@ if (message.lazy != null && message.hasOwnProperty("lazy")) object.lazy = message.lazy; if (message.jstype != null && message.hasOwnProperty("jstype")) - object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; + object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] === undefined ? message.jstype : $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; if (message.weak != null && message.hasOwnProperty("weak")) object.weak = message.weak; if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) @@ -26444,7 +26598,7 @@ if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) { object[".google.api.fieldBehavior"] = []; for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j) - object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; + object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] === undefined ? message[".google.api.fieldBehavior"][j] : $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; } return object; }; @@ -27819,6 +27973,12 @@ if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); switch (object.idempotencyLevel) { + default: + if (typeof object.idempotencyLevel === "number") { + message.idempotencyLevel = object.idempotencyLevel; + break; + } + break; case "IDEMPOTENCY_UNKNOWN": case 0: message.idempotencyLevel = 0; @@ -27888,7 +28048,7 @@ if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) - object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; + object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -29643,6 +29803,12 @@ if (object.end != null) message.end = object.end | 0; switch (object.semantic) { + default: + if (typeof object.semantic === "number") { + message.semantic = object.semantic; + break; + } + break; case "NONE": case 0: message.semantic = 0; @@ -29692,7 +29858,7 @@ if (message.end != null && message.hasOwnProperty("end")) object.end = message.end; if (message.semantic != null && message.hasOwnProperty("semantic")) - object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic; + object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] === undefined ? message.semantic : $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic; return object; }; @@ -31169,6 +31335,12 @@ return object; var message = new $root.google.protobuf.Value(); switch (object.nullValue) { + default: + if (typeof object.nullValue === "number") { + message.nullValue = object.nullValue; + break; + } + break; case "NULL_VALUE": case 0: message.nullValue = 0; @@ -31207,7 +31379,7 @@ options = {}; var object = {}; if (message.nullValue != null && message.hasOwnProperty("nullValue")) { - object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; + object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; if (options.oneofs) object.kind = "nullValue"; } From d3f1a5f42fb1ce5bedafda47228345790be3657e Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Thu, 12 Jan 2023 16:12:39 -0500 Subject: [PATCH 696/820] feat: Add the count aggregate function (#972) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Files copied over * implementation of aggregate queries. * Checkout index.ts previous version * src seems to be error free * optional parameters * replace with recognized type * protos generated * old package.json * aggregation query request * Commit so I can revert * Revert "aggregation query request" This reverts commit 0f2bd32b830d3e17aabc074104e21974c0efe659. * Revert "Revert "aggregation query request"" This reverts commit 173307231db8aa9bbff0f6178d8e9fad35068d08. * Added a parser * Comment out filters * Fixed parser * Add info * more tests, adding alias * use deep strict equal instead * Work on passing in buffered input. * Convert to buffer * Add alias * Add the aggregate function * change test descriptions * Add a unit test * Revert "Files copied over" This reverts commit fe55548b42f4940b4ef306ff9fa8a3e4bc07facc. # Conflicts: # src/index.ts * Revert "protos generated" This reverts commit 1b21ec26e3e0ff5c3b1ff4679525fde92760c703. * Eliminate comments * Add new line * Change upTo * Change maximum name to upTo * upTo relabelled from maximum * remove import * ran the linter * improve code readability * move self equals this * change header * Revert "change header" This reverts commit b3ea9765247574f57879caa2fc242fdc2bccefd7. * Add a header * change the unit test * Architecture changes * Getting closer * Add the right parsing * TODO message * Remove and add array over for aggregate fields * unit test and count function * fix unit test as result of new changes * linting fix * Added a test for encoding using a count function * lint fix * removed upTo * merge * undid local changes to package.json * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Update src/aggregate.ts Co-authored-by: Ruy Adorno * per reviewer * refactor and rename some methods * Add run method to aggregate query * test update and return value change * compare aggregate results * createAggregationQuery * linter and header fix * TODOs * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Remove autogenerated comment * count aggregation with limit filter tests * lint fix * Commented functions and classes Co-authored-by: Eric Schmidt Co-authored-by: Eric Schmidt Co-authored-by: Owl Bot Co-authored-by: Ruy Adorno Co-authored-by: Kristen O'Leary --- .../nodejs-datastore/protos/protos.d.ts | 2 +- handwritten/nodejs-datastore/protos/protos.js | 2 +- handwritten/nodejs-datastore/src/aggregate.ts | 160 ++++++++++++++++++ handwritten/nodejs-datastore/src/index.ts | 12 ++ handwritten/nodejs-datastore/src/query.ts | 3 + handwritten/nodejs-datastore/src/request.ts | 138 ++++++++++++--- .../nodejs-datastore/src/transaction.ts | 20 ++- handwritten/nodejs-datastore/src/v1/index.ts | 2 +- .../nodejs-datastore/system-test/datastore.ts | 86 +++++++++- handwritten/nodejs-datastore/test/query.ts | 19 +++ .../nodejs-datastore/test/transaction.ts | 1 + 11 files changed, 415 insertions(+), 30 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/aggregate.ts diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 827262b9d50..e55f5da4a5a 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 27b7744e707..6751b31605b 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/aggregate.ts b/handwritten/nodejs-datastore/src/aggregate.ts new file mode 100644 index 00000000000..fbef6e3ab36 --- /dev/null +++ b/handwritten/nodejs-datastore/src/aggregate.ts @@ -0,0 +1,160 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Query} from './index'; +import {RunQueryOptions, RunQueryResponse} from './query'; +import {RequestCallback} from './request'; +const AGGREGATE_QUERY = Symbol('AGGREGATE_QUERY'); + +/** + * An AggregateQuery is a class that can be used to obtain results from an + * aggregate query request. + * + * @see {@link https://cloud.google.com/datastore/docs/aggregation-queries| Aggregation queries Reference} + * + * @class + */ +class AggregateQuery { + type = AGGREGATE_QUERY; + aggregations: Array; + query: Query | undefined; + + /** + * Build an AggregateQuery object. + * + * @param {Query} query + */ + constructor(query: Query) { + this.query = query; + this.aggregations = []; + } + + /** + * Add a `count` aggregate query to the list of aggregations. + * + * @param {string} alias + * @returns {AggregateQuery} + */ + count(alias: string): AggregateQuery { + this.aggregations.push(AggregateField.count().alias(alias)); + return this; + } + + /** + * Add a custom aggregation to the list of aggregations. + * + * @param {AggregateField} aggregation + * @returns {AggregateQuery} + */ + addAggregation(aggregation: AggregateField): AggregateQuery { + this.aggregations.push(aggregation); + return this; + } + + /** + * Add a list of custom aggregations to the list of aggregations. + * + * @param {AggregateField[]} aggregation + * @returns {AggregateQuery} + */ + addAggregations(aggregations: AggregateField[]): AggregateQuery { + for (const aggregation of aggregations) { + this.aggregations.push(aggregation); + } + return this; + } + + /** + * Run the aggregation query and return the results. + * + * @param {RunQueryOptions | RequestCallback} [optionsOrCallback] + * @param {function} cb The callback function. + * @returns {void | Promise} + */ + run( + optionsOrCallback?: RunQueryOptions | RequestCallback, + cb?: RequestCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + const scope = this.query!.scope; + const runAggregationQuery = scope!.runAggregationQuery.bind(scope); + return runAggregationQuery(this, options, callback); + } + + /** + * Get the proto for the list of aggregations. + * + */ + // eslint-disable-next-line + toProto(): any { + return this.aggregations.map(aggregation => aggregation.toProto()); + } +} + +/** + * An AggregateField is a class that contains data that defines an aggregation. + * + */ +abstract class AggregateField { + alias_?: string; + + /** + * Gets a copy of the Count aggregate field. + * + * @returns {Count} + */ + static count(): Count { + return new Count(); + } + + /** + * Gets a copy of the Count aggregate field. + * + * @param {string} alias The label used in the results to describe this + * aggregate field when a query is run. + * @returns {AggregateField} + */ + alias(alias: string): AggregateField { + this.alias_ = alias; + return this; + } + + /** + * Gets the proto for the aggregate field. + * + */ + // eslint-disable-next-line + abstract toProto(): any; +} + +/** + * A Count is a class that contains data that defines a Count aggregation. + * + */ +class Count extends AggregateField { + // eslint-disable-next-line + /** + * Gets the proto for the count aggregate field. + * + */ + toProto(): any { + const count = Object.assign({}); + return Object.assign({count}, this.alias_ ? {alias: this.alias_} : null); + } +} + +export {AggregateField, AggregateQuery, AGGREGATE_QUERY}; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 48ec56d9566..03b71735c50 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -64,6 +64,7 @@ import { import {Transaction} from './transaction'; import {promisifyAll} from '@google-cloud/promisify'; import {google} from '../protos/protos'; +import {AggregateQuery} from './aggregate'; const {grpc} = new GrpcClient(); @@ -509,6 +510,15 @@ class Datastore extends DatastoreRequest { this.auth = new GoogleAuth(this.options); } + /** + * Create an aggregation query from a Query. + * + * @param {Query} query A Query object. + */ + createAggregationQuery(query: Query): AggregateQuery { + return new AggregateQuery(query); + } + /** * Export entities from this project to a Google Cloud Storage bucket. * @@ -1797,10 +1807,12 @@ class Datastore extends DatastoreRequest { */ promisifyAll(Datastore, { exclude: [ + 'createAggregationQuery', 'double', 'isDouble', 'geoPoint', 'getProjectId', + 'getSharedQueryOptions', 'isGeoPoint', 'index', 'int', diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index d4891f58fe3..cbc464de775 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -21,6 +21,7 @@ import {Entity} from './entity'; import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; +import {AggregateField, AggregateQuery} from './aggregate'; export type Operator = | '=' @@ -572,6 +573,8 @@ export interface RunQueryCallback { export type RunQueryResponse = [Entity[], RunQueryInfo]; +export type RunAggregateQueryResponse = any; + export interface RunQueryInfo { endCursor?: string; moreResults?: diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index e93dd115484..35c50f09fe8 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -44,6 +44,7 @@ import { KeyProto, ResponseResult, Entities, + ValueProto, } from './entity'; import { Query, @@ -55,6 +56,7 @@ import { } from './query'; import {Datastore} from '.'; import ITimestamp = google.protobuf.ITimestamp; +import {AggregateQuery} from './aggregate'; /** * A map of read consistency values to proto codes. @@ -564,6 +566,76 @@ class DatastoreRequest { ); } + runAggregationQuery( + query: AggregateQuery, + options?: RunQueryOptions + ): Promise; + runAggregationQuery( + query: AggregateQuery, + options: RunQueryOptions, + callback: RequestCallback + ): void; + runAggregationQuery(query: AggregateQuery, callback: RequestCallback): void; + runAggregationQuery( + query: AggregateQuery, + optionsOrCallback?: RunQueryOptions | RequestCallback, + cb?: RequestCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + + query.query = extend(true, new Query(), query.query); + let queryProto: QueryProto; + try { + queryProto = entity.queryToQueryProto(query.query); + } catch (e) { + // using setImmediate here to make sure this doesn't throw a + // synchronous error + setImmediate(callback, e as Error); + return; + } + const sharedQueryOpts = this.getSharedQueryOptions(query.query, options); + const aggregationQueryOptions: AggregationQueryOptions = { + nestedQuery: queryProto, + aggregations: query.toProto(), + }; + const reqOpts: RunAggregationQueryRequest = Object.assign(sharedQueryOpts, { + aggregationQuery: aggregationQueryOptions, + }); + this.request_( + { + client: 'DatastoreClient', + method: 'runAggregationQuery', + reqOpts, + gaxOpts: options.gaxOptions, + }, + (err, res) => { + if (res && res.batch) { + const results = res.batch.aggregationResults; + const finalResults = results + .map( + (aggregationResult: any) => aggregationResult.aggregateProperties + ) + .map((aggregateProperties: any) => + Object.fromEntries( + new Map( + Object.keys(aggregateProperties).map(key => [ + key, + entity.decodeValueProto(aggregateProperties[key]), + ]) + ) + ) + ); + callback(err, finalResults); + } else { + callback(err, res); + } + } + ); + } + /** * Datastore allows you to query entities by kind, filter them by property * filters, and sort them by a property name. Projection and pagination are @@ -729,32 +801,20 @@ class DatastoreRequest { */ runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Transform { query = extend(true, new Query(), query); - const makeRequest = (query: Query) => { - const reqOpts = {} as RequestOptions; - + let queryProto: QueryProto; try { - reqOpts.query = entity.queryToQueryProto(query); + queryProto = entity.queryToQueryProto(query); } catch (e) { // using setImmediate here to make sure this doesn't throw a // synchronous error setImmediate(onResultSet, e as Error); return; } + const sharedQueryOpts = this.getSharedQueryOptions(query, options); - if (options.consistency) { - const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; - reqOpts.readOptions = { - readConsistency: code, - }; - } - - if (query.namespace) { - reqOpts.partitionId = { - namespaceId: query.namespace, - }; - } - + const reqOpts: RequestOptions = sharedQueryOpts; + reqOpts.query = queryProto; this.request_( { client: 'DatastoreClient', @@ -827,6 +887,25 @@ class DatastoreRequest { return stream; } + private getSharedQueryOptions( + query: Query, + options: RunQueryStreamOptions = {} + ): SharedQueryOptions { + const sharedQueryOpts = {} as SharedQueryOptions; + if (options.consistency) { + const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; + sharedQueryOpts.readOptions = { + readConsistency: code, + }; + } + if (query.namespace) { + sharedQueryOpts.partitionId = { + namespaceId: query.namespace, + }; + } + return sharedQueryOpts; + } + /** * Merge the specified object(s). If a key is incomplete, its associated object * is inserted and the original Key object is updated to contain the generated ID. @@ -857,7 +936,7 @@ class DatastoreRequest { callback?: SaveCallback ): void | Promise { const transaction = this.datastore.transaction(); - transaction.run(async err => { + transaction.run(async (err: any) => { if (err) { try { await transaction.rollback(); @@ -1066,27 +1145,36 @@ export interface RequestConfig { prepared?: boolean; reqOpts?: RequestOptions; } -export interface RequestOptions { - mutations?: google.datastore.v1.IMutation[]; - keys?: Entity; +export interface SharedQueryOptions { + projectId?: string; + partitionId?: google.datastore.v1.IPartitionId | null; readOptions?: { readConsistency?: number; transaction?: string; readTime?: ITimestamp; }; - partitionId?: google.datastore.v1.IPartitionId | null; +} +export interface RequestOptions extends SharedQueryOptions { + mutations?: google.datastore.v1.IMutation[]; + keys?: Entity; transactionOptions?: { readOnly?: {}; readWrite?: {previousTransaction?: string}; } | null; transaction?: string | null; mode?: string; - projectId?: string; query?: QueryProto; filter?: string; indexId?: string; entityFilter?: google.datastore.admin.v1.IEntityFilter; } +export interface RunAggregationQueryRequest extends SharedQueryOptions { + aggregationQuery: AggregationQueryOptions; +} +export interface AggregationQueryOptions { + nestedQuery: QueryProto; + aggregations: Array; +} export type RunQueryStreamOptions = RunQueryOptions; export interface CommitCallback { (err?: Error | null, resp?: google.datastore.v1.ICommitResponse): void; @@ -1102,7 +1190,9 @@ export type DeleteResponse = CommitResponse; * All async methods (except for streams) will return a Promise in the event * that a callback is omitted. */ -promisifyAll(DatastoreRequest); +promisifyAll(DatastoreRequest, { + exclude: ['getSharedQueryOptions'], +}); /** * Reference to the {@link DatastoreRequest} class. diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 3e4b995057c..6e2a5aea8d0 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -30,6 +30,7 @@ import { RequestOptions, PrepareEntityObjectResponse, } from './request'; +import {AggregateQuery} from './aggregate'; /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -341,6 +342,15 @@ class Transaction extends DatastoreRequest { ); } + /** + * Create an aggregation query from the query specified. See {module:datastore/query} for all + * of the available methods. + * + */ + createAggregationQuery(query: Query): AggregateQuery { + return this.datastore.createAggregationQuery.call(this, query); + } + /** * Delete all entities identified with the specified key(s) in the current * transaction. @@ -795,7 +805,15 @@ export interface RunOptions { * that a callback is omitted. */ promisifyAll(Transaction, { - exclude: ['createQuery', 'delete', 'insert', 'save', 'update', 'upsert'], + exclude: [ + 'createAggregationQuery', + 'createQuery', + 'delete', + 'insert', + 'save', + 'update', + 'upsert', + ], }); /** diff --git a/handwritten/nodejs-datastore/src/v1/index.ts b/handwritten/nodejs-datastore/src/v1/index.ts index 5821a19109b..8f7c527c2b5 100644 --- a/handwritten/nodejs-datastore/src/v1/index.ts +++ b/handwritten/nodejs-datastore/src/v1/index.ts @@ -16,5 +16,5 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** -export {DatastoreAdminClient} from './datastore_admin_client'; export {DatastoreClient} from './datastore_client'; +export {DatastoreAdminClient} from './datastore_admin_client'; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 1a778c02d36..ae0a473ac0d 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -15,11 +15,12 @@ import * as assert from 'assert'; import {readFileSync} from 'fs'; import * as path from 'path'; -import {before, after, describe, it} from 'mocha'; +import {after, before, describe, it} from 'mocha'; import * as yaml from 'js-yaml'; import {Datastore, Index} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; +import {AggregateField} from '../src/aggregate'; describe('Datastore', () => { const testKinds: string[] = []; @@ -797,7 +798,70 @@ describe('Datastore', () => { const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 6); }); - + describe('with a count filter', () => { + it('should run a count aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count()); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8}]); + }); + it('should run a count aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.count(), AggregateField.count()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8, property_2: 8}]); + }); + it('should run a count aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count().alias('total')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 6}]); + }); + it('should run a count aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count().alias('total')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 8}]); + }); + it('should do multiple count aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count().alias('total'), + AggregateField.count().alias('total2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 8, total2: 8}]); + }); + it('should run a count aggregation filter with a limit', async () => { + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count()); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 5}]); + }); + it('should run a count aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.count().alias('total')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 7}]); + }); + }); it('should filter by ancestor', async () => { const q = datastore.createQuery('Character').hasAncestor(ancestor); const [entities] = await datastore.runQuery(q); @@ -1001,6 +1065,24 @@ describe('Datastore', () => { await transaction.commit(); }); + it('should aggregate query within a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + return; + } + assert.deepStrictEqual(result, [{total: 2}]); + await transaction.commit(); + }); + it('should read in a readOnly transaction', async () => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 10959256c23..8e1b7b10721 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -18,6 +18,7 @@ import {beforeEach, describe, it} from 'mocha'; const {Query} = require('../src/query'); // eslint-disable-next-line @typescript-eslint/no-var-requires import {Datastore} from '../src'; +import {AggregateField, AggregateQuery} from '../src/aggregate'; describe('Query', () => { const SCOPE = {} as Datastore; @@ -55,6 +56,24 @@ describe('Query', () => { assert.strictEqual(query.namespace, null); }); }); + + it('should create a query with a count aggregation', () => { + const query = new Query(['kind1']); + const firstAggregation = AggregateField.count().alias('total'); + const secondAggregation = AggregateField.count().alias('total2'); + const aggregate = new AggregateQuery(query).addAggregations([ + firstAggregation, + secondAggregation, + ]); + const aggregate2 = new AggregateQuery(query) + .count('total') + .count('total2'); + assert.deepStrictEqual(aggregate.aggregations, aggregate2.aggregations); + assert.deepStrictEqual(aggregate.aggregations, [ + firstAggregation, + secondAggregation, + ]); + }); }); describe('filter', () => { diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 41e62be1df5..71cb4bf71bc 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -39,6 +39,7 @@ const fakePfy = Object.assign({}, pfy, { } promisified = true; assert.deepStrictEqual(options.exclude, [ + 'createAggregationQuery', 'createQuery', 'delete', 'insert', From 845819cafc4d3376cb2ae53328cfc4d834f46547 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 18 Jan 2023 14:33:31 -0500 Subject: [PATCH 697/820] chore(main): release 7.1.0 (#959) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 25 +++++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 8fe4124aba6..6373f1591a4 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,31 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.1.0](https://github.com/googleapis/nodejs-datastore/compare/v7.0.0...v7.1.0) (2023-01-18) + + +### Features + +* Add datastore aggregation query APIs ([#1008](https://github.com/googleapis/nodejs-datastore/issues/1008)) ([d5c2cb1](https://github.com/googleapis/nodejs-datastore/commit/d5c2cb1f0725f3cce1dde5b80ac7aff55b605f9a)) +* Add the count aggregate function ([#972](https://github.com/googleapis/nodejs-datastore/issues/972)) ([76adfc6](https://github.com/googleapis/nodejs-datastore/commit/76adfc6db03a4196999a8d510c0ab1ca15218f24)) +* Snapshot reads ([#963](https://github.com/googleapis/nodejs-datastore/issues/963)) ([0ecca86](https://github.com/googleapis/nodejs-datastore/commit/0ecca862fd93fc668a3dd3f5c93c54724e43f055)) +* Support regapic LRO ([#957](https://github.com/googleapis/nodejs-datastore/issues/957)) ([99778fb](https://github.com/googleapis/nodejs-datastore/commit/99778fb5e031eadd067b1ae9be0f910985966956)) + + +### Bug Fixes + +* Allow passing gax instance to client constructor ([#974](https://github.com/googleapis/nodejs-datastore/issues/974)) ([386b9c7](https://github.com/googleapis/nodejs-datastore/commit/386b9c735d57ce23f004ba3e9b1eb9a9377622dc)) +* Better support for fallback mode ([#967](https://github.com/googleapis/nodejs-datastore/issues/967)) ([0447d87](https://github.com/googleapis/nodejs-datastore/commit/0447d87ec162d64988d47e2fb21715dea78b6720)) +* Bring back LRO mixin ([#1009](https://github.com/googleapis/nodejs-datastore/issues/1009)) ([1d8de5f](https://github.com/googleapis/nodejs-datastore/commit/1d8de5f6bc5015dadd4be635748e799f05bfd325)) +* Change import long to require ([#968](https://github.com/googleapis/nodejs-datastore/issues/968)) ([5e710f2](https://github.com/googleapis/nodejs-datastore/commit/5e710f2c47001114ad087084507ad6d494143f1b)) +* **deps:** Update dependency @google-cloud/promisify to v3 ([#942](https://github.com/googleapis/nodejs-datastore/issues/942)) ([7b35856](https://github.com/googleapis/nodejs-datastore/commit/7b35856b0568571d5bcad70b2464344e6c06a4cb)) +* **deps:** Use google-gax v3.5.2 ([#1013](https://github.com/googleapis/nodejs-datastore/issues/1013)) ([1753eae](https://github.com/googleapis/nodejs-datastore/commit/1753eae467bff477e7991f74acbe3000656a955f)) +* Do not import the whole google-gax from proto JS ([#1553](https://github.com/googleapis/nodejs-datastore/issues/1553)) ([#973](https://github.com/googleapis/nodejs-datastore/issues/973)) ([9550bbc](https://github.com/googleapis/nodejs-datastore/commit/9550bbcc10912ca28b64a89153f3ae8e7862d939)) +* Preserve default values in x-goog-request-params header ([#979](https://github.com/googleapis/nodejs-datastore/issues/979)) ([2b80e1e](https://github.com/googleapis/nodejs-datastore/commit/2b80e1ef691a340ed15e3105983cd34983b57cb1)) +* Regenerated protos JS and TS definitions ([#1016](https://github.com/googleapis/nodejs-datastore/issues/1016)) ([d0ae656](https://github.com/googleapis/nodejs-datastore/commit/d0ae656ca83fbad0be5659d8d4516d8bde879a28)) +* Remove pip install statements ([#1546](https://github.com/googleapis/nodejs-datastore/issues/1546)) ([#970](https://github.com/googleapis/nodejs-datastore/issues/970)) ([2225fc7](https://github.com/googleapis/nodejs-datastore/commit/2225fc7753086243778c240a444c4940c29c5499)) +* Use google-gax v3.3.0 ([9550bbc](https://github.com/googleapis/nodejs-datastore/commit/9550bbcc10912ca28b64a89153f3ae8e7862d939)) + ## [7.0.0](https://github.com/googleapis/nodejs-datastore/compare/v6.6.2...v7.0.0) (2022-06-13) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 9532af03b5d..f68bb1952ec 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.0.0", + "version": "7.1.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index af62ea7c3ae..2d4e11c1cc8 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.0.0", + "@google-cloud/datastore": "^7.1.0", "sinon": "^14.0.0" }, "devDependencies": { From df547f5d1ab9e693886cee32edc91d6434069d51 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 9 Feb 2023 19:58:51 +0000 Subject: [PATCH 698/820] chore(deps): update dependency webpack-cli to v5 (#1019) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency webpack-cli to v5 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f68bb1952ec..201384d4ce5 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -74,7 +74,7 @@ "sinon": "^14.0.0", "ts-loader": "^8.0.0", "typescript": "^4.6.4", - "webpack-cli": "^4.0.0" + "webpack-cli": "^5.0.0" }, "engines": { "node": ">=12.0.0" From 56585051702c1c1877e2641ea0b310466c897917 Mon Sep 17 00:00:00 2001 From: sofisl <55454395+sofisl@users.noreply.github.com> Date: Thu, 9 Feb 2023 12:12:08 -0800 Subject: [PATCH 699/820] docs(samples): add generated samples (#978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(samples): add generated samples * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: gcf-merge-on-green[bot] <60162190+gcf-merge-on-green[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/owlbot.py | 3 - .../generated/v1/datastore.allocate_ids.js | 73 ++++ .../v1/datastore.begin_transaction.js | 71 ++++ .../samples/generated/v1/datastore.commit.js | 90 +++++ .../samples/generated/v1/datastore.lookup.js | 76 ++++ .../generated/v1/datastore.reserve_ids.js | 73 ++++ .../generated/v1/datastore.rollback.js | 73 ++++ .../generated/v1/datastore.run_query.js | 86 ++++ .../v1/datastore_admin.create_index.js | 66 +++ .../v1/datastore_admin.delete_index.js | 65 +++ .../v1/datastore_admin.export_entities.js | 89 +++++ .../generated/v1/datastore_admin.get_index.js | 64 +++ .../v1/datastore_admin.import_entities.js | 89 +++++ .../v1/datastore_admin.list_indexes.js | 74 ++++ ...et_metadata.google.datastore.admin.v1.json | 303 ++++++++++++++ .../snippet_metadata.google.datastore.v1.json | 375 ++++++++++++++++++ 16 files changed, 1667 insertions(+), 3 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.admin.v1.json create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json diff --git a/handwritten/nodejs-datastore/owlbot.py b/handwritten/nodejs-datastore/owlbot.py index 22902f03f13..7c40df9c30e 100644 --- a/handwritten/nodejs-datastore/owlbot.py +++ b/handwritten/nodejs-datastore/owlbot.py @@ -58,6 +58,3 @@ s.copy(templates) node.postprocess_gapic_library_hermetic() - -# Remove generated samples from veneer library: -shell.run(('rm', '-rf', 'samples/generated'), hide_output = False) diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js new file mode 100644 index 00000000000..a6206e9b3dd --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js @@ -0,0 +1,73 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, keys) { + // [START datastore_v1_generated_Datastore_AllocateIds_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Required. A list of keys with incomplete key paths for which to allocate IDs. + * No key may be reserved/read-only. + */ + // const keys = 1234 + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callAllocateIds() { + // Construct request + const request = { + projectId, + keys, + }; + + // Run request + const response = await datastoreClient.allocateIds(request); + console.log(response); + } + + callAllocateIds(); + // [END datastore_v1_generated_Datastore_AllocateIds_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js new file mode 100644 index 00000000000..5942c0e7389 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js @@ -0,0 +1,71 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId) { + // [START datastore_v1_generated_Datastore_BeginTransaction_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Options for a new transaction. + */ + // const transactionOptions = {} + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callBeginTransaction() { + // Construct request + const request = { + projectId, + }; + + // Run request + const response = await datastoreClient.beginTransaction(request); + console.log(response); + } + + callBeginTransaction(); + // [END datastore_v1_generated_Datastore_BeginTransaction_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js new file mode 100644 index 00000000000..64a6867d90e --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js @@ -0,0 +1,90 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId) { + // [START datastore_v1_generated_Datastore_Commit_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * The type of commit to perform. Defaults to `TRANSACTIONAL`. + */ + // const mode = {} + /** + * The identifier of the transaction associated with the commit. A + * transaction identifier is returned by a call to + * Datastore.BeginTransaction google.datastore.v1.Datastore.BeginTransaction. + */ + // const transaction = 'Buffer.from('string')' + /** + * The mutations to perform. + * When mode is `TRANSACTIONAL`, mutations affecting a single entity are + * applied in order. The following sequences of mutations affecting a single + * entity are not permitted in a single `Commit` request: + * - `insert` followed by `insert` + * - `update` followed by `insert` + * - `upsert` followed by `insert` + * - `delete` followed by `update` + * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single + * entity. + */ + // const mutations = 1234 + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callCommit() { + // Construct request + const request = { + projectId, + }; + + // Run request + const response = await datastoreClient.commit(request); + console.log(response); + } + + callCommit(); + // [END datastore_v1_generated_Datastore_Commit_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js new file mode 100644 index 00000000000..71fa6fe49c5 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js @@ -0,0 +1,76 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, keys) { + // [START datastore_v1_generated_Datastore_Lookup_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * The options for this lookup request. + */ + // const readOptions = {} + /** + * Required. Keys of entities to look up. + */ + // const keys = 1234 + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callLookup() { + // Construct request + const request = { + projectId, + keys, + }; + + // Run request + const response = await datastoreClient.lookup(request); + console.log(response); + } + + callLookup(); + // [END datastore_v1_generated_Datastore_Lookup_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js new file mode 100644 index 00000000000..b2b9b4f1dbe --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js @@ -0,0 +1,73 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, keys) { + // [START datastore_v1_generated_Datastore_ReserveIds_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Required. A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + */ + // const keys = 1234 + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callReserveIds() { + // Construct request + const request = { + projectId, + keys, + }; + + // Run request + const response = await datastoreClient.reserveIds(request); + console.log(response); + } + + callReserveIds(); + // [END datastore_v1_generated_Datastore_ReserveIds_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js new file mode 100644 index 00000000000..d52ac167ae5 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js @@ -0,0 +1,73 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, transaction) { + // [START datastore_v1_generated_Datastore_Rollback_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Required. The transaction identifier, returned by a call to + * Datastore.BeginTransaction google.datastore.v1.Datastore.BeginTransaction. + */ + // const transaction = 'Buffer.from('string')' + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callRollback() { + // Construct request + const request = { + projectId, + transaction, + }; + + // Run request + const response = await datastoreClient.rollback(request); + console.log(response); + } + + callRollback(); + // [END datastore_v1_generated_Datastore_Rollback_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js new file mode 100644 index 00000000000..16900bda163 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -0,0 +1,86 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId) { + // [START datastore_v1_generated_Datastore_RunQuery_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + */ + // const partitionId = {} + /** + * The options for this query. + */ + // const readOptions = {} + /** + * The query to run. + */ + // const query = {} + /** + * The GQL query to run. This query must be a non-aggregation query. + */ + // const gqlQuery = {} + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callRunQuery() { + // Construct request + const request = { + projectId, + }; + + // Run request + const response = await datastoreClient.runQuery(request); + console.log(response); + } + + callRunQuery(); + // [END datastore_v1_generated_Datastore_RunQuery_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js new file mode 100644 index 00000000000..42cf01a88e4 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js @@ -0,0 +1,66 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main() { + // [START datastore_v1_generated_DatastoreAdmin_CreateIndex_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + * The index to create. The name and state fields are output only and will be + * ignored. Single property indexes cannot be created or deleted. + */ + // const index = {} + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callCreateIndex() { + // Construct request + const request = { + }; + + // Run request + const [operation] = await adminClient.createIndex(request); + const [response] = await operation.promise(); + console.log(response); + } + + callCreateIndex(); + // [END datastore_v1_generated_DatastoreAdmin_CreateIndex_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js new file mode 100644 index 00000000000..5acf335d8e0 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js @@ -0,0 +1,65 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main() { + // [START datastore_v1_generated_DatastoreAdmin_DeleteIndex_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + * The resource ID of the index to delete. + */ + // const indexId = 'abc123' + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callDeleteIndex() { + // Construct request + const request = { + }; + + // Run request + const [operation] = await adminClient.deleteIndex(request); + const [response] = await operation.promise(); + console.log(response); + } + + callDeleteIndex(); + // [END datastore_v1_generated_DatastoreAdmin_DeleteIndex_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js new file mode 100644 index 00000000000..dfb4006ad44 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js @@ -0,0 +1,89 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, outputUrlPrefix) { + // [START datastore_v1_generated_DatastoreAdmin_ExportEntities_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + * Client-assigned labels. + */ + // const labels = 1234 + /** + * Description of what data from the project is included in the export. + */ + // const entityFilter = {} + /** + * Required. Location for the export metadata and data files. + * The full resource URL of the external storage location. Currently, only + * Google Cloud Storage is supported. So output_url_prefix should be of the + * form: `gs://BUCKET_NAME/NAMESPACE_PATH`, where `BUCKET_NAME` is the + * name of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional Cloud + * Storage namespace path (this is not a Cloud Datastore namespace). For more + * information about Cloud Storage namespace paths, see + * Object name + * considerations (https://cloud.google.com/storage/docs/naming#object-considerations). + * The resulting files will be nested deeper than the specified URL prefix. + * The final output URL will be provided in the + * google.datastore.admin.v1.ExportEntitiesResponse.output_url google.datastore.admin.v1.ExportEntitiesResponse.output_url field. That + * value should be used for subsequent ImportEntities operations. + * By nesting the data files deeper, the same Cloud Storage bucket can be used + * in multiple ExportEntities operations without conflict. + */ + // const outputUrlPrefix = 'abc123' + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callExportEntities() { + // Construct request + const request = { + projectId, + outputUrlPrefix, + }; + + // Run request + const [operation] = await adminClient.exportEntities(request); + const [response] = await operation.promise(); + console.log(response); + } + + callExportEntities(); + // [END datastore_v1_generated_DatastoreAdmin_ExportEntities_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js new file mode 100644 index 00000000000..291694e0b74 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js @@ -0,0 +1,64 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main() { + // [START datastore_v1_generated_DatastoreAdmin_GetIndex_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + * The resource ID of the index to get. + */ + // const indexId = 'abc123' + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callGetIndex() { + // Construct request + const request = { + }; + + // Run request + const response = await adminClient.getIndex(request); + console.log(response); + } + + callGetIndex(); + // [END datastore_v1_generated_DatastoreAdmin_GetIndex_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js new file mode 100644 index 00000000000..7c222f0bda9 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js @@ -0,0 +1,89 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId, inputUrl) { + // [START datastore_v1_generated_DatastoreAdmin_ImportEntities_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + * Client-assigned labels. + */ + // const labels = 1234 + /** + * Required. The full resource URL of the external storage location. Currently, only + * Google Cloud Storage is supported. So input_url should be of the form: + * `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where + * `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is + * an optional Cloud Storage namespace path (this is not a Cloud Datastore + * namespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file written + * by the ExportEntities operation. For more information about Cloud Storage + * namespace paths, see + * Object name + * considerations (https://cloud.google.com/storage/docs/naming#object-considerations). + * For more information, see + * google.datastore.admin.v1.ExportEntitiesResponse.output_url google.datastore.admin.v1.ExportEntitiesResponse.output_url. + */ + // const inputUrl = 'abc123' + /** + * Optionally specify which kinds/namespaces are to be imported. If provided, + * the list must be a subset of the EntityFilter used in creating the export, + * otherwise a FAILED_PRECONDITION error will be returned. If no filter is + * specified then all entities from the export are imported. + */ + // const entityFilter = {} + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callImportEntities() { + // Construct request + const request = { + projectId, + inputUrl, + }; + + // Run request + const [operation] = await adminClient.importEntities(request); + const [response] = await operation.promise(); + console.log(response); + } + + callImportEntities(); + // [END datastore_v1_generated_DatastoreAdmin_ImportEntities_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js new file mode 100644 index 00000000000..d69a45e9ac2 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js @@ -0,0 +1,74 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main() { + // [START datastore_v1_generated_DatastoreAdmin_ListIndexes_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Project ID against which to make the request. + */ + // const projectId = 'abc123' + /** + */ + // const filter = 'abc123' + /** + * The maximum number of items to return. If zero, then all results will be + * returned. + */ + // const pageSize = 1234 + /** + * The next_page_token value returned from a previous List request, if any. + */ + // const pageToken = 'abc123' + + // Imports the Admin library + const {DatastoreAdminClient} = require('@google-cloud/datastore-admin').v1; + + // Instantiates a client + const adminClient = new DatastoreAdminClient(); + + async function callListIndexes() { + // Construct request + const request = { + }; + + // Run request + const iterable = await adminClient.listIndexesAsync(request); + for await (const response of iterable) { + console.log(response); + } + } + + callListIndexes(); + // [END datastore_v1_generated_DatastoreAdmin_ListIndexes_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.admin.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.admin.v1.json new file mode 100644 index 00000000000..41431b0f77a --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.admin.v1.json @@ -0,0 +1,303 @@ +{ + "clientLibrary": { + "name": "nodejs-admin", + "version": "0.1.0", + "language": "TYPESCRIPT", + "apis": [ + { + "id": "google.datastore.admin.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ExportEntities_async", + "title": "DatastoreAdmin exportEntities Sample", + "origin": "API_DEFINITION", + "description": " Exports a copy of all or a subset of entities from Google Cloud Datastore to another storage system, such as Google Cloud Storage. Recent updates to entities may not be reflected in the export. The export occurs in the background and its progress can be monitored and managed via the Operation resource that is created. The output of an export may only be used once the associated operation is done. If an export operation is cancelled before completion it may leave partial data behind in Google Cloud Storage.", + "canonical": true, + "file": "datastore_admin.export_entities.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 81, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ExportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ExportEntities", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "labels", + "type": "TYPE_MESSAGE[]" + }, + { + "name": "entity_filter", + "type": ".google.datastore.admin.v1.EntityFilter" + }, + { + "name": "output_url_prefix", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ExportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ExportEntities", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ImportEntities_async", + "title": "DatastoreAdmin importEntities Sample", + "origin": "API_DEFINITION", + "description": " Imports entities into Google Cloud Datastore. Existing entities with the same key are overwritten. The import occurs in the background and its progress can be monitored and managed via the Operation resource that is created. If an ImportEntities operation is cancelled, it is possible that a subset of the data has already been imported to Cloud Datastore.", + "canonical": true, + "file": "datastore_admin.import_entities.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 81, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ImportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ImportEntities", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "labels", + "type": "TYPE_MESSAGE[]" + }, + { + "name": "input_url", + "type": "TYPE_STRING" + }, + { + "name": "entity_filter", + "type": ".google.datastore.admin.v1.EntityFilter" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ImportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ImportEntities", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_CreateIndex_async", + "title": "DatastoreAdmin createIndex Sample", + "origin": "API_DEFINITION", + "description": " Creates the specified index. A newly created index's initial state is `CREATING`. On completion of the returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. If the index already exists, the call will return an `ALREADY_EXISTS` status. During index creation, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, removing the index with [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex], then re-creating the index with [create] [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. Indexes with a single property cannot be created.", + "canonical": true, + "file": "datastore_admin.create_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 58, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "CreateIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.CreateIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index", + "type": ".google.datastore.admin.v1.Index" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "CreateIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.CreateIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_DeleteIndex_async", + "title": "DatastoreAdmin deleteIndex Sample", + "origin": "API_DEFINITION", + "description": " Deletes an existing index. An index can only be deleted if it is in a `READY` or `ERROR` state. On successful execution of the request, the index will be in a `DELETING` [state][google.datastore.admin.v1.Index.State]. And on completion of the returned [google.longrunning.Operation][google.longrunning.Operation], the index will be removed. During index deletion, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, followed by calling [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex] again.", + "canonical": true, + "file": "datastore_admin.delete_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 57, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "DeleteIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.DeleteIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index_id", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "DeleteIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.DeleteIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_GetIndex_async", + "title": "DatastoreAdmin getIndex Sample", + "origin": "API_DEFINITION", + "description": " Gets an index.", + "canonical": true, + "file": "datastore_admin.get_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 56, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "GetIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.GetIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index_id", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.datastore.admin.v1.Index", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "GetIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.GetIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ListIndexes_async", + "title": "DatastoreAdmin listIndexes Sample", + "origin": "API_DEFINITION", + "description": " Lists the indexes that match the specified filters. Datastore uses an eventually consistent query to fetch the list of indexes and may occasionally return stale results.", + "canonical": true, + "file": "datastore_admin.list_indexes.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 66, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ListIndexes", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ListIndexes", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "filter", + "type": "TYPE_STRING" + }, + { + "name": "page_size", + "type": "TYPE_INT32" + }, + { + "name": "page_token", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.datastore.admin.v1.ListIndexesResponse", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ListIndexes", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ListIndexes", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + } + ] +} diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json new file mode 100644 index 00000000000..1447b94a86d --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json @@ -0,0 +1,375 @@ +{ + "clientLibrary": { + "name": "nodejs-datastore", + "version": "0.1.0", + "language": "TYPESCRIPT", + "apis": [ + { + "id": "google.datastore.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "datastore_v1_generated_Datastore_Lookup_async", + "title": "datastore lookup Sample", + "origin": "API_DEFINITION", + "description": " Looks up entities by key.", + "canonical": true, + "file": "datastore.lookup.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 68, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Lookup", + "fullName": "google.datastore.v1.Datastore.Lookup", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.LookupResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Lookup", + "fullName": "google.datastore.v1.Datastore.Lookup", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_RunQuery_async", + "title": "datastore runQuery Sample", + "origin": "API_DEFINITION", + "description": " Queries for entities.", + "canonical": true, + "file": "datastore.run_query.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 78, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "RunQuery", + "fullName": "google.datastore.v1.Datastore.RunQuery", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "partition_id", + "type": ".google.datastore.v1.PartitionId" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "query", + "type": ".google.datastore.v1.Query" + }, + { + "name": "gql_query", + "type": ".google.datastore.v1.GqlQuery" + } + ], + "resultType": ".google.datastore.v1.RunQueryResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "RunQuery", + "fullName": "google.datastore.v1.Datastore.RunQuery", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_BeginTransaction_async", + "title": "datastore beginTransaction Sample", + "origin": "API_DEFINITION", + "description": " Begins a new transaction.", + "canonical": true, + "file": "datastore.begin_transaction.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 63, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "BeginTransaction", + "fullName": "google.datastore.v1.Datastore.BeginTransaction", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "transaction_options", + "type": ".google.datastore.v1.TransactionOptions" + } + ], + "resultType": ".google.datastore.v1.BeginTransactionResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "BeginTransaction", + "fullName": "google.datastore.v1.Datastore.BeginTransaction", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_Commit_async", + "title": "datastore commit Sample", + "origin": "API_DEFINITION", + "description": " Commits a transaction, optionally creating, deleting or modifying some entities.", + "canonical": true, + "file": "datastore.commit.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 82, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Commit", + "fullName": "google.datastore.v1.Datastore.Commit", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "mode", + "type": ".google.datastore.v1.CommitRequest.Mode" + }, + { + "name": "transaction", + "type": "TYPE_BYTES" + }, + { + "name": "mutations", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.CommitResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Commit", + "fullName": "google.datastore.v1.Datastore.Commit", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_Rollback_async", + "title": "datastore rollback Sample", + "origin": "API_DEFINITION", + "description": " Rolls back a transaction.", + "canonical": true, + "file": "datastore.rollback.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Rollback", + "fullName": "google.datastore.v1.Datastore.Rollback", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "transaction", + "type": "TYPE_BYTES" + } + ], + "resultType": ".google.datastore.v1.RollbackResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Rollback", + "fullName": "google.datastore.v1.Datastore.Rollback", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_AllocateIds_async", + "title": "datastore allocateIds Sample", + "origin": "API_DEFINITION", + "description": " Allocates IDs for the given keys, which is useful for referencing an entity before it is inserted.", + "canonical": true, + "file": "datastore.allocate_ids.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "AllocateIds", + "fullName": "google.datastore.v1.Datastore.AllocateIds", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.AllocateIdsResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "AllocateIds", + "fullName": "google.datastore.v1.Datastore.AllocateIds", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_ReserveIds_async", + "title": "datastore reserveIds Sample", + "origin": "API_DEFINITION", + "description": " Prevents the supplied keys' IDs from being auto-allocated by Cloud Datastore.", + "canonical": true, + "file": "datastore.reserve_ids.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ReserveIds", + "fullName": "google.datastore.v1.Datastore.ReserveIds", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.ReserveIdsResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "ReserveIds", + "fullName": "google.datastore.v1.Datastore.ReserveIds", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + } + ] +} From c634e76f261586c6c9bef4f41f9a3bebd2695c45 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 9 Feb 2023 20:20:14 +0000 Subject: [PATCH 700/820] fix(deps): update dependency sinon to v15 (#1020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`^14.0.0` -> `^15.0.0`](https://renovatebot.com/diffs/npm/sinon/14.0.2/15.0.1) | [![age](https://badges.renovateapi.com/packages/npm/sinon/15.0.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/15.0.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/15.0.1/compatibility-slim/14.0.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/15.0.1/confidence-slim/14.0.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
sinonjs/sinon ### [`v15.0.1`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#​1501) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v15.0.0...v15.0.1) - [`aa493da4`](https://togithub.com/sinonjs/sinon/commit/aa493da47d788025c0d512696651072973f301ec) Upgrade to fake-timers v10.0.2 (Carl-Erik Kopseng) > Contains several fixes - [`b3ee0aa5`](https://togithub.com/sinonjs/sinon/commit/b3ee0aa5c84e7c0f5203591e1507bd1015208925) Use Node version 18 in Runkit examples (Carl-Erik Kopseng) *Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2022-12-15.* ### [`v15.0.0`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#​1500) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v14.0.2...v15.0.0) - [`b75fbfa9`](https://togithub.com/sinonjs/sinon/commit/b75fbfa9e57ba9b9c1b639b68646b1d054e0a7e3) Fix 2448: remove custom formatter (Morgan Roderick) > Remove option to pass a custom formatter. > > The sub libraries of Sinon has long moved on to use `util.inspect` from > Node. By using that in Sinon itself, we align all the libraries. *Released by Morgan Roderick on 2022-11-28.*
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 201384d4ce5..66b2a200a8c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^14.0.0", + "sinon": "^15.0.0", "ts-loader": "^8.0.0", "typescript": "^4.6.4", "webpack-cli": "^5.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 2d4e11c1cc8..bd84dc13597 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,8 +14,8 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.1.0", - "sinon": "^14.0.0" + "@google-cloud/datastore": "^7.0.0", + "sinon": "^15.0.0" }, "devDependencies": { "chai": "^4.2.0", From 5fbdb08308b7b7a77ca7a70c72e4b56d1ed899ef Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 20:30:13 +0000 Subject: [PATCH 701/820] chore(gitignore): only ignore folders in the top level (#1021) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 507603203 Source-Link: https://togithub.com/googleapis/googleapis/commit/a4f2de456480c0a4ed9feeeaa1f8ee620bbef23a Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/dcf882154e7c710ecf2a1abc77b35c95f9062371 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZGNmODgyMTU0ZTdjNzEwZWNmMmExYWJjNzdiMzVjOTVmOTA2MjM3MSJ9 BEGIN_NESTED_COMMIT chore: update .gitignore to always include protos folder Use gapic-generator-typescript v3.0.0. PiperOrigin-RevId: 507004755 Source-Link: https://togithub.com/googleapis/googleapis/commit/d784f3c1043616fc0646e9ce7afa1b9161cc02de Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/5e64ba8615f65fdedb1fcd6ac792e5ea621027e4 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWU2NGJhODYxNWY2NWZkZWRiMWZjZDZhYzc5MmU1ZWE2MjEwMjdlNCJ9 END_NESTED_COMMIT BEGIN_NESTED_COMMIT feat: new transaction options for datastoreV1 PiperOrigin-RevId: 501960571 Source-Link: https://togithub.com/googleapis/googleapis/commit/d4599ad2c2374feb1b508096cbd89e6e3079eb24 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/02ff42cf030965b9006243c697e761fdcabb8ca1 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDJmZjQyY2YwMzA5NjViOTAwNjI0M2M2OTdlNzYxZmRjYWJiOGNhMSJ9 END_NESTED_COMMITBEGIN_NESTED_COMMITfeat: Added SuggestConversationSummary RPC docs: updated go library package PiperOrigin-RevId: 501862436 Source-Link: https://togithub.com/googleapis/googleapis/commit/155e0f4123ba003055587768944a47498c48926b Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/3051f617a991c274c88d27064e803095e4ef9d39 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzA1MWY2MTdhOTkxYzI3NGM4OGQyNzA2NGU4MDMwOTVlNGVmOWQzOSJ9 END_NESTED_COMMITBEGIN_NESTED_COMMITfeat: add dynamic routing header annotation to DatastoreV1 PiperOrigin-RevId: 501591105 Source-Link: https://togithub.com/googleapis/googleapis/commit/c4ebfff4f512a9cb0fc09eb6d82a2987a3524ae0 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/e2d6011df35c3b7b54ff39098be779c105408b1b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTJkNjAxMWRmMzVjM2I3YjU0ZmYzOTA5OGJlNzc5YzEwNTQwOGIxYiJ9 END_NESTED_COMMITBEGIN_NESTED_COMMITfeat: Added Snooze API support PiperOrigin-RevId: 500543032 Source-Link: https://togithub.com/googleapis/googleapis/commit/d4864bf1425882fddb80ffb627c385ec22d1fd00 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/245031557f8852e8e089a6511f63fc226703fef9 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjQ1MDMxNTU3Zjg4NTJlOGUwODlhNjUxMWY2M2ZjMjI2NzAzZmVmOSJ9 END_NESTED_COMMITBEGIN_NESTED_COMMITchore: Enable requesting numeric enums in "transport=rest" responses for services supporting this (Java, Go, Python, PHP, TypeScript, C#, and Ruby), even if they do not yet turn on REST transport chore: disallow "transport=rest" for services where numeric enums are not confirmed to be supported (except in PHP and Java) PiperOrigin-RevId: 493113566 Source-Link: https://togithub.com/googleapis/googleapis/commit/758f0d1217d9c7fe398aa5efb1057ce4b6409e55 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/78bd8f05e1276363eb14eae70e91fe4bc20703ab Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNzhiZDhmMDVlMTI3NjM2M2ViMTRlYWU3MGU5MWZlNGJjMjA3MDNhYiJ9 END_NESTED_COMMIT --- handwritten/nodejs-datastore/.gitignore | 12 +- handwritten/nodejs-datastore/.jsdoc.js | 4 +- .../google/datastore/v1/datastore.proto | 133 +++- .../nodejs-datastore/protos/protos.d.ts | 237 ++++++- handwritten/nodejs-datastore/protos/protos.js | 656 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 160 ++++- .../src/v1/datastore_admin_client.ts | 5 +- .../src/v1/datastore_client.ts | 219 +++++- .../system-test/fixtures/sample/src/index.js | 2 +- .../system-test/fixtures/sample/src/index.ts | 2 +- .../nodejs-datastore/system-test/install.ts | 2 +- .../test/gapic_datastore_admin_v1.ts | 2 +- .../test/gapic_datastore_v1.ts | 274 +++----- 13 files changed, 1444 insertions(+), 264 deletions(-) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 5d32b23782f..d4f03a0df2e 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -1,11 +1,11 @@ **/*.log **/node_modules -.coverage -coverage -.nyc_output -docs/ -out/ -build/ +/.coverage +/coverage +/.nyc_output +/docs/ +/out/ +/build/ system-test/secrets.js system-test/*key.json *.lock diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index a3585eb98c7..1cdb0dacbc2 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2022 Google LLC', + copyright: 'Copyright 2023 Google LLC', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index e891e058f81..23a740ae4f2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -19,6 +19,7 @@ package google.datastore.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; +import "google/api/routing.proto"; import "google/datastore/v1/aggregation_result.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; @@ -51,6 +52,10 @@ service Datastore { post: "/v1/projects/{project_id}:lookup" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; option (google.api.method_signature) = "project_id,read_options,keys"; } @@ -60,22 +65,36 @@ service Datastore { post: "/v1/projects/{project_id}:runQuery" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; } // Runs an aggregation query. - rpc RunAggregationQuery(RunAggregationQueryRequest) returns (RunAggregationQueryResponse) { + rpc RunAggregationQuery(RunAggregationQueryRequest) + returns (RunAggregationQueryResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:runAggregationQuery" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; } // Begins a new transaction. - rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { + rpc BeginTransaction(BeginTransactionRequest) + returns (BeginTransactionResponse) { option (google.api.http) = { post: "/v1/projects/{project_id}:beginTransaction" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; option (google.api.method_signature) = "project_id"; } @@ -86,7 +105,12 @@ service Datastore { post: "/v1/projects/{project_id}:commit" body: "*" }; - option (google.api.method_signature) = "project_id,mode,transaction,mutations"; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; + option (google.api.method_signature) = + "project_id,mode,transaction,mutations"; option (google.api.method_signature) = "project_id,mode,mutations"; } @@ -96,6 +120,10 @@ service Datastore { post: "/v1/projects/{project_id}:rollback" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; option (google.api.method_signature) = "project_id,transaction"; } @@ -106,6 +134,10 @@ service Datastore { post: "/v1/projects/{project_id}:allocateIds" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; option (google.api.method_signature) = "project_id,keys"; } @@ -116,6 +148,10 @@ service Datastore { post: "/v1/projects/{project_id}:reserveIds" body: "*" }; + option (google.api.routing) = { + routing_parameters { field: "project_id" } + routing_parameters { field: "database_id" } + }; option (google.api.method_signature) = "project_id,keys"; } } @@ -155,6 +191,13 @@ message LookupResponse { // order of the keys in the input. repeated Key deferred = 3; + // The identifier of the transaction that was started as part of this Lookup + // request. + // + // Set only when [ReadOptions.begin_transaction][] was set in + // [LookupRequest.read_options][google.datastore.v1.LookupRequest.read_options]. + bytes transaction = 5; + // The time at which these entities were read or found missing. google.protobuf.Timestamp read_time = 7; } @@ -189,16 +232,25 @@ message RunQueryRequest { } } -// The response for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +// The response for +// [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. message RunQueryResponse { // A batch of query results (always present). QueryResultBatch batch = 1; // The parsed form of the `GqlQuery` from the request, if it was set. Query query = 2; + + // The identifier of the transaction that was started as part of this + // RunQuery request. + // + // Set only when [ReadOptions.begin_transaction][] was set in + // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. + bytes transaction = 5; } -// The request for [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +// The request for +// [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. message RunAggregationQueryRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; @@ -228,16 +280,25 @@ message RunAggregationQueryRequest { } } -// The response for [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +// The response for +// [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. message RunAggregationQueryResponse { // A batch of aggregation results. Always present. AggregationResultBatch batch = 1; // The parsed form of the `GqlQuery` from the request, if it was set. AggregationQuery query = 2; + + // The identifier of the transaction that was started as part of this + // RunAggregationQuery request. + // + // Set only when [ReadOptions.begin_transaction][] was set in + // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. + bytes transaction = 5; } -// The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The request for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; @@ -252,7 +313,8 @@ message BeginTransactionRequest { TransactionOptions transaction_options = 10; } -// The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +// The response for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. message BeginTransactionResponse { // The transaction identifier (always present). bytes transaction = 1; @@ -274,11 +336,10 @@ message RollbackRequest { bytes transaction = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. -// (an empty message). -message RollbackResponse { - -} +// The response for +// [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. (an empty +// message). +message RollbackResponse {} // The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. message CommitRequest { @@ -314,6 +375,13 @@ message CommitRequest { // transaction identifier is returned by a call to // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. bytes transaction = 1; + + // Options for beginning a new transaction for this request. + // The transaction is committed when the request completes. If specified, + // [TransactionOptions.mode][google.datastore.v1.TransactionOptions.mode] + // must be + // [TransactionOptions.ReadWrite][google.datastore.v1.TransactionOptions.ReadWrite]. + TransactionOptions single_use_transaction = 10; } // The mutations to perform. @@ -346,7 +414,8 @@ message CommitResponse { google.protobuf.Timestamp commit_time = 8; } -// The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The request for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; @@ -357,19 +426,21 @@ message AllocateIdsRequest { // database. string database_id = 9; - // Required. A list of keys with incomplete key paths for which to allocate IDs. - // No key may be reserved/read-only. + // Required. A list of keys with incomplete key paths for which to allocate + // IDs. No key may be reserved/read-only. repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +// The response for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. message AllocateIdsResponse { // The keys specified in the request (in the same order), each with // its key path completed with a newly allocated ID. repeated Key keys = 1; } -// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +// The request for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. message ReserveIdsRequest { // Required. The ID of the project against which to make the request. string project_id = 8 [(google.api.field_behavior) = REQUIRED]; @@ -380,15 +451,14 @@ message ReserveIdsRequest { // database. string database_id = 9; - // Required. A list of keys with complete key paths whose numeric IDs should not be - // auto-allocated. + // Required. A list of keys with complete key paths whose numeric IDs should + // not be auto-allocated. repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED]; } -// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. -message ReserveIdsResponse { - -} +// The response for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { @@ -491,6 +561,15 @@ message ReadOptions { // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. bytes transaction = 2; + // Options for beginning a new transaction for this request. + // + // The new transaction identifier will be returned in the corresponding + // response as either + // [LookupResponse.transaction][google.datastore.v1.LookupResponse.transaction] + // or + // [RunQueryResponse.transaction][google.datastore.v1.RunQueryResponse.transaction]. + TransactionOptions new_transaction = 3; + // Reads entities as they were at the given time. This may not be older // than 270 seconds. This value is only supported for Cloud Firestore in // Datastore mode. @@ -501,8 +580,10 @@ message ReadOptions { // Options for beginning a new transaction. // // Transactions can be created explicitly with calls to -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting -// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests. +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] +// or implicitly by setting +// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] +// in read requests. message TransactionOptions { // Options specific to read / write transactions. message ReadWrite { diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index e55f5da4a5a..c069d309887 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -5460,6 +5460,9 @@ export namespace google { /** LookupResponse deferred */ deferred?: (google.datastore.v1.IKey[]|null); + /** LookupResponse transaction */ + transaction?: (Uint8Array|string|null); + /** LookupResponse readTime */ readTime?: (google.protobuf.ITimestamp|null); } @@ -5482,6 +5485,9 @@ export namespace google { /** LookupResponse deferred. */ public deferred: google.datastore.v1.IKey[]; + /** LookupResponse transaction. */ + public transaction: (Uint8Array|string); + /** LookupResponse readTime. */ public readTime?: (google.protobuf.ITimestamp|null); @@ -5701,6 +5707,9 @@ export namespace google { /** RunQueryResponse query */ query?: (google.datastore.v1.IQuery|null); + + /** RunQueryResponse transaction */ + transaction?: (Uint8Array|string|null); } /** Represents a RunQueryResponse. */ @@ -5718,6 +5727,9 @@ export namespace google { /** RunQueryResponse query. */ public query?: (google.datastore.v1.IQuery|null); + /** RunQueryResponse transaction. */ + public transaction: (Uint8Array|string); + /** * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -5934,6 +5946,9 @@ export namespace google { /** RunAggregationQueryResponse query */ query?: (google.datastore.v1.IAggregationQuery|null); + + /** RunAggregationQueryResponse transaction */ + transaction?: (Uint8Array|string|null); } /** Represents a RunAggregationQueryResponse. */ @@ -5951,6 +5966,9 @@ export namespace google { /** RunAggregationQueryResponse query. */ public query?: (google.datastore.v1.IAggregationQuery|null); + /** RunAggregationQueryResponse transaction. */ + public transaction: (Uint8Array|string); + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -6450,6 +6468,9 @@ export namespace google { /** CommitRequest transaction */ transaction?: (Uint8Array|string|null); + /** CommitRequest singleUseTransaction */ + singleUseTransaction?: (google.datastore.v1.ITransactionOptions|null); + /** CommitRequest mutations */ mutations?: (google.datastore.v1.IMutation[]|null); } @@ -6475,11 +6496,14 @@ export namespace google { /** CommitRequest transaction. */ public transaction?: (Uint8Array|string|null); + /** CommitRequest singleUseTransaction. */ + public singleUseTransaction?: (google.datastore.v1.ITransactionOptions|null); + /** CommitRequest mutations. */ public mutations: google.datastore.v1.IMutation[]; /** CommitRequest transactionSelector. */ - public transactionSelector?: "transaction"; + public transactionSelector?: ("transaction"|"singleUseTransaction"); /** * Creates a new CommitRequest instance using the specified properties. @@ -7341,6 +7365,9 @@ export namespace google { /** ReadOptions transaction */ transaction?: (Uint8Array|string|null); + /** ReadOptions newTransaction */ + newTransaction?: (google.datastore.v1.ITransactionOptions|null); + /** ReadOptions readTime */ readTime?: (google.protobuf.ITimestamp|null); } @@ -7360,11 +7387,14 @@ export namespace google { /** ReadOptions transaction. */ public transaction?: (Uint8Array|string|null); + /** ReadOptions newTransaction. */ + public newTransaction?: (google.datastore.v1.ITransactionOptions|null); + /** ReadOptions readTime. */ public readTime?: (google.protobuf.ITimestamp|null); /** ReadOptions consistencyType. */ - public consistencyType?: ("readConsistency"|"transaction"|"readTime"); + public consistencyType?: ("readConsistency"|"transaction"|"newTransaction"|"readTime"); /** * Creates a new ReadOptions instance using the specified properties. @@ -8133,6 +8163,206 @@ export namespace google { UNORDERED_LIST = 6, NON_EMPTY_DEFAULT = 7 } + + /** Properties of a RoutingRule. */ + interface IRoutingRule { + + /** RoutingRule routingParameters */ + routingParameters?: (google.api.IRoutingParameter[]|null); + } + + /** Represents a RoutingRule. */ + class RoutingRule implements IRoutingRule { + + /** + * Constructs a new RoutingRule. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IRoutingRule); + + /** RoutingRule routingParameters. */ + public routingParameters: google.api.IRoutingParameter[]; + + /** + * Creates a new RoutingRule instance using the specified properties. + * @param [properties] Properties to set + * @returns RoutingRule instance + */ + public static create(properties?: google.api.IRoutingRule): google.api.RoutingRule; + + /** + * Encodes the specified RoutingRule message. Does not implicitly {@link google.api.RoutingRule.verify|verify} messages. + * @param message RoutingRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IRoutingRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RoutingRule message, length delimited. Does not implicitly {@link google.api.RoutingRule.verify|verify} messages. + * @param message RoutingRule message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IRoutingRule, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RoutingRule message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RoutingRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RoutingRule; + + /** + * Decodes a RoutingRule message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RoutingRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RoutingRule; + + /** + * Verifies a RoutingRule message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RoutingRule message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RoutingRule + */ + public static fromObject(object: { [k: string]: any }): google.api.RoutingRule; + + /** + * Creates a plain object from a RoutingRule message. Also converts values to other types if specified. + * @param message RoutingRule + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.RoutingRule, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RoutingRule to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RoutingRule + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RoutingParameter. */ + interface IRoutingParameter { + + /** RoutingParameter field */ + field?: (string|null); + + /** RoutingParameter pathTemplate */ + pathTemplate?: (string|null); + } + + /** Represents a RoutingParameter. */ + class RoutingParameter implements IRoutingParameter { + + /** + * Constructs a new RoutingParameter. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IRoutingParameter); + + /** RoutingParameter field. */ + public field: string; + + /** RoutingParameter pathTemplate. */ + public pathTemplate: string; + + /** + * Creates a new RoutingParameter instance using the specified properties. + * @param [properties] Properties to set + * @returns RoutingParameter instance + */ + public static create(properties?: google.api.IRoutingParameter): google.api.RoutingParameter; + + /** + * Encodes the specified RoutingParameter message. Does not implicitly {@link google.api.RoutingParameter.verify|verify} messages. + * @param message RoutingParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IRoutingParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RoutingParameter message, length delimited. Does not implicitly {@link google.api.RoutingParameter.verify|verify} messages. + * @param message RoutingParameter message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IRoutingParameter, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RoutingParameter message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RoutingParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RoutingParameter; + + /** + * Decodes a RoutingParameter message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RoutingParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RoutingParameter; + + /** + * Verifies a RoutingParameter message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RoutingParameter message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RoutingParameter + */ + public static fromObject(object: { [k: string]: any }): google.api.RoutingParameter; + + /** + * Creates a plain object from a RoutingParameter message. Also converts values to other types if specified. + * @param message RoutingParameter + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.RoutingParameter, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RoutingParameter to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RoutingParameter + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } /** Namespace protobuf. */ @@ -10676,6 +10906,9 @@ export namespace google { /** MethodOptions .google.longrunning.operationInfo */ ".google.longrunning.operationInfo"?: (google.longrunning.IOperationInfo|null); + + /** MethodOptions .google.api.routing */ + ".google.api.routing"?: (google.api.IRoutingRule|null); } /** Represents a MethodOptions. */ diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 6751b31605b..e6fba66c61a 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -13833,6 +13833,7 @@ * @property {Array.|null} [found] LookupResponse found * @property {Array.|null} [missing] LookupResponse missing * @property {Array.|null} [deferred] LookupResponse deferred + * @property {Uint8Array|null} [transaction] LookupResponse transaction * @property {google.protobuf.ITimestamp|null} [readTime] LookupResponse readTime */ @@ -13878,6 +13879,14 @@ */ LookupResponse.prototype.deferred = $util.emptyArray; + /** + * LookupResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.LookupResponse + * @instance + */ + LookupResponse.prototype.transaction = $util.newBuffer([]); + /** * LookupResponse readTime. * @member {google.protobuf.ITimestamp|null|undefined} readTime @@ -13919,6 +13928,8 @@ if (message.deferred != null && message.deferred.length) for (var i = 0; i < message.deferred.length; ++i) $root.google.datastore.v1.Key.encode(message.deferred[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; @@ -13973,6 +13984,10 @@ message.deferred.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; } + case 5: { + message.transaction = reader.bytes(); + break; + } case 7: { message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; @@ -14039,6 +14054,9 @@ return "deferred." + error; } } + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; if (message.readTime != null && message.hasOwnProperty("readTime")) { var error = $root.google.protobuf.Timestamp.verify(message.readTime); if (error) @@ -14089,6 +14107,11 @@ message.deferred[i] = $root.google.datastore.v1.Key.fromObject(object.deferred[i]); } } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; if (object.readTime != null) { if (typeof object.readTime !== "object") throw TypeError(".google.datastore.v1.LookupResponse.readTime: object expected"); @@ -14115,8 +14138,16 @@ object.missing = []; object.deferred = []; } - if (options.defaults) + if (options.defaults) { + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } object.readTime = null; + } if (message.found && message.found.length) { object.found = []; for (var j = 0; j < message.found.length; ++j) @@ -14132,6 +14163,8 @@ for (var j = 0; j < message.deferred.length; ++j) object.deferred[j] = $root.google.datastore.v1.Key.toObject(message.deferred[j], options); } + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; if (message.readTime != null && message.hasOwnProperty("readTime")) object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); return object; @@ -14540,6 +14573,7 @@ * @interface IRunQueryResponse * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query + * @property {Uint8Array|null} [transaction] RunQueryResponse transaction */ /** @@ -14573,6 +14607,14 @@ */ RunQueryResponse.prototype.query = null; + /** + * RunQueryResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.transaction = $util.newBuffer([]); + /** * Creates a new RunQueryResponse instance using the specified properties. * @function create @@ -14601,6 +14643,8 @@ $root.google.datastore.v1.QueryResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.query != null && Object.hasOwnProperty.call(message, "query")) $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); return writer; }; @@ -14643,6 +14687,10 @@ message.query = $root.google.datastore.v1.Query.decode(reader, reader.uint32()); break; } + case 5: { + message.transaction = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -14688,6 +14736,9 @@ if (error) return "query." + error; } + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; @@ -14713,6 +14764,11 @@ throw TypeError(".google.datastore.v1.RunQueryResponse.query: object expected"); message.query = $root.google.datastore.v1.Query.fromObject(object.query); } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; return message; }; @@ -14732,11 +14788,20 @@ if (options.defaults) { object.batch = null; object.query = null; + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); if (message.query != null && message.hasOwnProperty("query")) object.query = $root.google.datastore.v1.Query.toObject(message.query, options); + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; return object; }; @@ -15143,6 +15208,7 @@ * @interface IRunAggregationQueryResponse * @property {google.datastore.v1.IAggregationResultBatch|null} [batch] RunAggregationQueryResponse batch * @property {google.datastore.v1.IAggregationQuery|null} [query] RunAggregationQueryResponse query + * @property {Uint8Array|null} [transaction] RunAggregationQueryResponse transaction */ /** @@ -15176,6 +15242,14 @@ */ RunAggregationQueryResponse.prototype.query = null; + /** + * RunAggregationQueryResponse transaction. + * @member {Uint8Array} transaction + * @memberof google.datastore.v1.RunAggregationQueryResponse + * @instance + */ + RunAggregationQueryResponse.prototype.transaction = $util.newBuffer([]); + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @function create @@ -15204,6 +15278,8 @@ $root.google.datastore.v1.AggregationResultBatch.encode(message.batch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.query != null && Object.hasOwnProperty.call(message, "query")) $root.google.datastore.v1.AggregationQuery.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); return writer; }; @@ -15246,6 +15322,10 @@ message.query = $root.google.datastore.v1.AggregationQuery.decode(reader, reader.uint32()); break; } + case 5: { + message.transaction = reader.bytes(); + break; + } default: reader.skipType(tag & 7); break; @@ -15291,6 +15371,9 @@ if (error) return "query." + error; } + if (message.transaction != null && message.hasOwnProperty("transaction")) + if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) + return "transaction: buffer expected"; return null; }; @@ -15316,6 +15399,11 @@ throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.query: object expected"); message.query = $root.google.datastore.v1.AggregationQuery.fromObject(object.query); } + if (object.transaction != null) + if (typeof object.transaction === "string") + $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); + else if (object.transaction.length >= 0) + message.transaction = object.transaction; return message; }; @@ -15335,11 +15423,20 @@ if (options.defaults) { object.batch = null; object.query = null; + if (options.bytes === String) + object.transaction = ""; + else { + object.transaction = []; + if (options.bytes !== Array) + object.transaction = $util.newBuffer(object.transaction); + } } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.AggregationResultBatch.toObject(message.batch, options); if (message.query != null && message.hasOwnProperty("query")) object.query = $root.google.datastore.v1.AggregationQuery.toObject(message.query, options); + if (message.transaction != null && message.hasOwnProperty("transaction")) + object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; return object; }; @@ -16283,6 +16380,7 @@ * @property {string|null} [databaseId] CommitRequest databaseId * @property {google.datastore.v1.CommitRequest.Mode|null} [mode] CommitRequest mode * @property {Uint8Array|null} [transaction] CommitRequest transaction + * @property {google.datastore.v1.ITransactionOptions|null} [singleUseTransaction] CommitRequest singleUseTransaction * @property {Array.|null} [mutations] CommitRequest mutations */ @@ -16334,6 +16432,14 @@ */ CommitRequest.prototype.transaction = null; + /** + * CommitRequest singleUseTransaction. + * @member {google.datastore.v1.ITransactionOptions|null|undefined} singleUseTransaction + * @memberof google.datastore.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.singleUseTransaction = null; + /** * CommitRequest mutations. * @member {Array.} mutations @@ -16347,12 +16453,12 @@ /** * CommitRequest transactionSelector. - * @member {"transaction"|undefined} transactionSelector + * @member {"transaction"|"singleUseTransaction"|undefined} transactionSelector * @memberof google.datastore.v1.CommitRequest * @instance */ Object.defineProperty(CommitRequest.prototype, "transactionSelector", { - get: $util.oneOfGetter($oneOfFields = ["transaction"]), + get: $util.oneOfGetter($oneOfFields = ["transaction", "singleUseTransaction"]), set: $util.oneOfSetter($oneOfFields) }); @@ -16391,6 +16497,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.singleUseTransaction != null && Object.hasOwnProperty.call(message, "singleUseTransaction")) + $root.google.datastore.v1.TransactionOptions.encode(message.singleUseTransaction, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; @@ -16441,6 +16549,10 @@ message.transaction = reader.bytes(); break; } + case 10: { + message.singleUseTransaction = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + } case 6: { if (!(message.mutations && message.mutations.length)) message.mutations = []; @@ -16503,6 +16615,16 @@ if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; } + if (message.singleUseTransaction != null && message.hasOwnProperty("singleUseTransaction")) { + if (properties.transactionSelector === 1) + return "transactionSelector: multiple values"; + properties.transactionSelector = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.verify(message.singleUseTransaction); + if (error) + return "singleUseTransaction." + error; + } + } if (message.mutations != null && message.hasOwnProperty("mutations")) { if (!Array.isArray(message.mutations)) return "mutations: array expected"; @@ -16556,6 +16678,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.singleUseTransaction != null) { + if (typeof object.singleUseTransaction !== "object") + throw TypeError(".google.datastore.v1.CommitRequest.singleUseTransaction: object expected"); + message.singleUseTransaction = $root.google.datastore.v1.TransactionOptions.fromObject(object.singleUseTransaction); + } if (object.mutations) { if (!Array.isArray(object.mutations)) throw TypeError(".google.datastore.v1.CommitRequest.mutations: array expected"); @@ -16605,6 +16732,11 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.singleUseTransaction != null && message.hasOwnProperty("singleUseTransaction")) { + object.singleUseTransaction = $root.google.datastore.v1.TransactionOptions.toObject(message.singleUseTransaction, options); + if (options.oneofs) + object.transactionSelector = "singleUseTransaction"; + } return object; }; @@ -18593,6 +18725,7 @@ * @interface IReadOptions * @property {google.datastore.v1.ReadOptions.ReadConsistency|null} [readConsistency] ReadOptions readConsistency * @property {Uint8Array|null} [transaction] ReadOptions transaction + * @property {google.datastore.v1.ITransactionOptions|null} [newTransaction] ReadOptions newTransaction * @property {google.protobuf.ITimestamp|null} [readTime] ReadOptions readTime */ @@ -18627,6 +18760,14 @@ */ ReadOptions.prototype.transaction = null; + /** + * ReadOptions newTransaction. + * @member {google.datastore.v1.ITransactionOptions|null|undefined} newTransaction + * @memberof google.datastore.v1.ReadOptions + * @instance + */ + ReadOptions.prototype.newTransaction = null; + /** * ReadOptions readTime. * @member {google.protobuf.ITimestamp|null|undefined} readTime @@ -18640,12 +18781,12 @@ /** * ReadOptions consistencyType. - * @member {"readConsistency"|"transaction"|"readTime"|undefined} consistencyType + * @member {"readConsistency"|"transaction"|"newTransaction"|"readTime"|undefined} consistencyType * @memberof google.datastore.v1.ReadOptions * @instance */ Object.defineProperty(ReadOptions.prototype, "consistencyType", { - get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction", "readTime"]), + get: $util.oneOfGetter($oneOfFields = ["readConsistency", "transaction", "newTransaction", "readTime"]), set: $util.oneOfSetter($oneOfFields) }); @@ -18677,6 +18818,8 @@ writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readConsistency); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.transaction); + if (message.newTransaction != null && Object.hasOwnProperty.call(message, "newTransaction")) + $root.google.datastore.v1.TransactionOptions.encode(message.newTransaction, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.readTime != null && Object.hasOwnProperty.call(message, "readTime")) $root.google.protobuf.Timestamp.encode(message.readTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; @@ -18721,6 +18864,10 @@ message.transaction = reader.bytes(); break; } + case 3: { + message.newTransaction = $root.google.datastore.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + } case 4: { message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; @@ -18779,6 +18926,16 @@ if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; } + if (message.newTransaction != null && message.hasOwnProperty("newTransaction")) { + if (properties.consistencyType === 1) + return "consistencyType: multiple values"; + properties.consistencyType = 1; + { + var error = $root.google.datastore.v1.TransactionOptions.verify(message.newTransaction); + if (error) + return "newTransaction." + error; + } + } if (message.readTime != null && message.hasOwnProperty("readTime")) { if (properties.consistencyType === 1) return "consistencyType: multiple values"; @@ -18829,6 +18986,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.newTransaction != null) { + if (typeof object.newTransaction !== "object") + throw TypeError(".google.datastore.v1.ReadOptions.newTransaction: object expected"); + message.newTransaction = $root.google.datastore.v1.TransactionOptions.fromObject(object.newTransaction); + } if (object.readTime != null) { if (typeof object.readTime !== "object") throw TypeError(".google.datastore.v1.ReadOptions.readTime: object expected"); @@ -18860,6 +19022,11 @@ if (options.oneofs) object.consistencyType = "transaction"; } + if (message.newTransaction != null && message.hasOwnProperty("newTransaction")) { + object.newTransaction = $root.google.datastore.v1.TransactionOptions.toObject(message.newTransaction, options); + if (options.oneofs) + object.consistencyType = "newTransaction"; + } if (message.readTime != null && message.hasOwnProperty("readTime")) { object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options); if (options.oneofs) @@ -20599,6 +20766,457 @@ return values; })(); + api.RoutingRule = (function() { + + /** + * Properties of a RoutingRule. + * @memberof google.api + * @interface IRoutingRule + * @property {Array.|null} [routingParameters] RoutingRule routingParameters + */ + + /** + * Constructs a new RoutingRule. + * @memberof google.api + * @classdesc Represents a RoutingRule. + * @implements IRoutingRule + * @constructor + * @param {google.api.IRoutingRule=} [properties] Properties to set + */ + function RoutingRule(properties) { + this.routingParameters = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RoutingRule routingParameters. + * @member {Array.} routingParameters + * @memberof google.api.RoutingRule + * @instance + */ + RoutingRule.prototype.routingParameters = $util.emptyArray; + + /** + * Creates a new RoutingRule instance using the specified properties. + * @function create + * @memberof google.api.RoutingRule + * @static + * @param {google.api.IRoutingRule=} [properties] Properties to set + * @returns {google.api.RoutingRule} RoutingRule instance + */ + RoutingRule.create = function create(properties) { + return new RoutingRule(properties); + }; + + /** + * Encodes the specified RoutingRule message. Does not implicitly {@link google.api.RoutingRule.verify|verify} messages. + * @function encode + * @memberof google.api.RoutingRule + * @static + * @param {google.api.IRoutingRule} message RoutingRule message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RoutingRule.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.routingParameters != null && message.routingParameters.length) + for (var i = 0; i < message.routingParameters.length; ++i) + $root.google.api.RoutingParameter.encode(message.routingParameters[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RoutingRule message, length delimited. Does not implicitly {@link google.api.RoutingRule.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.RoutingRule + * @static + * @param {google.api.IRoutingRule} message RoutingRule message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RoutingRule.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RoutingRule message from the specified reader or buffer. + * @function decode + * @memberof google.api.RoutingRule + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.RoutingRule} RoutingRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RoutingRule.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RoutingRule(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: { + if (!(message.routingParameters && message.routingParameters.length)) + message.routingParameters = []; + message.routingParameters.push($root.google.api.RoutingParameter.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RoutingRule message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.RoutingRule + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.RoutingRule} RoutingRule + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RoutingRule.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RoutingRule message. + * @function verify + * @memberof google.api.RoutingRule + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RoutingRule.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.routingParameters != null && message.hasOwnProperty("routingParameters")) { + if (!Array.isArray(message.routingParameters)) + return "routingParameters: array expected"; + for (var i = 0; i < message.routingParameters.length; ++i) { + var error = $root.google.api.RoutingParameter.verify(message.routingParameters[i]); + if (error) + return "routingParameters." + error; + } + } + return null; + }; + + /** + * Creates a RoutingRule message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.RoutingRule + * @static + * @param {Object.} object Plain object + * @returns {google.api.RoutingRule} RoutingRule + */ + RoutingRule.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.RoutingRule) + return object; + var message = new $root.google.api.RoutingRule(); + if (object.routingParameters) { + if (!Array.isArray(object.routingParameters)) + throw TypeError(".google.api.RoutingRule.routingParameters: array expected"); + message.routingParameters = []; + for (var i = 0; i < object.routingParameters.length; ++i) { + if (typeof object.routingParameters[i] !== "object") + throw TypeError(".google.api.RoutingRule.routingParameters: object expected"); + message.routingParameters[i] = $root.google.api.RoutingParameter.fromObject(object.routingParameters[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a RoutingRule message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.RoutingRule + * @static + * @param {google.api.RoutingRule} message RoutingRule + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RoutingRule.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.routingParameters = []; + if (message.routingParameters && message.routingParameters.length) { + object.routingParameters = []; + for (var j = 0; j < message.routingParameters.length; ++j) + object.routingParameters[j] = $root.google.api.RoutingParameter.toObject(message.routingParameters[j], options); + } + return object; + }; + + /** + * Converts this RoutingRule to JSON. + * @function toJSON + * @memberof google.api.RoutingRule + * @instance + * @returns {Object.} JSON object + */ + RoutingRule.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RoutingRule + * @function getTypeUrl + * @memberof google.api.RoutingRule + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RoutingRule.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.RoutingRule"; + }; + + return RoutingRule; + })(); + + api.RoutingParameter = (function() { + + /** + * Properties of a RoutingParameter. + * @memberof google.api + * @interface IRoutingParameter + * @property {string|null} [field] RoutingParameter field + * @property {string|null} [pathTemplate] RoutingParameter pathTemplate + */ + + /** + * Constructs a new RoutingParameter. + * @memberof google.api + * @classdesc Represents a RoutingParameter. + * @implements IRoutingParameter + * @constructor + * @param {google.api.IRoutingParameter=} [properties] Properties to set + */ + function RoutingParameter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RoutingParameter field. + * @member {string} field + * @memberof google.api.RoutingParameter + * @instance + */ + RoutingParameter.prototype.field = ""; + + /** + * RoutingParameter pathTemplate. + * @member {string} pathTemplate + * @memberof google.api.RoutingParameter + * @instance + */ + RoutingParameter.prototype.pathTemplate = ""; + + /** + * Creates a new RoutingParameter instance using the specified properties. + * @function create + * @memberof google.api.RoutingParameter + * @static + * @param {google.api.IRoutingParameter=} [properties] Properties to set + * @returns {google.api.RoutingParameter} RoutingParameter instance + */ + RoutingParameter.create = function create(properties) { + return new RoutingParameter(properties); + }; + + /** + * Encodes the specified RoutingParameter message. Does not implicitly {@link google.api.RoutingParameter.verify|verify} messages. + * @function encode + * @memberof google.api.RoutingParameter + * @static + * @param {google.api.IRoutingParameter} message RoutingParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RoutingParameter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.field != null && Object.hasOwnProperty.call(message, "field")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.field); + if (message.pathTemplate != null && Object.hasOwnProperty.call(message, "pathTemplate")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.pathTemplate); + return writer; + }; + + /** + * Encodes the specified RoutingParameter message, length delimited. Does not implicitly {@link google.api.RoutingParameter.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.RoutingParameter + * @static + * @param {google.api.IRoutingParameter} message RoutingParameter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RoutingParameter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RoutingParameter message from the specified reader or buffer. + * @function decode + * @memberof google.api.RoutingParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.RoutingParameter} RoutingParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RoutingParameter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RoutingParameter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.field = reader.string(); + break; + } + case 2: { + message.pathTemplate = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RoutingParameter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.RoutingParameter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.RoutingParameter} RoutingParameter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RoutingParameter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RoutingParameter message. + * @function verify + * @memberof google.api.RoutingParameter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RoutingParameter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.field != null && message.hasOwnProperty("field")) + if (!$util.isString(message.field)) + return "field: string expected"; + if (message.pathTemplate != null && message.hasOwnProperty("pathTemplate")) + if (!$util.isString(message.pathTemplate)) + return "pathTemplate: string expected"; + return null; + }; + + /** + * Creates a RoutingParameter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.RoutingParameter + * @static + * @param {Object.} object Plain object + * @returns {google.api.RoutingParameter} RoutingParameter + */ + RoutingParameter.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.RoutingParameter) + return object; + var message = new $root.google.api.RoutingParameter(); + if (object.field != null) + message.field = String(object.field); + if (object.pathTemplate != null) + message.pathTemplate = String(object.pathTemplate); + return message; + }; + + /** + * Creates a plain object from a RoutingParameter message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.RoutingParameter + * @static + * @param {google.api.RoutingParameter} message RoutingParameter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RoutingParameter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.field = ""; + object.pathTemplate = ""; + } + if (message.field != null && message.hasOwnProperty("field")) + object.field = message.field; + if (message.pathTemplate != null && message.hasOwnProperty("pathTemplate")) + object.pathTemplate = message.pathTemplate; + return object; + }; + + /** + * Converts this RoutingParameter to JSON. + * @function toJSON + * @memberof google.api.RoutingParameter + * @instance + * @returns {Object.} JSON object + */ + RoutingParameter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RoutingParameter + * @function getTypeUrl + * @memberof google.api.RoutingParameter + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RoutingParameter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.RoutingParameter"; + }; + + return RoutingParameter; + })(); + return api; })(); @@ -27715,6 +28333,7 @@ * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http * @property {Array.|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature * @property {google.longrunning.IOperationInfo|null} [".google.longrunning.operationInfo"] MethodOptions .google.longrunning.operationInfo + * @property {google.api.IRoutingRule|null} [".google.api.routing"] MethodOptions .google.api.routing */ /** @@ -27782,6 +28401,14 @@ */ MethodOptions.prototype[".google.longrunning.operationInfo"] = null; + /** + * MethodOptions .google.api.routing. + * @member {google.api.IRoutingRule|null|undefined} .google.api.routing + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype[".google.api.routing"] = null; + /** * Creates a new MethodOptions instance using the specified properties. * @function create @@ -27820,6 +28447,8 @@ writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); + if (message[".google.api.routing"] != null && Object.hasOwnProperty.call(message, ".google.api.routing")) + $root.google.api.RoutingRule.encode(message[".google.api.routing"], writer.uint32(/* id 72295729, wireType 2 =*/578365834).fork()).ldelim(); return writer; }; @@ -27882,6 +28511,10 @@ message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32()); break; } + case 72295729: { + message[".google.api.routing"] = $root.google.api.RoutingRule.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -27955,6 +28588,11 @@ if (error) return ".google.longrunning.operationInfo." + error; } + if (message[".google.api.routing"] != null && message.hasOwnProperty(".google.api.routing")) { + var error = $root.google.api.RoutingRule.verify(message[".google.api.routing"]); + if (error) + return ".google.api.routing." + error; + } return null; }; @@ -28019,6 +28657,11 @@ throw TypeError(".google.protobuf.MethodOptions..google.longrunning.operationInfo: object expected"); message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"]); } + if (object[".google.api.routing"] != null) { + if (typeof object[".google.api.routing"] !== "object") + throw TypeError(".google.protobuf.MethodOptions..google.api.routing: object expected"); + message[".google.api.routing"] = $root.google.api.RoutingRule.fromObject(object[".google.api.routing"]); + } return message; }; @@ -28044,6 +28687,7 @@ object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; object[".google.longrunning.operationInfo"] = null; object[".google.api.http"] = null; + object[".google.api.routing"] = null; } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; @@ -28063,6 +28707,8 @@ } if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); + if (message[".google.api.routing"] != null && message.hasOwnProperty(".google.api.routing")) + object[".google.api.routing"] = $root.google.api.RoutingRule.toObject(message[".google.api.routing"], options); return object; }; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index f8f14245507..a6c734d6344 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1149,6 +1149,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:lookup", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id,read_options,keys" }, "parsedOptions": [ @@ -1158,6 +1159,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id,read_options,keys" } @@ -1168,7 +1181,8 @@ "responseType": "RunQueryResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:runQuery", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id" }, "parsedOptions": [ { @@ -1176,6 +1190,18 @@ "post": "/v1/projects/{project_id}:runQuery", "body": "*" } + }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } } ] }, @@ -1184,7 +1210,8 @@ "responseType": "RunAggregationQueryResponse", "options": { "(google.api.http).post": "/v1/projects/{project_id}:runAggregationQuery", - "(google.api.http).body": "*" + "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id" }, "parsedOptions": [ { @@ -1192,6 +1219,18 @@ "post": "/v1/projects/{project_id}:runAggregationQuery", "body": "*" } + }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } } ] }, @@ -1201,6 +1240,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:beginTransaction", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id" }, "parsedOptions": [ @@ -1210,6 +1250,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id" } @@ -1221,6 +1273,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:commit", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id,mode,mutations" }, "parsedOptions": [ @@ -1230,6 +1283,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id,mode,transaction,mutations" }, @@ -1244,6 +1309,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:rollback", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id,transaction" }, "parsedOptions": [ @@ -1253,6 +1319,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id,transaction" } @@ -1264,6 +1342,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:allocateIds", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id,keys" }, "parsedOptions": [ @@ -1273,6 +1352,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id,keys" } @@ -1284,6 +1375,7 @@ "options": { "(google.api.http).post": "/v1/projects/{project_id}:reserveIds", "(google.api.http).body": "*", + "(google.api.routing).routing_parameters.field": "database_id", "(google.api.method_signature)": "project_id,keys" }, "parsedOptions": [ @@ -1293,6 +1385,18 @@ "body": "*" } }, + { + "(google.api.routing)": { + "routing_parameters": [ + { + "field": "project_id" + }, + { + "field": "database_id" + } + ] + } + }, { "(google.api.method_signature)": "project_id,keys" } @@ -1344,6 +1448,10 @@ "type": "Key", "id": 3 }, + "transaction": { + "type": "bytes", + "id": 5 + }, "readTime": { "type": "google.protobuf.Timestamp", "id": 7 @@ -1398,6 +1506,10 @@ "query": { "type": "Query", "id": 2 + }, + "transaction": { + "type": "bytes", + "id": 5 } } }, @@ -1449,6 +1561,10 @@ "query": { "type": "AggregationQuery", "id": 2 + }, + "transaction": { + "type": "bytes", + "id": 5 } } }, @@ -1508,7 +1624,8 @@ "oneofs": { "transactionSelector": { "oneof": [ - "transaction" + "transaction", + "singleUseTransaction" ] } }, @@ -1532,6 +1649,10 @@ "type": "bytes", "id": 1 }, + "singleUseTransaction": { + "type": "TransactionOptions", + "id": 10 + }, "mutations": { "rule": "repeated", "type": "Mutation", @@ -1693,6 +1814,7 @@ "oneof": [ "readConsistency", "transaction", + "newTransaction", "readTime" ] } @@ -1706,6 +1828,10 @@ "type": "bytes", "id": 2 }, + "newTransaction": { + "type": "TransactionOptions", + "id": 3 + }, "readTime": { "type": "google.protobuf.Timestamp", "id": 4 @@ -1767,7 +1893,7 @@ "options": { "go_package": "google.golang.org/genproto/googleapis/api/annotations;annotations", "java_multiple_files": true, - "java_outer_classname": "FieldBehaviorProto", + "java_outer_classname": "RoutingProto", "java_package": "com.google.api", "objc_class_prefix": "GAPI", "cc_enable_arenas": true @@ -1893,6 +2019,32 @@ "UNORDERED_LIST": 6, "NON_EMPTY_DEFAULT": 7 } + }, + "routing": { + "type": "google.api.RoutingRule", + "id": 72295729, + "extend": "google.protobuf.MethodOptions" + }, + "RoutingRule": { + "fields": { + "routingParameters": { + "rule": "repeated", + "type": "RoutingParameter", + "id": 2 + } + } + }, + "RoutingParameter": { + "fields": { + "field": { + "type": "string", + "id": 1 + }, + "pathTemplate": { + "type": "string", + "id": 2 + } + } } } }, diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 02a594c11ee..dbe388bbdff 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -182,6 +182,9 @@ export class DatastoreAdminClient { (typeof window !== 'undefined' && typeof window?.fetch === 'function'); opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + // Request numeric enum values if REST transport is used. + opts.numericEnums = true; + // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { opts['scopes'] = staticMembers.scopes; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index b83576f02b0..12161af7fa1 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -125,6 +125,9 @@ export class DatastoreClient { (typeof window !== 'undefined' && typeof window?.fetch === 'function'); opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + // Request numeric enum values if REST transport is used. + opts.numericEnums = true; + // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { opts['scopes'] = staticMembers.scopes; @@ -440,10 +443,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.lookup(request, options, callback); } @@ -539,10 +561,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.runQuery(request, options, callback); } @@ -640,10 +681,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.runAggregationQuery(request, options, callback); } @@ -732,10 +792,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.beginTransaction(request, options, callback); } @@ -758,6 +837,12 @@ export class DatastoreClient { * The identifier of the transaction associated with the commit. A * transaction identifier is returned by a call to * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * @param {google.datastore.v1.TransactionOptions} request.singleUseTransaction + * Options for beginning a new transaction for this request. + * The transaction is committed when the request completes. If specified, + * {@link google.datastore.v1.TransactionOptions.mode|TransactionOptions.mode} + * must be + * {@link google.datastore.v1.TransactionOptions.ReadWrite|TransactionOptions.ReadWrite}. * @param {number[]} request.mutations * The mutations to perform. * @@ -841,10 +926,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.commit(request, options, callback); } @@ -932,10 +1036,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.rollback(request, options, callback); } @@ -953,8 +1076,8 @@ export class DatastoreClient { * '(default)' is not allowed; please use empty string '' to refer the default * database. * @param {number[]} request.keys - * Required. A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. + * Required. A list of keys with incomplete key paths for which to allocate + * IDs. No key may be reserved/read-only. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -1024,10 +1147,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.allocateIds(request, options, callback); } @@ -1045,8 +1187,8 @@ export class DatastoreClient { * '(default)' is not allowed; please use empty string '' to refer the default * database. * @param {number[]} request.keys - * Required. A list of keys with complete key paths whose numeric IDs should not be - * auto-allocated. + * Required. A list of keys with complete key paths whose numeric IDs should + * not be auto-allocated. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -1116,10 +1258,29 @@ export class DatastoreClient { options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; + const routingParameter = {}; + { + const fieldValue = request.projectId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['project_id'] ?? fieldValue; + Object.assign(routingParameter, {project_id: parameterValue}); + } + } + } + { + const fieldValue = request.databaseId; + if (fieldValue !== undefined && fieldValue !== null) { + const match = fieldValue.toString().match(RegExp('(?.*)')); + if (match) { + const parameterValue = match.groups?.['database_id'] ?? fieldValue; + Object.assign(routingParameter, {database_id: parameterValue}); + } + } + } options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project_id: request.projectId ?? '', - }); + this._gaxModule.routingHeader.fromParams(routingParameter); this.initialize(); return this.innerApiCalls.reserveIds(request, options, callback); } diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index 44c29691c26..6a4ecce7b5f 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 97fdbf6f7eb..6688080dcc6 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index 6dd1eaadafa..f61fe236476 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 4fe35cf2c64..f1c0480ff39 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 3698f5ec9f7..a77daf4b020 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -195,12 +195,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.LookupRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); @@ -226,12 +223,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.LookupRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.LookupResponse() ); @@ -273,12 +267,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.LookupRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError); await assert.rejects(client.lookup(request), expectedError); @@ -301,11 +292,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.LookupRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.LookupRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.lookup(request), expectedError); @@ -322,12 +310,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); @@ -353,12 +338,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunQueryResponse() ); @@ -400,12 +382,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.runQuery = stubSimpleCall(undefined, expectedError); await assert.rejects(client.runQuery(request), expectedError); @@ -428,11 +407,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.runQuery(request), expectedError); @@ -449,12 +425,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunAggregationQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryResponse() ); @@ -481,12 +454,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunAggregationQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryResponse() ); @@ -528,12 +498,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunAggregationQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.runAggregationQuery = stubSimpleCall( undefined, @@ -559,11 +526,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RunAggregationQueryRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RunAggregationQueryRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.runAggregationQuery(request), expectedError); @@ -580,12 +544,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.BeginTransactionRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); @@ -611,12 +572,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.BeginTransactionRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionResponse() ); @@ -658,12 +616,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.BeginTransactionRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.beginTransaction = stubSimpleCall( undefined, @@ -689,11 +644,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.BeginTransactionRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.BeginTransactionRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.beginTransaction(request), expectedError); @@ -710,12 +662,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.CommitRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); @@ -741,12 +690,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.CommitRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.CommitResponse() ); @@ -788,12 +734,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.CommitRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError); await assert.rejects(client.commit(request), expectedError); @@ -816,11 +759,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.CommitRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.CommitRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.commit(request), expectedError); @@ -837,12 +777,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RollbackRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); @@ -868,12 +805,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RollbackRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.RollbackResponse() ); @@ -915,12 +849,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RollbackRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.rollback = stubSimpleCall(undefined, expectedError); await assert.rejects(client.rollback(request), expectedError); @@ -943,11 +874,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.RollbackRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.RollbackRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.rollback(request), expectedError); @@ -964,12 +892,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.AllocateIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); @@ -995,12 +920,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.AllocateIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsResponse() ); @@ -1042,12 +964,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.AllocateIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.allocateIds = stubSimpleCall( undefined, @@ -1073,11 +992,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.AllocateIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.AllocateIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.allocateIds(request), expectedError); @@ -1094,12 +1010,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.ReserveIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); @@ -1125,12 +1038,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.ReserveIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedResponse = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsResponse() ); @@ -1172,12 +1082,9 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.ReserveIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; - const expectedHeaderRequestParams = `project_id=${defaultValue1}`; + // path template is empty + request.databaseId = 'value'; + const expectedHeaderRequestParams = 'database_id=value'; const expectedError = new Error('expected'); client.innerApiCalls.reserveIds = stubSimpleCall( undefined, @@ -1203,11 +1110,8 @@ describe('v1.DatastoreClient', () => { const request = generateSampleMessage( new protos.google.datastore.v1.ReserveIdsRequest() ); - const defaultValue1 = getTypeDefaultValue( - '.google.datastore.v1.ReserveIdsRequest', - ['projectId'] - ); - request.projectId = defaultValue1; + // path template is empty + request.databaseId = 'value'; const expectedError = new Error('The client has already been closed.'); client.close(); await assert.rejects(client.reserveIds(request), expectedError); From 8deebd606bbf05101824d50240cc9b9adb0611ab Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 16:31:40 -0500 Subject: [PATCH 702/820] chore(main): release 7.2.0 (#1063) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 15 +++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 6373f1591a4..066f94873e0 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,21 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.2.0](https://github.com/googleapis/nodejs-datastore/compare/v7.1.0...v7.2.0) (2023-02-09) + + +### Features + +* Add dynamic routing header annotation to DatastoreV1 ([b023ab4](https://github.com/googleapis/nodejs-datastore/commit/b023ab47146159c32ebc64dd09da681ad09c4081)) +* Added Snooze API support ([b023ab4](https://github.com/googleapis/nodejs-datastore/commit/b023ab47146159c32ebc64dd09da681ad09c4081)) +* Added SuggestConversationSummary RPC ([b023ab4](https://github.com/googleapis/nodejs-datastore/commit/b023ab47146159c32ebc64dd09da681ad09c4081)) +* New transaction options for datastoreV1 ([b023ab4](https://github.com/googleapis/nodejs-datastore/commit/b023ab47146159c32ebc64dd09da681ad09c4081)) + + +### Bug Fixes + +* **deps:** Update dependency sinon to v15 ([#1020](https://github.com/googleapis/nodejs-datastore/issues/1020)) ([a61258c](https://github.com/googleapis/nodejs-datastore/commit/a61258c92354df5a62cf6e7d6977f8f83bfd907f)) + ## [7.1.0](https://github.com/googleapis/nodejs-datastore/compare/v7.0.0...v7.1.0) (2023-01-18) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 66b2a200a8c..ff6de937e6c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.1.0", + "version": "7.2.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index bd84dc13597..d3725fe7cb4 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.0.0", + "@google-cloud/datastore": "^7.2.0", "sinon": "^15.0.0" }, "devDependencies": { From bc44a4a03222252e5440947b24e9cb7a6afc5b5e Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 16 Feb 2023 14:56:30 -0500 Subject: [PATCH 703/820] feat: Add `OR` query support (#1064) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: changing format of the jsdoc links PiperOrigin-RevId: 509352615 Source-Link: https://github.com/googleapis/googleapis/commit/b737d30dae27222d86fa340ecb99292df4585762 Source-Link: https://github.com/googleapis/googleapis-gen/commit/8efadf3d58780ea1c550268d46a3dc701ba37fcf Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGVmYWRmM2Q1ODc4MGVhMWM1NTAyNjhkNDZhM2RjNzAxYmEzN2ZjZiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Add `OR` query support docs: Minor documentation formatting and cleanup PiperOrigin-RevId: 509848726 Source-Link: https://github.com/googleapis/googleapis/commit/b9351b4bf998332ed831fb82e9d9b02d9b3fa21f Source-Link: https://github.com/googleapis/googleapis-gen/commit/99317db6827185e8cae8eeb46137cd81cd2d6a54 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOTkzMTdkYjY4MjcxODVlOGNhZThlZWI0NjEzN2NkODFjZDJkNmE1NCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../datastore/v1/aggregation_result.proto | 7 +- .../google/datastore/v1/datastore.proto | 18 ++-- .../protos/google/datastore/v1/entity.proto | 7 +- .../protos/google/datastore/v1/query.proto | 45 +++++++--- .../nodejs-datastore/protos/protos.d.ts | 15 +++- handwritten/nodejs-datastore/protos/protos.js | 63 ++++++++++++++ .../nodejs-datastore/protos/protos.json | 11 ++- .../generated/v1/datastore.allocate_ids.js | 6 +- .../v1/datastore.begin_transaction.js | 2 +- .../samples/generated/v1/datastore.commit.js | 9 +- .../samples/generated/v1/datastore.lookup.js | 2 +- .../generated/v1/datastore.reserve_ids.js | 6 +- .../generated/v1/datastore.rollback.js | 2 +- .../v1/datastore.run_aggregation_query.js | 86 +++++++++++++++++++ .../generated/v1/datastore.run_query.js | 2 +- .../v1/datastore_admin.create_index.js | 2 +- .../v1/datastore_admin.delete_index.js | 2 +- .../v1/datastore_admin.export_entities.js | 2 +- .../generated/v1/datastore_admin.get_index.js | 2 +- .../v1/datastore_admin.import_entities.js | 2 +- .../v1/datastore_admin.list_indexes.js | 2 +- .../snippet_metadata.google.datastore.v1.json | 66 +++++++++++++- .../src/v1/datastore_admin_client.ts | 38 ++++---- .../src/v1/datastore_client.ts | 49 +++++------ 24 files changed, 355 insertions(+), 91 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto index e9c1d49400e..bbb5989e58c 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto @@ -36,9 +36,10 @@ option ruby_package = "Google::Cloud::Datastore::V1"; message AggregationResult { // The result of the aggregation functions, ex: `COUNT(*) AS total_entities`. // - // The key is the [alias][google.datastore.v1.AggregationQuery.Aggregation.alias] - // assigned to the aggregation function on input and the size of this map - // equals the number of aggregation functions in the query. + // The key is the + // [alias][google.datastore.v1.AggregationQuery.Aggregation.alias] assigned to + // the aggregation function on input and the size of this map equals the + // number of aggregation functions in the query. map aggregate_properties = 2; } diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 23a740ae4f2..2f9c7142771 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -194,7 +194,9 @@ message LookupResponse { // The identifier of the transaction that was started as part of this Lookup // request. // - // Set only when [ReadOptions.begin_transaction][] was set in + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in // [LookupRequest.read_options][google.datastore.v1.LookupRequest.read_options]. bytes transaction = 5; @@ -244,7 +246,9 @@ message RunQueryResponse { // The identifier of the transaction that was started as part of this // RunQuery request. // - // Set only when [ReadOptions.begin_transaction][] was set in + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. bytes transaction = 5; } @@ -292,7 +296,9 @@ message RunAggregationQueryResponse { // The identifier of the transaction that was started as part of this // RunAggregationQuery request. // - // Set only when [ReadOptions.begin_transaction][] was set in + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. bytes transaction = 5; } @@ -378,8 +384,7 @@ message CommitRequest { // Options for beginning a new transaction for this request. // The transaction is committed when the request completes. If specified, - // [TransactionOptions.mode][google.datastore.v1.TransactionOptions.mode] - // must be + // [TransactionOptions.mode][google.datastore.v1.TransactionOptions] must be // [TransactionOptions.ReadWrite][google.datastore.v1.TransactionOptions.ReadWrite]. TransactionOptions single_use_transaction = 10; } @@ -517,6 +522,9 @@ message MutationResult { // than the version of any possible future entity. int64 version = 4; + // The create time of the entity. This field will not be set after a 'delete'. + google.protobuf.Timestamp create_time = 7; + // The update time of the entity on the server after processing the mutation. // If the mutation doesn't change anything on the server, then the timestamp // will be the update timestamp of the current entity. This field will not be diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 010f1b3af83..ddf22e0322a 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -46,7 +46,8 @@ option ruby_package = "Google::Cloud::Datastore::V1"; // // Foreign partition IDs (in which the project ID does // not match the context project ID ) are discouraged. -// Reads and writes of foreign partition IDs may fail if the project is not in an active state. +// Reads and writes of foreign partition IDs may fail if the project is not in +// an active state. message PartitionId { // The ID of the project to which the entities belong. string project_id = 2; @@ -159,8 +160,8 @@ message Value { Key key_value = 5; // A UTF-8 encoded string value. - // When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. - // Otherwise, may be set to at most 1,000,000 bytes. + // When `exclude_from_indexes` is false (it is indexed) , may have at most + // 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes. string string_value = 17; // A blob value. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index b16806ef26d..169af880185 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -56,17 +56,23 @@ message EntityResult { // The version of the entity, a strictly positive number that monotonically // increases with changes to the entity. // - // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity - // results. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. // - // For [missing][google.datastore.v1.LookupResponse.missing] entities in `LookupResponse`, this - // is the version of the snapshot that was used to look up the entity, and it - // is always set except for eventually consistent reads. + // For [missing][google.datastore.v1.LookupResponse.missing] entities in + // `LookupResponse`, this is the version of the snapshot that was used to look + // up the entity, and it is always set except for eventually consistent reads. int64 version = 4; + // The time at which the entity was created. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. + // If this entity is missing, this field will not be set. + google.protobuf.Timestamp create_time = 6; + // The time at which the entity was last changed. - // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity - // results. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. // If this entity is missing, this field will not be set. google.protobuf.Timestamp update_time = 5; @@ -118,7 +124,8 @@ message Query { google.protobuf.Int32Value limit = 12; } -// Datastore query for running an aggregation over a [Query][google.datastore.v1.Query]. +// Datastore query for running an aggregation over a +// [Query][google.datastore.v1.Query]. message AggregationQuery { // Defines a aggregation that produces a single result. message Aggregation { @@ -127,7 +134,8 @@ message AggregationQuery { // The `COUNT(*)` aggregation function operates on the entire entity // so it does not require a field reference. message Count { - // Optional. Optional constraint on the maximum number of entities to count. + // Optional. Optional constraint on the maximum number of entities to + // count. // // This provides a way to set an upper bound on the number of entities // to scan, limiting latency and cost. @@ -146,7 +154,8 @@ message AggregationQuery { // Requires: // // * Must be non-negative when present. - google.protobuf.Int64Value up_to = 1 [(google.api.field_behavior) = OPTIONAL]; + google.protobuf.Int64Value up_to = 1 + [(google.api.field_behavior) = OPTIONAL]; } // The type of aggregation to perform, required. @@ -155,7 +164,8 @@ message AggregationQuery { Count count = 1; } - // Optional. Optional name of the property to store the result of the aggregation. + // Optional. Optional name of the property to store the result of the + // aggregation. // // If not provided, Datastore will pick a default name following the format // `property_`. For example: @@ -187,7 +197,8 @@ message AggregationQuery { // Requires: // // * Must be unique across all aggregation aliases. - // * Conform to [entity property name][google.datastore.v1.Entity.properties] limitations. + // * Conform to [entity property + // name][google.datastore.v1.Entity.properties] limitations. string alias = 7 [(google.api.field_behavior) = OPTIONAL]; } @@ -197,12 +208,14 @@ message AggregationQuery { Query nested_query = 1; } - // Optional. Series of aggregations to apply over the results of the `nested_query`. + // Optional. Series of aggregations to apply over the results of the + // `nested_query`. // // Requires: // // * A minimum of one and maximum of five aggregations per query. - repeated Aggregation aggregations = 3 [(google.api.field_behavior) = OPTIONAL]; + repeated Aggregation aggregations = 3 + [(google.api.field_behavior) = OPTIONAL]; } // A representation of a kind. @@ -266,6 +279,9 @@ message CompositeFilter { // The results are required to satisfy each of the combined filters. AND = 1; + + // Documents are required to satisfy at least one of the combined filters. + OR = 2; } // The operator for combining multiple filters. @@ -338,6 +354,7 @@ message PropertyFilter { // Requires: // // * That `value` is an entity key. + // * No other `HAS_ANCESTOR` is in the same query. HAS_ANCESTOR = 11; // The value of the `property` is not in the given array. diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index c069d309887..26c2ae828d3 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -3444,6 +3444,9 @@ export namespace google { /** EntityResult version */ version?: (number|Long|string|null); + /** EntityResult createTime */ + createTime?: (google.protobuf.ITimestamp|null); + /** EntityResult updateTime */ updateTime?: (google.protobuf.ITimestamp|null); @@ -3466,6 +3469,9 @@ export namespace google { /** EntityResult version. */ public version: (number|Long|string); + /** EntityResult createTime. */ + public createTime?: (google.protobuf.ITimestamp|null); + /** EntityResult updateTime. */ public updateTime?: (google.protobuf.ITimestamp|null); @@ -4639,7 +4645,8 @@ export namespace google { /** Operator enum. */ enum Operator { OPERATOR_UNSPECIFIED = 0, - AND = 1 + AND = 1, + OR = 2 } } @@ -7250,6 +7257,9 @@ export namespace google { /** MutationResult version */ version?: (number|Long|string|null); + /** MutationResult createTime */ + createTime?: (google.protobuf.ITimestamp|null); + /** MutationResult updateTime */ updateTime?: (google.protobuf.ITimestamp|null); @@ -7272,6 +7282,9 @@ export namespace google { /** MutationResult version. */ public version: (number|Long|string); + /** MutationResult createTime. */ + public createTime?: (google.protobuf.ITimestamp|null); + /** MutationResult updateTime. */ public updateTime?: (google.protobuf.ITimestamp|null); diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index e6fba66c61a..ff8b79715c0 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -8794,6 +8794,7 @@ * @interface IEntityResult * @property {google.datastore.v1.IEntity|null} [entity] EntityResult entity * @property {number|Long|null} [version] EntityResult version + * @property {google.protobuf.ITimestamp|null} [createTime] EntityResult createTime * @property {google.protobuf.ITimestamp|null} [updateTime] EntityResult updateTime * @property {Uint8Array|null} [cursor] EntityResult cursor */ @@ -8829,6 +8830,14 @@ */ EntityResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * EntityResult createTime. + * @member {google.protobuf.ITimestamp|null|undefined} createTime + * @memberof google.datastore.v1.EntityResult + * @instance + */ + EntityResult.prototype.createTime = null; + /** * EntityResult updateTime. * @member {google.protobuf.ITimestamp|null|undefined} updateTime @@ -8877,6 +8886,8 @@ writer.uint32(/* id 4, wireType 0 =*/32).int64(message.version); if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime")) + $root.google.protobuf.Timestamp.encode(message.createTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -8919,6 +8930,10 @@ message.version = reader.int64(); break; } + case 6: { + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } case 5: { message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; @@ -8970,6 +8985,11 @@ if (message.version != null && message.hasOwnProperty("version")) if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) return "version: integer|Long expected"; + if (message.createTime != null && message.hasOwnProperty("createTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.createTime); + if (error) + return "createTime." + error; + } if (message.updateTime != null && message.hasOwnProperty("updateTime")) { var error = $root.google.protobuf.Timestamp.verify(message.updateTime); if (error) @@ -9007,6 +9027,11 @@ message.version = object.version; else if (typeof object.version === "object") message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.createTime != null) { + if (typeof object.createTime !== "object") + throw TypeError(".google.datastore.v1.EntityResult.createTime: object expected"); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + } if (object.updateTime != null) { if (typeof object.updateTime !== "object") throw TypeError(".google.datastore.v1.EntityResult.updateTime: object expected"); @@ -9048,6 +9073,7 @@ } else object.version = options.longs === String ? "0" : 0; object.updateTime = null; + object.createTime = null; } if (message.entity != null && message.hasOwnProperty("entity")) object.entity = $root.google.datastore.v1.Entity.toObject(message.entity, options); @@ -9060,6 +9086,8 @@ object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version; if (message.updateTime != null && message.hasOwnProperty("updateTime")) object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (message.createTime != null && message.hasOwnProperty("createTime")) + object.createTime = $root.google.protobuf.Timestamp.toObject(message.createTime, options); return object; }; @@ -11647,6 +11675,7 @@ return "op: enum value expected"; case 0: case 1: + case 2: break; } if (message.filters != null && message.hasOwnProperty("filters")) { @@ -11688,6 +11717,10 @@ case 1: message.op = 1; break; + case "OR": + case 2: + message.op = 2; + break; } if (object.filters) { if (!Array.isArray(object.filters)) @@ -11761,11 +11794,13 @@ * @enum {number} * @property {number} OPERATOR_UNSPECIFIED=0 OPERATOR_UNSPECIFIED value * @property {number} AND=1 AND value + * @property {number} OR=2 OR value */ CompositeFilter.Operator = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "OPERATOR_UNSPECIFIED"] = 0; values[valuesById[1] = "AND"] = 1; + values[valuesById[2] = "OR"] = 2; return values; })(); @@ -18428,6 +18463,7 @@ * @interface IMutationResult * @property {google.datastore.v1.IKey|null} [key] MutationResult key * @property {number|Long|null} [version] MutationResult version + * @property {google.protobuf.ITimestamp|null} [createTime] MutationResult createTime * @property {google.protobuf.ITimestamp|null} [updateTime] MutationResult updateTime * @property {boolean|null} [conflictDetected] MutationResult conflictDetected */ @@ -18463,6 +18499,14 @@ */ MutationResult.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + /** + * MutationResult createTime. + * @member {google.protobuf.ITimestamp|null|undefined} createTime + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.createTime = null; + /** * MutationResult updateTime. * @member {google.protobuf.ITimestamp|null|undefined} updateTime @@ -18511,6 +18555,8 @@ writer.uint32(/* id 5, wireType 0 =*/40).bool(message.conflictDetected); if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime")) + $root.google.protobuf.Timestamp.encode(message.createTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; @@ -18553,6 +18599,10 @@ message.version = reader.int64(); break; } + case 7: { + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } case 6: { message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; @@ -18604,6 +18654,11 @@ if (message.version != null && message.hasOwnProperty("version")) if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))) return "version: integer|Long expected"; + if (message.createTime != null && message.hasOwnProperty("createTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.createTime); + if (error) + return "createTime." + error; + } if (message.updateTime != null && message.hasOwnProperty("updateTime")) { var error = $root.google.protobuf.Timestamp.verify(message.updateTime); if (error) @@ -18641,6 +18696,11 @@ message.version = object.version; else if (typeof object.version === "object") message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber(); + if (object.createTime != null) { + if (typeof object.createTime !== "object") + throw TypeError(".google.datastore.v1.MutationResult.createTime: object expected"); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + } if (object.updateTime != null) { if (typeof object.updateTime !== "object") throw TypeError(".google.datastore.v1.MutationResult.updateTime: object expected"); @@ -18673,6 +18733,7 @@ object.version = options.longs === String ? "0" : 0; object.conflictDetected = false; object.updateTime = null; + object.createTime = null; } if (message.key != null && message.hasOwnProperty("key")) object.key = $root.google.datastore.v1.Key.toObject(message.key, options); @@ -18685,6 +18746,8 @@ object.conflictDetected = message.conflictDetected; if (message.updateTime != null && message.hasOwnProperty("updateTime")) object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); + if (message.createTime != null && message.hasOwnProperty("createTime")) + object.createTime = $root.google.protobuf.Timestamp.toObject(message.createTime, options); return object; }; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index a6c734d6344..836d3ec9022 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -805,6 +805,10 @@ "type": "int64", "id": 4 }, + "createTime": { + "type": "google.protobuf.Timestamp", + "id": 6 + }, "updateTime": { "type": "google.protobuf.Timestamp", "id": 5 @@ -1010,7 +1014,8 @@ "Operator": { "values": { "OPERATOR_UNSPECIFIED": 0, - "AND": 1 + "AND": 1, + "OR": 2 } } } @@ -1798,6 +1803,10 @@ "type": "int64", "id": 4 }, + "createTime": { + "type": "google.protobuf.Timestamp", + "id": 7 + }, "updateTime": { "type": "google.protobuf.Timestamp", "id": 6 diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js index a6206e9b3dd..57a33800a0d 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -39,8 +39,8 @@ function main(projectId, keys) { */ // const databaseId = 'abc123' /** - * Required. A list of keys with incomplete key paths for which to allocate IDs. - * No key may be reserved/read-only. + * Required. A list of keys with incomplete key paths for which to allocate + * IDs. No key may be reserved/read-only. */ // const keys = 1234 diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js index 5942c0e7389..563072ec9e5 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js index 64a6867d90e..9c3efa676ac 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -48,6 +48,13 @@ function main(projectId) { * Datastore.BeginTransaction google.datastore.v1.Datastore.BeginTransaction. */ // const transaction = 'Buffer.from('string')' + /** + * Options for beginning a new transaction for this request. + * The transaction is committed when the request completes. If specified, + * TransactionOptions.mode google.datastore.v1.TransactionOptions must be + * TransactionOptions.ReadWrite google.datastore.v1.TransactionOptions.ReadWrite. + */ + // const singleUseTransaction = {} /** * The mutations to perform. * When mode is `TRANSACTIONAL`, mutations affecting a single entity are diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js index 71fa6fe49c5..3fc79fb100e 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js index b2b9b4f1dbe..0a5c915aa94 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -39,8 +39,8 @@ function main(projectId, keys) { */ // const databaseId = 'abc123' /** - * Required. A list of keys with complete key paths whose numeric IDs should not be - * auto-allocated. + * Required. A list of keys with complete key paths whose numeric IDs should + * not be auto-allocated. */ // const keys = 1234 diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js index d52ac167ae5..bdbbfaa2a61 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js new file mode 100644 index 00000000000..f632c2eaab0 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js @@ -0,0 +1,86 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ** This file is automatically generated by gapic-generator-typescript. ** +// ** https://github.com/googleapis/gapic-generator-typescript ** +// ** All changes to this file may be overwritten. ** + + + +'use strict'; + +function main(projectId) { + // [START datastore_v1_generated_Datastore_RunAggregationQuery_async] + /** + * This snippet has been automatically generated and should be regarded as a code template only. + * It will require modifications to work. + * It may require correct/in-range values for request initialization. + * TODO(developer): Uncomment these variables before running the sample. + */ + /** + * Required. The ID of the project against which to make the request. + */ + // const projectId = 'abc123' + /** + * The ID of the database against which to make the request. + * '(default)' is not allowed; please use empty string '' to refer the default + * database. + */ + // const databaseId = 'abc123' + /** + * Entities are partitioned into subsets, identified by a partition ID. + * Queries are scoped to a single partition. + * This partition ID is normalized with the standard default context + * partition ID. + */ + // const partitionId = {} + /** + * The options for this query. + */ + // const readOptions = {} + /** + * The query to run. + */ + // const aggregationQuery = {} + /** + * The GQL query to run. This query must be an aggregation query. + */ + // const gqlQuery = {} + + // Imports the Datastore library + const {DatastoreClient} = require('@google-cloud/datastore').v1; + + // Instantiates a client + const datastoreClient = new DatastoreClient(); + + async function callRunAggregationQuery() { + // Construct request + const request = { + projectId, + }; + + // Run request + const response = await datastoreClient.runAggregationQuery(request); + console.log(response); + } + + callRunAggregationQuery(); + // [END datastore_v1_generated_Datastore_RunAggregationQuery_async] +} + +process.on('unhandledRejection', err => { + console.error(err.message); + process.exitCode = 1; +}); +main(...process.argv.slice(2)); diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js index 16900bda163..b4d94292b23 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js index 42cf01a88e4..020b012553e 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js index 5acf335d8e0..f02860bf7cf 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js index dfb4006ad44..2b16823a292 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js index 291694e0b74..213a5f163e7 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js index 7c222f0bda9..29ecd6fa5ae 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js index d69a45e9ac2..8373bf7cec2 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json index 1447b94a86d..27ec516fcc5 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata.google.datastore.v1.json @@ -123,6 +123,66 @@ } } }, + { + "regionTag": "datastore_v1_generated_Datastore_RunAggregationQuery_async", + "title": "datastore runAggregationQuery Sample", + "origin": "API_DEFINITION", + "description": " Runs an aggregation query.", + "canonical": true, + "file": "datastore.run_aggregation_query.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 78, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "RunAggregationQuery", + "fullName": "google.datastore.v1.Datastore.RunAggregationQuery", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "partition_id", + "type": ".google.datastore.v1.PartitionId" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "aggregation_query", + "type": ".google.datastore.v1.AggregationQuery" + }, + { + "name": "gql_query", + "type": ".google.datastore.v1.GqlQuery" + } + ], + "resultType": ".google.datastore.v1.RunAggregationQueryResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "RunAggregationQuery", + "fullName": "google.datastore.v1.Datastore.RunAggregationQuery", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, { "regionTag": "datastore_v1_generated_Datastore_BeginTransaction_async", "title": "datastore beginTransaction Sample", @@ -182,7 +242,7 @@ "segments": [ { "start": 25, - "end": 82, + "end": 89, "type": "FULL" } ], @@ -207,6 +267,10 @@ "name": "transaction", "type": "TYPE_BYTES" }, + { + "name": "single_use_transaction", + "type": ".google.datastore.v1.TransactionOptions" + }, { "name": "mutations", "type": "TYPE_MESSAGE[]" diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index dbe388bbdff..49814db5079 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -484,7 +484,7 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [Index]{@link google.datastore.admin.v1.Index}. + * The first element of the array is an object representing {@link google.datastore.admin.v1.Index | Index}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -1212,7 +1212,7 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of [Index]{@link google.datastore.admin.v1.Index}. + * The first element of the array is Array of {@link google.datastore.admin.v1.Index | Index}. * The client library will perform auto-pagination by default: it will call the API as many * times as needed and will merge results from all the pages into this array. * Note that it can affect your quota. @@ -1306,7 +1306,7 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Stream} - * An object stream which emits an object representing [Index]{@link google.datastore.admin.v1.Index} on 'data' event. + * An object stream which emits an object representing {@link google.datastore.admin.v1.Index | Index} on 'data' event. * The client library will perform auto-pagination by default: it will call the API as many * times as needed. Note that it can affect your quota. * We recommend using `listIndexesAsync()` @@ -1356,7 +1356,7 @@ export class DatastoreAdminClient { * @returns {Object} * An iterable Object that allows [async iteration](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols). * When you iterate the returned iterable, each element will be an object representing - * [Index]{@link google.datastore.admin.v1.Index}. The API will be called under the hood as needed, once per the page, + * {@link google.datastore.admin.v1.Index | Index}. The API will be called under the hood as needed, once per the page, * so you can stop the iteration when you don't need more results. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) @@ -1394,20 +1394,18 @@ export class DatastoreAdminClient { * @param {string} request.name - The name of the operation resource. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} + * for the details. * @param {function(?Error, ?Object)=} callback * The function which will be called with the result of the API call. * * The second parameter to the callback is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. + * {@link google.longrunning.Operation | google.longrunning.Operation}. * @return {Promise} - The promise which resolves to an array. * The first element of the array is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. The promise has a method named - * "cancel" which cancels the ongoing API call. + * {@link google.longrunning.Operation | google.longrunning.Operation}. + * The promise has a method named "cancel" which cancels the ongoing API call. * * @example * ``` @@ -1451,11 +1449,11 @@ export class DatastoreAdminClient { * resources in a page. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} for the * details. * @returns {Object} - * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * An iterable Object that conforms to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | iteration protocols}. * * @example * ``` @@ -1486,8 +1484,8 @@ export class DatastoreAdminClient { * @param {string} request.name - The name of the operation resource to be cancelled. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} for the * details. * @param {function(?Error)=} callback * The function which will be called with the result of the API call. @@ -1529,9 +1527,9 @@ export class DatastoreAdminClient { * @param {string} request.name - The name of the operation resource to be deleted. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} + * for the details. * @param {function(?Error)=} callback * The function which will be called with the result of the API call. * @return {Promise} - The promise which resolves when API call finishes. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 12161af7fa1..edd8d6883e3 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -377,7 +377,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [LookupResponse]{@link google.datastore.v1.LookupResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.LookupResponse | LookupResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -495,7 +495,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RunQueryResponse]{@link google.datastore.v1.RunQueryResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.RunQueryResponse | RunQueryResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -613,7 +613,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RunAggregationQueryResponse]{@link google.datastore.v1.RunAggregationQueryResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.RunAggregationQueryResponse | RunAggregationQueryResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -724,7 +724,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [BeginTransactionResponse]{@link google.datastore.v1.BeginTransactionResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.BeginTransactionResponse | BeginTransactionResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -840,8 +840,7 @@ export class DatastoreClient { * @param {google.datastore.v1.TransactionOptions} request.singleUseTransaction * Options for beginning a new transaction for this request. * The transaction is committed when the request completes. If specified, - * {@link google.datastore.v1.TransactionOptions.mode|TransactionOptions.mode} - * must be + * {@link google.datastore.v1.TransactionOptions|TransactionOptions.mode} must be * {@link google.datastore.v1.TransactionOptions.ReadWrite|TransactionOptions.ReadWrite}. * @param {number[]} request.mutations * The mutations to perform. @@ -860,7 +859,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [CommitResponse]{@link google.datastore.v1.CommitResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.CommitResponse | CommitResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -970,7 +969,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [RollbackResponse]{@link google.datastore.v1.RollbackResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.RollbackResponse | RollbackResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -1081,7 +1080,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [AllocateIdsResponse]{@link google.datastore.v1.AllocateIdsResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.AllocateIdsResponse | AllocateIdsResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -1192,7 +1191,7 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing [ReserveIdsResponse]{@link google.datastore.v1.ReserveIdsResponse}. + * The first element of the array is an object representing {@link google.datastore.v1.ReserveIdsResponse | ReserveIdsResponse}. * Please see the * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) * for more details and examples. @@ -1294,20 +1293,18 @@ export class DatastoreClient { * @param {string} request.name - The name of the operation resource. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} + * for the details. * @param {function(?Error, ?Object)=} callback * The function which will be called with the result of the API call. * * The second parameter to the callback is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. + * {@link google.longrunning.Operation | google.longrunning.Operation}. * @return {Promise} - The promise which resolves to an array. * The first element of the array is an object representing - * [google.longrunning.Operation]{@link - * external:"google.longrunning.Operation"}. The promise has a method named - * "cancel" which cancels the ongoing API call. + * {@link google.longrunning.Operation | google.longrunning.Operation}. + * The promise has a method named "cancel" which cancels the ongoing API call. * * @example * ``` @@ -1351,11 +1348,11 @@ export class DatastoreClient { * resources in a page. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} for the * details. * @returns {Object} - * An iterable Object that conforms to @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols. + * An iterable Object that conforms to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | iteration protocols}. * * @example * ``` @@ -1386,8 +1383,8 @@ export class DatastoreClient { * @param {string} request.name - The name of the operation resource to be cancelled. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} for the * details. * @param {function(?Error)=} callback * The function which will be called with the result of the API call. @@ -1429,9 +1426,9 @@ export class DatastoreClient { * @param {string} request.name - The name of the operation resource to be deleted. * @param {Object=} options * Optional parameters. You can override the default settings for this call, - * e.g, timeout, retries, paginations, etc. See [gax.CallOptions]{@link - * https://googleapis.github.io/gax-nodejs/global.html#CallOptions} for the - * details. + * e.g, timeout, retries, paginations, etc. See {@link + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions | gax.CallOptions} + * for the details. * @param {function(?Error)=} callback * The function which will be called with the result of the API call. * @return {Promise} - The promise which resolves when API call finishes. From 1a2c55e57a049bc584eb0639cdc53903364d9a34 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 09:38:05 -0500 Subject: [PATCH 704/820] chore(main): release 7.3.0 (#1068) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 066f94873e0..a01cd6cda73 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.3.0](https://github.com/googleapis/nodejs-datastore/compare/v7.2.0...v7.3.0) (2023-02-16) + + +### Features + +* Add `OR` query support ([#1064](https://github.com/googleapis/nodejs-datastore/issues/1064)) ([196bdaf](https://github.com/googleapis/nodejs-datastore/commit/196bdafb27b6987ccbf547e480b008aee65775d0)) + ## [7.2.0](https://github.com/googleapis/nodejs-datastore/compare/v7.1.0...v7.2.0) (2023-02-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ff6de937e6c..920fcbe58cf 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.2.0", + "version": "7.3.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d3725fe7cb4..49beea55ba0 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.2.0", + "@google-cloud/datastore": "^7.3.0", "sinon": "^15.0.0" }, "devDependencies": { From 190ec3a854a0c7dda1a68f9727c9ae4596a0dd37 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 17 Feb 2023 15:06:29 +0000 Subject: [PATCH 705/820] fix(deps): roll back dependency @google-cloud/datastore to ^7.2.0 (#1069) --- handwritten/nodejs-datastore/samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 49beea55ba0..d3725fe7cb4 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.3.0", + "@google-cloud/datastore": "^7.2.0", "sinon": "^15.0.0" }, "devDependencies": { From 048dbcfadeae40cdd1458347cce7c8e4c85b0831 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 10:55:04 -0500 Subject: [PATCH 706/820] chore(main): release 7.3.1 (#1070) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index a01cd6cda73..3b9da179dfe 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.3.1](https://github.com/googleapis/nodejs-datastore/compare/v7.3.0...v7.3.1) (2023-02-17) + + +### Bug Fixes + +* **deps:** Roll back dependency @google-cloud/datastore to ^7.2.0 ([#1069](https://github.com/googleapis/nodejs-datastore/issues/1069)) ([1677c53](https://github.com/googleapis/nodejs-datastore/commit/1677c53b612799a90c455636ac19e081ff3730b3)) + ## [7.3.0](https://github.com/googleapis/nodejs-datastore/compare/v7.2.0...v7.3.0) (2023-02-16) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 920fcbe58cf..b3867b39cec 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.3.0", + "version": "7.3.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d3725fe7cb4..7c6431761ad 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.2.0", + "@google-cloud/datastore": "^7.3.1", "sinon": "^15.0.0" }, "devDependencies": { From 8882c463e6db44f9c8793751d466d96b186c7799 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 17 Feb 2023 13:37:33 -0500 Subject: [PATCH 707/820] fix: Allow filtering null values (#1067) * fix: Allows nulls to be passed into value A user expressed interest in filtering with a null value. This typescript parameter change will now allow users to do so. fixes #958 * Add tests in the system test folder The code in the system test folder reflects the user experience more closely so we want to provide test cases there that will break when compiling typescript if new changes in src are not provided. * Assert statements in system tests Add assert statements to check that the value in the filter created in the system test actually equals null. * Modify tests to assert check for null Slight rename in system tests. Modified tests so that they test to see that the filter has a null value. * Prefer elvis operator in assert statements This change replaces the a longer fragment with elvis operator to make assert statements more concise. * eliminate the need for a variable In two tests we eliminate variables and just have an assert statement so that we can have more concise code. --- handwritten/nodejs-datastore/src/query.ts | 10 +++++++--- .../nodejs-datastore/system-test/datastore.ts | 14 ++++++++++++++ handwritten/nodejs-datastore/test/query.ts | 10 ++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index cbc464de775..e8f333ca99d 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -201,9 +201,13 @@ class Query { * const keyQuery = query.filter('__key__', key); * ``` */ - filter(property: string, value: {}): Query; - filter(property: string, operator: Operator, value: {}): Query; - filter(property: string, operatorOrValue: Operator, value?: {}): Query { + filter(property: string, value: {} | null): Query; + filter(property: string, operator: Operator, value: {} | null): Query; + filter( + property: string, + operatorOrValue: Operator, + value?: {} | null + ): Query { let operator = operatorOrValue as Operator; if (arguments.length === 2) { value = operatorOrValue as {}; diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index ae0a473ac0d..b7071e3de3a 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -868,6 +868,20 @@ describe('Datastore', () => { assert.strictEqual(entities.length, characters.length); }); + it('should construct filters by null status', async () => { + assert.strictEqual( + datastore.createQuery('Character').filter('status', null).filters.pop() + ?.val, + null + ); + assert.strictEqual( + datastore + .createQuery('Character') + .filter('status', '=', null) + .filters.pop()?.val, + null + ); + }); it('should filter by key', async () => { const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); const q = datastore diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 8e1b7b10721..1f539b24353 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -163,6 +163,16 @@ describe('Query', () => { assert.strictEqual(filter.op, '='); assert.strictEqual(filter.val, 'Stephen'); }); + it('should accept null as value', () => { + assert.strictEqual( + new Query(['kind1']).filter('status', null).filters.pop()?.val, + null + ); + assert.strictEqual( + new Query(['kind1']).filter('status', '=', null).filters.pop()?.val, + null + ); + }); }); describe('hasAncestor', () => { From 03e8c69ee10dd865b7b9b928744d507101e962eb Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 13:17:59 -0500 Subject: [PATCH 708/820] chore(main): release 7.3.2 (#1071) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 3b9da179dfe..37b49971bc5 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.3.2](https://github.com/googleapis/nodejs-datastore/compare/v7.3.1...v7.3.2) (2023-02-17) + + +### Bug Fixes + +* Allow filtering null values ([#1067](https://github.com/googleapis/nodejs-datastore/issues/1067)) ([b89fa21](https://github.com/googleapis/nodejs-datastore/commit/b89fa211b366ec3e24ea5b2c8deeb90c695aa0df)) + ## [7.3.1](https://github.com/googleapis/nodejs-datastore/compare/v7.3.0...v7.3.1) (2023-02-17) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index b3867b39cec..14f5aa4a4f0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.3.1", + "version": "7.3.2", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 7c6431761ad..30a21f5c53d 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.3.1", + "@google-cloud/datastore": "^7.3.2", "sinon": "^15.0.0" }, "devDependencies": { From c45be91ad4661cf0378a699220f4896f4211b46e Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 24 Feb 2023 13:38:42 -0500 Subject: [PATCH 709/820] chore: remove the blob error workaround (#1072) * remove the blob error workaround An error with code 3 was thrown when the test code was run before the workaround was added and before the proto changes were made. Now that the proto changes have been made, the workaround is no longer required so it is removed in this commit. * return encode test to original Change a test so that it matches what it originally was back in 2020. --- handwritten/nodejs-datastore/src/entity.ts | 5 +---- .../nodejs-datastore/system-test/datastore.ts | 13 +++++++++++++ handwritten/nodejs-datastore/test/entity.ts | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 49dddf63d5e..599f0073eb2 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -657,10 +657,7 @@ export namespace entity { } if (value instanceof Buffer) { - // Convert the buffer to a base 64 string to workaround a bug of - // protobufs encoding empty buffer. - // See https://github.com/googleapis/nodejs-datastore/issues/755 - valueProto.blobValue = value.toString('base64'); + valueProto.blobValue = value; return valueProto; } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index b7071e3de3a..6af021a5210 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -543,6 +543,19 @@ describe('Datastore', () => { await datastore.delete(personKey); }); + it('should save with an empty buffer', async () => { + const key = datastore.key(['TEST']); + const result = await datastore.save({ + key: key, + data: { + name: 'test', + blob: Buffer.from([]), + }, + }); + const mutationResult = result.pop()?.mutationResults?.pop(); + assert.strictEqual(mutationResult?.key?.path?.pop()?.kind, 'TEST'); + }); + describe('entity types', () => { it('should save and decode an int', async () => { const integerValue = 2015; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index e79d6360da4..53d9cd364b6 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -849,7 +849,7 @@ describe('entity', () => { const value = Buffer.from('Hi'); const expectedValueProto = { - blobValue: value.toString('base64'), + blobValue: value, }; assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); From 0badd0c4249531f5b0b5c4b51e123b016e2caa8c Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 27 Feb 2023 15:58:34 -0500 Subject: [PATCH 710/820] docs: Change links (#1073) * Change links This change allows the documentation to display the right text and link next to `Maps to` on the documentation pages. * Amend commit message --- handwritten/nodejs-datastore/src/index.ts | 6 +++--- handwritten/nodejs-datastore/src/transaction.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 03b71735c50..2acd8a85caf 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -780,7 +780,7 @@ class Datastore extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `insert`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/datastore#_google_cloud_datastore_Datastore_save_member_1_|Datastore#save}, forcing the method to be `insert`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. @@ -1189,7 +1189,7 @@ class Datastore extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `update`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/datastore#_google_cloud_datastore_Datastore_save_member_1_|Datastore#save}, forcing the method to be `update`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. @@ -1219,7 +1219,7 @@ class Datastore extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `upsert`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/datastore#_google_cloud_datastore_Datastore_save_member_1_|Datastore#save}, forcing the method to be `upsert`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 6e2a5aea8d0..715576b2f0b 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -399,7 +399,7 @@ class Transaction extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `insert`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/transaction#_google_cloud_datastore_Transaction_save_member_1_|Datastore#save}, forcing the method to be `insert`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. @@ -729,7 +729,7 @@ class Transaction extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `update`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/transaction#_google_cloud_datastore_Transaction_save_member_1_|Datastore#save}, forcing the method to be `update`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. @@ -751,7 +751,7 @@ class Transaction extends DatastoreRequest { } /** - * Maps to {@link Datastore#save}, forcing the method to be `upsert`. + * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/transaction#_google_cloud_datastore_Transaction_save_member_1_|Datastore#save}, forcing the method to be `upsert`. * * @param {object|object[]} entities Datastore key object(s). * @param {Key} entities.key Datastore key object. From ef4be59b44594da6643006e1acf76852ff8debef Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 8 Mar 2023 17:28:25 -0500 Subject: [PATCH 711/820] feat: introduce EntityFilter class with support for and/or filters (#1061) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * or filters interface * implementation of new filter * Remove duplicate code * Parse with type guard * Remove the newFilter variable * Add filter and enable chaining * test add filter * Add another unit test * Add system-test stubs * Add system-tests for the OR filter * Move things around * Added a unit test * Add a unit test for OR filters * Just use filter method * new warning test * Revert "new warning test" This reverts commit 37400a6d3a9d7385a0203db70949f037e4c35de4. * Now removes deprecation warning properly * Add a test for new warning * Add setAncestor Adds a new setAncestor method for ensuring only one ancestor is set for the query at a time. This will avoid errors that result because of setting multiple ancestors. Also deprecate hasAncestor because it will lead to warnings like this. Add parser logic to use the value provided in setAncestor for query sent to backend. * Basic unit tests for setAncestor Added tests for the query proto, one to make sure the query structure is right when setting ancestor once and one to make sure the query structure is right when setting ancestor twice. Also added a unit test to make sure that ancestor is set the right way internally when using setAncestor. * change expected result for OR query This code change adjusts the expected result for running an OR query. Old result used to correspond with AND, but now corresponds to OR. * Fix a test by not requiring the done callback A test is timing out because we are waiting for done to be called. This fix does not require done to be called. * Revert "Fix a test by not requiring the done callback" This reverts commit 1159b374f483d107736a765b5b4f1ade80116ce3. * Revert "Basic unit tests for setAncestor" This reverts commit 86841d6e0a3d26e2df647fa4a42ed849b61b38a6. * Revert "Add setAncestor" This reverts commit e84582faa6041429a4e81d47bd21dbc338a639e7. * Separate filters and new filters internally This commit is done to avoid a breaking typescript change which could have the potential to affect some users who read `filters` on a query as its type had been changed to be more flexible, but is now back to what it was. * Move AND/OR into their own separate function AND and OR should not be static functions of the filter class because then the user has to type Filter.AND instead of AND for example. * Eliminate unused imports Artifacts of having imports laying around and moving functionality between files * Revert "Add a test for new warning" This reverts commit bc15f325d87b4ffe46ae8727293c5cefa2300501. * Revert "Now removes deprecation warning properly" This reverts commit db02a5089242b25b4bebae4304a4778f0bf6d17f. * Modify test cases to capture nuances in data We add additional asserts to the data in order to capture the nuances of the composite operator. For example, for the OR test we make sure the filter doesn’t always require both conditions to be true. * Added comments to code that was refactored Code for building the `filter` property of the query proto was pulled into the `Filter` object. Comments indicate how legacy functionality was maintained and which lines of code perform which task. * rename NewFilter to entity filter rename new filter to entity filter to eliminate the need for an internal rename that causes confusion * Switch around last and first These test cases have mistakes in their names. We should change them to reflect the position of `hasAncestor`. * Change the comment to reflect the new name The name of the base class is now EntityFilter. Adjust this comment so that it correctly matches the parameter type. * rename and move constant map up rename composite filter functions so that they don’t look like constants and move a map up so that it doesn’t have to be initialized every time. * Rename newFilters to entityFilters --- handwritten/nodejs-datastore/src/entity.ts | 55 ++---- handwritten/nodejs-datastore/src/filter.ts | 160 ++++++++++++++++++ handwritten/nodejs-datastore/src/query.ts | 43 +++-- .../system-test/data/index.yaml | 6 + .../nodejs-datastore/system-test/datastore.ts | 105 ++++++++++++ handwritten/nodejs-datastore/test/entity.ts | 50 ++++++ handwritten/nodejs-datastore/test/query.ts | 35 ++++ 7 files changed, 398 insertions(+), 56 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/filter.ts diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 599f0073eb2..2023d511dfa 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -21,6 +21,7 @@ import {PathType} from '.'; import {protobuf as Protobuf} from 'google-gax'; import * as path from 'path'; import {google} from '../protos/protos'; +import {and, PropertyFilter} from './filter'; // eslint-disable-next-line @typescript-eslint/no-namespace export namespace entity { @@ -1183,18 +1184,6 @@ export namespace entity { * ``` */ export function queryToQueryProto(query: Query): QueryProto { - const OP_TO_OPERATOR = { - '=': 'EQUAL', - '>': 'GREATER_THAN', - '>=': 'GREATER_THAN_OR_EQUAL', - '<': 'LESS_THAN', - '<=': 'LESS_THAN_OR_EQUAL', - HAS_ANCESTOR: 'HAS_ANCESTOR', - '!=': 'NOT_EQUAL', - IN: 'IN', - NOT_IN: 'NOT_IN', - }; - const SIGN_TO_ORDER = { '-': 'DESCENDING', '+': 'ASCENDING', @@ -1249,34 +1238,20 @@ export namespace entity { queryProto.startCursor = query.startVal; } - if (query.filters.length > 0) { - const filters = query.filters.map(filter => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let value: any = {}; - - if (filter.name === '__key__') { - value.keyValue = entity.keyToKeyProto(filter.val); - } else { - value = entity.encodeValue(filter.val, filter.name); - } - - return { - propertyFilter: { - property: { - name: filter.name, - }, - op: OP_TO_OPERATOR[filter.op], - value, - }, - }; - }); - - queryProto.filter = { - compositeFilter: { - filters, - op: 'AND', - }, - }; + // Check to see if there is at least one type of legacy filter or new filter. + if (query.filters.length > 0 || query.entityFilters.length > 0) { + // Convert all legacy filters into new property filter objects + const filters = query.filters.map( + filter => new PropertyFilter(filter.name, filter.op, filter.val) + ); + const entityFilters = query.entityFilters; + const allFilters = entityFilters.concat(filters); + /* + To be consistent with prior implementation, apply an AND composite filter + to the collection of Filter objects. Then, set the filter property as before + to the output of the toProto method. + */ + queryProto.filter = and(allFilters).toProto(); } return queryProto; diff --git a/handwritten/nodejs-datastore/src/filter.ts b/handwritten/nodejs-datastore/src/filter.ts new file mode 100644 index 00000000000..5897707e5bf --- /dev/null +++ b/handwritten/nodejs-datastore/src/filter.ts @@ -0,0 +1,160 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Operator, Filter as IFilter} from './query'; +import {entity} from './entity'; + +const OP_TO_OPERATOR = new Map([ + ['=', 'EQUAL'], + ['>', 'GREATER_THAN'], + ['>=', 'GREATER_THAN_OR_EQUAL'], + ['<', 'LESS_THAN'], + ['<=', 'LESS_THAN_OR_EQUAL'], + ['HAS_ANCESTOR', 'HAS_ANCESTOR'], + ['!=', 'NOT_EQUAL'], + ['IN', 'IN'], + ['NOT_IN', 'NOT_IN'], +]); + +enum CompositeOperator { + AND = 'AND', + OR = 'OR', +} + +export function and(filters: EntityFilter[]): CompositeFilter { + return new CompositeFilter(filters, CompositeOperator.AND); +} + +export function or(filters: EntityFilter[]): CompositeFilter { + return new CompositeFilter(filters, CompositeOperator.OR); +} + +/** + * A Filter is a class that contains data for a filter that can be translated + * into a proto when needed. + * + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#filters| Filters Reference} + * + */ +export abstract class EntityFilter { + /** + * Gets the proto for the filter. + * + */ + // eslint-disable-next-line + abstract toProto(): any; +} + +/** + * A PropertyFilter is a filter that gets applied to a query directly. + * + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#property_filters| Property filters Reference} + * + * @class + */ +export class PropertyFilter extends EntityFilter implements IFilter { + name: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + val: any; + op: Operator; + + /** + * Build a Property Filter object. + * + * @param {string} Property + * @param {Operator} operator + * @param {any} val + */ + constructor(property: string, operator: Operator, val: any) { + super(); + this.name = property; + this.op = operator; + this.val = val; + } + + private encodedValue(): any { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let value: any = {}; + if (this.name === '__key__') { + value.keyValue = entity.keyToKeyProto(this.val); + } else { + value = entity.encodeValue(this.val, this.name); + } + return value; + } + + /** + * Gets the proto for the filter. + * + */ + // eslint-disable-next-line + toProto(): any { + const value = new PropertyFilter( + this.name, + this.op, + this.val + ).encodedValue(); + return { + propertyFilter: { + property: { + name: this.name, + }, + op: OP_TO_OPERATOR.get(this.op), + value, + }, + }; + } +} + +/** + * A CompositeFilter is a filter that combines other filters and applies that + * combination to a query. + * + * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#composite_filters| Composite filters Reference} + * + * @class + */ +class CompositeFilter extends EntityFilter { + filters: EntityFilter[]; + op: string; + + /** + * Build a Composite Filter object. + * + * @param {EntityFilter[]} filters + */ + constructor(filters: EntityFilter[], op: CompositeOperator) { + super(); + this.filters = filters; + this.op = op; + } + + /** + * Gets the proto for the filter. + * + */ + // eslint-disable-next-line + toProto(): any { + return { + compositeFilter: { + filters: this.filters.map(filter => filter.toProto()), + op: this.op, + }, + }; + } +} + +export function isFilter(filter: any): filter is EntityFilter { + return (filter as EntityFilter).toProto !== undefined; +} diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index e8f333ca99d..153a3941405 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -18,10 +18,10 @@ import arrify = require('arrify'); import {Key} from 'readline'; import {Datastore} from '.'; import {Entity} from './entity'; +import {EntityFilter, isFilter} from './filter'; import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; -import {AggregateField, AggregateQuery} from './aggregate'; export type Operator = | '=' @@ -76,6 +76,7 @@ class Query { namespace?: string | null; kinds: string[]; filters: Filter[]; + entityFilters: EntityFilter[]; orders: Order[]; groupByVal: Array<{}>; selectVal: Array<{}>; @@ -123,6 +124,11 @@ class Query { * @type {array} */ this.filters = []; + /** + * @name Query#entityFilters + * @type {array} + */ + this.entityFilters = []; /** * @name Query#orders * @type {array} @@ -170,7 +176,7 @@ class Query { * * @see {@link https://cloud.google.com/datastore/docs/concepts/queries#datastore-property-filter-nodejs| Datastore Filters} * - * @param {string} property The field name. + * @param {string | EntityFilter} propertyOrFilter The field name. * @param {string} [operator="="] Operator (=, <, >, <=, >=). * @param {*} value Value to compare property to. * @returns {Query} @@ -201,24 +207,29 @@ class Query { * const keyQuery = query.filter('__key__', key); * ``` */ - filter(property: string, value: {} | null): Query; - filter(property: string, operator: Operator, value: {} | null): Query; + filter(propertyOrFilter: string | EntityFilter, value?: {} | null): Query; + filter(propertyOrFilter: string, operator: Operator, value: {} | null): Query; filter( - property: string, - operatorOrValue: Operator, + propertyOrFilter: string | EntityFilter, + operatorOrValue?: Operator, value?: {} | null ): Query { - let operator = operatorOrValue as Operator; - if (arguments.length === 2) { - value = operatorOrValue as {}; - operator = '='; - } + if (isFilter(propertyOrFilter)) { + this.entityFilters.push(propertyOrFilter); + return this; + } else { + let operator = operatorOrValue as Operator; + if (arguments.length === 2) { + value = operatorOrValue as {}; + operator = '='; + } - this.filters.push({ - name: property.trim(), - op: operator.trim() as Operator, - val: value, - }); + this.filters.push({ + name: (propertyOrFilter as String).trim(), + op: operator.trim() as Operator, + val: value, + }); + } return this; } diff --git a/handwritten/nodejs-datastore/system-test/data/index.yaml b/handwritten/nodejs-datastore/system-test/data/index.yaml index 5a2d2b1a8bc..0900b970f96 100644 --- a/handwritten/nodejs-datastore/system-test/data/index.yaml +++ b/handwritten/nodejs-datastore/system-test/data/index.yaml @@ -16,6 +16,12 @@ indexes: - name: family - name: appearances +- kind: Character + ancestor: no + properties: + - name: family + - name: appearances + - kind: Character ancestor: yes properties: diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 6af021a5210..bf663fc5694 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -21,6 +21,7 @@ import {Datastore, Index} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; import {AggregateField} from '../src/aggregate'; +import {PropertyFilter, EntityFilter, and, or} from '../src/filter'; describe('Datastore', () => { const testKinds: string[] = []; @@ -811,6 +812,110 @@ describe('Datastore', () => { const [entities] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 6); }); + describe('with the filter function using the Filter class', () => { + it('should run a query with one property filter', async () => { + const filter = new PropertyFilter('family', '=', 'Stark'); + const q = datastore + .createQuery('Character') + .filter(filter) + .hasAncestor(ancestor); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 8); + }); + it('should run a query with two property filters', async () => { + const q = datastore + .createQuery('Character') + .filter(new PropertyFilter('family', '=', 'Stark')) + .filter(new PropertyFilter('appearances', '>=', 20)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + }); + it('should run a query using new Filter class with filter', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter(new PropertyFilter('appearances', '>=', 20)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + for (const entity of entities) { + if (Array.isArray(entity.family)) { + assert.strictEqual(entity.family[0], 'Stark'); + } else { + assert.strictEqual(entity.family, 'Stark'); + } + assert(entity.appearances >= 20); + } + }); + it('should run a query using an AND composite filter', async () => { + const q = datastore + .createQuery('Character') + .filter( + and([ + new PropertyFilter('family', '=', 'Stark'), + new PropertyFilter('appearances', '>=', 20), + ]) + ); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + for (const entity of entities) { + if (Array.isArray(entity.family)) { + assert.strictEqual(entity.family[0], 'Stark'); + } else { + assert.strictEqual(entity.family, 'Stark'); + } + assert(entity.appearances >= 20); + } + }); + it('should run a query using an OR composite filter', async () => { + const q = datastore + .createQuery('Character') + .filter( + or([ + new PropertyFilter('family', '=', 'Stark'), + new PropertyFilter('appearances', '>=', 20), + ]) + ); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 8); + let atLeastOne = false; + for (const entity of entities) { + const familyHasStark = Array.isArray(entity.family) + ? entity.family[0] === 'Stark' + : entity.family === 'Stark'; + const hasEnoughAppearances = entity.appearances >= 20; + if (familyHasStark && !hasEnoughAppearances) { + atLeastOne = true; + } + } + assert(atLeastOne); + }); + describe('using hasAncestor and Filter class', () => { + const secondAncestor = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + ]); + it('should run a query using hasAncestor last', async () => { + const q = datastore + .createQuery('Character') + .filter(new PropertyFilter('appearances', '<', 30)) + .hasAncestor(secondAncestor); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); + it('should run a query using hasAncestor first', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(secondAncestor) + .filter(new PropertyFilter('appearances', '<', 30)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); + }); + }); describe('with a count filter', () => { it('should run a count aggregation', async () => { const q = datastore.createQuery('Character'); diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 53d9cd364b6..0557884b64a 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -19,6 +19,7 @@ import * as sinon from 'sinon'; import {Datastore} from '../src'; import {Entity} from '../src/entity'; import {IntegerTypeCastOptions} from '../src/query'; +import {PropertyFilter, EntityFilter, and} from '../src/filter'; export function outOfBoundsError(opts: { propertyName?: string; @@ -1891,6 +1892,55 @@ describe('entity', () => { assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); }); + it('should support the filter method with Filter objects', () => { + const ancestorKey = new entity.Key({ + path: ['Kind2', 'somename'], + }); + + const ds = new Datastore({projectId: 'project-id'}); + + const query = ds + .createQuery('Kind1') + .filter(new PropertyFilter('name', '=', 'John')) + .start('start') + .end('end') + .groupBy(['name']) + .order('name') + .select('name') + .limit(1) + .offset(1) + .hasAncestor(ancestorKey); + assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); + }); + + it('should support the filter method with AND', () => { + const ancestorKey = new entity.Key({ + path: ['Kind2', 'somename'], + }); + + const ds = new Datastore({projectId: 'project-id'}); + + const query = ds + .createQuery('Kind1') + .filter( + and([ + new PropertyFilter('name', '=', 'John'), + new PropertyFilter('__key__', 'HAS_ANCESTOR', ancestorKey), + ]) + ) + .start('start') + .end('end') + .groupBy(['name']) + .order('name') + .select('name') + .limit(1) + .offset(1); + const testFilters = queryProto.filter; + const computedFilters = + entity.queryToQueryProto(query).filter.compositeFilter.filters[0]; + assert.deepStrictEqual(computedFilters, testFilters); + }); + it('should handle buffer start and end values', () => { const ds = new Datastore({projectId: 'project-id'}); const startVal = Buffer.from('start'); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 1f539b24353..2836e596a90 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -19,6 +19,7 @@ const {Query} = require('../src/query'); // eslint-disable-next-line @typescript-eslint/no-var-requires import {Datastore} from '../src'; import {AggregateField, AggregateQuery} from '../src/aggregate'; +import {PropertyFilter, EntityFilter, or} from '../src/filter'; describe('Query', () => { const SCOPE = {} as Datastore; @@ -163,6 +164,40 @@ describe('Query', () => { assert.strictEqual(filter.op, '='); assert.strictEqual(filter.val, 'Stephen'); }); + }); + + describe('filter with Filter class', () => { + it('should support filter with Filter', () => { + const now = new Date(); + const query = new Query(['kind1']).filter( + new PropertyFilter('date', '<=', now) + ); + const filter = query.entityFilters[0]; + + assert.strictEqual(filter.name, 'date'); + assert.strictEqual(filter.op, '<='); + assert.strictEqual(filter.val, now); + }); + it('should support filter with OR', () => { + const now = new Date(); + const query = new Query(['kind1']).filter( + or([ + new PropertyFilter('date', '<=', now), + new PropertyFilter('name', '=', 'Stephen'), + ]) + ); + const filter = query.entityFilters[0]; + assert.strictEqual(filter.op, 'OR'); + // Check filters + const filters = filter.filters; + assert.strictEqual(filters.length, 2); + assert.strictEqual(filters[0].name, 'date'); + assert.strictEqual(filters[0].op, '<='); + assert.strictEqual(filters[0].val, now); + assert.strictEqual(filters[1].name, 'name'); + assert.strictEqual(filters[1].op, '='); + assert.strictEqual(filters[1].val, 'Stephen'); + }); it('should accept null as value', () => { assert.strictEqual( new Query(['kind1']).filter('status', null).filters.pop()?.val, From 3255a2bc81237d4fcf00315b4158ea45d7fb1b74 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Thu, 9 Mar 2023 11:24:32 -0500 Subject: [PATCH 712/820] fix: Or filters with warnings (#1075) * or filters interface * implementation of new filter * Remove duplicate code * Parse with type guard * Remove the newFilter variable * Add filter and enable chaining * test add filter * Add another unit test * Add system-test stubs * Add system-tests for the OR filter * Move things around * Added a unit test * Add a unit test for OR filters * Just use filter method * new warning test * Revert "new warning test" This reverts commit 37400a6d3a9d7385a0203db70949f037e4c35de4. * Now removes deprecation warning properly * Add a test for new warning * Add setAncestor Adds a new setAncestor method for ensuring only one ancestor is set for the query at a time. This will avoid errors that result because of setting multiple ancestors. Also deprecate hasAncestor because it will lead to warnings like this. Add parser logic to use the value provided in setAncestor for query sent to backend. * Basic unit tests for setAncestor Added tests for the query proto, one to make sure the query structure is right when setting ancestor once and one to make sure the query structure is right when setting ancestor twice. Also added a unit test to make sure that ancestor is set the right way internally when using setAncestor. * change expected result for OR query This code change adjusts the expected result for running an OR query. Old result used to correspond with AND, but now corresponds to OR. * Fix a test by not requiring the done callback A test is timing out because we are waiting for done to be called. This fix does not require done to be called. * Revert "Fix a test by not requiring the done callback" This reverts commit 1159b374f483d107736a765b5b4f1ade80116ce3. * Revert "Basic unit tests for setAncestor" This reverts commit 86841d6e0a3d26e2df647fa4a42ed849b61b38a6. * Revert "Add setAncestor" This reverts commit e84582faa6041429a4e81d47bd21dbc338a639e7. * Separate filters and new filters internally This commit is done to avoid a breaking typescript change which could have the potential to affect some users who read `filters` on a query as its type had been changed to be more flexible, but is now back to what it was. * Move AND/OR into their own separate function AND and OR should not be static functions of the filter class because then the user has to type Filter.AND instead of AND for example. * Eliminate unused imports Artifacts of having imports laying around and moving functionality between files * Revert "Add a test for new warning" This reverts commit bc15f325d87b4ffe46ae8727293c5cefa2300501. * Revert "Now removes deprecation warning properly" This reverts commit db02a5089242b25b4bebae4304a4778f0bf6d17f. * Revert "Revert "Now removes deprecation warning properly"" This reverts commit 8e96bf5e5ef11593853ae061fd1858c2e463d6ce. * Revert "Revert "Add a test for new warning"" This reverts commit 1ddeea6a75d01ad3c24e46d85e31eca73235790a. * Change the warning message to include examples Change the warning message to include examples as per the nit mentioned in the PR. --- handwritten/nodejs-datastore/src/query.ts | 3 +++ handwritten/nodejs-datastore/test/entity.ts | 6 ++++-- handwritten/nodejs-datastore/test/query.ts | 13 ++++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 153a3941405..562178c5545 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -218,6 +218,9 @@ class Query { this.entityFilters.push(propertyOrFilter); return this; } else { + process.emitWarning( + 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' + ); let operator = operatorOrValue as Operator; if (arguments.length === 2) { value = operatorOrValue as {}; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 0557884b64a..ca5bcca0bbb 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -770,10 +770,12 @@ describe('entity', () => { "' property is outside of bounds of a JavaScript Number.\n" + "Use 'Datastore.int()' to preserve accuracy during the upload."; - process.on('warning', warning => { + const onWarning = (warning: {message: unknown}) => { assert.strictEqual(warning.message, expectedWarning); + process.removeListener('warning', onWarning); done(); - }); + }; + process.on('warning', onWarning); entity.encodeValue(largeIntValue, property); }); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 2836e596a90..aae51442dd7 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -165,7 +165,18 @@ describe('Query', () => { assert.strictEqual(filter.val, 'Stephen'); }); }); - + it('should issue a warning when a Filter instance is not provided', done => { + const onWarning = (warning: {message: unknown}) => { + assert.strictEqual( + warning.message, + 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' + ); + process.removeListener('warning', onWarning); + done(); + }; + process.on('warning', onWarning); + new Query(['kind1']).filter('name', 'Stephen'); + }); describe('filter with Filter class', () => { it('should support filter with Filter', () => { const now = new Date(); From c592c70e05d377328b39c578ddeb6ef241975126 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:53:30 -0500 Subject: [PATCH 713/820] chore(main): release 7.4.0 (#1077) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 37b49971bc5..65778fa8c3d 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.4.0](https://github.com/googleapis/nodejs-datastore/compare/v7.3.2...v7.4.0) (2023-03-09) + + +### Features + +* Introduce EntityFilter class with support for and/or filters ([#1061](https://github.com/googleapis/nodejs-datastore/issues/1061)) ([8fc58c0](https://github.com/googleapis/nodejs-datastore/commit/8fc58c0f18e5333f996099e09ec673e9bf3460af)) + + +### Bug Fixes + +* Or filters with warnings ([#1075](https://github.com/googleapis/nodejs-datastore/issues/1075)) ([73bfcc4](https://github.com/googleapis/nodejs-datastore/commit/73bfcc40129309b512627f873d9f841f7ad370ee)) + ## [7.3.2](https://github.com/googleapis/nodejs-datastore/compare/v7.3.1...v7.3.2) (2023-02-17) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 14f5aa4a4f0..8bbd9f480e9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.3.2", + "version": "7.4.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 30a21f5c53d..d12b9c2abdf 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.3.2", + "@google-cloud/datastore": "^7.4.0", "sinon": "^15.0.0" }, "devDependencies": { From d411fa688e607d80a8e627aa48c6f01dbcb7bddc Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:47:13 -0400 Subject: [PATCH 714/820] feat: Add SUM/AVG aggregation query support in the preview branch and improve query API documentation (#1094) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Add SUM/AVG aggregation query support in the preview branch and improve query API documentation PiperOrigin-RevId: 518940761 Source-Link: https://github.com/googleapis/googleapis/commit/b1efb3270a3639831c35ccd7552c2bced807279c Source-Link: https://github.com/googleapis/googleapis-gen/commit/f7c205414a5c6579438b5806d3dc5f20d09ef83c Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjdjMjA1NDE0YTVjNjU3OTQzOGI1ODA2ZDNkYzVmMjBkMDllZjgzYyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../google/datastore/v1/aggregation_result.proto | 2 +- .../protos/google/datastore/v1/datastore.proto | 2 +- .../protos/google/datastore/v1/entity.proto | 6 +++--- .../protos/google/datastore/v1/query.proto | 15 ++++++++++----- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto index bbb5989e58c..91c521716e8 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 2f9c7142771..4822048b619 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index ddf22e0322a..2d22853f5ca 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -213,7 +213,7 @@ message Entity { // The map's keys are property names. // A property name matching regex `__.*__` is reserved. // A reserved property name is forbidden in certain documented contexts. - // The name must not contain more than 500 characters. - // The name cannot be `""`. + // The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot + // be empty. map properties = 3; } diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 169af880185..812bfbf0578 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -99,6 +99,11 @@ message Query { // The properties to make distinct. The query results will contain the first // result for each distinct combination of values for the given properties // (if empty, all results are returned). + // + // Requires: + // + // * If `order` is specified, the set of distinct on properties must appear + // before the non-distinct on properties in `order`. repeated PropertyReference distinct_on = 6; // A starting point for the query results. Query cursors are @@ -127,7 +132,7 @@ message Query { // Datastore query for running an aggregation over a // [Query][google.datastore.v1.Query]. message AggregationQuery { - // Defines a aggregation that produces a single result. + // Defines an aggregation that produces a single result. message Aggregation { // Count of entities that match the query. // @@ -138,7 +143,7 @@ message AggregationQuery { // count. // // This provides a way to set an upper bound on the number of entities - // to scan, limiting latency and cost. + // to scan, limiting latency, and cost. // // Unspecified is interpreted as no bound. // @@ -175,7 +180,7 @@ message AggregationQuery { // COUNT_UP_TO(1) AS count_up_to_1, // COUNT_UP_TO(2), // COUNT_UP_TO(3) AS count_up_to_3, - // COUNT_UP_TO(4) + // COUNT(*) // OVER ( // ... // ); @@ -188,7 +193,7 @@ message AggregationQuery { // COUNT_UP_TO(1) AS count_up_to_1, // COUNT_UP_TO(2) AS property_1, // COUNT_UP_TO(3) AS count_up_to_3, - // COUNT_UP_TO(4) AS property_2 + // COUNT(*) AS property_2 // OVER ( // ... // ); From 4d7eb41a985671f414156e32077ba4850f74ac67 Mon Sep 17 00:00:00 2001 From: Eric Schmidt Date: Mon, 27 Mar 2023 12:22:38 -0700 Subject: [PATCH 715/820] docs: adds OR sample (#1092) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: adds OR sample * fixed tests * per linter * exclude IDE stuff * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * remove unneeded stuff * git is hard * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/.gitignore | 1 + handwritten/nodejs-datastore/README.md | 1 + .../nodejs-datastore/samples/README.md | 20 +++++ .../nodejs-datastore/samples/queryFilterOr.js | 53 ++++++++++++++ .../samples/test/queryFilterOr.test.js | 73 +++++++++++++++++++ handwritten/nodejs-datastore/src/index.ts | 3 +- 6 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 handwritten/nodejs-datastore/samples/queryFilterOr.js create mode 100644 handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index d4f03a0df2e..14050d4e43b 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -12,3 +12,4 @@ system-test/*key.json .DS_Store package-lock.json __pycache__ +.vscode \ No newline at end of file diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index b4b902f00a8..3a56bcec80a 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -108,6 +108,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/t | Import | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/import.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/import.js,samples/README.md) | | Indexes.get | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.get.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) | | Indexes.list | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) | +| Create a union between two filters | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryFilterOr.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryFilterOr.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 2ad623c6d9f..028aff5fcfa 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -18,6 +18,7 @@ * [Import](#import) * [Indexes.get](#indexes.get) * [Indexes.list](#indexes.list) + * [Create a union between two filters](#create-a-union-between-two-filters) * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) @@ -142,6 +143,25 @@ __Usage:__ +### Create a union between two filters + +Create a union between two filters (logical OR operator) + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryFilterOr.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryFilterOr.js,samples/README.md) + +__Usage:__ + + +`node samples/queryFilterOr.js` + + +----- + + + + ### Quickstart View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js). diff --git a/handwritten/nodejs-datastore/samples/queryFilterOr.js b/handwritten/nodejs-datastore/samples/queryFilterOr.js new file mode 100644 index 00000000000..cc8343d2ff6 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/queryFilterOr.js @@ -0,0 +1,53 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata: +// title: Create a union between two filters +// description: Create a union between two filters (logical OR operator) + +async function main() { + // [START datastore_query_filter_or] + /** + * TODO(developer): Uncomment these variables before running the sample. + */ + // const projectId = "your Google Cloud project id"; + + // Imports the Cloud Datastore + const {Datastore, PropertyFilter, or} = require('@google-cloud/datastore'); + + async function queryFilterOr() { + // Instantiate the Datastore + const datastore = new Datastore(); + const query = datastore + .createQuery('Task') + .filter( + or([ + new PropertyFilter('description', '=', 'Buy milk'), + new PropertyFilter('description', '=', 'Feed cats'), + ]) + ); + + const [entities] = await datastore.runQuery(query); + for (const entity of entities) { + console.log(`Entity found: ${entity['description']}`); + } + } + + await queryFilterOr(); + // [END datastore_query_filter_or] +} + +exports.queryFilterOr = main; diff --git a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js new file mode 100644 index 00000000000..952760a2bce --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js @@ -0,0 +1,73 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* eslint-disable */ + +'use strict'; + +const path = require('path'); +const {assert} = require('chai'); +const {describe, it, after, before} = require('mocha'); +const sinon = require('sinon'); +const {Datastore} = require('@google-cloud/datastore'); +const datastore = new Datastore(); + +const {queryFilterOr} = require('../queryFilterOr'); +let taskKey1, taskKey2; + +describe('Creating a union query', () => { + const stubConsole = function () { + sinon.stub(console, 'error'); + sinon.stub(console, 'log'); + }; + + const restoreConsole = function () { + console.log.restore(); + console.error.restore(); + }; + + beforeEach(stubConsole); + afterEach(restoreConsole); + + before(async () => { + taskKey1 = datastore.key('Task'); + const entity1 = { + key: taskKey1, + data: { + description: 'Buy milk', + }, + }; + + taskKey2 = datastore.key('Task'); + const entity2 = { + key: taskKey2, + data: { + description: 'Feed cats', + }, + }; + + await datastore.upsert(entity1); + await datastore.upsert(entity2); + }); + + after(async () => { + await datastore.delete(taskKey1); + await datastore.delete(taskKey2); + }); + + it('should get a combination of items from the Datastore', async () => { + await queryFilterOr(); + assert.include(console.log.firstCall.args[0], 'Entity'); + }); +}); diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 2acd8a85caf..23f8a699f67 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -42,7 +42,8 @@ import {Transform, pipeline} from 'stream'; import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; import Key = entity.Key; export {Entity, Key}; - +import {PropertyFilter, and, or} from './filter'; +export {PropertyFilter, and, or}; import { GetIndexesCallback, GetIndexesOptions, From 302c82b141b2629735fe1d0f3bd1f5dfb8cea2ca Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 29 Mar 2023 17:33:35 -0400 Subject: [PATCH 716/820] fix: allow IN queries on __key__ (#1085) This change removes special handling encoding property filters when the property provided is `__key__`. In this special case, changes are made to signatures to cause typescript compilation errors when values associated with the `__key__` property are not keys or arrays of keys. This is because we only expect and support such values when `__key__` is provided in place of property so it is better if the user understands which values are supported at compile time. Special care with extra tests was taken to ensure that when removing this logic, tests for all supported use cases were still passing and every new use case worked as intended. Changes to make code more idiomatic were also introduced. --- handwritten/nodejs-datastore/src/filter.ts | 44 +++++-------- handwritten/nodejs-datastore/src/query.ts | 24 ++++--- .../nodejs-datastore/system-test/datastore.ts | 34 ++++++++++ handwritten/nodejs-datastore/test/entity.ts | 62 +++++++++++++++++-- 4 files changed, 124 insertions(+), 40 deletions(-) diff --git a/handwritten/nodejs-datastore/src/filter.ts b/handwritten/nodejs-datastore/src/filter.ts index 5897707e5bf..cb0518414c0 100644 --- a/handwritten/nodejs-datastore/src/filter.ts +++ b/handwritten/nodejs-datastore/src/filter.ts @@ -14,6 +14,7 @@ import {Operator, Filter as IFilter} from './query'; import {entity} from './entity'; +import Key = entity.Key; const OP_TO_OPERATOR = new Map([ ['=', 'EQUAL'], @@ -56,6 +57,10 @@ export abstract class EntityFilter { abstract toProto(): any; } +export type AllowedFilterValueType = T extends '__key__' + ? Key | Key[] + : unknown; + /** * A PropertyFilter is a filter that gets applied to a query directly. * @@ -63,12 +68,10 @@ export abstract class EntityFilter { * * @class */ -export class PropertyFilter extends EntityFilter implements IFilter { - name: string; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - val: any; - op: Operator; - +export class PropertyFilter + extends EntityFilter + implements IFilter +{ /** * Build a Property Filter object. * @@ -76,22 +79,12 @@ export class PropertyFilter extends EntityFilter implements IFilter { * @param {Operator} operator * @param {any} val */ - constructor(property: string, operator: Operator, val: any) { + constructor( + public name: T, + public op: Operator, + public val: AllowedFilterValueType + ) { super(); - this.name = property; - this.op = operator; - this.val = val; - } - - private encodedValue(): any { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let value: any = {}; - if (this.name === '__key__') { - value.keyValue = entity.keyToKeyProto(this.val); - } else { - value = entity.encodeValue(this.val, this.name); - } - return value; } /** @@ -100,18 +93,13 @@ export class PropertyFilter extends EntityFilter implements IFilter { */ // eslint-disable-next-line toProto(): any { - const value = new PropertyFilter( - this.name, - this.op, - this.val - ).encodedValue(); return { propertyFilter: { property: { name: this.name, }, op: OP_TO_OPERATOR.get(this.op), - value, + value: entity.encodeValue(this.val, this.name), }, }; } @@ -156,5 +144,5 @@ class CompositeFilter extends EntityFilter { } export function isFilter(filter: any): filter is EntityFilter { - return (filter as EntityFilter).toProto !== undefined; + return filter instanceof EntityFilter; } diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 562178c5545..a055c69ee90 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -18,7 +18,7 @@ import arrify = require('arrify'); import {Key} from 'readline'; import {Datastore} from '.'; import {Entity} from './entity'; -import {EntityFilter, isFilter} from './filter'; +import {EntityFilter, isFilter, AllowedFilterValueType} from './filter'; import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; @@ -207,12 +207,20 @@ class Query { * const keyQuery = query.filter('__key__', key); * ``` */ - filter(propertyOrFilter: string | EntityFilter, value?: {} | null): Query; - filter(propertyOrFilter: string, operator: Operator, value: {} | null): Query; - filter( - propertyOrFilter: string | EntityFilter, - operatorOrValue?: Operator, - value?: {} | null + filter(filter: EntityFilter): Query; + filter( + property: T, + value: AllowedFilterValueType + ): Query; + filter( + property: T, + operator: Operator, + value: AllowedFilterValueType + ): Query; + filter( + propertyOrFilter: T | EntityFilter, + operatorOrValue?: Operator | AllowedFilterValueType, + value?: AllowedFilterValueType ): Query { if (isFilter(propertyOrFilter)) { this.entityFilters.push(propertyOrFilter); @@ -223,7 +231,7 @@ class Query { ); let operator = operatorOrValue as Operator; if (arguments.length === 2) { - value = operatorOrValue as {}; + value = operatorOrValue as AllowedFilterValueType; operator = '='; } diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index bf663fc5694..7647f4badf2 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -22,6 +22,8 @@ import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; import {AggregateField} from '../src/aggregate'; import {PropertyFilter, EntityFilter, and, or} from '../src/filter'; +import {entity} from '../src/entity'; +import KEY_SYMBOL = entity.KEY_SYMBOL; describe('Datastore', () => { const testKinds: string[] = []; @@ -794,6 +796,38 @@ describe('Datastore', () => { assert.strictEqual(entities!.length, 3); }); + it('should filter queries with __key__ and IN', async () => { + const key1 = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); + const key2 = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + 'Character', + 'Sansa', + ]); + const key3 = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + ]); + const value = [key1, key2, key3]; + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('__key__', 'IN', value); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + assert.deepStrictEqual(entities[0][KEY_SYMBOL], key1); + assert.deepStrictEqual(entities[1][KEY_SYMBOL], key3); + assert.deepStrictEqual(entities[2][KEY_SYMBOL], key2); + }); + it('should filter queries with NOT_IN', async () => { const q = datastore .createQuery('Character') diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index ca5bcca0bbb..67e63e5aa0f 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -17,7 +17,7 @@ import {beforeEach, afterEach, describe, it} from 'mocha'; import * as extend from 'extend'; import * as sinon from 'sinon'; import {Datastore} from '../src'; -import {Entity} from '../src/entity'; +import {Entity, entity as globalEntity} from '../src/entity'; import {IntegerTypeCastOptions} from '../src/query'; import {PropertyFilter, EntityFilter, and} from '../src/filter'; @@ -1873,7 +1873,7 @@ describe('entity', () => { }; it('should support all configurations of a query', () => { - const ancestorKey = new entity.Key({ + const ancestorKey = new globalEntity.Key({ path: ['Kind2', 'somename'], }); @@ -1894,8 +1894,62 @@ describe('entity', () => { assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); }); + it('should support using __key__ with array as value', () => { + const keyWithInQuery = { + distinctOn: [], + filter: { + compositeFilter: { + filters: [ + { + propertyFilter: { + op: 'IN', + property: { + name: '__key__', + }, + value: { + arrayValue: { + values: [ + { + keyValue: { + path: [ + { + kind: 'Kind1', + name: 'key1', + }, + ], + }, + }, + ], + }, + }, + }, + }, + ], + op: 'AND', + }, + }, + kind: [ + { + name: 'Kind1', + }, + ], + order: [], + projection: [], + }; + + const ds = new Datastore({projectId: 'project-id'}); + + const query = ds + .createQuery('Kind1') + .filter('__key__', 'IN', [ + new globalEntity.Key({path: ['Kind1', 'key1']}), + ]); + + assert.deepStrictEqual(entity.queryToQueryProto(query), keyWithInQuery); + }); + it('should support the filter method with Filter objects', () => { - const ancestorKey = new entity.Key({ + const ancestorKey = new globalEntity.Key({ path: ['Kind2', 'somename'], }); @@ -1916,7 +1970,7 @@ describe('entity', () => { }); it('should support the filter method with AND', () => { - const ancestorKey = new entity.Key({ + const ancestorKey = new globalEntity.Key({ path: ['Kind2', 'somename'], }); From a1c952ab2ad7912a89a815223a5341dbea3ef90e Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:09:55 -0400 Subject: [PATCH 717/820] chore(main): release 7.5.0 (#1095) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 65778fa8c3d..dccc5e2d53a 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.5.0](https://github.com/googleapis/nodejs-datastore/compare/v7.4.0...v7.5.0) (2023-03-29) + + +### Features + +* Add SUM/AVG aggregation query support in the preview branch and improve query API documentation ([#1094](https://github.com/googleapis/nodejs-datastore/issues/1094)) ([d14f87e](https://github.com/googleapis/nodejs-datastore/commit/d14f87ed4aaef42090673fbe78b23992093925ad)) + + +### Bug Fixes + +* Allow IN queries on __key__ ([#1085](https://github.com/googleapis/nodejs-datastore/issues/1085)) ([dd2d5f4](https://github.com/googleapis/nodejs-datastore/commit/dd2d5f4d15f714b3f3586250802fb6822b7e01ff)) + ## [7.4.0](https://github.com/googleapis/nodejs-datastore/compare/v7.3.2...v7.4.0) (2023-03-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8bbd9f480e9..d1249a22f7c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.4.0", + "version": "7.5.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d12b9c2abdf..3b04502384e 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.4.0", + "@google-cloud/datastore": "^7.5.0", "sinon": "^15.0.0" }, "devDependencies": { From 43d8f6b06ac27c093ff2d61b42b3f154dfd217b6 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 5 Apr 2023 10:42:44 -0400 Subject: [PATCH 718/820] test: Remove mock so that future tests will not be affected by the mock (#1099) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Ensure the mock isn’t permanent for other cases Reassign this mock back to what it was because future tests will rely on this being the proper value. * Add async to verify the change works Async will run all the tests twice failing if the prior change was not implemented. * Revert "Add async to verify the change works" This reverts commit 57855a32bc9ca0ac19cd310d593869801a9a7fd3. * Adjust the comment slightly Adjust the comment slightly to address the fact that we are changing the mocked function back to the way it was. * Refactor the mock out into a constant The mock should be a constant instead of repeating a code fragment that must be the same. * Surround with try/finally We can use try/finally so that even if the test fails the mock gets reset. * Revert "Surround with try/finally" This reverts commit 73bea28cd0d9998e1b670fe09f5ea896c39d72b1. * Have a fake entity init state Have a fake entity init state and then before each test initialize the fakeEntity from the fakeEntityInit state. * Remove resetting the mock in individual tests Now that we initialize the fake entity at the beginning of every single test, we do not need to reset the mock in that one test anymore. * Eliminate unused variable Variable is not used anymore so should be eliminated from the code change. --- handwritten/nodejs-datastore/test/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 06cbe9849f2..802d795f925 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -30,7 +30,7 @@ import * as extend from 'extend'; const v1 = require('../src/v1/index.js'); // eslint-disable-next-line @typescript-eslint/no-explicit-any -const fakeEntity: any = { +const fakeEntityInit: any = { KEY_SYMBOL: Symbol('fake key symbol'), Int: class { value: {}; @@ -82,6 +82,8 @@ const fakeEntity: any = { URLSafeKey: entity.URLSafeKey, }; +const fakeEntity: any = {}; + let googleAuthOverride: Function | null; function fakeGoogleAuth(...args: Array<{}>) { return (googleAuthOverride || (() => {}))(...args); @@ -157,6 +159,7 @@ describe('Datastore', () => { }; before(() => { + Object.assign(fakeEntity, fakeEntityInit); Datastore = proxyquire('../src', { './entity.js': {entity: fakeEntity}, './index-class.js': {Index: FakeIndex}, @@ -171,6 +174,8 @@ describe('Datastore', () => { }); beforeEach(() => { + Object.assign(fakeEntity, fakeEntityInit); + createInsecureOverride = null; googleAuthOverride = null; From dd22dd84b17773e3ccd59c3a5c9c5996cb916f5d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:56:22 -0400 Subject: [PATCH 719/820] chore: update import paths for Go targets to match open source location (#1100) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update import paths for Go targets to match open source location chore: update go_package in protos to match open source location chore: add explicit release levels to Go gapic targets PiperOrigin-RevId: 520705454 Source-Link: https://github.com/googleapis/googleapis/commit/1cfcea4fbef317c44cc13d73017a0b0462c4737d Source-Link: https://github.com/googleapis/googleapis-gen/commit/15732ab75211b0255433d6f87415e8a3ce466826 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMTU3MzJhYjc1MjExYjAyNTU0MzNkNmY4NzQxNWU4YTNjZTQ2NjgyNiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/.gitignore | 1 - .../protos/google/datastore/admin/v1/datastore_admin.proto | 2 +- .../protos/google/datastore/admin/v1/index.proto | 2 +- .../protos/google/datastore/admin/v1/migration.proto | 2 +- handwritten/nodejs-datastore/protos/protos.json | 2 +- 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/handwritten/nodejs-datastore/.gitignore b/handwritten/nodejs-datastore/.gitignore index 14050d4e43b..d4f03a0df2e 100644 --- a/handwritten/nodejs-datastore/.gitignore +++ b/handwritten/nodejs-datastore/.gitignore @@ -12,4 +12,3 @@ system-test/*key.json .DS_Store package-lock.json __pycache__ -.vscode \ No newline at end of file diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index 0d624956e33..744d97df7e6 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -25,7 +25,7 @@ import "google/longrunning/operations.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option go_package = "cloud.google.com/go/datastore/admin/apiv1/adminpb;adminpb"; option java_multiple_files = true; option java_outer_classname = "DatastoreAdminProto"; option java_package = "com.google.datastore.admin.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto index 0162af52384..4eeffc7e412 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -19,7 +19,7 @@ package google.datastore.admin.v1; import "google/api/field_behavior.proto"; option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option go_package = "cloud.google.com/go/datastore/admin/apiv1/adminpb;adminpb"; option java_multiple_files = true; option java_outer_classname = "IndexProto"; option java_package = "com.google.datastore.admin.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto index dbbe473c904..f47cb70e1ad 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto @@ -17,7 +17,7 @@ syntax = "proto3"; package google.datastore.admin.v1; option csharp_namespace = "Google.Cloud.Datastore.Admin.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/admin/v1;admin"; +option go_package = "cloud.google.com/go/datastore/admin/apiv1/adminpb;adminpb"; option java_multiple_files = true; option java_outer_classname = "MigrationProto"; option java_package = "com.google.datastore.admin.v1"; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 836d3ec9022..a9afc7b85d7 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -9,7 +9,7 @@ "v1": { "options": { "csharp_namespace": "Google.Cloud.Datastore.Admin.V1", - "go_package": "google.golang.org/genproto/googleapis/datastore/admin/v1;admin", + "go_package": "cloud.google.com/go/datastore/admin/apiv1/adminpb;adminpb", "java_multiple_files": true, "java_outer_classname": "MigrationProto", "java_package": "com.google.datastore.admin.v1", From 4f5bad501341027abfa5423eb9bfc511c3fafbdb Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Tue, 11 Apr 2023 10:51:57 -0400 Subject: [PATCH 720/820] fix: Allow user to set custom endpoints (#1101) * Write a test for custom endpoints With the code in its present state, this test should fail. A fix for regional endpoints intends to clean this up. * Limit setting credentials to insecure Only set the credentials to insecure if the custom endpoint is localhost and credentials are not provided. This way the user can set custom endpoints with the client and the request will work. * Change the tests for custom endpoints There is a test that uses a mock which is preventing the base url from being set. The test should be more realistic and when it is, the test passes with the new change. * Add another localhost option There is a third way the user can specify localhost. We should include this way as an option. --- handwritten/nodejs-datastore/src/index.ts | 9 +++++++-- .../nodejs-datastore/system-test/datastore.ts | 12 ++++++++++++ handwritten/nodejs-datastore/test/index.ts | 11 ++--------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 23f8a699f67..b48b97ecb4f 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -504,8 +504,13 @@ class Datastore extends DatastoreRequest { }, options ); - if (this.customEndpoint_) { - this.options.sslCreds = grpc.credentials.createInsecure(); + const isUsingEmulator = + this.baseUrl_ && + (this.baseUrl_.includes('localhost') || + this.baseUrl_.includes('127.0.0.1') || + this.baseUrl_.includes('::1')); + if (this.customEndpoint_ && isUsingEmulator) { + this.options.sslCreds ??= grpc.credentials.createInsecure(); } this.auth = new GoogleAuth(this.options); diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 7647f4badf2..1fceb019991 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1360,4 +1360,16 @@ describe('Datastore', () => { await importOperation.cancel(); }); }); + + describe('using a custom endpoint', () => { + it('should complete a request when using the default endpoint as a custom endpoint', async () => { + const customDatastore = new Datastore({ + namespace: `${Date.now()}`, + apiEndpoint: 'datastore.googleapis.com', + }); + const query = customDatastore.createQuery('Kind').select('__key__'); + const [entities] = await customDatastore.runQuery(query); + assert.strictEqual(entities.length, 0); + }); + }); }); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 802d795f925..23e61148de0 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -151,7 +151,7 @@ describe('Datastore', () => { const OPTIONS = { projectId: PROJECT_ID, - apiEndpoint: 'http://endpoint', + apiEndpoint: 'http://localhost', credentials: {}, keyFilename: 'key/file', email: 'email', @@ -289,14 +289,7 @@ describe('Datastore', () => { assert.strictEqual((datastore.options as any).port, port); }); - it('should set grpc ssl credentials if custom endpoint', () => { - const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - - Datastore.prototype.determineBaseUrl_ = function () { - Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; - this.customEndpoint_ = true; - }; - + it('should set grpc ssl credentials if localhost custom endpoint', () => { const fakeInsecureCreds = {}; createInsecureOverride = () => { return fakeInsecureCreds; From 8885cc3b43f018b89320eca05599ecf00445166a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 12 Apr 2023 16:42:53 -0400 Subject: [PATCH 721/820] chore(main): release 7.5.1 (#1102) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index dccc5e2d53a..ac581af769d 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [7.5.1](https://github.com/googleapis/nodejs-datastore/compare/v7.5.0...v7.5.1) (2023-04-11) + + +### Bug Fixes + +* Allow user to set custom endpoints ([#1101](https://github.com/googleapis/nodejs-datastore/issues/1101)) ([e79fa49](https://github.com/googleapis/nodejs-datastore/commit/e79fa49f753984e34b63538005f29ab7efb7695e)) + ## [7.5.0](https://github.com/googleapis/nodejs-datastore/compare/v7.4.0...v7.5.0) (2023-03-29) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d1249a22f7c..fe0c33e83d9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.5.0", + "version": "7.5.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 3b04502384e..43947e20797 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.5.0", + "@google-cloud/datastore": "^7.5.1", "sinon": "^15.0.0" }, "devDependencies": { From 5db8cb216c4f561c97cee9919017e8a6221ab1f1 Mon Sep 17 00:00:00 2001 From: "Bob \"Wombat\" Hogg" Date: Thu, 13 Apr 2023 21:15:25 -0400 Subject: [PATCH 722/820] docs(entity): Fix typo in Int class documentation (#1017) Co-authored-by: meredithslota --- handwritten/nodejs-datastore/src/entity.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 2023d511dfa..3d43406a9b6 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -118,7 +118,7 @@ export namespace entity { * `integerTypeCastFunction` to handle `integerValue` conversion. * @param {function} typeCastOptions.integerTypeCastFunction A custom user * provided function to convert `integerValue`. - * @param {sting|string[]} [typeCastOptions.properties] `Entity` property + * @param {string|string[]} [typeCastOptions.properties] `Entity` property * names to be converted using `integerTypeCastFunction`. * * @example From 491d1d2e7dad044636a5c9966080ec111757af32 Mon Sep 17 00:00:00 2001 From: "Bob \"Wombat\" Hogg" Date: Thu, 13 Apr 2023 21:25:41 -0400 Subject: [PATCH 723/820] docs: Fix typo in Creating Records example (#1018) Co-authored-by: danieljbruce Co-authored-by: meredithslota --- handwritten/nodejs-datastore/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index b48b97ecb4f..16de85651ab 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -290,7 +290,7 @@ const urlSafeKey = new entity.URLSafeKey(); * @example Creating Records * ``` * // New entities can be created and persisted with {@link Datastore#save}. - * // The entitiy must have a key to be saved. If you don't specify an + * // The entity must have a key to be saved. If you don't specify an * // identifier for the key, one is generated for you. * // * // We will create a key with a `name` identifier, "Google". From b014eb53b002b5a128562d6513127497fea4ee51 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 10:24:14 -0400 Subject: [PATCH 724/820] docs: minor comment update for Entity message (#1105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: minor comment update for Entity message PiperOrigin-RevId: 528936266 Source-Link: https://github.com/googleapis/googleapis/commit/4f9e1a058e186df999eb85d7abec8fb092b7a145 Source-Link: https://github.com/googleapis/googleapis-gen/commit/14fce92515a1ae05b89ce2b28d9bc57ec12dcba6 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMTRmY2U5MjUxNWExYWUwNWI4OWNlMmIyOGQ5YmM1N2VjMTJkY2JhNiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../nodejs-datastore/protos/google/datastore/v1/entity.proto | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index 2d22853f5ca..d80dd9093df 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -197,9 +197,7 @@ message Value { // A Datastore data object. // -// An entity is limited to 1 megabyte when stored. That _roughly_ -// corresponds to a limit of 1 megabyte for the serialized form of this -// message. +// Must not exceed 1 MiB - 4 bytes. message Entity { // The entity's key. // From ba5651d0b6e5574b11efbcfc278e91b1d43478f0 Mon Sep 17 00:00:00 2001 From: kolea2 <45548808+kolea2@users.noreply.github.com> Date: Wed, 3 May 2023 15:58:43 -0400 Subject: [PATCH 725/820] chore: update CODEOWNERS (#1066) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update CODEOWNERS * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/.repo-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json index 9fa14cf0f10..8fa3d3064b3 100644 --- a/handwritten/nodejs-datastore/.repo-metadata.json +++ b/handwritten/nodejs-datastore/.repo-metadata.json @@ -9,7 +9,7 @@ "repo": "googleapis/nodejs-datastore", "distribution_name": "@google-cloud/datastore", "api_id": "datastore.googleapis.com", - "codeowner_team": "@googleapis/cloud-native-db-dpes", + "codeowner_team": "@googleapis/cloud-native-db-dpes @googleapis/api-datastore-sdk", "api_shortname": "datastore", "library_type": "GAPIC_COMBO" } From e427eb833fccfc0749f3971880ec32aa3a2f2d7a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 26 May 2023 16:14:16 +0200 Subject: [PATCH 726/820] chore(deps): update dependency @types/is to v0.0.22 (#1113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.21` -> `0.0.22`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.21/0.0.22) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fis/0.0.22/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fis/0.0.22/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fis/0.0.22/compatibility-slim/0.0.21)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fis/0.0.22/confidence-slim/0.0.21)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fe0c33e83d9..370e4562d0b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@google-cloud/storage": "^6.0.0", "@types/extend": "^3.0.1", - "@types/is": "0.0.21", + "@types/is": "0.0.22", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", "@types/node": "^18.0.0", From d0f381e0eecd820c2e2f25ca8b95b0bd873992e8 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 31 May 2023 13:57:09 -0400 Subject: [PATCH 727/820] test: rename two variables (#1107) * rename two variables In this PR we rename two variables to entity and testEntity in the test so that their purpose is more clear. * run npm run fix Run the linter so that the spacing is correct --- handwritten/nodejs-datastore/test/entity.ts | 425 +++++++++++--------- 1 file changed, 232 insertions(+), 193 deletions(-) diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 67e63e5aa0f..475ceabe853 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -17,7 +17,7 @@ import {beforeEach, afterEach, describe, it} from 'mocha'; import * as extend from 'extend'; import * as sinon from 'sinon'; import {Datastore} from '../src'; -import {Entity, entity as globalEntity} from '../src/entity'; +import {Entity, entity} from '../src/entity'; import {IntegerTypeCastOptions} from '../src/query'; import {PropertyFilter, EntityFilter, and} from '../src/filter'; @@ -41,16 +41,16 @@ export function outOfBoundsError(opts: { } describe('entity', () => { - let entity: Entity; + let testEntity: Entity; beforeEach(() => { delete require.cache[require.resolve('../src/entity.js')]; - entity = require('../src/entity.js').entity; + testEntity = require('../src/entity.js').entity; }); describe('KEY_SYMBOL', () => { it('should export the symbol', () => { - assert.strictEqual(entity.KEY_SYMBOL.toString(), 'Symbol(KEY)'); + assert.strictEqual(testEntity.KEY_SYMBOL.toString(), 'Symbol(KEY)'); }); }); @@ -58,38 +58,38 @@ describe('entity', () => { it('should store the value', () => { const value = 8.3; - const double = new entity.Double(value); + const double = new testEntity.Double(value); assert.strictEqual(double.value, value); }); }); describe('isDsDouble', () => { it('should correctly identify a Double', () => { - const double = new entity.Double(0.42); - assert.strictEqual(entity.isDsDouble(double), true); + const double = new testEntity.Double(0.42); + assert.strictEqual(testEntity.isDsDouble(double), true); }); it('should correctly identify a homomorphic non-Double', () => { - const nonDouble = Object.assign({}, new entity.Double(42)); - assert.strictEqual(entity.isDsDouble(nonDouble), false); + const nonDouble = Object.assign({}, new testEntity.Double(42)); + assert.strictEqual(testEntity.isDsDouble(nonDouble), false); }); it('should correctly identify a primitive', () => { const primitiveDouble = 0.42; - assert.strictEqual(entity.isDsDouble(primitiveDouble), false); + assert.strictEqual(testEntity.isDsDouble(primitiveDouble), false); }); }); describe('isDsDoubleLike', () => { it('should correctly identify a Double', () => { - const double = new entity.Double(0.42); - assert.strictEqual(entity.isDsDoubleLike(double), true); + const double = new testEntity.Double(0.42); + assert.strictEqual(testEntity.isDsDoubleLike(double), true); }); it('should correctly identify a POJO Double', () => { - const double = new entity.Double(0.42); + const double = new testEntity.Double(0.42); const pojoDouble = JSON.parse(JSON.stringify(double)); - assert.strictEqual(entity.isDsDoubleLike(pojoDouble), true); + assert.strictEqual(testEntity.isDsDoubleLike(pojoDouble), true); }); }); @@ -97,7 +97,7 @@ describe('entity', () => { it('should store the stringified value', () => { const value = 8; - const int = new entity.Int(value); + const int = new testEntity.Int(value); assert.strictEqual(int.value, value.toString()); }); @@ -106,7 +106,7 @@ describe('entity', () => { valueType: 'integerValue', integerValue: 8, }; - const int = new entity.Int(valueProto); + const int = new testEntity.Int(valueProto); assert.strictEqual(int.value, valueProto.integerValue.toString()); }); @@ -122,7 +122,7 @@ describe('entity', () => { describe('integerTypeCastFunction is not provided', () => { it('should throw if integerTypeCastOptions is provided but integerTypeCastFunction is not', () => { assert.throws( - () => new entity.Int(valueProto, {}).valueOf(), + () => new testEntity.Int(valueProto, {}).valueOf(), /integerTypeCastFunction is not a function or was not provided\./ ); }); @@ -142,11 +142,11 @@ describe('entity', () => { }; assert.throws(() => { - new entity.Int(valueProto).valueOf(); + new testEntity.Int(valueProto).valueOf(); }, outOfBoundsError(valueProto)); assert.throws(() => { - new entity.Int(valueProto2).valueOf(); + new testEntity.Int(valueProto2).valueOf(); }, outOfBoundsError(valueProto2)); }); @@ -156,12 +156,12 @@ describe('entity', () => { // should throw when Number is passed assert.throws(() => { - new entity.Int(largeIntegerValue).valueOf(); + new testEntity.Int(largeIntegerValue).valueOf(); }, outOfBoundsError({integerValue: largeIntegerValue})); // should throw when string is passed assert.throws(() => { - new entity.Int(smallIntegerValue.toString()).valueOf(); + new testEntity.Int(smallIntegerValue.toString()).valueOf(); }, outOfBoundsError({integerValue: smallIntegerValue})); }); @@ -174,7 +174,7 @@ describe('entity', () => { }; assert.doesNotThrow(() => { - new entity.Int(valueProto); + new testEntity.Int(valueProto); }, new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`)); }); }); @@ -183,7 +183,7 @@ describe('entity', () => { it('should throw if integerTypeCastFunction is not a function', () => { assert.throws( () => - new entity.Int(valueProto, { + new testEntity.Int(valueProto, { integerTypeCastFunction: {}, }).valueOf(), /integerTypeCastFunction is not a function or was not provided\./ @@ -193,7 +193,7 @@ describe('entity', () => { it('should custom-cast integerValue when integerTypeCastFunction is provided', () => { const stub = sinon.stub(); - new entity.Int(valueProto, { + new testEntity.Int(valueProto, { integerTypeCastFunction: stub, }).valueOf(); assert.ok(stub.calledOnce); @@ -205,7 +205,7 @@ describe('entity', () => { propertyName: 'thisValue', }); - new entity.Int(valueProto, { + new testEntity.Int(valueProto, { integerTypeCastFunction: stub, properties: 'thisValue', }).valueOf(); @@ -219,7 +219,7 @@ describe('entity', () => { propertyName: 'thisValue', }); - new entity.Int(valueProto, { + new testEntity.Int(valueProto, { integerTypeCastFunction: stub, properties: 'thatValue', }).valueOf(); @@ -231,31 +231,31 @@ describe('entity', () => { describe('isDsInt', () => { it('should correctly identify an Int', () => { - const int = new entity.Int(42); - assert.strictEqual(entity.isDsInt(int), true); + const int = new testEntity.Int(42); + assert.strictEqual(testEntity.isDsInt(int), true); }); it('should correctly identify homomorphic non-Int', () => { - const nonInt = Object.assign({}, new entity.Int(42)); - assert.strictEqual(entity.isDsInt(nonInt), false); + const nonInt = Object.assign({}, new testEntity.Int(42)); + assert.strictEqual(testEntity.isDsInt(nonInt), false); }); it('should correctly identify a primitive', () => { const primitiveInt = 42; - assert.strictEqual(entity.isDsInt(primitiveInt), false); + assert.strictEqual(testEntity.isDsInt(primitiveInt), false); }); }); describe('isDsIntLike', () => { it('should correctly identify an Int', () => { - const int = new entity.Int(42); - assert.strictEqual(entity.isDsIntLike(int), true); + const int = new testEntity.Int(42); + assert.strictEqual(testEntity.isDsIntLike(int), true); }); it('should correctly identify a POJO Int', () => { - const int = new entity.Int(42); + const int = new testEntity.Int(42); const pojoInt = JSON.parse(JSON.stringify(int)); - assert.strictEqual(entity.isDsIntLike(pojoInt), true); + assert.strictEqual(testEntity.isDsIntLike(pojoInt), true); }); }); @@ -266,68 +266,68 @@ describe('entity', () => { longitude: 88, }; - const geoPoint = new entity.GeoPoint(value); + const geoPoint = new testEntity.GeoPoint(value); assert.strictEqual(geoPoint.value, value); }); }); describe('isDsGeoPoint', () => { it('should correctly identify a GeoPoint', () => { - const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); - assert.strictEqual(entity.isDsGeoPoint(geoPoint), true); + const geoPoint = new testEntity.GeoPoint({latitude: 24, longitude: 88}); + assert.strictEqual(testEntity.isDsGeoPoint(geoPoint), true); }); it('should correctly identify a homomorphic non-GeoPoint', () => { - const geoPoint = new entity.GeoPoint({latitude: 24, longitude: 88}); + const geoPoint = new testEntity.GeoPoint({latitude: 24, longitude: 88}); const nonGeoPoint = Object.assign({}, geoPoint); - assert.strictEqual(entity.isDsGeoPoint(nonGeoPoint), false); + assert.strictEqual(testEntity.isDsGeoPoint(nonGeoPoint), false); }); }); describe('Key', () => { it('should assign the namespace', () => { const namespace = 'NS'; - const key = new entity.Key({namespace, path: []}); + const key = new testEntity.Key({namespace, path: []}); assert.strictEqual(key.namespace, namespace); }); it('should assign the kind', () => { const kind = 'kind'; - const key = new entity.Key({path: [kind]}); + const key = new testEntity.Key({path: [kind]}); assert.strictEqual(key.kind, kind); }); it('should assign the ID', () => { const id = 11; - const key = new entity.Key({path: ['Kind', id]}); + const key = new testEntity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id); }); it('should assign the ID from an Int', () => { - const id = new entity.Int(11); - const key = new entity.Key({path: ['Kind', id]}); + const id = new testEntity.Int(11); + const key = new testEntity.Key({path: ['Kind', id]}); assert.strictEqual(key.id, id.value); }); it('should assign the name', () => { const name = 'name'; - const key = new entity.Key({path: ['Kind', name]}); + const key = new testEntity.Key({path: ['Kind', name]}); assert.strictEqual(key.name, name); }); it('should assign a parent', () => { - const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); - assert(key.parent instanceof entity.Key); + const key = new testEntity.Key({path: ['ParentKind', 1, 'Kind', 1]}); + assert(key.parent instanceof testEntity.Key); }); it('should not modify input path', () => { const inputPath = ['ParentKind', 1, 'Kind', 1]; - new entity.Key({path: inputPath}); + new testEntity.Key({path: inputPath}); assert.deepStrictEqual(inputPath, ['ParentKind', 1, 'Kind', 1]); }); it('should always compute the correct path', () => { - const key = new entity.Key({path: ['ParentKind', 1, 'Kind', 1]}); + const key = new testEntity.Key({path: ['ParentKind', 1, 'Kind', 1]}); assert.deepStrictEqual(key.path, ['ParentKind', 1, 'Kind', 1]); key.parent.kind = 'GrandParentKind'; @@ -337,9 +337,16 @@ describe('entity', () => { }); it('should always compute the correct serialized path', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ namespace: 'namespace', - path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + path: [ + 'ParentKind', + 'name', + 'Kind', + 1, + 'SubKind', + new testEntity.Int('1'), + ], }); assert.deepStrictEqual(key.serialized, { namespace: 'namespace', @@ -347,40 +354,54 @@ describe('entity', () => { 'ParentKind', 'name', 'Kind', - new entity.Int(1), + new testEntity.Int(1), 'SubKind', - new entity.Int('1'), + new testEntity.Int('1'), ], }); }); it('should allow re-creating a Key from the serialized path', () => { - const key = new entity.Key({ - path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + const key = new testEntity.Key({ + path: [ + 'ParentKind', + 'name', + 'Kind', + 1, + 'SubKind', + new testEntity.Int('1'), + ], }); - const key2 = new entity.Key(key.serialized); + const key2 = new testEntity.Key(key.serialized); assert.deepStrictEqual(key.serialized, key2.serialized); }); it('should allow re-creating a Key from the JSON serialized path', () => { - const key = new entity.Key({ - path: ['ParentKind', 'name', 'Kind', 1, 'SubKind', new entity.Int('1')], + const key = new testEntity.Key({ + path: [ + 'ParentKind', + 'name', + 'Kind', + 1, + 'SubKind', + new testEntity.Int('1'), + ], }); const toPOJO = (v: object) => JSON.parse(JSON.stringify(v)); - const key2 = new entity.Key(toPOJO(key.serialized)); + const key2 = new testEntity.Key(toPOJO(key.serialized)); assert.deepStrictEqual(key.serialized, key2.serialized); }); }); describe('isDsKey', () => { it('should correctly identify a Key', () => { - const key = new entity.Key({path: ['Kind', 1]}); - assert.strictEqual(entity.isDsKey(key), true); + const key = new testEntity.Key({path: ['Kind', 1]}); + assert.strictEqual(testEntity.isDsKey(key), true); }); it('should correctly identify a homomorphic non-Key', () => { - const notKey = Object.assign({}, new entity.Key({path: ['Kind', 1]})); - assert.strictEqual(entity.isDsKey(notKey), false); + const notKey = Object.assign({}, new testEntity.Key({path: ['Kind', 1]})); + assert.strictEqual(testEntity.isDsKey(notKey), false); }); }); @@ -412,8 +433,8 @@ describe('entity', () => { let run = false; - const decodeValueProto = entity.decodeValueProto; - entity.decodeValueProto = (valueProto: {}) => { + const decodeValueProto = testEntity.decodeValueProto; + testEntity.decodeValueProto = (valueProto: {}) => { if (!run) { run = true; return decodeValueProto(valueProto); @@ -424,14 +445,14 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), + testEntity.decodeValueProto(valueProto), expectedValue ); }); it('should not wrap numbers by default', () => { - const decodeValueProto = entity.decodeValueProto; - entity.decodeValueProto = ( + const decodeValueProto = testEntity.decodeValueProto; + testEntity.decodeValueProto = ( valueProto: {}, wrapNumbers?: boolean | {} ) => { @@ -440,15 +461,17 @@ describe('entity', () => { return decodeValueProto(valueProto, wrapNumbers); }; - assert.deepStrictEqual(entity.decodeValueProto(valueProto), [intValue]); + assert.deepStrictEqual(testEntity.decodeValueProto(valueProto), [ + intValue, + ]); }); it('should wrap numbers with an option', () => { const wrapNumbersBoolean = true; const wrapNumbersObject = {}; - const decodeValueProto = entity.decodeValueProto; + const decodeValueProto = testEntity.decodeValueProto; let run = false; - entity.decodeValueProto = ( + testEntity.decodeValueProto = ( valueProto: {}, wrapNumbers?: boolean | {} ) => { @@ -463,14 +486,14 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto, wrapNumbersBoolean), + testEntity.decodeValueProto(valueProto, wrapNumbersBoolean), expectedValue ); // reset the run flag. run = false; assert.deepStrictEqual( - entity.decodeValueProto(valueProto, wrapNumbersObject), + testEntity.decodeValueProto(valueProto, wrapNumbersObject), expectedValue ); }); @@ -485,12 +508,15 @@ describe('entity', () => { entityValue: expectedValue, }; - entity.entityFromEntityProto = (entityProto: {}) => { + testEntity.entityFromEntityProto = (entityProto: {}) => { assert.strictEqual(entityProto, expectedValue); return expectedValue; }; - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.strictEqual( + testEntity.decodeValueProto(valueProto), + expectedValue + ); }); it('should not wrap numbers by default', () => { @@ -501,7 +527,7 @@ describe('entity', () => { entityValue: expectedValue, }; - entity.entityFromEntityProto = ( + testEntity.entityFromEntityProto = ( entityProto: {}, wrapNumbers?: boolean | {} ) => { @@ -510,7 +536,10 @@ describe('entity', () => { return expectedValue; }; - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.strictEqual( + testEntity.decodeValueProto(valueProto), + expectedValue + ); }); it('should wrap numbers with an option', () => { @@ -523,7 +552,7 @@ describe('entity', () => { entityValue: expectedValue, }; - entity.entityFromEntityProto = ( + testEntity.entityFromEntityProto = ( entityProto: {}, wrapNumbers?: boolean | {} ) => { @@ -534,12 +563,12 @@ describe('entity', () => { }; assert.strictEqual( - entity.decodeValueProto(valueProto, wrapNumbersBoolean), + testEntity.decodeValueProto(valueProto, wrapNumbersBoolean), expectedValue ); assert.strictEqual( - entity.decodeValueProto(valueProto, wrapNumbersObject), + testEntity.decodeValueProto(valueProto, wrapNumbersObject), expectedValue ); }); @@ -554,7 +583,7 @@ describe('entity', () => { describe('default `wrapNumbers: undefined`', () => { it('should not wrap ints by default', () => { assert.strictEqual( - typeof entity.decodeValueProto(valueProto), + typeof testEntity.decodeValueProto(valueProto), 'number' ); }); @@ -576,11 +605,11 @@ describe('entity', () => { }; assert.throws(() => { - entity.decodeValueProto(valueProto); + testEntity.decodeValueProto(valueProto); }, outOfBoundsError(valueProto)); assert.throws(() => { - entity.decodeValueProto(valueProto2); + testEntity.decodeValueProto(valueProto2); }, outOfBoundsError(valueProto2)); }); }); @@ -588,17 +617,17 @@ describe('entity', () => { describe('should wrap ints with option', () => { it('should wrap ints with wrapNumbers as boolean', () => { const wrapNumbers = true; - const stub = sinon.spy(entity, 'Int'); + const stub = sinon.spy(testEntity, 'Int'); - entity.decodeValueProto(valueProto, wrapNumbers); + testEntity.decodeValueProto(valueProto, wrapNumbers); assert.strictEqual(stub.called, true); }); it('should wrap ints with wrapNumbers as object', () => { const wrapNumbers = {integerTypeCastFunction: () => {}}; - const stub = sinon.spy(entity, 'Int'); + const stub = sinon.spy(testEntity, 'Int'); - entity.decodeValueProto(valueProto, wrapNumbers); + testEntity.decodeValueProto(valueProto, wrapNumbers); assert.strictEqual(stub.called, true); }); @@ -610,7 +639,7 @@ describe('entity', () => { const wrapNumbers = {integerTypeCastFunction: takeFirstTen}; assert.strictEqual( - entity.decodeValueProto(valueProto, wrapNumbers), + testEntity.decodeValueProto(valueProto, wrapNumbers), takeFirstTen(Number.MAX_SAFE_INTEGER) ); assert.strictEqual(takeFirstTen.called, true); @@ -622,7 +651,7 @@ describe('entity', () => { const stub = sinon.stub().throws(error); assert.throws( () => - entity + testEntity .decodeValueProto(valueProto, { integerTypeCastFunction: stub, }) @@ -646,7 +675,7 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), + testEntity.decodeValueProto(valueProto), expectedValue ); }); @@ -659,7 +688,7 @@ describe('entity', () => { nullValue: 0, }; - const decodedValue = entity.decodeValueProto(valueProto); + const decodedValue = testEntity.decodeValueProto(valueProto); assert.deepStrictEqual(decodedValue, expectedValue); }); @@ -671,7 +700,10 @@ describe('entity', () => { doubleValue: expectedValue, }; - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.strictEqual( + testEntity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode keys', () => { @@ -682,12 +714,15 @@ describe('entity', () => { keyValue: expectedValue, }; - entity.keyFromKeyProto = (keyProto: {}) => { + testEntity.keyFromKeyProto = (keyProto: {}) => { assert.strictEqual(keyProto, expectedValue); return expectedValue; }; - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.strictEqual( + testEntity.decodeValueProto(valueProto), + expectedValue + ); }); it('should decode timestamps', () => { @@ -707,7 +742,7 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.decodeValueProto(valueProto), + testEntity.decodeValueProto(valueProto), expectedValue ); }); @@ -720,7 +755,10 @@ describe('entity', () => { booleanValue: expectedValue, }; - assert.strictEqual(entity.decodeValueProto(valueProto), expectedValue); + assert.strictEqual( + testEntity.decodeValueProto(valueProto), + expectedValue + ); }); }); @@ -732,7 +770,7 @@ describe('entity', () => { booleanValue: value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode null', () => { @@ -742,7 +780,7 @@ describe('entity', () => { nullValue: 0, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode an int', () => { @@ -752,12 +790,12 @@ describe('entity', () => { integerValue: value, }; - entity.Int = function (value_: {}) { + testEntity.Int = function (value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should emit warning on out of bounce int', done => { @@ -776,17 +814,17 @@ describe('entity', () => { done(); }; process.on('warning', onWarning); - entity.encodeValue(largeIntValue, property); + testEntity.encodeValue(largeIntValue, property); }); it('should encode an Int object', () => { - const value = new entity.Int(3); + const value = new testEntity.Int(3); const expectedValueProto = { integerValue: value.value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a double', () => { @@ -796,32 +834,32 @@ describe('entity', () => { doubleValue: value, }; - entity.Double = function (value_: {}) { + testEntity.Double = function (value_: {}) { assert.strictEqual(value_, value); this.value = value_; }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a Double object', () => { - const value = new entity.Double(3); + const value = new testEntity.Double(3); const expectedValueProto = { doubleValue: value.value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a GeoPoint object', () => { - const value = new entity.GeoPoint(); + const value = new testEntity.GeoPoint(); const expectedValueProto = { geoPointValue: value.value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a date', () => { @@ -835,7 +873,7 @@ describe('entity', () => { }, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a string', () => { @@ -845,7 +883,7 @@ describe('entity', () => { stringValue: value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a buffer', () => { @@ -855,7 +893,7 @@ describe('entity', () => { blobValue: value, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode an array', () => { @@ -869,8 +907,8 @@ describe('entity', () => { let run = false; - const encodeValue = entity.encodeValue; - entity.encodeValue = (value_: {}) => { + const encodeValue = testEntity.encodeValue; + testEntity.encodeValue = (value_: {}) => { if (!run) { run = true; return encodeValue(value_); @@ -880,11 +918,11 @@ describe('entity', () => { return value_; }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode a Key', () => { - const value = new entity.Key({ + const value = new testEntity.Key({ namespace: 'ns', path: ['Kind', 1], }); @@ -893,12 +931,12 @@ describe('entity', () => { keyValue: value, }; - entity.keyToKeyProto = (key: {}) => { + testEntity.keyToKeyProto = (key: {}) => { assert.strictEqual(key, value); return value; }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should encode an object', () => { @@ -916,8 +954,8 @@ describe('entity', () => { let run = false; - const encodeValue = entity.encodeValue; - entity.encodeValue = (value_: {}) => { + const encodeValue = testEntity.encodeValue; + testEntity.encodeValue = (value_: {}) => { if (!run) { run = true; return encodeValue(value_); @@ -927,7 +965,7 @@ describe('entity', () => { return value_; }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should clone an object', () => { @@ -941,7 +979,7 @@ describe('entity', () => { const originalValue = extend(true, {}, value); - const encodedValue = entity.encodeValue(value); + const encodedValue = testEntity.encodeValue(value); assert.deepStrictEqual(value, originalValue); assert.notStrictEqual(value, encodedValue); @@ -956,12 +994,12 @@ describe('entity', () => { }, }; - assert.deepStrictEqual(entity.encodeValue(value), expectedValueProto); + assert.deepStrictEqual(testEntity.encodeValue(value), expectedValueProto); }); it('should throw if an invalid value was provided', () => { assert.throws(() => { - entity.encodeValue(); + testEntity.encodeValue(); }, /Unsupported field value/); }); }); @@ -982,7 +1020,7 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.entityFromEntityProto(entityProto), + testEntity.entityFromEntityProto(entityProto), expectedEntity ); }); @@ -993,7 +1031,7 @@ describe('entity', () => { let wrapNumbers: boolean | IntegerTypeCastOptions | undefined; beforeEach(() => { - decodeValueProtoStub = sinon.stub(entity, 'decodeValueProto'); + decodeValueProtoStub = sinon.stub(testEntity, 'decodeValueProto'); }); afterEach(() => { @@ -1001,19 +1039,19 @@ describe('entity', () => { }); it('should identify entity propertyName', () => { - entity.entityFromEntityProto(entityProto); + testEntity.entityFromEntityProto(entityProto); const valueProto = decodeValueProtoStub.getCall(0).args[0]; assert.strictEqual(valueProto.propertyName, 'number'); }); it('should pass `wrapNumbers` to decodeValueProto as undefined by default', () => { - entity.entityFromEntityProto(entityProto); + testEntity.entityFromEntityProto(entityProto); wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; assert.strictEqual(wrapNumbers, undefined); }); it('should pass `wrapNumbers` to decodeValueProto as boolean', () => { - entity.entityFromEntityProto(entityProto, true); + testEntity.entityFromEntityProto(entityProto, true); wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; assert.strictEqual(typeof wrapNumbers, 'boolean'); }); @@ -1024,7 +1062,7 @@ describe('entity', () => { properties: 'that', }; - entity.entityFromEntityProto(entityProto, integerTypeCastOptions); + testEntity.entityFromEntityProto(entityProto, integerTypeCastOptions); wrapNumbers = decodeValueProtoStub.getCall(0).args[1]; assert.strictEqual(wrapNumbers, integerTypeCastOptions); assert.deepStrictEqual(wrapNumbers, integerTypeCastOptions); @@ -1047,13 +1085,13 @@ describe('entity', () => { properties: entityObject.data, }; - entity.encodeValue = (value_: {}) => { + testEntity.encodeValue = (value_: {}) => { assert.strictEqual(value_, value); return value; }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), + testEntity.entityToEntityProto(entityObject), expectedEntityProto ); }); @@ -1480,7 +1518,7 @@ describe('entity', () => { }; assert.deepStrictEqual( - entity.entityToEntityProto(entityObject), + testEntity.entityToEntityProto(entityObject), expectedEntityProto ); }); @@ -1502,17 +1540,17 @@ describe('entity', () => { const expectedResults = entityProto; - entity.keyFromKeyProto = (key_: {}) => { + testEntity.keyFromKeyProto = (key_: {}) => { assert.strictEqual(key_, key); return key; }; - entity.entityFromEntityProto = (entityProto_: {}) => { + testEntity.entityFromEntityProto = (entityProto_: {}) => { assert.strictEqual(entityProto_, entityProto); return entityProto; }; - const ent = entity.formatArray(results)[0]; + const ent = testEntity.formatArray(results)[0]; assert.deepStrictEqual(ent, expectedResults); }); @@ -1525,9 +1563,9 @@ describe('entity', () => { beforeEach(() => { entityFromEntityProtoStub = sinon - .stub(entity, 'entityFromEntityProto') + .stub(testEntity, 'entityFromEntityProto') .callsFake(() => ({})); - sinon.stub(entity, 'keyFromKeyProto'); + sinon.stub(testEntity, 'keyFromKeyProto'); }); afterEach(() => { @@ -1535,13 +1573,13 @@ describe('entity', () => { }); it('should pass `wrapNumbers` to entityFromEntityProto as undefined by default', () => { - entity.formatArray(results); + testEntity.formatArray(results); wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; assert.strictEqual(wrapNumbers, undefined); }); it('should pass `wrapNumbers` to entityFromEntityProto as boolean', () => { - entity.formatArray(results, true); + testEntity.formatArray(results, true); wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; assert.strictEqual(typeof wrapNumbers, 'boolean'); }); @@ -1552,7 +1590,7 @@ describe('entity', () => { properties: 'that', }; - entity.formatArray(results, integerTypeCastOptions); + testEntity.formatArray(results, integerTypeCastOptions); wrapNumbers = entityFromEntityProtoStub.getCall(0).args[1]; assert.strictEqual(wrapNumbers, integerTypeCastOptions); assert.deepStrictEqual(wrapNumbers, integerTypeCastOptions); @@ -1562,41 +1600,41 @@ describe('entity', () => { describe('isKeyComplete', () => { it('should convert key to key proto', done => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: ['Kind', 123], }); - entity.keyToKeyProto = (key_: {}) => { + testEntity.keyToKeyProto = (key_: {}) => { assert.strictEqual(key_, key); setImmediate(done); return key; }; - entity.isKeyComplete(key); + testEntity.isKeyComplete(key); }); it('should return true if key has id', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: ['Kind', 123], }); - assert.strictEqual(entity.isKeyComplete(key), true); + assert.strictEqual(testEntity.isKeyComplete(key), true); }); it('should return true if key has name', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: ['Kind', 'name'], }); - assert.strictEqual(entity.isKeyComplete(key), true); + assert.strictEqual(testEntity.isKeyComplete(key), true); }); it('should return false if key does not have name or ID', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: ['Kind'], }); - assert.strictEqual(entity.isKeyComplete(key), false); + assert.strictEqual(testEntity.isKeyComplete(key), false); }); }); @@ -1623,40 +1661,40 @@ describe('entity', () => { }; it('should set the namespace', done => { - entity.Key = class { + testEntity.Key = class { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(keyOptions: any) { assert.strictEqual(keyOptions.namespace, NAMESPACE); done(); } }; - entity.keyFromKeyProto(keyProto); + testEntity.keyFromKeyProto(keyProto); }); it('should create a proper Key', done => { - entity.Key = class { + testEntity.Key = class { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(keyOptions: any) { assert.deepStrictEqual(keyOptions, { namespace: NAMESPACE, - path: ['Kind', new entity.Int(111), 'Kind2', 'name'], + path: ['Kind', new testEntity.Int(111), 'Kind2', 'name'], }); done(); } }; - entity.keyFromKeyProto(keyProto); + testEntity.keyFromKeyProto(keyProto); }); it('should return the created Key', () => { const expectedValue = {}; - entity.Key = class { + testEntity.Key = class { constructor() { return expectedValue; } }; - assert.strictEqual(entity.keyFromKeyProto(keyProto), expectedValue); + assert.strictEqual(testEntity.keyFromKeyProto(keyProto), expectedValue); }); it('should throw if path is invalid', done => { @@ -1676,7 +1714,7 @@ describe('entity', () => { }; try { - entity.keyFromKeyProto(keyProtoInvalid); + testEntity.keyFromKeyProto(keyProtoInvalid); } catch (e) { assert.strictEqual((e as Error).name, 'InvalidKey'); assert.strictEqual( @@ -1690,11 +1728,11 @@ describe('entity', () => { describe('keyToKeyProto', () => { it('should handle hierarchical key definitions', () => { - const key = new entity.Key({ - path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new entity.Int(3)], + const key = new testEntity.Key({ + path: ['Kind1', 1, 'Kind2', 'name', 'Kind3', new testEntity.Int(3)], }); - const keyProto = entity.keyToKeyProto(key); + const keyProto = testEntity.keyToKeyProto(key); assert.strictEqual(keyProto.partitionId, undefined); @@ -1707,17 +1745,17 @@ describe('entity', () => { assert.strictEqual(keyProto.path[1].name, 'name'); assert.strictEqual(keyProto.path[2].kind, 'Kind3'); - assert.strictEqual(keyProto.path[2].id, new entity.Int(3).value); + assert.strictEqual(keyProto.path[2].id, new testEntity.Int(3).value); assert.strictEqual(keyProto.path[2].name, undefined); }); it('should detect the namespace of the hierarchical keys', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ namespace: 'Namespace', path: ['Kind1', 1, 'Kind2', 'name'], }); - const keyProto = entity.keyToKeyProto(key); + const keyProto = testEntity.keyToKeyProto(key); assert.strictEqual(keyProto.partitionId.namespaceId, 'Namespace'); @@ -1731,17 +1769,17 @@ describe('entity', () => { }); it('should handle incomplete keys with & without namespaces', () => { - const incompleteKey = new entity.Key({ + const incompleteKey = new testEntity.Key({ path: ['Kind'], }); - const incompleteKeyWithNs = new entity.Key({ + const incompleteKeyWithNs = new testEntity.Key({ namespace: 'Namespace', path: ['Kind'], }); - const keyProto = entity.keyToKeyProto(incompleteKey); - const keyProtoWithNs = entity.keyToKeyProto(incompleteKeyWithNs); + const keyProto = testEntity.keyToKeyProto(incompleteKey); + const keyProtoWithNs = testEntity.keyToKeyProto(incompleteKeyWithNs); assert.strictEqual(keyProto.partitionId, undefined); assert.strictEqual(keyProto.path[0].kind, 'Kind'); @@ -1755,12 +1793,12 @@ describe('entity', () => { }); it('should throw if key contains 0 items', done => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: [], }); try { - entity.keyToKeyProto(key); + testEntity.keyToKeyProto(key); } catch (e) { assert.strictEqual((e as Error).name, 'InvalidKey'); assert.strictEqual( @@ -1772,13 +1810,13 @@ describe('entity', () => { }); it('should throw if key path contains null ids', done => { - const key = new entity.Key({ + const key = new testEntity.Key({ namespace: 'Namespace', path: ['Kind1', null, 'Company'], }); try { - entity.keyToKeyProto(key); + testEntity.keyToKeyProto(key); } catch (e) { assert.strictEqual((e as Error).name, 'InvalidKey'); assert.strictEqual( @@ -1790,13 +1828,13 @@ describe('entity', () => { }); it('should not throw if key is incomplete', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ namespace: 'Namespace', path: ['Kind1', 123, 'Company', null], }); assert.doesNotThrow(() => { - entity.keyToKeyProto(key); + testEntity.keyToKeyProto(key); }); }); }); @@ -1873,7 +1911,7 @@ describe('entity', () => { }; it('should support all configurations of a query', () => { - const ancestorKey = new globalEntity.Key({ + const ancestorKey = new entity.Key({ path: ['Kind2', 'somename'], }); @@ -1891,7 +1929,7 @@ describe('entity', () => { .offset(1) .hasAncestor(ancestorKey); - assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); + assert.deepStrictEqual(testEntity.queryToQueryProto(query), queryProto); }); it('should support using __key__ with array as value', () => { @@ -1941,15 +1979,16 @@ describe('entity', () => { const query = ds .createQuery('Kind1') - .filter('__key__', 'IN', [ - new globalEntity.Key({path: ['Kind1', 'key1']}), - ]); + .filter('__key__', 'IN', [new entity.Key({path: ['Kind1', 'key1']})]); - assert.deepStrictEqual(entity.queryToQueryProto(query), keyWithInQuery); + assert.deepStrictEqual( + testEntity.queryToQueryProto(query), + keyWithInQuery + ); }); it('should support the filter method with Filter objects', () => { - const ancestorKey = new globalEntity.Key({ + const ancestorKey = new entity.Key({ path: ['Kind2', 'somename'], }); @@ -1966,11 +2005,11 @@ describe('entity', () => { .limit(1) .offset(1) .hasAncestor(ancestorKey); - assert.deepStrictEqual(entity.queryToQueryProto(query), queryProto); + assert.deepStrictEqual(testEntity.queryToQueryProto(query), queryProto); }); it('should support the filter method with AND', () => { - const ancestorKey = new globalEntity.Key({ + const ancestorKey = new entity.Key({ path: ['Kind2', 'somename'], }); @@ -1993,7 +2032,7 @@ describe('entity', () => { .offset(1); const testFilters = queryProto.filter; const computedFilters = - entity.queryToQueryProto(query).filter.compositeFilter.filters[0]; + testEntity.queryToQueryProto(query).filter.compositeFilter.filters[0]; assert.deepStrictEqual(computedFilters, testFilters); }); @@ -2004,7 +2043,7 @@ describe('entity', () => { const query = ds.createQuery('Kind1').start(startVal).end(endVal); - const queryProto = entity.queryToQueryProto(query); + const queryProto = testEntity.queryToQueryProto(query); assert.strictEqual(queryProto.endCursor, endVal); assert.strictEqual(queryProto.startCursor, startVal); }); @@ -2017,7 +2056,7 @@ describe('entity', () => { let urlSafeKey: any; beforeEach(() => { - urlSafeKey = new entity.URLSafeKey(); + urlSafeKey = new testEntity.URLSafeKey(); }); describe('convertToBase64_', () => { @@ -2044,7 +2083,7 @@ describe('entity', () => { it('should encode with namespace', () => { const kind = 'Task'; const name = 'sampletask1'; - const key = new entity.Key({ + const key = new testEntity.Key({ namespace: 'NS', path: [kind, name], }); @@ -2060,7 +2099,7 @@ describe('entity', () => { it('should encode key with single path element string string type', () => { const kind = 'Task'; const name = 'sampletask1'; - const key = new entity.Key({ + const key = new testEntity.Key({ path: [kind, name], }); @@ -2075,7 +2114,7 @@ describe('entity', () => { it('should encode key with single path element long int type', () => { const kind = 'Task'; const id = 5754248394440704; - const key = new entity.Key({ + const key = new testEntity.Key({ path: [kind, id], }); @@ -2088,8 +2127,8 @@ describe('entity', () => { it('should encode key with single path element entity int type', () => { const kind = 'Task'; - const id = new entity.Int('5754248394440704'); - const key = new entity.Key({ + const id = new testEntity.Int('5754248394440704'); + const key = new testEntity.Key({ path: [kind, id], }); @@ -2101,7 +2140,7 @@ describe('entity', () => { }); it('should encode key with parent', () => { - const key = new entity.Key({ + const key = new testEntity.Key({ path: ['Task', 'sampletask1', 'Task', 'sampletask2'], }); From 202c1c80e47cfd527d195dbe266f9de794e457e3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 31 May 2023 23:21:17 +0200 Subject: [PATCH 728/820] chore(deps): update dependency linkinator to v5 (#1116) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 370e4562d0b..f2de93dceec 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "jsdoc": "^4.0.0", "jsdoc-fresh": "^2.0.0", "jsdoc-region-tag": "^2.0.0", - "linkinator": "^4.0.0", + "linkinator": "^5.0.0", "mocha": "^9.2.2", "null-loader": "^4.0.0", "p-queue": "^6.6.1", From 6282041b94900005d4f037eeb5b616f5c685cb10 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 2 Jun 2023 11:11:06 -0400 Subject: [PATCH 729/820] chore(filter): Add a switch statement (#1108) * Add a switch statement In the filter function a switch statement is added so that it is clear to the reader what happens when the arguments are of various lengths * chore(filter): Add a switch statement * code review suggestions Remove the else block, it should never happen anyway because if it does then the user is misusing the function --- handwritten/nodejs-datastore/src/query.ts | 37 ++++++++++++++--------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index a055c69ee90..daf90f056c4 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -222,24 +222,33 @@ class Query { operatorOrValue?: Operator | AllowedFilterValueType, value?: AllowedFilterValueType ): Query { - if (isFilter(propertyOrFilter)) { - this.entityFilters.push(propertyOrFilter); - return this; - } else { + if (arguments.length > 1) { process.emitWarning( 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' ); - let operator = operatorOrValue as Operator; - if (arguments.length === 2) { - value = operatorOrValue as AllowedFilterValueType; - operator = '='; + } + switch (arguments.length) { + case 1: { + if (isFilter(propertyOrFilter)) { + this.entityFilters.push(propertyOrFilter); + } + break; + } + case 2: { + this.filters.push({ + name: (propertyOrFilter as String).trim(), + op: '=', + val: operatorOrValue as AllowedFilterValueType, + }); + break; + } + case 3: { + this.filters.push({ + name: (propertyOrFilter as String).trim(), + op: (operatorOrValue as Operator).trim() as Operator, + val: value, + }); } - - this.filters.push({ - name: (propertyOrFilter as String).trim(), - op: operator.trim() as Operator, - val: value, - }); } return this; } From d82afe587eac24cdef57d638332373033ca9a817 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 15:32:38 -0700 Subject: [PATCH 730/820] docs: fix node release schedule link (#1132) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: fix node release schedule link Co-authored-by: Jeffrey Rennie Source-Link: https://github.com/googleapis/synthtool/commit/1a2431537d603e95b4b32317fb494542f75a2165 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:e08f9a3757808cdaf7a377e962308c65c4d7eff12db206d4fae702dd50d43430 * chore!: upgrade to Node 14 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: Sofia Leon --- handwritten/nodejs-datastore/README.md | 2 +- handwritten/nodejs-datastore/package.json | 17 +- .../nodejs-datastore/protos/protos.d.ts | 1645 ++++++- handwritten/nodejs-datastore/protos/protos.js | 4351 ++++++++++++++++- .../nodejs-datastore/protos/protos.json | 312 +- .../nodejs-datastore/samples/package.json | 2 +- .../nodejs-datastore/src/index-class.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 2 +- .../nodejs-datastore/src/transaction.ts | 2 +- .../src/v1/datastore_admin_client.ts | 24 +- .../src/v1/datastore_client.ts | 32 +- handwritten/nodejs-datastore/test/entity.ts | 28 +- handwritten/nodejs-datastore/test/index.ts | 2 +- 13 files changed, 6035 insertions(+), 386 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index 3a56bcec80a..cfcc73d126a 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -123,7 +123,7 @@ also contains samples. ## Supported Node.js Versions -Our client libraries follow the [Node.js release schedule](https://nodejs.org/en/about/releases/). +Our client libraries follow the [Node.js release schedule](https://github.com/nodejs/release#release-schedule). Libraries are compatible with all current _active_ and _maintenance_ versions of Node.js. If you are using an end-of-life version of Node.js, we recommend that you update diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f2de93dceec..42c27e57edd 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -41,26 +41,27 @@ "precompile": "gts clean" }, "dependencies": { - "@google-cloud/promisify": "^3.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^3.5.2", + "google-gax": "^4.0.3", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" }, "devDependencies": { - "@google-cloud/storage": "^6.0.0", + "@google-cloud/storage": "^7.0.1", "@types/extend": "^3.0.1", "@types/is": "0.0.22", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", - "@types/node": "^18.0.0", + "@types/node": "^20.4.9", "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", - "c8": "^7.1.0", - "gts": "^3.1.0", + "c8": "^8.0.1", + "gapic-tools": "^0.1.8", + "gts": "^5.0.0", "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", "jsdoc-fresh": "^2.0.0", @@ -73,10 +74,10 @@ "proxyquire": "^2.1.3", "sinon": "^15.0.0", "ts-loader": "^8.0.0", - "typescript": "^4.6.4", + "typescript": "^5.1.6", "webpack-cli": "^5.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } } diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 26c2ae828d3..95e786a8c0c 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -8165,6 +8165,1448 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + /** Properties of a CommonLanguageSettings. */ + interface ICommonLanguageSettings { + + /** CommonLanguageSettings referenceDocsUri */ + referenceDocsUri?: (string|null); + + /** CommonLanguageSettings destinations */ + destinations?: (google.api.ClientLibraryDestination[]|null); + } + + /** Represents a CommonLanguageSettings. */ + class CommonLanguageSettings implements ICommonLanguageSettings { + + /** + * Constructs a new CommonLanguageSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICommonLanguageSettings); + + /** CommonLanguageSettings referenceDocsUri. */ + public referenceDocsUri: string; + + /** CommonLanguageSettings destinations. */ + public destinations: google.api.ClientLibraryDestination[]; + + /** + * Creates a new CommonLanguageSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns CommonLanguageSettings instance + */ + public static create(properties?: google.api.ICommonLanguageSettings): google.api.CommonLanguageSettings; + + /** + * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages. + * @param message CommonLanguageSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages. + * @param message CommonLanguageSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CommonLanguageSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CommonLanguageSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CommonLanguageSettings; + + /** + * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CommonLanguageSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CommonLanguageSettings; + + /** + * Verifies a CommonLanguageSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CommonLanguageSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.CommonLanguageSettings; + + /** + * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified. + * @param message CommonLanguageSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CommonLanguageSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CommonLanguageSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CommonLanguageSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ClientLibrarySettings. */ + interface IClientLibrarySettings { + + /** ClientLibrarySettings version */ + version?: (string|null); + + /** ClientLibrarySettings launchStage */ + launchStage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null); + + /** ClientLibrarySettings restNumericEnums */ + restNumericEnums?: (boolean|null); + + /** ClientLibrarySettings javaSettings */ + javaSettings?: (google.api.IJavaSettings|null); + + /** ClientLibrarySettings cppSettings */ + cppSettings?: (google.api.ICppSettings|null); + + /** ClientLibrarySettings phpSettings */ + phpSettings?: (google.api.IPhpSettings|null); + + /** ClientLibrarySettings pythonSettings */ + pythonSettings?: (google.api.IPythonSettings|null); + + /** ClientLibrarySettings nodeSettings */ + nodeSettings?: (google.api.INodeSettings|null); + + /** ClientLibrarySettings dotnetSettings */ + dotnetSettings?: (google.api.IDotnetSettings|null); + + /** ClientLibrarySettings rubySettings */ + rubySettings?: (google.api.IRubySettings|null); + + /** ClientLibrarySettings goSettings */ + goSettings?: (google.api.IGoSettings|null); + } + + /** Represents a ClientLibrarySettings. */ + class ClientLibrarySettings implements IClientLibrarySettings { + + /** + * Constructs a new ClientLibrarySettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IClientLibrarySettings); + + /** ClientLibrarySettings version. */ + public version: string; + + /** ClientLibrarySettings launchStage. */ + public launchStage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage); + + /** ClientLibrarySettings restNumericEnums. */ + public restNumericEnums: boolean; + + /** ClientLibrarySettings javaSettings. */ + public javaSettings?: (google.api.IJavaSettings|null); + + /** ClientLibrarySettings cppSettings. */ + public cppSettings?: (google.api.ICppSettings|null); + + /** ClientLibrarySettings phpSettings. */ + public phpSettings?: (google.api.IPhpSettings|null); + + /** ClientLibrarySettings pythonSettings. */ + public pythonSettings?: (google.api.IPythonSettings|null); + + /** ClientLibrarySettings nodeSettings. */ + public nodeSettings?: (google.api.INodeSettings|null); + + /** ClientLibrarySettings dotnetSettings. */ + public dotnetSettings?: (google.api.IDotnetSettings|null); + + /** ClientLibrarySettings rubySettings. */ + public rubySettings?: (google.api.IRubySettings|null); + + /** ClientLibrarySettings goSettings. */ + public goSettings?: (google.api.IGoSettings|null); + + /** + * Creates a new ClientLibrarySettings instance using the specified properties. + * @param [properties] Properties to set + * @returns ClientLibrarySettings instance + */ + public static create(properties?: google.api.IClientLibrarySettings): google.api.ClientLibrarySettings; + + /** + * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages. + * @param message ClientLibrarySettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages. + * @param message ClientLibrarySettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ClientLibrarySettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ClientLibrarySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ClientLibrarySettings; + + /** + * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ClientLibrarySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ClientLibrarySettings; + + /** + * Verifies a ClientLibrarySettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ClientLibrarySettings + */ + public static fromObject(object: { [k: string]: any }): google.api.ClientLibrarySettings; + + /** + * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified. + * @param message ClientLibrarySettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.ClientLibrarySettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ClientLibrarySettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ClientLibrarySettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a Publishing. */ + interface IPublishing { + + /** Publishing methodSettings */ + methodSettings?: (google.api.IMethodSettings[]|null); + + /** Publishing newIssueUri */ + newIssueUri?: (string|null); + + /** Publishing documentationUri */ + documentationUri?: (string|null); + + /** Publishing apiShortName */ + apiShortName?: (string|null); + + /** Publishing githubLabel */ + githubLabel?: (string|null); + + /** Publishing codeownerGithubTeams */ + codeownerGithubTeams?: (string[]|null); + + /** Publishing docTagPrefix */ + docTagPrefix?: (string|null); + + /** Publishing organization */ + organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null); + + /** Publishing librarySettings */ + librarySettings?: (google.api.IClientLibrarySettings[]|null); + } + + /** Represents a Publishing. */ + class Publishing implements IPublishing { + + /** + * Constructs a new Publishing. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IPublishing); + + /** Publishing methodSettings. */ + public methodSettings: google.api.IMethodSettings[]; + + /** Publishing newIssueUri. */ + public newIssueUri: string; + + /** Publishing documentationUri. */ + public documentationUri: string; + + /** Publishing apiShortName. */ + public apiShortName: string; + + /** Publishing githubLabel. */ + public githubLabel: string; + + /** Publishing codeownerGithubTeams. */ + public codeownerGithubTeams: string[]; + + /** Publishing docTagPrefix. */ + public docTagPrefix: string; + + /** Publishing organization. */ + public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization); + + /** Publishing librarySettings. */ + public librarySettings: google.api.IClientLibrarySettings[]; + + /** + * Creates a new Publishing instance using the specified properties. + * @param [properties] Properties to set + * @returns Publishing instance + */ + public static create(properties?: google.api.IPublishing): google.api.Publishing; + + /** + * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages. + * @param message Publishing message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages. + * @param message Publishing message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Publishing message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Publishing + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Publishing; + + /** + * Decodes a Publishing message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Publishing + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Publishing; + + /** + * Verifies a Publishing message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Publishing message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Publishing + */ + public static fromObject(object: { [k: string]: any }): google.api.Publishing; + + /** + * Creates a plain object from a Publishing message. Also converts values to other types if specified. + * @param message Publishing + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.Publishing, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Publishing to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Publishing + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a JavaSettings. */ + interface IJavaSettings { + + /** JavaSettings libraryPackage */ + libraryPackage?: (string|null); + + /** JavaSettings serviceClassNames */ + serviceClassNames?: ({ [k: string]: string }|null); + + /** JavaSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a JavaSettings. */ + class JavaSettings implements IJavaSettings { + + /** + * Constructs a new JavaSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IJavaSettings); + + /** JavaSettings libraryPackage. */ + public libraryPackage: string; + + /** JavaSettings serviceClassNames. */ + public serviceClassNames: { [k: string]: string }; + + /** JavaSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new JavaSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns JavaSettings instance + */ + public static create(properties?: google.api.IJavaSettings): google.api.JavaSettings; + + /** + * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages. + * @param message JavaSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages. + * @param message JavaSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a JavaSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns JavaSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.JavaSettings; + + /** + * Decodes a JavaSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns JavaSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.JavaSettings; + + /** + * Verifies a JavaSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns JavaSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.JavaSettings; + + /** + * Creates a plain object from a JavaSettings message. Also converts values to other types if specified. + * @param message JavaSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.JavaSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this JavaSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for JavaSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CppSettings. */ + interface ICppSettings { + + /** CppSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a CppSettings. */ + class CppSettings implements ICppSettings { + + /** + * Constructs a new CppSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ICppSettings); + + /** CppSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new CppSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns CppSettings instance + */ + public static create(properties?: google.api.ICppSettings): google.api.CppSettings; + + /** + * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages. + * @param message CppSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages. + * @param message CppSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CppSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CppSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CppSettings; + + /** + * Decodes a CppSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CppSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CppSettings; + + /** + * Verifies a CppSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CppSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CppSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.CppSettings; + + /** + * Creates a plain object from a CppSettings message. Also converts values to other types if specified. + * @param message CppSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.CppSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CppSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CppSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PhpSettings. */ + interface IPhpSettings { + + /** PhpSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a PhpSettings. */ + class PhpSettings implements IPhpSettings { + + /** + * Constructs a new PhpSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IPhpSettings); + + /** PhpSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new PhpSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns PhpSettings instance + */ + public static create(properties?: google.api.IPhpSettings): google.api.PhpSettings; + + /** + * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages. + * @param message PhpSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages. + * @param message PhpSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PhpSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PhpSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PhpSettings; + + /** + * Decodes a PhpSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PhpSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PhpSettings; + + /** + * Verifies a PhpSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PhpSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.PhpSettings; + + /** + * Creates a plain object from a PhpSettings message. Also converts values to other types if specified. + * @param message PhpSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.PhpSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PhpSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PhpSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PythonSettings. */ + interface IPythonSettings { + + /** PythonSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a PythonSettings. */ + class PythonSettings implements IPythonSettings { + + /** + * Constructs a new PythonSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IPythonSettings); + + /** PythonSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new PythonSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns PythonSettings instance + */ + public static create(properties?: google.api.IPythonSettings): google.api.PythonSettings; + + /** + * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages. + * @param message PythonSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages. + * @param message PythonSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PythonSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PythonSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings; + + /** + * Decodes a PythonSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PythonSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings; + + /** + * Verifies a PythonSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PythonSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.PythonSettings; + + /** + * Creates a plain object from a PythonSettings message. Also converts values to other types if specified. + * @param message PythonSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.PythonSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PythonSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PythonSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a NodeSettings. */ + interface INodeSettings { + + /** NodeSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a NodeSettings. */ + class NodeSettings implements INodeSettings { + + /** + * Constructs a new NodeSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.INodeSettings); + + /** NodeSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new NodeSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns NodeSettings instance + */ + public static create(properties?: google.api.INodeSettings): google.api.NodeSettings; + + /** + * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages. + * @param message NodeSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages. + * @param message NodeSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NodeSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns NodeSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.NodeSettings; + + /** + * Decodes a NodeSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns NodeSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.NodeSettings; + + /** + * Verifies a NodeSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns NodeSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.NodeSettings; + + /** + * Creates a plain object from a NodeSettings message. Also converts values to other types if specified. + * @param message NodeSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.NodeSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this NodeSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for NodeSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a DotnetSettings. */ + interface IDotnetSettings { + + /** DotnetSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a DotnetSettings. */ + class DotnetSettings implements IDotnetSettings { + + /** + * Constructs a new DotnetSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IDotnetSettings); + + /** DotnetSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new DotnetSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns DotnetSettings instance + */ + public static create(properties?: google.api.IDotnetSettings): google.api.DotnetSettings; + + /** + * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages. + * @param message DotnetSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages. + * @param message DotnetSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DotnetSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns DotnetSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.DotnetSettings; + + /** + * Decodes a DotnetSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns DotnetSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.DotnetSettings; + + /** + * Verifies a DotnetSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DotnetSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.DotnetSettings; + + /** + * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified. + * @param message DotnetSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.DotnetSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DotnetSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for DotnetSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RubySettings. */ + interface IRubySettings { + + /** RubySettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a RubySettings. */ + class RubySettings implements IRubySettings { + + /** + * Constructs a new RubySettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IRubySettings); + + /** RubySettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new RubySettings instance using the specified properties. + * @param [properties] Properties to set + * @returns RubySettings instance + */ + public static create(properties?: google.api.IRubySettings): google.api.RubySettings; + + /** + * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages. + * @param message RubySettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages. + * @param message RubySettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RubySettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RubySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RubySettings; + + /** + * Decodes a RubySettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RubySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RubySettings; + + /** + * Verifies a RubySettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RubySettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RubySettings + */ + public static fromObject(object: { [k: string]: any }): google.api.RubySettings; + + /** + * Creates a plain object from a RubySettings message. Also converts values to other types if specified. + * @param message RubySettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.RubySettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RubySettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RubySettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a GoSettings. */ + interface IGoSettings { + + /** GoSettings common */ + common?: (google.api.ICommonLanguageSettings|null); + } + + /** Represents a GoSettings. */ + class GoSettings implements IGoSettings { + + /** + * Constructs a new GoSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IGoSettings); + + /** GoSettings common. */ + public common?: (google.api.ICommonLanguageSettings|null); + + /** + * Creates a new GoSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns GoSettings instance + */ + public static create(properties?: google.api.IGoSettings): google.api.GoSettings; + + /** + * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages. + * @param message GoSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages. + * @param message GoSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GoSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns GoSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.GoSettings; + + /** + * Decodes a GoSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns GoSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.GoSettings; + + /** + * Verifies a GoSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a GoSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns GoSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.GoSettings; + + /** + * Creates a plain object from a GoSettings message. Also converts values to other types if specified. + * @param message GoSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.GoSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this GoSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for GoSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a MethodSettings. */ + interface IMethodSettings { + + /** MethodSettings selector */ + selector?: (string|null); + + /** MethodSettings longRunning */ + longRunning?: (google.api.MethodSettings.ILongRunning|null); + } + + /** Represents a MethodSettings. */ + class MethodSettings implements IMethodSettings { + + /** + * Constructs a new MethodSettings. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.IMethodSettings); + + /** MethodSettings selector. */ + public selector: string; + + /** MethodSettings longRunning. */ + public longRunning?: (google.api.MethodSettings.ILongRunning|null); + + /** + * Creates a new MethodSettings instance using the specified properties. + * @param [properties] Properties to set + * @returns MethodSettings instance + */ + public static create(properties?: google.api.IMethodSettings): google.api.MethodSettings; + + /** + * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages. + * @param message MethodSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages. + * @param message MethodSettings message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodSettings message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MethodSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings; + + /** + * Decodes a MethodSettings message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MethodSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings; + + /** + * Verifies a MethodSettings message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MethodSettings + */ + public static fromObject(object: { [k: string]: any }): google.api.MethodSettings; + + /** + * Creates a plain object from a MethodSettings message. Also converts values to other types if specified. + * @param message MethodSettings + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.MethodSettings, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodSettings to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MethodSettings + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace MethodSettings { + + /** Properties of a LongRunning. */ + interface ILongRunning { + + /** LongRunning initialPollDelay */ + initialPollDelay?: (google.protobuf.IDuration|null); + + /** LongRunning pollDelayMultiplier */ + pollDelayMultiplier?: (number|null); + + /** LongRunning maxPollDelay */ + maxPollDelay?: (google.protobuf.IDuration|null); + + /** LongRunning totalPollTimeout */ + totalPollTimeout?: (google.protobuf.IDuration|null); + } + + /** Represents a LongRunning. */ + class LongRunning implements ILongRunning { + + /** + * Constructs a new LongRunning. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.MethodSettings.ILongRunning); + + /** LongRunning initialPollDelay. */ + public initialPollDelay?: (google.protobuf.IDuration|null); + + /** LongRunning pollDelayMultiplier. */ + public pollDelayMultiplier: number; + + /** LongRunning maxPollDelay. */ + public maxPollDelay?: (google.protobuf.IDuration|null); + + /** LongRunning totalPollTimeout. */ + public totalPollTimeout?: (google.protobuf.IDuration|null); + + /** + * Creates a new LongRunning instance using the specified properties. + * @param [properties] Properties to set + * @returns LongRunning instance + */ + public static create(properties?: google.api.MethodSettings.ILongRunning): google.api.MethodSettings.LongRunning; + + /** + * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages. + * @param message LongRunning message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages. + * @param message LongRunning message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LongRunning message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns LongRunning + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings.LongRunning; + + /** + * Decodes a LongRunning message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns LongRunning + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings.LongRunning; + + /** + * Verifies a LongRunning message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a LongRunning message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns LongRunning + */ + public static fromObject(object: { [k: string]: any }): google.api.MethodSettings.LongRunning; + + /** + * Creates a plain object from a LongRunning message. Also converts values to other types if specified. + * @param message LongRunning + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.MethodSettings.LongRunning, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this LongRunning to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for LongRunning + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + + /** ClientLibraryOrganization enum. */ + enum ClientLibraryOrganization { + CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0, + CLOUD = 1, + ADS = 2, + PHOTOS = 3, + STREET_VIEW = 4 + } + + /** ClientLibraryDestination enum. */ + enum ClientLibraryDestination { + CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0, + GITHUB = 10, + PACKAGE_MANAGER = 20 + } + + /** LaunchStage enum. */ + enum LaunchStage { + LAUNCH_STAGE_UNSPECIFIED = 0, + UNIMPLEMENTED = 6, + PRELAUNCH = 7, + EARLY_ACCESS = 1, + ALPHA = 2, + BETA = 3, + GA = 4, + DEPRECATED = 5 + } + /** FieldBehavior enum. */ enum FieldBehavior { FIELD_BEHAVIOR_UNSPECIFIED = 0, @@ -10216,6 +11658,9 @@ export namespace google { /** MessageOptions mapEntry */ mapEntry?: (boolean|null); + /** MessageOptions deprecatedLegacyJsonFieldConflicts */ + deprecatedLegacyJsonFieldConflicts?: (boolean|null); + /** MessageOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -10241,6 +11686,9 @@ export namespace google { /** MessageOptions mapEntry. */ public mapEntry: boolean; + /** MessageOptions deprecatedLegacyJsonFieldConflicts. */ + public deprecatedLegacyJsonFieldConflicts: boolean; + /** MessageOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -10346,6 +11794,15 @@ export namespace google { /** FieldOptions weak */ weak?: (boolean|null); + /** FieldOptions debugRedact */ + debugRedact?: (boolean|null); + + /** FieldOptions retention */ + retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null); + + /** FieldOptions target */ + target?: (google.protobuf.FieldOptions.OptionTargetType|keyof typeof google.protobuf.FieldOptions.OptionTargetType|null); + /** FieldOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); @@ -10383,6 +11840,15 @@ export namespace google { /** FieldOptions weak. */ public weak: boolean; + /** FieldOptions debugRedact. */ + public debugRedact: boolean; + + /** FieldOptions retention. */ + public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention); + + /** FieldOptions target. */ + public target: (google.protobuf.FieldOptions.OptionTargetType|keyof typeof google.protobuf.FieldOptions.OptionTargetType); + /** FieldOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -10479,6 +11945,27 @@ export namespace google { JS_STRING = 1, JS_NUMBER = 2 } + + /** OptionRetention enum. */ + enum OptionRetention { + RETENTION_UNKNOWN = 0, + RETENTION_RUNTIME = 1, + RETENTION_SOURCE = 2 + } + + /** OptionTargetType enum. */ + enum OptionTargetType { + TARGET_TYPE_UNKNOWN = 0, + TARGET_TYPE_FILE = 1, + TARGET_TYPE_EXTENSION_RANGE = 2, + TARGET_TYPE_MESSAGE = 3, + TARGET_TYPE_FIELD = 4, + TARGET_TYPE_ONEOF = 5, + TARGET_TYPE_ENUM = 6, + TARGET_TYPE_ENUM_ENTRY = 7, + TARGET_TYPE_SERVICE = 8, + TARGET_TYPE_METHOD = 9 + } } /** Properties of an OneofOptions. */ @@ -10587,6 +12074,9 @@ export namespace google { /** EnumOptions deprecated */ deprecated?: (boolean|null); + /** EnumOptions deprecatedLegacyJsonFieldConflicts */ + deprecatedLegacyJsonFieldConflicts?: (boolean|null); + /** EnumOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -10606,6 +12096,9 @@ export namespace google { /** EnumOptions deprecated. */ public deprecated: boolean; + /** EnumOptions deprecatedLegacyJsonFieldConflicts. */ + public deprecatedLegacyJsonFieldConflicts: boolean; + /** EnumOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -11721,206 +13214,206 @@ export namespace google { } } - /** Properties of an Any. */ - interface IAny { + /** Properties of a Duration. */ + interface IDuration { - /** Any type_url */ - type_url?: (string|null); + /** Duration seconds */ + seconds?: (number|Long|string|null); - /** Any value */ - value?: (Uint8Array|string|null); + /** Duration nanos */ + nanos?: (number|null); } - /** Represents an Any. */ - class Any implements IAny { + /** Represents a Duration. */ + class Duration implements IDuration { /** - * Constructs a new Any. + * Constructs a new Duration. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IAny); + constructor(properties?: google.protobuf.IDuration); - /** Any type_url. */ - public type_url: string; + /** Duration seconds. */ + public seconds: (number|Long|string); - /** Any value. */ - public value: (Uint8Array|string); + /** Duration nanos. */ + public nanos: number; /** - * Creates a new Any instance using the specified properties. + * Creates a new Duration instance using the specified properties. * @param [properties] Properties to set - * @returns Any instance + * @returns Duration instance */ - public static create(properties?: google.protobuf.IAny): google.protobuf.Any; + public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration; /** - * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. - * @param message Any message or plain object to encode + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param message Duration message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. - * @param message Any message or plain object to encode + * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param message Duration message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes an Any message from the specified reader or buffer. + * Decodes a Duration message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Any + * @returns Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration; /** - * Decodes an Any message from the specified reader or buffer, length delimited. + * Decodes a Duration message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Any + * @returns Duration * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration; /** - * Verifies an Any message. + * Verifies a Duration message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates an Any message from a plain object. Also converts values to their respective internal types. + * Creates a Duration message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Any + * @returns Duration */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Any; + public static fromObject(object: { [k: string]: any }): google.protobuf.Duration; /** - * Creates a plain object from an Any message. Also converts values to other types if specified. - * @param message Any + * Creates a plain object from a Duration message. Also converts values to other types if specified. + * @param message Duration * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Any, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Any to JSON. + * Converts this Duration to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Any + * Gets the default type url for Duration * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Duration. */ - interface IDuration { + /** Properties of an Any. */ + interface IAny { - /** Duration seconds */ - seconds?: (number|Long|string|null); + /** Any type_url */ + type_url?: (string|null); - /** Duration nanos */ - nanos?: (number|null); + /** Any value */ + value?: (Uint8Array|string|null); } - /** Represents a Duration. */ - class Duration implements IDuration { + /** Represents an Any. */ + class Any implements IAny { /** - * Constructs a new Duration. + * Constructs a new Any. * @param [properties] Properties to set */ - constructor(properties?: google.protobuf.IDuration); + constructor(properties?: google.protobuf.IAny); - /** Duration seconds. */ - public seconds: (number|Long|string); + /** Any type_url. */ + public type_url: string; - /** Duration nanos. */ - public nanos: number; + /** Any value. */ + public value: (Uint8Array|string); /** - * Creates a new Duration instance using the specified properties. + * Creates a new Any instance using the specified properties. * @param [properties] Properties to set - * @returns Duration instance + * @returns Any instance */ - public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration; + public static create(properties?: google.protobuf.IAny): google.protobuf.Any; /** - * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. - * @param message Duration message or plain object to encode + * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @param message Any message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. - * @param message Duration message or plain object to encode + * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @param message Any message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.protobuf.IAny, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Duration message from the specified reader or buffer. + * Decodes an Any message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Duration + * @returns Any * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any; /** - * Decodes a Duration message from the specified reader or buffer, length delimited. + * Decodes an Any message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Duration + * @returns Any * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any; /** - * Verifies a Duration message. + * Verifies an Any message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Duration message from a plain object. Also converts values to their respective internal types. + * Creates an Any message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Duration + * @returns Any */ - public static fromObject(object: { [k: string]: any }): google.protobuf.Duration; + public static fromObject(object: { [k: string]: any }): google.protobuf.Any; /** - * Creates a plain object from a Duration message. Also converts values to other types if specified. - * @param message Duration + * Creates a plain object from an Any message. Also converts values to other types if specified. + * @param message Any * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.protobuf.Any, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Duration to JSON. + * Converts this Any to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Duration + * Gets the default type url for Any * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index ff8b79715c0..98f1b3f167a 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -20803,6 +20803,3615 @@ return CustomHttpPattern; })(); + api.CommonLanguageSettings = (function() { + + /** + * Properties of a CommonLanguageSettings. + * @memberof google.api + * @interface ICommonLanguageSettings + * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri + * @property {Array.|null} [destinations] CommonLanguageSettings destinations + */ + + /** + * Constructs a new CommonLanguageSettings. + * @memberof google.api + * @classdesc Represents a CommonLanguageSettings. + * @implements ICommonLanguageSettings + * @constructor + * @param {google.api.ICommonLanguageSettings=} [properties] Properties to set + */ + function CommonLanguageSettings(properties) { + this.destinations = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CommonLanguageSettings referenceDocsUri. + * @member {string} referenceDocsUri + * @memberof google.api.CommonLanguageSettings + * @instance + */ + CommonLanguageSettings.prototype.referenceDocsUri = ""; + + /** + * CommonLanguageSettings destinations. + * @member {Array.} destinations + * @memberof google.api.CommonLanguageSettings + * @instance + */ + CommonLanguageSettings.prototype.destinations = $util.emptyArray; + + /** + * Creates a new CommonLanguageSettings instance using the specified properties. + * @function create + * @memberof google.api.CommonLanguageSettings + * @static + * @param {google.api.ICommonLanguageSettings=} [properties] Properties to set + * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings instance + */ + CommonLanguageSettings.create = function create(properties) { + return new CommonLanguageSettings(properties); + }; + + /** + * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages. + * @function encode + * @memberof google.api.CommonLanguageSettings + * @static + * @param {google.api.ICommonLanguageSettings} message CommonLanguageSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommonLanguageSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.referenceDocsUri != null && Object.hasOwnProperty.call(message, "referenceDocsUri")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.referenceDocsUri); + if (message.destinations != null && message.destinations.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.destinations.length; ++i) + writer.int32(message.destinations[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.CommonLanguageSettings + * @static + * @param {google.api.ICommonLanguageSettings} message CommonLanguageSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CommonLanguageSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CommonLanguageSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.CommonLanguageSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommonLanguageSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.referenceDocsUri = reader.string(); + break; + } + case 2: { + if (!(message.destinations && message.destinations.length)) + message.destinations = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.destinations.push(reader.int32()); + } else + message.destinations.push(reader.int32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.CommonLanguageSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CommonLanguageSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CommonLanguageSettings message. + * @function verify + * @memberof google.api.CommonLanguageSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CommonLanguageSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) + if (!$util.isString(message.referenceDocsUri)) + return "referenceDocsUri: string expected"; + if (message.destinations != null && message.hasOwnProperty("destinations")) { + if (!Array.isArray(message.destinations)) + return "destinations: array expected"; + for (var i = 0; i < message.destinations.length; ++i) + switch (message.destinations[i]) { + default: + return "destinations: enum value[] expected"; + case 0: + case 10: + case 20: + break; + } + } + return null; + }; + + /** + * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.CommonLanguageSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings + */ + CommonLanguageSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.CommonLanguageSettings) + return object; + var message = new $root.google.api.CommonLanguageSettings(); + if (object.referenceDocsUri != null) + message.referenceDocsUri = String(object.referenceDocsUri); + if (object.destinations) { + if (!Array.isArray(object.destinations)) + throw TypeError(".google.api.CommonLanguageSettings.destinations: array expected"); + message.destinations = []; + for (var i = 0; i < object.destinations.length; ++i) + switch (object.destinations[i]) { + default: + if (typeof object.destinations[i] === "number") { + message.destinations[i] = object.destinations[i]; + break; + } + case "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": + case 0: + message.destinations[i] = 0; + break; + case "GITHUB": + case 10: + message.destinations[i] = 10; + break; + case "PACKAGE_MANAGER": + case 20: + message.destinations[i] = 20; + break; + } + } + return message; + }; + + /** + * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.CommonLanguageSettings + * @static + * @param {google.api.CommonLanguageSettings} message CommonLanguageSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CommonLanguageSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.destinations = []; + if (options.defaults) + object.referenceDocsUri = ""; + if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) + object.referenceDocsUri = message.referenceDocsUri; + if (message.destinations && message.destinations.length) { + object.destinations = []; + for (var j = 0; j < message.destinations.length; ++j) + object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j]; + } + return object; + }; + + /** + * Converts this CommonLanguageSettings to JSON. + * @function toJSON + * @memberof google.api.CommonLanguageSettings + * @instance + * @returns {Object.} JSON object + */ + CommonLanguageSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CommonLanguageSettings + * @function getTypeUrl + * @memberof google.api.CommonLanguageSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CommonLanguageSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.CommonLanguageSettings"; + }; + + return CommonLanguageSettings; + })(); + + api.ClientLibrarySettings = (function() { + + /** + * Properties of a ClientLibrarySettings. + * @memberof google.api + * @interface IClientLibrarySettings + * @property {string|null} [version] ClientLibrarySettings version + * @property {google.api.LaunchStage|null} [launchStage] ClientLibrarySettings launchStage + * @property {boolean|null} [restNumericEnums] ClientLibrarySettings restNumericEnums + * @property {google.api.IJavaSettings|null} [javaSettings] ClientLibrarySettings javaSettings + * @property {google.api.ICppSettings|null} [cppSettings] ClientLibrarySettings cppSettings + * @property {google.api.IPhpSettings|null} [phpSettings] ClientLibrarySettings phpSettings + * @property {google.api.IPythonSettings|null} [pythonSettings] ClientLibrarySettings pythonSettings + * @property {google.api.INodeSettings|null} [nodeSettings] ClientLibrarySettings nodeSettings + * @property {google.api.IDotnetSettings|null} [dotnetSettings] ClientLibrarySettings dotnetSettings + * @property {google.api.IRubySettings|null} [rubySettings] ClientLibrarySettings rubySettings + * @property {google.api.IGoSettings|null} [goSettings] ClientLibrarySettings goSettings + */ + + /** + * Constructs a new ClientLibrarySettings. + * @memberof google.api + * @classdesc Represents a ClientLibrarySettings. + * @implements IClientLibrarySettings + * @constructor + * @param {google.api.IClientLibrarySettings=} [properties] Properties to set + */ + function ClientLibrarySettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ClientLibrarySettings version. + * @member {string} version + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.version = ""; + + /** + * ClientLibrarySettings launchStage. + * @member {google.api.LaunchStage} launchStage + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.launchStage = 0; + + /** + * ClientLibrarySettings restNumericEnums. + * @member {boolean} restNumericEnums + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.restNumericEnums = false; + + /** + * ClientLibrarySettings javaSettings. + * @member {google.api.IJavaSettings|null|undefined} javaSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.javaSettings = null; + + /** + * ClientLibrarySettings cppSettings. + * @member {google.api.ICppSettings|null|undefined} cppSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.cppSettings = null; + + /** + * ClientLibrarySettings phpSettings. + * @member {google.api.IPhpSettings|null|undefined} phpSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.phpSettings = null; + + /** + * ClientLibrarySettings pythonSettings. + * @member {google.api.IPythonSettings|null|undefined} pythonSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.pythonSettings = null; + + /** + * ClientLibrarySettings nodeSettings. + * @member {google.api.INodeSettings|null|undefined} nodeSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.nodeSettings = null; + + /** + * ClientLibrarySettings dotnetSettings. + * @member {google.api.IDotnetSettings|null|undefined} dotnetSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.dotnetSettings = null; + + /** + * ClientLibrarySettings rubySettings. + * @member {google.api.IRubySettings|null|undefined} rubySettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.rubySettings = null; + + /** + * ClientLibrarySettings goSettings. + * @member {google.api.IGoSettings|null|undefined} goSettings + * @memberof google.api.ClientLibrarySettings + * @instance + */ + ClientLibrarySettings.prototype.goSettings = null; + + /** + * Creates a new ClientLibrarySettings instance using the specified properties. + * @function create + * @memberof google.api.ClientLibrarySettings + * @static + * @param {google.api.IClientLibrarySettings=} [properties] Properties to set + * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings instance + */ + ClientLibrarySettings.create = function create(properties) { + return new ClientLibrarySettings(properties); + }; + + /** + * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages. + * @function encode + * @memberof google.api.ClientLibrarySettings + * @static + * @param {google.api.IClientLibrarySettings} message ClientLibrarySettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ClientLibrarySettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.version != null && Object.hasOwnProperty.call(message, "version")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.version); + if (message.launchStage != null && Object.hasOwnProperty.call(message, "launchStage")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.launchStage); + if (message.restNumericEnums != null && Object.hasOwnProperty.call(message, "restNumericEnums")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.restNumericEnums); + if (message.javaSettings != null && Object.hasOwnProperty.call(message, "javaSettings")) + $root.google.api.JavaSettings.encode(message.javaSettings, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.cppSettings != null && Object.hasOwnProperty.call(message, "cppSettings")) + $root.google.api.CppSettings.encode(message.cppSettings, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + if (message.phpSettings != null && Object.hasOwnProperty.call(message, "phpSettings")) + $root.google.api.PhpSettings.encode(message.phpSettings, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); + if (message.pythonSettings != null && Object.hasOwnProperty.call(message, "pythonSettings")) + $root.google.api.PythonSettings.encode(message.pythonSettings, writer.uint32(/* id 24, wireType 2 =*/194).fork()).ldelim(); + if (message.nodeSettings != null && Object.hasOwnProperty.call(message, "nodeSettings")) + $root.google.api.NodeSettings.encode(message.nodeSettings, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim(); + if (message.dotnetSettings != null && Object.hasOwnProperty.call(message, "dotnetSettings")) + $root.google.api.DotnetSettings.encode(message.dotnetSettings, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim(); + if (message.rubySettings != null && Object.hasOwnProperty.call(message, "rubySettings")) + $root.google.api.RubySettings.encode(message.rubySettings, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim(); + if (message.goSettings != null && Object.hasOwnProperty.call(message, "goSettings")) + $root.google.api.GoSettings.encode(message.goSettings, writer.uint32(/* id 28, wireType 2 =*/226).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.ClientLibrarySettings + * @static + * @param {google.api.IClientLibrarySettings} message ClientLibrarySettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ClientLibrarySettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ClientLibrarySettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.ClientLibrarySettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ClientLibrarySettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.version = reader.string(); + break; + } + case 2: { + message.launchStage = reader.int32(); + break; + } + case 3: { + message.restNumericEnums = reader.bool(); + break; + } + case 21: { + message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32()); + break; + } + case 22: { + message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32()); + break; + } + case 23: { + message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32()); + break; + } + case 24: { + message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32()); + break; + } + case 25: { + message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32()); + break; + } + case 26: { + message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32()); + break; + } + case 27: { + message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32()); + break; + } + case 28: { + message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.ClientLibrarySettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ClientLibrarySettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ClientLibrarySettings message. + * @function verify + * @memberof google.api.ClientLibrarySettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ClientLibrarySettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.version != null && message.hasOwnProperty("version")) + if (!$util.isString(message.version)) + return "version: string expected"; + if (message.launchStage != null && message.hasOwnProperty("launchStage")) + switch (message.launchStage) { + default: + return "launchStage: enum value expected"; + case 0: + case 6: + case 7: + case 1: + case 2: + case 3: + case 4: + case 5: + break; + } + if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums")) + if (typeof message.restNumericEnums !== "boolean") + return "restNumericEnums: boolean expected"; + if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) { + var error = $root.google.api.JavaSettings.verify(message.javaSettings); + if (error) + return "javaSettings." + error; + } + if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) { + var error = $root.google.api.CppSettings.verify(message.cppSettings); + if (error) + return "cppSettings." + error; + } + if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) { + var error = $root.google.api.PhpSettings.verify(message.phpSettings); + if (error) + return "phpSettings." + error; + } + if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) { + var error = $root.google.api.PythonSettings.verify(message.pythonSettings); + if (error) + return "pythonSettings." + error; + } + if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) { + var error = $root.google.api.NodeSettings.verify(message.nodeSettings); + if (error) + return "nodeSettings." + error; + } + if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) { + var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings); + if (error) + return "dotnetSettings." + error; + } + if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) { + var error = $root.google.api.RubySettings.verify(message.rubySettings); + if (error) + return "rubySettings." + error; + } + if (message.goSettings != null && message.hasOwnProperty("goSettings")) { + var error = $root.google.api.GoSettings.verify(message.goSettings); + if (error) + return "goSettings." + error; + } + return null; + }; + + /** + * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.ClientLibrarySettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings + */ + ClientLibrarySettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.ClientLibrarySettings) + return object; + var message = new $root.google.api.ClientLibrarySettings(); + if (object.version != null) + message.version = String(object.version); + switch (object.launchStage) { + default: + if (typeof object.launchStage === "number") { + message.launchStage = object.launchStage; + break; + } + break; + case "LAUNCH_STAGE_UNSPECIFIED": + case 0: + message.launchStage = 0; + break; + case "UNIMPLEMENTED": + case 6: + message.launchStage = 6; + break; + case "PRELAUNCH": + case 7: + message.launchStage = 7; + break; + case "EARLY_ACCESS": + case 1: + message.launchStage = 1; + break; + case "ALPHA": + case 2: + message.launchStage = 2; + break; + case "BETA": + case 3: + message.launchStage = 3; + break; + case "GA": + case 4: + message.launchStage = 4; + break; + case "DEPRECATED": + case 5: + message.launchStage = 5; + break; + } + if (object.restNumericEnums != null) + message.restNumericEnums = Boolean(object.restNumericEnums); + if (object.javaSettings != null) { + if (typeof object.javaSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected"); + message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings); + } + if (object.cppSettings != null) { + if (typeof object.cppSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected"); + message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings); + } + if (object.phpSettings != null) { + if (typeof object.phpSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected"); + message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings); + } + if (object.pythonSettings != null) { + if (typeof object.pythonSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected"); + message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings); + } + if (object.nodeSettings != null) { + if (typeof object.nodeSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected"); + message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings); + } + if (object.dotnetSettings != null) { + if (typeof object.dotnetSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected"); + message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings); + } + if (object.rubySettings != null) { + if (typeof object.rubySettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected"); + message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings); + } + if (object.goSettings != null) { + if (typeof object.goSettings !== "object") + throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected"); + message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings); + } + return message; + }; + + /** + * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.ClientLibrarySettings + * @static + * @param {google.api.ClientLibrarySettings} message ClientLibrarySettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ClientLibrarySettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.version = ""; + object.launchStage = options.enums === String ? "LAUNCH_STAGE_UNSPECIFIED" : 0; + object.restNumericEnums = false; + object.javaSettings = null; + object.cppSettings = null; + object.phpSettings = null; + object.pythonSettings = null; + object.nodeSettings = null; + object.dotnetSettings = null; + object.rubySettings = null; + object.goSettings = null; + } + if (message.version != null && message.hasOwnProperty("version")) + object.version = message.version; + if (message.launchStage != null && message.hasOwnProperty("launchStage")) + object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] === undefined ? message.launchStage : $root.google.api.LaunchStage[message.launchStage] : message.launchStage; + if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums")) + object.restNumericEnums = message.restNumericEnums; + if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) + object.javaSettings = $root.google.api.JavaSettings.toObject(message.javaSettings, options); + if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) + object.cppSettings = $root.google.api.CppSettings.toObject(message.cppSettings, options); + if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) + object.phpSettings = $root.google.api.PhpSettings.toObject(message.phpSettings, options); + if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) + object.pythonSettings = $root.google.api.PythonSettings.toObject(message.pythonSettings, options); + if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) + object.nodeSettings = $root.google.api.NodeSettings.toObject(message.nodeSettings, options); + if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) + object.dotnetSettings = $root.google.api.DotnetSettings.toObject(message.dotnetSettings, options); + if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) + object.rubySettings = $root.google.api.RubySettings.toObject(message.rubySettings, options); + if (message.goSettings != null && message.hasOwnProperty("goSettings")) + object.goSettings = $root.google.api.GoSettings.toObject(message.goSettings, options); + return object; + }; + + /** + * Converts this ClientLibrarySettings to JSON. + * @function toJSON + * @memberof google.api.ClientLibrarySettings + * @instance + * @returns {Object.} JSON object + */ + ClientLibrarySettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ClientLibrarySettings + * @function getTypeUrl + * @memberof google.api.ClientLibrarySettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ClientLibrarySettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.ClientLibrarySettings"; + }; + + return ClientLibrarySettings; + })(); + + api.Publishing = (function() { + + /** + * Properties of a Publishing. + * @memberof google.api + * @interface IPublishing + * @property {Array.|null} [methodSettings] Publishing methodSettings + * @property {string|null} [newIssueUri] Publishing newIssueUri + * @property {string|null} [documentationUri] Publishing documentationUri + * @property {string|null} [apiShortName] Publishing apiShortName + * @property {string|null} [githubLabel] Publishing githubLabel + * @property {Array.|null} [codeownerGithubTeams] Publishing codeownerGithubTeams + * @property {string|null} [docTagPrefix] Publishing docTagPrefix + * @property {google.api.ClientLibraryOrganization|null} [organization] Publishing organization + * @property {Array.|null} [librarySettings] Publishing librarySettings + */ + + /** + * Constructs a new Publishing. + * @memberof google.api + * @classdesc Represents a Publishing. + * @implements IPublishing + * @constructor + * @param {google.api.IPublishing=} [properties] Properties to set + */ + function Publishing(properties) { + this.methodSettings = []; + this.codeownerGithubTeams = []; + this.librarySettings = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Publishing methodSettings. + * @member {Array.} methodSettings + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.methodSettings = $util.emptyArray; + + /** + * Publishing newIssueUri. + * @member {string} newIssueUri + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.newIssueUri = ""; + + /** + * Publishing documentationUri. + * @member {string} documentationUri + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.documentationUri = ""; + + /** + * Publishing apiShortName. + * @member {string} apiShortName + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.apiShortName = ""; + + /** + * Publishing githubLabel. + * @member {string} githubLabel + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.githubLabel = ""; + + /** + * Publishing codeownerGithubTeams. + * @member {Array.} codeownerGithubTeams + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.codeownerGithubTeams = $util.emptyArray; + + /** + * Publishing docTagPrefix. + * @member {string} docTagPrefix + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.docTagPrefix = ""; + + /** + * Publishing organization. + * @member {google.api.ClientLibraryOrganization} organization + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.organization = 0; + + /** + * Publishing librarySettings. + * @member {Array.} librarySettings + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.librarySettings = $util.emptyArray; + + /** + * Creates a new Publishing instance using the specified properties. + * @function create + * @memberof google.api.Publishing + * @static + * @param {google.api.IPublishing=} [properties] Properties to set + * @returns {google.api.Publishing} Publishing instance + */ + Publishing.create = function create(properties) { + return new Publishing(properties); + }; + + /** + * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages. + * @function encode + * @memberof google.api.Publishing + * @static + * @param {google.api.IPublishing} message Publishing message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Publishing.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.methodSettings != null && message.methodSettings.length) + for (var i = 0; i < message.methodSettings.length; ++i) + $root.google.api.MethodSettings.encode(message.methodSettings[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.newIssueUri != null && Object.hasOwnProperty.call(message, "newIssueUri")) + writer.uint32(/* id 101, wireType 2 =*/810).string(message.newIssueUri); + if (message.documentationUri != null && Object.hasOwnProperty.call(message, "documentationUri")) + writer.uint32(/* id 102, wireType 2 =*/818).string(message.documentationUri); + if (message.apiShortName != null && Object.hasOwnProperty.call(message, "apiShortName")) + writer.uint32(/* id 103, wireType 2 =*/826).string(message.apiShortName); + if (message.githubLabel != null && Object.hasOwnProperty.call(message, "githubLabel")) + writer.uint32(/* id 104, wireType 2 =*/834).string(message.githubLabel); + if (message.codeownerGithubTeams != null && message.codeownerGithubTeams.length) + for (var i = 0; i < message.codeownerGithubTeams.length; ++i) + writer.uint32(/* id 105, wireType 2 =*/842).string(message.codeownerGithubTeams[i]); + if (message.docTagPrefix != null && Object.hasOwnProperty.call(message, "docTagPrefix")) + writer.uint32(/* id 106, wireType 2 =*/850).string(message.docTagPrefix); + if (message.organization != null && Object.hasOwnProperty.call(message, "organization")) + writer.uint32(/* id 107, wireType 0 =*/856).int32(message.organization); + if (message.librarySettings != null && message.librarySettings.length) + for (var i = 0; i < message.librarySettings.length; ++i) + $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.Publishing + * @static + * @param {google.api.IPublishing} message Publishing message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Publishing.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Publishing message from the specified reader or buffer. + * @function decode + * @memberof google.api.Publishing + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.Publishing} Publishing + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Publishing.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: { + if (!(message.methodSettings && message.methodSettings.length)) + message.methodSettings = []; + message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32())); + break; + } + case 101: { + message.newIssueUri = reader.string(); + break; + } + case 102: { + message.documentationUri = reader.string(); + break; + } + case 103: { + message.apiShortName = reader.string(); + break; + } + case 104: { + message.githubLabel = reader.string(); + break; + } + case 105: { + if (!(message.codeownerGithubTeams && message.codeownerGithubTeams.length)) + message.codeownerGithubTeams = []; + message.codeownerGithubTeams.push(reader.string()); + break; + } + case 106: { + message.docTagPrefix = reader.string(); + break; + } + case 107: { + message.organization = reader.int32(); + break; + } + case 109: { + if (!(message.librarySettings && message.librarySettings.length)) + message.librarySettings = []; + message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Publishing message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.Publishing + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.Publishing} Publishing + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Publishing.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Publishing message. + * @function verify + * @memberof google.api.Publishing + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Publishing.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) { + if (!Array.isArray(message.methodSettings)) + return "methodSettings: array expected"; + for (var i = 0; i < message.methodSettings.length; ++i) { + var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]); + if (error) + return "methodSettings." + error; + } + } + if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri")) + if (!$util.isString(message.newIssueUri)) + return "newIssueUri: string expected"; + if (message.documentationUri != null && message.hasOwnProperty("documentationUri")) + if (!$util.isString(message.documentationUri)) + return "documentationUri: string expected"; + if (message.apiShortName != null && message.hasOwnProperty("apiShortName")) + if (!$util.isString(message.apiShortName)) + return "apiShortName: string expected"; + if (message.githubLabel != null && message.hasOwnProperty("githubLabel")) + if (!$util.isString(message.githubLabel)) + return "githubLabel: string expected"; + if (message.codeownerGithubTeams != null && message.hasOwnProperty("codeownerGithubTeams")) { + if (!Array.isArray(message.codeownerGithubTeams)) + return "codeownerGithubTeams: array expected"; + for (var i = 0; i < message.codeownerGithubTeams.length; ++i) + if (!$util.isString(message.codeownerGithubTeams[i])) + return "codeownerGithubTeams: string[] expected"; + } + if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix")) + if (!$util.isString(message.docTagPrefix)) + return "docTagPrefix: string expected"; + if (message.organization != null && message.hasOwnProperty("organization")) + switch (message.organization) { + default: + return "organization: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.librarySettings != null && message.hasOwnProperty("librarySettings")) { + if (!Array.isArray(message.librarySettings)) + return "librarySettings: array expected"; + for (var i = 0; i < message.librarySettings.length; ++i) { + var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]); + if (error) + return "librarySettings." + error; + } + } + return null; + }; + + /** + * Creates a Publishing message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.Publishing + * @static + * @param {Object.} object Plain object + * @returns {google.api.Publishing} Publishing + */ + Publishing.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.Publishing) + return object; + var message = new $root.google.api.Publishing(); + if (object.methodSettings) { + if (!Array.isArray(object.methodSettings)) + throw TypeError(".google.api.Publishing.methodSettings: array expected"); + message.methodSettings = []; + for (var i = 0; i < object.methodSettings.length; ++i) { + if (typeof object.methodSettings[i] !== "object") + throw TypeError(".google.api.Publishing.methodSettings: object expected"); + message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]); + } + } + if (object.newIssueUri != null) + message.newIssueUri = String(object.newIssueUri); + if (object.documentationUri != null) + message.documentationUri = String(object.documentationUri); + if (object.apiShortName != null) + message.apiShortName = String(object.apiShortName); + if (object.githubLabel != null) + message.githubLabel = String(object.githubLabel); + if (object.codeownerGithubTeams) { + if (!Array.isArray(object.codeownerGithubTeams)) + throw TypeError(".google.api.Publishing.codeownerGithubTeams: array expected"); + message.codeownerGithubTeams = []; + for (var i = 0; i < object.codeownerGithubTeams.length; ++i) + message.codeownerGithubTeams[i] = String(object.codeownerGithubTeams[i]); + } + if (object.docTagPrefix != null) + message.docTagPrefix = String(object.docTagPrefix); + switch (object.organization) { + default: + if (typeof object.organization === "number") { + message.organization = object.organization; + break; + } + break; + case "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": + case 0: + message.organization = 0; + break; + case "CLOUD": + case 1: + message.organization = 1; + break; + case "ADS": + case 2: + message.organization = 2; + break; + case "PHOTOS": + case 3: + message.organization = 3; + break; + case "STREET_VIEW": + case 4: + message.organization = 4; + break; + } + if (object.librarySettings) { + if (!Array.isArray(object.librarySettings)) + throw TypeError(".google.api.Publishing.librarySettings: array expected"); + message.librarySettings = []; + for (var i = 0; i < object.librarySettings.length; ++i) { + if (typeof object.librarySettings[i] !== "object") + throw TypeError(".google.api.Publishing.librarySettings: object expected"); + message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a Publishing message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.Publishing + * @static + * @param {google.api.Publishing} message Publishing + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Publishing.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.methodSettings = []; + object.codeownerGithubTeams = []; + object.librarySettings = []; + } + if (options.defaults) { + object.newIssueUri = ""; + object.documentationUri = ""; + object.apiShortName = ""; + object.githubLabel = ""; + object.docTagPrefix = ""; + object.organization = options.enums === String ? "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" : 0; + } + if (message.methodSettings && message.methodSettings.length) { + object.methodSettings = []; + for (var j = 0; j < message.methodSettings.length; ++j) + object.methodSettings[j] = $root.google.api.MethodSettings.toObject(message.methodSettings[j], options); + } + if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri")) + object.newIssueUri = message.newIssueUri; + if (message.documentationUri != null && message.hasOwnProperty("documentationUri")) + object.documentationUri = message.documentationUri; + if (message.apiShortName != null && message.hasOwnProperty("apiShortName")) + object.apiShortName = message.apiShortName; + if (message.githubLabel != null && message.hasOwnProperty("githubLabel")) + object.githubLabel = message.githubLabel; + if (message.codeownerGithubTeams && message.codeownerGithubTeams.length) { + object.codeownerGithubTeams = []; + for (var j = 0; j < message.codeownerGithubTeams.length; ++j) + object.codeownerGithubTeams[j] = message.codeownerGithubTeams[j]; + } + if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix")) + object.docTagPrefix = message.docTagPrefix; + if (message.organization != null && message.hasOwnProperty("organization")) + object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] === undefined ? message.organization : $root.google.api.ClientLibraryOrganization[message.organization] : message.organization; + if (message.librarySettings && message.librarySettings.length) { + object.librarySettings = []; + for (var j = 0; j < message.librarySettings.length; ++j) + object.librarySettings[j] = $root.google.api.ClientLibrarySettings.toObject(message.librarySettings[j], options); + } + return object; + }; + + /** + * Converts this Publishing to JSON. + * @function toJSON + * @memberof google.api.Publishing + * @instance + * @returns {Object.} JSON object + */ + Publishing.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Publishing + * @function getTypeUrl + * @memberof google.api.Publishing + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Publishing.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.Publishing"; + }; + + return Publishing; + })(); + + api.JavaSettings = (function() { + + /** + * Properties of a JavaSettings. + * @memberof google.api + * @interface IJavaSettings + * @property {string|null} [libraryPackage] JavaSettings libraryPackage + * @property {Object.|null} [serviceClassNames] JavaSettings serviceClassNames + * @property {google.api.ICommonLanguageSettings|null} [common] JavaSettings common + */ + + /** + * Constructs a new JavaSettings. + * @memberof google.api + * @classdesc Represents a JavaSettings. + * @implements IJavaSettings + * @constructor + * @param {google.api.IJavaSettings=} [properties] Properties to set + */ + function JavaSettings(properties) { + this.serviceClassNames = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * JavaSettings libraryPackage. + * @member {string} libraryPackage + * @memberof google.api.JavaSettings + * @instance + */ + JavaSettings.prototype.libraryPackage = ""; + + /** + * JavaSettings serviceClassNames. + * @member {Object.} serviceClassNames + * @memberof google.api.JavaSettings + * @instance + */ + JavaSettings.prototype.serviceClassNames = $util.emptyObject; + + /** + * JavaSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.JavaSettings + * @instance + */ + JavaSettings.prototype.common = null; + + /** + * Creates a new JavaSettings instance using the specified properties. + * @function create + * @memberof google.api.JavaSettings + * @static + * @param {google.api.IJavaSettings=} [properties] Properties to set + * @returns {google.api.JavaSettings} JavaSettings instance + */ + JavaSettings.create = function create(properties) { + return new JavaSettings(properties); + }; + + /** + * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages. + * @function encode + * @memberof google.api.JavaSettings + * @static + * @param {google.api.IJavaSettings} message JavaSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + JavaSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.libraryPackage != null && Object.hasOwnProperty.call(message, "libraryPackage")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.libraryPackage); + if (message.serviceClassNames != null && Object.hasOwnProperty.call(message, "serviceClassNames")) + for (var keys = Object.keys(message.serviceClassNames), i = 0; i < keys.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.serviceClassNames[keys[i]]).ldelim(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.JavaSettings + * @static + * @param {google.api.IJavaSettings} message JavaSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + JavaSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a JavaSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.JavaSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.JavaSettings} JavaSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + JavaSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.libraryPackage = reader.string(); + break; + } + case 2: { + if (message.serviceClassNames === $util.emptyObject) + message.serviceClassNames = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.serviceClassNames[key] = value; + break; + } + case 3: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a JavaSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.JavaSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.JavaSettings} JavaSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + JavaSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a JavaSettings message. + * @function verify + * @memberof google.api.JavaSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + JavaSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage")) + if (!$util.isString(message.libraryPackage)) + return "libraryPackage: string expected"; + if (message.serviceClassNames != null && message.hasOwnProperty("serviceClassNames")) { + if (!$util.isObject(message.serviceClassNames)) + return "serviceClassNames: object expected"; + var key = Object.keys(message.serviceClassNames); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.serviceClassNames[key[i]])) + return "serviceClassNames: string{k:string} expected"; + } + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.JavaSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.JavaSettings} JavaSettings + */ + JavaSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.JavaSettings) + return object; + var message = new $root.google.api.JavaSettings(); + if (object.libraryPackage != null) + message.libraryPackage = String(object.libraryPackage); + if (object.serviceClassNames) { + if (typeof object.serviceClassNames !== "object") + throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected"); + message.serviceClassNames = {}; + for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) + message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]); + } + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.JavaSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a JavaSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.JavaSettings + * @static + * @param {google.api.JavaSettings} message JavaSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + JavaSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.objects || options.defaults) + object.serviceClassNames = {}; + if (options.defaults) { + object.libraryPackage = ""; + object.common = null; + } + if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage")) + object.libraryPackage = message.libraryPackage; + var keys2; + if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) { + object.serviceClassNames = {}; + for (var j = 0; j < keys2.length; ++j) + object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]]; + } + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this JavaSettings to JSON. + * @function toJSON + * @memberof google.api.JavaSettings + * @instance + * @returns {Object.} JSON object + */ + JavaSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for JavaSettings + * @function getTypeUrl + * @memberof google.api.JavaSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + JavaSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.JavaSettings"; + }; + + return JavaSettings; + })(); + + api.CppSettings = (function() { + + /** + * Properties of a CppSettings. + * @memberof google.api + * @interface ICppSettings + * @property {google.api.ICommonLanguageSettings|null} [common] CppSettings common + */ + + /** + * Constructs a new CppSettings. + * @memberof google.api + * @classdesc Represents a CppSettings. + * @implements ICppSettings + * @constructor + * @param {google.api.ICppSettings=} [properties] Properties to set + */ + function CppSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CppSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.CppSettings + * @instance + */ + CppSettings.prototype.common = null; + + /** + * Creates a new CppSettings instance using the specified properties. + * @function create + * @memberof google.api.CppSettings + * @static + * @param {google.api.ICppSettings=} [properties] Properties to set + * @returns {google.api.CppSettings} CppSettings instance + */ + CppSettings.create = function create(properties) { + return new CppSettings(properties); + }; + + /** + * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages. + * @function encode + * @memberof google.api.CppSettings + * @static + * @param {google.api.ICppSettings} message CppSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CppSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.CppSettings + * @static + * @param {google.api.ICppSettings} message CppSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CppSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CppSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.CppSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.CppSettings} CppSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CppSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CppSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.CppSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.CppSettings} CppSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CppSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CppSettings message. + * @function verify + * @memberof google.api.CppSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CppSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a CppSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.CppSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.CppSettings} CppSettings + */ + CppSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.CppSettings) + return object; + var message = new $root.google.api.CppSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.CppSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a CppSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.CppSettings + * @static + * @param {google.api.CppSettings} message CppSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CppSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this CppSettings to JSON. + * @function toJSON + * @memberof google.api.CppSettings + * @instance + * @returns {Object.} JSON object + */ + CppSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CppSettings + * @function getTypeUrl + * @memberof google.api.CppSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CppSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.CppSettings"; + }; + + return CppSettings; + })(); + + api.PhpSettings = (function() { + + /** + * Properties of a PhpSettings. + * @memberof google.api + * @interface IPhpSettings + * @property {google.api.ICommonLanguageSettings|null} [common] PhpSettings common + */ + + /** + * Constructs a new PhpSettings. + * @memberof google.api + * @classdesc Represents a PhpSettings. + * @implements IPhpSettings + * @constructor + * @param {google.api.IPhpSettings=} [properties] Properties to set + */ + function PhpSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PhpSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.PhpSettings + * @instance + */ + PhpSettings.prototype.common = null; + + /** + * Creates a new PhpSettings instance using the specified properties. + * @function create + * @memberof google.api.PhpSettings + * @static + * @param {google.api.IPhpSettings=} [properties] Properties to set + * @returns {google.api.PhpSettings} PhpSettings instance + */ + PhpSettings.create = function create(properties) { + return new PhpSettings(properties); + }; + + /** + * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages. + * @function encode + * @memberof google.api.PhpSettings + * @static + * @param {google.api.IPhpSettings} message PhpSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PhpSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.PhpSettings + * @static + * @param {google.api.IPhpSettings} message PhpSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PhpSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PhpSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.PhpSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.PhpSettings} PhpSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PhpSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PhpSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.PhpSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.PhpSettings} PhpSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PhpSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PhpSettings message. + * @function verify + * @memberof google.api.PhpSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PhpSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.PhpSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.PhpSettings} PhpSettings + */ + PhpSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.PhpSettings) + return object; + var message = new $root.google.api.PhpSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.PhpSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a PhpSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.PhpSettings + * @static + * @param {google.api.PhpSettings} message PhpSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PhpSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this PhpSettings to JSON. + * @function toJSON + * @memberof google.api.PhpSettings + * @instance + * @returns {Object.} JSON object + */ + PhpSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PhpSettings + * @function getTypeUrl + * @memberof google.api.PhpSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PhpSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.PhpSettings"; + }; + + return PhpSettings; + })(); + + api.PythonSettings = (function() { + + /** + * Properties of a PythonSettings. + * @memberof google.api + * @interface IPythonSettings + * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common + */ + + /** + * Constructs a new PythonSettings. + * @memberof google.api + * @classdesc Represents a PythonSettings. + * @implements IPythonSettings + * @constructor + * @param {google.api.IPythonSettings=} [properties] Properties to set + */ + function PythonSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PythonSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.PythonSettings + * @instance + */ + PythonSettings.prototype.common = null; + + /** + * Creates a new PythonSettings instance using the specified properties. + * @function create + * @memberof google.api.PythonSettings + * @static + * @param {google.api.IPythonSettings=} [properties] Properties to set + * @returns {google.api.PythonSettings} PythonSettings instance + */ + PythonSettings.create = function create(properties) { + return new PythonSettings(properties); + }; + + /** + * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages. + * @function encode + * @memberof google.api.PythonSettings + * @static + * @param {google.api.IPythonSettings} message PythonSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PythonSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.PythonSettings + * @static + * @param {google.api.IPythonSettings} message PythonSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PythonSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PythonSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.PythonSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.PythonSettings} PythonSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PythonSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PythonSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.PythonSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.PythonSettings} PythonSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PythonSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PythonSettings message. + * @function verify + * @memberof google.api.PythonSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PythonSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.PythonSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.PythonSettings} PythonSettings + */ + PythonSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.PythonSettings) + return object; + var message = new $root.google.api.PythonSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.PythonSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a PythonSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.PythonSettings + * @static + * @param {google.api.PythonSettings} message PythonSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PythonSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this PythonSettings to JSON. + * @function toJSON + * @memberof google.api.PythonSettings + * @instance + * @returns {Object.} JSON object + */ + PythonSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PythonSettings + * @function getTypeUrl + * @memberof google.api.PythonSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PythonSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.PythonSettings"; + }; + + return PythonSettings; + })(); + + api.NodeSettings = (function() { + + /** + * Properties of a NodeSettings. + * @memberof google.api + * @interface INodeSettings + * @property {google.api.ICommonLanguageSettings|null} [common] NodeSettings common + */ + + /** + * Constructs a new NodeSettings. + * @memberof google.api + * @classdesc Represents a NodeSettings. + * @implements INodeSettings + * @constructor + * @param {google.api.INodeSettings=} [properties] Properties to set + */ + function NodeSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NodeSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.NodeSettings + * @instance + */ + NodeSettings.prototype.common = null; + + /** + * Creates a new NodeSettings instance using the specified properties. + * @function create + * @memberof google.api.NodeSettings + * @static + * @param {google.api.INodeSettings=} [properties] Properties to set + * @returns {google.api.NodeSettings} NodeSettings instance + */ + NodeSettings.create = function create(properties) { + return new NodeSettings(properties); + }; + + /** + * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages. + * @function encode + * @memberof google.api.NodeSettings + * @static + * @param {google.api.INodeSettings} message NodeSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NodeSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.NodeSettings + * @static + * @param {google.api.INodeSettings} message NodeSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NodeSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NodeSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.NodeSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.NodeSettings} NodeSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NodeSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NodeSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.NodeSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.NodeSettings} NodeSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NodeSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NodeSettings message. + * @function verify + * @memberof google.api.NodeSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + NodeSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.NodeSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.NodeSettings} NodeSettings + */ + NodeSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.NodeSettings) + return object; + var message = new $root.google.api.NodeSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.NodeSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a NodeSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.NodeSettings + * @static + * @param {google.api.NodeSettings} message NodeSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NodeSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this NodeSettings to JSON. + * @function toJSON + * @memberof google.api.NodeSettings + * @instance + * @returns {Object.} JSON object + */ + NodeSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for NodeSettings + * @function getTypeUrl + * @memberof google.api.NodeSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + NodeSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.NodeSettings"; + }; + + return NodeSettings; + })(); + + api.DotnetSettings = (function() { + + /** + * Properties of a DotnetSettings. + * @memberof google.api + * @interface IDotnetSettings + * @property {google.api.ICommonLanguageSettings|null} [common] DotnetSettings common + */ + + /** + * Constructs a new DotnetSettings. + * @memberof google.api + * @classdesc Represents a DotnetSettings. + * @implements IDotnetSettings + * @constructor + * @param {google.api.IDotnetSettings=} [properties] Properties to set + */ + function DotnetSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DotnetSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.common = null; + + /** + * Creates a new DotnetSettings instance using the specified properties. + * @function create + * @memberof google.api.DotnetSettings + * @static + * @param {google.api.IDotnetSettings=} [properties] Properties to set + * @returns {google.api.DotnetSettings} DotnetSettings instance + */ + DotnetSettings.create = function create(properties) { + return new DotnetSettings(properties); + }; + + /** + * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages. + * @function encode + * @memberof google.api.DotnetSettings + * @static + * @param {google.api.IDotnetSettings} message DotnetSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DotnetSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.DotnetSettings + * @static + * @param {google.api.IDotnetSettings} message DotnetSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DotnetSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DotnetSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.DotnetSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.DotnetSettings} DotnetSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DotnetSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DotnetSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.DotnetSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.DotnetSettings} DotnetSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DotnetSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DotnetSettings message. + * @function verify + * @memberof google.api.DotnetSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DotnetSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.DotnetSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.DotnetSettings} DotnetSettings + */ + DotnetSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.DotnetSettings) + return object; + var message = new $root.google.api.DotnetSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.DotnetSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.DotnetSettings + * @static + * @param {google.api.DotnetSettings} message DotnetSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DotnetSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this DotnetSettings to JSON. + * @function toJSON + * @memberof google.api.DotnetSettings + * @instance + * @returns {Object.} JSON object + */ + DotnetSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for DotnetSettings + * @function getTypeUrl + * @memberof google.api.DotnetSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + DotnetSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.DotnetSettings"; + }; + + return DotnetSettings; + })(); + + api.RubySettings = (function() { + + /** + * Properties of a RubySettings. + * @memberof google.api + * @interface IRubySettings + * @property {google.api.ICommonLanguageSettings|null} [common] RubySettings common + */ + + /** + * Constructs a new RubySettings. + * @memberof google.api + * @classdesc Represents a RubySettings. + * @implements IRubySettings + * @constructor + * @param {google.api.IRubySettings=} [properties] Properties to set + */ + function RubySettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RubySettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.RubySettings + * @instance + */ + RubySettings.prototype.common = null; + + /** + * Creates a new RubySettings instance using the specified properties. + * @function create + * @memberof google.api.RubySettings + * @static + * @param {google.api.IRubySettings=} [properties] Properties to set + * @returns {google.api.RubySettings} RubySettings instance + */ + RubySettings.create = function create(properties) { + return new RubySettings(properties); + }; + + /** + * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages. + * @function encode + * @memberof google.api.RubySettings + * @static + * @param {google.api.IRubySettings} message RubySettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RubySettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.RubySettings + * @static + * @param {google.api.IRubySettings} message RubySettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RubySettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RubySettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.RubySettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.RubySettings} RubySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RubySettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RubySettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.RubySettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.RubySettings} RubySettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RubySettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RubySettings message. + * @function verify + * @memberof google.api.RubySettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RubySettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a RubySettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.RubySettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.RubySettings} RubySettings + */ + RubySettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.RubySettings) + return object; + var message = new $root.google.api.RubySettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.RubySettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a RubySettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.RubySettings + * @static + * @param {google.api.RubySettings} message RubySettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RubySettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this RubySettings to JSON. + * @function toJSON + * @memberof google.api.RubySettings + * @instance + * @returns {Object.} JSON object + */ + RubySettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RubySettings + * @function getTypeUrl + * @memberof google.api.RubySettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RubySettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.RubySettings"; + }; + + return RubySettings; + })(); + + api.GoSettings = (function() { + + /** + * Properties of a GoSettings. + * @memberof google.api + * @interface IGoSettings + * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common + */ + + /** + * Constructs a new GoSettings. + * @memberof google.api + * @classdesc Represents a GoSettings. + * @implements IGoSettings + * @constructor + * @param {google.api.IGoSettings=} [properties] Properties to set + */ + function GoSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GoSettings common. + * @member {google.api.ICommonLanguageSettings|null|undefined} common + * @memberof google.api.GoSettings + * @instance + */ + GoSettings.prototype.common = null; + + /** + * Creates a new GoSettings instance using the specified properties. + * @function create + * @memberof google.api.GoSettings + * @static + * @param {google.api.IGoSettings=} [properties] Properties to set + * @returns {google.api.GoSettings} GoSettings instance + */ + GoSettings.create = function create(properties) { + return new GoSettings(properties); + }; + + /** + * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages. + * @function encode + * @memberof google.api.GoSettings + * @static + * @param {google.api.IGoSettings} message GoSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GoSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.GoSettings + * @static + * @param {google.api.IGoSettings} message GoSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GoSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GoSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.GoSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.GoSettings} GoSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GoSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GoSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.GoSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.GoSettings} GoSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GoSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GoSettings message. + * @function verify + * @memberof google.api.GoSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + GoSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.common != null && message.hasOwnProperty("common")) { + var error = $root.google.api.CommonLanguageSettings.verify(message.common); + if (error) + return "common." + error; + } + return null; + }; + + /** + * Creates a GoSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.GoSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.GoSettings} GoSettings + */ + GoSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.GoSettings) + return object; + var message = new $root.google.api.GoSettings(); + if (object.common != null) { + if (typeof object.common !== "object") + throw TypeError(".google.api.GoSettings.common: object expected"); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + } + return message; + }; + + /** + * Creates a plain object from a GoSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.GoSettings + * @static + * @param {google.api.GoSettings} message GoSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GoSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.common = null; + if (message.common != null && message.hasOwnProperty("common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + return object; + }; + + /** + * Converts this GoSettings to JSON. + * @function toJSON + * @memberof google.api.GoSettings + * @instance + * @returns {Object.} JSON object + */ + GoSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for GoSettings + * @function getTypeUrl + * @memberof google.api.GoSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + GoSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.GoSettings"; + }; + + return GoSettings; + })(); + + api.MethodSettings = (function() { + + /** + * Properties of a MethodSettings. + * @memberof google.api + * @interface IMethodSettings + * @property {string|null} [selector] MethodSettings selector + * @property {google.api.MethodSettings.ILongRunning|null} [longRunning] MethodSettings longRunning + */ + + /** + * Constructs a new MethodSettings. + * @memberof google.api + * @classdesc Represents a MethodSettings. + * @implements IMethodSettings + * @constructor + * @param {google.api.IMethodSettings=} [properties] Properties to set + */ + function MethodSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodSettings selector. + * @member {string} selector + * @memberof google.api.MethodSettings + * @instance + */ + MethodSettings.prototype.selector = ""; + + /** + * MethodSettings longRunning. + * @member {google.api.MethodSettings.ILongRunning|null|undefined} longRunning + * @memberof google.api.MethodSettings + * @instance + */ + MethodSettings.prototype.longRunning = null; + + /** + * Creates a new MethodSettings instance using the specified properties. + * @function create + * @memberof google.api.MethodSettings + * @static + * @param {google.api.IMethodSettings=} [properties] Properties to set + * @returns {google.api.MethodSettings} MethodSettings instance + */ + MethodSettings.create = function create(properties) { + return new MethodSettings(properties); + }; + + /** + * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages. + * @function encode + * @memberof google.api.MethodSettings + * @static + * @param {google.api.IMethodSettings} message MethodSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); + if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning")) + $root.google.api.MethodSettings.LongRunning.encode(message.longRunning, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.MethodSettings + * @static + * @param {google.api.IMethodSettings} message MethodSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodSettings message from the specified reader or buffer. + * @function decode + * @memberof google.api.MethodSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.MethodSettings} MethodSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.selector = reader.string(); + break; + } + case 2: { + message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodSettings message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.MethodSettings + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.MethodSettings} MethodSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodSettings message. + * @function verify + * @memberof google.api.MethodSettings + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MethodSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.selector != null && message.hasOwnProperty("selector")) + if (!$util.isString(message.selector)) + return "selector: string expected"; + if (message.longRunning != null && message.hasOwnProperty("longRunning")) { + var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning); + if (error) + return "longRunning." + error; + } + return null; + }; + + /** + * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.MethodSettings + * @static + * @param {Object.} object Plain object + * @returns {google.api.MethodSettings} MethodSettings + */ + MethodSettings.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.MethodSettings) + return object; + var message = new $root.google.api.MethodSettings(); + if (object.selector != null) + message.selector = String(object.selector); + if (object.longRunning != null) { + if (typeof object.longRunning !== "object") + throw TypeError(".google.api.MethodSettings.longRunning: object expected"); + message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning); + } + return message; + }; + + /** + * Creates a plain object from a MethodSettings message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.MethodSettings + * @static + * @param {google.api.MethodSettings} message MethodSettings + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.selector = ""; + object.longRunning = null; + } + if (message.selector != null && message.hasOwnProperty("selector")) + object.selector = message.selector; + if (message.longRunning != null && message.hasOwnProperty("longRunning")) + object.longRunning = $root.google.api.MethodSettings.LongRunning.toObject(message.longRunning, options); + return object; + }; + + /** + * Converts this MethodSettings to JSON. + * @function toJSON + * @memberof google.api.MethodSettings + * @instance + * @returns {Object.} JSON object + */ + MethodSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MethodSettings + * @function getTypeUrl + * @memberof google.api.MethodSettings + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MethodSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.MethodSettings"; + }; + + MethodSettings.LongRunning = (function() { + + /** + * Properties of a LongRunning. + * @memberof google.api.MethodSettings + * @interface ILongRunning + * @property {google.protobuf.IDuration|null} [initialPollDelay] LongRunning initialPollDelay + * @property {number|null} [pollDelayMultiplier] LongRunning pollDelayMultiplier + * @property {google.protobuf.IDuration|null} [maxPollDelay] LongRunning maxPollDelay + * @property {google.protobuf.IDuration|null} [totalPollTimeout] LongRunning totalPollTimeout + */ + + /** + * Constructs a new LongRunning. + * @memberof google.api.MethodSettings + * @classdesc Represents a LongRunning. + * @implements ILongRunning + * @constructor + * @param {google.api.MethodSettings.ILongRunning=} [properties] Properties to set + */ + function LongRunning(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LongRunning initialPollDelay. + * @member {google.protobuf.IDuration|null|undefined} initialPollDelay + * @memberof google.api.MethodSettings.LongRunning + * @instance + */ + LongRunning.prototype.initialPollDelay = null; + + /** + * LongRunning pollDelayMultiplier. + * @member {number} pollDelayMultiplier + * @memberof google.api.MethodSettings.LongRunning + * @instance + */ + LongRunning.prototype.pollDelayMultiplier = 0; + + /** + * LongRunning maxPollDelay. + * @member {google.protobuf.IDuration|null|undefined} maxPollDelay + * @memberof google.api.MethodSettings.LongRunning + * @instance + */ + LongRunning.prototype.maxPollDelay = null; + + /** + * LongRunning totalPollTimeout. + * @member {google.protobuf.IDuration|null|undefined} totalPollTimeout + * @memberof google.api.MethodSettings.LongRunning + * @instance + */ + LongRunning.prototype.totalPollTimeout = null; + + /** + * Creates a new LongRunning instance using the specified properties. + * @function create + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {google.api.MethodSettings.ILongRunning=} [properties] Properties to set + * @returns {google.api.MethodSettings.LongRunning} LongRunning instance + */ + LongRunning.create = function create(properties) { + return new LongRunning(properties); + }; + + /** + * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages. + * @function encode + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {google.api.MethodSettings.ILongRunning} message LongRunning message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LongRunning.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.initialPollDelay != null && Object.hasOwnProperty.call(message, "initialPollDelay")) + $root.google.protobuf.Duration.encode(message.initialPollDelay, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.pollDelayMultiplier != null && Object.hasOwnProperty.call(message, "pollDelayMultiplier")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.pollDelayMultiplier); + if (message.maxPollDelay != null && Object.hasOwnProperty.call(message, "maxPollDelay")) + $root.google.protobuf.Duration.encode(message.maxPollDelay, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.totalPollTimeout != null && Object.hasOwnProperty.call(message, "totalPollTimeout")) + $root.google.protobuf.Duration.encode(message.totalPollTimeout, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {google.api.MethodSettings.ILongRunning} message LongRunning message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LongRunning.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LongRunning message from the specified reader or buffer. + * @function decode + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.MethodSettings.LongRunning} LongRunning + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LongRunning.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 2: { + message.pollDelayMultiplier = reader.float(); + break; + } + case 3: { + message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 4: { + message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LongRunning message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.MethodSettings.LongRunning} LongRunning + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LongRunning.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LongRunning message. + * @function verify + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + LongRunning.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) { + var error = $root.google.protobuf.Duration.verify(message.initialPollDelay); + if (error) + return "initialPollDelay." + error; + } + if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier")) + if (typeof message.pollDelayMultiplier !== "number") + return "pollDelayMultiplier: number expected"; + if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) { + var error = $root.google.protobuf.Duration.verify(message.maxPollDelay); + if (error) + return "maxPollDelay." + error; + } + if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) { + var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout); + if (error) + return "totalPollTimeout." + error; + } + return null; + }; + + /** + * Creates a LongRunning message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {Object.} object Plain object + * @returns {google.api.MethodSettings.LongRunning} LongRunning + */ + LongRunning.fromObject = function fromObject(object) { + if (object instanceof $root.google.api.MethodSettings.LongRunning) + return object; + var message = new $root.google.api.MethodSettings.LongRunning(); + if (object.initialPollDelay != null) { + if (typeof object.initialPollDelay !== "object") + throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected"); + message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay); + } + if (object.pollDelayMultiplier != null) + message.pollDelayMultiplier = Number(object.pollDelayMultiplier); + if (object.maxPollDelay != null) { + if (typeof object.maxPollDelay !== "object") + throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected"); + message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay); + } + if (object.totalPollTimeout != null) { + if (typeof object.totalPollTimeout !== "object") + throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected"); + message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout); + } + return message; + }; + + /** + * Creates a plain object from a LongRunning message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {google.api.MethodSettings.LongRunning} message LongRunning + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LongRunning.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.initialPollDelay = null; + object.pollDelayMultiplier = 0; + object.maxPollDelay = null; + object.totalPollTimeout = null; + } + if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) + object.initialPollDelay = $root.google.protobuf.Duration.toObject(message.initialPollDelay, options); + if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier")) + object.pollDelayMultiplier = options.json && !isFinite(message.pollDelayMultiplier) ? String(message.pollDelayMultiplier) : message.pollDelayMultiplier; + if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) + object.maxPollDelay = $root.google.protobuf.Duration.toObject(message.maxPollDelay, options); + if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) + object.totalPollTimeout = $root.google.protobuf.Duration.toObject(message.totalPollTimeout, options); + return object; + }; + + /** + * Converts this LongRunning to JSON. + * @function toJSON + * @memberof google.api.MethodSettings.LongRunning + * @instance + * @returns {Object.} JSON object + */ + LongRunning.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for LongRunning + * @function getTypeUrl + * @memberof google.api.MethodSettings.LongRunning + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + LongRunning.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.MethodSettings.LongRunning"; + }; + + return LongRunning; + })(); + + return MethodSettings; + })(); + + /** + * ClientLibraryOrganization enum. + * @name google.api.ClientLibraryOrganization + * @enum {number} + * @property {number} CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0 CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED value + * @property {number} CLOUD=1 CLOUD value + * @property {number} ADS=2 ADS value + * @property {number} PHOTOS=3 PHOTOS value + * @property {number} STREET_VIEW=4 STREET_VIEW value + */ + api.ClientLibraryOrganization = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED"] = 0; + values[valuesById[1] = "CLOUD"] = 1; + values[valuesById[2] = "ADS"] = 2; + values[valuesById[3] = "PHOTOS"] = 3; + values[valuesById[4] = "STREET_VIEW"] = 4; + return values; + })(); + + /** + * ClientLibraryDestination enum. + * @name google.api.ClientLibraryDestination + * @enum {number} + * @property {number} CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0 CLIENT_LIBRARY_DESTINATION_UNSPECIFIED value + * @property {number} GITHUB=10 GITHUB value + * @property {number} PACKAGE_MANAGER=20 PACKAGE_MANAGER value + */ + api.ClientLibraryDestination = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED"] = 0; + values[valuesById[10] = "GITHUB"] = 10; + values[valuesById[20] = "PACKAGE_MANAGER"] = 20; + return values; + })(); + + /** + * LaunchStage enum. + * @name google.api.LaunchStage + * @enum {number} + * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value + * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value + * @property {number} PRELAUNCH=7 PRELAUNCH value + * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value + * @property {number} ALPHA=2 ALPHA value + * @property {number} BETA=3 BETA value + * @property {number} GA=4 GA value + * @property {number} DEPRECATED=5 DEPRECATED value + */ + api.LaunchStage = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0; + values[valuesById[6] = "UNIMPLEMENTED"] = 6; + values[valuesById[7] = "PRELAUNCH"] = 7; + values[valuesById[1] = "EARLY_ACCESS"] = 1; + values[valuesById[2] = "ALPHA"] = 2; + values[valuesById[3] = "BETA"] = 3; + values[valuesById[4] = "GA"] = 4; + values[valuesById[5] = "DEPRECATED"] = 5; + return values; + })(); + /** * FieldBehavior enum. * @name google.api.FieldBehavior @@ -26473,6 +30082,7 @@ * @property {boolean|null} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor * @property {boolean|null} [deprecated] MessageOptions deprecated * @property {boolean|null} [mapEntry] MessageOptions mapEntry + * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] MessageOptions deprecatedLegacyJsonFieldConflicts * @property {Array.|null} [uninterpretedOption] MessageOptions uninterpretedOption */ @@ -26524,6 +30134,14 @@ */ MessageOptions.prototype.mapEntry = false; + /** + * MessageOptions deprecatedLegacyJsonFieldConflicts. + * @member {boolean} deprecatedLegacyJsonFieldConflicts + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.deprecatedLegacyJsonFieldConflicts = false; + /** * MessageOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -26564,6 +30182,8 @@ writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) + writer.uint32(/* id 11, wireType 0 =*/88).bool(message.deprecatedLegacyJsonFieldConflicts); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -26617,6 +30237,10 @@ message.mapEntry = reader.bool(); break; } + case 11: { + message.deprecatedLegacyJsonFieldConflicts = reader.bool(); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -26670,6 +30294,9 @@ if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) if (typeof message.mapEntry !== "boolean") return "mapEntry: boolean expected"; + if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") + return "deprecatedLegacyJsonFieldConflicts: boolean expected"; if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -26702,6 +30329,8 @@ message.deprecated = Boolean(object.deprecated); if (object.mapEntry != null) message.mapEntry = Boolean(object.mapEntry); + if (object.deprecatedLegacyJsonFieldConflicts != null) + message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); @@ -26735,6 +30364,7 @@ object.noStandardDescriptorAccessor = false; object.deprecated = false; object.mapEntry = false; + object.deprecatedLegacyJsonFieldConflicts = false; } if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) object.messageSetWireFormat = message.messageSetWireFormat; @@ -26744,6 +30374,8 @@ object.deprecated = message.deprecated; if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) object.mapEntry = message.mapEntry; + if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -26794,6 +30426,9 @@ * @property {boolean|null} [unverifiedLazy] FieldOptions unverifiedLazy * @property {boolean|null} [deprecated] FieldOptions deprecated * @property {boolean|null} [weak] FieldOptions weak + * @property {boolean|null} [debugRedact] FieldOptions debugRedact + * @property {google.protobuf.FieldOptions.OptionRetention|null} [retention] FieldOptions retention + * @property {google.protobuf.FieldOptions.OptionTargetType|null} [target] FieldOptions target * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior */ @@ -26871,6 +30506,30 @@ */ FieldOptions.prototype.weak = false; + /** + * FieldOptions debugRedact. + * @member {boolean} debugRedact + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.debugRedact = false; + + /** + * FieldOptions retention. + * @member {google.protobuf.FieldOptions.OptionRetention} retention + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.retention = 0; + + /** + * FieldOptions target. + * @member {google.protobuf.FieldOptions.OptionTargetType} target + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.target = 0; + /** * FieldOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -26925,6 +30584,12 @@ writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); if (message.unverifiedLazy != null && Object.hasOwnProperty.call(message, "unverifiedLazy")) writer.uint32(/* id 15, wireType 0 =*/120).bool(message.unverifiedLazy); + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) + writer.uint32(/* id 16, wireType 0 =*/128).bool(message.debugRedact); + if (message.retention != null && Object.hasOwnProperty.call(message, "retention")) + writer.uint32(/* id 17, wireType 0 =*/136).int32(message.retention); + if (message.target != null && Object.hasOwnProperty.call(message, "target")) + writer.uint32(/* id 18, wireType 0 =*/144).int32(message.target); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -26996,6 +30661,18 @@ message.weak = reader.bool(); break; } + case 16: { + message.debugRedact = reader.bool(); + break; + } + case 17: { + message.retention = reader.int32(); + break; + } + case 18: { + message.target = reader.int32(); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -27081,6 +30758,34 @@ if (message.weak != null && message.hasOwnProperty("weak")) if (typeof message.weak !== "boolean") return "weak: boolean expected"; + if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (typeof message.debugRedact !== "boolean") + return "debugRedact: boolean expected"; + if (message.retention != null && message.hasOwnProperty("retention")) + switch (message.retention) { + default: + return "retention: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.target != null && message.hasOwnProperty("target")) + switch (message.target) { + default: + return "target: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + break; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -27165,14 +30870,84 @@ message.jstype = 2; break; } - if (object.lazy != null) - message.lazy = Boolean(object.lazy); - if (object.unverifiedLazy != null) - message.unverifiedLazy = Boolean(object.unverifiedLazy); - if (object.deprecated != null) - message.deprecated = Boolean(object.deprecated); - if (object.weak != null) - message.weak = Boolean(object.weak); + if (object.lazy != null) + message.lazy = Boolean(object.lazy); + if (object.unverifiedLazy != null) + message.unverifiedLazy = Boolean(object.unverifiedLazy); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.weak != null) + message.weak = Boolean(object.weak); + if (object.debugRedact != null) + message.debugRedact = Boolean(object.debugRedact); + switch (object.retention) { + default: + if (typeof object.retention === "number") { + message.retention = object.retention; + break; + } + break; + case "RETENTION_UNKNOWN": + case 0: + message.retention = 0; + break; + case "RETENTION_RUNTIME": + case 1: + message.retention = 1; + break; + case "RETENTION_SOURCE": + case 2: + message.retention = 2; + break; + } + switch (object.target) { + default: + if (typeof object.target === "number") { + message.target = object.target; + break; + } + break; + case "TARGET_TYPE_UNKNOWN": + case 0: + message.target = 0; + break; + case "TARGET_TYPE_FILE": + case 1: + message.target = 1; + break; + case "TARGET_TYPE_EXTENSION_RANGE": + case 2: + message.target = 2; + break; + case "TARGET_TYPE_MESSAGE": + case 3: + message.target = 3; + break; + case "TARGET_TYPE_FIELD": + case 4: + message.target = 4; + break; + case "TARGET_TYPE_ONEOF": + case 5: + message.target = 5; + break; + case "TARGET_TYPE_ENUM": + case 6: + message.target = 6; + break; + case "TARGET_TYPE_ENUM_ENTRY": + case 7: + message.target = 7; + break; + case "TARGET_TYPE_SERVICE": + case 8: + message.target = 8; + break; + case "TARGET_TYPE_METHOD": + case 9: + message.target = 9; + break; + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); @@ -27256,6 +31031,9 @@ object.jstype = options.enums === String ? "JS_NORMAL" : 0; object.weak = false; object.unverifiedLazy = false; + object.debugRedact = false; + object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0; + object.target = options.enums === String ? "TARGET_TYPE_UNKNOWN" : 0; } if (message.ctype != null && message.hasOwnProperty("ctype")) object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; @@ -27271,6 +31049,12 @@ object.weak = message.weak; if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) object.unverifiedLazy = message.unverifiedLazy; + if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + object.debugRedact = message.debugRedact; + if (message.retention != null && message.hasOwnProperty("retention")) + object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention; + if (message.target != null && message.hasOwnProperty("target")) + object.target = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.target] === undefined ? message.target : $root.google.protobuf.FieldOptions.OptionTargetType[message.target] : message.target; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -27342,6 +31126,52 @@ return values; })(); + /** + * OptionRetention enum. + * @name google.protobuf.FieldOptions.OptionRetention + * @enum {number} + * @property {number} RETENTION_UNKNOWN=0 RETENTION_UNKNOWN value + * @property {number} RETENTION_RUNTIME=1 RETENTION_RUNTIME value + * @property {number} RETENTION_SOURCE=2 RETENTION_SOURCE value + */ + FieldOptions.OptionRetention = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "RETENTION_UNKNOWN"] = 0; + values[valuesById[1] = "RETENTION_RUNTIME"] = 1; + values[valuesById[2] = "RETENTION_SOURCE"] = 2; + return values; + })(); + + /** + * OptionTargetType enum. + * @name google.protobuf.FieldOptions.OptionTargetType + * @enum {number} + * @property {number} TARGET_TYPE_UNKNOWN=0 TARGET_TYPE_UNKNOWN value + * @property {number} TARGET_TYPE_FILE=1 TARGET_TYPE_FILE value + * @property {number} TARGET_TYPE_EXTENSION_RANGE=2 TARGET_TYPE_EXTENSION_RANGE value + * @property {number} TARGET_TYPE_MESSAGE=3 TARGET_TYPE_MESSAGE value + * @property {number} TARGET_TYPE_FIELD=4 TARGET_TYPE_FIELD value + * @property {number} TARGET_TYPE_ONEOF=5 TARGET_TYPE_ONEOF value + * @property {number} TARGET_TYPE_ENUM=6 TARGET_TYPE_ENUM value + * @property {number} TARGET_TYPE_ENUM_ENTRY=7 TARGET_TYPE_ENUM_ENTRY value + * @property {number} TARGET_TYPE_SERVICE=8 TARGET_TYPE_SERVICE value + * @property {number} TARGET_TYPE_METHOD=9 TARGET_TYPE_METHOD value + */ + FieldOptions.OptionTargetType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "TARGET_TYPE_UNKNOWN"] = 0; + values[valuesById[1] = "TARGET_TYPE_FILE"] = 1; + values[valuesById[2] = "TARGET_TYPE_EXTENSION_RANGE"] = 2; + values[valuesById[3] = "TARGET_TYPE_MESSAGE"] = 3; + values[valuesById[4] = "TARGET_TYPE_FIELD"] = 4; + values[valuesById[5] = "TARGET_TYPE_ONEOF"] = 5; + values[valuesById[6] = "TARGET_TYPE_ENUM"] = 6; + values[valuesById[7] = "TARGET_TYPE_ENUM_ENTRY"] = 7; + values[valuesById[8] = "TARGET_TYPE_SERVICE"] = 8; + values[valuesById[9] = "TARGET_TYPE_METHOD"] = 9; + return values; + })(); + return FieldOptions; })(); @@ -27577,6 +31407,7 @@ * @interface IEnumOptions * @property {boolean|null} [allowAlias] EnumOptions allowAlias * @property {boolean|null} [deprecated] EnumOptions deprecated + * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] EnumOptions deprecatedLegacyJsonFieldConflicts * @property {Array.|null} [uninterpretedOption] EnumOptions uninterpretedOption */ @@ -27612,6 +31443,14 @@ */ EnumOptions.prototype.deprecated = false; + /** + * EnumOptions deprecatedLegacyJsonFieldConflicts. + * @member {boolean} deprecatedLegacyJsonFieldConflicts + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.deprecatedLegacyJsonFieldConflicts = false; + /** * EnumOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -27648,6 +31487,8 @@ writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.deprecatedLegacyJsonFieldConflicts); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -27693,6 +31534,10 @@ message.deprecated = reader.bool(); break; } + case 6: { + message.deprecatedLegacyJsonFieldConflicts = reader.bool(); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -27740,6 +31585,9 @@ if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; + if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") + return "deprecatedLegacyJsonFieldConflicts: boolean expected"; if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -27768,6 +31616,8 @@ message.allowAlias = Boolean(object.allowAlias); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); + if (object.deprecatedLegacyJsonFieldConflicts != null) + message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); @@ -27799,11 +31649,14 @@ if (options.defaults) { object.allowAlias = false; object.deprecated = false; + object.deprecatedLegacyJsonFieldConflicts = false; } if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) object.allowAlias = message.allowAlias; if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; + if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -30610,249 +34463,13 @@ values[valuesById[0] = "NONE"] = 0; values[valuesById[1] = "SET"] = 1; values[valuesById[2] = "ALIAS"] = 2; - return values; - })(); - - return Annotation; - })(); - - return GeneratedCodeInfo; - })(); - - protobuf.Any = (function() { - - /** - * Properties of an Any. - * @memberof google.protobuf - * @interface IAny - * @property {string|null} [type_url] Any type_url - * @property {Uint8Array|null} [value] Any value - */ - - /** - * Constructs a new Any. - * @memberof google.protobuf - * @classdesc Represents an Any. - * @implements IAny - * @constructor - * @param {google.protobuf.IAny=} [properties] Properties to set - */ - function Any(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Any type_url. - * @member {string} type_url - * @memberof google.protobuf.Any - * @instance - */ - Any.prototype.type_url = ""; - - /** - * Any value. - * @member {Uint8Array} value - * @memberof google.protobuf.Any - * @instance - */ - Any.prototype.value = $util.newBuffer([]); - - /** - * Creates a new Any instance using the specified properties. - * @function create - * @memberof google.protobuf.Any - * @static - * @param {google.protobuf.IAny=} [properties] Properties to set - * @returns {google.protobuf.Any} Any instance - */ - Any.create = function create(properties) { - return new Any(properties); - }; - - /** - * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. - * @function encode - * @memberof google.protobuf.Any - * @static - * @param {google.protobuf.IAny} message Any message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Any.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.type_url != null && Object.hasOwnProperty.call(message, "type_url")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.type_url); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); - return writer; - }; - - /** - * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. - * @function encodeDelimited - * @memberof google.protobuf.Any - * @static - * @param {google.protobuf.IAny} message Any message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Any.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an Any message from the specified reader or buffer. - * @function decode - * @memberof google.protobuf.Any - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.protobuf.Any} Any - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Any.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.type_url = reader.string(); - break; - } - case 2: { - message.value = reader.bytes(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an Any message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.protobuf.Any - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.protobuf.Any} Any - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Any.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an Any message. - * @function verify - * @memberof google.protobuf.Any - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Any.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.type_url != null && message.hasOwnProperty("type_url")) - if (!$util.isString(message.type_url)) - return "type_url: string expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) - return "value: buffer expected"; - return null; - }; - - /** - * Creates an Any message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.protobuf.Any - * @static - * @param {Object.} object Plain object - * @returns {google.protobuf.Any} Any - */ - Any.fromObject = function fromObject(object) { - if (object instanceof $root.google.protobuf.Any) - return object; - var message = new $root.google.protobuf.Any(); - if (object.type_url != null) - message.type_url = String(object.type_url); - if (object.value != null) - if (typeof object.value === "string") - $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length >= 0) - message.value = object.value; - return message; - }; - - /** - * Creates a plain object from an Any message. Also converts values to other types if specified. - * @function toObject - * @memberof google.protobuf.Any - * @static - * @param {google.protobuf.Any} message Any - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Any.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.type_url = ""; - if (options.bytes === String) - object.value = ""; - else { - object.value = []; - if (options.bytes !== Array) - object.value = $util.newBuffer(object.value); - } - } - if (message.type_url != null && message.hasOwnProperty("type_url")) - object.type_url = message.type_url; - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; - return object; - }; - - /** - * Converts this Any to JSON. - * @function toJSON - * @memberof google.protobuf.Any - * @instance - * @returns {Object.} JSON object - */ - Any.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + return values; + })(); - /** - * Gets the default type url for Any - * @function getTypeUrl - * @memberof google.protobuf.Any - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - Any.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.protobuf.Any"; - }; + return Annotation; + })(); - return Any; + return GeneratedCodeInfo; })(); protobuf.Duration = (function() { @@ -31096,6 +34713,242 @@ return Duration; })(); + protobuf.Any = (function() { + + /** + * Properties of an Any. + * @memberof google.protobuf + * @interface IAny + * @property {string|null} [type_url] Any type_url + * @property {Uint8Array|null} [value] Any value + */ + + /** + * Constructs a new Any. + * @memberof google.protobuf + * @classdesc Represents an Any. + * @implements IAny + * @constructor + * @param {google.protobuf.IAny=} [properties] Properties to set + */ + function Any(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Any type_url. + * @member {string} type_url + * @memberof google.protobuf.Any + * @instance + */ + Any.prototype.type_url = ""; + + /** + * Any value. + * @member {Uint8Array} value + * @memberof google.protobuf.Any + * @instance + */ + Any.prototype.value = $util.newBuffer([]); + + /** + * Creates a new Any instance using the specified properties. + * @function create + * @memberof google.protobuf.Any + * @static + * @param {google.protobuf.IAny=} [properties] Properties to set + * @returns {google.protobuf.Any} Any instance + */ + Any.create = function create(properties) { + return new Any(properties); + }; + + /** + * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @function encode + * @memberof google.protobuf.Any + * @static + * @param {google.protobuf.IAny} message Any message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Any.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.type_url != null && Object.hasOwnProperty.call(message, "type_url")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.type_url); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); + return writer; + }; + + /** + * Encodes the specified Any message, length delimited. Does not implicitly {@link google.protobuf.Any.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.Any + * @static + * @param {google.protobuf.IAny} message Any message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Any.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Any message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.Any + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Any} Any + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Any.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.type_url = reader.string(); + break; + } + case 2: { + message.value = reader.bytes(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Any message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.Any + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Any} Any + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Any.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Any message. + * @function verify + * @memberof google.protobuf.Any + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Any.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.type_url != null && message.hasOwnProperty("type_url")) + if (!$util.isString(message.type_url)) + return "type_url: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) + return "value: buffer expected"; + return null; + }; + + /** + * Creates an Any message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.Any + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.Any} Any + */ + Any.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Any) + return object; + var message = new $root.google.protobuf.Any(); + if (object.type_url != null) + message.type_url = String(object.type_url); + if (object.value != null) + if (typeof object.value === "string") + $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); + else if (object.value.length >= 0) + message.value = object.value; + return message; + }; + + /** + * Creates a plain object from an Any message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.Any + * @static + * @param {google.protobuf.Any} message Any + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Any.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.type_url = ""; + if (options.bytes === String) + object.value = ""; + else { + object.value = []; + if (options.bytes !== Array) + object.value = $util.newBuffer(object.value); + } + } + if (message.type_url != null && message.hasOwnProperty("type_url")) + object.type_url = message.type_url; + if (message.value != null && message.hasOwnProperty("value")) + object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; + return object; + }; + + /** + * Converts this Any to JSON. + * @function toJSON + * @memberof google.protobuf.Any + * @instance + * @returns {Object.} JSON object + */ + Any.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Any + * @function getTypeUrl + * @memberof google.protobuf.Any + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Any.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.Any"; + }; + + return Any; + })(); + protobuf.Empty = (function() { /** diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index a9afc7b85d7..2247c502adb 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -2011,6 +2011,248 @@ "id": 1050, "extend": "google.protobuf.ServiceOptions" }, + "CommonLanguageSettings": { + "fields": { + "referenceDocsUri": { + "type": "string", + "id": 1, + "options": { + "deprecated": true + } + }, + "destinations": { + "rule": "repeated", + "type": "ClientLibraryDestination", + "id": 2 + } + } + }, + "ClientLibrarySettings": { + "fields": { + "version": { + "type": "string", + "id": 1 + }, + "launchStage": { + "type": "LaunchStage", + "id": 2 + }, + "restNumericEnums": { + "type": "bool", + "id": 3 + }, + "javaSettings": { + "type": "JavaSettings", + "id": 21 + }, + "cppSettings": { + "type": "CppSettings", + "id": 22 + }, + "phpSettings": { + "type": "PhpSettings", + "id": 23 + }, + "pythonSettings": { + "type": "PythonSettings", + "id": 24 + }, + "nodeSettings": { + "type": "NodeSettings", + "id": 25 + }, + "dotnetSettings": { + "type": "DotnetSettings", + "id": 26 + }, + "rubySettings": { + "type": "RubySettings", + "id": 27 + }, + "goSettings": { + "type": "GoSettings", + "id": 28 + } + } + }, + "Publishing": { + "fields": { + "methodSettings": { + "rule": "repeated", + "type": "MethodSettings", + "id": 2 + }, + "newIssueUri": { + "type": "string", + "id": 101 + }, + "documentationUri": { + "type": "string", + "id": 102 + }, + "apiShortName": { + "type": "string", + "id": 103 + }, + "githubLabel": { + "type": "string", + "id": 104 + }, + "codeownerGithubTeams": { + "rule": "repeated", + "type": "string", + "id": 105 + }, + "docTagPrefix": { + "type": "string", + "id": 106 + }, + "organization": { + "type": "ClientLibraryOrganization", + "id": 107 + }, + "librarySettings": { + "rule": "repeated", + "type": "ClientLibrarySettings", + "id": 109 + } + } + }, + "JavaSettings": { + "fields": { + "libraryPackage": { + "type": "string", + "id": 1 + }, + "serviceClassNames": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "common": { + "type": "CommonLanguageSettings", + "id": 3 + } + } + }, + "CppSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "PhpSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "PythonSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "NodeSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "DotnetSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "RubySettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "GoSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "MethodSettings": { + "fields": { + "selector": { + "type": "string", + "id": 1 + }, + "longRunning": { + "type": "LongRunning", + "id": 2 + } + }, + "nested": { + "LongRunning": { + "fields": { + "initialPollDelay": { + "type": "google.protobuf.Duration", + "id": 1 + }, + "pollDelayMultiplier": { + "type": "float", + "id": 2 + }, + "maxPollDelay": { + "type": "google.protobuf.Duration", + "id": 3 + }, + "totalPollTimeout": { + "type": "google.protobuf.Duration", + "id": 4 + } + } + } + } + }, + "ClientLibraryOrganization": { + "values": { + "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": 0, + "CLOUD": 1, + "ADS": 2, + "PHOTOS": 3, + "STREET_VIEW": 4 + } + }, + "ClientLibraryDestination": { + "values": { + "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": 0, + "GITHUB": 10, + "PACKAGE_MANAGER": 20 + } + }, + "LaunchStage": { + "values": { + "LAUNCH_STAGE_UNSPECIFIED": 0, + "UNIMPLEMENTED": 6, + "PRELAUNCH": 7, + "EARLY_ACCESS": 1, + "ALPHA": 2, + "BETA": 3, + "GA": 4, + "DEPRECATED": 5 + } + }, "fieldBehavior": { "rule": "repeated", "type": "google.api.FieldBehavior", @@ -2609,6 +2851,13 @@ "type": "bool", "id": 7 }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "bool", + "id": 11, + "options": { + "deprecated": true + } + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -2692,6 +2941,21 @@ "default": false } }, + "debugRedact": { + "type": "bool", + "id": 16, + "options": { + "default": false + } + }, + "retention": { + "type": "OptionRetention", + "id": 17 + }, + "target": { + "type": "OptionTargetType", + "id": 18 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -2724,6 +2988,27 @@ "JS_STRING": 1, "JS_NUMBER": 2 } + }, + "OptionRetention": { + "values": { + "RETENTION_UNKNOWN": 0, + "RETENTION_RUNTIME": 1, + "RETENTION_SOURCE": 2 + } + }, + "OptionTargetType": { + "values": { + "TARGET_TYPE_UNKNOWN": 0, + "TARGET_TYPE_FILE": 1, + "TARGET_TYPE_EXTENSION_RANGE": 2, + "TARGET_TYPE_MESSAGE": 3, + "TARGET_TYPE_FIELD": 4, + "TARGET_TYPE_ONEOF": 5, + "TARGET_TYPE_ENUM": 6, + "TARGET_TYPE_ENUM_ENTRY": 7, + "TARGET_TYPE_SERVICE": 8, + "TARGET_TYPE_METHOD": 9 + } } } }, @@ -2755,6 +3040,13 @@ "default": false } }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "bool", + "id": 6, + "options": { + "deprecated": true + } + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -2988,26 +3280,26 @@ } } }, - "Any": { + "Duration": { "fields": { - "type_url": { - "type": "string", + "seconds": { + "type": "int64", "id": 1 }, - "value": { - "type": "bytes", + "nanos": { + "type": "int32", "id": 2 } } }, - "Duration": { + "Any": { "fields": { - "seconds": { - "type": "int64", + "type_url": { + "type": "string", "id": 1 }, - "nanos": { - "type": "int32", + "value": { + "type": "bytes", "id": 2 } } diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 43947e20797..ff82950aa31 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -8,7 +8,7 @@ ], "repository": "googleapis/nodejs-datastore", "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "scripts": { "test": "mocha --timeout=600000" diff --git a/handwritten/nodejs-datastore/src/index-class.ts b/handwritten/nodejs-datastore/src/index-class.ts index e33958b6c6f..64decbed444 100644 --- a/handwritten/nodejs-datastore/src/index-class.ts +++ b/handwritten/nodejs-datastore/src/index-class.ts @@ -45,7 +45,7 @@ export interface GetIndexesOptions { export type GetIndexesResponse = [ Index[], GetIndexesOptions, - google.datastore.admin.v1.IListIndexesResponse + google.datastore.admin.v1.IListIndexesResponse, ]; export type GetIndexesCallback = ( err?: ServiceError | null, diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 35c50f09fe8..cb6273ae7ab 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1102,7 +1102,7 @@ export interface ConsistencyProtoCode { } export type AllocateIdsResponse = [ entity.Key[], - google.datastore.v1.IAllocateIdsResponse + google.datastore.v1.IAllocateIdsResponse, ]; export interface AllocateIdsCallback { ( diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 715576b2f0b..9bc760dd363 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -780,7 +780,7 @@ export type ModifiedEntities = Array<{ }>; export type RunResponse = [ Transaction, - google.datastore.v1.IBeginTransactionResponse + google.datastore.v1.IBeginTransactionResponse, ]; export interface RunCallback { ( diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 49814db5079..6698caf5af7 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -498,7 +498,7 @@ export class DatastoreAdminClient { [ protos.google.datastore.admin.v1.IIndex, protos.google.datastore.admin.v1.IGetIndexRequest | undefined, - {} | undefined + {} | undefined, ] >; getIndex( @@ -536,7 +536,7 @@ export class DatastoreAdminClient { [ protos.google.datastore.admin.v1.IIndex, protos.google.datastore.admin.v1.IGetIndexRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -618,7 +618,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IExportEntitiesMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] >; exportEntities( @@ -671,7 +671,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IExportEntitiesMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -781,7 +781,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IImportEntitiesMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] >; importEntities( @@ -834,7 +834,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IImportEntitiesMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -935,7 +935,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IIndexOperationMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] >; createIndex( @@ -988,7 +988,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IIndexOperationMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -1084,7 +1084,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IIndexOperationMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] >; deleteIndex( @@ -1137,7 +1137,7 @@ export class DatastoreAdminClient { protos.google.datastore.admin.v1.IIndexOperationMetadata >, protos.google.longrunning.IOperation | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -1229,7 +1229,7 @@ export class DatastoreAdminClient { [ protos.google.datastore.admin.v1.IIndex[], protos.google.datastore.admin.v1.IListIndexesRequest | null, - protos.google.datastore.admin.v1.IListIndexesResponse + protos.google.datastore.admin.v1.IListIndexesResponse, ] >; listIndexes( @@ -1269,7 +1269,7 @@ export class DatastoreAdminClient { [ protos.google.datastore.admin.v1.IIndex[], protos.google.datastore.admin.v1.IListIndexesRequest | null, - protos.google.datastore.admin.v1.IListIndexesResponse + protos.google.datastore.admin.v1.IListIndexesResponse, ] > | void { request = request || {}; diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index edd8d6883e3..55ac8c92b97 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -391,7 +391,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.ILookupResponse, protos.google.datastore.v1.ILookupRequest | undefined, - {} | undefined + {} | undefined, ] >; lookup( @@ -429,7 +429,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.ILookupResponse, protos.google.datastore.v1.ILookupRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -509,7 +509,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRunQueryResponse, protos.google.datastore.v1.IRunQueryRequest | undefined, - {} | undefined + {} | undefined, ] >; runQuery( @@ -547,7 +547,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRunQueryResponse, protos.google.datastore.v1.IRunQueryRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -627,7 +627,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRunAggregationQueryResponse, protos.google.datastore.v1.IRunAggregationQueryRequest | undefined, - {} | undefined + {} | undefined, ] >; runAggregationQuery( @@ -667,7 +667,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRunAggregationQueryResponse, protos.google.datastore.v1.IRunAggregationQueryRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -738,7 +738,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IBeginTransactionResponse, protos.google.datastore.v1.IBeginTransactionRequest | undefined, - {} | undefined + {} | undefined, ] >; beginTransaction( @@ -778,7 +778,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IBeginTransactionResponse, protos.google.datastore.v1.IBeginTransactionRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -873,7 +873,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.ICommitResponse, protos.google.datastore.v1.ICommitRequest | undefined, - {} | undefined + {} | undefined, ] >; commit( @@ -911,7 +911,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.ICommitResponse, protos.google.datastore.v1.ICommitRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -983,7 +983,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRollbackResponse, protos.google.datastore.v1.IRollbackRequest | undefined, - {} | undefined + {} | undefined, ] >; rollback( @@ -1021,7 +1021,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IRollbackResponse, protos.google.datastore.v1.IRollbackRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -1094,7 +1094,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IAllocateIdsResponse, protos.google.datastore.v1.IAllocateIdsRequest | undefined, - {} | undefined + {} | undefined, ] >; allocateIds( @@ -1132,7 +1132,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IAllocateIdsResponse, protos.google.datastore.v1.IAllocateIdsRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; @@ -1205,7 +1205,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IReserveIdsResponse, protos.google.datastore.v1.IReserveIdsRequest | undefined, - {} | undefined + {} | undefined, ] >; reserveIds( @@ -1243,7 +1243,7 @@ export class DatastoreClient { [ protos.google.datastore.v1.IReserveIdsResponse, protos.google.datastore.v1.IReserveIdsRequest | undefined, - {} | undefined + {} | undefined, ] > | void { request = request || {}; diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index 475ceabe853..cbf86b430a9 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -155,14 +155,20 @@ describe('entity', () => { const smallIntegerValue = Number.MIN_SAFE_INTEGER - 1; // should throw when Number is passed - assert.throws(() => { - new testEntity.Int(largeIntegerValue).valueOf(); - }, outOfBoundsError({integerValue: largeIntegerValue})); + assert.throws( + () => { + new testEntity.Int(largeIntegerValue).valueOf(); + }, + outOfBoundsError({integerValue: largeIntegerValue}) + ); // should throw when string is passed - assert.throws(() => { - new testEntity.Int(smallIntegerValue.toString()).valueOf(); - }, outOfBoundsError({integerValue: smallIntegerValue})); + assert.throws( + () => { + new testEntity.Int(smallIntegerValue.toString()).valueOf(); + }, + outOfBoundsError({integerValue: smallIntegerValue}) + ); }); it('should not auto throw on initialization', () => { @@ -173,9 +179,12 @@ describe('entity', () => { integerValue: largeIntegerValue, }; - assert.doesNotThrow(() => { - new testEntity.Int(valueProto); - }, new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`)); + assert.doesNotThrow( + () => { + new testEntity.Int(valueProto); + }, + new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`) + ); }); }); @@ -799,6 +808,7 @@ describe('entity', () => { }); it('should emit warning on out of bounce int', done => { + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision const largeIntValue = 9223372036854775807; const property = 'largeInt'; const expectedWarning = diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 23e61148de0..c6a4481bd3e 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -1842,7 +1842,7 @@ describe('Datastore', () => { }; sandbox.stub(fakeEntity, 'keyFromKeyProto').callsFake(keyProto => { - keyProtos.push(keyProto); + keyProtos.push(keyProto as any); return { id: ids[keyProtos.length - 1], } as {} as entity.Key; From a787629c93ddb05e14391e3db0a219415485bdb0 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 9 Aug 2023 16:51:00 -0700 Subject: [PATCH 731/820] chore(main): release 8.0.0 (#1135) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 11 +++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index ac581af769d..378b3b91769 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,17 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.0.0](https://github.com/googleapis/nodejs-datastore/compare/v7.5.1...v8.0.0) (2023-08-09) + + +### ⚠ BREAKING CHANGES + +* upgrade to Node 14 + +### Miscellaneous Chores + +* Upgrade to Node 14 ([b7904f1](https://github.com/googleapis/nodejs-datastore/commit/b7904f12b1d398a5b0e6fefc2a002c404f9e7d3d)) + ## [7.5.1](https://github.com/googleapis/nodejs-datastore/compare/v7.5.0...v7.5.1) (2023-04-11) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 42c27e57edd..e4995e5cf78 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "7.5.1", + "version": "8.0.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ff82950aa31..5341c20392f 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^7.5.1", + "@google-cloud/datastore": "^8.0.0", "sinon": "^15.0.0" }, "devDependencies": { From 30707ae91259fd373bdb667aabacb4e1b9926e64 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 15:40:29 -0700 Subject: [PATCH 732/820] test: disable retry-request for streaming tests (#1127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: fix typings for IAM methods docs: fixed links in the generated Markdown documentation PiperOrigin-RevId: 551610576 Source-Link: https://github.com/googleapis/googleapis/commit/73b1313cbd1fd0cc1e22684bc89ee1b1a416cfe0 Source-Link: https://github.com/googleapis/googleapis-gen/commit/8bec066492a6da2855b1b8ce562664c0a6b30b01 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGJlYzA2NjQ5MmE2ZGEyODU1YjFiOGNlNTYyNjY0YzBhNmIzMGIwMSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * docs: Specify limit for `properties` in `Index` message in Datastore Admin API docs: Minor formatting in Datastore Admin API PiperOrigin-RevId: 551819875 Source-Link: https://github.com/googleapis/googleapis/commit/3db8b015f79d0d2b495c40ad6f0320e9d88c5275 Source-Link: https://github.com/googleapis/googleapis-gen/commit/7ebf1137639b93613e6a6206654a5ba8f21e9321 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2ViZjExMzc2MzliOTM2MTNlNmE2MjA2NjU0YTViYThmMjFlOTMyMSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: publish proto definitions for SUM/AVG in Datastore PiperOrigin-RevId: 552847139 Source-Link: https://github.com/googleapis/googleapis/commit/6148e5b6f91abc8d2f6e246e9608bf92ffb408bd Source-Link: https://github.com/googleapis/googleapis-gen/commit/96be51b995047bfdef4825178539e238583101a9 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOTZiZTUxYjk5NTA0N2JmZGVmNDgyNTE3ODUzOWUyMzg1ODMxMDFhOSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * test: disable retry-request for streaming tests PiperOrigin-RevId: 554648220 Source-Link: https://github.com/googleapis/googleapis/commit/53cd9ad1b48e40cdd44e0c13e96ac0281b32828f Source-Link: https://github.com/googleapis/googleapis-gen/commit/7e8867efbed7dbfe5ef6ec3c2c92a4bce4280f7a Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2U4ODY3ZWZiZWQ3ZGJmZTVlZjZlYzNjMmM5MmE0YmNlNDI4MGY3YSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com> --- .../datastore/admin/v1/datastore_admin.proto | 91 ++-- .../google/datastore/admin/v1/index.proto | 15 +- .../google/datastore/admin/v1/migration.proto | 2 +- .../google/datastore/v1/datastore.proto | 14 +- .../protos/google/datastore/v1/query.proto | 57 +- .../nodejs-datastore/protos/protos.d.ts | 208 +++++++- handwritten/nodejs-datastore/protos/protos.js | 490 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 28 +- .../generated/v1/datastore.allocate_ids.js | 2 +- .../samples/generated/v1/datastore.commit.js | 4 +- .../samples/generated/v1/datastore.lookup.js | 2 +- .../generated/v1/datastore.reserve_ids.js | 2 +- .../generated/v1/datastore.rollback.js | 2 +- .../v1/datastore_admin.export_entities.js | 6 +- .../v1/datastore_admin.import_entities.js | 7 +- ...et_metadata_google.datastore.admin.v1.json | 303 +++++++++++ .../snippet_metadata_google.datastore.v1.json | 439 ++++++++++++++++ .../src/v1/datastore_admin_client.ts | 124 ++--- .../src/v1/datastore_client.ts | 48 +- 19 files changed, 1665 insertions(+), 179 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.admin.v1.json create mode 100644 handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index 744d97df7e6..79ca3df6880 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -34,14 +34,10 @@ option ruby_package = "Google::Cloud::Datastore::Admin::V1"; // Google Cloud Datastore Admin API // -// // The Datastore Admin API provides several admin services for Cloud Datastore. // -// ----------------------------------------------------------------------------- -// ## Concepts -// -// Project, namespace, kind, and entity as defined in the Google Cloud Datastore -// API. +// Concepts: Project, namespace, kind, and entity as defined in the Google Cloud +// Datastore API. // // Operation: An Operation represents work being performed in the background. // @@ -49,50 +45,40 @@ option ruby_package = "Google::Cloud::Datastore::Admin::V1"; // specified as a combination of kinds and namespaces (either or both of which // may be all). // -// ----------------------------------------------------------------------------- -// ## Services -// -// # Export/Import +// Export/Import Service: // -// The Export/Import service provides the ability to copy all or a subset of +// - The Export/Import service provides the ability to copy all or a subset of // entities to/from Google Cloud Storage. -// -// Exported data may be imported into Cloud Datastore for any Google Cloud +// - Exported data may be imported into Cloud Datastore for any Google Cloud // Platform project. It is not restricted to the export source project. It is // possible to export from one project and then import into another. -// -// Exported data can also be loaded into Google BigQuery for analysis. -// -// Exports and imports are performed asynchronously. An Operation resource is +// - Exported data can also be loaded into Google BigQuery for analysis. +// - Exports and imports are performed asynchronously. An Operation resource is // created for each export/import. The state (including any errors encountered) // of the export/import may be queried via the Operation resource. // -// # Index +// Index Service: // -// The index service manages Cloud Datastore composite indexes. -// -// Index creation and deletion are performed asynchronously. +// - The index service manages Cloud Datastore composite indexes. +// - Index creation and deletion are performed asynchronously. // An Operation resource is created for each such asynchronous operation. // The state of the operation (including any errors encountered) // may be queried via the Operation resource. // -// # Operation +// Operation Service: // -// The Operations collection provides a record of actions performed for the +// - The Operations collection provides a record of actions performed for the // specified project (including any operations in progress). Operations are not // created directly but through calls on other collections or resources. -// -// An operation that is not yet done may be cancelled. The request to cancel is -// asynchronous and the operation may continue to run for some time after the +// - An operation that is not yet done may be cancelled. The request to cancel +// is asynchronous and the operation may continue to run for some time after the // request to cancel is made. -// -// An operation that is done may be deleted so that it is no longer listed as +// - An operation that is done may be deleted so that it is no longer listed as // part of the Operation collection. -// -// ListOperations returns all pending operations, but not completed operations. -// -// Operations are created by service DatastoreAdmin, -// but are accessed via service google.longrunning.Operations. +// - ListOperations returns all pending operations, but not completed +// operations. +// - Operations are created by service DatastoreAdmin, but are accessed via +// service google.longrunning.Operations. service DatastoreAdmin { option (google.api.default_host) = "datastore.googleapis.com"; option (google.api.oauth_scopes) = @@ -107,12 +93,14 @@ service DatastoreAdmin { // used once the associated operation is done. If an export operation is // cancelled before completion it may leave partial data behind in Google // Cloud Storage. - rpc ExportEntities(ExportEntitiesRequest) returns (google.longrunning.Operation) { + rpc ExportEntities(ExportEntitiesRequest) + returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/projects/{project_id}:export" body: "*" }; - option (google.api.method_signature) = "project_id,labels,entity_filter,output_url_prefix"; + option (google.api.method_signature) = + "project_id,labels,entity_filter,output_url_prefix"; option (google.longrunning.operation_info) = { response_type: "ExportEntitiesResponse" metadata_type: "ExportEntitiesMetadata" @@ -124,12 +112,14 @@ service DatastoreAdmin { // progress can be monitored and managed via the Operation resource that is // created. If an ImportEntities operation is cancelled, it is possible // that a subset of the data has already been imported to Cloud Datastore. - rpc ImportEntities(ImportEntitiesRequest) returns (google.longrunning.Operation) { + rpc ImportEntities(ImportEntitiesRequest) + returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/projects/{project_id}:import" body: "*" }; - option (google.api.method_signature) = "project_id,labels,input_url,entity_filter"; + option (google.api.method_signature) = + "project_id,labels,input_url,entity_filter"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "ImportEntitiesMetadata" @@ -138,9 +128,9 @@ service DatastoreAdmin { // Creates the specified index. // A newly created index's initial state is `CREATING`. On completion of the - // returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. - // If the index already exists, the call will return an `ALREADY_EXISTS` - // status. + // returned [google.longrunning.Operation][google.longrunning.Operation], the + // state will be `READY`. If the index already exists, the call will return an + // `ALREADY_EXISTS` status. // // During index creation, the process could result in an error, in which // case the index will move to the `ERROR` state. The process can be recovered @@ -165,7 +155,8 @@ service DatastoreAdmin { // An index can only be deleted if it is in a `READY` or `ERROR` state. On // successful execution of the request, the index will be in a `DELETING` // [state][google.datastore.admin.v1.Index.State]. And on completion of the - // returned [google.longrunning.Operation][google.longrunning.Operation], the index will be removed. + // returned [google.longrunning.Operation][google.longrunning.Operation], the + // index will be removed. // // During index deletion, the process could result in an error, in which // case the index will move to the `ERROR` state. The process can be recovered @@ -283,8 +274,8 @@ message ExportEntitiesRequest { // // The resulting files will be nested deeper than the specified URL prefix. // The final output URL will be provided in the - // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] field. That - // value should be used for subsequent ImportEntities operations. + // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] + // field. That value should be used for subsequent ImportEntities operations. // // By nesting the data files deeper, the same Cloud Storage bucket can be used // in multiple ExportEntities operations without conflict. @@ -300,8 +291,9 @@ message ImportEntitiesRequest { // Client-assigned labels. map labels = 2; - // Required. The full resource URL of the external storage location. Currently, only - // Google Cloud Storage is supported. So input_url should be of the form: + // Required. The full resource URL of the external storage location. + // Currently, only Google Cloud Storage is supported. So input_url should be + // of the form: // `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where // `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is // an optional Cloud Storage namespace path (this is not a Cloud Datastore @@ -369,7 +361,9 @@ message ImportEntitiesMetadata { EntityFilter entity_filter = 4; // The location of the import metadata file. This will be the same value as - // the [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] field. + // the + // [google.datastore.admin.v1.ExportEntitiesResponse.output_url][google.datastore.admin.v1.ExportEntitiesResponse.output_url] + // field. string input_url = 5; } @@ -427,7 +421,8 @@ message DeleteIndexRequest { string index_id = 3; } -// The request for [google.datastore.admin.v1.DatastoreAdmin.GetIndex][google.datastore.admin.v1.DatastoreAdmin.GetIndex]. +// The request for +// [google.datastore.admin.v1.DatastoreAdmin.GetIndex][google.datastore.admin.v1.DatastoreAdmin.GetIndex]. message GetIndexRequest { // Project ID against which to make the request. string project_id = 1; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto index 4eeffc7e412..60bb5af5f58 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -60,7 +60,8 @@ message Index { // Required. The property name to index. string name = 1 [(google.api.field_behavior) = REQUIRED]; - // Required. The indexed property's direction. Must not be DIRECTION_UNSPECIFIED. + // Required. The indexed property's direction. Must not be + // DIRECTION_UNSPECIFIED. Direction direction = 2 [(google.api.field_behavior) = REQUIRED]; } @@ -104,11 +105,17 @@ message Index { // Required. The entity kind to which this index applies. string kind = 4 [(google.api.field_behavior) = REQUIRED]; - // Required. The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED. + // Required. The index's ancestor mode. Must not be + // ANCESTOR_MODE_UNSPECIFIED. AncestorMode ancestor = 5 [(google.api.field_behavior) = REQUIRED]; // Required. An ordered sequence of property names and their index attributes. - repeated IndexedProperty properties = 6 [(google.api.field_behavior) = REQUIRED]; + // + // Requires: + // + // * A maximum of 100 properties. + repeated IndexedProperty properties = 6 + [(google.api.field_behavior) = REQUIRED]; // Output only. The state of the index. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto index f47cb70e1ad..e5f7477da6e 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 4822048b619..533988d7776 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -578,9 +578,12 @@ message ReadOptions { // [RunQueryResponse.transaction][google.datastore.v1.RunQueryResponse.transaction]. TransactionOptions new_transaction = 3; - // Reads entities as they were at the given time. This may not be older - // than 270 seconds. This value is only supported for Cloud Firestore in - // Datastore mode. + // Reads entities as they were at the given time. This value is only + // supported for Cloud Firestore in Datastore mode. + // + // This must be a microsecond precision timestamp within the past one hour, + // or if Point-in-Time Recovery is enabled, can additionally be a whole + // minute timestamp within the past 7 days. google.protobuf.Timestamp read_time = 4; } } @@ -602,7 +605,10 @@ message TransactionOptions { // Options specific to read-only transactions. message ReadOnly { // Reads entities at the given time. - // This may not be older than 60 seconds. + // + // This must be a microsecond precision timestamp within the past one hour, + // or if Point-in-Time Recovery is enabled, can additionally be a whole + // minute timestamp within the past 7 days. google.protobuf.Timestamp read_time = 1; } diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 812bfbf0578..40ade72a3ac 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -163,10 +163,58 @@ message AggregationQuery { [(google.api.field_behavior) = OPTIONAL]; } + // Sum of the values of the requested property. + // + // * Only numeric values will be aggregated. All non-numeric values + // including `NULL` are skipped. + // + // * If the aggregated values contain `NaN`, returns `NaN`. Infinity math + // follows IEEE-754 standards. + // + // * If the aggregated value set is empty, returns 0. + // + // * Returns a 64-bit integer if all aggregated numbers are integers and the + // sum result does not overflow. Otherwise, the result is returned as a + // double. Note that even if all the aggregated values are integers, the + // result is returned as a double if it cannot fit within a 64-bit signed + // integer. When this occurs, the returned value will lose precision. + // + // * When underflow occurs, floating-point aggregation is non-deterministic. + // This means that running the same query repeatedly without any changes to + // the underlying values could produce slightly different results each + // time. In those cases, values should be stored as integers over + // floating-point numbers. + message Sum { + // The property to aggregate on. + PropertyReference property = 1; + } + + // Average of the values of the requested property. + // + // * Only numeric values will be aggregated. All non-numeric values + // including `NULL` are skipped. + // + // * If the aggregated values contain `NaN`, returns `NaN`. Infinity math + // follows IEEE-754 standards. + // + // * If the aggregated value set is empty, returns `NULL`. + // + // * Always returns the result as a double. + message Avg { + // The property to aggregate on. + PropertyReference property = 1; + } + // The type of aggregation to perform, required. oneof operator { // Count aggregator. Count count = 1; + + // Sum aggregator. + Sum sum = 2; + + // Average aggregator. + Avg avg = 3; } // Optional. Optional name of the property to store the result of the @@ -342,8 +390,9 @@ message PropertyFilter { // // Requires: // - // * That `value` is a non-empty `ArrayValue` with at most 10 values. - // * No other `IN` or `NOT_IN` is in the same query. + // * That `value` is a non-empty `ArrayValue`, subject to disjunction + // limits. + // * No `NOT_IN` is in the same query. IN = 6; // The given `property` is not equal to the given `value`. @@ -359,7 +408,7 @@ message PropertyFilter { // Requires: // // * That `value` is an entity key. - // * No other `HAS_ANCESTOR` is in the same query. + // * All evaluated disjunctions must have the same `HAS_ANCESTOR` filter. HAS_ANCESTOR = 11; // The value of the `property` is not in the given array. @@ -367,7 +416,7 @@ message PropertyFilter { // Requires: // // * That `value` is a non-empty `ArrayValue` with at most 10 values. - // * No other `IN`, `NOT_IN`, `NOT_EQUAL` is in the same query. + // * No other `OR`, `IN`, `NOT_IN`, `NOT_EQUAL` is in the same query. // * That `field` comes first in the `order_by`. NOT_IN = 13; } diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 95e786a8c0c..6000d78f94a 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -3826,6 +3826,12 @@ export namespace google { /** Aggregation count */ count?: (google.datastore.v1.AggregationQuery.Aggregation.ICount|null); + /** Aggregation sum */ + sum?: (google.datastore.v1.AggregationQuery.Aggregation.ISum|null); + + /** Aggregation avg */ + avg?: (google.datastore.v1.AggregationQuery.Aggregation.IAvg|null); + /** Aggregation alias */ alias?: (string|null); } @@ -3842,11 +3848,17 @@ export namespace google { /** Aggregation count. */ public count?: (google.datastore.v1.AggregationQuery.Aggregation.ICount|null); + /** Aggregation sum. */ + public sum?: (google.datastore.v1.AggregationQuery.Aggregation.ISum|null); + + /** Aggregation avg. */ + public avg?: (google.datastore.v1.AggregationQuery.Aggregation.IAvg|null); + /** Aggregation alias. */ public alias: string; /** Aggregation operator. */ - public operator?: "count"; + public operator?: ("count"|"sum"|"avg"); /** * Creates a new Aggregation instance using the specified properties. @@ -4024,6 +4036,200 @@ export namespace google { */ public static getTypeUrl(typeUrlPrefix?: string): string; } + + /** Properties of a Sum. */ + interface ISum { + + /** Sum property */ + property?: (google.datastore.v1.IPropertyReference|null); + } + + /** Represents a Sum. */ + class Sum implements ISum { + + /** + * Constructs a new Sum. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.AggregationQuery.Aggregation.ISum); + + /** Sum property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** + * Creates a new Sum instance using the specified properties. + * @param [properties] Properties to set + * @returns Sum instance + */ + public static create(properties?: google.datastore.v1.AggregationQuery.Aggregation.ISum): google.datastore.v1.AggregationQuery.Aggregation.Sum; + + /** + * Encodes the specified Sum message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Sum.verify|verify} messages. + * @param message Sum message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.AggregationQuery.Aggregation.ISum, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Sum message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Sum.verify|verify} messages. + * @param message Sum message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.AggregationQuery.Aggregation.ISum, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Sum message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Sum + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationQuery.Aggregation.Sum; + + /** + * Decodes a Sum message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Sum + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationQuery.Aggregation.Sum; + + /** + * Verifies a Sum message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Sum message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Sum + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationQuery.Aggregation.Sum; + + /** + * Creates a plain object from a Sum message. Also converts values to other types if specified. + * @param message Sum + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AggregationQuery.Aggregation.Sum, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Sum to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Sum + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an Avg. */ + interface IAvg { + + /** Avg property */ + property?: (google.datastore.v1.IPropertyReference|null); + } + + /** Represents an Avg. */ + class Avg implements IAvg { + + /** + * Constructs a new Avg. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.AggregationQuery.Aggregation.IAvg); + + /** Avg property. */ + public property?: (google.datastore.v1.IPropertyReference|null); + + /** + * Creates a new Avg instance using the specified properties. + * @param [properties] Properties to set + * @returns Avg instance + */ + public static create(properties?: google.datastore.v1.AggregationQuery.Aggregation.IAvg): google.datastore.v1.AggregationQuery.Aggregation.Avg; + + /** + * Encodes the specified Avg message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Avg.verify|verify} messages. + * @param message Avg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.AggregationQuery.Aggregation.IAvg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Avg message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Avg.verify|verify} messages. + * @param message Avg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.AggregationQuery.Aggregation.IAvg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Avg message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Avg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.AggregationQuery.Aggregation.Avg; + + /** + * Decodes an Avg message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Avg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.AggregationQuery.Aggregation.Avg; + + /** + * Verifies an Avg message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an Avg message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Avg + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.AggregationQuery.Aggregation.Avg; + + /** + * Creates a plain object from an Avg message. Also converts values to other types if specified. + * @param message Avg + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.AggregationQuery.Aggregation.Avg, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Avg to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Avg + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 98f1b3f167a..6e5cd37c871 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -9916,6 +9916,8 @@ * @memberof google.datastore.v1.AggregationQuery * @interface IAggregation * @property {google.datastore.v1.AggregationQuery.Aggregation.ICount|null} [count] Aggregation count + * @property {google.datastore.v1.AggregationQuery.Aggregation.ISum|null} [sum] Aggregation sum + * @property {google.datastore.v1.AggregationQuery.Aggregation.IAvg|null} [avg] Aggregation avg * @property {string|null} [alias] Aggregation alias */ @@ -9942,6 +9944,22 @@ */ Aggregation.prototype.count = null; + /** + * Aggregation sum. + * @member {google.datastore.v1.AggregationQuery.Aggregation.ISum|null|undefined} sum + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + */ + Aggregation.prototype.sum = null; + + /** + * Aggregation avg. + * @member {google.datastore.v1.AggregationQuery.Aggregation.IAvg|null|undefined} avg + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @instance + */ + Aggregation.prototype.avg = null; + /** * Aggregation alias. * @member {string} alias @@ -9955,12 +9973,12 @@ /** * Aggregation operator. - * @member {"count"|undefined} operator + * @member {"count"|"sum"|"avg"|undefined} operator * @memberof google.datastore.v1.AggregationQuery.Aggregation * @instance */ Object.defineProperty(Aggregation.prototype, "operator", { - get: $util.oneOfGetter($oneOfFields = ["count"]), + get: $util.oneOfGetter($oneOfFields = ["count", "sum", "avg"]), set: $util.oneOfSetter($oneOfFields) }); @@ -9990,6 +10008,10 @@ writer = $Writer.create(); if (message.count != null && Object.hasOwnProperty.call(message, "count")) $root.google.datastore.v1.AggregationQuery.Aggregation.Count.encode(message.count, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.sum != null && Object.hasOwnProperty.call(message, "sum")) + $root.google.datastore.v1.AggregationQuery.Aggregation.Sum.encode(message.sum, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.avg != null && Object.hasOwnProperty.call(message, "avg")) + $root.google.datastore.v1.AggregationQuery.Aggregation.Avg.encode(message.avg, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.alias != null && Object.hasOwnProperty.call(message, "alias")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.alias); return writer; @@ -10030,6 +10052,14 @@ message.count = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.decode(reader, reader.uint32()); break; } + case 2: { + message.sum = $root.google.datastore.v1.AggregationQuery.Aggregation.Sum.decode(reader, reader.uint32()); + break; + } + case 3: { + message.avg = $root.google.datastore.v1.AggregationQuery.Aggregation.Avg.decode(reader, reader.uint32()); + break; + } case 7: { message.alias = reader.string(); break; @@ -10078,6 +10108,26 @@ return "count." + error; } } + if (message.sum != null && message.hasOwnProperty("sum")) { + if (properties.operator === 1) + return "operator: multiple values"; + properties.operator = 1; + { + var error = $root.google.datastore.v1.AggregationQuery.Aggregation.Sum.verify(message.sum); + if (error) + return "sum." + error; + } + } + if (message.avg != null && message.hasOwnProperty("avg")) { + if (properties.operator === 1) + return "operator: multiple values"; + properties.operator = 1; + { + var error = $root.google.datastore.v1.AggregationQuery.Aggregation.Avg.verify(message.avg); + if (error) + return "avg." + error; + } + } if (message.alias != null && message.hasOwnProperty("alias")) if (!$util.isString(message.alias)) return "alias: string expected"; @@ -10101,6 +10151,16 @@ throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.count: object expected"); message.count = $root.google.datastore.v1.AggregationQuery.Aggregation.Count.fromObject(object.count); } + if (object.sum != null) { + if (typeof object.sum !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.sum: object expected"); + message.sum = $root.google.datastore.v1.AggregationQuery.Aggregation.Sum.fromObject(object.sum); + } + if (object.avg != null) { + if (typeof object.avg !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.avg: object expected"); + message.avg = $root.google.datastore.v1.AggregationQuery.Aggregation.Avg.fromObject(object.avg); + } if (object.alias != null) message.alias = String(object.alias); return message; @@ -10126,6 +10186,16 @@ if (options.oneofs) object.operator = "count"; } + if (message.sum != null && message.hasOwnProperty("sum")) { + object.sum = $root.google.datastore.v1.AggregationQuery.Aggregation.Sum.toObject(message.sum, options); + if (options.oneofs) + object.operator = "sum"; + } + if (message.avg != null && message.hasOwnProperty("avg")) { + object.avg = $root.google.datastore.v1.AggregationQuery.Aggregation.Avg.toObject(message.avg, options); + if (options.oneofs) + object.operator = "avg"; + } if (message.alias != null && message.hasOwnProperty("alias")) object.alias = message.alias; return object; @@ -10365,6 +10435,422 @@ return Count; })(); + Aggregation.Sum = (function() { + + /** + * Properties of a Sum. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @interface ISum + * @property {google.datastore.v1.IPropertyReference|null} [property] Sum property + */ + + /** + * Constructs a new Sum. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @classdesc Represents a Sum. + * @implements ISum + * @constructor + * @param {google.datastore.v1.AggregationQuery.Aggregation.ISum=} [properties] Properties to set + */ + function Sum(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Sum property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @instance + */ + Sum.prototype.property = null; + + /** + * Creates a new Sum instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ISum=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Sum} Sum instance + */ + Sum.create = function create(properties) { + return new Sum(properties); + }; + + /** + * Encodes the specified Sum message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Sum.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ISum} message Sum message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Sum.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Sum message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Sum.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.ISum} message Sum message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Sum.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Sum message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Sum} Sum + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Sum.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Sum(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Sum message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Sum} Sum + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Sum.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Sum message. + * @function verify + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Sum.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + return null; + }; + + /** + * Creates a Sum message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Sum} Sum + */ + Sum.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationQuery.Aggregation.Sum) + return object; + var message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Sum(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.Sum.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + return message; + }; + + /** + * Creates a plain object from a Sum message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.Sum} message Sum + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Sum.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.property = null; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + return object; + }; + + /** + * Converts this Sum to JSON. + * @function toJSON + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @instance + * @returns {Object.} JSON object + */ + Sum.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Sum + * @function getTypeUrl + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Sum + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Sum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AggregationQuery.Aggregation.Sum"; + }; + + return Sum; + })(); + + Aggregation.Avg = (function() { + + /** + * Properties of an Avg. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @interface IAvg + * @property {google.datastore.v1.IPropertyReference|null} [property] Avg property + */ + + /** + * Constructs a new Avg. + * @memberof google.datastore.v1.AggregationQuery.Aggregation + * @classdesc Represents an Avg. + * @implements IAvg + * @constructor + * @param {google.datastore.v1.AggregationQuery.Aggregation.IAvg=} [properties] Properties to set + */ + function Avg(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Avg property. + * @member {google.datastore.v1.IPropertyReference|null|undefined} property + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @instance + */ + Avg.prototype.property = null; + + /** + * Creates a new Avg instance using the specified properties. + * @function create + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.IAvg=} [properties] Properties to set + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Avg} Avg instance + */ + Avg.create = function create(properties) { + return new Avg(properties); + }; + + /** + * Encodes the specified Avg message. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Avg.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.IAvg} message Avg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Avg.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + $root.google.datastore.v1.PropertyReference.encode(message.property, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Avg message, length delimited. Does not implicitly {@link google.datastore.v1.AggregationQuery.Aggregation.Avg.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.IAvg} message Avg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Avg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Avg message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Avg} Avg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Avg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Avg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.property = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Avg message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Avg} Avg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Avg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Avg message. + * @function verify + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Avg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.property != null && message.hasOwnProperty("property")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.property); + if (error) + return "property." + error; + } + return null; + }; + + /** + * Creates an Avg message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.AggregationQuery.Aggregation.Avg} Avg + */ + Avg.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.AggregationQuery.Aggregation.Avg) + return object; + var message = new $root.google.datastore.v1.AggregationQuery.Aggregation.Avg(); + if (object.property != null) { + if (typeof object.property !== "object") + throw TypeError(".google.datastore.v1.AggregationQuery.Aggregation.Avg.property: object expected"); + message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property); + } + return message; + }; + + /** + * Creates a plain object from an Avg message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {google.datastore.v1.AggregationQuery.Aggregation.Avg} message Avg + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Avg.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.property = null; + if (message.property != null && message.hasOwnProperty("property")) + object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options); + return object; + }; + + /** + * Converts this Avg to JSON. + * @function toJSON + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @instance + * @returns {Object.} JSON object + */ + Avg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Avg + * @function getTypeUrl + * @memberof google.datastore.v1.AggregationQuery.Aggregation.Avg + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Avg.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.AggregationQuery.Aggregation.Avg"; + }; + + return Avg; + })(); + return Aggregation; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 2247c502adb..e34eae8b0be 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -900,7 +900,9 @@ "oneofs": { "operator": { "oneof": [ - "count" + "count", + "sum", + "avg" ] } }, @@ -909,6 +911,14 @@ "type": "Count", "id": 1 }, + "sum": { + "type": "Sum", + "id": 2 + }, + "avg": { + "type": "Avg", + "id": 3 + }, "alias": { "type": "string", "id": 7, @@ -928,6 +938,22 @@ } } } + }, + "Sum": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + } + } + }, + "Avg": { + "fields": { + "property": { + "type": "PropertyReference", + "id": 1 + } + } } } } diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js index 57a33800a0d..2b5492b81e1 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js @@ -42,7 +42,7 @@ function main(projectId, keys) { * Required. A list of keys with incomplete key paths for which to allocate * IDs. No key may be reserved/read-only. */ - // const keys = 1234 + // const keys = [1,2,3,4] // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js index 9c3efa676ac..70ed210a366 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js @@ -47,7 +47,7 @@ function main(projectId) { * transaction identifier is returned by a call to * Datastore.BeginTransaction google.datastore.v1.Datastore.BeginTransaction. */ - // const transaction = 'Buffer.from('string')' + // const transaction = Buffer.from('string') /** * Options for beginning a new transaction for this request. * The transaction is committed when the request completes. If specified, @@ -67,7 +67,7 @@ function main(projectId) { * When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single * entity. */ - // const mutations = 1234 + // const mutations = [1,2,3,4] // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js index 3fc79fb100e..aa8742d8789 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js @@ -45,7 +45,7 @@ function main(projectId, keys) { /** * Required. Keys of entities to look up. */ - // const keys = 1234 + // const keys = [1,2,3,4] // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js index 0a5c915aa94..fc1eea72a98 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js @@ -42,7 +42,7 @@ function main(projectId, keys) { * Required. A list of keys with complete key paths whose numeric IDs should * not be auto-allocated. */ - // const keys = 1234 + // const keys = [1,2,3,4] // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js index bdbbfaa2a61..17927162c92 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js @@ -42,7 +42,7 @@ function main(projectId, transaction) { * Required. The transaction identifier, returned by a call to * Datastore.BeginTransaction google.datastore.v1.Datastore.BeginTransaction. */ - // const transaction = 'Buffer.from('string')' + // const transaction = Buffer.from('string') // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js index 2b16823a292..757f6330955 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js @@ -35,7 +35,7 @@ function main(projectId, outputUrlPrefix) { /** * Client-assigned labels. */ - // const labels = 1234 + // const labels = [1,2,3,4] /** * Description of what data from the project is included in the export. */ @@ -52,8 +52,8 @@ function main(projectId, outputUrlPrefix) { * considerations (https://cloud.google.com/storage/docs/naming#object-considerations). * The resulting files will be nested deeper than the specified URL prefix. * The final output URL will be provided in the - * google.datastore.admin.v1.ExportEntitiesResponse.output_url google.datastore.admin.v1.ExportEntitiesResponse.output_url field. That - * value should be used for subsequent ImportEntities operations. + * google.datastore.admin.v1.ExportEntitiesResponse.output_url google.datastore.admin.v1.ExportEntitiesResponse.output_url + * field. That value should be used for subsequent ImportEntities operations. * By nesting the data files deeper, the same Cloud Storage bucket can be used * in multiple ExportEntities operations without conflict. */ diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js index 29ecd6fa5ae..8db576d2ad7 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js @@ -35,10 +35,11 @@ function main(projectId, inputUrl) { /** * Client-assigned labels. */ - // const labels = 1234 + // const labels = [1,2,3,4] /** - * Required. The full resource URL of the external storage location. Currently, only - * Google Cloud Storage is supported. So input_url should be of the form: + * Required. The full resource URL of the external storage location. + * Currently, only Google Cloud Storage is supported. So input_url should be + * of the form: * `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where * `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is * an optional Cloud Storage namespace path (this is not a Cloud Datastore diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.admin.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.admin.v1.json new file mode 100644 index 00000000000..a96b7eab4d2 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.admin.v1.json @@ -0,0 +1,303 @@ +{ + "clientLibrary": { + "name": "nodejs-admin", + "version": "0.1.0", + "language": "TYPESCRIPT", + "apis": [ + { + "id": "google.datastore.admin.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ExportEntities_async", + "title": "DatastoreAdmin exportEntities Sample", + "origin": "API_DEFINITION", + "description": " Exports a copy of all or a subset of entities from Google Cloud Datastore to another storage system, such as Google Cloud Storage. Recent updates to entities may not be reflected in the export. The export occurs in the background and its progress can be monitored and managed via the Operation resource that is created. The output of an export may only be used once the associated operation is done. If an export operation is cancelled before completion it may leave partial data behind in Google Cloud Storage.", + "canonical": true, + "file": "datastore_admin.export_entities.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 81, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ExportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ExportEntities", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "labels", + "type": "TYPE_MESSAGE[]" + }, + { + "name": "entity_filter", + "type": ".google.datastore.admin.v1.EntityFilter" + }, + { + "name": "output_url_prefix", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ExportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ExportEntities", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ImportEntities_async", + "title": "DatastoreAdmin importEntities Sample", + "origin": "API_DEFINITION", + "description": " Imports entities into Google Cloud Datastore. Existing entities with the same key are overwritten. The import occurs in the background and its progress can be monitored and managed via the Operation resource that is created. If an ImportEntities operation is cancelled, it is possible that a subset of the data has already been imported to Cloud Datastore.", + "canonical": true, + "file": "datastore_admin.import_entities.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 82, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ImportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ImportEntities", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "labels", + "type": "TYPE_MESSAGE[]" + }, + { + "name": "input_url", + "type": "TYPE_STRING" + }, + { + "name": "entity_filter", + "type": ".google.datastore.admin.v1.EntityFilter" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ImportEntities", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ImportEntities", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_CreateIndex_async", + "title": "DatastoreAdmin createIndex Sample", + "origin": "API_DEFINITION", + "description": " Creates the specified index. A newly created index's initial state is `CREATING`. On completion of the returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. If the index already exists, the call will return an `ALREADY_EXISTS` status. During index creation, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, removing the index with [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex], then re-creating the index with [create] [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. Indexes with a single property cannot be created.", + "canonical": true, + "file": "datastore_admin.create_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 58, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "CreateIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.CreateIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index", + "type": ".google.datastore.admin.v1.Index" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "CreateIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.CreateIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_DeleteIndex_async", + "title": "DatastoreAdmin deleteIndex Sample", + "origin": "API_DEFINITION", + "description": " Deletes an existing index. An index can only be deleted if it is in a `READY` or `ERROR` state. On successful execution of the request, the index will be in a `DELETING` [state][google.datastore.admin.v1.Index.State]. And on completion of the returned [google.longrunning.Operation][google.longrunning.Operation], the index will be removed. During index deletion, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, followed by calling [delete][google.datastore.admin.v1.DatastoreAdmin.DeleteIndex] again.", + "canonical": true, + "file": "datastore_admin.delete_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 57, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "DeleteIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.DeleteIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index_id", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.longrunning.Operation", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "DeleteIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.DeleteIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_GetIndex_async", + "title": "DatastoreAdmin getIndex Sample", + "origin": "API_DEFINITION", + "description": " Gets an index.", + "canonical": true, + "file": "datastore_admin.get_index.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 56, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "GetIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.GetIndex", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "index_id", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.datastore.admin.v1.Index", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "GetIndex", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.GetIndex", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_DatastoreAdmin_ListIndexes_async", + "title": "DatastoreAdmin listIndexes Sample", + "origin": "API_DEFINITION", + "description": " Lists the indexes that match the specified filters. Datastore uses an eventually consistent query to fetch the list of indexes and may occasionally return stale results.", + "canonical": true, + "file": "datastore_admin.list_indexes.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 66, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ListIndexes", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ListIndexes", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "filter", + "type": "TYPE_STRING" + }, + { + "name": "page_size", + "type": "TYPE_INT32" + }, + { + "name": "page_token", + "type": "TYPE_STRING" + } + ], + "resultType": ".google.datastore.admin.v1.ListIndexesResponse", + "client": { + "shortName": "DatastoreAdminClient", + "fullName": "google.datastore.admin.v1.DatastoreAdminClient" + }, + "method": { + "shortName": "ListIndexes", + "fullName": "google.datastore.admin.v1.DatastoreAdmin.ListIndexes", + "service": { + "shortName": "DatastoreAdmin", + "fullName": "google.datastore.admin.v1.DatastoreAdmin" + } + } + } + } + ] +} diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json new file mode 100644 index 00000000000..27ec516fcc5 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json @@ -0,0 +1,439 @@ +{ + "clientLibrary": { + "name": "nodejs-datastore", + "version": "0.1.0", + "language": "TYPESCRIPT", + "apis": [ + { + "id": "google.datastore.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "datastore_v1_generated_Datastore_Lookup_async", + "title": "datastore lookup Sample", + "origin": "API_DEFINITION", + "description": " Looks up entities by key.", + "canonical": true, + "file": "datastore.lookup.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 68, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Lookup", + "fullName": "google.datastore.v1.Datastore.Lookup", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.LookupResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Lookup", + "fullName": "google.datastore.v1.Datastore.Lookup", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_RunQuery_async", + "title": "datastore runQuery Sample", + "origin": "API_DEFINITION", + "description": " Queries for entities.", + "canonical": true, + "file": "datastore.run_query.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 78, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "RunQuery", + "fullName": "google.datastore.v1.Datastore.RunQuery", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "partition_id", + "type": ".google.datastore.v1.PartitionId" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "query", + "type": ".google.datastore.v1.Query" + }, + { + "name": "gql_query", + "type": ".google.datastore.v1.GqlQuery" + } + ], + "resultType": ".google.datastore.v1.RunQueryResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "RunQuery", + "fullName": "google.datastore.v1.Datastore.RunQuery", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_RunAggregationQuery_async", + "title": "datastore runAggregationQuery Sample", + "origin": "API_DEFINITION", + "description": " Runs an aggregation query.", + "canonical": true, + "file": "datastore.run_aggregation_query.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 78, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "RunAggregationQuery", + "fullName": "google.datastore.v1.Datastore.RunAggregationQuery", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "partition_id", + "type": ".google.datastore.v1.PartitionId" + }, + { + "name": "read_options", + "type": ".google.datastore.v1.ReadOptions" + }, + { + "name": "aggregation_query", + "type": ".google.datastore.v1.AggregationQuery" + }, + { + "name": "gql_query", + "type": ".google.datastore.v1.GqlQuery" + } + ], + "resultType": ".google.datastore.v1.RunAggregationQueryResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "RunAggregationQuery", + "fullName": "google.datastore.v1.Datastore.RunAggregationQuery", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_BeginTransaction_async", + "title": "datastore beginTransaction Sample", + "origin": "API_DEFINITION", + "description": " Begins a new transaction.", + "canonical": true, + "file": "datastore.begin_transaction.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 63, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "BeginTransaction", + "fullName": "google.datastore.v1.Datastore.BeginTransaction", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "transaction_options", + "type": ".google.datastore.v1.TransactionOptions" + } + ], + "resultType": ".google.datastore.v1.BeginTransactionResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "BeginTransaction", + "fullName": "google.datastore.v1.Datastore.BeginTransaction", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_Commit_async", + "title": "datastore commit Sample", + "origin": "API_DEFINITION", + "description": " Commits a transaction, optionally creating, deleting or modifying some entities.", + "canonical": true, + "file": "datastore.commit.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 89, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Commit", + "fullName": "google.datastore.v1.Datastore.Commit", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "mode", + "type": ".google.datastore.v1.CommitRequest.Mode" + }, + { + "name": "transaction", + "type": "TYPE_BYTES" + }, + { + "name": "single_use_transaction", + "type": ".google.datastore.v1.TransactionOptions" + }, + { + "name": "mutations", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.CommitResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Commit", + "fullName": "google.datastore.v1.Datastore.Commit", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_Rollback_async", + "title": "datastore rollback Sample", + "origin": "API_DEFINITION", + "description": " Rolls back a transaction.", + "canonical": true, + "file": "datastore.rollback.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "Rollback", + "fullName": "google.datastore.v1.Datastore.Rollback", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "transaction", + "type": "TYPE_BYTES" + } + ], + "resultType": ".google.datastore.v1.RollbackResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "Rollback", + "fullName": "google.datastore.v1.Datastore.Rollback", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_AllocateIds_async", + "title": "datastore allocateIds Sample", + "origin": "API_DEFINITION", + "description": " Allocates IDs for the given keys, which is useful for referencing an entity before it is inserted.", + "canonical": true, + "file": "datastore.allocate_ids.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "AllocateIds", + "fullName": "google.datastore.v1.Datastore.AllocateIds", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.AllocateIdsResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "AllocateIds", + "fullName": "google.datastore.v1.Datastore.AllocateIds", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + }, + { + "regionTag": "datastore_v1_generated_Datastore_ReserveIds_async", + "title": "datastore reserveIds Sample", + "origin": "API_DEFINITION", + "description": " Prevents the supplied keys' IDs from being auto-allocated by Cloud Datastore.", + "canonical": true, + "file": "datastore.reserve_ids.js", + "language": "JAVASCRIPT", + "segments": [ + { + "start": 25, + "end": 65, + "type": "FULL" + } + ], + "clientMethod": { + "shortName": "ReserveIds", + "fullName": "google.datastore.v1.Datastore.ReserveIds", + "async": true, + "parameters": [ + { + "name": "project_id", + "type": "TYPE_STRING" + }, + { + "name": "database_id", + "type": "TYPE_STRING" + }, + { + "name": "keys", + "type": "TYPE_MESSAGE[]" + } + ], + "resultType": ".google.datastore.v1.ReserveIdsResponse", + "client": { + "shortName": "DatastoreClient", + "fullName": "google.datastore.v1.DatastoreClient" + }, + "method": { + "shortName": "ReserveIds", + "fullName": "google.datastore.v1.Datastore.ReserveIds", + "service": { + "shortName": "Datastore", + "fullName": "google.datastore.v1.Datastore" + } + } + } + } + ] +} diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 6698caf5af7..2442e3c143e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -42,14 +42,10 @@ const version = require('../../../package.json').version; /** * Google Cloud Datastore Admin API * - * * The Datastore Admin API provides several admin services for Cloud Datastore. * - * ----------------------------------------------------------------------------- - * ## Concepts - * - * Project, namespace, kind, and entity as defined in the Google Cloud Datastore - * API. + * Concepts: Project, namespace, kind, and entity as defined in the Google Cloud + * Datastore API. * * Operation: An Operation represents work being performed in the background. * @@ -57,50 +53,40 @@ const version = require('../../../package.json').version; * specified as a combination of kinds and namespaces (either or both of which * may be all). * - * ----------------------------------------------------------------------------- - * ## Services - * - * # Export/Import + * Export/Import Service: * - * The Export/Import service provides the ability to copy all or a subset of + * - The Export/Import service provides the ability to copy all or a subset of * entities to/from Google Cloud Storage. - * - * Exported data may be imported into Cloud Datastore for any Google Cloud + * - Exported data may be imported into Cloud Datastore for any Google Cloud * Platform project. It is not restricted to the export source project. It is * possible to export from one project and then import into another. - * - * Exported data can also be loaded into Google BigQuery for analysis. - * - * Exports and imports are performed asynchronously. An Operation resource is + * - Exported data can also be loaded into Google BigQuery for analysis. + * - Exports and imports are performed asynchronously. An Operation resource is * created for each export/import. The state (including any errors encountered) * of the export/import may be queried via the Operation resource. * - * # Index + * Index Service: * - * The index service manages Cloud Datastore composite indexes. - * - * Index creation and deletion are performed asynchronously. + * - The index service manages Cloud Datastore composite indexes. + * - Index creation and deletion are performed asynchronously. * An Operation resource is created for each such asynchronous operation. * The state of the operation (including any errors encountered) * may be queried via the Operation resource. * - * # Operation + * Operation Service: * - * The Operations collection provides a record of actions performed for the + * - The Operations collection provides a record of actions performed for the * specified project (including any operations in progress). Operations are not * created directly but through calls on other collections or resources. - * - * An operation that is not yet done may be cancelled. The request to cancel is - * asynchronous and the operation may continue to run for some time after the + * - An operation that is not yet done may be cancelled. The request to cancel + * is asynchronous and the operation may continue to run for some time after the * request to cancel is made. - * - * An operation that is done may be deleted so that it is no longer listed as + * - An operation that is done may be deleted so that it is no longer listed as * part of the Operation collection. - * - * ListOperations returns all pending operations, but not completed operations. - * - * Operations are created by service DatastoreAdmin, - * but are accessed via service google.longrunning.Operations. + * - ListOperations returns all pending operations, but not completed + * operations. + * - Operations are created by service DatastoreAdmin, but are accessed via + * service google.longrunning.Operations. * @class * @memberof v1 */ @@ -484,9 +470,8 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.admin.v1.Index | Index}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.admin.v1.Index|Index}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.get_index.js * region_tag:datastore_v1_generated_DatastoreAdmin_GetIndex_async @@ -591,8 +576,8 @@ export class DatastoreAdminClient { * * The resulting files will be nested deeper than the specified URL prefix. * The final output URL will be provided in the - * {@link google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url} field. That - * value should be used for subsequent ImportEntities operations. + * {@link protos.google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url} + * field. That value should be used for subsequent ImportEntities operations. * * By nesting the data files deeper, the same Cloud Storage bucket can be used * in multiple ExportEntities operations without conflict. @@ -602,8 +587,7 @@ export class DatastoreAdminClient { * The first element of the array is an object representing * a long running operation. Its `promise()` method returns a promise * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.export_entities.js * region_tag:datastore_v1_generated_DatastoreAdmin_ExportEntities_async @@ -698,8 +682,7 @@ export class DatastoreAdminClient { * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.export_entities.js * region_tag:datastore_v1_generated_DatastoreAdmin_ExportEntities_async @@ -741,8 +724,9 @@ export class DatastoreAdminClient { * @param {number[]} request.labels * Client-assigned labels. * @param {string} request.inputUrl - * Required. The full resource URL of the external storage location. Currently, only - * Google Cloud Storage is supported. So input_url should be of the form: + * Required. The full resource URL of the external storage location. + * Currently, only Google Cloud Storage is supported. So input_url should be + * of the form: * `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where * `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is * an optional Cloud Storage namespace path (this is not a Cloud Datastore @@ -753,7 +737,7 @@ export class DatastoreAdminClient { * considerations](https://cloud.google.com/storage/docs/naming#object-considerations). * * For more information, see - * {@link google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url}. + * {@link protos.google.datastore.admin.v1.ExportEntitiesResponse.output_url|google.datastore.admin.v1.ExportEntitiesResponse.output_url}. * @param {google.datastore.admin.v1.EntityFilter} request.entityFilter * Optionally specify which kinds/namespaces are to be imported. If provided, * the list must be a subset of the EntityFilter used in creating the export, @@ -765,8 +749,7 @@ export class DatastoreAdminClient { * The first element of the array is an object representing * a long running operation. Its `promise()` method returns a promise * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.import_entities.js * region_tag:datastore_v1_generated_DatastoreAdmin_ImportEntities_async @@ -861,8 +844,7 @@ export class DatastoreAdminClient { * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.import_entities.js * region_tag:datastore_v1_generated_DatastoreAdmin_ImportEntities_async @@ -893,14 +875,14 @@ export class DatastoreAdminClient { /** * Creates the specified index. * A newly created index's initial state is `CREATING`. On completion of the - * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the state will be `READY`. - * If the index already exists, the call will return an `ALREADY_EXISTS` - * status. + * returned {@link protos.google.longrunning.Operation|google.longrunning.Operation}, the + * state will be `READY`. If the index already exists, the call will return an + * `ALREADY_EXISTS` status. * * During index creation, the process could result in an error, in which * case the index will move to the `ERROR` state. The process can be recovered * by fixing the data that caused the error, removing the index with - * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete}, then + * {@link protos.google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete}, then * re-creating the index with [create] * [google.datastore.admin.v1.DatastoreAdmin.CreateIndex]. * @@ -919,8 +901,7 @@ export class DatastoreAdminClient { * The first element of the array is an object representing * a long running operation. Its `promise()` method returns a promise * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.create_index.js * region_tag:datastore_v1_generated_DatastoreAdmin_CreateIndex_async @@ -1015,8 +996,7 @@ export class DatastoreAdminClient { * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.create_index.js * region_tag:datastore_v1_generated_DatastoreAdmin_CreateIndex_async @@ -1048,13 +1028,14 @@ export class DatastoreAdminClient { * Deletes an existing index. * An index can only be deleted if it is in a `READY` or `ERROR` state. On * successful execution of the request, the index will be in a `DELETING` - * {@link google.datastore.admin.v1.Index.State|state}. And on completion of the - * returned {@link google.longrunning.Operation|google.longrunning.Operation}, the index will be removed. + * {@link protos.google.datastore.admin.v1.Index.State|state}. And on completion of the + * returned {@link protos.google.longrunning.Operation|google.longrunning.Operation}, the + * index will be removed. * * During index deletion, the process could result in an error, in which * case the index will move to the `ERROR` state. The process can be recovered * by fixing the data that caused the error, followed by calling - * {@link google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete} again. + * {@link protos.google.datastore.admin.v1.DatastoreAdmin.DeleteIndex|delete} again. * * @param {Object} request * The request object that will be sent. @@ -1068,8 +1049,7 @@ export class DatastoreAdminClient { * The first element of the array is an object representing * a long running operation. Its `promise()` method returns a promise * you can `await` for. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.delete_index.js * region_tag:datastore_v1_generated_DatastoreAdmin_DeleteIndex_async @@ -1165,8 +1145,7 @@ export class DatastoreAdminClient { * The operation name that will be passed. * @returns {Promise} - The promise which resolves to an object. * The decoded operation object has result and metadata field to get information from. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.delete_index.js * region_tag:datastore_v1_generated_DatastoreAdmin_DeleteIndex_async @@ -1212,14 +1191,13 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link google.datastore.admin.v1.Index | Index}. + * The first element of the array is Array of {@link protos.google.datastore.admin.v1.Index|Index}. * The client library will perform auto-pagination by default: it will call the API as many * times as needed and will merge results from all the pages into this array. * Note that it can affect your quota. * We recommend using `listIndexesAsync()` * method described below for async iteration which you can stop as needed. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. */ listIndexes( @@ -1306,13 +1284,12 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Stream} - * An object stream which emits an object representing {@link google.datastore.admin.v1.Index | Index} on 'data' event. + * An object stream which emits an object representing {@link protos.google.datastore.admin.v1.Index|Index} on 'data' event. * The client library will perform auto-pagination by default: it will call the API as many * times as needed. Note that it can affect your quota. * We recommend using `listIndexesAsync()` * method described below for async iteration which you can stop as needed. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. */ listIndexesStream( @@ -1354,12 +1331,11 @@ export class DatastoreAdminClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Object} - * An iterable Object that allows [async iteration](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols). + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. * When you iterate the returned iterable, each element will be an object representing - * {@link google.datastore.admin.v1.Index | Index}. The API will be called under the hood as needed, once per the page, + * {@link protos.google.datastore.admin.v1.Index|Index}. The API will be called under the hood as needed, once per the page, * so you can stop the iteration when you don't need more results. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination) + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore_admin.list_indexes.js * region_tag:datastore_v1_generated_DatastoreAdmin_ListIndexes_async diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 55ac8c92b97..19ddc994dfe 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -377,9 +377,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.LookupResponse | LookupResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.LookupResponse|LookupResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.lookup.js * region_tag:datastore_v1_generated_Datastore_Lookup_async @@ -495,9 +494,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.RunQueryResponse | RunQueryResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.RunQueryResponse|RunQueryResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.run_query.js * region_tag:datastore_v1_generated_Datastore_RunQuery_async @@ -613,9 +611,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.RunAggregationQueryResponse | RunAggregationQueryResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.RunAggregationQueryResponse|RunAggregationQueryResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.run_aggregation_query.js * region_tag:datastore_v1_generated_Datastore_RunAggregationQuery_async @@ -724,9 +721,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.BeginTransactionResponse | BeginTransactionResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.BeginTransactionResponse|BeginTransactionResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.begin_transaction.js * region_tag:datastore_v1_generated_Datastore_BeginTransaction_async @@ -836,12 +832,12 @@ export class DatastoreClient { * @param {Buffer} request.transaction * The identifier of the transaction associated with the commit. A * transaction identifier is returned by a call to - * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * {@link protos.google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. * @param {google.datastore.v1.TransactionOptions} request.singleUseTransaction * Options for beginning a new transaction for this request. * The transaction is committed when the request completes. If specified, - * {@link google.datastore.v1.TransactionOptions|TransactionOptions.mode} must be - * {@link google.datastore.v1.TransactionOptions.ReadWrite|TransactionOptions.ReadWrite}. + * {@link protos.google.datastore.v1.TransactionOptions|TransactionOptions.mode} must be + * {@link protos.google.datastore.v1.TransactionOptions.ReadWrite|TransactionOptions.ReadWrite}. * @param {number[]} request.mutations * The mutations to perform. * @@ -859,9 +855,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.CommitResponse | CommitResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.CommitResponse|CommitResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.commit.js * region_tag:datastore_v1_generated_Datastore_Commit_async @@ -965,13 +960,12 @@ export class DatastoreClient { * database. * @param {Buffer} request.transaction * Required. The transaction identifier, returned by a call to - * {@link google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. + * {@link protos.google.datastore.v1.Datastore.BeginTransaction|Datastore.BeginTransaction}. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.RollbackResponse | RollbackResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.RollbackResponse|RollbackResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.rollback.js * region_tag:datastore_v1_generated_Datastore_Rollback_async @@ -1080,9 +1074,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.AllocateIdsResponse | AllocateIdsResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.AllocateIdsResponse|AllocateIdsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.allocate_ids.js * region_tag:datastore_v1_generated_Datastore_AllocateIds_async @@ -1191,9 +1184,8 @@ export class DatastoreClient { * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.datastore.v1.ReserveIdsResponse | ReserveIdsResponse}. - * Please see the - * [documentation](https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods) + * The first element of the array is an object representing {@link protos.google.datastore.v1.ReserveIdsResponse|ReserveIdsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } * for more details and examples. * @example include:samples/generated/v1/datastore.reserve_ids.js * region_tag:datastore_v1_generated_Datastore_ReserveIds_async From c8efb1e9a110e69aa95ee73758202cb2684c4cff Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 16 Aug 2023 01:23:33 +0200 Subject: [PATCH 733/820] chore(deps): update dependency jsdoc-region-tag to v3 (#1137) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e4995e5cf78..853976a150a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", "jsdoc-fresh": "^2.0.0", - "jsdoc-region-tag": "^2.0.0", + "jsdoc-region-tag": "^3.0.0", "linkinator": "^5.0.0", "mocha": "^9.2.2", "null-loader": "^4.0.0", From 096d355b9ccff59721c0bd8e36270ed3bc58b0b1 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 1 Sep 2023 16:07:10 -0400 Subject: [PATCH 734/820] feat: Sum and average aggregation queries (#1097) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial sum aggregation This commit introduces the sum aggregation with a simple test to ensure it works * Modify encoding This change modifies the encoding so that the right data reaches the grpc layer * PropertyAggregateField with tests Adds helper functions and a super class so that average and sum can share the same properties. * Improve transaction tests Add sum and average to the transaction tests here to improve test coverage for transactions. * Change the description in the describe block * Change return type to average The return type for this function is wrong. The function returns an Average so we should use Average. * Make alias optional Make alias optional since the query still works without providing an alias. * Fix the transaction tests to fail on rollback The transaction tests should not pass if the transaction is rolled back like they do currently. We must not catch errors and instead let the test fail. * Add additional assertions to existing tests Ensure that the addAggregation function works correctly with an additional assertion check. * Revert "Add additional assertions to existing tests" This reverts commit 970c0f412d3c31653c389e9d765817cbb27acb56. * Add describe block for comparing equivalent query This test ensures that all the aggregate queries are actually the same no matter how you build them * Average, sum and count toProto tests Write tests to effectively document the toProto output of the various aggregate fields * Add tests for the sum aggregation Equivalent tests to count are written for sum in system tests and some more tests are written too to meet requirements outlined by team. * Add a test for sum and snapshot reads The test for sum and snapshot reads should look at the database before the data is created and run the tests based on the database in that state * Add two test blocks for special cases Add a test block for a dataset with overflow values and a dataset with NaN values. * Export aggregate field from the client Aggregate field should be exported from the client so that it can be used easily by users. * PR follow-up changes Some idiomatic changes to improve the state of the code in the PR. * Adjust the values so that tests pass Values for sum and average should be different from those of count and these tests provide the right values now. # Conflicts: # system-test/datastore.ts * Add average aggregations Average aggregations regarding appearances have been added in tests and correct values have been assigned * Add snapshot reads for run query and aggregate q The future refactor must implement the TODOs so that there is less repeated code in the codebase. Also, this commit implements snapshot reads for queries and adds a test for the snapshot reads. * Remove Google error and entity filter Remove some unused imports as they do not apply to the code anymore * Should use null for an aggregation query read time Snapshot reads read at a time that there is no data so sums and averages should reflect that accordingly. * Remove tests from a bad cherry pick Tests for sum that have values corresponding to count are still there in the test cases. They should be removed. * Linting fix We don’t care about a loss of precision since the literal value indicated is contained in a test and the loss of precision won’t affect the code. * Do the test on rating instead of appearances At this point the datastore is populated with data about ratings so computations should be done on that instead. * The assertion says the request should have failed An assertion error should be thrown so that the test doesn’t pass if the request is successful. * Add a comment about using limits in test The query with the limit will include all data points with the lowest appearance values. This is likely desired, but also important to document. * Add rollbacks to transaction tests The rollbacks for the transaction tests ensure that if a test fails then the data gets reset to where it was before. * refactor getSharedOptionsOnly Introducing getSharedOptionsOnly allows us to use that function in two different places to avoid a repeated block of code. * Remove test related to snapshot reads This test belongs inside another PR because it is not directly related to sum/avg. * Add a test for multiple types of aggregates A test should be included that looks at multiple aggregations in a single query. * Correct descriptions of two tests on overflow The tests themselves should include the word overflow so that it is clear they are working with an overflow dataset. * Add a comment for setting the alias The comment for setting the alias should not make any mention of count since it is agnostic to the aggregation type. * Add tests to compare various ways to encode alias No matter how alias is encoded, the data structures should store the aggregations the same way inside an aggregate field so as not to create any confusion. * Added tests for when an empty alias is provided Tests for when an empty alias is provided should check that each aggregate query still works. * Add a comment clarifying the use of snapshot reads The sleep function should enable us to test snapshot reads for aggregate queries * Add two tests to explore mixed aggregations alias Two tests should be explored that evaluate what happens when multiple aggregations are used and when too many aggregations are used. * Better names for some internal private functions Shared options functions could be given a better name so that they make more sense to the code that is using them. * Add a comment explaining why the sleep is needed The code must explain why the sleep function is needed in the test because its purpose should be clear. * Add getReadTime function and use for sum/avg A sum/average test uses snapshot reads for an aggregate query. The key here is write code that will guarantee the read time occurs well before all the data is saved in order to ensure the test isn’t flakey. * Rename variable to emptyData emptyData is a more accurate variable name for the datastore save data --- handwritten/nodejs-datastore/src/aggregate.ts | 104 +++- handwritten/nodejs-datastore/src/index.ts | 4 +- handwritten/nodejs-datastore/src/request.ts | 53 +- .../nodejs-datastore/system-test/datastore.ts | 523 +++++++++++++++++- handwritten/nodejs-datastore/test/query.ts | 158 +++++- 5 files changed, 772 insertions(+), 70 deletions(-) diff --git a/handwritten/nodejs-datastore/src/aggregate.ts b/handwritten/nodejs-datastore/src/aggregate.ts index fbef6e3ab36..1eececfe5bb 100644 --- a/handwritten/nodejs-datastore/src/aggregate.ts +++ b/handwritten/nodejs-datastore/src/aggregate.ts @@ -46,11 +46,35 @@ class AggregateQuery { * @param {string} alias * @returns {AggregateQuery} */ - count(alias: string): AggregateQuery { + count(alias?: string): AggregateQuery { this.aggregations.push(AggregateField.count().alias(alias)); return this; } + /** + * Add a `sum` aggregate query to the list of aggregations. + * + * @param {string} property + * @param {string} alias + * @returns {AggregateQuery} + */ + sum(property: string, alias?: string): AggregateQuery { + this.aggregations.push(AggregateField.sum(property).alias(alias)); + return this; + } + + /** + * Add a `average` aggregate query to the list of aggregations. + * + * @param {string} property + * @param {string} alias + * @returns {AggregateQuery} + */ + average(property: string, alias?: string): AggregateQuery { + this.aggregations.push(AggregateField.average(property).alias(alias)); + return this; + } + /** * Add a custom aggregation to the list of aggregations. * @@ -99,7 +123,6 @@ class AggregateQuery { * Get the proto for the list of aggregations. * */ - // eslint-disable-next-line toProto(): any { return this.aggregations.map(aggregation => aggregation.toProto()); } @@ -122,14 +145,34 @@ abstract class AggregateField { } /** - * Gets a copy of the Count aggregate field. + * Gets a copy of the Sum aggregate field. + * + * @returns {Sum} + */ + static sum(property: string): Sum { + return new Sum(property); + } + + /** + * Gets a copy of the Average aggregate field. + * + * @returns {Average} + */ + static average(property: string): Average { + return new Average(property); + } + + /** + * Sets the alias on the aggregate field that should be used. * * @param {string} alias The label used in the results to describe this * aggregate field when a query is run. * @returns {AggregateField} */ - alias(alias: string): AggregateField { - this.alias_ = alias; + alias(alias?: string): AggregateField { + if (alias) { + this.alias_ = alias; + } return this; } @@ -137,7 +180,6 @@ abstract class AggregateField { * Gets the proto for the aggregate field. * */ - // eslint-disable-next-line abstract toProto(): any; } @@ -146,7 +188,6 @@ abstract class AggregateField { * */ class Count extends AggregateField { - // eslint-disable-next-line /** * Gets the proto for the count aggregate field. * @@ -157,4 +198,53 @@ class Count extends AggregateField { } } +/** + * A PropertyAggregateField is a class that contains data that defines any + * aggregation that is performed on a property. + * + */ +abstract class PropertyAggregateField extends AggregateField { + abstract operator: string; + + /** + * Build a PropertyAggregateField object. + * + * @param {string} property + */ + constructor(public property_: string) { + super(); + } + + /** + * Gets the proto for the property aggregate field. + * + */ + toProto(): any { + const aggregation = this.property_ + ? {property: {name: this.property_}} + : {}; + return Object.assign( + {operator: this.operator}, + this.alias_ ? {alias: this.alias_} : null, + {[this.operator]: aggregation} + ); + } +} + +/** + * A Sum is a class that contains data that defines a Sum aggregation. + * + */ +class Sum extends PropertyAggregateField { + operator = 'sum'; +} + +/** + * An Average is a class that contains data that defines an Average aggregation. + * + */ +class Average extends PropertyAggregateField { + operator = 'avg'; +} + export {AggregateField, AggregateQuery, AGGREGATE_QUERY}; diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 16de85651ab..9daf984c82b 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -40,8 +40,9 @@ import * as is from 'is'; import {Transform, pipeline} from 'stream'; import {entity, Entities, Entity, EntityProto, ValueProto} from './entity'; +import {AggregateField} from './aggregate'; import Key = entity.Key; -export {Entity, Key}; +export {Entity, Key, AggregateField}; import {PropertyFilter, and, or} from './filter'; export {PropertyFilter, and, or}; import { @@ -1818,7 +1819,6 @@ promisifyAll(Datastore, { 'isDouble', 'geoPoint', 'getProjectId', - 'getSharedQueryOptions', 'isGeoPoint', 'index', 'int', diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index cb6273ae7ab..c832d7d28b6 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -276,28 +276,8 @@ class DatastoreRequest { } const makeRequest = (keys: entity.Key[] | KeyProto[]) => { - const reqOpts: RequestOptions = { - keys, - }; - - if (options.consistency) { - const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; - - reqOpts.readOptions = { - readConsistency: code, - }; - } - if (options.readTime) { - if (reqOpts.readOptions === undefined) { - reqOpts.readOptions = {}; - } - const readTime = options.readTime; - const seconds = readTime / 1000; - reqOpts.readOptions.readTime = { - seconds: Math.floor(seconds), - }; - } - + const reqOpts = this.getRequestOptions(options); + Object.assign(reqOpts, {keys}); this.request_( { client: 'DatastoreClient', @@ -596,7 +576,7 @@ class DatastoreRequest { setImmediate(callback, e as Error); return; } - const sharedQueryOpts = this.getSharedQueryOptions(query.query, options); + const sharedQueryOpts = this.getQueryOptions(query.query, options); const aggregationQueryOptions: AggregationQueryOptions = { nestedQuery: queryProto, aggregations: query.toProto(), @@ -811,7 +791,7 @@ class DatastoreRequest { setImmediate(onResultSet, e as Error); return; } - const sharedQueryOpts = this.getSharedQueryOptions(query, options); + const sharedQueryOpts = this.getQueryOptions(query, options); const reqOpts: RequestOptions = sharedQueryOpts; reqOpts.query = queryProto; @@ -887,9 +867,8 @@ class DatastoreRequest { return stream; } - private getSharedQueryOptions( - query: Query, - options: RunQueryStreamOptions = {} + private getRequestOptions( + options: RunQueryStreamOptions ): SharedQueryOptions { const sharedQueryOpts = {} as SharedQueryOptions; if (options.consistency) { @@ -898,6 +877,24 @@ class DatastoreRequest { readConsistency: code, }; } + if (options.readTime) { + if (sharedQueryOpts.readOptions === undefined) { + sharedQueryOpts.readOptions = {}; + } + const readTime = options.readTime; + const seconds = readTime / 1000; + sharedQueryOpts.readOptions.readTime = { + seconds: Math.floor(seconds), + }; + } + return sharedQueryOpts; + } + + private getQueryOptions( + query: Query, + options: RunQueryStreamOptions = {} + ): SharedQueryOptions { + const sharedQueryOpts = this.getRequestOptions(options); if (query.namespace) { sharedQueryOpts.partitionId = { namespaceId: query.namespace, @@ -1191,7 +1188,7 @@ export type DeleteResponse = CommitResponse; * that a callback is omitted. */ promisifyAll(DatastoreRequest, { - exclude: ['getSharedQueryOptions'], + exclude: ['getQueryOptions', 'getRequestOptions'], }); /** diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 1fceb019991..ad62dd4ac7d 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -21,11 +21,12 @@ import {Datastore, Index} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; import {AggregateField} from '../src/aggregate'; -import {PropertyFilter, EntityFilter, and, or} from '../src/filter'; +import {PropertyFilter, and, or} from '../src/filter'; import {entity} from '../src/entity'; import KEY_SYMBOL = entity.KEY_SYMBOL; describe('Datastore', () => { + let timeBeforeDataCreation: number; const testKinds: string[] = []; const datastore = new Datastore({ namespace: `${Date.now()}`, @@ -47,6 +48,26 @@ describe('Datastore', () => { // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after // possible implications with kokoro project + // Gets the read time of the latest save so that the test isn't flakey due to race condition. + async function getReadTime(path: [{kind: string; name: string}]) { + const projectId = await datastore.getProjectId(); + const request = { + keys: [ + { + path, + partitionId: {namespaceId: datastore.namespace}, + }, + ], + projectId, + }; + const dataClient = datastore.clients_.get('DatastoreClient'); + let results: any; + if (dataClient) { + results = await dataClient['lookup'](request); + } + return parseInt(results[0].readTime.seconds) * 1000; + } + after(async () => { async function deleteEntities(kind: string) { const query = datastore.createQuery(kind).select('__key__'); @@ -676,12 +697,28 @@ describe('Datastore', () => { ]; before(async () => { + // This 'sleep' function is used to ensure that when data is saved to datastore, + // the time on the server is far enough ahead to be sure to be later than timeBeforeDataCreation + // so that when we read at timeBeforeDataCreation we get a snapshot of data before the save. + function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } const keysToSave = keys.map((key, index) => { return { key, data: characters[index], }; }); + // Save for a key so that a read time can be accessed for snapshot reads. + const emptyData = Object.assign(Object.assign({}, keysToSave[0]), { + data: {}, + }); + await datastore.save(emptyData); + timeBeforeDataCreation = await getReadTime([ + {kind: 'Character', name: 'Rickard'}, + ]); + // Sleep for 3 seconds so that any future reads will be later than timeBeforeDataCreation. + await sleep(3000); await datastore.save(keysToSave); }); @@ -950,6 +987,251 @@ describe('Datastore', () => { }); }); }); + describe('with a sum filter', () => { + it('should run a sum aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 187}]); + }); + it('should run a sum aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances'), + AggregateField.sum('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 187, property_2: 187}]); + }); + it('should run a sum aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances').alias('sum1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 169}]); + }); + it('should run a sum aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances').alias('sum1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 187}]); + }); + it('should do multiple sum aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances').alias('sum1'), + AggregateField.sum('appearances').alias('sum2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 187, sum2: 187}]); + }); + it('should run a sum aggregation filter with a limit', async () => { + // When using a limit the test appears to use data points with the lowest appearance values. + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 91}]); + }); + it('should run a sum aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('appearances').alias('sum1')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 154}]); + }); + it('should run a sum aggregate filter against a non-numeric property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('family').alias('sum1')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter against __key__ property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('__key__').alias('sum1')]); + try { + await datastore.runAggregationQuery(aggregate); + assert.fail('The request should have failed.'); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' + ); + } + }); + it('should run a sum aggregate filter against a query that returns no results', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'NoMatch'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('appearances').alias('sum1')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter against a query from before the data creation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('appearances').alias('sum1')]); + const [results] = await datastore.runAggregationQuery(aggregate, { + readTime: timeBeforeDataCreation, + }); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('appearances').alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 187}]); + }); + }); + describe('with an average filter', () => { + it('should run an average aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 23.375}]); + }); + it('should run an average aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances'), + AggregateField.average('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: 23.375, property_2: 23.375}, + ]); + }); + it('should run an average aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances').alias('avg1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 28.166666666666668}]); + }); + it('should run an average aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances').alias('avg1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 23.375}]); + }); + it('should do multiple average aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + AggregateField.average('appearances').alias('avg2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 23.375, avg2: 23.375}]); + }); + it('should run an average aggregation filter with a limit', async () => { + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 18.2}]); + }); + it('should run an average aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 22}]); + }); + it('should run an average aggregate filter against a non-numeric property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.average('family').alias('avg1')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter against __key__ property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.average('__key__').alias('avg1')]); + try { + await datastore.runAggregationQuery(aggregate); + assert.fail('The request should have failed.'); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' + ); + } + }); + it('should run an average aggregate filter against a query that returns no results', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'NoMatch'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter against a query from before the data creation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate, { + readTime: timeBeforeDataCreation, + }); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.average('appearances').alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 23.375}]); + }); + }); describe('with a count filter', () => { it('should run a count aggregation', async () => { const q = datastore.createQuery('Character'); @@ -1013,6 +1295,73 @@ describe('Datastore', () => { const [results] = await datastore.runAggregationQuery(aggregate); assert.deepStrictEqual(results, [{total: 7}]); }); + it('should run a count aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.count().alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8}]); + }); + }); + describe('with multiple types of filters', () => { + it('should run multiple types of aggregations with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.sum('appearances'), + AggregateField.average('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: 8, property_2: 187, property_3: 23.375}, + ]); + }); + it('should run multiple types of aggregations with and without aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.average('appearances'), + AggregateField.count().alias('alias_count'), + AggregateField.sum('appearances').alias('alias_sum'), + AggregateField.average('appearances').alias('alias_average'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + { + property_1: 8, + property_2: 23.375, + alias_count: 8, + alias_sum: 187, + alias_average: 23.375, + }, + ]); + }); + it('should throw an error when too many aggregations are run', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.sum('appearances'), + AggregateField.average('appearances'), + AggregateField.count().alias('alias_count'), + AggregateField.sum('appearances').alias('alias_sum'), + AggregateField.average('appearances').alias('alias_average'), + ]); + try { + await datastore.runAggregationQuery(aggregate); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: The maximum number of aggregations allowed in an aggregation query is 5. Received: 6' + ); + } + }); }); it('should filter by ancestor', async () => { const q = datastore.createQuery('Character').hasAncestor(ancestor); @@ -1130,6 +1479,110 @@ describe('Datastore', () => { }); }); + describe('querying the datastore with an overflow data set', () => { + const keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ].map(path => { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); + }); + const characters = [ + { + name: 'Rickard', + family: 'Stark', + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + appearances: 9223372036854775807, + alive: false, + }, + { + name: 'Eddard', + family: 'Stark', + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + appearances: 9223372036854775807, + alive: false, + }, + ]; + before(async () => { + const keysToSave = keys.map((key, index) => { + return { + key, + data: characters[index], + }; + }); + await datastore.save(keysToSave); + }); + after(async () => { + await datastore.delete(keys); + }); + it('should run a sum aggregation with an overflow dataset', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: -18446744073709552000}]); + }); + it('should run an average aggregation with an overflow dataset', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: -9223372036854776000}]); + }); + }); + describe('querying the datastore with an NaN in the data set', () => { + const keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ].map(path => { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); + }); + const characters = [ + { + name: 'Rickard', + family: 'Stark', + appearances: 4, + alive: false, + }, + { + name: 'Eddard', + family: 'Stark', + appearances: null, + alive: false, + }, + ]; + before(async () => { + const keysToSave = keys.map((key, index) => { + return { + key, + data: characters[index], + }; + }); + await datastore.save(keysToSave); + }); + after(async () => { + await datastore.delete(keys); + }); + it('should run a sum aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 4}]); + }); + it('should run an average aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 4}]); + }); + }); describe('transactions', () => { it('should run in a transaction', async () => { const key = datastore.key(['Company', 'Google']); @@ -1231,22 +1684,58 @@ describe('Datastore', () => { await transaction.commit(); }); - it('should aggregate query within a transaction', async () => { - const transaction = datastore.transaction(); - await transaction.run(); - const query = transaction.createQuery('Company'); - const aggregateQuery = transaction - .createAggregationQuery(query) - .count('total'); - let result; - try { - [result] = await aggregateQuery.run(); - } catch (e) { - await transaction.rollback(); - return; - } - assert.deepStrictEqual(result, [{total: 2}]); - await transaction.commit(); + describe('aggregate query within a transaction', async () => { + it('should aggregate query within a count transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail('The aggregation query run should have been successful'); + } + assert.deepStrictEqual(result, [{total: 2}]); + await transaction.commit(); + }); + it('should aggregate query within a sum transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .sum('rating', 'total rating'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail('The aggregation query run should have been successful'); + } + assert.deepStrictEqual(result, [{'total rating': 200}]); + await transaction.commit(); + }); + it('should aggregate query within a average transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .average('rating', 'average rating'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail('The aggregation query run should have been successful'); + } + assert.deepStrictEqual(result, [{'average rating': 100}]); + await transaction.commit(); + }); }); it('should read in a readOnly transaction', async () => { diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index aae51442dd7..36816c6b252 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -58,22 +58,148 @@ describe('Query', () => { }); }); - it('should create a query with a count aggregation', () => { - const query = new Query(['kind1']); - const firstAggregation = AggregateField.count().alias('total'); - const secondAggregation = AggregateField.count().alias('total2'); - const aggregate = new AggregateQuery(query).addAggregations([ - firstAggregation, - secondAggregation, - ]); - const aggregate2 = new AggregateQuery(query) - .count('total') - .count('total2'); - assert.deepStrictEqual(aggregate.aggregations, aggregate2.aggregations); - assert.deepStrictEqual(aggregate.aggregations, [ - firstAggregation, - secondAggregation, - ]); + describe('Aggregation queries', () => { + it('should create a query with a count aggregation', () => { + const query = new Query(['kind1']); + const firstAggregation = AggregateField.count().alias('total'); + const secondAggregation = AggregateField.count().alias('total2'); + const aggregate = new AggregateQuery(query).addAggregations([ + firstAggregation, + secondAggregation, + ]); + const aggregate2 = new AggregateQuery(query) + .count('total') + .count('total2'); + assert.deepStrictEqual(aggregate.aggregations, aggregate2.aggregations); + assert.deepStrictEqual(aggregate.aggregations, [ + firstAggregation, + secondAggregation, + ]); + }); + + describe('AggregateField toProto', () => { + it('should produce the right proto with a count aggregation', () => { + assert.deepStrictEqual( + AggregateField.count().alias('alias1').toProto(), + { + alias: 'alias1', + count: {}, + } + ); + }); + it('should produce the right proto with a sum aggregation', () => { + assert.deepStrictEqual( + AggregateField.sum('property1').alias('alias1').toProto(), + { + alias: 'alias1', + operator: 'sum', + sum: { + property: { + name: 'property1', + }, + }, + } + ); + }); + it('should produce the right proto with an average aggregation', () => { + assert.deepStrictEqual( + AggregateField.average('property1').alias('alias1').toProto(), + { + alias: 'alias1', + avg: { + property: { + name: 'property1', + }, + }, + operator: 'avg', + } + ); + }); + }); + + describe('comparing equivalent aggregation queries', async () => { + function generateAggregateQuery() { + return new AggregateQuery(new Query(['kind1'])); + } + + function compareAggregations( + aggregateQuery: AggregateQuery, + aggregateFields: AggregateField[] + ) { + const addAggregationsAggregate = generateAggregateQuery(); + addAggregationsAggregate.addAggregations(aggregateFields); + const addAggregationAggregate = generateAggregateQuery(); + aggregateFields.forEach(aggregateField => + addAggregationAggregate.addAggregation(aggregateField) + ); + assert.deepStrictEqual( + aggregateQuery.aggregations, + addAggregationsAggregate.aggregations + ); + assert.deepStrictEqual( + aggregateQuery.aggregations, + addAggregationAggregate.aggregations + ); + assert.deepStrictEqual(aggregateQuery.aggregations, aggregateFields); + } + describe('comparing aggregations with an alias', async () => { + it('should compare equivalent count aggregation queries', () => { + compareAggregations( + generateAggregateQuery().count('total1').count('total2'), + ['total1', 'total2'].map(alias => + AggregateField.count().alias(alias) + ) + ); + }); + it('should compare equivalent sum aggregation queries', () => { + compareAggregations( + generateAggregateQuery() + .sum('property1', 'alias1') + .sum('property2', 'alias2'), + [ + AggregateField.sum('property1').alias('alias1'), + AggregateField.sum('property2').alias('alias2'), + ] + ); + }); + it('should compare equivalent average aggregation queries', () => { + compareAggregations( + generateAggregateQuery() + .average('property1', 'alias1') + .average('property2', 'alias2'), + [ + AggregateField.average('property1').alias('alias1'), + AggregateField.average('property2').alias('alias2'), + ] + ); + }); + }); + describe('comparing aggregations without an alias', async () => { + it('should compare equivalent count aggregation queries', () => { + compareAggregations( + generateAggregateQuery().count().count(), + ['total1', 'total2'].map(() => AggregateField.count()) + ); + }); + it('should compare equivalent sum aggregation queries', () => { + compareAggregations( + generateAggregateQuery().sum('property1').sum('property2'), + [AggregateField.sum('property1'), AggregateField.sum('property2')] + ); + }); + it('should compare equivalent average aggregation queries', () => { + compareAggregations( + generateAggregateQuery() + .average('property1') + .average('property2'), + [ + AggregateField.average('property1'), + AggregateField.average('property2'), + ] + ); + }); + }); + }); }); }); From e16477a5c9cd5a4fa11db6583af0a52a40c1bb5c Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 7 Sep 2023 12:58:56 -0400 Subject: [PATCH 735/820] fix: simplify logic for HTTP/1.1 REST fallback option (#1138) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update property requirement specifications PiperOrigin-RevId: 557861399 Source-Link: https://github.com/googleapis/googleapis/commit/3303b93dc165b6a5b8efdaf30db292e9ed1f28e5 Source-Link: https://github.com/googleapis/googleapis-gen/commit/fb0d0a45385eb0be5842111af79af5d719d32168 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZmIwZDBhNDUzODVlYjBiZTU4NDIxMTFhZjc5YWY1ZDcxOWQzMjE2OCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fix: simplify logic for HTTP/1.1 REST fallback option For the `fallback` parameter, all values considered as `true` in Boolean context will enable HTTP/1.1 REST fallback, since the other fallback transport, proto over HTTP, is removed from `google-gax` v4. PiperOrigin-RevId: 559812260 Source-Link: https://github.com/googleapis/googleapis/commit/6a6fd29a79fe2846001d90d93e79a19fcc303b85 Source-Link: https://github.com/googleapis/googleapis-gen/commit/56c16657e7a59122b1da94771a9ef40989c282c0 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTZjMTY2NTdlN2E1OTEyMmIxZGE5NDc3MWE5ZWY0MDk4OWMyODJjMCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- .../protos/google/datastore/v1/query.proto | 9 +++++++-- .../nodejs-datastore/src/v1/datastore_admin_client.ts | 9 ++++----- handwritten/nodejs-datastore/src/v1/datastore_client.ts | 9 ++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 40ade72a3ac..d1f0f8d0746 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -279,8 +279,13 @@ message KindExpression { // A reference to a property relative to the kind expressions. message PropertyReference { - // The name of the property. - // If name includes "."s, it may be interpreted as a property name path. + // A reference to a property. + // + // Requires: + // + // * MUST be a dot-delimited (`.`) string of segments, where each segment + // conforms to [entity property name][google.datastore.v1.Entity.properties] + // limitations. string name = 2; } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 2442e3c143e..3a82a0ae0dc 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -138,8 +138,7 @@ export class DatastoreAdminClient { * API remote host. * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. * Follows the structure of {@link gapicConfig}. - * @param {boolean | "rest"} [options.fallback] - Use HTTP fallback mode. - * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. + * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. * For more information, please check the * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you @@ -147,7 +146,7 @@ export class DatastoreAdminClient { * HTTP implementation. Load only fallback version and pass it to the constructor: * ``` * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC - * const client = new DatastoreAdminClient({fallback: 'rest'}, gax); + * const client = new DatastoreAdminClient({fallback: true}, gax); * ``` */ constructor( @@ -213,7 +212,7 @@ export class DatastoreAdminClient { } if (!opts.fallback) { clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); - } else if (opts.fallback === 'rest') { + } else { clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); } if (opts.libName && opts.libVersion) { @@ -241,7 +240,7 @@ export class DatastoreAdminClient { auth: this.auth, grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, }; - if (opts.fallback === 'rest') { + if (opts.fallback) { lroOptions.protoJson = protoFilesRoot; lroOptions.httpRules = [ { diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 19ddc994dfe..80d1191330b 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -95,8 +95,7 @@ export class DatastoreClient { * API remote host. * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. * Follows the structure of {@link gapicConfig}. - * @param {boolean | "rest"} [options.fallback] - Use HTTP fallback mode. - * Pass "rest" to use HTTP/1.1 REST API instead of gRPC. + * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. * For more information, please check the * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you @@ -104,7 +103,7 @@ export class DatastoreClient { * HTTP implementation. Load only fallback version and pass it to the constructor: * ``` * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC - * const client = new DatastoreClient({fallback: 'rest'}, gax); + * const client = new DatastoreClient({fallback: true}, gax); * ``` */ constructor( @@ -170,7 +169,7 @@ export class DatastoreClient { } if (!opts.fallback) { clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); - } else if (opts.fallback === 'rest') { + } else { clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); } if (opts.libName && opts.libVersion) { @@ -187,7 +186,7 @@ export class DatastoreClient { auth: this.auth, grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, }; - if (opts.fallback === 'rest') { + if (opts.fallback) { lroOptions.protoJson = protoFilesRoot; lroOptions.httpRules = [ { From dea3c868648a9f659f072344953b2dd2dfc61ebc Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:54:21 -0400 Subject: [PATCH 736/820] chore(main): release 8.1.0 (#1145) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 378b3b91769..77e5e77329e 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.1.0](https://github.com/googleapis/nodejs-datastore/compare/v8.0.0...v8.1.0) (2023-09-07) + + +### Features + +* Sum and average aggregation queries ([#1097](https://github.com/googleapis/nodejs-datastore/issues/1097)) ([44ba6f8](https://github.com/googleapis/nodejs-datastore/commit/44ba6f8f84ef3e33aa1c07b0808a42bcf871b8c6)) + + +### Bug Fixes + +* Simplify logic for HTTP/1.1 REST fallback option ([#1138](https://github.com/googleapis/nodejs-datastore/issues/1138)) ([4cefaea](https://github.com/googleapis/nodejs-datastore/commit/4cefaeab2ee8af800303f09495883aa1a5a28632)) + ## [8.0.0](https://github.com/googleapis/nodejs-datastore/compare/v7.5.1...v8.0.0) (2023-08-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 853976a150a..5c5de5aa78c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.0.0", + "version": "8.1.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 5341c20392f..d743be86be3 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.0.0", + "@google-cloud/datastore": "^8.1.0", "sinon": "^15.0.0" }, "devDependencies": { From 04235e2da963db8a42c1182bd0e990137e21ef8b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 21 Sep 2023 13:20:15 +0200 Subject: [PATCH 737/820] chore(deps): update dependency gapic-tools to ^0.2.0 (#1152) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [gapic-tools](https://togithub.com/googleapis/gax-nodejs) | [`^0.1.8` -> `^0.2.0`](https://renovatebot.com/diffs/npm/gapic-tools/0.1.8/0.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/gapic-tools/0.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/gapic-tools/0.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/gapic-tools/0.1.8/0.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/gapic-tools/0.1.8/0.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/gax-nodejs (gapic-tools) ### [`v0.2.0`](https://togithub.com/googleapis/gax-nodejs/releases/tag/gapic-tools-v0.2.0): gapic-tools: v0.2.0 ##### Features - add ESM tools in gax ([#​1459](https://togithub.com/googleapis/gax-nodejs/issues/1459)) ([0fb1cf9](https://togithub.com/googleapis/gax-nodejs/commit/0fb1cf9acd32dc1ae03a33279eca9449a7d3fca7)) ##### Bug Fixes - **deps:** update dependency google-proto-files to v4 ([#​1490](https://togithub.com/googleapis/gax-nodejs/issues/1490)) ([4748c9f](https://togithub.com/googleapis/gax-nodejs/commit/4748c9fc3a8cfe31e5abb3e35a6ee0d9a6f0e560)) - **deps:** update dependency protobufjs-cli to v1.1.2 ([#​1495](https://togithub.com/googleapis/gax-nodejs/issues/1495)) ([762591e](https://togithub.com/googleapis/gax-nodejs/commit/762591ed28801e5311ab737b04185781a41752e6)) - make gapic-tools depend on gax-nodejs ([#​1480](https://togithub.com/googleapis/gax-nodejs/issues/1480)) ([d0f410d](https://togithub.com/googleapis/gax-nodejs/commit/d0f410d2e08f393f2661c8c92568a0b518fddf99)) - release new version of gapic-tools ([#​1483](https://togithub.com/googleapis/gax-nodejs/issues/1483)) ([e4f5482](https://togithub.com/googleapis/gax-nodejs/commit/e4f548254bfce3daa3b02ae81764bb3394fc4f23))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5c5de5aa78c..bce61be4b54 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -60,7 +60,7 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", "c8": "^8.0.1", - "gapic-tools": "^0.1.8", + "gapic-tools": "^0.2.0", "gts": "^5.0.0", "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", From 88ca2b7e81964e6d3defc617f1a0732970387274 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 21 Sep 2023 16:12:40 +0200 Subject: [PATCH 738/820] fix(deps): update dependency sinon to v16 (#1150) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index bce61be4b54..e887484c67a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -72,7 +72,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^1.0.0-2", "proxyquire": "^2.1.3", - "sinon": "^15.0.0", + "sinon": "^16.0.0", "ts-loader": "^8.0.0", "typescript": "^5.1.6", "webpack-cli": "^5.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index d743be86be3..3cd8f31b9f5 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^8.1.0", - "sinon": "^15.0.0" + "sinon": "^16.0.0" }, "devDependencies": { "chai": "^4.2.0", From b1b8a5195961b94f9afbaa219428774ff8f1e4ea Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 23:19:50 -0700 Subject: [PATCH 739/820] chore: call non-hermetic functions since we're installing node_modules directly from the library (#1159) * chore: call non-hermetic functions since we're installing node_modules directly from the library Source-Link: https://github.com/googleapis/synthtool/commit/4c4063f8395130957a0d49fcec810a7d0a76cf7b Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:8b6a07a38d1583d96b6e251ba208bd4ef0bc2a0cc37471ffc518841651d15bd6 Co-authored-by: Owl Bot --- .../nodejs-datastore/protos/protos.d.ts | 540 ++++- handwritten/nodejs-datastore/protos/protos.js | 2149 +++++++++++++++-- .../nodejs-datastore/protos/protos.json | 294 ++- 3 files changed, 2823 insertions(+), 160 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 6000d78f94a..459bcc930d6 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -8660,6 +8660,9 @@ export namespace google { /** Publishing librarySettings */ librarySettings?: (google.api.IClientLibrarySettings[]|null); + + /** Publishing protoReferenceDocumentationUri */ + protoReferenceDocumentationUri?: (string|null); } /** Represents a Publishing. */ @@ -8698,6 +8701,9 @@ export namespace google { /** Publishing librarySettings. */ public librarySettings: google.api.IClientLibrarySettings[]; + /** Publishing protoReferenceDocumentationUri. */ + public protoReferenceDocumentationUri: string; + /** * Creates a new Publishing instance using the specified properties. * @param [properties] Properties to set @@ -9278,6 +9284,21 @@ export namespace google { /** DotnetSettings common */ common?: (google.api.ICommonLanguageSettings|null); + + /** DotnetSettings renamedServices */ + renamedServices?: ({ [k: string]: string }|null); + + /** DotnetSettings renamedResources */ + renamedResources?: ({ [k: string]: string }|null); + + /** DotnetSettings ignoredResources */ + ignoredResources?: (string[]|null); + + /** DotnetSettings forcedNamespaceAliases */ + forcedNamespaceAliases?: (string[]|null); + + /** DotnetSettings handwrittenSignatures */ + handwrittenSignatures?: (string[]|null); } /** Represents a DotnetSettings. */ @@ -9292,6 +9313,21 @@ export namespace google { /** DotnetSettings common. */ public common?: (google.api.ICommonLanguageSettings|null); + /** DotnetSettings renamedServices. */ + public renamedServices: { [k: string]: string }; + + /** DotnetSettings renamedResources. */ + public renamedResources: { [k: string]: string }; + + /** DotnetSettings ignoredResources. */ + public ignoredResources: string[]; + + /** DotnetSettings forcedNamespaceAliases. */ + public forcedNamespaceAliases: string[]; + + /** DotnetSettings handwrittenSignatures. */ + public handwrittenSignatures: string[]; + /** * Creates a new DotnetSettings instance using the specified properties. * @param [properties] Properties to set @@ -9791,7 +9827,10 @@ export namespace google { CLOUD = 1, ADS = 2, PHOTOS = 3, - STREET_VIEW = 4 + STREET_VIEW = 4, + SHOPPING = 5, + GEO = 6, + GENERATIVE_AI = 7 } /** ClientLibraryDestination enum. */ @@ -10666,6 +10705,15 @@ export namespace google { /** ExtensionRangeOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); + + /** ExtensionRangeOptions declaration */ + declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null); + + /** ExtensionRangeOptions features */ + features?: (google.protobuf.IFeatureSet|null); + + /** ExtensionRangeOptions verification */ + verification?: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState|null); } /** Represents an ExtensionRangeOptions. */ @@ -10680,6 +10728,15 @@ export namespace google { /** ExtensionRangeOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; + /** ExtensionRangeOptions declaration. */ + public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[]; + + /** ExtensionRangeOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + + /** ExtensionRangeOptions verification. */ + public verification: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState); + /** * Creates a new ExtensionRangeOptions instance using the specified properties. * @param [properties] Properties to set @@ -10758,6 +10815,136 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + namespace ExtensionRangeOptions { + + /** Properties of a Declaration. */ + interface IDeclaration { + + /** Declaration number */ + number?: (number|null); + + /** Declaration fullName */ + fullName?: (string|null); + + /** Declaration type */ + type?: (string|null); + + /** Declaration reserved */ + reserved?: (boolean|null); + + /** Declaration repeated */ + repeated?: (boolean|null); + } + + /** Represents a Declaration. */ + class Declaration implements IDeclaration { + + /** + * Constructs a new Declaration. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration); + + /** Declaration number. */ + public number: number; + + /** Declaration fullName. */ + public fullName: string; + + /** Declaration type. */ + public type: string; + + /** Declaration reserved. */ + public reserved: boolean; + + /** Declaration repeated. */ + public repeated: boolean; + + /** + * Creates a new Declaration instance using the specified properties. + * @param [properties] Properties to set + * @returns Declaration instance + */ + public static create(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration): google.protobuf.ExtensionRangeOptions.Declaration; + + /** + * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages. + * @param message Declaration message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages. + * @param message Declaration message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Declaration message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Declaration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions.Declaration; + + /** + * Decodes a Declaration message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Declaration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions.Declaration; + + /** + * Verifies a Declaration message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Declaration message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Declaration + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions.Declaration; + + /** + * Creates a plain object from a Declaration message. Also converts values to other types if specified. + * @param message Declaration + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.ExtensionRangeOptions.Declaration, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Declaration to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Declaration + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** VerificationState enum. */ + enum VerificationState { + DECLARATION = 0, + UNVERIFIED = 1 + } + } + /** Properties of a FieldDescriptorProto. */ interface IFieldDescriptorProto { @@ -11685,6 +11872,9 @@ export namespace google { /** FileOptions rubyPackage */ rubyPackage?: (string|null); + /** FileOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** FileOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -11758,6 +11948,9 @@ export namespace google { /** FileOptions rubyPackage. */ public rubyPackage: string; + /** FileOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** FileOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -11867,6 +12060,9 @@ export namespace google { /** MessageOptions deprecatedLegacyJsonFieldConflicts */ deprecatedLegacyJsonFieldConflicts?: (boolean|null); + /** MessageOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** MessageOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -11895,6 +12091,9 @@ export namespace google { /** MessageOptions deprecatedLegacyJsonFieldConflicts. */ public deprecatedLegacyJsonFieldConflicts: boolean; + /** MessageOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** MessageOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12006,8 +12205,14 @@ export namespace google { /** FieldOptions retention */ retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null); - /** FieldOptions target */ - target?: (google.protobuf.FieldOptions.OptionTargetType|keyof typeof google.protobuf.FieldOptions.OptionTargetType|null); + /** FieldOptions targets */ + targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null); + + /** FieldOptions editionDefaults */ + editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null); + + /** FieldOptions features */ + features?: (google.protobuf.IFeatureSet|null); /** FieldOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); @@ -12052,8 +12257,14 @@ export namespace google { /** FieldOptions retention. */ public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention); - /** FieldOptions target. */ - public target: (google.protobuf.FieldOptions.OptionTargetType|keyof typeof google.protobuf.FieldOptions.OptionTargetType); + /** FieldOptions targets. */ + public targets: google.protobuf.FieldOptions.OptionTargetType[]; + + /** FieldOptions editionDefaults. */ + public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[]; + + /** FieldOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); /** FieldOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12172,11 +12383,117 @@ export namespace google { TARGET_TYPE_SERVICE = 8, TARGET_TYPE_METHOD = 9 } + + /** Properties of an EditionDefault. */ + interface IEditionDefault { + + /** EditionDefault edition */ + edition?: (string|null); + + /** EditionDefault value */ + value?: (string|null); + } + + /** Represents an EditionDefault. */ + class EditionDefault implements IEditionDefault { + + /** + * Constructs a new EditionDefault. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.FieldOptions.IEditionDefault); + + /** EditionDefault edition. */ + public edition: string; + + /** EditionDefault value. */ + public value: string; + + /** + * Creates a new EditionDefault instance using the specified properties. + * @param [properties] Properties to set + * @returns EditionDefault instance + */ + public static create(properties?: google.protobuf.FieldOptions.IEditionDefault): google.protobuf.FieldOptions.EditionDefault; + + /** + * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages. + * @param message EditionDefault message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages. + * @param message EditionDefault message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EditionDefault message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns EditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.EditionDefault; + + /** + * Decodes an EditionDefault message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns EditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.EditionDefault; + + /** + * Verifies an EditionDefault message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns EditionDefault + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.EditionDefault; + + /** + * Creates a plain object from an EditionDefault message. Also converts values to other types if specified. + * @param message EditionDefault + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldOptions.EditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this EditionDefault to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for EditionDefault + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } /** Properties of an OneofOptions. */ interface IOneofOptions { + /** OneofOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** OneofOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -12190,6 +12507,9 @@ export namespace google { */ constructor(properties?: google.protobuf.IOneofOptions); + /** OneofOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** OneofOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12283,6 +12603,9 @@ export namespace google { /** EnumOptions deprecatedLegacyJsonFieldConflicts */ deprecatedLegacyJsonFieldConflicts?: (boolean|null); + /** EnumOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** EnumOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -12305,6 +12628,9 @@ export namespace google { /** EnumOptions deprecatedLegacyJsonFieldConflicts. */ public deprecatedLegacyJsonFieldConflicts: boolean; + /** EnumOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** EnumOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12392,6 +12718,12 @@ export namespace google { /** EnumValueOptions deprecated */ deprecated?: (boolean|null); + /** EnumValueOptions features */ + features?: (google.protobuf.IFeatureSet|null); + + /** EnumValueOptions debugRedact */ + debugRedact?: (boolean|null); + /** EnumValueOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -12408,6 +12740,12 @@ export namespace google { /** EnumValueOptions deprecated. */ public deprecated: boolean; + /** EnumValueOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + + /** EnumValueOptions debugRedact. */ + public debugRedact: boolean; + /** EnumValueOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12492,6 +12830,9 @@ export namespace google { /** Properties of a ServiceOptions. */ interface IServiceOptions { + /** ServiceOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** ServiceOptions deprecated */ deprecated?: (boolean|null); @@ -12514,6 +12855,9 @@ export namespace google { */ constructor(properties?: google.protobuf.IServiceOptions); + /** ServiceOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** ServiceOptions deprecated. */ public deprecated: boolean; @@ -12607,6 +12951,9 @@ export namespace google { /** MethodOptions idempotencyLevel */ idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null); + /** MethodOptions features */ + features?: (google.protobuf.IFeatureSet|null); + /** MethodOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); @@ -12638,6 +12985,9 @@ export namespace google { /** MethodOptions idempotencyLevel. */ public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel); + /** MethodOptions features. */ + public features?: (google.protobuf.IFeatureSet|null); + /** MethodOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -12968,6 +13318,186 @@ export namespace google { } } + /** Properties of a FeatureSet. */ + interface IFeatureSet { + + /** FeatureSet fieldPresence */ + fieldPresence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null); + + /** FeatureSet enumType */ + enumType?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null); + + /** FeatureSet repeatedFieldEncoding */ + repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null); + + /** FeatureSet stringFieldValidation */ + stringFieldValidation?: (google.protobuf.FeatureSet.StringFieldValidation|keyof typeof google.protobuf.FeatureSet.StringFieldValidation|null); + + /** FeatureSet messageEncoding */ + messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null); + + /** FeatureSet jsonFormat */ + jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null); + + /** FeatureSet rawFeatures */ + rawFeatures?: (google.protobuf.IFeatureSet|null); + } + + /** Represents a FeatureSet. */ + class FeatureSet implements IFeatureSet { + + /** + * Constructs a new FeatureSet. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFeatureSet); + + /** FeatureSet fieldPresence. */ + public fieldPresence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence); + + /** FeatureSet enumType. */ + public enumType: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType); + + /** FeatureSet repeatedFieldEncoding. */ + public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding); + + /** FeatureSet stringFieldValidation. */ + public stringFieldValidation: (google.protobuf.FeatureSet.StringFieldValidation|keyof typeof google.protobuf.FeatureSet.StringFieldValidation); + + /** FeatureSet messageEncoding. */ + public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding); + + /** FeatureSet jsonFormat. */ + public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat); + + /** FeatureSet rawFeatures. */ + public rawFeatures?: (google.protobuf.IFeatureSet|null); + + /** + * Creates a new FeatureSet instance using the specified properties. + * @param [properties] Properties to set + * @returns FeatureSet instance + */ + public static create(properties?: google.protobuf.IFeatureSet): google.protobuf.FeatureSet; + + /** + * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages. + * @param message FeatureSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages. + * @param message FeatureSet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FeatureSet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FeatureSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet; + + /** + * Decodes a FeatureSet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FeatureSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet; + + /** + * Verifies a FeatureSet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FeatureSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet; + + /** + * Creates a plain object from a FeatureSet message. Also converts values to other types if specified. + * @param message FeatureSet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FeatureSet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FeatureSet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FeatureSet + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace FeatureSet { + + /** FieldPresence enum. */ + enum FieldPresence { + FIELD_PRESENCE_UNKNOWN = 0, + EXPLICIT = 1, + IMPLICIT = 2, + LEGACY_REQUIRED = 3 + } + + /** EnumType enum. */ + enum EnumType { + ENUM_TYPE_UNKNOWN = 0, + OPEN = 1, + CLOSED = 2 + } + + /** RepeatedFieldEncoding enum. */ + enum RepeatedFieldEncoding { + REPEATED_FIELD_ENCODING_UNKNOWN = 0, + PACKED = 1, + EXPANDED = 2 + } + + /** StringFieldValidation enum. */ + enum StringFieldValidation { + STRING_FIELD_VALIDATION_UNKNOWN = 0, + MANDATORY = 1, + HINT = 2, + NONE = 3 + } + + /** MessageEncoding enum. */ + enum MessageEncoding { + MESSAGE_ENCODING_UNKNOWN = 0, + LENGTH_PREFIXED = 1, + DELIMITED = 2 + } + + /** JsonFormat enum. */ + enum JsonFormat { + JSON_FORMAT_UNKNOWN = 0, + ALLOW = 1, + LEGACY_BEST_EFFORT = 2 + } + } + /** Properties of a SourceCodeInfo. */ interface ISourceCodeInfo { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 6e5cd37c871..96337f975f0 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -22102,6 +22102,7 @@ * @property {string|null} [docTagPrefix] Publishing docTagPrefix * @property {google.api.ClientLibraryOrganization|null} [organization] Publishing organization * @property {Array.|null} [librarySettings] Publishing librarySettings + * @property {string|null} [protoReferenceDocumentationUri] Publishing protoReferenceDocumentationUri */ /** @@ -22194,6 +22195,14 @@ */ Publishing.prototype.librarySettings = $util.emptyArray; + /** + * Publishing protoReferenceDocumentationUri. + * @member {string} protoReferenceDocumentationUri + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.protoReferenceDocumentationUri = ""; + /** * Creates a new Publishing instance using the specified properties. * @function create @@ -22239,6 +22248,8 @@ if (message.librarySettings != null && message.librarySettings.length) for (var i = 0; i < message.librarySettings.length; ++i) $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork()).ldelim(); + if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri")) + writer.uint32(/* id 110, wireType 2 =*/882).string(message.protoReferenceDocumentationUri); return writer; }; @@ -22315,6 +22326,10 @@ message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32())); break; } + case 110: { + message.protoReferenceDocumentationUri = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -22390,6 +22405,9 @@ case 2: case 3: case 4: + case 5: + case 6: + case 7: break; } if (message.librarySettings != null && message.hasOwnProperty("librarySettings")) { @@ -22401,6 +22419,9 @@ return "librarySettings." + error; } } + if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) + if (!$util.isString(message.protoReferenceDocumentationUri)) + return "protoReferenceDocumentationUri: string expected"; return null; }; @@ -22470,6 +22491,18 @@ case 4: message.organization = 4; break; + case "SHOPPING": + case 5: + message.organization = 5; + break; + case "GEO": + case 6: + message.organization = 6; + break; + case "GENERATIVE_AI": + case 7: + message.organization = 7; + break; } if (object.librarySettings) { if (!Array.isArray(object.librarySettings)) @@ -22481,6 +22514,8 @@ message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]); } } + if (object.protoReferenceDocumentationUri != null) + message.protoReferenceDocumentationUri = String(object.protoReferenceDocumentationUri); return message; }; @@ -22509,6 +22544,7 @@ object.githubLabel = ""; object.docTagPrefix = ""; object.organization = options.enums === String ? "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" : 0; + object.protoReferenceDocumentationUri = ""; } if (message.methodSettings && message.methodSettings.length) { object.methodSettings = []; @@ -22537,6 +22573,8 @@ for (var j = 0; j < message.librarySettings.length; ++j) object.librarySettings[j] = $root.google.api.ClientLibrarySettings.toObject(message.librarySettings[j], options); } + if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) + object.protoReferenceDocumentationUri = message.protoReferenceDocumentationUri; return object; }; @@ -23699,6 +23737,11 @@ * @memberof google.api * @interface IDotnetSettings * @property {google.api.ICommonLanguageSettings|null} [common] DotnetSettings common + * @property {Object.|null} [renamedServices] DotnetSettings renamedServices + * @property {Object.|null} [renamedResources] DotnetSettings renamedResources + * @property {Array.|null} [ignoredResources] DotnetSettings ignoredResources + * @property {Array.|null} [forcedNamespaceAliases] DotnetSettings forcedNamespaceAliases + * @property {Array.|null} [handwrittenSignatures] DotnetSettings handwrittenSignatures */ /** @@ -23710,6 +23753,11 @@ * @param {google.api.IDotnetSettings=} [properties] Properties to set */ function DotnetSettings(properties) { + this.renamedServices = {}; + this.renamedResources = {}; + this.ignoredResources = []; + this.forcedNamespaceAliases = []; + this.handwrittenSignatures = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -23724,6 +23772,46 @@ */ DotnetSettings.prototype.common = null; + /** + * DotnetSettings renamedServices. + * @member {Object.} renamedServices + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.renamedServices = $util.emptyObject; + + /** + * DotnetSettings renamedResources. + * @member {Object.} renamedResources + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.renamedResources = $util.emptyObject; + + /** + * DotnetSettings ignoredResources. + * @member {Array.} ignoredResources + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.ignoredResources = $util.emptyArray; + + /** + * DotnetSettings forcedNamespaceAliases. + * @member {Array.} forcedNamespaceAliases + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.forcedNamespaceAliases = $util.emptyArray; + + /** + * DotnetSettings handwrittenSignatures. + * @member {Array.} handwrittenSignatures + * @memberof google.api.DotnetSettings + * @instance + */ + DotnetSettings.prototype.handwrittenSignatures = $util.emptyArray; + /** * Creates a new DotnetSettings instance using the specified properties. * @function create @@ -23750,6 +23838,21 @@ writer = $Writer.create(); if (message.common != null && Object.hasOwnProperty.call(message, "common")) $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) + for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim(); + if (message.renamedResources != null && Object.hasOwnProperty.call(message, "renamedResources")) + for (var keys = Object.keys(message.renamedResources), i = 0; i < keys.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedResources[keys[i]]).ldelim(); + if (message.ignoredResources != null && message.ignoredResources.length) + for (var i = 0; i < message.ignoredResources.length; ++i) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.ignoredResources[i]); + if (message.forcedNamespaceAliases != null && message.forcedNamespaceAliases.length) + for (var i = 0; i < message.forcedNamespaceAliases.length; ++i) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.forcedNamespaceAliases[i]); + if (message.handwrittenSignatures != null && message.handwrittenSignatures.length) + for (var i = 0; i < message.handwrittenSignatures.length; ++i) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.handwrittenSignatures[i]); return writer; }; @@ -23780,7 +23883,7 @@ DotnetSettings.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value; while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { @@ -23788,6 +23891,70 @@ message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); break; } + case 2: { + if (message.renamedServices === $util.emptyObject) + message.renamedServices = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.renamedServices[key] = value; + break; + } + case 3: { + if (message.renamedResources === $util.emptyObject) + message.renamedResources = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7); + break; + } + } + message.renamedResources[key] = value; + break; + } + case 4: { + if (!(message.ignoredResources && message.ignoredResources.length)) + message.ignoredResources = []; + message.ignoredResources.push(reader.string()); + break; + } + case 5: { + if (!(message.forcedNamespaceAliases && message.forcedNamespaceAliases.length)) + message.forcedNamespaceAliases = []; + message.forcedNamespaceAliases.push(reader.string()); + break; + } + case 6: { + if (!(message.handwrittenSignatures && message.handwrittenSignatures.length)) + message.handwrittenSignatures = []; + message.handwrittenSignatures.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -23828,6 +23995,43 @@ if (error) return "common." + error; } + if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) { + if (!$util.isObject(message.renamedServices)) + return "renamedServices: object expected"; + var key = Object.keys(message.renamedServices); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.renamedServices[key[i]])) + return "renamedServices: string{k:string} expected"; + } + if (message.renamedResources != null && message.hasOwnProperty("renamedResources")) { + if (!$util.isObject(message.renamedResources)) + return "renamedResources: object expected"; + var key = Object.keys(message.renamedResources); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.renamedResources[key[i]])) + return "renamedResources: string{k:string} expected"; + } + if (message.ignoredResources != null && message.hasOwnProperty("ignoredResources")) { + if (!Array.isArray(message.ignoredResources)) + return "ignoredResources: array expected"; + for (var i = 0; i < message.ignoredResources.length; ++i) + if (!$util.isString(message.ignoredResources[i])) + return "ignoredResources: string[] expected"; + } + if (message.forcedNamespaceAliases != null && message.hasOwnProperty("forcedNamespaceAliases")) { + if (!Array.isArray(message.forcedNamespaceAliases)) + return "forcedNamespaceAliases: array expected"; + for (var i = 0; i < message.forcedNamespaceAliases.length; ++i) + if (!$util.isString(message.forcedNamespaceAliases[i])) + return "forcedNamespaceAliases: string[] expected"; + } + if (message.handwrittenSignatures != null && message.hasOwnProperty("handwrittenSignatures")) { + if (!Array.isArray(message.handwrittenSignatures)) + return "handwrittenSignatures: array expected"; + for (var i = 0; i < message.handwrittenSignatures.length; ++i) + if (!$util.isString(message.handwrittenSignatures[i])) + return "handwrittenSignatures: string[] expected"; + } return null; }; @@ -23848,6 +24052,41 @@ throw TypeError(".google.api.DotnetSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); } + if (object.renamedServices) { + if (typeof object.renamedServices !== "object") + throw TypeError(".google.api.DotnetSettings.renamedServices: object expected"); + message.renamedServices = {}; + for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) + message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]); + } + if (object.renamedResources) { + if (typeof object.renamedResources !== "object") + throw TypeError(".google.api.DotnetSettings.renamedResources: object expected"); + message.renamedResources = {}; + for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) + message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]); + } + if (object.ignoredResources) { + if (!Array.isArray(object.ignoredResources)) + throw TypeError(".google.api.DotnetSettings.ignoredResources: array expected"); + message.ignoredResources = []; + for (var i = 0; i < object.ignoredResources.length; ++i) + message.ignoredResources[i] = String(object.ignoredResources[i]); + } + if (object.forcedNamespaceAliases) { + if (!Array.isArray(object.forcedNamespaceAliases)) + throw TypeError(".google.api.DotnetSettings.forcedNamespaceAliases: array expected"); + message.forcedNamespaceAliases = []; + for (var i = 0; i < object.forcedNamespaceAliases.length; ++i) + message.forcedNamespaceAliases[i] = String(object.forcedNamespaceAliases[i]); + } + if (object.handwrittenSignatures) { + if (!Array.isArray(object.handwrittenSignatures)) + throw TypeError(".google.api.DotnetSettings.handwrittenSignatures: array expected"); + message.handwrittenSignatures = []; + for (var i = 0; i < object.handwrittenSignatures.length; ++i) + message.handwrittenSignatures[i] = String(object.handwrittenSignatures[i]); + } return message; }; @@ -23864,10 +24103,45 @@ if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) { + object.ignoredResources = []; + object.forcedNamespaceAliases = []; + object.handwrittenSignatures = []; + } + if (options.objects || options.defaults) { + object.renamedServices = {}; + object.renamedResources = {}; + } if (options.defaults) object.common = null; if (message.common != null && message.hasOwnProperty("common")) object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + var keys2; + if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) { + object.renamedServices = {}; + for (var j = 0; j < keys2.length; ++j) + object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]]; + } + if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) { + object.renamedResources = {}; + for (var j = 0; j < keys2.length; ++j) + object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]]; + } + if (message.ignoredResources && message.ignoredResources.length) { + object.ignoredResources = []; + for (var j = 0; j < message.ignoredResources.length; ++j) + object.ignoredResources[j] = message.ignoredResources[j]; + } + if (message.forcedNamespaceAliases && message.forcedNamespaceAliases.length) { + object.forcedNamespaceAliases = []; + for (var j = 0; j < message.forcedNamespaceAliases.length; ++j) + object.forcedNamespaceAliases[j] = message.forcedNamespaceAliases[j]; + } + if (message.handwrittenSignatures && message.handwrittenSignatures.length) { + object.handwrittenSignatures = []; + for (var j = 0; j < message.handwrittenSignatures.length; ++j) + object.handwrittenSignatures[j] = message.handwrittenSignatures[j]; + } return object; }; @@ -24845,6 +25119,9 @@ * @property {number} ADS=2 ADS value * @property {number} PHOTOS=3 PHOTOS value * @property {number} STREET_VIEW=4 STREET_VIEW value + * @property {number} SHOPPING=5 SHOPPING value + * @property {number} GEO=6 GEO value + * @property {number} GENERATIVE_AI=7 GENERATIVE_AI value */ api.ClientLibraryOrganization = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -24853,6 +25130,9 @@ values[valuesById[2] = "ADS"] = 2; values[valuesById[3] = "PHOTOS"] = 3; values[valuesById[4] = "STREET_VIEW"] = 4; + values[valuesById[5] = "SHOPPING"] = 5; + values[valuesById[6] = "GEO"] = 6; + values[valuesById[7] = "GENERATIVE_AI"] = 7; return values; })(); @@ -27315,6 +27595,9 @@ * @memberof google.protobuf * @interface IExtensionRangeOptions * @property {Array.|null} [uninterpretedOption] ExtensionRangeOptions uninterpretedOption + * @property {Array.|null} [declaration] ExtensionRangeOptions declaration + * @property {google.protobuf.IFeatureSet|null} [features] ExtensionRangeOptions features + * @property {google.protobuf.ExtensionRangeOptions.VerificationState|null} [verification] ExtensionRangeOptions verification */ /** @@ -27327,6 +27610,7 @@ */ function ExtensionRangeOptions(properties) { this.uninterpretedOption = []; + this.declaration = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -27341,6 +27625,30 @@ */ ExtensionRangeOptions.prototype.uninterpretedOption = $util.emptyArray; + /** + * ExtensionRangeOptions declaration. + * @member {Array.} declaration + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + */ + ExtensionRangeOptions.prototype.declaration = $util.emptyArray; + + /** + * ExtensionRangeOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + */ + ExtensionRangeOptions.prototype.features = null; + + /** + * ExtensionRangeOptions verification. + * @member {google.protobuf.ExtensionRangeOptions.VerificationState} verification + * @memberof google.protobuf.ExtensionRangeOptions + * @instance + */ + ExtensionRangeOptions.prototype.verification = 1; + /** * Creates a new ExtensionRangeOptions instance using the specified properties. * @function create @@ -27365,6 +27673,13 @@ ExtensionRangeOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.declaration != null && message.declaration.length) + for (var i = 0; i < message.declaration.length; ++i) + $root.google.protobuf.ExtensionRangeOptions.Declaration.encode(message.declaration[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.verification != null && Object.hasOwnProperty.call(message, "verification")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.verification); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -27408,6 +27723,20 @@ message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); break; } + case 2: { + if (!(message.declaration && message.declaration.length)) + message.declaration = []; + message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32())); + break; + } + case 50: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } + case 3: { + message.verification = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -27452,6 +27781,28 @@ return "uninterpretedOption." + error; } } + if (message.declaration != null && message.hasOwnProperty("declaration")) { + if (!Array.isArray(message.declaration)) + return "declaration: array expected"; + for (var i = 0; i < message.declaration.length; ++i) { + var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]); + if (error) + return "declaration." + error; + } + } + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } + if (message.verification != null && message.hasOwnProperty("verification")) + switch (message.verification) { + default: + return "verification: enum value expected"; + case 0: + case 1: + break; + } return null; }; @@ -27477,6 +27828,37 @@ message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); } } + if (object.declaration) { + if (!Array.isArray(object.declaration)) + throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: array expected"); + message.declaration = []; + for (var i = 0; i < object.declaration.length; ++i) { + if (typeof object.declaration[i] !== "object") + throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected"); + message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]); + } + } + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } + switch (object.verification) { + case "DECLARATION": + case 0: + message.verification = 0; + break; + default: + if (typeof object.verification === "number") { + message.verification = object.verification; + break; + } + break; + case "UNVERIFIED": + case 1: + message.verification = 1; + break; + } return message; }; @@ -27493,8 +27875,23 @@ if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) + if (options.arrays || options.defaults) { + object.declaration = []; object.uninterpretedOption = []; + } + if (options.defaults) { + object.verification = options.enums === String ? "UNVERIFIED" : 1; + object.features = null; + } + if (message.declaration && message.declaration.length) { + object.declaration = []; + for (var j = 0; j < message.declaration.length; ++j) + object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options); + } + if (message.verification != null && message.hasOwnProperty("verification")) + object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] === undefined ? message.verification : $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -27529,86 +27926,396 @@ return typeUrlPrefix + "/google.protobuf.ExtensionRangeOptions"; }; - return ExtensionRangeOptions; - })(); + ExtensionRangeOptions.Declaration = (function() { - protobuf.FieldDescriptorProto = (function() { + /** + * Properties of a Declaration. + * @memberof google.protobuf.ExtensionRangeOptions + * @interface IDeclaration + * @property {number|null} [number] Declaration number + * @property {string|null} [fullName] Declaration fullName + * @property {string|null} [type] Declaration type + * @property {boolean|null} [reserved] Declaration reserved + * @property {boolean|null} [repeated] Declaration repeated + */ - /** - * Properties of a FieldDescriptorProto. - * @memberof google.protobuf - * @interface IFieldDescriptorProto - * @property {string|null} [name] FieldDescriptorProto name - * @property {number|null} [number] FieldDescriptorProto number - * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label - * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type - * @property {string|null} [typeName] FieldDescriptorProto typeName - * @property {string|null} [extendee] FieldDescriptorProto extendee - * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue - * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex - * @property {string|null} [jsonName] FieldDescriptorProto jsonName - * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options - * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional - */ + /** + * Constructs a new Declaration. + * @memberof google.protobuf.ExtensionRangeOptions + * @classdesc Represents a Declaration. + * @implements IDeclaration + * @constructor + * @param {google.protobuf.ExtensionRangeOptions.IDeclaration=} [properties] Properties to set + */ + function Declaration(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Constructs a new FieldDescriptorProto. - * @memberof google.protobuf - * @classdesc Represents a FieldDescriptorProto. - * @implements IFieldDescriptorProto - * @constructor - * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set - */ - function FieldDescriptorProto(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Declaration number. + * @member {number} number + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + */ + Declaration.prototype.number = 0; - /** - * FieldDescriptorProto name. - * @member {string} name - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.name = ""; + /** + * Declaration fullName. + * @member {string} fullName + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + */ + Declaration.prototype.fullName = ""; - /** - * FieldDescriptorProto number. - * @member {number} number - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.number = 0; + /** + * Declaration type. + * @member {string} type + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + */ + Declaration.prototype.type = ""; - /** - * FieldDescriptorProto label. - * @member {google.protobuf.FieldDescriptorProto.Label} label - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.label = 1; + /** + * Declaration reserved. + * @member {boolean} reserved + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + */ + Declaration.prototype.reserved = false; - /** - * FieldDescriptorProto type. - * @member {google.protobuf.FieldDescriptorProto.Type} type - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.type = 1; + /** + * Declaration repeated. + * @member {boolean} repeated + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + */ + Declaration.prototype.repeated = false; - /** - * FieldDescriptorProto typeName. - * @member {string} typeName - * @memberof google.protobuf.FieldDescriptorProto - * @instance - */ - FieldDescriptorProto.prototype.typeName = ""; + /** + * Creates a new Declaration instance using the specified properties. + * @function create + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {google.protobuf.ExtensionRangeOptions.IDeclaration=} [properties] Properties to set + * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration instance + */ + Declaration.create = function create(properties) { + return new Declaration(properties); + }; - /** - * FieldDescriptorProto extendee. - * @member {string} extendee + /** + * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages. + * @function encode + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {google.protobuf.ExtensionRangeOptions.IDeclaration} message Declaration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Declaration.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.number != null && Object.hasOwnProperty.call(message, "number")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.number); + if (message.fullName != null && Object.hasOwnProperty.call(message, "fullName")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullName); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.type); + if (message.reserved != null && Object.hasOwnProperty.call(message, "reserved")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.reserved); + if (message.repeated != null && Object.hasOwnProperty.call(message, "repeated")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.repeated); + return writer; + }; + + /** + * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {google.protobuf.ExtensionRangeOptions.IDeclaration} message Declaration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Declaration.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Declaration message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Declaration.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.number = reader.int32(); + break; + } + case 2: { + message.fullName = reader.string(); + break; + } + case 3: { + message.type = reader.string(); + break; + } + case 5: { + message.reserved = reader.bool(); + break; + } + case 6: { + message.repeated = reader.bool(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Declaration message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Declaration.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Declaration message. + * @function verify + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Declaration.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.fullName != null && message.hasOwnProperty("fullName")) + if (!$util.isString(message.fullName)) + return "fullName: string expected"; + if (message.type != null && message.hasOwnProperty("type")) + if (!$util.isString(message.type)) + return "type: string expected"; + if (message.reserved != null && message.hasOwnProperty("reserved")) + if (typeof message.reserved !== "boolean") + return "reserved: boolean expected"; + if (message.repeated != null && message.hasOwnProperty("repeated")) + if (typeof message.repeated !== "boolean") + return "repeated: boolean expected"; + return null; + }; + + /** + * Creates a Declaration message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration + */ + Declaration.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration) + return object; + var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration(); + if (object.number != null) + message.number = object.number | 0; + if (object.fullName != null) + message.fullName = String(object.fullName); + if (object.type != null) + message.type = String(object.type); + if (object.reserved != null) + message.reserved = Boolean(object.reserved); + if (object.repeated != null) + message.repeated = Boolean(object.repeated); + return message; + }; + + /** + * Creates a plain object from a Declaration message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {google.protobuf.ExtensionRangeOptions.Declaration} message Declaration + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Declaration.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.number = 0; + object.fullName = ""; + object.type = ""; + object.reserved = false; + object.repeated = false; + } + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.fullName != null && message.hasOwnProperty("fullName")) + object.fullName = message.fullName; + if (message.type != null && message.hasOwnProperty("type")) + object.type = message.type; + if (message.reserved != null && message.hasOwnProperty("reserved")) + object.reserved = message.reserved; + if (message.repeated != null && message.hasOwnProperty("repeated")) + object.repeated = message.repeated; + return object; + }; + + /** + * Converts this Declaration to JSON. + * @function toJSON + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @instance + * @returns {Object.} JSON object + */ + Declaration.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Declaration + * @function getTypeUrl + * @memberof google.protobuf.ExtensionRangeOptions.Declaration + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Declaration.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.ExtensionRangeOptions.Declaration"; + }; + + return Declaration; + })(); + + /** + * VerificationState enum. + * @name google.protobuf.ExtensionRangeOptions.VerificationState + * @enum {number} + * @property {number} DECLARATION=0 DECLARATION value + * @property {number} UNVERIFIED=1 UNVERIFIED value + */ + ExtensionRangeOptions.VerificationState = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DECLARATION"] = 0; + values[valuesById[1] = "UNVERIFIED"] = 1; + return values; + })(); + + return ExtensionRangeOptions; + })(); + + protobuf.FieldDescriptorProto = (function() { + + /** + * Properties of a FieldDescriptorProto. + * @memberof google.protobuf + * @interface IFieldDescriptorProto + * @property {string|null} [name] FieldDescriptorProto name + * @property {number|null} [number] FieldDescriptorProto number + * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label + * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type + * @property {string|null} [typeName] FieldDescriptorProto typeName + * @property {string|null} [extendee] FieldDescriptorProto extendee + * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue + * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex + * @property {string|null} [jsonName] FieldDescriptorProto jsonName + * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options + * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional + */ + + /** + * Constructs a new FieldDescriptorProto. + * @memberof google.protobuf + * @classdesc Represents a FieldDescriptorProto. + * @implements IFieldDescriptorProto + * @constructor + * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set + */ + function FieldDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDescriptorProto name. + * @member {string} name + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.name = ""; + + /** + * FieldDescriptorProto number. + * @member {number} number + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.number = 0; + + /** + * FieldDescriptorProto label. + * @member {google.protobuf.FieldDescriptorProto.Label} label + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.label = 1; + + /** + * FieldDescriptorProto type. + * @member {google.protobuf.FieldDescriptorProto.Type} type + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.type = 1; + + /** + * FieldDescriptorProto typeName. + * @member {string} typeName + * @memberof google.protobuf.FieldDescriptorProto + * @instance + */ + FieldDescriptorProto.prototype.typeName = ""; + + /** + * FieldDescriptorProto extendee. + * @member {string} extendee * @memberof google.protobuf.FieldDescriptorProto * @instance */ @@ -29858,6 +30565,7 @@ * @property {string|null} [phpNamespace] FileOptions phpNamespace * @property {string|null} [phpMetadataNamespace] FileOptions phpMetadataNamespace * @property {string|null} [rubyPackage] FileOptions rubyPackage + * @property {google.protobuf.IFeatureSet|null} [features] FileOptions features * @property {Array.|null} [uninterpretedOption] FileOptions uninterpretedOption */ @@ -30037,6 +30745,14 @@ */ FileOptions.prototype.rubyPackage = ""; + /** + * FileOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.FileOptions + * @instance + */ + FileOptions.prototype.features = null; + /** * FileOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -30109,6 +30825,8 @@ writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -30226,6 +30944,10 @@ message.rubyPackage = reader.string(); break; } + case 50: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -30333,6 +31055,11 @@ if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) if (!$util.isString(message.rubyPackage)) return "rubyPackage: string expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -30415,6 +31142,11 @@ message.phpMetadataNamespace = String(object.phpMetadataNamespace); if (object.rubyPackage != null) message.rubyPackage = String(object.rubyPackage); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.FileOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); @@ -30464,6 +31196,7 @@ object.phpGenericServices = false; object.phpMetadataNamespace = ""; object.rubyPackage = ""; + object.features = null; } if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) object.javaPackage = message.javaPackage; @@ -30505,6 +31238,8 @@ object.phpMetadataNamespace = message.phpMetadataNamespace; if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) object.rubyPackage = message.rubyPackage; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -30569,6 +31304,7 @@ * @property {boolean|null} [deprecated] MessageOptions deprecated * @property {boolean|null} [mapEntry] MessageOptions mapEntry * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] MessageOptions deprecatedLegacyJsonFieldConflicts + * @property {google.protobuf.IFeatureSet|null} [features] MessageOptions features * @property {Array.|null} [uninterpretedOption] MessageOptions uninterpretedOption */ @@ -30628,6 +31364,14 @@ */ MessageOptions.prototype.deprecatedLegacyJsonFieldConflicts = false; + /** + * MessageOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.MessageOptions + * @instance + */ + MessageOptions.prototype.features = null; + /** * MessageOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -30670,6 +31414,8 @@ writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) writer.uint32(/* id 11, wireType 0 =*/88).bool(message.deprecatedLegacyJsonFieldConflicts); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -30727,6 +31473,10 @@ message.deprecatedLegacyJsonFieldConflicts = reader.bool(); break; } + case 12: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -30783,6 +31533,11 @@ if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -30817,6 +31572,11 @@ message.mapEntry = Boolean(object.mapEntry); if (object.deprecatedLegacyJsonFieldConflicts != null) message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.MessageOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); @@ -30851,6 +31611,7 @@ object.deprecated = false; object.mapEntry = false; object.deprecatedLegacyJsonFieldConflicts = false; + object.features = null; } if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) object.messageSetWireFormat = message.messageSetWireFormat; @@ -30862,6 +31623,8 @@ object.mapEntry = message.mapEntry; if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -30914,7 +31677,9 @@ * @property {boolean|null} [weak] FieldOptions weak * @property {boolean|null} [debugRedact] FieldOptions debugRedact * @property {google.protobuf.FieldOptions.OptionRetention|null} [retention] FieldOptions retention - * @property {google.protobuf.FieldOptions.OptionTargetType|null} [target] FieldOptions target + * @property {Array.|null} [targets] FieldOptions targets + * @property {Array.|null} [editionDefaults] FieldOptions editionDefaults + * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior */ @@ -30928,6 +31693,8 @@ * @param {google.protobuf.IFieldOptions=} [properties] Properties to set */ function FieldOptions(properties) { + this.targets = []; + this.editionDefaults = []; this.uninterpretedOption = []; this[".google.api.fieldBehavior"] = []; if (properties) @@ -31009,12 +31776,28 @@ FieldOptions.prototype.retention = 0; /** - * FieldOptions target. - * @member {google.protobuf.FieldOptions.OptionTargetType} target + * FieldOptions targets. + * @member {Array.} targets + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.targets = $util.emptyArray; + + /** + * FieldOptions editionDefaults. + * @member {Array.} editionDefaults + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.editionDefaults = $util.emptyArray; + + /** + * FieldOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features * @memberof google.protobuf.FieldOptions * @instance */ - FieldOptions.prototype.target = 0; + FieldOptions.prototype.features = null; /** * FieldOptions uninterpretedOption. @@ -31074,8 +31857,14 @@ writer.uint32(/* id 16, wireType 0 =*/128).bool(message.debugRedact); if (message.retention != null && Object.hasOwnProperty.call(message, "retention")) writer.uint32(/* id 17, wireType 0 =*/136).int32(message.retention); - if (message.target != null && Object.hasOwnProperty.call(message, "target")) - writer.uint32(/* id 18, wireType 0 =*/144).int32(message.target); + if (message.targets != null && message.targets.length) + for (var i = 0; i < message.targets.length; ++i) + writer.uint32(/* id 19, wireType 0 =*/152).int32(message.targets[i]); + if (message.editionDefaults != null && message.editionDefaults.length) + for (var i = 0; i < message.editionDefaults.length; ++i) + $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -31155,8 +31944,25 @@ message.retention = reader.int32(); break; } - case 18: { - message.target = reader.int32(); + case 19: { + if (!(message.targets && message.targets.length)) + message.targets = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.targets.push(reader.int32()); + } else + message.targets.push(reader.int32()); + break; + } + case 20: { + if (!(message.editionDefaults && message.editionDefaults.length)) + message.editionDefaults = []; + message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32())); + break; + } + case 21: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); break; } case 999: { @@ -31256,22 +32062,40 @@ case 2: break; } - if (message.target != null && message.hasOwnProperty("target")) - switch (message.target) { - default: - return "target: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - break; + if (message.targets != null && message.hasOwnProperty("targets")) { + if (!Array.isArray(message.targets)) + return "targets: array expected"; + for (var i = 0; i < message.targets.length; ++i) + switch (message.targets[i]) { + default: + return "targets: enum value[] expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + break; + } + } + if (message.editionDefaults != null && message.hasOwnProperty("editionDefaults")) { + if (!Array.isArray(message.editionDefaults)) + return "editionDefaults: array expected"; + for (var i = 0; i < message.editionDefaults.length; ++i) { + var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]); + if (error) + return "editionDefaults." + error; } + } + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -31386,53 +32210,73 @@ message.retention = 2; break; } - switch (object.target) { - default: - if (typeof object.target === "number") { - message.target = object.target; - break; + if (object.targets) { + if (!Array.isArray(object.targets)) + throw TypeError(".google.protobuf.FieldOptions.targets: array expected"); + message.targets = []; + for (var i = 0; i < object.targets.length; ++i) + switch (object.targets[i]) { + default: + if (typeof object.targets[i] === "number") { + message.targets[i] = object.targets[i]; + break; + } + case "TARGET_TYPE_UNKNOWN": + case 0: + message.targets[i] = 0; + break; + case "TARGET_TYPE_FILE": + case 1: + message.targets[i] = 1; + break; + case "TARGET_TYPE_EXTENSION_RANGE": + case 2: + message.targets[i] = 2; + break; + case "TARGET_TYPE_MESSAGE": + case 3: + message.targets[i] = 3; + break; + case "TARGET_TYPE_FIELD": + case 4: + message.targets[i] = 4; + break; + case "TARGET_TYPE_ONEOF": + case 5: + message.targets[i] = 5; + break; + case "TARGET_TYPE_ENUM": + case 6: + message.targets[i] = 6; + break; + case "TARGET_TYPE_ENUM_ENTRY": + case 7: + message.targets[i] = 7; + break; + case "TARGET_TYPE_SERVICE": + case 8: + message.targets[i] = 8; + break; + case "TARGET_TYPE_METHOD": + case 9: + message.targets[i] = 9; + break; + } + } + if (object.editionDefaults) { + if (!Array.isArray(object.editionDefaults)) + throw TypeError(".google.protobuf.FieldOptions.editionDefaults: array expected"); + message.editionDefaults = []; + for (var i = 0; i < object.editionDefaults.length; ++i) { + if (typeof object.editionDefaults[i] !== "object") + throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected"); + message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]); } - break; - case "TARGET_TYPE_UNKNOWN": - case 0: - message.target = 0; - break; - case "TARGET_TYPE_FILE": - case 1: - message.target = 1; - break; - case "TARGET_TYPE_EXTENSION_RANGE": - case 2: - message.target = 2; - break; - case "TARGET_TYPE_MESSAGE": - case 3: - message.target = 3; - break; - case "TARGET_TYPE_FIELD": - case 4: - message.target = 4; - break; - case "TARGET_TYPE_ONEOF": - case 5: - message.target = 5; - break; - case "TARGET_TYPE_ENUM": - case 6: - message.target = 6; - break; - case "TARGET_TYPE_ENUM_ENTRY": - case 7: - message.target = 7; - break; - case "TARGET_TYPE_SERVICE": - case 8: - message.target = 8; - break; - case "TARGET_TYPE_METHOD": - case 9: - message.target = 9; - break; + } + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.FieldOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -31506,6 +32350,8 @@ options = {}; var object = {}; if (options.arrays || options.defaults) { + object.targets = []; + object.editionDefaults = []; object.uninterpretedOption = []; object[".google.api.fieldBehavior"] = []; } @@ -31519,7 +32365,7 @@ object.unverifiedLazy = false; object.debugRedact = false; object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0; - object.target = options.enums === String ? "TARGET_TYPE_UNKNOWN" : 0; + object.features = null; } if (message.ctype != null && message.hasOwnProperty("ctype")) object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; @@ -31539,8 +32385,18 @@ object.debugRedact = message.debugRedact; if (message.retention != null && message.hasOwnProperty("retention")) object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention; - if (message.target != null && message.hasOwnProperty("target")) - object.target = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.target] === undefined ? message.target : $root.google.protobuf.FieldOptions.OptionTargetType[message.target] : message.target; + if (message.targets && message.targets.length) { + object.targets = []; + for (var j = 0; j < message.targets.length; ++j) + object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] === undefined ? message.targets[j] : $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j]; + } + if (message.editionDefaults && message.editionDefaults.length) { + object.editionDefaults = []; + for (var j = 0; j < message.editionDefaults.length; ++j) + object.editionDefaults[j] = $root.google.protobuf.FieldOptions.EditionDefault.toObject(message.editionDefaults[j], options); + } + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -31658,6 +32514,233 @@ return values; })(); + FieldOptions.EditionDefault = (function() { + + /** + * Properties of an EditionDefault. + * @memberof google.protobuf.FieldOptions + * @interface IEditionDefault + * @property {string|null} [edition] EditionDefault edition + * @property {string|null} [value] EditionDefault value + */ + + /** + * Constructs a new EditionDefault. + * @memberof google.protobuf.FieldOptions + * @classdesc Represents an EditionDefault. + * @implements IEditionDefault + * @constructor + * @param {google.protobuf.FieldOptions.IEditionDefault=} [properties] Properties to set + */ + function EditionDefault(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EditionDefault edition. + * @member {string} edition + * @memberof google.protobuf.FieldOptions.EditionDefault + * @instance + */ + EditionDefault.prototype.edition = ""; + + /** + * EditionDefault value. + * @member {string} value + * @memberof google.protobuf.FieldOptions.EditionDefault + * @instance + */ + EditionDefault.prototype.value = ""; + + /** + * Creates a new EditionDefault instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {google.protobuf.FieldOptions.IEditionDefault=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault instance + */ + EditionDefault.create = function create(properties) { + return new EditionDefault(properties); + }; + + /** + * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {google.protobuf.FieldOptions.IEditionDefault} message EditionDefault message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EditionDefault.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.edition); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); + return writer; + }; + + /** + * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {google.protobuf.FieldOptions.IEditionDefault} message EditionDefault message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EditionDefault.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EditionDefault message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EditionDefault.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.edition = reader.string(); + break; + } + case 2: { + message.value = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EditionDefault message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EditionDefault.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EditionDefault message. + * @function verify + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + EditionDefault.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.edition != null && message.hasOwnProperty("edition")) + if (!$util.isString(message.edition)) + return "edition: string expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (!$util.isString(message.value)) + return "value: string expected"; + return null; + }; + + /** + * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault + */ + EditionDefault.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault) + return object; + var message = new $root.google.protobuf.FieldOptions.EditionDefault(); + if (object.edition != null) + message.edition = String(object.edition); + if (object.value != null) + message.value = String(object.value); + return message; + }; + + /** + * Creates a plain object from an EditionDefault message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EditionDefault.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.edition = ""; + object.value = ""; + } + if (message.edition != null && message.hasOwnProperty("edition")) + object.edition = message.edition; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Converts this EditionDefault to JSON. + * @function toJSON + * @memberof google.protobuf.FieldOptions.EditionDefault + * @instance + * @returns {Object.} JSON object + */ + EditionDefault.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for EditionDefault + * @function getTypeUrl + * @memberof google.protobuf.FieldOptions.EditionDefault + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault"; + }; + + return EditionDefault; + })(); + return FieldOptions; })(); @@ -31667,6 +32750,7 @@ * Properties of an OneofOptions. * @memberof google.protobuf * @interface IOneofOptions + * @property {google.protobuf.IFeatureSet|null} [features] OneofOptions features * @property {Array.|null} [uninterpretedOption] OneofOptions uninterpretedOption */ @@ -31686,6 +32770,14 @@ this[keys[i]] = properties[keys[i]]; } + /** + * OneofOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.OneofOptions + * @instance + */ + OneofOptions.prototype.features = null; + /** * OneofOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -31718,6 +32810,8 @@ OneofOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -31755,6 +32849,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 1: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -31796,6 +32894,11 @@ OneofOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -31820,6 +32923,11 @@ if (object instanceof $root.google.protobuf.OneofOptions) return object; var message = new $root.google.protobuf.OneofOptions(); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.OneofOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); @@ -31848,6 +32956,10 @@ var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; + if (options.defaults) + object.features = null; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -31894,6 +33006,7 @@ * @property {boolean|null} [allowAlias] EnumOptions allowAlias * @property {boolean|null} [deprecated] EnumOptions deprecated * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] EnumOptions deprecatedLegacyJsonFieldConflicts + * @property {google.protobuf.IFeatureSet|null} [features] EnumOptions features * @property {Array.|null} [uninterpretedOption] EnumOptions uninterpretedOption */ @@ -31937,6 +33050,14 @@ */ EnumOptions.prototype.deprecatedLegacyJsonFieldConflicts = false; + /** + * EnumOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.EnumOptions + * @instance + */ + EnumOptions.prototype.features = null; + /** * EnumOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -31975,6 +33096,8 @@ writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) writer.uint32(/* id 6, wireType 0 =*/48).bool(message.deprecatedLegacyJsonFieldConflicts); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -32024,6 +33147,10 @@ message.deprecatedLegacyJsonFieldConflicts = reader.bool(); break; } + case 7: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -32074,6 +33201,11 @@ if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -32104,6 +33236,11 @@ message.deprecated = Boolean(object.deprecated); if (object.deprecatedLegacyJsonFieldConflicts != null) message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.EnumOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); @@ -32136,6 +33273,7 @@ object.allowAlias = false; object.deprecated = false; object.deprecatedLegacyJsonFieldConflicts = false; + object.features = null; } if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) object.allowAlias = message.allowAlias; @@ -32143,6 +33281,8 @@ object.deprecated = message.deprecated; if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -32187,6 +33327,8 @@ * @memberof google.protobuf * @interface IEnumValueOptions * @property {boolean|null} [deprecated] EnumValueOptions deprecated + * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features + * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption */ @@ -32214,6 +33356,22 @@ */ EnumValueOptions.prototype.deprecated = false; + /** + * EnumValueOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.features = null; + + /** + * EnumValueOptions debugRedact. + * @member {boolean} debugRedact + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.debugRedact = false; + /** * EnumValueOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -32248,6 +33406,10 @@ writer = $Writer.create(); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -32289,10 +33451,18 @@ message.deprecated = reader.bool(); break; } - case 999: { - if (!(message.uninterpretedOption && message.uninterpretedOption.length)) - message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + case 2: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } + case 3: { + message.debugRedact = reader.bool(); + break; + } + case 999: { + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); break; } default: @@ -32333,6 +33503,14 @@ if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } + if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (typeof message.debugRedact !== "boolean") + return "debugRedact: boolean expected"; if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -32359,6 +33537,13 @@ var message = new $root.google.protobuf.EnumValueOptions(); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.EnumValueOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } + if (object.debugRedact != null) + message.debugRedact = Boolean(object.debugRedact); if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); @@ -32387,10 +33572,17 @@ var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; - if (options.defaults) + if (options.defaults) { object.deprecated = false; + object.features = null; + object.debugRedact = false; + } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + object.debugRedact = message.debugRedact; if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -32434,6 +33626,7 @@ * Properties of a ServiceOptions. * @memberof google.protobuf * @interface IServiceOptions + * @property {google.protobuf.IFeatureSet|null} [features] ServiceOptions features * @property {boolean|null} [deprecated] ServiceOptions deprecated * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost @@ -32456,6 +33649,14 @@ this[keys[i]] = properties[keys[i]]; } + /** + * ServiceOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype.features = null; + /** * ServiceOptions deprecated. * @member {boolean} deprecated @@ -32514,6 +33715,8 @@ writer = $Writer.create(); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 34, wireType 2 =*/274).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -32555,6 +33758,10 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { + case 34: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 33: { message.deprecated = reader.bool(); break; @@ -32608,6 +33815,11 @@ ServiceOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; @@ -32641,6 +33853,11 @@ if (object instanceof $root.google.protobuf.ServiceOptions) return object; var message = new $root.google.protobuf.ServiceOptions(); + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.ServiceOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); if (object.uninterpretedOption) { @@ -32677,11 +33894,14 @@ object.uninterpretedOption = []; if (options.defaults) { object.deprecated = false; + object.features = null; object[".google.api.defaultHost"] = ""; object[".google.api.oauthScopes"] = ""; } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -32731,6 +33951,7 @@ * @interface IMethodOptions * @property {boolean|null} [deprecated] MethodOptions deprecated * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel + * @property {google.protobuf.IFeatureSet|null} [features] MethodOptions features * @property {Array.|null} [uninterpretedOption] MethodOptions uninterpretedOption * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http * @property {Array.|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature @@ -32771,6 +33992,14 @@ */ MethodOptions.prototype.idempotencyLevel = 0; + /** + * MethodOptions features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.MethodOptions + * @instance + */ + MethodOptions.prototype.features = null; + /** * MethodOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -32839,6 +34068,8 @@ writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -32893,6 +34124,10 @@ message.idempotencyLevel = reader.int32(); break; } + case 35: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; @@ -32964,6 +34199,11 @@ case 2: break; } + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; @@ -33032,6 +34272,11 @@ message.idempotencyLevel = 2; break; } + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.MethodOptions.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); @@ -33087,6 +34332,7 @@ if (options.defaults) { object.deprecated = false; object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0; + object.features = null; object[".google.longrunning.operationInfo"] = null; object[".google.api.http"] = null; object[".google.api.routing"] = null; @@ -33095,6 +34341,8 @@ object.deprecated = message.deprecated; if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -33787,6 +35035,607 @@ return UninterpretedOption; })(); + protobuf.FeatureSet = (function() { + + /** + * Properties of a FeatureSet. + * @memberof google.protobuf + * @interface IFeatureSet + * @property {google.protobuf.FeatureSet.FieldPresence|null} [fieldPresence] FeatureSet fieldPresence + * @property {google.protobuf.FeatureSet.EnumType|null} [enumType] FeatureSet enumType + * @property {google.protobuf.FeatureSet.RepeatedFieldEncoding|null} [repeatedFieldEncoding] FeatureSet repeatedFieldEncoding + * @property {google.protobuf.FeatureSet.StringFieldValidation|null} [stringFieldValidation] FeatureSet stringFieldValidation + * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding + * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat + * @property {google.protobuf.IFeatureSet|null} [rawFeatures] FeatureSet rawFeatures + */ + + /** + * Constructs a new FeatureSet. + * @memberof google.protobuf + * @classdesc Represents a FeatureSet. + * @implements IFeatureSet + * @constructor + * @param {google.protobuf.IFeatureSet=} [properties] Properties to set + */ + function FeatureSet(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FeatureSet fieldPresence. + * @member {google.protobuf.FeatureSet.FieldPresence} fieldPresence + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.fieldPresence = 0; + + /** + * FeatureSet enumType. + * @member {google.protobuf.FeatureSet.EnumType} enumType + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.enumType = 0; + + /** + * FeatureSet repeatedFieldEncoding. + * @member {google.protobuf.FeatureSet.RepeatedFieldEncoding} repeatedFieldEncoding + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.repeatedFieldEncoding = 0; + + /** + * FeatureSet stringFieldValidation. + * @member {google.protobuf.FeatureSet.StringFieldValidation} stringFieldValidation + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.stringFieldValidation = 0; + + /** + * FeatureSet messageEncoding. + * @member {google.protobuf.FeatureSet.MessageEncoding} messageEncoding + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.messageEncoding = 0; + + /** + * FeatureSet jsonFormat. + * @member {google.protobuf.FeatureSet.JsonFormat} jsonFormat + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.jsonFormat = 0; + + /** + * FeatureSet rawFeatures. + * @member {google.protobuf.IFeatureSet|null|undefined} rawFeatures + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.rawFeatures = null; + + /** + * Creates a new FeatureSet instance using the specified properties. + * @function create + * @memberof google.protobuf.FeatureSet + * @static + * @param {google.protobuf.IFeatureSet=} [properties] Properties to set + * @returns {google.protobuf.FeatureSet} FeatureSet instance + */ + FeatureSet.create = function create(properties) { + return new FeatureSet(properties); + }; + + /** + * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FeatureSet + * @static + * @param {google.protobuf.IFeatureSet} message FeatureSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fieldPresence != null && Object.hasOwnProperty.call(message, "fieldPresence")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.fieldPresence); + if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.enumType); + if (message.repeatedFieldEncoding != null && Object.hasOwnProperty.call(message, "repeatedFieldEncoding")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.repeatedFieldEncoding); + if (message.stringFieldValidation != null && Object.hasOwnProperty.call(message, "stringFieldValidation")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.stringFieldValidation); + if (message.messageEncoding != null && Object.hasOwnProperty.call(message, "messageEncoding")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding); + if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat); + if (message.rawFeatures != null && Object.hasOwnProperty.call(message, "rawFeatures")) + $root.google.protobuf.FeatureSet.encode(message.rawFeatures, writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FeatureSet + * @static + * @param {google.protobuf.IFeatureSet} message FeatureSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FeatureSet message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FeatureSet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FeatureSet} FeatureSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.fieldPresence = reader.int32(); + break; + } + case 2: { + message.enumType = reader.int32(); + break; + } + case 3: { + message.repeatedFieldEncoding = reader.int32(); + break; + } + case 4: { + message.stringFieldValidation = reader.int32(); + break; + } + case 5: { + message.messageEncoding = reader.int32(); + break; + } + case 6: { + message.jsonFormat = reader.int32(); + break; + } + case 999: { + message.rawFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FeatureSet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FeatureSet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FeatureSet} FeatureSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FeatureSet message. + * @function verify + * @memberof google.protobuf.FeatureSet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FeatureSet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) + switch (message.fieldPresence) { + default: + return "fieldPresence: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.enumType != null && message.hasOwnProperty("enumType")) + switch (message.enumType) { + default: + return "enumType: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding")) + switch (message.repeatedFieldEncoding) { + default: + return "repeatedFieldEncoding: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.stringFieldValidation != null && message.hasOwnProperty("stringFieldValidation")) + switch (message.stringFieldValidation) { + default: + return "stringFieldValidation: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding")) + switch (message.messageEncoding) { + default: + return "messageEncoding: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) + switch (message.jsonFormat) { + default: + return "jsonFormat: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.rawFeatures != null && message.hasOwnProperty("rawFeatures")) { + var error = $root.google.protobuf.FeatureSet.verify(message.rawFeatures); + if (error) + return "rawFeatures." + error; + } + return null; + }; + + /** + * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FeatureSet + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FeatureSet} FeatureSet + */ + FeatureSet.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FeatureSet) + return object; + var message = new $root.google.protobuf.FeatureSet(); + switch (object.fieldPresence) { + default: + if (typeof object.fieldPresence === "number") { + message.fieldPresence = object.fieldPresence; + break; + } + break; + case "FIELD_PRESENCE_UNKNOWN": + case 0: + message.fieldPresence = 0; + break; + case "EXPLICIT": + case 1: + message.fieldPresence = 1; + break; + case "IMPLICIT": + case 2: + message.fieldPresence = 2; + break; + case "LEGACY_REQUIRED": + case 3: + message.fieldPresence = 3; + break; + } + switch (object.enumType) { + default: + if (typeof object.enumType === "number") { + message.enumType = object.enumType; + break; + } + break; + case "ENUM_TYPE_UNKNOWN": + case 0: + message.enumType = 0; + break; + case "OPEN": + case 1: + message.enumType = 1; + break; + case "CLOSED": + case 2: + message.enumType = 2; + break; + } + switch (object.repeatedFieldEncoding) { + default: + if (typeof object.repeatedFieldEncoding === "number") { + message.repeatedFieldEncoding = object.repeatedFieldEncoding; + break; + } + break; + case "REPEATED_FIELD_ENCODING_UNKNOWN": + case 0: + message.repeatedFieldEncoding = 0; + break; + case "PACKED": + case 1: + message.repeatedFieldEncoding = 1; + break; + case "EXPANDED": + case 2: + message.repeatedFieldEncoding = 2; + break; + } + switch (object.stringFieldValidation) { + default: + if (typeof object.stringFieldValidation === "number") { + message.stringFieldValidation = object.stringFieldValidation; + break; + } + break; + case "STRING_FIELD_VALIDATION_UNKNOWN": + case 0: + message.stringFieldValidation = 0; + break; + case "MANDATORY": + case 1: + message.stringFieldValidation = 1; + break; + case "HINT": + case 2: + message.stringFieldValidation = 2; + break; + case "NONE": + case 3: + message.stringFieldValidation = 3; + break; + } + switch (object.messageEncoding) { + default: + if (typeof object.messageEncoding === "number") { + message.messageEncoding = object.messageEncoding; + break; + } + break; + case "MESSAGE_ENCODING_UNKNOWN": + case 0: + message.messageEncoding = 0; + break; + case "LENGTH_PREFIXED": + case 1: + message.messageEncoding = 1; + break; + case "DELIMITED": + case 2: + message.messageEncoding = 2; + break; + } + switch (object.jsonFormat) { + default: + if (typeof object.jsonFormat === "number") { + message.jsonFormat = object.jsonFormat; + break; + } + break; + case "JSON_FORMAT_UNKNOWN": + case 0: + message.jsonFormat = 0; + break; + case "ALLOW": + case 1: + message.jsonFormat = 1; + break; + case "LEGACY_BEST_EFFORT": + case 2: + message.jsonFormat = 2; + break; + } + if (object.rawFeatures != null) { + if (typeof object.rawFeatures !== "object") + throw TypeError(".google.protobuf.FeatureSet.rawFeatures: object expected"); + message.rawFeatures = $root.google.protobuf.FeatureSet.fromObject(object.rawFeatures); + } + return message; + }; + + /** + * Creates a plain object from a FeatureSet message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FeatureSet + * @static + * @param {google.protobuf.FeatureSet} message FeatureSet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FeatureSet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.fieldPresence = options.enums === String ? "FIELD_PRESENCE_UNKNOWN" : 0; + object.enumType = options.enums === String ? "ENUM_TYPE_UNKNOWN" : 0; + object.repeatedFieldEncoding = options.enums === String ? "REPEATED_FIELD_ENCODING_UNKNOWN" : 0; + object.stringFieldValidation = options.enums === String ? "STRING_FIELD_VALIDATION_UNKNOWN" : 0; + object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0; + object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0; + object.rawFeatures = null; + } + if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) + object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence; + if (message.enumType != null && message.hasOwnProperty("enumType")) + object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType; + if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding")) + object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding; + if (message.stringFieldValidation != null && message.hasOwnProperty("stringFieldValidation")) + object.stringFieldValidation = options.enums === String ? $root.google.protobuf.FeatureSet.StringFieldValidation[message.stringFieldValidation] === undefined ? message.stringFieldValidation : $root.google.protobuf.FeatureSet.StringFieldValidation[message.stringFieldValidation] : message.stringFieldValidation; + if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding")) + object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding; + if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) + object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat; + if (message.rawFeatures != null && message.hasOwnProperty("rawFeatures")) + object.rawFeatures = $root.google.protobuf.FeatureSet.toObject(message.rawFeatures, options); + return object; + }; + + /** + * Converts this FeatureSet to JSON. + * @function toJSON + * @memberof google.protobuf.FeatureSet + * @instance + * @returns {Object.} JSON object + */ + FeatureSet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for FeatureSet + * @function getTypeUrl + * @memberof google.protobuf.FeatureSet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FeatureSet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FeatureSet"; + }; + + /** + * FieldPresence enum. + * @name google.protobuf.FeatureSet.FieldPresence + * @enum {number} + * @property {number} FIELD_PRESENCE_UNKNOWN=0 FIELD_PRESENCE_UNKNOWN value + * @property {number} EXPLICIT=1 EXPLICIT value + * @property {number} IMPLICIT=2 IMPLICIT value + * @property {number} LEGACY_REQUIRED=3 LEGACY_REQUIRED value + */ + FeatureSet.FieldPresence = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FIELD_PRESENCE_UNKNOWN"] = 0; + values[valuesById[1] = "EXPLICIT"] = 1; + values[valuesById[2] = "IMPLICIT"] = 2; + values[valuesById[3] = "LEGACY_REQUIRED"] = 3; + return values; + })(); + + /** + * EnumType enum. + * @name google.protobuf.FeatureSet.EnumType + * @enum {number} + * @property {number} ENUM_TYPE_UNKNOWN=0 ENUM_TYPE_UNKNOWN value + * @property {number} OPEN=1 OPEN value + * @property {number} CLOSED=2 CLOSED value + */ + FeatureSet.EnumType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ENUM_TYPE_UNKNOWN"] = 0; + values[valuesById[1] = "OPEN"] = 1; + values[valuesById[2] = "CLOSED"] = 2; + return values; + })(); + + /** + * RepeatedFieldEncoding enum. + * @name google.protobuf.FeatureSet.RepeatedFieldEncoding + * @enum {number} + * @property {number} REPEATED_FIELD_ENCODING_UNKNOWN=0 REPEATED_FIELD_ENCODING_UNKNOWN value + * @property {number} PACKED=1 PACKED value + * @property {number} EXPANDED=2 EXPANDED value + */ + FeatureSet.RepeatedFieldEncoding = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "REPEATED_FIELD_ENCODING_UNKNOWN"] = 0; + values[valuesById[1] = "PACKED"] = 1; + values[valuesById[2] = "EXPANDED"] = 2; + return values; + })(); + + /** + * StringFieldValidation enum. + * @name google.protobuf.FeatureSet.StringFieldValidation + * @enum {number} + * @property {number} STRING_FIELD_VALIDATION_UNKNOWN=0 STRING_FIELD_VALIDATION_UNKNOWN value + * @property {number} MANDATORY=1 MANDATORY value + * @property {number} HINT=2 HINT value + * @property {number} NONE=3 NONE value + */ + FeatureSet.StringFieldValidation = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STRING_FIELD_VALIDATION_UNKNOWN"] = 0; + values[valuesById[1] = "MANDATORY"] = 1; + values[valuesById[2] = "HINT"] = 2; + values[valuesById[3] = "NONE"] = 3; + return values; + })(); + + /** + * MessageEncoding enum. + * @name google.protobuf.FeatureSet.MessageEncoding + * @enum {number} + * @property {number} MESSAGE_ENCODING_UNKNOWN=0 MESSAGE_ENCODING_UNKNOWN value + * @property {number} LENGTH_PREFIXED=1 LENGTH_PREFIXED value + * @property {number} DELIMITED=2 DELIMITED value + */ + FeatureSet.MessageEncoding = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "MESSAGE_ENCODING_UNKNOWN"] = 0; + values[valuesById[1] = "LENGTH_PREFIXED"] = 1; + values[valuesById[2] = "DELIMITED"] = 2; + return values; + })(); + + /** + * JsonFormat enum. + * @name google.protobuf.FeatureSet.JsonFormat + * @enum {number} + * @property {number} JSON_FORMAT_UNKNOWN=0 JSON_FORMAT_UNKNOWN value + * @property {number} ALLOW=1 ALLOW value + * @property {number} LEGACY_BEST_EFFORT=2 LEGACY_BEST_EFFORT value + */ + FeatureSet.JsonFormat = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "JSON_FORMAT_UNKNOWN"] = 0; + values[valuesById[1] = "ALLOW"] = 1; + values[valuesById[2] = "LEGACY_BEST_EFFORT"] = 2; + return values; + })(); + + return FeatureSet; + })(); + protobuf.SourceCodeInfo = (function() { /** diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index e34eae8b0be..c87c95df271 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -2141,6 +2141,10 @@ "rule": "repeated", "type": "ClientLibrarySettings", "id": 109 + }, + "protoReferenceDocumentationUri": { + "type": "string", + "id": 110 } } }, @@ -2198,6 +2202,31 @@ "common": { "type": "CommonLanguageSettings", "id": 1 + }, + "renamedServices": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "renamedResources": { + "keyType": "string", + "type": "string", + "id": 3 + }, + "ignoredResources": { + "rule": "repeated", + "type": "string", + "id": 4 + }, + "forcedNamespaceAliases": { + "rule": "repeated", + "type": "string", + "id": 5 + }, + "handwrittenSignatures": { + "rule": "repeated", + "type": "string", + "id": 6 } } }, @@ -2257,7 +2286,10 @@ "CLOUD": 1, "ADS": 2, "PHOTOS": 3, - "STREET_VIEW": 4 + "STREET_VIEW": 4, + "SHOPPING": 5, + "GEO": 6, + "GENERATIVE_AI": 7 } }, "ClientLibraryDestination": { @@ -2502,6 +2534,25 @@ "rule": "repeated", "type": "UninterpretedOption", "id": 999 + }, + "declaration": { + "rule": "repeated", + "type": "Declaration", + "id": 2, + "options": { + "retention": "RETENTION_SOURCE" + } + }, + "features": { + "type": "FeatureSet", + "id": 50 + }, + "verification": { + "type": "VerificationState", + "id": 3, + "options": { + "default": "UNVERIFIED" + } } }, "extensions": [ @@ -2509,7 +2560,45 @@ 1000, 536870911 ] - ] + ], + "nested": { + "Declaration": { + "fields": { + "number": { + "type": "int32", + "id": 1 + }, + "fullName": { + "type": "string", + "id": 2 + }, + "type": { + "type": "string", + "id": 3 + }, + "reserved": { + "type": "bool", + "id": 5 + }, + "repeated": { + "type": "bool", + "id": 6 + } + }, + "reserved": [ + [ + 4, + 4 + ] + ] + }, + "VerificationState": { + "values": { + "DECLARATION": 0, + "UNVERIFIED": 1 + } + } + } }, "FieldDescriptorProto": { "fields": { @@ -2822,6 +2911,10 @@ "type": "string", "id": 45 }, + "features": { + "type": "FeatureSet", + "id": 50 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -2884,6 +2977,10 @@ "deprecated": true } }, + "features": { + "type": "FeatureSet", + "id": 12 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -2978,9 +3075,22 @@ "type": "OptionRetention", "id": 17 }, - "target": { + "targets": { + "rule": "repeated", "type": "OptionTargetType", - "id": 18 + "id": 19, + "options": { + "packed": false + } + }, + "editionDefaults": { + "rule": "repeated", + "type": "EditionDefault", + "id": 20 + }, + "features": { + "type": "FeatureSet", + "id": 21 }, "uninterpretedOption": { "rule": "repeated", @@ -2998,6 +3108,10 @@ [ 4, 4 + ], + [ + 18, + 18 ] ], "nested": { @@ -3035,11 +3149,27 @@ "TARGET_TYPE_SERVICE": 8, "TARGET_TYPE_METHOD": 9 } + }, + "EditionDefault": { + "fields": { + "edition": { + "type": "string", + "id": 1 + }, + "value": { + "type": "string", + "id": 2 + } + } } } }, "OneofOptions": { "fields": { + "features": { + "type": "FeatureSet", + "id": 1 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -3073,6 +3203,10 @@ "deprecated": true } }, + "features": { + "type": "FeatureSet", + "id": 7 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -3101,6 +3235,17 @@ "default": false } }, + "features": { + "type": "FeatureSet", + "id": 2 + }, + "debugRedact": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -3116,6 +3261,10 @@ }, "ServiceOptions": { "fields": { + "features": { + "type": "FeatureSet", + "id": 34 + }, "deprecated": { "type": "bool", "id": 33, @@ -3152,6 +3301,10 @@ "default": "IDEMPOTENCY_UNKNOWN" } }, + "features": { + "type": "FeatureSet", + "id": 35 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -3223,6 +3376,137 @@ } } }, + "FeatureSet": { + "fields": { + "fieldPresence": { + "type": "FieldPresence", + "id": 1, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "EXPLICIT" + } + }, + "enumType": { + "type": "EnumType", + "id": 2, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "OPEN" + } + }, + "repeatedFieldEncoding": { + "type": "RepeatedFieldEncoding", + "id": 3, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "PACKED" + } + }, + "stringFieldValidation": { + "type": "StringFieldValidation", + "id": 4, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "MANDATORY" + } + }, + "messageEncoding": { + "type": "MessageEncoding", + "id": 5, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "LENGTH_PREFIXED" + } + }, + "jsonFormat": { + "type": "JsonFormat", + "id": 6, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "edition_defaults.edition": "2023", + "edition_defaults.value": "ALLOW" + } + }, + "rawFeatures": { + "type": "FeatureSet", + "id": 999, + "options": { + "targets": "TARGET_TYPE_UNKNOWN" + } + } + }, + "extensions": [ + [ + 1000, + 1000 + ], + [ + 1001, + 1001 + ], + [ + 9995, + 9999 + ] + ], + "nested": { + "FieldPresence": { + "values": { + "FIELD_PRESENCE_UNKNOWN": 0, + "EXPLICIT": 1, + "IMPLICIT": 2, + "LEGACY_REQUIRED": 3 + } + }, + "EnumType": { + "values": { + "ENUM_TYPE_UNKNOWN": 0, + "OPEN": 1, + "CLOSED": 2 + } + }, + "RepeatedFieldEncoding": { + "values": { + "REPEATED_FIELD_ENCODING_UNKNOWN": 0, + "PACKED": 1, + "EXPANDED": 2 + } + }, + "StringFieldValidation": { + "values": { + "STRING_FIELD_VALIDATION_UNKNOWN": 0, + "MANDATORY": 1, + "HINT": 2, + "NONE": 3 + } + }, + "MessageEncoding": { + "values": { + "MESSAGE_ENCODING_UNKNOWN": 0, + "LENGTH_PREFIXED": 1, + "DELIMITED": 2 + } + }, + "JsonFormat": { + "values": { + "JSON_FORMAT_UNKNOWN": 0, + "ALLOW": 1, + "LEGACY_BEST_EFFORT": 2 + } + } + } + }, "SourceCodeInfo": { "fields": { "location": { @@ -3486,7 +3770,7 @@ "options": { "cc_enable_arenas": true, "csharp_namespace": "Google.LongRunning", - "go_package": "google.golang.org/genproto/googleapis/longrunning;longrunning", + "go_package": "cloud.google.com/go/longrunning/autogen/longrunningpb;longrunningpb", "java_multiple_files": true, "java_outer_classname": "OperationsProto", "java_package": "com.google.longrunning", From fc001b75958257d0af90fa74e15982f4cf47f423 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 27 Sep 2023 12:00:47 +0200 Subject: [PATCH 740/820] chore(deps): update dependency @types/is to v0.0.23 (#1162) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.22` -> `0.0.23`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.22/0.0.23) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fis/0.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fis/0.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fis/0.0.22/0.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fis/0.0.22/0.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index e887484c67a..fced9bcb8d0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@google-cloud/storage": "^7.0.1", "@types/extend": "^3.0.1", - "@types/is": "0.0.22", + "@types/is": "0.0.23", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", "@types/node": "^20.4.9", From 0842cd026149325b134b4bae7e8951ddd9cea8f9 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 29 Sep 2023 13:43:20 -0400 Subject: [PATCH 741/820] feat: Support for using multiple databases in datastore (#1090) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * A simple test with multidb support * A simple test with multidb support Adds databaseId to the request options, client options and code for carrying over the client options to the request options as well as a test to make sure it actually works. * Add additional checks with get The test should include additional checks to ensure get is running the way it is supposed to. * Add a test for saving with another database * other datastore should delete the entity Since we are saving things to another datastore we need to delete the data from that datastore. * Add a test for the getDatastore method The user needs a way to get the database Id from the client so that they can keep track of their clients more easily. * Add a unit test for database id Ensure that the database id gets passed all the way down to the generated layer and gets included in the request. * Do an additional check for the sake of tests We should check for the existance of datastore.options so that the code doesn’t fail if they are not provided at all. * initialize generated client so it can be mocked The test on kokoro is failing because in that environment a project id isn’t defined. The solution is to eliminate the get request so that a call never reaches the backend and initialize the gapic client so it can be mocked out and then catch any call that reaches the mock. * comments and setDatabaseId Add docs comments for newly added functions and add a test that ensures setDatabaseId works correctly. * Refactor of database name Don’t use the same string multiple times. When the database name we are using for testing changes then we should only have to make that change in one place. * correction to test against old database This was a typo. We want to test against the database we were using before * getRequestWithDatabaseId function Add the getRequestWithDatabaseId function and change it so that it can easily be used in multiple places and the tests still pass. * Change function name to addDatabaseIdToRequest The request options should contain databaseId so rename the function as appropriate. * Comments in all the places to add reqOpts This commit contains a comment in all the places we want to add the reqOpts change. * Add a warning to a certain test for easier debug Add a warning because the way the assert checking was done before, the test suite was not receiving any indication of which test was failing which makes debugging really hard. * This fixed the bug for the save operation * datastore request id Add request ids back in all the places they are required * addDatabaseIdToRequest Add addDatabaseIdToRequest to the transaction test framework so that it can be used in the tests. * Solve all the test errors for createReadStream Mock out add database id for the tests in createReadStream that correspond to createReadStream. * addDatabaseIdToRequest mock for runQueryStream Add the addDatabaseIdToRequest mock to the tests for every runQueryStream test so that the tests pass. * By default, mock out addDatabaseIdToRequest addDatabaseIdToRequest should be a default function in datastore object of request so that we don’t have to mock it out in many different places. * Revert "addDatabaseIdToRequest mock for runQueryStream" This reverts commit a3bdb926659beaf18d500d955db7a3b9ca0d7f6a. * Revert "Solve all the test errors for createReadStream" This reverts commit 7b5f90289bb12d6ac81b91777a08c35f54112771. * linting lint an import * Revert "datastore request id" This reverts commit f167ce3447a42b66635461cb50262bac13ba74f1. * Revert "This fixed the bug for the save operation" This reverts commit dd7b06ca866ae929d4dad56878b6c85c8b2155e6. * Revert "Comments in all the places to add reqOpts" This reverts commit 8ba512ad130c11cdb03bd2134d932ec6cd9e116e. * Introduce addDatabaseIdRequest in request Introduce adding the databaseId in request layer again. * Declare a constant so that tests don’t run Importing test into the system-test folder causes the system-test command to also run the tests. Eliminate this import. * Remove setDatabaseId Remove setDatabaseId as it provides a way for the user to get confused about the current state of the client. * Add comment for addDatabaseIdToRequest function The function needs a comment to be consistent with docs. * Address header issue The new util file needs a header * Add databaseId for encoding and decoding keys The databaseId should be encoded on keys so that the user can write on a record by record basis * Revert "Add databaseId for encoding and decoding keys" This reverts commit 0ebabd554a634a06ee8893082deeaf256b6a0337. * Try a test with the namespace Try out a new test that looks at data details * Use the other datastore in the test Use another datastore with key * Create a test that looks at specific details The test should look at specific details in the key and should return the data with the right author. * Add additional checks to existing test Add additional checks to existing test to show default database is unaffected. * Revert "Revert "Add databaseId for encoding and decoding keys"" This reverts commit 6449d10733c7868bcba0b2d2947551fab5df9751. * Revert "Revert "Revert "Add databaseId for encoding and decoding keys""" This reverts commit e694341c9f8179bde3831f2bd9c040d7062e0496. * Rename the second database to secondDatabase * Use the database called multidb-test multidb-test is the name of the database set up on the project used in Github automation so we need to change this name in code to use that new database. * Eliminate function on index that adds the id Currently a function is used as a passthrough to the function on the util file. This unnecessarily exposes a function to the user that they shouldn’t be concerned with. * Fix the test so that the assertion error bubbles The assertion error should bubble up to the user if we send it through the callback. * Add types so that purpose of function is clear Types currently set to any should be more specific. This will help clarify the purpose of the function that is used. * Add types and names so that the function works The types should be more specific and the names should be more explicit and clear. * Eliminate repeated code fragments The test case has the same lines for each secondary database key and these lines should not be repeated so we regroup them into better data structures for the job * Better names and code organization The names of some variables were changed to align with others and code was moved so that code pertaining to the same function is grouped together * Change the variable name of the default key There is only one default key so we change the variable name so that it doesn’t mention 1 * Refactor the post key hierarchy out Refactor the hierarchy out for a cleaner test * Add only to the test we are interested in * Revert "Add only to the test we are interested in" This reverts commit 0378dead81c405a85fc7bb288889fbca149cf780. * Add second database id In the transaction tests we add the databaseId parameter. The databaseId parameter will run tests against the secondary database. * Remove unnecessary mocks The mocks for addDatabaseIdToRequest are not necessary for these two files since they were only useful for the way the code was written before so should be removed. * Remove unused imports Imports that were used in old mocks no longer exist in the file so should be removed. * Add parameterized testing to the test/index file Parameterized testing can be added to the test/index file to test to see how the tests behave with databaseId set to the second database and without this setting too. * Add parameterized testing to test/transaction.ts Parameterized testing should be used on transaction.ts. This commit adds the testing with async. * This ensures that the tests still run on the deft Tests need to run on the default database as well as the secondary database. This commit ensures that they do. * Add parameterized testing for the system tests Parameterized testing for the system tests will ensure that tests run with the default database as well as with the secondary database. * Use default datastore variable in new tests The intent of the datastore variable in the new tests is to be the default database so that we are able to see if reads/writes affect the default or secondary database in these tests. They should not use the parameterized version of datastore. * inline add database id Now that the tests don’t need to mock out adding database id function, we can inline the code that adds the database id to the request options. * Modify the namespace in parameterized tests Parameterized tests should have a different namespace for the second set of tests for sure so we add this prefix. * Move databaseId to SharedQueryOptions for alignme The databaseId should be moved to shared query options as discussed. * Run the linter Linting was broken so that the PR could be read. Ran the linter again. --- handwritten/nodejs-datastore/package.json | 1 + handwritten/nodejs-datastore/src/index.ts | 12 + handwritten/nodejs-datastore/src/request.ts | 5 + .../nodejs-datastore/system-test/datastore.ts | 3601 +++++++++-------- handwritten/nodejs-datastore/test/index.ts | 3466 ++++++++-------- handwritten/nodejs-datastore/test/query.ts | 40 + .../nodejs-datastore/test/transaction.ts | 1200 +++--- 7 files changed, 4324 insertions(+), 4001 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fced9bcb8d0..5a93f76e20a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -59,6 +59,7 @@ "@types/node": "^20.4.9", "@types/proxyquire": "^1.3.28", "@types/sinon": "^10.0.0", + "async": "^3.2.4", "c8": "^8.0.1", "gapic-tools": "^0.2.0", "gts": "^5.0.0", diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 9daf984c82b..27f9f37cea3 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -700,6 +700,16 @@ class Datastore extends DatastoreRequest { ); } + /** + * Gets the database id that all requests will be run against. + * + * @returns {string} The database id that the current client is set to that + * requests will run against. + */ + getDatabaseId(): string | undefined { + return this.options.databaseId; + } + getProjectId(): Promise { return this.auth.getProjectId(); } @@ -1818,6 +1828,7 @@ promisifyAll(Datastore, { 'double', 'isDouble', 'geoPoint', + 'getDatabaseId', 'getProjectId', 'isGeoPoint', 'index', @@ -1898,6 +1909,7 @@ export interface DatastoreOptions extends GoogleAuthOptions { namespace?: string; apiEndpoint?: string; sslCreds?: ChannelCredentials; + databaseId?: string; } export interface KeyToLegacyUrlSafeCallback { diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index c832d7d28b6..6cc05b90937 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -992,6 +992,10 @@ class DatastoreRequest { } } + if (datastore.options && datastore.options.databaseId) { + reqOpts.databaseId = datastore.options.databaseId; + } + if (method === 'rollback') { reqOpts.transaction = this.id; } @@ -1143,6 +1147,7 @@ export interface RequestConfig { reqOpts?: RequestOptions; } export interface SharedQueryOptions { + databaseId?: string; projectId?: string; partitionId?: google.datastore.v1.IPartitionId | null; readOptions?: { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index ad62dd4ac7d..9df6a260195 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -17,7 +17,7 @@ import {readFileSync} from 'fs'; import * as path from 'path'; import {after, before, describe, it} from 'mocha'; import * as yaml from 'js-yaml'; -import {Datastore, Index} from '../src'; +import {Datastore, DatastoreOptions, Index} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; import {AggregateField} from '../src/aggregate'; @@ -25,1840 +25,2023 @@ import {PropertyFilter, and, or} from '../src/filter'; import {entity} from '../src/entity'; import KEY_SYMBOL = entity.KEY_SYMBOL; -describe('Datastore', () => { - let timeBeforeDataCreation: number; - const testKinds: string[] = []; - const datastore = new Datastore({ - namespace: `${Date.now()}`, - }); - // Override the Key method so we can track what keys are created during the - // tests. They are then deleted in the `after` hook. - const key = datastore.key; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.key = function (options: any) { - const keyObject = key.call(this, options); - testKinds.push(keyObject.kind); - return keyObject; - }; - - const {indexes: DECLARED_INDEXES} = yaml.load( - readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8') - ) as {indexes: google.datastore.admin.v1.IIndex[]}; - - // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after - // possible implications with kokoro project - - // Gets the read time of the latest save so that the test isn't flakey due to race condition. - async function getReadTime(path: [{kind: string; name: string}]) { - const projectId = await datastore.getProjectId(); - const request = { - keys: [ - { - path, - partitionId: {namespaceId: datastore.namespace}, - }, - ], - projectId, - }; - const dataClient = datastore.clients_.get('DatastoreClient'); - let results: any; - if (dataClient) { - results = await dataClient['lookup'](request); - } - return parseInt(results[0].readTime.seconds) * 1000; - } +const async = require('async'); + +const SECOND_DATABASE_ID = 'multidb-test'; + +async.each( + [ + { + namespace: `${Date.now()}`, + }, + { + databaseId: SECOND_DATABASE_ID, + namespace: `second-db-${Date.now()}`, + }, + ], + (clientOptions: DatastoreOptions) => { + describe('Datastore', () => { + let timeBeforeDataCreation: number; + const testKinds: string[] = []; + const datastore = new Datastore(clientOptions); + // Override the Key method so we can track what keys are created during the + // tests. They are then deleted in the `after` hook. + const key = datastore.key; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.key = function (options: any) { + const keyObject = key.call(this, options); + testKinds.push(keyObject.kind); + return keyObject; + }; + + const {indexes: DECLARED_INDEXES} = yaml.load( + readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8') + ) as {indexes: google.datastore.admin.v1.IIndex[]}; + + // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after + // possible implications with kokoro project - after(async () => { - async function deleteEntities(kind: string) { - const query = datastore.createQuery(kind).select('__key__'); - const [entities] = await datastore.runQuery(query); - const keys = entities.map(entity => { - return entity[datastore.KEY]; + // Gets the read time of the latest save so that the test isn't flakey due to race condition. + async function getReadTime(path: [{kind: string; name: string}]) { + const projectId = await datastore.getProjectId(); + const request = { + keys: [ + { + path, + partitionId: {namespaceId: datastore.namespace}, + }, + ], + projectId, + }; + const dataClient = datastore.clients_.get('DatastoreClient'); + let results: any; + if (dataClient) { + results = await dataClient['lookup'](request); + } + return parseInt(results[0].readTime.seconds) * 1000; + } + + after(async () => { + async function deleteEntities(kind: string) { + const query = datastore.createQuery(kind).select('__key__'); + const [entities] = await datastore.runQuery(query); + const keys = entities.map(entity => { + return entity[datastore.KEY]; + }); + await datastore.delete(keys); + } + await Promise.all(testKinds.map(kind => deleteEntities(kind))); }); - await datastore.delete(keys); - } - await Promise.all(testKinds.map(kind => deleteEntities(kind))); - }); - - it('should allocate IDs', async () => { - const keys = await datastore.allocateIds(datastore.key('Kind'), 10); - assert.ok(keys); - }); - - it('should get the project id', async () => { - const projectId = await datastore.getProjectId(); - assert.notEqual(projectId, null); - }); - - describe('create, retrieve and delete', () => { - const post = { - title: 'How to make the perfect pizza in your grill', - tags: ['pizza', 'grill'], - publishedAt: new Date(), - author: 'Silvano', - isDraft: false, - wordCount: 400, - rating: 5.0, - likes: null, - metadata: { - views: 100, - }, - }; - - it('should excludeFromIndexes correctly', async () => { - const longString = Buffer.alloc(1501, '.').toString(); - const postKey = datastore.key(['Post', 'post1']); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + + it('should allocate IDs', async () => { + const keys = await datastore.allocateIds(datastore.key('Kind'), 10); + assert.ok(keys); + }); + + it('should get the project id', async () => { + const projectId = await datastore.getProjectId(); + assert.notEqual(projectId, null); + }); + + describe('create, retrieve and delete', () => { + const post = { + title: 'How to make the perfect pizza in your grill', + tags: ['pizza', 'grill'], + publishedAt: new Date(), + author: 'Silvano', + isDraft: false, + wordCount: 400, + rating: 5.0, + likes: null, + metadata: { + views: 100, + }, + }; + + it('should excludeFromIndexes correctly', async () => { + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post1']); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; - - await datastore.save({ - key: postKey, - data, - excludeFromIndexes: [ - 'longString', - 'longStringArray[]', - 'metadata.obj.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString', - ], - }); - const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, data); - await datastore.delete(postKey); - }); + }; + + await datastore.save({ + key: postKey, + data, + excludeFromIndexes: [ + 'longString', + 'longStringArray[]', + 'metadata.obj.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ], + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(postKey); + }); - it('should remove index with using wildcard in excludeFromIndexes', async () => { - const longString = Buffer.alloc(1501, '.').toString(); - const postKey = datastore.key(['Post', 'post3']); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + it('should remove index with using wildcard in excludeFromIndexes', async () => { + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post3']); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; - - const excludeFromIndexes = [ - 'longString', - 'longStringArray[]', - 'metadata.longString', - 'metadata.obj.*', - 'metadata.longStringArray[].*', - ]; - - await datastore.save({ - key: postKey, - data, - excludeFromIndexes, - }); - const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, data); - await datastore.delete(postKey); - }); + }; + + const excludeFromIndexes = [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.*', + 'metadata.longStringArray[].*', + ]; + + await datastore.save({ + key: postKey, + data, + excludeFromIndexes, + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(postKey); + }); - it('should auto remove index with excludeLargeProperties enabled', async () => { - const longString = Buffer.alloc(1501, '.').toString(); - const postKey = datastore.key(['Post', 'post2']); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + it('should auto remove index with excludeLargeProperties enabled', async () => { + const longString = Buffer.alloc(1501, '.').toString(); + const postKey = datastore.key(['Post', 'post2']); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; - - await datastore.save({ - key: postKey, - data, - excludeLargeProperties: true, - }); - const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, data); - await datastore.delete(postKey); - }); - - it('should accurately save/get a large int value via Datastore.int()', async () => { - const postKey = datastore.key('Team'); - const largeIntValueAsString = '9223372036854775807'; - const points = Datastore.int(largeIntValueAsString); - await datastore.save({key: postKey, data: {points}}); - const [entity] = await datastore.get(postKey, {wrapNumbers: true}); - assert.strictEqual(entity.points.value, largeIntValueAsString); - assert.throws(() => entity.points.valueOf()); - await datastore.delete(postKey); - }); + }; + + await datastore.save({ + key: postKey, + data, + excludeLargeProperties: true, + }); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(postKey); + }); - it('should wrap specified properties via IntegerTypeCastOptions.properties', async () => { - const postKey = datastore.key('Scores'); - const largeIntValueAsString = '9223372036854775807'; - const panthers = Datastore.int(largeIntValueAsString); - const broncos = 922337203; - let integerTypeCastFunctionCalled = 0; - await datastore.save({key: postKey, data: {panthers, broncos}}); - const [entity] = await datastore.get(postKey, { - wrapNumbers: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - integerTypeCastFunction: (value: any) => { - integerTypeCastFunctionCalled++; - return value.toString(); - }, - properties: 'panthers', - }, - }); - // verify that value of property 'panthers' was converted via 'integerTypeCastFunction'. - assert.strictEqual(entity.panthers, largeIntValueAsString); - assert.strictEqual(integerTypeCastFunctionCalled, 1); - // verify that value of the property broncos was converted to int by default logic. - assert.strictEqual(entity.broncos, broncos); - await datastore.delete(postKey); - }); + it('should accurately save/get a large int value via Datastore.int()', async () => { + const postKey = datastore.key('Team'); + const largeIntValueAsString = '9223372036854775807'; + const points = Datastore.int(largeIntValueAsString); + await datastore.save({key: postKey, data: {points}}); + const [entity] = await datastore.get(postKey, {wrapNumbers: true}); + assert.strictEqual(entity.points.value, largeIntValueAsString); + assert.throws(() => entity.points.valueOf()); + await datastore.delete(postKey); + }); - it('should save/get/delete with a key name', async () => { - const postKey = datastore.key(['Post', 'post1']); - await datastore.save({key: postKey, data: post}); - const [entity] = await datastore.get(postKey); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, post); - await datastore.delete(postKey); - }); + it('should wrap specified properties via IntegerTypeCastOptions.properties', async () => { + const postKey = datastore.key('Scores'); + const largeIntValueAsString = '9223372036854775807'; + const panthers = Datastore.int(largeIntValueAsString); + const broncos = 922337203; + let integerTypeCastFunctionCalled = 0; + await datastore.save({key: postKey, data: {panthers, broncos}}); + const [entity] = await datastore.get(postKey, { + wrapNumbers: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + integerTypeCastFunction: (value: any) => { + integerTypeCastFunctionCalled++; + return value.toString(); + }, + properties: 'panthers', + }, + }); + // verify that value of property 'panthers' was converted via 'integerTypeCastFunction'. + assert.strictEqual(entity.panthers, largeIntValueAsString); + assert.strictEqual(integerTypeCastFunctionCalled, 1); + // verify that value of the property broncos was converted to int by default logic. + assert.strictEqual(entity.broncos, broncos); + await datastore.delete(postKey); + }); - it('should save/get/delete from a snapshot', async () => { - function sleep(ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); - } - const post2 = { - title: 'Another way to make pizza', - tags: ['pizza', 'grill'], - publishedAt: new Date(), - author: 'Silvano', - isDraft: false, - wordCount: 400, - rating: 5.0, - likes: null, - metadata: { - views: 100, - }, - }; - const path = ['Post', 'post1']; - const postKey = datastore.key(path); - await datastore.save({key: postKey, data: post}); - await sleep(1000); - const savedTime = Date.now(); - await sleep(1000); - // Save new post2 data, but then verify the timestamp read has post1 data - await datastore.save({key: postKey, data: post2}); - const [entity] = await datastore.get(postKey, {readTime: savedTime}); - assert.deepStrictEqual(entity[datastore.KEY], postKey); - const [entityNoOptions] = await datastore.get(postKey); - assert.deepStrictEqual(entityNoOptions[datastore.KEY], postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, post); - delete entityNoOptions[datastore.KEY]; - assert.deepStrictEqual(entityNoOptions, post2); - await datastore.delete(postKey); - }); + it('should save/get/delete with a key name', async () => { + const postKey = datastore.key(['Post', 'post1']); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); + }); - it('should save/get/delete with a numeric key id', async () => { - const postKey = datastore.key(['Post', 123456789]); - await datastore.save({key: postKey, data: post}); - const [entity] = await datastore.get(postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, post); - await datastore.delete(postKey); - }); + describe('multi-db support for read and write operations', () => { + const namespace = `${Date.now()}`; + const keyHierarchy = ['Post', 'post1']; + const defaultDatastore = new Datastore({namespace}); + it('should run a query with another database', async () => { + // First verify that a record gets written to datastore + const postKey = defaultDatastore.key(keyHierarchy); + await defaultDatastore.save({key: postKey, data: post}); + const query = defaultDatastore + .createQuery('Post') + .hasAncestor(postKey); + const [defaultDatastoreResults] = await defaultDatastore.runQuery( + query + ); + assert.strictEqual(defaultDatastoreResults.length, 1); + const [entity] = await defaultDatastore.get(postKey); + assert.strictEqual(entity.author, 'Silvano'); + // With another database, verify that a query returns no results + const otherDatastore = new Datastore({ + namespace, + databaseId: SECOND_DATABASE_ID, + }); + const [secondDatastoreResults] = await otherDatastore.runQuery( + query + ); + assert.strictEqual(secondDatastoreResults.length, 0); + const [otherEntity] = await otherDatastore.get(postKey); + assert(typeof otherEntity === 'undefined'); + // Cleanup + await defaultDatastore.delete(postKey); + }); + it('should ensure save works with another database', async () => { + // First verify that the default database is empty + const postKey = defaultDatastore.key(keyHierarchy); + const query = defaultDatastore + .createQuery('Post') + .hasAncestor(postKey); + const [defaultDatastoreResults] = await defaultDatastore.runQuery( + query + ); + assert.strictEqual(defaultDatastoreResults.length, 0); + const [originalSecondaryResults] = await defaultDatastore.runQuery( + query + ); + assert.strictEqual(originalSecondaryResults.length, 0); + const [entity] = await defaultDatastore.get(postKey); + assert(typeof entity === 'undefined'); + // With another database, verify that saving to the database works + const otherDatastore = new Datastore({ + namespace, + databaseId: SECOND_DATABASE_ID, + }); + await otherDatastore.save({key: postKey, data: post}); + const [secondDatastoreResults] = await otherDatastore.runQuery( + query + ); + assert.strictEqual(secondDatastoreResults.length, 1); + const [originalResults] = await defaultDatastore.runQuery(query); + assert.strictEqual(originalResults.length, 0); + const [otherEntity] = await otherDatastore.get(postKey); + assert.strictEqual(otherEntity.author, 'Silvano'); + // Cleanup + await otherDatastore.delete(postKey); + }); + it('should ensure save respects the databaseId parameter per key', async () => { + interface DatastoreData { + key: entity.Key; + data: any; + } + const secondaryDatastore = new Datastore({ + namespace: `${Date.now()}`, + databaseId: SECOND_DATABASE_ID, + }); + // Save all data to the default database + const defaultAuthor = 'default database author'; + const defaultData = Object.assign({}, post); + defaultData.author = defaultAuthor; + const defaultPostKey = defaultDatastore.key([ + 'Post', + 'default post key', + ]); + await defaultDatastore.save({ + key: defaultPostKey, + data: defaultData, + }); + // Save all data to the secondary database + const secondaryIndices = [1, 2, 3]; + const secondaryData: DatastoreData[] = secondaryIndices.map( + number => { + const authorName = 'secondary author ' + number.toString(); + const keyName = 'secondary key ' + number.toString(); + const postData = Object.assign({}, post); + postData.author = authorName; + return { + key: secondaryDatastore.key(['Post', keyName]), + data: postData, + }; + } + ); + await Promise.all( + secondaryData.map(async datum => secondaryDatastore.save(datum)) + ); + // Next, ensure that the default database has the right records + const query = defaultDatastore + .createQuery('Post') + .hasAncestor(defaultPostKey); + const [defaultDatastoreResults] = await defaultDatastore.runQuery( + query + ); + assert.strictEqual(defaultDatastoreResults.length, 1); + assert.strictEqual( + defaultDatastoreResults[0].author, + defaultAuthor + ); + // Next, ensure that the other database has the right records + await Promise.all( + secondaryData.map(async datum => { + const query = secondaryDatastore + .createQuery('Post') + .hasAncestor(datum.key); + const [results] = await secondaryDatastore.runQuery(query); + assert.strictEqual(results.length, 1); + assert.strictEqual(results[0].author, datum.data.author); + }) + ); + // Cleanup + await defaultDatastore.delete(defaultPostKey); + await Promise.all( + secondaryData.map(datum => secondaryDatastore.delete(datum.key)) + ); + }); + }); - it('should save/get/delete a buffer', async () => { - const postKey = datastore.key(['Post']); - const data = { - buf: Buffer.from('010100000000000000000059400000000000006940', 'hex'), - }; - await datastore.save({key: postKey, data}); - const assignedId = postKey.id; - assert(assignedId); - const [entity] = await datastore.get(postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, data); - await datastore.delete(datastore.key(['Post', assignedId as string])); - }); + it('should save/get/delete from a snapshot', async () => { + function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + const post2 = { + title: 'Another way to make pizza', + tags: ['pizza', 'grill'], + publishedAt: new Date(), + author: 'Silvano', + isDraft: false, + wordCount: 400, + rating: 5.0, + likes: null, + metadata: { + views: 100, + }, + }; + const path = ['Post', 'post1']; + const postKey = datastore.key(path); + await datastore.save({key: postKey, data: post}); + await sleep(1000); + const savedTime = Date.now(); + await sleep(1000); + // Save new post2 data, but then verify the timestamp read has post1 data + await datastore.save({key: postKey, data: post2}); + const [entity] = await datastore.get(postKey, {readTime: savedTime}); + assert.deepStrictEqual(entity[datastore.KEY], postKey); + const [entityNoOptions] = await datastore.get(postKey); + assert.deepStrictEqual(entityNoOptions[datastore.KEY], postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + delete entityNoOptions[datastore.KEY]; + assert.deepStrictEqual(entityNoOptions, post2); + await datastore.delete(postKey); + }); - it('should save/get/delete an empty buffer', async () => { - const postKey = datastore.key(['Post']); - const data = { - buf: Buffer.from([]), - }; - await datastore.save({key: postKey, data}); - const assignedId = postKey.id; - assert(assignedId); - const [entity] = await datastore.get(postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, data); - await datastore.delete(datastore.key(['Post', assignedId as string])); - }); + it('should save/get/delete with a numeric key id', async () => { + const postKey = datastore.key(['Post', 123456789]); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); + }); - it('should save/get/delete with a generated key id', async () => { - const postKey = datastore.key('Post'); - await datastore.save({key: postKey, data: post}); + it('should save/get/delete a buffer', async () => { + const postKey = datastore.key(['Post']); + const data = { + buf: Buffer.from( + '010100000000000000000059400000000000006940', + 'hex' + ), + }; + await datastore.save({key: postKey, data}); + const assignedId = postKey.id; + assert(assignedId); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(datastore.key(['Post', assignedId as string])); + }); - // The key's path should now be complete. - assert(postKey.id); + it('should save/get/delete an empty buffer', async () => { + const postKey = datastore.key(['Post']); + const data = { + buf: Buffer.from([]), + }; + await datastore.save({key: postKey, data}); + const assignedId = postKey.id; + assert(assignedId); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, data); + await datastore.delete(datastore.key(['Post', assignedId as string])); + }); - const [entity] = await datastore.get(postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, post); - await datastore.delete(postKey); - }); + it('should save/get/delete with a generated key id', async () => { + const postKey = datastore.key('Post'); + await datastore.save({key: postKey, data: post}); - it('should save/get/update', async () => { - const postKey = datastore.key('Post'); - await datastore.save({key: postKey, data: post}); - const [entity] = await datastore.get(postKey); - assert.strictEqual(entity.title, post.title); - entity.title = 'Updated'; - await datastore.save(entity); - const [entity2] = await datastore.get(postKey); - assert.strictEqual(entity2.title, 'Updated'); - await datastore.delete(postKey); - }); + // The key's path should now be complete. + assert(postKey.id); - it('should save/get/merge', async () => { - const postKey = datastore.key(['Post', 1]); - const originalData = { - key: postKey, - data: { - title: 'Original', - status: 'neat', - }, - }; - await datastore.save(originalData); - const updatedData = { - key: postKey, - data: { - title: 'Updated', - }, - }; - await datastore.merge(updatedData); - const [entity] = await datastore.get(postKey); - assert.strictEqual(entity.title, updatedData.data.title); - assert.strictEqual(entity.status, originalData.data.status); - await datastore.delete(postKey); - }); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); + }); - it('should save and get with a string ID', async () => { - const longIdKey = datastore.key([ - 'Post', - datastore.int('100000000000001234'), - ]); - await datastore.save({ - key: longIdKey, - data: { - test: true, - }, - }); - const [entity] = await datastore.get(longIdKey); - assert.strictEqual(entity.test, true); - }); + it('should save/get/update', async () => { + const postKey = datastore.key('Post'); + await datastore.save({key: postKey, data: post}); + const [entity] = await datastore.get(postKey); + assert.strictEqual(entity.title, post.title); + entity.title = 'Updated'; + await datastore.save(entity); + const [entity2] = await datastore.get(postKey); + assert.strictEqual(entity2.title, 'Updated'); + await datastore.delete(postKey); + }); - it('should fail explicitly set second insert on save', async () => { - const postKey = datastore.key('Post'); - await datastore.save({key: postKey, data: post}); - - // The key's path should now be complete. - assert(postKey.id); - await assert.rejects( - datastore.save({ - key: postKey, - method: 'insert', - data: post, - }) - ); - const [entity] = await datastore.get(postKey); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, post); - await datastore.delete(postKey); - }); + it('should save/get/merge', async () => { + const postKey = datastore.key(['Post', 1]); + const originalData = { + key: postKey, + data: { + title: 'Original', + status: 'neat', + }, + }; + await datastore.save(originalData); + const updatedData = { + key: postKey, + data: { + title: 'Updated', + }, + }; + await datastore.merge(updatedData); + const [entity] = await datastore.get(postKey); + assert.strictEqual(entity.title, updatedData.data.title); + assert.strictEqual(entity.status, originalData.data.status); + await datastore.delete(postKey); + }); - it('should fail explicitly set first update on save', async () => { - const postKey = datastore.key('Post'); - await assert.rejects( - datastore.save({ - key: postKey, - method: 'update', - data: post, - }) - ); - }); + it('should save and get with a string ID', async () => { + const longIdKey = datastore.key([ + 'Post', + datastore.int('100000000000001234'), + ]); + await datastore.save({ + key: longIdKey, + data: { + test: true, + }, + }); + const [entity] = await datastore.get(longIdKey); + assert.strictEqual(entity.test, true); + }); - it('should save/get/delete multiple entities at once', async () => { - const post2 = { - title: 'How to make the perfect homemade pasta', - tags: ['pasta', 'homemade'], - publishedAt: new Date('2001-01-01T00:00:00.000Z'), - author: 'Silvano', - isDraft: false, - wordCount: 450, - rating: 4.5, - }; - const key1 = datastore.key('Post'); - const key2 = datastore.key('Post'); - await datastore.save([ - {key: key1, data: post}, - {key: key2, data: post2}, - ]); - const [entities] = await datastore.get([key1, key2]); - assert.strictEqual(entities.length, 2); - await datastore.delete([key1, key2]); - }); + it('should fail explicitly set second insert on save', async () => { + const postKey = datastore.key('Post'); + await datastore.save({key: postKey, data: post}); + + // The key's path should now be complete. + assert(postKey.id); + await assert.rejects( + datastore.save({ + key: postKey, + method: 'insert', + data: post, + }) + ); + const [entity] = await datastore.get(postKey); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, post); + await datastore.delete(postKey); + }); - it('should get multiple entities in a stream', done => { - const key1 = datastore.key('Post'); - const key2 = datastore.key('Post'); + it('should fail explicitly set first update on save', async () => { + const postKey = datastore.key('Post'); + await assert.rejects( + datastore.save({ + key: postKey, + method: 'update', + data: post, + }) + ); + }); - datastore.save( - [ - {key: key1, data: post}, - {key: key2, data: post}, - ], - err => { - assert.ifError(err); + it('should save/get/delete multiple entities at once', async () => { + const post2 = { + title: 'How to make the perfect homemade pasta', + tags: ['pasta', 'homemade'], + publishedAt: new Date('2001-01-01T00:00:00.000Z'), + author: 'Silvano', + isDraft: false, + wordCount: 450, + rating: 4.5, + }; + const key1 = datastore.key('Post'); + const key2 = datastore.key('Post'); + await datastore.save([ + {key: key1, data: post}, + {key: key2, data: post2}, + ]); + const [entities] = await datastore.get([key1, key2]); + assert.strictEqual(entities.length, 2); + await datastore.delete([key1, key2]); + }); - let numEntitiesEmitted = 0; + it('should get multiple entities in a stream', done => { + const key1 = datastore.key('Post'); + const key2 = datastore.key('Post'); - datastore - .createReadStream([key1, key2]) - .on('error', done) - .on('data', () => { - numEntitiesEmitted++; - }) - .on('end', () => { - assert.strictEqual(numEntitiesEmitted, 2); - datastore.delete([key1, key2], done); - }); - } - ); - }); + datastore.save( + [ + {key: key1, data: post}, + {key: key2, data: post}, + ], + err => { + assert.ifError(err); + + let numEntitiesEmitted = 0; + + datastore + .createReadStream([key1, key2]) + .on('error', done) + .on('data', () => { + numEntitiesEmitted++; + }) + .on('end', () => { + assert.strictEqual(numEntitiesEmitted, 2); + datastore.delete([key1, key2], done); + }); + } + ); + }); - it('should save keys as a part of entity and query by key', async () => { - const personKey = datastore.key(['People', 'US', 'Person', 'name']); - await datastore.save({ - key: personKey, - data: { - fullName: 'Full name', - linkedTo: personKey, // himself - }, - }); - const query = datastore - .createQuery('Person') - .hasAncestor(datastore.key(['People', 'US'])) - .filter('linkedTo', personKey); - const [results] = await datastore.runQuery(query); - assert.strictEqual(results![0].fullName, 'Full name'); - assert.deepStrictEqual(results![0].linkedTo, personKey); - await datastore.delete(personKey); - }); + it('should save keys as a part of entity and query by key', async () => { + const personKey = datastore.key(['People', 'US', 'Person', 'name']); + await datastore.save({ + key: personKey, + data: { + fullName: 'Full name', + linkedTo: personKey, // himself + }, + }); + const query = datastore + .createQuery('Person') + .hasAncestor(datastore.key(['People', 'US'])) + .filter('linkedTo', personKey); + const [results] = await datastore.runQuery(query); + assert.strictEqual(results![0].fullName, 'Full name'); + assert.deepStrictEqual(results![0].linkedTo, personKey); + await datastore.delete(personKey); + }); - it('should save with an empty buffer', async () => { - const key = datastore.key(['TEST']); - const result = await datastore.save({ - key: key, - data: { - name: 'test', - blob: Buffer.from([]), - }, - }); - const mutationResult = result.pop()?.mutationResults?.pop(); - assert.strictEqual(mutationResult?.key?.path?.pop()?.kind, 'TEST'); - }); + it('should save with an empty buffer', async () => { + const key = datastore.key(['TEST']); + const result = await datastore.save({ + key: key, + data: { + name: 'test', + blob: Buffer.from([]), + }, + }); + const mutationResult = result.pop()?.mutationResults?.pop(); + assert.strictEqual(mutationResult?.key?.path?.pop()?.kind, 'TEST'); + }); - describe('entity types', () => { - it('should save and decode an int', async () => { - const integerValue = 2015; - const integerType = Datastore.int(integerValue); - const key = datastore.key('Person'); - await datastore.save({ - key, - data: { - year: integerType, - }, + describe('entity types', () => { + it('should save and decode an int', async () => { + const integerValue = 2015; + const integerType = Datastore.int(integerValue); + const key = datastore.key('Person'); + await datastore.save({ + key, + data: { + year: integerType, + }, + }); + const [entity] = await datastore.get(key); + assert.strictEqual(entity.year, integerValue); + }); + + it('should save and decode a double', async () => { + const doubleValue = 99.99; + const doubleType = Datastore.double(doubleValue); + const key = datastore.key('Person'); + await datastore.save({ + key, + data: { + nines: doubleType, + }, + }); + const [entity] = await datastore.get(key); + assert.strictEqual(entity.nines, doubleValue); + }); + + it('should save and decode a geo point', async () => { + const geoPointValue = { + latitude: 40.6894, + longitude: -74.0447, + }; + const geoPointType = Datastore.geoPoint(geoPointValue); + const key = datastore.key('Person'); + await datastore.save({ + key, + data: { + location: geoPointType, + }, + }); + const [entity] = await datastore.get(key); + assert.deepStrictEqual(entity.location, geoPointValue); + }); }); - const [entity] = await datastore.get(key); - assert.strictEqual(entity.year, integerValue); }); - it('should save and decode a double', async () => { - const doubleValue = 99.99; - const doubleType = Datastore.double(doubleValue); - const key = datastore.key('Person'); - await datastore.save({ - key, - data: { - nines: doubleType, - }, + describe('querying the datastore', () => { + const ancestor = datastore.key(['Book', 'GoT']); + + const keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ['Catelyn'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Arya'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Sansa'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Robb'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Bran'], + ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'], + ].map(path => { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); }); - const [entity] = await datastore.get(key); - assert.strictEqual(entity.nines, doubleValue); - }); - it('should save and decode a geo point', async () => { - const geoPointValue = { - latitude: 40.6894, - longitude: -74.0447, - }; - const geoPointType = Datastore.geoPoint(geoPointValue); - const key = datastore.key('Person'); - await datastore.save({ - key, - data: { - location: geoPointType, + const characters = [ + { + name: 'Rickard', + family: 'Stark', + appearances: 9, + alive: false, }, + { + name: 'Eddard', + family: 'Stark', + appearances: 9, + alive: false, + }, + { + name: 'Catelyn', + family: ['Stark', 'Tully'], + appearances: 26, + alive: false, + }, + { + name: 'Arya', + family: 'Stark', + appearances: 33, + alive: true, + }, + { + name: 'Sansa', + family: 'Stark', + appearances: 31, + alive: true, + }, + { + name: 'Robb', + family: 'Stark', + appearances: 22, + alive: false, + }, + { + name: 'Bran', + family: 'Stark', + appearances: 25, + alive: true, + }, + { + name: 'Jon Snow', + family: 'Stark', + appearances: 32, + alive: true, + }, + ]; + + before(async () => { + // This 'sleep' function is used to ensure that when data is saved to datastore, + // the time on the server is far enough ahead to be sure to be later than timeBeforeDataCreation + // so that when we read at timeBeforeDataCreation we get a snapshot of data before the save. + function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + const keysToSave = keys.map((key, index) => { + return { + key, + data: characters[index], + }; + }); + // Save for a key so that a read time can be accessed for snapshot reads. + const emptyData = Object.assign(Object.assign({}, keysToSave[0]), { + data: {}, + }); + await datastore.save(emptyData); + timeBeforeDataCreation = await getReadTime([ + {kind: 'Character', name: 'Rickard'}, + ]); + // Sleep for 3 seconds so that any future reads will be later than timeBeforeDataCreation. + await sleep(3000); + await datastore.save(keysToSave); }); - const [entity] = await datastore.get(key); - assert.deepStrictEqual(entity.location, geoPointValue); - }); - }); - }); - - describe('querying the datastore', () => { - const ancestor = datastore.key(['Book', 'GoT']); - - const keys = [ - // Paths: - ['Rickard'], - ['Rickard', 'Character', 'Eddard'], - ['Catelyn'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Arya'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Sansa'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Robb'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Bran'], - ['Rickard', 'Character', 'Eddard', 'Character', 'Jon Snow'], - ].map(path => { - return datastore.key(['Book', 'GoT', 'Character'].concat(path)); - }); - const characters = [ - { - name: 'Rickard', - family: 'Stark', - appearances: 9, - alive: false, - }, - { - name: 'Eddard', - family: 'Stark', - appearances: 9, - alive: false, - }, - { - name: 'Catelyn', - family: ['Stark', 'Tully'], - appearances: 26, - alive: false, - }, - { - name: 'Arya', - family: 'Stark', - appearances: 33, - alive: true, - }, - { - name: 'Sansa', - family: 'Stark', - appearances: 31, - alive: true, - }, - { - name: 'Robb', - family: 'Stark', - appearances: 22, - alive: false, - }, - { - name: 'Bran', - family: 'Stark', - appearances: 25, - alive: true, - }, - { - name: 'Jon Snow', - family: 'Stark', - appearances: 32, - alive: true, - }, - ]; - - before(async () => { - // This 'sleep' function is used to ensure that when data is saved to datastore, - // the time on the server is far enough ahead to be sure to be later than timeBeforeDataCreation - // so that when we read at timeBeforeDataCreation we get a snapshot of data before the save. - function sleep(ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); - } - const keysToSave = keys.map((key, index) => { - return { - key, - data: characters[index], - }; - }); - // Save for a key so that a read time can be accessed for snapshot reads. - const emptyData = Object.assign(Object.assign({}, keysToSave[0]), { - data: {}, - }); - await datastore.save(emptyData); - timeBeforeDataCreation = await getReadTime([ - {kind: 'Character', name: 'Rickard'}, - ]); - // Sleep for 3 seconds so that any future reads will be later than timeBeforeDataCreation. - await sleep(3000); - await datastore.save(keysToSave); - }); + after(async () => { + await datastore.delete(keys); + }); - after(async () => { - await datastore.delete(keys); - }); + it('should limit queries', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(5); + const [firstEntities, info] = await datastore.runQuery(q); + assert.strictEqual(firstEntities!.length, 5); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 3); + }); - it('should limit queries', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(5); - const [firstEntities, info] = await datastore.runQuery(q); - assert.strictEqual(firstEntities!.length, 5); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .start(info!.endCursor!); - const [secondEntities] = await datastore.runQuery(secondQ); - assert.strictEqual(secondEntities!.length, 3); - }); + it('should not go over a limit', async () => { + const limit = 3; + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); + const [results] = await datastore.runQuery(q); + assert.strictEqual(results!.length, limit); + }); - it('should not go over a limit', async () => { - const limit = 3; - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(limit); - const [results] = await datastore.runQuery(q); - assert.strictEqual(results!.length, limit); - }); + it('should run a query as a stream', done => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + let resultsReturned = 0; + datastore + .runQueryStream(q) + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); + }); - it('should run a query as a stream', done => { - const q = datastore.createQuery('Character').hasAncestor(ancestor); - let resultsReturned = 0; - datastore - .runQueryStream(q) - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, characters.length); - done(); + it('should run a datastore query as a stream via query#runStream', done => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + let resultsReturned = 0; + q.runStream() + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); }); - }); - it('should run a datastore query as a stream via query#runStream', done => { - const q = datastore.createQuery('Character').hasAncestor(ancestor); - let resultsReturned = 0; - q.runStream() - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, characters.length); - done(); + it('should run a transaction query as a stream via query#runStream', done => { + const transaction = datastore.transaction(); + const q = transaction.createQuery('Character').hasAncestor(ancestor); + let resultsReturned = 0; + q.runStream() + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, characters.length); + done(); + }); }); - }); - it('should run a transaction query as a stream via query#runStream', done => { - const transaction = datastore.transaction(); - const q = transaction.createQuery('Character').hasAncestor(ancestor); - let resultsReturned = 0; - q.runStream() - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, characters.length); - done(); + it('should not go over a limit with a stream', done => { + const limit = 3; + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .limit(limit); + let resultsReturned = 0; + datastore + .runQueryStream(q) + .on('error', done) + .on('data', () => resultsReturned++) + .on('end', () => { + assert.strictEqual(resultsReturned, limit); + done(); + }); }); - }); - it('should not go over a limit with a stream', done => { - const limit = 3; - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .limit(limit); - let resultsReturned = 0; - datastore - .runQueryStream(q) - .on('error', done) - .on('data', () => resultsReturned++) - .on('end', () => { - assert.strictEqual(resultsReturned, limit); - done(); + it('should filter queries with simple indexes', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '>=', 20); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); }); - }); - it('should filter queries with simple indexes', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', '>=', 20); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - }); + it('should filter queries with NOT_EQUAL', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', '!=', 9); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + }); - it('should filter queries with NOT_EQUAL', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', '!=', 9); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - }); + it('should filter queries with IN', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', 'IN', [9, 25]); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); - it('should filter queries with IN', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', 'IN', [9, 25]); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 3); - }); + it('should filter queries with __key__ and IN', async () => { + const key1 = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); + const key2 = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + 'Character', + 'Sansa', + ]); + const key3 = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + ]); + const value = [key1, key2, key3]; + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('__key__', 'IN', value); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + assert.deepStrictEqual(entities[0][KEY_SYMBOL], key1); + assert.deepStrictEqual(entities[1][KEY_SYMBOL], key3); + assert.deepStrictEqual(entities[2][KEY_SYMBOL], key2); + }); - it('should filter queries with __key__ and IN', async () => { - const key1 = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - const key2 = datastore.key([ - 'Book', - 'GoT', - 'Character', - 'Rickard', - 'Character', - 'Eddard', - 'Character', - 'Sansa', - ]); - const key3 = datastore.key([ - 'Book', - 'GoT', - 'Character', - 'Rickard', - 'Character', - 'Eddard', - ]); - const value = [key1, key2, key3]; - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('__key__', 'IN', value); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 3); - assert.deepStrictEqual(entities[0][KEY_SYMBOL], key1); - assert.deepStrictEqual(entities[1][KEY_SYMBOL], key3); - assert.deepStrictEqual(entities[2][KEY_SYMBOL], key2); - }); + it('should filter queries with NOT_IN', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('appearances', 'NOT_IN', [9, 25]); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 5); + }); - it('should filter queries with NOT_IN', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('appearances', 'NOT_IN', [9, 25]); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 5); - }); + it('should filter queries with defined indexes', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + }); + describe('with the filter function using the Filter class', () => { + it('should run a query with one property filter', async () => { + const filter = new PropertyFilter('family', '=', 'Stark'); + const q = datastore + .createQuery('Character') + .filter(filter) + .hasAncestor(ancestor); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 8); + }); + it('should run a query with two property filters', async () => { + const q = datastore + .createQuery('Character') + .filter(new PropertyFilter('family', '=', 'Stark')) + .filter(new PropertyFilter('appearances', '>=', 20)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + }); + it('should run a query using new Filter class with filter', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter(new PropertyFilter('appearances', '>=', 20)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + for (const entity of entities) { + if (Array.isArray(entity.family)) { + assert.strictEqual(entity.family[0], 'Stark'); + } else { + assert.strictEqual(entity.family, 'Stark'); + } + assert(entity.appearances >= 20); + } + }); + it('should run a query using an AND composite filter', async () => { + const q = datastore + .createQuery('Character') + .filter( + and([ + new PropertyFilter('family', '=', 'Stark'), + new PropertyFilter('appearances', '>=', 20), + ]) + ); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 6); + for (const entity of entities) { + if (Array.isArray(entity.family)) { + assert.strictEqual(entity.family[0], 'Stark'); + } else { + assert.strictEqual(entity.family, 'Stark'); + } + assert(entity.appearances >= 20); + } + }); + it('should run a query using an OR composite filter', async () => { + const q = datastore + .createQuery('Character') + .filter( + or([ + new PropertyFilter('family', '=', 'Stark'), + new PropertyFilter('appearances', '>=', 20), + ]) + ); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 8); + let atLeastOne = false; + for (const entity of entities) { + const familyHasStark = Array.isArray(entity.family) + ? entity.family[0] === 'Stark' + : entity.family === 'Stark'; + const hasEnoughAppearances = entity.appearances >= 20; + if (familyHasStark && !hasEnoughAppearances) { + atLeastOne = true; + } + } + assert(atLeastOne); + }); + describe('using hasAncestor and Filter class', () => { + const secondAncestor = datastore.key([ + 'Book', + 'GoT', + 'Character', + 'Rickard', + 'Character', + 'Eddard', + ]); + it('should run a query using hasAncestor last', async () => { + const q = datastore + .createQuery('Character') + .filter(new PropertyFilter('appearances', '<', 30)) + .hasAncestor(secondAncestor); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); + it('should run a query using hasAncestor first', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(secondAncestor) + .filter(new PropertyFilter('appearances', '<', 30)); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, 3); + }); + }); + }); + describe('with a sum filter', () => { + it('should run a sum aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 187}]); + }); + it('should run a sum aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances'), + AggregateField.sum('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: 187, property_2: 187}, + ]); + }); + it('should run a sum aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances').alias('sum1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 169}]); + }); + it('should run a sum aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances').alias('sum1')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 187}]); + }); + it('should do multiple sum aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances').alias('sum1'), + AggregateField.sum('appearances').alias('sum2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 187, sum2: 187}]); + }); + it('should run a sum aggregation filter with a limit', async () => { + // When using a limit the test appears to use data points with the lowest appearance values. + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 91}]); + }); + it('should run a sum aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances').alias('sum1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 154}]); + }); + it('should run a sum aggregate filter against a non-numeric property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('family').alias('sum1')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter against __key__ property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('__key__').alias('sum1')]); + try { + await datastore.runAggregationQuery(aggregate); + assert.fail('The request should have failed.'); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' + ); + } + }); + it('should run a sum aggregate filter against a query that returns no results', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'NoMatch'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances').alias('sum1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter against a query from before the data creation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.sum('appearances').alias('sum1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate, { + readTime: timeBeforeDataCreation, + }); + assert.deepStrictEqual(results, [{sum1: 0}]); + }); + it('should run a sum aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.sum('appearances').alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 187}]); + }); + }); + describe('with an average filter', () => { + it('should run an average aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 23.375}]); + }); + it('should run an average aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances'), + AggregateField.average('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: 23.375, property_2: 23.375}, + ]); + }); + it('should run an average aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation( + AggregateField.average('appearances').alias('avg1') + ); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 28.166666666666668}]); + }); + it('should run an average aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation( + AggregateField.average('appearances').alias('avg1') + ); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 23.375}]); + }); + it('should do multiple average aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + AggregateField.average('appearances').alias('avg2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 23.375, avg2: 23.375}]); + }); + it('should run an average aggregation filter with a limit', async () => { + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 18.2}]); + }); + it('should run an average aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: 22}]); + }); + it('should run an average aggregate filter against a non-numeric property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('family').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter against __key__ property value', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('__key__').alias('avg1'), + ]); + try { + await datastore.runAggregationQuery(aggregate); + assert.fail('The request should have failed.'); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' + ); + } + }); + it('should run an average aggregate filter against a query that returns no results', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'NoMatch'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter against a query from before the data creation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.average('appearances').alias('avg1'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate, { + readTime: timeBeforeDataCreation, + }); + assert.deepStrictEqual(results, [{avg1: null}]); + }); + it('should run an average aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.average('appearances').alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 23.375}]); + }); + }); + describe('with a count filter', () => { + it('should run a count aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count()); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8}]); + }); + it('should run a count aggregation with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.count(), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8, property_2: 8}]); + }); + it('should run a count aggregation having other filters', async () => { + const q = datastore + .createQuery('Character') + .filter('family', 'Stark') + .filter('appearances', '>=', 20); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count().alias('total')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 6}]); + }); + it('should run a count aggregate filter with an alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count().alias('total')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 8}]); + }); + it('should do multiple count aggregations with aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count().alias('total'), + AggregateField.count().alias('total2'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 8, total2: 8}]); + }); + it('should run a count aggregation filter with a limit', async () => { + const q = datastore.createQuery('Character').limit(5); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.count()); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 5}]); + }); + it('should run a count aggregate filter with a limit and an alias', async () => { + const q = datastore.createQuery('Character').limit(7); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.count().alias('total')]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{total: 7}]); + }); + it('should run a count aggregate filter using the alias function, but with no alias', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([AggregateField.count().alias()]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 8}]); + }); + }); + describe('with multiple types of filters', () => { + it('should run multiple types of aggregations with a list of aggregates', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.sum('appearances'), + AggregateField.average('appearances'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: 8, property_2: 187, property_3: 23.375}, + ]); + }); + it('should run multiple types of aggregations with and without aliases', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.average('appearances'), + AggregateField.count().alias('alias_count'), + AggregateField.sum('appearances').alias('alias_sum'), + AggregateField.average('appearances').alias('alias_average'), + ]); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + { + property_1: 8, + property_2: 23.375, + alias_count: 8, + alias_sum: 187, + alias_average: 23.375, + }, + ]); + }); + it('should throw an error when too many aggregations are run', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregations([ + AggregateField.count(), + AggregateField.sum('appearances'), + AggregateField.average('appearances'), + AggregateField.count().alias('alias_count'), + AggregateField.sum('appearances').alias('alias_sum'), + AggregateField.average('appearances').alias('alias_average'), + ]); + try { + await datastore.runAggregationQuery(aggregate); + } catch (err: any) { + assert.strictEqual( + err.message, + '3 INVALID_ARGUMENT: The maximum number of aggregations allowed in an aggregation query is 5. Received: 6' + ); + } + }); + }); + it('should filter by ancestor', async () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities.length, characters.length); + }); - it('should filter queries with defined indexes', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('family', 'Stark') - .filter('appearances', '>=', 20); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - }); - describe('with the filter function using the Filter class', () => { - it('should run a query with one property filter', async () => { - const filter = new PropertyFilter('family', '=', 'Stark'); - const q = datastore - .createQuery('Character') - .filter(filter) - .hasAncestor(ancestor); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 8); - }); - it('should run a query with two property filters', async () => { - const q = datastore - .createQuery('Character') - .filter(new PropertyFilter('family', '=', 'Stark')) - .filter(new PropertyFilter('appearances', '>=', 20)); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - }); - it('should run a query using new Filter class with filter', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'Stark') - .filter(new PropertyFilter('appearances', '>=', 20)); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - for (const entity of entities) { - if (Array.isArray(entity.family)) { - assert.strictEqual(entity.family[0], 'Stark'); - } else { - assert.strictEqual(entity.family, 'Stark'); - } - assert(entity.appearances >= 20); - } - }); - it('should run a query using an AND composite filter', async () => { - const q = datastore - .createQuery('Character') - .filter( - and([ - new PropertyFilter('family', '=', 'Stark'), - new PropertyFilter('appearances', '>=', 20), - ]) + it('should construct filters by null status', async () => { + assert.strictEqual( + datastore + .createQuery('Character') + .filter('status', null) + .filters.pop()?.val, + null ); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 6); - for (const entity of entities) { - if (Array.isArray(entity.family)) { - assert.strictEqual(entity.family[0], 'Stark'); - } else { - assert.strictEqual(entity.family, 'Stark'); - } - assert(entity.appearances >= 20); - } - }); - it('should run a query using an OR composite filter', async () => { - const q = datastore - .createQuery('Character') - .filter( - or([ - new PropertyFilter('family', '=', 'Stark'), - new PropertyFilter('appearances', '>=', 20), - ]) + assert.strictEqual( + datastore + .createQuery('Character') + .filter('status', '=', null) + .filters.pop()?.val, + null ); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 8); - let atLeastOne = false; - for (const entity of entities) { - const familyHasStark = Array.isArray(entity.family) - ? entity.family[0] === 'Stark' - : entity.family === 'Stark'; - const hasEnoughAppearances = entity.appearances >= 20; - if (familyHasStark && !hasEnoughAppearances) { - atLeastOne = true; - } - } - assert(atLeastOne); - }); - describe('using hasAncestor and Filter class', () => { - const secondAncestor = datastore.key([ - 'Book', - 'GoT', - 'Character', - 'Rickard', - 'Character', - 'Eddard', - ]); - it('should run a query using hasAncestor last', async () => { + }); + it('should filter by key', async () => { + const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); const q = datastore .createQuery('Character') - .filter(new PropertyFilter('appearances', '<', 30)) - .hasAncestor(secondAncestor); + .hasAncestor(ancestor) + .filter('__key__', key); const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 3); + assert.strictEqual(entities!.length, 1); }); - it('should run a query using hasAncestor first', async () => { + + it('should order queries', async () => { const q = datastore .createQuery('Character') - .hasAncestor(secondAncestor) - .filter(new PropertyFilter('appearances', '<', 30)); + .hasAncestor(ancestor) + .order('appearances'); + + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities![0].name, characters[0].name); + assert.strictEqual(entities![7].name, characters[3].name); + }); + + it('should select projections', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .select(['name', 'family']); + const [entities] = await datastore.runQuery(q); + delete entities[0][datastore.KEY]; + assert.deepStrictEqual(entities![0], { + name: 'Arya', + family: 'Stark', + }); + delete entities[8][datastore.KEY]; + assert.deepStrictEqual(entities![8], { + name: 'Sansa', + family: 'Stark', + }); + }); + + it('should paginate with offset and limit', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(3) + .order('appearances'); + + const [entities, info] = await datastore.runQuery(q); assert.strictEqual(entities!.length, 3); + assert.strictEqual(entities![0].name, 'Robb'); + assert.strictEqual(entities![2].name, 'Catelyn'); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 3); + assert.strictEqual(secondEntities![0].name, 'Sansa'); + assert.strictEqual(secondEntities![2].name, 'Arya'); }); - }); - }); - describe('with a sum filter', () => { - it('should run a sum aggregation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 187}]); - }); - it('should run a sum aggregation with a list of aggregates', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.sum('appearances'), - AggregateField.sum('appearances'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 187, property_2: 187}]); - }); - it('should run a sum aggregation having other filters', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'Stark') - .filter('appearances', '>=', 20); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances').alias('sum1')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 169}]); - }); - it('should run a sum aggregate filter with an alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances').alias('sum1')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 187}]); - }); - it('should do multiple sum aggregations with aliases', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.sum('appearances').alias('sum1'), - AggregateField.sum('appearances').alias('sum2'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 187, sum2: 187}]); - }); - it('should run a sum aggregation filter with a limit', async () => { - // When using a limit the test appears to use data points with the lowest appearance values. - const q = datastore.createQuery('Character').limit(5); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 91}]); - }); - it('should run a sum aggregate filter with a limit and an alias', async () => { - const q = datastore.createQuery('Character').limit(7); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('appearances').alias('sum1')]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 154}]); - }); - it('should run a sum aggregate filter against a non-numeric property value', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('family').alias('sum1')]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 0}]); - }); - it('should run a sum aggregate filter against __key__ property value', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('__key__').alias('sum1')]); - try { - await datastore.runAggregationQuery(aggregate); - assert.fail('The request should have failed.'); - } catch (err: any) { - assert.strictEqual( - err.message, - '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' - ); - } - }); - it('should run a sum aggregate filter against a query that returns no results', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'NoMatch'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('appearances').alias('sum1')]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{sum1: 0}]); - }); - it('should run a sum aggregate filter against a query from before the data creation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('appearances').alias('sum1')]); - const [results] = await datastore.runAggregationQuery(aggregate, { - readTime: timeBeforeDataCreation, - }); - assert.deepStrictEqual(results, [{sum1: 0}]); - }); - it('should run a sum aggregate filter using the alias function, but with no alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.sum('appearances').alias()]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 187}]); - }); - }); - describe('with an average filter', () => { - it('should run an average aggregation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 23.375}]); - }); - it('should run an average aggregation with a list of aggregates', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.average('appearances'), - AggregateField.average('appearances'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [ - {property_1: 23.375, property_2: 23.375}, - ]); - }); - it('should run an average aggregation having other filters', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'Stark') - .filter('appearances', '>=', 20); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances').alias('avg1')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: 28.166666666666668}]); - }); - it('should run an average aggregate filter with an alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances').alias('avg1')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: 23.375}]); - }); - it('should do multiple average aggregations with aliases', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.average('appearances').alias('avg1'), - AggregateField.average('appearances').alias('avg2'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: 23.375, avg2: 23.375}]); - }); - it('should run an average aggregation filter with a limit', async () => { - const q = datastore.createQuery('Character').limit(5); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 18.2}]); - }); - it('should run an average aggregate filter with a limit and an alias', async () => { - const q = datastore.createQuery('Character').limit(7); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.average('appearances').alias('avg1'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: 22}]); - }); - it('should run an average aggregate filter against a non-numeric property value', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.average('family').alias('avg1')]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: null}]); - }); - it('should run an average aggregate filter against __key__ property value', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.average('__key__').alias('avg1')]); - try { - await datastore.runAggregationQuery(aggregate); - assert.fail('The request should have failed.'); - } catch (err: any) { - assert.strictEqual( - err.message, - '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__' - ); - } - }); - it('should run an average aggregate filter against a query that returns no results', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'NoMatch'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.average('appearances').alias('avg1'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{avg1: null}]); - }); - it('should run an average aggregate filter against a query from before the data creation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.average('appearances').alias('avg1'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate, { - readTime: timeBeforeDataCreation, + + it('should resume from a start cursor', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .offset(2) + .limit(2) + .order('appearances'); + const [, info] = await datastore.runQuery(q); + const secondQ = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .order('appearances') + .start(info!.endCursor!); + const [secondEntities] = await datastore.runQuery(secondQ); + assert.strictEqual(secondEntities!.length, 4); + assert.strictEqual(secondEntities![0].name, 'Catelyn'); + assert.strictEqual(secondEntities![3].name, 'Arya'); + }); + + it('should group queries', async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor) + .groupBy('appearances'); + const [entities] = await datastore.runQuery(q); + assert.strictEqual(entities!.length, characters.length - 1); + }); + + it('should query from the Query object', async () => { + await datastore.createQuery('Character').run(); }); - assert.deepStrictEqual(results, [{avg1: null}]); - }); - it('should run an average aggregate filter using the alias function, but with no alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.average('appearances').alias()]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 23.375}]); - }); - }); - describe('with a count filter', () => { - it('should run a count aggregation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.count()); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 8}]); - }); - it('should run a count aggregation with a list of aggregates', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.count(), AggregateField.count()]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 8, property_2: 8}]); - }); - it('should run a count aggregation having other filters', async () => { - const q = datastore - .createQuery('Character') - .filter('family', 'Stark') - .filter('appearances', '>=', 20); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.count().alias('total')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{total: 6}]); - }); - it('should run a count aggregate filter with an alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.count().alias('total')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{total: 8}]); - }); - it('should do multiple count aggregations with aliases', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.count().alias('total'), - AggregateField.count().alias('total2'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{total: 8, total2: 8}]); - }); - it('should run a count aggregation filter with a limit', async () => { - const q = datastore.createQuery('Character').limit(5); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.count()); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 5}]); - }); - it('should run a count aggregate filter with a limit and an alias', async () => { - const q = datastore.createQuery('Character').limit(7); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.count().alias('total')]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{total: 7}]); - }); - it('should run a count aggregate filter using the alias function, but with no alias', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([AggregateField.count().alias()]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 8}]); }); - }); - describe('with multiple types of filters', () => { - it('should run multiple types of aggregations with a list of aggregates', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.count(), - AggregateField.sum('appearances'), - AggregateField.average('appearances'), + + describe('querying the datastore with an overflow data set', () => { + const keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ].map(path => { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); + }); + const characters = [ + { + name: 'Rickard', + family: 'Stark', + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + appearances: 9223372036854775807, + alive: false, + }, + { + name: 'Eddard', + family: 'Stark', + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + appearances: 9223372036854775807, + alive: false, + }, + ]; + before(async () => { + const keysToSave = keys.map((key, index) => { + return { + key, + data: characters[index], + }; + }); + await datastore.save(keysToSave); + }); + after(async () => { + await datastore.delete(keys); + }); + it('should run a sum aggregation with an overflow dataset', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [ + {property_1: -18446744073709552000}, ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [ - {property_1: 8, property_2: 187, property_3: 23.375}, - ]); + }); + it('should run an average aggregation with an overflow dataset', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: -9223372036854776000}]); + }); }); - it('should run multiple types of aggregations with and without aliases', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.count(), - AggregateField.average('appearances'), - AggregateField.count().alias('alias_count'), - AggregateField.sum('appearances').alias('alias_sum'), - AggregateField.average('appearances').alias('alias_average'), - ]); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [ + describe('querying the datastore with an NaN in the data set', () => { + const keys = [ + // Paths: + ['Rickard'], + ['Rickard', 'Character', 'Eddard'], + ].map(path => { + return datastore.key(['Book', 'GoT', 'Character'].concat(path)); + }); + const characters = [ { - property_1: 8, - property_2: 23.375, - alias_count: 8, - alias_sum: 187, - alias_average: 23.375, + name: 'Rickard', + family: 'Stark', + appearances: 4, + alive: false, }, - ]); - }); - it('should throw an error when too many aggregations are run', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregations([ - AggregateField.count(), - AggregateField.sum('appearances'), - AggregateField.average('appearances'), - AggregateField.count().alias('alias_count'), - AggregateField.sum('appearances').alias('alias_sum'), - AggregateField.average('appearances').alias('alias_average'), - ]); - try { - await datastore.runAggregationQuery(aggregate); - } catch (err: any) { - assert.strictEqual( - err.message, - '3 INVALID_ARGUMENT: The maximum number of aggregations allowed in an aggregation query is 5. Received: 6' - ); - } + { + name: 'Eddard', + family: 'Stark', + appearances: null, + alive: false, + }, + ]; + before(async () => { + const keysToSave = keys.map((key, index) => { + return { + key, + data: characters[index], + }; + }); + await datastore.save(keysToSave); + }); + after(async () => { + await datastore.delete(keys); + }); + it('should run a sum aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 4}]); + }); + it('should run an average aggregation', async () => { + const q = datastore.createQuery('Character'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + const [results] = await datastore.runAggregationQuery(aggregate); + assert.deepStrictEqual(results, [{property_1: 4}]); + }); }); - }); - it('should filter by ancestor', async () => { - const q = datastore.createQuery('Character').hasAncestor(ancestor); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities.length, characters.length); - }); - - it('should construct filters by null status', async () => { - assert.strictEqual( - datastore.createQuery('Character').filter('status', null).filters.pop() - ?.val, - null - ); - assert.strictEqual( - datastore - .createQuery('Character') - .filter('status', '=', null) - .filters.pop()?.val, - null - ); - }); - it('should filter by key', async () => { - const key = datastore.key(['Book', 'GoT', 'Character', 'Rickard']); - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .filter('__key__', key); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 1); - }); + describe('transactions', () => { + it('should run in a transaction', async () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + const transaction = datastore.transaction(); + await transaction.run(); + await transaction.get(key); + transaction.save({key, data: obj}); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + }); - it('should order queries', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances'); + it('should commit all saves and deletes at the end', async () => { + const deleteKey = datastore.key(['Company', 'Subway']); + const key = datastore.key(['Company', 'Google']); + const incompleteKey = datastore.key('Company'); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities![0].name, characters[0].name); - assert.strictEqual(entities![7].name, characters[3].name); - }); + await datastore.save({ + key: deleteKey, + data: {}, + }); + const transaction = datastore.transaction(); - it('should select projections', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .select(['name', 'family']); - - const [entities] = await datastore.runQuery(q); - delete entities[0][datastore.KEY]; - assert.deepStrictEqual(entities![0], { - name: 'Arya', - family: 'Stark', - }); - delete entities[8][datastore.KEY]; - assert.deepStrictEqual(entities![8], { - name: 'Sansa', - family: 'Stark', - }); - }); + await transaction.run(); + transaction.delete(deleteKey); - it('should paginate with offset and limit', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(3) - .order('appearances'); - - const [entities, info] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, 3); - assert.strictEqual(entities![0].name, 'Robb'); - assert.strictEqual(entities![2].name, 'Catelyn'); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); - const [secondEntities] = await datastore.runQuery(secondQ); - assert.strictEqual(secondEntities!.length, 3); - assert.strictEqual(secondEntities![0].name, 'Sansa'); - assert.strictEqual(secondEntities![2].name, 'Arya'); - }); + transaction.save([ + { + key, + data: {rating: 10}, + }, + { + key: incompleteKey, + data: {rating: 100}, + }, + ]); - it('should resume from a start cursor', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .offset(2) - .limit(2) - .order('appearances'); - const [, info] = await datastore.runQuery(q); - const secondQ = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .order('appearances') - .start(info!.endCursor!); - const [secondEntities] = await datastore.runQuery(secondQ); - assert.strictEqual(secondEntities!.length, 4); - assert.strictEqual(secondEntities![0].name, 'Catelyn'); - assert.strictEqual(secondEntities![3].name, 'Arya'); - }); + await transaction.commit(); - it('should group queries', async () => { - const q = datastore - .createQuery('Character') - .hasAncestor(ancestor) - .groupBy('appearances'); - const [entities] = await datastore.runQuery(q); - assert.strictEqual(entities!.length, characters.length - 1); - }); + // Incomplete key should have been given an ID. + assert.strictEqual(incompleteKey.path.length, 2); - it('should query from the Query object', async () => { - await datastore.createQuery('Character').run(); - }); - }); - - describe('querying the datastore with an overflow data set', () => { - const keys = [ - // Paths: - ['Rickard'], - ['Rickard', 'Character', 'Eddard'], - ].map(path => { - return datastore.key(['Book', 'GoT', 'Character'].concat(path)); - }); - const characters = [ - { - name: 'Rickard', - family: 'Stark', - // eslint-disable-next-line @typescript-eslint/no-loss-of-precision - appearances: 9223372036854775807, - alive: false, - }, - { - name: 'Eddard', - family: 'Stark', - // eslint-disable-next-line @typescript-eslint/no-loss-of-precision - appearances: 9223372036854775807, - alive: false, - }, - ]; - before(async () => { - const keysToSave = keys.map((key, index) => { - return { - key, - data: characters[index], - }; - }); - await datastore.save(keysToSave); - }); - after(async () => { - await datastore.delete(keys); - }); - it('should run a sum aggregation with an overflow dataset', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: -18446744073709552000}]); - }); - it('should run an average aggregation with an overflow dataset', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: -9223372036854776000}]); - }); - }); - describe('querying the datastore with an NaN in the data set', () => { - const keys = [ - // Paths: - ['Rickard'], - ['Rickard', 'Character', 'Eddard'], - ].map(path => { - return datastore.key(['Book', 'GoT', 'Character'].concat(path)); - }); - const characters = [ - { - name: 'Rickard', - family: 'Stark', - appearances: 4, - alive: false, - }, - { - name: 'Eddard', - family: 'Stark', - appearances: null, - alive: false, - }, - ]; - before(async () => { - const keysToSave = keys.map((key, index) => { - return { - key, - data: characters[index], - }; - }); - await datastore.save(keysToSave); - }); - after(async () => { - await datastore.delete(keys); - }); - it('should run a sum aggregation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.sum('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 4}]); - }); - it('should run an average aggregation', async () => { - const q = datastore.createQuery('Character'); - const aggregate = datastore - .createAggregationQuery(q) - .addAggregation(AggregateField.average('appearances')); - const [results] = await datastore.runAggregationQuery(aggregate); - assert.deepStrictEqual(results, [{property_1: 4}]); - }); - }); - describe('transactions', () => { - it('should run in a transaction', async () => { - const key = datastore.key(['Company', 'Google']); - const obj = { - url: 'www.google.com', - }; - const transaction = datastore.transaction(); - await transaction.run(); - await transaction.get(key); - transaction.save({key, data: obj}); - await transaction.commit(); - const [entity] = await datastore.get(key); - delete entity[datastore.KEY]; - assert.deepStrictEqual(entity, obj); - }); + const [[deletedEntity], [fetchedEntity]] = await Promise.all([ + // Deletes the key that is in the deletion queue. + datastore.get(deleteKey), + // Updates data on the key. + datastore.get(key), + ]); + assert.strictEqual(typeof deletedEntity, 'undefined'); + assert.strictEqual(fetchedEntity.rating, 10); + }); - it('should commit all saves and deletes at the end', async () => { - const deleteKey = datastore.key(['Company', 'Subway']); - const key = datastore.key(['Company', 'Google']); - const incompleteKey = datastore.key('Company'); + it('should use the last modification to a key', async () => { + const incompleteKey = datastore.key('Company'); + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction(); + await transaction.run(); + transaction.save([ + { + key, + data: { + rating: 10, + }, + }, + { + key: incompleteKey, + data: { + rating: 100, + }, + }, + ]); + transaction.delete(key); + await transaction.commit(); - await datastore.save({ - key: deleteKey, - data: {}, - }); - const transaction = datastore.transaction(); - - await transaction.run(); - transaction.delete(deleteKey); - - transaction.save([ - { - key, - data: {rating: 10}, - }, - { - key: incompleteKey, - data: {rating: 100}, - }, - ]); - - await transaction.commit(); - - // Incomplete key should have been given an ID. - assert.strictEqual(incompleteKey.path.length, 2); - - const [[deletedEntity], [fetchedEntity]] = await Promise.all([ - // Deletes the key that is in the deletion queue. - datastore.get(deleteKey), - // Updates data on the key. - datastore.get(key), - ]); - assert.strictEqual(typeof deletedEntity, 'undefined'); - assert.strictEqual(fetchedEntity.rating, 10); - }); + // Should not return a result. + const [entity] = await datastore.get(key); + assert.strictEqual(entity, undefined); - it('should use the last modification to a key', async () => { - const incompleteKey = datastore.key('Company'); - const key = datastore.key(['Company', 'Google']); - const transaction = datastore.transaction(); - await transaction.run(); - transaction.save([ - { - key, - data: { - rating: 10, - }, - }, - { - key: incompleteKey, - data: { - rating: 100, - }, - }, - ]); - transaction.delete(key); - await transaction.commit(); + // Incomplete key should have been given an id. + assert.strictEqual(incompleteKey.path.length, 2); + }); - // Should not return a result. - const [entity] = await datastore.get(key); - assert.strictEqual(entity, undefined); + it('should query within a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + let entities; + try { + [entities] = await query.run(); + } catch (e) { + await transaction.rollback(); + return; + } + assert(entities!.length > 0); + await transaction.commit(); + }); - // Incomplete key should have been given an id. - assert.strictEqual(incompleteKey.path.length, 2); - }); + describe('aggregate query within a transaction', async () => { + it('should aggregate query within a count transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail( + 'The aggregation query run should have been successful' + ); + } + assert.deepStrictEqual(result, [{total: 2}]); + await transaction.commit(); + }); + it('should aggregate query within a sum transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .sum('rating', 'total rating'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail( + 'The aggregation query run should have been successful' + ); + } + assert.deepStrictEqual(result, [{'total rating': 200}]); + await transaction.commit(); + }); + it('should aggregate query within a average transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .average('rating', 'average rating'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail( + 'The aggregation query run should have been successful' + ); + } + assert.deepStrictEqual(result, [{'average rating': 100}]); + await transaction.commit(); + }); + }); - it('should query within a transaction', async () => { - const transaction = datastore.transaction(); - await transaction.run(); - const query = transaction.createQuery('Company'); - let entities; - try { - [entities] = await query.run(); - } catch (e) { - await transaction.rollback(); - return; - } - assert(entities!.length > 0); - await transaction.commit(); - }); + it('should read in a readOnly transaction', async () => { + const transaction = datastore.transaction({readOnly: true}); + const key = datastore.key(['Company', 'Google']); + await transaction.run(); + await transaction.get(key); + }); - describe('aggregate query within a transaction', async () => { - it('should aggregate query within a count transaction', async () => { - const transaction = datastore.transaction(); - await transaction.run(); - const query = transaction.createQuery('Company'); - const aggregateQuery = transaction - .createAggregationQuery(query) - .count('total'); - let result; - try { - [result] = await aggregateQuery.run(); - } catch (e) { - await transaction.rollback(); - assert.fail('The aggregation query run should have been successful'); - } - assert.deepStrictEqual(result, [{total: 2}]); - await transaction.commit(); - }); - it('should aggregate query within a sum transaction', async () => { - const transaction = datastore.transaction(); - await transaction.run(); - const query = transaction.createQuery('Company'); - const aggregateQuery = transaction - .createAggregationQuery(query) - .sum('rating', 'total rating'); - let result; - try { - [result] = await aggregateQuery.run(); - } catch (e) { - await transaction.rollback(); - assert.fail('The aggregation query run should have been successful'); - } - assert.deepStrictEqual(result, [{'total rating': 200}]); - await transaction.commit(); - }); - it('should aggregate query within a average transaction', async () => { - const transaction = datastore.transaction(); - await transaction.run(); - const query = transaction.createQuery('Company'); - const aggregateQuery = transaction - .createAggregationQuery(query) - .average('rating', 'average rating'); - let result; - try { - [result] = await aggregateQuery.run(); - } catch (e) { - await transaction.rollback(); - assert.fail('The aggregation query run should have been successful'); - } - assert.deepStrictEqual(result, [{'average rating': 100}]); - await transaction.commit(); + it('should not write in a readOnly transaction', async () => { + const transaction = datastore.transaction({readOnly: true}); + const key = datastore.key(['Company', 'Google']); + await transaction.run(); + await transaction.get(key); + transaction.save({key, data: {}}); + await assert.rejects(transaction.commit()); + }); }); - }); - it('should read in a readOnly transaction', async () => { - const transaction = datastore.transaction({readOnly: true}); - const key = datastore.key(['Company', 'Google']); - await transaction.run(); - await transaction.get(key); - }); + describe('indexes', () => { + // @TODO: Until the protos support creating indexes, these tests depend on + // the remote state of declared indexes. Could be flaky! + it('should get all indexes', async () => { + const [indexes] = await datastore.getIndexes(); + assert.ok( + indexes.length >= DECLARED_INDEXES.length, + 'has at least the number of indexes per system-test/data/index.yaml' + ); - it('should not write in a readOnly transaction', async () => { - const transaction = datastore.transaction({readOnly: true}); - const key = datastore.key(['Company', 'Google']); - await transaction.run(); - await transaction.get(key); - transaction.save({key, data: {}}); - await assert.rejects(transaction.commit()); - }); - }); - - describe('indexes', () => { - // @TODO: Until the protos support creating indexes, these tests depend on - // the remote state of declared indexes. Could be flaky! - it('should get all indexes', async () => { - const [indexes] = await datastore.getIndexes(); - assert.ok( - indexes.length >= DECLARED_INDEXES.length, - 'has at least the number of indexes per system-test/data/index.yaml' - ); - - // Comparing index.yaml and the actual defined index in Datastore requires - // assumptions to complete a shape transformation, so let's just see if - // a returned index has the right shape and not inspect the values. - const [firstIndex] = indexes; - - assert.ok(firstIndex, 'first index is readable'); - assert.ok(firstIndex.metadata!.properties, 'has properties collection'); - assert.ok( - firstIndex.metadata!.properties.length, - 'with properties inside' - ); - assert.ok(firstIndex.metadata!.ancestor, 'has the ancestor property'); - }); + // Comparing index.yaml and the actual defined index in Datastore requires + // assumptions to complete a shape transformation, so let's just see if + // a returned index has the right shape and not inspect the values. + const [firstIndex] = indexes; + + assert.ok(firstIndex, 'first index is readable'); + assert.ok( + firstIndex.metadata!.properties, + 'has properties collection' + ); + assert.ok( + firstIndex.metadata!.properties.length, + 'with properties inside' + ); + assert.ok(firstIndex.metadata!.ancestor, 'has the ancestor property'); + }); - it('should get all indexes as a stream', done => { - const indexes: Index[] = []; + it('should get all indexes as a stream', done => { + const indexes: Index[] = []; - datastore - .getIndexesStream() - .on('error', done) - .on('data', index => { - indexes.push(index); - }) - .on('end', () => { - assert(indexes.length >= DECLARED_INDEXES.length); - done(); + datastore + .getIndexesStream() + .on('error', done) + .on('data', index => { + indexes.push(index); + }) + .on('end', () => { + assert(indexes.length >= DECLARED_INDEXES.length); + done(); + }); }); - }); - it('should get a specific index', async () => { - const [indexes] = await datastore.getIndexes(); - const [firstIndex] = indexes; - - const index = datastore.index(firstIndex.id); - const [metadata] = await index.getMetadata(); - assert.deepStrictEqual( - metadata, - firstIndex.metadata, - 'asked index is the same as received index' - ); - }); - }); - - describe('importing and exporting entities', () => { - const gcs = new Storage(); - const bucket = gcs.bucket('nodejs-datastore-system-tests'); - - const delay = async (test: Mocha.Context) => { - const retries = test.currentRetry(); - if (retries === 0) return; // no retry on the first failure. - // see: https://cloud.google.com/storage/docs/exponential-backoff: - const ms = Math.pow(2, retries) * 500 + Math.random() * 1000; - return new Promise(done => { - console.info(`retrying "${test.title}" in ${ms}ms`); - setTimeout(done, ms); + it('should get a specific index', async () => { + const [indexes] = await datastore.getIndexes(); + const [firstIndex] = indexes; + + const index = datastore.index(firstIndex.id); + const [metadata] = await index.getMetadata(); + assert.deepStrictEqual( + metadata, + firstIndex.metadata, + 'asked index is the same as received index' + ); + }); }); - }; - it('should export, then import entities', async function () { - this.retries(3); - delay(this); - const [exportOperation] = await datastore.export({bucket}); - await exportOperation.promise(); + describe('importing and exporting entities', () => { + const gcs = new Storage(); + const bucket = gcs.bucket('nodejs-datastore-system-tests'); - const [files] = await bucket.getFiles({maxResults: 1}); - const [exportedFile] = files; - assert.ok(exportedFile.name.includes('overall_export_metadata')); + const delay = async (test: Mocha.Context) => { + const retries = test.currentRetry(); + if (retries === 0) return; // no retry on the first failure. + // see: https://cloud.google.com/storage/docs/exponential-backoff: + const ms = Math.pow(2, retries) * 500 + Math.random() * 1000; + return new Promise(done => { + console.info(`retrying "${test.title}" in ${ms}ms`); + setTimeout(done, ms); + }); + }; - const [importOperation] = await datastore.import({ - file: exportedFile, - }); + it('should export, then import entities', async function () { + this.retries(3); + delay(this); + const [exportOperation] = await datastore.export({bucket}); + await exportOperation.promise(); - // This is a >20 minute operation, so we're just going to make sure the - // right type of operation was started. - assert.strictEqual( - ( - importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata - ).inputUrl, - `gs://${exportedFile.bucket.name}/${exportedFile.name}` - ); + const [files] = await bucket.getFiles({maxResults: 1}); + const [exportedFile] = files; + assert.ok(exportedFile.name.includes('overall_export_metadata')); - await importOperation.cancel(); - }); - }); + const [importOperation] = await datastore.import({ + file: exportedFile, + }); + + // This is a >20 minute operation, so we're just going to make sure the + // right type of operation was started. + assert.strictEqual( + ( + importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata + ).inputUrl, + `gs://${exportedFile.bucket.name}/${exportedFile.name}` + ); - describe('using a custom endpoint', () => { - it('should complete a request when using the default endpoint as a custom endpoint', async () => { - const customDatastore = new Datastore({ - namespace: `${Date.now()}`, - apiEndpoint: 'datastore.googleapis.com', + await importOperation.cancel(); + }); + }); + + describe('using a custom endpoint', () => { + it('should complete a request when using the default endpoint as a custom endpoint', async () => { + const customDatastore = new Datastore({ + namespace: `${Date.now()}`, + apiEndpoint: 'datastore.googleapis.com', + }); + const query = customDatastore.createQuery('Kind').select('__key__'); + const [entities] = await customDatastore.runQuery(query); + assert.strictEqual(entities.length, 0); + }); }); - const query = customDatastore.createQuery('Kind').select('__key__'); - const [entities] = await customDatastore.runQuery(query); - assert.strictEqual(entities.length, 0); }); - }); -}); + } +); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index c6a4481bd3e..f0bfae0da22 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -19,12 +19,13 @@ import * as proxyquire from 'proxyquire'; import {PassThrough, Readable} from 'stream'; import * as ds from '../src'; -import {DatastoreOptions} from '../src'; +import {Datastore, DatastoreOptions} from '../src'; import {entity, Entity, EntityProto, EntityObject} from '../src/entity'; import {RequestConfig} from '../src/request'; import * as is from 'is'; import * as sinon from 'sinon'; import * as extend from 'extend'; +const async = require('async'); // eslint-disable-next-line @typescript-eslint/no-var-requires const v1 = require('../src/v1/index.js'); @@ -91,6 +92,10 @@ function fakeGoogleAuth(...args: Array<{}>) { let createInsecureOverride: Function | null; +const SECOND_DATABASE_ID = 'multidb-test'; + +export {SECOND_DATABASE_ID}; + const fakeGoogleGax = { GoogleAuth: fakeGoogleAuth, GrpcClient: class extends gax.GrpcClient { @@ -139,2015 +144,2060 @@ function FakeV1() {} const sandbox = sinon.createSandbox(); -describe('Datastore', () => { - let Datastore: typeof ds.Datastore; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let datastore: any; - - const PROJECT_ID = 'project-id'; - const NAMESPACE = 'namespace'; - - const DATASTORE_PROJECT_ID_CACHED = process.env.DATASTORE_PROJECT_ID; - - const OPTIONS = { - projectId: PROJECT_ID, - apiEndpoint: 'http://localhost', - credentials: {}, - keyFilename: 'key/file', - email: 'email', - namespace: NAMESPACE, - }; - - before(() => { - Object.assign(fakeEntity, fakeEntityInit); - Datastore = proxyquire('../src', { - './entity.js': {entity: fakeEntity}, - './index-class.js': {Index: FakeIndex}, - './query.js': {Query: FakeQuery}, - './transaction.js': {Transaction: FakeTransaction}, - './v1': FakeV1, - 'google-auth-library': { - GoogleAuth: fakeGoogleAuth, - }, - 'google-gax': fakeGoogleGax, - }).Datastore; - }); - - beforeEach(() => { - Object.assign(fakeEntity, fakeEntityInit); - - createInsecureOverride = null; - googleAuthOverride = null; - - datastore = new Datastore({ - projectId: PROJECT_ID, - namespace: NAMESPACE, - }); - }); - - afterEach(() => { - if (typeof DATASTORE_PROJECT_ID_CACHED === 'string') { - process.env.DATASTORE_PROJECT_ID = DATASTORE_PROJECT_ID_CACHED; - } else { - delete process.env.DATASTORE_PROJECT_ID; - } - }); +async.each( + [ + {namespace: `${Date.now()}`}, + {namespace: `second-db-${Date.now()}`, databaseId: SECOND_DATABASE_ID}, + ], + (clientOptions: DatastoreOptions) => { + describe('Datastore', () => { + let Datastore: typeof ds.Datastore; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let datastore: any; + + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'namespace'; + + const DATASTORE_PROJECT_ID_CACHED = process.env.DATASTORE_PROJECT_ID; + + const DEFAULT_OPTIONS = { + projectId: PROJECT_ID, + apiEndpoint: 'http://localhost', + credentials: {}, + keyFilename: 'key/file', + email: 'email', + namespace: NAMESPACE, + }; + + const OPTIONS = Object.assign(DEFAULT_OPTIONS, clientOptions); + + before(() => { + Object.assign(fakeEntity, fakeEntityInit); + Datastore = proxyquire('../src', { + './entity.js': {entity: fakeEntity}, + './index-class.js': {Index: FakeIndex}, + './query.js': {Query: FakeQuery}, + './transaction.js': {Transaction: FakeTransaction}, + './v1': FakeV1, + 'google-auth-library': { + GoogleAuth: fakeGoogleAuth, + }, + 'google-gax': fakeGoogleGax, + }).Datastore; + }); - after(() => { - createInsecureOverride = null; - googleAuthOverride = null; - }); + beforeEach(() => { + Object.assign(fakeEntity, fakeEntityInit); - it('should export GAX client', () => { - assert.ok(require('../src').v1); - }); + createInsecureOverride = null; + googleAuthOverride = null; - describe('instantiation', () => { - it('should initialize an empty Client map', () => { - assert(datastore.clients_ instanceof Map); - assert.strictEqual(datastore.clients_.size, 0); - }); + datastore = new Datastore({ + projectId: PROJECT_ID, + namespace: NAMESPACE, + }); + }); - it('should alias itself to the datastore property', () => { - assert.strictEqual(datastore.datastore, datastore); - }); + afterEach(() => { + if (typeof DATASTORE_PROJECT_ID_CACHED === 'string') { + process.env.DATASTORE_PROJECT_ID = DATASTORE_PROJECT_ID_CACHED; + } else { + delete process.env.DATASTORE_PROJECT_ID; + } + }); - it('should localize the namespace', () => { - assert.strictEqual(datastore.namespace, NAMESPACE); - }); + after(() => { + createInsecureOverride = null; + googleAuthOverride = null; + }); - it('should localize the projectId', () => { - assert.strictEqual(datastore.options.projectId, PROJECT_ID); - }); + it('should export GAX client', () => { + assert.ok(require('../src').v1); + }); - it('should not default options.projectId to placeholder', () => { - const datastore = new Datastore({}); - assert.strictEqual(datastore.options.projectId, undefined); - }); + describe('instantiation', () => { + it('should initialize an empty Client map', () => { + assert(datastore.clients_ instanceof Map); + assert.strictEqual(datastore.clients_.size, 0); + }); - it('should use DATASTORE_PROJECT_ID', () => { - const projectId = 'overridden-project-id'; - process.env.DATASTORE_PROJECT_ID = projectId; - const datastore = new Datastore({}); - assert.strictEqual(datastore.options.projectId, projectId); - }); + it('should alias itself to the datastore property', () => { + assert.strictEqual(datastore.datastore, datastore); + }); - it('should set the default base URL', () => { - assert.strictEqual(datastore.defaultBaseUrl_, 'datastore.googleapis.com'); - }); + it('should localize the namespace', () => { + assert.strictEqual(datastore.namespace, NAMESPACE); + }); - it('should set default API connection details', done => { - const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + it('should localize the projectId', () => { + assert.strictEqual(datastore.options.projectId, PROJECT_ID); + }); - Datastore.prototype.determineBaseUrl_ = customApiEndpoint => { - Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; + it('should not default options.projectId to placeholder', () => { + const datastore = new Datastore({}); + assert.strictEqual(datastore.options.projectId, undefined); + }); - assert.strictEqual(customApiEndpoint, OPTIONS.apiEndpoint); - done(); - }; + it('should use DATASTORE_PROJECT_ID', () => { + const projectId = 'overridden-project-id'; + process.env.DATASTORE_PROJECT_ID = projectId; + const datastore = new Datastore({}); + assert.strictEqual(datastore.options.projectId, projectId); + }); - new Datastore(OPTIONS); - }); + it('should set the default base URL', () => { + assert.strictEqual( + datastore.defaultBaseUrl_, + 'datastore.googleapis.com' + ); + }); - it('should localize the options', () => { - delete process.env.DATASTORE_PROJECT_ID; + it('should set default API connection details', done => { + const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - const options = { - a: 'b', - c: 'd', - } as DatastoreOptions; + Datastore.prototype.determineBaseUrl_ = customApiEndpoint => { + Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; - const datastore = new Datastore(options); + assert.strictEqual(customApiEndpoint, OPTIONS.apiEndpoint); + done(); + }; - assert.notStrictEqual(datastore.options, options); + new Datastore(OPTIONS); + }); - assert.deepStrictEqual( - datastore.options, - Object.assign( - { - libName: 'gccl', - libVersion: require('../../package.json').version, - scopes: v1.DatastoreClient.scopes, - servicePath: datastore.baseUrl_, - port: 443, - projectId: undefined, - }, - options - ) - ); - }); + it('should localize the options', () => { + delete process.env.DATASTORE_PROJECT_ID; - it('should set port if detected', () => { - const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; - const port = 99; - Datastore.prototype.determineBaseUrl_ = function () { - Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; - this.port_ = port; - }; - const datastore = new Datastore(OPTIONS); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - assert.strictEqual((datastore.options as any).port, port); - }); + const options = { + a: 'b', + c: 'd', + } as DatastoreOptions; - it('should set grpc ssl credentials if localhost custom endpoint', () => { - const fakeInsecureCreds = {}; - createInsecureOverride = () => { - return fakeInsecureCreds; - }; + const datastore = new Datastore(options); - const datastore = new Datastore(OPTIONS); + assert.notStrictEqual(datastore.options, options); - assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); - }); + assert.deepStrictEqual( + datastore.options, + Object.assign( + { + libName: 'gccl', + libVersion: require('../../package.json').version, + scopes: v1.DatastoreClient.scopes, + servicePath: datastore.baseUrl_, + port: 443, + projectId: undefined, + }, + options + ) + ); + }); - it('should cache a local GoogleAuth instance', () => { - const fakeGoogleAuthInstance = {}; + it('should set port if detected', () => { + const determineBaseUrl_ = Datastore.prototype.determineBaseUrl_; + const port = 99; + Datastore.prototype.determineBaseUrl_ = function () { + Datastore.prototype.determineBaseUrl_ = determineBaseUrl_; + this.port_ = port; + }; + const datastore = new Datastore(OPTIONS); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + assert.strictEqual((datastore.options as any).port, port); + }); - googleAuthOverride = () => { - return fakeGoogleAuthInstance; - }; + it('should set grpc ssl credentials if localhost custom endpoint', () => { + const fakeInsecureCreds = {}; + createInsecureOverride = () => { + return fakeInsecureCreds; + }; - const datastore = new Datastore({}); - assert.strictEqual(datastore.auth, fakeGoogleAuthInstance); - }); - }); + const datastore = new Datastore(OPTIONS); - describe('double', () => { - it('should expose Double builder', () => { - const aDouble = 7.0; - const double = Datastore.double(aDouble); - assert.strictEqual(double.value, aDouble); - }); + assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); + }); - it('should also be on the prototype', () => { - const aDouble = 7.0; - const double = datastore.double(aDouble); - assert.strictEqual(double.value, aDouble); - }); - }); + it('should cache a local GoogleAuth instance', () => { + const fakeGoogleAuthInstance = {}; - describe('geoPoint', () => { - it('should expose GeoPoint builder', () => { - const aGeoPoint = {latitude: 24, longitude: 88}; - const geoPoint = Datastore.geoPoint(aGeoPoint); - assert.strictEqual(geoPoint.value, aGeoPoint); - }); + googleAuthOverride = () => { + return fakeGoogleAuthInstance; + }; - it('should also be on the prototype', () => { - const aGeoPoint = {latitude: 24, longitude: 88}; - const geoPoint = datastore.geoPoint(aGeoPoint); - assert.strictEqual(geoPoint.value, aGeoPoint); - }); - }); + const datastore = new Datastore({}); + assert.strictEqual(datastore.auth, fakeGoogleAuthInstance); + }); + }); - describe('int', () => { - it('should expose Int builder', () => { - const anInt = 7; - const int = Datastore.int(anInt); - assert.strictEqual(int.value, anInt); - }); + describe('double', () => { + it('should expose Double builder', () => { + const aDouble = 7.0; + const double = Datastore.double(aDouble); + assert.strictEqual(double.value, aDouble); + }); - it('should also be on the prototype', () => { - const anInt = 7; - const int = datastore.int(anInt); - assert.strictEqual(int.value, anInt); - }); - }); - - describe('isDouble', () => { - it('should pass value to entity', () => { - const value = 0.42; - let called = false; - const saved = fakeEntity.isDsDouble; - fakeEntity.isDsDouble = (arg: {}) => { - assert.strictEqual(arg, value); - called = true; - return false; - }; - assert.strictEqual(datastore.isDouble(value), false); - assert.strictEqual(called, true); - fakeEntity.isDsDouble = saved; - }); + it('should also be on the prototype', () => { + const aDouble = 7.0; + const double = datastore.double(aDouble); + assert.strictEqual(double.value, aDouble); + }); + }); - it('should expose Double identifier', () => { - const something = {}; - Datastore.isDouble(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - }); - - describe('isGeoPoint', () => { - it('should pass value to entity', () => { - const value = {fakeLatitude: 1, fakeLongitude: 2}; - let called = false; - const saved = fakeEntity.isDsGeoPoint; - fakeEntity.isDsGeoPoint = (arg: {}) => { - assert.strictEqual(arg, value); - called = true; - return false; - }; - assert.strictEqual(datastore.isGeoPoint(value), false); - assert.strictEqual(called, true); - fakeEntity.isDsGeoPoint = saved; - }); + describe('geoPoint', () => { + it('should expose GeoPoint builder', () => { + const aGeoPoint = {latitude: 24, longitude: 88}; + const geoPoint = Datastore.geoPoint(aGeoPoint); + assert.strictEqual(geoPoint.value, aGeoPoint); + }); - it('should expose GeoPoint identifier', () => { - const something = {}; - Datastore.isGeoPoint(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - }); - - describe('isInt', () => { - it('should pass value to entity', () => { - const value = 42; - let called = false; - const saved = fakeEntity.isDsInt; - fakeEntity.isDsInt = (arg: {}) => { - assert.strictEqual(arg, value); - called = true; - return false; - }; - assert.strictEqual(datastore.isInt(value), false); - assert.strictEqual(called, true); - fakeEntity.isDsInt = saved; - }); + it('should also be on the prototype', () => { + const aGeoPoint = {latitude: 24, longitude: 88}; + const geoPoint = datastore.geoPoint(aGeoPoint); + assert.strictEqual(geoPoint.value, aGeoPoint); + }); + }); - it('should expose Int identifier', () => { - const something = {}; - Datastore.isInt(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - }); - - describe('isKey', () => { - it('should pass value to entity', () => { - const value = {zz: true}; - let called = false; - const saved = fakeEntity.isDsKey; - fakeEntity.isDsKey = (arg: {}) => { - assert.strictEqual(arg, value); - called = true; - return false; - }; - assert.strictEqual(datastore.isKey(value), false); - assert.strictEqual(called, true); - fakeEntity.isDsKey = saved; - }); + describe('int', () => { + it('should expose Int builder', () => { + const anInt = 7; + const int = Datastore.int(anInt); + assert.strictEqual(int.value, anInt); + }); - it('should expose Key identifier', () => { - const something = {}; - datastore.isKey(something); - assert.strictEqual(fakeEntity.calledWith_[0], something); - }); - }); + it('should also be on the prototype', () => { + const anInt = 7; + const int = datastore.int(anInt); + assert.strictEqual(int.value, anInt); + }); + }); - describe('KEY', () => { - it('should expose the KEY symbol', () => { - assert.strictEqual(Datastore.KEY, fakeEntity.KEY_SYMBOL); - }); + describe('isDouble', () => { + it('should pass value to entity', () => { + const value = 0.42; + let called = false; + const saved = fakeEntity.isDsDouble; + fakeEntity.isDsDouble = (arg: {}) => { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isDouble(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsDouble = saved; + }); - it('should also be on the prototype', () => { - assert.strictEqual(datastore.KEY, Datastore.KEY); - }); - }); - - describe('MORE_RESULTS_AFTER_CURSOR', () => { - it('should expose a MORE_RESULTS_AFTER_CURSOR helper', () => { - assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_CURSOR, - 'MORE_RESULTS_AFTER_CURSOR' - ); - }); + it('should expose Double identifier', () => { + const something = {}; + Datastore.isDouble(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); - it('should also be on the prototype', () => { - assert.strictEqual( - datastore.MORE_RESULTS_AFTER_CURSOR, - Datastore.MORE_RESULTS_AFTER_CURSOR - ); - }); - }); - - describe('MORE_RESULTS_AFTER_LIMIT', () => { - it('should expose a MORE_RESULTS_AFTER_LIMIT helper', () => { - assert.strictEqual( - Datastore.MORE_RESULTS_AFTER_LIMIT, - 'MORE_RESULTS_AFTER_LIMIT' - ); - }); + describe('isGeoPoint', () => { + it('should pass value to entity', () => { + const value = {fakeLatitude: 1, fakeLongitude: 2}; + let called = false; + const saved = fakeEntity.isDsGeoPoint; + fakeEntity.isDsGeoPoint = (arg: {}) => { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isGeoPoint(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsGeoPoint = saved; + }); - it('should also be on the prototype', () => { - assert.strictEqual( - datastore.MORE_RESULTS_AFTER_LIMIT, - Datastore.MORE_RESULTS_AFTER_LIMIT - ); - }); - }); + it('should expose GeoPoint identifier', () => { + const something = {}; + Datastore.isGeoPoint(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); - describe('NO_MORE_RESULTS', () => { - it('should expose a NO_MORE_RESULTS helper', () => { - assert.strictEqual(Datastore.NO_MORE_RESULTS, 'NO_MORE_RESULTS'); - }); + describe('isInt', () => { + it('should pass value to entity', () => { + const value = 42; + let called = false; + const saved = fakeEntity.isDsInt; + fakeEntity.isDsInt = (arg: {}) => { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isInt(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsInt = saved; + }); - it('should also be on the prototype', () => { - assert.strictEqual(datastore.NO_MORE_RESULTS, Datastore.NO_MORE_RESULTS); - }); - }); + it('should expose Int identifier', () => { + const something = {}; + Datastore.isInt(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); - describe('createQuery', () => { - it('should return a Query object', () => { - const namespace = 'namespace'; - const kind = ['Kind']; + describe('isKey', () => { + it('should pass value to entity', () => { + const value = {zz: true}; + let called = false; + const saved = fakeEntity.isDsKey; + fakeEntity.isDsKey = (arg: {}) => { + assert.strictEqual(arg, value); + called = true; + return false; + }; + assert.strictEqual(datastore.isKey(value), false); + assert.strictEqual(called, true); + fakeEntity.isDsKey = saved; + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const query: any = datastore.createQuery(namespace, kind); - assert(query instanceof FakeQuery); + it('should expose Key identifier', () => { + const something = {}; + datastore.isKey(something); + assert.strictEqual(fakeEntity.calledWith_[0], something); + }); + }); - assert.strictEqual(query.calledWith_[0], datastore); - assert.strictEqual(query.calledWith_[1], namespace); - assert.deepStrictEqual(query.calledWith_[2], kind); - }); + describe('KEY', () => { + it('should expose the KEY symbol', () => { + assert.strictEqual(Datastore.KEY, fakeEntity.KEY_SYMBOL); + }); - it('should include the default namespace', () => { - const kind = ['Kind']; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const query: any = datastore.createQuery(kind); - assert.strictEqual(query.calledWith_[0], datastore); - assert.strictEqual(query.calledWith_[1], datastore.namespace); - assert.deepStrictEqual(query.calledWith_[2], kind); - }); + it('should also be on the prototype', () => { + assert.strictEqual(datastore.KEY, Datastore.KEY); + }); + }); - it('should include the default namespace in a kindless query', () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const query: any = datastore.createQuery(); - assert.strictEqual(query.calledWith_[0], datastore); - assert.strictEqual(query.calledWith_[1], datastore.namespace); - assert.deepStrictEqual(query.calledWith_[2], []); - }); - }); + describe('MORE_RESULTS_AFTER_CURSOR', () => { + it('should expose a MORE_RESULTS_AFTER_CURSOR helper', () => { + assert.strictEqual( + Datastore.MORE_RESULTS_AFTER_CURSOR, + 'MORE_RESULTS_AFTER_CURSOR' + ); + }); - describe('export', () => { - it('should accept a bucket string destination', done => { - const bucket = 'bucket'; + it('should also be on the prototype', () => { + assert.strictEqual( + datastore.MORE_RESULTS_AFTER_CURSOR, + Datastore.MORE_RESULTS_AFTER_CURSOR + ); + }); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.outputUrlPrefix, `gs://${bucket}`); - done(); - }; + describe('MORE_RESULTS_AFTER_LIMIT', () => { + it('should expose a MORE_RESULTS_AFTER_LIMIT helper', () => { + assert.strictEqual( + Datastore.MORE_RESULTS_AFTER_LIMIT, + 'MORE_RESULTS_AFTER_LIMIT' + ); + }); - datastore.export({bucket}, assert.ifError); - }); + it('should also be on the prototype', () => { + assert.strictEqual( + datastore.MORE_RESULTS_AFTER_LIMIT, + Datastore.MORE_RESULTS_AFTER_LIMIT + ); + }); + }); - it('should remove extraneous gs:// prefix from input', done => { - const bucket = 'gs://bucket'; + describe('NO_MORE_RESULTS', () => { + it('should expose a NO_MORE_RESULTS helper', () => { + assert.strictEqual(Datastore.NO_MORE_RESULTS, 'NO_MORE_RESULTS'); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.outputUrlPrefix, `${bucket}`); - done(); - }; + it('should also be on the prototype', () => { + assert.strictEqual( + datastore.NO_MORE_RESULTS, + Datastore.NO_MORE_RESULTS + ); + }); + }); - datastore.export({bucket}, assert.ifError); - }); + describe('createQuery', () => { + it('should return a Query object', () => { + const namespace = 'namespace'; + const kind = ['Kind']; - it('should accept a Bucket object destination', done => { - const bucket = {name: 'bucket'}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const query: any = datastore.createQuery(namespace, kind); + assert(query instanceof FakeQuery); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual( - config.reqOpts.outputUrlPrefix, - `gs://${bucket.name}` - ); - done(); - }; + assert.strictEqual(query.calledWith_[0], datastore); + assert.strictEqual(query.calledWith_[1], namespace); + assert.deepStrictEqual(query.calledWith_[2], kind); + }); - datastore.export({bucket}, assert.ifError); - }); + it('should include the default namespace', () => { + const kind = ['Kind']; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const query: any = datastore.createQuery(kind); + assert.strictEqual(query.calledWith_[0], datastore); + assert.strictEqual(query.calledWith_[1], datastore.namespace); + assert.deepStrictEqual(query.calledWith_[2], kind); + }); - it('should throw if a destination is not provided', () => { - assert.throws(() => { - datastore.export({}, assert.ifError); - }, /A Bucket object or URL must be provided\./); - }); + it('should include the default namespace in a kindless query', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const query: any = datastore.createQuery(); + assert.strictEqual(query.calledWith_[0], datastore); + assert.strictEqual(query.calledWith_[1], datastore.namespace); + assert.deepStrictEqual(query.calledWith_[2], []); + }); + }); - it('should throw if bucket and outputUrlPrefix are provided', () => { - assert.throws(() => { - datastore.export( - { - bucket: 'bucket', - outputUrlPrefix: 'output-url-prefix', - }, - assert.ifError - ); - }, /Both `bucket` and `outputUrlPrefix` were provided\./); - }); + describe('export', () => { + it('should accept a bucket string destination', done => { + const bucket = 'bucket'; - it('should accept kinds', done => { - const kinds = ['kind1', 'kind2']; - const config = {bucket: 'bucket', kinds}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.outputUrlPrefix, + `gs://${bucket}` + ); + done(); + }; + + datastore.export({bucket}, assert.ifError); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); - done(); - }; + it('should remove extraneous gs:// prefix from input', done => { + const bucket = 'gs://bucket'; - datastore.export(config, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.outputUrlPrefix, `${bucket}`); + done(); + }; - it('should throw if both kinds and entityFilter are provided', () => { - assert.throws(() => { - datastore.export( - { - bucket: 'bucket', - kinds: ['kind1', 'kind2'], - entityFilter: {}, - }, - assert.ifError - ); - }, /Both `entityFilter` and `kinds` were provided\./); - }); + datastore.export({bucket}, assert.ifError); + }); - it('should accept namespaces', done => { - const namespaces = ['ns1', 'n2']; - const config = {bucket: 'bucket', namespaces}; + it('should accept a Bucket object destination', done => { + const bucket = {name: 'bucket'}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.deepStrictEqual( - config.reqOpts.entityFilter.namespaceIds, - namespaces - ); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.outputUrlPrefix, + `gs://${bucket.name}` + ); + done(); + }; + + datastore.export({bucket}, assert.ifError); + }); - datastore.export(config, assert.ifError); - }); + it('should throw if a destination is not provided', () => { + assert.throws(() => { + datastore.export({}, assert.ifError); + }, /A Bucket object or URL must be provided\./); + }); - it('should throw if both namespaces and entityFilter are provided', () => { - assert.throws(() => { - datastore.export( - { - bucket: 'bucket', - namespaces: ['ns1', 'ns2'], - entityFilter: {}, - }, - assert.ifError - ); - }, /Both `entityFilter` and `namespaces` were provided\./); - }); + it('should throw if bucket and outputUrlPrefix are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + outputUrlPrefix: 'output-url-prefix', + }, + assert.ifError + ); + }, /Both `bucket` and `outputUrlPrefix` were provided\./); + }); - it('should remove extraneous properties from request', done => { - const config = { - bucket: 'bucket', - gaxOptions: {}, - kinds: ['kind1', 'kind2'], - namespaces: ['ns1', 'ns2'], - }; + it('should accept kinds', done => { + const kinds = ['kind1', 'kind2']; + const config = {bucket: 'bucket', kinds}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(typeof config.reqOpts.bucket, 'undefined'); - assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); - assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); - assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); + done(); + }; - datastore.export(config, assert.ifError); - }); + datastore.export(config, assert.ifError); + }); - it('should send any user input to API', done => { - const userProperty = 'abc'; - const config = {bucket: 'bucket', userProperty}; + it('should throw if both kinds and entityFilter are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + kinds: ['kind1', 'kind2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `kinds` were provided\./); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.userProperty, userProperty); - done(); - }; + it('should accept namespaces', done => { + const namespaces = ['ns1', 'n2']; + const config = {bucket: 'bucket', namespaces}; - datastore.export(config, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual( + config.reqOpts.entityFilter.namespaceIds, + namespaces + ); + done(); + }; + + datastore.export(config, assert.ifError); + }); - it('should send correct request', done => { - const config = {bucket: 'bucket'}; + it('should throw if both namespaces and entityFilter are provided', () => { + assert.throws(() => { + datastore.export( + { + bucket: 'bucket', + namespaces: ['ns1', 'ns2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `namespaces` were provided\./); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.client, 'DatastoreAdminClient'); - assert.strictEqual(config.method, 'exportEntities'); - assert.strictEqual(typeof config.gaxOpts, 'undefined'); - done(); - }; + it('should remove extraneous properties from request', done => { + const config = { + bucket: 'bucket', + gaxOptions: {}, + kinds: ['kind1', 'kind2'], + namespaces: ['ns1', 'ns2'], + }; - datastore.export(config, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.bucket, 'undefined'); + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); + assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); + done(); + }; + + datastore.export(config, assert.ifError); + }); - it('should accept gaxOptions', done => { - const gaxOptions = {}; - const config = {bucket: 'bucket', gaxOptions}; + it('should send any user input to API', done => { + const userProperty = 'abc'; + const config = {bucket: 'bucket', userProperty}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.userProperty, userProperty); + done(); + }; - datastore.export(config, assert.ifError); - }); - }); + datastore.export(config, assert.ifError); + }); - describe('getIndexes', () => { - it('should send the correct request', done => { - const options = {a: 'b'}; + it('should send correct request', done => { + const config = {bucket: 'bucket'}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.client, 'DatastoreAdminClient'); - assert.strictEqual(config.method, 'listIndexes'); - assert.deepStrictEqual(config.reqOpts, { - pageSize: undefined, - pageToken: undefined, - ...options, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'exportEntities'); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + done(); + }; + + datastore.export(config, assert.ifError); }); - assert.deepStrictEqual(config.gaxOpts, {}); - done(); - }; + it('should accept gaxOptions', done => { + const gaxOptions = {}; + const config = {bucket: 'bucket', gaxOptions}; - datastore.getIndexes(options, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; - it('should locate pagination settings from gaxOptions', done => { - const options = { - gaxOptions: { - pageSize: 'size', - pageToken: 'token', - }, - }; + datastore.export(config, assert.ifError); + }); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual( - config.reqOpts.pageSize, - options.gaxOptions.pageSize - ); - assert.strictEqual( - config.reqOpts.pageToken, - options.gaxOptions.pageToken - ); - done(); - }; + describe('getIndexes', () => { + it('should send the correct request', done => { + const options = {a: 'b'}; - datastore.getIndexes(options, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'listIndexes'); + assert.deepStrictEqual(config.reqOpts, { + pageSize: undefined, + pageToken: undefined, + ...options, + }); + assert.deepStrictEqual(config.gaxOpts, {}); + + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); - it('should prefer pageSize and pageToken from options over gaxOptions', done => { - const options = { - pageSize: 'size-good', - pageToken: 'token-good', - gaxOptions: { - pageSize: 'size-bad', - pageToken: 'token-bad', - }, - }; + it('should locate pagination settings from gaxOptions', done => { + const options = { + gaxOptions: { + pageSize: 'size', + pageToken: 'token', + }, + }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.pageSize, options.pageSize); - assert.strictEqual(config.reqOpts.pageToken, options.pageToken); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.pageSize, + options.gaxOptions.pageSize + ); + assert.strictEqual( + config.reqOpts.pageToken, + options.gaxOptions.pageToken + ); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); - datastore.getIndexes(options, assert.ifError); - }); + it('should prefer pageSize and pageToken from options over gaxOptions', done => { + const options = { + pageSize: 'size-good', + pageToken: 'token-good', + gaxOptions: { + pageSize: 'size-bad', + pageToken: 'token-bad', + }, + }; - it('should remove extraneous pagination settings from request', done => { - const options = { - gaxOptions: { - pageSize: 'size', - pageToken: 'token', - }, - autoPaginate: true, - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.pageSize, options.pageSize); + assert.strictEqual(config.reqOpts.pageToken, options.pageToken); + done(); + }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(typeof config.gaxOpts.pageSize, 'undefined'); - assert.strictEqual(typeof config.gaxOpts.pageToken, 'undefined'); - assert.strictEqual(typeof config.reqOpts.autoPaginate, 'undefined'); - done(); - }; + datastore.getIndexes(options, assert.ifError); + }); - datastore.getIndexes(options, assert.ifError); - }); + it('should remove extraneous pagination settings from request', done => { + const options = { + gaxOptions: { + pageSize: 'size', + pageToken: 'token', + }, + autoPaginate: true, + }; - it('should accept gaxOptions', done => { - const options = { - gaxOptions: {a: 'b'}, - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.gaxOpts.pageSize, 'undefined'); + assert.strictEqual(typeof config.gaxOpts.pageToken, 'undefined'); + assert.strictEqual(typeof config.reqOpts.autoPaginate, 'undefined'); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); - assert.deepStrictEqual(config.gaxOpts, options.gaxOptions); - done(); - }; + it('should accept gaxOptions', done => { + const options = { + gaxOptions: {a: 'b'}, + }; - datastore.getIndexes(options, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.deepStrictEqual(config.gaxOpts, options.gaxOptions); + done(); + }; - it('should not send gaxOptions as request options', done => { - const options = { - gaxOptions: {a: 'b'}, - }; + datastore.getIndexes(options, assert.ifError); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert(Object.keys(options.gaxOptions).every(k => !config.reqOpts[k])); - done(); - }; + it('should not send gaxOptions as request options', done => { + const options = { + gaxOptions: {a: 'b'}, + }; - datastore.getIndexes(options, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert( + Object.keys(options.gaxOptions).every(k => !config.reqOpts[k]) + ); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); - it('should set autoPaginate from options', done => { - const options = { - autoPaginate: true, - }; + it('should set autoPaginate from options', done => { + const options = { + autoPaginate: true, + }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.gaxOpts.autoPaginate, options.autoPaginate); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.gaxOpts.autoPaginate, + options.autoPaginate + ); + done(); + }; + + datastore.getIndexes(options, assert.ifError); + }); - datastore.getIndexes(options, assert.ifError); - }); + it('should prefer autoPaginate from gaxOpts', done => { + const options = { + autoPaginate: false, + gaxOptions: { + autoPaginate: true, + }, + }; - it('should prefer autoPaginate from gaxOpts', done => { - const options = { - autoPaginate: false, - gaxOptions: { - autoPaginate: true, - }, - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts.autoPaginate, true); + done(); + }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.gaxOpts.autoPaginate, true); - done(); - }; + datastore.getIndexes(options, assert.ifError); + }); - datastore.getIndexes(options, assert.ifError); - }); + it('should execute callback with error and correct response arguments', done => { + const error = new Error('Error.'); + const apiResponse = {}; - it('should execute callback with error and correct response arguments', done => { - const error = new Error('Error.'); - const apiResponse = {}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(error, [], null, apiResponse); + }; + + datastore.getIndexes( + (err: Error, indexes: [], nextQuery: {}, apiResp: {}) => { + assert.strictEqual(err, error); + assert.deepStrictEqual(indexes, []); + assert.strictEqual(nextQuery, null); + assert.strictEqual(apiResp, apiResponse); + done(); + } + ); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any, callback: Function) => { - callback(error, [], null, apiResponse); - }; + it('should execute callback with Index instances', done => { + const rawIndex = {indexId: 'name', a: 'b'}; + const indexInstance = {}; - datastore.getIndexes( - (err: Error, indexes: [], nextQuery: {}, apiResp: {}) => { - assert.strictEqual(err, error); - assert.deepStrictEqual(indexes, []); - assert.strictEqual(nextQuery, null); - assert.strictEqual(apiResp, apiResponse); - done(); - } - ); - }); + datastore.index = (id: string) => { + assert.strictEqual(id, rawIndex.indexId); + return indexInstance; + }; - it('should execute callback with Index instances', done => { - const rawIndex = {indexId: 'name', a: 'b'}; - const indexInstance = {}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(null, [rawIndex]); + }; - datastore.index = (id: string) => { - assert.strictEqual(id, rawIndex.indexId); - return indexInstance; - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.getIndexes((err: Error, indexes: any[]) => { + assert.ifError(err); + assert.deepStrictEqual(indexes, [indexInstance]); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + assert.strictEqual((indexes[0] as any)!.metadata, rawIndex); + done(); + }); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any, callback: Function) => { - callback(null, [rawIndex]); - }; + it('should execute callback with prepared nextQuery', done => { + const options = {pageToken: '1'}; + const nextQuery = {pageToken: '2'}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.getIndexes((err: Error, indexes: any[]) => { - assert.ifError(err); - assert.deepStrictEqual(indexes, [indexInstance]); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - assert.strictEqual((indexes[0] as any)!.metadata, rawIndex); - done(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any, callback: Function) => { + callback(null, [], nextQuery); + }; + + datastore.getIndexes( + options, + (err: Error, indexes: [], _nextQuery: {}) => { + assert.ifError(err); + assert.deepStrictEqual(_nextQuery, nextQuery); + done(); + } + ); + }); }); - }); - - it('should execute callback with prepared nextQuery', done => { - const options = {pageToken: '1'}; - const nextQuery = {pageToken: '2'}; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any, callback: Function) => { - callback(null, [], nextQuery); - }; - datastore.getIndexes( - options, - (err: Error, indexes: [], _nextQuery: {}) => { - assert.ifError(err); - assert.deepStrictEqual(_nextQuery, nextQuery); - done(); - } - ); - }); - }); + describe('getIndexesStream', () => { + it('should make correct request', done => { + const options = {a: 'b'}; - describe('getIndexesStream', () => { - it('should make correct request', done => { - const options = {a: 'b'}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.requestStream_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'listIndexesStream'); + assert.deepStrictEqual(config.reqOpts, { + ...options, + }); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + setImmediate(done); + return new PassThrough(); + }; + + datastore.getIndexesStream(options); + }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.requestStream_ = (config: any) => { - assert.strictEqual(config.client, 'DatastoreAdminClient'); - assert.strictEqual(config.method, 'listIndexesStream'); - assert.deepStrictEqual(config.reqOpts, { - ...options, - }); - assert.strictEqual(typeof config.gaxOpts, 'undefined'); - setImmediate(done); - return new PassThrough(); - }; + it('should accept gaxOptions', done => { + const options = {gaxOptions: {}}; - datastore.getIndexesStream(options); - }); - - it('should accept gaxOptions', done => { - const options = {gaxOptions: {}}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.requestStream_ = (config: any) => { + assert.strictEqual(config.gaxOpts, options.gaxOptions); + setImmediate(done); + return new PassThrough(); + }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.requestStream_ = (config: any) => { - assert.strictEqual(config.gaxOpts, options.gaxOptions); - setImmediate(done); - return new PassThrough(); - }; + datastore.getIndexesStream(options); + }); - datastore.getIndexesStream(options); - }); + it('should transform response indexes into Index objects', done => { + const rawIndex = {indexId: 'name', a: 'b'}; + const indexInstance = {}; + const requestStream = new Readable({ + objectMode: true, + read() { + this.push(rawIndex); + this.push(null); + }, + }); - it('should transform response indexes into Index objects', done => { - const rawIndex = {indexId: 'name', a: 'b'}; - const indexInstance = {}; - const requestStream = new Readable({ - objectMode: true, - read() { - this.push(rawIndex); - this.push(null); - }, + datastore.index = (id: string) => { + assert.strictEqual(id, rawIndex.indexId); + return indexInstance; + }; + + datastore.requestStream_ = () => requestStream; + + datastore + .getIndexesStream() + .on('error', done) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .on('data', (index: any) => { + assert.strictEqual(index, indexInstance); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + assert.strictEqual((index as any).metadata, rawIndex); + done(); + }); + }); }); - datastore.index = (id: string) => { - assert.strictEqual(id, rawIndex.indexId); - return indexInstance; - }; + describe('import', () => { + it('should throw if both file and inputUrl are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + inputUrl: 'gs://file', + }, + assert.ifError + ); + }, /Both `file` and `inputUrl` were provided\./); + }); - datastore.requestStream_ = () => requestStream; + it('should accept a file string source', done => { + const file = 'file'; - datastore - .getIndexesStream() - .on('error', done) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - .on('data', (index: any) => { - assert.strictEqual(index, indexInstance); // eslint-disable-next-line @typescript-eslint/no-explicit-any - assert.strictEqual((index as any).metadata, rawIndex); - done(); - }); - }); - }); + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.inputUrl, `gs://${file}`); + done(); + }; - describe('import', () => { - it('should throw if both file and inputUrl are provided', () => { - assert.throws(() => { - datastore.import( - { - file: 'file', - inputUrl: 'gs://file', - }, - assert.ifError - ); - }, /Both `file` and `inputUrl` were provided\./); - }); + datastore.import({file}, assert.ifError); + }); - it('should accept a file string source', done => { - const file = 'file'; + it('should remove extraneous gs:// prefix from input', done => { + const file = 'gs://file'; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.inputUrl, `gs://${file}`); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.inputUrl, `${file}`); + done(); + }; - datastore.import({file}, assert.ifError); - }); + datastore.import({file}, assert.ifError); + }); - it('should remove extraneous gs:// prefix from input', done => { - const file = 'gs://file'; + it('should accept a File object source', done => { + const file = {bucket: {name: 'bucket'}, name: 'file'}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.inputUrl, `${file}`); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual( + config.reqOpts.inputUrl, + `gs://${file.bucket.name}/${file.name}` + ); + done(); + }; + + datastore.import({file}, assert.ifError); + }); - datastore.import({file}, assert.ifError); - }); + it('should throw if a source is not provided', () => { + assert.throws(() => { + datastore.import({}, assert.ifError); + }, /An input URL must be provided\./); + }); - it('should accept a File object source', done => { - const file = {bucket: {name: 'bucket'}, name: 'file'}; + it('should accept kinds', done => { + const kinds = ['kind1', 'kind2']; + const config = {file: 'file', kinds}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual( - config.reqOpts.inputUrl, - `gs://${file.bucket.name}/${file.name}` - ); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); + done(); + }; - datastore.import({file}, assert.ifError); - }); + datastore.import(config, assert.ifError); + }); - it('should throw if a source is not provided', () => { - assert.throws(() => { - datastore.import({}, assert.ifError); - }, /An input URL must be provided\./); - }); + it('should throw if both kinds and entityFilter are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + kinds: ['kind1', 'kind2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `kinds` were provided\./); + }); - it('should accept kinds', done => { - const kinds = ['kind1', 'kind2']; - const config = {file: 'file', kinds}; + it('should accept namespaces', done => { + const namespaces = ['ns1', 'n2']; + const config = {file: 'file', namespaces}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.deepStrictEqual(config.reqOpts.entityFilter.kinds, kinds); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.deepStrictEqual( + config.reqOpts.entityFilter.namespaceIds, + namespaces + ); + done(); + }; + + datastore.import(config, assert.ifError); + }); - datastore.import(config, assert.ifError); - }); + it('should throw if both namespaces and entityFilter are provided', () => { + assert.throws(() => { + datastore.import( + { + file: 'file', + namespaces: ['ns1', 'ns2'], + entityFilter: {}, + }, + assert.ifError + ); + }, /Both `entityFilter` and `namespaces` were provided\./); + }); - it('should throw if both kinds and entityFilter are provided', () => { - assert.throws(() => { - datastore.import( - { + it('should remove extraneous properties from request', done => { + const config = { file: 'file', + gaxOptions: {}, kinds: ['kind1', 'kind2'], - entityFilter: {}, - }, - assert.ifError - ); - }, /Both `entityFilter` and `kinds` were provided\./); - }); - - it('should accept namespaces', done => { - const namespaces = ['ns1', 'n2']; - const config = {file: 'file', namespaces}; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.deepStrictEqual( - config.reqOpts.entityFilter.namespaceIds, - namespaces - ); - done(); - }; - - datastore.import(config, assert.ifError); - }); - - it('should throw if both namespaces and entityFilter are provided', () => { - assert.throws(() => { - datastore.import( - { - file: 'file', namespaces: ['ns1', 'ns2'], - entityFilter: {}, - }, - assert.ifError - ); - }, /Both `entityFilter` and `namespaces` were provided\./); - }); - - it('should remove extraneous properties from request', done => { - const config = { - file: 'file', - gaxOptions: {}, - kinds: ['kind1', 'kind2'], - namespaces: ['ns1', 'ns2'], - }; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(typeof config.reqOpts.file, 'undefined'); - assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); - assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); - assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); - done(); - }; + }; - datastore.import(config, assert.ifError); - }); - - it('should send any user input to API', done => { - const userProperty = 'abc'; - const config = {file: 'file', userProperty}; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.reqOpts.userProperty, userProperty); - done(); - }; - - datastore.import(config, assert.ifError); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(typeof config.reqOpts.file, 'undefined'); + assert.strictEqual(typeof config.reqOpts.gaxOptions, 'undefined'); + assert.strictEqual(typeof config.reqOpts.kinds, 'undefined'); + assert.strictEqual(typeof config.reqOpts.namespaces, 'undefined'); + done(); + }; + + datastore.import(config, assert.ifError); + }); - it('should send correct request', done => { - const config = {file: 'file'}; + it('should send any user input to API', done => { + const userProperty = 'abc'; + const config = {file: 'file', userProperty}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.client, 'DatastoreAdminClient'); - assert.strictEqual(config.method, 'importEntities'); - assert.strictEqual(typeof config.gaxOpts, 'undefined'); - done(); - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.reqOpts.userProperty, userProperty); + done(); + }; - datastore.import(config, assert.ifError); - }); + datastore.import(config, assert.ifError); + }); - it('should accept gaxOptions', done => { - const gaxOptions = {}; - const config = {file: 'file', gaxOptions}; + it('should send correct request', done => { + const config = {file: 'file'}; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - datastore.request_ = (config: any) => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; - - datastore.import(config, assert.ifError); - }); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.client, 'DatastoreAdminClient'); + assert.strictEqual(config.method, 'importEntities'); + assert.strictEqual(typeof config.gaxOpts, 'undefined'); + done(); + }; + + datastore.import(config, assert.ifError); + }); - describe('index', () => { - it('should return an Index object', () => { - const indexId = 'index-id'; - const index = datastore.index(indexId); - assert(index instanceof FakeIndex); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const args = (index as any).calledWith_; - assert.strictEqual(args[0], datastore); - assert.strictEqual(args[1], indexId); - }); - }); + it('should accept gaxOptions', done => { + const gaxOptions = {}; + const config = {file: 'file', gaxOptions}; - describe('insert', () => { - afterEach(() => { - sandbox.restore(); - }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + datastore.request_ = (config: any) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'insert', + datastore.import(config, assert.ifError); + }); }); - sandbox - .stub(ds.DatastoreRequest, 'prepareEntityObject_') - .callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; + describe('index', () => { + it('should return an Index object', () => { + const indexId = 'index-id'; + const index = datastore.index(indexId); + assert(index instanceof FakeIndex); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const args = (index as any).calledWith_; + assert.strictEqual(args[0], datastore); + assert.strictEqual(args[1], indexId); }); + }); - datastore.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; - - datastore.insert(entityObject, assert.ifError); - }); + describe('insert', () => { + afterEach(() => { + sandbox.restore(); + }); - it('should pass the correct arguments to save', done => { - datastore.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { method: 'insert', - }, - ]); - callback(); - }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - datastore.insert({key, data: {}}, done); - }); - }); + }); - describe('key', () => { - it('should return a Key object', () => { - const options = {} as entity.KeyOptions; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const key: any = datastore.key(options); - assert.strictEqual(key.calledWith_[0], options); - }); + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - it('should use a non-object argument as the path', () => { - const options = 'path'; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const key: any = datastore.key(options); - assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); - assert.deepStrictEqual(key.calledWith_[0].path, [options]); - }); - }); + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - describe('save', () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - type Any = any; - let key: entity.Key; + datastore.insert(entityObject, assert.ifError); + }); - beforeEach(() => { - key = new entity.Key({ - namespace: 'namespace', - path: ['Company', 123], + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'insert', + }, + ]); + callback(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.insert({key, data: {}}, done); + }); }); - }); - afterEach(() => { - sandbox.restore(); - }); + describe('key', () => { + it('should return a Key object', () => { + const options = {} as entity.KeyOptions; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const key: any = datastore.key(options); + assert.strictEqual(key.calledWith_[0], options); + }); - it('should save with keys', done => { - const expectedReq = { - mutations: [ - { - upsert: { - key: { - partitionId: { - namespaceId: 'namespace', - }, - path: [ - { - kind: 'Company', - id: 123, - }, - ], - }, - properties: { - k: { - stringValue: 'v', - }, - }, - }, - }, - { - upsert: { - key: { - partitionId: { - namespaceId: 'namespace', - }, - path: [ - { - kind: 'Company', - id: 123, - }, - ], - }, - properties: { - k: { - stringValue: 'v', - }, - }, - }, - }, - ], - }; + it('should use a non-object argument as the path', () => { + const options = 'path'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const key: any = datastore.key(options); + assert.strictEqual(key.calledWith_[0].namespace, datastore.namespace); + assert.deepStrictEqual(key.calledWith_[0].path, [options]); + }); + }); - datastore.request_ = (config: RequestConfig, callback: Function) => { - assert.strictEqual(config.client, 'DatastoreClient'); - assert.strictEqual(config.method, 'commit'); + describe('save', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + type Any = any; + let key: entity.Key; - assert.deepStrictEqual(config.reqOpts, expectedReq); - assert.deepStrictEqual(config.gaxOpts, {}); + beforeEach(() => { + key = new entity.Key({ + namespace: 'namespace', + path: ['Company', 123], + }); + }); - callback(); - }; - datastore.save( - [ - {key, data: {k: 'v'}}, - {key, data: {k: 'v'}}, - ], - done - ); - }); + afterEach(() => { + sandbox.restore(); + }); - it('should save null value when excludeLargeProperties enabled', done => { - const expectedProperties = { - stringField: { - stringValue: 'string value', - }, - nullField: { - nullValue: 0, - }, - arrayField: { - arrayValue: { - values: [ + it('should save with keys', done => { + const expectedReq = { + mutations: [ { - integerValue: '0', + upsert: { + key: { + partitionId: { + namespaceId: 'namespace', + }, + path: [ + { + kind: 'Company', + id: 123, + }, + ], + }, + properties: { + k: { + stringValue: 'v', + }, + }, + }, }, { - nullValue: 0, + upsert: { + key: { + partitionId: { + namespaceId: 'namespace', + }, + path: [ + { + kind: 'Company', + id: 123, + }, + ], + }, + properties: { + k: { + stringValue: 'v', + }, + }, + }, }, ], - }, - }, - objectField: { - nullValue: 0, - }, - }; + }; - datastore.request_ = (config: RequestConfig, callback: Function) => { - assert.deepStrictEqual( - config.reqOpts!.mutations![0].upsert!.properties, - expectedProperties - ); - callback(); - }; + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); - const entities = { - key: key, - data: { - stringField: 'string value', - nullField: null, - arrayField: [0, null], - objectField: null, - }, - excludeLargeProperties: true, - }; - datastore.save(entities, done); - }); + assert.deepStrictEqual(config.reqOpts, expectedReq); + assert.deepStrictEqual(config.gaxOpts, {}); - it('should allow customization of GAX options', done => { - const gaxOptions = {}; + callback(); + }; + datastore.save( + [ + {key, data: {k: 'v'}}, + {key, data: {k: 'v'}}, + ], + done + ); + }); - datastore.request_ = (config: RequestConfig) => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; + it('should save null value when excludeLargeProperties enabled', done => { + const expectedProperties = { + stringField: { + stringValue: 'string value', + }, + nullField: { + nullValue: 0, + }, + arrayField: { + arrayValue: { + values: [ + { + integerValue: '0', + }, + { + nullValue: 0, + }, + ], + }, + }, + objectField: { + nullValue: 0, + }, + }; + + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties, + expectedProperties + ); + callback(); + }; + + const entities = { + key: key, + data: { + stringField: 'string value', + nullField: null, + arrayField: [0, null], + objectField: null, + }, + excludeLargeProperties: true, + }; + datastore.save(entities, done); + }); - datastore.save( - { - key, - data: {}, - }, - gaxOptions, - assert.ifError - ); - }); + it('should allow customization of GAX options', done => { + const gaxOptions = {}; - it('should prepare entity objects', done => { - const entityObject = {}; - let prepared = false; + datastore.request_ = (config: RequestConfig) => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; - sandbox - .stub(ds.DatastoreRequest, 'prepareEntityObject_') - .callsFake(obj => { - assert.strictEqual(obj, entityObject); - prepared = true; - return { - key, - method: 'insert', - data: {k: 'v'}, - } as {}; + datastore.save( + { + key, + data: {}, + }, + gaxOptions, + assert.ifError + ); }); - datastore.request_ = () => { - assert.strictEqual(prepared, true); - done(); - }; + it('should prepare entity objects', done => { + const entityObject = {}; + let prepared = false; + + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + prepared = true; + return { + key, + method: 'insert', + data: {k: 'v'}, + } as {}; + }); + + datastore.request_ = () => { + assert.strictEqual(prepared, true); + done(); + }; + + datastore.save(entityObject, assert.ifError); + }); - datastore.save(entityObject, assert.ifError); - }); + it('should save with specific method', done => { + datastore.request_ = (config: RequestConfig, callback: Function) => { + assert.strictEqual(config.reqOpts!.mutations!.length, 3); + assert(is.object(config.reqOpts!.mutations![0].insert)); + assert(is.object(config.reqOpts!.mutations![1].update)); + assert(is.object(config.reqOpts!.mutations![2].upsert)); - it('should save with specific method', done => { - datastore.request_ = (config: RequestConfig, callback: Function) => { - assert.strictEqual(config.reqOpts!.mutations!.length, 3); - assert(is.object(config.reqOpts!.mutations![0].insert)); - assert(is.object(config.reqOpts!.mutations![1].update)); - assert(is.object(config.reqOpts!.mutations![2].upsert)); + const insert = config.reqOpts!.mutations![0].insert!; + assert.deepStrictEqual(insert.properties!.k, {stringValue: 'v'}); - const insert = config.reqOpts!.mutations![0].insert!; - assert.deepStrictEqual(insert.properties!.k, {stringValue: 'v'}); + const update = config.reqOpts!.mutations![1].update!; + assert.deepStrictEqual(update.properties!.k2, {stringValue: 'v2'}); - const update = config.reqOpts!.mutations![1].update!; - assert.deepStrictEqual(update.properties!.k2, {stringValue: 'v2'}); + const upsert = config.reqOpts!.mutations![2].upsert!; + assert.deepStrictEqual(upsert.properties!.k3, {stringValue: 'v3'}); - const upsert = config.reqOpts!.mutations![2].upsert!; - assert.deepStrictEqual(upsert.properties!.k3, {stringValue: 'v3'}); + callback(); + }; - callback(); - }; + datastore.save( + [ + {key, method: 'insert', data: {k: 'v'}}, + {key, method: 'update', data: {k2: 'v2'}}, + {key, method: 'upsert', data: {k3: 'v3'}}, + ], + done + ); + }); - datastore.save( - [ - {key, method: 'insert', data: {k: 'v'}}, - {key, method: 'update', data: {k2: 'v2'}}, - {key, method: 'upsert', data: {k3: 'v3'}}, - ], - done - ); - }); + it('should throw if a given method is not recognized', () => { + assert.throws(() => { + datastore.save( + { + key, + method: 'auto_insert_id', + data: { + k: 'v', + }, + }, + assert.ifError + ); + }, /Method auto_insert_id not recognized/); + }); - it('should throw if a given method is not recognized', () => { - assert.throws(() => { - datastore.save( - { - key, - method: 'auto_insert_id', - data: { - k: 'v', + it('should not alter the provided data object', done => { + const entities = [ + { + key, + method: 'insert', + indexed: false, + data: { + value: { + a: 'b', + c: [1, 2, 3], + }, + }, }, - }, - assert.ifError - ); - }, /Method auto_insert_id not recognized/); - }); + ]; + const expectedEntities = entities.map(x => extend(true, {}, x)); - it('should not alter the provided data object', done => { - const entities = [ - { - key, - method: 'insert', - indexed: false, - data: { - value: { - a: 'b', - c: [1, 2, 3], - }, - }, - }, - ]; - const expectedEntities = entities.map(x => extend(true, {}, x)); - - datastore.request_ = () => { - // By the time the request is made, the original object has already been - // transformed into a raw request. - assert.deepStrictEqual(entities, expectedEntities); - done(); - }; + datastore.request_ = () => { + // By the time the request is made, the original object has already been + // transformed into a raw request. + assert.deepStrictEqual(entities, expectedEntities); + done(); + }; - datastore.save(entities, assert.ifError); - }); + datastore.save(entities, assert.ifError); + }); - it('should return apiResponse in callback', done => { - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - const mockCommitResponse = {}; - datastore.request_ = (config: RequestConfig, callback: Function) => { - callback(null, mockCommitResponse); - }; - datastore.save( - {key, data: {}}, - (err: Error | null, apiResponse: Entity) => { - assert.ifError(err); - assert.strictEqual(mockCommitResponse, apiResponse); - done(); - } - ); - }); + it('should return apiResponse in callback', done => { + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + const mockCommitResponse = {}; + datastore.request_ = (config: RequestConfig, callback: Function) => { + callback(null, mockCommitResponse); + }; + datastore.save( + {key, data: {}}, + (err: Error | null, apiResponse: Entity) => { + assert.ifError(err); + assert.strictEqual(mockCommitResponse, apiResponse); + done(); + } + ); + }); - it('should allow setting the indexed value of a property', done => { - datastore.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; - assert.strictEqual(property.stringValue, 'value'); - assert.strictEqual(property.excludeFromIndexes, true); - done(); - }; + it('should allow setting the indexed value of a property', done => { + datastore.request_ = (config: RequestConfig) => { + const property = + config.reqOpts!.mutations![0].upsert!.properties!.name; + assert.strictEqual(property.stringValue, 'value'); + assert.strictEqual(property.excludeFromIndexes, true); + done(); + }; - datastore.save( - { - key, - data: [ + datastore.save( { - name: 'name', - value: 'value', - excludeFromIndexes: true, + key, + data: [ + { + name: 'name', + value: 'value', + excludeFromIndexes: true, + }, + ], }, - ], - }, - assert.ifError - ); - }); + assert.ifError + ); + }); - it('should allow setting the indexed value on arrays', done => { - datastore.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + it('should allow setting the indexed value on arrays', done => { + datastore.request_ = (config: RequestConfig) => { + const property = + config.reqOpts!.mutations![0].upsert!.properties!.name; - property.arrayValue!.values!.forEach((value: Any) => { - assert.strictEqual(value.excludeFromIndexes, true); - }); + property.arrayValue!.values!.forEach((value: Any) => { + assert.strictEqual(value.excludeFromIndexes, true); + }); - done(); - }; + done(); + }; - datastore.save( - { - key, - data: [ + datastore.save( { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], }, - ], - }, - assert.ifError - ); - }); + assert.ifError + ); + }); - it('should allow exclude property indexed with "*" wildcard from root', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + it('should allow exclude property indexed with "*" wildcard from root', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; - - const validateIndex = (data: Any) => { - if (data.arrayValue) { - data.arrayValue.values.forEach((value: Any) => { - validateIndex(value); - }); - } else if (data.entityValue) { - Object.keys(data.entityValue.properties).forEach(path => { - validateIndex(data.entityValue.properties[path]); - }); - } else { - assert.strictEqual(data.excludeFromIndexes, true); - } - }; - - datastore.request_ = (config: RequestConfig) => { - const properties = config.reqOpts!.mutations![0].upsert!.properties; - Object.keys(properties!).forEach(path => { - validateIndex(properties![path]); + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + datastore.request_ = (config: RequestConfig) => { + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); + }); + done(); + }; + + datastore.save( + { + key, + data, + excludeFromIndexes: ['.*'], + }, + assert.ifError + ); }); - done(); - }; - - datastore.save( - { - key, - data, - excludeFromIndexes: ['.*'], - }, - assert.ifError - ); - }); - it('should allow exclude property indexed with "*" wildcard for object and array', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + it('should allow exclude property indexed with "*" wildcard for object and array', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; - - const validateIndex = (data: Any) => { - if (data.arrayValue) { - data.arrayValue.values.forEach((value: Any) => { - validateIndex(value); - }); - } else if (data.entityValue) { - Object.keys(data.entityValue.properties).forEach(path => { - validateIndex(data.entityValue.properties[path]); - }); - } else { - assert.strictEqual(data.excludeFromIndexes, true); - } - }; - - datastore.request_ = (config: RequestConfig) => { - const properties = config.reqOpts!.mutations![0].upsert!.properties; - Object.keys(properties!).forEach(path => { - validateIndex(properties![path]); + }; + + const validateIndex = (data: Any) => { + if (data.arrayValue) { + data.arrayValue.values.forEach((value: Any) => { + validateIndex(value); + }); + } else if (data.entityValue) { + Object.keys(data.entityValue.properties).forEach(path => { + validateIndex(data.entityValue.properties[path]); + }); + } else { + assert.strictEqual(data.excludeFromIndexes, true); + } + }; + + datastore.request_ = (config: RequestConfig) => { + const properties = config.reqOpts!.mutations![0].upsert!.properties; + Object.keys(properties!).forEach(path => { + validateIndex(properties![path]); + }); + done(); + }; + + datastore.save( + { + key, + data, + excludeFromIndexes: [ + 'longString', + 'notMetadata', + 'longStringArray[]', + 'metadata.longString', + 'metadata.otherProperty', + 'metadata.obj.*', + 'metadata.longStringArray[].*', + ], + }, + assert.ifError + ); }); - done(); - }; - datastore.save( - { - key, - data, - excludeFromIndexes: [ - 'longString', - 'notMetadata', - 'longStringArray[]', - 'metadata.longString', - 'metadata.otherProperty', - 'metadata.obj.*', - 'metadata.longStringArray[].*', - ], - }, - assert.ifError - ); - }); - - it('should allow setting the indexed value on arrays', done => { - datastore.request_ = (config: RequestConfig) => { - const property = config.reqOpts!.mutations![0].upsert!.properties!.name; + it('should allow setting the indexed value on arrays', done => { + datastore.request_ = (config: RequestConfig) => { + const property = + config.reqOpts!.mutations![0].upsert!.properties!.name; - property.arrayValue!.values!.forEach((value: Any) => { - assert.strictEqual(value.excludeFromIndexes, true); - }); + property.arrayValue!.values!.forEach((value: Any) => { + assert.strictEqual(value.excludeFromIndexes, true); + }); - done(); - }; + done(); + }; - datastore.save( - { - key, - data: [ + datastore.save( { - name: 'name', - value: ['one', 'two', 'three'], - excludeFromIndexes: true, + key, + data: [ + { + name: 'name', + value: ['one', 'two', 'three'], + excludeFromIndexes: true, + }, + ], }, - ], - }, - assert.ifError - ); - }); + assert.ifError + ); + }); - it('should prepare excludeFromIndexes array for large values', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = { - longString, - notMetadata: true, - longStringArray: [longString], - metadata: { - longString, - otherProperty: 'value', - obj: { - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + it('should prepare excludeFromIndexes array for large values', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - longStringArray: [ - { - longString, - nestedLongStringArray: [ - { - longString, - nestedProperty: true, - }, + longStringArray: [ { longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], }, ], }, - ], - }, - }; + }; - const excludeFromIndexes = [ - 'longString', - 'longStringArray[]', - 'metadata.longString', - 'metadata.obj.longStringArray[].longString', - 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', - 'metadata.longStringArray[].longString', - 'metadata.longStringArray[].nestedLongStringArray[].longString', - ]; - - fakeEntity.entityToEntityProto = (entity: EntityObject) => { - return entity as unknown as EntityProto; - }; - datastore.request_ = (config: RequestConfig) => { - assert.strictEqual( - (config.reqOpts!.mutations![0].upsert! as Entity) - .excludeLargeProperties, - true - ); - assert.deepStrictEqual( - (config.reqOpts!.mutations![0].upsert! as Entity).excludeFromIndexes, - excludeFromIndexes - ); - done(); - }; - - datastore.save( - { - key, - data, - excludeLargeProperties: true, - }, - assert.ifError - ); - }); + const excludeFromIndexes = [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ]; + + fakeEntity.entityToEntityProto = (entity: EntityObject) => { + return entity as unknown as EntityProto; + }; + datastore.request_ = (config: RequestConfig) => { + assert.strictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity) + .excludeLargeProperties, + true + ); + assert.deepStrictEqual( + (config.reqOpts!.mutations![0].upsert! as Entity) + .excludeFromIndexes, + excludeFromIndexes + ); + done(); + }; + + datastore.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); - it('should allow auto setting the indexed value of a property with excludeLargeProperties', done => { - const longString = Buffer.alloc(1501, '.').toString(); - const data = [ - { - name: 'name', - value: longString, - }, - { - name: 'description', - value: 'value', - }, - ]; - - datastore.request_ = (config: RequestConfig) => { - assert.deepStrictEqual( - config.reqOpts!.mutations![0].upsert!.properties!.name - .excludeFromIndexes, - true - ); - done(); - }; + it('should allow auto setting the indexed value of a property with excludeLargeProperties', done => { + const longString = Buffer.alloc(1501, '.').toString(); + const data = [ + { + name: 'name', + value: longString, + }, + { + name: 'description', + value: 'value', + }, + ]; + + datastore.request_ = (config: RequestConfig) => { + assert.deepStrictEqual( + config.reqOpts!.mutations![0].upsert!.properties!.name + .excludeFromIndexes, + true + ); + done(); + }; + + datastore.save( + { + key, + data, + excludeLargeProperties: true, + }, + assert.ifError + ); + }); - datastore.save( - { - key, - data, - excludeLargeProperties: true, - }, - assert.ifError - ); - }); + it('should assign ID on keys without them', done => { + const incompleteKey = new entity.Key({path: ['Incomplete']}); + const incompleteKey2 = new entity.Key({path: ['Incomplete']}); + const completeKey = new entity.Key({path: ['Complete', 'Key']}); - it('should assign ID on keys without them', done => { - const incompleteKey = new entity.Key({path: ['Incomplete']}); - const incompleteKey2 = new entity.Key({path: ['Incomplete']}); - const completeKey = new entity.Key({path: ['Complete', 'Key']}); + const keyProtos: Array<{}> = []; + const ids = [1, 2]; - const keyProtos: Array<{}> = []; - const ids = [1, 2]; + const response = { + mutationResults: [ + { + key: {}, + }, + { + key: {}, + }, + {}, + ], + }; - const response = { - mutationResults: [ - { - key: {}, - }, - { - key: {}, - }, - {}, - ], - }; + datastore.request_ = (config: RequestConfig, callback: Function) => { + callback(null, response); + }; - datastore.request_ = (config: RequestConfig, callback: Function) => { - callback(null, response); - }; + sandbox.stub(fakeEntity, 'keyFromKeyProto').callsFake(keyProto => { + keyProtos.push(keyProto as any); + return { + id: ids[keyProtos.length - 1], + } as {} as entity.Key; + }); - sandbox.stub(fakeEntity, 'keyFromKeyProto').callsFake(keyProto => { - keyProtos.push(keyProto as any); - return { - id: ids[keyProtos.length - 1], - } as {} as entity.Key; - }); + datastore.save( + [ + {key: incompleteKey, data: {}}, + {key: incompleteKey2, data: {}}, + {key: completeKey, data: {}}, + ], + (err: Error) => { + assert.ifError(err); - datastore.save( - [ - {key: incompleteKey, data: {}}, - {key: incompleteKey2, data: {}}, - {key: completeKey, data: {}}, - ], - (err: Error) => { - assert.ifError(err); + assert.strictEqual(incompleteKey.id, ids[0]); + assert.strictEqual(incompleteKey2.id, ids[1]); - assert.strictEqual(incompleteKey.id, ids[0]); - assert.strictEqual(incompleteKey2.id, ids[1]); + assert.strictEqual(keyProtos.length, 2); + assert.strictEqual(keyProtos[0], response.mutationResults[0].key); + assert.strictEqual(keyProtos[1], response.mutationResults[1].key); - assert.strictEqual(keyProtos.length, 2); - assert.strictEqual(keyProtos[0], response.mutationResults[0].key); - assert.strictEqual(keyProtos[1], response.mutationResults[1].key); + done(); + } + ); + }); - done(); - } - ); - }); + describe('transactions', () => { + beforeEach(() => { + // Trigger transaction mode. + datastore.id = 'transaction-id'; + datastore.requestCallbacks_ = []; + datastore.requests_ = []; + }); - describe('transactions', () => { - beforeEach(() => { - // Trigger transaction mode. - datastore.id = 'transaction-id'; - datastore.requestCallbacks_ = []; - datastore.requests_ = []; + it('should queue request & callback', () => { + datastore.save({ + key, + data: [{name: 'name', value: 'value'}], + }); + + assert.strictEqual( + typeof datastore.requestCallbacks_[0], + 'function' + ); + assert.strictEqual(typeof datastore.requests_[0], 'object'); + }); + }); }); - it('should queue request & callback', () => { - datastore.save({ - key, - data: [{name: 'name', value: 'value'}], + describe('update', () => { + afterEach(() => { + sandbox.restore(); }); - assert.strictEqual(typeof datastore.requestCallbacks_[0], 'function'); - assert.strictEqual(typeof datastore.requests_[0], 'object'); - }); - }); - }); + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'update', + }); - describe('update', () => { - afterEach(() => { - sandbox.restore(); - }); + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'update', - }); + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - sandbox - .stub(ds.DatastoreRequest, 'prepareEntityObject_') - .callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; + datastore.update(entityObject, assert.ifError); }); - datastore.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'update', + }, + ]); + callback(); + }; - datastore.update(entityObject, assert.ifError); - }); + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.update({key, data: {}}, done); + }); + }); - it('should pass the correct arguments to save', done => { - datastore.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'update', - }, - ]); - callback(); - }; + describe('upsert', () => { + afterEach(() => { + sandbox.restore(); + }); - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - datastore.update({key, data: {}}, done); - }); - }); + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'upsert', + }); - describe('upsert', () => { - afterEach(() => { - sandbox.restore(); - }); + sandbox + .stub(ds.DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'upsert', - }); + datastore.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - sandbox - .stub(ds.DatastoreRequest, 'prepareEntityObject_') - .callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; + datastore.upsert(entityObject, assert.ifError); }); - datastore.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; + it('should pass the correct arguments to save', done => { + datastore.save = (entities: Entity[], callback: Function) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'upsert', + }, + ]); - datastore.upsert(entityObject, assert.ifError); - }); + callback(); + }; - it('should pass the correct arguments to save', done => { - datastore.save = (entities: Entity[], callback: Function) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'upsert', - }, - ]); + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + datastore.upsert({key, data: {}}, done); + }); + }); - callback(); - }; + describe('transaction', () => { + it('should return a Transaction object', () => { + const transaction = datastore.transaction(); + assert.strictEqual(transaction.calledWith_[0], datastore); + }); - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - datastore.upsert({key, data: {}}, done); - }); - }); + it('should pass options to the Transaction constructor', () => { + const options = {}; + const transaction = datastore.transaction(options); + assert.strictEqual(transaction.calledWith_[1], options); + }); + }); - describe('transaction', () => { - it('should return a Transaction object', () => { - const transaction = datastore.transaction(); - assert.strictEqual(transaction.calledWith_[0], datastore); - }); + describe('determineBaseUrl_', () => { + function setHost(host: string) { + process.env.DATASTORE_EMULATOR_HOST = host; + } - it('should pass options to the Transaction constructor', () => { - const options = {}; - const transaction = datastore.transaction(options); - assert.strictEqual(transaction.calledWith_[1], options); - }); - }); + beforeEach(() => { + delete process.env.DATASTORE_EMULATOR_HOST; + }); - describe('determineBaseUrl_', () => { - function setHost(host: string) { - process.env.DATASTORE_EMULATOR_HOST = host; - } + it('should default to defaultBaseUrl_', () => { + const defaultBaseUrl_ = 'defaulturl'; + datastore.defaultBaseUrl_ = defaultBaseUrl_; - beforeEach(() => { - delete process.env.DATASTORE_EMULATOR_HOST; - }); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, defaultBaseUrl_); + }); - it('should default to defaultBaseUrl_', () => { - const defaultBaseUrl_ = 'defaulturl'; - datastore.defaultBaseUrl_ = defaultBaseUrl_; + it('should remove slashes from the baseUrl', () => { + const expectedBaseUrl = 'localhost'; - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, defaultBaseUrl_); - }); + setHost('localhost/'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); - it('should remove slashes from the baseUrl', () => { - const expectedBaseUrl = 'localhost'; + setHost('localhost//'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); + }); - setHost('localhost/'); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); + it('should remove the protocol if specified', () => { + setHost('http://localhost'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, 'localhost'); - setHost('localhost//'); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, expectedBaseUrl); - }); + setHost('https://localhost'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, 'localhost'); + }); - it('should remove the protocol if specified', () => { - setHost('http://localhost'); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, 'localhost'); + it('should set Numberified port if one was found', () => { + setHost('http://localhost:9090'); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.port_, 9090); + }); - setHost('https://localhost'); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, 'localhost'); - }); + it('should not set customEndpoint_ when using default baseurl', () => { + const datastore = new Datastore({projectId: PROJECT_ID}); + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.customEndpoint_, undefined); + }); - it('should set Numberified port if one was found', () => { - setHost('http://localhost:9090'); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.port_, 9090); - }); + it('should set customEndpoint_ when using custom API endpoint', () => { + datastore.determineBaseUrl_('apiEndpoint'); + assert.strictEqual(datastore.customEndpoint_, true); + }); - it('should not set customEndpoint_ when using default baseurl', () => { - const datastore = new Datastore({projectId: PROJECT_ID}); - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.customEndpoint_, undefined); - }); + it('should set baseUrl when using custom API endpoint', () => { + datastore.determineBaseUrl_('apiEndpoint'); + assert.strictEqual(datastore.baseUrl_, 'apiEndpoint'); + }); - it('should set customEndpoint_ when using custom API endpoint', () => { - datastore.determineBaseUrl_('apiEndpoint'); - assert.strictEqual(datastore.customEndpoint_, true); - }); + describe('with DATASTORE_EMULATOR_HOST environment variable', () => { + const DATASTORE_EMULATOR_HOST = 'localhost:9090'; + const EXPECTED_BASE_URL = 'localhost'; + const EXPECTED_PORT = 9090; - it('should set baseUrl when using custom API endpoint', () => { - datastore.determineBaseUrl_('apiEndpoint'); - assert.strictEqual(datastore.baseUrl_, 'apiEndpoint'); - }); + beforeEach(() => { + setHost(DATASTORE_EMULATOR_HOST); + }); - describe('with DATASTORE_EMULATOR_HOST environment variable', () => { - const DATASTORE_EMULATOR_HOST = 'localhost:9090'; - const EXPECTED_BASE_URL = 'localhost'; - const EXPECTED_PORT = 9090; + after(() => { + delete process.env.DATASTORE_EMULATOR_HOST; + }); - beforeEach(() => { - setHost(DATASTORE_EMULATOR_HOST); - }); + it('should use the DATASTORE_EMULATOR_HOST env var', () => { + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.baseUrl_, EXPECTED_BASE_URL); + assert.strictEqual(datastore.port_, EXPECTED_PORT); + }); - after(() => { - delete process.env.DATASTORE_EMULATOR_HOST; + it('should set customEndpoint_', () => { + datastore.determineBaseUrl_(); + assert.strictEqual(datastore.customEndpoint_, true); + }); + }); }); - it('should use the DATASTORE_EMULATOR_HOST env var', () => { - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.baseUrl_, EXPECTED_BASE_URL); - assert.strictEqual(datastore.port_, EXPECTED_PORT); - }); + describe('keyToLegacyUrlSafe', () => { + it('should convert key to URL-safe base64 string', () => { + const key = new entity.Key({ + path: ['Task', 'Test'], + }); + const base64EndocdedUrlSafeKey = + 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(null, 'project-id'); + }; + datastore.keyToLegacyUrlSafe( + key, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + } + ); + }); - it('should set customEndpoint_', () => { - datastore.determineBaseUrl_(); - assert.strictEqual(datastore.customEndpoint_, true); - }); - }); - }); + it('should convert key to URL-safe base64 string with location prefix', () => { + const key = new entity.Key({ + path: ['Task', 'Test'], + }); + const locationPrefix = 's~'; + const base64EndocdedUrlSafeKey = + 'agxzfnByb2plY3QtaWRyDgsSBFRhc2siBFRlc3QM'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(null, 'project-id'); + }; + datastore.keyToLegacyUrlSafe( + key, + locationPrefix, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.ifError(err); + assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); + } + ); + }); - describe('keyToLegacyUrlSafe', () => { - it('should convert key to URL-safe base64 string', () => { - const key = new entity.Key({ - path: ['Task', 'Test'], + it('should not return URL-safe key to user if auth.getProjectId errors', () => { + const error = new Error('Error.'); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (datastore.auth as any).getProjectId = (callback: Function) => { + callback(error); + }; + datastore.keyToLegacyUrlSafe( + {} as entity.Key, + (err: Error | null | undefined, urlSafeKey: string) => { + assert.strictEqual(err, error); + assert.strictEqual(urlSafeKey, undefined); + } + ); + }); }); - const base64EndocdedUrlSafeKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (datastore.auth as any).getProjectId = (callback: Function) => { - callback(null, 'project-id'); - }; - datastore.keyToLegacyUrlSafe( - key, - (err: Error | null | undefined, urlSafeKey: string) => { - assert.ifError(err); - assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); - } - ); - }); - it('should convert key to URL-safe base64 string with location prefix', () => { - const key = new entity.Key({ - path: ['Task', 'Test'], + describe('keyFromLegacyUrlsafe', () => { + it('should convert key to url safe base64 string', () => { + const encodedKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; + const key = datastore.keyFromLegacyUrlsafe(encodedKey); + assert.strictEqual(key.kind, 'Task'); + assert.strictEqual(key.name, 'Test'); + }); }); - const locationPrefix = 's~'; - const base64EndocdedUrlSafeKey = - 'agxzfnByb2plY3QtaWRyDgsSBFRhc2siBFRlc3QM'; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (datastore.auth as any).getProjectId = (callback: Function) => { - callback(null, 'project-id'); - }; - datastore.keyToLegacyUrlSafe( - key, - locationPrefix, - (err: Error | null | undefined, urlSafeKey: string) => { - assert.ifError(err); - assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey); - } - ); - }); - it('should not return URL-safe key to user if auth.getProjectId errors', () => { - const error = new Error('Error.'); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (datastore.auth as any).getProjectId = (callback: Function) => { - callback(error); - }; - datastore.keyToLegacyUrlSafe( - {} as entity.Key, - (err: Error | null | undefined, urlSafeKey: string) => { - assert.strictEqual(err, error); - assert.strictEqual(urlSafeKey, undefined); - } - ); - }); - }); - - describe('keyFromLegacyUrlsafe', () => { - it('should convert key to url safe base64 string', () => { - const encodedKey = 'agpwcm9qZWN0LWlkcg4LEgRUYXNrIgRUZXN0DA'; - const key = datastore.keyFromLegacyUrlsafe(encodedKey); - assert.strictEqual(key.kind, 'Task'); - assert.strictEqual(key.name, 'Test'); + describe('multi-db support', () => { + it('should get the database id from the client', async () => { + const otherDatastore = new Datastore({ + namespace: `${Date.now()}`, + databaseId: SECOND_DATABASE_ID, + }); + assert.strictEqual( + otherDatastore.getDatabaseId(), + SECOND_DATABASE_ID + ); + }); + }); }); - }); -}); + } +); diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 36816c6b252..4d66f0b1764 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -20,6 +20,8 @@ const {Query} = require('../src/query'); import {Datastore} from '../src'; import {AggregateField, AggregateQuery} from '../src/aggregate'; import {PropertyFilter, EntityFilter, or} from '../src/filter'; +import {entity} from '../src/entity'; +import {SECOND_DATABASE_ID} from './index'; describe('Query', () => { const SCOPE = {} as Datastore; @@ -558,4 +560,42 @@ describe('Query', () => { assert.strictEqual(results, runQueryReturnValue); }); }); + + it('should pass the database id to the generated layer', async () => { + const options = { + namespace: `${Date.now()}`, + databaseId: SECOND_DATABASE_ID, + projectId: 'test-project-id', + }; + const clientName = 'DatastoreClient'; + const otherDatastore = new Datastore(options); + const postKey = new entity.Key({path: ['Post', 'post1']}); + // Initialize the generated client so that we can mock it out + const gapic = Object.freeze({ + v1: require('../src/v1'), + }); + otherDatastore.clients_.set(clientName, new gapic.v1[clientName](options)); + const dataClient = otherDatastore.clients_.get(clientName); + const projectId = await otherDatastore.getProjectId(); + if (dataClient) { + dataClient['commit'] = ( + request: any, + options: any, + callback: (err?: unknown) => void + ) => { + try { + assert.strictEqual(request.databaseId, SECOND_DATABASE_ID); + assert.strictEqual(request.projectId, projectId); + assert.strictEqual( + options.headers['google-cloud-resource-prefix'], + `projects/${projectId}` + ); + } catch (e) { + callback(e); + } + callback(); + }; + } + await otherDatastore.save({key: postKey, data: {title: 'test'}}); + }); }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 71cb4bf71bc..06faf342114 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -18,11 +18,19 @@ import * as assert from 'assert'; import {afterEach, beforeEach, before, describe, it} from 'mocha'; import * as proxyquire from 'proxyquire'; -// import {google} from '../proto/datastore'; -import {Datastore, DatastoreRequest, Query, TransactionOptions} from '../src'; +import { + Datastore, + DatastoreOptions, + DatastoreRequest, + Query, + TransactionOptions, +} from '../src'; import {Entity} from '../src/entity'; import * as tsTypes from '../src/transaction'; import * as sinon from 'sinon'; +import {RequestConfig} from '../src/request'; +import {SECOND_DATABASE_ID} from './index'; +const async = require('async'); // eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; @@ -50,704 +58,728 @@ const fakePfy = Object.assign({}, pfy, { }, }); -describe('Transaction', () => { - let Transaction: typeof tsTypes.Transaction; - let transaction: tsTypes.Transaction; - const TRANSACTION_ID = 'transaction-id'; - const PROJECT_ID = 'project-id'; - const NAMESPACE = 'a-namespace'; - - const DATASTORE = { - request_() {}, - projectId: PROJECT_ID, - namespace: NAMESPACE, - } as {} as Datastore; - - function key(path: Path) { - return new entity.Key({path: arrify(path)}); - } - - before(() => { - Transaction = proxyquire('../src/transaction.js', { - '@google-cloud/promisify': fakePfy, - }).Transaction; - }); +async.each( + [{}, {databaseId: SECOND_DATABASE_ID}], + (clientOptions: DatastoreOptions) => { + describe('Transaction', () => { + let Transaction: typeof tsTypes.Transaction; + let transaction: tsTypes.Transaction; + const TRANSACTION_ID = 'transaction-id'; + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'a-namespace'; + + const DEFAULT_DATASTORE = { + request_() {}, + projectId: PROJECT_ID, + namespace: NAMESPACE, + } as {} as Datastore; + + const DATASTORE = Object.assign(DEFAULT_DATASTORE, clientOptions); + + function key(path: Path) { + return new entity.Key({path: arrify(path)}); + } + + before(() => { + Transaction = proxyquire('../src/transaction.js', { + '@google-cloud/promisify': fakePfy, + }).Transaction; + }); - beforeEach(() => { - transaction = new Transaction(DATASTORE); - }); + beforeEach(() => { + transaction = new Transaction(DATASTORE); + }); - describe('instantiation', () => { - it('should promisify all the things', () => { - assert(promisified); - }); + describe('instantiation', () => { + it('should promisify all the things', () => { + assert(promisified); + }); - it('should localize the datastore instance', () => { - assert.strictEqual(transaction.datastore, DATASTORE); - }); + it('should localize the datastore instance', () => { + assert.strictEqual(transaction.datastore, DATASTORE); + }); - it('should localize the namespace', () => { - assert.strictEqual(transaction.namespace, NAMESPACE); - }); + it('should localize the namespace', () => { + assert.strictEqual(transaction.namespace, NAMESPACE); + }); - it('should localize the transaction ID', () => { - const options = { - id: 'transaction-id', - }; + it('should localize the transaction ID', () => { + const options = { + id: 'transaction-id', + }; - const transaction = new Transaction(DATASTORE, options); - assert.strictEqual(transaction.id, options.id); - }); + const transaction = new Transaction(DATASTORE, options); + assert.strictEqual(transaction.id, options.id); + }); - it('should localize readOnly', () => { - const options = { - readOnly: true, - }; + it('should localize readOnly', () => { + const options = { + readOnly: true, + }; - const transaction = new Transaction(DATASTORE, options); - assert.strictEqual(transaction.readOnly, true); - }); + const transaction = new Transaction(DATASTORE, options); + assert.strictEqual(transaction.readOnly, true); + }); - it('should localize request function', done => { - const fakeDataset: Any = { - request_: { - bind(context: {}) { - assert.strictEqual(context, fakeDataset); + it('should localize request function', done => { + const fakeDataset: Any = { + request_: { + bind(context: {}) { + assert.strictEqual(context, fakeDataset); - setImmediate(() => { - assert.strictEqual(transaction.request, fakeDataset.request); - done(); - }); + setImmediate(() => { + assert.strictEqual(transaction.request, fakeDataset.request); + done(); + }); - return fakeDataset.request; - }, - }, - }; + return fakeDataset.request; + }, + }, + }; - const transaction = new Transaction(fakeDataset); - }); + const transaction = new Transaction(fakeDataset); + }); - it('should localize default properties', () => { - assert.deepStrictEqual(transaction.modifiedEntities_, []); - assert.deepStrictEqual(transaction.requestCallbacks_, []); - assert.deepStrictEqual(transaction.requests_, []); - }); - }); + it('should localize default properties', () => { + assert.deepStrictEqual(transaction.modifiedEntities_, []); + assert.deepStrictEqual(transaction.requestCallbacks_, []); + assert.deepStrictEqual(transaction.requests_, []); + }); + }); - describe('commit', () => { - beforeEach(() => { - transaction.id = TRANSACTION_ID; - }); + describe('commit', () => { + beforeEach(() => { + transaction.id = TRANSACTION_ID; + }); - afterEach(() => { - sinon.restore(); - }); + afterEach(() => { + sinon.restore(); + }); - it('should commit', done => { - transaction.request_ = config => { - assert.strictEqual(config.client, 'DatastoreClient'); - assert.strictEqual(config.method, 'commit'); - assert.deepStrictEqual(config.gaxOpts, {}); - done(); - }; - transaction.commit(); - }); + it('should commit', done => { + transaction.request_ = config => { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'commit'); + assert.deepStrictEqual(config.gaxOpts, {}); + done(); + }; + transaction.commit(); + }); - it('should accept gaxOptions', done => { - const gaxOptions = {}; + it('should accept gaxOptions', done => { + const gaxOptions = {}; - transaction.request_ = config => { - assert.deepStrictEqual(config.gaxOpts, {}); - done(); - }; + transaction.request_ = config => { + assert.deepStrictEqual(config.gaxOpts, {}); + done(); + }; - transaction.commit(gaxOptions); - }); + transaction.commit(gaxOptions); + }); - it('should skip the commit', done => { - transaction.skipCommit = true; + it('should skip the commit', done => { + transaction.skipCommit = true; - // If called, the test will blow up. - transaction.request_ = done; + // If called, the test will blow up. + transaction.request_ = done; - transaction.commit(done); - }); + transaction.commit(done); + }); - describe('errors', () => { - const error = new Error('Error.'); - const apiResponse = {}; + describe('errors', () => { + const error = new Error('Error.'); + const apiResponse = {}; - const rollbackError = new Error('Error.'); - const rollbackApiResponse = {}; + const rollbackError = new Error('Error.'); + const rollbackApiResponse = {}; - beforeEach(() => { - transaction.rollback = ((callback: Function) => { - callback(rollbackError, rollbackApiResponse); - }) as Any; + beforeEach(() => { + transaction.rollback = ((callback: Function) => { + callback(rollbackError, rollbackApiResponse); + }) as Any; - transaction.request_ = (config, callback) => { - callback(error, apiResponse); - }; - }); + transaction.request_ = (config, callback) => { + callback(error, apiResponse); + }; + }); - it('should pass the commit error to the callback', done => { - transaction.commit((err, resp) => { - assert.strictEqual(err, error); - assert.strictEqual(resp, apiResponse); - done(); + it('should pass the commit error to the callback', done => { + transaction.commit((err, resp) => { + assert.strictEqual(err, error); + assert.strictEqual(resp, apiResponse); + done(); + }); + }); }); - }); - }); - - it('should pass apiResponse to callback', done => { - const resp = {success: true}; - transaction.request_ = (config, callback) => { - callback(null, resp); - }; - transaction.commit((err, apiResponse) => { - assert.ifError(err); - assert.deepStrictEqual(resp, apiResponse); - done(); - }); - }); - - it('should group mutations & execute original methods', () => { - const deleteArg1 = key(['Product', 123]); - const deleteArg2 = key(['Product', 234]); - const saveArg1 = {key: key(['Product', 345]), data: ''}; - const saveArg2 = {key: key(['Product', 456]), data: ''}; + it('should pass apiResponse to callback', done => { + const resp = {success: true}; + transaction.request_ = (config, callback) => { + callback(null, resp); + }; + transaction.commit((err, apiResponse) => { + assert.ifError(err); + assert.deepStrictEqual(resp, apiResponse); + done(); + }); + }); - // Queue saves & deletes in varying order. - transaction.delete(deleteArg1); - transaction.save(saveArg1); - transaction.delete(deleteArg2); - transaction.save(saveArg2); + it('should group mutations & execute original methods', () => { + const deleteArg1 = key(['Product', 123]); + const deleteArg2 = key(['Product', 234]); - const args: Array<{}> = []; + const saveArg1 = {key: key(['Product', 345]), data: ''}; + const saveArg2 = {key: key(['Product', 456]), data: ''}; - const deleteStub = sinon - .stub(Datastore.prototype, 'delete') - .callsFake(a => { - args.push(a); - }); - const saveStub = sinon.stub(Datastore.prototype, 'save').callsFake(a => { - args.push(a); - }); + // Queue saves & deletes in varying order. + transaction.delete(deleteArg1); + transaction.save(saveArg1); + transaction.delete(deleteArg2); + transaction.save(saveArg2); - transaction.request_ = () => {}; + const args: Array<{}> = []; - transaction.commit(); + const deleteStub = sinon + .stub(Datastore.prototype, 'delete') + .callsFake(a => { + args.push(a); + }); + const saveStub = sinon + .stub(Datastore.prototype, 'save') + .callsFake(a => { + args.push(a); + }); - assert.strictEqual(deleteStub.calledOnce, true); - assert.strictEqual(saveStub.calledOnce, true); + transaction.request_ = () => {}; - assert.strictEqual(args.length, 2); + transaction.commit(); - // Save arguments must come first. - assert.deepStrictEqual(args, [ - [saveArg1, saveArg2], - [deleteArg1, deleteArg2], - ]); - }); + assert.strictEqual(deleteStub.calledOnce, true); + assert.strictEqual(saveStub.calledOnce, true); - it('should honor ordering of mutations (last wins)', () => { - // The delete should be ignored. - transaction.delete(key(['Product', 123])); - transaction.save({key: key(['Product', 123]), data: ''}); + assert.strictEqual(args.length, 2); - const deleteSpy = sinon - .stub(Datastore.prototype, 'delete') - .callsFake(() => {}); - const saveStub = sinon - .stub(Datastore.prototype, 'save') - .callsFake(() => {}); + // Save arguments must come first. + assert.deepStrictEqual(args, [ + [saveArg1, saveArg2], + [deleteArg1, deleteArg2], + ]); + }); - transaction.request_ = () => {}; + it('should honor ordering of mutations (last wins)', () => { + // The delete should be ignored. + transaction.delete(key(['Product', 123])); + transaction.save({key: key(['Product', 123]), data: ''}); - transaction.commit(); - assert.strictEqual(deleteSpy.notCalled, true); - assert.strictEqual(saveStub.calledOnce, true); - }); + const deleteSpy = sinon + .stub(Datastore.prototype, 'delete') + .callsFake(() => {}); + const saveStub = sinon + .stub(Datastore.prototype, 'save') + .callsFake(() => {}); - it('should not squash key-incomplete mutations', done => { - transaction.save({key: key(['Product']), data: ''}); - transaction.save({key: key(['Product']), data: ''}); + transaction.request_ = () => {}; - sinon - .stub(Datastore.prototype, 'save') - .callsFake((entities: Entity[]) => { - assert.strictEqual(entities.length, 2); - done(); + transaction.commit(); + assert.strictEqual(deleteSpy.notCalled, true); + assert.strictEqual(saveStub.calledOnce, true); }); - transaction.request_ = () => {}; + it('should not squash key-incomplete mutations', done => { + transaction.save({key: key(['Product']), data: ''}); + transaction.save({key: key(['Product']), data: ''}); - transaction.commit(); - }); + sinon + .stub(Datastore.prototype, 'save') + .callsFake((entities: Entity[]) => { + assert.strictEqual(entities.length, 2); + done(); + }); - it('should send the built request object', done => { - transaction.requests_ = [ - { - mutations: [{a: 'b'}, {c: 'd'}], - }, - { - mutations: [{e: 'f'}, {g: 'h'}], - }, - ]; + transaction.request_ = () => {}; - transaction.request_ = config => { - assert.deepStrictEqual(config.reqOpts, { - mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], + transaction.commit(); }); - done(); - }; - transaction.commit(); - }); - - it('should execute the queued callbacks', () => { - let cb1Called = false; - let cb2Called = false; - - transaction.requestCallbacks_ = [ - () => { - cb1Called = true; - }, - () => { - cb2Called = true; - }, - ]; + it('should send the built request object', done => { + transaction.requests_ = [ + { + mutations: [{a: 'b'}, {c: 'd'}], + }, + { + mutations: [{e: 'f'}, {g: 'h'}], + }, + ]; - transaction.request_ = (config, cb) => { - cb(); - }; + transaction.request_ = config => { + assert.deepStrictEqual(config.reqOpts, { + mutations: [{a: 'b'}, {c: 'd'}, {e: 'f'}, {g: 'h'}], + }); + done(); + }; - transaction.commit(); + transaction.commit(); + }); - assert(cb1Called); - assert(cb2Called); - }); - }); - - describe('createQuery', () => { - it('should return query from datastore.createQuery', () => { - const args = ['0', '1']; // Query only accepts to accept string||null values - const createQueryReturnValue = {}; - - transaction.datastore.createQuery = function (...ags: Any) { - assert.strictEqual(this, transaction); - assert.strictEqual(ags[0], args[0]); - assert.strictEqual(ags[1], args[1]); - return createQueryReturnValue as Query; - }; - - const query = transaction.createQuery(args[0], args[1]); // verbose de-structure - assert.strictEqual(query, createQueryReturnValue); - }); - }); + it('should execute the queued callbacks', () => { + let cb1Called = false; + let cb2Called = false; - describe('delete', () => { - it('should push entities into a queue', () => { - const keys = [key('Product123'), key('Product234'), key('Product345')]; + transaction.requestCallbacks_ = [ + () => { + cb1Called = true; + }, + () => { + cb2Called = true; + }, + ]; - transaction.delete(keys); + transaction.request_ = (config, cb) => { + cb(); + }; - assert.strictEqual(transaction.modifiedEntities_.length, keys.length); + transaction.commit(); - transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { - assert.strictEqual(queuedEntity.method, 'delete'); - assert(keys.indexOf(queuedEntity.entity.key) > -1); - assert.deepStrictEqual(queuedEntity.args, [queuedEntity.entity.key]); + assert(cb1Called); + assert(cb2Called); + }); }); - }); - }); - describe('insert', () => { - afterEach(() => { - sinon.restore(); - }); + describe('createQuery', () => { + it('should return query from datastore.createQuery', () => { + const args = ['0', '1']; // Query only accepts to accept string||null values + const createQueryReturnValue = {}; - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'insert', - }); + transaction.datastore.createQuery = function (...ags: Any) { + assert.strictEqual(this, transaction); + assert.strictEqual(ags[0], args[0]); + assert.strictEqual(ags[1], args[1]); + return createQueryReturnValue as Query; + }; - sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; + const query = transaction.createQuery(args[0], args[1]); // verbose de-structure + assert.strictEqual(query, createQueryReturnValue); + }); }); - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; + describe('delete', () => { + it('should push entities into a queue', () => { + const keys = [ + key('Product123'), + key('Product234'), + key('Product345'), + ]; + + transaction.delete(keys); + + assert.strictEqual(transaction.modifiedEntities_.length, keys.length); + + transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { + assert.strictEqual(queuedEntity.method, 'delete'); + assert(keys.indexOf(queuedEntity.entity.key) > -1); + assert.deepStrictEqual(queuedEntity.args, [ + queuedEntity.entity.key, + ]); + }); + }); + }); - transaction.insert(entityObject); - }); + describe('insert', () => { + afterEach(() => { + sinon.restore(); + }); - it('should pass the correct arguments to save', done => { - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { method: 'insert', - }, - ]); - done(); - }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - transaction.insert({key, data: {}}); - }); - }); - - describe('rollback', () => { - beforeEach(() => { - transaction.id = TRANSACTION_ID; - }); - - it('should rollback', done => { - transaction.request_ = config => { - assert.strictEqual(config.client, 'DatastoreClient'); - assert.strictEqual(config.method, 'rollback'); - assert.deepStrictEqual(config.gaxOpts, {}); - done(); - }; - transaction.rollback(); - }); + }); - it('should allow setting gaxOptions', done => { - const gaxOptions = {}; + sinon + .stub(DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - transaction.request_ = config => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - transaction.rollback(gaxOptions); - }); + transaction.insert(entityObject); + }); - it('should pass error to callback', done => { - const error = new Error('Error.'); - transaction.request_ = (config, callback) => { - callback(error); - }; - transaction.rollback(err => { - assert.deepStrictEqual(err, error); - done(); + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'insert', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.insert({key, data: {}}); + }); }); - }); - it('should pass apiResponse to callback', done => { - const resp = {success: true}; - transaction.request_ = (config, callback) => { - callback(null, resp); - }; - transaction.rollback((err, apiResponse) => { - assert.ifError(err); - assert.deepStrictEqual(resp, apiResponse); - done(); - }); - }); + describe('rollback', () => { + beforeEach(() => { + transaction.id = TRANSACTION_ID; + }); - it('should set skipCommit', done => { - transaction.request_ = (config, callback) => { - callback(); - }; - transaction.rollback(() => { - assert.strictEqual(transaction.skipCommit, true); - done(); - }); - }); + it('should rollback', done => { + transaction.request_ = config => { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'rollback'); + assert.deepStrictEqual(config.gaxOpts, {}); + done(); + }; + transaction.rollback(); + }); - it('should set skipCommit when rollback errors', done => { - transaction.request_ = (config, callback) => { - callback(new Error('Error.')); - }; - transaction.rollback(() => { - assert.strictEqual(transaction.skipCommit, true); - done(); - }); - }); - }); - - describe('run', () => { - it('should make the correct API request', done => { - transaction.request_ = config => { - assert.strictEqual(config.client, 'DatastoreClient'); - assert.strictEqual(config.method, 'beginTransaction'); - assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); - assert.strictEqual(config.gaxOpts, undefined); - done(); - }; - - transaction.run(assert.ifError); - }); + it('should allow setting gaxOptions', done => { + const gaxOptions = {}; - it('should allow setting gaxOptions', done => { - const gaxOptions = {}; + transaction.request_ = config => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; - transaction.request_ = config => { - assert.strictEqual(config.gaxOpts, gaxOptions); - done(); - }; + transaction.rollback(gaxOptions); + }); - transaction.run({gaxOptions}); - }); + it('should pass error to callback', done => { + const error = new Error('Error.'); + transaction.request_ = (config, callback) => { + callback(error); + }; + transaction.rollback(err => { + assert.deepStrictEqual(err, error); + done(); + }); + }); - describe('options.readOnly', () => { - it('should respect the readOnly option', done => { - const options = { - readOnly: true, - }; + it('should pass apiResponse to callback', done => { + const resp = {success: true}; + transaction.request_ = (config, callback) => { + callback(null, resp); + }; + transaction.rollback((err, apiResponse) => { + assert.ifError(err); + assert.deepStrictEqual(resp, apiResponse); + done(); + }); + }); - transaction.request_ = (config: Any) => { - assert.deepStrictEqual( - config.reqOpts.transactionOptions.readOnly, - {} - ); - done(); - }; + it('should set skipCommit', done => { + transaction.request_ = (config, callback) => { + callback(); + }; + transaction.rollback(() => { + assert.strictEqual(transaction.skipCommit, true); + done(); + }); + }); - transaction.run(options, assert.ifError); + it('should set skipCommit when rollback errors', done => { + transaction.request_ = (config, callback) => { + callback(new Error('Error.')); + }; + transaction.rollback(() => { + assert.strictEqual(transaction.skipCommit, true); + done(); + }); + }); }); - it('should respect the global readOnly option', done => { - transaction.readOnly = true; + describe('run', () => { + it('should make the correct API request', done => { + transaction.request_ = config => { + assert.strictEqual(config.client, 'DatastoreClient'); + assert.strictEqual(config.method, 'beginTransaction'); + assert.deepStrictEqual(config.reqOpts, {transactionOptions: {}}); + assert.strictEqual(config.gaxOpts, undefined); + done(); + }; + + transaction.run(assert.ifError); + }); - transaction.request_ = config => { - assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readOnly, - {} - ); - done(); - }; + it('should allow setting gaxOptions', done => { + const gaxOptions = {}; - transaction.run(assert.ifError); - }); - }); + transaction.request_ = config => { + assert.strictEqual(config.gaxOpts, gaxOptions); + done(); + }; - describe('options.transactionId', () => { - it('should respect the transactionId option', done => { - const options = { - transactionId: 'transaction-id', - }; + transaction.run({gaxOptions}); + }); - transaction.request_ = config => { - assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readWrite, - { - previousTransaction: options.transactionId, - } - ); - done(); - }; + describe('options.readOnly', () => { + it('should respect the readOnly option', done => { + const options = { + readOnly: true, + }; + + transaction.request_ = (config: Any) => { + assert.deepStrictEqual( + config.reqOpts.transactionOptions.readOnly, + {} + ); + done(); + }; - transaction.run(options, assert.ifError); - }); + transaction.run(options, assert.ifError); + }); - it('should respect the global transactionId option', done => { - transaction.id = 'transaction-id'; + it('should respect the global readOnly option', done => { + transaction.readOnly = true; - transaction.request_ = config => { - assert.deepStrictEqual( - config.reqOpts!.transactionOptions!.readWrite, - { - previousTransaction: transaction.id, - } - ); - done(); - }; + transaction.request_ = config => { + assert.deepStrictEqual( + config.reqOpts!.transactionOptions!.readOnly, + {} + ); + done(); + }; - transaction.run(assert.ifError); - }); - }); + transaction.run(assert.ifError); + }); + }); - describe('options.transactionOptions', () => { - it('should allow full override of transactionOptions', done => { - transaction.readOnly = true; + describe('options.transactionId', () => { + it('should respect the transactionId option', done => { + const options = { + transactionId: 'transaction-id', + }; + + transaction.request_ = config => { + assert.deepStrictEqual( + config.reqOpts!.transactionOptions!.readWrite, + { + previousTransaction: options.transactionId, + } + ); + done(); + }; - const options = { - transactionOptions: { - readWrite: { - previousTransaction: 'transaction-id', - }, - }, - } as {} as TransactionOptions; + transaction.run(options, assert.ifError); + }); - transaction.request_ = config => { - assert.deepStrictEqual(config.reqOpts, options); - done(); - }; + it('should respect the global transactionId option', done => { + transaction.id = 'transaction-id'; - transaction.run(options, assert.ifError); - }); - }); + transaction.request_ = config => { + assert.deepStrictEqual( + config.reqOpts!.transactionOptions!.readWrite, + { + previousTransaction: transaction.id, + } + ); + done(); + }; + + transaction.run(assert.ifError); + }); + }); - describe('error', () => { - const error = new Error('Error.'); - const apiResponse = {}; + describe('options.transactionOptions', () => { + it('should allow full override of transactionOptions', done => { + transaction.readOnly = true; - beforeEach(() => { - transaction.request_ = (config, callback) => { - callback(error, apiResponse); - }; - }); + const options = { + transactionOptions: { + readWrite: { + previousTransaction: 'transaction-id', + }, + }, + } as {} as TransactionOptions; + + transaction.request_ = (config: RequestConfig) => { + assert.deepStrictEqual(config.reqOpts, options); + done(); + }; - it('should pass error & API response to callback', done => { - transaction.run((err, transaction, apiResponse_) => { - assert.strictEqual(err, error); - assert.strictEqual(transaction, null); - assert.strictEqual(apiResponse_, apiResponse); - done(); + transaction.run(options, assert.ifError); + }); }); - }); - }); - describe('success', () => { - const apiResponse = { - transaction: TRANSACTION_ID, - }; + describe('error', () => { + const error = new Error('Error.'); + const apiResponse = {}; + + beforeEach(() => { + transaction.request_ = (config, callback) => { + callback(error, apiResponse); + }; + }); + + it('should pass error & API response to callback', done => { + transaction.run((err, transaction, apiResponse_) => { + assert.strictEqual(err, error); + assert.strictEqual(transaction, null); + assert.strictEqual(apiResponse_, apiResponse); + done(); + }); + }); + }); - beforeEach(() => { - transaction.request_ = (config, callback) => { - callback(null, apiResponse); - }; - }); + describe('success', () => { + const apiResponse = { + transaction: TRANSACTION_ID, + }; + + beforeEach(() => { + transaction.request_ = (config, callback) => { + callback(null, apiResponse); + }; + }); + + it('should set transaction id', done => { + delete transaction.id; + transaction.run((err: Error | null) => { + assert.ifError(err); + assert.strictEqual(transaction.id, TRANSACTION_ID); + done(); + }); + }); - it('should set transaction id', done => { - delete transaction.id; - transaction.run((err: Error | null) => { - assert.ifError(err); - assert.strictEqual(transaction.id, TRANSACTION_ID); - done(); + it('should exec callback with Transaction & apiResponse', done => { + transaction.run((err, transaction_, apiResponse_) => { + assert.ifError(err); + assert.strictEqual(transaction_, transaction); + assert.deepStrictEqual(apiResponse_, apiResponse); + done(); + }); + }); }); }); - it('should exec callback with Transaction & apiResponse', done => { - transaction.run((err, transaction_, apiResponse_) => { - assert.ifError(err); - assert.strictEqual(transaction_, transaction); - assert.deepStrictEqual(apiResponse_, apiResponse); - done(); + describe('save', () => { + it('should push entities into a queue', () => { + const entities = [ + {key: key('Product123'), data: 123}, + {key: key('Product234'), data: 234}, + {key: key('Product345'), data: 345}, + ]; + transaction.save(entities); + assert.strictEqual( + transaction.modifiedEntities_.length, + entities.length + ); + transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { + assert.strictEqual(queuedEntity.method, 'save'); + const match = entities.filter(ent => { + return ent.key === queuedEntity.entity.key; + })[0]; + assert.deepStrictEqual(queuedEntity.args, [match]); + }); }); }); - }); - }); - - describe('save', () => { - it('should push entities into a queue', () => { - const entities = [ - {key: key('Product123'), data: 123}, - {key: key('Product234'), data: 234}, - {key: key('Product345'), data: 345}, - ]; - transaction.save(entities); - assert.strictEqual(transaction.modifiedEntities_.length, entities.length); - transaction.modifiedEntities_.forEach((queuedEntity: Entity) => { - assert.strictEqual(queuedEntity.method, 'save'); - const match = entities.filter(ent => { - return ent.key === queuedEntity.entity.key; - })[0]; - assert.deepStrictEqual(queuedEntity.args, [match]); - }); - }); - }); - describe('update', () => { - afterEach(() => { - sinon.restore(); - }); + describe('update', () => { + afterEach(() => { + sinon.restore(); + }); - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'update', - }); + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'update', + }); - sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; - }); + sinon + .stub(DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - transaction.update(entityObject); - }); + transaction.update(entityObject); + }); - it('should pass the correct arguments to save', done => { - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'update', - }, - ]); - done(); - }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - transaction.update({key, data: {}}); - }); - }); + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'update', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.update({key, data: {}}); + }); + }); - describe('upsert', () => { - afterEach(() => { - sinon.restore(); - }); + describe('upsert', () => { + afterEach(() => { + sinon.restore(); + }); - it('should prepare entity objects', done => { - const entityObject = {}; - const preparedEntityObject = {prepared: true}; - const expectedEntityObject = Object.assign({}, preparedEntityObject, { - method: 'upsert', - }); + it('should prepare entity objects', done => { + const entityObject = {}; + const preparedEntityObject = {prepared: true}; + const expectedEntityObject = Object.assign({}, preparedEntityObject, { + method: 'upsert', + }); - sinon.stub(DatastoreRequest, 'prepareEntityObject_').callsFake(obj => { - assert.strictEqual(obj, entityObject); - return preparedEntityObject as {}; - }); + sinon + .stub(DatastoreRequest, 'prepareEntityObject_') + .callsFake(obj => { + assert.strictEqual(obj, entityObject); + return preparedEntityObject as {}; + }); - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(entities[0], expectedEntityObject); - done(); - }; + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(entities[0], expectedEntityObject); + done(); + }; - transaction.upsert(entityObject); - }); + transaction.upsert(entityObject); + }); - it('should pass the correct arguments to save', done => { - transaction.save = (entities: Entity[]) => { - assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ - { - key: { - namespace: 'ns', - kind: 'Company', - path: ['Company', null], - }, - data: {}, - method: 'upsert', - }, - ]); - done(); - }; - const key = new entity.Key({namespace: 'ns', path: ['Company']}); - transaction.upsert({key, data: {}}); + it('should pass the correct arguments to save', done => { + transaction.save = (entities: Entity[]) => { + assert.deepStrictEqual(JSON.parse(JSON.stringify(entities)), [ + { + key: { + namespace: 'ns', + kind: 'Company', + path: ['Company', null], + }, + data: {}, + method: 'upsert', + }, + ]); + done(); + }; + const key = new entity.Key({namespace: 'ns', path: ['Company']}); + transaction.upsert({key, data: {}}); + }); + }); }); - }); -}); + } +); From 2221a424e604cabdced510fa7efce9d0ca934f1c Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 29 Sep 2023 16:33:57 -0400 Subject: [PATCH 742/820] fix: Allow users to set environment variable to connect to emulator running on docker (#1164) * Check if DATASTORE_EMULATOR_HOST is set Instead of checking to see if the endpoint is local, we should check to see if the datastore emulator variable is set. This is because there is an edge case where the user is using an emulator, but the emulator is not listening from local host and in this case we want to use insecure credentials. * Add tests for combinations of emulator / custom Add unit tests for evaluating value of ssl credentials. Tests evaluate what happens when the user uses remote custom endpoints or local custom endpoints in combination with different values for the DATASTORE_EMULATOR_HOST variable. * Revert "Check if DATASTORE_EMULATOR_HOST is set" This reverts commit dea17068dade6272377ff02580490a2d9246899e. * Revert "Revert "Check if DATASTORE_EMULATOR_HOST is set"" This reverts commit a3b50dfa4351616d9f49a1cc5263015391f92bdd. * Clean up the tests The tests should use a concise apiEndpoint variable and they should set the host for the remote case to be the same as the apiEndpoint variable. * Add more test cases describing all behaviour More test cases are needed to describe what happens when the DATASTORE_EMULATOR_HOST variable is not set both in a remote and in a localhost environment because those behaviors should be different. Setting the apiEndpoint to localhost means the user wants to use the emulator without specifying the environment variable so insecure credentials should be provided. Setting the apiEndpoint to remote means the user likely wishes to use regional endpoints so should not be using insecure credentials to skip authentication. * Allows test cases to pass from previous commit If the user uses localhost as the endpoint or they provide DATASTORE_EMULATOR_HOST then it is assumed that the user is using the emulator and authentication is skipped. Otherwise, authentication is not skipped. * Change old test title back to the way it was The old test title should be what it was before. setHost is now only needed in one place. * Add comments to each test The comments need to be added to explain why the test is written the way that it is written so that we know the motivation behind each test. --- handwritten/nodejs-datastore/src/index.ts | 4 +- handwritten/nodejs-datastore/test/index.ts | 133 +++++++++++++++++++++ 2 files changed, 136 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 27f9f37cea3..3d3162cda06 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -505,11 +505,13 @@ class Datastore extends DatastoreRequest { }, options ); - const isUsingEmulator = + const isUsingLocalhost = this.baseUrl_ && (this.baseUrl_.includes('localhost') || this.baseUrl_.includes('127.0.0.1') || this.baseUrl_.includes('::1')); + const isEmulatorVariableSet = process.env.DATASTORE_EMULATOR_HOST; + const isUsingEmulator = isUsingLocalhost || isEmulatorVariableSet; if (this.customEndpoint_ && isUsingEmulator) { this.options.sslCreds ??= grpc.credentials.createInsecure(); } diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index f0bfae0da22..6b9d2b9b603 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -316,6 +316,139 @@ async.each( assert.strictEqual(datastore.options.sslCreds, fakeInsecureCreds); }); + describe('checking ssl credentials are set correctly with custom endpoints', () => { + function setHost(host: string) { + process.env.DATASTORE_EMULATOR_HOST = host; + } + + const sslCreds = gax.grpc.ChannelCredentials.createSsl(); + const fakeInsecureCreds = { + insecureCredProperty: 'insecureCredPropertyValue', + }; + + beforeEach(() => { + createInsecureOverride = () => { + return fakeInsecureCreds; + }; + }); + + describe('without DATASTORE_EMULATOR_HOST environment variable set', () => { + beforeEach(() => { + delete process.env.DATASTORE_EMULATOR_HOST; + }); + + describe('using a localhost endpoint', () => { + const apiEndpoint = 'http://localhost:8080'; + it('should use ssl credentials provided', () => { + // SSL credentials provided in the constructor should always be used. + const options = { + apiEndpoint, + sslCreds, + }; + const datastore = new Datastore(options); + assert.strictEqual(datastore.options.sslCreds, sslCreds); + }); + it('should use insecure ssl credentials when ssl credentials are not provided', () => { + // When using a localhost endpoint it is assumed that the emulator is being used. + // Therefore, sslCreds should be set to insecure credentials to skip authentication. + const datastore = new Datastore({ + apiEndpoint, + }); + assert.strictEqual( + datastore.options.sslCreds, + fakeInsecureCreds + ); + }); + }); + describe('using a remote endpoint', () => { + const apiEndpoint = 'http://remote:8080'; + it('should use ssl credentials provided', () => { + // SSL credentials provided in the constructor should always be used. + const options = { + apiEndpoint, + sslCreds, + }; + const datastore = new Datastore(options); + assert.strictEqual(datastore.options.sslCreds, sslCreds); + }); + it('should not set ssl credentials when ssl credentials are not provided', () => { + // When using a remote endpoint without DATASTORE_EMULATOR_HOST set, + // it is assumed that the emulator is not being used. + // This test captures the case where users use a regional endpoint. + const datastore = new Datastore({ + apiEndpoint, + }); + assert.strictEqual(datastore.options.sslCreds, undefined); + }); + }); + }); + describe('with DATASTORE_EMULATOR_HOST environment variable set', () => { + beforeEach(() => { + delete process.env.DATASTORE_EMULATOR_HOST; + }); + + describe('with DATASTORE_EMULATOR_HOST set to localhost', () => { + const apiEndpoint = 'http://localhost:8080'; + beforeEach(() => { + setHost(apiEndpoint); + }); + + it('should use ssl credentials provided', () => { + // SSL credentials provided in the constructor should always be used. + const datastore = new Datastore({ + apiEndpoint, + sslCreds, + }); + assert.strictEqual(datastore.options.sslCreds, sslCreds); + }); + + it('should use insecure ssl credentials when ssl credentials are not provided', () => { + // When DATASTORE_EMULATOR_HOST is set it is assumed that the emulator is being used. + // Therefore, sslCreds should be set to insecure credentials to skip authentication. + const datastore = new Datastore({ + apiEndpoint, + }); + assert.strictEqual( + datastore.options.sslCreds, + fakeInsecureCreds + ); + }); + }); + + describe('with DATASTORE_EMULATOR_HOST set to remote host', () => { + const apiEndpoint = 'http://remote:8080'; + beforeEach(() => { + setHost(apiEndpoint); + }); + + it('should use ssl credentials provided', () => { + // SSL credentials provided in the constructor should always be used. + const datastore = new Datastore({ + apiEndpoint, + sslCreds, + }); + assert.strictEqual(datastore.options.sslCreds, sslCreds); + }); + + it('should use insecure ssl credentials when ssl credentials are not provided', () => { + // When DATASTORE_EMULATOR_HOST is set it is assumed that the emulator is being used. + // Therefore, sslCreds should be set to insecure credentials to skip authentication. + const datastore = new Datastore({ + apiEndpoint, + }); + assert.strictEqual( + datastore.options.sslCreds, + fakeInsecureCreds + ); + }); + }); + + after(() => { + delete process.env.DATASTORE_EMULATOR_HOST; + }); + }); + }); + it('should cache a local GoogleAuth instance', () => { const fakeGoogleAuthInstance = {}; From 9b9155524f712c1788e4b7777b021511f6ae6998 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 29 Sep 2023 16:51:03 -0400 Subject: [PATCH 743/820] fix: Check property existence for exclude from indexes with wildcard (#1114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add a test for testing without mocks Testing without mocks allows us to look at the code how it is functioning right now so that we can evaluate the intended behavior. * Do a refactor on the test Objects shared by both tests should be moved into the outer block so that they can be shared. * improve the test so that the error bubbles up Now the test fails properly and passes properly by introducing callbacks * isolate the latter test right now The failure should be visible to the user and in the current state it is so now by isolating the test it becomes easier to explore solutions that work. * test fixes indent a describe block, modify tests to make sure they pass and refactor a function out that easily allows for testing modified parameters. * Add two more tests for excludeFromIndexes on array Add two more tests that address the array case for excludeIndexesFromPath. Also ensure that the conditions which check for these test cases properly ignore exclude from indexes when an array is used * Move the tests over to the index file We should not create a nomocks file because we can just group the tests under a unique describe block of test/index.ts. * PR update Remove typeof and remove check for string ‘undefined’ * Create a function to refactor the tests Refactor the tests so that they are more readable. There is a lot of repeated code in each test which makes comparisons hard. * All tests for this feature now use same script Replace all tests exercising the feature so that they all use the same test script. This will make the tests way easier to read. * Add parameterized testing Add parameterized testing to eliminate repeated code. These tests need to be easier to read for the sake of the reviewer. * Eliminate function and inline code This function is only used once now. We should inline this code in the test. * Add JSON stringify to test title In the test title include the properties passed in so that it is easy to track what passed/failed. * Organize code so that similar variables are used Similar variables should be used together. Organize the code so that there is less confusion about which variables are related. * inline getExpectedConfig function The getExpectedConfig does not need to be used anymore because its code can just be inlined in the one place it is used. * Separate tests into blocks and inline code Separate the test into blocks and inline some parameters for better test readability. * Add types to parameters passed into async Stronger typing makes the code easier to read. * Eliminate unnecessary variable assignment Don’t assign to the Datastore variable. This is not necessary. Just use the OriginalDatastore variable directly. * Ran linter and simplified source changes The diff will be easier to read if we do not add a nested if statement and instead apply a condition on the if and change the else to else if. * Add blank line back for easier diff reading * Try again, eliminate the blank line * Additional adjustment to entity first path part Apply the first suggestion in the PR to all examples * Define isFirstPathPartUndefined There is a repeated code fragment for checking if the first path part is undefined that we should refactor. * Rename the variable to align with what it does * run linter * Revert "run linter" This reverts commit a101f27120f780a5561e8dfeea3edbaf0cbdd0d6. * Revert "Rename the variable to align with what it does" This reverts commit 4f54d9495b7b37fc0a7a7f5002ec068bf91c7bbc. * Revert "Define isFirstPathPartUndefined" This reverts commit df3f3769926f62bf1ed3ea92bb5aef85974a1e42. * Refactor check out for seeing if defined We do four checks to see if the first path part is defined. We should refactor these checks out. * Move comment to more appropriate place The comment should reflect the next line of code. * Replace comments with description Replace comments with description property so that the tests will report the description when running the tests instead of the properties in the description. * Eliminate prefix. Only use description * fix typo * lowercase convention --- handwritten/nodejs-datastore/src/entity.ts | 14 ++- handwritten/nodejs-datastore/test/index.ts | 136 ++++++++++++++++++++- 2 files changed, 144 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 3d43406a9b6..2c939656de8 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -852,8 +852,11 @@ export namespace entity { return; } + const isFirstPathPartDefined = + entity.properties![firstPathPart] !== undefined; if ( firstPathPartIsArray && + isFirstPathPartDefined && // check also if the property in question is actually an array value. entity.properties![firstPathPart].arrayValue && // check if wildcard is not applied @@ -879,7 +882,12 @@ export namespace entity { ); } }); - } else if (firstPathPartIsArray && hasWildCard && remainderPath === '*') { + } else if ( + firstPathPartIsArray && + hasWildCard && + remainderPath === '*' && + isFirstPathPartDefined + ) { const array = entity.properties![firstPathPart].arrayValue; // eslint-disable-next-line @typescript-eslint/no-explicit-any array.values.forEach((value: any) => { @@ -898,7 +906,7 @@ export namespace entity { excludePathFromEntity(entity, newPath); }); } else { - if (hasWildCard && remainderPath === '*') { + if (hasWildCard && remainderPath === '*' && isFirstPathPartDefined) { const parentEntity = entity.properties![firstPathPart].entityValue; if (parentEntity) { @@ -911,7 +919,7 @@ export namespace entity { } else { excludePathFromEntity(entity, firstPathPart); } - } else { + } else if (isFirstPathPartDefined) { const parentEntity = entity.properties![firstPathPart].entityValue; excludePathFromEntity(parentEntity, remainderPath); } diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 6b9d2b9b603..ab623e0c890 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -20,15 +20,23 @@ import {PassThrough, Readable} from 'stream'; import * as ds from '../src'; import {Datastore, DatastoreOptions} from '../src'; -import {entity, Entity, EntityProto, EntityObject} from '../src/entity'; -import {RequestConfig} from '../src/request'; +import {Datastore as OriginalDatastore} from '../src'; +import { + entity, + Entity, + EntityProto, + EntityObject, + Entities, +} from '../src/entity'; +import {RequestCallback, RequestConfig} from '../src/request'; import * as is from 'is'; import * as sinon from 'sinon'; import * as extend from 'extend'; -const async = require('async'); +import {google} from '../protos/protos'; // eslint-disable-next-line @typescript-eslint/no-var-requires const v1 = require('../src/v1/index.js'); +const async = require('async'); // eslint-disable-next-line @typescript-eslint/no-explicit-any const fakeEntityInit: any = { @@ -2319,6 +2327,128 @@ async.each( }); }); + describe('without using mocks', () => { + describe('on save tests', () => { + const onSaveTests = [ + { + description: + 'should encode a save request without excludeFromIndexes', + properties: {k: {stringValue: 'v'}}, + entitiesWithoutKey: {data: {k: 'v'}}, + }, + { + description: + 'should add exclude from indexes to property k and ignore excludeFromIndexes with wildcard', + properties: {k: {stringValue: 'v', excludeFromIndexes: true}}, + entitiesWithoutKey: { + data: {k: 'v'}, + excludeFromIndexes: ['k', 'k.*'], + }, + }, + { + description: + 'should encode a save request without properties and without excludeFromIndexes', + properties: {}, + entitiesWithoutKey: {data: {}}, + }, + { + description: + 'should encode a save request with no properties ignoring excludeFromIndexes for a property not on save data', + properties: {}, + entitiesWithoutKey: { + data: {}, + excludeFromIndexes: [ + 'non_exist_property', // this just ignored + 'non_exist_property.*', // should also be ignored + ], + }, + }, + { + description: + 'should encode a save request with one property ignoring excludeFromIndexes for a property not on save data', + properties: {k: {stringValue: 'v'}}, + entitiesWithoutKey: { + data: {k: 'v'}, + excludeFromIndexes: [ + 'non_exist_property[]', // this just ignored + ], + }, + }, + { + description: + 'should encode a save request with one property ignoring excludeFromIndexes for a property with a wildcard not on save data', + properties: {k: {stringValue: 'v'}}, + entitiesWithoutKey: { + data: {k: 'v'}, + excludeFromIndexes: [ + 'non_exist_property[].*', // this just ignored + ], + }, + }, + ]; + + async.each( + onSaveTests, + (onSaveTest: { + description: string; + properties: google.datastore.v1.IValue; + entitiesWithoutKey: Entities; + }) => { + it(`${onSaveTest.description}`, async () => { + const datastore = new OriginalDatastore({ + namespace: `${Date.now()}`, + }); + { + // This block of code mocks out request_ to check values passed into it. + const expectedConfig = { + client: 'DatastoreClient', + method: 'commit', + gaxOpts: {}, + reqOpts: { + mutations: [ + { + upsert: { + key: { + path: [{kind: 'Post', name: 'Post1'}], + partitionId: { + namespaceId: datastore.namespace, + }, + }, + properties: onSaveTest.properties, + }, + }, + ], + }, + }; + // Mock out the request function to compare config passed into it. + datastore.request_ = ( + config: RequestConfig, + callback: RequestCallback + ) => { + try { + assert.deepStrictEqual(config, expectedConfig); + callback(null, 'some-data'); + } catch (e: any) { + callback(e); + } + }; + } + { + // Attach key to entities parameter passed in and run save with those parameters. + const key = datastore.key(['Post', 'Post1']); + const entities = Object.assign( + {key}, + onSaveTest.entitiesWithoutKey + ); + const results = await datastore.save(entities); + assert.deepStrictEqual(results, ['some-data']); + } + }); + } + ); + }); + }); + describe('multi-db support', () => { it('should get the database id from the client', async () => { const otherDatastore = new Datastore({ From 537b83e9311f024837ba2a38dcd7545adfc46f85 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 29 Sep 2023 17:41:31 -0400 Subject: [PATCH 744/820] test: Extend the sleep time to allow save to work (#1142) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Extend the sleep time to allow save to work The sleep time should be increased to allow the save time to vary significantly from the variable savedTime so that any time different between the client and the server’s clock is negligible compared to the sleep time. * test: Extend the sleep time to allow save to work * run linter * Reapply sleep commit that was there first --- handwritten/nodejs-datastore/system-test/datastore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 9df6a260195..bf0c6427087 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -499,7 +499,7 @@ async.each( const path = ['Post', 'post1']; const postKey = datastore.key(path); await datastore.save({key: postKey, data: post}); - await sleep(1000); + await sleep(10000); const savedTime = Date.now(); await sleep(1000); // Save new post2 data, but then verify the timestamp read has post1 data From a8233115086b89eec65ed8907c82cd12293de536 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 2 Oct 2023 15:48:45 +0200 Subject: [PATCH 745/820] chore(deps): update dependency pack-n-play to v2 (#1163) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5a93f76e20a..157074ac33c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -71,7 +71,7 @@ "mocha": "^9.2.2", "null-loader": "^4.0.0", "p-queue": "^6.6.1", - "pack-n-play": "^1.0.0-2", + "pack-n-play": "^2.0.0", "proxyquire": "^2.1.3", "sinon": "^16.0.0", "ts-loader": "^8.0.0", From 77ade8d67d72fce38c2dbae99498aa5530fc13b9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:01:48 -0400 Subject: [PATCH 746/820] chore(main): release 8.2.0 (#1153) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 14 ++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 77e5e77329e..29d03bb2f79 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,20 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.2.0](https://github.com/googleapis/nodejs-datastore/compare/v8.1.0...v8.2.0) (2023-10-02) + + +### Features + +* Support for using multiple databases in datastore ([#1090](https://github.com/googleapis/nodejs-datastore/issues/1090)) ([10ce563](https://github.com/googleapis/nodejs-datastore/commit/10ce563dae7e1164d3ee23a5887265c9de7b106f)) + + +### Bug Fixes + +* Allow users to set environment variable to connect to emulator running on docker ([#1164](https://github.com/googleapis/nodejs-datastore/issues/1164)) ([a41741b](https://github.com/googleapis/nodejs-datastore/commit/a41741b1412b1854aeecbe50441aa85015c3d399)) +* Check property existence for exclude from indexes with wildcard ([#1114](https://github.com/googleapis/nodejs-datastore/issues/1114)) ([e6b8ef7](https://github.com/googleapis/nodejs-datastore/commit/e6b8ef74ff10107943d0ae194f9a8d540d8557c1)) +* **deps:** Update dependency sinon to v16 ([#1150](https://github.com/googleapis/nodejs-datastore/issues/1150)) ([0d8b715](https://github.com/googleapis/nodejs-datastore/commit/0d8b7153fc156a4b55e965f39161bd5c19bffff6)) + ## [8.1.0](https://github.com/googleapis/nodejs-datastore/compare/v8.0.0...v8.1.0) (2023-09-07) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 157074ac33c..5208e02521b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.1.0", + "version": "8.2.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 3cd8f31b9f5..a39d5f6d634 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.1.0", + "@google-cloud/datastore": "^8.2.0", "sinon": "^16.0.0" }, "devDependencies": { From 59dc7cd56da49b02a3d2f1acbc5bf783e3523725 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 2 Oct 2023 22:46:01 +0200 Subject: [PATCH 747/820] chore(deps): update dependency jsdoc-fresh to v3 (#1136) Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com> Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 5208e02521b..cfdeb181ab7 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -65,7 +65,7 @@ "gts": "^5.0.0", "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", - "jsdoc-fresh": "^2.0.0", + "jsdoc-fresh": "^3.0.0", "jsdoc-region-tag": "^3.0.0", "linkinator": "^5.0.0", "mocha": "^9.2.2", From 0200eff550ced2c25346d28e259d170c99b79439 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Tue, 3 Oct 2023 11:09:29 -0400 Subject: [PATCH 748/820] fix: Make aggregation query requests run properly inside a transaction (#1166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add a test that ensures the read is txn read When doing a readOnly transaction, the code should do reads from a consistent snapshot so that if a write is done mid-transaction then that doesn’t affect the read value. * Code change that lets test pass This code change ensures transactions that run aggregate queries actually make the request as an aggregate query. * Add a test to verify run query results Verify run query results at a particular time so that we know what data we are working with for the rest of the aggregate query tests. * linting fix --- handwritten/nodejs-datastore/src/request.ts | 7 ++- .../nodejs-datastore/system-test/datastore.ts | 46 ++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 6cc05b90937..d39f572efd3 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1000,7 +1000,12 @@ class DatastoreRequest { reqOpts.transaction = this.id; } - if (isTransaction && (method === 'lookup' || method === 'runQuery')) { + if ( + isTransaction && + (method === 'lookup' || + method === 'runQuery' || + method === 'runAggregationQuery') + ) { if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { throw new Error( 'Read consistency cannot be specified in a transaction.' diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index bf0c6427087..839eca608a5 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -17,7 +17,7 @@ import {readFileSync} from 'fs'; import * as path from 'path'; import {after, before, describe, it} from 'mocha'; import * as yaml from 'js-yaml'; -import {Datastore, DatastoreOptions, Index} from '../src'; +import {Datastore, DatastoreOptions, Index, Transaction} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; import {AggregateField} from '../src/aggregate'; @@ -1857,6 +1857,16 @@ async.each( }); describe('aggregate query within a transaction', async () => { + it('should run a query and return the results', async () => { + // Add a test here to verify what the data is at this time. + // This will be a valuable reference for tests in this describe block. + const query = datastore.createQuery('Company'); + const [results] = await datastore.runQuery(query); + assert.deepStrictEqual( + results.map(result => result.rating), + [100, 100] + ); + }); it('should aggregate query within a count transaction', async () => { const transaction = datastore.transaction(); await transaction.run(); @@ -1914,6 +1924,40 @@ async.each( assert.deepStrictEqual(result, [{'average rating': 100}]); await transaction.commit(); }); + it('readOnly transaction should see consistent snapshot of database', async () => { + async function getResults(transaction: Transaction) { + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + assert.fail( + 'The aggregation query run should have been successful' + ); + } + return result; + } + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction({readOnly: true}); + await transaction.run(); + const results = await getResults(transaction); + assert.deepStrictEqual(results, [{total: 2}]); + await datastore.save([ + { + key, + data: { + rating: 100, + }, + }, + ]); + const resultsAgain = await getResults(transaction); + assert.deepStrictEqual(resultsAgain, [{total: 2}]); + await transaction.commit(); + }); }); it('should read in a readOnly transaction', async () => { From c9647834ff6663f6e1daa2dc7e2ba40d78f13f68 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 13:30:57 -0400 Subject: [PATCH 749/820] chore(main): release 8.2.1 (#1168) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 29d03bb2f79..bc443636130 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.2.1](https://github.com/googleapis/nodejs-datastore/compare/v8.2.0...v8.2.1) (2023-10-03) + + +### Bug Fixes + +* Make aggregation query requests run properly inside a transaction ([#1166](https://github.com/googleapis/nodejs-datastore/issues/1166)) ([263804b](https://github.com/googleapis/nodejs-datastore/commit/263804b768322de39bf87b4c5265c303a2bda173)) + ## [8.2.0](https://github.com/googleapis/nodejs-datastore/compare/v8.1.0...v8.2.0) (2023-10-02) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index cfdeb181ab7..ca90de062f9 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.2.0", + "version": "8.2.1", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index a39d5f6d634..7957ef38031 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.2.0", + "@google-cloud/datastore": "^8.2.1", "sinon": "^16.0.0" }, "devDependencies": { From 9b84dc1e6e59d7b659fda1de588b2e44ac9edfff Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 09:47:22 -0400 Subject: [PATCH 750/820] chore(nodejs): Add `system-test/fixtures` to `.eslintignore` (#1170) * fix: Add `system-test/fixtures` to `.eslintignore` * refactor: Use `**` Source-Link: https://github.com/googleapis/synthtool/commit/b7858ba70e8acabc89d13558a71dd9318a57034a Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:abc68a9bbf4fa808b25fa16d3b11141059dc757dbc34f024744bba36c200b40f Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/.eslintignore | 1 + .../nodejs-datastore/system-test/datastore.ts | 30 ++++++++----------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/handwritten/nodejs-datastore/.eslintignore b/handwritten/nodejs-datastore/.eslintignore index ea5b04aebe6..c4a0963e9bd 100644 --- a/handwritten/nodejs-datastore/.eslintignore +++ b/handwritten/nodejs-datastore/.eslintignore @@ -5,3 +5,4 @@ build/ docs/ protos/ samples/generated/ +system-test/**/fixtures diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 839eca608a5..2d1e6bdc199 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -357,9 +357,8 @@ async.each( const query = defaultDatastore .createQuery('Post') .hasAncestor(postKey); - const [defaultDatastoreResults] = await defaultDatastore.runQuery( - query - ); + const [defaultDatastoreResults] = + await defaultDatastore.runQuery(query); assert.strictEqual(defaultDatastoreResults.length, 1); const [entity] = await defaultDatastore.get(postKey); assert.strictEqual(entity.author, 'Silvano'); @@ -368,9 +367,8 @@ async.each( namespace, databaseId: SECOND_DATABASE_ID, }); - const [secondDatastoreResults] = await otherDatastore.runQuery( - query - ); + const [secondDatastoreResults] = + await otherDatastore.runQuery(query); assert.strictEqual(secondDatastoreResults.length, 0); const [otherEntity] = await otherDatastore.get(postKey); assert(typeof otherEntity === 'undefined'); @@ -383,13 +381,11 @@ async.each( const query = defaultDatastore .createQuery('Post') .hasAncestor(postKey); - const [defaultDatastoreResults] = await defaultDatastore.runQuery( - query - ); + const [defaultDatastoreResults] = + await defaultDatastore.runQuery(query); assert.strictEqual(defaultDatastoreResults.length, 0); - const [originalSecondaryResults] = await defaultDatastore.runQuery( - query - ); + const [originalSecondaryResults] = + await defaultDatastore.runQuery(query); assert.strictEqual(originalSecondaryResults.length, 0); const [entity] = await defaultDatastore.get(postKey); assert(typeof entity === 'undefined'); @@ -399,9 +395,8 @@ async.each( databaseId: SECOND_DATABASE_ID, }); await otherDatastore.save({key: postKey, data: post}); - const [secondDatastoreResults] = await otherDatastore.runQuery( - query - ); + const [secondDatastoreResults] = + await otherDatastore.runQuery(query); assert.strictEqual(secondDatastoreResults.length, 1); const [originalResults] = await defaultDatastore.runQuery(query); assert.strictEqual(originalResults.length, 0); @@ -452,9 +447,8 @@ async.each( const query = defaultDatastore .createQuery('Post') .hasAncestor(defaultPostKey); - const [defaultDatastoreResults] = await defaultDatastore.runQuery( - query - ); + const [defaultDatastoreResults] = + await defaultDatastore.runQuery(query); assert.strictEqual(defaultDatastoreResults.length, 1); assert.strictEqual( defaultDatastoreResults[0].author, From b3356ae97c6ea6661bd7934b4f45627aea5e0031 Mon Sep 17 00:00:00 2001 From: sofisl <55454395+sofisl@users.noreply.github.com> Date: Tue, 17 Oct 2023 13:01:08 -0700 Subject: [PATCH 751/820] fix(deps): update google-gax (#1173) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index ca90de062f9..4f29d3353ac 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -45,7 +45,7 @@ "arrify": "^2.0.1", "concat-stream": "^2.0.0", "extend": "^3.0.2", - "google-gax": "^4.0.3", + "google-gax": "^4.0.5", "is": "^3.3.0", "split-array-stream": "^2.0.0", "stream-events": "^1.0.5" From e614d4ca5707cd35c33b7bd94c3c451dbaefde4f Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 13:33:41 -0700 Subject: [PATCH 752/820] chore(main): release 8.2.2 (#1174) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index bc443636130..ea8f1a7a7b3 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.2.2](https://github.com/googleapis/nodejs-datastore/compare/v8.2.1...v8.2.2) (2023-10-17) + + +### Bug Fixes + +* **deps:** Update google-gax ([#1173](https://github.com/googleapis/nodejs-datastore/issues/1173)) ([8237b15](https://github.com/googleapis/nodejs-datastore/commit/8237b152aa906cac55117cdeaf7a8bda85e94ac7)) + ## [8.2.1](https://github.com/googleapis/nodejs-datastore/compare/v8.2.0...v8.2.1) (2023-10-03) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4f29d3353ac..fa0ce7f9148 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.2.1", + "version": "8.2.2", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 7957ef38031..4e647f638cb 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.2.1", + "@google-cloud/datastore": "^8.2.2", "sinon": "^16.0.0" }, "devDependencies": { From aa1326799f5abb742498e6912a43a4add1ce96ce Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 18 Oct 2023 12:32:13 +0200 Subject: [PATCH 753/820] chore(deps): update dependency @types/is to v0.0.24 (#1175) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.23` -> `0.0.24`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.23/0.0.24) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fis/0.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fis/0.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fis/0.0.23/0.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fis/0.0.23/0.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fa0ce7f9148..947fe7b1f6d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@google-cloud/storage": "^7.0.1", "@types/extend": "^3.0.1", - "@types/is": "0.0.23", + "@types/is": "0.0.24", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", "@types/node": "^20.4.9", From b44a77e30c5bb3f77a02cd6e4bb80597a9dcec94 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 18 Oct 2023 12:57:53 -0400 Subject: [PATCH 754/820] test: Change the filter samples to use entity filters (#1172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change the filter samples to use entity filters Property filters should be used in most places instead of the legacy filter functionality. * Get rid of the source import This auto-import breaks the samples tests * run linter * Empty-Commit * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../nodejs-datastore/samples/concepts.js | 88 +++++++++++++------ 1 file changed, 62 insertions(+), 26 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js index 9e1eb741970..6543142b927 100644 --- a/handwritten/nodejs-datastore/samples/concepts.js +++ b/handwritten/nodejs-datastore/samples/concepts.js @@ -21,7 +21,7 @@ const assert = require('assert'); // specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use // the project specified by the GCLOUD_PROJECT environment variable. See // https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication -const {Datastore} = require('@google-cloud/datastore'); +const {Datastore, PropertyFilter, and} = require('@google-cloud/datastore'); function makeStub() { return sinon.stub().returns(Promise.resolve([])); @@ -434,7 +434,7 @@ class Index extends TestHelper { // [START datastore_unindexed_property_query] const query = datastore .createQuery('Task') - .filter('description', '=', 'A task description.'); + .filter(new PropertyFilter('description', '=', 'A task description.')); // [END datastore_unindexed_property_query] return this.datastore.runQuery(query); @@ -487,8 +487,12 @@ class Metadata extends TestHelper { const query = datastore .createQuery('__namespace__') .select('__key__') - .filter('__key__', '>=', startKey) - .filter('__key__', '<', endKey); + .filter( + and([ + new PropertyFilter('__key__', '>=', startKey), + new PropertyFilter('__key__', '<', endKey), + ]) + ); const [entities] = await datastore.runQuery(query); const namespaces = entities.map(entity => entity[datastore.KEY].name); @@ -608,8 +612,12 @@ class Query extends TestHelper { // [START datastore_basic_query] const query = datastore .createQuery('Task') - .filter('done', '=', false) - .filter('priority', '>=', 4) + .filter( + and([ + new PropertyFilter('done', '=', false), + new PropertyFilter('priority', '>=', 4), + ]) + ) .order('priority', { descending: true, }); @@ -658,7 +666,9 @@ class Query extends TestHelper { const datastore = this.datastore; // [START datastore_property_filter] - const query = datastore.createQuery('Task').filter('done', '=', false); + const query = datastore + .createQuery('Task') + .filter(new PropertyFilter('done', '=', false)); // [END datastore_property_filter] return this.datastore.runQuery(query); @@ -670,8 +680,12 @@ class Query extends TestHelper { // [START datastore_composite_filter] const query = datastore .createQuery('Task') - .filter('done', '=', false) - .filter('priority', '=', 4); + .filter( + and([ + new PropertyFilter('done', '=', false), + new PropertyFilter('priority', '=', 4), + ]) + ); // [END datastore_composite_filter] return this.datastore.runQuery(query); @@ -683,7 +697,9 @@ class Query extends TestHelper { // [START datastore_key_filter] const query = datastore .createQuery('Task') - .filter('__key__', '>', datastore.key(['Task', 'someTask'])); + .filter( + new PropertyFilter('__key__', '>', datastore.key(['Task', 'someTask'])) + ); // [END datastore_key_filter] return this.datastore.runQuery(query); @@ -733,7 +749,7 @@ class Query extends TestHelper { // [START datastore_kindless_query] const query = datastore .createQuery() - .filter('__key__', '>', lastSeenKey) + .filter(new PropertyFilter('__key__', '>', lastSeenKey)) .limit(1); // [END datastore_kindless_query] @@ -794,8 +810,12 @@ class Query extends TestHelper { // [START datastore_array_value_inequality_range] const query = datastore .createQuery('Task') - .filter('tag', '>', 'learn') - .filter('tag', '<', 'math'); + .filter( + and([ + new PropertyFilter('tag', '>', 'learn'), + new PropertyFilter('tag', '<', 'math'), + ]) + ); // [END datastore_array_value_inequality_range] return this.datastore.runQuery(query); @@ -807,8 +827,12 @@ class Query extends TestHelper { // [START datastore_array_value_equality] const query = datastore .createQuery('Task') - .filter('tag', '=', 'fun') - .filter('tag', '=', 'programming'); + .filter( + and([ + new PropertyFilter('tag', '=', 'fun'), + new PropertyFilter('tag', '=', 'programming'), + ]) + ); // [END datastore_array_value_equality] return this.datastore.runQuery(query); @@ -820,8 +844,12 @@ class Query extends TestHelper { // [START datastore_inequality_range] const query = datastore .createQuery('Task') - .filter('created', '>', new Date('1990-01-01T00:00:00z')) - .filter('created', '<', new Date('2000-12-31T23:59:59z')); + .filter( + and([ + new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')), + new PropertyFilter('created', '<', new Date('2000-12-31T23:59:59z')), + ]) + ); // [END datastore_inequality_range] return this.datastore.runQuery(query); @@ -833,8 +861,12 @@ class Query extends TestHelper { // [START datastore_inequality_invalid] const query = datastore .createQuery('Task') - .filter('priority', '>', 3) - .filter('created', '>', new Date('1990-01-01T00:00:00z')); + .filter( + and([ + new PropertyFilter('priority', '>', 3), + new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')), + ]) + ); // [END datastore_inequality_invalid] return this.datastore.runQuery(query); @@ -846,10 +878,14 @@ class Query extends TestHelper { // [START datastore_equal_and_inequality_range] const query = datastore .createQuery('Task') - .filter('priority', '=', 4) - .filter('done', '=', false) - .filter('created', '>', new Date('1990-01-01T00:00:00z')) - .filter('created', '<', new Date('2000-12-31T23:59:59z')); + .filter( + and([ + new PropertyFilter('priority', '=', 4), + new PropertyFilter('done', '=', false), + new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')), + new PropertyFilter('created', '<', new Date('2000-12-31T23:59:59z')), + ]) + ); // [END datastore_equal_and_inequality_range] return this.datastore.runQuery(query); @@ -861,7 +897,7 @@ class Query extends TestHelper { // [START datastore_inequality_sort] const query = datastore .createQuery('Task') - .filter('priority', '>', 3) + .filter(new PropertyFilter('priority', '>', 3)) .order('priority') .order('created'); // [END datastore_inequality_sort] @@ -875,7 +911,7 @@ class Query extends TestHelper { // [START datastore_inequality_sort_invalid_not_same] const query = datastore .createQuery('Task') - .filter('priority', '>', 3) + .filter(new PropertyFilter('priority', '>', 3)) .order('created'); // [END datastore_inequality_sort_invalid_not_same] @@ -888,7 +924,7 @@ class Query extends TestHelper { // [START datastore_inequality_sort_invalid_not_first] const query = datastore .createQuery('Task') - .filter('priority', '>', 3) + .filter(new PropertyFilter('priority', '>', 3)) .order('created') .order('priority'); // [END datastore_inequality_sort_invalid_not_first] From 24da1773111c42493f2ab7aad47d91b42138e264 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 23 Oct 2023 16:03:28 +0200 Subject: [PATCH 755/820] fix(deps): update dependency sinon to v17 (#1183) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 947fe7b1f6d..95c436c5be2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -73,7 +73,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^2.0.0", "proxyquire": "^2.1.3", - "sinon": "^16.0.0", + "sinon": "^17.0.0", "ts-loader": "^8.0.0", "typescript": "^5.1.6", "webpack-cli": "^5.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 4e647f638cb..0ad5e06d0c5 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^8.2.2", - "sinon": "^16.0.0" + "sinon": "^17.0.0" }, "devDependencies": { "chai": "^4.2.0", From 1919b0bcc2b67398bc806dec5d58c63a37b70cbc Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 23 Oct 2023 17:26:52 -0400 Subject: [PATCH 756/820] fix: Change tests to use new filter and use gax warn for warning just once (#1185) * trim operator In the legacy version of filter we trim the operator. We should do this here too. * In test cases, replace various filter calls Always pass entity filters into the filter function in tests to reflect new behavior. * accept string too A string is needed as an input parameter because we might trim it to get an operator. * Use .filter the old way Revert changes on the .filter method * Change docs to use new filter The new property filter should be used and this should be reflected in the doc comments. * Use new Property filter In entity.ts, use the new property filter constructor. * Revert changes to operator The changes cause compiler errors. Do not trim the operator for now. * Move test up and add change Add change to issue warning just once. Use google-gax so that the warning is issued just once. * Revert "Change docs to use new filter" This reverts commit c290481f9442f46cb6ddc84f15914342d7435b8a. * run linter * Add a test to ensure just one warning A test to make sure the warning is emitted just once might provide proper coverage. --- handwritten/nodejs-datastore/src/query.ts | 4 ++- handwritten/nodejs-datastore/test/entity.ts | 8 +++-- handwritten/nodejs-datastore/test/query.ts | 35 ++++++++++++++------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index daf90f056c4..4f3a620012e 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -22,6 +22,7 @@ import {EntityFilter, isFilter, AllowedFilterValueType} from './filter'; import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; +import * as gaxInstance from 'google-gax'; export type Operator = | '=' @@ -223,7 +224,8 @@ class Query { value?: AllowedFilterValueType ): Query { if (arguments.length > 1) { - process.emitWarning( + gaxInstance.warn( + 'filter', 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' ); } diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts index cbf86b430a9..3c8e6e43c77 100644 --- a/handwritten/nodejs-datastore/test/entity.ts +++ b/handwritten/nodejs-datastore/test/entity.ts @@ -1929,7 +1929,7 @@ describe('entity', () => { const query = ds .createQuery('Kind1') - .filter('name', 'John') + .filter(new PropertyFilter('name', '=', 'John')) .start('start') .end('end') .groupBy(['name']) @@ -1989,7 +1989,11 @@ describe('entity', () => { const query = ds .createQuery('Kind1') - .filter('__key__', 'IN', [new entity.Key({path: ['Kind1', 'key1']})]); + .filter( + new PropertyFilter('__key__', 'IN', [ + new entity.Key({path: ['Kind1', 'key1']}), + ]) + ); assert.deepStrictEqual( testEntity.queryToQueryProto(query), diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 4d66f0b1764..87df33f8a2c 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -206,6 +206,29 @@ describe('Query', () => { }); describe('filter', () => { + it('should issue a warning when a Filter instance is not provided', done => { + const onWarning = (warning: {message: unknown}) => { + assert.strictEqual( + warning.message, + 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' + ); + process.removeListener('warning', onWarning); + done(); + }; + process.on('warning', onWarning); + new Query(['kind1']).filter('name', 'Stephen'); + }); + it('should not issue a warning again when a Filter instance is not provided', done => { + const onWarning = () => { + assert.fail(); + }; + process.on('warning', onWarning); + new Query(['kind1']).filter('name', 'Stephen'); + setImmediate(() => { + process.removeListener('warning', onWarning); + done(); + }); + }); it('should support filtering', () => { const now = new Date(); const query = new Query(['kind1']).filter('date', '<=', now); @@ -293,18 +316,6 @@ describe('Query', () => { assert.strictEqual(filter.val, 'Stephen'); }); }); - it('should issue a warning when a Filter instance is not provided', done => { - const onWarning = (warning: {message: unknown}) => { - assert.strictEqual( - warning.message, - 'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter' - ); - process.removeListener('warning', onWarning); - done(); - }; - process.on('warning', onWarning); - new Query(['kind1']).filter('name', 'Stephen'); - }); describe('filter with Filter class', () => { it('should support filter with Filter', () => { const now = new Date(); From f982da27cf58ce43dccbff03df7c28c4d01f0132 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 Nov 2023 20:36:22 +0100 Subject: [PATCH 757/820] chore(deps): update dependency @types/sinon to v17 (#1197) --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 95c436c5be2..f3efe37d4dc 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -58,7 +58,7 @@ "@types/mocha": "^9.0.0", "@types/node": "^20.4.9", "@types/proxyquire": "^1.3.28", - "@types/sinon": "^10.0.0", + "@types/sinon": "^17.0.0", "async": "^3.2.4", "c8": "^8.0.1", "gapic-tools": "^0.2.0", From 5c7e95372c48c7d977d18ed24d34b55b6f84b5ca Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 Nov 2023 12:46:14 +0100 Subject: [PATCH 758/820] chore(deps): update dependency @types/is to v0.0.25 (#1198) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.24` -> `0.0.25`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.24/0.0.25) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f3efe37d4dc..221f7f8d09d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -53,7 +53,7 @@ "devDependencies": { "@google-cloud/storage": "^7.0.1", "@types/extend": "^3.0.1", - "@types/is": "0.0.24", + "@types/is": "0.0.25", "@types/js-yaml": "^4.0.0", "@types/mocha": "^9.0.0", "@types/node": "^20.4.9", From 415de828d548c0b8044461d8e4b696a94998fde0 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 12:27:03 -0800 Subject: [PATCH 759/820] build: update Node.js generator to compile protos (#1200) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build: update Node.js generator to compile protos PiperOrigin-RevId: 582493526 Source-Link: https://github.com/googleapis/googleapis/commit/7c4e4b52369c9f6ac3e78f945d36fc833f2280de Source-Link: https://github.com/googleapis/googleapis-gen/commit/368cfb651016d6a93ca6e488cbc34e2d1d9d212c Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzY4Y2ZiNjUxMDE2ZDZhOTNjYTZlNDg4Y2JjMzRlMmQxZDlkMjEyYyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../nodejs-datastore/system-test/fixtures/sample/src/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index 6a4ecce7b5f..a1862f8f7c3 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -16,6 +16,7 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** + /* eslint-disable node/no-missing-require, no-unused-vars */ const datastore = require('@google-cloud/datastore'); From 36f77b7d799cc9863106c0bbd4c9b607b0df5f43 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 11 Dec 2023 10:52:09 -0500 Subject: [PATCH 760/820] feat: Allow the user to set fallback to rest (#1203) * Allow the user to set fallback to rest This provides a workaround for the connection issue. * Putting together a test that mocks out gapic Need to mock out Gapic and compare constructors * This harness works properly The harness mocks out the constructor and calls reach the constructor as well as the get function. So now we can see what values get passed into the constructor and get function. * Add client testing module Add a working test that makes sure the rest parameter gets passed down to the gapic layer. * Regroup the code so it is better arranged Proper describe blocks make it easier for the code to be arranged so that with and without rest tests can be incorporated into the code. * Remove the datastore mock Remove the datastore mock. It is not necessary. * Add comments for test helper functions. Add tests for the non rest case. * Clean up source code change Make a programmatic link to the data type so that the intent is clearer. * Add parameterized test Parameterized tests will allow us to delete half the tests. A new type is created for the test parameters. * Document the class for mocking datastore client Explain the purpose of the class. This will make it useful for testing. * Remove only * Remove fallback params type This type is only used once so inline it. * Remove changes to system tests Changes to system tests are not necessary. Remove them. * Add header * Check for client existence assert resolves to falsy in tests. See if this solves the issue. * Change it back Add console logs and assert checks back in. * Add more debugger logs * Add project load logs * console error * Add comment for mocking out project id This should allow the unit tests to pass in the continuous integration environment. * linting fix * Correct title of describe block The title of the describe block should match the file. Remove console logs too. * Change rest parameter in test to fallback This parameter more specifically describes the change. * Create a simple system test for using rest This system test should show how the rest parameter is being used. * Should check to see if entity is undefined This allows the test to pass with a simple assertion check. * Specify fallback type instead of string | undefin Fallback type is more specific . Use it instead. --- handwritten/nodejs-datastore/src/index.ts | 2 + .../nodejs-datastore/system-test/datastore.ts | 10 ++ .../client-initialization-testing.ts | 165 ++++++++++++++++++ 3 files changed, 177 insertions(+) create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 3d3162cda06..31b86635e1b 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -97,6 +97,7 @@ export interface LongRunningCallback { ): void; } export type LongRunningResponse = [Operation, google.longrunning.IOperation]; +export type Fallback = boolean | 'rest' | 'proto'; export interface ExportEntitiesConfig extends Omit { @@ -1912,6 +1913,7 @@ export interface DatastoreOptions extends GoogleAuthOptions { apiEndpoint?: string; sslCreds?: ChannelCredentials; databaseId?: string; + fallback?: Fallback; } export interface KeyToLegacyUrlSafeCallback { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 2d1e6bdc199..f08990686b7 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -2080,6 +2080,16 @@ async.each( assert.strictEqual(entities.length, 0); }); }); + describe('using the rest fallback parameter', () => { + it('should make a get call using rest instead of grpc', async () => { + const customDatastore = new Datastore({ + fallback: 'rest', + }); + const postKey = datastore.key(['Post', 'post1']); + const [entity] = await customDatastore.get(postKey); + assert.strictEqual(entity, undefined); + }); + }); }); } ); diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts b/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts new file mode 100644 index 00000000000..d0be6c43788 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts @@ -0,0 +1,165 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {beforeEach, describe, it} from 'mocha'; +import { + Datastore, + DatastoreClient, + Fallback, + DatastoreRequest, + DatastoreOptions, +} from '../../src'; +import * as assert from 'assert'; +import * as proxyquire from 'proxyquire'; +import {Callback, CallOptions} from 'google-gax'; +import * as protos from '../../protos/protos'; +import * as ds from '../../src'; +import * as mocha from 'mocha'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type Any = any; + +const clientName = 'DatastoreClient'; +const async = require('async'); + +/** + * This class mocks out the lookup function so that for tests in this file + * the lookup function just sends data back instead of making a call to the + * server. The class also saves the rest parameter in the constructor so that + * it can be read later for correctness. + * + */ +class FakeDatastoreClient extends DatastoreClient { + restParameter: Fallback; + constructor(...args: any[]) { + super(); + this.restParameter = args[0].fallback; + } + lookup( + request?: protos.google.datastore.v1.ILookupRequest, + optionsOrCallback?: + | CallOptions + | Callback< + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | null | undefined, + {} | null | undefined + > + ): Promise< + [ + protos.google.datastore.v1.ILookupResponse, + protos.google.datastore.v1.ILookupRequest | undefined, + {} | undefined, + ] + > { + if (callback) { + callback(null, {}); + } + return new Promise((resolve, reject) => { + resolve([{}, {}, {}]); + }); + } +} + +describe('Client Initialization Testing', () => { + describe('Request', () => { + let Request: typeof ds.DatastoreRequest; + let request: Any; + + /** + * This function is called by a test to ensure that the rest parameter + * gets passed to the Gapic data client's constructor + * + * @param {DatastoreRequest} [request] The request object whose data client + * the test makes comparisons with. + * @param {string | undefined} [expectedFallback] The value that the test + * expects the rest parameter of the data client to be equal to. + * @param {mocha.Done} [done] The done function used for indicating + * that the test is complete or that there is an error in the mocha test + * environment. + * + */ + function compareRequest( + request: DatastoreRequest, + expectedFallback: Fallback, + done: mocha.Done + ) { + try { + const client = request.datastore.clients_.get(clientName); + assert(client); + assert.strictEqual(client.restParameter, expectedFallback); + done(); + } catch (err: unknown) { + done(err); + } + } + async.each( + [ + { + options: {fallback: 'rest' as Fallback}, + expectedFallback: 'rest', + description: 'when specifying rest as a fallback parameter', + }, + { + options: {}, + expectedFallback: undefined, + description: 'when specifying no fallback parameter', + }, + ], + (testParameters: { + options: DatastoreOptions; + expectedFallback: Fallback; + description: string; + }) => { + describe(testParameters.description, () => { + beforeEach(() => { + Request = proxyquire('../../src/request', { + './v1': { + DatastoreClient: FakeDatastoreClient, + }, + }).DatastoreRequest; + request = new Request(); + request.datastore = new Datastore(testParameters.options); + // The CI environment can't fetch project id so the function that + // fetches the project id needs to be mocked out. + request.datastore.auth.getProjectId = ( + callback: (err: any, projectId: string) => void + ) => { + callback(null, 'some-project-id'); + }; + }); + it('should set the rest parameter in the data client when calling prepareGaxRequest_', done => { + // This request does lazy initialization of the gapic layer Datastore client. + request.prepareGaxRequest_( + {client: clientName, method: 'lookup'}, + () => { + compareRequest(request, testParameters.expectedFallback, done); + } + ); + }); + it('should set the rest parameter in the data client when calling request_', done => { + // This request does lazy initialization of the gapic layer Datastore client. + request.request_({client: clientName, method: 'lookup'}, () => { + compareRequest(request, testParameters.expectedFallback, done); + }); + }); + }); + } + ); + }); +}); From c15b1cdbabd395ccc2bc576ab6cabeee48bdbb2a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 11:57:02 -0500 Subject: [PATCH 761/820] chore(main): release 8.3.0 (#1184) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 13 +++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index ea8f1a7a7b3..864c89e8bd9 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,19 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.3.0](https://github.com/googleapis/nodejs-datastore/compare/v8.2.2...v8.3.0) (2023-12-11) + + +### Features + +* Allow the user to set fallback to rest ([#1203](https://github.com/googleapis/nodejs-datastore/issues/1203)) ([8a1fa54](https://github.com/googleapis/nodejs-datastore/commit/8a1fa54e3873230256895c48b8b9c6889f75dd98)) + + +### Bug Fixes + +* Change tests to use new filter and use gax warn for warning just once ([#1185](https://github.com/googleapis/nodejs-datastore/issues/1185)) ([532711b](https://github.com/googleapis/nodejs-datastore/commit/532711bfd19b1a12844b02fd314f1703be4b0125)) +* **deps:** Update dependency sinon to v17 ([#1183](https://github.com/googleapis/nodejs-datastore/issues/1183)) ([52adb5e](https://github.com/googleapis/nodejs-datastore/commit/52adb5e13ddc123c2bed33df76be76760d33c06e)) + ## [8.2.2](https://github.com/googleapis/nodejs-datastore/compare/v8.2.1...v8.2.2) (2023-10-17) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 221f7f8d09d..f9cba355ee2 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.2.2", + "version": "8.3.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 0ad5e06d0c5..0913f5f5c2c 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.2.2", + "@google-cloud/datastore": "^8.3.0", "sinon": "^17.0.0" }, "devDependencies": { From 24653a6aa32185128b458d7bad324bb3c58b355b Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 16:57:29 -0500 Subject: [PATCH 762/820] feat: add new types QueryMode, QueryPlan, ResultSetStats (#1216) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: correct long audio synthesis HTTP binding docs: Deprecate the custom voice usage field PiperOrigin-RevId: 595119987 Source-Link: https://github.com/googleapis/googleapis/commit/c22f4081fe394091ff2bb35b39b604ebb0e903cb Source-Link: https://github.com/googleapis/googleapis-gen/commit/4e9ca63d2cc7933eb7c383ce8b794fce152ea2fc Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNGU5Y2E2M2QyY2M3OTMzZWI3YzM4M2NlOGI3OTRmY2UxNTJlYTJmYyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: add new types QueryMode, QueryPlan, ResultSetStats feat: add QueryMode field to RunQueryRequest feat: add ResultSetStats field to RunQueryResponse feat: add QueryMode field to RunAggregationQueryRequest feat: add ResultSetStats field to RunAggregationQueryResponse PiperOrigin-RevId: 595774772 Source-Link: https://github.com/googleapis/googleapis/commit/03e7ed44ac499ee71baa2770e78045a3a85f30f5 Source-Link: https://github.com/googleapis/googleapis-gen/commit/dc63e0dea8423c230d5fb0937acb3c98719c9395 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZGM2M2UwZGVhODQyM2MyMzBkNWZiMDkzN2FjYjNjOTg3MTljOTM5NSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/.jsdoc.js | 4 +- .../google/datastore/v1/datastore.proto | 23 + .../google/datastore/v1/query_profile.proto | 75 +++ .../nodejs-datastore/protos/protos.d.ts | 233 ++++++- handwritten/nodejs-datastore/protos/protos.js | 613 +++++++++++++++++- .../nodejs-datastore/protos/protos.json | 51 +- .../generated/v1/datastore.allocate_ids.js | 2 +- .../v1/datastore.begin_transaction.js | 2 +- .../samples/generated/v1/datastore.commit.js | 2 +- .../samples/generated/v1/datastore.lookup.js | 2 +- .../generated/v1/datastore.reserve_ids.js | 2 +- .../generated/v1/datastore.rollback.js | 2 +- .../v1/datastore.run_aggregation_query.js | 8 +- .../generated/v1/datastore.run_query.js | 8 +- .../v1/datastore_admin.create_index.js | 2 +- .../v1/datastore_admin.delete_index.js | 2 +- .../v1/datastore_admin.export_entities.js | 2 +- .../generated/v1/datastore_admin.get_index.js | 2 +- .../v1/datastore_admin.import_entities.js | 2 +- .../v1/datastore_admin.list_indexes.js | 2 +- .../snippet_metadata_google.datastore.v1.json | 12 +- .../src/v1/datastore_admin_client.ts | 2 +- .../src/v1/datastore_client.ts | 10 +- .../src/v1/datastore_proto_list.json | 3 +- .../system-test/fixtures/sample/src/index.js | 2 +- .../system-test/fixtures/sample/src/index.ts | 2 +- .../nodejs-datastore/system-test/install.ts | 2 +- .../test/gapic_datastore_admin_v1.ts | 2 +- .../test/gapic_datastore_v1.ts | 2 +- 29 files changed, 1047 insertions(+), 29 deletions(-) create mode 100644 handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js index 1cdb0dacbc2..9d0b3ec3786 100644 --- a/handwritten/nodejs-datastore/.jsdoc.js +++ b/handwritten/nodejs-datastore/.jsdoc.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ module.exports = { includePattern: '\\.js$' }, templates: { - copyright: 'Copyright 2023 Google LLC', + copyright: 'Copyright 2024 Google LLC', includeDate: false, sourceFiles: false, systemName: '@google-cloud/datastore', diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 533988d7776..476d48f0260 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -23,6 +23,7 @@ import "google/api/routing.proto"; import "google/datastore/v1/aggregation_result.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; +import "google/datastore/v1/query_profile.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; @@ -232,6 +233,11 @@ message RunQueryRequest { // The GQL query to run. This query must be a non-aggregation query. GqlQuery gql_query = 7; } + + // Optional. The mode in which the query request is processed. This field is + // optional, and when not provided, it defaults to `NORMAL` mode where no + // additional statistics will be returned with the query results. + QueryMode mode = 11 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -251,6 +257,12 @@ message RunQueryResponse { // was set in // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. bytes transaction = 5; + + // Query plan and execution statistics. Note that the returned stats are + // subject to change as Firestore evolves. + // + // This is only present when the request specifies a mode other than `NORMAL`. + ResultSetStats stats = 6; } // The request for @@ -282,6 +294,11 @@ message RunAggregationQueryRequest { // The GQL query to run. This query must be an aggregation query. GqlQuery gql_query = 7; } + + // Optional. The mode in which the query request is processed. This field is + // optional, and when not provided, it defaults to `NORMAL` mode where no + // additional statistics will be returned with the query results. + QueryMode mode = 10 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -301,6 +318,12 @@ message RunAggregationQueryResponse { // was set in // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. bytes transaction = 5; + + // Query plan and execution statistics. Note that the returned stats are + // subject to change as Firestore evolves. + // + // This is only present when the request specifies a mode other than `NORMAL`. + ResultSetStats stats = 6; } // The request for diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto new file mode 100644 index 00000000000..05c1cf95ec8 --- /dev/null +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto @@ -0,0 +1,75 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.datastore.v1; + +import "google/protobuf/struct.proto"; + +option csharp_namespace = "Google.Cloud.Datastore.V1"; +option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option java_multiple_files = true; +option java_outer_classname = "QueryProfileProto"; +option java_package = "com.google.datastore.v1"; +option php_namespace = "Google\\Cloud\\Datastore\\V1"; +option ruby_package = "Google::Cloud::Datastore::V1"; + +// Specification of the Datastore Query Profile fields. + +// The mode in which the query request must be processed. +enum QueryMode { + // The default mode. Only the query results are returned. + NORMAL = 0; + + // This mode returns only the query plan, without any results or execution + // statistics information. + PLAN = 1; + + // This mode returns both the query plan and the execution statistics along + // with the results. + PROFILE = 2; +} + +// Plan for the query. +message QueryPlan { + // Planning phase information for the query. It will include: + // + // { + // "indexes_used": [ + // {"query_scope": "Collection", "properties": "(foo ASC, __name__ ASC)"}, + // {"query_scope": "Collection", "properties": "(bar ASC, __name__ ASC)"} + // ] + // } + google.protobuf.Struct plan_info = 1; +} + +// Planning and execution statistics for the query. +message ResultSetStats { + // Plan for the query. + QueryPlan query_plan = 1; + + // Aggregated statistics from the execution of the query. + // + // This will only be present when the request specifies `PROFILE` mode. + // For example, a query will return the statistics including: + // + // { + // "results_returned": "20", + // "documents_scanned": "20", + // "indexes_entries_scanned": "10050", + // "total_execution_time": "100.7 msecs" + // } + google.protobuf.Struct query_stats = 2; +} diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 459bcc930d6..55a93c657f0 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -5802,6 +5802,9 @@ export namespace google { /** RunQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunQueryRequest mode */ + mode?: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode|null); } /** Represents a RunQueryRequest. */ @@ -5831,6 +5834,9 @@ export namespace google { /** RunQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunQueryRequest mode. */ + public mode: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode); + /** RunQueryRequest queryType. */ public queryType?: ("query"|"gqlQuery"); @@ -5923,6 +5929,9 @@ export namespace google { /** RunQueryResponse transaction */ transaction?: (Uint8Array|string|null); + + /** RunQueryResponse stats */ + stats?: (google.datastore.v1.IResultSetStats|null); } /** Represents a RunQueryResponse. */ @@ -5943,6 +5952,9 @@ export namespace google { /** RunQueryResponse transaction. */ public transaction: (Uint8Array|string); + /** RunQueryResponse stats. */ + public stats?: (google.datastore.v1.IResultSetStats|null); + /** * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -6041,6 +6053,9 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunAggregationQueryRequest mode */ + mode?: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode|null); } /** Represents a RunAggregationQueryRequest. */ @@ -6070,6 +6085,9 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunAggregationQueryRequest mode. */ + public mode: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode); + /** RunAggregationQueryRequest queryType. */ public queryType?: ("aggregationQuery"|"gqlQuery"); @@ -6162,6 +6180,9 @@ export namespace google { /** RunAggregationQueryResponse transaction */ transaction?: (Uint8Array|string|null); + + /** RunAggregationQueryResponse stats */ + stats?: (google.datastore.v1.IResultSetStats|null); } /** Represents a RunAggregationQueryResponse. */ @@ -6182,6 +6203,9 @@ export namespace google { /** RunAggregationQueryResponse transaction. */ public transaction: (Uint8Array|string); + /** RunAggregationQueryResponse stats. */ + public stats?: (google.datastore.v1.IResultSetStats|null); + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -8005,6 +8029,213 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } } + + /** QueryMode enum. */ + enum QueryMode { + NORMAL = 0, + PLAN = 1, + PROFILE = 2 + } + + /** Properties of a QueryPlan. */ + interface IQueryPlan { + + /** QueryPlan planInfo */ + planInfo?: (google.protobuf.IStruct|null); + } + + /** Represents a QueryPlan. */ + class QueryPlan implements IQueryPlan { + + /** + * Constructs a new QueryPlan. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IQueryPlan); + + /** QueryPlan planInfo. */ + public planInfo?: (google.protobuf.IStruct|null); + + /** + * Creates a new QueryPlan instance using the specified properties. + * @param [properties] Properties to set + * @returns QueryPlan instance + */ + public static create(properties?: google.datastore.v1.IQueryPlan): google.datastore.v1.QueryPlan; + + /** + * Encodes the specified QueryPlan message. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. + * @param message QueryPlan message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified QueryPlan message, length delimited. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. + * @param message QueryPlan message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a QueryPlan message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns QueryPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryPlan; + + /** + * Decodes a QueryPlan message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns QueryPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryPlan; + + /** + * Verifies a QueryPlan message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a QueryPlan message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns QueryPlan + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryPlan; + + /** + * Creates a plain object from a QueryPlan message. Also converts values to other types if specified. + * @param message QueryPlan + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.QueryPlan, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this QueryPlan to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for QueryPlan + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ResultSetStats. */ + interface IResultSetStats { + + /** ResultSetStats queryPlan */ + queryPlan?: (google.datastore.v1.IQueryPlan|null); + + /** ResultSetStats queryStats */ + queryStats?: (google.protobuf.IStruct|null); + } + + /** Represents a ResultSetStats. */ + class ResultSetStats implements IResultSetStats { + + /** + * Constructs a new ResultSetStats. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IResultSetStats); + + /** ResultSetStats queryPlan. */ + public queryPlan?: (google.datastore.v1.IQueryPlan|null); + + /** ResultSetStats queryStats. */ + public queryStats?: (google.protobuf.IStruct|null); + + /** + * Creates a new ResultSetStats instance using the specified properties. + * @param [properties] Properties to set + * @returns ResultSetStats instance + */ + public static create(properties?: google.datastore.v1.IResultSetStats): google.datastore.v1.ResultSetStats; + + /** + * Encodes the specified ResultSetStats message. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. + * @param message ResultSetStats message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ResultSetStats message, length delimited. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. + * @param message ResultSetStats message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ResultSetStats message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ResultSetStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ResultSetStats; + + /** + * Decodes a ResultSetStats message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ResultSetStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ResultSetStats; + + /** + * Verifies a ResultSetStats message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ResultSetStats message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ResultSetStats + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ResultSetStats; + + /** + * Creates a plain object from a ResultSetStats message. Also converts values to other types if specified. + * @param message ResultSetStats + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ResultSetStats, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ResultSetStats to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ResultSetStats + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 96337f975f0..8b8e7074a8a 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14732,6 +14732,7 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery + * @property {google.datastore.v1.QueryMode|null} [mode] RunQueryRequest mode */ /** @@ -14797,6 +14798,14 @@ */ RunQueryRequest.prototype.gqlQuery = null; + /** + * RunQueryRequest mode. + * @member {google.datastore.v1.QueryMode} mode + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.mode = 0; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -14847,6 +14856,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.mode); return writer; }; @@ -14905,6 +14916,10 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } + case 11: { + message.mode = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -14975,6 +14990,15 @@ return "gqlQuery." + error; } } + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; @@ -15014,6 +15038,26 @@ throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } + switch (object.mode) { + default: + if (typeof object.mode === "number") { + message.mode = object.mode; + break; + } + break; + case "NORMAL": + case 0: + message.mode = 0; + break; + case "PLAN": + case 1: + message.mode = 1; + break; + case "PROFILE": + case 2: + message.mode = 2; + break; + } return message; }; @@ -15035,6 +15079,7 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; + object.mode = options.enums === String ? "NORMAL" : 0; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15054,6 +15099,8 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.google.datastore.v1.QueryMode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.QueryMode[message.mode] : message.mode; return object; }; @@ -15095,6 +15142,7 @@ * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query * @property {Uint8Array|null} [transaction] RunQueryResponse transaction + * @property {google.datastore.v1.IResultSetStats|null} [stats] RunQueryResponse stats */ /** @@ -15136,6 +15184,14 @@ */ RunQueryResponse.prototype.transaction = $util.newBuffer([]); + /** + * RunQueryResponse stats. + * @member {google.datastore.v1.IResultSetStats|null|undefined} stats + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.stats = null; + /** * Creates a new RunQueryResponse instance using the specified properties. * @function create @@ -15166,6 +15222,8 @@ $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); + if (message.stats != null && Object.hasOwnProperty.call(message, "stats")) + $root.google.datastore.v1.ResultSetStats.encode(message.stats, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -15212,6 +15270,10 @@ message.transaction = reader.bytes(); break; } + case 6: { + message.stats = $root.google.datastore.v1.ResultSetStats.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15260,6 +15322,11 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; + if (message.stats != null && message.hasOwnProperty("stats")) { + var error = $root.google.datastore.v1.ResultSetStats.verify(message.stats); + if (error) + return "stats." + error; + } return null; }; @@ -15290,6 +15357,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.stats != null) { + if (typeof object.stats !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.stats: object expected"); + message.stats = $root.google.datastore.v1.ResultSetStats.fromObject(object.stats); + } return message; }; @@ -15316,6 +15388,7 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } + object.stats = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); @@ -15323,6 +15396,8 @@ object.query = $root.google.datastore.v1.Query.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.stats != null && message.hasOwnProperty("stats")) + object.stats = $root.google.datastore.v1.ResultSetStats.toObject(message.stats, options); return object; }; @@ -15367,6 +15442,7 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunAggregationQueryRequest readOptions * @property {google.datastore.v1.IAggregationQuery|null} [aggregationQuery] RunAggregationQueryRequest aggregationQuery * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunAggregationQueryRequest gqlQuery + * @property {google.datastore.v1.QueryMode|null} [mode] RunAggregationQueryRequest mode */ /** @@ -15432,6 +15508,14 @@ */ RunAggregationQueryRequest.prototype.gqlQuery = null; + /** + * RunAggregationQueryRequest mode. + * @member {google.datastore.v1.QueryMode} mode + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.mode = 0; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -15482,6 +15566,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.mode); return writer; }; @@ -15540,6 +15626,10 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } + case 10: { + message.mode = reader.int32(); + break; + } default: reader.skipType(tag & 7); break; @@ -15610,6 +15700,15 @@ return "gqlQuery." + error; } } + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; @@ -15649,6 +15748,26 @@ throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } + switch (object.mode) { + default: + if (typeof object.mode === "number") { + message.mode = object.mode; + break; + } + break; + case "NORMAL": + case 0: + message.mode = 0; + break; + case "PLAN": + case 1: + message.mode = 1; + break; + case "PROFILE": + case 2: + message.mode = 2; + break; + } return message; }; @@ -15670,6 +15789,7 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; + object.mode = options.enums === String ? "NORMAL" : 0; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15689,6 +15809,8 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.google.datastore.v1.QueryMode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.QueryMode[message.mode] : message.mode; return object; }; @@ -15730,6 +15852,7 @@ * @property {google.datastore.v1.IAggregationResultBatch|null} [batch] RunAggregationQueryResponse batch * @property {google.datastore.v1.IAggregationQuery|null} [query] RunAggregationQueryResponse query * @property {Uint8Array|null} [transaction] RunAggregationQueryResponse transaction + * @property {google.datastore.v1.IResultSetStats|null} [stats] RunAggregationQueryResponse stats */ /** @@ -15771,6 +15894,14 @@ */ RunAggregationQueryResponse.prototype.transaction = $util.newBuffer([]); + /** + * RunAggregationQueryResponse stats. + * @member {google.datastore.v1.IResultSetStats|null|undefined} stats + * @memberof google.datastore.v1.RunAggregationQueryResponse + * @instance + */ + RunAggregationQueryResponse.prototype.stats = null; + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @function create @@ -15801,6 +15932,8 @@ $root.google.datastore.v1.AggregationQuery.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); + if (message.stats != null && Object.hasOwnProperty.call(message, "stats")) + $root.google.datastore.v1.ResultSetStats.encode(message.stats, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -15847,6 +15980,10 @@ message.transaction = reader.bytes(); break; } + case 6: { + message.stats = $root.google.datastore.v1.ResultSetStats.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15895,6 +16032,11 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; + if (message.stats != null && message.hasOwnProperty("stats")) { + var error = $root.google.datastore.v1.ResultSetStats.verify(message.stats); + if (error) + return "stats." + error; + } return null; }; @@ -15925,6 +16067,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.stats != null) { + if (typeof object.stats !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.stats: object expected"); + message.stats = $root.google.datastore.v1.ResultSetStats.fromObject(object.stats); + } return message; }; @@ -15951,6 +16098,7 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } + object.stats = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.AggregationResultBatch.toObject(message.batch, options); @@ -15958,6 +16106,8 @@ object.query = $root.google.datastore.v1.AggregationQuery.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.stats != null && message.hasOwnProperty("stats")) + object.stats = $root.google.datastore.v1.ResultSetStats.toObject(message.stats, options); return object; }; @@ -20311,6 +20461,467 @@ return TransactionOptions; })(); + /** + * QueryMode enum. + * @name google.datastore.v1.QueryMode + * @enum {number} + * @property {number} NORMAL=0 NORMAL value + * @property {number} PLAN=1 PLAN value + * @property {number} PROFILE=2 PROFILE value + */ + v1.QueryMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NORMAL"] = 0; + values[valuesById[1] = "PLAN"] = 1; + values[valuesById[2] = "PROFILE"] = 2; + return values; + })(); + + v1.QueryPlan = (function() { + + /** + * Properties of a QueryPlan. + * @memberof google.datastore.v1 + * @interface IQueryPlan + * @property {google.protobuf.IStruct|null} [planInfo] QueryPlan planInfo + */ + + /** + * Constructs a new QueryPlan. + * @memberof google.datastore.v1 + * @classdesc Represents a QueryPlan. + * @implements IQueryPlan + * @constructor + * @param {google.datastore.v1.IQueryPlan=} [properties] Properties to set + */ + function QueryPlan(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * QueryPlan planInfo. + * @member {google.protobuf.IStruct|null|undefined} planInfo + * @memberof google.datastore.v1.QueryPlan + * @instance + */ + QueryPlan.prototype.planInfo = null; + + /** + * Creates a new QueryPlan instance using the specified properties. + * @function create + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {google.datastore.v1.IQueryPlan=} [properties] Properties to set + * @returns {google.datastore.v1.QueryPlan} QueryPlan instance + */ + QueryPlan.create = function create(properties) { + return new QueryPlan(properties); + }; + + /** + * Encodes the specified QueryPlan message. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {google.datastore.v1.IQueryPlan} message QueryPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryPlan.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.planInfo != null && Object.hasOwnProperty.call(message, "planInfo")) + $root.google.protobuf.Struct.encode(message.planInfo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified QueryPlan message, length delimited. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {google.datastore.v1.IQueryPlan} message QueryPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + QueryPlan.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a QueryPlan message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.QueryPlan} QueryPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryPlan.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryPlan(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.planInfo = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a QueryPlan message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.QueryPlan} QueryPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + QueryPlan.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a QueryPlan message. + * @function verify + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + QueryPlan.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.planInfo != null && message.hasOwnProperty("planInfo")) { + var error = $root.google.protobuf.Struct.verify(message.planInfo); + if (error) + return "planInfo." + error; + } + return null; + }; + + /** + * Creates a QueryPlan message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.QueryPlan} QueryPlan + */ + QueryPlan.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.QueryPlan) + return object; + var message = new $root.google.datastore.v1.QueryPlan(); + if (object.planInfo != null) { + if (typeof object.planInfo !== "object") + throw TypeError(".google.datastore.v1.QueryPlan.planInfo: object expected"); + message.planInfo = $root.google.protobuf.Struct.fromObject(object.planInfo); + } + return message; + }; + + /** + * Creates a plain object from a QueryPlan message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {google.datastore.v1.QueryPlan} message QueryPlan + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + QueryPlan.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.planInfo = null; + if (message.planInfo != null && message.hasOwnProperty("planInfo")) + object.planInfo = $root.google.protobuf.Struct.toObject(message.planInfo, options); + return object; + }; + + /** + * Converts this QueryPlan to JSON. + * @function toJSON + * @memberof google.datastore.v1.QueryPlan + * @instance + * @returns {Object.} JSON object + */ + QueryPlan.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for QueryPlan + * @function getTypeUrl + * @memberof google.datastore.v1.QueryPlan + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + QueryPlan.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.QueryPlan"; + }; + + return QueryPlan; + })(); + + v1.ResultSetStats = (function() { + + /** + * Properties of a ResultSetStats. + * @memberof google.datastore.v1 + * @interface IResultSetStats + * @property {google.datastore.v1.IQueryPlan|null} [queryPlan] ResultSetStats queryPlan + * @property {google.protobuf.IStruct|null} [queryStats] ResultSetStats queryStats + */ + + /** + * Constructs a new ResultSetStats. + * @memberof google.datastore.v1 + * @classdesc Represents a ResultSetStats. + * @implements IResultSetStats + * @constructor + * @param {google.datastore.v1.IResultSetStats=} [properties] Properties to set + */ + function ResultSetStats(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ResultSetStats queryPlan. + * @member {google.datastore.v1.IQueryPlan|null|undefined} queryPlan + * @memberof google.datastore.v1.ResultSetStats + * @instance + */ + ResultSetStats.prototype.queryPlan = null; + + /** + * ResultSetStats queryStats. + * @member {google.protobuf.IStruct|null|undefined} queryStats + * @memberof google.datastore.v1.ResultSetStats + * @instance + */ + ResultSetStats.prototype.queryStats = null; + + /** + * Creates a new ResultSetStats instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {google.datastore.v1.IResultSetStats=} [properties] Properties to set + * @returns {google.datastore.v1.ResultSetStats} ResultSetStats instance + */ + ResultSetStats.create = function create(properties) { + return new ResultSetStats(properties); + }; + + /** + * Encodes the specified ResultSetStats message. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {google.datastore.v1.IResultSetStats} message ResultSetStats message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResultSetStats.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.queryPlan != null && Object.hasOwnProperty.call(message, "queryPlan")) + $root.google.datastore.v1.QueryPlan.encode(message.queryPlan, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.queryStats != null && Object.hasOwnProperty.call(message, "queryStats")) + $root.google.protobuf.Struct.encode(message.queryStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ResultSetStats message, length delimited. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {google.datastore.v1.IResultSetStats} message ResultSetStats message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResultSetStats.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ResultSetStats message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ResultSetStats} ResultSetStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResultSetStats.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ResultSetStats(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.queryPlan = $root.google.datastore.v1.QueryPlan.decode(reader, reader.uint32()); + break; + } + case 2: { + message.queryStats = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ResultSetStats message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ResultSetStats} ResultSetStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResultSetStats.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ResultSetStats message. + * @function verify + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ResultSetStats.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.queryPlan != null && message.hasOwnProperty("queryPlan")) { + var error = $root.google.datastore.v1.QueryPlan.verify(message.queryPlan); + if (error) + return "queryPlan." + error; + } + if (message.queryStats != null && message.hasOwnProperty("queryStats")) { + var error = $root.google.protobuf.Struct.verify(message.queryStats); + if (error) + return "queryStats." + error; + } + return null; + }; + + /** + * Creates a ResultSetStats message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ResultSetStats} ResultSetStats + */ + ResultSetStats.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ResultSetStats) + return object; + var message = new $root.google.datastore.v1.ResultSetStats(); + if (object.queryPlan != null) { + if (typeof object.queryPlan !== "object") + throw TypeError(".google.datastore.v1.ResultSetStats.queryPlan: object expected"); + message.queryPlan = $root.google.datastore.v1.QueryPlan.fromObject(object.queryPlan); + } + if (object.queryStats != null) { + if (typeof object.queryStats !== "object") + throw TypeError(".google.datastore.v1.ResultSetStats.queryStats: object expected"); + message.queryStats = $root.google.protobuf.Struct.fromObject(object.queryStats); + } + return message; + }; + + /** + * Creates a plain object from a ResultSetStats message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {google.datastore.v1.ResultSetStats} message ResultSetStats + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResultSetStats.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.queryPlan = null; + object.queryStats = null; + } + if (message.queryPlan != null && message.hasOwnProperty("queryPlan")) + object.queryPlan = $root.google.datastore.v1.QueryPlan.toObject(message.queryPlan, options); + if (message.queryStats != null && message.hasOwnProperty("queryStats")) + object.queryStats = $root.google.protobuf.Struct.toObject(message.queryStats, options); + return object; + }; + + /** + * Converts this ResultSetStats to JSON. + * @function toJSON + * @memberof google.datastore.v1.ResultSetStats + * @instance + * @returns {Object.} JSON object + */ + ResultSetStats.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ResultSetStats + * @function getTypeUrl + * @memberof google.datastore.v1.ResultSetStats + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ResultSetStats.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ResultSetStats"; + }; + + return ResultSetStats; + })(); + return v1; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index c87c95df271..907d2e39a91 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -613,7 +613,7 @@ "csharp_namespace": "Google.Cloud.Datastore.V1", "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", "java_multiple_files": true, - "java_outer_classname": "DatastoreProto", + "java_outer_classname": "QueryProfileProto", "java_package": "com.google.datastore.v1", "php_namespace": "Google\\Cloud\\Datastore\\V1", "ruby_package": "Google::Cloud::Datastore::V1" @@ -1525,6 +1525,13 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 + }, + "mode": { + "type": "QueryMode", + "id": 11, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -1541,6 +1548,10 @@ "transaction": { "type": "bytes", "id": 5 + }, + "stats": { + "type": "ResultSetStats", + "id": 6 } } }, @@ -1580,6 +1591,13 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 + }, + "mode": { + "type": "QueryMode", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -1596,6 +1614,10 @@ "transaction": { "type": "bytes", "id": 5 + }, + "stats": { + "type": "ResultSetStats", + "id": 6 } } }, @@ -1919,6 +1941,33 @@ } } } + }, + "QueryMode": { + "values": { + "NORMAL": 0, + "PLAN": 1, + "PROFILE": 2 + } + }, + "QueryPlan": { + "fields": { + "planInfo": { + "type": "google.protobuf.Struct", + "id": 1 + } + } + }, + "ResultSetStats": { + "fields": { + "queryPlan": { + "type": "QueryPlan", + "id": 1 + }, + "queryStats": { + "type": "google.protobuf.Struct", + "id": 2 + } + } } } } diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js index 2b5492b81e1..db0090215b5 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js index 563072ec9e5..ffc8ef3c923 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js index 70ed210a366..4d06569583b 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js index aa8742d8789..9b69a1c4180 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js index fc1eea72a98..32bb99e2d3d 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js index 17927162c92..ddf208875be 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js index f632c2eaab0..4dbda82d539 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -57,6 +57,12 @@ function main(projectId) { * The GQL query to run. This query must be an aggregation query. */ // const gqlQuery = {} + /** + * Optional. The mode in which the query request is processed. This field is + * optional, and when not provided, it defaults to `NORMAL` mode where no + * additional statistics will be returned with the query results. + */ + // const mode = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js index b4d94292b23..d8d5c2215fc 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -57,6 +57,12 @@ function main(projectId) { * The GQL query to run. This query must be a non-aggregation query. */ // const gqlQuery = {} + /** + * Optional. The mode in which the query request is processed. This field is + * optional, and when not provided, it defaults to `NORMAL` mode where no + * additional statistics will be returned with the query results. + */ + // const mode = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js index 020b012553e..36561b327c0 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js index f02860bf7cf..0c6d2384d45 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js index 757f6330955..5c90205a63f 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js index 213a5f163e7..faa29110d3a 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js index 8db576d2ad7..c277edc88d8 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js index 8373bf7cec2..557987ebe90 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json index 27ec516fcc5..917375154dc 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json @@ -74,7 +74,7 @@ "segments": [ { "start": 25, - "end": 78, + "end": 84, "type": "FULL" } ], @@ -106,6 +106,10 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" + }, + { + "name": "mode", + "type": ".google.datastore.v1.QueryMode" } ], "resultType": ".google.datastore.v1.RunQueryResponse", @@ -134,7 +138,7 @@ "segments": [ { "start": 25, - "end": 78, + "end": 84, "type": "FULL" } ], @@ -166,6 +170,10 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" + }, + { + "name": "mode", + "type": ".google.datastore.v1.QueryMode" } ], "resultType": ".google.datastore.v1.RunAggregationQueryResponse", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 3a82a0ae0dc..2f7b7b7e3d4 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 80d1191330b..59c962f365c 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -490,6 +490,10 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be a non-aggregation query. + * @param {google.datastore.v1.QueryMode} [request.mode] + * Optional. The mode in which the query request is processed. This field is + * optional, and when not provided, it defaults to `NORMAL` mode where no + * additional statistics will be returned with the query results. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -607,6 +611,10 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be an aggregation query. + * @param {google.datastore.v1.QueryMode} [request.mode] + * Optional. The mode in which the query request is processed. This field is + * optional, and when not provided, it defaults to `NORMAL` mode where no + * additional statistics will be returned with the query results. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json index 87f7c47ccd1..9bbbda2f942 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -2,5 +2,6 @@ "../../protos/google/datastore/v1/aggregation_result.proto", "../../protos/google/datastore/v1/datastore.proto", "../../protos/google/datastore/v1/entity.proto", - "../../protos/google/datastore/v1/query.proto" + "../../protos/google/datastore/v1/query.proto", + "../../protos/google/datastore/v1/query_profile.proto" ] diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js index a1862f8f7c3..603621a3e71 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts index 6688080dcc6..d30f4026844 100644 --- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts +++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts index f61fe236476..83b83f332c3 100644 --- a/handwritten/nodejs-datastore/system-test/install.ts +++ b/handwritten/nodejs-datastore/system-test/install.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index f1c0480ff39..433753d777d 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index a77daf4b020..48b3d2ae985 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 38d7b91d07c492ae16369017b27d51f5bd0c61d3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 5 Jan 2024 23:27:38 +0100 Subject: [PATCH 763/820] chore(deps): update dependency c8 to v9 (#1217) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency c8 to v9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index f9cba355ee2..baa2d8cefe0 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -60,7 +60,7 @@ "@types/proxyquire": "^1.3.28", "@types/sinon": "^17.0.0", "async": "^3.2.4", - "c8": "^8.0.1", + "c8": "^9.0.0", "gapic-tools": "^0.2.0", "gts": "^5.0.0", "js-yaml": "^4.0.0", From 3eef9a5100f033e8791e5c21e01cd6926d38ef78 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Tue, 9 Jan 2024 16:36:11 -0500 Subject: [PATCH 764/820] test: Fix logger for export import test (#1144) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * A bunch of console logs Console logs should report how far the program made it. * Changes to track the current retry properly The current test fails silently on test.currentRetry(). What we should do instead is store the current attempt on the mocha test. * Introduce a setup for delay function and test flow The setup for delay function creates a setup for the mocha test to use the delay function. A test is added to make sure that the delay function works properly. * Remove unnecessary logging from tests Some logging is in place that does not need to be there which was useful when debugging the problem. This logging should be removed and the only function should be removed. * Remove console logs that occur in import/export The console logs from the import/export test should be removed so that the test doesn’t emit any logs as before. * Remove a before import log Remove a log that was leftover from doing testing * For console.info the input type is string any should not be used if we can avoid it. string type needs to be used for the argument of the function. * PR fix - remove unnecessary console log console log does not need to be assigned twice in a row. This is a typo from what was there before. * Remove only only should not be used in the system tests * Correct the race condition in the test This test shouldn’t be flakey. It should always pass. We want to correct the race condition in this test. * Always reset info log count to 0 Reset the log count to account for parameterized tests so that the log count is always set to 0 when it starts a new set of tests. * Change assertion check to reflect new expectation Now that the less than or equal to sign has been introduced, the assertion check must be modified accordingly to account for the actual number of times the test runs. * Use local variable instead of test context variabl The shared context variable on mocha tests is being shared between tests and causing unexpected results. We should use a local variable instead as it seems to work the same way, but is much simpler to understand. * linting fix * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../nodejs-datastore/system-test/datastore.ts | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index f08990686b7..dffcc7244a3 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -2030,19 +2030,63 @@ async.each( describe('importing and exporting entities', () => { const gcs = new Storage(); const bucket = gcs.bucket('nodejs-datastore-system-tests'); + let currentAttempt = 0; + const setupForDelay = () => { + currentAttempt++; + }; const delay = async (test: Mocha.Context) => { - const retries = test.currentRetry(); - if (retries === 0) return; // no retry on the first failure. + const retries = currentAttempt - 1; + if (retries === 0) return; // no retry on the first attempt. // see: https://cloud.google.com/storage/docs/exponential-backoff: const ms = Math.pow(2, retries) * 500 + Math.random() * 1000; return new Promise(done => { - console.info(`retrying "${test.title}" in ${ms}ms`); + console.info( + `retrying "${test.test?.title}" after attempt ${currentAttempt} in ${ms}ms` + ); setTimeout(done, ms); }); }; + describe('running tests against the delay function', () => { + let consoleInfoFunction: (message: string) => void; + let infoLogCount = 0; + + before(async () => { + infoLogCount = 0; + currentAttempt = 0; + consoleInfoFunction = console.info; + }); + + it('should be sure that the delay function emits console info messages', async function () { + // Override console.info to track the number of times it is called. + console.info = (message: string) => { + infoLogCount++; + consoleInfoFunction(message); + }; + // Run code that will typically be used in any test with the delay function. + setupForDelay(); + const numberOfRetries = 2; + this.retries(numberOfRetries); + setImmediate(() => delay(this)); + // Throw an error on every retry except the last one + if (currentAttempt <= numberOfRetries) { + throw Error( + 'This is not the last retry so throw an error to force the test to run again' + ); + } + // Check that the attempt number and the number of times console.info is called is correct. + assert.strictEqual(infoLogCount, numberOfRetries - 1); + assert.strictEqual(currentAttempt, numberOfRetries + 1); + }); + + after(async () => { + console.info = consoleInfoFunction; + }); + }); + it('should export, then import entities', async function () { + setupForDelay(); this.retries(3); delay(this); const [exportOperation] = await datastore.export({bucket}); From edf54a220002d47e9b961fef52f0bce9ce71eaf8 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 15:03:50 -0500 Subject: [PATCH 765/820] chore(main): release 8.4.0 (#1218) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: danieljbruce --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 864c89e8bd9..f281e64ffae 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.4.0](https://github.com/googleapis/nodejs-datastore/compare/v8.3.0...v8.4.0) (2024-01-09) + + +### Features + +* Add new types QueryMode, QueryPlan, ResultSetStats ([#1216](https://github.com/googleapis/nodejs-datastore/issues/1216)) ([49c1462](https://github.com/googleapis/nodejs-datastore/commit/49c14626271c45473d73b07cda39a288017f1432)) + ## [8.3.0](https://github.com/googleapis/nodejs-datastore/compare/v8.2.2...v8.3.0) (2023-12-11) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index baa2d8cefe0..fab7594a8a8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.3.0", + "version": "8.4.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 0913f5f5c2c..6894c2b6216 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.3.0", + "@google-cloud/datastore": "^8.4.0", "sinon": "^17.0.0" }, "devDependencies": { From 7176d8b7bafed78220abc40d11b8dada7f3e4f82 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 18 Jan 2024 16:01:06 +0100 Subject: [PATCH 766/820] chore(deps): update dependency gapic-tools to ^0.3.0 (#1222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency gapic-tools to ^0.3.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/protos/protos.d.ts | 280 ++++- handwritten/nodejs-datastore/protos/protos.js | 1083 +++++++++++++++-- .../nodejs-datastore/protos/protos.json | 118 +- 4 files changed, 1300 insertions(+), 183 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index fab7594a8a8..43dc79715b8 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -61,7 +61,7 @@ "@types/sinon": "^17.0.0", "async": "^3.2.4", "c8": "^9.0.0", - "gapic-tools": "^0.2.0", + "gapic-tools": "^0.3.0", "gts": "^5.0.0", "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 55a93c657f0..5e12429f0d4 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -9839,6 +9839,9 @@ export namespace google { /** MethodSettings longRunning */ longRunning?: (google.api.MethodSettings.ILongRunning|null); + + /** MethodSettings autoPopulatedFields */ + autoPopulatedFields?: (string[]|null); } /** Represents a MethodSettings. */ @@ -9856,6 +9859,9 @@ export namespace google { /** MethodSettings longRunning. */ public longRunning?: (google.api.MethodSettings.ILongRunning|null); + /** MethodSettings autoPopulatedFields. */ + public autoPopulatedFields: string[]; + /** * Creates a new MethodSettings instance using the specified properties. * @param [properties] Properties to set @@ -10092,7 +10098,8 @@ export namespace google { INPUT_ONLY = 4, IMMUTABLE = 5, UNORDERED_LIST = 6, - NON_EMPTY_DEFAULT = 7 + NON_EMPTY_DEFAULT = 7, + IDENTIFIER = 8 } /** Properties of a RoutingRule. */ @@ -10396,6 +10403,21 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + /** Edition enum. */ + enum Edition { + EDITION_UNKNOWN = 0, + EDITION_PROTO2 = 998, + EDITION_PROTO3 = 999, + EDITION_2023 = 1000, + EDITION_2024 = 1001, + EDITION_1_TEST_ONLY = 1, + EDITION_2_TEST_ONLY = 2, + EDITION_99997_TEST_ONLY = 99997, + EDITION_99998_TEST_ONLY = 99998, + EDITION_99999_TEST_ONLY = 99999, + EDITION_MAX = 2147483647 + } + /** Properties of a FileDescriptorProto. */ interface IFileDescriptorProto { @@ -10436,7 +10458,7 @@ export namespace google { syntax?: (string|null); /** FileDescriptorProto edition */ - edition?: (string|null); + edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); } /** Represents a FileDescriptorProto. */ @@ -10485,7 +10507,7 @@ export namespace google { public syntax: string; /** FileDescriptorProto edition. */ - public edition: string; + public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); /** * Creates a new FileDescriptorProto instance using the specified properties. @@ -11360,8 +11382,8 @@ export namespace google { /** Label enum. */ enum Label { LABEL_OPTIONAL = 1, - LABEL_REQUIRED = 2, - LABEL_REPEATED = 3 + LABEL_REPEATED = 3, + LABEL_REQUIRED = 2 } } @@ -12073,9 +12095,6 @@ export namespace google { /** FileOptions pyGenericServices */ pyGenericServices?: (boolean|null); - /** FileOptions phpGenericServices */ - phpGenericServices?: (boolean|null); - /** FileOptions deprecated */ deprecated?: (boolean|null); @@ -12149,9 +12168,6 @@ export namespace google { /** FileOptions pyGenericServices. */ public pyGenericServices: boolean; - /** FileOptions phpGenericServices. */ - public phpGenericServices: boolean; - /** FileOptions deprecated. */ public deprecated: boolean; @@ -12619,7 +12635,7 @@ export namespace google { interface IEditionDefault { /** EditionDefault edition */ - edition?: (string|null); + edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); /** EditionDefault value */ value?: (string|null); @@ -12635,7 +12651,7 @@ export namespace google { constructor(properties?: google.protobuf.FieldOptions.IEditionDefault); /** EditionDefault edition. */ - public edition: string; + public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); /** EditionDefault value. */ public value: string; @@ -13561,17 +13577,14 @@ export namespace google { /** FeatureSet repeatedFieldEncoding */ repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null); - /** FeatureSet stringFieldValidation */ - stringFieldValidation?: (google.protobuf.FeatureSet.StringFieldValidation|keyof typeof google.protobuf.FeatureSet.StringFieldValidation|null); + /** FeatureSet utf8Validation */ + utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null); /** FeatureSet messageEncoding */ messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null); /** FeatureSet jsonFormat */ jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null); - - /** FeatureSet rawFeatures */ - rawFeatures?: (google.protobuf.IFeatureSet|null); } /** Represents a FeatureSet. */ @@ -13592,8 +13605,8 @@ export namespace google { /** FeatureSet repeatedFieldEncoding. */ public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding); - /** FeatureSet stringFieldValidation. */ - public stringFieldValidation: (google.protobuf.FeatureSet.StringFieldValidation|keyof typeof google.protobuf.FeatureSet.StringFieldValidation); + /** FeatureSet utf8Validation. */ + public utf8Validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation); /** FeatureSet messageEncoding. */ public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding); @@ -13601,9 +13614,6 @@ export namespace google { /** FeatureSet jsonFormat. */ public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat); - /** FeatureSet rawFeatures. */ - public rawFeatures?: (google.protobuf.IFeatureSet|null); - /** * Creates a new FeatureSet instance using the specified properties. * @param [properties] Properties to set @@ -13706,11 +13716,10 @@ export namespace google { EXPANDED = 2 } - /** StringFieldValidation enum. */ - enum StringFieldValidation { - STRING_FIELD_VALIDATION_UNKNOWN = 0, - MANDATORY = 1, - HINT = 2, + /** Utf8Validation enum. */ + enum Utf8Validation { + UTF8_VALIDATION_UNKNOWN = 0, + VERIFY = 2, NONE = 3 } @@ -13729,6 +13738,221 @@ export namespace google { } } + /** Properties of a FeatureSetDefaults. */ + interface IFeatureSetDefaults { + + /** FeatureSetDefaults defaults */ + defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null); + + /** FeatureSetDefaults minimumEdition */ + minimumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + + /** FeatureSetDefaults maximumEdition */ + maximumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + } + + /** Represents a FeatureSetDefaults. */ + class FeatureSetDefaults implements IFeatureSetDefaults { + + /** + * Constructs a new FeatureSetDefaults. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.IFeatureSetDefaults); + + /** FeatureSetDefaults defaults. */ + public defaults: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]; + + /** FeatureSetDefaults minimumEdition. */ + public minimumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** FeatureSetDefaults maximumEdition. */ + public maximumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** + * Creates a new FeatureSetDefaults instance using the specified properties. + * @param [properties] Properties to set + * @returns FeatureSetDefaults instance + */ + public static create(properties?: google.protobuf.IFeatureSetDefaults): google.protobuf.FeatureSetDefaults; + + /** + * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages. + * @param message FeatureSetDefaults message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages. + * @param message FeatureSetDefaults message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FeatureSetDefaults message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FeatureSetDefaults + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults; + + /** + * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FeatureSetDefaults + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults; + + /** + * Verifies a FeatureSetDefaults message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FeatureSetDefaults + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults; + + /** + * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified. + * @param message FeatureSetDefaults + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FeatureSetDefaults, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FeatureSetDefaults to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FeatureSetDefaults + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace FeatureSetDefaults { + + /** Properties of a FeatureSetEditionDefault. */ + interface IFeatureSetEditionDefault { + + /** FeatureSetEditionDefault edition */ + edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + + /** FeatureSetEditionDefault features */ + features?: (google.protobuf.IFeatureSet|null); + } + + /** Represents a FeatureSetEditionDefault. */ + class FeatureSetEditionDefault implements IFeatureSetEditionDefault { + + /** + * Constructs a new FeatureSetEditionDefault. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault); + + /** FeatureSetEditionDefault edition. */ + public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** FeatureSetEditionDefault features. */ + public features?: (google.protobuf.IFeatureSet|null); + + /** + * Creates a new FeatureSetEditionDefault instance using the specified properties. + * @param [properties] Properties to set + * @returns FeatureSetEditionDefault instance + */ + public static create(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault; + + /** + * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages. + * @param message FeatureSetEditionDefault message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages. + * @param message FeatureSetEditionDefault message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FeatureSetEditionDefault message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FeatureSetEditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault; + + /** + * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FeatureSetEditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault; + + /** + * Verifies a FeatureSetEditionDefault message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FeatureSetEditionDefault + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault; + + /** + * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified. + * @param message FeatureSetEditionDefault + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FeatureSetEditionDefault to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FeatureSetEditionDefault + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + /** Properties of a SourceCodeInfo. */ interface ISourceCodeInfo { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 8b8e7074a8a..211edef84e6 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -25209,6 +25209,7 @@ * @interface IMethodSettings * @property {string|null} [selector] MethodSettings selector * @property {google.api.MethodSettings.ILongRunning|null} [longRunning] MethodSettings longRunning + * @property {Array.|null} [autoPopulatedFields] MethodSettings autoPopulatedFields */ /** @@ -25220,6 +25221,7 @@ * @param {google.api.IMethodSettings=} [properties] Properties to set */ function MethodSettings(properties) { + this.autoPopulatedFields = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -25242,6 +25244,14 @@ */ MethodSettings.prototype.longRunning = null; + /** + * MethodSettings autoPopulatedFields. + * @member {Array.} autoPopulatedFields + * @memberof google.api.MethodSettings + * @instance + */ + MethodSettings.prototype.autoPopulatedFields = $util.emptyArray; + /** * Creates a new MethodSettings instance using the specified properties. * @function create @@ -25270,6 +25280,9 @@ writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning")) $root.google.api.MethodSettings.LongRunning.encode(message.longRunning, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.autoPopulatedFields != null && message.autoPopulatedFields.length) + for (var i = 0; i < message.autoPopulatedFields.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.autoPopulatedFields[i]); return writer; }; @@ -25312,6 +25325,12 @@ message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32()); break; } + case 3: { + if (!(message.autoPopulatedFields && message.autoPopulatedFields.length)) + message.autoPopulatedFields = []; + message.autoPopulatedFields.push(reader.string()); + break; + } default: reader.skipType(tag & 7); break; @@ -25355,6 +25374,13 @@ if (error) return "longRunning." + error; } + if (message.autoPopulatedFields != null && message.hasOwnProperty("autoPopulatedFields")) { + if (!Array.isArray(message.autoPopulatedFields)) + return "autoPopulatedFields: array expected"; + for (var i = 0; i < message.autoPopulatedFields.length; ++i) + if (!$util.isString(message.autoPopulatedFields[i])) + return "autoPopulatedFields: string[] expected"; + } return null; }; @@ -25377,6 +25403,13 @@ throw TypeError(".google.api.MethodSettings.longRunning: object expected"); message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning); } + if (object.autoPopulatedFields) { + if (!Array.isArray(object.autoPopulatedFields)) + throw TypeError(".google.api.MethodSettings.autoPopulatedFields: array expected"); + message.autoPopulatedFields = []; + for (var i = 0; i < object.autoPopulatedFields.length; ++i) + message.autoPopulatedFields[i] = String(object.autoPopulatedFields[i]); + } return message; }; @@ -25393,6 +25426,8 @@ if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.autoPopulatedFields = []; if (options.defaults) { object.selector = ""; object.longRunning = null; @@ -25401,6 +25436,11 @@ object.selector = message.selector; if (message.longRunning != null && message.hasOwnProperty("longRunning")) object.longRunning = $root.google.api.MethodSettings.LongRunning.toObject(message.longRunning, options); + if (message.autoPopulatedFields && message.autoPopulatedFields.length) { + object.autoPopulatedFields = []; + for (var j = 0; j < message.autoPopulatedFields.length; ++j) + object.autoPopulatedFields[j] = message.autoPopulatedFields[j]; + } return object; }; @@ -25801,6 +25841,7 @@ * @property {number} IMMUTABLE=5 IMMUTABLE value * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value * @property {number} NON_EMPTY_DEFAULT=7 NON_EMPTY_DEFAULT value + * @property {number} IDENTIFIER=8 IDENTIFIER value */ api.FieldBehavior = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -25812,6 +25853,7 @@ values[valuesById[5] = "IMMUTABLE"] = 5; values[valuesById[6] = "UNORDERED_LIST"] = 6; values[valuesById[7] = "NON_EMPTY_DEFAULT"] = 7; + values[valuesById[8] = "IDENTIFIER"] = 8; return values; })(); @@ -26502,6 +26544,38 @@ return FileDescriptorSet; })(); + /** + * Edition enum. + * @name google.protobuf.Edition + * @enum {number} + * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value + * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value + * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value + * @property {number} EDITION_2023=1000 EDITION_2023 value + * @property {number} EDITION_2024=1001 EDITION_2024 value + * @property {number} EDITION_1_TEST_ONLY=1 EDITION_1_TEST_ONLY value + * @property {number} EDITION_2_TEST_ONLY=2 EDITION_2_TEST_ONLY value + * @property {number} EDITION_99997_TEST_ONLY=99997 EDITION_99997_TEST_ONLY value + * @property {number} EDITION_99998_TEST_ONLY=99998 EDITION_99998_TEST_ONLY value + * @property {number} EDITION_99999_TEST_ONLY=99999 EDITION_99999_TEST_ONLY value + * @property {number} EDITION_MAX=2147483647 EDITION_MAX value + */ + protobuf.Edition = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "EDITION_UNKNOWN"] = 0; + values[valuesById[998] = "EDITION_PROTO2"] = 998; + values[valuesById[999] = "EDITION_PROTO3"] = 999; + values[valuesById[1000] = "EDITION_2023"] = 1000; + values[valuesById[1001] = "EDITION_2024"] = 1001; + values[valuesById[1] = "EDITION_1_TEST_ONLY"] = 1; + values[valuesById[2] = "EDITION_2_TEST_ONLY"] = 2; + values[valuesById[99997] = "EDITION_99997_TEST_ONLY"] = 99997; + values[valuesById[99998] = "EDITION_99998_TEST_ONLY"] = 99998; + values[valuesById[99999] = "EDITION_99999_TEST_ONLY"] = 99999; + values[valuesById[2147483647] = "EDITION_MAX"] = 2147483647; + return values; + })(); + protobuf.FileDescriptorProto = (function() { /** @@ -26520,7 +26594,7 @@ * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo * @property {string|null} [syntax] FileDescriptorProto syntax - * @property {string|null} [edition] FileDescriptorProto edition + * @property {google.protobuf.Edition|null} [edition] FileDescriptorProto edition */ /** @@ -26643,11 +26717,11 @@ /** * FileDescriptorProto edition. - * @member {string} edition + * @member {google.protobuf.Edition} edition * @memberof google.protobuf.FileDescriptorProto * @instance */ - FileDescriptorProto.prototype.edition = ""; + FileDescriptorProto.prototype.edition = 0; /** * Creates a new FileDescriptorProto instance using the specified properties. @@ -26705,7 +26779,7 @@ if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) - writer.uint32(/* id 13, wireType 2 =*/106).string(message.edition); + writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition); return writer; }; @@ -26812,8 +26886,8 @@ message.syntax = reader.string(); break; } - case 13: { - message.edition = reader.string(); + case 14: { + message.edition = reader.int32(); break; } default: @@ -26928,8 +27002,22 @@ if (!$util.isString(message.syntax)) return "syntax: string expected"; if (message.edition != null && message.hasOwnProperty("edition")) - if (!$util.isString(message.edition)) - return "edition: string expected"; + switch (message.edition) { + default: + return "edition: enum value expected"; + case 0: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } return null; }; @@ -27022,8 +27110,58 @@ } if (object.syntax != null) message.syntax = String(object.syntax); - if (object.edition != null) - message.edition = String(object.edition); + switch (object.edition) { + default: + if (typeof object.edition === "number") { + message.edition = object.edition; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.edition = 0; + break; + case "EDITION_PROTO2": + case 998: + message.edition = 998; + break; + case "EDITION_PROTO3": + case 999: + message.edition = 999; + break; + case "EDITION_2023": + case 1000: + message.edition = 1000; + break; + case "EDITION_2024": + case 1001: + message.edition = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.edition = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.edition = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.edition = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.edition = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.edition = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.edition = 2147483647; + break; + } return message; }; @@ -27055,7 +27193,7 @@ object.options = null; object.sourceCodeInfo = null; object.syntax = ""; - object.edition = ""; + object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -27103,7 +27241,7 @@ if (message.syntax != null && message.hasOwnProperty("syntax")) object.syntax = message.syntax; if (message.edition != null && message.hasOwnProperty("edition")) - object.edition = message.edition; + object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; return object; }; @@ -29142,8 +29280,8 @@ default: return "label: enum value expected"; case 1: - case 2: case 3: + case 2: break; } if (message.type != null && message.hasOwnProperty("type")) @@ -29223,14 +29361,14 @@ case 1: message.label = 1; break; - case "LABEL_REQUIRED": - case 2: - message.label = 2; - break; case "LABEL_REPEATED": case 3: message.label = 3; break; + case "LABEL_REQUIRED": + case 2: + message.label = 2; + break; } switch (object.type) { default: @@ -29460,14 +29598,14 @@ * @name google.protobuf.FieldDescriptorProto.Label * @enum {number} * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value - * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value */ FieldDescriptorProto.Label = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[1] = "LABEL_OPTIONAL"] = 1; - values[valuesById[2] = "LABEL_REQUIRED"] = 2; values[valuesById[3] = "LABEL_REPEATED"] = 3; + values[valuesById[2] = "LABEL_REQUIRED"] = 2; return values; })(); @@ -31166,7 +31304,6 @@ * @property {boolean|null} [ccGenericServices] FileOptions ccGenericServices * @property {boolean|null} [javaGenericServices] FileOptions javaGenericServices * @property {boolean|null} [pyGenericServices] FileOptions pyGenericServices - * @property {boolean|null} [phpGenericServices] FileOptions phpGenericServices * @property {boolean|null} [deprecated] FileOptions deprecated * @property {boolean|null} [ccEnableArenas] FileOptions ccEnableArenas * @property {string|null} [objcClassPrefix] FileOptions objcClassPrefix @@ -31276,14 +31413,6 @@ */ FileOptions.prototype.pyGenericServices = false; - /** - * FileOptions phpGenericServices. - * @member {boolean} phpGenericServices - * @memberof google.protobuf.FileOptions - * @instance - */ - FileOptions.prototype.phpGenericServices = false; - /** * FileOptions deprecated. * @member {boolean} deprecated @@ -31430,8 +31559,6 @@ writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix); if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace); - if (message.phpGenericServices != null && Object.hasOwnProperty.call(message, "phpGenericServices")) - writer.uint32(/* id 42, wireType 0 =*/336).bool(message.phpGenericServices); if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace); if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) @@ -31515,10 +31642,6 @@ message.pyGenericServices = reader.bool(); break; } - case 42: { - message.phpGenericServices = reader.bool(); - break; - } case 23: { message.deprecated = reader.bool(); break; @@ -31636,9 +31759,6 @@ if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) if (typeof message.pyGenericServices !== "boolean") return "pyGenericServices: boolean expected"; - if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) - if (typeof message.phpGenericServices !== "boolean") - return "phpGenericServices: boolean expected"; if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; @@ -31733,8 +31853,6 @@ message.javaGenericServices = Boolean(object.javaGenericServices); if (object.pyGenericServices != null) message.pyGenericServices = Boolean(object.pyGenericServices); - if (object.phpGenericServices != null) - message.phpGenericServices = Boolean(object.phpGenericServices); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); if (object.ccEnableArenas != null) @@ -31804,7 +31922,6 @@ object.swiftPrefix = ""; object.phpClassPrefix = ""; object.phpNamespace = ""; - object.phpGenericServices = false; object.phpMetadataNamespace = ""; object.rubyPackage = ""; object.features = null; @@ -31843,8 +31960,6 @@ object.phpClassPrefix = message.phpClassPrefix; if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) object.phpNamespace = message.phpNamespace; - if (message.phpGenericServices != null && message.hasOwnProperty("phpGenericServices")) - object.phpGenericServices = message.phpGenericServices; if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) object.phpMetadataNamespace = message.phpMetadataNamespace; if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) @@ -32731,6 +32846,7 @@ case 5: case 6: case 7: + case 8: break; } } @@ -32942,6 +33058,10 @@ case 7: message[".google.api.fieldBehavior"][i] = 7; break; + case "IDENTIFIER": + case 8: + message[".google.api.fieldBehavior"][i] = 8; + break; } } return message; @@ -33131,7 +33251,7 @@ * Properties of an EditionDefault. * @memberof google.protobuf.FieldOptions * @interface IEditionDefault - * @property {string|null} [edition] EditionDefault edition + * @property {google.protobuf.Edition|null} [edition] EditionDefault edition * @property {string|null} [value] EditionDefault value */ @@ -33152,11 +33272,11 @@ /** * EditionDefault edition. - * @member {string} edition + * @member {google.protobuf.Edition} edition * @memberof google.protobuf.FieldOptions.EditionDefault * @instance */ - EditionDefault.prototype.edition = ""; + EditionDefault.prototype.edition = 0; /** * EditionDefault value. @@ -33190,10 +33310,10 @@ EditionDefault.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.edition); if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition); return writer; }; @@ -33228,8 +33348,8 @@ while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { - case 1: { - message.edition = reader.string(); + case 3: { + message.edition = reader.int32(); break; } case 2: { @@ -33272,8 +33392,22 @@ if (typeof message !== "object" || message === null) return "object expected"; if (message.edition != null && message.hasOwnProperty("edition")) - if (!$util.isString(message.edition)) - return "edition: string expected"; + switch (message.edition) { + default: + return "edition: enum value expected"; + case 0: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } if (message.value != null && message.hasOwnProperty("value")) if (!$util.isString(message.value)) return "value: string expected"; @@ -33292,8 +33426,58 @@ if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault) return object; var message = new $root.google.protobuf.FieldOptions.EditionDefault(); - if (object.edition != null) - message.edition = String(object.edition); + switch (object.edition) { + default: + if (typeof object.edition === "number") { + message.edition = object.edition; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.edition = 0; + break; + case "EDITION_PROTO2": + case 998: + message.edition = 998; + break; + case "EDITION_PROTO3": + case 999: + message.edition = 999; + break; + case "EDITION_2023": + case 1000: + message.edition = 1000; + break; + case "EDITION_2024": + case 1001: + message.edition = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.edition = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.edition = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.edition = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.edition = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.edition = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.edition = 2147483647; + break; + } if (object.value != null) message.value = String(object.value); return message; @@ -33313,13 +33497,13 @@ options = {}; var object = {}; if (options.defaults) { - object.edition = ""; object.value = ""; + object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; } - if (message.edition != null && message.hasOwnProperty("edition")) - object.edition = message.edition; if (message.value != null && message.hasOwnProperty("value")) object.value = message.value; + if (message.edition != null && message.hasOwnProperty("edition")) + object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; return object; }; @@ -35655,10 +35839,9 @@ * @property {google.protobuf.FeatureSet.FieldPresence|null} [fieldPresence] FeatureSet fieldPresence * @property {google.protobuf.FeatureSet.EnumType|null} [enumType] FeatureSet enumType * @property {google.protobuf.FeatureSet.RepeatedFieldEncoding|null} [repeatedFieldEncoding] FeatureSet repeatedFieldEncoding - * @property {google.protobuf.FeatureSet.StringFieldValidation|null} [stringFieldValidation] FeatureSet stringFieldValidation + * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat - * @property {google.protobuf.IFeatureSet|null} [rawFeatures] FeatureSet rawFeatures */ /** @@ -35701,12 +35884,12 @@ FeatureSet.prototype.repeatedFieldEncoding = 0; /** - * FeatureSet stringFieldValidation. - * @member {google.protobuf.FeatureSet.StringFieldValidation} stringFieldValidation + * FeatureSet utf8Validation. + * @member {google.protobuf.FeatureSet.Utf8Validation} utf8Validation * @memberof google.protobuf.FeatureSet * @instance */ - FeatureSet.prototype.stringFieldValidation = 0; + FeatureSet.prototype.utf8Validation = 0; /** * FeatureSet messageEncoding. @@ -35724,14 +35907,6 @@ */ FeatureSet.prototype.jsonFormat = 0; - /** - * FeatureSet rawFeatures. - * @member {google.protobuf.IFeatureSet|null|undefined} rawFeatures - * @memberof google.protobuf.FeatureSet - * @instance - */ - FeatureSet.prototype.rawFeatures = null; - /** * Creates a new FeatureSet instance using the specified properties. * @function create @@ -35762,14 +35937,12 @@ writer.uint32(/* id 2, wireType 0 =*/16).int32(message.enumType); if (message.repeatedFieldEncoding != null && Object.hasOwnProperty.call(message, "repeatedFieldEncoding")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.repeatedFieldEncoding); - if (message.stringFieldValidation != null && Object.hasOwnProperty.call(message, "stringFieldValidation")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.stringFieldValidation); + if (message.utf8Validation != null && Object.hasOwnProperty.call(message, "utf8Validation")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.utf8Validation); if (message.messageEncoding != null && Object.hasOwnProperty.call(message, "messageEncoding")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding); if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat); - if (message.rawFeatures != null && Object.hasOwnProperty.call(message, "rawFeatures")) - $root.google.protobuf.FeatureSet.encode(message.rawFeatures, writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); return writer; }; @@ -35817,7 +35990,7 @@ break; } case 4: { - message.stringFieldValidation = reader.int32(); + message.utf8Validation = reader.int32(); break; } case 5: { @@ -35828,10 +36001,6 @@ message.jsonFormat = reader.int32(); break; } - case 999: { - message.rawFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); - break; - } default: reader.skipType(tag & 7); break; @@ -35895,12 +36064,11 @@ case 2: break; } - if (message.stringFieldValidation != null && message.hasOwnProperty("stringFieldValidation")) - switch (message.stringFieldValidation) { + if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation")) + switch (message.utf8Validation) { default: - return "stringFieldValidation: enum value expected"; + return "utf8Validation: enum value expected"; case 0: - case 1: case 2: case 3: break; @@ -35923,11 +36091,6 @@ case 2: break; } - if (message.rawFeatures != null && message.hasOwnProperty("rawFeatures")) { - var error = $root.google.protobuf.FeatureSet.verify(message.rawFeatures); - if (error) - return "rawFeatures." + error; - } return null; }; @@ -36007,28 +36170,24 @@ message.repeatedFieldEncoding = 2; break; } - switch (object.stringFieldValidation) { + switch (object.utf8Validation) { default: - if (typeof object.stringFieldValidation === "number") { - message.stringFieldValidation = object.stringFieldValidation; + if (typeof object.utf8Validation === "number") { + message.utf8Validation = object.utf8Validation; break; } break; - case "STRING_FIELD_VALIDATION_UNKNOWN": + case "UTF8_VALIDATION_UNKNOWN": case 0: - message.stringFieldValidation = 0; - break; - case "MANDATORY": - case 1: - message.stringFieldValidation = 1; + message.utf8Validation = 0; break; - case "HINT": + case "VERIFY": case 2: - message.stringFieldValidation = 2; + message.utf8Validation = 2; break; case "NONE": case 3: - message.stringFieldValidation = 3; + message.utf8Validation = 3; break; } switch (object.messageEncoding) { @@ -36071,11 +36230,6 @@ message.jsonFormat = 2; break; } - if (object.rawFeatures != null) { - if (typeof object.rawFeatures !== "object") - throw TypeError(".google.protobuf.FeatureSet.rawFeatures: object expected"); - message.rawFeatures = $root.google.protobuf.FeatureSet.fromObject(object.rawFeatures); - } return message; }; @@ -36096,10 +36250,9 @@ object.fieldPresence = options.enums === String ? "FIELD_PRESENCE_UNKNOWN" : 0; object.enumType = options.enums === String ? "ENUM_TYPE_UNKNOWN" : 0; object.repeatedFieldEncoding = options.enums === String ? "REPEATED_FIELD_ENCODING_UNKNOWN" : 0; - object.stringFieldValidation = options.enums === String ? "STRING_FIELD_VALIDATION_UNKNOWN" : 0; + object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0; object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0; object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0; - object.rawFeatures = null; } if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence; @@ -36107,14 +36260,12 @@ object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType; if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding")) object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding; - if (message.stringFieldValidation != null && message.hasOwnProperty("stringFieldValidation")) - object.stringFieldValidation = options.enums === String ? $root.google.protobuf.FeatureSet.StringFieldValidation[message.stringFieldValidation] === undefined ? message.stringFieldValidation : $root.google.protobuf.FeatureSet.StringFieldValidation[message.stringFieldValidation] : message.stringFieldValidation; + if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation")) + object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] === undefined ? message.utf8Validation : $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation; if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding")) object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding; if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat; - if (message.rawFeatures != null && message.hasOwnProperty("rawFeatures")) - object.rawFeatures = $root.google.protobuf.FeatureSet.toObject(message.rawFeatures, options); return object; }; @@ -36195,19 +36346,17 @@ })(); /** - * StringFieldValidation enum. - * @name google.protobuf.FeatureSet.StringFieldValidation + * Utf8Validation enum. + * @name google.protobuf.FeatureSet.Utf8Validation * @enum {number} - * @property {number} STRING_FIELD_VALIDATION_UNKNOWN=0 STRING_FIELD_VALIDATION_UNKNOWN value - * @property {number} MANDATORY=1 MANDATORY value - * @property {number} HINT=2 HINT value + * @property {number} UTF8_VALIDATION_UNKNOWN=0 UTF8_VALIDATION_UNKNOWN value + * @property {number} VERIFY=2 VERIFY value * @property {number} NONE=3 NONE value */ - FeatureSet.StringFieldValidation = (function() { + FeatureSet.Utf8Validation = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "STRING_FIELD_VALIDATION_UNKNOWN"] = 0; - values[valuesById[1] = "MANDATORY"] = 1; - values[valuesById[2] = "HINT"] = 2; + values[valuesById[0] = "UTF8_VALIDATION_UNKNOWN"] = 0; + values[valuesById[2] = "VERIFY"] = 2; values[valuesById[3] = "NONE"] = 3; return values; })(); @@ -36247,6 +36396,702 @@ return FeatureSet; })(); + protobuf.FeatureSetDefaults = (function() { + + /** + * Properties of a FeatureSetDefaults. + * @memberof google.protobuf + * @interface IFeatureSetDefaults + * @property {Array.|null} [defaults] FeatureSetDefaults defaults + * @property {google.protobuf.Edition|null} [minimumEdition] FeatureSetDefaults minimumEdition + * @property {google.protobuf.Edition|null} [maximumEdition] FeatureSetDefaults maximumEdition + */ + + /** + * Constructs a new FeatureSetDefaults. + * @memberof google.protobuf + * @classdesc Represents a FeatureSetDefaults. + * @implements IFeatureSetDefaults + * @constructor + * @param {google.protobuf.IFeatureSetDefaults=} [properties] Properties to set + */ + function FeatureSetDefaults(properties) { + this.defaults = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FeatureSetDefaults defaults. + * @member {Array.} defaults + * @memberof google.protobuf.FeatureSetDefaults + * @instance + */ + FeatureSetDefaults.prototype.defaults = $util.emptyArray; + + /** + * FeatureSetDefaults minimumEdition. + * @member {google.protobuf.Edition} minimumEdition + * @memberof google.protobuf.FeatureSetDefaults + * @instance + */ + FeatureSetDefaults.prototype.minimumEdition = 0; + + /** + * FeatureSetDefaults maximumEdition. + * @member {google.protobuf.Edition} maximumEdition + * @memberof google.protobuf.FeatureSetDefaults + * @instance + */ + FeatureSetDefaults.prototype.maximumEdition = 0; + + /** + * Creates a new FeatureSetDefaults instance using the specified properties. + * @function create + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {google.protobuf.IFeatureSetDefaults=} [properties] Properties to set + * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults instance + */ + FeatureSetDefaults.create = function create(properties) { + return new FeatureSetDefaults(properties); + }; + + /** + * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {google.protobuf.IFeatureSetDefaults} message FeatureSetDefaults message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSetDefaults.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.defaults != null && message.defaults.length) + for (var i = 0; i < message.defaults.length; ++i) + $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.encode(message.defaults[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.minimumEdition != null && Object.hasOwnProperty.call(message, "minimumEdition")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.minimumEdition); + if (message.maximumEdition != null && Object.hasOwnProperty.call(message, "maximumEdition")) + writer.uint32(/* id 5, wireType 0 =*/40).int32(message.maximumEdition); + return writer; + }; + + /** + * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {google.protobuf.IFeatureSetDefaults} message FeatureSetDefaults message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSetDefaults.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FeatureSetDefaults message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSetDefaults.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (!(message.defaults && message.defaults.length)) + message.defaults = []; + message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32())); + break; + } + case 4: { + message.minimumEdition = reader.int32(); + break; + } + case 5: { + message.maximumEdition = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSetDefaults.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FeatureSetDefaults message. + * @function verify + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FeatureSetDefaults.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.defaults != null && message.hasOwnProperty("defaults")) { + if (!Array.isArray(message.defaults)) + return "defaults: array expected"; + for (var i = 0; i < message.defaults.length; ++i) { + var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]); + if (error) + return "defaults." + error; + } + } + if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition")) + switch (message.minimumEdition) { + default: + return "minimumEdition: enum value expected"; + case 0: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition")) + switch (message.maximumEdition) { + default: + return "maximumEdition: enum value expected"; + case 0: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + return null; + }; + + /** + * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults + */ + FeatureSetDefaults.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FeatureSetDefaults) + return object; + var message = new $root.google.protobuf.FeatureSetDefaults(); + if (object.defaults) { + if (!Array.isArray(object.defaults)) + throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: array expected"); + message.defaults = []; + for (var i = 0; i < object.defaults.length; ++i) { + if (typeof object.defaults[i] !== "object") + throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected"); + message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]); + } + } + switch (object.minimumEdition) { + default: + if (typeof object.minimumEdition === "number") { + message.minimumEdition = object.minimumEdition; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.minimumEdition = 0; + break; + case "EDITION_PROTO2": + case 998: + message.minimumEdition = 998; + break; + case "EDITION_PROTO3": + case 999: + message.minimumEdition = 999; + break; + case "EDITION_2023": + case 1000: + message.minimumEdition = 1000; + break; + case "EDITION_2024": + case 1001: + message.minimumEdition = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.minimumEdition = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.minimumEdition = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.minimumEdition = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.minimumEdition = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.minimumEdition = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.minimumEdition = 2147483647; + break; + } + switch (object.maximumEdition) { + default: + if (typeof object.maximumEdition === "number") { + message.maximumEdition = object.maximumEdition; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.maximumEdition = 0; + break; + case "EDITION_PROTO2": + case 998: + message.maximumEdition = 998; + break; + case "EDITION_PROTO3": + case 999: + message.maximumEdition = 999; + break; + case "EDITION_2023": + case 1000: + message.maximumEdition = 1000; + break; + case "EDITION_2024": + case 1001: + message.maximumEdition = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.maximumEdition = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.maximumEdition = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.maximumEdition = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.maximumEdition = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.maximumEdition = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.maximumEdition = 2147483647; + break; + } + return message; + }; + + /** + * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {google.protobuf.FeatureSetDefaults} message FeatureSetDefaults + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FeatureSetDefaults.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.defaults = []; + if (options.defaults) { + object.minimumEdition = options.enums === String ? "EDITION_UNKNOWN" : 0; + object.maximumEdition = options.enums === String ? "EDITION_UNKNOWN" : 0; + } + if (message.defaults && message.defaults.length) { + object.defaults = []; + for (var j = 0; j < message.defaults.length; ++j) + object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options); + } + if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition")) + object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] === undefined ? message.minimumEdition : $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition; + if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition")) + object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] === undefined ? message.maximumEdition : $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition; + return object; + }; + + /** + * Converts this FeatureSetDefaults to JSON. + * @function toJSON + * @memberof google.protobuf.FeatureSetDefaults + * @instance + * @returns {Object.} JSON object + */ + FeatureSetDefaults.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for FeatureSetDefaults + * @function getTypeUrl + * @memberof google.protobuf.FeatureSetDefaults + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FeatureSetDefaults.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FeatureSetDefaults"; + }; + + FeatureSetDefaults.FeatureSetEditionDefault = (function() { + + /** + * Properties of a FeatureSetEditionDefault. + * @memberof google.protobuf.FeatureSetDefaults + * @interface IFeatureSetEditionDefault + * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition + * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features + */ + + /** + * Constructs a new FeatureSetEditionDefault. + * @memberof google.protobuf.FeatureSetDefaults + * @classdesc Represents a FeatureSetEditionDefault. + * @implements IFeatureSetEditionDefault + * @constructor + * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault=} [properties] Properties to set + */ + function FeatureSetEditionDefault(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FeatureSetEditionDefault edition. + * @member {google.protobuf.Edition} edition + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @instance + */ + FeatureSetEditionDefault.prototype.edition = 0; + + /** + * FeatureSetEditionDefault features. + * @member {google.protobuf.IFeatureSet|null|undefined} features + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @instance + */ + FeatureSetEditionDefault.prototype.features = null; + + /** + * Creates a new FeatureSetEditionDefault instance using the specified properties. + * @function create + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault=} [properties] Properties to set + * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault instance + */ + FeatureSetEditionDefault.create = function create(properties) { + return new FeatureSetEditionDefault(properties); + }; + + /** + * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault} message FeatureSetEditionDefault message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSetEditionDefault.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition); + return writer; + }; + + /** + * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault} message FeatureSetEditionDefault message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSetEditionDefault.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FeatureSetEditionDefault message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSetEditionDefault.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 3: { + message.edition = reader.int32(); + break; + } + case 2: { + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSetEditionDefault.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FeatureSetEditionDefault message. + * @function verify + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FeatureSetEditionDefault.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.edition != null && message.hasOwnProperty("edition")) + switch (message.edition) { + default: + return "edition: enum value expected"; + case 0: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + if (message.features != null && message.hasOwnProperty("features")) { + var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (error) + return "features." + error; + } + return null; + }; + + /** + * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault + */ + FeatureSetEditionDefault.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault) + return object; + var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault(); + switch (object.edition) { + default: + if (typeof object.edition === "number") { + message.edition = object.edition; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.edition = 0; + break; + case "EDITION_PROTO2": + case 998: + message.edition = 998; + break; + case "EDITION_PROTO3": + case 999: + message.edition = 999; + break; + case "EDITION_2023": + case 1000: + message.edition = 1000; + break; + case "EDITION_2024": + case 1001: + message.edition = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.edition = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.edition = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.edition = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.edition = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.edition = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.edition = 2147483647; + break; + } + if (object.features != null) { + if (typeof object.features !== "object") + throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected"); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + } + return message; + }; + + /** + * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} message FeatureSetEditionDefault + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FeatureSetEditionDefault.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.features = null; + object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; + } + if (message.features != null && message.hasOwnProperty("features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.edition != null && message.hasOwnProperty("edition")) + object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; + return object; + }; + + /** + * Converts this FeatureSetEditionDefault to JSON. + * @function toJSON + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @instance + * @returns {Object.} JSON object + */ + FeatureSetEditionDefault.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for FeatureSetEditionDefault + * @function getTypeUrl + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FeatureSetEditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"; + }; + + return FeatureSetEditionDefault; + })(); + + return FeatureSetDefaults; + })(); + protobuf.SourceCodeInfo = (function() { /** diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 907d2e39a91..45262f1e1a5 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -2304,6 +2304,11 @@ "longRunning": { "type": "LongRunning", "id": 2 + }, + "autoPopulatedFields": { + "rule": "repeated", + "type": "string", + "id": 3 } }, "nested": { @@ -2375,7 +2380,8 @@ "INPUT_ONLY": 4, "IMMUTABLE": 5, "UNORDERED_LIST": 6, - "NON_EMPTY_DEFAULT": 7 + "NON_EMPTY_DEFAULT": 7, + "IDENTIFIER": 8 } }, "routing": { @@ -2426,6 +2432,21 @@ } } }, + "Edition": { + "values": { + "EDITION_UNKNOWN": 0, + "EDITION_PROTO2": 998, + "EDITION_PROTO3": 999, + "EDITION_2023": 1000, + "EDITION_2024": 1001, + "EDITION_1_TEST_ONLY": 1, + "EDITION_2_TEST_ONLY": 2, + "EDITION_99997_TEST_ONLY": 99997, + "EDITION_99998_TEST_ONLY": 99998, + "EDITION_99999_TEST_ONLY": 99999, + "EDITION_MAX": 2147483647 + } + }, "FileDescriptorProto": { "fields": { "name": { @@ -2490,8 +2511,8 @@ "id": 12 }, "edition": { - "type": "string", - "id": 13 + "type": "Edition", + "id": 14 } } }, @@ -2600,7 +2621,8 @@ "type": "VerificationState", "id": 3, "options": { - "default": "UNVERIFIED" + "default": "UNVERIFIED", + "retention": "RETENTION_SOURCE" } } }, @@ -2722,8 +2744,8 @@ "Label": { "values": { "LABEL_OPTIONAL": 1, - "LABEL_REQUIRED": 2, - "LABEL_REPEATED": 3 + "LABEL_REPEATED": 3, + "LABEL_REQUIRED": 2 } } } @@ -2911,13 +2933,6 @@ "default": false } }, - "phpGenericServices": { - "type": "bool", - "id": 42, - "options": { - "default": false - } - }, "deprecated": { "type": "bool", "id": 23, @@ -2977,6 +2992,10 @@ ] ], "reserved": [ + [ + 42, + 42 + ], [ 38, 38 @@ -3202,8 +3221,8 @@ "EditionDefault": { "fields": { "edition": { - "type": "string", - "id": 1 + "type": "Edition", + "id": 3 }, "value": { "type": "string", @@ -3433,7 +3452,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", + "edition_defaults.edition": "EDITION_2023", "edition_defaults.value": "EXPLICIT" } }, @@ -3443,7 +3462,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", + "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "OPEN" } }, @@ -3453,18 +3472,18 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", + "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "PACKED" } }, - "stringFieldValidation": { - "type": "StringFieldValidation", + "utf8Validation": { + "type": "Utf8Validation", "id": 4, "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", - "edition_defaults.value": "MANDATORY" + "edition_defaults.edition": "EDITION_PROTO3", + "edition_defaults.value": "VERIFY" } }, "messageEncoding": { @@ -3473,7 +3492,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", + "edition_defaults.edition": "EDITION_PROTO2", "edition_defaults.value": "LENGTH_PREFIXED" } }, @@ -3483,16 +3502,9 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "2023", + "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "ALLOW" } - }, - "rawFeatures": { - "type": "FeatureSet", - "id": 999, - "options": { - "targets": "TARGET_TYPE_UNKNOWN" - } } }, "extensions": [ @@ -3509,6 +3521,12 @@ 9999 ] ], + "reserved": [ + [ + 999, + 999 + ] + ], "nested": { "FieldPresence": { "values": { @@ -3532,11 +3550,10 @@ "EXPANDED": 2 } }, - "StringFieldValidation": { + "Utf8Validation": { "values": { - "STRING_FIELD_VALIDATION_UNKNOWN": 0, - "MANDATORY": 1, - "HINT": 2, + "UTF8_VALIDATION_UNKNOWN": 0, + "VERIFY": 2, "NONE": 3 } }, @@ -3556,6 +3573,37 @@ } } }, + "FeatureSetDefaults": { + "fields": { + "defaults": { + "rule": "repeated", + "type": "FeatureSetEditionDefault", + "id": 1 + }, + "minimumEdition": { + "type": "Edition", + "id": 4 + }, + "maximumEdition": { + "type": "Edition", + "id": 5 + } + }, + "nested": { + "FeatureSetEditionDefault": { + "fields": { + "edition": { + "type": "Edition", + "id": 3 + }, + "features": { + "type": "FeatureSet", + "id": 2 + } + } + } + } + }, "SourceCodeInfo": { "fields": { "location": { From ac757d9e9e5da33ad32cd4b51d4bef031b67f605 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 29 Jan 2024 13:30:28 -0500 Subject: [PATCH 767/820] test: remove await from code samples (#1229) * Remove await Remove await from the sample. It is preventing the sample from working. * Remove await from samples await causes the code sample not to work so needs to be removed * Restructure the OR query code sample The OR query code sample should be run in a similar way to the other code samples. * Cleanup and change assert There is no guarantee that the integration test database will have no Buy Milk or Feed cats data in the database to begin with so we will have to make sure to remove all such data so that the test starts with no such data in datastore. This is a requirement for the console output to be correct. Also, since we now use execSync, the standard output cannot be found in console.log.firstCall.args[0] so we have to get it from stdout just like in the other tests. * inline the test variable Inline simple local variables as suggested in PR feedback. --- .../nodejs-datastore/samples/export.js | 2 +- .../nodejs-datastore/samples/import.js | 2 +- .../nodejs-datastore/samples/indexes.get.js | 2 +- .../nodejs-datastore/samples/indexes.list.js | 2 +- .../nodejs-datastore/samples/queryFilterOr.js | 5 +++-- .../samples/test/queryFilterOr.test.js | 21 +++++++++++++++---- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/samples/export.js b/handwritten/nodejs-datastore/samples/export.js index 49a385f37b3..234a748d9cd 100644 --- a/handwritten/nodejs-datastore/samples/export.js +++ b/handwritten/nodejs-datastore/samples/export.js @@ -40,7 +40,7 @@ async function main(bucket = 'YOUR_BUCKET_NAME') { console.log(specificExportOperation.result.outputUrl); } - await exportEntities(); + exportEntities(); // [END datastore_admin_entities_export] } diff --git a/handwritten/nodejs-datastore/samples/import.js b/handwritten/nodejs-datastore/samples/import.js index b97eae509b2..f86601971a1 100644 --- a/handwritten/nodejs-datastore/samples/import.js +++ b/handwritten/nodejs-datastore/samples/import.js @@ -45,7 +45,7 @@ async function main(file = 'YOUR_FILE_NAME') { await specificImportOperation.cancel(); } - await importEntities(); + importEntities(); // [END datastore_admin_entities_import] } diff --git a/handwritten/nodejs-datastore/samples/indexes.get.js b/handwritten/nodejs-datastore/samples/indexes.get.js index f8eb0450c18..e434cf5ef87 100644 --- a/handwritten/nodejs-datastore/samples/indexes.get.js +++ b/handwritten/nodejs-datastore/samples/indexes.get.js @@ -31,7 +31,7 @@ async function main(indexId = 'YOUR_INDEX_ID') { console.log('Properties:', metadata.properties); } - await getIndex(); + getIndex(); // [END datastore_admin_index_get] } diff --git a/handwritten/nodejs-datastore/samples/indexes.list.js b/handwritten/nodejs-datastore/samples/indexes.list.js index 1243b6a5717..b061521308a 100644 --- a/handwritten/nodejs-datastore/samples/indexes.list.js +++ b/handwritten/nodejs-datastore/samples/indexes.list.js @@ -37,7 +37,7 @@ async function main() { }); } - await listIndexes(); + listIndexes(); // [END datastore_admin_index_list] } diff --git a/handwritten/nodejs-datastore/samples/queryFilterOr.js b/handwritten/nodejs-datastore/samples/queryFilterOr.js index cc8343d2ff6..80913cd9c8a 100644 --- a/handwritten/nodejs-datastore/samples/queryFilterOr.js +++ b/handwritten/nodejs-datastore/samples/queryFilterOr.js @@ -46,8 +46,9 @@ async function main() { } } - await queryFilterOr(); + queryFilterOr(); // [END datastore_query_filter_or] } -exports.queryFilterOr = main; +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js index 952760a2bce..f35113964e0 100644 --- a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js +++ b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js @@ -20,12 +20,14 @@ const path = require('path'); const {assert} = require('chai'); const {describe, it, after, before} = require('mocha'); const sinon = require('sinon'); -const {Datastore} = require('@google-cloud/datastore'); +const {Datastore, PropertyFilter, or} = require('@google-cloud/datastore'); const datastore = new Datastore(); -const {queryFilterOr} = require('../queryFilterOr'); +const cp = require('child_process'); let taskKey1, taskKey2; +const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); + describe('Creating a union query', () => { const stubConsole = function () { sinon.stub(console, 'error'); @@ -57,6 +59,18 @@ describe('Creating a union query', () => { }, }; + // Ensure the datastore database has no existing data for the task keys. + const query = datastore + .createQuery('Task') + .filter( + or([ + new PropertyFilter('description', '=', 'Buy milk'), + new PropertyFilter('description', '=', 'Feed cats'), + ]) + ); + const [entities] = await datastore.runQuery(query); + await datastore.delete(entities.map(entity => entity[datastore.KEY])); + await datastore.upsert(entity1); await datastore.upsert(entity2); }); @@ -67,7 +81,6 @@ describe('Creating a union query', () => { }); it('should get a combination of items from the Datastore', async () => { - await queryFilterOr(); - assert.include(console.log.firstCall.args[0], 'Entity'); + assert.strictEqual(execSync(`node ./queryFilterOr.js`), 'Entity found: Feed cats\nEntity found: Buy milk\n'); }); }); From f87276dfe75a733f751608226cdee4fc5b8069c5 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 17:14:24 -0500 Subject: [PATCH 768/820] feat: Trusted Private Cloud support, use the universeDomain parameter (#1227) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix!: remove types QueryMode, QueryPlan, ResultSetStats fix!: remove QueryMode field from RunQueryRequest fix!: remove ResultSetStats field from RunQueryResponse fix!: remove QueryMode field from RunAggregationQueryRequest fix!: remove ResultSetStats field from RunAggregationQueryResponse PiperOrigin-RevId: 601486345 Source-Link: https://github.com/googleapis/googleapis/commit/4a6230d5fd2034a994794681b56bc7d04d9e1efd Source-Link: https://github.com/googleapis/googleapis-gen/commit/db652ee83ed65816ec6d910d965458d684a31c73 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZGI2NTJlZTgzZWQ2NTgxNmVjNmQ5MTBkOTY1NDU4ZDY4NGEzMWM3MyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Trusted Private Cloud support, use the universeDomain parameter feat: auto populate UUID fields where needed fix: revert changes to streaming retries Use gapic-generator-typescript v4.4.0. PiperOrigin-RevId: 603757799 Source-Link: https://github.com/googleapis/googleapis/commit/1a45bf7393b52407188c82e63101db7dc9c72026 Source-Link: https://github.com/googleapis/googleapis-gen/commit/19ca4b45a53d00cb7bdd94b442b60bd237dfe123 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMTljYTRiNDVhNTNkMDBjYjdiZGQ5NGI0NDJiNjBiZDIzN2RmZTEyMyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- .../google/datastore/v1/datastore.proto | 23 - .../nodejs-datastore/protos/protos.d.ts | 231 ------- handwritten/nodejs-datastore/protos/protos.js | 611 ------------------ .../nodejs-datastore/protos/protos.json | 51 +- .../v1/datastore.run_aggregation_query.js | 6 - .../generated/v1/datastore.run_query.js | 6 - .../v1/datastore_admin.list_indexes.js | 2 +- .../snippet_metadata_google.datastore.v1.json | 12 +- .../src/v1/datastore_admin_client.ts | 65 +- .../src/v1/datastore_client.ts | 73 ++- .../src/v1/datastore_proto_list.json | 3 +- .../test/gapic_datastore_admin_v1.ts | 64 +- .../test/gapic_datastore_v1.ts | 60 +- 13 files changed, 239 insertions(+), 968 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 476d48f0260..533988d7776 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -23,7 +23,6 @@ import "google/api/routing.proto"; import "google/datastore/v1/aggregation_result.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; -import "google/datastore/v1/query_profile.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; @@ -233,11 +232,6 @@ message RunQueryRequest { // The GQL query to run. This query must be a non-aggregation query. GqlQuery gql_query = 7; } - - // Optional. The mode in which the query request is processed. This field is - // optional, and when not provided, it defaults to `NORMAL` mode where no - // additional statistics will be returned with the query results. - QueryMode mode = 11 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -257,12 +251,6 @@ message RunQueryResponse { // was set in // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. bytes transaction = 5; - - // Query plan and execution statistics. Note that the returned stats are - // subject to change as Firestore evolves. - // - // This is only present when the request specifies a mode other than `NORMAL`. - ResultSetStats stats = 6; } // The request for @@ -294,11 +282,6 @@ message RunAggregationQueryRequest { // The GQL query to run. This query must be an aggregation query. GqlQuery gql_query = 7; } - - // Optional. The mode in which the query request is processed. This field is - // optional, and when not provided, it defaults to `NORMAL` mode where no - // additional statistics will be returned with the query results. - QueryMode mode = 10 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -318,12 +301,6 @@ message RunAggregationQueryResponse { // was set in // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. bytes transaction = 5; - - // Query plan and execution statistics. Note that the returned stats are - // subject to change as Firestore evolves. - // - // This is only present when the request specifies a mode other than `NORMAL`. - ResultSetStats stats = 6; } // The request for diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 5e12429f0d4..63af45b93e6 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -5802,9 +5802,6 @@ export namespace google { /** RunQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); - - /** RunQueryRequest mode */ - mode?: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode|null); } /** Represents a RunQueryRequest. */ @@ -5834,9 +5831,6 @@ export namespace google { /** RunQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); - /** RunQueryRequest mode. */ - public mode: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode); - /** RunQueryRequest queryType. */ public queryType?: ("query"|"gqlQuery"); @@ -5929,9 +5923,6 @@ export namespace google { /** RunQueryResponse transaction */ transaction?: (Uint8Array|string|null); - - /** RunQueryResponse stats */ - stats?: (google.datastore.v1.IResultSetStats|null); } /** Represents a RunQueryResponse. */ @@ -5952,9 +5943,6 @@ export namespace google { /** RunQueryResponse transaction. */ public transaction: (Uint8Array|string); - /** RunQueryResponse stats. */ - public stats?: (google.datastore.v1.IResultSetStats|null); - /** * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -6053,9 +6041,6 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); - - /** RunAggregationQueryRequest mode */ - mode?: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode|null); } /** Represents a RunAggregationQueryRequest. */ @@ -6085,9 +6070,6 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); - /** RunAggregationQueryRequest mode. */ - public mode: (google.datastore.v1.QueryMode|keyof typeof google.datastore.v1.QueryMode); - /** RunAggregationQueryRequest queryType. */ public queryType?: ("aggregationQuery"|"gqlQuery"); @@ -6180,9 +6162,6 @@ export namespace google { /** RunAggregationQueryResponse transaction */ transaction?: (Uint8Array|string|null); - - /** RunAggregationQueryResponse stats */ - stats?: (google.datastore.v1.IResultSetStats|null); } /** Represents a RunAggregationQueryResponse. */ @@ -6203,9 +6182,6 @@ export namespace google { /** RunAggregationQueryResponse transaction. */ public transaction: (Uint8Array|string); - /** RunAggregationQueryResponse stats. */ - public stats?: (google.datastore.v1.IResultSetStats|null); - /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -8029,213 +8005,6 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } } - - /** QueryMode enum. */ - enum QueryMode { - NORMAL = 0, - PLAN = 1, - PROFILE = 2 - } - - /** Properties of a QueryPlan. */ - interface IQueryPlan { - - /** QueryPlan planInfo */ - planInfo?: (google.protobuf.IStruct|null); - } - - /** Represents a QueryPlan. */ - class QueryPlan implements IQueryPlan { - - /** - * Constructs a new QueryPlan. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IQueryPlan); - - /** QueryPlan planInfo. */ - public planInfo?: (google.protobuf.IStruct|null); - - /** - * Creates a new QueryPlan instance using the specified properties. - * @param [properties] Properties to set - * @returns QueryPlan instance - */ - public static create(properties?: google.datastore.v1.IQueryPlan): google.datastore.v1.QueryPlan; - - /** - * Encodes the specified QueryPlan message. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. - * @param message QueryPlan message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified QueryPlan message, length delimited. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. - * @param message QueryPlan message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a QueryPlan message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns QueryPlan - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.QueryPlan; - - /** - * Decodes a QueryPlan message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns QueryPlan - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.QueryPlan; - - /** - * Verifies a QueryPlan message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a QueryPlan message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns QueryPlan - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.QueryPlan; - - /** - * Creates a plain object from a QueryPlan message. Also converts values to other types if specified. - * @param message QueryPlan - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.QueryPlan, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this QueryPlan to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for QueryPlan - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a ResultSetStats. */ - interface IResultSetStats { - - /** ResultSetStats queryPlan */ - queryPlan?: (google.datastore.v1.IQueryPlan|null); - - /** ResultSetStats queryStats */ - queryStats?: (google.protobuf.IStruct|null); - } - - /** Represents a ResultSetStats. */ - class ResultSetStats implements IResultSetStats { - - /** - * Constructs a new ResultSetStats. - * @param [properties] Properties to set - */ - constructor(properties?: google.datastore.v1.IResultSetStats); - - /** ResultSetStats queryPlan. */ - public queryPlan?: (google.datastore.v1.IQueryPlan|null); - - /** ResultSetStats queryStats. */ - public queryStats?: (google.protobuf.IStruct|null); - - /** - * Creates a new ResultSetStats instance using the specified properties. - * @param [properties] Properties to set - * @returns ResultSetStats instance - */ - public static create(properties?: google.datastore.v1.IResultSetStats): google.datastore.v1.ResultSetStats; - - /** - * Encodes the specified ResultSetStats message. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. - * @param message ResultSetStats message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.datastore.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified ResultSetStats message, length delimited. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. - * @param message ResultSetStats message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.datastore.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a ResultSetStats message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ResultSetStats - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ResultSetStats; - - /** - * Decodes a ResultSetStats message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ResultSetStats - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ResultSetStats; - - /** - * Verifies a ResultSetStats message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a ResultSetStats message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ResultSetStats - */ - public static fromObject(object: { [k: string]: any }): google.datastore.v1.ResultSetStats; - - /** - * Creates a plain object from a ResultSetStats message. Also converts values to other types if specified. - * @param message ResultSetStats - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.datastore.v1.ResultSetStats, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this ResultSetStats to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for ResultSetStats - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 211edef84e6..52b16ae10cb 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -14732,7 +14732,6 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery - * @property {google.datastore.v1.QueryMode|null} [mode] RunQueryRequest mode */ /** @@ -14798,14 +14797,6 @@ */ RunQueryRequest.prototype.gqlQuery = null; - /** - * RunQueryRequest mode. - * @member {google.datastore.v1.QueryMode} mode - * @memberof google.datastore.v1.RunQueryRequest - * @instance - */ - RunQueryRequest.prototype.mode = 0; - // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -14856,8 +14847,6 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); - if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.mode); return writer; }; @@ -14916,10 +14905,6 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } - case 11: { - message.mode = reader.int32(); - break; - } default: reader.skipType(tag & 7); break; @@ -14990,15 +14975,6 @@ return "gqlQuery." + error; } } - if (message.mode != null && message.hasOwnProperty("mode")) - switch (message.mode) { - default: - return "mode: enum value expected"; - case 0: - case 1: - case 2: - break; - } return null; }; @@ -15038,26 +15014,6 @@ throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } - switch (object.mode) { - default: - if (typeof object.mode === "number") { - message.mode = object.mode; - break; - } - break; - case "NORMAL": - case 0: - message.mode = 0; - break; - case "PLAN": - case 1: - message.mode = 1; - break; - case "PROFILE": - case 2: - message.mode = 2; - break; - } return message; }; @@ -15079,7 +15035,6 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; - object.mode = options.enums === String ? "NORMAL" : 0; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15099,8 +15054,6 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; - if (message.mode != null && message.hasOwnProperty("mode")) - object.mode = options.enums === String ? $root.google.datastore.v1.QueryMode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.QueryMode[message.mode] : message.mode; return object; }; @@ -15142,7 +15095,6 @@ * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query * @property {Uint8Array|null} [transaction] RunQueryResponse transaction - * @property {google.datastore.v1.IResultSetStats|null} [stats] RunQueryResponse stats */ /** @@ -15184,14 +15136,6 @@ */ RunQueryResponse.prototype.transaction = $util.newBuffer([]); - /** - * RunQueryResponse stats. - * @member {google.datastore.v1.IResultSetStats|null|undefined} stats - * @memberof google.datastore.v1.RunQueryResponse - * @instance - */ - RunQueryResponse.prototype.stats = null; - /** * Creates a new RunQueryResponse instance using the specified properties. * @function create @@ -15222,8 +15166,6 @@ $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); - if (message.stats != null && Object.hasOwnProperty.call(message, "stats")) - $root.google.datastore.v1.ResultSetStats.encode(message.stats, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -15270,10 +15212,6 @@ message.transaction = reader.bytes(); break; } - case 6: { - message.stats = $root.google.datastore.v1.ResultSetStats.decode(reader, reader.uint32()); - break; - } default: reader.skipType(tag & 7); break; @@ -15322,11 +15260,6 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; - if (message.stats != null && message.hasOwnProperty("stats")) { - var error = $root.google.datastore.v1.ResultSetStats.verify(message.stats); - if (error) - return "stats." + error; - } return null; }; @@ -15357,11 +15290,6 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; - if (object.stats != null) { - if (typeof object.stats !== "object") - throw TypeError(".google.datastore.v1.RunQueryResponse.stats: object expected"); - message.stats = $root.google.datastore.v1.ResultSetStats.fromObject(object.stats); - } return message; }; @@ -15388,7 +15316,6 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } - object.stats = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); @@ -15396,8 +15323,6 @@ object.query = $root.google.datastore.v1.Query.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (message.stats != null && message.hasOwnProperty("stats")) - object.stats = $root.google.datastore.v1.ResultSetStats.toObject(message.stats, options); return object; }; @@ -15442,7 +15367,6 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunAggregationQueryRequest readOptions * @property {google.datastore.v1.IAggregationQuery|null} [aggregationQuery] RunAggregationQueryRequest aggregationQuery * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunAggregationQueryRequest gqlQuery - * @property {google.datastore.v1.QueryMode|null} [mode] RunAggregationQueryRequest mode */ /** @@ -15508,14 +15432,6 @@ */ RunAggregationQueryRequest.prototype.gqlQuery = null; - /** - * RunAggregationQueryRequest mode. - * @member {google.datastore.v1.QueryMode} mode - * @memberof google.datastore.v1.RunAggregationQueryRequest - * @instance - */ - RunAggregationQueryRequest.prototype.mode = 0; - // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -15566,8 +15482,6 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); - if (message.mode != null && Object.hasOwnProperty.call(message, "mode")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.mode); return writer; }; @@ -15626,10 +15540,6 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } - case 10: { - message.mode = reader.int32(); - break; - } default: reader.skipType(tag & 7); break; @@ -15700,15 +15610,6 @@ return "gqlQuery." + error; } } - if (message.mode != null && message.hasOwnProperty("mode")) - switch (message.mode) { - default: - return "mode: enum value expected"; - case 0: - case 1: - case 2: - break; - } return null; }; @@ -15748,26 +15649,6 @@ throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } - switch (object.mode) { - default: - if (typeof object.mode === "number") { - message.mode = object.mode; - break; - } - break; - case "NORMAL": - case 0: - message.mode = 0; - break; - case "PLAN": - case 1: - message.mode = 1; - break; - case "PROFILE": - case 2: - message.mode = 2; - break; - } return message; }; @@ -15789,7 +15670,6 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; - object.mode = options.enums === String ? "NORMAL" : 0; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15809,8 +15689,6 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; - if (message.mode != null && message.hasOwnProperty("mode")) - object.mode = options.enums === String ? $root.google.datastore.v1.QueryMode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.QueryMode[message.mode] : message.mode; return object; }; @@ -15852,7 +15730,6 @@ * @property {google.datastore.v1.IAggregationResultBatch|null} [batch] RunAggregationQueryResponse batch * @property {google.datastore.v1.IAggregationQuery|null} [query] RunAggregationQueryResponse query * @property {Uint8Array|null} [transaction] RunAggregationQueryResponse transaction - * @property {google.datastore.v1.IResultSetStats|null} [stats] RunAggregationQueryResponse stats */ /** @@ -15894,14 +15771,6 @@ */ RunAggregationQueryResponse.prototype.transaction = $util.newBuffer([]); - /** - * RunAggregationQueryResponse stats. - * @member {google.datastore.v1.IResultSetStats|null|undefined} stats - * @memberof google.datastore.v1.RunAggregationQueryResponse - * @instance - */ - RunAggregationQueryResponse.prototype.stats = null; - /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @function create @@ -15932,8 +15801,6 @@ $root.google.datastore.v1.AggregationQuery.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); - if (message.stats != null && Object.hasOwnProperty.call(message, "stats")) - $root.google.datastore.v1.ResultSetStats.encode(message.stats, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -15980,10 +15847,6 @@ message.transaction = reader.bytes(); break; } - case 6: { - message.stats = $root.google.datastore.v1.ResultSetStats.decode(reader, reader.uint32()); - break; - } default: reader.skipType(tag & 7); break; @@ -16032,11 +15895,6 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; - if (message.stats != null && message.hasOwnProperty("stats")) { - var error = $root.google.datastore.v1.ResultSetStats.verify(message.stats); - if (error) - return "stats." + error; - } return null; }; @@ -16067,11 +15925,6 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; - if (object.stats != null) { - if (typeof object.stats !== "object") - throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.stats: object expected"); - message.stats = $root.google.datastore.v1.ResultSetStats.fromObject(object.stats); - } return message; }; @@ -16098,7 +15951,6 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } - object.stats = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.AggregationResultBatch.toObject(message.batch, options); @@ -16106,8 +15958,6 @@ object.query = $root.google.datastore.v1.AggregationQuery.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; - if (message.stats != null && message.hasOwnProperty("stats")) - object.stats = $root.google.datastore.v1.ResultSetStats.toObject(message.stats, options); return object; }; @@ -20461,467 +20311,6 @@ return TransactionOptions; })(); - /** - * QueryMode enum. - * @name google.datastore.v1.QueryMode - * @enum {number} - * @property {number} NORMAL=0 NORMAL value - * @property {number} PLAN=1 PLAN value - * @property {number} PROFILE=2 PROFILE value - */ - v1.QueryMode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NORMAL"] = 0; - values[valuesById[1] = "PLAN"] = 1; - values[valuesById[2] = "PROFILE"] = 2; - return values; - })(); - - v1.QueryPlan = (function() { - - /** - * Properties of a QueryPlan. - * @memberof google.datastore.v1 - * @interface IQueryPlan - * @property {google.protobuf.IStruct|null} [planInfo] QueryPlan planInfo - */ - - /** - * Constructs a new QueryPlan. - * @memberof google.datastore.v1 - * @classdesc Represents a QueryPlan. - * @implements IQueryPlan - * @constructor - * @param {google.datastore.v1.IQueryPlan=} [properties] Properties to set - */ - function QueryPlan(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * QueryPlan planInfo. - * @member {google.protobuf.IStruct|null|undefined} planInfo - * @memberof google.datastore.v1.QueryPlan - * @instance - */ - QueryPlan.prototype.planInfo = null; - - /** - * Creates a new QueryPlan instance using the specified properties. - * @function create - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {google.datastore.v1.IQueryPlan=} [properties] Properties to set - * @returns {google.datastore.v1.QueryPlan} QueryPlan instance - */ - QueryPlan.create = function create(properties) { - return new QueryPlan(properties); - }; - - /** - * Encodes the specified QueryPlan message. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {google.datastore.v1.IQueryPlan} message QueryPlan message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - QueryPlan.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.planInfo != null && Object.hasOwnProperty.call(message, "planInfo")) - $root.google.protobuf.Struct.encode(message.planInfo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified QueryPlan message, length delimited. Does not implicitly {@link google.datastore.v1.QueryPlan.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {google.datastore.v1.IQueryPlan} message QueryPlan message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - QueryPlan.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a QueryPlan message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.QueryPlan} QueryPlan - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - QueryPlan.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.QueryPlan(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.planInfo = $root.google.protobuf.Struct.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a QueryPlan message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.QueryPlan} QueryPlan - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - QueryPlan.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a QueryPlan message. - * @function verify - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - QueryPlan.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.planInfo != null && message.hasOwnProperty("planInfo")) { - var error = $root.google.protobuf.Struct.verify(message.planInfo); - if (error) - return "planInfo." + error; - } - return null; - }; - - /** - * Creates a QueryPlan message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.QueryPlan} QueryPlan - */ - QueryPlan.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.QueryPlan) - return object; - var message = new $root.google.datastore.v1.QueryPlan(); - if (object.planInfo != null) { - if (typeof object.planInfo !== "object") - throw TypeError(".google.datastore.v1.QueryPlan.planInfo: object expected"); - message.planInfo = $root.google.protobuf.Struct.fromObject(object.planInfo); - } - return message; - }; - - /** - * Creates a plain object from a QueryPlan message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {google.datastore.v1.QueryPlan} message QueryPlan - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - QueryPlan.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.planInfo = null; - if (message.planInfo != null && message.hasOwnProperty("planInfo")) - object.planInfo = $root.google.protobuf.Struct.toObject(message.planInfo, options); - return object; - }; - - /** - * Converts this QueryPlan to JSON. - * @function toJSON - * @memberof google.datastore.v1.QueryPlan - * @instance - * @returns {Object.} JSON object - */ - QueryPlan.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for QueryPlan - * @function getTypeUrl - * @memberof google.datastore.v1.QueryPlan - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - QueryPlan.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.QueryPlan"; - }; - - return QueryPlan; - })(); - - v1.ResultSetStats = (function() { - - /** - * Properties of a ResultSetStats. - * @memberof google.datastore.v1 - * @interface IResultSetStats - * @property {google.datastore.v1.IQueryPlan|null} [queryPlan] ResultSetStats queryPlan - * @property {google.protobuf.IStruct|null} [queryStats] ResultSetStats queryStats - */ - - /** - * Constructs a new ResultSetStats. - * @memberof google.datastore.v1 - * @classdesc Represents a ResultSetStats. - * @implements IResultSetStats - * @constructor - * @param {google.datastore.v1.IResultSetStats=} [properties] Properties to set - */ - function ResultSetStats(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ResultSetStats queryPlan. - * @member {google.datastore.v1.IQueryPlan|null|undefined} queryPlan - * @memberof google.datastore.v1.ResultSetStats - * @instance - */ - ResultSetStats.prototype.queryPlan = null; - - /** - * ResultSetStats queryStats. - * @member {google.protobuf.IStruct|null|undefined} queryStats - * @memberof google.datastore.v1.ResultSetStats - * @instance - */ - ResultSetStats.prototype.queryStats = null; - - /** - * Creates a new ResultSetStats instance using the specified properties. - * @function create - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {google.datastore.v1.IResultSetStats=} [properties] Properties to set - * @returns {google.datastore.v1.ResultSetStats} ResultSetStats instance - */ - ResultSetStats.create = function create(properties) { - return new ResultSetStats(properties); - }; - - /** - * Encodes the specified ResultSetStats message. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. - * @function encode - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {google.datastore.v1.IResultSetStats} message ResultSetStats message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ResultSetStats.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.queryPlan != null && Object.hasOwnProperty.call(message, "queryPlan")) - $root.google.datastore.v1.QueryPlan.encode(message.queryPlan, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.queryStats != null && Object.hasOwnProperty.call(message, "queryStats")) - $root.google.protobuf.Struct.encode(message.queryStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified ResultSetStats message, length delimited. Does not implicitly {@link google.datastore.v1.ResultSetStats.verify|verify} messages. - * @function encodeDelimited - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {google.datastore.v1.IResultSetStats} message ResultSetStats message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ResultSetStats.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ResultSetStats message from the specified reader or buffer. - * @function decode - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.datastore.v1.ResultSetStats} ResultSetStats - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ResultSetStats.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ResultSetStats(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.queryPlan = $root.google.datastore.v1.QueryPlan.decode(reader, reader.uint32()); - break; - } - case 2: { - message.queryStats = $root.google.protobuf.Struct.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ResultSetStats message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.datastore.v1.ResultSetStats} ResultSetStats - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ResultSetStats.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ResultSetStats message. - * @function verify - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ResultSetStats.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.queryPlan != null && message.hasOwnProperty("queryPlan")) { - var error = $root.google.datastore.v1.QueryPlan.verify(message.queryPlan); - if (error) - return "queryPlan." + error; - } - if (message.queryStats != null && message.hasOwnProperty("queryStats")) { - var error = $root.google.protobuf.Struct.verify(message.queryStats); - if (error) - return "queryStats." + error; - } - return null; - }; - - /** - * Creates a ResultSetStats message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {Object.} object Plain object - * @returns {google.datastore.v1.ResultSetStats} ResultSetStats - */ - ResultSetStats.fromObject = function fromObject(object) { - if (object instanceof $root.google.datastore.v1.ResultSetStats) - return object; - var message = new $root.google.datastore.v1.ResultSetStats(); - if (object.queryPlan != null) { - if (typeof object.queryPlan !== "object") - throw TypeError(".google.datastore.v1.ResultSetStats.queryPlan: object expected"); - message.queryPlan = $root.google.datastore.v1.QueryPlan.fromObject(object.queryPlan); - } - if (object.queryStats != null) { - if (typeof object.queryStats !== "object") - throw TypeError(".google.datastore.v1.ResultSetStats.queryStats: object expected"); - message.queryStats = $root.google.protobuf.Struct.fromObject(object.queryStats); - } - return message; - }; - - /** - * Creates a plain object from a ResultSetStats message. Also converts values to other types if specified. - * @function toObject - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {google.datastore.v1.ResultSetStats} message ResultSetStats - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ResultSetStats.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.queryPlan = null; - object.queryStats = null; - } - if (message.queryPlan != null && message.hasOwnProperty("queryPlan")) - object.queryPlan = $root.google.datastore.v1.QueryPlan.toObject(message.queryPlan, options); - if (message.queryStats != null && message.hasOwnProperty("queryStats")) - object.queryStats = $root.google.protobuf.Struct.toObject(message.queryStats, options); - return object; - }; - - /** - * Converts this ResultSetStats to JSON. - * @function toJSON - * @memberof google.datastore.v1.ResultSetStats - * @instance - * @returns {Object.} JSON object - */ - ResultSetStats.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ResultSetStats - * @function getTypeUrl - * @memberof google.datastore.v1.ResultSetStats - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ResultSetStats.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.datastore.v1.ResultSetStats"; - }; - - return ResultSetStats; - })(); - return v1; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 45262f1e1a5..2fdb4bfdab2 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -613,7 +613,7 @@ "csharp_namespace": "Google.Cloud.Datastore.V1", "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", "java_multiple_files": true, - "java_outer_classname": "QueryProfileProto", + "java_outer_classname": "DatastoreProto", "java_package": "com.google.datastore.v1", "php_namespace": "Google\\Cloud\\Datastore\\V1", "ruby_package": "Google::Cloud::Datastore::V1" @@ -1525,13 +1525,6 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 - }, - "mode": { - "type": "QueryMode", - "id": 11, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } } } }, @@ -1548,10 +1541,6 @@ "transaction": { "type": "bytes", "id": 5 - }, - "stats": { - "type": "ResultSetStats", - "id": 6 } } }, @@ -1591,13 +1580,6 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 - }, - "mode": { - "type": "QueryMode", - "id": 10, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } } } }, @@ -1614,10 +1596,6 @@ "transaction": { "type": "bytes", "id": 5 - }, - "stats": { - "type": "ResultSetStats", - "id": 6 } } }, @@ -1941,33 +1919,6 @@ } } } - }, - "QueryMode": { - "values": { - "NORMAL": 0, - "PLAN": 1, - "PROFILE": 2 - } - }, - "QueryPlan": { - "fields": { - "planInfo": { - "type": "google.protobuf.Struct", - "id": 1 - } - } - }, - "ResultSetStats": { - "fields": { - "queryPlan": { - "type": "QueryPlan", - "id": 1 - }, - "queryStats": { - "type": "google.protobuf.Struct", - "id": 2 - } - } } } } diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js index 4dbda82d539..c7e9e9e4e7e 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js @@ -57,12 +57,6 @@ function main(projectId) { * The GQL query to run. This query must be an aggregation query. */ // const gqlQuery = {} - /** - * Optional. The mode in which the query request is processed. This field is - * optional, and when not provided, it defaults to `NORMAL` mode where no - * additional statistics will be returned with the query results. - */ - // const mode = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js index d8d5c2215fc..cb9cffeeed4 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -57,12 +57,6 @@ function main(projectId) { * The GQL query to run. This query must be a non-aggregation query. */ // const gqlQuery = {} - /** - * Optional. The mode in which the query request is processed. This field is - * optional, and when not provided, it defaults to `NORMAL` mode where no - * additional statistics will be returned with the query results. - */ - // const mode = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js index 557987ebe90..bafca685620 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js @@ -57,7 +57,7 @@ function main() { }; // Run request - const iterable = await adminClient.listIndexesAsync(request); + const iterable = adminClient.listIndexesAsync(request); for await (const response of iterable) { console.log(response); } diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json index 917375154dc..27ec516fcc5 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json @@ -74,7 +74,7 @@ "segments": [ { "start": 25, - "end": 84, + "end": 78, "type": "FULL" } ], @@ -106,10 +106,6 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" - }, - { - "name": "mode", - "type": ".google.datastore.v1.QueryMode" } ], "resultType": ".google.datastore.v1.RunQueryResponse", @@ -138,7 +134,7 @@ "segments": [ { "start": 25, - "end": 84, + "end": 78, "type": "FULL" } ], @@ -170,10 +166,6 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" - }, - { - "name": "mode", - "type": ".google.datastore.v1.QueryMode" } ], "resultType": ".google.datastore.v1.RunAggregationQueryResponse", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 2f7b7b7e3d4..9e2b96bb0fb 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -31,6 +31,7 @@ import type { import {Transform} from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); + /** * Client JSON configuration object, loaded from * `src/v1/datastore_admin_client_config.json`. @@ -98,6 +99,8 @@ export class DatastoreAdminClient { private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; private _defaults: {[method: string]: gax.CallSettings}; + private _universeDomain: string; + private _servicePath: string; auth: gax.GoogleAuth; descriptors: Descriptors = { page: {}, @@ -155,8 +158,20 @@ export class DatastoreAdminClient { ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreAdminClient; + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.' + ); + } + this._universeDomain = + opts?.universeDomain ?? opts?.universe_domain ?? 'googleapis.com'; + this._servicePath = 'datastore.' + this._universeDomain; const servicePath = - opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + opts?.servicePath || opts?.apiEndpoint || this._servicePath; this._providedCustomServicePath = !!( opts?.servicePath || opts?.apiEndpoint ); @@ -171,7 +186,7 @@ export class DatastoreAdminClient { opts.numericEnums = true; // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. - if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { + if (servicePath !== this._servicePath && !('scopes' in opts)) { opts['scopes'] = staticMembers.scopes; } @@ -196,10 +211,10 @@ export class DatastoreAdminClient { this.auth.useJWTAccessWithScope = true; // Set defaultServicePath on the auth object. - this.auth.defaultServicePath = staticMembers.servicePath; + this.auth.defaultServicePath = this._servicePath; // Set the default scopes in auth client if needed. - if (servicePath === staticMembers.servicePath) { + if (servicePath === this._servicePath) { this.auth.defaultScopes = staticMembers.scopes; } @@ -403,21 +418,61 @@ export class DatastoreAdminClient { /** * The DNS address for this API service. + * @deprecated * @returns {string} The DNS address for this service. */ static get servicePath() { + if ( + typeof process !== undefined && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning' + ); + } return 'datastore.googleapis.com'; } /** - * The DNS address for this API service - same as servicePath(), + * The DNS address for this API service - same as servicePath, * exists for compatibility reasons. + * @deprecated * @returns {string} The DNS address for this service. */ static get apiEndpoint() { + if ( + typeof process !== undefined && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning' + ); + } return 'datastore.googleapis.com'; } + /** + * The DNS address for this API service. + * @returns {string} The DNS address for this service. + */ + get servicePath() { + return this._servicePath; + } + + /** + * The DNS address for this API service - same as servicePath(). + * @returns {string} The DNS address for this service. + */ + get apiEndpoint() { + return this._servicePath; + } + + get universeDomain() { + return this._universeDomain; + } + /** * The port for this API service. * @returns {number} The default port for this service. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 59c962f365c..3a8f603a190 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -28,6 +28,7 @@ import type { import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); + /** * Client JSON configuration object, loaded from * `src/v1/datastore_client_config.json`. @@ -55,6 +56,8 @@ export class DatastoreClient { private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; private _defaults: {[method: string]: gax.CallSettings}; + private _universeDomain: string; + private _servicePath: string; auth: gax.GoogleAuth; descriptors: Descriptors = { page: {}, @@ -112,8 +115,20 @@ export class DatastoreClient { ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof DatastoreClient; + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.' + ); + } + this._universeDomain = + opts?.universeDomain ?? opts?.universe_domain ?? 'googleapis.com'; + this._servicePath = 'datastore.' + this._universeDomain; const servicePath = - opts?.servicePath || opts?.apiEndpoint || staticMembers.servicePath; + opts?.servicePath || opts?.apiEndpoint || this._servicePath; this._providedCustomServicePath = !!( opts?.servicePath || opts?.apiEndpoint ); @@ -128,7 +143,7 @@ export class DatastoreClient { opts.numericEnums = true; // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. - if (servicePath !== staticMembers.servicePath && !('scopes' in opts)) { + if (servicePath !== this._servicePath && !('scopes' in opts)) { opts['scopes'] = staticMembers.scopes; } @@ -153,10 +168,10 @@ export class DatastoreClient { this.auth.useJWTAccessWithScope = true; // Set defaultServicePath on the auth object. - this.auth.defaultServicePath = staticMembers.servicePath; + this.auth.defaultServicePath = this._servicePath; // Set the default scopes in auth client if needed. - if (servicePath === staticMembers.servicePath) { + if (servicePath === this._servicePath) { this.auth.defaultScopes = staticMembers.scopes; } @@ -303,21 +318,61 @@ export class DatastoreClient { /** * The DNS address for this API service. + * @deprecated * @returns {string} The DNS address for this service. */ static get servicePath() { + if ( + typeof process !== undefined && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning' + ); + } return 'datastore.googleapis.com'; } /** - * The DNS address for this API service - same as servicePath(), + * The DNS address for this API service - same as servicePath, * exists for compatibility reasons. + * @deprecated * @returns {string} The DNS address for this service. */ static get apiEndpoint() { + if ( + typeof process !== undefined && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning' + ); + } return 'datastore.googleapis.com'; } + /** + * The DNS address for this API service. + * @returns {string} The DNS address for this service. + */ + get servicePath() { + return this._servicePath; + } + + /** + * The DNS address for this API service - same as servicePath(). + * @returns {string} The DNS address for this service. + */ + get apiEndpoint() { + return this._servicePath; + } + + get universeDomain() { + return this._universeDomain; + } + /** * The port for this API service. * @returns {number} The default port for this service. @@ -490,10 +545,6 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be a non-aggregation query. - * @param {google.datastore.v1.QueryMode} [request.mode] - * Optional. The mode in which the query request is processed. This field is - * optional, and when not provided, it defaults to `NORMAL` mode where no - * additional statistics will be returned with the query results. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -611,10 +662,6 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be an aggregation query. - * @param {google.datastore.v1.QueryMode} [request.mode] - * Optional. The mode in which the query request is processed. This field is - * optional, and when not provided, it defaults to `NORMAL` mode where no - * additional statistics will be returned with the query results. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json index 9bbbda2f942..87f7c47ccd1 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -2,6 +2,5 @@ "../../protos/google/datastore/v1/aggregation_result.proto", "../../protos/google/datastore/v1/datastore.proto", "../../protos/google/datastore/v1/entity.proto", - "../../protos/google/datastore/v1/query.proto", - "../../protos/google/datastore/v1/query_profile.proto" + "../../protos/google/datastore/v1/query.proto" ] diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 433753d777d..10a294992fe 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -162,15 +162,67 @@ function stubAsyncIterationCall( describe('v1.DatastoreAdminClient', () => { describe('Common methods', () => { it('has servicePath', () => { - const servicePath = - datastoreadminModule.v1.DatastoreAdminClient.servicePath; - assert(servicePath); + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.googleapis.com'); }); it('has apiEndpoint', () => { - const apiEndpoint = - datastoreadminModule.v1.DatastoreAdminClient.apiEndpoint; - assert(apiEndpoint); + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'datastore.googleapis.com'); + }); + + it('has universeDomain', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); + + if ( + typeof process !== 'undefined' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + datastoreadminModule.v1.DatastoreAdminClient.servicePath; + assert.strictEqual(servicePath, 'datastore.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + datastoreadminModule.v1.DatastoreAdminClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'datastore.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets servicePath according to universe domain camelCase', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + universeDomain: 'example.com', + }); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.example.com'); + }); + + it('sets servicePath according to universe domain snakeCase', () => { + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + universe_domain: 'example.com', + }); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.example.com'); + }); + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new datastoreadminModule.v1.DatastoreAdminClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', + }); + }); }); it('has port', () => { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 48b3d2ae985..616a6c138b2 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -90,13 +90,65 @@ function stubAsyncIterationCall( describe('v1.DatastoreClient', () => { describe('Common methods', () => { it('has servicePath', () => { - const servicePath = datastoreModule.v1.DatastoreClient.servicePath; - assert(servicePath); + const client = new datastoreModule.v1.DatastoreClient(); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.googleapis.com'); }); it('has apiEndpoint', () => { - const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; - assert(apiEndpoint); + const client = new datastoreModule.v1.DatastoreClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'datastore.googleapis.com'); + }); + + it('has universeDomain', () => { + const client = new datastoreModule.v1.DatastoreClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); + + if ( + typeof process !== 'undefined' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = datastoreModule.v1.DatastoreClient.servicePath; + assert.strictEqual(servicePath, 'datastore.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = datastoreModule.v1.DatastoreClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'datastore.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets servicePath according to universe domain camelCase', () => { + const client = new datastoreModule.v1.DatastoreClient({ + universeDomain: 'example.com', + }); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.example.com'); + }); + + it('sets servicePath according to universe domain snakeCase', () => { + const client = new datastoreModule.v1.DatastoreClient({ + universe_domain: 'example.com', + }); + const servicePath = client.servicePath; + assert.strictEqual(servicePath, 'datastore.example.com'); + }); + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new datastoreModule.v1.DatastoreClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', + }); + }); }); it('has port', () => { From c8492927fd1c7ef2b63db93151b16edf7312ab51 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 17:25:05 -0500 Subject: [PATCH 769/820] chore(main): release 8.5.0 (#1231) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index f281e64ffae..561e183a142 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.5.0](https://github.com/googleapis/nodejs-datastore/compare/v8.4.0...v8.5.0) (2024-02-06) + + +### Features + +* Trusted Private Cloud support, use the universeDomain parameter ([#1227](https://github.com/googleapis/nodejs-datastore/issues/1227)) ([10480ed](https://github.com/googleapis/nodejs-datastore/commit/10480edfdda99cde5fef470fbf163861528398a0)) + ## [8.4.0](https://github.com/googleapis/nodejs-datastore/compare/v8.3.0...v8.4.0) (2024-01-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 43dc79715b8..06751f1e5cf 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.4.0", + "version": "8.5.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 6894c2b6216..ca6ecd7aafc 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.4.0", + "@google-cloud/datastore": "^8.5.0", "sinon": "^17.0.0" }, "devDependencies": { From 44e245e82adc5670b2c9cdb7d2e6652fd058a9f2 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 10:17:13 -0800 Subject: [PATCH 770/820] build: update gapic-generator-typescript to v4.4.1 (#1232) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build: update gapic-generator-typescript to v4.4.1 PiperOrigin-RevId: 604765466 Source-Link: https://github.com/googleapis/googleapis/commit/40203ca1880849480bbff7b8715491060bbccdf1 Source-Link: https://github.com/googleapis/googleapis-gen/commit/07b7f3dad8aa1912d4acdcfd6365bb4236e4b54b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDdiN2YzZGFkOGFhMTkxMmQ0YWNkY2ZkNjM2NWJiNDIzNmU0YjU0YiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- .../src/v1/datastore_admin_client.ts | 15 +++------------ .../nodejs-datastore/src/v1/datastore_client.ts | 15 +++------------ .../test/gapic_datastore_admin_v1.ts | 14 ++++---------- .../nodejs-datastore/test/gapic_datastore_v1.ts | 14 ++++---------- 4 files changed, 14 insertions(+), 44 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 9e2b96bb0fb..87e888390ef 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -418,7 +418,7 @@ export class DatastoreAdminClient { /** * The DNS address for this API service. - * @deprecated + * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get servicePath() { @@ -435,9 +435,8 @@ export class DatastoreAdminClient { } /** - * The DNS address for this API service - same as servicePath, - * exists for compatibility reasons. - * @deprecated + * The DNS address for this API service - same as servicePath. + * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get apiEndpoint() { @@ -457,14 +456,6 @@ export class DatastoreAdminClient { * The DNS address for this API service. * @returns {string} The DNS address for this service. */ - get servicePath() { - return this._servicePath; - } - - /** - * The DNS address for this API service - same as servicePath(). - * @returns {string} The DNS address for this service. - */ get apiEndpoint() { return this._servicePath; } diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 3a8f603a190..d482632ee60 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -318,7 +318,7 @@ export class DatastoreClient { /** * The DNS address for this API service. - * @deprecated + * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get servicePath() { @@ -335,9 +335,8 @@ export class DatastoreClient { } /** - * The DNS address for this API service - same as servicePath, - * exists for compatibility reasons. - * @deprecated + * The DNS address for this API service - same as servicePath. + * @deprecated Use the apiEndpoint method of the client instance. * @returns {string} The DNS address for this service. */ static get apiEndpoint() { @@ -357,14 +356,6 @@ export class DatastoreClient { * The DNS address for this API service. * @returns {string} The DNS address for this service. */ - get servicePath() { - return this._servicePath; - } - - /** - * The DNS address for this API service - same as servicePath(). - * @returns {string} The DNS address for this service. - */ get apiEndpoint() { return this._servicePath; } diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 10a294992fe..fe1cdb11fc4 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -161,12 +161,6 @@ function stubAsyncIterationCall( describe('v1.DatastoreAdminClient', () => { describe('Common methods', () => { - it('has servicePath', () => { - const client = new datastoreadminModule.v1.DatastoreAdminClient(); - const servicePath = client.servicePath; - assert.strictEqual(servicePath, 'datastore.googleapis.com'); - }); - it('has apiEndpoint', () => { const client = new datastoreadminModule.v1.DatastoreAdminClient(); const apiEndpoint = client.apiEndpoint; @@ -201,19 +195,19 @@ describe('v1.DatastoreAdminClient', () => { stub.restore(); }); } - it('sets servicePath according to universe domain camelCase', () => { + it('sets apiEndpoint according to universe domain camelCase', () => { const client = new datastoreadminModule.v1.DatastoreAdminClient({ universeDomain: 'example.com', }); - const servicePath = client.servicePath; + const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); - it('sets servicePath according to universe domain snakeCase', () => { + it('sets apiEndpoint according to universe domain snakeCase', () => { const client = new datastoreadminModule.v1.DatastoreAdminClient({ universe_domain: 'example.com', }); - const servicePath = client.servicePath; + const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); it('does not allow setting both universeDomain and universe_domain', () => { diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 616a6c138b2..331cd1f9721 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -89,12 +89,6 @@ function stubAsyncIterationCall( describe('v1.DatastoreClient', () => { describe('Common methods', () => { - it('has servicePath', () => { - const client = new datastoreModule.v1.DatastoreClient(); - const servicePath = client.servicePath; - assert.strictEqual(servicePath, 'datastore.googleapis.com'); - }); - it('has apiEndpoint', () => { const client = new datastoreModule.v1.DatastoreClient(); const apiEndpoint = client.apiEndpoint; @@ -127,19 +121,19 @@ describe('v1.DatastoreClient', () => { stub.restore(); }); } - it('sets servicePath according to universe domain camelCase', () => { + it('sets apiEndpoint according to universe domain camelCase', () => { const client = new datastoreModule.v1.DatastoreClient({ universeDomain: 'example.com', }); - const servicePath = client.servicePath; + const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); - it('sets servicePath according to universe domain snakeCase', () => { + it('sets apiEndpoint according to universe domain snakeCase', () => { const client = new datastoreModule.v1.DatastoreClient({ universe_domain: 'example.com', }); - const servicePath = client.servicePath; + const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); it('does not allow setting both universeDomain and universe_domain', () => { From 00f2fd71576362ff1051f05304c22cedbe2797bb Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 26 Feb 2024 13:09:01 -0500 Subject: [PATCH 771/820] feat: Nodejs transaction redesign feature branch (#1235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: Break transaction.run into smaller pieces for use with async functions and other read/write calls (#1196) * Add a unit test for commit as a non-tx The fact that using a transaction object to do a commit results in a non-transaction should be documented so that if we decide to introduce a change later where this behaves differently then it is well documented. # Conflicts: # test/transaction.ts * use linter * Write tests to capture current behavior of error When begin transaction sends back an error, we want some tests to capture what the behavior is so that when we make changes to the run function then behavior is preserved. * Add tests for passing a response A response should reach the user the right way. Add tests to make sure behavior is preserved. * run async close to working In the run function delegate calls to runAsync and use run async to make promise calls * Add runAsync to promise excludes This allows this function to return a promise instead of a promise wrapped in a promise. This makes the tests pass and behave the way they should. * Remove space * Change to use this instead of self Do not call request from self * Eliminate unused comments * Add two comments Comments should actually explain what is being done * Remove the commit test for this PR The commit test for this PR should be removed because it is not really relevant for the async run functionality. * Clarify types throughout the function The types used should be very specific so that reading the code isn’t confusing. * Add a bit more typing for clarity Add a type to the resolve function just to introduce more clarity * Change types used in the data client callback Make the types more specific in the data client callback so that it is easier to track down the signature and match against the begin transaction function. * run the linter * Add comments to clarify PR * Refactor the parsing logic out of run The parsing logic is going to be needed elsewhere so taking it apart now. * Change interface of request promise callback The interface name should be changed so that it matches what it is. It is the callback used to form a promise. * Hide data completely Change accessors to hide data completely instead of using the private modifier * PR use if/else block Eliminate the early return as suggested in the PR * Add comments to document the new functions The comments capture the parameters and return type. * Update return type in docs * Update the tests to include runAsync runAsync should be in promisfy excludes * refactor: Break transaction.run into smaller pieces for use with async functions and other read/write calls * Rename a function to be more descriptive Make sure it is explicit that we are parsing begin results. * Modify comment Modify comment so that it doesn’t reference the way the code was before. * refactor: Move commit logic and add tests that prepare for transaction function changes (#1202) * Add a unit test for commit as a non-tx The fact that using a transaction object to do a commit results in a non-transaction should be documented so that if we decide to introduce a change later where this behaves differently then it is well documented. # Conflicts: # test/transaction.ts * use linter * Write tests to capture current behavior of error When begin transaction sends back an error, we want some tests to capture what the behavior is so that when we make changes to the run function then behavior is preserved. * Add tests for passing a response A response should reach the user the right way. Add tests to make sure behavior is preserved. * run async close to working In the run function delegate calls to runAsync and use run async to make promise calls * Add runAsync to promise excludes This allows this function to return a promise instead of a promise wrapped in a promise. This makes the tests pass and behave the way they should. * Remove space * Change to use this instead of self Do not call request from self * Eliminate unused comments * Add two comments Comments should actually explain what is being done * Remove the commit test for this PR The commit test for this PR should be removed because it is not really relevant for the async run functionality. * Clarify types throughout the function The types used should be very specific so that reading the code isn’t confusing. * Add a bit more typing for clarity Add a type to the resolve function just to introduce more clarity * Change types used in the data client callback Make the types more specific in the data client callback so that it is easier to track down the signature and match against the begin transaction function. * run the linter * Add comments to clarify PR * Refactor the parsing logic out of run The parsing logic is going to be needed elsewhere so taking it apart now. * Change interface of request promise callback The interface name should be changed so that it matches what it is. It is the callback used to form a promise. * Move commit functionality to a new function The internals of commit should be moved to a new function. This way we can sandwich a commit async call between commit and runCommitAsync. * Add the commit tests Commit tests added to ensure that commit behaves the same way as before. * Fix the tests so that they pass on commit The tests should pass before we make changes to commit. * refactor one of the mocks One of the mocks does not need to be written twice * Hide data completely Change accessors to hide data completely instead of using the private modifier * PR use if/else block Eliminate the early return as suggested in the PR * Add comments to document the new functions The comments capture the parameters and return type. * Update return type in docs * Update the tests to include runAsync runAsync should be in promisfy excludes * refactor: Break transaction.run into smaller pieces for use with async functions and other read/write calls * Rename a function to be more descriptive Make sure it is explicit that we are parsing begin results. * chore(deps): update dependency @types/sinon to v17 (#1197) * chore(deps): update dependency @types/is to v0.0.25 (#1198) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.24` -> `0.0.25`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.24/0.0.25) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). * Modify comment Modify comment so that it doesn’t reference the way the code was before. * Create a transaction wrapper class for testing This is going to be a useful test for mocking out various layers to make sure they work the same way as before. * Clean up mocked transaction wrapper The mocked transaction wrapper should reset all mocked gapic functions and not have to be told which ones to reset. * Move test information for commit into commit block * Add gapic mocked tests for aggregation query Gapic mocked tests for run aggregation query need to be written that use the mock transaction object. * Fixing up the runQuery test * Finished the runQuery tests The runQuery tests are finished so we can use this to take apart the function from end to end. * Finished the get tests The get tests now make sure that the data coming back from the gapic layer results in the same values for users. * remove only * Add try catch blocks to handle errors in the tests try/catch logic in the test suite is added so that errors bubble up to the test runner and it is easier to see why tests failed * chore: update cloud-rad version to ^0.4.0 (#1199) Source-Link: https://github.com/googleapis/synthtool/commit/1063ef32bfe41b112bade7a2dfad4e84d0058ebd Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:e92044720ab3cb6984a70b0c6001081204375959ba3599ef6c42dd99a7783a67 Co-authored-by: Owl Bot * Add comments and general cleanup Cleanup includes adding comments so that the tests are more readable. * Remove some redundant tests Some of these tests are captured in the various functions describe block. * Correct the comment to be more accurate The comment should talk about what the tests actually intend to do * General improvements to code quality Move declared transactionWrapper and other variables out to shorten code. Remove require and replace with import. Use more specific type. * Add data client check Add data client check and add type for data client. * Eliminate the mocked function variable The mocked function variable is not used so remove it from code. * Move begin transaction setup code The same block of code for setting up begin transaction is repeated twice. Move it into one function and use it from both before blocks. * Replace the TODO for the key Add some try blocks to make the errors more visible also. * Update description Update the description for the test to give a better explanation of what the describe block does. * Add comments to describe the purpose of signaller The comments describing the callback signaller should explain the problem it solves. * Add both dones back in The done functions were lost in the refactors. Let us add them back in. * mockedBeginTransaction should be Function Make a more specific type for mockedBeginTransaction and the functions mocked. * Use ECMA script modifier Make sure this function is completely hidden. * Remove TODOs that no longer apply The TODO statements no longer need to be followed up on so remove them. * beginTransaction type definition Remove the type definition. It is not used. * Add the setupBeginTransaction method Refactor test code to provide better error catching and also not repeat setup code for the run function. * Add a comment for private runCommit method The comment for the runCommit method just captures the fact that the function is used as a pass-through. * Modify comment to be more clear * Update comments The comments should more directly address the problem the tests are meant to solve * Eliminate redundant test code This describe block is now duplicated. Remove it. * revert comment This was a typo * refactor: Move commit logic and add tests that prepare for transaction function changes --------- Co-authored-by: Mend Renovate Co-authored-by: gcf-owl-bot[bot] <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Owl Bot * feat: Begin transactions before each transaction read/write (#1205) * Add a unit test for commit as a non-tx The fact that using a transaction object to do a commit results in a non-transaction should be documented so that if we decide to introduce a change later where this behaves differently then it is well documented. # Conflicts: # test/transaction.ts * use linter * Write tests to capture current behavior of error When begin transaction sends back an error, we want some tests to capture what the behavior is so that when we make changes to the run function then behavior is preserved. * Add tests for passing a response A response should reach the user the right way. Add tests to make sure behavior is preserved. * run async close to working In the run function delegate calls to runAsync and use run async to make promise calls * Add runAsync to promise excludes This allows this function to return a promise instead of a promise wrapped in a promise. This makes the tests pass and behave the way they should. * Remove space * Change to use this instead of self Do not call request from self * Eliminate unused comments * Add two comments Comments should actually explain what is being done * Remove the commit test for this PR The commit test for this PR should be removed because it is not really relevant for the async run functionality. * Clarify types throughout the function The types used should be very specific so that reading the code isn’t confusing. * Add a bit more typing for clarity Add a type to the resolve function just to introduce more clarity * Change types used in the data client callback Make the types more specific in the data client callback so that it is easier to track down the signature and match against the begin transaction function. * run the linter * Add comments to clarify PR * Refactor the parsing logic out of run The parsing logic is going to be needed elsewhere so taking it apart now. * Change interface of request promise callback The interface name should be changed so that it matches what it is. It is the callback used to form a promise. * Move commit functionality to a new function The internals of commit should be moved to a new function. This way we can sandwich a commit async call between commit and runCommitAsync. * Add the mutex and transaction state etc. Still an issue with system tests. commit still needs tweaks to work with async. * Remove no-op, get commit tests working Remove the no-op, get commit tests in place. * Add mocks and additional debugging Mocks and additional debugging hooks to introspect what is going on. * Add tests for commit Make sure commit behaves the same way as before. * Add the commit tests Commit tests added to ensure that commit behaves the same way as before. * Fix the tests so that they pass on commit The tests should pass before we make changes to commit. * refactor one of the mocks One of the mocks does not need to be written twice * reverting changes to add new test on transaction * Change the promise Make the promise simpler. Change the tests to exclude functions with promisify. * Hide data completely Change accessors to hide data completely instead of using the private modifier * PR use if/else block Eliminate the early return as suggested in the PR * Add comments to document the new functions The comments capture the parameters and return type. * Update return type in docs * Update the tests to include runAsync runAsync should be in promisfy excludes * refactor: Break transaction.run into smaller pieces for use with async functions and other read/write calls * Rename a function to be more descriptive Make sure it is explicit that we are parsing begin results. * Move the mutex and the state down to derived class The mutex and state should be moved down to the derived class. We are going to override get/runQuery/runAggregateQuery there. * chore(deps): update dependency @types/sinon to v17 (#1197) * Add hook to call run before commit Add the hook to call run before calling commit in existing tests. * Add commitAsync to promisify excludes commitAsync should be resolved and then() function should be called as it was not being called before * remove the console logs * Delete run commit * Remove the private identifier Use the private modifier instead to hide data * Add withBeginTransaction withBeginTransaction will be used with all calls that begin transactions and then intend to use the mutex for locking when the begin transaction call is made. * Add another level of abstraction Add #beginWithCallback so that all the read calls can be made with one line of code. * commit async is not needed anymore * This data structure is not needed anymore * Replace types associated with run to use generics The generic parameter should be used for types with run. * Make response type more specific for parseRunAsync More specific types are better and it make code easier to read * chore(deps): update dependency @types/is to v0.0.25 (#1198) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/is](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/is) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | [`0.0.24` -> `0.0.25`](https://renovatebot.com/diffs/npm/@types%2fis/0.0.24/0.0.25) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fis/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fis/0.0.24/0.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). * Modify comment Modify comment so that it doesn’t reference the way the code was before. * Add implementation for runQuery runQuery should make the call to begin the transaction first if that hasn’t already happened yet. * Making fixes for runAggregationQuery Fixes for run aggregation query. Still getting undefined results. * Write tests for runAggregateQuery Make sure that runAggregateQuery return results make it back to the user. * Get one test case passing for runAggregateQuery runAggregateQuery should not be excluded by promisify. Otherwise it will not return a promise, but we want it to return a promise. * remove console log clutter * Change tests for runAggregationQuery Change the test to use deep strict equal since the objects being compared will not be reference equal. * Add resolver type Eliminate some unused code * Create a transaction wrapper class for testing This is going to be a useful test for mocking out various layers to make sure they work the same way as before. * Clean up mocked transaction wrapper The mocked transaction wrapper should reset all mocked gapic functions and not have to be told which ones to reset. * Move test information for commit into commit block * Add gapic mocked tests for aggregation query Gapic mocked tests for run aggregation query need to be written that use the mock transaction object. * Fixing up the runQuery test * Finished the runQuery tests The runQuery tests are finished so we can use this to take apart the function from end to end. * Finished the get tests The get tests now make sure that the data coming back from the gapic layer results in the same values for users. * remove only * remove only and console log * Try modifications to runQuery Add modifications to runQuery to use some function to return values * Add try catch blocks to handle errors in the tests try/catch logic in the test suite is added so that errors bubble up to the test runner and it is easier to see why tests failed * Modify commit so it doesn’t run early Don’t start commit with a promise or the promise will run early. * Update get with resolver get should use the same pattern as runQuery and runAggregationQuery to use a resolver for the mutex business logic * remove #beginWithCallback #beginWithCallback is no longer used so remove it * Remove #withBeginTransaction This function is no longer used * Rename #someFunction with begin transaction #someFunction should be named differently * Fix promisify. Change to a deepStrictEqual check. A deepStrictEqual check is all that is needed in this test that currently reuses a transaction. * Add setImmediate to the tests If we add a delay to the tests then the mutex has the opportunity to unlock before running the tests. * Added some tests for call ordering We want to make sure that the calls get delivered and received in order * Pack testing tool into an object Put the testing tool in an object so that we can explore more orderings and possibilities. * Eliminate console logs, use expected order Allow expected order to be passed into the tester. This will make the object reusable. * Add a check for transaction not started yet Need a check to be sure that the transaction is not in progress if making another beginTransaction call. * Remove NOT_TRANSACTION Remove the NOT_TRANSACTION and default to NOT_STARTED * Remove only Remove only and let all unit tests run * Use an enum instead of static class members Use an enum to track transaction state. * TODOs are done * Move excludes to proper position Excludes should contain the right functions in the right order. * Simplify the run function a little bit Regroup functionality to simplify the run function * Add comments to tests Explain purpose of testing objects * Modify tests and fix a bug from the merge The merge added a bug because the pound sign wasn’t used and it should have been. * Fix error message * Comments and general cleanup Remove constructor parameter that is not used. Add comments to functions so that the tests are more readable. * Added comments for functions in transaction.ts Functions in transaction.ts need JSdoc comments. * Add a comment for aggregate queries Add JSdoc comment * Add an assertion to test The assertion should make sure the first read returns undefined. * Add tests for lookup, put, commit For calls with run and without run, do lookup, put, commit. Make sure to clean up after the tests too. * refactor the test Test does lookup, put, commit. This is done in an async function. * Add tests for put, lookup, commit A group of tests should be added for put, lookup, commit. One with run and one without run. * chore: update cloud-rad version to ^0.4.0 (#1199) Source-Link: https://github.com/googleapis/synthtool/commit/1063ef32bfe41b112bade7a2dfad4e84d0058ebd Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:e92044720ab3cb6984a70b0c6001081204375959ba3599ef6c42dd99a7783a67 Co-authored-by: Owl Bot * Add comments and general cleanup Cleanup includes adding comments so that the tests are more readable. * Remove some redundant tests Some of these tests are captured in the various functions describe block. * Correct the comment to be more accurate The comment should talk about what the tests actually intend to do * General improvements to code quality Move declared transactionWrapper and other variables out to shorten code. Remove require and replace with import. Use more specific type. * Add data client check Add data client check and add type for data client. * Eliminate the mocked function variable The mocked function variable is not used so remove it from code. * Move begin transaction setup code The same block of code for setting up begin transaction is repeated twice. Move it into one function and use it from both before blocks. * Replace the TODO for the key Add some try blocks to make the errors more visible also. * Update description Update the description for the test to give a better explanation of what the describe block does. * Add comments to describe the purpose of signaller The comments describing the callback signaller should explain the problem it solves. * Add both dones back in The done functions were lost in the refactors. Let us add them back in. * mockedBeginTransaction should be Function Make a more specific type for mockedBeginTransaction and the functions mocked. * Use ECMA script modifier Make sure this function is completely hidden. * Remove TODOs that no longer apply The TODO statements no longer need to be followed up on so remove them. * beginTransaction type definition Remove the type definition. It is not used. * Add the setupBeginTransaction method Refactor test code to provide better error catching and also not repeat setup code for the run function. * Add a comment for private runCommit method The comment for the runCommit method just captures the fact that the function is used as a pass-through. * Modify comment to be more clear * Update comments The comments should more directly address the problem the tests are meant to solve * Eliminate redundant test code This describe block is now duplicated. Remove it. * revert comment This was a typo * refactor: Move commit logic and add tests that prepare for transaction function changes * runQuery, put, commit Another some more integration tests for runQuery, put, commit * run linter and group some tests into a describe block so that they don’t run before some new tests we are going to add. * Add some runAggregationQuery integration tests Add one of the test cases from the document (runAggregationQuery tests) * Add tests for put, runAggregationQuery, commit put, runAggregationQuery, commit tests have been added and now run properly. * Write some latency tests The latency tests measure time taken with and without using the run call. * Add logs to make latency tests run The logs will output the time required for the latency tests. * Add two tests for put, commit The two tests for put, commit should make sure that begin transaction is called. * Build requests into the transaction order tester To meet the needs we want for unit testing we must add some checker that lets us record the requests and verify that they are the right values. * Modify order testing Modify the order tester object to include more calls. Also add expected requests to the existing tests. * Create lookup, lookup, put, commit Create test for a read, read and then commit. * Fix the unit test Unit test should capture the fact that the run callback is used. * Add lookup requests When using get requests without passing consistency, we should see two lookup requests reach the gapic layer. Consistency should be removed from the test because it is not meant to reach the Gapic layer. * Remove the console logs console logs are not needed. Remove them so that the tests are cleaner. * Remove only * remove the latency tests The latency tests are not needed anymore so remove them. * Separate into a section transactions with/without A section name transactions with and without run should be used. * Remove a describe block and run linter This should make the diff a lot cleaner * Re-introduce a test that was there from before We don’t want the diff to say that we have removed tests. Therefore, add the test that was there before. * Update comment Modify the comment so that it is more objective * Add a comment for the runAggregationQuery function The comment for the aggregation query function in transaction.ts is needed here. * Simplify argument type In #withBeginTransaction there is a data type that matches the complex data type in the second argument of this function. * remove unnecessary extra variable The extra variable is not needed * Eliminate redundant definition Eliminate a definition and use the commit response data type here instead. * Add a comment for the #withBeginTransaction fn Need to clearly explain what the withBeginTransactionFunction does * Eliminate a line that was used for debugging * Add space back in * remove indent * Add empty line back in This simplifies the diff a bit * Remove ambiguous pronoun * Shorten comment * Add a comment for begin Add a comment that incorporates how this function interacts with #withBeginTransaction. * Shorten comments Don’t repeat information from the comments in the super class. Just mention the super class comments. * Type is only used once Inline the type to eliminate redundancy in the code. * Inline another promise type Inline another promise type which lets us eliminate one line of code. * Rename type to executor Executor is what it is called in the promise argument. * run linter * Simplify the data types more The types should line up for the executor in the runAsync function * Rename type to describe how it is used This name is clearer * Rename to userCallbackData. Add comments UserCallbackData is a more specific description of the type of data the generic type is. We also need comments to explain what these interfaces should represent. * resolver is a better term to use here * Change the type in the comments The type has updated since to be a more general type. * Flip if/else Flip the if else. Improvements are that the if checks for the affirmative and the longer block comes first * run linter * Add brackets Introduce brackets so that the word matching the parameter is more isolated. * Stronger type checking for runAsync Use more specific types in the runAsync function so that the compiler will complain if anything isn’t right. * Call the function fed into the promise resolver resolver should be the name used just to be consistent with all other code. * Rename variables and add comments Rename the variables so that the relationships between them are easier to understand. Add comments explaining the purpose of the variables. * Add comment for the done function * Make checkForCompletion private To avoid confusion make checkForCompletion private so that the user of the object does not need to think about using it. * Replace all events with enum values The events should not be strings. If they are strings then we might be magic string matching and this should not be done in code. * Make code more succinct Remove the need for a map. Remove occurrences of strings throughout tests and replace them with enum values. * Rename event to UserCodeEvent Call this enum UserCodeEvent as it is a better description of what the values could potentially be. * Remove the map from string names to gapic layer This map is not needed anymore because now we use the Gapic layer function event directly. * More specific type Shouldn’t just be a string. This should be a Gapic Layer function. * todo is done Assertion check is done * Eliminate need to define extra variable This just makes the code a bit more concise. * Add comments to describe test objects The comments describe Gapic layer data passed back. * There is no need to make these functions private Just inline the callbacks. A private function makes their relationship with the code that uses them confusing and each one of them is only used in one place. * Renames all callbacks to just callback Rename all callbacks to callback because that is the variable name inside the client function. * Take requests private * Take expectedRequests private expectedRequests is not used outside of the transaction order tester so we should take it private. * Take expected event order private Expected event order should be taken private. * Take event order private event order is not used outside this object * Fix some warning messages Various warnings show up in the es-lint. Fix them. * Use unknown for Gapic Layer Response Change the type to unknown to address the ES-lint error. * Get rid of any type for runQuery Use the more specific type provided by runQuery instead. * More linter fixes Addressing some of the problems in the new tests according to ES-lint. * Change parameters to match the get callback Stronger type enforcement helping us catch errors later. * Another ESLInt correction Use GetCallback here instead of any for the Get response type. * Remove query variable as it is not used * Take done private When done is passed in and saved it should only be used internally. * Eliminate unused arguments in callback Eliminate the arguments because if they are not used then they cause ES-lint errors. * Add readOnly reserved word Various properties can be readOnly as recommended by the linter. * Make type for done explicit Explicitly call out the fact that done should equal mocha’s done function. * Another place where done should be mentioned The done type should explicitly be mentioned here. * No need to access order tester to get wrapper There is no need to access the transaction wrapper to get the order tester. Just access the transaction wrapper directly. * private variable transaction wrapper Take transaction wrapper private. It does not need to be visible to the user. * Capitalize RequestType Change RequestType to be capitalized and use it whenever a request needs to be made. * request should be a more specific type RequestType should be used here. * Do info checks for error and response cases Add another assertion check. Do the check for the error and response cases. * These are actually results from runQuery * Eliminate extra line of code Add assertion check for info. Eliminate the code that stores all the results. * rename enum The word Layer is redundant. Also emphasize that the enum captures the function name. * Lookup response The variable should include the word lookup since technically that is the name of the Gapic layer endpoint. * Add comments for the transaction order tester Explain each function with a comment describing what it does. * Introduce a new push function Add a push function so that in each test it is easier to see the events line up. * Remove middle layer functions Remove functions in the transactionOrderTester and use functionality from those functions directly because then in the test it is easier to read the test’s intent. Also, add GapicRequestData type to simplify types in the test class. Shorten transactionOrderTester to just tester. * Prefer block comments The comments are multi-line so use block comments instead. * Rename event to CUSTOM_EVENT CUSTOM_EVENT should be used instead of FUNCTIONS_CALLED. FUNCTIONS_CALLED is sort of ambiguous. * Add square brackets to comments square brackets added to make the comment more readable and user friendly. * Remove unused comment * Eliminate the promiseType variable This variable is only used once. We should not define it here. * Eliminate double try/catch blocks The nested try/catch blocks are not necessary. The finally block is going to run even if it returns an error in the catch block. * Add comments to describe what T is Need to make sure the generic type is clear. * Use wrapped promise The wrapped promise and runExclusive should be used instead of releasing the mutex manually. This is safer. * Change name to callback instead Name the variable to match the parameter name being passed into runExclusive. * Eliminate extra variable Use the async function in place. Don’t define an extra variable just for one usage. * Add a test for commit first If commit is first then make sure the calls happen in the right order. * Remove a redundant check for transaction started The results won’t be any different if the first check is removed. Therefore, should remove it just because it makes the code a lot simpler. * Rename variable and use runExclusive runExclusive in the run function will get rid of excess code that is not needed. Also rename a variable to runResults to be more specific. * refactor: remove resolvers, remove promise in withBeginTransaction, simplify code calling withBeginTransaction (#1212) * Change resolvers Change the resolvers so that they all follow the same pattern. * Add a wrapWithBeginTransaction function for get Generalize the calls to withBeginTransaction. Don’t allow the error type to be undefined in UserCallbackData since the error never actually will be undefined. This is necessary to solve various compile time errors. * Use wrapWithBeginTransaction in more places commit and runQuery can now use #wrapWithBeginTransaction and this will reduce the amount of code necessary in each function respectively. * Add callbackWithError function This function replaces a common pattern that occurs in transactions where we provide a callback that accepts an error as the first argument and some generic type that extends an array of any as the rest of the arguments. * Add return type to callbackWithError Adding a return type just makes type checking stronger in the client library. We should introduce it here to make it more likely a compiler error will be thrown if the function is misused. * Delete code that is not used When playing around with code to return a standard callback, code was written that is not required anymore. Also, rename StandardCallbackArgumentsAny. * There is no need to define a separate type The UserCallbackArguments do not need a separate type if they are only used once. Define the type inline where it is needed. * TODO no longer applies * Remove TODO * Inline the error type Error or null is only used in two places so inline it here. * Add a comment for callbackWithError callbackWithError is an abstract function that needs to be explained. This comment helps with that. * Added comments to document sendUserCallbackData sendUserCallbackData needs to be described so that its purpose is clear. * Move function Move function to the right order alphabetically * Do not define a commit type only used once Do not define a separate variable for only one use. * Replace the type in the comment with Function Replace with Function to eliminate references to the generic parameter which make CI tests fail. * Just use function type for the callback No need to mention the argument types and return types. * Remove withBeginTransaction withBeginTransaction is only called by one function so remove it to condense call stack. * Simplify code usage of withBeginTransaction Eliminate the need to build a resolver for all code usages of withBeginTransaction. Eliminate the need for a promise in withBeginTransaction. Eliminate the need for a callbackWithError function. * function should not have any arguments * Remove generic Args parameter It is not used. * Remove TODOs that are not relevant anymore. * Rename to withBeginTransaction Rename the function and eliminate redundant code. * Update comments for withBeginTransaction Update the comments to reflect new parameters. * Simplify diff * Remove error as null * withBeginTransaction Move withBeginTransaction to last alphabetically * Add a comment to indicate error In the code block it is not clear what kind of error will be produced and caught in catch so a comment is added to clarify the type of error that gets produced. * Rename method to beginTxAsync Calling the method `run` is too ambiguous. Use #beginTransactionAsync instead. * Remove abstract types and inline instead With changes from before, these abstract data types are now only used once in the async function that begins a transaction. This change inlines the code that creates the promise so that these don’t have to be used at all. * Change the type of the id The id for a transaction should actually match the value returned by the server. Adding this change also allows us to be more specific with types in function arguments. * For types to align, previous txn must be flexible Previous transaction must accept the Uint8Array type because after all, that is what the id type usually is. * Set transaction type in request options The request options must accept a Uint8Array for the compiler to work now that the ids can accept this type too. * For read options, more types should be accepted The type for read options should line up with the type for other properties that store a transaction id. * Replace UserCallbackData with BeginAsyncResponse UserCallbackData is only used in one place. Therefore, the generic type is not necessary and this can be replaced with a more specific type for readability. * Rewrite description for withBeginTransaction. This description adds a few more details. * Add comments to withBeginTransaction Ensure that the use of withBeginTransaction is clear and that this function contains comments throughout it. * Make the MockedTransactionWrapper class flexible We want to test what happens when sending an error back from the begin transaction call. * Move the after hook out The after hook does the same thing for all four of the describe blocks. Move it out to reduce the amount of code required. * Add beginTransaction error test Add a test to ensure that when beginTransaction sends back an error that the error actually reaches the user when they are using a promise or a callback. * Add comments to withBeginTransaction Comments are needed in withBeginTransaction to clearly indicate the flow of control within the function. * Added a few comments for withBeginTxn Comments will help all functions that are using withBeginTransaction. --------- Co-authored-by: Mend Renovate Co-authored-by: gcf-owl-bot[bot] <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Owl Bot * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Mend Renovate Co-authored-by: gcf-owl-bot[bot] <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/package.json | 1 + handwritten/nodejs-datastore/src/request.ts | 21 +- .../nodejs-datastore/src/transaction.ts | 537 +++++-- .../nodejs-datastore/system-test/datastore.ts | 197 ++- .../nodejs-datastore/test/transaction.ts | 1262 ++++++++++++++++- 5 files changed, 1871 insertions(+), 147 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 06751f1e5cf..8423fb7b90c 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -43,6 +43,7 @@ "dependencies": { "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", + "async-mutex": "^0.4.0", "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-gax": "^4.0.5", diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index d39f572efd3..047cf0ab645 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -79,7 +79,7 @@ const CONSISTENCY_PROTO_CODE: ConsistencyProtoCode = { * @class */ class DatastoreRequest { - id: string | undefined; + id: string | undefined | Uint8Array | null; requests_: | Entity | { @@ -546,6 +546,19 @@ class DatastoreRequest { ); } + /** + * Datastore allows you to run aggregate queries by supplying aggregate fields + * which will determine the type of aggregation that is performed. + * + * The query is run, and the results are returned in the second argument of + * the callback provided. + * + * @param {AggregateQuery} query AggregateQuery object. + * @param {RunQueryOptions} options Optional configuration + * @param {function} [callback] The callback function. If omitted, a promise is + * returned. + * + **/ runAggregationQuery( query: AggregateQuery, options?: RunQueryOptions @@ -1157,7 +1170,7 @@ export interface SharedQueryOptions { partitionId?: google.datastore.v1.IPartitionId | null; readOptions?: { readConsistency?: number; - transaction?: string; + transaction?: string | Uint8Array | null; readTime?: ITimestamp; }; } @@ -1166,9 +1179,9 @@ export interface RequestOptions extends SharedQueryOptions { keys?: Entity; transactionOptions?: { readOnly?: {}; - readWrite?: {previousTransaction?: string}; + readWrite?: {previousTransaction?: string | Uint8Array | null}; } | null; - transaction?: string | null; + transaction?: string | null | Uint8Array; mode?: string; query?: QueryProto; filter?: string; diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 9bc760dd363..0b7883b6da3 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -22,15 +22,41 @@ import {google} from '../protos/protos'; import {Datastore, TransactionOptions} from '.'; import {entity, Entity, Entities} from './entity'; -import {Query} from './query'; +import { + Query, + RunQueryCallback, + RunQueryInfo, + RunQueryOptions, + RunQueryResponse, +} from './query'; import { CommitCallback, CommitResponse, DatastoreRequest, RequestOptions, PrepareEntityObjectResponse, + CreateReadStreamOptions, + GetResponse, + GetCallback, + RequestCallback, } from './request'; import {AggregateQuery} from './aggregate'; +import {Mutex} from 'async-mutex'; + +/* + * This type matches the value returned by the promise in the + * #beginTransactionAsync function and subsequently passed into various other + * methods in this class. + */ +interface BeginAsyncResponse { + err?: Error | null; + resp?: google.datastore.v1.IBeginTransactionResponse; +} + +enum TransactionState { + NOT_STARTED, + IN_PROGRESS, // IN_PROGRESS currently tracks the expired state as well +} /** * A transaction is a set of Datastore operations on one or more entities. Each @@ -58,6 +84,8 @@ class Transaction extends DatastoreRequest { request: Function; modifiedEntities_: ModifiedEntities; skipCommit?: boolean; + #mutex = new Mutex(); + #state = TransactionState.NOT_STARTED; constructor(datastore: Datastore, options?: TransactionOptions) { super(); /** @@ -149,116 +177,13 @@ class Transaction extends DatastoreRequest { : () => {}; const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; - - if (this.skipCommit) { - setImmediate(callback); - return; - } - - const keys: Entities = {}; - - this.modifiedEntities_ - // Reverse the order of the queue to respect the "last queued request - // wins" behavior. - .reverse() - // Limit the operations we're going to send through to only the most - // recently queued operations. E.g., if a user tries to save with the - // same key they just asked to be deleted, the delete request will be - // ignored, giving preference to the save operation. - .filter((modifiedEntity: Entity) => { - const key = modifiedEntity.entity.key; - - if (!entity.isKeyComplete(key)) return true; - - const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); - - if (!keys[stringifiedKey]) { - keys[stringifiedKey] = true; - return true; - } - - return false; - }) - // Group entities together by method: `save` mutations, then `delete`. - // Note: `save` mutations being first is required to maintain order when - // assigning IDs to incomplete keys. - .sort((a, b) => { - return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; - }) - // Group arguments together so that we only make one call to each - // method. This is important for `DatastoreRequest.save`, especially, as - // that method handles assigning auto-generated IDs to the original keys - // passed in. When we eventually execute the `save` method's API - // callback, having all the keys together is necessary to maintain - // order. - .reduce((acc: Entities, entityObject: Entity) => { - const lastEntityObject = acc[acc.length - 1]; - const sameMethod = - lastEntityObject && entityObject.method === lastEntityObject.method; - - if (!lastEntityObject || !sameMethod) { - acc.push(entityObject); - } else { - lastEntityObject.args = lastEntityObject.args.concat( - entityObject.args - ); - } - - return acc; - }, []) - // Call each of the mutational methods (DatastoreRequest[save,delete]) - // to build up a `req` array on this instance. This will also build up a - // `callbacks` array, that is the same callback that would run if we - // were using `save` and `delete` outside of a transaction, to process - // the response from the API. - .forEach( - (modifiedEntity: {method: string; args: {reverse: () => void}}) => { - const method = modifiedEntity.method; - const args = modifiedEntity.args.reverse(); - Datastore.prototype[method].call(this, args, () => {}); - } - ); - - // Take the `req` array built previously, and merge them into one request to - // send as the final transactional commit. - const reqOpts = { - mutations: this.requests_ - .map((x: {mutations: google.datastore.v1.Mutation}) => x.mutations) - .reduce( - (a: {concat: (arg0: Entity) => void}, b: Entity) => a.concat(b), - [] - ), - }; - - this.request_( - { - client: 'DatastoreClient', - method: 'commit', - reqOpts, - gaxOpts: gaxOptions || {}, + // This ensures that the transaction is started before calling runCommit + this.#withBeginTransaction( + gaxOptions, + () => { + this.#runCommit(gaxOptions, callback); }, - (err, resp) => { - if (err) { - // Rollback automatically for the user. - this.rollback(() => { - // Provide the error & API response from the failed commit to the - // user. Even a failed rollback should be transparent. RE: - // https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 - callback(err, resp); - }); - return; - } - - // The `callbacks` array was built previously. These are the callbacks - // that handle the API response normally when using the - // DatastoreRequest.save and .delete methods. - this.requestCallbacks_.forEach( - (cb: (arg0: null, arg1: Entity) => void) => { - cb(null, resp); - } - ); - callback(null, resp); - } + callback ); } @@ -398,6 +323,47 @@ class Transaction extends DatastoreRequest { }); } + /** + * This function calls get on the super class. If the transaction + * has not been started yet then the transaction is started before the + * get call is made. + * + * @param {Key|Key[]} keys Datastore key object(s). + * @param {object} [options] Optional configuration. + * @param {function} callback The callback function. + * + */ + get( + keys: entity.Key | entity.Key[], + options?: CreateReadStreamOptions + ): Promise; + get(keys: entity.Key | entity.Key[], callback: GetCallback): void; + get( + keys: entity.Key | entity.Key[], + options: CreateReadStreamOptions, + callback: GetCallback + ): void; + get( + keys: entity.Key | entity.Key[], + optionsOrCallback?: CreateReadStreamOptions | GetCallback, + cb?: GetCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' && optionsOrCallback + ? optionsOrCallback + : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + // This ensures that the transaction is started before calling get + this.#withBeginTransaction( + options.gaxOptions, + () => { + super.get(keys, options, callback); + }, + callback + ); + } + /** * Maps to {@link https://cloud.google.com/nodejs/docs/reference/datastore/latest/datastore/transaction#_google_cloud_datastore_Transaction_save_member_1_|Datastore#save}, forcing the method to be `insert`. * @@ -544,10 +510,195 @@ class Transaction extends DatastoreRequest { typeof optionsOrCallback === 'object' ? optionsOrCallback : {}; const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + this.#mutex.runExclusive(async () => { + if (this.#state === TransactionState.NOT_STARTED) { + const runResults = await this.#beginTransactionAsync(options); + this.#processBeginResults(runResults, callback); + } else { + process.emitWarning( + 'run has already been called and should not be called again.' + ); + callback(null, this, {transaction: this.id}); + } + }); + } + + /** + * This function is a pass-through for the transaction.commit method + * It contains the business logic used for committing a transaction + * + * @param {object} [gaxOptions] Request configuration options, outlined here: + * https://googleapis.github.io/gax-nodejs/global.html#CallOptions. + * @param {function} callback The callback function. + * @private + */ + #runCommit( + gaxOptions: CallOptions, + callback: CommitCallback + ): void | Promise { + if (this.skipCommit) { + setImmediate(callback); + return; + } + + const keys: Entities = {}; + + this.modifiedEntities_ + // Reverse the order of the queue to respect the "last queued request + // wins" behavior. + .reverse() + // Limit the operations we're going to send through to only the most + // recently queued operations. E.g., if a user tries to save with the + // same key they just asked to be deleted, the delete request will be + // ignored, giving preference to the save operation. + .filter((modifiedEntity: Entity) => { + const key = modifiedEntity.entity.key; + + if (!entity.isKeyComplete(key)) return true; + + const stringifiedKey = JSON.stringify(modifiedEntity.entity.key); + + if (!keys[stringifiedKey]) { + keys[stringifiedKey] = true; + return true; + } + + return false; + }) + // Group entities together by method: `save` mutations, then `delete`. + // Note: `save` mutations being first is required to maintain order when + // assigning IDs to incomplete keys. + .sort((a, b) => { + return a.method < b.method ? 1 : a.method > b.method ? -1 : 0; + }) + // Group arguments together so that we only make one call to each + // method. This is important for `DatastoreRequest.save`, especially, as + // that method handles assigning auto-generated IDs to the original keys + // passed in. When we eventually execute the `save` method's API + // callback, having all the keys together is necessary to maintain + // order. + .reduce((acc: Entities, entityObject: Entity) => { + const lastEntityObject = acc[acc.length - 1]; + const sameMethod = + lastEntityObject && entityObject.method === lastEntityObject.method; + + if (!lastEntityObject || !sameMethod) { + acc.push(entityObject); + } else { + lastEntityObject.args = lastEntityObject.args.concat( + entityObject.args + ); + } + + return acc; + }, []) + // Call each of the mutational methods (DatastoreRequest[save,delete]) + // to build up a `req` array on this instance. This will also build up a + // `callbacks` array, that is the same callback that would run if we + // were using `save` and `delete` outside of a transaction, to process + // the response from the API. + .forEach( + (modifiedEntity: {method: string; args: {reverse: () => void}}) => { + const method = modifiedEntity.method; + const args = modifiedEntity.args.reverse(); + Datastore.prototype[method].call(this, args, () => {}); + } + ); + // Take the `req` array built previously, and merge them into one request to + // send as the final transactional commit. const reqOpts = { + mutations: this.requests_ + .map((x: {mutations: google.datastore.v1.Mutation}) => x.mutations) + .reduce( + (a: {concat: (arg0: Entity) => void}, b: Entity) => a.concat(b), + [] + ), + }; + + this.request_( + { + client: 'DatastoreClient', + method: 'commit', + reqOpts, + gaxOpts: gaxOptions || {}, + }, + (err, resp) => { + if (err) { + // Rollback automatically for the user. + this.rollback(() => { + // Provide the error & API response from the failed commit to the + // user. Even a failed rollback should be transparent. RE: + // https://github.com/GoogleCloudPlatform/google-cloud-node/pull/1369#discussion_r66833976 + callback(err, resp); + }); + return; + } + + // The `callbacks` array was built previously. These are the callbacks + // that handle the API response normally when using the + // DatastoreRequest.save and .delete methods. + this.requestCallbacks_.forEach( + (cb: (arg0: null, arg1: Entity) => void) => { + cb(null, resp); + } + ); + callback(null, resp); + } + ); + } + + /** + * This function parses results from a beginTransaction call + * + * @param {BeginAsyncResponse} [response] + * The response data from a call to begin a transaction. + * @param {RunCallback} [callback] A callback that accepts an error and a + * response as arguments. + * + **/ + #processBeginResults( + runResults: BeginAsyncResponse, + callback: RunCallback + ): void { + const err = runResults.err; + const resp = runResults.resp; + if (err) { + callback(err, null, resp); + } else { + this.#parseRunSuccess(runResults); + callback(null, this, resp); + } + } + + /** + * This function saves results from a successful beginTransaction call. + * + * @param {BeginAsyncResponse} [response] The response from a call to + * begin a transaction that completed successfully. + * + **/ + #parseRunSuccess(runResults: BeginAsyncResponse) { + const resp = runResults.resp; + this.id = resp!.transaction; + this.#state = TransactionState.IN_PROGRESS; + } + + /** + * This async function makes a beginTransaction call and returns a promise with + * the information returned from the call that was made. + * + * @param {RunOptions} options The options used for a beginTransaction call. + * @returns {Promise} + * + * + **/ + async #beginTransactionAsync( + options: RunOptions + ): Promise { + const reqOpts: RequestOptions = { transactionOptions: {}, - } as RequestOptions; + }; if (options.readOnly || this.readOnly) { reqOpts.transactionOptions!.readOnly = {}; @@ -562,22 +713,104 @@ class Transaction extends DatastoreRequest { if (options.transactionOptions) { reqOpts.transactionOptions = options.transactionOptions; } + return new Promise((resolve: (value: BeginAsyncResponse) => void) => { + this.request_( + { + client: 'DatastoreClient', + method: 'beginTransaction', + reqOpts, + gaxOpts: options.gaxOptions, + }, + // Always use resolve because then this function can return both the error and the response + (err, resp) => { + resolve({ + err, + resp, + }); + } + ); + }); + } - this.request_( - { - client: 'DatastoreClient', - method: 'beginTransaction', - reqOpts, - gaxOpts: options.gaxOptions, + /** + * + * This function calls runAggregationQuery on the super class. If the transaction + * has not been started yet then the transaction is started before the + * runAggregationQuery call is made. + * + * @param {AggregateQuery} [query] AggregateQuery object. + * @param {RunQueryOptions} [options] Optional configuration + * @param {function} [callback] The callback function. If omitted, a promise is + * returned. + * + **/ + runAggregationQuery( + query: AggregateQuery, + options?: RunQueryOptions + ): Promise; + runAggregationQuery( + query: AggregateQuery, + options: RunQueryOptions, + callback: RequestCallback + ): void; + runAggregationQuery(query: AggregateQuery, callback: RequestCallback): void; + runAggregationQuery( + query: AggregateQuery, + optionsOrCallback?: RunQueryOptions | RequestCallback, + cb?: RequestCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' && optionsOrCallback + ? optionsOrCallback + : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + // This ensures that the transaction is started before calling runAggregationQuery + this.#withBeginTransaction( + options.gaxOptions, + () => { + super.runAggregationQuery(query, options, callback); }, - (err, resp) => { - if (err) { - callback(err, null, resp); - return; - } - this.id = resp!.transaction; - callback(null, this, resp); - } + callback + ); + } + + /** + * This function calls runQuery on the super class. If the transaction + * has not been started yet then the transaction is started before the + * runQuery call is made. + * + * @param {Query} query Query object. + * @param {object} [options] Optional configuration. + * @param {function} [callback] The callback function. If omitted, a readable + * stream instance is returned. + * + */ + runQuery(query: Query, options?: RunQueryOptions): Promise; + runQuery( + query: Query, + options: RunQueryOptions, + callback: RunQueryCallback + ): void; + runQuery(query: Query, callback: RunQueryCallback): void; + runQuery( + query: Query, + optionsOrCallback?: RunQueryOptions | RunQueryCallback, + cb?: RunQueryCallback + ): void | Promise { + const options = + typeof optionsOrCallback === 'object' && optionsOrCallback + ? optionsOrCallback + : {}; + const callback = + typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + // This ensures that the transaction is started before calling runQuery + this.#withBeginTransaction( + options.gaxOptions, + () => { + super.runQuery(query, options, callback); + }, + callback ); } @@ -771,6 +1004,59 @@ class Transaction extends DatastoreRequest { this.save(entities); } + + /** + * Some rpc calls require that the transaction has been started (i.e, has a + * valid id) before they can be sent. #withBeginTransaction acts as a wrapper + * over those functions. + * + * If the transaction has not begun yet, `#withBeginTransaction` will first + * send an rpc to begin the transaction, and then execute the wrapped + * function. If it has begun, the wrapped function will be called directly + * instead. If an error is encountered during the beginTransaction call, the + * callback will be executed instead of the wrapped function. + * + * @param {CallOptions | undefined} [gaxOptions] Gax options provided by the + * user that are used for the beginTransaction grpc call. + * @param {function} [fn] A function which is run after ensuring a + * beginTransaction call is made. + * @param {function} [callback] A callback provided by the user that expects + * an error in the first argument and a custom data type for the rest of the + * arguments. + * @private + */ + #withBeginTransaction( + gaxOptions: CallOptions | undefined, + fn: () => void, + callback: (...args: [Error | null, ...T] | [Error | null]) => void + ): void { + (async () => { + if (this.#state === TransactionState.NOT_STARTED) { + try { + await this.#mutex.runExclusive(async () => { + if (this.#state === TransactionState.NOT_STARTED) { + // This sends an rpc call to get the transaction id + const runResults = await this.#beginTransactionAsync({ + gaxOptions, + }); + if (runResults.err) { + // The rpc getting the id was unsuccessful. + // Do not call the wrapped function. + throw runResults.err; + } + this.#parseRunSuccess(runResults); + // The rpc saving the transaction id was successful. + // Now the wrapped function fn will be called. + } + }); + } catch (err: any) { + // Handle an error produced by the beginTransactionAsync call + return callback(err); + } + } + return fn(); + })(); + } } export type ModifiedEntities = Array<{ @@ -810,6 +1096,7 @@ promisifyAll(Transaction, { 'createQuery', 'delete', 'insert', + '#runAsync', 'save', 'update', 'upsert', diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index dffcc7244a3..62e1f89f89d 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1749,6 +1749,187 @@ async.each( assert.deepStrictEqual(results, [{property_1: 4}]); }); }); + describe('transactions with and without run', () => { + describe('lookup, put, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doLookupPutCommit(transaction: Transaction) { + const [firstRead] = await transaction.get(key); + assert(!firstRead); + transaction.save({key, data: obj}); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doLookupPutCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doLookupPutCommit(transaction); + }); + }); + describe('put, lookup, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doPutLookupCommit(transaction: Transaction) { + transaction.save({key, data: obj}); + const [firstRead] = await transaction.get(key); + assert(!firstRead); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doPutLookupCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doPutLookupCommit(transaction); + }); + }); + describe('runQuery, put, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doRunQueryPutCommit(transaction: Transaction) { + const query = transaction.createQuery('Company'); + const [results] = await transaction.runQuery(query); + assert.deepStrictEqual(results, []); + transaction.save({key, data: obj}); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doRunQueryPutCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doRunQueryPutCommit(transaction); + }); + }); + describe('put, runQuery, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doPutRunQueryCommit(transaction: Transaction) { + transaction.save({key, data: obj}); + const query = transaction.createQuery('Company'); + const [results] = await transaction.runQuery(query); + assert.deepStrictEqual(results, []); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doPutRunQueryCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doPutRunQueryCommit(transaction); + }); + }); + + describe('runAggregationQuery, put, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doRunAggregationQueryPutCommit( + transaction: Transaction + ) { + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + const [results] = + await transaction.runAggregationQuery(aggregateQuery); + assert.deepStrictEqual(results, [{total: 0}]); + transaction.save({key, data: obj}); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doRunAggregationQueryPutCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doRunAggregationQueryPutCommit(transaction); + }); + }); + describe('put, runAggregationQuery, commit', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doPutRunAggregationQueryCommit( + transaction: Transaction + ) { + transaction.save({key, data: obj}); + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + const [results] = + await transaction.runAggregationQuery(aggregateQuery); + assert.deepStrictEqual(results, [{total: 0}]); + await transaction.commit(); + const [entity] = await datastore.get(key); + delete entity[datastore.KEY]; + assert.deepStrictEqual(entity, obj); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + await doPutRunAggregationQueryCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction(); + await doPutRunAggregationQueryCommit(transaction); + }); + }); + }); describe('transactions', () => { it('should run in a transaction', async () => { const key = datastore.key(['Company', 'Google']); @@ -1873,9 +2054,7 @@ async.each( [result] = await aggregateQuery.run(); } catch (e) { await transaction.rollback(); - assert.fail( - 'The aggregation query run should have been successful' - ); + throw e; } assert.deepStrictEqual(result, [{total: 2}]); await transaction.commit(); @@ -1892,9 +2071,7 @@ async.each( [result] = await aggregateQuery.run(); } catch (e) { await transaction.rollback(); - assert.fail( - 'The aggregation query run should have been successful' - ); + throw e; } assert.deepStrictEqual(result, [{'total rating': 200}]); await transaction.commit(); @@ -1911,9 +2088,7 @@ async.each( [result] = await aggregateQuery.run(); } catch (e) { await transaction.rollback(); - assert.fail( - 'The aggregation query run should have been successful' - ); + throw e; } assert.deepStrictEqual(result, [{'average rating': 100}]); await transaction.commit(); @@ -1929,9 +2104,7 @@ async.each( [result] = await aggregateQuery.run(); } catch (e) { await transaction.rollback(); - assert.fail( - 'The aggregation query run should have been successful' - ); + throw e; } return result; } diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index 06faf342114..c1346f3df2f 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -24,21 +24,33 @@ import { DatastoreRequest, Query, TransactionOptions, + Transaction, + AggregateField, } from '../src'; -import {Entity} from '../src/entity'; +import {Entities, Entity, entity} from '../src/entity'; import * as tsTypes from '../src/transaction'; import * as sinon from 'sinon'; -import {RequestConfig} from '../src/request'; +import {Callback, CallOptions, ClientStub} from 'google-gax'; +import { + CommitCallback, + CreateReadStreamOptions, + GetCallback, + RequestCallback, + RequestConfig, +} from '../src/request'; import {SECOND_DATABASE_ID} from './index'; +import {google} from '../protos/protos'; +import {RunCallback} from '../src/transaction'; +import * as protos from '../protos/protos'; +import {AggregateQuery} from '../src/aggregate'; +import {RunQueryCallback, RunQueryInfo, RunQueryOptions} from '../src/query'; +import * as mocha from 'mocha'; const async = require('async'); // eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; type Path = string | [string] | [string, number]; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const {entity} = require('../src/entity'); - let promisified = false; const fakePfy = Object.assign({}, pfy, { promisifyAll(klass: Function, options: pfy.PromisifyAllOptions) { @@ -51,6 +63,7 @@ const fakePfy = Object.assign({}, pfy, { 'createQuery', 'delete', 'insert', + '#runAsync', 'save', 'update', 'upsert', @@ -147,9 +160,1246 @@ async.each( }); }); + describe('testing various transaction functions when transaction.run returns a response', () => { + type RequestType = + | protos.google.datastore.v1.ICommitRequest + | protos.google.datastore.v1.IBeginTransactionRequest + | protos.google.datastore.v1.ILookupRequest + | protos.google.datastore.v1.IRunQueryRequest + | protos.google.datastore.v1.IRunAggregationQueryRequest; + // These tests were created to ensure that various transaction functions work correctly after run is called. + // This allows us to catch any breaking changes to code usages that should remain the same. + const testRunResp = { + transaction: Buffer.from(Array.from(Array(100).keys())), + }; + enum GapicFunctionName { + BEGIN_TRANSACTION = 'beginTransaction', + LOOKUP = 'lookup', + RUN_QUERY = 'runQuery', + RUN_AGGREGATION_QUERY = 'runAggregationQuery', + COMMIT = 'commit', + } + + // MockedTransactionWrapper is a helper class for mocking out various + // Gapic functions and ensuring that responses and errors actually make it + // back to the user. + class MockedTransactionWrapper { + datastore: Datastore; + transaction: Transaction; + dataClient?: ClientStub; + mockedBeginTransaction: Function; + functionsMocked: { + name: GapicFunctionName; + mockedFunction: Function; + }[]; + // The callBackSignaler lets the user of this object get a signal when the mocked function is called. + // This is useful for tests that need to know when the mocked function is called. + callBackSignaler: ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => void = () => {}; + + constructor( + err: Error | null = null, + resp: google.datastore.v1.IBeginTransactionResponse = testRunResp + ) { + const namespace = 'run-without-mock'; + const projectId = 'project-id'; + const options = { + projectId, + namespace, + }; + const datastore = new Datastore(options); + const dataClientName = 'DatastoreClient'; + // Create a fresh transaction for each test because transaction state changes after a commit. + this.transaction = datastore.transaction(); + // In this before hook, save the original beginTransaction method in a variable. + // After tests are finished, reassign beginTransaction to the variable. + // This way, mocking beginTransaction in this block doesn't affect other tests. + const gapic = Object.freeze({ + v1: require('../src/v1'), + }); + // Datastore Gapic clients haven't been initialized yet, so we initialize them here. + datastore.clients_.set( + dataClientName, + new gapic.v1[dataClientName](options) + ); + const dataClient = datastore.clients_.get(dataClientName); + // Mock begin transaction + this.mockedBeginTransaction = () => {}; + if (dataClient && dataClient.beginTransaction) { + this.mockedBeginTransaction = dataClient.beginTransaction; + } + if (dataClient && dataClient.beginTransaction) { + dataClient.beginTransaction = ( + request: protos.google.datastore.v1.IBeginTransactionRequest, + options: CallOptions, + callback: Callback< + protos.google.datastore.v1.IBeginTransactionResponse, + | protos.google.datastore.v1.IBeginTransactionRequest + | null + | undefined, + {} | null | undefined + > + ) => { + // Calls a user provided function that will receive this string + // Usually used to track when this code was reached relative to other code + this.callBackSignaler( + GapicFunctionName.BEGIN_TRANSACTION, + request + ); + callback(err, resp); + }; + } + this.dataClient = dataClient; + this.functionsMocked = []; + this.datastore = datastore; + } + + // This mocks out a gapic function to just call the callback received in the Gapic function. + // The callback will send back the error and response arguments provided as parameters. + mockGapicFunction( + functionName: GapicFunctionName, + response: ResponseType, + error: Error | null + ) { + const dataClient = this.dataClient; + // Check here that function hasn't been mocked out already + // Ensures that this mocking object is not being misused. + this.functionsMocked.forEach(fn => { + if (fn.name === functionName) { + throw Error(`${functionName} has already been mocked out`); + } + }); + if (dataClient && dataClient[functionName]) { + this.functionsMocked.push({ + name: functionName, + mockedFunction: dataClient[functionName], + }); + } + if (dataClient && dataClient[functionName]) { + dataClient[functionName] = ( + request: RequestType, + options: CallOptions, + callback: Callback< + ResponseType, + RequestType | null | undefined, + {} | null | undefined + > + ) => { + this.callBackSignaler(functionName, request); + callback(error, response); + }; + } + } + + // This resets beginTransaction from the Gapic layer to what it originally was. + // Resetting beginTransaction ensures other tests don't use the beginTransaction mock. + resetBeginTransaction() { + if (this.dataClient && this.dataClient.beginTransaction) { + this.dataClient.beginTransaction = this.mockedBeginTransaction; + } + } + + // This resets Gapic functions mocked out by the tests to what they originally were. + // Resetting mocked out Gapic functions ensures other tests don't use these mocked out functions. + resetGapicFunctions() { + this.functionsMocked.forEach(functionMocked => { + if (this.dataClient) { + this.dataClient[functionMocked.name] = + functionMocked.mockedFunction; + } + }); + } + } + + let transactionWrapper: MockedTransactionWrapper; + let transaction: Transaction; + + afterEach(() => { + transactionWrapper.resetBeginTransaction(); + transactionWrapper.resetGapicFunctions(); + }); + + describe('sending an error back from the beginTransaction gapic function', () => { + const testErrorMessage = 'test-beginTransaction-error'; + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper( + new Error(testErrorMessage), + undefined + ); + }); + it('should send back the error when awaiting a promise', async () => { + try { + await transactionWrapper.transaction.commit(); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const commitCallback: CommitCallback = ( + error: Error | null | undefined, + response?: google.datastore.v1.ICommitResponse + ) => { + try { + assert(error); + assert.strictEqual(error.message, testErrorMessage); + assert.deepStrictEqual(response, undefined); + done(); + } catch (e) { + done(e); + } + }; + transactionWrapper.transaction.commit(commitCallback); + }); + }); + + describe('commit', () => { + // These tests were created to catch regressions for transaction.commit changes. + const testCommitResp = { + mutationResults: [ + { + key: { + path: [ + { + kind: 'some-kind', + }, + ], + }, + }, + ], + }; + const testErrorMessage = 'test-commit-error'; + + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + }); + + describe('should pass error back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.COMMIT, + testCommitResp, + new Error(testErrorMessage) + ); + }); + + it('should send back the error when awaiting a promise', async () => { + try { + await transactionWrapper.transaction.run(); + await transactionWrapper.transaction.commit(); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const commitCallback: CommitCallback = ( + error: Error | null | undefined, + response?: google.datastore.v1.ICommitResponse + ) => { + try { + assert(error); + assert.strictEqual(error.message, testErrorMessage); + assert.strictEqual(response, testCommitResp); + done(); + } catch (e) { + done(e); + } + }; + transactionWrapper.transaction.run(() => { + transactionWrapper.transaction.commit(commitCallback); + }); + }); + }); + describe('should pass response back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.COMMIT, + testCommitResp, + null + ); + }); + it('should send back the response when awaiting a promise', async () => { + await transactionWrapper.transaction.run(); + const [commitResults] = + await transactionWrapper.transaction.commit(); + assert.strictEqual(commitResults, testCommitResp); + }); + it('should send back the response when using a callback', done => { + const commitCallback: CommitCallback = ( + error: Error | null | undefined, + response?: google.datastore.v1.ICommitResponse + ) => { + try { + assert.strictEqual(error, null); + assert.strictEqual(response, testCommitResp); + done(); + } catch (e) { + done(e); + } + }; + transactionWrapper.transaction.run(() => { + transactionWrapper.transaction.commit(commitCallback); + }); + }); + }); + }); + describe('runAggregationQuery', () => { + // These tests were created to catch regressions for transaction.runAggregationQuery changes. + const runAggregationQueryUserResp = [{'average rating': 100}]; + const runAggregationQueryResp = { + batch: { + aggregationResults: [ + { + aggregateProperties: { + 'average rating': { + meaning: 0, + excludeFromIndexes: false, + doubleValue: 100, + valueType: 'doubleValue', + }, + }, + }, + ], + moreResults: + google.datastore.v1.QueryResultBatch.MoreResultsType + .NO_MORE_RESULTS, + readTime: {seconds: '1699390681', nanos: 961667000}, + }, + query: null, + transaction: testRunResp.transaction, + }; + const testErrorMessage = 'test-run-Aggregate-Query-error'; + let aggregate: AggregateQuery; + + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + transaction = transactionWrapper.transaction; + const q = transactionWrapper.datastore.createQuery('Character'); + aggregate = transactionWrapper.datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.average('appearances')); + }); + + describe('should pass error back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_AGGREGATION_QUERY, + runAggregationQueryResp, + new Error(testErrorMessage) + ); + }); + + it('should send back the error when awaiting a promise', async () => { + try { + await transaction.run(); + await transaction.runAggregationQuery(aggregate); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const runAggregateQueryCallback: RequestCallback = ( + error: Error | null | undefined, + response?: unknown + ) => { + try { + assert(error); + assert.strictEqual(error.message, testErrorMessage); + assert.deepStrictEqual(response, runAggregationQueryUserResp); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.runAggregationQuery( + aggregate, + runAggregateQueryCallback + ); + }); + }); + }); + describe('should pass response back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_AGGREGATION_QUERY, + runAggregationQueryResp, + null + ); + }); + it('should send back the response when awaiting a promise', async () => { + await transaction.run(); + const allResults = + await transaction.runAggregationQuery(aggregate); + const [runAggregateQueryResults] = allResults; + assert.deepStrictEqual( + runAggregateQueryResults, + runAggregationQueryUserResp + ); + }); + it('should send back the response when using a callback', done => { + const runAggregateQueryCallback: CommitCallback = ( + error: Error | null | undefined, + response?: unknown + ) => { + try { + assert.strictEqual(error, null); + assert.deepStrictEqual(response, runAggregationQueryUserResp); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.runAggregationQuery( + aggregate, + runAggregateQueryCallback + ); + }); + }); + }); + }); + describe('runQuery', () => { + // These tests were created to catch regressions for transaction.runQuery changes. + const runQueryResp = { + batch: { + entityResults: [], + endCursor: { + type: 'Buffer', + data: Buffer.from(Array.from(Array(100).keys())), + }, + }, + }; + const runQueryUserResp: Entity[] = []; + const runQueryUserInfo: RunQueryInfo = { + moreResults: undefined, + endCursor: '[object Object]', + }; + const testErrorMessage = 'test-run-Query-error'; + let q: Query; + + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + transaction = transactionWrapper.transaction; + q = transactionWrapper.datastore.createQuery('Character'); + }); + + describe('should pass error back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_QUERY, + runQueryResp, + new Error(testErrorMessage) + ); + }); + + it('should send back the error when awaiting a promise', async () => { + try { + await transaction.run(); + await transaction.runQuery(q); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const callback: RunQueryCallback = ( + error: Error | null | undefined, + entities?: Entity[], + info?: RunQueryInfo + ) => { + try { + assert(error); + assert.strictEqual(error.message, testErrorMessage); + assert.deepStrictEqual(entities, undefined); + assert.deepStrictEqual(info, undefined); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.runQuery(q, callback); + }); + }); + }); + describe('should pass response back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_QUERY, + runQueryResp, + null + ); + }); + it('should send back the response when awaiting a promise', async () => { + await transaction.run(); + const [runQueryResults, info] = await transaction.runQuery(q); + assert.deepStrictEqual(runQueryResults, runQueryUserResp); + assert.deepStrictEqual(info, runQueryUserInfo); + }); + it('should send back the response when using a callback', done => { + const callback: RunQueryCallback = ( + error: Error | null | undefined, + entities?: Entity[], + info?: RunQueryInfo + ) => { + try { + assert.strictEqual(error, null); + assert.deepStrictEqual(entities, runQueryUserResp); + assert.deepStrictEqual(info, runQueryUserInfo); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.runQuery(q, callback); + }); + }); + }); + }); + describe('get', () => { + // These tests were created to catch regressions for transaction.get changes. + const getResp = { + found: [ + { + entity: { + key: { + path: [ + { + kind: 'Post', + name: 'post1', + idType: 'name', + }, + ], + partitionId: { + projectId: 'projectId', + databaseId: 'databaseId', + namespaceId: 'namespaceId', + }, + }, + excludeFromIndexes: false, + properties: {}, + }, + }, + ], + missing: [], + deferred: [], + transaction: testRunResp.transaction, + readTime: { + seconds: '1699470605', + nanos: 201398000, + }, + }; + const getUserResp = 'post1'; + const testErrorMessage = 'test-run-Query-error'; + let key: entity.Key; + + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + transaction = transactionWrapper.transaction; + key = transactionWrapper.datastore.key(['Company', 'Google']); + }); + + describe('should pass error back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.LOOKUP, + getResp, + new Error(testErrorMessage) + ); + }); + + it('should send back the error when awaiting a promise', async () => { + try { + await transaction.run(); + await transaction.get(key); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const callback: GetCallback = ( + err?: Error | null, + entity?: Entities + ) => { + try { + assert(err); + assert.strictEqual(err.message, testErrorMessage); + assert.deepStrictEqual(entity, undefined); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.get(key, callback); + }); + }); + }); + describe('should pass response back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.LOOKUP, + getResp, + null + ); + }); + it('should send back the response when awaiting a promise', async () => { + await transaction.run(); + const [results] = await transaction.get(key); + const result = results[transactionWrapper.datastore.KEY]; + assert.deepStrictEqual(result.name, getUserResp); + }); + it('should send back the response when using a callback', done => { + const callback: GetCallback = ( + err?: Error | null, + entity?: Entities + ) => { + try { + const result = entity[transactionWrapper.datastore.KEY]; + assert.strictEqual(err, null); + assert.deepStrictEqual(result.name, getUserResp); + done(); + } catch (e) { + done(e); + } + }; + transaction.run(() => { + transaction.get(key, callback); + }); + }); + }); + }); + describe('concurrency', async () => { + // Items in this enum represent different points in time in the user code. + enum UserCodeEvent { + RUN_CALLBACK, + COMMIT_CALLBACK, + GET_CALLBACK, + RUN_QUERY_CALLBACK, + RUN_AGGREGATION_QUERY_CALLBACK, + CUSTOM_EVENT, + } + // A transaction event represents a point in time particular code is reached + // when running code that uses a transaction. + type TransactionEvent = GapicFunctionName | UserCodeEvent; + + // This object is a sample response from 'commit' in the Gapic layer. + const testCommitResp = { + mutationResults: [ + { + key: { + path: [ + { + kind: 'some-kind', + }, + ], + }, + }, + ], + }; + // This object is a sample response from 'lookup' in the Gapic layer. + const testLookupResp = { + found: [ + { + entity: { + key: { + path: [ + { + kind: 'Post', + name: 'post1', + idType: 'name', + }, + ], + partitionId: { + projectId: 'projectId', + databaseId: 'databaseId', + namespaceId: 'namespaceId', + }, + }, + excludeFromIndexes: false, + properties: {}, + }, + }, + ], + missing: [], + deferred: [], + transaction: testRunResp.transaction, + readTime: { + seconds: '1699470605', + nanos: 201398000, + }, + }; + // This object is a sample response from 'runQuery' in the Gapic layer. + const testRunQueryResp = { + batch: { + entityResults: [], + endCursor: { + type: 'Buffer', + data: Buffer.from(Array.from(Array(100).keys())), + }, + }, + }; + // This object is a sample response from 'runAggregationQuery' in the Gapic layer. + const testRunAggregationQueryResp = { + batch: { + aggregationResults: [ + { + aggregateProperties: { + 'average rating': { + meaning: 0, + excludeFromIndexes: false, + doubleValue: 100, + valueType: 'doubleValue', + }, + }, + }, + ], + moreResults: + google.datastore.v1.QueryResultBatch.MoreResultsType + .NO_MORE_RESULTS, + readTime: {seconds: '1699390681', nanos: 961667000}, + }, + query: null, + transaction: testRunResp.transaction, + }; + let transactionWrapper: MockedTransactionWrapper; + let transaction: Transaction; + + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + transaction = transactionWrapper.transaction; + }); + + afterEach(() => { + transactionWrapper.resetBeginTransaction(); + transactionWrapper.resetGapicFunctions(); + }); + + type GapicRequestData = { + call: GapicFunctionName; + request?: RequestType; + }; + + /** + * This object is used for testing the order that different events occur. + * The events can include user code reached, gapic code reached and callbacks called. + * + * @param {MockedTransactionWrapper} [transactionWrapper] A TransactionWrapper instance. + * @param {mocha.Done} [done] A function for signalling the test is complete. + * @param {TransactionEvent[]} [expectedOrder] The order events are expected to occur. + * @param {MockedTransactionWrapper} [transactionWrapper] A TransactionWrapper instance. + */ + class TransactionOrderTester { + /** + * expectedRequests equal the request data in the order they are expected to + * be passed into the Gapic layer. + * @private + */ + readonly #expectedRequests?: GapicRequestData[]; + /** + * requests are the actual order of the requests that are passed into the + * gapic layer + * @private + */ + readonly #requests: GapicRequestData[] = []; + /** + * expectedEventOrder is the order the test expects different events to occur + * such as a callback being called, Gapic functions being called or user + * code being run. + */ + readonly #expectedEventOrder: TransactionEvent[] = []; + /** + * eventOrder is the order events actually occur in the test and will be compared with + * expectedEventOrder. + * @private + */ + #eventOrder: TransactionEvent[] = []; + // A transaction wrapper object is used to contain the transaction and mocked Gapic functions. + #transactionWrapper: MockedTransactionWrapper; + // Stores the mocha done function so that it can be called from this object. + readonly #done: mocha.Done; + + /** + * Each time an event occurs this function is called to check to see if all + * events happened that were supposed to happen. If all events in the test + * happened then this function passes tests if the events happened in the + * right order. + */ + #checkForCompletion() { + if (this.#eventOrder.length >= this.#expectedEventOrder.length) { + try { + assert.deepStrictEqual( + this.#eventOrder, + this.#expectedEventOrder + ); + if (this.#expectedRequests) { + assert.deepStrictEqual( + this.#requests, + this.#expectedRequests + ); + } + this.#done(); + } catch (e) { + this.#done(e); + } + } + } + + constructor( + transactionWrapper: MockedTransactionWrapper, + done: mocha.Done, + expectedOrder: TransactionEvent[], + expectedRequests?: { + call: GapicFunctionName; + request?: RequestType; + }[] + ) { + this.#expectedEventOrder = expectedOrder; + this.#expectedRequests = expectedRequests; + this.#done = done; + transactionWrapper.callBackSignaler = ( + call: GapicFunctionName, + request?: RequestType + ) => { + try { + this.#requests.push({call, request}); + this.#eventOrder.push(call); + this.#checkForCompletion(); + } catch (e) { + done(e); + } + }; + this.#transactionWrapper = transactionWrapper; + } + + /** + * Returns a callback that will record an event so that order of events + * can be compared later. + * + * @param {UserCodeEvent} [event] The event that should be recorded. + */ + push(event: UserCodeEvent) { + return () => { + try { + this.#eventOrder.push(event); + this.#checkForCompletion(); + } catch (e) { + this.#done(e); + } + }; + } + } + + describe('should pass response back to the user', async () => { + beforeEach(() => { + transactionWrapper.mockGapicFunction( + GapicFunctionName.COMMIT, + testCommitResp, + null + ); + }); + + it('should call the callbacks in the proper order with run and commit', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + UserCodeEvent.CUSTOM_EVENT, + GapicFunctionName.BEGIN_TRANSACTION, + UserCodeEvent.RUN_CALLBACK, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + ] + ); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + tester.push(UserCodeEvent.CUSTOM_EVENT)(); + }); + it('should call the callbacks in the proper order with commit', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + UserCodeEvent.CUSTOM_EVENT, + GapicFunctionName.BEGIN_TRANSACTION, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + ] + ); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + tester.push(UserCodeEvent.CUSTOM_EVENT)(); + }); + it('should call the callbacks in the proper order with two run calls', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + UserCodeEvent.CUSTOM_EVENT, + GapicFunctionName.BEGIN_TRANSACTION, + UserCodeEvent.RUN_CALLBACK, + UserCodeEvent.RUN_CALLBACK, + ] + ); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + tester.push(UserCodeEvent.CUSTOM_EVENT)(); + }); + it('should call the callbacks in the proper order with commit and then run', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + UserCodeEvent.CUSTOM_EVENT, + GapicFunctionName.BEGIN_TRANSACTION, + UserCodeEvent.RUN_CALLBACK, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + ] + ); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + tester.push(UserCodeEvent.CUSTOM_EVENT)(); + }); + }); + describe('should pass response back to the user and check the request', async () => { + let key: entity.Key; + beforeEach(() => { + key = transactionWrapper.datastore.key(['Company', 'Google']); + transactionWrapper.mockGapicFunction( + GapicFunctionName.COMMIT, + testCommitResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.LOOKUP, + testLookupResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_QUERY, + testRunQueryResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_AGGREGATION_QUERY, + testRunAggregationQueryResp, + null + ); + }); + const beginTransactionRequest = { + transactionOptions: {}, + projectId: 'project-id', + }; + const commitRequest = { + mode: 'TRANSACTIONAL', + transaction: testRunResp.transaction, + projectId: 'project-id', + mutations: [ + { + upsert: { + properties: {}, + key: { + partitionId: { + namespaceId: 'run-without-mock', + }, + path: [ + { + kind: 'Company', + name: 'Google', + }, + ], + }, + }, + }, + ], + }; + const lookupTransactionRequest = { + keys: [ + { + partitionId: { + namespaceId: 'run-without-mock', + }, + path: [ + { + kind: 'Company', + name: 'Google', + }, + ], + }, + ], + projectId: 'project-id', + readOptions: { + transaction: testRunResp.transaction, + }, + }; + describe('put, commit', () => { + const expectedRequests = [ + { + call: GapicFunctionName.BEGIN_TRANSACTION, + request: beginTransactionRequest, + }, + { + call: GapicFunctionName.COMMIT, + request: commitRequest, + }, + ]; + it('should verify that there is a BeginTransaction call while beginning later', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + GapicFunctionName.BEGIN_TRANSACTION, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + ], + expectedRequests + ); + transaction.save({ + key, + data: '', + }); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + }); + it('should verify that there is a BeginTransaction call while beginning early', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + GapicFunctionName.BEGIN_TRANSACTION, + UserCodeEvent.RUN_CALLBACK, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + ], + expectedRequests + ); + transaction.save({ + key, + data: '', + }); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + }); + }); + describe('lookup, lookup, put, commit', () => { + const expectedRequests = [ + { + call: GapicFunctionName.BEGIN_TRANSACTION, + request: beginTransactionRequest, + }, + { + call: GapicFunctionName.COMMIT, + request: commitRequest, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequest, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequest, + }, + ]; + it('should verify that there is a BeginTransaction call while beginning later', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + GapicFunctionName.BEGIN_TRANSACTION, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + GapicFunctionName.LOOKUP, + GapicFunctionName.LOOKUP, + UserCodeEvent.GET_CALLBACK, + UserCodeEvent.GET_CALLBACK, + ], + expectedRequests + ); + transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK)); + transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK)); + transactionWrapper.transaction.save({ + key, + data: '', + }); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + }); + it('should verify that there is a BeginTransaction call while beginning early', done => { + const tester = new TransactionOrderTester( + transactionWrapper, + done, + [ + GapicFunctionName.BEGIN_TRANSACTION, + UserCodeEvent.RUN_CALLBACK, + GapicFunctionName.COMMIT, + UserCodeEvent.COMMIT_CALLBACK, + GapicFunctionName.LOOKUP, + GapicFunctionName.LOOKUP, + UserCodeEvent.GET_CALLBACK, + UserCodeEvent.GET_CALLBACK, + ], + expectedRequests + ); + transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK)); + transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK)); + transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK)); + transactionWrapper.transaction.save({ + key, + data: '', + }); + transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); + }); + }); + }); + }); + }); + + describe('run without setting up transaction id', () => { + // These tests were created so that when transaction.run is restructured we + // can be confident that it works the same way as before. + const testRunResp = { + transaction: Buffer.from(Array.from(Array(100).keys())), + }; + const namespace = 'run-without-mock'; + const projectId = 'project-id'; + const testErrorMessage = 'test-error'; + const options = { + projectId, + namespace, + }; + const datastore = new Datastore(options); + const transactionWithoutMock = datastore.transaction(); + const dataClientName = 'DatastoreClient'; + let dataClient: ClientStub | undefined; + let originalBeginTransactionMethod: Function; + + beforeEach(async () => { + // In this before hook, save the original beginTransaction method in a variable. + // After tests are finished, reassign beginTransaction to the variable. + // This way, mocking beginTransaction in this block doesn't affect other tests. + const gapic = Object.freeze({ + v1: require('../src/v1'), + }); + // Datastore Gapic clients haven't been initialized yet, so we initialize them here. + datastore.clients_.set( + dataClientName, + new gapic.v1[dataClientName](options) + ); + dataClient = datastore.clients_.get(dataClientName); + if (dataClient && dataClient.beginTransaction) { + originalBeginTransactionMethod = dataClient.beginTransaction; + } + }); + + afterEach(() => { + // beginTransaction has likely been mocked out in these tests. + // We should reassign beginTransaction back to its original value for tests outside this block. + if (dataClient && originalBeginTransactionMethod) { + dataClient.beginTransaction = originalBeginTransactionMethod; + } + }); + + function setupBeginTransaction(err: Error | null | undefined) { + if (dataClient) { + dataClient.beginTransaction = ( + request: protos.google.datastore.v1.IBeginTransactionRequest, + options: CallOptions, + callback: Callback< + protos.google.datastore.v1.IBeginTransactionResponse, + | protos.google.datastore.v1.IBeginTransactionRequest + | null + | undefined, + {} | null | undefined + > + ) => { + callback(err, testRunResp); + }; + } + } + + describe('should pass error back to the user', async () => { + beforeEach(() => { + // Mock out begin transaction and send error back to the user + // from the Gapic layer. + setupBeginTransaction(new Error(testErrorMessage)); + }); + + it('should send back the error when awaiting a promise', async () => { + try { + await transactionWithoutMock.run(); + assert.fail('The run call should have failed.'); + } catch (error: any) { + assert.strictEqual(error['message'], testErrorMessage); + } + }); + it('should send back the error when using a callback', done => { + const runCallback: RunCallback = ( + error: Error | null, + transaction: Transaction | null, + response?: google.datastore.v1.IBeginTransactionResponse + ) => { + try { + assert(error); + assert.strictEqual(error.message, testErrorMessage); + assert.strictEqual(transaction, null); + assert.strictEqual(response, testRunResp); + done(); + } catch (e) { + done(e); + } + }; + transactionWithoutMock.run({}, runCallback); + }); + }); + describe('should pass response back to the user', async () => { + beforeEach(() => { + // Mock out begin transaction and send a response + // back to the user from the Gapic layer. + setupBeginTransaction(null); + }); + it('should send back the response when awaiting a promise', async () => { + const [transaction, resp] = await transactionWithoutMock.run(); + assert.strictEqual(transaction, transactionWithoutMock); + assert.strictEqual(resp, testRunResp); + }); + it('should send back the response when using a callback', done => { + const runCallback: RunCallback = ( + error: Error | null, + transaction: Transaction | null, + response?: google.datastore.v1.IBeginTransactionResponse + ) => { + try { + assert.strictEqual(error, null); + assert.deepStrictEqual(response, testRunResp); + assert.strictEqual(transaction, transactionWithoutMock); + done(); + } catch (e) { + done(e); + } + }; + transactionWithoutMock.run({}, runCallback); + }); + }); + }); + describe('commit', () => { - beforeEach(() => { + beforeEach(done => { transaction.id = TRANSACTION_ID; + transaction.request_ = (config, callback) => { + callback(null, { + transaction: Buffer.from(Array.from(Array(100).keys())), + }); + // Delay to give the transaction mutex the opportunity to unlock before running tests. + setImmediate(() => { + done(); + }); + }; + transaction.run(); }); afterEach(() => { From 736875b1f6fd95a066cd36eb0c154006828d395c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 12 Mar 2024 11:52:16 +0100 Subject: [PATCH 772/820] fix(deps): update dependency async-mutex to ^0.5.0 (#1240) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [async-mutex](https://togithub.com/DirtyHairy/async-mutex) | [`^0.4.0` -> `^0.5.0`](https://renovatebot.com/diffs/npm/async-mutex/0.4.1/0.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/async-mutex/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/async-mutex/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/async-mutex/0.4.1/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/async-mutex/0.4.1/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
DirtyHairy/async-mutex (async-mutex) ### [`v0.5.0`](https://togithub.com/DirtyHairy/async-mutex/blob/HEAD/CHANGELOG.md#050) [Compare Source](https://togithub.com/DirtyHairy/async-mutex/compare/v0.4.1...v0.5.0) - Support priority queueing for mutexes and semaphores. A huge "thank you" goes to [@​dmurvihill](https://togithub.com/dmurvihill) who added this feature. - Update dependencies.
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 8423fb7b90c..0886822211a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -43,7 +43,7 @@ "dependencies": { "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", - "async-mutex": "^0.4.0", + "async-mutex": "^0.5.0", "concat-stream": "^2.0.0", "extend": "^3.0.2", "google-gax": "^4.0.5", From 85c9d0d9f7dafb4f668696dd58e403d30534a4b7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 12 Mar 2024 11:58:16 +0100 Subject: [PATCH 773/820] chore(deps): update dependency gapic-tools to ^0.4.0 (#1238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [gapic-tools](https://togithub.com/googleapis/gax-nodejs) ([source](https://togithub.com/googleapis/gax-nodejs/tree/HEAD/gapic-tools)) | [`^0.3.0` -> `^0.4.0`](https://renovatebot.com/diffs/npm/gapic-tools/0.3.0/0.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/gapic-tools/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/gapic-tools/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/gapic-tools/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/gapic-tools/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/gax-nodejs (gapic-tools) ### [`v0.4.0`](https://togithub.com/googleapis/gax-nodejs/releases/tag/gapic-tools-v0.4.0): gapic-tools: v0.4.0 [Compare Source](https://togithub.com/googleapis/gax-nodejs/compare/gapic-tools-v0.3.0...gapic-tools-v0.4.0) ##### Features - allow passing --keep-case and --force-number to compileProtos ([#​1561](https://togithub.com/googleapis/gax-nodejs/issues/1561)) ([004d112](https://togithub.com/googleapis/gax-nodejs/commit/004d112445f528a6cb143676e8b397b37137adf3))
--- ### Configuration 📅 **Schedule**: Branch creation - "after 9am and before 3pm" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/nodejs-datastore). --- handwritten/nodejs-datastore/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 0886822211a..3318a43e7c6 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -62,7 +62,7 @@ "@types/sinon": "^17.0.0", "async": "^3.2.4", "c8": "^9.0.0", - "gapic-tools": "^0.3.0", + "gapic-tools": "^0.4.0", "gts": "^5.0.0", "js-yaml": "^4.0.0", "jsdoc": "^4.0.0", From bcdc3038c68b11317f211bb8ee2a2f4cf10e106a Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:22:35 -0400 Subject: [PATCH 774/820] feat: add new types ExplainOptions, ExplainMetrics, PlanSummary, ExecutionStats (#1241) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add new types ExplainOptions, ExplainMetrics, PlanSummary, ExecutionStats feat: add ExplainOptions field to RunQueryRequest feat: add ExplainMetrics field to RunQueryResponse feat: add ExplainOptions field to RunAggregationQueryRequest feat: add ExplainMetrics field to RunAggregationQueryResponse PiperOrigin-RevId: 615158168 Source-Link: https://github.com/googleapis/googleapis/commit/4d535ac0538bb2d4b406250d7ec10b25a17a54cf Source-Link: https://github.com/googleapis/googleapis-gen/commit/02e272ded538b0f97832bfad47decbc3dc65a89a Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDJlMjcyZGVkNTM4YjBmOTc4MzJiZmFkNDdkZWNiYzNkYzY1YTg5YSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../google/datastore/v1/datastore.proto | 19 + .../google/datastore/v1/query_profile.proto | 90 +- .../nodejs-datastore/protos/protos.d.ts | 436 +++++++ handwritten/nodejs-datastore/protos/protos.js | 1087 +++++++++++++++++ .../nodejs-datastore/protos/protos.json | 76 +- .../v1/datastore.run_aggregation_query.js | 5 + .../generated/v1/datastore.run_query.js | 5 + .../snippet_metadata_google.datastore.v1.json | 12 +- .../src/v1/datastore_client.ts | 6 + .../src/v1/datastore_proto_list.json | 3 +- 10 files changed, 1698 insertions(+), 41 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 533988d7776..1a3fbdd11a3 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -23,6 +23,7 @@ import "google/api/routing.proto"; import "google/datastore/v1/aggregation_result.proto"; import "google/datastore/v1/entity.proto"; import "google/datastore/v1/query.proto"; +import "google/datastore/v1/query_profile.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; @@ -232,6 +233,10 @@ message RunQueryRequest { // The GQL query to run. This query must be a non-aggregation query. GqlQuery gql_query = 7; } + + // Optional. Explain options for the query. If set, additional query + // statistics will be returned. If not, only query results will be returned. + ExplainOptions explain_options = 12 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -251,6 +256,11 @@ message RunQueryResponse { // was set in // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. bytes transaction = 5; + + // Query explain metrics. This is only present when the + // [RunQueryRequest.explain_options][google.datastore.v1.RunQueryRequest.explain_options] + // is provided, and it is sent only once with the last response in the stream. + ExplainMetrics explain_metrics = 9; } // The request for @@ -282,6 +292,10 @@ message RunAggregationQueryRequest { // The GQL query to run. This query must be an aggregation query. GqlQuery gql_query = 7; } + + // Optional. Explain options for the query. If set, additional query + // statistics will be returned. If not, only query results will be returned. + ExplainOptions explain_options = 11 [(google.api.field_behavior) = OPTIONAL]; } // The response for @@ -301,6 +315,11 @@ message RunAggregationQueryResponse { // was set in // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. bytes transaction = 5; + + // Query explain metrics. This is only present when the + // [RunAggregationQueryRequest.explain_options][google.datastore.v1.RunAggregationQueryRequest.explain_options] + // is provided, and it is sent only once with the last response in the stream. + ExplainMetrics explain_metrics = 9; } // The request for diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto index 05c1cf95ec8..01c9fc25475 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto @@ -16,6 +16,8 @@ syntax = "proto3"; package google.datastore.v1; +import "google/api/field_behavior.proto"; +import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; @@ -28,48 +30,62 @@ option ruby_package = "Google::Cloud::Datastore::V1"; // Specification of the Datastore Query Profile fields. -// The mode in which the query request must be processed. -enum QueryMode { - // The default mode. Only the query results are returned. - NORMAL = 0; +// Explain options for the query. +message ExplainOptions { + // Optional. Whether to execute this query. + // + // When false (the default), the query will be planned, returning only + // metrics from the planning stages. + // + // When true, the query will be planned and executed, returning the full + // query results along with both planning and execution stage metrics. + bool analyze = 1 [(google.api.field_behavior) = OPTIONAL]; +} - // This mode returns only the query plan, without any results or execution - // statistics information. - PLAN = 1; +// Explain metrics for the query. +message ExplainMetrics { + // Planning phase information for the query. + PlanSummary plan_summary = 1; - // This mode returns both the query plan and the execution statistics along - // with the results. - PROFILE = 2; + // Aggregated stats from the execution of the query. Only present when + // [ExplainOptions.analyze][google.datastore.v1.ExplainOptions.analyze] is set + // to true. + ExecutionStats execution_stats = 2; } -// Plan for the query. -message QueryPlan { - // Planning phase information for the query. It will include: - // - // { - // "indexes_used": [ - // {"query_scope": "Collection", "properties": "(foo ASC, __name__ ASC)"}, - // {"query_scope": "Collection", "properties": "(bar ASC, __name__ ASC)"} - // ] - // } - google.protobuf.Struct plan_info = 1; +// Planning phase information for the query. +message PlanSummary { + // The indexes selected for the query. For example: + // [ + // {"query_scope": "Collection", "properties": "(foo ASC, __name__ ASC)"}, + // {"query_scope": "Collection", "properties": "(bar ASC, __name__ ASC)"} + // ] + repeated google.protobuf.Struct indexes_used = 1; } -// Planning and execution statistics for the query. -message ResultSetStats { - // Plan for the query. - QueryPlan query_plan = 1; +// Execution statistics for the query. +message ExecutionStats { + // Total number of results returned, including documents, projections, + // aggregation results, keys. + int64 results_returned = 1; - // Aggregated statistics from the execution of the query. - // - // This will only be present when the request specifies `PROFILE` mode. - // For example, a query will return the statistics including: - // - // { - // "results_returned": "20", - // "documents_scanned": "20", - // "indexes_entries_scanned": "10050", - // "total_execution_time": "100.7 msecs" - // } - google.protobuf.Struct query_stats = 2; + // Total time to execute the query in the backend. + google.protobuf.Duration execution_duration = 3; + + // Total billable read operations. + int64 read_operations = 4; + + // Debugging statistics from the execution of the query. Note that the + // debugging stats are subject to change as Firestore evolves. It could + // include: + // { + // "indexes_entries_scanned": "1000", + // "documents_scanned": "20", + // "billing_details" : { + // "documents_billable": "20", + // "index_entries_billable": "1000", + // "min_query_cost": "0" + // } + // } + google.protobuf.Struct debug_stats = 5; } diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 63af45b93e6..fb52086a7a1 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -5802,6 +5802,9 @@ export namespace google { /** RunQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunQueryRequest explainOptions */ + explainOptions?: (google.datastore.v1.IExplainOptions|null); } /** Represents a RunQueryRequest. */ @@ -5831,6 +5834,9 @@ export namespace google { /** RunQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunQueryRequest explainOptions. */ + public explainOptions?: (google.datastore.v1.IExplainOptions|null); + /** RunQueryRequest queryType. */ public queryType?: ("query"|"gqlQuery"); @@ -5923,6 +5929,9 @@ export namespace google { /** RunQueryResponse transaction */ transaction?: (Uint8Array|string|null); + + /** RunQueryResponse explainMetrics */ + explainMetrics?: (google.datastore.v1.IExplainMetrics|null); } /** Represents a RunQueryResponse. */ @@ -5943,6 +5952,9 @@ export namespace google { /** RunQueryResponse transaction. */ public transaction: (Uint8Array|string); + /** RunQueryResponse explainMetrics. */ + public explainMetrics?: (google.datastore.v1.IExplainMetrics|null); + /** * Creates a new RunQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -6041,6 +6053,9 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); + + /** RunAggregationQueryRequest explainOptions */ + explainOptions?: (google.datastore.v1.IExplainOptions|null); } /** Represents a RunAggregationQueryRequest. */ @@ -6070,6 +6085,9 @@ export namespace google { /** RunAggregationQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunAggregationQueryRequest explainOptions. */ + public explainOptions?: (google.datastore.v1.IExplainOptions|null); + /** RunAggregationQueryRequest queryType. */ public queryType?: ("aggregationQuery"|"gqlQuery"); @@ -6162,6 +6180,9 @@ export namespace google { /** RunAggregationQueryResponse transaction */ transaction?: (Uint8Array|string|null); + + /** RunAggregationQueryResponse explainMetrics */ + explainMetrics?: (google.datastore.v1.IExplainMetrics|null); } /** Represents a RunAggregationQueryResponse. */ @@ -6182,6 +6203,9 @@ export namespace google { /** RunAggregationQueryResponse transaction. */ public transaction: (Uint8Array|string); + /** RunAggregationQueryResponse explainMetrics. */ + public explainMetrics?: (google.datastore.v1.IExplainMetrics|null); + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @param [properties] Properties to set @@ -8005,6 +8029,418 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } } + + /** Properties of an ExplainOptions. */ + interface IExplainOptions { + + /** ExplainOptions analyze */ + analyze?: (boolean|null); + } + + /** Represents an ExplainOptions. */ + class ExplainOptions implements IExplainOptions { + + /** + * Constructs a new ExplainOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IExplainOptions); + + /** ExplainOptions analyze. */ + public analyze: boolean; + + /** + * Creates a new ExplainOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns ExplainOptions instance + */ + public static create(properties?: google.datastore.v1.IExplainOptions): google.datastore.v1.ExplainOptions; + + /** + * Encodes the specified ExplainOptions message. Does not implicitly {@link google.datastore.v1.ExplainOptions.verify|verify} messages. + * @param message ExplainOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IExplainOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExplainOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ExplainOptions.verify|verify} messages. + * @param message ExplainOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IExplainOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExplainOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExplainOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ExplainOptions; + + /** + * Decodes an ExplainOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExplainOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ExplainOptions; + + /** + * Verifies an ExplainOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExplainOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExplainOptions + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ExplainOptions; + + /** + * Creates a plain object from an ExplainOptions message. Also converts values to other types if specified. + * @param message ExplainOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ExplainOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExplainOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExplainOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an ExplainMetrics. */ + interface IExplainMetrics { + + /** ExplainMetrics planSummary */ + planSummary?: (google.datastore.v1.IPlanSummary|null); + + /** ExplainMetrics executionStats */ + executionStats?: (google.datastore.v1.IExecutionStats|null); + } + + /** Represents an ExplainMetrics. */ + class ExplainMetrics implements IExplainMetrics { + + /** + * Constructs a new ExplainMetrics. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IExplainMetrics); + + /** ExplainMetrics planSummary. */ + public planSummary?: (google.datastore.v1.IPlanSummary|null); + + /** ExplainMetrics executionStats. */ + public executionStats?: (google.datastore.v1.IExecutionStats|null); + + /** + * Creates a new ExplainMetrics instance using the specified properties. + * @param [properties] Properties to set + * @returns ExplainMetrics instance + */ + public static create(properties?: google.datastore.v1.IExplainMetrics): google.datastore.v1.ExplainMetrics; + + /** + * Encodes the specified ExplainMetrics message. Does not implicitly {@link google.datastore.v1.ExplainMetrics.verify|verify} messages. + * @param message ExplainMetrics message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IExplainMetrics, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExplainMetrics message, length delimited. Does not implicitly {@link google.datastore.v1.ExplainMetrics.verify|verify} messages. + * @param message ExplainMetrics message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IExplainMetrics, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExplainMetrics message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExplainMetrics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ExplainMetrics; + + /** + * Decodes an ExplainMetrics message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExplainMetrics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ExplainMetrics; + + /** + * Verifies an ExplainMetrics message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExplainMetrics message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExplainMetrics + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ExplainMetrics; + + /** + * Creates a plain object from an ExplainMetrics message. Also converts values to other types if specified. + * @param message ExplainMetrics + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ExplainMetrics, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExplainMetrics to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExplainMetrics + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a PlanSummary. */ + interface IPlanSummary { + + /** PlanSummary indexesUsed */ + indexesUsed?: (google.protobuf.IStruct[]|null); + } + + /** Represents a PlanSummary. */ + class PlanSummary implements IPlanSummary { + + /** + * Constructs a new PlanSummary. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPlanSummary); + + /** PlanSummary indexesUsed. */ + public indexesUsed: google.protobuf.IStruct[]; + + /** + * Creates a new PlanSummary instance using the specified properties. + * @param [properties] Properties to set + * @returns PlanSummary instance + */ + public static create(properties?: google.datastore.v1.IPlanSummary): google.datastore.v1.PlanSummary; + + /** + * Encodes the specified PlanSummary message. Does not implicitly {@link google.datastore.v1.PlanSummary.verify|verify} messages. + * @param message PlanSummary message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPlanSummary, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PlanSummary message, length delimited. Does not implicitly {@link google.datastore.v1.PlanSummary.verify|verify} messages. + * @param message PlanSummary message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPlanSummary, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PlanSummary message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PlanSummary + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PlanSummary; + + /** + * Decodes a PlanSummary message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PlanSummary + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PlanSummary; + + /** + * Verifies a PlanSummary message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PlanSummary message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PlanSummary + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PlanSummary; + + /** + * Creates a plain object from a PlanSummary message. Also converts values to other types if specified. + * @param message PlanSummary + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PlanSummary, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PlanSummary to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PlanSummary + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an ExecutionStats. */ + interface IExecutionStats { + + /** ExecutionStats resultsReturned */ + resultsReturned?: (number|Long|string|null); + + /** ExecutionStats executionDuration */ + executionDuration?: (google.protobuf.IDuration|null); + + /** ExecutionStats readOperations */ + readOperations?: (number|Long|string|null); + + /** ExecutionStats debugStats */ + debugStats?: (google.protobuf.IStruct|null); + } + + /** Represents an ExecutionStats. */ + class ExecutionStats implements IExecutionStats { + + /** + * Constructs a new ExecutionStats. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IExecutionStats); + + /** ExecutionStats resultsReturned. */ + public resultsReturned: (number|Long|string); + + /** ExecutionStats executionDuration. */ + public executionDuration?: (google.protobuf.IDuration|null); + + /** ExecutionStats readOperations. */ + public readOperations: (number|Long|string); + + /** ExecutionStats debugStats. */ + public debugStats?: (google.protobuf.IStruct|null); + + /** + * Creates a new ExecutionStats instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecutionStats instance + */ + public static create(properties?: google.datastore.v1.IExecutionStats): google.datastore.v1.ExecutionStats; + + /** + * Encodes the specified ExecutionStats message. Does not implicitly {@link google.datastore.v1.ExecutionStats.verify|verify} messages. + * @param message ExecutionStats message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IExecutionStats, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExecutionStats message, length delimited. Does not implicitly {@link google.datastore.v1.ExecutionStats.verify|verify} messages. + * @param message ExecutionStats message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IExecutionStats, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecutionStats message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecutionStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.ExecutionStats; + + /** + * Decodes an ExecutionStats message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExecutionStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.ExecutionStats; + + /** + * Verifies an ExecutionStats message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExecutionStats message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExecutionStats + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.ExecutionStats; + + /** + * Creates a plain object from an ExecutionStats message. Also converts values to other types if specified. + * @param message ExecutionStats + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.ExecutionStats, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExecutionStats to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExecutionStats + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } } diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 52b16ae10cb..e9dcfef28e4 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -14732,6 +14732,7 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery + * @property {google.datastore.v1.IExplainOptions|null} [explainOptions] RunQueryRequest explainOptions */ /** @@ -14797,6 +14798,14 @@ */ RunQueryRequest.prototype.gqlQuery = null; + /** + * RunQueryRequest explainOptions. + * @member {google.datastore.v1.IExplainOptions|null|undefined} explainOptions + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.explainOptions = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -14847,6 +14856,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.explainOptions != null && Object.hasOwnProperty.call(message, "explainOptions")) + $root.google.datastore.v1.ExplainOptions.encode(message.explainOptions, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); return writer; }; @@ -14905,6 +14916,10 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } + case 12: { + message.explainOptions = $root.google.datastore.v1.ExplainOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -14975,6 +14990,11 @@ return "gqlQuery." + error; } } + if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) { + var error = $root.google.datastore.v1.ExplainOptions.verify(message.explainOptions); + if (error) + return "explainOptions." + error; + } return null; }; @@ -15014,6 +15034,11 @@ throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } + if (object.explainOptions != null) { + if (typeof object.explainOptions !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.explainOptions: object expected"); + message.explainOptions = $root.google.datastore.v1.ExplainOptions.fromObject(object.explainOptions); + } return message; }; @@ -15035,6 +15060,7 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; + object.explainOptions = null; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15054,6 +15080,8 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) + object.explainOptions = $root.google.datastore.v1.ExplainOptions.toObject(message.explainOptions, options); return object; }; @@ -15095,6 +15123,7 @@ * @property {google.datastore.v1.IQueryResultBatch|null} [batch] RunQueryResponse batch * @property {google.datastore.v1.IQuery|null} [query] RunQueryResponse query * @property {Uint8Array|null} [transaction] RunQueryResponse transaction + * @property {google.datastore.v1.IExplainMetrics|null} [explainMetrics] RunQueryResponse explainMetrics */ /** @@ -15136,6 +15165,14 @@ */ RunQueryResponse.prototype.transaction = $util.newBuffer([]); + /** + * RunQueryResponse explainMetrics. + * @member {google.datastore.v1.IExplainMetrics|null|undefined} explainMetrics + * @memberof google.datastore.v1.RunQueryResponse + * @instance + */ + RunQueryResponse.prototype.explainMetrics = null; + /** * Creates a new RunQueryResponse instance using the specified properties. * @function create @@ -15166,6 +15203,8 @@ $root.google.datastore.v1.Query.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); + if (message.explainMetrics != null && Object.hasOwnProperty.call(message, "explainMetrics")) + $root.google.datastore.v1.ExplainMetrics.encode(message.explainMetrics, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); return writer; }; @@ -15212,6 +15251,10 @@ message.transaction = reader.bytes(); break; } + case 9: { + message.explainMetrics = $root.google.datastore.v1.ExplainMetrics.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15260,6 +15303,11 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; + if (message.explainMetrics != null && message.hasOwnProperty("explainMetrics")) { + var error = $root.google.datastore.v1.ExplainMetrics.verify(message.explainMetrics); + if (error) + return "explainMetrics." + error; + } return null; }; @@ -15290,6 +15338,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.explainMetrics != null) { + if (typeof object.explainMetrics !== "object") + throw TypeError(".google.datastore.v1.RunQueryResponse.explainMetrics: object expected"); + message.explainMetrics = $root.google.datastore.v1.ExplainMetrics.fromObject(object.explainMetrics); + } return message; }; @@ -15316,6 +15369,7 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } + object.explainMetrics = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.QueryResultBatch.toObject(message.batch, options); @@ -15323,6 +15377,8 @@ object.query = $root.google.datastore.v1.Query.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.explainMetrics != null && message.hasOwnProperty("explainMetrics")) + object.explainMetrics = $root.google.datastore.v1.ExplainMetrics.toObject(message.explainMetrics, options); return object; }; @@ -15367,6 +15423,7 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunAggregationQueryRequest readOptions * @property {google.datastore.v1.IAggregationQuery|null} [aggregationQuery] RunAggregationQueryRequest aggregationQuery * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunAggregationQueryRequest gqlQuery + * @property {google.datastore.v1.IExplainOptions|null} [explainOptions] RunAggregationQueryRequest explainOptions */ /** @@ -15432,6 +15489,14 @@ */ RunAggregationQueryRequest.prototype.gqlQuery = null; + /** + * RunAggregationQueryRequest explainOptions. + * @member {google.datastore.v1.IExplainOptions|null|undefined} explainOptions + * @memberof google.datastore.v1.RunAggregationQueryRequest + * @instance + */ + RunAggregationQueryRequest.prototype.explainOptions = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -15482,6 +15547,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.explainOptions != null && Object.hasOwnProperty.call(message, "explainOptions")) + $root.google.datastore.v1.ExplainOptions.encode(message.explainOptions, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); return writer; }; @@ -15540,6 +15607,10 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } + case 11: { + message.explainOptions = $root.google.datastore.v1.ExplainOptions.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15610,6 +15681,11 @@ return "gqlQuery." + error; } } + if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) { + var error = $root.google.datastore.v1.ExplainOptions.verify(message.explainOptions); + if (error) + return "explainOptions." + error; + } return null; }; @@ -15649,6 +15725,11 @@ throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } + if (object.explainOptions != null) { + if (typeof object.explainOptions !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryRequest.explainOptions: object expected"); + message.explainOptions = $root.google.datastore.v1.ExplainOptions.fromObject(object.explainOptions); + } return message; }; @@ -15670,6 +15751,7 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; + object.explainOptions = null; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) object.readOptions = $root.google.datastore.v1.ReadOptions.toObject(message.readOptions, options); @@ -15689,6 +15771,8 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) + object.explainOptions = $root.google.datastore.v1.ExplainOptions.toObject(message.explainOptions, options); return object; }; @@ -15730,6 +15814,7 @@ * @property {google.datastore.v1.IAggregationResultBatch|null} [batch] RunAggregationQueryResponse batch * @property {google.datastore.v1.IAggregationQuery|null} [query] RunAggregationQueryResponse query * @property {Uint8Array|null} [transaction] RunAggregationQueryResponse transaction + * @property {google.datastore.v1.IExplainMetrics|null} [explainMetrics] RunAggregationQueryResponse explainMetrics */ /** @@ -15771,6 +15856,14 @@ */ RunAggregationQueryResponse.prototype.transaction = $util.newBuffer([]); + /** + * RunAggregationQueryResponse explainMetrics. + * @member {google.datastore.v1.IExplainMetrics|null|undefined} explainMetrics + * @memberof google.datastore.v1.RunAggregationQueryResponse + * @instance + */ + RunAggregationQueryResponse.prototype.explainMetrics = null; + /** * Creates a new RunAggregationQueryResponse instance using the specified properties. * @function create @@ -15801,6 +15894,8 @@ $root.google.datastore.v1.AggregationQuery.encode(message.query, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.transaction != null && Object.hasOwnProperty.call(message, "transaction")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.transaction); + if (message.explainMetrics != null && Object.hasOwnProperty.call(message, "explainMetrics")) + $root.google.datastore.v1.ExplainMetrics.encode(message.explainMetrics, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); return writer; }; @@ -15847,6 +15942,10 @@ message.transaction = reader.bytes(); break; } + case 9: { + message.explainMetrics = $root.google.datastore.v1.ExplainMetrics.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -15895,6 +15994,11 @@ if (message.transaction != null && message.hasOwnProperty("transaction")) if (!(message.transaction && typeof message.transaction.length === "number" || $util.isString(message.transaction))) return "transaction: buffer expected"; + if (message.explainMetrics != null && message.hasOwnProperty("explainMetrics")) { + var error = $root.google.datastore.v1.ExplainMetrics.verify(message.explainMetrics); + if (error) + return "explainMetrics." + error; + } return null; }; @@ -15925,6 +16029,11 @@ $util.base64.decode(object.transaction, message.transaction = $util.newBuffer($util.base64.length(object.transaction)), 0); else if (object.transaction.length >= 0) message.transaction = object.transaction; + if (object.explainMetrics != null) { + if (typeof object.explainMetrics !== "object") + throw TypeError(".google.datastore.v1.RunAggregationQueryResponse.explainMetrics: object expected"); + message.explainMetrics = $root.google.datastore.v1.ExplainMetrics.fromObject(object.explainMetrics); + } return message; }; @@ -15951,6 +16060,7 @@ if (options.bytes !== Array) object.transaction = $util.newBuffer(object.transaction); } + object.explainMetrics = null; } if (message.batch != null && message.hasOwnProperty("batch")) object.batch = $root.google.datastore.v1.AggregationResultBatch.toObject(message.batch, options); @@ -15958,6 +16068,8 @@ object.query = $root.google.datastore.v1.AggregationQuery.toObject(message.query, options); if (message.transaction != null && message.hasOwnProperty("transaction")) object.transaction = options.bytes === String ? $util.base64.encode(message.transaction, 0, message.transaction.length) : options.bytes === Array ? Array.prototype.slice.call(message.transaction) : message.transaction; + if (message.explainMetrics != null && message.hasOwnProperty("explainMetrics")) + object.explainMetrics = $root.google.datastore.v1.ExplainMetrics.toObject(message.explainMetrics, options); return object; }; @@ -20311,6 +20423,981 @@ return TransactionOptions; })(); + v1.ExplainOptions = (function() { + + /** + * Properties of an ExplainOptions. + * @memberof google.datastore.v1 + * @interface IExplainOptions + * @property {boolean|null} [analyze] ExplainOptions analyze + */ + + /** + * Constructs a new ExplainOptions. + * @memberof google.datastore.v1 + * @classdesc Represents an ExplainOptions. + * @implements IExplainOptions + * @constructor + * @param {google.datastore.v1.IExplainOptions=} [properties] Properties to set + */ + function ExplainOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExplainOptions analyze. + * @member {boolean} analyze + * @memberof google.datastore.v1.ExplainOptions + * @instance + */ + ExplainOptions.prototype.analyze = false; + + /** + * Creates a new ExplainOptions instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {google.datastore.v1.IExplainOptions=} [properties] Properties to set + * @returns {google.datastore.v1.ExplainOptions} ExplainOptions instance + */ + ExplainOptions.create = function create(properties) { + return new ExplainOptions(properties); + }; + + /** + * Encodes the specified ExplainOptions message. Does not implicitly {@link google.datastore.v1.ExplainOptions.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {google.datastore.v1.IExplainOptions} message ExplainOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExplainOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.analyze != null && Object.hasOwnProperty.call(message, "analyze")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.analyze); + return writer; + }; + + /** + * Encodes the specified ExplainOptions message, length delimited. Does not implicitly {@link google.datastore.v1.ExplainOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {google.datastore.v1.IExplainOptions} message ExplainOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExplainOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExplainOptions message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ExplainOptions} ExplainOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExplainOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ExplainOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.analyze = reader.bool(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExplainOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ExplainOptions} ExplainOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExplainOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExplainOptions message. + * @function verify + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExplainOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.analyze != null && message.hasOwnProperty("analyze")) + if (typeof message.analyze !== "boolean") + return "analyze: boolean expected"; + return null; + }; + + /** + * Creates an ExplainOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ExplainOptions} ExplainOptions + */ + ExplainOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ExplainOptions) + return object; + var message = new $root.google.datastore.v1.ExplainOptions(); + if (object.analyze != null) + message.analyze = Boolean(object.analyze); + return message; + }; + + /** + * Creates a plain object from an ExplainOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {google.datastore.v1.ExplainOptions} message ExplainOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExplainOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.analyze = false; + if (message.analyze != null && message.hasOwnProperty("analyze")) + object.analyze = message.analyze; + return object; + }; + + /** + * Converts this ExplainOptions to JSON. + * @function toJSON + * @memberof google.datastore.v1.ExplainOptions + * @instance + * @returns {Object.} JSON object + */ + ExplainOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExplainOptions + * @function getTypeUrl + * @memberof google.datastore.v1.ExplainOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExplainOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ExplainOptions"; + }; + + return ExplainOptions; + })(); + + v1.ExplainMetrics = (function() { + + /** + * Properties of an ExplainMetrics. + * @memberof google.datastore.v1 + * @interface IExplainMetrics + * @property {google.datastore.v1.IPlanSummary|null} [planSummary] ExplainMetrics planSummary + * @property {google.datastore.v1.IExecutionStats|null} [executionStats] ExplainMetrics executionStats + */ + + /** + * Constructs a new ExplainMetrics. + * @memberof google.datastore.v1 + * @classdesc Represents an ExplainMetrics. + * @implements IExplainMetrics + * @constructor + * @param {google.datastore.v1.IExplainMetrics=} [properties] Properties to set + */ + function ExplainMetrics(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExplainMetrics planSummary. + * @member {google.datastore.v1.IPlanSummary|null|undefined} planSummary + * @memberof google.datastore.v1.ExplainMetrics + * @instance + */ + ExplainMetrics.prototype.planSummary = null; + + /** + * ExplainMetrics executionStats. + * @member {google.datastore.v1.IExecutionStats|null|undefined} executionStats + * @memberof google.datastore.v1.ExplainMetrics + * @instance + */ + ExplainMetrics.prototype.executionStats = null; + + /** + * Creates a new ExplainMetrics instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {google.datastore.v1.IExplainMetrics=} [properties] Properties to set + * @returns {google.datastore.v1.ExplainMetrics} ExplainMetrics instance + */ + ExplainMetrics.create = function create(properties) { + return new ExplainMetrics(properties); + }; + + /** + * Encodes the specified ExplainMetrics message. Does not implicitly {@link google.datastore.v1.ExplainMetrics.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {google.datastore.v1.IExplainMetrics} message ExplainMetrics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExplainMetrics.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.planSummary != null && Object.hasOwnProperty.call(message, "planSummary")) + $root.google.datastore.v1.PlanSummary.encode(message.planSummary, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.executionStats != null && Object.hasOwnProperty.call(message, "executionStats")) + $root.google.datastore.v1.ExecutionStats.encode(message.executionStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExplainMetrics message, length delimited. Does not implicitly {@link google.datastore.v1.ExplainMetrics.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {google.datastore.v1.IExplainMetrics} message ExplainMetrics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExplainMetrics.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExplainMetrics message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ExplainMetrics} ExplainMetrics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExplainMetrics.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ExplainMetrics(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.planSummary = $root.google.datastore.v1.PlanSummary.decode(reader, reader.uint32()); + break; + } + case 2: { + message.executionStats = $root.google.datastore.v1.ExecutionStats.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExplainMetrics message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ExplainMetrics} ExplainMetrics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExplainMetrics.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExplainMetrics message. + * @function verify + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExplainMetrics.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.planSummary != null && message.hasOwnProperty("planSummary")) { + var error = $root.google.datastore.v1.PlanSummary.verify(message.planSummary); + if (error) + return "planSummary." + error; + } + if (message.executionStats != null && message.hasOwnProperty("executionStats")) { + var error = $root.google.datastore.v1.ExecutionStats.verify(message.executionStats); + if (error) + return "executionStats." + error; + } + return null; + }; + + /** + * Creates an ExplainMetrics message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ExplainMetrics} ExplainMetrics + */ + ExplainMetrics.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ExplainMetrics) + return object; + var message = new $root.google.datastore.v1.ExplainMetrics(); + if (object.planSummary != null) { + if (typeof object.planSummary !== "object") + throw TypeError(".google.datastore.v1.ExplainMetrics.planSummary: object expected"); + message.planSummary = $root.google.datastore.v1.PlanSummary.fromObject(object.planSummary); + } + if (object.executionStats != null) { + if (typeof object.executionStats !== "object") + throw TypeError(".google.datastore.v1.ExplainMetrics.executionStats: object expected"); + message.executionStats = $root.google.datastore.v1.ExecutionStats.fromObject(object.executionStats); + } + return message; + }; + + /** + * Creates a plain object from an ExplainMetrics message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {google.datastore.v1.ExplainMetrics} message ExplainMetrics + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExplainMetrics.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.planSummary = null; + object.executionStats = null; + } + if (message.planSummary != null && message.hasOwnProperty("planSummary")) + object.planSummary = $root.google.datastore.v1.PlanSummary.toObject(message.planSummary, options); + if (message.executionStats != null && message.hasOwnProperty("executionStats")) + object.executionStats = $root.google.datastore.v1.ExecutionStats.toObject(message.executionStats, options); + return object; + }; + + /** + * Converts this ExplainMetrics to JSON. + * @function toJSON + * @memberof google.datastore.v1.ExplainMetrics + * @instance + * @returns {Object.} JSON object + */ + ExplainMetrics.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExplainMetrics + * @function getTypeUrl + * @memberof google.datastore.v1.ExplainMetrics + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExplainMetrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ExplainMetrics"; + }; + + return ExplainMetrics; + })(); + + v1.PlanSummary = (function() { + + /** + * Properties of a PlanSummary. + * @memberof google.datastore.v1 + * @interface IPlanSummary + * @property {Array.|null} [indexesUsed] PlanSummary indexesUsed + */ + + /** + * Constructs a new PlanSummary. + * @memberof google.datastore.v1 + * @classdesc Represents a PlanSummary. + * @implements IPlanSummary + * @constructor + * @param {google.datastore.v1.IPlanSummary=} [properties] Properties to set + */ + function PlanSummary(properties) { + this.indexesUsed = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlanSummary indexesUsed. + * @member {Array.} indexesUsed + * @memberof google.datastore.v1.PlanSummary + * @instance + */ + PlanSummary.prototype.indexesUsed = $util.emptyArray; + + /** + * Creates a new PlanSummary instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {google.datastore.v1.IPlanSummary=} [properties] Properties to set + * @returns {google.datastore.v1.PlanSummary} PlanSummary instance + */ + PlanSummary.create = function create(properties) { + return new PlanSummary(properties); + }; + + /** + * Encodes the specified PlanSummary message. Does not implicitly {@link google.datastore.v1.PlanSummary.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {google.datastore.v1.IPlanSummary} message PlanSummary message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlanSummary.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.indexesUsed != null && message.indexesUsed.length) + for (var i = 0; i < message.indexesUsed.length; ++i) + $root.google.protobuf.Struct.encode(message.indexesUsed[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlanSummary message, length delimited. Does not implicitly {@link google.datastore.v1.PlanSummary.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {google.datastore.v1.IPlanSummary} message PlanSummary message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlanSummary.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlanSummary message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PlanSummary} PlanSummary + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlanSummary.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PlanSummary(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (!(message.indexesUsed && message.indexesUsed.length)) + message.indexesUsed = []; + message.indexesUsed.push($root.google.protobuf.Struct.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlanSummary message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PlanSummary} PlanSummary + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlanSummary.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlanSummary message. + * @function verify + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlanSummary.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.indexesUsed != null && message.hasOwnProperty("indexesUsed")) { + if (!Array.isArray(message.indexesUsed)) + return "indexesUsed: array expected"; + for (var i = 0; i < message.indexesUsed.length; ++i) { + var error = $root.google.protobuf.Struct.verify(message.indexesUsed[i]); + if (error) + return "indexesUsed." + error; + } + } + return null; + }; + + /** + * Creates a PlanSummary message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PlanSummary} PlanSummary + */ + PlanSummary.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PlanSummary) + return object; + var message = new $root.google.datastore.v1.PlanSummary(); + if (object.indexesUsed) { + if (!Array.isArray(object.indexesUsed)) + throw TypeError(".google.datastore.v1.PlanSummary.indexesUsed: array expected"); + message.indexesUsed = []; + for (var i = 0; i < object.indexesUsed.length; ++i) { + if (typeof object.indexesUsed[i] !== "object") + throw TypeError(".google.datastore.v1.PlanSummary.indexesUsed: object expected"); + message.indexesUsed[i] = $root.google.protobuf.Struct.fromObject(object.indexesUsed[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a PlanSummary message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {google.datastore.v1.PlanSummary} message PlanSummary + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlanSummary.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.indexesUsed = []; + if (message.indexesUsed && message.indexesUsed.length) { + object.indexesUsed = []; + for (var j = 0; j < message.indexesUsed.length; ++j) + object.indexesUsed[j] = $root.google.protobuf.Struct.toObject(message.indexesUsed[j], options); + } + return object; + }; + + /** + * Converts this PlanSummary to JSON. + * @function toJSON + * @memberof google.datastore.v1.PlanSummary + * @instance + * @returns {Object.} JSON object + */ + PlanSummary.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PlanSummary + * @function getTypeUrl + * @memberof google.datastore.v1.PlanSummary + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PlanSummary.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PlanSummary"; + }; + + return PlanSummary; + })(); + + v1.ExecutionStats = (function() { + + /** + * Properties of an ExecutionStats. + * @memberof google.datastore.v1 + * @interface IExecutionStats + * @property {number|Long|null} [resultsReturned] ExecutionStats resultsReturned + * @property {google.protobuf.IDuration|null} [executionDuration] ExecutionStats executionDuration + * @property {number|Long|null} [readOperations] ExecutionStats readOperations + * @property {google.protobuf.IStruct|null} [debugStats] ExecutionStats debugStats + */ + + /** + * Constructs a new ExecutionStats. + * @memberof google.datastore.v1 + * @classdesc Represents an ExecutionStats. + * @implements IExecutionStats + * @constructor + * @param {google.datastore.v1.IExecutionStats=} [properties] Properties to set + */ + function ExecutionStats(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExecutionStats resultsReturned. + * @member {number|Long} resultsReturned + * @memberof google.datastore.v1.ExecutionStats + * @instance + */ + ExecutionStats.prototype.resultsReturned = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * ExecutionStats executionDuration. + * @member {google.protobuf.IDuration|null|undefined} executionDuration + * @memberof google.datastore.v1.ExecutionStats + * @instance + */ + ExecutionStats.prototype.executionDuration = null; + + /** + * ExecutionStats readOperations. + * @member {number|Long} readOperations + * @memberof google.datastore.v1.ExecutionStats + * @instance + */ + ExecutionStats.prototype.readOperations = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * ExecutionStats debugStats. + * @member {google.protobuf.IStruct|null|undefined} debugStats + * @memberof google.datastore.v1.ExecutionStats + * @instance + */ + ExecutionStats.prototype.debugStats = null; + + /** + * Creates a new ExecutionStats instance using the specified properties. + * @function create + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {google.datastore.v1.IExecutionStats=} [properties] Properties to set + * @returns {google.datastore.v1.ExecutionStats} ExecutionStats instance + */ + ExecutionStats.create = function create(properties) { + return new ExecutionStats(properties); + }; + + /** + * Encodes the specified ExecutionStats message. Does not implicitly {@link google.datastore.v1.ExecutionStats.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {google.datastore.v1.IExecutionStats} message ExecutionStats message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecutionStats.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.resultsReturned != null && Object.hasOwnProperty.call(message, "resultsReturned")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.resultsReturned); + if (message.executionDuration != null && Object.hasOwnProperty.call(message, "executionDuration")) + $root.google.protobuf.Duration.encode(message.executionDuration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.readOperations != null && Object.hasOwnProperty.call(message, "readOperations")) + writer.uint32(/* id 4, wireType 0 =*/32).int64(message.readOperations); + if (message.debugStats != null && Object.hasOwnProperty.call(message, "debugStats")) + $root.google.protobuf.Struct.encode(message.debugStats, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExecutionStats message, length delimited. Does not implicitly {@link google.datastore.v1.ExecutionStats.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {google.datastore.v1.IExecutionStats} message ExecutionStats message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecutionStats.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExecutionStats message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.ExecutionStats} ExecutionStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecutionStats.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.ExecutionStats(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.resultsReturned = reader.int64(); + break; + } + case 3: { + message.executionDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 4: { + message.readOperations = reader.int64(); + break; + } + case 5: { + message.debugStats = $root.google.protobuf.Struct.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExecutionStats message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.ExecutionStats} ExecutionStats + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecutionStats.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExecutionStats message. + * @function verify + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExecutionStats.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.resultsReturned != null && message.hasOwnProperty("resultsReturned")) + if (!$util.isInteger(message.resultsReturned) && !(message.resultsReturned && $util.isInteger(message.resultsReturned.low) && $util.isInteger(message.resultsReturned.high))) + return "resultsReturned: integer|Long expected"; + if (message.executionDuration != null && message.hasOwnProperty("executionDuration")) { + var error = $root.google.protobuf.Duration.verify(message.executionDuration); + if (error) + return "executionDuration." + error; + } + if (message.readOperations != null && message.hasOwnProperty("readOperations")) + if (!$util.isInteger(message.readOperations) && !(message.readOperations && $util.isInteger(message.readOperations.low) && $util.isInteger(message.readOperations.high))) + return "readOperations: integer|Long expected"; + if (message.debugStats != null && message.hasOwnProperty("debugStats")) { + var error = $root.google.protobuf.Struct.verify(message.debugStats); + if (error) + return "debugStats." + error; + } + return null; + }; + + /** + * Creates an ExecutionStats message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.ExecutionStats} ExecutionStats + */ + ExecutionStats.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.ExecutionStats) + return object; + var message = new $root.google.datastore.v1.ExecutionStats(); + if (object.resultsReturned != null) + if ($util.Long) + (message.resultsReturned = $util.Long.fromValue(object.resultsReturned)).unsigned = false; + else if (typeof object.resultsReturned === "string") + message.resultsReturned = parseInt(object.resultsReturned, 10); + else if (typeof object.resultsReturned === "number") + message.resultsReturned = object.resultsReturned; + else if (typeof object.resultsReturned === "object") + message.resultsReturned = new $util.LongBits(object.resultsReturned.low >>> 0, object.resultsReturned.high >>> 0).toNumber(); + if (object.executionDuration != null) { + if (typeof object.executionDuration !== "object") + throw TypeError(".google.datastore.v1.ExecutionStats.executionDuration: object expected"); + message.executionDuration = $root.google.protobuf.Duration.fromObject(object.executionDuration); + } + if (object.readOperations != null) + if ($util.Long) + (message.readOperations = $util.Long.fromValue(object.readOperations)).unsigned = false; + else if (typeof object.readOperations === "string") + message.readOperations = parseInt(object.readOperations, 10); + else if (typeof object.readOperations === "number") + message.readOperations = object.readOperations; + else if (typeof object.readOperations === "object") + message.readOperations = new $util.LongBits(object.readOperations.low >>> 0, object.readOperations.high >>> 0).toNumber(); + if (object.debugStats != null) { + if (typeof object.debugStats !== "object") + throw TypeError(".google.datastore.v1.ExecutionStats.debugStats: object expected"); + message.debugStats = $root.google.protobuf.Struct.fromObject(object.debugStats); + } + return message; + }; + + /** + * Creates a plain object from an ExecutionStats message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {google.datastore.v1.ExecutionStats} message ExecutionStats + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExecutionStats.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.resultsReturned = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.resultsReturned = options.longs === String ? "0" : 0; + object.executionDuration = null; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.readOperations = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.readOperations = options.longs === String ? "0" : 0; + object.debugStats = null; + } + if (message.resultsReturned != null && message.hasOwnProperty("resultsReturned")) + if (typeof message.resultsReturned === "number") + object.resultsReturned = options.longs === String ? String(message.resultsReturned) : message.resultsReturned; + else + object.resultsReturned = options.longs === String ? $util.Long.prototype.toString.call(message.resultsReturned) : options.longs === Number ? new $util.LongBits(message.resultsReturned.low >>> 0, message.resultsReturned.high >>> 0).toNumber() : message.resultsReturned; + if (message.executionDuration != null && message.hasOwnProperty("executionDuration")) + object.executionDuration = $root.google.protobuf.Duration.toObject(message.executionDuration, options); + if (message.readOperations != null && message.hasOwnProperty("readOperations")) + if (typeof message.readOperations === "number") + object.readOperations = options.longs === String ? String(message.readOperations) : message.readOperations; + else + object.readOperations = options.longs === String ? $util.Long.prototype.toString.call(message.readOperations) : options.longs === Number ? new $util.LongBits(message.readOperations.low >>> 0, message.readOperations.high >>> 0).toNumber() : message.readOperations; + if (message.debugStats != null && message.hasOwnProperty("debugStats")) + object.debugStats = $root.google.protobuf.Struct.toObject(message.debugStats, options); + return object; + }; + + /** + * Converts this ExecutionStats to JSON. + * @function toJSON + * @memberof google.datastore.v1.ExecutionStats + * @instance + * @returns {Object.} JSON object + */ + ExecutionStats.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExecutionStats + * @function getTypeUrl + * @memberof google.datastore.v1.ExecutionStats + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExecutionStats.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.ExecutionStats"; + }; + + return ExecutionStats; + })(); + return v1; })(); diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 2fdb4bfdab2..4414513561a 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -613,7 +613,7 @@ "csharp_namespace": "Google.Cloud.Datastore.V1", "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", "java_multiple_files": true, - "java_outer_classname": "DatastoreProto", + "java_outer_classname": "QueryProfileProto", "java_package": "com.google.datastore.v1", "php_namespace": "Google\\Cloud\\Datastore\\V1", "ruby_package": "Google::Cloud::Datastore::V1" @@ -1525,6 +1525,13 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 + }, + "explainOptions": { + "type": "ExplainOptions", + "id": 12, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -1541,6 +1548,10 @@ "transaction": { "type": "bytes", "id": 5 + }, + "explainMetrics": { + "type": "ExplainMetrics", + "id": 9 } } }, @@ -1580,6 +1591,13 @@ "gqlQuery": { "type": "GqlQuery", "id": 7 + }, + "explainOptions": { + "type": "ExplainOptions", + "id": 11, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -1596,6 +1614,10 @@ "transaction": { "type": "bytes", "id": 5 + }, + "explainMetrics": { + "type": "ExplainMetrics", + "id": 9 } } }, @@ -1919,6 +1941,58 @@ } } } + }, + "ExplainOptions": { + "fields": { + "analyze": { + "type": "bool", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ExplainMetrics": { + "fields": { + "planSummary": { + "type": "PlanSummary", + "id": 1 + }, + "executionStats": { + "type": "ExecutionStats", + "id": 2 + } + } + }, + "PlanSummary": { + "fields": { + "indexesUsed": { + "rule": "repeated", + "type": "google.protobuf.Struct", + "id": 1 + } + } + }, + "ExecutionStats": { + "fields": { + "resultsReturned": { + "type": "int64", + "id": 1 + }, + "executionDuration": { + "type": "google.protobuf.Duration", + "id": 3 + }, + "readOperations": { + "type": "int64", + "id": 4 + }, + "debugStats": { + "type": "google.protobuf.Struct", + "id": 5 + } + } } } } diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js index c7e9e9e4e7e..fcc244c1845 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js @@ -57,6 +57,11 @@ function main(projectId) { * The GQL query to run. This query must be an aggregation query. */ // const gqlQuery = {} + /** + * Optional. Explain options for the query. If set, additional query + * statistics will be returned. If not, only query results will be returned. + */ + // const explainOptions = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js index cb9cffeeed4..2a5f9c182f8 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -57,6 +57,11 @@ function main(projectId) { * The GQL query to run. This query must be a non-aggregation query. */ // const gqlQuery = {} + /** + * Optional. Explain options for the query. If set, additional query + * statistics will be returned. If not, only query results will be returned. + */ + // const explainOptions = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json index 27ec516fcc5..36dda688d9a 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json @@ -74,7 +74,7 @@ "segments": [ { "start": 25, - "end": 78, + "end": 83, "type": "FULL" } ], @@ -106,6 +106,10 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" + }, + { + "name": "explain_options", + "type": ".google.datastore.v1.ExplainOptions" } ], "resultType": ".google.datastore.v1.RunQueryResponse", @@ -134,7 +138,7 @@ "segments": [ { "start": 25, - "end": 78, + "end": 83, "type": "FULL" } ], @@ -166,6 +170,10 @@ { "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" + }, + { + "name": "explain_options", + "type": ".google.datastore.v1.ExplainOptions" } ], "resultType": ".google.datastore.v1.RunAggregationQueryResponse", diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index d482632ee60..84e1f092b56 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -536,6 +536,9 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be a non-aggregation query. + * @param {google.datastore.v1.ExplainOptions} [request.explainOptions] + * Optional. Explain options for the query. If set, additional query + * statistics will be returned. If not, only query results will be returned. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -653,6 +656,9 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be an aggregation query. + * @param {google.datastore.v1.ExplainOptions} [request.explainOptions] + * Optional. Explain options for the query. If set, additional query + * statistics will be returned. If not, only query results will be returned. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. diff --git a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json index 87f7c47ccd1..9bbbda2f942 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json +++ b/handwritten/nodejs-datastore/src/v1/datastore_proto_list.json @@ -2,5 +2,6 @@ "../../protos/google/datastore/v1/aggregation_result.proto", "../../protos/google/datastore/v1/datastore.proto", "../../protos/google/datastore/v1/entity.proto", - "../../protos/google/datastore/v1/query.proto" + "../../protos/google/datastore/v1/query.proto", + "../../protos/google/datastore/v1/query_profile.proto" ] From 39360ec3216357aba0633fb162acf01490349020 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:37:44 -0400 Subject: [PATCH 775/820] chore(main): release 8.6.0 (#1237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(main): release 8.6.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/CHANGELOG.md | 13 +++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- handwritten/nodejs-datastore/src/entity.ts | 9 ++++----- handwritten/nodejs-datastore/src/transaction.ts | 4 ++-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 561e183a142..b3d50ac24e6 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,19 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.6.0](https://github.com/googleapis/nodejs-datastore/compare/v8.5.0...v8.6.0) (2024-03-25) + + +### Features + +* Add new types ExplainOptions, ExplainMetrics, PlanSummary, ExecutionStats ([#1241](https://github.com/googleapis/nodejs-datastore/issues/1241)) ([6c409d5](https://github.com/googleapis/nodejs-datastore/commit/6c409d5c922288bd8286917b266cdb553cfd43cf)) +* Nodejs transaction redesign feature branch ([#1235](https://github.com/googleapis/nodejs-datastore/issues/1235)) ([1585d4a](https://github.com/googleapis/nodejs-datastore/commit/1585d4a4e1b4b16d198307a3e97ffcf156d000b1)) + + +### Bug Fixes + +* **deps:** Update dependency async-mutex to ^0.5.0 ([#1240](https://github.com/googleapis/nodejs-datastore/issues/1240)) ([0ba1281](https://github.com/googleapis/nodejs-datastore/commit/0ba1281efe16ef0b725937627445c32c36b9f705)) + ## [8.5.0](https://github.com/googleapis/nodejs-datastore/compare/v8.4.0...v8.5.0) (2024-02-06) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 3318a43e7c6..a5805e4180a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.5.0", + "version": "8.6.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index ca6ecd7aafc..c6f5d7e592f 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.5.0", + "@google-cloud/datastore": "^8.6.0", "sinon": "^17.0.0" }, "devDependencies": { diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 2c939656de8..c88c005d476 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -181,11 +181,10 @@ export namespace entity { try { return this.typeCastFunction!(this.value); } catch (error) { - ( - error as Error - ).message = `integerTypeCastFunction threw an error:\n\n - ${ - (error as Error).message - }`; + (error as Error).message = + `integerTypeCastFunction threw an error:\n\n - ${ + (error as Error).message + }`; throw error; } } else { diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index 0b7883b6da3..e0378c73e9b 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -173,8 +173,8 @@ class Transaction extends DatastoreRequest { typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : typeof cb === 'function' - ? cb - : () => {}; + ? cb + : () => {}; const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; // This ensures that the transaction is started before calling runCommit From c666f84551ce968b8fdb2116bf4c21531b2b0236 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:59:57 -0400 Subject: [PATCH 776/820] feat: add several fields to manage state of database encryption update (#1243) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add several fields to manage state of database encryption update PiperOrigin-RevId: 619289281 Source-Link: https://github.com/googleapis/googleapis/commit/3a7c33486ca758b180c6d11dd4705fa9a22e8576 Source-Link: https://github.com/googleapis/googleapis-gen/commit/6a8c733062d833d11c5245eda50f5108e0e55324 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNmE4YzczMzA2MmQ4MzNkMTFjNTI0NWVkYTUwZjUxMDhlMGU1NTMyNCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../src/v1/datastore_admin_client.ts | 15 +++++--- .../src/v1/datastore_client.ts | 15 +++++--- .../test/gapic_datastore_admin_v1.ts | 34 ++++++++++++++++++- .../test/gapic_datastore_v1.ts | 34 ++++++++++++++++++- 4 files changed, 88 insertions(+), 10 deletions(-) diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts index 87e888390ef..66b3108155d 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts @@ -167,8 +167,15 @@ export class DatastoreAdminClient { 'Please set either universe_domain or universeDomain, but not both.' ); } + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; this._universeDomain = - opts?.universeDomain ?? opts?.universe_domain ?? 'googleapis.com'; + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'datastore.' + this._universeDomain; const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; @@ -220,7 +227,7 @@ export class DatastoreAdminClient { // Determine the client header string. const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; - if (typeof process !== 'undefined' && 'versions' in process) { + if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { clientHeader.push(`gl-web/${this._gaxModule.version}`); @@ -423,7 +430,7 @@ export class DatastoreAdminClient { */ static get servicePath() { if ( - typeof process !== undefined && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { process.emitWarning( @@ -441,7 +448,7 @@ export class DatastoreAdminClient { */ static get apiEndpoint() { if ( - typeof process !== undefined && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { process.emitWarning( diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index 84e1f092b56..e42b2a7090c 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -124,8 +124,15 @@ export class DatastoreClient { 'Please set either universe_domain or universeDomain, but not both.' ); } + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; this._universeDomain = - opts?.universeDomain ?? opts?.universe_domain ?? 'googleapis.com'; + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'datastore.' + this._universeDomain; const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; @@ -177,7 +184,7 @@ export class DatastoreClient { // Determine the client header string. const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; - if (typeof process !== 'undefined' && 'versions' in process) { + if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { clientHeader.push(`gl-web/${this._gaxModule.version}`); @@ -323,7 +330,7 @@ export class DatastoreClient { */ static get servicePath() { if ( - typeof process !== undefined && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { process.emitWarning( @@ -341,7 +348,7 @@ export class DatastoreClient { */ static get apiEndpoint() { if ( - typeof process !== undefined && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { process.emitWarning( diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index fe1cdb11fc4..7d347a6032f 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -174,7 +174,7 @@ describe('v1.DatastoreAdminClient', () => { }); if ( - typeof process !== 'undefined' && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { it('throws DeprecationWarning if static servicePath is used', () => { @@ -210,6 +210,38 @@ describe('v1.DatastoreAdminClient', () => { const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); + + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new datastoreadminModule.v1.DatastoreAdminClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'datastore.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new datastoreadminModule.v1.DatastoreAdminClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'datastore.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + }); + } it('does not allow setting both universeDomain and universe_domain', () => { assert.throws(() => { new datastoreadminModule.v1.DatastoreAdminClient({ diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts index 331cd1f9721..7a23ec7d9fe 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts @@ -102,7 +102,7 @@ describe('v1.DatastoreClient', () => { }); if ( - typeof process !== 'undefined' && + typeof process === 'object' && typeof process.emitWarning === 'function' ) { it('throws DeprecationWarning if static servicePath is used', () => { @@ -136,6 +136,38 @@ describe('v1.DatastoreClient', () => { const servicePath = client.apiEndpoint; assert.strictEqual(servicePath, 'datastore.example.com'); }); + + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new datastoreModule.v1.DatastoreClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'datastore.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new datastoreModule.v1.DatastoreClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'datastore.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + }); + } it('does not allow setting both universeDomain and universe_domain', () => { assert.throws(() => { new datastoreModule.v1.DatastoreClient({ From f90ad4e2efa8871b0adb3dea5df227f56633a7c6 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 10:28:23 -0400 Subject: [PATCH 777/820] chore(main): release 8.7.0 (#1244) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(main): release 8.7.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Owl Bot --- handwritten/nodejs-datastore/CHANGELOG.md | 7 +++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/protos/protos.d.ts | 9 ++++ handwritten/nodejs-datastore/protos/protos.js | 53 +++++++++++++++++-- .../nodejs-datastore/protos/protos.json | 26 ++++++++- .../nodejs-datastore/samples/package.json | 2 +- 6 files changed, 91 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index b3d50ac24e6..4c18a503b7f 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [8.7.0](https://github.com/googleapis/nodejs-datastore/compare/v8.6.0...v8.7.0) (2024-04-02) + + +### Features + +* Add several fields to manage state of database encryption update ([#1243](https://github.com/googleapis/nodejs-datastore/issues/1243)) ([5d28cda](https://github.com/googleapis/nodejs-datastore/commit/5d28cda744c3bb11da5e72ea8a0f7d8d8e85c4b0)) + ## [8.6.0](https://github.com/googleapis/nodejs-datastore/compare/v8.5.0...v8.6.0) (2024-03-25) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a5805e4180a..c1674fe0c5e 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.6.0", + "version": "8.7.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index fb52086a7a1..51708ad0555 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -9099,6 +9099,9 @@ export namespace google { /** Publishing protoReferenceDocumentationUri */ protoReferenceDocumentationUri?: (string|null); + + /** Publishing restReferenceDocumentationUri */ + restReferenceDocumentationUri?: (string|null); } /** Represents a Publishing. */ @@ -9140,6 +9143,9 @@ export namespace google { /** Publishing protoReferenceDocumentationUri. */ public protoReferenceDocumentationUri: string; + /** Publishing restReferenceDocumentationUri. */ + public restReferenceDocumentationUri: string; + /** * Creates a new Publishing instance using the specified properties. * @param [properties] Properties to set @@ -13296,6 +13302,9 @@ export namespace google { /** ServiceOptions .google.api.oauthScopes */ ".google.api.oauthScopes"?: (string|null); + + /** ServiceOptions .google.api.apiVersion */ + ".google.api.apiVersion"?: (string|null); } /** Represents a ServiceOptions. */ diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index e9dcfef28e4..dae8035f5dd 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -23190,6 +23190,7 @@ * @property {google.api.ClientLibraryOrganization|null} [organization] Publishing organization * @property {Array.|null} [librarySettings] Publishing librarySettings * @property {string|null} [protoReferenceDocumentationUri] Publishing protoReferenceDocumentationUri + * @property {string|null} [restReferenceDocumentationUri] Publishing restReferenceDocumentationUri */ /** @@ -23290,6 +23291,14 @@ */ Publishing.prototype.protoReferenceDocumentationUri = ""; + /** + * Publishing restReferenceDocumentationUri. + * @member {string} restReferenceDocumentationUri + * @memberof google.api.Publishing + * @instance + */ + Publishing.prototype.restReferenceDocumentationUri = ""; + /** * Creates a new Publishing instance using the specified properties. * @function create @@ -23337,6 +23346,8 @@ $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork()).ldelim(); if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri")) writer.uint32(/* id 110, wireType 2 =*/882).string(message.protoReferenceDocumentationUri); + if (message.restReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "restReferenceDocumentationUri")) + writer.uint32(/* id 111, wireType 2 =*/890).string(message.restReferenceDocumentationUri); return writer; }; @@ -23417,6 +23428,10 @@ message.protoReferenceDocumentationUri = reader.string(); break; } + case 111: { + message.restReferenceDocumentationUri = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -23509,6 +23524,9 @@ if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) if (!$util.isString(message.protoReferenceDocumentationUri)) return "protoReferenceDocumentationUri: string expected"; + if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri")) + if (!$util.isString(message.restReferenceDocumentationUri)) + return "restReferenceDocumentationUri: string expected"; return null; }; @@ -23603,6 +23621,8 @@ } if (object.protoReferenceDocumentationUri != null) message.protoReferenceDocumentationUri = String(object.protoReferenceDocumentationUri); + if (object.restReferenceDocumentationUri != null) + message.restReferenceDocumentationUri = String(object.restReferenceDocumentationUri); return message; }; @@ -23632,6 +23652,7 @@ object.docTagPrefix = ""; object.organization = options.enums === String ? "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" : 0; object.protoReferenceDocumentationUri = ""; + object.restReferenceDocumentationUri = ""; } if (message.methodSettings && message.methodSettings.length) { object.methodSettings = []; @@ -23662,6 +23683,8 @@ } if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) object.protoReferenceDocumentationUri = message.protoReferenceDocumentationUri; + if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri")) + object.restReferenceDocumentationUri = message.restReferenceDocumentationUri; return object; }; @@ -33070,12 +33093,9 @@ if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); - if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) { - writer.uint32(/* id 1052, wireType 2 =*/8418).fork(); + if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) - writer.int32(message[".google.api.fieldBehavior"][i]); - writer.ldelim(); - } + writer.uint32(/* id 1052, wireType 0 =*/8416).int32(message[".google.api.fieldBehavior"][i]); return writer; }; @@ -34902,6 +34922,7 @@ * @property {Array.|null} [uninterpretedOption] ServiceOptions uninterpretedOption * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost * @property {string|null} [".google.api.oauthScopes"] ServiceOptions .google.api.oauthScopes + * @property {string|null} [".google.api.apiVersion"] ServiceOptions .google.api.apiVersion */ /** @@ -34960,6 +34981,14 @@ */ ServiceOptions.prototype[".google.api.oauthScopes"] = ""; + /** + * ServiceOptions .google.api.apiVersion. + * @member {string} .google.api.apiVersion + * @memberof google.protobuf.ServiceOptions + * @instance + */ + ServiceOptions.prototype[".google.api.apiVersion"] = ""; + /** * Creates a new ServiceOptions instance using the specified properties. * @function create @@ -34995,6 +35024,8 @@ writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]); + if (message[".google.api.apiVersion"] != null && Object.hasOwnProperty.call(message, ".google.api.apiVersion")) + writer.uint32(/* id 525000001, wireType 2 =*/4200000010).string(message[".google.api.apiVersion"]); return writer; }; @@ -35051,6 +35082,10 @@ message[".google.api.oauthScopes"] = reader.string(); break; } + case 525000001: { + message[".google.api.apiVersion"] = reader.string(); + break; + } default: reader.skipType(tag & 7); break; @@ -35109,6 +35144,9 @@ if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) if (!$util.isString(message[".google.api.oauthScopes"])) return ".google.api.oauthScopes: string expected"; + if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion")) + if (!$util.isString(message[".google.api.apiVersion"])) + return ".google.api.apiVersion: string expected"; return null; }; @@ -35145,6 +35183,8 @@ message[".google.api.defaultHost"] = String(object[".google.api.defaultHost"]); if (object[".google.api.oauthScopes"] != null) message[".google.api.oauthScopes"] = String(object[".google.api.oauthScopes"]); + if (object[".google.api.apiVersion"] != null) + message[".google.api.apiVersion"] = String(object[".google.api.apiVersion"]); return message; }; @@ -35168,6 +35208,7 @@ object.features = null; object[".google.api.defaultHost"] = ""; object[".google.api.oauthScopes"] = ""; + object[".google.api.apiVersion"] = ""; } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; @@ -35182,6 +35223,8 @@ object[".google.api.defaultHost"] = message[".google.api.defaultHost"]; if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"]; + if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion")) + object[".google.api.apiVersion"] = message[".google.api.apiVersion"]; return object; }; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 4414513561a..c45a5996d98 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -2111,6 +2111,11 @@ "id": 1050, "extend": "google.protobuf.ServiceOptions" }, + "apiVersion": { + "type": "string", + "id": 525000001, + "extend": "google.protobuf.ServiceOptions" + }, "CommonLanguageSettings": { "fields": { "referenceDocsUri": { @@ -2219,6 +2224,10 @@ "protoReferenceDocumentationUri": { "type": "string", "id": 110 + }, + "restReferenceDocumentationUri": { + "type": "string", + "id": 111 } } }, @@ -2394,7 +2403,10 @@ "rule": "repeated", "type": "google.api.FieldBehavior", "id": 1052, - "extend": "google.protobuf.FieldOptions" + "extend": "google.protobuf.FieldOptions", + "options": { + "packed": false + } }, "FieldBehavior": { "values": { @@ -3541,9 +3553,21 @@ 1001, 1001 ], + [ + 1002, + 1002 + ], + [ + 9990, + 9990 + ], [ 9995, 9999 + ], + [ + 10000, + 10000 ] ], "reserved": [ diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index c6f5d7e592f..6ba2696fadb 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.6.0", + "@google-cloud/datastore": "^8.7.0", "sinon": "^17.0.0" }, "devDependencies": { From 507d3298b7d090ac6f201f82a2ea789199ced95b Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Tue, 2 Apr 2024 14:55:49 -0400 Subject: [PATCH 778/820] test: sort results, check for sorted order (#1245) * sort results, check for sorted order * test: sort results, check for sorted order --- handwritten/nodejs-datastore/samples/queryFilterOr.js | 1 + handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/handwritten/nodejs-datastore/samples/queryFilterOr.js b/handwritten/nodejs-datastore/samples/queryFilterOr.js index 80913cd9c8a..ee87c5d3e2d 100644 --- a/handwritten/nodejs-datastore/samples/queryFilterOr.js +++ b/handwritten/nodejs-datastore/samples/queryFilterOr.js @@ -41,6 +41,7 @@ async function main() { ); const [entities] = await datastore.runQuery(query); + entities.sort(); for (const entity of entities) { console.log(`Entity found: ${entity['description']}`); } diff --git a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js index f35113964e0..14df87e0c4e 100644 --- a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js +++ b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js @@ -81,6 +81,6 @@ describe('Creating a union query', () => { }); it('should get a combination of items from the Datastore', async () => { - assert.strictEqual(execSync(`node ./queryFilterOr.js`), 'Entity found: Feed cats\nEntity found: Buy milk\n'); + assert.strictEqual(execSync(`node ./queryFilterOr.js`), 'Entity found: Buy milk\nEntity found: Feed cats\n'); }); }); From 1ff187721918ddbebc018d80dfbe2c6ee7b4bbe9 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Thu, 4 Apr 2024 15:16:34 -0400 Subject: [PATCH 779/820] fix: read time should be used for transaction reads (#1171) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Allow datastore projectId to be fetched from clien Latency is caused by the call to getProjectId from Google auth. This change allows the project id to be retrieved if it is set in the client at creation time thereby reducing call latency. * Create a file for mocking out commits A test file is created where we mock out commit in the Gapic layer. The mock allows us to get the results passed to the commit endpoint in the Gapic layer. * Create a test to measure latency of call. To prove that the change works to reduce latency, a test is written. The test checks to see that the amount of time that passes between the time when the initial call is made in the user’s code and the time when the call reaches the gapic layer is sufficiently small. It will be a very small amount of time if the program does not need to do an auth lookup. * Run the linting fixes Run the linter so that spacing in the PR gets fixed for some of the lines of code. * Add license header to top of test file The license header needs to be added to the top of the new test file that is used for mocking out commit. * Add comment for test for now This is going to be a test for investigating the latency of the client. * Add a test for the mock server Measure the latency between the original call and the mock server. * Set current retry attempt to 0 * Add a log for call time Do check external to function after async call. Add log for call time. * Add another mock Other mock doesn’t require lazy client initialization. * Eliminate code from the mock file Eliminate the fake datastore client because we need to do assertion checks that are specific to each test. This means there is no point in defining runQuery once in a mock because each test will mock it out differently. * Start off by adding read time to read options Add the code change that will add read time to read options for transactions. # Conflicts: # test/transaction.ts * Update the test to use transactions The idea is to test that read time got passed along for transactions specifically. This will be necessary for snapshot reads to work. * Remove only Need the entire test suite to run * Remove the before hook The before hook is not necessary. Just mock out the data client at the start. * Remove unnecessary cherry picked files Files were cherry-picked that weren’t helpful for solving the problem. Remove them. * Clean up PR diff * clean up PR diff * Update the test so that it is run as a transaction Right now, providing a transaction id is necessary to run the request as a transaction. * Add an integration test The integration test looks at the data from the snapshot read time for transactions and ensures that the read has no data thereby exercising the read time parameter. * Linting fixing indents Fix the indents in the system test folder * Update the header * Fix unit test beginTransaction needs to be mocked out now that a transaction will begin if runQuery is called. * System test changes. Add a sleep. Instead of changing the current test, add a new test because it means the reader of the PR can be sure that test coverage wasn’t reduced which is better. * Modify test Modify the test so that sleeps are long enough to create predictable results and tests actually check for the right values. * Replace with less precise assert The test setup sometimes prepares before data with 0 entries and sometimes prepares before data with 1 entry so a less restrictive test is required in order for it to consistently pass. --- handwritten/nodejs-datastore/src/request.ts | 10 +- .../nodejs-datastore/system-test/datastore.ts | 42 +++++++ .../test/gapic-mocks/runQuery.ts | 118 ++++++++++++++++++ 3 files changed, 167 insertions(+), 3 deletions(-) create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 047cf0ab645..b82a2dff1ac 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -1025,9 +1025,13 @@ class DatastoreRequest { ); } - reqOpts.readOptions = { - transaction: this.id, - }; + if (reqOpts.readOptions) { + Object.assign(reqOpts.readOptions, {transaction: this.id}); + } else { + reqOpts.readOptions = { + transaction: this.id, + }; + } } datastore.auth.getProjectId((err, projectId) => { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 62e1f89f89d..97e643b98aa 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -1931,6 +1931,29 @@ async.each( }); }); describe('transactions', () => { + before(async () => { + // This 'sleep' function is used to ensure that when data is saved to datastore, + // the time on the server is far enough ahead to be sure to be later than timeBeforeDataCreation + // so that when we read at timeBeforeDataCreation we get a snapshot of data before the save. + const key = datastore.key(['Company', 'Google']); + function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + // Save for a key so that a read time can be accessed for snapshot reads. + const emptyData = { + key, + data: {}, + }; + await datastore.save(emptyData); + // Sleep for 10 seconds to ensure timeBeforeDataCreation includes the empty data + await sleep(10000); + timeBeforeDataCreation = await getReadTime([ + {kind: 'Company', name: 'Google'}, + ]); + // Sleep for 10 seconds so that any future reads will be later than timeBeforeDataCreation. + await sleep(10000); + }); + it('should run in a transaction', async () => { const key = datastore.key(['Company', 'Google']); const obj = { @@ -2031,6 +2054,25 @@ async.each( await transaction.commit(); }); + it('should query within a transaction at a previous read time', async () => { + const transaction = datastore.transaction(); + await transaction.run(); + const query = transaction.createQuery('Company'); + let entitiesBefore; + let entitiesNow; + try { + [entitiesBefore] = await query.run({ + readTime: timeBeforeDataCreation, + }); + [entitiesNow] = await query.run({}); + } catch (e) { + await transaction.rollback(); + return; + } + assert(entitiesBefore!.length < entitiesNow!.length); + await transaction.commit(); + }); + describe('aggregate query within a transaction', async () => { it('should run a query and return the results', async () => { // Add a test here to verify what the data is at this time. diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts new file mode 100644 index 00000000000..e19964ecfa0 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts @@ -0,0 +1,118 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as assert from 'assert'; +import {describe} from 'mocha'; +import {DatastoreClient, Datastore} from '../../src'; +import * as protos from '../../protos/protos'; +import {Callback} from 'google-gax'; + +describe('Run Query', () => { + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'namespace'; + const clientName = 'DatastoreClient'; + const options = { + projectId: PROJECT_ID, + namespace: NAMESPACE, + }; + const datastore = new Datastore(options); + // By default, datastore.clients_ is an empty map. + // To mock out commit we need the map to contain the Gapic data client. + // Normally a call to the data client through the datastore object would initialize it. + // We don't want to make this call because it would make a grpc request. + // So we just add the data client to the map. + const gapic = Object.freeze({ + v1: require('../../src/v1'), + }); + datastore.clients_.set(clientName, new gapic.v1[clientName](options)); + + // This function is used for doing assertion checks. + // The idea is to check that the right request gets passed to the commit function in the Gapic layer. + function setRunQueryComparison( + compareFn: (request: protos.google.datastore.v1.IRunQueryRequest) => void + ) { + const dataClient = datastore.clients_.get(clientName); + if (dataClient) { + dataClient.runQuery = ( + request: any, + options: any, + callback: ( + err?: unknown, + res?: protos.google.datastore.v1.IRunQueryResponse + ) => void + ) => { + try { + compareFn(request); + } catch (e) { + callback(e); + } + callback(null, { + batch: { + moreResults: + protos.google.datastore.v1.QueryResultBatch.MoreResultsType + .NO_MORE_RESULTS, + }, + }); + }; + } + } + + it('should pass read time into runQuery for transactions', async () => { + // First mock out beginTransaction + const dataClient = datastore.clients_.get(clientName); + const testId = Buffer.from(Array.from(Array(100).keys())); + if (dataClient) { + dataClient.beginTransaction = ( + request: protos.google.datastore.v1.IBeginTransactionRequest, + options: protos.google.datastore.v1.IBeginTransactionResponse, + callback: Callback< + protos.google.datastore.v1.IBeginTransactionResponse, + | protos.google.datastore.v1.IBeginTransactionRequest + | null + | undefined, + {} | null | undefined + > + ) => { + callback(null, { + transaction: testId, + }); + }; + } + setRunQueryComparison( + (request: protos.google.datastore.v1.IRunQueryRequest) => { + assert.deepStrictEqual(request, { + readOptions: { + transaction: testId, + readTime: { + seconds: 77, + }, + }, + partitionId: { + namespaceId: 'namespace', + }, + query: { + distinctOn: [], + kind: [{name: 'Task'}], + order: [], + projection: [], + }, + projectId: 'project-id', + }); + } + ); + const transaction = datastore.transaction(); + const query = datastore.createQuery('Task'); + await transaction.runQuery(query, {readTime: 77000}); + }); +}); From 066fa29f333bf8ad3e22b10e15e1fdfb0357863a Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:24:57 -0400 Subject: [PATCH 780/820] fix!: An existing method `UpdateVehicleLocation` is removed from service `VehicleService` (#1248) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix!: An existing method `UpdateVehicleLocation` is removed from service `VehicleService` fix!: An existing method `SearchFuzzedVehicles` is removed from service `VehicleService` fix!: An existing message `UpdateVehicleLocationRequest` is removed PiperOrigin-RevId: 631557549 Source-Link: https://github.com/googleapis/googleapis/commit/3d50414a7ff3f0b8ffe8ad7858257396e4f18131 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5ce63d4e636a975175bde2d16c15e70dd5a81ff4 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWNlNjNkNGU2MzZhOTc1MTc1YmRlMmQxNmMxNWU3MGRkNWE4MWZmNCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../protos/google/datastore/admin/v1/datastore_admin.proto | 2 +- .../protos/google/datastore/admin/v1/index.proto | 2 +- .../protos/google/datastore/admin/v1/migration.proto | 2 +- .../protos/google/datastore/v1/aggregation_result.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/datastore.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/entity.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/query.proto | 2 +- .../protos/google/datastore/v1/query_profile.proto | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto index 79ca3df6880..a8b3f9986b9 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto index 60bb5af5f58..6a1d1222767 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto index e5f7477da6e..813de87ddd3 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto index 91c521716e8..262b61fa4fb 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 1a3fbdd11a3..fbbabb0a303 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index d80dd9093df..ef4429343e2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index d1f0f8d0746..81386d47b51 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto index 01c9fc25475..f38681c665a 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From ca1ec564e624c5f999a38e46e3cd115b391503c5 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Thu, 9 May 2024 16:52:31 -0400 Subject: [PATCH 781/820] feat: Query profiling feature (#1221) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add the right files from the preview branch Copy paste over the files from the preview branch * Thread Query mode through the library Thread the query mode through the client library. Allow calls to get made using the query mode. * Create a basic workflow for testing profiling grpc This code allows basic query profiling to work and creates a basic code snippet that can be used to make it work. * This test makes a call to the mock server This will be useful for debugging grpc issues. * Now the test works with the mock server in repo This mock server will be super useful for ensuring that the right data gets transmitted in private preview so that we can confirm the client library is working correctly. * Delete js file We use the ts file instead. * Try explain See if Explain gets passed along to the mock server. * Update protos.json Protos.json is needed to pass the plan along. * Try an aggregate query * Add test to catch breaking change to return type Make sure changes don’t break the use of this callback by adding this test. * Try redefining RunQueryCallback Define it with a more general data structure. * Revert Gapic changes to match head branch The merge caused generated files to have a diff. The diff should not be in the PR. * Remove only only should not be used here * Add data structures for return values Data structures need to be added for the return values that contain stats. * Add plumbing to send stats info back Add stats to info if it is available. If there are no results then end the stream and send the info back. This way, stats will always be sent in info if they are available and the program won ’t break if there are no results. * Set test to only that we intend to explore * Add a comment about stats Explain what happens when the result set is empty. Just send the stats back. * Delete the mock server code The mock server code was used for debugging and now we don’t need it since the service is working. * Remove calls to nightly Calls to nightly don’t have a second database to work with. Regular calls work now so nightly calls are not necessary. * Introduce profiling tests again Bring the query profiling tests back. * Revert "Remove calls to nightly" This reverts commit 040d0a5718e913b1a5b31e37a13b0a5daa74f4a1. * Stats are optional Stats do not necessarily come from the server. * Write some tests to test each mode Each query profiling mode needs to be explored. * Add code for parsing the stats returned Stats returned needs to be parsed by a special library that will remove the complexities of the Struct object. * Add dependencies necessary for parsing A library is needed for parsing the Struct values. Add the libraries and use them. * Add assertions for the expected plan/stats Expected plan and expected stats should be used in the tests. This ensures the tests check for the proper stats values. * Refactor info with stats build and add info to cb Add a specific type for the runAggregationQuery callback so that it can now support the info parameter. In order to allow runAggregationQuery to make use of creating info, we also refactor info construction into a separate function. * Modify the parser for runAggregationQuery The parser for runAggregationQuery should have a deterministic process for computing results. * Add asserts for the return values of runAggregate Make sure that the entities and the plan are correct. * Complete tests for runQuery and aggregation query The assertion checks for runQuery and runAggregationQuery should be done and they test each mode. * Add tests for Query and AggregateQuery Tests should ensure run functions work properly for the run function on both of these objects. * Add initial transaction tests for runQuery The runQuery tests have been added which get the right results. Next the right assert statements and info collection will be added to the tests. * Add checks on info to the transaction tests Checks against info are needed to be sure that stats are passed back to the caller properly. * Fix tests for aggregate queries in transactions Add tests for running aggregate queries inside transactions. * Ran linter, added all tests for runQueryStream Added a temporary test for runQueryStream. Also ran the linter. * Change parsing of return values Return values are going to look different for users. Change the code so that the parsing is done differently. * Reformat the info function This function is more readable if we eliminate some of the tertiary arguments and complex logic for building the info object. * Change tests as a result of structure changes The structure of the QueryInfo object is changed. Modify the tests to work with the new structure. * Use import and not require import is better for catching compile time errors and is more customary. * Better spacing for imports Change the spacing so that the imports are all in one place. * Introduce a single function for checking the execution stats. Make sure all the tests use this function. Pull out the run query plan and the run aggregation query plan. * Fix the tests so that they call the right fns Add assertion checks to check the query plan against some expected value and make sure the right assertion checks are done for the right tests. * Finish the tests for the streaming call Finish the tests for specifying no mode, specifying normal mode, EXPLAIN mode and EXPLAIN_ANALYZE mode. Make sure the tests pass. * Delete code that will not be used anymore There is a lot of boilerplate code that was needed for the streaming call. Get rid of it here. * Make changes to match new proto Code change to use new proto was made so that code will compile. * Add Explain Metrics interface Make slight change to withBeginTransaction so that code compiles under new structure. Also group plan and statistics under the new explainMetrics interface. * Remove bytesReturned from test Proto should not be passing along bytesReturned anymore. * Fix system tests to use values matching new struct * Remove calls to nightly Feature is now fully ready so nightly tests should not be done because the feature is expected to work in production. * Query profiling Add test for runQuery. Send back plan summary and execution stats. * Add a test for runAggregationQuery runAggregationQuery needs a unit test to validate request/return data. * Parameterize the query profiling tests * run the linter * Export Query Mode in index.ts Query mode needs to be exported so that it can be accessed by the user. * Change data structure types to match return values * Remove TODO * remove import * delete the query profiling samples * Remove abstraction for RunQueryCallback * Change the comment to describe new data types * Remove TODO * linting fixes * Update type to include runAggregationQuery * Put else back in This change is actually simpler because it doesn’t introduce a let. It is also a much smaller diff. * mode is not needed in sharedQueryOptions * Revert "mode is not needed in sharedQueryOptions" This reverts commit b8d0c63aed8ea0dec18efe61ae5022e853a70c78. * Rearrange imports rearrange the imports to simplify the diff. * Revert imports to simplify diff * Don’t change Entities position Simplify diff * Move timestamp import back * This interface is only needed once Define the interface inline * Remove QueryMode and replace with explainOptions * A few system tests Add a few tests for the different explain options cases. * Add a few tests for the false case * Add more specific types to introduced function * mode parameter is no longer required * This signature change is no longer required * Update the comment for getInfoFromStats * GapicExplainOptions are no longer needed. * Set analyze to false to match description * Add a test for runQueryStream and analyze set fals * Add a test for analyze set to false * Import ExplainOptions * Remove bytesReturned from the interface * Make types in test more specific * name as string * Rely on 2 dependencies from google-gax instead * Change expectations in the test to reflect new val * Ran linter * Remove extraneous import * Modify stats return type --- handwritten/nodejs-datastore/src/query.ts | 26 + handwritten/nodejs-datastore/src/request.ts | 134 +++- .../nodejs-datastore/system-test/datastore.ts | 624 +++++++++++++++++- handwritten/nodejs-datastore/test/index.ts | 212 +++++- 4 files changed, 984 insertions(+), 12 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 4f3a620012e..8c821e53a97 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -23,6 +23,7 @@ import {Transaction} from './transaction'; import {CallOptions} from 'google-gax'; import {RunQueryStreamOptions} from '../src/request'; import * as gaxInstance from 'google-gax'; +import {google} from '../protos/protos'; export type Operator = | '=' @@ -597,10 +598,15 @@ export interface IntegerTypeCastOptions { properties?: string | string[]; } +export interface ExplainOptions { + analyze?: boolean; +} + export interface RunQueryOptions { consistency?: 'strong' | 'eventual'; readTime?: number; gaxOptions?: CallOptions; + explainOptions?: ExplainOptions; wrapNumbers?: boolean | IntegerTypeCastOptions; } @@ -620,4 +626,24 @@ export interface RunQueryInfo { | 'MORE_RESULTS_AFTER_LIMIT' | 'MORE_RESULTS_AFTER_CURSOR' | 'NO_MORE_RESULTS'; + explainMetrics?: ExplainMetrics; +} + +export interface ExplainMetrics { + planSummary?: PlanSummary; + executionStats?: ExecutionStats; +} +export interface ExecutionStats { + resultsReturned?: number; + executionDuration?: google.protobuf.IDuration; + readOperations?: number; + debugStats?: { + [key: string]: any; + }; +} + +export interface PlanSummary { + indexesUsed: { + [key: string]: any; + }[]; } diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index b82a2dff1ac..b3483c1f9b5 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -44,9 +44,10 @@ import { KeyProto, ResponseResult, Entities, - ValueProto, } from './entity'; import { + ExplainMetrics, + ExplainOptions, Query, QueryProto, RunQueryInfo, @@ -57,6 +58,100 @@ import { import {Datastore} from '.'; import ITimestamp = google.protobuf.ITimestamp; import {AggregateQuery} from './aggregate'; +import * as protos from '../protos/protos'; +import {serializer} from 'google-gax'; +import * as gax from 'google-gax'; +type JSONValue = + | string + | number + | boolean + | null + | JSONValue[] + | { + [key: string]: JSONValue; + }; + +const root = gax.protobuf.loadSync('google/protobuf/struct.proto'); +const Struct = root.lookupType('Struct'); + +// This function decodes Struct proto values +function decodeStruct(structValue: google.protobuf.IStruct): JSONValue { + return serializer.toProto3JSON(Struct.fromObject(structValue)); +} + +// This function gets a RunQueryInfo object that contains explain metrics that +// were returned from the server. +function getInfoFromStats( + resp: + | protos.google.datastore.v1.IRunQueryResponse + | protos.google.datastore.v1.IRunAggregationQueryResponse +): RunQueryInfo { + // Decode struct values stored in planSummary and executionStats + const explainMetrics: ExplainMetrics = {}; + if ( + resp && + resp.explainMetrics && + resp.explainMetrics.planSummary && + resp.explainMetrics.planSummary.indexesUsed + ) { + Object.assign(explainMetrics, { + planSummary: { + indexesUsed: resp.explainMetrics.planSummary.indexesUsed.map( + (index: google.protobuf.IStruct) => decodeStruct(index) + ), + }, + }); + } + if (resp && resp.explainMetrics && resp.explainMetrics.executionStats) { + const executionStats = {}; + { + const resultsReturned = + resp.explainMetrics.executionStats.resultsReturned; + if (resultsReturned) { + Object.assign(executionStats, { + resultsReturned: + typeof resultsReturned === 'string' + ? parseInt(resultsReturned) + : resultsReturned, + }); + } + } + { + const executionDuration = + resp.explainMetrics.executionStats.executionDuration; + if (executionDuration) { + Object.assign(executionStats, { + executionDuration: + typeof executionDuration === 'string' + ? parseInt(executionDuration) + : executionDuration, + }); + } + } + { + const readOperations = resp.explainMetrics.executionStats.readOperations; + if (readOperations) { + Object.assign(executionStats, { + readOperations: + typeof readOperations === 'string' + ? parseInt(readOperations) + : readOperations, + }); + } + } + { + const debugStats = resp.explainMetrics.executionStats.debugStats; + if (debugStats) { + Object.assign(executionStats, {debugStats: decodeStruct(debugStats)}); + } + } + Object.assign(explainMetrics, {executionStats}); + } + if (explainMetrics.planSummary || explainMetrics.executionStats) { + return {explainMetrics}; + } + return {}; +} /** * A map of read consistency values to proto codes. @@ -566,12 +661,15 @@ class DatastoreRequest { runAggregationQuery( query: AggregateQuery, options: RunQueryOptions, - callback: RequestCallback + callback: RunAggregationQueryCallback + ): void; + runAggregationQuery( + query: AggregateQuery, + callback: RunAggregationQueryCallback ): void; - runAggregationQuery(query: AggregateQuery, callback: RequestCallback): void; runAggregationQuery( query: AggregateQuery, - optionsOrCallback?: RunQueryOptions | RequestCallback, + optionsOrCallback?: RunQueryOptions | RunAggregationQueryCallback, cb?: RequestCallback ): void | Promise { const options = @@ -605,6 +703,7 @@ class DatastoreRequest { gaxOpts: options.gaxOptions, }, (err, res) => { + const info = getInfoFromStats(res); if (res && res.batch) { const results = res.batch.aggregationResults; const finalResults = results @@ -621,9 +720,9 @@ class DatastoreRequest { ) ) ); - callback(err, finalResults); + callback(err, finalResults, info); } else { - callback(err, res); + callback(err, [], info); } } ); @@ -825,9 +924,16 @@ class DatastoreRequest { return; } - const info: RunQueryInfo = { + if (!resp.batch) { + // If there are no results then send any stats back and end the stream. + stream.emit('info', getInfoFromStats(resp)); + stream.push(null); + return; + } + + const info = Object.assign(getInfoFromStats(resp), { moreResults: resp.batch.moreResults, - }; + }); if (resp.batch.endCursor) { info.endCursor = resp.batch.endCursor.toString('base64'); @@ -908,6 +1014,9 @@ class DatastoreRequest { options: RunQueryStreamOptions = {} ): SharedQueryOptions { const sharedQueryOpts = this.getRequestOptions(options); + if (options.explainOptions) { + sharedQueryOpts.explainOptions = options.explainOptions; + } if (query.namespace) { sharedQueryOpts.partitionId = { namespaceId: query.namespace, @@ -1161,6 +1270,14 @@ export interface RequestCallback { b?: any ): void; } +export interface RunAggregationQueryCallback { + ( + a?: Error | null, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + b?: any, + c?: RunQueryInfo + ): void; +} export interface RequestConfig { client: string; gaxOpts?: CallOptions; @@ -1170,6 +1287,7 @@ export interface RequestConfig { } export interface SharedQueryOptions { databaseId?: string; + explainOptions?: ExplainOptions; projectId?: string; partitionId?: google.datastore.v1.IPartitionId | null; readOptions?: { diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 97e643b98aa..9990611b3d3 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -20,9 +20,10 @@ import * as yaml from 'js-yaml'; import {Datastore, DatastoreOptions, Index, Transaction} from '../src'; import {google} from '../protos/protos'; import {Storage} from '@google-cloud/storage'; -import {AggregateField} from '../src/aggregate'; -import {PropertyFilter, and, or} from '../src/filter'; -import {entity} from '../src/entity'; +import {AggregateField, AggregateQuery} from '../src/aggregate'; +import {and, or, PropertyFilter} from '../src/filter'; +import {Entities, entity, Entity} from '../src/entity'; +import {Query, RunQueryInfo, ExecutionStats} from '../src/query'; import KEY_SYMBOL = entity.KEY_SYMBOL; const async = require('async'); @@ -1130,6 +1131,623 @@ async.each( }); }); }); + describe('query profiling', () => { + const expectedRunQueryPlan = { + indexesUsed: [ + { + properties: '(__name__ ASC)', + query_scope: 'Collection group', + }, + ], + }; + const expectedRunAggregationQueryPlan = { + indexesUsed: [ + { + properties: '(appearances ASC, __name__ ASC)', + query_scope: 'Includes ancestors', + }, + ], + }; + const compare = (a: {name: string}, b: {name: string}) => { + return a.name > b.name ? 1 : -1; + }; + function checkQueryExecutionStats(executionStats?: ExecutionStats) { + // This function ensures the execution stats returned from the server are correct. + // First fix stats values that will be different every time a query profiling + // request is made so the assertion check only compares values that are + // expected to be the same every time the test is run. + const duration = { + seconds: '0', + nanos: 26806000, + }; + assert(executionStats); + executionStats.executionDuration = duration; + // Then do the assertion check. + assert.deepStrictEqual(executionStats, { + resultsReturned: 8, + executionDuration: duration, + readOperations: 8, + debugStats: { + documents_scanned: '8', + index_entries_scanned: '8', + billing_details: { + min_query_cost: '0', + small_ops: '0', + index_entries_billable: '0', + documents_billable: '8', + }, + }, + }); + } + function checkAggregationQueryExecutionStats( + executionStats?: ExecutionStats + ) { + // This function ensures the execution stats returned from the server are correct. + // First fix stats values that will be different every time a query profiling + // request is made so the assertion check only compares values that are + // expected to be the same every time the test is run. + const duration = { + seconds: '0', + nanos: 26806000, + }; + assert(executionStats); + executionStats.executionDuration = duration; + // Then do the assertion check. + assert.deepStrictEqual(executionStats, { + resultsReturned: 1, + executionDuration: duration, + readOperations: 1, + debugStats: { + documents_scanned: '0', + index_entries_scanned: '8', + billing_details: { + min_query_cost: '0', + small_ops: '0', + index_entries_billable: '8', + documents_billable: '0', + }, + }, + }); + } + + describe('when using transactions', () => { + describe('when using the runQuery function with transactions', () => { + let transaction: Transaction; + let query: Query; + beforeEach(async () => { + transaction = datastore.transaction(); + query = transaction.createQuery('Character'); + }); + it('should run a query in a transaction with no explain options specified', async () => { + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runQuery(query); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(!info.explainMetrics); + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + await transaction.commit(); + }); + it('should run a query in a transaction with explain options and analyze not specified', async () => { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Character'); + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runQuery(query, { + explainOptions: {}, + }); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + await transaction.commit(); + }); + it('should run a query in a transaction with explain options and analyze set to false', async () => { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Character'); + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runQuery(query, { + explainOptions: {analyze: false}, + }); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + await transaction.commit(); + }); + it('should run a query in a transaction with explain options and analyze set to true', async () => { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Character'); + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runQuery(query, { + explainOptions: {analyze: true}, + }); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + assert(info.explainMetrics); + checkQueryExecutionStats(info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + await transaction.commit(); + }); + }); + describe('when using the runAggregationQuery function with transactions', () => { + const expectedAggregationResults = [ + { + property_1: 187, + }, + ]; + let transaction: Transaction; + let aggregate: AggregateQuery; + beforeEach(async () => { + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor); + transaction = datastore.transaction(); + aggregate = transaction + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + }); + it('should run an aggregation query in a transaction with no explain options specified', async () => { + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runAggregationQuery( + aggregate, + {} + ); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(!info.explainMetrics); + assert.deepStrictEqual(entities, expectedAggregationResults); + await transaction.commit(); + }); + it('should run an aggregation query in a transaction with empty explain options', async () => { + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runAggregationQuery( + aggregate, + { + explainOptions: {}, + } + ); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(info.explainMetrics); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + await transaction.commit(); + }); + it('should run an aggregation query in a transaction with analyze set to false in explain options', async () => { + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runAggregationQuery( + aggregate, + { + explainOptions: { + analyze: false, + }, + } + ); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(info.explainMetrics); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + await transaction.commit(); + }); + it('should run an aggregation query in a transaction with analyze set to true in explain options', async () => { + await transaction.run(); + let entities, info; + try { + [entities, info] = await transaction.runAggregationQuery( + aggregate, + { + explainOptions: {analyze: true}, + } + ); + } catch (e) { + await transaction.rollback(); + assert.fail('transaction failed'); + } + assert(info.explainMetrics); + assert.deepStrictEqual(entities, expectedAggregationResults); + checkAggregationQueryExecutionStats( + info.explainMetrics.executionStats + ); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + await transaction.commit(); + }); + }); + }); + describe('when using the runQuery function', () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + it('should run a query with no explain options', async () => { + const [entities, info] = await datastore.runQuery(q); + assert(!info.explainMetrics); + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + }); + it('should run a query with explain options and no analyze option specified', async () => { + const [entities, info] = await datastore.runQuery(q, { + explainOptions: {}, + }); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + it('should run a query with explain options and analyze set to false', async () => { + const [entities, info] = await datastore.runQuery(q, { + explainOptions: {analyze: false}, + }); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + it('should run a query with explain options and analyze set to true', async () => { + const [entities, info] = await datastore.runQuery(q, { + explainOptions: {analyze: true}, + }); + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + assert(info.explainMetrics); + checkQueryExecutionStats(info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + }); + describe('when calling run on a Query object', () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + it('should run an aggregation query with no explain options specified', async () => { + const [entities, info] = await q.run(); + assert(!info.explainMetrics); + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + }); + it('should run a query with explain options and no value set for analyze', async () => { + const [entities, info] = await q.run({explainOptions: {}}); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + it('should run a query with explain options and analyze set to false', async () => { + const [entities, info] = await q.run({ + explainOptions: {analyze: false}, + }); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + it('should run a query with explain options and analyze set to true', async () => { + const [entities, info] = await q.run({ + explainOptions: {analyze: true}, + }); + assert.deepStrictEqual( + entities.sort(compare).map(entity => entity.name), + [...characters].sort(compare).map(entity => entity.name) + ); + assert(info.explainMetrics); + checkQueryExecutionStats(info.explainMetrics.executionStats); + assert(info.explainMetrics.planSummary); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunQueryPlan + ); + }); + }); + describe('when calling runQueryStream', () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + it('should call runQueryStream with no explain options specified', async () => { + const stream = await datastore.runQueryStream(q); + const entities: Entities = []; + let savedInfo: RunQueryInfo; + stream.on('data', (data: Entity) => { + assert(datastore.KEY in data); + delete data[datastore.KEY]; + entities.push(data); + }); + stream.on('info', (info: any) => { + savedInfo = info; + }); + await new Promise((resolve, reject) => { + stream.on('end', () => { + assert.deepStrictEqual( + entities + .sort(compare) + .map((entity: Entity) => entity?.name), + [...characters].sort(compare).map(entity => entity.name) + ); + assert(!savedInfo.explainMetrics); + resolve(); + }); + }); + }); + it('should call runQueryStream with explain options specified and analyze not specified', async () => { + const stream = await datastore.runQueryStream(q, { + explainOptions: {}, + }); + const entities: Entities = []; + let savedInfo: RunQueryInfo; + stream.on('data', (data: Entity) => { + assert(datastore.KEY in data); + delete data[datastore.KEY]; + entities.push(data); + }); + stream.on('info', (info: any) => { + savedInfo = info; + }); + await new Promise((resolve, reject) => { + stream.on('end', () => { + assert.deepStrictEqual(entities, []); + assert(savedInfo.explainMetrics); + assert(!savedInfo.explainMetrics.executionStats); + assert.deepStrictEqual( + savedInfo.explainMetrics.planSummary, + expectedRunQueryPlan + ); + resolve(); + }); + }); + }); + it('should call runQueryStream with explain options specified and analyze set to false', async () => { + const stream = await datastore.runQueryStream(q, { + explainOptions: { + analyze: false, + }, + }); + const entities: Entities = []; + let savedInfo: RunQueryInfo; + stream.on('data', (data: Entity) => { + assert(datastore.KEY in data); + delete data[datastore.KEY]; + entities.push(data); + }); + stream.on('info', (info: any) => { + savedInfo = info; + }); + await new Promise((resolve, reject) => { + stream.on('end', () => { + assert.deepStrictEqual(entities, []); + assert(savedInfo.explainMetrics); + assert(!savedInfo.explainMetrics.executionStats); + assert.deepStrictEqual( + savedInfo.explainMetrics.planSummary, + expectedRunQueryPlan + ); + resolve(); + }); + }); + }); + it('should call runQueryStream with explain options specified and analyze set to true', async () => { + const stream = await datastore.runQueryStream(q, { + explainOptions: {analyze: true}, + }); + const entities: Entities = []; + let savedInfo: RunQueryInfo; + stream.on('data', (data: Entity) => { + assert(datastore.KEY in data); + delete data[datastore.KEY]; + entities.push(data); + }); + stream.on('info', (info: any) => { + savedInfo = info; + }); + await new Promise((resolve, reject) => { + stream.on('end', () => { + assert.deepStrictEqual( + entities + .sort(compare) + .map((entity: Entity) => entity?.name), + [...characters].sort(compare).map(entity => entity.name) + ); + assert(savedInfo.explainMetrics); + checkQueryExecutionStats( + savedInfo.explainMetrics.executionStats + ); + assert.deepStrictEqual( + savedInfo.explainMetrics.planSummary, + expectedRunQueryPlan + ); + resolve(); + }); + }); + }); + }); + describe('when using the runAggregationQuery function', () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const expectedAggregationResults = [ + { + property_1: 187, + }, + ]; + it('should run an aggregation query with no mode specified', async () => { + const [entities, info] = + await datastore.runAggregationQuery(aggregate); + assert(!info.explainMetrics); + assert.deepStrictEqual(entities, expectedAggregationResults); + }); + it('should run an aggregation query with explain options specified and analyze not specified', async () => { + const [entities, info] = await datastore.runAggregationQuery( + aggregate, + { + explainOptions: {}, + } + ); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + it('should run an aggregation query with explain options specified and analyze set to false', async () => { + const [entities, info] = await datastore.runAggregationQuery( + aggregate, + { + explainOptions: {analyze: false}, + } + ); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.explainMetrics.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + it('should run an aggregation query with explain options and analyze set to true', async () => { + const [entities, info] = await datastore.runAggregationQuery( + aggregate, + { + explainOptions: {analyze: true}, + } + ); + assert.deepStrictEqual(entities, expectedAggregationResults); + assert(info.explainMetrics); + checkAggregationQueryExecutionStats( + info.explainMetrics.executionStats + ); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + }); + describe('when using run on an AggregationQuery object', () => { + const q = datastore.createQuery('Character').hasAncestor(ancestor); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const expectedAggregationResults = [ + { + property_1: 187, + }, + ]; + it('should run an aggregation query with no explain options', async () => { + const [entities, info] = await aggregate.run(); + assert(!info.explainMetrics); + assert.deepStrictEqual(entities, expectedAggregationResults); + }); + it('should run an aggregation query with explain options and analyze not specified', async () => { + const [entities, info] = await aggregate.run({ + explainOptions: {}, + }); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + it('should run an aggregation query with explain options and analyze set to false', async () => { + const [entities, info] = await aggregate.run({ + explainOptions: { + analyze: false, + }, + }); + assert.deepStrictEqual(entities, []); + assert(info.explainMetrics); + assert(!info.executionStats); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + it('should run an aggregation query with explain options specified and analyze set to true', async () => { + const [entities, info] = await aggregate.run({ + explainOptions: {analyze: true}, + }); + assert.deepStrictEqual(entities, expectedAggregationResults); + assert(info.explainMetrics); + checkAggregationQueryExecutionStats( + info.explainMetrics.executionStats + ); + assert.deepStrictEqual( + info.explainMetrics.planSummary, + expectedRunAggregationQueryPlan + ); + }); + }); + }); describe('with a sum filter', () => { it('should run a sum aggregation', async () => { const q = datastore.createQuery('Character'); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index ab623e0c890..7d936083750 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -19,7 +19,7 @@ import * as proxyquire from 'proxyquire'; import {PassThrough, Readable} from 'stream'; import * as ds from '../src'; -import {Datastore, DatastoreOptions} from '../src'; +import {AggregateField, Datastore, DatastoreOptions} from '../src'; import {Datastore as OriginalDatastore} from '../src'; import { entity, @@ -29,6 +29,7 @@ import { Entities, } from '../src/entity'; import {RequestCallback, RequestConfig} from '../src/request'; +import {ExplainOptions, ExplainMetrics, RunQueryInfo} from '../src/query'; import * as is from 'is'; import * as sinon from 'sinon'; import * as extend from 'extend'; @@ -2461,6 +2462,215 @@ async.each( ); }); }); + + describe('Query Profiling', () => { + const executionStats = { + resultsReturned: '8', + executionDuration: { + seconds: '0', + nanos: 95389000, + }, + readOperations: '8', + debugStats: { + fields: { + index_entries_scanned: { + stringValue: '8', + kind: 'stringValue', + }, + documents_scanned: { + stringValue: '8', + kind: 'stringValue', + }, + }, + }, + }; + const planSummary = { + indexesUsed: [ + { + fields: { + query_scope: { + stringValue: 'Collection Group', + kind: 'stringValue', + }, + properties: { + stringValue: '(__name__ASC)', + kind: 'stringValue', + }, + }, + }, + ], + }; + const expectedPlanSummary = { + indexesUsed: [ + { + query_scope: 'Collection Group', + properties: '(__name__ASC)', + }, + ], + }; + const expectedExecutionStats = { + resultsReturned: 8, + readOperations: 8, + executionDuration: { + seconds: '0', + nanos: 95389000, + }, + debugStats: { + index_entries_scanned: '8', + documents_scanned: '8', + }, + }; + // mode string, mode enum type, explainMetrics, expectedInfo + async.each( + [ + { + modeName: 'ExplainAnalyze', + options: { + explainOptions: { + analyze: true, + }, + }, + expectedInfo: { + explainMetrics: { + planSummary: expectedPlanSummary, + executionStats: expectedExecutionStats, + }, + }, + explainMetrics: { + explainMetrics: { + executionStats, + planSummary, + }, + }, + expectedExplainOptions: { + analyze: true, + }, + }, + { + modeName: 'Explain', + options: { + explainOptions: { + analyze: false, + }, + }, + expectedInfo: { + explainMetrics: { + planSummary: expectedPlanSummary, + }, + }, + explainMetrics: { + explainMetrics: { + planSummary, + }, + }, + expectedExplainOptions: { + analyze: false, + }, + }, + { + modeName: 'Normal', + options: {}, + expectedInfo: {}, + explainMetrics: {}, + expectedExplainOptions: undefined, + }, + ], + (modeOptions: { + modeName: string; + options: { + explainOptions?: ExplainOptions; + }; + explainMetrics: ExplainMetrics; + expectedInfo: RunQueryInfo; + expectedExplainOptions: ExplainOptions; + }) => { + const datastore = new ds.Datastore(); + describe(`for the ${modeOptions.modeName} query mode`, () => { + it('should provide correct request/response data for runQuery', async () => { + // Mock out the request function to compare config passed into it. + datastore.request_ = ( + config: RequestConfig, + callback: RequestCallback + ) => { + assert.deepStrictEqual(config.client, 'DatastoreClient'); + assert.deepStrictEqual(config.method, 'runQuery'); + assert.deepStrictEqual( + config.reqOpts?.explainOptions, + modeOptions.expectedExplainOptions + ); + callback( + null, + Object.assign( + { + batch: { + entityResults: [], + moreResults: 'NO_MORE_RESULTS', + }, + }, + modeOptions.explainMetrics + ) + ); + }; + const ancestor = datastore.key(['Book', 'GoT']); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor); + const [entities, info] = await datastore.runQuery( + q, + modeOptions.options + ); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual( + info, + Object.assign( + {moreResults: 'NO_MORE_RESULTS'}, + modeOptions.expectedInfo + ) + ); + }); + it('should provide correct request/response data for runAggregationQuery', async () => { + // Mock out the request function to compare config passed into it. + datastore.request_ = ( + config: RequestConfig, + callback: RequestCallback + ) => { + assert.deepStrictEqual(config.client, 'DatastoreClient'); + assert.deepStrictEqual(config.method, 'runAggregationQuery'); + assert.deepStrictEqual( + config.reqOpts?.explainOptions, + modeOptions.expectedExplainOptions + ); + callback( + null, + Object.assign( + { + batch: { + aggregationResults: [], + moreResults: 'NO_MORE_RESULTS', + }, + }, + modeOptions.explainMetrics + ) + ); + }; + const ancestor = datastore.key(['Book', 'GoT']); + const q = datastore + .createQuery('Character') + .hasAncestor(ancestor); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('appearances')); + const [entities, info] = await datastore.runAggregationQuery( + aggregate, + modeOptions.options + ); + assert.deepStrictEqual(entities, []); + assert.deepStrictEqual(info, modeOptions.expectedInfo); + }); + }); + } + ); + }); }); } ); From ff465a40a0c0edd81ff7f61f1b8f1a35588a1e26 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 11:25:46 -0400 Subject: [PATCH 782/820] chore(main): release 9.0.0 (#1247) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 17 +++++++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- .../nodejs-datastore/samples/package.json | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 4c18a503b7f..7a48353d9ca 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,23 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [9.0.0](https://github.com/googleapis/nodejs-datastore/compare/v8.7.0...v9.0.0) (2024-05-09) + + +### ⚠ BREAKING CHANGES + +* An existing method `UpdateVehicleLocation` is removed from service `VehicleService` ([#1248](https://github.com/googleapis/nodejs-datastore/issues/1248)) + +### Features + +* Query profiling feature ([#1221](https://github.com/googleapis/nodejs-datastore/issues/1221)) ([414dec4](https://github.com/googleapis/nodejs-datastore/commit/414dec4e1548f551be06df914d6b56362bdc1790)) + + +### Bug Fixes + +* An existing method `UpdateVehicleLocation` is removed from service `VehicleService` ([#1248](https://github.com/googleapis/nodejs-datastore/issues/1248)) ([ba79118](https://github.com/googleapis/nodejs-datastore/commit/ba79118ac00ccc3bb0380ee5693c3b687a7ae9c7)) +* Read time should be used for transaction reads ([#1171](https://github.com/googleapis/nodejs-datastore/issues/1171)) ([73a0a39](https://github.com/googleapis/nodejs-datastore/commit/73a0a39b4c0423a5b4802076cdce80fce7c9adda)) + ## [8.7.0](https://github.com/googleapis/nodejs-datastore/compare/v8.6.0...v8.7.0) (2024-04-02) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index c1674fe0c5e..d790c8fc29b 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "8.7.0", + "version": "9.0.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 6ba2696fadb..8c147e2cdcf 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^8.7.0", + "@google-cloud/datastore": "^9.0.0", "sinon": "^17.0.0" }, "devDependencies": { From 9611980ad648de071e8d1a7185ea1b0f218362b1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 27 May 2024 22:46:34 +0200 Subject: [PATCH 783/820] fix(deps): update dependency sinon to v18 (#1250) --- handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index d790c8fc29b..4028412b94d 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -74,7 +74,7 @@ "p-queue": "^6.6.1", "pack-n-play": "^2.0.0", "proxyquire": "^2.1.3", - "sinon": "^17.0.0", + "sinon": "^18.0.0", "ts-loader": "^8.0.0", "typescript": "^5.1.6", "webpack-cli": "^5.0.0" diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 8c147e2cdcf..013c250c4ed 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@google-cloud/datastore": "^9.0.0", - "sinon": "^17.0.0" + "sinon": "^18.0.0" }, "devDependencies": { "chai": "^4.2.0", From 203ca1b2b9a0bacfdc09e0b5d963cbd6e8332e0f Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:00:08 -0400 Subject: [PATCH 784/820] build: update gapic generator to allow individual location mixin generation (#1251) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: New PropertyMask field which allows partial commits, lookups, and query results PiperOrigin-RevId: 635449160 Source-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e Source-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * build: update gapic generator to allow individual location mixin generation PiperOrigin-RevId: 638462084 Source-Link: https://github.com/googleapis/googleapis/commit/e5d56361fda138e2432f73504c7fd6e1cf4cce14 Source-Link: https://github.com/googleapis/googleapis-gen/commit/d02b2f9239c3e1de647ef37fb10a5e424aa0b7a5 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZDAyYjJmOTIzOWMzZTFkZTY0N2VmMzdmYjEwYTVlNDI0YWEwYjdhNSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- .../google/datastore/v1/datastore.proto | 42 +++ .../nodejs-datastore/protos/protos.d.ts | 115 +++++++ handwritten/nodejs-datastore/protos/protos.js | 304 ++++++++++++++++++ .../nodejs-datastore/protos/protos.json | 21 ++ .../samples/generated/v1/datastore.lookup.js | 7 + .../generated/v1/datastore.run_query.js | 7 + .../snippet_metadata_google.datastore.v1.json | 12 +- .../src/v1/datastore_client.ts | 13 + 8 files changed, 519 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index fbbabb0a303..92b5038ea9c 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -173,6 +173,14 @@ message LookupRequest { // Required. Keys of entities to look up. repeated Key keys = 3 [(google.api.field_behavior) = REQUIRED]; + + // The properties to return. Defaults to returning all properties. + // + // If this field is set and an entity has a property not referenced in the + // mask, it will be absent from [LookupResponse.found.entity.properties][]. + // + // The entity's key is always returned. + PropertyMask property_mask = 5; } // The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. @@ -234,6 +242,13 @@ message RunQueryRequest { GqlQuery gql_query = 7; } + // The properties to return. + // This field must not be set for a projection query. + // + // See + // [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask]. + PropertyMask property_mask = 10; + // Optional. Explain options for the query. If set, additional query // statistics will be returned. If not, only query results will be returned. ExplainOptions explain_options = 12 [(google.api.field_behavior) = OPTIONAL]; @@ -526,6 +541,16 @@ message Mutation { // mutation conflicts. google.protobuf.Timestamp update_time = 11; } + + // The properties to write in this mutation. + // None of the properties in the mask may have a reserved name, except for + // `__key__`. + // This field is ignored for `delete`. + // + // If the entity already exists, only properties referenced in the mask are + // updated, others are left untouched. + // Properties referenced in the mask but not in the entity are deleted. + PropertyMask property_mask = 9; } // The result of applying a mutation. @@ -555,6 +580,23 @@ message MutationResult { bool conflict_detected = 5; } +// The set of arbitrarily nested property paths used to restrict an operation to +// only a subset of properties in an entity. +message PropertyMask { + // The paths to the properties covered by this mask. + // + // A path is a list of property names separated by dots (`.`), for example + // `foo.bar` means the property `bar` inside the entity property `foo` inside + // the entity associated with this path. + // + // If a property name contains a dot `.` or a backslash `\`, then that + // name must be escaped. + // + // A path must not be empty, and may not reference a value inside an + // [array value][google.datastore.v1.Value.array_value]. + repeated string paths = 1; +} + // The options shared by read requests. message ReadOptions { // The possible values for read consistencies. diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 51708ad0555..1b4893f8d6c 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -5560,6 +5560,9 @@ export namespace google { /** LookupRequest keys */ keys?: (google.datastore.v1.IKey[]|null); + + /** LookupRequest propertyMask */ + propertyMask?: (google.datastore.v1.IPropertyMask|null); } /** Represents a LookupRequest. */ @@ -5583,6 +5586,9 @@ export namespace google { /** LookupRequest keys. */ public keys: google.datastore.v1.IKey[]; + /** LookupRequest propertyMask. */ + public propertyMask?: (google.datastore.v1.IPropertyMask|null); + /** * Creates a new LookupRequest instance using the specified properties. * @param [properties] Properties to set @@ -5803,6 +5809,9 @@ export namespace google { /** RunQueryRequest gqlQuery */ gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunQueryRequest propertyMask */ + propertyMask?: (google.datastore.v1.IPropertyMask|null); + /** RunQueryRequest explainOptions */ explainOptions?: (google.datastore.v1.IExplainOptions|null); } @@ -5834,6 +5843,9 @@ export namespace google { /** RunQueryRequest gqlQuery. */ public gqlQuery?: (google.datastore.v1.IGqlQuery|null); + /** RunQueryRequest propertyMask. */ + public propertyMask?: (google.datastore.v1.IPropertyMask|null); + /** RunQueryRequest explainOptions. */ public explainOptions?: (google.datastore.v1.IExplainOptions|null); @@ -7365,6 +7377,9 @@ export namespace google { /** Mutation updateTime */ updateTime?: (google.protobuf.ITimestamp|null); + + /** Mutation propertyMask */ + propertyMask?: (google.datastore.v1.IPropertyMask|null); } /** Represents a Mutation. */ @@ -7394,6 +7409,9 @@ export namespace google { /** Mutation updateTime. */ public updateTime?: (google.protobuf.ITimestamp|null); + /** Mutation propertyMask. */ + public propertyMask?: (google.datastore.v1.IPropertyMask|null); + /** Mutation operation. */ public operation?: ("insert"|"update"|"upsert"|"delete"); @@ -7599,6 +7617,103 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + /** Properties of a PropertyMask. */ + interface IPropertyMask { + + /** PropertyMask paths */ + paths?: (string[]|null); + } + + /** Represents a PropertyMask. */ + class PropertyMask implements IPropertyMask { + + /** + * Constructs a new PropertyMask. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyMask); + + /** PropertyMask paths. */ + public paths: string[]; + + /** + * Creates a new PropertyMask instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyMask instance + */ + public static create(properties?: google.datastore.v1.IPropertyMask): google.datastore.v1.PropertyMask; + + /** + * Encodes the specified PropertyMask message. Does not implicitly {@link google.datastore.v1.PropertyMask.verify|verify} messages. + * @param message PropertyMask message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyMask, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyMask message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyMask.verify|verify} messages. + * @param message PropertyMask message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyMask, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyMask message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyMask + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyMask; + + /** + * Decodes a PropertyMask message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyMask + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyMask; + + /** + * Verifies a PropertyMask message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyMask message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyMask + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyMask; + + /** + * Creates a plain object from a PropertyMask message. Also converts values to other types if specified. + * @param message PropertyMask + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyMask, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyMask to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PropertyMask + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + /** Properties of a ReadOptions. */ interface IReadOptions { diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index dae8035f5dd..7cb01c81377 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -14055,6 +14055,7 @@ * @property {string|null} [databaseId] LookupRequest databaseId * @property {google.datastore.v1.IReadOptions|null} [readOptions] LookupRequest readOptions * @property {Array.|null} [keys] LookupRequest keys + * @property {google.datastore.v1.IPropertyMask|null} [propertyMask] LookupRequest propertyMask */ /** @@ -14105,6 +14106,14 @@ */ LookupRequest.prototype.keys = $util.emptyArray; + /** + * LookupRequest propertyMask. + * @member {google.datastore.v1.IPropertyMask|null|undefined} propertyMask + * @memberof google.datastore.v1.LookupRequest + * @instance + */ + LookupRequest.prototype.propertyMask = null; + /** * Creates a new LookupRequest instance using the specified properties. * @function create @@ -14134,6 +14143,8 @@ if (message.keys != null && message.keys.length) for (var i = 0; i < message.keys.length; ++i) $root.google.datastore.v1.Key.encode(message.keys[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.propertyMask != null && Object.hasOwnProperty.call(message, "propertyMask")) + $root.google.datastore.v1.PropertyMask.encode(message.propertyMask, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) @@ -14190,6 +14201,10 @@ message.keys.push($root.google.datastore.v1.Key.decode(reader, reader.uint32())); break; } + case 5: { + message.propertyMask = $root.google.datastore.v1.PropertyMask.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -14245,6 +14260,11 @@ return "keys." + error; } } + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) { + var error = $root.google.datastore.v1.PropertyMask.verify(message.propertyMask); + if (error) + return "propertyMask." + error; + } return null; }; @@ -14279,6 +14299,11 @@ message.keys[i] = $root.google.datastore.v1.Key.fromObject(object.keys[i]); } } + if (object.propertyMask != null) { + if (typeof object.propertyMask !== "object") + throw TypeError(".google.datastore.v1.LookupRequest.propertyMask: object expected"); + message.propertyMask = $root.google.datastore.v1.PropertyMask.fromObject(object.propertyMask); + } return message; }; @@ -14299,6 +14324,7 @@ object.keys = []; if (options.defaults) { object.readOptions = null; + object.propertyMask = null; object.projectId = ""; object.databaseId = ""; } @@ -14309,6 +14335,8 @@ for (var j = 0; j < message.keys.length; ++j) object.keys[j] = $root.google.datastore.v1.Key.toObject(message.keys[j], options); } + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) + object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options); if (message.projectId != null && message.hasOwnProperty("projectId")) object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) @@ -14732,6 +14760,7 @@ * @property {google.datastore.v1.IReadOptions|null} [readOptions] RunQueryRequest readOptions * @property {google.datastore.v1.IQuery|null} [query] RunQueryRequest query * @property {google.datastore.v1.IGqlQuery|null} [gqlQuery] RunQueryRequest gqlQuery + * @property {google.datastore.v1.IPropertyMask|null} [propertyMask] RunQueryRequest propertyMask * @property {google.datastore.v1.IExplainOptions|null} [explainOptions] RunQueryRequest explainOptions */ @@ -14798,6 +14827,14 @@ */ RunQueryRequest.prototype.gqlQuery = null; + /** + * RunQueryRequest propertyMask. + * @member {google.datastore.v1.IPropertyMask|null|undefined} propertyMask + * @memberof google.datastore.v1.RunQueryRequest + * @instance + */ + RunQueryRequest.prototype.propertyMask = null; + /** * RunQueryRequest explainOptions. * @member {google.datastore.v1.IExplainOptions|null|undefined} explainOptions @@ -14856,6 +14893,8 @@ writer.uint32(/* id 8, wireType 2 =*/66).string(message.projectId); if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.databaseId); + if (message.propertyMask != null && Object.hasOwnProperty.call(message, "propertyMask")) + $root.google.datastore.v1.PropertyMask.encode(message.propertyMask, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); if (message.explainOptions != null && Object.hasOwnProperty.call(message, "explainOptions")) $root.google.datastore.v1.ExplainOptions.encode(message.explainOptions, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); return writer; @@ -14916,6 +14955,10 @@ message.gqlQuery = $root.google.datastore.v1.GqlQuery.decode(reader, reader.uint32()); break; } + case 10: { + message.propertyMask = $root.google.datastore.v1.PropertyMask.decode(reader, reader.uint32()); + break; + } case 12: { message.explainOptions = $root.google.datastore.v1.ExplainOptions.decode(reader, reader.uint32()); break; @@ -14990,6 +15033,11 @@ return "gqlQuery." + error; } } + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) { + var error = $root.google.datastore.v1.PropertyMask.verify(message.propertyMask); + if (error) + return "propertyMask." + error; + } if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) { var error = $root.google.datastore.v1.ExplainOptions.verify(message.explainOptions); if (error) @@ -15034,6 +15082,11 @@ throw TypeError(".google.datastore.v1.RunQueryRequest.gqlQuery: object expected"); message.gqlQuery = $root.google.datastore.v1.GqlQuery.fromObject(object.gqlQuery); } + if (object.propertyMask != null) { + if (typeof object.propertyMask !== "object") + throw TypeError(".google.datastore.v1.RunQueryRequest.propertyMask: object expected"); + message.propertyMask = $root.google.datastore.v1.PropertyMask.fromObject(object.propertyMask); + } if (object.explainOptions != null) { if (typeof object.explainOptions !== "object") throw TypeError(".google.datastore.v1.RunQueryRequest.explainOptions: object expected"); @@ -15060,6 +15113,7 @@ object.partitionId = null; object.projectId = ""; object.databaseId = ""; + object.propertyMask = null; object.explainOptions = null; } if (message.readOptions != null && message.hasOwnProperty("readOptions")) @@ -15080,6 +15134,8 @@ object.projectId = message.projectId; if (message.databaseId != null && message.hasOwnProperty("databaseId")) object.databaseId = message.databaseId; + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) + object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options); if (message.explainOptions != null && message.hasOwnProperty("explainOptions")) object.explainOptions = $root.google.datastore.v1.ExplainOptions.toObject(message.explainOptions, options); return object; @@ -18650,6 +18706,7 @@ * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete * @property {number|Long|null} [baseVersion] Mutation baseVersion * @property {google.protobuf.ITimestamp|null} [updateTime] Mutation updateTime + * @property {google.datastore.v1.IPropertyMask|null} [propertyMask] Mutation propertyMask */ /** @@ -18715,6 +18772,14 @@ */ Mutation.prototype.updateTime = null; + /** + * Mutation propertyMask. + * @member {google.datastore.v1.IPropertyMask|null|undefined} propertyMask + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.propertyMask = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -18774,6 +18839,8 @@ $root.google.datastore.v1.Key.encode(message["delete"], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); if (message.baseVersion != null && Object.hasOwnProperty.call(message, "baseVersion")) writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); + if (message.propertyMask != null && Object.hasOwnProperty.call(message, "propertyMask")) + $root.google.datastore.v1.PropertyMask.encode(message.propertyMask, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); return writer; @@ -18834,6 +18901,10 @@ message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } + case 9: { + message.propertyMask = $root.google.datastore.v1.PropertyMask.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -18923,6 +18994,11 @@ return "updateTime." + error; } } + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) { + var error = $root.google.datastore.v1.PropertyMask.verify(message.propertyMask); + if (error) + return "propertyMask." + error; + } return null; }; @@ -18972,6 +19048,11 @@ throw TypeError(".google.datastore.v1.Mutation.updateTime: object expected"); message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); } + if (object.propertyMask != null) { + if (typeof object.propertyMask !== "object") + throw TypeError(".google.datastore.v1.Mutation.propertyMask: object expected"); + message.propertyMask = $root.google.datastore.v1.PropertyMask.fromObject(object.propertyMask); + } return message; }; @@ -18988,6 +19069,8 @@ if (!options) options = {}; var object = {}; + if (options.defaults) + object.propertyMask = null; if (message.insert != null && message.hasOwnProperty("insert")) { object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); if (options.oneofs) @@ -19016,6 +19099,8 @@ if (options.oneofs) object.conflictDetectionStrategy = "baseVersion"; } + if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) + object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options); if (message.updateTime != null && message.hasOwnProperty("updateTime")) { object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); if (options.oneofs) @@ -19378,6 +19463,225 @@ return MutationResult; })(); + v1.PropertyMask = (function() { + + /** + * Properties of a PropertyMask. + * @memberof google.datastore.v1 + * @interface IPropertyMask + * @property {Array.|null} [paths] PropertyMask paths + */ + + /** + * Constructs a new PropertyMask. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyMask. + * @implements IPropertyMask + * @constructor + * @param {google.datastore.v1.IPropertyMask=} [properties] Properties to set + */ + function PropertyMask(properties) { + this.paths = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PropertyMask paths. + * @member {Array.} paths + * @memberof google.datastore.v1.PropertyMask + * @instance + */ + PropertyMask.prototype.paths = $util.emptyArray; + + /** + * Creates a new PropertyMask instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {google.datastore.v1.IPropertyMask=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyMask} PropertyMask instance + */ + PropertyMask.create = function create(properties) { + return new PropertyMask(properties); + }; + + /** + * Encodes the specified PropertyMask message. Does not implicitly {@link google.datastore.v1.PropertyMask.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {google.datastore.v1.IPropertyMask} message PropertyMask message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyMask.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.paths != null && message.paths.length) + for (var i = 0; i < message.paths.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.paths[i]); + return writer; + }; + + /** + * Encodes the specified PropertyMask message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyMask.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {google.datastore.v1.IPropertyMask} message PropertyMask message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyMask.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyMask message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyMask} PropertyMask + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyMask.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyMask(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (!(message.paths && message.paths.length)) + message.paths = []; + message.paths.push(reader.string()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PropertyMask message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyMask} PropertyMask + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyMask.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyMask message. + * @function verify + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyMask.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.paths != null && message.hasOwnProperty("paths")) { + if (!Array.isArray(message.paths)) + return "paths: array expected"; + for (var i = 0; i < message.paths.length; ++i) + if (!$util.isString(message.paths[i])) + return "paths: string[] expected"; + } + return null; + }; + + /** + * Creates a PropertyMask message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyMask} PropertyMask + */ + PropertyMask.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyMask) + return object; + var message = new $root.google.datastore.v1.PropertyMask(); + if (object.paths) { + if (!Array.isArray(object.paths)) + throw TypeError(".google.datastore.v1.PropertyMask.paths: array expected"); + message.paths = []; + for (var i = 0; i < object.paths.length; ++i) + message.paths[i] = String(object.paths[i]); + } + return message; + }; + + /** + * Creates a plain object from a PropertyMask message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {google.datastore.v1.PropertyMask} message PropertyMask + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyMask.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.paths = []; + if (message.paths && message.paths.length) { + object.paths = []; + for (var j = 0; j < message.paths.length; ++j) + object.paths[j] = message.paths[j]; + } + return object; + }; + + /** + * Converts this PropertyMask to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyMask + * @instance + * @returns {Object.} JSON object + */ + PropertyMask.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PropertyMask + * @function getTypeUrl + * @memberof google.datastore.v1.PropertyMask + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PropertyMask.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PropertyMask"; + }; + + return PropertyMask; + })(); + v1.ReadOptions = (function() { /** diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index c45a5996d98..2c79f01f045 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1459,6 +1459,10 @@ "options": { "(google.api.field_behavior)": "REQUIRED" } + }, + "propertyMask": { + "type": "PropertyMask", + "id": 5 } } }, @@ -1526,6 +1530,10 @@ "type": "GqlQuery", "id": 7 }, + "propertyMask": { + "type": "PropertyMask", + "id": 10 + }, "explainOptions": { "type": "ExplainOptions", "id": 12, @@ -1838,6 +1846,10 @@ "updateTime": { "type": "google.protobuf.Timestamp", "id": 11 + }, + "propertyMask": { + "type": "PropertyMask", + "id": 9 } } }, @@ -1865,6 +1877,15 @@ } } }, + "PropertyMask": { + "fields": { + "paths": { + "rule": "repeated", + "type": "string", + "id": 1 + } + } + }, "ReadOptions": { "oneofs": { "consistencyType": { diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js index 9b69a1c4180..6d15a904813 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js @@ -46,6 +46,13 @@ function main(projectId, keys) { * Required. Keys of entities to look up. */ // const keys = [1,2,3,4] + /** + * The properties to return. Defaults to returning all properties. + * If this field is set and an entity has a property not referenced in the + * mask, it will be absent from LookupResponse.found.entity.properties . + * The entity's key is always returned. + */ + // const propertyMask = {} // Imports the Datastore library const {DatastoreClient} = require('@google-cloud/datastore').v1; diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js index 2a5f9c182f8..b4c6976b342 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js +++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js @@ -57,6 +57,13 @@ function main(projectId) { * The GQL query to run. This query must be a non-aggregation query. */ // const gqlQuery = {} + /** + * The properties to return. + * This field must not be set for a projection query. + * See + * LookupRequest.property_mask google.datastore.v1.LookupRequest.property_mask. + */ + // const propertyMask = {} /** * Optional. Explain options for the query. If set, additional query * statistics will be returned. If not, only query results will be returned. diff --git a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json index 36dda688d9a..ea85b6beb2c 100644 --- a/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json +++ b/handwritten/nodejs-datastore/samples/generated/v1/snippet_metadata_google.datastore.v1.json @@ -22,7 +22,7 @@ "segments": [ { "start": 25, - "end": 68, + "end": 75, "type": "FULL" } ], @@ -46,6 +46,10 @@ { "name": "keys", "type": "TYPE_MESSAGE[]" + }, + { + "name": "property_mask", + "type": ".google.datastore.v1.PropertyMask" } ], "resultType": ".google.datastore.v1.LookupResponse", @@ -74,7 +78,7 @@ "segments": [ { "start": 25, - "end": 83, + "end": 90, "type": "FULL" } ], @@ -107,6 +111,10 @@ "name": "gql_query", "type": ".google.datastore.v1.GqlQuery" }, + { + "name": "property_mask", + "type": ".google.datastore.v1.PropertyMask" + }, { "name": "explain_options", "type": ".google.datastore.v1.ExplainOptions" diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts index e42b2a7090c..58e07a3c65e 100644 --- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts +++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts @@ -426,6 +426,13 @@ export class DatastoreClient { * The options for this lookup request. * @param {number[]} request.keys * Required. Keys of entities to look up. + * @param {google.datastore.v1.PropertyMask} request.propertyMask + * The properties to return. Defaults to returning all properties. + * + * If this field is set and an entity has a property not referenced in the + * mask, it will be absent from {@link protos.|LookupResponse.found.entity.properties}. + * + * The entity's key is always returned. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -543,6 +550,12 @@ export class DatastoreClient { * The query to run. * @param {google.datastore.v1.GqlQuery} request.gqlQuery * The GQL query to run. This query must be a non-aggregation query. + * @param {google.datastore.v1.PropertyMask} request.propertyMask + * The properties to return. + * This field must not be set for a projection query. + * + * See + * {@link protos.google.datastore.v1.LookupRequest.property_mask|LookupRequest.property_mask}. * @param {google.datastore.v1.ExplainOptions} [request.explainOptions] * Optional. Explain options for the query. If set, additional query * statistics will be returned. If not, only query results will be returned. From 514237b2ea05581669eac8ef2773ba9eee17fa85 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 19 Jun 2024 11:20:35 -0400 Subject: [PATCH 785/820] docs(samples): Query profiling feature samples (#1253) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add the right files from the preview branch Copy paste over the files from the preview branch * Thread Query mode through the library Thread the query mode through the client library. Allow calls to get made using the query mode. * Create a basic workflow for testing profiling grpc This code allows basic query profiling to work and creates a basic code snippet that can be used to make it work. * This test makes a call to the mock server This will be useful for debugging grpc issues. * Now the test works with the mock server in repo This mock server will be super useful for ensuring that the right data gets transmitted in private preview so that we can confirm the client library is working correctly. * Delete js file We use the ts file instead. * Try explain See if Explain gets passed along to the mock server. * Update protos.json Protos.json is needed to pass the plan along. * Try an aggregate query * Add test to catch breaking change to return type Make sure changes don’t break the use of this callback by adding this test. * Try redefining RunQueryCallback Define it with a more general data structure. * Revert Gapic changes to match head branch The merge caused generated files to have a diff. The diff should not be in the PR. * Remove only only should not be used here * Add data structures for return values Data structures need to be added for the return values that contain stats. * Add plumbing to send stats info back Add stats to info if it is available. If there are no results then end the stream and send the info back. This way, stats will always be sent in info if they are available and the program won ’t break if there are no results. * Set test to only that we intend to explore * Add a comment about stats Explain what happens when the result set is empty. Just send the stats back. * Delete the mock server code The mock server code was used for debugging and now we don’t need it since the service is working. * Remove calls to nightly Calls to nightly don’t have a second database to work with. Regular calls work now so nightly calls are not necessary. * Introduce profiling tests again Bring the query profiling tests back. * Revert "Remove calls to nightly" This reverts commit 040d0a5718e913b1a5b31e37a13b0a5daa74f4a1. * Stats are optional Stats do not necessarily come from the server. * Write some tests to test each mode Each query profiling mode needs to be explored. * Add code for parsing the stats returned Stats returned needs to be parsed by a special library that will remove the complexities of the Struct object. * Add dependencies necessary for parsing A library is needed for parsing the Struct values. Add the libraries and use them. * Add assertions for the expected plan/stats Expected plan and expected stats should be used in the tests. This ensures the tests check for the proper stats values. * Refactor info with stats build and add info to cb Add a specific type for the runAggregationQuery callback so that it can now support the info parameter. In order to allow runAggregationQuery to make use of creating info, we also refactor info construction into a separate function. * Modify the parser for runAggregationQuery The parser for runAggregationQuery should have a deterministic process for computing results. * Add asserts for the return values of runAggregate Make sure that the entities and the plan are correct. * Complete tests for runQuery and aggregation query The assertion checks for runQuery and runAggregationQuery should be done and they test each mode. * Add tests for Query and AggregateQuery Tests should ensure run functions work properly for the run function on both of these objects. * Add initial transaction tests for runQuery The runQuery tests have been added which get the right results. Next the right assert statements and info collection will be added to the tests. * Add checks on info to the transaction tests Checks against info are needed to be sure that stats are passed back to the caller properly. * Fix tests for aggregate queries in transactions Add tests for running aggregate queries inside transactions. * Ran linter, added all tests for runQueryStream Added a temporary test for runQueryStream. Also ran the linter. * Change parsing of return values Return values are going to look different for users. Change the code so that the parsing is done differently. * Reformat the info function This function is more readable if we eliminate some of the tertiary arguments and complex logic for building the info object. * Change tests as a result of structure changes The structure of the QueryInfo object is changed. Modify the tests to work with the new structure. * Use import and not require import is better for catching compile time errors and is more customary. * Better spacing for imports Change the spacing so that the imports are all in one place. * Introduce a single function for checking the execution stats. Make sure all the tests use this function. Pull out the run query plan and the run aggregation query plan. * Fix the tests so that they call the right fns Add assertion checks to check the query plan against some expected value and make sure the right assertion checks are done for the right tests. * Finish the tests for the streaming call Finish the tests for specifying no mode, specifying normal mode, EXPLAIN mode and EXPLAIN_ANALYZE mode. Make sure the tests pass. * Delete code that will not be used anymore There is a lot of boilerplate code that was needed for the streaming call. Get rid of it here. * Make changes to match new proto Code change to use new proto was made so that code will compile. * Add Explain Metrics interface Make slight change to withBeginTransaction so that code compiles under new structure. Also group plan and statistics under the new explainMetrics interface. * Remove bytesReturned from test Proto should not be passing along bytesReturned anymore. * Fix system tests to use values matching new struct * Remove calls to nightly Feature is now fully ready so nightly tests should not be done because the feature is expected to work in production. * Query profiling Add test for runQuery. Send back plan summary and execution stats. * Add a test for runAggregationQuery runAggregationQuery needs a unit test to validate request/return data. * Parameterize the query profiling tests * run the linter * Export Query Mode in index.ts Query mode needs to be exported so that it can be accessed by the user. * Query profiling samples Add query profiling samples for runQuery and runAggregationQuery. * Change data structure types to match return values * Remove TODO * remove import * delete the query profiling samples * Remove abstraction for RunQueryCallback * Change the comment to describe new data types * Remove TODO * linting fixes * Update type to include runAggregationQuery * Put else back in This change is actually simpler because it doesn’t introduce a let. It is also a much smaller diff. * mode is not needed in sharedQueryOptions * Revert "mode is not needed in sharedQueryOptions" This reverts commit b8d0c63aed8ea0dec18efe61ae5022e853a70c78. * Rearrange imports rearrange the imports to simplify the diff. * Undo old query profiling changes * Remove dependencies that are not needed * Pass analyze true in * Fix the flakey test - sort values * Move code out that is responsible for importing data into the datastore database in preparation for the samples. Ensure query profiling output in the script matches what the sample tests expect. * Write the sample for aggregate queries * Add a description * Rename the sample files * Set files up so that they can be parsed Rename the files too * Add some scripts for just the explain option * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Remove logging of entities from the samples * Update samples/queryProfileExplain.js Co-authored-by: kolea2 <45548808+kolea2@users.noreply.github.com> * Update samples/queryProfileExplain.js Co-authored-by: kolea2 <45548808+kolea2@users.noreply.github.com> * Update descriptions * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Don’t sort in the sample. Make the tests indifferent about the order so that sorting isn’t required in the samples. * Fix titles * Add header * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: kolea2 <45548808+kolea2@users.noreply.github.com> --- handwritten/nodejs-datastore/README.md | 4 + .../nodejs-datastore/samples/README.md | 80 +++++++++++++++++++ .../nodejs-datastore/samples/queryFilterOr.js | 1 - .../samples/queryProfileExplain.js | 38 +++++++++ .../samples/queryProfileExplainAggregation.js | 41 ++++++++++ .../samples/queryProfileExplainAnalyze.js | 41 ++++++++++ .../queryProfileExplainAnalyzeAggregation.js | 45 +++++++++++ .../samples/test/helpers/populate-data.js | 56 +++++++++++++ .../samples/test/helpers/sorting.js | 22 +++++ .../samples/test/queryFilterOr.test.js | 48 ++--------- .../samples/test/queryProfiling.test.js | 45 +++++++++++ 11 files changed, 377 insertions(+), 44 deletions(-) create mode 100644 handwritten/nodejs-datastore/samples/queryProfileExplain.js create mode 100644 handwritten/nodejs-datastore/samples/queryProfileExplainAggregation.js create mode 100644 handwritten/nodejs-datastore/samples/queryProfileExplainAnalyze.js create mode 100644 handwritten/nodejs-datastore/samples/queryProfileExplainAnalyzeAggregation.js create mode 100644 handwritten/nodejs-datastore/samples/test/helpers/populate-data.js create mode 100644 handwritten/nodejs-datastore/samples/test/helpers/sorting.js create mode 100644 handwritten/nodejs-datastore/samples/test/queryProfiling.test.js diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index cfcc73d126a..ad15286298e 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -109,6 +109,10 @@ Samples are in the [`samples/`](https://github.com/googleapis/nodejs-datastore/t | Indexes.get | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.get.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.get.js,samples/README.md) | | Indexes.list | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/indexes.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/indexes.list.js,samples/README.md) | | Create a union between two filters | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryFilterOr.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryFilterOr.js,samples/README.md) | +| Run query explain (regular query) | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplain.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplain.js,samples/README.md) | +| Run query explain (aggregate query) | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAggregation.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAggregation.js,samples/README.md) | +| Run query explain analyze (regular query) | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAnalyze.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAnalyze.js,samples/README.md) | +| Run query explain analyze (aggregate query) | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAnalyzeAggregation.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAnalyzeAggregation.js,samples/README.md) | | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | diff --git a/handwritten/nodejs-datastore/samples/README.md b/handwritten/nodejs-datastore/samples/README.md index 028aff5fcfa..2aa9dee6e6f 100644 --- a/handwritten/nodejs-datastore/samples/README.md +++ b/handwritten/nodejs-datastore/samples/README.md @@ -19,6 +19,10 @@ * [Indexes.get](#indexes.get) * [Indexes.list](#indexes.list) * [Create a union between two filters](#create-a-union-between-two-filters) + * [Run query explain (regular query)](#run-query-explain-regular-query) + * [Run query explain (aggregate query)](#run-query-explain-aggregate-query) + * [Run query explain analyze (regular query)](#run-query-explain-analyze-regular-query) + * [Run query explain analyze (aggregate query)](#run-query-explain-analyze-aggregate-query) * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) @@ -162,6 +166,82 @@ __Usage:__ +### Run query explain (regular query) + +Run query explain for a standard query and print query explain metrics + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplain.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplain.js,samples/README.md) + +__Usage:__ + + +`node samples/queryProfileExplain.js` + + +----- + + + + +### Run query explain (aggregate query) + +Run query explain for an aggregate query and print query explain metrics + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAggregation.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAggregation.js,samples/README.md) + +__Usage:__ + + +`node samples/queryProfileExplainAggregation.js` + + +----- + + + + +### Run query explain analyze (regular query) + +Run query explain analyze for a standard query and print query explain metrics + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAnalyze.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAnalyze.js,samples/README.md) + +__Usage:__ + + +`node samples/queryProfileExplainAnalyze.js` + + +----- + + + + +### Run query explain analyze (aggregate query) + +Run query explain analyze for an aggregate query and print query explain metrics + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/queryProfileExplainAnalyzeAggregation.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/queryProfileExplainAnalyzeAggregation.js,samples/README.md) + +__Usage:__ + + +`node samples/queryProfileExplainAnalyzeAggregation.js` + + +----- + + + + ### Quickstart View the [source code](https://github.com/googleapis/nodejs-datastore/blob/main/samples/quickstart.js). diff --git a/handwritten/nodejs-datastore/samples/queryFilterOr.js b/handwritten/nodejs-datastore/samples/queryFilterOr.js index ee87c5d3e2d..80913cd9c8a 100644 --- a/handwritten/nodejs-datastore/samples/queryFilterOr.js +++ b/handwritten/nodejs-datastore/samples/queryFilterOr.js @@ -41,7 +41,6 @@ async function main() { ); const [entities] = await datastore.runQuery(query); - entities.sort(); for (const entity of entities) { console.log(`Entity found: ${entity['description']}`); } diff --git a/handwritten/nodejs-datastore/samples/queryProfileExplain.js b/handwritten/nodejs-datastore/samples/queryProfileExplain.js new file mode 100644 index 00000000000..c5405a51b80 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/queryProfileExplain.js @@ -0,0 +1,38 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata: +// title: Run query explain (regular query) +// description: Run query explain for a standard query and print query explain metrics + +async function main() { + // [START datastore_query_explain_entity] + + // Imports the Cloud Datastore + const {Datastore} = require('@google-cloud/datastore'); + + // Instantiate the Datastore + const datastore = new Datastore(); + const q = datastore.createQuery('Task'); + const [, info] = await datastore.runQuery(q, { + explainOptions: {analyze: false}, + }); + console.log(`info: ${Object.keys(info.explainMetrics)}`); + // [END datastore_query_explain_entity] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/queryProfileExplainAggregation.js b/handwritten/nodejs-datastore/samples/queryProfileExplainAggregation.js new file mode 100644 index 00000000000..9f192aeafc1 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/queryProfileExplainAggregation.js @@ -0,0 +1,41 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata: +// title: Run query explain (aggregate query) +// description: Run query explain for an aggregate query and print query explain metrics + +async function main() { + // [START datastore_query_explain_aggregation] + + // Imports the Cloud Datastore + const {Datastore, AggregateField} = require('@google-cloud/datastore'); + + // Instantiate the Datastore + const datastore = new Datastore(); + const q = datastore.createQuery('Task'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('created')); + const [, info] = await datastore.runAggregationQuery(aggregate, { + explainOptions: {analyze: false}, + }); + console.log(`info: ${Object.keys(info.explainMetrics)}`); + // [END datastore_query_explain_aggregation] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyze.js b/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyze.js new file mode 100644 index 00000000000..1b9a658ef00 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyze.js @@ -0,0 +1,41 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata: +// title: Run query explain analyze (regular query) +// description: Run query explain analyze for a standard query and print query explain metrics + +async function main() { + // [START datastore_query_explain_analyze_entity] + + // Imports the Cloud Datastore + const {Datastore} = require('@google-cloud/datastore'); + + // Instantiate the Datastore + const datastore = new Datastore(); + const q = datastore.createQuery('Task'); + const [entities, info] = await datastore.runQuery(q, { + explainOptions: {analyze: true}, + }); + for (const entity of entities) { + console.log(`Entity found: ${entity['description']}`); + } + console.log(`info: ${Object.keys(info.explainMetrics)}`); + // [END datastore_query_explain_analyze_entity] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyzeAggregation.js b/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyzeAggregation.js new file mode 100644 index 00000000000..7eb26b6704f --- /dev/null +++ b/handwritten/nodejs-datastore/samples/queryProfileExplainAnalyzeAggregation.js @@ -0,0 +1,45 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// sample-metadata: +// title: Run query explain analyze (aggregate query) +// description: Run query explain analyze for an aggregate query and print query explain metrics + +async function main() { + // [START datastore_query_explain_analyze_aggregation] + + // Imports the Cloud Datastore + const {Datastore, AggregateField} = require('@google-cloud/datastore'); + + // Instantiate the Datastore + const datastore = new Datastore(); + const q = datastore.createQuery('Task'); + const aggregate = datastore + .createAggregationQuery(q) + .addAggregation(AggregateField.sum('created')); + + const [entities, info] = await datastore.runAggregationQuery(aggregate, { + explainOptions: {analyze: true}, + }); + for (const entity of entities) { + console.log(`Entity found: ${JSON.stringify(entity)}`); + } + console.log(`info: ${Object.keys(info.explainMetrics)}`); + // [END datastore_query_explain_analyze_aggregation] +} + +const args = process.argv.slice(2); +main(...args).catch(console.error); diff --git a/handwritten/nodejs-datastore/samples/test/helpers/populate-data.js b/handwritten/nodejs-datastore/samples/test/helpers/populate-data.js new file mode 100644 index 00000000000..85d19dbdf4b --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/helpers/populate-data.js @@ -0,0 +1,56 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* eslint-disable */ + +/* +This module is used in various samples to set datastore data to a fixed state +so that the output of the sample is predictable. + */ + +const {after, before} = require('mocha'); +const {Datastore} = require('@google-cloud/datastore'); +let taskKey1, taskKey2; +const datastore = new Datastore(); + +before(async () => { + taskKey1 = datastore.key('Task'); + const entity1 = { + key: taskKey1, + data: { + description: 'Buy milk', + }, + }; + + taskKey2 = datastore.key('Task'); + const entity2 = { + key: taskKey2, + data: { + description: 'Feed cats', + }, + }; + + // Ensure the datastore database has no existing data. + const query = datastore.createQuery('Task'); + const [entities] = await datastore.runQuery(query); + await datastore.delete(entities.map(entity => entity[datastore.KEY])); + + await datastore.upsert(entity1); + await datastore.upsert(entity2); +}); + +after(async () => { + await datastore.delete(taskKey1); + await datastore.delete(taskKey2); +}); diff --git a/handwritten/nodejs-datastore/samples/test/helpers/sorting.js b/handwritten/nodejs-datastore/samples/test/helpers/sorting.js new file mode 100644 index 00000000000..47749dd1ed8 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/helpers/sorting.js @@ -0,0 +1,22 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This function is used for comparing console output when the +// order of the console output doesn't matter. + +function sortConsoleOutput(output) { + return output.split('\n').sort().join('\n'); +} + +module.exports = sortConsoleOutput; diff --git a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js index 14df87e0c4e..c1aa990ee1a 100644 --- a/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js +++ b/handwritten/nodejs-datastore/samples/test/queryFilterOr.test.js @@ -16,15 +16,13 @@ 'use strict'; -const path = require('path'); const {assert} = require('chai'); -const {describe, it, after, before} = require('mocha'); +const {describe, it} = require('mocha'); const sinon = require('sinon'); -const {Datastore, PropertyFilter, or} = require('@google-cloud/datastore'); -const datastore = new Datastore(); +// TODO: delete unused imports const cp = require('child_process'); -let taskKey1, taskKey2; +const sort = require('./helpers/sorting'); const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); @@ -42,45 +40,9 @@ describe('Creating a union query', () => { beforeEach(stubConsole); afterEach(restoreConsole); - before(async () => { - taskKey1 = datastore.key('Task'); - const entity1 = { - key: taskKey1, - data: { - description: 'Buy milk', - }, - }; - - taskKey2 = datastore.key('Task'); - const entity2 = { - key: taskKey2, - data: { - description: 'Feed cats', - }, - }; - - // Ensure the datastore database has no existing data for the task keys. - const query = datastore - .createQuery('Task') - .filter( - or([ - new PropertyFilter('description', '=', 'Buy milk'), - new PropertyFilter('description', '=', 'Feed cats'), - ]) - ); - const [entities] = await datastore.runQuery(query); - await datastore.delete(entities.map(entity => entity[datastore.KEY])); - - await datastore.upsert(entity1); - await datastore.upsert(entity2); - }); - - after(async () => { - await datastore.delete(taskKey1); - await datastore.delete(taskKey2); - }); + require('./helpers/populate-data'); it('should get a combination of items from the Datastore', async () => { - assert.strictEqual(execSync(`node ./queryFilterOr.js`), 'Entity found: Buy milk\nEntity found: Feed cats\n'); + assert.strictEqual(sort(execSync(`node ./queryFilterOr.js`)), '\nEntity found: Buy milk\nEntity found: Feed cats'); }); }); diff --git a/handwritten/nodejs-datastore/samples/test/queryProfiling.test.js b/handwritten/nodejs-datastore/samples/test/queryProfiling.test.js new file mode 100644 index 00000000000..2a096017131 --- /dev/null +++ b/handwritten/nodejs-datastore/samples/test/queryProfiling.test.js @@ -0,0 +1,45 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* eslint-disable */ + +'use strict'; + +const {assert} = require('chai'); +const {describe, it} = require('mocha'); + +const cp = require('child_process'); +const sort = require('./helpers/sorting'); + +const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); + +describe('Query Profiling', () => { + require('./helpers/populate-data'); + + it('should run query profiling for a query with analyze set to false', async () => { + assert.strictEqual(sort(execSync(`node ./queryProfileExplain.js`)), '\ninfo: planSummary'); + }); + + it('should run query profiling for an aggregation query with analyze set to false', async () => { + assert.strictEqual(sort(execSync(`node ./queryProfileExplainAggregation.js`)), '\ninfo: planSummary'); + }); + + it('should run query profiling for a query with analyze set to true', async () => { + assert.strictEqual(sort(execSync(`node ./queryProfileExplainAnalyze.js`)), '\nEntity found: Buy milk\nEntity found: Feed cats\ninfo: planSummary,executionStats'); + }); + + it('should run query profiling for an aggregation query with analyze set to true', async () => { + assert.strictEqual(sort(execSync(`node ./queryProfileExplainAnalyzeAggregation.js`)), '\nEntity found: {"property_1":0}\ninfo: planSummary,executionStats'); + }); +}); From 44023b2db13c90c85baf297ce159b28153a71e49 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 24 Jun 2024 14:42:51 -0400 Subject: [PATCH 786/820] feat: new transaction feature (#1239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move the state up, make it protected Transaction state should move up to the super class * Build new transaction options method Add a method for building transaction options. Also add a method for detecting if a request is a transaction. Build new transaction options * Correct the fn that builds transactions Corrected getTransactionRequest. Build the request options properly. * Set transaction to readOnly in system test. When this system test isn’t set to be a readOnly transaction then the error occurs which says too much contention. * Change #parseRunSuccess Change parseRunSuccess so that it can be used more universally. * Move parseRunSuccess up to protected parseRunSuccess should move up to the super class because it now needs to be used there. * Saves the transaction id This change saves the transaction id returned from the server for read calls * Add tests for testing read only transactions Read only tests are needed * Add tests that measure read time Make sure that code using the new transaction option has better performance than code that doesn’t have it. * ran linter * Add a test for testing requests Use the MockedTransactionWrapper to test requests being passed into the Gapic layer. * Final changes to make test work Mock out begin transaction. Test for newTransaction consistency type. Mock out commit. * Add the transaction.run test A transaction.run test is needed for lookup, lookup, put, commit. * run linter * runQuery, lookup, put, commit Add a test for this sequence of operations and ensure it works properly. * runAggregationQuery, lookup, put, commit Four operations that get all the results for running an aggregation query. Adding another test for these four operations. * put, put, lookup, commit Last test suite regarding new transaction unit tests. * Add tests for the commits Add a bunch of tests for the commit case. Check the commit gapic input. * Add testing to ensure begin tx is called Begin transaction should be called at least once. Add code here to increment the counter. * Document #blockWithMutex Remove commented code too. * Document transaction state * feat: new transaction feature branch * Add a check for expired Check for expired on most functions and write tests for the expired check. * Add commit and rollback blocks Check for expired state in the commit and rollback blocks. * run the linter * Don’t allow readtime to be specified in a txn Matches the python client. * throw error for both read time and consistency * Add test for specifying readtime * Remove the console logs * Refactor the test * Improve test to make sure Gapic layer isn’t called Also, fix bug with read consistency. * Run linter Reorganize tests New test for readtime and consistency * Make change to allow the runAggregationQuery go up * Should error when get is used * Move tests over and refactor initialized datastore * Remove only and remove imports * Introduce parameterized testing for errors * Use parameters in parameterized tests * Migrate error tests to parameterized testing * Change description * Prepare second describe block for tests * Revert "Prepare second describe block for tests" This reverts commit 974117b05b4e387a4e34668651967641bbde501c. * Always return after the error is sent back This ensures that an extra call does not get made to the server. * Add headers * Tests and implementation for expired on rollback * fix test * Wrap rollbacks with a withBeginTransaction. * Update the test so that it begins the tx before * Throw error if transaction not started on rollback * Remove only * Add a comment to the test regarding new txn.run() * Ensure that the errors get bubbled up * Run. linter * read time and consistency error * Remove unnecessary change * Eliminate the call to withBeginTransaction * Throw error reported in documentation * Work on streaming errors Fix the concurrency tests and move the error reporting outside of the stream, add two tests for the streams to make sure errors get reported. * Move the error throwing up the stack This makes it so that it is reported in the streams. * Fix linting errors * Generate unit tests for getTransactionRequest I am going to rewrite the getTransactionRequest function so it is a good idea not to change how it works. * Generate unit tests Fix the compiler error Change code so that when readOnly is specified then readwrite options are ignored. Fix the unit test to adopt this change. * Make function one ternary operation Add comments, simplify logic in the function. * Add two comments * Update the comment * Run the linter --- handwritten/nodejs-datastore/src/request.ts | 234 ++++- .../nodejs-datastore/src/transaction.ts | 136 ++- .../nodejs-datastore/system-test/datastore.ts | 299 +++++- .../test/gapic-mocks/error-mocks.ts | 73 ++ .../get-initialized-datastore-client.ts | 44 + .../test/gapic-mocks/handwritten-errors.ts | 117 +++ .../test/gapic-mocks/runQuery.ts | 51 +- .../test/gapic_datastore_admin_v1.ts | 24 +- .../nodejs-datastore/test/transaction.ts | 988 +++++++++++++++++- 9 files changed, 1760 insertions(+), 206 deletions(-) create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/get-initialized-datastore-client.ts create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index b3483c1f9b5..dc9e0b1dbe8 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -27,11 +27,17 @@ import {Duplex, PassThrough, Transform} from 'stream'; // eslint-disable-next-line @typescript-eslint/no-var-requires const streamEvents = require('stream-events'); +export const transactionExpiredError = 'This transaction has already expired.'; export interface AbortableDuplex extends Duplex { abort(): void; } +interface TransactionRequestOptions { + readOnly?: {}; + readWrite?: {previousTransaction?: string | Uint8Array | null}; +} + // Import the clients for each version supported by this package. const gapic = Object.freeze({ v1: require('./v1'), @@ -55,9 +61,10 @@ import { RunQueryResponse, RunQueryCallback, } from './query'; -import {Datastore} from '.'; +import {Datastore, Transaction} from '.'; import ITimestamp = google.protobuf.ITimestamp; import {AggregateQuery} from './aggregate'; +import {RunOptions} from './transaction'; import * as protos from '../protos/protos'; import {serializer} from 'google-gax'; import * as gax from 'google-gax'; @@ -153,6 +160,16 @@ function getInfoFromStats( return {}; } +const readTimeAndConsistencyError = + 'Read time and read consistency cannot both be specified.'; + +// Write function to check for readTime and readConsistency. +function throwOnReadTimeAndConsistency(options: RunQueryStreamOptions) { + if (options.readTime && options.consistency) { + throw new Error(readTimeAndConsistencyError); + } +} + /** * A map of read consistency values to proto codes. * @@ -164,6 +181,19 @@ const CONSISTENCY_PROTO_CODE: ConsistencyProtoCode = { strong: 1, }; +/** + * By default a DatastoreRequest is in the NOT_TRANSACTION state. If the + * DatastoreRequest is a Transaction object, then initially it will be in + * the NOT_STARTED state, but then the state will become IN_PROGRESS after the + * transaction has started. + */ +export enum TransactionState { + NOT_TRANSACTION, + NOT_STARTED, + IN_PROGRESS, + EXPIRED, +} + /** * Handle logic for Datastore API operations. Handles request logic for * Datastore. @@ -184,6 +214,7 @@ class DatastoreRequest { | Array<(err: Error | null, resp: Entity | null) => void> | Entity; datastore!: Datastore; + protected state: TransactionState = TransactionState.NOT_TRANSACTION; [key: string]: Entity; /** @@ -335,10 +366,20 @@ class DatastoreRequest { ); } + /* This throws an error if the transaction has already expired. + * + */ + protected checkExpired() { + if (this.state === TransactionState.EXPIRED) { + throw Error(transactionExpiredError); + } + } + /** * Retrieve the entities as a readable object stream. * * @throws {Error} If at least one Key object is not provided. + * @throws {Error} If read time and read consistency cannot both be specified. * * @param {Key|Key[]} keys Datastore key object(s). * @param {object} [options] Optional configuration. See {@link Datastore#get} @@ -369,9 +410,11 @@ class DatastoreRequest { if (keys.length === 0) { throw new Error('At least one Key object is required.'); } - + this.checkExpired(); + throwOnReadTimeAndConsistency(options); + const reqOpts = this.getRequestOptions(options); + throwOnTransactionErrors(this, reqOpts); const makeRequest = (keys: entity.Key[] | KeyProto[]) => { - const reqOpts = this.getRequestOptions(options); Object.assign(reqOpts, {keys}); this.request_( { @@ -381,6 +424,7 @@ class DatastoreRequest { gaxOpts: options.gaxOptions, }, (err, resp) => { + this.parseTransactionResponse(resp); if (err) { stream.destroy(err); return; @@ -631,14 +675,34 @@ class DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; - this.createReadStream(keys, options) - .on('error', callback) - .pipe( - concat((results: Entity[]) => { - const isSingleLookup = !Array.isArray(keys); - callback(null, isSingleLookup ? results[0] : results); - }) - ); + try { + this.createReadStream(keys, options) + .on('error', callback) + .pipe( + concat((results: Entity[]) => { + const isSingleLookup = !Array.isArray(keys); + callback(null, isSingleLookup ? results[0] : results); + }) + ); + } catch (err: any) { + callback(err); + } + } + + /** + * This function saves results from a successful beginTransaction call. + * + * @param {BeginAsyncResponse} [response] The response from a call to + * begin a transaction that completed successfully. + * + **/ + protected parseTransactionResponse(resp?: { + transaction?: Uint8Array | string | undefined | null; + }): void { + if (resp && resp.transaction && Buffer.byteLength(resp.transaction) > 0) { + this.id = resp!.transaction; + this.state = TransactionState.IN_PROGRESS; + } } /** @@ -653,6 +717,8 @@ class DatastoreRequest { * @param {function} [callback] The callback function. If omitted, a promise is * returned. * + * @throws {Error} If read time and read consistency cannot both be specified. + * **/ runAggregationQuery( query: AggregateQuery, @@ -677,6 +743,14 @@ class DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; + if (this.state === TransactionState.EXPIRED) { + callback(new Error(transactionExpiredError)); + return; + } + if (options.readTime && options.consistency) { + callback(new Error(readTimeAndConsistencyError)); + return; + } query.query = extend(true, new Query(), query.query); let queryProto: QueryProto; try { @@ -687,7 +761,14 @@ class DatastoreRequest { setImmediate(callback, e as Error); return; } - const sharedQueryOpts = this.getQueryOptions(query.query, options); + let sharedQueryOpts; + try { + sharedQueryOpts = this.getQueryOptions(query.query, options); + throwOnTransactionErrors(this, sharedQueryOpts); + } catch (error: any) { + callback(error); + return; + } const aggregationQueryOptions: AggregationQueryOptions = { nestedQuery: queryProto, aggregations: query.toProto(), @@ -704,6 +785,7 @@ class DatastoreRequest { }, (err, res) => { const info = getInfoFromStats(res); + this.parseTransactionResponse(res); if (res && res.batch) { const results = res.batch.aggregationResults; const finalResults = results @@ -846,16 +928,20 @@ class DatastoreRequest { let info: RunQueryInfo; - this.runQueryStream(query, options) - .on('error', callback) - .on('info', info_ => { - info = info_; - }) - .pipe( - concat((results: Entity[]) => { - callback(null, results, info); + try { + this.runQueryStream(query, options) + .on('error', callback) + .on('info', info_ => { + info = info_; }) - ); + .pipe( + concat((results: Entity[]) => { + callback(null, results, info); + }) + ); + } catch (err: any) { + callback(err); + } } /** @@ -868,6 +954,8 @@ class DatastoreRequest { * @param {object} [options.gaxOptions] Request configuration options, outlined * here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions. * + * @throws {Error} If read time and read consistency cannot both be specified. + * * @example * ``` * datastore.runQueryStream(query) @@ -892,7 +980,11 @@ class DatastoreRequest { * ``` */ runQueryStream(query: Query, options: RunQueryStreamOptions = {}): Transform { + this.checkExpired(); + throwOnReadTimeAndConsistency(options); query = extend(true, new Query(), query); + const sharedQueryOpts = this.getQueryOptions(query, options); + throwOnTransactionErrors(this, sharedQueryOpts); const makeRequest = (query: Query) => { let queryProto: QueryProto; try { @@ -903,7 +995,6 @@ class DatastoreRequest { setImmediate(onResultSet, e as Error); return; } - const sharedQueryOpts = this.getQueryOptions(query, options); const reqOpts: RequestOptions = sharedQueryOpts; reqOpts.query = queryProto; @@ -918,7 +1009,8 @@ class DatastoreRequest { ); }; - function onResultSet(err?: Error | null, resp?: Entity) { + const onResultSet = (err?: Error | null, resp?: Entity) => { + this.parseTransactionResponse(resp); if (err) { stream.destroy(err); return; @@ -977,7 +1069,7 @@ class DatastoreRequest { makeRequest(query); }); - } + }; const stream = streamEvents(new Transform({objectMode: true})); stream.once('reading', () => { @@ -990,11 +1082,24 @@ class DatastoreRequest { options: RunQueryStreamOptions ): SharedQueryOptions { const sharedQueryOpts = {} as SharedQueryOptions; + if (isTransaction(this)) { + if (this.state === TransactionState.NOT_STARTED) { + if (sharedQueryOpts.readOptions === undefined) { + sharedQueryOpts.readOptions = {}; + } + sharedQueryOpts.readOptions.newTransaction = getTransactionRequest( + this, + {} + ); + sharedQueryOpts.readOptions.consistencyType = 'newTransaction'; + } + } if (options.consistency) { const code = CONSISTENCY_PROTO_CODE[options.consistency.toLowerCase()]; - sharedQueryOpts.readOptions = { - readConsistency: code, - }; + if (sharedQueryOpts.readOptions === undefined) { + sharedQueryOpts.readOptions = {}; + } + sharedQueryOpts.readOptions.readConsistency = code; } if (options.readTime) { if (sharedQueryOpts.readOptions === undefined) { @@ -1121,19 +1226,13 @@ class DatastoreRequest { if (method === 'rollback') { reqOpts.transaction = this.id; } - + throwOnTransactionErrors(this, reqOpts); if ( isTransaction && (method === 'lookup' || method === 'runQuery' || method === 'runAggregationQuery') ) { - if (reqOpts.readOptions && reqOpts.readOptions.readConsistency) { - throw new Error( - 'Read consistency cannot be specified in a transaction.' - ); - } - if (reqOpts.readOptions) { Object.assign(reqOpts.readOptions, {transaction: this.id}); } else { @@ -1229,6 +1328,60 @@ class DatastoreRequest { } } +function isTransaction(request: DatastoreRequest): request is Transaction { + return request instanceof Transaction; +} + +function throwOnTransactionErrors( + request: DatastoreRequest, + options: SharedQueryOptions +) { + const isTransaction = request.id ? true : false; + if ( + isTransaction || + (options.readOptions && options.readOptions.newTransaction) + ) { + if (options.readOptions && options.readOptions.readConsistency) { + throw new Error('Read consistency cannot be specified in a transaction.'); + } + if (options.readOptions && options.readOptions.readTime) { + throw new Error('Read time cannot be specified in a transaction.'); + } + } +} + +/** + * This function gets transaction request options used for defining a + * request to create a new transaction on the server. + * + * @param transaction The transaction for which the request will be made. + * @param options Custom options that will be used to create the request. + */ +export function getTransactionRequest( + transaction: Transaction, + options: RunOptions +): TransactionRequestOptions { + // If transactionOptions are provide then they will be used. + // Otherwise, options passed into this function are used and when absent + // options that exist on Transaction are used. + return options.transactionOptions // If transactionOptions is specified: + ? options.transactionOptions.readOnly // Use readOnly on transactionOptions + ? {readOnly: {}} + : options.transactionOptions.id // Use retry transaction if specified: + ? {readWrite: {previousTransaction: options.transactionOptions.id}} + : {} + : options.readOnly || transaction.readOnly // If transactionOptions not set: + ? {readOnly: {}} // Create a readOnly transaction if readOnly option set + : options.transactionId || transaction.id + ? { + // Create readWrite transaction with a retry transaction set + readWrite: { + previousTransaction: options.transactionId || transaction.id, + }, + } + : {}; // Request will be readWrite with no retry transaction set; +} + export interface ConsistencyProtoCode { [key: string]: number; } @@ -1294,15 +1447,18 @@ export interface SharedQueryOptions { readConsistency?: number; transaction?: string | Uint8Array | null; readTime?: ITimestamp; + newTransaction?: TransactionRequestOptions; + consistencyType?: + | 'readConsistency' + | 'transaction' + | 'newTransaction' + | 'readTime'; }; } export interface RequestOptions extends SharedQueryOptions { mutations?: google.datastore.v1.IMutation[]; keys?: Entity; - transactionOptions?: { - readOnly?: {}; - readWrite?: {previousTransaction?: string | Uint8Array | null}; - } | null; + transactionOptions?: TransactionRequestOptions | null; transaction?: string | null | Uint8Array; mode?: string; query?: QueryProto; @@ -1333,7 +1489,7 @@ export type DeleteResponse = CommitResponse; * that a callback is omitted. */ promisifyAll(DatastoreRequest, { - exclude: ['getQueryOptions', 'getRequestOptions'], + exclude: ['checkExpired', 'getQueryOptions', 'getRequestOptions'], }); /** diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts index e0378c73e9b..1f583b4a3d6 100644 --- a/handwritten/nodejs-datastore/src/transaction.ts +++ b/handwritten/nodejs-datastore/src/transaction.ts @@ -15,33 +15,34 @@ */ import {promisifyAll} from '@google-cloud/promisify'; -import arrify = require('arrify'); import {CallOptions} from 'google-gax'; import {google} from '../protos/protos'; import {Datastore, TransactionOptions} from '.'; -import {entity, Entity, Entities} from './entity'; +import {Entities, Entity, entity} from './entity'; import { Query, RunQueryCallback, - RunQueryInfo, RunQueryOptions, RunQueryResponse, } from './query'; import { CommitCallback, CommitResponse, - DatastoreRequest, - RequestOptions, - PrepareEntityObjectResponse, CreateReadStreamOptions, - GetResponse, + DatastoreRequest, GetCallback, + GetResponse, + getTransactionRequest, + PrepareEntityObjectResponse, RequestCallback, + transactionExpiredError, + TransactionState, } from './request'; import {AggregateQuery} from './aggregate'; import {Mutex} from 'async-mutex'; +import arrify = require('arrify'); /* * This type matches the value returned by the promise in the @@ -53,11 +54,6 @@ interface BeginAsyncResponse { resp?: google.datastore.v1.IBeginTransactionResponse; } -enum TransactionState { - NOT_STARTED, - IN_PROGRESS, // IN_PROGRESS currently tracks the expired state as well -} - /** * A transaction is a set of Datastore operations on one or more entities. Each * transaction is guaranteed to be atomic, which means that transactions are @@ -85,7 +81,6 @@ class Transaction extends DatastoreRequest { modifiedEntities_: ModifiedEntities; skipCommit?: boolean; #mutex = new Mutex(); - #state = TransactionState.NOT_STARTED; constructor(datastore: Datastore, options?: TransactionOptions) { super(); /** @@ -115,6 +110,7 @@ class Transaction extends DatastoreRequest { // Queue the requests to make when we send the transactional commit. this.requests_ = []; + this.state = TransactionState.NOT_STARTED; } /*! Developer Documentation @@ -177,6 +173,10 @@ class Transaction extends DatastoreRequest { : () => {}; const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; + if (this.state === TransactionState.EXPIRED) { + callback(new Error(transactionExpiredError)); + return; + } // This ensures that the transaction is started before calling runCommit this.#withBeginTransaction( gaxOptions, @@ -355,13 +355,9 @@ class Transaction extends DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; // This ensures that the transaction is started before calling get - this.#withBeginTransaction( - options.gaxOptions, - () => { - super.get(keys, options, callback); - }, - callback - ); + this.#blockWithMutex(() => { + super.get(keys, options, callback); + }); } /** @@ -434,6 +430,14 @@ class Transaction extends DatastoreRequest { const callback = typeof gaxOptionsOrCallback === 'function' ? gaxOptionsOrCallback : cb!; + if (this.state === TransactionState.EXPIRED) { + callback(new Error(transactionExpiredError)); + return; + } + if (this.state === TransactionState.NOT_STARTED) { + callback(new Error('Transaction is not started')); + return; + } this.request_( { client: 'DatastoreClient', @@ -442,6 +446,7 @@ class Transaction extends DatastoreRequest { }, (err, resp) => { this.skipCommit = true; + this.state = TransactionState.EXPIRED; callback(err || null, resp); } ); @@ -511,7 +516,7 @@ class Transaction extends DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; this.#mutex.runExclusive(async () => { - if (this.#state === TransactionState.NOT_STARTED) { + if (this.state === TransactionState.NOT_STARTED) { const runResults = await this.#beginTransactionAsync(options); this.#processBeginResults(runResults, callback); } else { @@ -635,6 +640,7 @@ class Transaction extends DatastoreRequest { return; } + this.state = TransactionState.EXPIRED; // The `callbacks` array was built previously. These are the callbacks // that handle the API response normally when using the // DatastoreRequest.save and .delete methods. @@ -666,24 +672,11 @@ class Transaction extends DatastoreRequest { if (err) { callback(err, null, resp); } else { - this.#parseRunSuccess(runResults); + this.parseTransactionResponse(resp); callback(null, this, resp); } } - /** - * This function saves results from a successful beginTransaction call. - * - * @param {BeginAsyncResponse} [response] The response from a call to - * begin a transaction that completed successfully. - * - **/ - #parseRunSuccess(runResults: BeginAsyncResponse) { - const resp = runResults.resp; - this.id = resp!.transaction; - this.#state = TransactionState.IN_PROGRESS; - } - /** * This async function makes a beginTransaction call and returns a promise with * the information returned from the call that was made. @@ -696,24 +689,10 @@ class Transaction extends DatastoreRequest { async #beginTransactionAsync( options: RunOptions ): Promise { - const reqOpts: RequestOptions = { - transactionOptions: {}, - }; - - if (options.readOnly || this.readOnly) { - reqOpts.transactionOptions!.readOnly = {}; - } - - if (options.transactionId || this.id) { - reqOpts.transactionOptions!.readWrite = { - previousTransaction: options.transactionId || this.id, - }; - } - - if (options.transactionOptions) { - reqOpts.transactionOptions = options.transactionOptions; - } return new Promise((resolve: (value: BeginAsyncResponse) => void) => { + const reqOpts = { + transactionOptions: getTransactionRequest(this, options), + }; this.request_( { client: 'DatastoreClient', @@ -766,13 +745,9 @@ class Transaction extends DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; // This ensures that the transaction is started before calling runAggregationQuery - this.#withBeginTransaction( - options.gaxOptions, - () => { - super.runAggregationQuery(query, options, callback); - }, - callback - ); + this.#blockWithMutex(() => { + super.runAggregationQuery(query, options, callback); + }); } /** @@ -805,13 +780,9 @@ class Transaction extends DatastoreRequest { const callback = typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!; // This ensures that the transaction is started before calling runQuery - this.#withBeginTransaction( - options.gaxOptions, - () => { - super.runQuery(query, options, callback); - }, - callback - ); + this.#blockWithMutex(() => { + super.runQuery(query, options, callback); + }); } /** @@ -1019,7 +990,7 @@ class Transaction extends DatastoreRequest { * @param {CallOptions | undefined} [gaxOptions] Gax options provided by the * user that are used for the beginTransaction grpc call. * @param {function} [fn] A function which is run after ensuring a - * beginTransaction call is made. + * transaction has begun. * @param {function} [callback] A callback provided by the user that expects * an error in the first argument and a custom data type for the rest of the * arguments. @@ -1031,10 +1002,10 @@ class Transaction extends DatastoreRequest { callback: (...args: [Error | null, ...T] | [Error | null]) => void ): void { (async () => { - if (this.#state === TransactionState.NOT_STARTED) { + if (this.state === TransactionState.NOT_STARTED) { try { await this.#mutex.runExclusive(async () => { - if (this.#state === TransactionState.NOT_STARTED) { + if (this.state === TransactionState.NOT_STARTED) { // This sends an rpc call to get the transaction id const runResults = await this.#beginTransactionAsync({ gaxOptions, @@ -1044,7 +1015,7 @@ class Transaction extends DatastoreRequest { // Do not call the wrapped function. throw runResults.err; } - this.#parseRunSuccess(runResults); + this.parseTransactionResponse(runResults.resp); // The rpc saving the transaction id was successful. // Now the wrapped function fn will be called. } @@ -1057,6 +1028,31 @@ class Transaction extends DatastoreRequest { return fn(); })(); } + + /* + * Some rpc calls require that the transaction has been started (i.e, has a + * valid id) before they can be sent. #withBeginTransaction acts as a wrapper + * over those functions. + * + * If the transaction has not begun yet, `#blockWithMutex` will call the + * wrapped function which will begin the transaction in the rpc call it sends. + * If the transaction has begun, the wrapped function will be called, but it + * will not begin a transaction. + * + * @param {function} [fn] A function which is run after ensuring a + * transaction has begun. + */ + #blockWithMutex(fn: () => void) { + (async () => { + if (this.state === TransactionState.NOT_STARTED) { + await this.#mutex.runExclusive(async () => { + fn(); + }); + } else { + fn(); + } + })(); + } } export type ModifiedEntities = Array<{ diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts index 9990611b3d3..74b96e788c3 100644 --- a/handwritten/nodejs-datastore/system-test/datastore.ts +++ b/handwritten/nodejs-datastore/system-test/datastore.ts @@ -25,6 +25,7 @@ import {and, or, PropertyFilter} from '../src/filter'; import {Entities, entity, Entity} from '../src/entity'; import {Query, RunQueryInfo, ExecutionStats} from '../src/query'; import KEY_SYMBOL = entity.KEY_SYMBOL; +import {transactionExpiredError} from '../src/request'; const async = require('async'); @@ -921,7 +922,7 @@ async.each( }); it('should run a transaction query as a stream via query#runStream', done => { - const transaction = datastore.transaction(); + const transaction = datastore.transaction({readOnly: true}); const q = transaction.createQuery('Character').hasAncestor(ancestor); let resultsReturned = 0; q.runStream() @@ -2368,6 +2369,238 @@ async.each( }); }); describe('transactions with and without run', () => { + describe('test to make sure various endpoints report an expired state', () => { + async.each( + [ + { + name: 'with commit', + setupExpiredFn: async (tx: Transaction) => { + await tx.commit(); + }, + }, + { + name: 'with rollback', + setupExpiredFn: async (tx: Transaction) => { + // We expect rollback to fail with an aborted error when + // tx.run hasn't been called yet so these tests are only + // valid when tx.run() has already been called. + await tx.run(); + await tx.rollback(); + }, + }, + ], + (test: { + name: string; + setupExpiredFn: (tx: Transaction) => Promise; + }) => { + describe(test.name, () => { + describe('get', () => { + it('with transaction.run', async () => { + try { + const key = datastore.key(['Company', 'Google']); + const transaction: Transaction = datastore.transaction(); + await transaction.run(); + await test.setupExpiredFn(transaction); + await transaction.get(key); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction(); + await test.setupExpiredFn(transaction); + await transaction.get(key); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('runQuery', () => { + it('with transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + await transaction.run(); + await test.setupExpiredFn(transaction); + await transaction.runQuery(query); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + await test.setupExpiredFn(transaction); + await transaction.runQuery(query); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('runAggregationQuery', () => { + it('with transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + const aggregationQuery = transaction + .createAggregationQuery(query) + .count('total'); + await transaction.run(); + await test.setupExpiredFn(transaction); + await transaction.runAggregationQuery(aggregationQuery); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + const aggregationQuery = transaction + .createAggregationQuery(query) + .count('total'); + await test.setupExpiredFn(transaction); + await transaction.runAggregationQuery(aggregationQuery); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('runQueryStream', () => { + it('with transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + await transaction.run(); + await test.setupExpiredFn(transaction); + transaction.runQueryStream(query); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const transaction = datastore.transaction(); + const query = transaction.createQuery('Company'); + await test.setupExpiredFn(transaction); + transaction.runQueryStream(query); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('createReadStream', () => { + it('with transaction.run', async () => { + try { + const datastore = new Datastore(clientOptions); + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction(); + await transaction.run(); + await test.setupExpiredFn(transaction); + transaction.createReadStream(key); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const datastore = new Datastore(clientOptions); + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction(); + await test.setupExpiredFn(transaction); + transaction.createReadStream(key); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('commit', () => { + it('with transaction.run', async () => { + try { + const transaction = datastore.transaction(); + await transaction.run(); + await test.setupExpiredFn(transaction); + await transaction.commit(); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const transaction = datastore.transaction(); + await test.setupExpiredFn(transaction); + await transaction.commit(); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + describe('rollback', () => { + it('with transaction.run', async () => { + try { + const transaction = datastore.transaction(); + await transaction.run(); + await test.setupExpiredFn(transaction); + await transaction.rollback(); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + it('without transaction.run', async () => { + try { + const transaction = datastore.transaction(); + await test.setupExpiredFn(transaction); + await transaction.rollback(); + assert.fail('The expire error should have appeared'); + } catch (err: any) { + assert.strictEqual(err.message, transactionExpiredError); + } + }); + }); + }); + } + ); + }); + describe('comparing times with and without transaction.run', async () => { + const key = datastore.key(['Company', 'Google']); + // Record time for transaction with run + const startTimeWithRun = new Date().getTime(); + const transactionWithRun = datastore.transaction({readOnly: true}); + await transactionWithRun.run(); + await Promise.all([ + transactionWithRun.get(key), + transactionWithRun.get(key), + ]); + await transactionWithRun.commit(); + const timeElapsedWithRun = new Date().getTime() - startTimeWithRun; + // Record time for transaction without run + const startTimeWithoutRun = new Date().getTime(); + const transactionWithoutRun = datastore.transaction({readOnly: true}); + await Promise.all([ + transactionWithoutRun.get(key), + transactionWithoutRun.get(key), + ]); + await transactionWithoutRun.commit(); + const timeElapsedWithoutRun = + new Date().getTime() - startTimeWithoutRun; + assert(timeElapsedWithoutRun < timeElapsedWithRun); + }); describe('lookup, put, commit', () => { const key = datastore.key(['Company', 'Google']); const obj = { @@ -2450,6 +2683,33 @@ async.each( await doRunQueryPutCommit(transaction); }); }); + describe('readOnly for runQuery looks at snapshot from first read', () => { + const key = datastore.key(['Company', 'Google']); + const obj = { + url: 'www.google.com', + }; + afterEach(async () => { + await datastore.delete(key); + }); + async function doPutRunQueryCommit(transaction: Transaction) { + const query = transaction.createQuery('Company'); + const [results] = await transaction.runQuery(query); + assert.deepStrictEqual(results, []); + await datastore.save({key, data: obj}); + const [results2] = await transaction.runQuery(query); + assert.deepStrictEqual(results2, []); + await transaction.commit(); + } + it('should run in a transaction', async () => { + const transaction = datastore.transaction({readOnly: true}); + await transaction.run(); + await doPutRunQueryCommit(transaction); + }); + it('should run in a transaction without run', async () => { + const transaction = datastore.transaction({readOnly: true}); + await doPutRunQueryCommit(transaction); + }); + }); describe('put, runQuery, commit', () => { const key = datastore.key(['Company', 'Google']); const obj = { @@ -2785,6 +3045,37 @@ async.each( assert.deepStrictEqual(resultsAgain, [{total: 2}]); await transaction.commit(); }); + it('readOnly transaction should see consistent snapshot of database without transaction.run', async () => { + async function getResults(transaction: Transaction) { + const query = transaction.createQuery('Company'); + const aggregateQuery = transaction + .createAggregationQuery(query) + .count('total'); + let result; + try { + [result] = await aggregateQuery.run(); + } catch (e) { + await transaction.rollback(); + throw e; + } + return result; + } + const key = datastore.key(['Company', 'Google']); + const transaction = datastore.transaction({readOnly: true}); + const results = await getResults(transaction); + assert.deepStrictEqual(results, [{total: 3}]); + await datastore.save([ + { + key, + data: { + rating: 100, + }, + }, + ]); + const resultsAgain = await getResults(transaction); + assert.deepStrictEqual(resultsAgain, [{total: 3}]); + await transaction.commit(); + }); }); it('should read in a readOnly transaction', async () => { @@ -2794,6 +3085,12 @@ async.each( await transaction.get(key); }); + it('should read in a readOnly transaction without transaction.run', async () => { + const transaction = datastore.transaction({readOnly: true}); + const key = datastore.key(['Company', 'Google']); + await transaction.get(key); + }); + it('should not write in a readOnly transaction', async () => { const transaction = datastore.transaction({readOnly: true}); const key = datastore.key(['Company', 'Google']); diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts b/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts new file mode 100644 index 00000000000..226859e6c54 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts @@ -0,0 +1,73 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as mocha from 'mocha'; +import * as assert from 'assert'; +import {Datastore} from '../../src'; + +/** + * Returns a callback function that expects an error with a particular + * message. This is used for testing all client library functions that accept + * a callback in order to ensure the callback receives a particular error. + * + * @param {mocha.Done} done The mocha done function which is called when the + * test finishes. + * @param {string} message The expected error message in the test. + * + */ +export function getCallbackExpectingError(done: mocha.Done, message: string) { + return (error?: Error | null) => { + try { + if (error) { + assert.strictEqual(error.message, message); + done(); + return; + } + done(new Error('The callback should have received an error')); + } catch (err: unknown) { + done(err); + } + }; +} + +/** + * This function ends the test with an error if a call reaches the gapic + * layer. Using this function in a test makes the test fail if any outgoing + * grpc calls are made in that test. This allows the test to ensure that no + * grpc calls happen, which is typically desired behaviour when an error is + * sent back to the user from the handwritten layer. + * + * @param {Datastore} datastore The datastore client. + * @param {string} clientName The datastore client. + * @param {mocha.Done} done The mocha done function which is called when the + * test finishes. + */ +export function errorOnGapicCall( + datastore: Datastore, + clientName: string, + done: mocha.Done +) { + const dataClient = datastore.clients_.get(clientName); + if (dataClient) { + dataClient.runQuery = () => { + done(new Error('The gapic layer should not have received a call')); + }; + dataClient.runAggregationQuery = () => { + done(new Error('The gapic layer should not have received a call')); + }; + dataClient.lookup = () => { + done(new Error('The gapic layer should not have received a call')); + }; + } +} diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/get-initialized-datastore-client.ts b/handwritten/nodejs-datastore/test/gapic-mocks/get-initialized-datastore-client.ts new file mode 100644 index 00000000000..bf3e4b652ed --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/get-initialized-datastore-client.ts @@ -0,0 +1,44 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Datastore} from '../../src'; + +/** + * This function gets a datastore client that has already been initialized + * meaning that its gapic data client has been created and is ready to be mocked + * out with whatever behavior is needed in a test. Mocking out the gapic client + * is common for testing handwritten layer behaviour because it is a way to + * evaluate data that reaches the handwritten layer thereby testing the + * handwritten layer in isolation. + */ +export function getInitializedDatastoreClient(): Datastore { + const clientName = 'DatastoreClient'; + const PROJECT_ID = 'project-id'; + const NAMESPACE = 'namespace'; + const options = { + projectId: PROJECT_ID, + namespace: NAMESPACE, + }; + const datastore = new Datastore(options); + // By default, datastore.clients_ is an empty map. + // To mock out commit we need the map to contain the Gapic data client. + // Normally a call to the data client through the datastore object would initialize it. + // We don't want to make this call because it would make a grpc request. + // So we just add the data client to the map. + const gapic = Object.freeze({ + v1: require('../../src/v1'), + }); + datastore.clients_.set(clientName, new gapic.v1[clientName](options)); + return datastore; +} diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts b/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts new file mode 100644 index 00000000000..59c743ee521 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts @@ -0,0 +1,117 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {describe} from 'mocha'; +import {AggregateField} from '../../src'; +import {getInitializedDatastoreClient} from './get-initialized-datastore-client'; +import {RunQueryOptions} from '../../src/query'; +import {errorOnGapicCall, getCallbackExpectingError} from './error-mocks'; +import * as assert from 'assert'; +const async = require('async'); + +describe('HandwrittenLayerErrors', () => { + describe('Can only specify one of transaction, consistency, readTime', () => { + const clientName = 'DatastoreClient'; + const datastore = getInitializedDatastoreClient(); + async.each( + [ + { + options: {consistency: 'eventual', readTime: 77000}, + expectedError: + 'Read time and read consistency cannot both be specified.', + description: + 'should error when read time and eventual consistency are specified', + }, + { + options: {consistency: 'eventual'}, + expectedError: + 'Read consistency cannot be specified in a transaction.', + description: + 'should error when new transaction and eventual consistency are specified', + }, + { + options: {readTime: 77000}, + expectedError: 'Read time cannot be specified in a transaction.', + description: + 'should error when new transaction and read time are specified', + }, + ], + (testParameters: { + options: RunQueryOptions; + expectedError: string; + description: string; + }) => { + describe(testParameters.description, () => { + it('should error when runQuery is used', done => { + const transaction = datastore.transaction(); + const query = datastore.createQuery('Task'); + errorOnGapicCall(datastore, clientName, done); // Test fails if Gapic layer receives a call. + transaction.runQuery( + query, + testParameters.options, + getCallbackExpectingError(done, testParameters.expectedError) + ); + }); + it('should error when runQueryStream is used', done => { + const transaction = datastore.transaction(); + const query = datastore.createQuery('Task'); + errorOnGapicCall(datastore, clientName, done); // Test fails if Gapic layer receives a call. + try { + transaction.runQueryStream(query, testParameters.options); + done(new Error('runQueryStream should have thrown an error')); + } catch (err: any) { + assert.strictEqual(err.message, testParameters.expectedError); + done(); + } + }); + it('should error when runAggregationQuery is used', done => { + const transaction = datastore.transaction(); + const query = datastore.createQuery('Task'); + const aggregate = datastore + .createAggregationQuery(query) + .addAggregation(AggregateField.sum('appearances')); + errorOnGapicCall(datastore, clientName, done); // Test fails if Gapic layer receives a call. + transaction.runAggregationQuery( + aggregate, + testParameters.options, + getCallbackExpectingError(done, testParameters.expectedError) + ); + }); + it('should error when get is used', done => { + const transaction = datastore.transaction(); + const keys = datastore.key(['Company', 'Google']); + errorOnGapicCall(datastore, clientName, done); // Test fails if Gapic layer receives a call. + transaction.get( + keys, + testParameters.options, + getCallbackExpectingError(done, testParameters.expectedError) + ); + }); + it('should error when createReadStream is used', done => { + const transaction = datastore.transaction(); + const keys = datastore.key(['Company', 'Google']); + errorOnGapicCall(datastore, clientName, done); // Test fails if Gapic layer receives a call. + try { + transaction.createReadStream(keys, testParameters.options); + done(new Error('createReadStream should have thrown an error')); + } catch (err: any) { + assert.strictEqual(err.message, testParameters.expectedError); + done(); + } + }); + }); + } + ); + }); +}); diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts index e19964ecfa0..d54d8649fb4 100644 --- a/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts +++ b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts @@ -14,28 +14,13 @@ import * as assert from 'assert'; import {describe} from 'mocha'; -import {DatastoreClient, Datastore} from '../../src'; +import {DatastoreClient} from '../../src'; import * as protos from '../../protos/protos'; -import {Callback} from 'google-gax'; +import {getInitializedDatastoreClient} from './get-initialized-datastore-client'; describe('Run Query', () => { - const PROJECT_ID = 'project-id'; - const NAMESPACE = 'namespace'; const clientName = 'DatastoreClient'; - const options = { - projectId: PROJECT_ID, - namespace: NAMESPACE, - }; - const datastore = new Datastore(options); - // By default, datastore.clients_ is an empty map. - // To mock out commit we need the map to contain the Gapic data client. - // Normally a call to the data client through the datastore object would initialize it. - // We don't want to make this call because it would make a grpc request. - // So we just add the data client to the map. - const gapic = Object.freeze({ - v1: require('../../src/v1'), - }); - datastore.clients_.set(clientName, new gapic.v1[clientName](options)); + const datastore = getInitializedDatastoreClient(); // This function is used for doing assertion checks. // The idea is to check that the right request gets passed to the commit function in the Gapic layer. @@ -68,35 +53,13 @@ describe('Run Query', () => { } } - it('should pass read time into runQuery for transactions', async () => { - // First mock out beginTransaction - const dataClient = datastore.clients_.get(clientName); - const testId = Buffer.from(Array.from(Array(100).keys())); - if (dataClient) { - dataClient.beginTransaction = ( - request: protos.google.datastore.v1.IBeginTransactionRequest, - options: protos.google.datastore.v1.IBeginTransactionResponse, - callback: Callback< - protos.google.datastore.v1.IBeginTransactionResponse, - | protos.google.datastore.v1.IBeginTransactionRequest - | null - | undefined, - {} | null | undefined - > - ) => { - callback(null, { - transaction: testId, - }); - }; - } + it('should pass new transaction into runQuery for transactions', async () => { setRunQueryComparison( (request: protos.google.datastore.v1.IRunQueryRequest) => { assert.deepStrictEqual(request, { readOptions: { - transaction: testId, - readTime: { - seconds: 77, - }, + consistencyType: 'newTransaction', + newTransaction: {}, }, partitionId: { namespaceId: 'namespace', @@ -113,6 +76,6 @@ describe('Run Query', () => { ); const transaction = datastore.transaction(); const query = datastore.createQuery('Task'); - await transaction.runQuery(query, {readTime: 77000}); + await transaction.runQuery(query); }); }); diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts index 7d347a6032f..eb73aadb9ee 100644 --- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts +++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts @@ -1434,9 +1434,9 @@ describe('v1.DatastoreAdminClient', () => { assert( (client.descriptors.page.listIndexes.createStream as SinonStub) .getCall(0) - .args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams) ); }); @@ -1485,9 +1485,9 @@ describe('v1.DatastoreAdminClient', () => { assert( (client.descriptors.page.listIndexes.createStream as SinonStub) .getCall(0) - .args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams) ); }); @@ -1528,9 +1528,9 @@ describe('v1.DatastoreAdminClient', () => { assert( (client.descriptors.page.listIndexes.asyncIterate as SinonStub) .getCall(0) - .args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams) ); }); @@ -1570,9 +1570,9 @@ describe('v1.DatastoreAdminClient', () => { assert( (client.descriptors.page.listIndexes.asyncIterate as SinonStub) .getCall(0) - .args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams) ); }); }); diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts index c1346f3df2f..4d4a1ebdf25 100644 --- a/handwritten/nodejs-datastore/test/transaction.ts +++ b/handwritten/nodejs-datastore/test/transaction.ts @@ -17,6 +17,7 @@ import arrify = require('arrify'); import * as assert from 'assert'; import {afterEach, beforeEach, before, describe, it} from 'mocha'; import * as proxyquire from 'proxyquire'; +import {getTransactionRequest} from '../src/request'; import { Datastore, @@ -902,25 +903,25 @@ async.each( * be passed into the Gapic layer. * @private */ - readonly #expectedRequests?: GapicRequestData[]; + readonly expectedRequests?: GapicRequestData[]; /** * requests are the actual order of the requests that are passed into the * gapic layer * @private */ - readonly #requests: GapicRequestData[] = []; + readonly requests: GapicRequestData[] = []; /** * expectedEventOrder is the order the test expects different events to occur * such as a callback being called, Gapic functions being called or user * code being run. */ - readonly #expectedEventOrder: TransactionEvent[] = []; + readonly expectedEventOrder: TransactionEvent[] = []; /** * eventOrder is the order events actually occur in the test and will be compared with * expectedEventOrder. * @private */ - #eventOrder: TransactionEvent[] = []; + eventOrder: TransactionEvent[] = []; // A transaction wrapper object is used to contain the transaction and mocked Gapic functions. #transactionWrapper: MockedTransactionWrapper; // Stores the mocha done function so that it can be called from this object. @@ -932,17 +933,17 @@ async.each( * happened then this function passes tests if the events happened in the * right order. */ - #checkForCompletion() { - if (this.#eventOrder.length >= this.#expectedEventOrder.length) { + checkForCompletion() { + if (this.eventOrder.length >= this.expectedEventOrder.length) { try { assert.deepStrictEqual( - this.#eventOrder, - this.#expectedEventOrder + this.eventOrder, + this.expectedEventOrder ); - if (this.#expectedRequests) { + if (this.expectedRequests) { assert.deepStrictEqual( - this.#requests, - this.#expectedRequests + this.requests, + this.expectedRequests ); } this.#done(); @@ -961,17 +962,17 @@ async.each( request?: RequestType; }[] ) { - this.#expectedEventOrder = expectedOrder; - this.#expectedRequests = expectedRequests; + this.expectedEventOrder = expectedOrder; + this.expectedRequests = expectedRequests; this.#done = done; transactionWrapper.callBackSignaler = ( call: GapicFunctionName, request?: RequestType ) => { try { - this.#requests.push({call, request}); - this.#eventOrder.push(call); - this.#checkForCompletion(); + this.requests.push({call, request}); + this.eventOrder.push(call); + this.checkForCompletion(); } catch (e) { done(e); } @@ -988,8 +989,8 @@ async.each( push(event: UserCodeEvent) { return () => { try { - this.#eventOrder.push(event); - this.#checkForCompletion(); + this.eventOrder.push(event); + this.checkForCompletion(); } catch (e) { this.#done(e); } @@ -1139,6 +1140,27 @@ async.each( transaction: testRunResp.transaction, }, }; + const lookupTransactionRequestWithNewTransaction = { + keys: [ + { + partitionId: { + namespaceId: 'run-without-mock', + }, + path: [ + { + kind: 'Company', + name: 'Google', + }, + ], + }, + ], + projectId: 'project-id', + readOptions: { + newTransaction: {}, + consistencyType: 'newTransaction', + transaction: testRunResp.transaction, + }, + }; describe('put, commit', () => { const expectedRequests = [ { @@ -1188,25 +1210,25 @@ async.each( }); }); describe('lookup, lookup, put, commit', () => { - const expectedRequests = [ - { - call: GapicFunctionName.BEGIN_TRANSACTION, - request: beginTransactionRequest, - }, - { - call: GapicFunctionName.COMMIT, - request: commitRequest, - }, - { - call: GapicFunctionName.LOOKUP, - request: lookupTransactionRequest, - }, - { - call: GapicFunctionName.LOOKUP, - request: lookupTransactionRequest, - }, - ]; - it('should verify that there is a BeginTransaction call while beginning later', done => { + it('should verify that there is no BeginTransaction call while beginning later', done => { + const expectedRequests = [ + { + call: GapicFunctionName.BEGIN_TRANSACTION, + request: beginTransactionRequest, + }, + { + call: GapicFunctionName.COMMIT, + request: commitRequest, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequestWithNewTransaction, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequestWithNewTransaction, + }, + ]; const tester = new TransactionOrderTester( transactionWrapper, done, @@ -1230,6 +1252,24 @@ async.each( transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK)); }); it('should verify that there is a BeginTransaction call while beginning early', done => { + const expectedRequests = [ + { + call: GapicFunctionName.BEGIN_TRANSACTION, + request: beginTransactionRequest, + }, + { + call: GapicFunctionName.COMMIT, + request: commitRequest, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequest, + }, + { + call: GapicFunctionName.LOOKUP, + request: lookupTransactionRequest, + }, + ]; const tester = new TransactionOrderTester( transactionWrapper, done, @@ -1257,6 +1297,775 @@ async.each( }); }); }); + describe('Testing requests passed into the gapic layer', () => { + let key: entity.Key; + const testCommitResp = { + mutationResults: [ + { + key: { + path: [ + { + kind: 'some-kind', + }, + ], + }, + }, + ], + }; + const runQueryResp = { + batch: { + entityResults: [], + endCursor: { + type: 'Buffer', + data: Buffer.from(Array.from(Array(100).keys())), + }, + }, + transaction: testRunResp.transaction, + }; + const runAggregationQueryResp = { + batch: { + aggregationResults: [ + { + aggregateProperties: { + 'average rating': { + meaning: 0, + excludeFromIndexes: false, + doubleValue: 100, + valueType: 'doubleValue', + }, + }, + }, + ], + moreResults: + google.datastore.v1.QueryResultBatch.MoreResultsType + .NO_MORE_RESULTS, + readTime: {seconds: '1699390681', nanos: 961667000}, + }, + query: null, + transaction: testRunResp.transaction, + }; + const getResp = { + found: [ + { + entity: { + key: { + path: [ + { + kind: 'Post', + name: 'post1', + idType: 'name', + }, + ], + partitionId: { + projectId: 'projectId', + databaseId: 'databaseId', + namespaceId: 'namespaceId', + }, + }, + excludeFromIndexes: false, + properties: {}, + }, + }, + ], + missing: [], + deferred: [], + transaction: testRunResp.transaction, + readTime: { + seconds: '1699470605', + nanos: 201398000, + }, + }; + afterEach(() => { + transactionWrapper.resetBeginTransaction(); + transactionWrapper.resetGapicFunctions(); + }); + beforeEach(async () => { + transactionWrapper = new MockedTransactionWrapper(); + key = transactionWrapper.datastore.key(['Company', 'Google']); + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_AGGREGATION_QUERY, + runAggregationQueryResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.LOOKUP, + getResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.RUN_QUERY, + runQueryResp, + null + ); + transactionWrapper.mockGapicFunction( + GapicFunctionName.COMMIT, + testCommitResp, + null + ); + }); + describe('lookup, lookup, put, commit', () => { + it('without using transaction.run', done => { + let lookupCallCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + throw Error( + 'BeginTransaction should not have been called' + ); + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + switch (lookupCallCount) { + case 0: + assert.deepStrictEqual(lookupRequest.readOptions, { + newTransaction: {}, + consistencyType: 'newTransaction', + }); + break; + case 1: + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + default: + throw Error('Lookup was called too many times'); + } + lookupCallCount++; + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.get(key); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + it('with using transaction.run', done => { + let beginCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + beginCount++; + break; + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.run(); + await transaction.get(key); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + }); + describe('runQuery, lookup, put, commit', () => { + it('without using transaction.run', done => { + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + throw Error( + 'BeginTransaction should not have been called' + ); + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.RUN_QUERY: { + const runQueryRequest = + request as protos.google.datastore.v1.IRunQueryRequest; + assert.deepStrictEqual(runQueryRequest.readOptions, { + newTransaction: {}, + consistencyType: 'newTransaction', + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + const query = + transactionWrapper.datastore.createQuery('Task'); + await transaction.runQuery(query); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + it('with using transaction.run', done => { + let beginCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + beginCount++; + break; + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.RUN_QUERY: { + const runQueryRequest = + request as protos.google.datastore.v1.IRunQueryRequest; + assert.deepStrictEqual(runQueryRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.run(); + const query = + transactionWrapper.datastore.createQuery('Task'); + await transaction.runQuery(query); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + }); + describe('runAggregationQuery, lookup, put, commit', () => { + it('without using transaction.run', done => { + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + throw Error( + 'BeginTransaction should not have been called' + ); + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.RUN_AGGREGATION_QUERY: { + const runAggregationQueryRequest = + request as protos.google.datastore.v1.IRunAggregationQueryRequest; + assert.deepStrictEqual( + runAggregationQueryRequest.readOptions, + { + newTransaction: {}, + consistencyType: 'newTransaction', + } + ); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + const query = + transactionWrapper.datastore.createQuery('Task'); + const aggregate = transactionWrapper.datastore + .createAggregationQuery(query) + .addAggregation(AggregateField.average('appearances')); + await transaction.runAggregationQuery(aggregate); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + it('with using transaction.run', done => { + let beginCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + beginCount++; + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + break; + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.RUN_AGGREGATION_QUERY: { + const runAggregationQueryRequest = + request as protos.google.datastore.v1.IRunAggregationQueryRequest; + assert.deepStrictEqual( + runAggregationQueryRequest.readOptions, + { + transaction: testRunResp.transaction, + } + ); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.run(); + const query = + transactionWrapper.datastore.createQuery('Task'); + const aggregate = transactionWrapper.datastore + .createAggregationQuery(query) + .addAggregation(AggregateField.average('appearances')); + await transaction.runAggregationQuery(aggregate); + await transaction.get(key); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + }); + describe('put, put, lookup, commit', () => { + it('without using transaction.run', done => { + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + throw Error( + 'BeginTransaction should not have been called' + ); + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + newTransaction: {}, + consistencyType: 'newTransaction', + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + transaction.save({key, data: ''}); + transaction.save({key, data: 'more-data'}); + await transaction.get(key); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + it('with using transaction.run', done => { + let beginCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + beginCount++; + break; + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.run(); + transaction.save({key, data: ''}); + transaction.save({key, data: 'more-data'}); + await transaction.get(key); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + }); + describe('put, commit', () => { + it('without using transaction.run', done => { + let beginCount = 0; + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + beginCount++; + break; + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + it('with using transaction.run', done => { + // This gets called when the program reaches the gapic layer. + // It ensures the data that reaches the gapic layer is correct. + let beginCount = 0; + transactionWrapper.callBackSignaler = ( + callbackReached: GapicFunctionName, + request?: RequestType + ) => { + try { + switch (callbackReached) { + case GapicFunctionName.BEGIN_TRANSACTION: + assert.deepStrictEqual(request, { + projectId: 'project-id', + transactionOptions: {}, + }); + beginCount++; + break; + case GapicFunctionName.LOOKUP: { + const lookupRequest = + request as protos.google.datastore.v1.ILookupRequest; + assert.deepStrictEqual(lookupRequest.readOptions, { + transaction: testRunResp.transaction, + }); + break; + } + case GapicFunctionName.COMMIT: { + const commitRequest = + request as protos.google.datastore.v1.ICommitRequest; + assert.deepStrictEqual( + commitRequest.mode, + 'TRANSACTIONAL' + ); + assert.deepStrictEqual( + commitRequest.transaction, + testRunResp.transaction + ); + assert.strictEqual(beginCount, 1); + done(); + break; + } + default: + throw Error( + 'A gapic function was called that should not have been called' + ); + } + } catch (err: any) { + done(err); + } + }; + (async () => { + try { + transaction = transactionWrapper.transaction; + await transaction.run(); + transaction.save({key, data: ''}); + await transaction.commit(); + } catch (err: any) { + done(err); + } + })(); + }); + }); + }); }); describe('run without setting up transaction id', () => { @@ -1682,8 +2491,18 @@ async.each( }); describe('rollback', () => { - beforeEach(() => { - transaction.id = TRANSACTION_ID; + beforeEach(done => { + // The transaction state needs to be set to IN_PROGRESS in order for + // the rollback function to reach request_. + transaction.request_ = ( + config: RequestConfig, + callback: RequestCallback + ) => { + callback(null, {transaction: Buffer.from(TRANSACTION_ID)}); + }; + transaction.run(() => { + done(); + }); }); it('should rollback', done => { @@ -1854,13 +2673,18 @@ async.each( }, }, } as {} as TransactionOptions; + const inputOptions = { + transactionOptions: { + id: 'transaction-id', + }, + }; transaction.request_ = (config: RequestConfig) => { assert.deepStrictEqual(config.reqOpts, options); done(); }; - transaction.run(options, assert.ifError); + transaction.run(inputOptions, assert.ifError); }); }); @@ -2033,3 +2857,87 @@ async.each( }); } ); + +describe('getTransactionRequest', () => { + const datastore = new Datastore(); + + it('should return an empty object if no options are provided', () => { + const transaction = new Transaction(datastore); + const options = {}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, {}); + }); + + it('should return a readOnly object if readOnly is true', () => { + const transaction = new Transaction(datastore); + const options = {readOnly: true}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, {readOnly: {}}); + }); + + it('should return a readWrite object with previousTransaction if transactionId is provided', () => { + const transaction = new Transaction(datastore); + const options = {transactionId: 'transaction-id'}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, { + readWrite: {previousTransaction: 'transaction-id'}, + }); + }); + + it('should return a readWrite object with previousTransaction if transaction.id is provided', () => { + const transaction = new Transaction(datastore, {id: 'transaction-id'}); + const options = {}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, { + readWrite: {previousTransaction: 'transaction-id'}, + }); + }); + + it('should return a readOnly object if transactionOptions.readOnly is true', () => { + const transaction = new Transaction(datastore); + const options = {transactionOptions: {readOnly: true}}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, {readOnly: {}}); + }); + + it('should return a readWrite object with previousTransaction if transactionOptions.id is provided', () => { + const transaction = new Transaction(datastore); + const options = {transactionOptions: {id: 'transaction-id'}}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, { + readWrite: {previousTransaction: 'transaction-id'}, + }); + }); + + it('should prioritize transactionOptions over other options', () => { + const transaction = new Transaction(datastore); + const options = { + readOnly: false, + transactionId: 'transaction-id-1', + transactionOptions: { + readOnly: true, + id: 'transaction-id-2', + }, + }; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, { + readOnly: {}, + }); + }); + + it('should return a readOnly object if transaction is constructed with readOnly: true', () => { + const transaction = new Transaction(datastore, {readOnly: true}); + const options = {}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, {readOnly: {}}); + }); + + it('should return a readWrite object with previousTransaction if transaction is constructed with id', () => { + const transaction = new Transaction(datastore, {id: 'transaction-id'}); + const options = {}; + const result = getTransactionRequest(transaction, options); + assert.deepStrictEqual(result, { + readWrite: {previousTransaction: 'transaction-id'}, + }); + }); +}); From d844817b2535eb41bd48c479d353112ee7c634a1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 10:10:48 -0400 Subject: [PATCH 787/820] chore(main): release 9.1.0 (#1252) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- handwritten/nodejs-datastore/CHANGELOG.md | 12 ++++++++++++ handwritten/nodejs-datastore/package.json | 2 +- handwritten/nodejs-datastore/samples/package.json | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md index 7a48353d9ca..e5aa3ce207c 100644 --- a/handwritten/nodejs-datastore/CHANGELOG.md +++ b/handwritten/nodejs-datastore/CHANGELOG.md @@ -4,6 +4,18 @@ [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions +## [9.1.0](https://github.com/googleapis/nodejs-datastore/compare/v9.0.0...v9.1.0) (2024-06-24) + + +### Features + +* New transaction feature ([#1239](https://github.com/googleapis/nodejs-datastore/issues/1239)) ([cdd2ee9](https://github.com/googleapis/nodejs-datastore/commit/cdd2ee98c50b48b9a2a8cfb2f66b84a5937b3783)) + + +### Bug Fixes + +* **deps:** Update dependency sinon to v18 ([#1250](https://github.com/googleapis/nodejs-datastore/issues/1250)) ([b7ff5c8](https://github.com/googleapis/nodejs-datastore/commit/b7ff5c86306f80d93f678a0638892c58a3b2088c)) + ## [9.0.0](https://github.com/googleapis/nodejs-datastore/compare/v8.7.0...v9.0.0) (2024-05-09) diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index 4028412b94d..a49adf25b0a 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -1,6 +1,6 @@ { "name": "@google-cloud/datastore", - "version": "9.0.0", + "version": "9.1.0", "description": "Cloud Datastore Client Library for Node.js", "keywords": [ "google apis client", diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json index 013c250c4ed..7a3dcd547f7 100644 --- a/handwritten/nodejs-datastore/samples/package.json +++ b/handwritten/nodejs-datastore/samples/package.json @@ -14,7 +14,7 @@ "test": "mocha --timeout=600000" }, "dependencies": { - "@google-cloud/datastore": "^9.0.0", + "@google-cloud/datastore": "^9.1.0", "sinon": "^18.0.0" }, "devDependencies": { From 3c6ec2027a0bf0d38cbd2bfad5bad169480b576b Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:39:08 -0400 Subject: [PATCH 788/820] feat: update Go Datastore import path (#1261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: update Go Datastore import path feat: update Go Bigtable import path PiperOrigin-RevId: 651776284 Source-Link: https://github.com/googleapis/googleapis/commit/b8eed55ae5a9bf62d0cdb90b10b92dc06c37cd12 Source-Link: https://github.com/googleapis/googleapis-gen/commit/9d7fe2c488e87671e686e3a19aa8cf4f071e806a Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOWQ3ZmUyYzQ4OGU4NzY3MWU2ODZlM2ExOWFhOGNmNGYwNzFlODA2YSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../protos/google/datastore/v1/aggregation_result.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/datastore.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/entity.proto | 2 +- .../nodejs-datastore/protos/google/datastore/v1/query.proto | 2 +- .../protos/google/datastore/v1/query_profile.proto | 2 +- handwritten/nodejs-datastore/protos/protos.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto index 262b61fa4fb..e31052c0d33 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto @@ -21,7 +21,7 @@ import "google/datastore/v1/query.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb"; option java_multiple_files = true; option java_outer_classname = "AggregationResultProto"; option java_package = "com.google.datastore.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 92b5038ea9c..9c44501af27 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -27,7 +27,7 @@ import "google/datastore/v1/query_profile.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb"; option java_multiple_files = true; option java_outer_classname = "DatastoreProto"; option java_package = "com.google.datastore.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto index ef4429343e2..d9742d68de2 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto @@ -21,7 +21,7 @@ import "google/protobuf/timestamp.proto"; import "google/type/latlng.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb"; option java_multiple_files = true; option java_outer_classname = "EntityProto"; option java_package = "com.google.datastore.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 81386d47b51..5ec0eea61a0 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -22,7 +22,7 @@ import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb"; option java_multiple_files = true; option java_outer_classname = "QueryProto"; option java_package = "com.google.datastore.v1"; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto index f38681c665a..e00a28e3c2b 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto @@ -21,7 +21,7 @@ import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; option csharp_namespace = "Google.Cloud.Datastore.V1"; -option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore"; +option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb"; option java_multiple_files = true; option java_outer_classname = "QueryProfileProto"; option java_package = "com.google.datastore.v1"; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 2c79f01f045..946dfdc5c59 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -611,7 +611,7 @@ "v1": { "options": { "csharp_namespace": "Google.Cloud.Datastore.V1", - "go_package": "google.golang.org/genproto/googleapis/datastore/v1;datastore", + "go_package": "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb", "java_multiple_files": true, "java_outer_classname": "QueryProfileProto", "java_package": "com.google.datastore.v1", From 257da3c86cc2187f2d5a1eca5bafc854a869f048 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Mon, 19 Aug 2024 17:19:55 -0400 Subject: [PATCH 789/820] test: Add a test that ensures warning is not emitted (#1165) * Add a test that ensures warning is not emitted When EntityFilter is provided then a warning should not be emitted. This commit ensures that a warning is not emitted. * test: Add a test that ensures warning is not emitted * Remove test accidentally added in the merge --- handwritten/nodejs-datastore/test/query.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts index 87df33f8a2c..a6d32f6967a 100644 --- a/handwritten/nodejs-datastore/test/query.ts +++ b/handwritten/nodejs-datastore/test/query.ts @@ -316,6 +316,17 @@ describe('Query', () => { assert.strictEqual(filter.val, 'Stephen'); }); }); + it('should not issue a warning when an EntityFilter instance is provided', done => { + const onWarning = () => { + assert.fail(); + }; + process.on('warning', onWarning); + new Query(['kind1']).filter(new PropertyFilter('name', '=', 'Stephen')); + setImmediate(() => { + process.removeListener('warning', onWarning); + done(); + }); + }); describe('filter with Filter class', () => { it('should support filter with Filter', () => { const now = new Date(); From 0d4f6fb99e83af31c152014026edeb449e7b88fc Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Wed, 28 Aug 2024 13:05:04 -0400 Subject: [PATCH 790/820] fix: Add excludeFromIndexes in the proper places for large properties of nested fields (#1266) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: Restrict types inside the save function (#1264) * Add interfaces that restrict values passed to save * Add interfaces for save We need help from the compiler so these interfaces will be useful for determining the shape of the data. * Modify current interfaces to make a closer match The interfaces should match the actual data types that get passed in. * key and data in PrepareEntityObjectResponse option These properties are actually optional * Document all the interfaces added for the save fn * Add two tests showing name/value should be provide * Make the SaveNonArrayData more specific. save doesn’t encode strings or ints or any values that don’t have keys properly so we should restrict the interface to what it does include. * Add header * Test should be more flexible * Add a class for elements with ToString * Define the toString class inline * Eliminate links to points in code * test: Add tests that describe how save should encode excludeFromIndexes for a complex case (#1263) * Write a sample test for what save output should be * Add a test for a bunch of complex excludeFromIndex * Change the replace function so it works everywhere * Modify the expected value Make it contain longStringArray * Correct the test for evaluating arrays * Break up the entityToEntityProto into separate par * Fix the tests to work with new addExcludeFromIndex * Revert "Break up the entityToEntityProto into separate par" This reverts commit 60dabd7c234afb02ac59cc63541b35df2c2f7874. * Revert "Fix the tests to work with new addExcludeFromIndex" This reverts commit ba4e82b3c94bba7c7a239dce91a777bee01c6f1b. * Remove source code changes * Skip the test that looks at arrays * Remove some of the wildcard indexes This is in excludeFromIndexes - replace them with literals. * Remove another boolean value from excludeFromIndex * Eliminate duplicate expectedMutations * Eliminate duplicate runTest function * Begin to set up the async tests * Pack all tests into the async framework * Delete tests addressed by async * Get rid of test functions and inline everything * Add comment * Add comments describing each test case * Remove only * Add another test looks at name/value not in array * Add a test for excludeLarge properties and name/va * Fix the test so that the array case matches Matches the single case * should pass the right properties for an array * Rename the test * Change name to entityName * Add two tests that capture the array encoding encoding problem * Change expected output of arrays * Remove only * Add 2 more tests to ensure behaviour is preserved * Correct test - it should apply excludeFromIndexes * Update the test for the nested value * fix: Handle excludeLarge properties for arrays properly (#1265) * Write a sample test for what save output should be * Add a test for a bunch of complex excludeFromIndex * Change the replace function so it works everywhere * Modify the expected value Make it contain longStringArray * Correct the test for evaluating arrays * Break up the entityToEntityProto into separate par * Fix the tests to work with new addExcludeFromIndex * Break up the entityToEntityProto into separate par * Fix the tests to work with new addExcludeFromIndex * Revert "Break up the entityToEntityProto into separate par" This reverts commit 60dabd7c234afb02ac59cc63541b35df2c2f7874. * Revert "Fix the tests to work with new addExcludeFromIndex" This reverts commit ba4e82b3c94bba7c7a239dce91a777bee01c6f1b. * Remove source code changes * Skip the test that looks at arrays * Remove some of the wildcard indexes This is in excludeFromIndexes - replace them with literals. * Remove another boolean value from excludeFromIndex * Eliminate duplicate expectedMutations * Eliminate duplicate runTest function * Begin to set up the async tests * Pack all tests into the async framework * Delete tests addressed by async * Get rid of test functions and inline everything * Add comment * Add comments describing each test case * Remove only * Add another test looks at name/value not in array * Add a test for excludeLarge properties and name/va * Fix the test so that the array case matches Matches the single case * should pass the right properties for an array * Rename the test * Change name to entityName * Add two tests that capture the array encoding encoding problem * Change expected output of arrays * Remove only * Add 2 more tests to ensure behaviour is preserved * Make argument more specific for excludeFromIndexes * Use excludeLargeProperties for array/non-array cas * Fix the test to include entity proto * Correct mistakes in initial implementation * Don’t skip any of the tests * Remove only * Add check for excludeLargeProperties * Remove TODO * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../nodejs-datastore/protos/protos.json | 3 + handwritten/nodejs-datastore/src/entity.ts | 12 +- handwritten/nodejs-datastore/src/index.ts | 45 +- .../nodejs-datastore/src/interfaces/save.ts | 74 +++ handwritten/nodejs-datastore/src/request.ts | 7 +- .../test/gapic-mocks/commit.ts | 556 ++++++++++++++++++ handwritten/nodejs-datastore/test/index.ts | 64 ++ 7 files changed, 745 insertions(+), 16 deletions(-) create mode 100644 handwritten/nodejs-datastore/src/interfaces/save.ts create mode 100644 handwritten/nodejs-datastore/test/gapic-mocks/commit.ts diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 946dfdc5c59..2dd3af9ec01 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -1,4 +1,7 @@ { + "options": { + "syntax": "proto3" + }, "nested": { "google": { "nested": { diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index c88c005d476..9962a3e202f 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -778,7 +778,6 @@ export namespace entity { */ export function entityToEntityProto(entityObject: EntityObject): EntityProto { const properties = entityObject.data; - const excludeFromIndexes = entityObject.excludeFromIndexes; const entityProto: EntityProto = { key: null, @@ -793,6 +792,15 @@ export namespace entity { ), }; + addExcludeFromIndexes(entityObject.excludeFromIndexes, entityProto); + + return entityProto; + } + + export function addExcludeFromIndexes( + excludeFromIndexes: string[] | undefined, + entityProto: EntityProto + ): EntityProto { if (excludeFromIndexes && excludeFromIndexes.length > 0) { excludeFromIndexes.forEach((excludePath: string) => { excludePathFromEntity(entityProto, excludePath); @@ -1463,7 +1471,7 @@ export interface ResponseResult { export interface EntityObject { data: {[k: string]: Entity}; - excludeFromIndexes: string[]; + excludeFromIndexes?: string[]; } export interface Json { diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 31b86635e1b..319fda59925 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -67,8 +67,10 @@ import {Transaction} from './transaction'; import {promisifyAll} from '@google-cloud/promisify'; import {google} from '../protos/protos'; import {AggregateQuery} from './aggregate'; +import {SaveEntity} from './interfaces/save'; const {grpc} = new GrpcClient(); +const addExcludeFromIndexes = entity.addExcludeFromIndexes; export type PathType = string | number | entity.Int; export interface BooleanObject { @@ -1076,7 +1078,7 @@ class Datastore extends DatastoreRequest { gaxOptionsOrCallback?: CallOptions | SaveCallback, cb?: SaveCallback ): void | Promise { - entities = arrify(entities); + entities = arrify(entities) as SaveEntity[]; const gaxOptions = typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {}; const callback = @@ -1109,22 +1111,30 @@ class Datastore extends DatastoreRequest { } } - if (entityObject.excludeLargeProperties) { - entityObject.excludeFromIndexes = entity.findLargeProperties_( - entityObject.data, - '', - entityObject.excludeFromIndexes - ); - } - if (!entity.isKeyComplete(entityObject.key)) { insertIndexes[index] = true; } - // @TODO remove in @google-cloud/datastore@2.0.0 - // This was replaced with a more efficient mechanism in the top-level - // `excludeFromIndexes` option. if (Array.isArray(entityObject.data)) { + // This code populates the excludeFromIndexes list with the right values. + if (entityObject.excludeLargeProperties) { + entityObject.data.forEach( + (data: { + name: { + toString(): string; + }; + value: Entity; + excludeFromIndexes?: boolean; + }) => { + entityObject.excludeFromIndexes = entity.findLargeProperties_( + data.value, + data.name.toString(), + entityObject.excludeFromIndexes + ); + } + ); + } + // This code builds the right entityProto from the entityObject entityProto.properties = entityObject.data.reduce( ( acc: EntityProtoReduceAccumulator, @@ -1155,7 +1165,18 @@ class Datastore extends DatastoreRequest { }, {} ); + // This code adds excludeFromIndexes in the right places + addExcludeFromIndexes(entityObject.excludeFromIndexes, entityProto); } else { + // This code populates the excludeFromIndexes list with the right values. + if (entityObject.excludeLargeProperties) { + entityObject.excludeFromIndexes = entity.findLargeProperties_( + entityObject.data, + '', + entityObject.excludeFromIndexes + ); + } + // This code builds the right entityProto from the entityObject entityProto = entity.entityToEntityProto(entityObject); } diff --git a/handwritten/nodejs-datastore/src/interfaces/save.ts b/handwritten/nodejs-datastore/src/interfaces/save.ts new file mode 100644 index 00000000000..5bbd974bbfb --- /dev/null +++ b/handwritten/nodejs-datastore/src/interfaces/save.ts @@ -0,0 +1,74 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Entity, entity} from '../entity'; + +/* +Entity data passed into save in non array form will be of type SaveNonArrayData +and does not require name and value properties. + */ +type SaveNonArrayData = { + [k: string]: Entity; +}; + +/* +Entity data passed into save in an array form will be of type SaveArrayData +so will have name and value defined because the source code of save requires a +name and a value to be defined or else an error will be thrown. + */ +interface SaveArrayData { + name: { + toString(): string; + }; + value: Entity; + excludeFromIndexes?: boolean; +} + +/* +When saving an entity, data in the data property of the entity is of type +SaveDataValue. The data can either be in array form in which case it will +match the SaveArrayData[] data type or it can be in non-array form where +it will match the SaveNonArrayData data type. + */ +export type SaveDataValue = SaveArrayData[] | SaveNonArrayData; + +/* +An Entity passed into save will include a Key object contained either inside +a `key` property or inside a property indexed by the Key Symbol. If it is +the former then it will be of type SaveEntityWithoutKeySymbol. + */ +interface SaveEntityWithoutKeySymbol { + key: entity.Key; + data: SaveDataValue; + excludeFromIndexes?: string[]; +} + +/* +An Entity passed into save will include a Key object contained either inside +a `key` property or inside a property indexed by the Key Symbol. If it is +the latter then it will be of type SaveEntityWithKeySymbol. + */ +interface SaveEntityWithKeySymbol { + [entity.KEY_SYMBOL]: entity.Key; + data: SaveDataValue; +} + +/* +Entities passed into the first argument of the save function are expected to be +of type SaveEntity[] after being turned into an array. We could change the +signature of save later to enforce this, but doing so would be a breaking change +so we just cast this value to SaveEntity[] for now to enable strong type +enforcement throughout this function. + */ +export type SaveEntity = SaveEntityWithoutKeySymbol | SaveEntityWithKeySymbol; diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index dc9e0b1dbe8..3daa4584505 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -68,6 +68,7 @@ import {RunOptions} from './transaction'; import * as protos from '../protos/protos'; import {serializer} from 'google-gax'; import * as gax from 'google-gax'; +import {SaveDataValue} from './interfaces/save'; type JSONValue = | string | number @@ -1412,8 +1413,10 @@ export interface PrepareEntityObject { [key: string]: google.datastore.v1.Key | undefined; } export interface PrepareEntityObjectResponse { - key?: google.datastore.v1.Key; - data?: google.datastore.v1.Entity; + key?: entity.Key; + data?: SaveDataValue; + excludeFromIndexes?: string[]; + excludeLargeProperties?: boolean; method?: string; } export interface RequestCallback { diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts new file mode 100644 index 00000000000..b8f7df93900 --- /dev/null +++ b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts @@ -0,0 +1,556 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as assert from 'assert'; +import {describe} from 'mocha'; +import * as protos from '../../protos/protos'; +import {getInitializedDatastoreClient} from './get-initialized-datastore-client'; +import type {CallOptions} from 'google-gax'; +import {Entities} from '../../src/entity'; +import {google} from '../../protos/protos'; +import IValue = google.datastore.v1.IValue; + +const async = require('async'); + +describe('Commit', () => { + const longString = Buffer.alloc(1501, '.').toString(); + const clientName = 'DatastoreClient'; + const datastore = getInitializedDatastoreClient(); + + const key = { + path: [ + { + kind: 'Post', + name: 'post2', + }, + ], + partitionId: { + namespaceId: 'namespace', + }, + }; + + // complexCaseProperties are expected mutations passed to Gapic. + const complexCaseProperties: {[k: string]: IValue} = { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + notMetadata: { + booleanValue: true, + }, + longStringArray: { + arrayValue: { + values: [ + { + stringValue: longString, + excludeFromIndexes: true, + }, + ], + }, + }, + metadata: { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + otherProperty: { + stringValue: 'value', + }, + obj: { + entityValue: { + properties: { + longStringArray: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + nestedLongStringArray: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + nestedProperty: { + booleanValue: true, + }, + }, + }, + }, + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + longStringArray: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + nestedLongStringArray: { + arrayValue: { + values: [ + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + nestedProperty: { + booleanValue: true, + }, + }, + }, + }, + { + entityValue: { + properties: { + longString: { + stringValue: longString, + excludeFromIndexes: true, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + ], + }, + }, + }, + }, + }, + }; + // complexCaseEntities are passed into save for the complex case. + const complexCaseEntities = { + longString, + notMetadata: true, + longStringArray: [longString], + metadata: { + longString, + otherProperty: 'value', + obj: { + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + longStringArray: [ + { + longString, + nestedLongStringArray: [ + { + longString, + nestedProperty: true, + }, + { + longString, + }, + ], + }, + ], + }, + }; + + describe('save should pass the right properties to the gapic layer', () => { + async.each( + [ + { + name: 'should pass the right properties for a simple name/value pair', + skipped: false, + entities: { + name: 'entityName', + value: 'entityValue', + }, + excludeFromIndexes: [], // Empty because excludeLargeProperties populates the list. + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: { + name: { + stringValue: 'entityName', + }, + value: { + stringValue: 'entityValue', + }, + }, + key, + }, + }, + ], + }, + { + // This test checks to see that when the name/value is wrapped in an array it parses the input differently. + name: 'should pass the right properties for a simple name/value pair in an array', + skipped: false, + entities: [ + { + name: 'entityName', + value: 'entityValue', + }, + ], + excludeFromIndexes: [], // Empty because excludeLargeProperties populates the list. + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: { + entityName: { + stringValue: 'entityValue', + }, + }, + key, + }, + }, + ], + }, + { + name: 'should position excludeFromIndexes in the right place when provided at the top level', + skipped: false, + entities: [ + { + name: 'entityName', + value: 'entityValue', + excludeFromIndexes: true, + }, + ], + excludeFromIndexes: [], + expectedMutations: [ + { + upsert: { + properties: { + entityName: { + stringValue: 'entityValue', + excludeFromIndexes: true, + }, + }, + key, + }, + }, + ], + }, + { + name: 'should pass the right properties for a simple name/value pair in an array with excludeFromIndexes list', + skipped: false, + entities: [ + { + name: 'entityName', + value: 'entityValue', + }, + ], + excludeFromIndexes: ['entityName'], + expectedMutations: [ + { + upsert: { + properties: { + entityName: { + stringValue: 'entityValue', + excludeFromIndexes: true, + }, + }, + key, + }, + }, + ], + }, + { + // This test is from a modified version of https://github.com/googleapis/nodejs-datastore/blob/bf3dafd8267c447a52f7764505042a60b1a9fd28/test/index.ts#L1773 + name: 'should pass the right request with a bunch of large properties excluded', + skipped: false, + entities: complexCaseEntities, + excludeFromIndexes: [ + 'longString', + 'longStringArray[]', + 'metadata.longString', + 'metadata.obj.longStringArray[].longString', + 'metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'metadata.longStringArray[].longString', + 'metadata.longStringArray[].nestedLongStringArray[].longString', + ], + excludeLargeProperties: false, + expectedMutations: [ + { + upsert: { + properties: complexCaseProperties, + key, + }, + }, + ], + }, + { + // Just like 'should pass the right request with a bunch of large properties excluded', but excludeLargeProperties is true + name: 'should pass the right properties for an object with excludeLargeProperties', + skipped: false, + entities: complexCaseEntities, + excludeFromIndexes: [], // Empty because excludeLargeProperties populates the list. + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: complexCaseProperties, + key, + }, + }, + ], + }, + { + // This test case reproduces https://github.com/googleapis/nodejs-datastore/issues/1242 + name: 'should pass the right request with a nested field', + skipped: false, + entities: [ + { + name: 'field_b', + value: { + nestedField: Buffer.alloc(1501, '.').toString(), + }, + excludeFromIndexes: true, + }, + ], + excludeFromIndexes: [], + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: { + field_b: { + entityValue: { + properties: { + nestedField: { + stringValue: longString, + excludeFromIndexes: true, + }, + }, + }, + excludeFromIndexes: true, + }, + }, + key, + }, + }, + ], + }, + { + // "should pass the right request with a bunch of large properties excluded" test with entities wrapped in name/value + name: 'should pass the right request with a name/value pair and a bunch of large properties excluded', + skipped: false, + entities: { + name: 'entityName', + value: complexCaseEntities, + }, + excludeFromIndexes: [ + 'value.longString', + 'value.longStringArray[]', + 'value.metadata.longString', + 'value.metadata.obj.longStringArray[].longString', + 'value.metadata.obj.longStringArray[].nestedLongStringArray[].longString', + 'value.metadata.longStringArray[].longString', + 'value.metadata.longStringArray[].nestedLongStringArray[].longString', + ], + excludeLargeProperties: false, + expectedMutations: [ + { + upsert: { + properties: { + name: { + stringValue: 'entityName', + }, + value: { + entityValue: { + properties: complexCaseProperties, + }, + }, + }, + key, + }, + }, + ], + }, + { + // "should pass the right properties for an object with excludeLargeProperties" test with entities wrapped in name/value + name: 'should pass the right request with a name/value pair and excludeLargeProperties set to true', + skipped: false, + entities: { + name: 'entityName', + value: complexCaseEntities, + }, + excludeFromIndexes: [], + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: { + name: { + stringValue: 'entityName', + }, + value: { + entityValue: { + properties: complexCaseProperties, + }, + }, + }, + key, + }, + }, + ], + }, + { + // Just like the previous test, but entities are wrapped in an array + name: 'should pass the right properties for an array with name/value pairs and excludeLargeProperties', + skipped: false, + entities: [ + { + name: 'entityName', + value: complexCaseEntities, + }, + ], + excludeFromIndexes: [], + excludeLargeProperties: true, + expectedMutations: [ + { + upsert: { + properties: { + entityName: { + entityValue: { + properties: complexCaseProperties, + }, + }, + }, + key, + }, + }, + ], + }, + ], + (test: { + name: string; + skipped: boolean; + entities: Entities; + excludeFromIndexes: string[]; + excludeLargeProperties: boolean; + expectedMutations: google.datastore.v1.IMutation[]; + }) => { + it(test.name, async function () { + if (test.skipped) { + this.skip(); + } + /** + * Replaces long strings in an object with so that they can + * be used in an assert comparison as assert has a character limit on the + * data that it can accept + * + * @param {google.datastore.v1.IMutation[] | null} input The input object + * containing the long strings that should be replaced. + * @returns {google.datastore.v1.IMutation[]} The input object with the long + * strings replaced. + */ + function replaceLongStrings( + input?: google.datastore.v1.IMutation[] | null + ) { + const stringifiedInput = JSON.stringify(input); + const replacedInput = stringifiedInput + .split(longString) + .join(''); + return JSON.parse(replacedInput) as google.datastore.v1.IMutation[]; + } + { + // This code block is indented so the reader knows the rest of the test doesn't depend its definitions. + /* + Sets up the gapic client so that when it receives mutations it ensures that + the mutations match the expectedMutations and throw an assertion error if + they don't. + */ + const dataClient = datastore.clients_.get(clientName); + if (dataClient) { + dataClient.commit = ( + request: protos.google.datastore.v1.ICommitRequest, + options: CallOptions, + callback: ( + err?: unknown, + res?: protos.google.datastore.v1.ICommitResponse + ) => void + ) => { + try { + const actual = replaceLongStrings(request.mutations); + const expected = replaceLongStrings(test.expectedMutations); + assert.deepStrictEqual(actual, expected); + } catch (e) { + callback(e); + } + callback(null, { + mutationResults: [], + }); + }; + } + } + // Calls save and ensures that the right mutations are passed to the Gapic layer. + const postKey = datastore.key(['Post', 'post2']); + await datastore.save({ + key: postKey, + data: test.entities, + excludeFromIndexes: test.excludeFromIndexes, + excludeLargeProperties: test.excludeLargeProperties, + }); + }); + } + ); + }); +}); diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts index 7d936083750..c13a480b086 100644 --- a/handwritten/nodejs-datastore/test/index.ts +++ b/handwritten/nodejs-datastore/test/index.ts @@ -34,6 +34,7 @@ import * as is from 'is'; import * as sinon from 'sinon'; import * as extend from 'extend'; import {google} from '../protos/protos'; +import {ServiceError} from 'google-gax'; // eslint-disable-next-line @typescript-eslint/no-var-requires const v1 = require('../src/v1/index.js'); @@ -88,6 +89,7 @@ const fakeEntityInit: any = { keyToKeyProto: entity.keyToKeyProto, encodeValue: entity.encodeValue, entityToEntityProto: entity.entityToEntityProto, + addExcludeFromIndexes: entity.addExcludeFromIndexes, findLargeProperties_: entity.findLargeProperties_, URLSafeKey: entity.URLSafeKey, }; @@ -1535,6 +1537,68 @@ async.each( ); }); + it('should throw error when value is not provided', done => { + datastore.request_ = (config: RequestConfig) => { + done('Should not reach request_ function'); + }; + + try { + datastore.save( + { + key, + data: [ + { + name: 'something', + }, + ], + }, + () => { + done('Should not reach callback'); + } + ); + } catch (err: unknown) { + assert.strictEqual( + (err as {message: string}).message, + 'Unsupported field value, undefined, was provided.' + ); + done(); + return; + } + assert.fail('Calling save should have thrown an error'); + }); + + it('should throw error when name property does not support toString method', done => { + datastore.request_ = (config: RequestConfig) => { + done('Should not reach request_ function'); + }; + try { + datastore.save( + { + key, + data: [ + { + name: null, + value: 7, + }, + ], + }, + () => { + done('Should not reach callback'); + } + ); + } catch (err: unknown) { + assert( + [ + "Cannot read properties of null (reading 'toString')", // Later Node versions + "Cannot read property 'toString' of null", // Node 14 + ].includes((err as {message: string}).message) + ); + done(); + return; + } + assert.fail('Calling save should have thrown an error'); + }); + it('should prepare entity objects', done => { const entityObject = {}; let prepared = false; From b9eb5cbb9dd3a0f477ee215608e458a6f6117f3d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:32:03 -0400 Subject: [PATCH 791/820] chore: update links in github issue templates (#1328) * chore: update links in github issue templates --------- Co-authored-by: Owl Bot Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com> --- handwritten/nodejs-datastore/README.md | 4 ++-- handwritten/nodejs-datastore/package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/handwritten/nodejs-datastore/README.md b/handwritten/nodejs-datastore/README.md index ad15286298e..675530926d6 100644 --- a/handwritten/nodejs-datastore/README.md +++ b/handwritten/nodejs-datastore/README.md @@ -43,7 +43,7 @@ Google APIs Client Libraries, in [Client Libraries Explained][explained]. 1. [Select or create a Cloud Platform project][projects]. 1. [Enable the Google Cloud Datastore API][enable_api]. -1. [Set up authentication with a service account][auth] so you can access the +1. [Set up authentication][auth] so you can access the API from your local workstation. ### Installing the client library @@ -188,4 +188,4 @@ See [LICENSE](https://github.com/googleapis/nodejs-datastore/blob/main/LICENSE) [projects]: https://console.cloud.google.com/project [billing]: https://support.google.com/cloud/answer/6293499#enable-billing [enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com -[auth]: https://cloud.google.com/docs/authentication/getting-started +[auth]: https://cloud.google.com/docs/authentication/external/set-up-adc-local diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json index a49adf25b0a..6807876e24f 100644 --- a/handwritten/nodejs-datastore/package.json +++ b/handwritten/nodejs-datastore/package.json @@ -68,13 +68,13 @@ "jsdoc": "^4.0.0", "jsdoc-fresh": "^3.0.0", "jsdoc-region-tag": "^3.0.0", - "linkinator": "^5.0.0", + "linkinator": "^3.0.0", "mocha": "^9.2.2", "null-loader": "^4.0.0", "p-queue": "^6.6.1", "pack-n-play": "^2.0.0", "proxyquire": "^2.1.3", - "sinon": "^18.0.0", + "sinon": "17.0.0", "ts-loader": "^8.0.0", "typescript": "^5.1.6", "webpack-cli": "^5.0.0" From 4a715e52bc8a48f38878048c17ad50d909d467e6 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:10:28 -0400 Subject: [PATCH 792/820] feat: Add FindNearest API to the stable branch (#1333) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Support for field update operators in the Datastore API and resolution strategies when there is a conflict at write time PiperOrigin-RevId: 683253625 Source-Link: https://github.com/googleapis/googleapis/commit/3effbf23b1a1d1fe1306356e94397e20d01d31a0 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5dd983c76417f2ad88f9d47438c48c27d5ac0e27 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWRkOTgzYzc2NDE3ZjJhZDg4ZjlkNDc0MzhjNDhjMjdkNWFjMGUyNyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Add FindNearest API to the stable branch PiperOrigin-RevId: 684905940 Source-Link: https://github.com/googleapis/googleapis/commit/2196d4843a22befdc7bc3b7b676eeb392c31b3cf Source-Link: https://github.com/googleapis/googleapis-gen/commit/05df6fa16ab93bd9da17b56edd379b43963de167 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDVkZjZmYTE2YWI5M2JkOWRhMTdiNTZlZGQzNzliNDM5NjNkZTE2NyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: danieljbruce --- .../google/datastore/v1/datastore.proto | 141 ++- .../protos/google/datastore/v1/query.proto | 80 ++ .../nodejs-datastore/protos/protos.d.ts | 317 +++++ handwritten/nodejs-datastore/protos/protos.js | 1027 ++++++++++++++++- .../nodejs-datastore/protos/protos.json | 144 +++ 5 files changed, 1698 insertions(+), 11 deletions(-) diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto index 9c44501af27..c0683b9ba19 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto @@ -501,6 +501,18 @@ message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { + // The possible ways to resolve a conflict detected in a mutation. + enum ConflictResolutionStrategy { + // Unspecified. Defaults to `SERVER_VALUE`. + STRATEGY_UNSPECIFIED = 0; + + // The server entity is kept. + SERVER_VALUE = 1; + + // The whole commit request fails. + FAIL = 3; + } + // The mutation operation. // // For `insert`, `update`, and `upsert`: @@ -542,6 +554,11 @@ message Mutation { google.protobuf.Timestamp update_time = 11; } + // The strategy to use when a conflict is detected. Defaults to + // `SERVER_VALUE`. + // If this is set, then `conflict_detection_strategy` must also be set. + ConflictResolutionStrategy conflict_resolution_strategy = 10; + // The properties to write in this mutation. // None of the properties in the mask may have a reserved name, except for // `__key__`. @@ -551,6 +568,112 @@ message Mutation { // updated, others are left untouched. // Properties referenced in the mask but not in the entity are deleted. PropertyMask property_mask = 9; + + // Optional. The transforms to perform on the entity. + // + // This field can be set only when the operation is `insert`, `update`, + // or `upsert`. If present, the transforms are be applied to the entity + // regardless of the property mask, in order, after the operation. + repeated PropertyTransform property_transforms = 12 + [(google.api.field_behavior) = OPTIONAL]; +} + +// A transformation of an entity property. +message PropertyTransform { + // A value that is calculated by the server. + enum ServerValue { + // Unspecified. This value must not be used. + SERVER_VALUE_UNSPECIFIED = 0; + + // The time at which the server processed the request, with millisecond + // precision. If used on multiple properties (same or different entities) + // in a transaction, all the properties will get the same server timestamp. + REQUEST_TIME = 1; + } + + // Optional. The name of the property. + // + // Property paths (a list of property names separated by dots (`.`)) may be + // used to refer to properties inside entity values. For example `foo.bar` + // means the property `bar` inside the entity property `foo`. + // + // If a property name contains a dot `.` or a backlslash `\`, then that name + // must be escaped. + string property = 1 [(google.api.field_behavior) = OPTIONAL]; + + // The transformation to apply to the property. + oneof transform_type { + // Sets the property to the given server value. + ServerValue set_to_server_value = 2; + + // Adds the given value to the property's current value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the given value. + // If either of the given value or the current property value are doubles, + // both values will be interpreted as doubles. Double arithmetic and + // representation of double values follows IEEE 754 semantics. + // If there is positive/negative integer overflow, the property is resolved + // to the largest magnitude positive/negative integer. + Value increment = 3; + + // Sets the property to the maximum of its current value and the given + // value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the given value. + // If a maximum operation is applied where the property and the input value + // are of mixed types (that is - one is an integer and one is a double) + // the property takes on the type of the larger operand. If the operands are + // equivalent (e.g. 3 and 3.0), the property does not change. + // 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and + // zero input value is always the stored value. + // The maximum of any numeric value x and NaN is NaN. + Value maximum = 4; + + // Sets the property to the minimum of its current value and the given + // value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the input value. + // If a minimum operation is applied where the property and the input value + // are of mixed types (that is - one is an integer and one is a double) + // the property takes on the type of the smaller operand. If the operands + // are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0, + // and -0.0 are all zero. The minimum of a zero stored value and zero input + // value is always the stored value. The minimum of any numeric value x and + // NaN is NaN. + Value minimum = 5; + + // Appends the given elements in order if they are not already present in + // the current property value. + // If the property is not an array, or if the property does not yet exist, + // it is first set to the empty array. + // + // Equivalent numbers of different types (e.g. 3L and 3.0) are + // considered equal when checking if a value is missing. + // NaN is equal to NaN, and the null value is equal to the null value. + // If the input contains multiple equivalent values, only the first will + // be considered. + // + // The corresponding transform result will be the null value. + ArrayValue append_missing_elements = 6; + + // Removes all of the given elements from the array in the property. + // If the property is not an array, or if the property does not yet exist, + // it is set to the empty array. + // + // Equivalent numbers of different types (e.g. 3L and 3.0) are + // considered equal when deciding whether an element should be removed. + // NaN is equal to NaN, and the null value is equal to the null value. + // This will remove all equivalent values if there are duplicates. + // + // The corresponding transform result will be the null value. + ArrayValue remove_all_from_array = 7; + } } // The result of applying a mutation. @@ -578,6 +701,11 @@ message MutationResult { // Whether a conflict was detected for this mutation. Always false when a // conflict detection strategy field is not set in the mutation. bool conflict_detected = 5; + + // The results of applying each + // [PropertyTransform][google.datastore.v1.PropertyTransform], in the same + // order of the request. + repeated Value transform_results = 8; } // The set of arbitrarily nested property paths used to restrict an operation to @@ -611,16 +739,13 @@ message ReadOptions { EVENTUAL = 2; } - // For Cloud Datastore, if read_consistency is not specified, then lookups and - // ancestor queries default to `read_consistency`=`STRONG`, global queries - // default to `read_consistency`=`EVENTUAL`. - // - // For Cloud Firestore in Datastore mode, if read_consistency is not specified - // then lookups and all queries default to `read_consistency`=`STRONG`. + // For Cloud Firestore in Datastore mode, if you don't specify + // read_consistency then all lookups and queries default to + // `read_consistency`=`STRONG`. Note that, in Cloud Datastore, global queries + // defaulted to `read_consistency`=`EVENTUAL`. // // Explicitly setting `read_consistency`=`EVENTUAL` will result in eventually - // consistent lookups & queries in both Cloud Datastore & Cloud Firestore in - // Datastore mode. + // consistent lookups and queries. oneof consistency_type { // The non-transactional read consistency to use. ReadConsistency read_consistency = 1; diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto index 5ec0eea61a0..3c2e8ae6688 100644 --- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto +++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto @@ -82,6 +82,15 @@ message EntityResult { } // A query for entities. +// +// The query stages are executed in the following order: +// 1. kind +// 2. filter +// 3. projection +// 4. order + start_cursor + end_cursor +// 5. offset +// 6. limit +// 7. find_nearest message Query { // The projection to return. Defaults to returning all properties. repeated Projection projection = 2; @@ -127,6 +136,13 @@ message Query { // Unspecified is interpreted as no limit. // Must be >= 0 if specified. google.protobuf.Int32Value limit = 12; + + // Optional. A potential Nearest Neighbors Search. + // + // Applies after all other filters and ordering. + // + // Finds the closest vector embeddings to the given query vector. + FindNearest find_nearest = 13 [(google.api.field_behavior) = OPTIONAL]; } // Datastore query for running an aggregation over a @@ -436,6 +452,70 @@ message PropertyFilter { Value value = 3; } +// Nearest Neighbors search config. The ordering provided by FindNearest +// supersedes the order_by stage. If multiple documents have the same vector +// distance, the returned document order is not guaranteed to be stable between +// queries. +message FindNearest { + // The distance measure to use when comparing vectors. + enum DistanceMeasure { + // Should not be set. + DISTANCE_MEASURE_UNSPECIFIED = 0; + + // Measures the EUCLIDEAN distance between the vectors. See + // [Euclidean](https://en.wikipedia.org/wiki/Euclidean_distance) to learn + // more. The resulting distance decreases the more similar two vectors are. + EUCLIDEAN = 1; + + // COSINE distance compares vectors based on the angle between them, which + // allows you to measure similarity that isn't based on the vectors + // magnitude. We recommend using DOT_PRODUCT with unit normalized vectors + // instead of COSINE distance, which is mathematically equivalent with + // better performance. See [Cosine + // Similarity](https://en.wikipedia.org/wiki/Cosine_similarity) to learn + // more about COSINE similarity and COSINE distance. The resulting COSINE + // distance decreases the more similar two vectors are. + COSINE = 2; + + // Similar to cosine but is affected by the magnitude of the vectors. See + // [Dot Product](https://en.wikipedia.org/wiki/Dot_product) to learn more. + // The resulting distance increases the more similar two vectors are. + DOT_PRODUCT = 3; + } + + // Required. An indexed vector property to search upon. Only documents which + // contain vectors whose dimensionality match the query_vector can be + // returned. + PropertyReference vector_property = 1 + [(google.api.field_behavior) = REQUIRED]; + + // Required. The query vector that we are searching on. Must be a vector of no + // more than 2048 dimensions. + Value query_vector = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The Distance Measure to use, required. + DistanceMeasure distance_measure = 3 [(google.api.field_behavior) = REQUIRED]; + + // Required. The number of nearest neighbors to return. Must be a positive + // integer of no more than 100. + google.protobuf.Int32Value limit = 4 [(google.api.field_behavior) = REQUIRED]; + + // Optional. Optional name of the field to output the result of the vector + // distance calculation. Must conform to [entity + // property][google.datastore.v1.Entity.properties] limitations. + string distance_result_property = 5 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Option to specify a threshold for which no less similar documents + // will be returned. The behavior of the specified `distance_measure` will + // affect the meaning of the distance threshold. Since DOT_PRODUCT distances + // increase when the vectors are more similar, the comparison is inverted. + // + // For EUCLIDEAN, COSINE: WHERE distance <= distance_threshold + // For DOT_PRODUCT: WHERE distance >= distance_threshold + google.protobuf.DoubleValue distance_threshold = 6 + [(google.api.field_behavior) = OPTIONAL]; +} + // A [GQL // query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). message GqlQuery { diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts index 1b4893f8d6c..4ca4f6b53eb 100644 --- a/handwritten/nodejs-datastore/protos/protos.d.ts +++ b/handwritten/nodejs-datastore/protos/protos.d.ts @@ -3596,6 +3596,9 @@ export namespace google { /** Query limit */ limit?: (google.protobuf.IInt32Value|null); + + /** Query findNearest */ + findNearest?: (google.datastore.v1.IFindNearest|null); } /** Represents a Query. */ @@ -3634,6 +3637,9 @@ export namespace google { /** Query limit. */ public limit?: (google.protobuf.IInt32Value|null); + /** Query findNearest. */ + public findNearest?: (google.datastore.v1.IFindNearest|null); + /** * Creates a new Query instance using the specified properties. * @param [properties] Properties to set @@ -4982,6 +4988,144 @@ export namespace google { } } + /** Properties of a FindNearest. */ + interface IFindNearest { + + /** FindNearest vectorProperty */ + vectorProperty?: (google.datastore.v1.IPropertyReference|null); + + /** FindNearest queryVector */ + queryVector?: (google.datastore.v1.IValue|null); + + /** FindNearest distanceMeasure */ + distanceMeasure?: (google.datastore.v1.FindNearest.DistanceMeasure|keyof typeof google.datastore.v1.FindNearest.DistanceMeasure|null); + + /** FindNearest limit */ + limit?: (google.protobuf.IInt32Value|null); + + /** FindNearest distanceResultProperty */ + distanceResultProperty?: (string|null); + + /** FindNearest distanceThreshold */ + distanceThreshold?: (google.protobuf.IDoubleValue|null); + } + + /** Represents a FindNearest. */ + class FindNearest implements IFindNearest { + + /** + * Constructs a new FindNearest. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IFindNearest); + + /** FindNearest vectorProperty. */ + public vectorProperty?: (google.datastore.v1.IPropertyReference|null); + + /** FindNearest queryVector. */ + public queryVector?: (google.datastore.v1.IValue|null); + + /** FindNearest distanceMeasure. */ + public distanceMeasure: (google.datastore.v1.FindNearest.DistanceMeasure|keyof typeof google.datastore.v1.FindNearest.DistanceMeasure); + + /** FindNearest limit. */ + public limit?: (google.protobuf.IInt32Value|null); + + /** FindNearest distanceResultProperty. */ + public distanceResultProperty: string; + + /** FindNearest distanceThreshold. */ + public distanceThreshold?: (google.protobuf.IDoubleValue|null); + + /** + * Creates a new FindNearest instance using the specified properties. + * @param [properties] Properties to set + * @returns FindNearest instance + */ + public static create(properties?: google.datastore.v1.IFindNearest): google.datastore.v1.FindNearest; + + /** + * Encodes the specified FindNearest message. Does not implicitly {@link google.datastore.v1.FindNearest.verify|verify} messages. + * @param message FindNearest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IFindNearest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FindNearest message, length delimited. Does not implicitly {@link google.datastore.v1.FindNearest.verify|verify} messages. + * @param message FindNearest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IFindNearest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FindNearest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FindNearest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.FindNearest; + + /** + * Decodes a FindNearest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FindNearest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.FindNearest; + + /** + * Verifies a FindNearest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FindNearest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FindNearest + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.FindNearest; + + /** + * Creates a plain object from a FindNearest message. Also converts values to other types if specified. + * @param message FindNearest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.FindNearest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FindNearest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FindNearest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace FindNearest { + + /** DistanceMeasure enum. */ + enum DistanceMeasure { + DISTANCE_MEASURE_UNSPECIFIED = 0, + EUCLIDEAN = 1, + COSINE = 2, + DOT_PRODUCT = 3 + } + } + /** Properties of a GqlQuery. */ interface IGqlQuery { @@ -7378,8 +7522,14 @@ export namespace google { /** Mutation updateTime */ updateTime?: (google.protobuf.ITimestamp|null); + /** Mutation conflictResolutionStrategy */ + conflictResolutionStrategy?: (google.datastore.v1.Mutation.ConflictResolutionStrategy|keyof typeof google.datastore.v1.Mutation.ConflictResolutionStrategy|null); + /** Mutation propertyMask */ propertyMask?: (google.datastore.v1.IPropertyMask|null); + + /** Mutation propertyTransforms */ + propertyTransforms?: (google.datastore.v1.IPropertyTransform[]|null); } /** Represents a Mutation. */ @@ -7409,9 +7559,15 @@ export namespace google { /** Mutation updateTime. */ public updateTime?: (google.protobuf.ITimestamp|null); + /** Mutation conflictResolutionStrategy. */ + public conflictResolutionStrategy: (google.datastore.v1.Mutation.ConflictResolutionStrategy|keyof typeof google.datastore.v1.Mutation.ConflictResolutionStrategy); + /** Mutation propertyMask. */ public propertyMask?: (google.datastore.v1.IPropertyMask|null); + /** Mutation propertyTransforms. */ + public propertyTransforms: google.datastore.v1.IPropertyTransform[]; + /** Mutation operation. */ public operation?: ("insert"|"update"|"upsert"|"delete"); @@ -7496,6 +7652,161 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + namespace Mutation { + + /** ConflictResolutionStrategy enum. */ + enum ConflictResolutionStrategy { + STRATEGY_UNSPECIFIED = 0, + SERVER_VALUE = 1, + FAIL = 3 + } + } + + /** Properties of a PropertyTransform. */ + interface IPropertyTransform { + + /** PropertyTransform property */ + property?: (string|null); + + /** PropertyTransform setToServerValue */ + setToServerValue?: (google.datastore.v1.PropertyTransform.ServerValue|keyof typeof google.datastore.v1.PropertyTransform.ServerValue|null); + + /** PropertyTransform increment */ + increment?: (google.datastore.v1.IValue|null); + + /** PropertyTransform maximum */ + maximum?: (google.datastore.v1.IValue|null); + + /** PropertyTransform minimum */ + minimum?: (google.datastore.v1.IValue|null); + + /** PropertyTransform appendMissingElements */ + appendMissingElements?: (google.datastore.v1.IArrayValue|null); + + /** PropertyTransform removeAllFromArray */ + removeAllFromArray?: (google.datastore.v1.IArrayValue|null); + } + + /** Represents a PropertyTransform. */ + class PropertyTransform implements IPropertyTransform { + + /** + * Constructs a new PropertyTransform. + * @param [properties] Properties to set + */ + constructor(properties?: google.datastore.v1.IPropertyTransform); + + /** PropertyTransform property. */ + public property: string; + + /** PropertyTransform setToServerValue. */ + public setToServerValue?: (google.datastore.v1.PropertyTransform.ServerValue|keyof typeof google.datastore.v1.PropertyTransform.ServerValue|null); + + /** PropertyTransform increment. */ + public increment?: (google.datastore.v1.IValue|null); + + /** PropertyTransform maximum. */ + public maximum?: (google.datastore.v1.IValue|null); + + /** PropertyTransform minimum. */ + public minimum?: (google.datastore.v1.IValue|null); + + /** PropertyTransform appendMissingElements. */ + public appendMissingElements?: (google.datastore.v1.IArrayValue|null); + + /** PropertyTransform removeAllFromArray. */ + public removeAllFromArray?: (google.datastore.v1.IArrayValue|null); + + /** PropertyTransform transformType. */ + public transformType?: ("setToServerValue"|"increment"|"maximum"|"minimum"|"appendMissingElements"|"removeAllFromArray"); + + /** + * Creates a new PropertyTransform instance using the specified properties. + * @param [properties] Properties to set + * @returns PropertyTransform instance + */ + public static create(properties?: google.datastore.v1.IPropertyTransform): google.datastore.v1.PropertyTransform; + + /** + * Encodes the specified PropertyTransform message. Does not implicitly {@link google.datastore.v1.PropertyTransform.verify|verify} messages. + * @param message PropertyTransform message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.datastore.v1.IPropertyTransform, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PropertyTransform message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyTransform.verify|verify} messages. + * @param message PropertyTransform message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.datastore.v1.IPropertyTransform, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PropertyTransform message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PropertyTransform + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.datastore.v1.PropertyTransform; + + /** + * Decodes a PropertyTransform message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PropertyTransform + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.datastore.v1.PropertyTransform; + + /** + * Verifies a PropertyTransform message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a PropertyTransform message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PropertyTransform + */ + public static fromObject(object: { [k: string]: any }): google.datastore.v1.PropertyTransform; + + /** + * Creates a plain object from a PropertyTransform message. Also converts values to other types if specified. + * @param message PropertyTransform + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.datastore.v1.PropertyTransform, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this PropertyTransform to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for PropertyTransform + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace PropertyTransform { + + /** ServerValue enum. */ + enum ServerValue { + SERVER_VALUE_UNSPECIFIED = 0, + REQUEST_TIME = 1 + } + } + /** Properties of a MutationResult. */ interface IMutationResult { @@ -7513,6 +7824,9 @@ export namespace google { /** MutationResult conflictDetected */ conflictDetected?: (boolean|null); + + /** MutationResult transformResults */ + transformResults?: (google.datastore.v1.IValue[]|null); } /** Represents a MutationResult. */ @@ -7539,6 +7853,9 @@ export namespace google { /** MutationResult conflictDetected. */ public conflictDetected: boolean; + /** MutationResult transformResults. */ + public transformResults: google.datastore.v1.IValue[]; + /** * Creates a new MutationResult instance using the specified properties. * @param [properties] Properties to set diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js index 7cb01c81377..a6b2b37dbba 100644 --- a/handwritten/nodejs-datastore/protos/protos.js +++ b/handwritten/nodejs-datastore/protos/protos.js @@ -9153,6 +9153,7 @@ * @property {Uint8Array|null} [endCursor] Query endCursor * @property {number|null} [offset] Query offset * @property {google.protobuf.IInt32Value|null} [limit] Query limit + * @property {google.datastore.v1.IFindNearest|null} [findNearest] Query findNearest */ /** @@ -9246,6 +9247,14 @@ */ Query.prototype.limit = null; + /** + * Query findNearest. + * @member {google.datastore.v1.IFindNearest|null|undefined} findNearest + * @memberof google.datastore.v1.Query + * @instance + */ + Query.prototype.findNearest = null; + /** * Creates a new Query instance using the specified properties. * @function create @@ -9292,6 +9301,8 @@ writer.uint32(/* id 10, wireType 0 =*/80).int32(message.offset); if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.findNearest != null && Object.hasOwnProperty.call(message, "findNearest")) + $root.google.datastore.v1.FindNearest.encode(message.findNearest, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); return writer; }; @@ -9370,6 +9381,10 @@ message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); break; } + case 13: { + message.findNearest = $root.google.datastore.v1.FindNearest.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -9460,6 +9475,11 @@ if (error) return "limit." + error; } + if (message.findNearest != null && message.hasOwnProperty("findNearest")) { + var error = $root.google.datastore.v1.FindNearest.verify(message.findNearest); + if (error) + return "findNearest." + error; + } return null; }; @@ -9537,6 +9557,11 @@ throw TypeError(".google.datastore.v1.Query.limit: object expected"); message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); } + if (object.findNearest != null) { + if (typeof object.findNearest !== "object") + throw TypeError(".google.datastore.v1.Query.findNearest: object expected"); + message.findNearest = $root.google.datastore.v1.FindNearest.fromObject(object.findNearest); + } return message; }; @@ -9577,6 +9602,7 @@ } object.offset = 0; object.limit = null; + object.findNearest = null; } if (message.projection && message.projection.length) { object.projection = []; @@ -9608,6 +9634,8 @@ object.offset = message.offset; if (message.limit != null && message.hasOwnProperty("limit")) object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); + if (message.findNearest != null && message.hasOwnProperty("findNearest")) + object.findNearest = $root.google.datastore.v1.FindNearest.toObject(message.findNearest, options); return object; }; @@ -12642,6 +12670,392 @@ return PropertyFilter; })(); + v1.FindNearest = (function() { + + /** + * Properties of a FindNearest. + * @memberof google.datastore.v1 + * @interface IFindNearest + * @property {google.datastore.v1.IPropertyReference|null} [vectorProperty] FindNearest vectorProperty + * @property {google.datastore.v1.IValue|null} [queryVector] FindNearest queryVector + * @property {google.datastore.v1.FindNearest.DistanceMeasure|null} [distanceMeasure] FindNearest distanceMeasure + * @property {google.protobuf.IInt32Value|null} [limit] FindNearest limit + * @property {string|null} [distanceResultProperty] FindNearest distanceResultProperty + * @property {google.protobuf.IDoubleValue|null} [distanceThreshold] FindNearest distanceThreshold + */ + + /** + * Constructs a new FindNearest. + * @memberof google.datastore.v1 + * @classdesc Represents a FindNearest. + * @implements IFindNearest + * @constructor + * @param {google.datastore.v1.IFindNearest=} [properties] Properties to set + */ + function FindNearest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FindNearest vectorProperty. + * @member {google.datastore.v1.IPropertyReference|null|undefined} vectorProperty + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.vectorProperty = null; + + /** + * FindNearest queryVector. + * @member {google.datastore.v1.IValue|null|undefined} queryVector + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.queryVector = null; + + /** + * FindNearest distanceMeasure. + * @member {google.datastore.v1.FindNearest.DistanceMeasure} distanceMeasure + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.distanceMeasure = 0; + + /** + * FindNearest limit. + * @member {google.protobuf.IInt32Value|null|undefined} limit + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.limit = null; + + /** + * FindNearest distanceResultProperty. + * @member {string} distanceResultProperty + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.distanceResultProperty = ""; + + /** + * FindNearest distanceThreshold. + * @member {google.protobuf.IDoubleValue|null|undefined} distanceThreshold + * @memberof google.datastore.v1.FindNearest + * @instance + */ + FindNearest.prototype.distanceThreshold = null; + + /** + * Creates a new FindNearest instance using the specified properties. + * @function create + * @memberof google.datastore.v1.FindNearest + * @static + * @param {google.datastore.v1.IFindNearest=} [properties] Properties to set + * @returns {google.datastore.v1.FindNearest} FindNearest instance + */ + FindNearest.create = function create(properties) { + return new FindNearest(properties); + }; + + /** + * Encodes the specified FindNearest message. Does not implicitly {@link google.datastore.v1.FindNearest.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.FindNearest + * @static + * @param {google.datastore.v1.IFindNearest} message FindNearest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FindNearest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.vectorProperty != null && Object.hasOwnProperty.call(message, "vectorProperty")) + $root.google.datastore.v1.PropertyReference.encode(message.vectorProperty, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.queryVector != null && Object.hasOwnProperty.call(message, "queryVector")) + $root.google.datastore.v1.Value.encode(message.queryVector, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.distanceMeasure != null && Object.hasOwnProperty.call(message, "distanceMeasure")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.distanceMeasure); + if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) + $root.google.protobuf.Int32Value.encode(message.limit, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.distanceResultProperty != null && Object.hasOwnProperty.call(message, "distanceResultProperty")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.distanceResultProperty); + if (message.distanceThreshold != null && Object.hasOwnProperty.call(message, "distanceThreshold")) + $root.google.protobuf.DoubleValue.encode(message.distanceThreshold, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FindNearest message, length delimited. Does not implicitly {@link google.datastore.v1.FindNearest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.FindNearest + * @static + * @param {google.datastore.v1.IFindNearest} message FindNearest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FindNearest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FindNearest message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.FindNearest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.FindNearest} FindNearest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FindNearest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.FindNearest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.vectorProperty = $root.google.datastore.v1.PropertyReference.decode(reader, reader.uint32()); + break; + } + case 2: { + message.queryVector = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + case 3: { + message.distanceMeasure = reader.int32(); + break; + } + case 4: { + message.limit = $root.google.protobuf.Int32Value.decode(reader, reader.uint32()); + break; + } + case 5: { + message.distanceResultProperty = reader.string(); + break; + } + case 6: { + message.distanceThreshold = $root.google.protobuf.DoubleValue.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FindNearest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.FindNearest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.FindNearest} FindNearest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FindNearest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FindNearest message. + * @function verify + * @memberof google.datastore.v1.FindNearest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FindNearest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.vectorProperty != null && message.hasOwnProperty("vectorProperty")) { + var error = $root.google.datastore.v1.PropertyReference.verify(message.vectorProperty); + if (error) + return "vectorProperty." + error; + } + if (message.queryVector != null && message.hasOwnProperty("queryVector")) { + var error = $root.google.datastore.v1.Value.verify(message.queryVector); + if (error) + return "queryVector." + error; + } + if (message.distanceMeasure != null && message.hasOwnProperty("distanceMeasure")) + switch (message.distanceMeasure) { + default: + return "distanceMeasure: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.limit != null && message.hasOwnProperty("limit")) { + var error = $root.google.protobuf.Int32Value.verify(message.limit); + if (error) + return "limit." + error; + } + if (message.distanceResultProperty != null && message.hasOwnProperty("distanceResultProperty")) + if (!$util.isString(message.distanceResultProperty)) + return "distanceResultProperty: string expected"; + if (message.distanceThreshold != null && message.hasOwnProperty("distanceThreshold")) { + var error = $root.google.protobuf.DoubleValue.verify(message.distanceThreshold); + if (error) + return "distanceThreshold." + error; + } + return null; + }; + + /** + * Creates a FindNearest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.FindNearest + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.FindNearest} FindNearest + */ + FindNearest.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.FindNearest) + return object; + var message = new $root.google.datastore.v1.FindNearest(); + if (object.vectorProperty != null) { + if (typeof object.vectorProperty !== "object") + throw TypeError(".google.datastore.v1.FindNearest.vectorProperty: object expected"); + message.vectorProperty = $root.google.datastore.v1.PropertyReference.fromObject(object.vectorProperty); + } + if (object.queryVector != null) { + if (typeof object.queryVector !== "object") + throw TypeError(".google.datastore.v1.FindNearest.queryVector: object expected"); + message.queryVector = $root.google.datastore.v1.Value.fromObject(object.queryVector); + } + switch (object.distanceMeasure) { + default: + if (typeof object.distanceMeasure === "number") { + message.distanceMeasure = object.distanceMeasure; + break; + } + break; + case "DISTANCE_MEASURE_UNSPECIFIED": + case 0: + message.distanceMeasure = 0; + break; + case "EUCLIDEAN": + case 1: + message.distanceMeasure = 1; + break; + case "COSINE": + case 2: + message.distanceMeasure = 2; + break; + case "DOT_PRODUCT": + case 3: + message.distanceMeasure = 3; + break; + } + if (object.limit != null) { + if (typeof object.limit !== "object") + throw TypeError(".google.datastore.v1.FindNearest.limit: object expected"); + message.limit = $root.google.protobuf.Int32Value.fromObject(object.limit); + } + if (object.distanceResultProperty != null) + message.distanceResultProperty = String(object.distanceResultProperty); + if (object.distanceThreshold != null) { + if (typeof object.distanceThreshold !== "object") + throw TypeError(".google.datastore.v1.FindNearest.distanceThreshold: object expected"); + message.distanceThreshold = $root.google.protobuf.DoubleValue.fromObject(object.distanceThreshold); + } + return message; + }; + + /** + * Creates a plain object from a FindNearest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.FindNearest + * @static + * @param {google.datastore.v1.FindNearest} message FindNearest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FindNearest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.vectorProperty = null; + object.queryVector = null; + object.distanceMeasure = options.enums === String ? "DISTANCE_MEASURE_UNSPECIFIED" : 0; + object.limit = null; + object.distanceResultProperty = ""; + object.distanceThreshold = null; + } + if (message.vectorProperty != null && message.hasOwnProperty("vectorProperty")) + object.vectorProperty = $root.google.datastore.v1.PropertyReference.toObject(message.vectorProperty, options); + if (message.queryVector != null && message.hasOwnProperty("queryVector")) + object.queryVector = $root.google.datastore.v1.Value.toObject(message.queryVector, options); + if (message.distanceMeasure != null && message.hasOwnProperty("distanceMeasure")) + object.distanceMeasure = options.enums === String ? $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] === undefined ? message.distanceMeasure : $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] : message.distanceMeasure; + if (message.limit != null && message.hasOwnProperty("limit")) + object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options); + if (message.distanceResultProperty != null && message.hasOwnProperty("distanceResultProperty")) + object.distanceResultProperty = message.distanceResultProperty; + if (message.distanceThreshold != null && message.hasOwnProperty("distanceThreshold")) + object.distanceThreshold = $root.google.protobuf.DoubleValue.toObject(message.distanceThreshold, options); + return object; + }; + + /** + * Converts this FindNearest to JSON. + * @function toJSON + * @memberof google.datastore.v1.FindNearest + * @instance + * @returns {Object.} JSON object + */ + FindNearest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for FindNearest + * @function getTypeUrl + * @memberof google.datastore.v1.FindNearest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FindNearest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.FindNearest"; + }; + + /** + * DistanceMeasure enum. + * @name google.datastore.v1.FindNearest.DistanceMeasure + * @enum {number} + * @property {number} DISTANCE_MEASURE_UNSPECIFIED=0 DISTANCE_MEASURE_UNSPECIFIED value + * @property {number} EUCLIDEAN=1 EUCLIDEAN value + * @property {number} COSINE=2 COSINE value + * @property {number} DOT_PRODUCT=3 DOT_PRODUCT value + */ + FindNearest.DistanceMeasure = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DISTANCE_MEASURE_UNSPECIFIED"] = 0; + values[valuesById[1] = "EUCLIDEAN"] = 1; + values[valuesById[2] = "COSINE"] = 2; + values[valuesById[3] = "DOT_PRODUCT"] = 3; + return values; + })(); + + return FindNearest; + })(); + v1.GqlQuery = (function() { /** @@ -18706,7 +19120,9 @@ * @property {google.datastore.v1.IKey|null} ["delete"] Mutation delete * @property {number|Long|null} [baseVersion] Mutation baseVersion * @property {google.protobuf.ITimestamp|null} [updateTime] Mutation updateTime + * @property {google.datastore.v1.Mutation.ConflictResolutionStrategy|null} [conflictResolutionStrategy] Mutation conflictResolutionStrategy * @property {google.datastore.v1.IPropertyMask|null} [propertyMask] Mutation propertyMask + * @property {Array.|null} [propertyTransforms] Mutation propertyTransforms */ /** @@ -18718,6 +19134,7 @@ * @param {google.datastore.v1.IMutation=} [properties] Properties to set */ function Mutation(properties) { + this.propertyTransforms = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -18772,6 +19189,14 @@ */ Mutation.prototype.updateTime = null; + /** + * Mutation conflictResolutionStrategy. + * @member {google.datastore.v1.Mutation.ConflictResolutionStrategy} conflictResolutionStrategy + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.conflictResolutionStrategy = 0; + /** * Mutation propertyMask. * @member {google.datastore.v1.IPropertyMask|null|undefined} propertyMask @@ -18780,6 +19205,14 @@ */ Mutation.prototype.propertyMask = null; + /** + * Mutation propertyTransforms. + * @member {Array.} propertyTransforms + * @memberof google.datastore.v1.Mutation + * @instance + */ + Mutation.prototype.propertyTransforms = $util.emptyArray; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -18841,8 +19274,13 @@ writer.uint32(/* id 8, wireType 0 =*/64).int64(message.baseVersion); if (message.propertyMask != null && Object.hasOwnProperty.call(message, "propertyMask")) $root.google.datastore.v1.PropertyMask.encode(message.propertyMask, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.conflictResolutionStrategy != null && Object.hasOwnProperty.call(message, "conflictResolutionStrategy")) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.conflictResolutionStrategy); if (message.updateTime != null && Object.hasOwnProperty.call(message, "updateTime")) $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.propertyTransforms != null && message.propertyTransforms.length) + for (var i = 0; i < message.propertyTransforms.length; ++i) + $root.google.datastore.v1.PropertyTransform.encode(message.propertyTransforms[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); return writer; }; @@ -18901,10 +19339,20 @@ message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } + case 10: { + message.conflictResolutionStrategy = reader.int32(); + break; + } case 9: { message.propertyMask = $root.google.datastore.v1.PropertyMask.decode(reader, reader.uint32()); break; } + case 12: { + if (!(message.propertyTransforms && message.propertyTransforms.length)) + message.propertyTransforms = []; + message.propertyTransforms.push($root.google.datastore.v1.PropertyTransform.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -18994,11 +19442,29 @@ return "updateTime." + error; } } + if (message.conflictResolutionStrategy != null && message.hasOwnProperty("conflictResolutionStrategy")) + switch (message.conflictResolutionStrategy) { + default: + return "conflictResolutionStrategy: enum value expected"; + case 0: + case 1: + case 3: + break; + } if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) { var error = $root.google.datastore.v1.PropertyMask.verify(message.propertyMask); if (error) return "propertyMask." + error; } + if (message.propertyTransforms != null && message.hasOwnProperty("propertyTransforms")) { + if (!Array.isArray(message.propertyTransforms)) + return "propertyTransforms: array expected"; + for (var i = 0; i < message.propertyTransforms.length; ++i) { + var error = $root.google.datastore.v1.PropertyTransform.verify(message.propertyTransforms[i]); + if (error) + return "propertyTransforms." + error; + } + } return null; }; @@ -19048,11 +19514,41 @@ throw TypeError(".google.datastore.v1.Mutation.updateTime: object expected"); message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); } - if (object.propertyMask != null) { - if (typeof object.propertyMask !== "object") + switch (object.conflictResolutionStrategy) { + default: + if (typeof object.conflictResolutionStrategy === "number") { + message.conflictResolutionStrategy = object.conflictResolutionStrategy; + break; + } + break; + case "STRATEGY_UNSPECIFIED": + case 0: + message.conflictResolutionStrategy = 0; + break; + case "SERVER_VALUE": + case 1: + message.conflictResolutionStrategy = 1; + break; + case "FAIL": + case 3: + message.conflictResolutionStrategy = 3; + break; + } + if (object.propertyMask != null) { + if (typeof object.propertyMask !== "object") throw TypeError(".google.datastore.v1.Mutation.propertyMask: object expected"); message.propertyMask = $root.google.datastore.v1.PropertyMask.fromObject(object.propertyMask); } + if (object.propertyTransforms) { + if (!Array.isArray(object.propertyTransforms)) + throw TypeError(".google.datastore.v1.Mutation.propertyTransforms: array expected"); + message.propertyTransforms = []; + for (var i = 0; i < object.propertyTransforms.length; ++i) { + if (typeof object.propertyTransforms[i] !== "object") + throw TypeError(".google.datastore.v1.Mutation.propertyTransforms: object expected"); + message.propertyTransforms[i] = $root.google.datastore.v1.PropertyTransform.fromObject(object.propertyTransforms[i]); + } + } return message; }; @@ -19069,8 +19565,12 @@ if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.arrays || options.defaults) + object.propertyTransforms = []; + if (options.defaults) { object.propertyMask = null; + object.conflictResolutionStrategy = options.enums === String ? "STRATEGY_UNSPECIFIED" : 0; + } if (message.insert != null && message.hasOwnProperty("insert")) { object.insert = $root.google.datastore.v1.Entity.toObject(message.insert, options); if (options.oneofs) @@ -19101,11 +19601,18 @@ } if (message.propertyMask != null && message.hasOwnProperty("propertyMask")) object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options); + if (message.conflictResolutionStrategy != null && message.hasOwnProperty("conflictResolutionStrategy")) + object.conflictResolutionStrategy = options.enums === String ? $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] === undefined ? message.conflictResolutionStrategy : $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] : message.conflictResolutionStrategy; if (message.updateTime != null && message.hasOwnProperty("updateTime")) { object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); if (options.oneofs) object.conflictDetectionStrategy = "updateTime"; } + if (message.propertyTransforms && message.propertyTransforms.length) { + object.propertyTransforms = []; + for (var j = 0; j < message.propertyTransforms.length; ++j) + object.propertyTransforms[j] = $root.google.datastore.v1.PropertyTransform.toObject(message.propertyTransforms[j], options); + } return object; }; @@ -19135,9 +19642,478 @@ return typeUrlPrefix + "/google.datastore.v1.Mutation"; }; + /** + * ConflictResolutionStrategy enum. + * @name google.datastore.v1.Mutation.ConflictResolutionStrategy + * @enum {number} + * @property {number} STRATEGY_UNSPECIFIED=0 STRATEGY_UNSPECIFIED value + * @property {number} SERVER_VALUE=1 SERVER_VALUE value + * @property {number} FAIL=3 FAIL value + */ + Mutation.ConflictResolutionStrategy = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STRATEGY_UNSPECIFIED"] = 0; + values[valuesById[1] = "SERVER_VALUE"] = 1; + values[valuesById[3] = "FAIL"] = 3; + return values; + })(); + return Mutation; })(); + v1.PropertyTransform = (function() { + + /** + * Properties of a PropertyTransform. + * @memberof google.datastore.v1 + * @interface IPropertyTransform + * @property {string|null} [property] PropertyTransform property + * @property {google.datastore.v1.PropertyTransform.ServerValue|null} [setToServerValue] PropertyTransform setToServerValue + * @property {google.datastore.v1.IValue|null} [increment] PropertyTransform increment + * @property {google.datastore.v1.IValue|null} [maximum] PropertyTransform maximum + * @property {google.datastore.v1.IValue|null} [minimum] PropertyTransform minimum + * @property {google.datastore.v1.IArrayValue|null} [appendMissingElements] PropertyTransform appendMissingElements + * @property {google.datastore.v1.IArrayValue|null} [removeAllFromArray] PropertyTransform removeAllFromArray + */ + + /** + * Constructs a new PropertyTransform. + * @memberof google.datastore.v1 + * @classdesc Represents a PropertyTransform. + * @implements IPropertyTransform + * @constructor + * @param {google.datastore.v1.IPropertyTransform=} [properties] Properties to set + */ + function PropertyTransform(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PropertyTransform property. + * @member {string} property + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.property = ""; + + /** + * PropertyTransform setToServerValue. + * @member {google.datastore.v1.PropertyTransform.ServerValue|null|undefined} setToServerValue + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.setToServerValue = null; + + /** + * PropertyTransform increment. + * @member {google.datastore.v1.IValue|null|undefined} increment + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.increment = null; + + /** + * PropertyTransform maximum. + * @member {google.datastore.v1.IValue|null|undefined} maximum + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.maximum = null; + + /** + * PropertyTransform minimum. + * @member {google.datastore.v1.IValue|null|undefined} minimum + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.minimum = null; + + /** + * PropertyTransform appendMissingElements. + * @member {google.datastore.v1.IArrayValue|null|undefined} appendMissingElements + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.appendMissingElements = null; + + /** + * PropertyTransform removeAllFromArray. + * @member {google.datastore.v1.IArrayValue|null|undefined} removeAllFromArray + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + PropertyTransform.prototype.removeAllFromArray = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PropertyTransform transformType. + * @member {"setToServerValue"|"increment"|"maximum"|"minimum"|"appendMissingElements"|"removeAllFromArray"|undefined} transformType + * @memberof google.datastore.v1.PropertyTransform + * @instance + */ + Object.defineProperty(PropertyTransform.prototype, "transformType", { + get: $util.oneOfGetter($oneOfFields = ["setToServerValue", "increment", "maximum", "minimum", "appendMissingElements", "removeAllFromArray"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PropertyTransform instance using the specified properties. + * @function create + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {google.datastore.v1.IPropertyTransform=} [properties] Properties to set + * @returns {google.datastore.v1.PropertyTransform} PropertyTransform instance + */ + PropertyTransform.create = function create(properties) { + return new PropertyTransform(properties); + }; + + /** + * Encodes the specified PropertyTransform message. Does not implicitly {@link google.datastore.v1.PropertyTransform.verify|verify} messages. + * @function encode + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {google.datastore.v1.IPropertyTransform} message PropertyTransform message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyTransform.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.property != null && Object.hasOwnProperty.call(message, "property")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.property); + if (message.setToServerValue != null && Object.hasOwnProperty.call(message, "setToServerValue")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.setToServerValue); + if (message.increment != null && Object.hasOwnProperty.call(message, "increment")) + $root.google.datastore.v1.Value.encode(message.increment, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.maximum != null && Object.hasOwnProperty.call(message, "maximum")) + $root.google.datastore.v1.Value.encode(message.maximum, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.minimum != null && Object.hasOwnProperty.call(message, "minimum")) + $root.google.datastore.v1.Value.encode(message.minimum, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.appendMissingElements != null && Object.hasOwnProperty.call(message, "appendMissingElements")) + $root.google.datastore.v1.ArrayValue.encode(message.appendMissingElements, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.removeAllFromArray != null && Object.hasOwnProperty.call(message, "removeAllFromArray")) + $root.google.datastore.v1.ArrayValue.encode(message.removeAllFromArray, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PropertyTransform message, length delimited. Does not implicitly {@link google.datastore.v1.PropertyTransform.verify|verify} messages. + * @function encodeDelimited + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {google.datastore.v1.IPropertyTransform} message PropertyTransform message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PropertyTransform.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PropertyTransform message from the specified reader or buffer. + * @function decode + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.datastore.v1.PropertyTransform} PropertyTransform + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyTransform.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.v1.PropertyTransform(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.property = reader.string(); + break; + } + case 2: { + message.setToServerValue = reader.int32(); + break; + } + case 3: { + message.increment = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + case 4: { + message.maximum = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + case 5: { + message.minimum = $root.google.datastore.v1.Value.decode(reader, reader.uint32()); + break; + } + case 6: { + message.appendMissingElements = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); + break; + } + case 7: { + message.removeAllFromArray = $root.google.datastore.v1.ArrayValue.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PropertyTransform message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.datastore.v1.PropertyTransform} PropertyTransform + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PropertyTransform.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PropertyTransform message. + * @function verify + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PropertyTransform.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.property != null && message.hasOwnProperty("property")) + if (!$util.isString(message.property)) + return "property: string expected"; + if (message.setToServerValue != null && message.hasOwnProperty("setToServerValue")) { + properties.transformType = 1; + switch (message.setToServerValue) { + default: + return "setToServerValue: enum value expected"; + case 0: + case 1: + break; + } + } + if (message.increment != null && message.hasOwnProperty("increment")) { + if (properties.transformType === 1) + return "transformType: multiple values"; + properties.transformType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.increment); + if (error) + return "increment." + error; + } + } + if (message.maximum != null && message.hasOwnProperty("maximum")) { + if (properties.transformType === 1) + return "transformType: multiple values"; + properties.transformType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.maximum); + if (error) + return "maximum." + error; + } + } + if (message.minimum != null && message.hasOwnProperty("minimum")) { + if (properties.transformType === 1) + return "transformType: multiple values"; + properties.transformType = 1; + { + var error = $root.google.datastore.v1.Value.verify(message.minimum); + if (error) + return "minimum." + error; + } + } + if (message.appendMissingElements != null && message.hasOwnProperty("appendMissingElements")) { + if (properties.transformType === 1) + return "transformType: multiple values"; + properties.transformType = 1; + { + var error = $root.google.datastore.v1.ArrayValue.verify(message.appendMissingElements); + if (error) + return "appendMissingElements." + error; + } + } + if (message.removeAllFromArray != null && message.hasOwnProperty("removeAllFromArray")) { + if (properties.transformType === 1) + return "transformType: multiple values"; + properties.transformType = 1; + { + var error = $root.google.datastore.v1.ArrayValue.verify(message.removeAllFromArray); + if (error) + return "removeAllFromArray." + error; + } + } + return null; + }; + + /** + * Creates a PropertyTransform message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {Object.} object Plain object + * @returns {google.datastore.v1.PropertyTransform} PropertyTransform + */ + PropertyTransform.fromObject = function fromObject(object) { + if (object instanceof $root.google.datastore.v1.PropertyTransform) + return object; + var message = new $root.google.datastore.v1.PropertyTransform(); + if (object.property != null) + message.property = String(object.property); + switch (object.setToServerValue) { + default: + if (typeof object.setToServerValue === "number") { + message.setToServerValue = object.setToServerValue; + break; + } + break; + case "SERVER_VALUE_UNSPECIFIED": + case 0: + message.setToServerValue = 0; + break; + case "REQUEST_TIME": + case 1: + message.setToServerValue = 1; + break; + } + if (object.increment != null) { + if (typeof object.increment !== "object") + throw TypeError(".google.datastore.v1.PropertyTransform.increment: object expected"); + message.increment = $root.google.datastore.v1.Value.fromObject(object.increment); + } + if (object.maximum != null) { + if (typeof object.maximum !== "object") + throw TypeError(".google.datastore.v1.PropertyTransform.maximum: object expected"); + message.maximum = $root.google.datastore.v1.Value.fromObject(object.maximum); + } + if (object.minimum != null) { + if (typeof object.minimum !== "object") + throw TypeError(".google.datastore.v1.PropertyTransform.minimum: object expected"); + message.minimum = $root.google.datastore.v1.Value.fromObject(object.minimum); + } + if (object.appendMissingElements != null) { + if (typeof object.appendMissingElements !== "object") + throw TypeError(".google.datastore.v1.PropertyTransform.appendMissingElements: object expected"); + message.appendMissingElements = $root.google.datastore.v1.ArrayValue.fromObject(object.appendMissingElements); + } + if (object.removeAllFromArray != null) { + if (typeof object.removeAllFromArray !== "object") + throw TypeError(".google.datastore.v1.PropertyTransform.removeAllFromArray: object expected"); + message.removeAllFromArray = $root.google.datastore.v1.ArrayValue.fromObject(object.removeAllFromArray); + } + return message; + }; + + /** + * Creates a plain object from a PropertyTransform message. Also converts values to other types if specified. + * @function toObject + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {google.datastore.v1.PropertyTransform} message PropertyTransform + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PropertyTransform.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.property = ""; + if (message.property != null && message.hasOwnProperty("property")) + object.property = message.property; + if (message.setToServerValue != null && message.hasOwnProperty("setToServerValue")) { + object.setToServerValue = options.enums === String ? $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] === undefined ? message.setToServerValue : $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] : message.setToServerValue; + if (options.oneofs) + object.transformType = "setToServerValue"; + } + if (message.increment != null && message.hasOwnProperty("increment")) { + object.increment = $root.google.datastore.v1.Value.toObject(message.increment, options); + if (options.oneofs) + object.transformType = "increment"; + } + if (message.maximum != null && message.hasOwnProperty("maximum")) { + object.maximum = $root.google.datastore.v1.Value.toObject(message.maximum, options); + if (options.oneofs) + object.transformType = "maximum"; + } + if (message.minimum != null && message.hasOwnProperty("minimum")) { + object.minimum = $root.google.datastore.v1.Value.toObject(message.minimum, options); + if (options.oneofs) + object.transformType = "minimum"; + } + if (message.appendMissingElements != null && message.hasOwnProperty("appendMissingElements")) { + object.appendMissingElements = $root.google.datastore.v1.ArrayValue.toObject(message.appendMissingElements, options); + if (options.oneofs) + object.transformType = "appendMissingElements"; + } + if (message.removeAllFromArray != null && message.hasOwnProperty("removeAllFromArray")) { + object.removeAllFromArray = $root.google.datastore.v1.ArrayValue.toObject(message.removeAllFromArray, options); + if (options.oneofs) + object.transformType = "removeAllFromArray"; + } + return object; + }; + + /** + * Converts this PropertyTransform to JSON. + * @function toJSON + * @memberof google.datastore.v1.PropertyTransform + * @instance + * @returns {Object.} JSON object + */ + PropertyTransform.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PropertyTransform + * @function getTypeUrl + * @memberof google.datastore.v1.PropertyTransform + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PropertyTransform.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.datastore.v1.PropertyTransform"; + }; + + /** + * ServerValue enum. + * @name google.datastore.v1.PropertyTransform.ServerValue + * @enum {number} + * @property {number} SERVER_VALUE_UNSPECIFIED=0 SERVER_VALUE_UNSPECIFIED value + * @property {number} REQUEST_TIME=1 REQUEST_TIME value + */ + PropertyTransform.ServerValue = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "SERVER_VALUE_UNSPECIFIED"] = 0; + values[valuesById[1] = "REQUEST_TIME"] = 1; + return values; + })(); + + return PropertyTransform; + })(); + v1.MutationResult = (function() { /** @@ -19149,6 +20125,7 @@ * @property {google.protobuf.ITimestamp|null} [createTime] MutationResult createTime * @property {google.protobuf.ITimestamp|null} [updateTime] MutationResult updateTime * @property {boolean|null} [conflictDetected] MutationResult conflictDetected + * @property {Array.|null} [transformResults] MutationResult transformResults */ /** @@ -19160,6 +20137,7 @@ * @param {google.datastore.v1.IMutationResult=} [properties] Properties to set */ function MutationResult(properties) { + this.transformResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -19206,6 +20184,14 @@ */ MutationResult.prototype.conflictDetected = false; + /** + * MutationResult transformResults. + * @member {Array.} transformResults + * @memberof google.datastore.v1.MutationResult + * @instance + */ + MutationResult.prototype.transformResults = $util.emptyArray; + /** * Creates a new MutationResult instance using the specified properties. * @function create @@ -19240,6 +20226,9 @@ $root.google.protobuf.Timestamp.encode(message.updateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); if (message.createTime != null && Object.hasOwnProperty.call(message, "createTime")) $root.google.protobuf.Timestamp.encode(message.createTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.transformResults != null && message.transformResults.length) + for (var i = 0; i < message.transformResults.length; ++i) + $root.google.datastore.v1.Value.encode(message.transformResults[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); return writer; }; @@ -19294,6 +20283,12 @@ message.conflictDetected = reader.bool(); break; } + case 8: { + if (!(message.transformResults && message.transformResults.length)) + message.transformResults = []; + message.transformResults.push($root.google.datastore.v1.Value.decode(reader, reader.uint32())); + break; + } default: reader.skipType(tag & 7); break; @@ -19350,6 +20345,15 @@ if (message.conflictDetected != null && message.hasOwnProperty("conflictDetected")) if (typeof message.conflictDetected !== "boolean") return "conflictDetected: boolean expected"; + if (message.transformResults != null && message.hasOwnProperty("transformResults")) { + if (!Array.isArray(message.transformResults)) + return "transformResults: array expected"; + for (var i = 0; i < message.transformResults.length; ++i) { + var error = $root.google.datastore.v1.Value.verify(message.transformResults[i]); + if (error) + return "transformResults." + error; + } + } return null; }; @@ -19391,6 +20395,16 @@ } if (object.conflictDetected != null) message.conflictDetected = Boolean(object.conflictDetected); + if (object.transformResults) { + if (!Array.isArray(object.transformResults)) + throw TypeError(".google.datastore.v1.MutationResult.transformResults: array expected"); + message.transformResults = []; + for (var i = 0; i < object.transformResults.length; ++i) { + if (typeof object.transformResults[i] !== "object") + throw TypeError(".google.datastore.v1.MutationResult.transformResults: object expected"); + message.transformResults[i] = $root.google.datastore.v1.Value.fromObject(object.transformResults[i]); + } + } return message; }; @@ -19407,6 +20421,8 @@ if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.transformResults = []; if (options.defaults) { object.key = null; if ($util.Long) { @@ -19431,6 +20447,11 @@ object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options); if (message.createTime != null && message.hasOwnProperty("createTime")) object.createTime = $root.google.protobuf.Timestamp.toObject(message.createTime, options); + if (message.transformResults && message.transformResults.length) { + object.transformResults = []; + for (var j = 0; j < message.transformResults.length; ++j) + object.transformResults[j] = $root.google.datastore.v1.Value.toObject(message.transformResults[j], options); + } return object; }; diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json index 2dd3af9ec01..e60b2d06bf0 100644 --- a/handwritten/nodejs-datastore/protos/protos.json +++ b/handwritten/nodejs-datastore/protos/protos.json @@ -873,6 +873,13 @@ "limit": { "type": "google.protobuf.Int32Value", "id": 12 + }, + "findNearest": { + "type": "FindNearest", + "id": 13, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -1081,6 +1088,62 @@ } } }, + "FindNearest": { + "fields": { + "vectorProperty": { + "type": "PropertyReference", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "queryVector": { + "type": "Value", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "distanceMeasure": { + "type": "DistanceMeasure", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "limit": { + "type": "google.protobuf.Int32Value", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "distanceResultProperty": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "distanceThreshold": { + "type": "google.protobuf.DoubleValue", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "DistanceMeasure": { + "values": { + "DISTANCE_MEASURE_UNSPECIFIED": 0, + "EUCLIDEAN": 1, + "COSINE": 2, + "DOT_PRODUCT": 3 + } + } + } + }, "GqlQuery": { "fields": { "queryString": { @@ -1850,9 +1913,85 @@ "type": "google.protobuf.Timestamp", "id": 11 }, + "conflictResolutionStrategy": { + "type": "ConflictResolutionStrategy", + "id": 10 + }, "propertyMask": { "type": "PropertyMask", "id": 9 + }, + "propertyTransforms": { + "rule": "repeated", + "type": "PropertyTransform", + "id": 12, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "ConflictResolutionStrategy": { + "values": { + "STRATEGY_UNSPECIFIED": 0, + "SERVER_VALUE": 1, + "FAIL": 3 + } + } + } + }, + "PropertyTransform": { + "oneofs": { + "transformType": { + "oneof": [ + "setToServerValue", + "increment", + "maximum", + "minimum", + "appendMissingElements", + "removeAllFromArray" + ] + } + }, + "fields": { + "property": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "setToServerValue": { + "type": "ServerValue", + "id": 2 + }, + "increment": { + "type": "Value", + "id": 3 + }, + "maximum": { + "type": "Value", + "id": 4 + }, + "minimum": { + "type": "Value", + "id": 5 + }, + "appendMissingElements": { + "type": "ArrayValue", + "id": 6 + }, + "removeAllFromArray": { + "type": "ArrayValue", + "id": 7 + } + }, + "nested": { + "ServerValue": { + "values": { + "SERVER_VALUE_UNSPECIFIED": 0, + "REQUEST_TIME": 1 + } } } }, @@ -1877,6 +2016,11 @@ "conflictDetected": { "type": "bool", "id": 5 + }, + "transformResults": { + "rule": "repeated", + "type": "Value", + "id": 8 } } }, From 150040bf182dd2d257899e2ff23465eba274b406 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Thu, 24 Oct 2024 13:59:40 -0400 Subject: [PATCH 793/820] docs: Change description of DatastoreRequest class (#1338) * Change description of DatastoreRequest class. * docs: Change description of DatastoreRequest class --- handwritten/nodejs-datastore/src/request.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts index 3daa4584505..7642133bdf1 100644 --- a/handwritten/nodejs-datastore/src/request.ts +++ b/handwritten/nodejs-datastore/src/request.ts @@ -196,8 +196,7 @@ export enum TransactionState { } /** - * Handle logic for Datastore API operations. Handles request logic for - * Datastore. + * Handles request logic for Datastore API operations. * * Creates requests to the Datastore endpoint. Designed to be inherited by * the {@link Datastore} and {@link Transaction} classes. From 94265154d123c8781d1b534bb3b79a5a96d32b48 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Thu, 24 Oct 2024 16:18:25 -0400 Subject: [PATCH 794/820] fix: query object description (#1340) FIxes strange query object description in: https://cloud.google.com/nodejs/docs/reference/datastore/latest/overview#query --- handwritten/nodejs-datastore/src/query.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts index 8c821e53a97..437a6e1f7d6 100644 --- a/handwritten/nodejs-datastore/src/query.ts +++ b/handwritten/nodejs-datastore/src/query.ts @@ -53,10 +53,10 @@ export interface Filter { } /** - * Build a Query object. + * A Query object is used to build and execute queries for entities stored in Datastore. * - * **Queries are built with {module:datastore#createQuery} and - * {@link Transaction#createQuery}.** + * Create a Query object with {@link Datastore#createQuery} or + * {@link Transaction#createQuery}. * * @see {@link http://goo.gl/Cag0r6| Datastore Queries} * From f27f80833040723dbc31d6fc286bc68184063810 Mon Sep 17 00:00:00 2001 From: danieljbruce Date: Fri, 25 Oct 2024 11:06:24 -0400 Subject: [PATCH 795/820] docs: Add descriptions to many parameters (#1341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add descriptions for some query parameters * Eliminate the extra space * Add a description to all the alias parameters * Add documentation for property parameters * Add descriptions for the aggregation argument * Add property params to these objects * Add descriptions for data types * Fix the broken links * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: Kevin Kim --- handwritten/nodejs-datastore/src/aggregate.ts | 25 ++++++++++++------- handwritten/nodejs-datastore/src/entity.ts | 10 ++++---- handwritten/nodejs-datastore/src/index.ts | 4 +-- handwritten/nodejs-datastore/src/query.ts | 2 +- handwritten/nodejs-datastore/src/request.ts | 4 +-- .../nodejs-datastore/src/transaction.ts | 2 +- 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/handwritten/nodejs-datastore/src/aggregate.ts b/handwritten/nodejs-datastore/src/aggregate.ts index 1eececfe5bb..d36172e4d6e 100644 --- a/handwritten/nodejs-datastore/src/aggregate.ts +++ b/handwritten/nodejs-datastore/src/aggregate.ts @@ -33,7 +33,7 @@ class AggregateQuery { /** * Build an AggregateQuery object. * - * @param {Query} query + * @param {Query} query A Query object */ constructor(query: Query) { this.query = query; @@ -43,7 +43,8 @@ class AggregateQuery { /** * Add a `count` aggregate query to the list of aggregations. * - * @param {string} alias + * @param {string} alias The label used in the results to describe this + * aggregate field when a query is run. * @returns {AggregateQuery} */ count(alias?: string): AggregateQuery { @@ -54,8 +55,9 @@ class AggregateQuery { /** * Add a `sum` aggregate query to the list of aggregations. * - * @param {string} property - * @param {string} alias + * @param {string} property The property to use for the sum calculation. + * @param {string} alias The label used in the results to describe this + * aggregate field when a query is run. * @returns {AggregateQuery} */ sum(property: string, alias?: string): AggregateQuery { @@ -66,8 +68,9 @@ class AggregateQuery { /** * Add a `average` aggregate query to the list of aggregations. * - * @param {string} property - * @param {string} alias + * @param {string} property The property to use for the average calculation. + * @param {string} alias The label used in the results to describe this + * aggregate field when a query is run. * @returns {AggregateQuery} */ average(property: string, alias?: string): AggregateQuery { @@ -78,7 +81,8 @@ class AggregateQuery { /** * Add a custom aggregation to the list of aggregations. * - * @param {AggregateField} aggregation + * @param {AggregateField} aggregation The aggregate field to perform the + * aggregation query over. * @returns {AggregateQuery} */ addAggregation(aggregation: AggregateField): AggregateQuery { @@ -89,7 +93,8 @@ class AggregateQuery { /** * Add a list of custom aggregations to the list of aggregations. * - * @param {AggregateField[]} aggregation + * @param {AggregateField[]} aggregations The aggregate fields to perform the + * aggregation query over. * @returns {AggregateQuery} */ addAggregations(aggregations: AggregateField[]): AggregateQuery { @@ -147,6 +152,7 @@ abstract class AggregateField { /** * Gets a copy of the Sum aggregate field. * + * @param {string} property The property to use for the average calculation. * @returns {Sum} */ static sum(property: string): Sum { @@ -156,6 +162,7 @@ abstract class AggregateField { /** * Gets a copy of the Average aggregate field. * + * @param {string} property The property to use for the average calculation. * @returns {Average} */ static average(property: string): Average { @@ -209,7 +216,7 @@ abstract class PropertyAggregateField extends AggregateField { /** * Build a PropertyAggregateField object. * - * @param {string} property + * @param {string} property The property to aggregate over. */ constructor(public property_: string) { super(); diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts index 9962a3e202f..244a1e494d4 100644 --- a/handwritten/nodejs-datastore/src/entity.ts +++ b/handwritten/nodejs-datastore/src/entity.ts @@ -83,7 +83,7 @@ export namespace entity { * Check if something is a Datastore Double object. * * @private - * @param {*} value + * @param {*} value The value to check if it is a datastore double. * @returns {boolean} */ export function isDsDouble(value?: {}): value is entity.Double { @@ -94,7 +94,7 @@ export namespace entity { * Check if a value is a Datastore Double object converted from JSON. * * @private - * @param {*} value + * @param {*} value The value to check if it is datastore double like. * @returns {boolean} */ export function isDsDoubleLike(value: unknown) { @@ -204,7 +204,7 @@ export namespace entity { * Check if something is a Datastore Int object. * * @private - * @param {*} value + * @param {*} value The value to check if it is a Datastore Int * @returns {boolean} */ export function isDsInt(value?: {}): value is entity.Int { @@ -215,7 +215,7 @@ export namespace entity { * Check if a value is a Datastore Int object converted from JSON. * * @private - * @param {*} value + * @param {*} value The value to check if it is Datastore IntLike * @returns {boolean} */ export function isDsIntLike(value: unknown) { @@ -273,7 +273,7 @@ export namespace entity { * Check if something is a Datastore Geo Point object. * * @private - * @param {*} value + * @param {*} value The value to check if it is a Geo point. * @returns {boolean} */ export function isDsGeoPoint(value?: {}): value is entity.GeoPoint { diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts index 319fda59925..50c0dc2c6a4 100644 --- a/handwritten/nodejs-datastore/src/index.ts +++ b/handwritten/nodejs-datastore/src/index.ts @@ -134,7 +134,7 @@ const urlSafeKey = new entity.URLSafeKey(); * *

The Datastore Emulator

* - * Make sure you have the + * Make sure you have the * gcloud SDK installed, then run: * *
@@ -1509,7 +1509,7 @@ class Datastore extends DatastoreRequest {
    * @see {@link Query}
    *
    * @param {string} [namespace] Namespace.
-   * @param {string} kind  The kind to query.
+   * @param {string} kind The kind to query.
    * @returns {Query}
    *
    * @example
diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts
index 437a6e1f7d6..557ae12a71a 100644
--- a/handwritten/nodejs-datastore/src/query.ts
+++ b/handwritten/nodejs-datastore/src/query.ts
@@ -334,7 +334,7 @@ class Query {
    *
    * Queries that select a subset of properties are called Projection Queries.
    *
-   * @see {@link https://cloud.google.com/datastore/docs/concepts/projectionqueries| Projection Queries}
+   * @see {@link https://cloud.google.com/datastore/docs/samples/datastore-projection-query| Projection Queries}
    *
    * @param {string|string[]} fieldNames Properties to return from the matched
    *     entities.
diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts
index 7642133bdf1..92c98561180 100644
--- a/handwritten/nodejs-datastore/src/request.ts
+++ b/handwritten/nodejs-datastore/src/request.ts
@@ -820,7 +820,7 @@ class DatastoreRequest {
    * that uses the end cursor from the previous query as the starting cursor for
    * the next query. You can pass that object back to this method to see if more
    * results exist.
-   * @param {Query} query Query object.
+   * @param {Query} query A Query object
    * @param {object} [options] Optional configuration.
    * @param {string} [options.consistency] Specify either `strong` or `eventual`.
    *     If not specified, default values are chosen by Datastore for the
@@ -949,7 +949,7 @@ class DatastoreRequest {
    *
    * See {@link Datastore#runQuery} for a list of all available options.
    *
-   * @param {Query} query Query object.
+   * @param {Query} query A Query object
    * @param {object} [options] Optional configuration.
    * @param {object} [options.gaxOptions] Request configuration options, outlined
    *     here: https://googleapis.github.io/gax-nodejs/global.html#CallOptions.
diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts
index 1f583b4a3d6..35d472f6c8d 100644
--- a/handwritten/nodejs-datastore/src/transaction.ts
+++ b/handwritten/nodejs-datastore/src/transaction.ts
@@ -755,7 +755,7 @@ class Transaction extends DatastoreRequest {
    * has not been started yet then the transaction is started before the
    * runQuery call is made.
    *
-   * @param {Query} query Query object.
+   * @param {Query} query A Query object
    * @param {object} [options] Optional configuration.
    * @param {function} [callback] The callback function. If omitted, a readable
    *     stream instance is returned.

From 64ef0349fd4c63300260931bf544f1d5ad297efb Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Mon, 28 Oct 2024 10:35:08 -0400
Subject: [PATCH 796/820] docs: Add descriptions to more of the parameters
 (#1342)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Add descriptions for some query parameters

* Eliminate the extra space

* Add a description to all the alias parameters

* Add documentation for property parameters

* Add descriptions for the aggregation argument

* Add property params to these objects

* Add descriptions for data types

* Fix the broken links

* Add documentation for the addExcludeFromIndexes

* Buffer description

* Add a description for entity filters

* Add parameters documentation for the `and` and `or

* Add descriptions for the filter object

* Add some parameter documentation for the client

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

---------

Co-authored-by: Owl Bot 
---
 handwritten/nodejs-datastore/src/entity.ts | 11 ++++-
 handwritten/nodejs-datastore/src/filter.ts | 18 +++++--
 handwritten/nodejs-datastore/src/index.ts  | 56 ++++++++++++++++++++--
 3 files changed, 75 insertions(+), 10 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts
index 244a1e494d4..447d4003b70 100644
--- a/handwritten/nodejs-datastore/src/entity.ts
+++ b/handwritten/nodejs-datastore/src/entity.ts
@@ -584,6 +584,7 @@ export namespace entity {
    *
    * @private
    * @param {*} value Native value.
+   * @param {string} property The property to use for the average calculation.
    * @returns {object}
    *
    * @example
@@ -797,6 +798,14 @@ export namespace entity {
     return entityProto;
   }
 
+  /**
+   *
+   * @param {string[] | undefined} [entities.excludeFromIndexes] Exclude properties from
+   *     indexing using a simple JSON path notation. See the examples in
+   *     {@link Datastore#save} to see how to target properties at different
+   *     levels of nesting within your entity.
+   * @param {object} entityProto The protocol entity object to convert.
+   */
   export function addExcludeFromIndexes(
     excludeFromIndexes: string[] | undefined,
     entityProto: EntityProto
@@ -1407,7 +1416,7 @@ export namespace entity {
      * Convert buffer to base64 encoding.
      *
      * @private
-     * @param {Buffer} buffer
+     * @param {Buffer} buffer The buffer to convert
      * @returns {string} Base64 encoded string.
      */
     convertToBase64_(buffer: Buffer): string {
diff --git a/handwritten/nodejs-datastore/src/filter.ts b/handwritten/nodejs-datastore/src/filter.ts
index cb0518414c0..ca693549b82 100644
--- a/handwritten/nodejs-datastore/src/filter.ts
+++ b/handwritten/nodejs-datastore/src/filter.ts
@@ -33,10 +33,20 @@ enum CompositeOperator {
   OR = 'OR',
 }
 
+/**
+ * Returns an AND composite filter.
+ *
+ * @param {EntityFilter[]} filters The filters that make up the AND filter.
+ */
 export function and(filters: EntityFilter[]): CompositeFilter {
   return new CompositeFilter(filters, CompositeOperator.AND);
 }
 
+/**
+ * Returns an OR composite filter.
+ *
+ * @param {EntityFilter[]} filters The filters that make up the OR filter.
+ */
 export function or(filters: EntityFilter[]): CompositeFilter {
   return new CompositeFilter(filters, CompositeOperator.OR);
 }
@@ -75,9 +85,9 @@ export class PropertyFilter
   /**
    * Build a Property Filter object.
    *
-   * @param {string} Property
-   * @param {Operator} operator
-   * @param {any} val
+   * @param {string} Property The property name that the filter will be applied to.
+   * @param {Operator} operator The comparison operator that the filter applies.
+   * @param {any} val The value that the filter compares the property to.
    */
   constructor(
     public name: T,
@@ -120,7 +130,7 @@ class CompositeFilter extends EntityFilter {
   /**
    * Build a Composite Filter object.
    *
-   * @param {EntityFilter[]} filters
+   * @param {EntityFilter[]} filters The filters that make up the composite filter.
    */
   constructor(filters: EntityFilter[], op: CompositeOperator) {
     super();
diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts
index 50c0dc2c6a4..7c6fb5b3826 100644
--- a/handwritten/nodejs-datastore/src/index.ts
+++ b/handwritten/nodejs-datastore/src/index.ts
@@ -1306,6 +1306,12 @@ class Datastore extends DatastoreRequest {
     return new entity.Double(value);
   }
 
+  /**
+   * Helper function to get a Datastore Double object.
+   *
+   * @param {number} value The double value.
+   * @returns {object}
+   */
   double(value: number) {
     return Datastore.double(value);
   }
@@ -1313,7 +1319,7 @@ class Datastore extends DatastoreRequest {
   /**
    * Helper function to check if something is a Datastore Double object.
    *
-   * @param {*} value
+   * @param {*} value The double value.
    * @returns {boolean}
    *
    * @example
@@ -1328,6 +1334,13 @@ class Datastore extends DatastoreRequest {
     return entity.isDsDouble(value);
   }
 
+  /**
+   * Helper function to check if something is a Datastore Double object.
+   *
+   * @param {*} value The double value.
+   * @returns {boolean}
+   *
+   */
   isDouble(value?: {}) {
     return Datastore.isDouble(value);
   }
@@ -1335,7 +1348,7 @@ class Datastore extends DatastoreRequest {
   /**
    * Helper function to get a Datastore Geo Point object.
    *
-   * @param {object} coordinates Coordinate value.
+   * @param {object} coordinates The coordinates value.
    * @param {number} coordinates.latitude Latitudinal value.
    * @param {number} coordinates.longitude Longitudinal value.
    * @returns {object}
@@ -1365,6 +1378,15 @@ class Datastore extends DatastoreRequest {
     return new entity.GeoPoint(coordinates);
   }
 
+  /**
+   * Helper function to get a Datastore Geo Point object.
+   *
+   * @param {object} coordinates The coordinates value.
+   * @param {number} coordinates.latitude Latitudinal value.
+   * @param {number} coordinates.longitude Longitudinal value.
+   * @returns {object}
+   *
+   */
   geoPoint(coordinates: entity.Coordinates) {
     return Datastore.geoPoint(coordinates);
   }
@@ -1372,7 +1394,7 @@ class Datastore extends DatastoreRequest {
   /**
    * Helper function to check if something is a Datastore Geo Point object.
    *
-   * @param {*} value
+   * @param {*} value The coordinates value.
    * @returns {boolean}
    *
    * @example
@@ -1392,6 +1414,13 @@ class Datastore extends DatastoreRequest {
     return entity.isDsGeoPoint(value);
   }
 
+  /**
+   * Helper function to check if something is a Datastore Geo Point object.
+   *
+   * @param {*} value The coordinates value.
+   * @returns {boolean}
+   *
+   */
   isGeoPoint(value?: {}) {
     return Datastore.isGeoPoint(value);
   }
@@ -1424,6 +1453,16 @@ class Datastore extends DatastoreRequest {
     return new entity.Int(value);
   }
 
+  /**
+   * Helper function to get a Datastore Integer object.
+   *
+   * This is also useful when using an ID outside the bounds of a JavaScript
+   * Number object.
+   *
+   * @param {number | int} value The integer value.
+   * @returns {object}
+   *
+   */
   int(value: number | string) {
     return Datastore.int(value);
   }
@@ -1431,7 +1470,7 @@ class Datastore extends DatastoreRequest {
   /**
    * Helper function to check if something is a Datastore Integer object.
    *
-   * @param {*} value
+   * @param {*} value The value to check
    * @returns {boolean}
    *
    * @example
@@ -1446,6 +1485,13 @@ class Datastore extends DatastoreRequest {
     return entity.isDsInt(value);
   }
 
+  /**
+   * Helper function to check if something is a Datastore Integer object.
+   *
+   * @param {*} value The value to check
+   * @returns {boolean}
+   *
+   */
   isInt(value?: {}) {
     return Datastore.isInt(value);
   }
@@ -1631,7 +1677,7 @@ class Datastore extends DatastoreRequest {
   /**
    * Helper function to check if something is a Datastore Key object.
    *
-   * @param {*} value
+   * @param {*} value Value to compare property to.
    * @returns {boolean}
    *
    * @example

From 1d86830da13bf06eaace1abfae093253e3f0538a Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Tue, 29 Oct 2024 10:19:54 -0400
Subject: [PATCH 797/820] docs: Add parameters to second commit overload
 (#1343)

* Add parameters to second commit overload

* docs: Add parameters to second commit overload
---
 handwritten/nodejs-datastore/src/transaction.ts | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts
index 35d472f6c8d..8245613e47d 100644
--- a/handwritten/nodejs-datastore/src/transaction.ts
+++ b/handwritten/nodejs-datastore/src/transaction.ts
@@ -159,6 +159,15 @@ class Transaction extends DatastoreRequest {
    * ```
    */
   commit(gaxOptions?: CallOptions): Promise;
+  /**
+   * @param {object} [gaxOptions] Request configuration options, outlined here:
+   *     https://googleapis.github.io/gax-nodejs/global.html#CallOptions.
+   * @param {function} callback The callback function.
+   * @param {?error} callback.err An error returned while making this request.
+   *   If the commit fails, we automatically try to rollback the transaction
+   * (see {module:datastore/transaction#rollback}).
+   * @param {object} callback.apiResponse The full API response.
+   */
   commit(callback: CommitCallback): void;
   commit(gaxOptions: CallOptions, callback: CommitCallback): void;
   commit(

From 00d4508342a5b857f35543cde1bfd5565ef514c4 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
 <55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 30 Oct 2024 13:20:31 -0400
Subject: [PATCH 798/820] chore(main): release 9.2.0 (#1262)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
 handwritten/nodejs-datastore/CHANGELOG.md         | 14 ++++++++++++++
 handwritten/nodejs-datastore/package.json         |  2 +-
 handwritten/nodejs-datastore/samples/package.json |  2 +-
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md
index e5aa3ce207c..f56387caf8e 100644
--- a/handwritten/nodejs-datastore/CHANGELOG.md
+++ b/handwritten/nodejs-datastore/CHANGELOG.md
@@ -4,6 +4,20 @@
 
 [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions
 
+## [9.2.0](https://github.com/googleapis/nodejs-datastore/compare/v9.1.0...v9.2.0) (2024-10-30)
+
+
+### Features
+
+* Add FindNearest API to the stable branch ([#1333](https://github.com/googleapis/nodejs-datastore/issues/1333)) ([1d56433](https://github.com/googleapis/nodejs-datastore/commit/1d5643369226c5fc220779f4c90fa804d8f876af))
+* Update Go Datastore import path ([#1261](https://github.com/googleapis/nodejs-datastore/issues/1261)) ([bf3dafd](https://github.com/googleapis/nodejs-datastore/commit/bf3dafd8267c447a52f7764505042a60b1a9fd28))
+
+
+### Bug Fixes
+
+* Add excludeFromIndexes in the proper places for large properties of nested fields ([#1266](https://github.com/googleapis/nodejs-datastore/issues/1266)) ([9c7730a](https://github.com/googleapis/nodejs-datastore/commit/9c7730a35699be049beeac0c4bb469239971d471))
+* Query object description ([#1340](https://github.com/googleapis/nodejs-datastore/issues/1340)) ([ad2c6c0](https://github.com/googleapis/nodejs-datastore/commit/ad2c6c01b83f0ae42a3dc4268feb5f4b45890f7c))
+
 ## [9.1.0](https://github.com/googleapis/nodejs-datastore/compare/v9.0.0...v9.1.0) (2024-06-24)
 
 
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 6807876e24f..a9cadb1932b 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "9.1.0",
+  "version": "9.2.0",
   "description": "Cloud Datastore Client Library for Node.js",
   "keywords": [
     "google apis client",
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 7a3dcd547f7..7ac1eed93ef 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -14,7 +14,7 @@
     "test": "mocha --timeout=600000"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^9.1.0",
+    "@google-cloud/datastore": "^9.2.0",
     "sinon": "^18.0.0"
   },
   "devDependencies": {

From de6c52e47ce804814174045edf8e363580897975 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Wed, 6 Nov 2024 15:03:47 -0500
Subject: [PATCH 799/820] fix: Address edge cases for excluding large
 properties when using save (#1356)

* fix: The save function should not throw an error for name/value properties in arrays (#1336)

* Add some test cases for findLargeProperties_

* Add a test for arrays and skip it.

* Add a test for the complex case wrapped in an arra

* Add a test case for an array without name/value.

* Add another test for name/value pair

* Change the test case involving a name/value pair

* Add two simple test cases for excludeFromIndexes

* Add another unit test for findLargeProperties_

* Remove if block that stops recursion

* Add a test for save with a `name/value` pair

* Add some test code that ensures name/value encoded

Against the current source code, this test fails because the code throws an error, but it should pass.

* Add header

* Remove only

* Add a test that saves a long string value property

* Add a unit test checking longString for value

* Remove only

* TODO is done

* refactor: Add separate function for adding large properties to the excludeFromIndexes list (#1349)

* Add some test cases for findLargeProperties_

* Add a test for arrays and skip it.

* Add a test for the complex case wrapped in an arra

* Add a test case for an array without name/value.

* Add another test for name/value pair

* Change the test case involving a name/value pair

* Add two simple test cases for excludeFromIndexes

* Add another unit test for findLargeProperties_

* Remove if block that stops recursion

* Add a test for save with a `name/value` pair

* Add some test code that ensures name/value encoded

Against the current source code, this test fails because the code throws an error, but it should pass.

* Add header

* Remove only

* Add a test that saves a long string value property

* Add a unit test checking longString for value

* Remove only

* TODO is done

* Refactor the save function

Pull out the code that extends the excludeFromIndexes list

* Add TODO

* Write unit tests for the new excludeFromIndexes fn

* Add the header

* Document parameter for extendExcludeFromIndexes

* Remove redundant check

* refactor: Add a separate function for building the entity proto (#1350)

* Add some test cases for findLargeProperties_

* Add a test for arrays and skip it.

* Add a test for the complex case wrapped in an arra

* Add a test case for an array without name/value.

* Add another test for name/value pair

* Change the test case involving a name/value pair

* Add two simple test cases for excludeFromIndexes

* Add another unit test for findLargeProperties_

* Remove if block that stops recursion

* Add a test for save with a `name/value` pair

* Add some test code that ensures name/value encoded

Against the current source code, this test fails because the code throws an error, but it should pass.

* Add header

* Remove only

* Add a test that saves a long string value property

* Add a unit test checking longString for value

* Remove only

* TODO is done

* Refactor the save function

Pull out the code that extends the excludeFromIndexes list

* Add TODO

* Write unit tests for the new excludeFromIndexes fn

* Add the header

* Refactor the code for building the entity proto

* Rename it buildEntityProto

* The tests need another mock due to the structure

The structure change requires another mock.

* First two tests for buildEntityProto

* Reintroduce extendExcludeFromIndexes.ts tests

* Adjust the test to match expected proto

* Add another test for an entity in an array

* Add headers

* Add another header

* Eliminate space. Simplify diff

* test: Ensure that using extendExcludeFromIndexes and then buildEntityProto always excludes large properties from indexing (#1355)

* Add some test cases for findLargeProperties_

* Add a test for arrays and skip it.

* Add a test for the complex case wrapped in an arra

* Add a test case for an array without name/value.

* Add another test for name/value pair

* Change the test case involving a name/value pair

* Add two simple test cases for excludeFromIndexes

* Add another unit test for findLargeProperties_

* Remove if block that stops recursion

* Add a test for save with a `name/value` pair

* Add some test code that ensures name/value encoded

Against the current source code, this test fails because the code throws an error, but it should pass.

* Add header

* Remove only

* Add a test that saves a long string value property

* Add a unit test checking longString for value

* Remove only

* TODO is done

* Refactor the save function

Pull out the code that extends the excludeFromIndexes list

* Add TODO

* Write unit tests for the new excludeFromIndexes fn

* Add the header

* Refactor the code for building the entity proto

* Rename it buildEntityProto

* The tests need another mock due to the structure

The structure change requires another mock.

* First two tests for buildEntityProto

* Reintroduce extendExcludeFromIndexes.ts tests

* Adjust the test to match expected proto

* Add another test for an entity in an array

* Add headers

* Add another header

* Add some tests for checkEntityProto

Make sure that checkEntityProto is working correctly.

* Empty commit

* Pull out complexCaseEntities

* Add a few more tests to excludeIndexesAndBuildProto

* Add generated test cases ensuring completeness

* Add a few comments that explain behaviour of block

* Add comments explaining code blocks

* Add a bunch of other generated tests

* Make this test more meaningful for name/value chek

* Fix the generator

* Remove console logs

* Add better test name descriptions

* Add TODO

* Add a comment about the array of arrays test case

* Increase the max depth

* Add headers to the codebase

* Update parameter descriptions

* Add a bunch of parameter documentation

Correct only as well.
---
 handwritten/nodejs-datastore/src/entity.ts    |  10 -
 handwritten/nodejs-datastore/src/index.ts     |  70 +--
 .../src/utils/entity/buildEntityProto.ts      |  60 +++
 .../utils/entity/extendExcludeFromIndexes.ts  |  52 +++
 .../nodejs-datastore/system-test/datastore.ts |  31 ++
 handwritten/nodejs-datastore/test/entity.ts   | 424 +----------------
 .../test/entity/buildEntityProto.ts           |  89 ++++
 .../entity/excludeIndexesAndBuildProto.ts     | 380 +++++++++++++++
 .../test/entity/extendExcludeFromIndexes.ts   | 173 +++++++
 .../test/entity/findLargeProperties_.ts       | 165 +++++++
 .../test/fixtures/complexCaseLargeStrings.ts  |  55 +++
 .../test/fixtures/entityObjectAndProto.ts     | 435 ++++++++++++++++++
 .../test/gapic-mocks/commit.ts                | 108 +++--
 handwritten/nodejs-datastore/test/index.ts    |   7 +
 14 files changed, 1523 insertions(+), 536 deletions(-)
 create mode 100644 handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
 create mode 100644 handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
 create mode 100644 handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
 create mode 100644 handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
 create mode 100644 handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
 create mode 100644 handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
 create mode 100644 handwritten/nodejs-datastore/test/fixtures/complexCaseLargeStrings.ts
 create mode 100644 handwritten/nodejs-datastore/test/fixtures/entityObjectAndProto.ts

diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts
index 447d4003b70..0437e23976c 100644
--- a/handwritten/nodejs-datastore/src/entity.ts
+++ b/handwritten/nodejs-datastore/src/entity.ts
@@ -1000,16 +1000,6 @@ export namespace entity {
     const MAX_DATASTORE_VALUE_LENGTH = 1500;
     if (Array.isArray(entities)) {
       for (const entry of entities) {
-        if (entry && entry.name && entry.value) {
-          if (
-            is.string(entry.value) &&
-            Buffer.from(entry.value).length > MAX_DATASTORE_VALUE_LENGTH
-          ) {
-            entry.excludeFromIndexes = true;
-          } else {
-            continue;
-          }
-        }
         findLargeProperties_(entry, path.concat('[]'), properties);
       }
     } else if (is.object(entities)) {
diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts
index 7c6fb5b3826..20cad99c463 100644
--- a/handwritten/nodejs-datastore/src/index.ts
+++ b/handwritten/nodejs-datastore/src/index.ts
@@ -68,9 +68,10 @@ import {promisifyAll} from '@google-cloud/promisify';
 import {google} from '../protos/protos';
 import {AggregateQuery} from './aggregate';
 import {SaveEntity} from './interfaces/save';
+import {extendExcludeFromIndexes} from './utils/entity/extendExcludeFromIndexes';
+import {buildEntityProto} from './utils/entity/buildEntityProto';
 
 const {grpc} = new GrpcClient();
-const addExcludeFromIndexes = entity.addExcludeFromIndexes;
 
 export type PathType = string | number | entity.Int;
 export interface BooleanObject {
@@ -1098,7 +1099,6 @@ class Datastore extends DatastoreRequest {
       .map(DatastoreRequest.prepareEntityObject_)
       .forEach((entityObject: Entity, index: number) => {
         const mutation: Mutation = {};
-        let entityProto: EntityProto = {};
         let method = 'upsert';
 
         if (entityObject.method) {
@@ -1115,70 +1115,8 @@ class Datastore extends DatastoreRequest {
           insertIndexes[index] = true;
         }
 
-        if (Array.isArray(entityObject.data)) {
-          // This code populates the excludeFromIndexes list with the right values.
-          if (entityObject.excludeLargeProperties) {
-            entityObject.data.forEach(
-              (data: {
-                name: {
-                  toString(): string;
-                };
-                value: Entity;
-                excludeFromIndexes?: boolean;
-              }) => {
-                entityObject.excludeFromIndexes = entity.findLargeProperties_(
-                  data.value,
-                  data.name.toString(),
-                  entityObject.excludeFromIndexes
-                );
-              }
-            );
-          }
-          // This code builds the right entityProto from the entityObject
-          entityProto.properties = entityObject.data.reduce(
-            (
-              acc: EntityProtoReduceAccumulator,
-              data: EntityProtoReduceData
-            ) => {
-              const value = entity.encodeValue(
-                data.value,
-                data.name.toString()
-              );
-
-              if (typeof data.excludeFromIndexes === 'boolean') {
-                const excluded = data.excludeFromIndexes;
-                let values = value.arrayValue && value.arrayValue.values;
-
-                if (values) {
-                  values = values.map((x: ValueProto) => {
-                    x.excludeFromIndexes = excluded;
-                    return x;
-                  });
-                } else {
-                  value.excludeFromIndexes = data.excludeFromIndexes;
-                }
-              }
-
-              acc[data.name] = value;
-
-              return acc;
-            },
-            {}
-          );
-          // This code adds excludeFromIndexes in the right places
-          addExcludeFromIndexes(entityObject.excludeFromIndexes, entityProto);
-        } else {
-          // This code populates the excludeFromIndexes list with the right values.
-          if (entityObject.excludeLargeProperties) {
-            entityObject.excludeFromIndexes = entity.findLargeProperties_(
-              entityObject.data,
-              '',
-              entityObject.excludeFromIndexes
-            );
-          }
-          // This code builds the right entityProto from the entityObject
-          entityProto = entity.entityToEntityProto(entityObject);
-        }
+        extendExcludeFromIndexes(entityObject);
+        const entityProto = buildEntityProto(entityObject);
 
         entityProto.key = entity.keyToKeyProto(entityObject.key);
 
diff --git a/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts b/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
new file mode 100644
index 00000000000..a4bbe80bd19
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
@@ -0,0 +1,60 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {entity, Entity, EntityProto, ValueProto} from '../../entity';
+import {EntityProtoReduceAccumulator, EntityProtoReduceData} from '../../index';
+import addExcludeFromIndexes = entity.addExcludeFromIndexes;
+
+/**
+ * This function builds the entity proto from the entity object. We cannot
+ * rely on entity.entityToEntityProto for this because this function is only
+ * designed to be used for non-array entities.
+ *
+ */
+export function buildEntityProto(entityObject: Entity) {
+  let entityProto: EntityProto = {};
+  if (Array.isArray(entityObject.data)) {
+    // This code builds the right entityProto from the entityObject
+    entityProto.properties = entityObject.data.reduce(
+      (acc: EntityProtoReduceAccumulator, data: EntityProtoReduceData) => {
+        const value = entity.encodeValue(data.value, data.name.toString());
+
+        if (typeof data.excludeFromIndexes === 'boolean') {
+          const excluded = data.excludeFromIndexes;
+          let values = value.arrayValue && value.arrayValue.values;
+
+          if (values) {
+            values = values.map((x: ValueProto) => {
+              x.excludeFromIndexes = excluded;
+              return x;
+            });
+          } else {
+            value.excludeFromIndexes = data.excludeFromIndexes;
+          }
+        }
+
+        acc[data.name] = value;
+
+        return acc;
+      },
+      {}
+    );
+    // This code adds excludeFromIndexes in the right places
+    addExcludeFromIndexes(entityObject.excludeFromIndexes, entityProto);
+  } else {
+    // This code builds the right entityProto from the entityObject
+    entityProto = entity.entityToEntityProto(entityObject);
+  }
+  return entityProto;
+}
diff --git a/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts b/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
new file mode 100644
index 00000000000..bca29fa5b35
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
@@ -0,0 +1,52 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {entity, Entity} from '../../entity';
+
+/**
+ * This function extends the excludeFromIndexes list when it finds
+ * large properties in the entity object. The extended excludeFromIndexes
+ * list is then used when building the entity proto.
+ *
+ * @param {Entity} entityObject The entity object to parse for properties to
+ * add to the excludeFromIndexes list.
+ */
+export function extendExcludeFromIndexes(entityObject: Entity) {
+  if (entityObject.excludeLargeProperties) {
+    if (Array.isArray(entityObject.data)) {
+      // This code populates the excludeFromIndexes list with the right values.
+      entityObject.data.forEach(
+        (data: {
+          name: {
+            toString(): string;
+          };
+          value: Entity;
+          excludeFromIndexes?: boolean;
+        }) => {
+          entityObject.excludeFromIndexes = entity.findLargeProperties_(
+            data.value,
+            data.name.toString(),
+            entityObject.excludeFromIndexes
+          );
+        }
+      );
+    } else {
+      entityObject.excludeFromIndexes = entity.findLargeProperties_(
+        entityObject.data,
+        '',
+        entityObject.excludeFromIndexes
+      );
+    }
+  }
+}
diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts
index 74b96e788c3..c8eeecebb64 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.ts
+++ b/handwritten/nodejs-datastore/system-test/datastore.ts
@@ -348,6 +348,37 @@ async.each(
           await datastore.delete(postKey);
         });
 
+        it('should save a nested name/value pair with name as a long string', async () => {
+          const longString = Buffer.alloc(1501, '.').toString();
+          const postKey = datastore.key(['Post', 'post1']);
+          await datastore.save({
+            key: postKey,
+            data: {
+              metadata: [
+                {
+                  name: longString,
+                  value: 'some-value',
+                },
+              ],
+            },
+            excludeLargeProperties: true,
+          });
+        });
+        it('should save a nested name/value pair with value as a long string', async () => {
+          const longString = Buffer.alloc(1501, '.').toString();
+          const postKey = datastore.key(['Post', 'post1']);
+          await datastore.save({
+            key: postKey,
+            data: [
+              {
+                name: 'some-name',
+                value: longString,
+              },
+            ],
+            excludeLargeProperties: true,
+          });
+        });
+
         describe('multi-db support for read and write operations', () => {
           const namespace = `${Date.now()}`;
           const keyHierarchy = ['Post', 'post1'];
diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts
index 3c8e6e43c77..e4b738cacc2 100644
--- a/handwritten/nodejs-datastore/test/entity.ts
+++ b/handwritten/nodejs-datastore/test/entity.ts
@@ -20,6 +20,10 @@ import {Datastore} from '../src';
 import {Entity, entity} from '../src/entity';
 import {IntegerTypeCastOptions} from '../src/query';
 import {PropertyFilter, EntityFilter, and} from '../src/filter';
+import {
+  entityObject,
+  expectedEntityProto,
+} from './fixtures/entityObjectAndProto';
 
 export function outOfBoundsError(opts: {
   propertyName?: string;
@@ -1107,426 +1111,6 @@ describe('entity', () => {
     });
 
     it('should respect excludeFromIndexes', () => {
-      const value1 = 'Stephen';
-      const value2 = 'Stephen2';
-      const value3 = 'Stephen3';
-      const value4 = 'Stephen4';
-      const value5 = 'Stephen5';
-      const value6 = 'Stephen6';
-      const value7 = 'Stephen7';
-      const value8 = 'Stephen8';
-      const value9 = 'Stephen9';
-      const value10 = 'Stephen10';
-      const value11 = 'Stephen11';
-      const value12 = 'Stephen12';
-      const value13 = 'something';
-      const value14 = 'else';
-      const value15 = 'whatever';
-
-      const entityObject = {
-        excludeFromIndexes: [
-          'name',
-          'entity.name',
-          'array[]',
-          'array[].name',
-          'array[].entity.name',
-          'array[].entity.array[].name',
-          'array[].array[].entity.name',
-          'entityExcluded[].name',
-          'primitiveExcluded[]',
-          'rules[].requirements[].audiences',
-          'nestedArrayVariants[].a[].b',
-          'alpha[]',
-          'omega',
-        ],
-
-        data: {
-          name: value1,
-
-          entity: {
-            name: value2,
-          },
-
-          entityExcluded: [
-            value3,
-            {
-              name: value4,
-            },
-          ],
-
-          primitiveExcluded: [
-            value5,
-            {
-              name: value6,
-            },
-          ],
-
-          array: [
-            value7,
-            {
-              name: value8,
-            },
-            {
-              entity: {
-                name: value9,
-                array: [
-                  {
-                    name: value10,
-                  },
-                ],
-              },
-            },
-            {
-              array: [
-                {
-                  entity: {
-                    name: value11,
-                  },
-                },
-              ],
-            },
-          ],
-
-          rules: [
-            {
-              requirements: [
-                {
-                  audiences: value12,
-                },
-              ],
-            },
-            {
-              requirements: null,
-            },
-          ],
-
-          nestedArrayVariants: [
-            {
-              a: [{b: value13}, {c: value14}],
-            },
-            {
-              a: null,
-            },
-            {
-              a: [value15],
-            },
-            {
-              a: [{b: ['nasty', 'array']}],
-            },
-          ],
-
-          alpha: ['beta', 'gamma'],
-
-          omega: ['beta', 'gamma'],
-        },
-      };
-
-      const expectedEntityProto = {
-        key: null,
-        properties: {
-          name: {
-            stringValue: value1,
-            excludeFromIndexes: true,
-          },
-          entity: {
-            entityValue: {
-              properties: {
-                name: {
-                  stringValue: value2,
-                  excludeFromIndexes: true,
-                },
-              },
-            },
-          },
-          entityExcluded: {
-            arrayValue: {
-              values: [
-                {
-                  stringValue: value3,
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      name: {
-                        stringValue: value4,
-                        excludeFromIndexes: true,
-                      },
-                    },
-                  },
-                },
-              ],
-            },
-          },
-          primitiveExcluded: {
-            arrayValue: {
-              values: [
-                {
-                  stringValue: value5,
-                  excludeFromIndexes: true,
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      name: {
-                        stringValue: value6,
-                      },
-                    },
-                  },
-                  excludeFromIndexes: true,
-                },
-              ],
-            },
-          },
-          array: {
-            arrayValue: {
-              values: [
-                {
-                  stringValue: value7,
-                  excludeFromIndexes: true,
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      name: {
-                        stringValue: value8,
-                        excludeFromIndexes: true,
-                      },
-                    },
-                  },
-                  excludeFromIndexes: true,
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      entity: {
-                        entityValue: {
-                          properties: {
-                            name: {
-                              stringValue: value9,
-                              excludeFromIndexes: true,
-                            },
-                            array: {
-                              arrayValue: {
-                                values: [
-                                  {
-                                    entityValue: {
-                                      properties: {
-                                        name: {
-                                          stringValue: value10,
-                                          excludeFromIndexes: true,
-                                        },
-                                      },
-                                    },
-                                  },
-                                ],
-                              },
-                            },
-                          },
-                        },
-                      },
-                    },
-                  },
-                  excludeFromIndexes: true,
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      array: {
-                        arrayValue: {
-                          values: [
-                            {
-                              entityValue: {
-                                properties: {
-                                  entity: {
-                                    entityValue: {
-                                      properties: {
-                                        name: {
-                                          stringValue: value11,
-                                          excludeFromIndexes: true,
-                                        },
-                                      },
-                                    },
-                                  },
-                                },
-                              },
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  },
-                  excludeFromIndexes: true,
-                },
-              ],
-            },
-          },
-          rules: {
-            arrayValue: {
-              values: [
-                {
-                  entityValue: {
-                    properties: {
-                      requirements: {
-                        arrayValue: {
-                          values: [
-                            {
-                              entityValue: {
-                                properties: {
-                                  audiences: {
-                                    stringValue: value12,
-                                    excludeFromIndexes: true,
-                                  },
-                                },
-                              },
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  },
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      requirements: {
-                        nullValue: 0,
-                      },
-                    },
-                  },
-                },
-              ],
-            },
-          },
-          nestedArrayVariants: {
-            arrayValue: {
-              values: [
-                {
-                  entityValue: {
-                    properties: {
-                      a: {
-                        arrayValue: {
-                          values: [
-                            {
-                              entityValue: {
-                                properties: {
-                                  b: {
-                                    stringValue: value13,
-                                    excludeFromIndexes: true,
-                                  },
-                                },
-                              },
-                            },
-                            {
-                              entityValue: {
-                                properties: {
-                                  c: {
-                                    stringValue: value14,
-                                  },
-                                },
-                              },
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  },
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      a: {
-                        nullValue: 0,
-                      },
-                    },
-                  },
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      a: {
-                        arrayValue: {
-                          values: [
-                            {
-                              stringValue: value15,
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  },
-                },
-                {
-                  entityValue: {
-                    properties: {
-                      a: {
-                        arrayValue: {
-                          values: [
-                            {
-                              entityValue: {
-                                properties: {
-                                  b: {
-                                    // excludeFromIndexes:
-                                    // ['nestedArrayVariants[].a[].b'] does not
-                                    // apply here,
-                                    // To exclude this array (= all its
-                                    // elements), we would use
-                                    // ['nestedArrayVariants[].a[].b[]']
-                                    arrayValue: {
-                                      values: [
-                                        {
-                                          stringValue: 'nasty',
-                                        },
-                                        {
-                                          stringValue: 'array',
-                                        },
-                                      ],
-                                    },
-                                  },
-                                },
-                              },
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  },
-                },
-              ],
-            },
-          },
-          alpha: {
-            // `excludeFromIndexes: ['alpha[]']` results in exclusion of all
-            // array elements
-            arrayValue: {
-              values: [
-                {
-                  excludeFromIndexes: true,
-                  stringValue: 'beta',
-                },
-                {
-                  excludeFromIndexes: true,
-                  stringValue: 'gamma',
-                },
-              ],
-            },
-          },
-          omega: {
-            // `excludeFromIndexes: ['omega']` is not applied, because 'omega'
-            // is an array.
-            arrayValue: {
-              values: [
-                {
-                  stringValue: 'beta',
-                },
-                {
-                  stringValue: 'gamma',
-                },
-              ],
-            },
-          },
-        },
-      };
-
       assert.deepStrictEqual(
         testEntity.entityToEntityProto(entityObject),
         expectedEntityProto
diff --git a/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts b/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
new file mode 100644
index 00000000000..3f646bc0f7f
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
@@ -0,0 +1,89 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {describe} from 'mocha';
+import {Entities, EntityObject, EntityProto} from '../../src/entity';
+import * as assert from 'assert';
+import {buildEntityProto} from '../../src/utils/entity/buildEntityProto';
+import {
+  entityObject,
+  expectedEntityProto,
+} from '../fixtures/entityObjectAndProto';
+
+const async = require('async');
+
+describe('buildEntityProto', () => {
+  async.each(
+    [
+      {
+        name: 'should format an entity',
+        entityObject: {
+          data: {
+            name: 'Stephen',
+          },
+        },
+        expectedProto: {
+          key: null,
+          properties: {
+            name: {
+              stringValue: 'Stephen',
+            },
+          },
+        },
+        skipped: false,
+      },
+      {
+        name: 'should format an entity array',
+        entityObject: {
+          data: [
+            {
+              name: 'Stephen',
+              value: 'Stephen value',
+            },
+          ],
+        },
+        expectedProto: {
+          properties: {
+            Stephen: {
+              stringValue: 'Stephen value',
+            },
+          },
+        },
+        skipped: false,
+      },
+      {
+        name: 'should respect excludeFromIndexes',
+        skipped: false,
+        entityObject: entityObject,
+        expectedProto: expectedEntityProto,
+      },
+    ],
+    (test: {
+      name: string;
+      skipped: boolean;
+      entityObject: EntityObject;
+      expectedProto: EntityProto;
+    }) => {
+      it(test.name, function () {
+        if (test.skipped) {
+          this.skip();
+        }
+        assert.deepStrictEqual(
+          buildEntityProto(test.entityObject),
+          test.expectedProto
+        );
+      });
+    }
+  );
+});
diff --git a/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts b/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
new file mode 100644
index 00000000000..9526c1ee91f
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
@@ -0,0 +1,380 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {describe} from 'mocha';
+import {Entities, EntityObject} from '../../src/entity';
+import {extendExcludeFromIndexes} from '../../src/utils/entity/extendExcludeFromIndexes';
+import {buildEntityProto} from '../../src/utils/entity/buildEntityProto';
+import * as is from 'is';
+import * as assert from 'assert';
+import {ServiceError} from 'google-gax';
+import {entityObject} from '../fixtures/entityObjectAndProto';
+import {complexCaseEntities} from '../fixtures/complexCaseLargeStrings';
+const async = require('async');
+
+describe('excludeIndexesAndBuildProto', () => {
+  const longString = Buffer.alloc(1501, '.').toString();
+
+  /**
+   * This recursive function ensures that in the entityProtoSubset there is only
+   * an excludeFromIndexes: true value next to large values in the
+   * entityProtoSubset and throws an assertion error if there is not.
+   *
+   * @param {any} entityProtoSubset The entityProtoSubset to search.
+   * @param {string} path The path to the entityProtoSubset being searched.
+   */
+  function checkEntityProto(entityProtoSubset: any, path: string) {
+    if (Array.isArray(entityProtoSubset)) {
+      entityProtoSubset.forEach((subset, index) => {
+        checkEntityProto(subset, `${path}.[${index}]`);
+      });
+    } else {
+      if (is.object(entityProtoSubset)) {
+        if (entityProtoSubset.stringValue === longString) {
+          if (entityProtoSubset.excludeFromIndexes !== true) {
+            assert.fail(
+              `The entity proto at ${path} should excludeFromIndexes`
+            );
+          }
+        } else {
+          if (entityProtoSubset.excludeFromIndexes === true) {
+            assert.fail(
+              `The entity proto at ${path} should not excludeFromIndexes`
+            );
+          }
+        }
+        Object.keys(entityProtoSubset).map(property => {
+          checkEntityProto(entityProtoSubset[property], `${path}.${property}`);
+        });
+      }
+    }
+  }
+
+  /**
+   * This describe block makes sure that the recursive checkEntityProto
+   * function works as intended. It ensures that checkEntityProto throws an
+   * error for `excludeFromIndexes: true` entries that are missing or out of
+   * place and it also ensures checkEntityProto doesn't throw an error when
+   * proper entity protos are provided.
+   *
+   */
+  describe('checkEntityProto', () => {
+    it('should not throw an assertion error on a simple check', () => {
+      checkEntityProto(
+        {
+          properties: {
+            name: {
+              stringValue: 'entityName',
+            },
+            value: {
+              stringValue: 'entityValue',
+            },
+          },
+        },
+        ''
+      );
+    });
+    it('should not throw an assertion error for long strings in the top level', () => {
+      checkEntityProto(
+        {
+          properties: {
+            name: {
+              stringValue: longString,
+              excludeFromIndexes: true,
+            },
+            value: {
+              stringValue: longString,
+              excludeFromIndexes: true,
+            },
+          },
+        },
+        ''
+      );
+    });
+    it('should throw an assertion error for a missing excludeFromIndexes: true', () => {
+      try {
+        checkEntityProto(
+          {
+            properties: {
+              name: {
+                stringValue: longString,
+              },
+              value: {
+                stringValue: longString,
+                excludeFromIndexes: true,
+              },
+            },
+          },
+          ''
+        );
+        assert.fail('checkEntityProto should have failed');
+      } catch (e) {
+        assert.strictEqual(
+          (e as ServiceError).message,
+          'The entity proto at .properties.name should excludeFromIndexes'
+        );
+      }
+    });
+    it('should throw an assertion error for an extra excludeFromIndexes: true', () => {
+      try {
+        checkEntityProto(
+          {
+            properties: {
+              name: {
+                stringValue: 'not a long string',
+                excludeFromIndexes: true,
+              },
+              value: {
+                stringValue: longString,
+                excludeFromIndexes: true,
+              },
+            },
+          },
+          ''
+        );
+        assert.fail('checkEntityProto should have failed');
+      } catch (e) {
+        assert.strictEqual(
+          (e as ServiceError).message,
+          'The entity proto at .properties.name should not excludeFromIndexes'
+        );
+      }
+    });
+    it('should throw an assertion error for an extra excludeFromIndexes: true', () => {
+      try {
+        checkEntityProto(
+          {
+            properties: {
+              name: {
+                arrayValue: {
+                  values: [
+                    {
+                      stringValue: longString,
+                      excludeFromIndexes: true,
+                    },
+                    {
+                      entityValue: {
+                        properties: {
+                          metadata: {
+                            excludeFromIndexes: true,
+                          },
+                        },
+                      },
+                    },
+                  ],
+                },
+              },
+              value: {
+                stringValue: longString,
+                excludeFromIndexes: true,
+              },
+            },
+          },
+          ''
+        );
+        assert.fail('checkEntityProto should have failed');
+      } catch (e) {
+        assert.strictEqual(
+          (e as ServiceError).message,
+          'The entity proto at .properties.name.arrayValue.values.[1].entityValue.properties.metadata should not excludeFromIndexes'
+        );
+      }
+    });
+  });
+
+  /**
+   * These are the basic test cases each with an entity object that will be
+   * tested. The entity object in each test case will be encoded into an entity
+   * proto and then the entity proto will be checked to ensure
+   * excludeFromIndexes: true is in the proper places.
+   */
+  const testCases: {name: string; entities: Entities; skipped: boolean}[] = [
+    {
+      name: 'Should encode a simple object properly',
+      skipped: false,
+      entities: {
+        name: 'firstElementName',
+        value: longString,
+      },
+    },
+    {
+      name: 'Should encode a complex set of entities without large values',
+      skipped: false,
+      entities: entityObject.data,
+    },
+    {
+      name: 'Should encode a complex set of entities with large values',
+      skipped: false,
+      entities: complexCaseEntities,
+    },
+    {
+      name: 'Should encode a long string in a nested field',
+      skipped: false,
+      entities: [
+        {
+          name: 'field_b',
+          value: {
+            nestedField: Buffer.alloc(1501, '.').toString(),
+          },
+        },
+      ],
+    },
+    {
+      name: 'Should exclude large properties in a nested array',
+      skipped: false,
+      entities: {
+        metadata: [
+          {
+            name: longString,
+            value: 'some-value',
+          },
+        ],
+      },
+    },
+  ];
+
+  interface GeneratedTestCase {
+    entities: any;
+    name: string;
+    isArray: boolean;
+  }
+
+  /**
+   * This function generates a wide variety of Entity Object structures so that
+   * in our tests we can ensure each one of them gets encoded into an entity
+   * proto with `excludeFromIndexes: true` in exactly all the right places.
+   *
+   * @param {object} baseElement The element that will appear at all leaf nodes
+   * of the entity proto.
+   * @param {string} baseTestName The name of the test that the generated
+   * components will correspond to.
+   */
+  function getGeneratedTestComponents(
+    baseElement: {},
+    baseTestName: string
+  ): GeneratedTestCase[] {
+    const maxDepth = 5;
+    const generatedTestCasesByDepth: GeneratedTestCase[][] = [
+      [{entities: baseElement, name: baseTestName, isArray: false}],
+    ];
+    for (let depth = 1; depth < maxDepth; depth++) {
+      const newElements: GeneratedTestCase[] = [];
+      generatedTestCasesByDepth[depth - 1].forEach(element => {
+        const entities = element.entities;
+        if (!element.isArray) {
+          /**
+           * Note that if the proto contains an array of an array then the
+           * server will return the following error:
+           * Error: 3 INVALID_ARGUMENT: list_value cannot contain a Value containing another list_value.
+           *
+           * Therefore, arrays of arrays are not supported so this if statement
+           * is here so that we don't generate tests for those cases.
+           */
+          newElements.push({
+            entities: [entities, entities],
+            name: element.name + '.[]',
+            isArray: true,
+          });
+        }
+        newElements.push({
+          entities: {
+            name: entities,
+            value: entities,
+            otherProperty: entities,
+          },
+          name: element.name + '.{}',
+          isArray: false,
+        });
+      });
+      generatedTestCasesByDepth.push(newElements);
+    }
+    return generatedTestCasesByDepth[maxDepth - 1];
+  }
+
+  /**
+   * This script adds a bunch of generated test cases with generated entity
+   * objects that will be converted into entity protos and checked for
+   * correctness.
+   *
+   */
+  [
+    getGeneratedTestComponents(
+      {
+        name: longString,
+        value: longString,
+        otherProperty: longString,
+      },
+      'with long string properties and path '
+    ),
+    getGeneratedTestComponents(
+      {
+        name: longString,
+        value: 'short value',
+        otherProperty: longString,
+      },
+      'with long name property and path '
+    ),
+  ]
+    .flat()
+    .forEach(component => {
+      testCases.push({
+        skipped: false,
+        name: `Should encode a generated object ${component.name}`,
+        entities: {
+          name: component.entities,
+          value: component.entities,
+          otherProperty: component.entities,
+        },
+      });
+      testCases.push({
+        skipped: false,
+        name: `Should encode a generated array ${component.name}`,
+        entities: [
+          {
+            name: 'some-name',
+            value: component.entities,
+          },
+          {
+            name: 'some-name',
+            value: component.entities,
+          },
+        ],
+      });
+    });
+
+  async.each(
+    testCases,
+    (test: {name: string; entities: Entities; skipped: boolean}) => {
+      it(test.name, function () {
+        /**
+         * This test ensures that excludeFromIndexes: true only appears in the
+         * entity proto in every place that corresponds to a large value. It
+         * does this using the checkEntityProto function which does a
+         * recursive check on the proto.
+         */
+        if (test.skipped) {
+          this.skip();
+        }
+        const entityObject = {
+          data: test.entities,
+          excludeLargeProperties: true,
+          excludeFromIndexes: [],
+        };
+        extendExcludeFromIndexes(entityObject);
+        const entityProto = buildEntityProto(entityObject);
+        checkEntityProto(entityProto, '');
+      });
+    }
+  );
+});
diff --git a/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts b/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
new file mode 100644
index 00000000000..77c7f3d809a
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
@@ -0,0 +1,173 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {describe} from 'mocha';
+import {Entities} from '../../src/entity';
+import * as assert from 'assert';
+import {extendExcludeFromIndexes} from '../../src/utils/entity/extendExcludeFromIndexes';
+
+const async = require('async');
+
+describe('extendExcludeFromIndexes', () => {
+  const longString = Buffer.alloc(1501, '.').toString();
+  // complexCaseEntities are passed into save for the complex case.
+  const complexCaseEntities = {
+    longString,
+    notMetadata: true,
+    longStringArray: [longString],
+    metadata: {
+      longString,
+      otherProperty: 'value',
+      obj: {
+        longStringArray: [
+          {
+            longString,
+            nestedLongStringArray: [
+              {
+                longString,
+                nestedProperty: true,
+              },
+              {
+                longString,
+              },
+            ],
+          },
+        ],
+      },
+      longStringArray: [
+        {
+          longString,
+          nestedLongStringArray: [
+            {
+              longString,
+              nestedProperty: true,
+            },
+            {
+              longString,
+            },
+          ],
+        },
+      ],
+    },
+  };
+  async.each(
+    [
+      {
+        name: 'For a simple case involving a name/value pair',
+        entities: {
+          name: 'firstElementName',
+          value: longString,
+        },
+        skipped: false,
+        expectedOutput: ['value'],
+      },
+      {
+        name: 'For a simple case involving a name/value pair in an array',
+        entities: [
+          {
+            name: 'firstElementName',
+            value: longString,
+          },
+        ],
+        skipped: false,
+        expectedOutput: ['firstElementName'],
+      },
+      {
+        name: 'For a complex case involving lots of entities',
+        entities: complexCaseEntities,
+        skipped: false,
+        expectedOutput: [
+          'longString',
+          'longStringArray[]',
+          'metadata.longString',
+          'metadata.obj.longStringArray[].longString',
+          'metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          'metadata.longStringArray[].longString',
+          'metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For a complex case involving a name/value pair',
+        entities: {
+          name: 'firstElementName',
+          value: complexCaseEntities,
+        },
+        skipped: false,
+        expectedOutput: [
+          'value.longString',
+          'value.longStringArray[]',
+          'value.metadata.longString',
+          'value.metadata.obj.longStringArray[].longString',
+          'value.metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          'value.metadata.longStringArray[].longString',
+          'value.metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For a complex case involving and array and name/value',
+        entities: [
+          {
+            name: 'firstElementName',
+            value: complexCaseEntities,
+          },
+        ],
+        skipped: false,
+        expectedOutput: [
+          'firstElementName.longString',
+          'firstElementName.longStringArray[]',
+          'firstElementName.metadata.longString',
+          'firstElementName.metadata.obj.longStringArray[].longString',
+          'firstElementName.metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          'firstElementName.metadata.longStringArray[].longString',
+          'firstElementName.metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For some nested properties that happen to be called value and name',
+        entities: {
+          metadata: [
+            {
+              name: longString,
+              value: 'some-value',
+            },
+          ],
+        },
+        skipped: false,
+        expectedOutput: ['metadata[].name'],
+      },
+    ],
+    (test: {
+      name: string;
+      entities: Entities;
+      expectedOutput: string[];
+      skipped: boolean;
+    }) => {
+      it(test.name, function () {
+        if (test.skipped) {
+          this.skip();
+        }
+        const entityObject = {
+          data: test.entities,
+          excludeLargeProperties: true,
+          excludeFromIndexes: [],
+        };
+        extendExcludeFromIndexes(entityObject);
+        assert.deepStrictEqual(
+          entityObject.excludeFromIndexes,
+          test.expectedOutput
+        );
+      });
+    }
+  );
+});
diff --git a/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts b/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
new file mode 100644
index 00000000000..ed99df75e3c
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
@@ -0,0 +1,165 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import * as assert from 'assert';
+import {describe} from 'mocha';
+import {Entities, entity} from '../../src/entity';
+import findLargeProperties_ = entity.findLargeProperties_;
+
+const async = require('async');
+
+describe('findLargeProperties_', () => {
+  const longString = Buffer.alloc(1501, '.').toString();
+  // complexCaseEntities are passed into save for the complex case.
+  const complexCaseEntities = {
+    longString,
+    notMetadata: true,
+    longStringArray: [longString],
+    metadata: {
+      longString,
+      otherProperty: 'value',
+      obj: {
+        longStringArray: [
+          {
+            longString,
+            nestedLongStringArray: [
+              {
+                longString,
+                nestedProperty: true,
+              },
+              {
+                longString,
+              },
+            ],
+          },
+        ],
+      },
+      longStringArray: [
+        {
+          longString,
+          nestedLongStringArray: [
+            {
+              longString,
+              nestedProperty: true,
+            },
+            {
+              longString,
+            },
+          ],
+        },
+      ],
+    },
+  };
+  async.each(
+    [
+      {
+        name: 'For a simple case involving a name/value pair',
+        entities: {
+          name: 'firstElementName',
+          value: longString,
+        },
+        skipped: false,
+        expectedOutput: ['value'],
+      },
+      {
+        name: 'For a simple case involving a name/value pair in an array',
+        entities: [
+          {
+            name: 'firstElementName',
+            value: longString,
+          },
+        ],
+        skipped: false,
+        expectedOutput: ['[].value'],
+      },
+      {
+        name: 'For a complex case involving lots of entities',
+        entities: complexCaseEntities,
+        skipped: false,
+        expectedOutput: [
+          'longString',
+          'longStringArray[]',
+          'metadata.longString',
+          'metadata.obj.longStringArray[].longString',
+          'metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          'metadata.longStringArray[].longString',
+          'metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For a complex case involving a name/value pair',
+        entities: {
+          name: 'firstElementName',
+          value: complexCaseEntities,
+        },
+        skipped: false,
+        expectedOutput: [
+          'value.longString',
+          'value.longStringArray[]',
+          'value.metadata.longString',
+          'value.metadata.obj.longStringArray[].longString',
+          'value.metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          'value.metadata.longStringArray[].longString',
+          'value.metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For a complex case involving and array and name/value',
+        entities: [
+          {
+            name: 'firstElementName',
+            value: complexCaseEntities,
+          },
+        ],
+        skipped: false,
+        expectedOutput: [
+          '[].value.longString',
+          '[].value.longStringArray[]',
+          '[].value.metadata.longString',
+          '[].value.metadata.obj.longStringArray[].longString',
+          '[].value.metadata.obj.longStringArray[].nestedLongStringArray[].longString',
+          '[].value.metadata.longStringArray[].longString',
+          '[].value.metadata.longStringArray[].nestedLongStringArray[].longString',
+        ],
+      },
+      {
+        name: 'For some nested properties that happen to be called value and name',
+        entities: {
+          metadata: [
+            {
+              name: longString,
+              value: 'some-value',
+            },
+          ],
+        },
+        skipped: false,
+        expectedOutput: ['metadata[].name'],
+      },
+    ],
+    (test: {
+      name: string;
+      entities: Entities;
+      expectedOutput: string[];
+      skipped: boolean;
+    }) => {
+      it(test.name, function () {
+        if (test.skipped) {
+          this.skip();
+        }
+        const output = findLargeProperties_(test.entities, '', []);
+        assert.deepStrictEqual(output, test.expectedOutput);
+      });
+    }
+  );
+});
diff --git a/handwritten/nodejs-datastore/test/fixtures/complexCaseLargeStrings.ts b/handwritten/nodejs-datastore/test/fixtures/complexCaseLargeStrings.ts
new file mode 100644
index 00000000000..82e32515083
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/fixtures/complexCaseLargeStrings.ts
@@ -0,0 +1,55 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// complexCaseEntities are passed into save for the complex case.
+const longString = Buffer.alloc(1501, '.').toString();
+export const complexCaseEntities = {
+  longString,
+  notMetadata: true,
+  longStringArray: [longString],
+  metadata: {
+    longString,
+    otherProperty: 'value',
+    obj: {
+      longStringArray: [
+        {
+          longString,
+          nestedLongStringArray: [
+            {
+              longString,
+              nestedProperty: true,
+            },
+            {
+              longString,
+            },
+          ],
+        },
+      ],
+    },
+    longStringArray: [
+      {
+        longString,
+        nestedLongStringArray: [
+          {
+            longString,
+            nestedProperty: true,
+          },
+          {
+            longString,
+          },
+        ],
+      },
+    ],
+  },
+};
diff --git a/handwritten/nodejs-datastore/test/fixtures/entityObjectAndProto.ts b/handwritten/nodejs-datastore/test/fixtures/entityObjectAndProto.ts
new file mode 100644
index 00000000000..d23eddd4abd
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/fixtures/entityObjectAndProto.ts
@@ -0,0 +1,435 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+const value1 = 'Stephen';
+const value2 = 'Stephen2';
+const value3 = 'Stephen3';
+const value4 = 'Stephen4';
+const value5 = 'Stephen5';
+const value6 = 'Stephen6';
+const value7 = 'Stephen7';
+const value8 = 'Stephen8';
+const value9 = 'Stephen9';
+const value10 = 'Stephen10';
+const value11 = 'Stephen11';
+const value12 = 'Stephen12';
+const value13 = 'something';
+const value14 = 'else';
+const value15 = 'whatever';
+
+const entityObject = {
+  excludeFromIndexes: [
+    'name',
+    'entity.name',
+    'array[]',
+    'array[].name',
+    'array[].entity.name',
+    'array[].entity.array[].name',
+    'array[].array[].entity.name',
+    'entityExcluded[].name',
+    'primitiveExcluded[]',
+    'rules[].requirements[].audiences',
+    'nestedArrayVariants[].a[].b',
+    'alpha[]',
+    'omega',
+  ],
+
+  data: {
+    name: value1,
+
+    entity: {
+      name: value2,
+    },
+
+    entityExcluded: [
+      value3,
+      {
+        name: value4,
+      },
+    ],
+
+    primitiveExcluded: [
+      value5,
+      {
+        name: value6,
+      },
+    ],
+
+    array: [
+      value7,
+      {
+        name: value8,
+      },
+      {
+        entity: {
+          name: value9,
+          array: [
+            {
+              name: value10,
+            },
+          ],
+        },
+      },
+      {
+        array: [
+          {
+            entity: {
+              name: value11,
+            },
+          },
+        ],
+      },
+    ],
+
+    rules: [
+      {
+        requirements: [
+          {
+            audiences: value12,
+          },
+        ],
+      },
+      {
+        requirements: null,
+      },
+    ],
+
+    nestedArrayVariants: [
+      {
+        a: [{b: value13}, {c: value14}],
+      },
+      {
+        a: null,
+      },
+      {
+        a: [value15],
+      },
+      {
+        a: [{b: ['nasty', 'array']}],
+      },
+    ],
+
+    alpha: ['beta', 'gamma'],
+
+    omega: ['beta', 'gamma'],
+  },
+};
+
+const expectedEntityProto = {
+  key: null,
+  properties: {
+    name: {
+      stringValue: value1,
+      excludeFromIndexes: true,
+    },
+    entity: {
+      entityValue: {
+        properties: {
+          name: {
+            stringValue: value2,
+            excludeFromIndexes: true,
+          },
+        },
+      },
+    },
+    entityExcluded: {
+      arrayValue: {
+        values: [
+          {
+            stringValue: value3,
+          },
+          {
+            entityValue: {
+              properties: {
+                name: {
+                  stringValue: value4,
+                  excludeFromIndexes: true,
+                },
+              },
+            },
+          },
+        ],
+      },
+    },
+    primitiveExcluded: {
+      arrayValue: {
+        values: [
+          {
+            stringValue: value5,
+            excludeFromIndexes: true,
+          },
+          {
+            entityValue: {
+              properties: {
+                name: {
+                  stringValue: value6,
+                },
+              },
+            },
+            excludeFromIndexes: true,
+          },
+        ],
+      },
+    },
+    array: {
+      arrayValue: {
+        values: [
+          {
+            stringValue: value7,
+            excludeFromIndexes: true,
+          },
+          {
+            entityValue: {
+              properties: {
+                name: {
+                  stringValue: value8,
+                  excludeFromIndexes: true,
+                },
+              },
+            },
+            excludeFromIndexes: true,
+          },
+          {
+            entityValue: {
+              properties: {
+                entity: {
+                  entityValue: {
+                    properties: {
+                      name: {
+                        stringValue: value9,
+                        excludeFromIndexes: true,
+                      },
+                      array: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  name: {
+                                    stringValue: value10,
+                                    excludeFromIndexes: true,
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                },
+              },
+            },
+            excludeFromIndexes: true,
+          },
+          {
+            entityValue: {
+              properties: {
+                array: {
+                  arrayValue: {
+                    values: [
+                      {
+                        entityValue: {
+                          properties: {
+                            entity: {
+                              entityValue: {
+                                properties: {
+                                  name: {
+                                    stringValue: value11,
+                                    excludeFromIndexes: true,
+                                  },
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+            excludeFromIndexes: true,
+          },
+        ],
+      },
+    },
+    rules: {
+      arrayValue: {
+        values: [
+          {
+            entityValue: {
+              properties: {
+                requirements: {
+                  arrayValue: {
+                    values: [
+                      {
+                        entityValue: {
+                          properties: {
+                            audiences: {
+                              stringValue: value12,
+                              excludeFromIndexes: true,
+                            },
+                          },
+                        },
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+          },
+          {
+            entityValue: {
+              properties: {
+                requirements: {
+                  nullValue: 0,
+                },
+              },
+            },
+          },
+        ],
+      },
+    },
+    nestedArrayVariants: {
+      arrayValue: {
+        values: [
+          {
+            entityValue: {
+              properties: {
+                a: {
+                  arrayValue: {
+                    values: [
+                      {
+                        entityValue: {
+                          properties: {
+                            b: {
+                              stringValue: value13,
+                              excludeFromIndexes: true,
+                            },
+                          },
+                        },
+                      },
+                      {
+                        entityValue: {
+                          properties: {
+                            c: {
+                              stringValue: value14,
+                            },
+                          },
+                        },
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+          },
+          {
+            entityValue: {
+              properties: {
+                a: {
+                  nullValue: 0,
+                },
+              },
+            },
+          },
+          {
+            entityValue: {
+              properties: {
+                a: {
+                  arrayValue: {
+                    values: [
+                      {
+                        stringValue: value15,
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+          },
+          {
+            entityValue: {
+              properties: {
+                a: {
+                  arrayValue: {
+                    values: [
+                      {
+                        entityValue: {
+                          properties: {
+                            b: {
+                              // excludeFromIndexes:
+                              // ['nestedArrayVariants[].a[].b'] does not
+                              // apply here,
+                              // To exclude this array (= all its
+                              // elements), we would use
+                              // ['nestedArrayVariants[].a[].b[]']
+                              arrayValue: {
+                                values: [
+                                  {
+                                    stringValue: 'nasty',
+                                  },
+                                  {
+                                    stringValue: 'array',
+                                  },
+                                ],
+                              },
+                            },
+                          },
+                        },
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+          },
+        ],
+      },
+    },
+    alpha: {
+      // `excludeFromIndexes: ['alpha[]']` results in exclusion of all
+      // array elements
+      arrayValue: {
+        values: [
+          {
+            excludeFromIndexes: true,
+            stringValue: 'beta',
+          },
+          {
+            excludeFromIndexes: true,
+            stringValue: 'gamma',
+          },
+        ],
+      },
+    },
+    omega: {
+      // `excludeFromIndexes: ['omega']` is not applied, because 'omega'
+      // is an array.
+      arrayValue: {
+        values: [
+          {
+            stringValue: 'beta',
+          },
+          {
+            stringValue: 'gamma',
+          },
+        ],
+      },
+    },
+  },
+};
+
+export {entityObject, expectedEntityProto};
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
index b8f7df93900..7967762301c 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
@@ -20,6 +20,7 @@ import type {CallOptions} from 'google-gax';
 import {Entities} from '../../src/entity';
 import {google} from '../../protos/protos';
 import IValue = google.datastore.v1.IValue;
+import {complexCaseEntities} from '../fixtures/complexCaseLargeStrings';
 
 const async = require('async');
 
@@ -169,46 +170,6 @@ describe('Commit', () => {
       },
     },
   };
-  // complexCaseEntities are passed into save for the complex case.
-  const complexCaseEntities = {
-    longString,
-    notMetadata: true,
-    longStringArray: [longString],
-    metadata: {
-      longString,
-      otherProperty: 'value',
-      obj: {
-        longStringArray: [
-          {
-            longString,
-            nestedLongStringArray: [
-              {
-                longString,
-                nestedProperty: true,
-              },
-              {
-                longString,
-              },
-            ],
-          },
-        ],
-      },
-      longStringArray: [
-        {
-          longString,
-          nestedLongStringArray: [
-            {
-              longString,
-              nestedProperty: true,
-            },
-            {
-              longString,
-            },
-          ],
-        },
-      ],
-    },
-  };
 
   describe('save should pass the right properties to the gapic layer', () => {
     async.each(
@@ -263,6 +224,31 @@ describe('Commit', () => {
             },
           ],
         },
+        {
+          name: 'should pass the right properties for a name/value pair in an array with a long string',
+          skipped: false,
+          entities: [
+            {
+              name: 'entityName',
+              value: longString,
+            },
+          ],
+          excludeFromIndexes: [], // Empty because excludeLargeProperties populates the list.
+          excludeLargeProperties: true,
+          expectedMutations: [
+            {
+              upsert: {
+                properties: {
+                  entityName: {
+                    stringValue: longString,
+                    excludeFromIndexes: true,
+                  },
+                },
+                key,
+              },
+            },
+          ],
+        },
         {
           name: 'should position excludeFromIndexes in the right place when provided at the top level',
           skipped: false,
@@ -479,6 +465,48 @@ describe('Commit', () => {
             },
           ],
         },
+        {
+          name: 'should set the right properties for a nested name/value pair',
+          skipped: false,
+          entities: {
+            metadata: [
+              {
+                name: longString,
+                value: 'some-value',
+              },
+            ],
+          },
+          excludeFromIndexes: [],
+          excludeLargeProperties: true,
+          expectedMutations: [
+            {
+              upsert: {
+                key,
+                properties: {
+                  metadata: {
+                    arrayValue: {
+                      values: [
+                        {
+                          entityValue: {
+                            properties: {
+                              name: {
+                                stringValue: longString,
+                                excludeFromIndexes: true,
+                              },
+                              value: {
+                                stringValue: 'some-value',
+                              },
+                            },
+                          },
+                        },
+                      ],
+                    },
+                  },
+                },
+              },
+            },
+          ],
+        },
       ],
       (test: {
         name: string;
diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts
index c13a480b086..abd9c487fc3 100644
--- a/handwritten/nodejs-datastore/test/index.ts
+++ b/handwritten/nodejs-datastore/test/index.ts
@@ -184,6 +184,12 @@ async.each(
 
       before(() => {
         Object.assign(fakeEntity, fakeEntityInit);
+        const buildEntityProtoModule = proxyquire(
+          '../src/utils/entity/buildEntityProto.js',
+          {
+            '../../entity.js': {entity: fakeEntity},
+          }
+        );
         Datastore = proxyquire('../src', {
           './entity.js': {entity: fakeEntity},
           './index-class.js': {Index: FakeIndex},
@@ -194,6 +200,7 @@ async.each(
             GoogleAuth: fakeGoogleAuth,
           },
           'google-gax': fakeGoogleGax,
+          './utils/entity/buildEntityProto': buildEntityProtoModule,
         }).Datastore;
       });
 

From 2ada138b4ab28ab8accfa9def2ab8290c3794d57 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
 <55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 7 Nov 2024 10:31:13 -0500
Subject: [PATCH 800/820] chore(main): release 9.2.1 (#1354)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
 handwritten/nodejs-datastore/CHANGELOG.md         | 8 ++++++++
 handwritten/nodejs-datastore/package.json         | 2 +-
 handwritten/nodejs-datastore/samples/package.json | 2 +-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md
index f56387caf8e..8f782983fa2 100644
--- a/handwritten/nodejs-datastore/CHANGELOG.md
+++ b/handwritten/nodejs-datastore/CHANGELOG.md
@@ -4,6 +4,14 @@
 
 [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions
 
+## [9.2.1](https://github.com/googleapis/nodejs-datastore/compare/v9.2.0...v9.2.1) (2024-11-06)
+
+
+### Bug Fixes
+
+* Address edge cases for excluding large properties when using save ([#1356](https://github.com/googleapis/nodejs-datastore/issues/1356)) ([ceaff7e](https://github.com/googleapis/nodejs-datastore/commit/ceaff7ef468413ff10e03e0b3ed923b4b5a37a08))
+* Create a release ([#1353](https://github.com/googleapis/nodejs-datastore/issues/1353)) ([536873e](https://github.com/googleapis/nodejs-datastore/commit/536873e24bacc9477f1a9c4c5403ed08d5c8cc93))
+
 ## [9.2.0](https://github.com/googleapis/nodejs-datastore/compare/v9.1.0...v9.2.0) (2024-10-30)
 
 
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index a9cadb1932b..409bdfea3d4 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "9.2.0",
+  "version": "9.2.1",
   "description": "Cloud Datastore Client Library for Node.js",
   "keywords": [
     "google apis client",
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 7ac1eed93ef..44055e1dfa3 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -14,7 +14,7 @@
     "test": "mocha --timeout=600000"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^9.2.0",
+    "@google-cloud/datastore": "^9.2.1",
     "sinon": "^18.0.0"
   },
   "devDependencies": {

From a8a689ca2497f42ba4c1c0da794f188fcf134606 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Fri, 8 Nov 2024 10:55:24 -0500
Subject: [PATCH 801/820] docs: Ensure all parameters in the documentation have
 a type and a description  (#1345)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Add descriptions for some query parameters

* Eliminate the extra space

* Add a description to all the alias parameters

* Add documentation for property parameters

* Add descriptions for the aggregation argument

* Add property params to these objects

* Add descriptions for data types

* Fix the broken links

* Add documentation for the addExcludeFromIndexes

* Buffer description

* Add a description for entity filters

* Add parameters documentation for the `and` and `or

* Add descriptions for the filter object

* Add some parameter documentation for the client

* Parameter for prepareGaxRequest_

* Add documentation to a few of the helper functions

* Add more documentation for txn and request params

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

---------

Co-authored-by: Owl Bot 
Co-authored-by: Kevin Kim 
---
 handwritten/nodejs-datastore/src/request.ts   | 35 +++++++++++++++++--
 .../nodejs-datastore/src/transaction.ts       |  4 +--
 2 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts
index 92c98561180..de04b63614c 100644
--- a/handwritten/nodejs-datastore/src/request.ts
+++ b/handwritten/nodejs-datastore/src/request.ts
@@ -692,7 +692,7 @@ class DatastoreRequest {
   /**
    * This function saves results from a successful beginTransaction call.
    *
-   * @param {BeginAsyncResponse} [response] The response from a call to
+   * @param {object} [response] The response from a call to
    * begin a transaction that completed successfully.
    *
    **/
@@ -1078,6 +1078,11 @@ class DatastoreRequest {
     return stream;
   }
 
+  /**
+   * Gets request options from a RunQueryStream options configuration
+   *
+   * @param {RunQueryStreamOptions} [options] The RunQueryStream options configuration
+   */
   private getRequestOptions(
     options: RunQueryStreamOptions
   ): SharedQueryOptions {
@@ -1114,6 +1119,12 @@ class DatastoreRequest {
     return sharedQueryOpts;
   }
 
+  /**
+   * Gets request options from a RunQueryStream options configuration
+   *
+   * @param {Query} [query] A Query object
+   * @param {RunQueryStreamOptions} [options] The RunQueryStream options configuration
+   */
   private getQueryOptions(
     query: Query,
     options: RunQueryStreamOptions = {}
@@ -1200,6 +1211,11 @@ class DatastoreRequest {
   }
 
   /**
+   * Builds a request and sends it to the Gapic Layer.
+   *
+   * @param {object} config Configuration object.
+   * @param {function} callback The callback function.
+   *
    * @private
    */
   prepareGaxRequest_(config: RequestConfig, callback: Function): void {
@@ -1328,10 +1344,23 @@ class DatastoreRequest {
   }
 }
 
+/**
+ * Check to see if a request is a Transaction
+ *
+ * @param {DatastoreRequest} request The Datastore request object
+ *
+ */
 function isTransaction(request: DatastoreRequest): request is Transaction {
   return request instanceof Transaction;
 }
 
+/**
+ * Throw an error if read options are not properly specified.
+ *
+ * @param {DatastoreRequest} request The Datastore request object
+ * @param {SharedQueryOptions} options The Query options
+ *
+ */
 function throwOnTransactionErrors(
   request: DatastoreRequest,
   options: SharedQueryOptions
@@ -1354,8 +1383,8 @@ function throwOnTransactionErrors(
  * This function gets transaction request options used for defining a
  * request to create a new transaction on the server.
  *
- * @param transaction The transaction for which the request will be made.
- * @param options Custom options that will be used to create the request.
+ * @param {Transaction} transaction The transaction for which the request will be made.
+ * @param {RunOptions} options Custom options that will be used to create the request.
  */
 export function getTransactionRequest(
   transaction: Transaction,
diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts
index 8245613e47d..57a0a3a65b4 100644
--- a/handwritten/nodejs-datastore/src/transaction.ts
+++ b/handwritten/nodejs-datastore/src/transaction.ts
@@ -130,8 +130,7 @@ class Transaction extends DatastoreRequest {
    * If the commit request fails, we will automatically rollback the
    * transaction.
    *
-   * @param {object} [gaxOptions] Request configuration options, outlined here:
-   *     https://googleapis.github.io/gax-nodejs/global.html#CallOptions.
+   * @param {CallOptions | https://googleapis.github.io/gax-nodejs/global.html#CallOptions} [gaxOptions] Request configuration options.
    * @param {function} callback The callback function.
    * @param {?error} callback.err An error returned while making this request.
    *   If the commit fails, we automatically try to rollback the transaction
@@ -280,6 +279,7 @@ class Transaction extends DatastoreRequest {
    * Create an aggregation query from the query specified. See {module:datastore/query} for all
    * of the available methods.
    *
+   * @param {Query} query A Query object
    */
   createAggregationQuery(query: Query): AggregateQuery {
     return this.datastore.createAggregationQuery.call(this, query);

From cb0f26b4a45fc5a36cbf0598aea6216634b24cea Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Mon, 18 Nov 2024 10:04:35 -0500
Subject: [PATCH 802/820] test: Mock server for testing (#1213)

* This test makes a call to the mock server

This will be useful for debugging grpc issues.

* Now the test works with the mock server in repo

This mock server will be super useful for ensuring that the right data gets transmitted in private preview so that we can confirm the client library is working correctly.

* Delete js file

We use the ts file instead.

* Add a README and guiding steps inline

* Simplify the instructions

* minor corrections

* Resolve linting issues

* Add headers for new code

* Skip a mock server test
---
 .../nodejs-datastore/mock-server/README.md    | 15 +++++
 .../mock-server/datastore-server.ts           | 67 +++++++++++++++++++
 .../nodejs-datastore/mock-server/package.json | 12 ++++
 .../nodejs-datastore/test/try-server.ts       | 33 +++++++++
 4 files changed, 127 insertions(+)
 create mode 100644 handwritten/nodejs-datastore/mock-server/README.md
 create mode 100644 handwritten/nodejs-datastore/mock-server/datastore-server.ts
 create mode 100644 handwritten/nodejs-datastore/mock-server/package.json
 create mode 100644 handwritten/nodejs-datastore/test/try-server.ts

diff --git a/handwritten/nodejs-datastore/mock-server/README.md b/handwritten/nodejs-datastore/mock-server/README.md
new file mode 100644
index 00000000000..53a848410ee
--- /dev/null
+++ b/handwritten/nodejs-datastore/mock-server/README.md
@@ -0,0 +1,15 @@
+The mock server code in this folder is used for observing requests that will
+be sent to the server. When the server sends back a vague error it is often
+because the request it receives is incorrect so it is crucial to have a tool to
+view the request in order to know what client library code needs to change.
+
+The steps to follow for using the mock server is:
+1. Take a look at `test/try-server.ts` to see how the mock server is used.
+2. In the system test you want to debug, change `it` to `it.only` to isolate that test.
+3. In this test, surround the code with `startServer(async () => {`
+4. Ensure `apiEndpoint: 'localhost:50051'` is passed into the datastore client that is used for this test.
+5. If the system test hits an endpoint other than `runQuery` then in `datastore-server.ts`, change `.addService(service, {runQuery: grpcEndpoint})` to `.addService(service, {<>: grpcEndpoint})`
+6. Set a breakpoint on the line that says `SET A BREAKPOINT HERE` in `datastore-server.ts`
+7. Debug with system tests (Enter `npm run system-test -- --inspect` in terminal)
+
+
diff --git a/handwritten/nodejs-datastore/mock-server/datastore-server.ts b/handwritten/nodejs-datastore/mock-server/datastore-server.ts
new file mode 100644
index 00000000000..2379f525b5c
--- /dev/null
+++ b/handwritten/nodejs-datastore/mock-server/datastore-server.ts
@@ -0,0 +1,67 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+const {dirname, resolve} = require('node:path');
+
+const PROTO_PATH = __dirname + '/../protos/google/datastore/v1/datastore.proto';
+const DATASTORE_PROTOS = __dirname + '/../protos';
+const GAX_PROTOS_DIR = resolve(
+  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+  // @ts-ignore
+  // eslint-disable-next-line n/no-extraneous-require
+  dirname(require.resolve('google-gax')),
+  '../protos'
+);
+
+const grpc = require('@grpc/grpc-js');
+const protoLoader = require('@grpc/proto-loader');
+
+const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
+  keepCase: true,
+  longs: String,
+  enums: String,
+  defaults: true,
+  oneofs: true,
+  includeDirs: [DATASTORE_PROTOS, GAX_PROTOS_DIR],
+});
+const descriptor = grpc.loadPackageDefinition(packageDefinition);
+
+/**
+ * Implements the runQuery RPC method.
+ */
+function grpcEndpoint(
+  call: {},
+  callback: (arg1: string | null, arg2: {}) => {}
+) {
+  // SET A BREAKPOINT HERE AND EXPLORE `call` TO SEE THE REQUEST.
+  callback(null, {message: 'Hello'});
+}
+
+/**
+ * Starts an RPC server that receives requests for datastore
+ */
+export function startServer(cb: () => void) {
+  const server = new grpc.Server();
+  const service = descriptor.google.datastore.v1.Datastore.service;
+  // On the next line, change runQuery to the grpc method you want to investigate
+  server.addService(service, {runQuery: grpcEndpoint});
+  server.bindAsync(
+    '0.0.0.0:50051',
+    grpc.ServerCredentials.createInsecure(),
+    () => {
+      console.log('server started');
+      cb();
+    }
+  );
+}
diff --git a/handwritten/nodejs-datastore/mock-server/package.json b/handwritten/nodejs-datastore/mock-server/package.json
new file mode 100644
index 00000000000..73153dee4d6
--- /dev/null
+++ b/handwritten/nodejs-datastore/mock-server/package.json
@@ -0,0 +1,12 @@
+{
+  "name": "grpc-examples",
+  "version": "0.1.0",
+  "dependencies": {
+    "@grpc/proto-loader": "^0.5.0",
+    "async": "^1.5.2",
+    "google-protobuf": "^3.0.0",
+    "@grpc/grpc-js": "^1.1.0",
+    "lodash": "^4.6.1",
+    "minimist": "^1.2.0"
+  }
+}
diff --git a/handwritten/nodejs-datastore/test/try-server.ts b/handwritten/nodejs-datastore/test/try-server.ts
new file mode 100644
index 00000000000..28f67d0d7db
--- /dev/null
+++ b/handwritten/nodejs-datastore/test/try-server.ts
@@ -0,0 +1,33 @@
+// Copyright 2024 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {describe, it} from 'mocha';
+import {Datastore} from '../src';
+
+import {startServer} from '../mock-server/datastore-server';
+
+describe('Try server', () => {
+  it.skip('should try to connect to the running server', done => {
+    startServer(async () => {
+      const datastore = new Datastore({
+        namespace: `${Date.now()}`,
+        apiEndpoint: 'localhost:50051',
+      });
+      const postKey = datastore.key(['Post', 'post1']);
+      const query = datastore.createQuery('Post').hasAncestor(postKey);
+      const allResults = await datastore.runQuery(query);
+      done();
+    });
+  });
+});

From 3013c79f830e19cd2b671bf24855ff20da3483f7 Mon Sep 17 00:00:00 2001
From: David Nagy 
Date: Wed, 20 Nov 2024 20:47:09 +0100
Subject: [PATCH 803/820] fix: not check sub-property existence for `null`
 values (#1330)

Co-authored-by: danieljbruce 
---
 handwritten/nodejs-datastore/src/entity.ts  |  3 ++
 handwritten/nodejs-datastore/test/entity.ts | 42 +++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts
index 0437e23976c..c12e4ee9c9e 100644
--- a/handwritten/nodejs-datastore/src/entity.ts
+++ b/handwritten/nodejs-datastore/src/entity.ts
@@ -819,6 +819,8 @@ export namespace entity {
     return entityProto;
 
     function excludePathFromEntity(entity: EntityProto, path: string) {
+      if (!entity) return;
+
       const arrayIndex = path.indexOf('[]');
       const entityIndex = path.indexOf('.');
       const wildcardIndex = path.indexOf('.*');
@@ -905,6 +907,7 @@ export namespace entity {
         isFirstPathPartDefined
       ) {
         const array = entity.properties![firstPathPart].arrayValue;
+        if (!array) return;
         // eslint-disable-next-line @typescript-eslint/no-explicit-any
         array.values.forEach((value: any) => {
           if (value.entityValue) {
diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts
index e4b738cacc2..88b4c1d1063 100644
--- a/handwritten/nodejs-datastore/test/entity.ts
+++ b/handwritten/nodejs-datastore/test/entity.ts
@@ -1116,6 +1116,48 @@ describe('entity', () => {
         expectedEntityProto
       );
     });
+
+    it('should not throw when `null` value is supplied for a field with an entity/array index exclusion', () => {
+      const entityObject = {
+        excludeFromIndexes: [
+          'entityCompletelyExcluded.*',
+          'entityPropertyExcluded.name',
+          'entityArrayCompletelyExcluded[].*',
+          'entityArrayPropertyExcluded[].name',
+        ],
+
+        data: {
+          entityCompletelyExcluded: null,
+          entityPropertyExcluded: null,
+          entityArrayCompletelyExcluded: null,
+          entityArrayPropertyExcluded: null,
+        },
+      };
+
+      const expectedEntityProto = {
+        key: null,
+        properties: {
+          entityCompletelyExcluded: {
+            nullValue: 0,
+            excludeFromIndexes: true,
+          },
+          entityPropertyExcluded: {
+            nullValue: 0,
+          },
+          entityArrayCompletelyExcluded: {
+            nullValue: 0,
+          },
+          entityArrayPropertyExcluded: {
+            nullValue: 0,
+          },
+        },
+      };
+
+      assert.deepStrictEqual(
+        testEntity.entityToEntityProto(entityObject),
+        expectedEntityProto
+      );
+    });
   });
 
   describe('formatArray', () => {

From a89d1e933a6dcf774528b1279fe9f7912a51266c Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Tue, 18 Mar 2025 12:50:44 -0400
Subject: [PATCH 804/820] test: Initialize gax stream (#1368)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Initialize gax stream

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* Keep the type on this variable

* Downgrade promisify

---------

Co-authored-by: Owl Bot 
---
 handwritten/nodejs-datastore/package.json       | 2 +-
 handwritten/nodejs-datastore/protos/protos.d.ts | 2 +-
 handwritten/nodejs-datastore/protos/protos.js   | 2 +-
 handwritten/nodejs-datastore/test/request.ts    | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 409bdfea3d4..7db79dadec3 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -41,7 +41,7 @@
     "precompile": "gts clean"
   },
   "dependencies": {
-    "@google-cloud/promisify": "^4.0.0",
+    "@google-cloud/promisify": "4.0.0",
     "arrify": "^2.0.1",
     "async-mutex": "^0.5.0",
     "concat-stream": "^2.0.0",
diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts
index 4ca4f6b53eb..0a48bf1358b 100644
--- a/handwritten/nodejs-datastore/protos/protos.d.ts
+++ b/handwritten/nodejs-datastore/protos/protos.d.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js
index a6b2b37dbba..88799e49afa 100644
--- a/handwritten/nodejs-datastore/protos/protos.js
+++ b/handwritten/nodejs-datastore/protos/protos.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts
index 53296642090..600421c16ab 100644
--- a/handwritten/nodejs-datastore/test/request.ts
+++ b/handwritten/nodejs-datastore/test/request.ts
@@ -1886,7 +1886,7 @@ describe('Request', () => {
   });
 
   describe('requestStream_', () => {
-    let GAX_STREAM: gax.CancellableStream;
+    let GAX_STREAM: gax.CancellableStream = {} as gax.CancellableStream;
     const CONFIG = {};
 
     beforeEach(() => {

From 195a6a213ba9137c931d670c33760c52dd36a2df Mon Sep 17 00:00:00 2001
From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com>
Date: Wed, 9 Apr 2025 16:15:33 -0700
Subject: [PATCH 805/820] fix(doc): Fix param descriptions for filters (#1346)

* fix(doc): Fix param descriptions for filters

* fix formatting

---------

Co-authored-by: Kevin Kim 
Co-authored-by: danieljbruce 
---
 handwritten/nodejs-datastore/src/filter.ts | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/handwritten/nodejs-datastore/src/filter.ts b/handwritten/nodejs-datastore/src/filter.ts
index ca693549b82..d062fb2e325 100644
--- a/handwritten/nodejs-datastore/src/filter.ts
+++ b/handwritten/nodejs-datastore/src/filter.ts
@@ -34,18 +34,26 @@ enum CompositeOperator {
 }
 
 /**
- * Returns an AND composite filter.
+ * And filters are composed of many other filters and when they are applied
+ * then query results are only returned when they pass through all these other
+ * filters.
+ *
+ * @param {EntityFilter[]} filters The list of filters that make up the AND filter.
+ * @returns {CompositeFilter} A composite AND filter.
  *
- * @param {EntityFilter[]} filters The filters that make up the AND filter.
  */
 export function and(filters: EntityFilter[]): CompositeFilter {
   return new CompositeFilter(filters, CompositeOperator.AND);
 }
 
 /**
- * Returns an OR composite filter.
+ * Or filters are composed of many other filters and when they are applied
+ * then query results are returned when they pass through any of these other
+ * filters.
+ *
+ * @param {EntityFilter[]} filters The list of filters that make up the OR filter.
+ * @returns {CompositeFilter} A composite OR filter.
  *
- * @param {EntityFilter[]} filters The filters that make up the OR filter.
  */
 export function or(filters: EntityFilter[]): CompositeFilter {
   return new CompositeFilter(filters, CompositeOperator.OR);

From a5e07350e22932d62223ce98bdbeb8a53f54efe4 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Thu, 1 May 2025 16:58:34 -0400
Subject: [PATCH 806/820] chore!: migrate to Node 18 (#1384)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* feat: New PropertyMask field which allows partial commits, lookups, and query results

PiperOrigin-RevId: 635449160

Source-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e

Source-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* chore: remove redundant gRPC service config file
feat: specify retry configuration

PiperOrigin-RevId: 712493958

Source-Link: https://github.com/googleapis/googleapis/commit/29aea4190aba664659908ff5e381c830e4752502

Source-Link: https://github.com/googleapis/googleapis-gen/commit/04bcbab4505989e984b1403d438fffc0312144af
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDRiY2JhYjQ1MDU5ODllOTg0YjE0MDNkNDM4ZmZmYzAzMTIxNDRhZiJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* feat: paging changes for bigquery
fix: add x-goog-request params to headers for LRO-polling methods
fix: remove extra protos in ESM & capture ESM in headers
docs: update comments for a Nodejs stream object

PiperOrigin-RevId: 721038181

Source-Link: https://github.com/googleapis/googleapis/commit/331a41aa9b3a0631abe4e1eb5dae67ab9c8bb043

Source-Link: https://github.com/googleapis/googleapis-gen/commit/e81b4c5b5208895f663a24048615a59d5636f415
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTgxYjRjNWI1MjA4ODk1ZjY2M2EyNDA0ODYxNWE1OWQ1NjM2ZjQxNSJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* fix: fix typings for headers in generator

PiperOrigin-RevId: 723181578

Source-Link: https://github.com/googleapis/googleapis/commit/c7b69f411c722a1cdb836b0efe27fabb656e7c59

Source-Link: https://github.com/googleapis/googleapis-gen/commit/d1bc1acd74296422a5cb6e0c4016c8c48e998538
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZDFiYzFhY2Q3NDI5NjQyMmE1Y2I2ZTBjNDAxNmM4YzQ4ZTk5ODUzOCJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* fix: finalize fixing typings for headers in generator

PiperOrigin-RevId: 723563760

Source-Link: https://github.com/googleapis/googleapis/commit/2f843e2dfbaae2fb9c341b22d209d61fb637a808

Source-Link: https://github.com/googleapis/googleapis-gen/commit/cd0f9c6fe1dd77c552ef766e6047f8dcfd3bcc2e
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2QwZjljNmZlMWRkNzdjNTUyZWY3NjZlNjA0N2Y4ZGNmZDNiY2MyZSJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* chore: update copyright year for auto-generated protos

PiperOrigin-RevId: 731738802

Source-Link: https://github.com/googleapis/googleapis/commit/d72ca0d2ef7a786e2ffd59fa04e1c9241e09a7a9

Source-Link: https://github.com/googleapis/googleapis-gen/commit/27349920dae6cd4c2a51c1c5b4b43e2c00f02966
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjczNDk5MjBkYWU2Y2Q0YzJhNTFjMWM1YjRiNDNlMmMwMGYwMjk2NiJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* chore: update copyright year for auto-generated protos

PiperOrigin-RevId: 732130682

Source-Link: https://github.com/googleapis/googleapis/commit/9415ba048aa587b1b2df2b96fc00aa009c831597

Source-Link: https://github.com/googleapis/googleapis-gen/commit/2905f833756c2b20b3282be84b511e040fe54f33
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjkwNWY4MzM3NTZjMmIyMGIzMjgyYmU4NGI1MTFlMDQwZmU1NGYzMyJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* chore: update typescript gapic generator to 4.8.1
feat: add request/response debug logging to gapics, update templates to gax 5 and node 18 (#1671)
fix: add json files to tsconfig templates (#1692) (ba6be1d)

PiperOrigin-RevId: 735896588

Source-Link: https://github.com/googleapis/googleapis/commit/3419af786b385118d2dacfd8d99b141a00e9944d

Source-Link: https://github.com/googleapis/googleapis-gen/commit/f35ba1142f4e168222327d892b5f6ee908e5d461
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZjM1YmExMTQyZjRlMTY4MjIyMzI3ZDg5MmI1ZjZlZTkwOGU1ZDQ2MSJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* feat: await/catch promises, and update listOperationsAsync return type

PiperOrigin-RevId: 738212310

Source-Link: https://github.com/googleapis/googleapis/commit/803b23488149d2d00725edc52d8a6498b6ab0fec

Source-Link: https://github.com/googleapis/googleapis-gen/commit/4f44bd2baa8dd5a71ca0cebdb164c3c34341ed87
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNGY0NGJkMmJhYThkZDVhNzFjYTBjZWJkYjE2NGMzYzM0MzQxZWQ4NyJ9

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* Resolve the linting errors

* Run the migration script

* Delete the migration script

* Add files to include in compilation

* Cherry picking

* Add void in front of a bunch of promises

* Downgrade arrify

* Downgrade protobufjs

* npm run fix

* Fix the linting errors

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* Update the post-processor

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* Mark the test as only

* skip the samples test

---------

Co-authored-by: Owl Bot 
---
 handwritten/nodejs-datastore/.jsdoc.js        |   4 +-
 .../mock-server/datastore-server.ts           |   6 +-
 handwritten/nodejs-datastore/package.json     |  55 +-
 .../datastore/admin/v1/datastore_admin.proto  |   2 +-
 .../google/datastore/admin/v1/index.proto     |   2 +-
 .../google/datastore/admin/v1/migration.proto |   2 +-
 .../datastore/v1/aggregation_result.proto     |   2 +-
 .../google/datastore/v1/datastore.proto       |   2 +-
 .../protos/google/datastore/v1/entity.proto   |   2 +-
 .../protos/google/datastore/v1/query.proto    |   2 +-
 .../google/datastore/v1/query_profile.proto   |   2 +-
 .../nodejs-datastore/protos/protos.d.ts       |  72 +--
 handwritten/nodejs-datastore/protos/protos.js | 386 ++------------
 .../nodejs-datastore/protos/protos.json       |   3 -
 .../nodejs-datastore/samples/concepts.js      |  24 +-
 .../generated/v1/datastore.allocate_ids.js    |   2 +-
 .../v1/datastore.begin_transaction.js         |   2 +-
 .../samples/generated/v1/datastore.commit.js  |   2 +-
 .../samples/generated/v1/datastore.lookup.js  |   2 +-
 .../generated/v1/datastore.reserve_ids.js     |   2 +-
 .../generated/v1/datastore.rollback.js        |   2 +-
 .../v1/datastore.run_aggregation_query.js     |   2 +-
 .../generated/v1/datastore.run_query.js       |   2 +-
 .../v1/datastore_admin.create_index.js        |   2 +-
 .../v1/datastore_admin.delete_index.js        |   2 +-
 .../v1/datastore_admin.export_entities.js     |   2 +-
 .../generated/v1/datastore_admin.get_index.js |   2 +-
 .../v1/datastore_admin.import_entities.js     |   2 +-
 .../v1/datastore_admin.list_indexes.js        |   2 +-
 .../nodejs-datastore/samples/package.json     |   4 +-
 .../nodejs-datastore/samples/queryFilterOr.js |   2 +-
 handwritten/nodejs-datastore/samples/tasks.js |  10 +-
 .../samples/test/import-export.test.js        |   2 +-
 handwritten/nodejs-datastore/src/aggregate.ts |   4 +-
 handwritten/nodejs-datastore/src/entity.ts    |  38 +-
 handwritten/nodejs-datastore/src/filter.ts    |   2 +-
 .../nodejs-datastore/src/index-class.ts       |  14 +-
 handwritten/nodejs-datastore/src/index.ts     |  44 +-
 handwritten/nodejs-datastore/src/query.ts     |  14 +-
 handwritten/nodejs-datastore/src/request.ts   | 152 +++---
 .../nodejs-datastore/src/transaction.ts       |  66 +--
 .../src/utils/entity/buildEntityProto.ts      |   2 +-
 .../utils/entity/extendExcludeFromIndexes.ts  |   6 +-
 .../src/v1/datastore_admin_client.ts          | 423 ++++++++++++----
 .../src/v1/datastore_client.ts                | 403 ++++++++++++---
 .../nodejs-datastore/system-test/datastore.ts | 146 +++---
 .../system-test/fixtures/sample/src/index.js  |   2 +-
 .../system-test/fixtures/sample/src/index.ts  |   2 +-
 .../nodejs-datastore/system-test/install.ts   |   6 +-
 handwritten/nodejs-datastore/test/entity.ts   |  86 ++--
 .../test/entity/buildEntityProto.ts           |   4 +-
 .../entity/excludeIndexesAndBuildProto.ts     |  28 +-
 .../test/entity/extendExcludeFromIndexes.ts   |   4 +-
 .../test/entity/findLargeProperties_.ts       |   2 +-
 .../client-initialization-testing.ts          |  10 +-
 .../test/gapic-mocks/commit.ts                |   8 +-
 .../test/gapic-mocks/error-mocks.ts           |   2 +-
 .../test/gapic-mocks/handwritten-errors.ts    |   8 +-
 .../test/gapic-mocks/runQuery.ts              |   8 +-
 .../test/gapic_datastore_admin_v1.ts          | 472 +++++++++---------
 .../test/gapic_datastore_v1.ts                | 314 ++++++------
 handwritten/nodejs-datastore/test/index.ts    | 144 +++---
 handwritten/nodejs-datastore/test/query.ts    |  47 +-
 handwritten/nodejs-datastore/test/request.ts  |  60 +--
 .../nodejs-datastore/test/transaction.ts      | 254 +++++-----
 handwritten/nodejs-datastore/tsconfig.json    |   6 +-
 66 files changed, 1817 insertions(+), 1576 deletions(-)

diff --git a/handwritten/nodejs-datastore/.jsdoc.js b/handwritten/nodejs-datastore/.jsdoc.js
index 9d0b3ec3786..4e00e5b8f28 100644
--- a/handwritten/nodejs-datastore/.jsdoc.js
+++ b/handwritten/nodejs-datastore/.jsdoc.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ module.exports = {
     includePattern: '\\.js$'
   },
   templates: {
-    copyright: 'Copyright 2024 Google LLC',
+    copyright: 'Copyright 2025 Google LLC',
     includeDate: false,
     sourceFiles: false,
     systemName: '@google-cloud/datastore',
diff --git a/handwritten/nodejs-datastore/mock-server/datastore-server.ts b/handwritten/nodejs-datastore/mock-server/datastore-server.ts
index 2379f525b5c..c2e1ee5f2d6 100644
--- a/handwritten/nodejs-datastore/mock-server/datastore-server.ts
+++ b/handwritten/nodejs-datastore/mock-server/datastore-server.ts
@@ -21,7 +21,7 @@ const GAX_PROTOS_DIR = resolve(
   // @ts-ignore
   // eslint-disable-next-line n/no-extraneous-require
   dirname(require.resolve('google-gax')),
-  '../protos'
+  '../protos',
 );
 
 const grpc = require('@grpc/grpc-js');
@@ -42,7 +42,7 @@ const descriptor = grpc.loadPackageDefinition(packageDefinition);
  */
 function grpcEndpoint(
   call: {},
-  callback: (arg1: string | null, arg2: {}) => {}
+  callback: (arg1: string | null, arg2: {}) => {},
 ) {
   // SET A BREAKPOINT HERE AND EXPLORE `call` TO SEE THE REQUEST.
   callback(null, {message: 'Hello'});
@@ -62,6 +62,6 @@ export function startServer(cb: () => void) {
     () => {
       console.log('server started');
       cb();
-    }
+    },
   );
 }
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 7db79dadec3..38d4996c31a 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -41,45 +41,46 @@
     "precompile": "gts clean"
   },
   "dependencies": {
-    "@google-cloud/promisify": "4.0.0",
-    "arrify": "^2.0.1",
+    "@google-cloud/promisify": "^5.0.0",
+    "arrify": "^2.0.0",
     "async-mutex": "^0.5.0",
     "concat-stream": "^2.0.0",
     "extend": "^3.0.2",
-    "google-gax": "^4.0.5",
+    "google-gax": "^5.0.1-rc.0",
     "is": "^3.3.0",
+    "protobufjs": "7.0.0",
     "split-array-stream": "^2.0.0",
     "stream-events": "^1.0.5"
   },
   "devDependencies": {
-    "@google-cloud/storage": "^7.0.1",
-    "@types/extend": "^3.0.1",
-    "@types/is": "0.0.25",
-    "@types/js-yaml": "^4.0.0",
-    "@types/mocha": "^9.0.0",
-    "@types/node": "^20.4.9",
-    "@types/proxyquire": "^1.3.28",
-    "@types/sinon": "^17.0.0",
-    "async": "^3.2.4",
-    "c8": "^9.0.0",
-    "gapic-tools": "^0.4.0",
-    "gts": "^5.0.0",
-    "js-yaml": "^4.0.0",
-    "jsdoc": "^4.0.0",
+    "@google-cloud/storage": "^7.16.0",
+    "@types/extend": "^3.0.4",
+    "@types/is": "^0.0.25",
+    "@types/js-yaml": "^4.0.9",
+    "@types/mocha": "^10.0.10",
+    "@types/node": "^22.15.3",
+    "@types/proxyquire": "^1.3.31",
+    "@types/sinon": "^17.0.4",
+    "async": "^3.2.6",
+    "c8": "^10.1.3",
+    "gapic-tools": "^1.0.2",
+    "gts": "^6.0.2",
+    "js-yaml": "^4.1.0",
+    "jsdoc": "^4.0.4",
     "jsdoc-fresh": "^3.0.0",
     "jsdoc-region-tag": "^3.0.0",
-    "linkinator": "^3.0.0",
-    "mocha": "^9.2.2",
-    "null-loader": "^4.0.0",
-    "p-queue": "^6.6.1",
-    "pack-n-play": "^2.0.0",
+    "linkinator": "^6.1.2",
+    "mocha": "^11.1.0",
+    "null-loader": "^4.0.1",
+    "p-queue": "^8.1.0",
+    "pack-n-play": "^3.0.1",
     "proxyquire": "^2.1.3",
-    "sinon": "17.0.0",
-    "ts-loader": "^8.0.0",
-    "typescript": "^5.1.6",
-    "webpack-cli": "^5.0.0"
+    "sinon": "^20.0.0",
+    "ts-loader": "^9.5.2",
+    "typescript": "^5.8.3",
+    "webpack-cli": "^6.0.1"
   },
   "engines": {
-    "node": ">=14.0.0"
+    "node": ">=18"
   }
 }
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto
index a8b3f9986b9..50c4d0cc87e 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/datastore_admin.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto
index 6a1d1222767..c907660568c 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/index.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto
index 813de87ddd3..67ac1ab711d 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/admin/v1/migration.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto
index e31052c0d33..cd51f660c41 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/aggregation_result.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto
index c0683b9ba19..c0a281b1879 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/datastore.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto
index d9742d68de2..fdf0a32cb7f 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/entity.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto
index 3c2e8ae6688..2e36f958b67 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto
index e00a28e3c2b..71a4eb59933 100644
--- a/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto
+++ b/handwritten/nodejs-datastore/protos/google/datastore/v1/query_profile.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts
index 0a48bf1358b..07328fe2a70 100644
--- a/handwritten/nodejs-datastore/protos/protos.d.ts
+++ b/handwritten/nodejs-datastore/protos/protos.d.ts
@@ -3185,7 +3185,7 @@ export namespace google {
                 stringValue?: (string|null);
 
                 /** Value blobValue */
-                blobValue?: (Uint8Array|string|null);
+                blobValue?: (Uint8Array|Buffer|string|null);
 
                 /** Value geoPointValue */
                 geoPointValue?: (google.type.ILatLng|null);
@@ -3234,7 +3234,7 @@ export namespace google {
                 public stringValue?: (string|null);
 
                 /** Value blobValue. */
-                public blobValue?: (Uint8Array|string|null);
+                public blobValue?: (Uint8Array|Buffer|string|null);
 
                 /** Value geoPointValue. */
                 public geoPointValue?: (google.type.ILatLng|null);
@@ -3451,7 +3451,7 @@ export namespace google {
                 updateTime?: (google.protobuf.ITimestamp|null);
 
                 /** EntityResult cursor */
-                cursor?: (Uint8Array|string|null);
+                cursor?: (Uint8Array|Buffer|string|null);
             }
 
             /** Represents an EntityResult. */
@@ -3476,7 +3476,7 @@ export namespace google {
                 public updateTime?: (google.protobuf.ITimestamp|null);
 
                 /** EntityResult cursor. */
-                public cursor: (Uint8Array|string);
+                public cursor: (Uint8Array|Buffer|string);
 
                 /**
                  * Creates a new EntityResult instance using the specified properties.
@@ -3586,10 +3586,10 @@ export namespace google {
                 distinctOn?: (google.datastore.v1.IPropertyReference[]|null);
 
                 /** Query startCursor */
-                startCursor?: (Uint8Array|string|null);
+                startCursor?: (Uint8Array|Buffer|string|null);
 
                 /** Query endCursor */
-                endCursor?: (Uint8Array|string|null);
+                endCursor?: (Uint8Array|Buffer|string|null);
 
                 /** Query offset */
                 offset?: (number|null);
@@ -3626,10 +3626,10 @@ export namespace google {
                 public distinctOn: google.datastore.v1.IPropertyReference[];
 
                 /** Query startCursor. */
-                public startCursor: (Uint8Array|string);
+                public startCursor: (Uint8Array|Buffer|string);
 
                 /** Query endCursor. */
-                public endCursor: (Uint8Array|string);
+                public endCursor: (Uint8Array|Buffer|string);
 
                 /** Query offset. */
                 public offset: number;
@@ -5248,7 +5248,7 @@ export namespace google {
                 value?: (google.datastore.v1.IValue|null);
 
                 /** GqlQueryParameter cursor */
-                cursor?: (Uint8Array|string|null);
+                cursor?: (Uint8Array|Buffer|string|null);
             }
 
             /** Represents a GqlQueryParameter. */
@@ -5264,7 +5264,7 @@ export namespace google {
                 public value?: (google.datastore.v1.IValue|null);
 
                 /** GqlQueryParameter cursor. */
-                public cursor?: (Uint8Array|string|null);
+                public cursor?: (Uint8Array|Buffer|string|null);
 
                 /** GqlQueryParameter parameterType. */
                 public parameterType?: ("value"|"cursor");
@@ -5354,7 +5354,7 @@ export namespace google {
                 skippedResults?: (number|null);
 
                 /** QueryResultBatch skippedCursor */
-                skippedCursor?: (Uint8Array|string|null);
+                skippedCursor?: (Uint8Array|Buffer|string|null);
 
                 /** QueryResultBatch entityResultType */
                 entityResultType?: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType|null);
@@ -5363,7 +5363,7 @@ export namespace google {
                 entityResults?: (google.datastore.v1.IEntityResult[]|null);
 
                 /** QueryResultBatch endCursor */
-                endCursor?: (Uint8Array|string|null);
+                endCursor?: (Uint8Array|Buffer|string|null);
 
                 /** QueryResultBatch moreResults */
                 moreResults?: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType|null);
@@ -5388,7 +5388,7 @@ export namespace google {
                 public skippedResults: number;
 
                 /** QueryResultBatch skippedCursor. */
-                public skippedCursor: (Uint8Array|string);
+                public skippedCursor: (Uint8Array|Buffer|string);
 
                 /** QueryResultBatch entityResultType. */
                 public entityResultType: (google.datastore.v1.EntityResult.ResultType|keyof typeof google.datastore.v1.EntityResult.ResultType);
@@ -5397,7 +5397,7 @@ export namespace google {
                 public entityResults: google.datastore.v1.IEntityResult[];
 
                 /** QueryResultBatch endCursor. */
-                public endCursor: (Uint8Array|string);
+                public endCursor: (Uint8Array|Buffer|string);
 
                 /** QueryResultBatch moreResults. */
                 public moreResults: (google.datastore.v1.QueryResultBatch.MoreResultsType|keyof typeof google.datastore.v1.QueryResultBatch.MoreResultsType);
@@ -5824,7 +5824,7 @@ export namespace google {
                 deferred?: (google.datastore.v1.IKey[]|null);
 
                 /** LookupResponse transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
 
                 /** LookupResponse readTime */
                 readTime?: (google.protobuf.ITimestamp|null);
@@ -5849,7 +5849,7 @@ export namespace google {
                 public deferred: google.datastore.v1.IKey[];
 
                 /** LookupResponse transaction. */
-                public transaction: (Uint8Array|string);
+                public transaction: (Uint8Array|Buffer|string);
 
                 /** LookupResponse readTime. */
                 public readTime?: (google.protobuf.ITimestamp|null);
@@ -6084,7 +6084,7 @@ export namespace google {
                 query?: (google.datastore.v1.IQuery|null);
 
                 /** RunQueryResponse transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
 
                 /** RunQueryResponse explainMetrics */
                 explainMetrics?: (google.datastore.v1.IExplainMetrics|null);
@@ -6106,7 +6106,7 @@ export namespace google {
                 public query?: (google.datastore.v1.IQuery|null);
 
                 /** RunQueryResponse transaction. */
-                public transaction: (Uint8Array|string);
+                public transaction: (Uint8Array|Buffer|string);
 
                 /** RunQueryResponse explainMetrics. */
                 public explainMetrics?: (google.datastore.v1.IExplainMetrics|null);
@@ -6335,7 +6335,7 @@ export namespace google {
                 query?: (google.datastore.v1.IAggregationQuery|null);
 
                 /** RunAggregationQueryResponse transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
 
                 /** RunAggregationQueryResponse explainMetrics */
                 explainMetrics?: (google.datastore.v1.IExplainMetrics|null);
@@ -6357,7 +6357,7 @@ export namespace google {
                 public query?: (google.datastore.v1.IAggregationQuery|null);
 
                 /** RunAggregationQueryResponse transaction. */
-                public transaction: (Uint8Array|string);
+                public transaction: (Uint8Array|Buffer|string);
 
                 /** RunAggregationQueryResponse explainMetrics. */
                 public explainMetrics?: (google.datastore.v1.IExplainMetrics|null);
@@ -6553,7 +6553,7 @@ export namespace google {
             interface IBeginTransactionResponse {
 
                 /** BeginTransactionResponse transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
             }
 
             /** Represents a BeginTransactionResponse. */
@@ -6566,7 +6566,7 @@ export namespace google {
                 constructor(properties?: google.datastore.v1.IBeginTransactionResponse);
 
                 /** BeginTransactionResponse transaction. */
-                public transaction: (Uint8Array|string);
+                public transaction: (Uint8Array|Buffer|string);
 
                 /**
                  * Creates a new BeginTransactionResponse instance using the specified properties.
@@ -6656,7 +6656,7 @@ export namespace google {
                 databaseId?: (string|null);
 
                 /** RollbackRequest transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
             }
 
             /** Represents a RollbackRequest. */
@@ -6675,7 +6675,7 @@ export namespace google {
                 public databaseId: string;
 
                 /** RollbackRequest transaction. */
-                public transaction: (Uint8Array|string);
+                public transaction: (Uint8Array|Buffer|string);
 
                 /**
                  * Creates a new RollbackRequest instance using the specified properties.
@@ -6859,7 +6859,7 @@ export namespace google {
                 mode?: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode|null);
 
                 /** CommitRequest transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
 
                 /** CommitRequest singleUseTransaction */
                 singleUseTransaction?: (google.datastore.v1.ITransactionOptions|null);
@@ -6887,7 +6887,7 @@ export namespace google {
                 public mode: (google.datastore.v1.CommitRequest.Mode|keyof typeof google.datastore.v1.CommitRequest.Mode);
 
                 /** CommitRequest transaction. */
-                public transaction?: (Uint8Array|string|null);
+                public transaction?: (Uint8Array|Buffer|string|null);
 
                 /** CommitRequest singleUseTransaction. */
                 public singleUseTransaction?: (google.datastore.v1.ITransactionOptions|null);
@@ -8038,7 +8038,7 @@ export namespace google {
                 readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null);
 
                 /** ReadOptions transaction */
-                transaction?: (Uint8Array|string|null);
+                transaction?: (Uint8Array|Buffer|string|null);
 
                 /** ReadOptions newTransaction */
                 newTransaction?: (google.datastore.v1.ITransactionOptions|null);
@@ -8060,7 +8060,7 @@ export namespace google {
                 public readConsistency?: (google.datastore.v1.ReadOptions.ReadConsistency|keyof typeof google.datastore.v1.ReadOptions.ReadConsistency|null);
 
                 /** ReadOptions transaction. */
-                public transaction?: (Uint8Array|string|null);
+                public transaction?: (Uint8Array|Buffer|string|null);
 
                 /** ReadOptions newTransaction. */
                 public newTransaction?: (google.datastore.v1.ITransactionOptions|null);
@@ -8271,7 +8271,7 @@ export namespace google {
                 interface IReadWrite {
 
                     /** ReadWrite previousTransaction */
-                    previousTransaction?: (Uint8Array|string|null);
+                    previousTransaction?: (Uint8Array|Buffer|string|null);
                 }
 
                 /** Represents a ReadWrite. */
@@ -8284,7 +8284,7 @@ export namespace google {
                     constructor(properties?: google.datastore.v1.TransactionOptions.IReadWrite);
 
                     /** ReadWrite previousTransaction. */
-                    public previousTransaction: (Uint8Array|string);
+                    public previousTransaction: (Uint8Array|Buffer|string);
 
                     /**
                      * Creates a new ReadWrite instance using the specified properties.
@@ -13991,7 +13991,7 @@ export namespace google {
             doubleValue?: (number|null);
 
             /** UninterpretedOption stringValue */
-            stringValue?: (Uint8Array|string|null);
+            stringValue?: (Uint8Array|Buffer|string|null);
 
             /** UninterpretedOption aggregateValue */
             aggregateValue?: (string|null);
@@ -14022,7 +14022,7 @@ export namespace google {
             public doubleValue: number;
 
             /** UninterpretedOption stringValue. */
-            public stringValue: (Uint8Array|string);
+            public stringValue: (Uint8Array|Buffer|string);
 
             /** UninterpretedOption aggregateValue. */
             public aggregateValue: string;
@@ -15161,7 +15161,7 @@ export namespace google {
             type_url?: (string|null);
 
             /** Any value */
-            value?: (Uint8Array|string|null);
+            value?: (Uint8Array|Buffer|string|null);
         }
 
         /** Represents an Any. */
@@ -15177,7 +15177,7 @@ export namespace google {
             public type_url: string;
 
             /** Any value. */
-            public value: (Uint8Array|string);
+            public value: (Uint8Array|Buffer|string);
 
             /**
              * Creates a new Any instance using the specified properties.
@@ -16560,7 +16560,7 @@ export namespace google {
         interface IBytesValue {
 
             /** BytesValue value */
-            value?: (Uint8Array|string|null);
+            value?: (Uint8Array|Buffer|string|null);
         }
 
         /** Represents a BytesValue. */
@@ -16573,7 +16573,7 @@ export namespace google {
             constructor(properties?: google.protobuf.IBytesValue);
 
             /** BytesValue value. */
-            public value: (Uint8Array|string);
+            public value: (Uint8Array|Buffer|string);
 
             /**
              * Creates a new BytesValue instance using the specified properties.
diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js
index 88799e49afa..c8d954e04cf 100644
--- a/handwritten/nodejs-datastore/protos/protos.js
+++ b/handwritten/nodejs-datastore/protos/protos.js
@@ -580,12 +580,6 @@
                                 message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
                             }
                             switch (object.operationType) {
-                            default:
-                                if (typeof object.operationType === "number") {
-                                    message.operationType = object.operationType;
-                                    break;
-                                }
-                                break;
                             case "OPERATION_TYPE_UNSPECIFIED":
                             case 0:
                                 message.operationType = 0;
@@ -615,12 +609,6 @@
                                     message.labels[keys[i]] = String(object.labels[keys[i]]);
                             }
                             switch (object.state) {
-                            default:
-                                if (typeof object.state === "number") {
-                                    message.state = object.state;
-                                    break;
-                                }
-                                break;
                             case "STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -683,7 +671,7 @@
                             if (message.endTime != null && message.hasOwnProperty("endTime"))
                                 object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);
                             if (message.operationType != null && message.hasOwnProperty("operationType"))
-                                object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] === undefined ? message.operationType : $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType;
+                                object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType;
                             var keys2;
                             if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                 object.labels = {};
@@ -691,7 +679,7 @@
                                     object.labels[keys2[j]] = message.labels[keys2[j]];
                             }
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state;
                             return object;
                         };
     
@@ -4380,12 +4368,6 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata();
                             switch (object.migrationState) {
-                            default:
-                                if (typeof object.migrationState === "number") {
-                                    message.migrationState = object.migrationState;
-                                    break;
-                                }
-                                break;
                             case "MIGRATION_STATE_UNSPECIFIED":
                             case 0:
                                 message.migrationState = 0;
@@ -4404,12 +4386,6 @@
                                 break;
                             }
                             switch (object.migrationStep) {
-                            default:
-                                if (typeof object.migrationStep === "number") {
-                                    message.migrationStep = object.migrationStep;
-                                    break;
-                                }
-                                break;
                             case "MIGRATION_STEP_UNSPECIFIED":
                             case 0:
                                 message.migrationStep = 0;
@@ -4464,9 +4440,9 @@
                                 object.migrationStep = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0;
                             }
                             if (message.migrationState != null && message.hasOwnProperty("migrationState"))
-                                object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] === undefined ? message.migrationState : $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState;
+                                object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState;
                             if (message.migrationStep != null && message.hasOwnProperty("migrationStep"))
-                                object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] === undefined ? message.migrationStep : $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep;
+                                object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep;
                             return object;
                         };
     
@@ -4789,12 +4765,6 @@
                             if (object.kind != null)
                                 message.kind = String(object.kind);
                             switch (object.ancestor) {
-                            default:
-                                if (typeof object.ancestor === "number") {
-                                    message.ancestor = object.ancestor;
-                                    break;
-                                }
-                                break;
                             case "ANCESTOR_MODE_UNSPECIFIED":
                             case 0:
                                 message.ancestor = 0;
@@ -4819,12 +4789,6 @@
                                 }
                             }
                             switch (object.state) {
-                            default:
-                                if (typeof object.state === "number") {
-                                    message.state = object.state;
-                                    break;
-                                }
-                                break;
                             case "STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -4878,14 +4842,14 @@
                             if (message.kind != null && message.hasOwnProperty("kind"))
                                 object.kind = message.kind;
                             if (message.ancestor != null && message.hasOwnProperty("ancestor"))
-                                object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] === undefined ? message.ancestor : $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor;
+                                object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor;
                             if (message.properties && message.properties.length) {
                                 object.properties = [];
                                 for (var j = 0; j < message.properties.length; ++j)
                                     object.properties[j] = $root.google.datastore.admin.v1.Index.IndexedProperty.toObject(message.properties[j], options);
                             }
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.Index.State[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] : message.state;
                             return object;
                         };
     
@@ -5123,12 +5087,6 @@
                                 if (object.name != null)
                                     message.name = String(object.name);
                                 switch (object.direction) {
-                                default:
-                                    if (typeof object.direction === "number") {
-                                        message.direction = object.direction;
-                                        break;
-                                    }
-                                    break;
                                 case "DIRECTION_UNSPECIFIED":
                                 case 0:
                                     message.direction = 0;
@@ -5165,7 +5123,7 @@
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     object.name = message.name;
                                 if (message.direction != null && message.hasOwnProperty("direction"))
-                                    object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction;
+                                    object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction;
                                 return object;
                             };
     
@@ -5378,12 +5336,6 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.MigrationStateEvent();
                             switch (object.state) {
-                            default:
-                                if (typeof object.state === "number") {
-                                    message.state = object.state;
-                                    break;
-                                }
-                                break;
                             case "MIGRATION_STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -5420,7 +5372,7 @@
                             if (options.defaults)
                                 object.state = options.enums === String ? "MIGRATION_STATE_UNSPECIFIED" : 0;
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.MigrationState[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] : message.state;
                             return object;
                         };
     
@@ -5677,12 +5629,6 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.MigrationProgressEvent();
                             switch (object.step) {
-                            default:
-                                if (typeof object.step === "number") {
-                                    message.step = object.step;
-                                    break;
-                                }
-                                break;
                             case "MIGRATION_STEP_UNSPECIFIED":
                             case 0:
                                 message.step = 0;
@@ -5745,7 +5691,7 @@
                             if (options.defaults)
                                 object.step = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0;
                             if (message.step != null && message.hasOwnProperty("step"))
-                                object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] === undefined ? message.step : $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step;
+                                object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step;
                             if (message.prepareStepDetails != null && message.hasOwnProperty("prepareStepDetails")) {
                                 object.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.toObject(message.prepareStepDetails, options);
                                 if (options.oneofs)
@@ -5960,12 +5906,6 @@
                                     return object;
                                 var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails();
                                 switch (object.concurrencyMode) {
-                                default:
-                                    if (typeof object.concurrencyMode === "number") {
-                                        message.concurrencyMode = object.concurrencyMode;
-                                        break;
-                                    }
-                                    break;
                                 case "CONCURRENCY_MODE_UNSPECIFIED":
                                 case 0:
                                     message.concurrencyMode = 0;
@@ -6002,7 +5942,7 @@
                                 if (options.defaults)
                                     object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0;
                                 if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
-                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
+                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
                                 return object;
                             };
     
@@ -6192,12 +6132,6 @@
                                     return object;
                                 var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails();
                                 switch (object.concurrencyMode) {
-                                default:
-                                    if (typeof object.concurrencyMode === "number") {
-                                        message.concurrencyMode = object.concurrencyMode;
-                                        break;
-                                    }
-                                    break;
                                 case "CONCURRENCY_MODE_UNSPECIFIED":
                                 case 0:
                                     message.concurrencyMode = 0;
@@ -6234,7 +6168,7 @@
                                 if (options.defaults)
                                     object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0;
                                 if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
-                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
+                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
                                 return object;
                             };
     
@@ -6790,12 +6724,6 @@
                             }
                         }
                         switch (object.moreResults) {
-                        default:
-                            if (typeof object.moreResults === "number") {
-                                message.moreResults = object.moreResults;
-                                break;
-                            }
-                            break;
                         case "MORE_RESULTS_TYPE_UNSPECIFIED":
                         case 0:
                             message.moreResults = 0;
@@ -6850,7 +6778,7 @@
                                 object.aggregationResults[j] = $root.google.datastore.v1.AggregationResult.toObject(message.aggregationResults[j], options);
                         }
                         if (message.moreResults != null && message.hasOwnProperty("moreResults"))
-                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
+                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
                         if (message.readTime != null && message.hasOwnProperty("readTime"))
                             object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options);
                         return object;
@@ -8338,12 +8266,6 @@
                             return object;
                         var message = new $root.google.datastore.v1.Value();
                         switch (object.nullValue) {
-                        default:
-                            if (typeof object.nullValue === "number") {
-                                message.nullValue = object.nullValue;
-                                break;
-                            }
-                            break;
                         case "NULL_VALUE":
                         case 0:
                             message.nullValue = 0;
@@ -8462,7 +8384,7 @@
                                 object.valueType = "timestampValue";
                         }
                         if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
-                            object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
+                            object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
                             if (options.oneofs)
                                 object.valueType = "nullValue";
                         }
@@ -11680,12 +11602,6 @@
                             message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property);
                         }
                         switch (object.direction) {
-                        default:
-                            if (typeof object.direction === "number") {
-                                message.direction = object.direction;
-                                break;
-                            }
-                            break;
                         case "DIRECTION_UNSPECIFIED":
                         case 0:
                             message.direction = 0;
@@ -11722,7 +11638,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options);
                         if (message.direction != null && message.hasOwnProperty("direction"))
-                            object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction;
+                            object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction;
                         return object;
                     };
     
@@ -12217,12 +12133,6 @@
                             return object;
                         var message = new $root.google.datastore.v1.CompositeFilter();
                         switch (object.op) {
-                        default:
-                            if (typeof object.op === "number") {
-                                message.op = object.op;
-                                break;
-                            }
-                            break;
                         case "OPERATOR_UNSPECIFIED":
                         case 0:
                             message.op = 0;
@@ -12267,7 +12177,7 @@
                         if (options.defaults)
                             object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0;
                         if (message.op != null && message.hasOwnProperty("op"))
-                            object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op;
+                            object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op;
                         if (message.filters && message.filters.length) {
                             object.filters = [];
                             for (var j = 0; j < message.filters.length; ++j)
@@ -12529,12 +12439,6 @@
                             message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property);
                         }
                         switch (object.op) {
-                        default:
-                            if (typeof object.op === "number") {
-                                message.op = object.op;
-                                break;
-                            }
-                            break;
                         case "OPERATOR_UNSPECIFIED":
                         case 0:
                             message.op = 0;
@@ -12605,7 +12509,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options);
                         if (message.op != null && message.hasOwnProperty("op"))
-                            object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op;
+                            object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op;
                         if (message.value != null && message.hasOwnProperty("value"))
                             object.value = $root.google.datastore.v1.Value.toObject(message.value, options);
                         return object;
@@ -12935,12 +12839,6 @@
                             message.queryVector = $root.google.datastore.v1.Value.fromObject(object.queryVector);
                         }
                         switch (object.distanceMeasure) {
-                        default:
-                            if (typeof object.distanceMeasure === "number") {
-                                message.distanceMeasure = object.distanceMeasure;
-                                break;
-                            }
-                            break;
                         case "DISTANCE_MEASURE_UNSPECIFIED":
                         case 0:
                             message.distanceMeasure = 0;
@@ -12999,7 +12897,7 @@
                         if (message.queryVector != null && message.hasOwnProperty("queryVector"))
                             object.queryVector = $root.google.datastore.v1.Value.toObject(message.queryVector, options);
                         if (message.distanceMeasure != null && message.hasOwnProperty("distanceMeasure"))
-                            object.distanceMeasure = options.enums === String ? $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] === undefined ? message.distanceMeasure : $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] : message.distanceMeasure;
+                            object.distanceMeasure = options.enums === String ? $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] : message.distanceMeasure;
                         if (message.limit != null && message.hasOwnProperty("limit"))
                             object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options);
                         if (message.distanceResultProperty != null && message.hasOwnProperty("distanceResultProperty"))
@@ -13963,12 +13861,6 @@
                             else if (object.skippedCursor.length >= 0)
                                 message.skippedCursor = object.skippedCursor;
                         switch (object.entityResultType) {
-                        default:
-                            if (typeof object.entityResultType === "number") {
-                                message.entityResultType = object.entityResultType;
-                                break;
-                            }
-                            break;
                         case "RESULT_TYPE_UNSPECIFIED":
                         case 0:
                             message.entityResultType = 0;
@@ -14002,12 +13894,6 @@
                             else if (object.endCursor.length >= 0)
                                 message.endCursor = object.endCursor;
                         switch (object.moreResults) {
-                        default:
-                            if (typeof object.moreResults === "number") {
-                                message.moreResults = object.moreResults;
-                                break;
-                            }
-                            break;
                         case "MORE_RESULTS_TYPE_UNSPECIFIED":
                         case 0:
                             message.moreResults = 0;
@@ -14087,7 +13973,7 @@
                             object.readTime = null;
                         }
                         if (message.entityResultType != null && message.hasOwnProperty("entityResultType"))
-                            object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] === undefined ? message.entityResultType : $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType;
+                            object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType;
                         if (message.entityResults && message.entityResults.length) {
                             object.entityResults = [];
                             for (var j = 0; j < message.entityResults.length; ++j)
@@ -14098,7 +13984,7 @@
                         if (message.endCursor != null && message.hasOwnProperty("endCursor"))
                             object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor;
                         if (message.moreResults != null && message.hasOwnProperty("moreResults"))
-                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
+                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
                         if (message.skippedResults != null && message.hasOwnProperty("skippedResults"))
                             object.skippedResults = message.skippedResults;
                         if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion"))
@@ -17757,12 +17643,6 @@
                         if (object.databaseId != null)
                             message.databaseId = String(object.databaseId);
                         switch (object.mode) {
-                        default:
-                            if (typeof object.mode === "number") {
-                                message.mode = object.mode;
-                                break;
-                            }
-                            break;
                         case "MODE_UNSPECIFIED":
                         case 0:
                             message.mode = 0;
@@ -17825,7 +17705,7 @@
                                 object.transactionSelector = "transaction";
                         }
                         if (message.mode != null && message.hasOwnProperty("mode"))
-                            object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode;
+                            object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode;
                         if (message.mutations && message.mutations.length) {
                             object.mutations = [];
                             for (var j = 0; j < message.mutations.length; ++j)
@@ -19515,12 +19395,6 @@
                             message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
                         }
                         switch (object.conflictResolutionStrategy) {
-                        default:
-                            if (typeof object.conflictResolutionStrategy === "number") {
-                                message.conflictResolutionStrategy = object.conflictResolutionStrategy;
-                                break;
-                            }
-                            break;
                         case "STRATEGY_UNSPECIFIED":
                         case 0:
                             message.conflictResolutionStrategy = 0;
@@ -19602,7 +19476,7 @@
                         if (message.propertyMask != null && message.hasOwnProperty("propertyMask"))
                             object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options);
                         if (message.conflictResolutionStrategy != null && message.hasOwnProperty("conflictResolutionStrategy"))
-                            object.conflictResolutionStrategy = options.enums === String ? $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] === undefined ? message.conflictResolutionStrategy : $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] : message.conflictResolutionStrategy;
+                            object.conflictResolutionStrategy = options.enums === String ? $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] : message.conflictResolutionStrategy;
                         if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
                             object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options);
                             if (options.oneofs)
@@ -19978,12 +19852,6 @@
                         if (object.property != null)
                             message.property = String(object.property);
                         switch (object.setToServerValue) {
-                        default:
-                            if (typeof object.setToServerValue === "number") {
-                                message.setToServerValue = object.setToServerValue;
-                                break;
-                            }
-                            break;
                         case "SERVER_VALUE_UNSPECIFIED":
                         case 0:
                             message.setToServerValue = 0;
@@ -20039,7 +19907,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = message.property;
                         if (message.setToServerValue != null && message.hasOwnProperty("setToServerValue")) {
-                            object.setToServerValue = options.enums === String ? $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] === undefined ? message.setToServerValue : $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] : message.setToServerValue;
+                            object.setToServerValue = options.enums === String ? $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] : message.setToServerValue;
                             if (options.oneofs)
                                 object.transformType = "setToServerValue";
                         }
@@ -20948,12 +20816,6 @@
                             return object;
                         var message = new $root.google.datastore.v1.ReadOptions();
                         switch (object.readConsistency) {
-                        default:
-                            if (typeof object.readConsistency === "number") {
-                                message.readConsistency = object.readConsistency;
-                                break;
-                            }
-                            break;
                         case "READ_CONSISTENCY_UNSPECIFIED":
                         case 0:
                             message.readConsistency = 0;
@@ -20999,7 +20861,7 @@
                             options = {};
                         var object = {};
                         if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) {
-                            object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] === undefined ? message.readConsistency : $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency;
+                            object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency;
                             if (options.oneofs)
                                 object.consistencyType = "readConsistency";
                         }
@@ -23899,10 +23761,6 @@
                         for (var i = 0; i < object.destinations.length; ++i)
                             switch (object.destinations[i]) {
                             default:
-                                if (typeof object.destinations[i] === "number") {
-                                    message.destinations[i] = object.destinations[i];
-                                    break;
-                                }
                             case "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":
                             case 0:
                                 message.destinations[i] = 0;
@@ -23942,7 +23800,7 @@
                     if (message.destinations && message.destinations.length) {
                         object.destinations = [];
                         for (var j = 0; j < message.destinations.length; ++j)
-                            object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
+                            object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
                     }
                     return object;
                 };
@@ -24335,12 +24193,6 @@
                     if (object.version != null)
                         message.version = String(object.version);
                     switch (object.launchStage) {
-                    default:
-                        if (typeof object.launchStage === "number") {
-                            message.launchStage = object.launchStage;
-                            break;
-                        }
-                        break;
                     case "LAUNCH_STAGE_UNSPECIFIED":
                     case 0:
                         message.launchStage = 0;
@@ -24448,7 +24300,7 @@
                     if (message.version != null && message.hasOwnProperty("version"))
                         object.version = message.version;
                     if (message.launchStage != null && message.hasOwnProperty("launchStage"))
-                        object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] === undefined ? message.launchStage : $root.google.api.LaunchStage[message.launchStage] : message.launchStage;
+                        object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] : message.launchStage;
                     if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums"))
                         object.restNumericEnums = message.restNumericEnums;
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings"))
@@ -24895,12 +24747,6 @@
                     if (object.docTagPrefix != null)
                         message.docTagPrefix = String(object.docTagPrefix);
                     switch (object.organization) {
-                    default:
-                        if (typeof object.organization === "number") {
-                            message.organization = object.organization;
-                            break;
-                        }
-                        break;
                     case "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":
                     case 0:
                         message.organization = 0;
@@ -25000,7 +24846,7 @@
                     if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix"))
                         object.docTagPrefix = message.docTagPrefix;
                     if (message.organization != null && message.hasOwnProperty("organization"))
-                        object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] === undefined ? message.organization : $root.google.api.ClientLibraryOrganization[message.organization] : message.organization;
+                        object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] : message.organization;
                     if (message.librarySettings && message.librarySettings.length) {
                         object.librarySettings = [];
                         for (var j = 0; j < message.librarySettings.length; ++j)
@@ -28935,12 +28781,6 @@
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
                     switch (object.edition) {
-                    default:
-                        if (typeof object.edition === "number") {
-                            message.edition = object.edition;
-                            break;
-                        }
-                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.edition = 0;
@@ -29065,7 +28905,7 @@
                     if (message.syntax != null && message.hasOwnProperty("syntax"))
                         object.syntax = message.syntax;
                     if (message.edition != null && message.hasOwnProperty("edition"))
-                        object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
                     return object;
                 };
     
@@ -30421,12 +30261,6 @@
                     case 0:
                         message.verification = 0;
                         break;
-                    default:
-                        if (typeof object.verification === "number") {
-                            message.verification = object.verification;
-                            break;
-                        }
-                        break;
                     case "UNVERIFIED":
                     case 1:
                         message.verification = 1;
@@ -30462,7 +30296,7 @@
                             object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options);
                     }
                     if (message.verification != null && message.hasOwnProperty("verification"))
-                        object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] === undefined ? message.verification : $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification;
+                        object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification;
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
@@ -31175,12 +31009,6 @@
                     if (object.number != null)
                         message.number = object.number | 0;
                     switch (object.label) {
-                    default:
-                        if (typeof object.label === "number") {
-                            message.label = object.label;
-                            break;
-                        }
-                        break;
                     case "LABEL_OPTIONAL":
                     case 1:
                         message.label = 1;
@@ -31195,12 +31023,6 @@
                         break;
                     }
                     switch (object.type) {
-                    default:
-                        if (typeof object.type === "number") {
-                            message.type = object.type;
-                            break;
-                        }
-                        break;
                     case "TYPE_DOUBLE":
                     case 1:
                         message.type = 1;
@@ -31327,9 +31149,9 @@
                     if (message.number != null && message.hasOwnProperty("number"))
                         object.number = message.number;
                     if (message.label != null && message.hasOwnProperty("label"))
-                        object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] === undefined ? message.label : $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label;
+                        object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label;
                     if (message.type != null && message.hasOwnProperty("type"))
-                        object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] === undefined ? message.type : $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type;
+                        object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type;
                     if (message.typeName != null && message.hasOwnProperty("typeName"))
                         object.typeName = message.typeName;
                     if (message.defaultValue != null && message.hasOwnProperty("defaultValue"))
@@ -33650,12 +33472,6 @@
                     if (object.javaStringCheckUtf8 != null)
                         message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8);
                     switch (object.optimizeFor) {
-                    default:
-                        if (typeof object.optimizeFor === "number") {
-                            message.optimizeFor = object.optimizeFor;
-                            break;
-                        }
-                        break;
                     case "SPEED":
                     case 1:
                         message.optimizeFor = 1;
@@ -33755,7 +33571,7 @@
                     if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname"))
                         object.javaOuterClassname = message.javaOuterClassname;
                     if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor"))
-                        object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] === undefined ? message.optimizeFor : $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor;
+                        object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor;
                     if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles"))
                         object.javaMultipleFiles = message.javaMultipleFiles;
                     if (message.goPackage != null && message.hasOwnProperty("goPackage"))
@@ -34687,12 +34503,6 @@
                         return object;
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
-                    default:
-                        if (typeof object.ctype === "number") {
-                            message.ctype = object.ctype;
-                            break;
-                        }
-                        break;
                     case "STRING":
                     case 0:
                         message.ctype = 0;
@@ -34709,12 +34519,6 @@
                     if (object.packed != null)
                         message.packed = Boolean(object.packed);
                     switch (object.jstype) {
-                    default:
-                        if (typeof object.jstype === "number") {
-                            message.jstype = object.jstype;
-                            break;
-                        }
-                        break;
                     case "JS_NORMAL":
                     case 0:
                         message.jstype = 0;
@@ -34739,12 +34543,6 @@
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
                     switch (object.retention) {
-                    default:
-                        if (typeof object.retention === "number") {
-                            message.retention = object.retention;
-                            break;
-                        }
-                        break;
                     case "RETENTION_UNKNOWN":
                     case 0:
                         message.retention = 0;
@@ -34765,10 +34563,6 @@
                         for (var i = 0; i < object.targets.length; ++i)
                             switch (object.targets[i]) {
                             default:
-                                if (typeof object.targets[i] === "number") {
-                                    message.targets[i] = object.targets[i];
-                                    break;
-                                }
                             case "TARGET_TYPE_UNKNOWN":
                             case 0:
                                 message.targets[i] = 0;
@@ -34843,10 +34637,6 @@
                         for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i)
                             switch (object[".google.api.fieldBehavior"][i]) {
                             default:
-                                if (typeof object[".google.api.fieldBehavior"][i] === "number") {
-                                    message[".google.api.fieldBehavior"][i] = object[".google.api.fieldBehavior"][i];
-                                    break;
-                                }
                             case "FIELD_BEHAVIOR_UNSPECIFIED":
                             case 0:
                                 message[".google.api.fieldBehavior"][i] = 0;
@@ -34920,7 +34710,7 @@
                         object.features = null;
                     }
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
-                        object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype;
+                        object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype;
                     if (message.packed != null && message.hasOwnProperty("packed"))
                         object.packed = message.packed;
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
@@ -34928,7 +34718,7 @@
                     if (message.lazy != null && message.hasOwnProperty("lazy"))
                         object.lazy = message.lazy;
                     if (message.jstype != null && message.hasOwnProperty("jstype"))
-                        object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] === undefined ? message.jstype : $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype;
+                        object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype;
                     if (message.weak != null && message.hasOwnProperty("weak"))
                         object.weak = message.weak;
                     if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy"))
@@ -34936,11 +34726,11 @@
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
                     if (message.retention != null && message.hasOwnProperty("retention"))
-                        object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention;
+                        object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention;
                     if (message.targets && message.targets.length) {
                         object.targets = [];
                         for (var j = 0; j < message.targets.length; ++j)
-                            object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] === undefined ? message.targets[j] : $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j];
+                            object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j];
                     }
                     if (message.editionDefaults && message.editionDefaults.length) {
                         object.editionDefaults = [];
@@ -34957,7 +34747,7 @@
                     if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) {
                         object[".google.api.fieldBehavior"] = [];
                         for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j)
-                            object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] === undefined ? message[".google.api.fieldBehavior"][j] : $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j];
+                            object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j];
                     }
                     return object;
                 };
@@ -35248,12 +35038,6 @@
                             return object;
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
-                        default:
-                            if (typeof object.edition === "number") {
-                                message.edition = object.edition;
-                                break;
-                            }
-                            break;
                         case "EDITION_UNKNOWN":
                         case 0:
                             message.edition = 0;
@@ -35324,7 +35108,7 @@
                         if (message.value != null && message.hasOwnProperty("value"))
                             object.value = message.value;
                         if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
                         return object;
                     };
     
@@ -36892,12 +36676,6 @@
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     switch (object.idempotencyLevel) {
-                    default:
-                        if (typeof object.idempotencyLevel === "number") {
-                            message.idempotencyLevel = object.idempotencyLevel;
-                            break;
-                        }
-                        break;
                     case "IDEMPOTENCY_UNKNOWN":
                     case 0:
                         message.idempotencyLevel = 0;
@@ -36979,7 +36757,7 @@
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
                     if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel"))
-                        object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel;
+                        object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel;
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
@@ -37951,12 +37729,6 @@
                         return object;
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
-                    default:
-                        if (typeof object.fieldPresence === "number") {
-                            message.fieldPresence = object.fieldPresence;
-                            break;
-                        }
-                        break;
                     case "FIELD_PRESENCE_UNKNOWN":
                     case 0:
                         message.fieldPresence = 0;
@@ -37975,12 +37747,6 @@
                         break;
                     }
                     switch (object.enumType) {
-                    default:
-                        if (typeof object.enumType === "number") {
-                            message.enumType = object.enumType;
-                            break;
-                        }
-                        break;
                     case "ENUM_TYPE_UNKNOWN":
                     case 0:
                         message.enumType = 0;
@@ -37995,12 +37761,6 @@
                         break;
                     }
                     switch (object.repeatedFieldEncoding) {
-                    default:
-                        if (typeof object.repeatedFieldEncoding === "number") {
-                            message.repeatedFieldEncoding = object.repeatedFieldEncoding;
-                            break;
-                        }
-                        break;
                     case "REPEATED_FIELD_ENCODING_UNKNOWN":
                     case 0:
                         message.repeatedFieldEncoding = 0;
@@ -38015,12 +37775,6 @@
                         break;
                     }
                     switch (object.utf8Validation) {
-                    default:
-                        if (typeof object.utf8Validation === "number") {
-                            message.utf8Validation = object.utf8Validation;
-                            break;
-                        }
-                        break;
                     case "UTF8_VALIDATION_UNKNOWN":
                     case 0:
                         message.utf8Validation = 0;
@@ -38035,12 +37789,6 @@
                         break;
                     }
                     switch (object.messageEncoding) {
-                    default:
-                        if (typeof object.messageEncoding === "number") {
-                            message.messageEncoding = object.messageEncoding;
-                            break;
-                        }
-                        break;
                     case "MESSAGE_ENCODING_UNKNOWN":
                     case 0:
                         message.messageEncoding = 0;
@@ -38055,12 +37803,6 @@
                         break;
                     }
                     switch (object.jsonFormat) {
-                    default:
-                        if (typeof object.jsonFormat === "number") {
-                            message.jsonFormat = object.jsonFormat;
-                            break;
-                        }
-                        break;
                     case "JSON_FORMAT_UNKNOWN":
                     case 0:
                         message.jsonFormat = 0;
@@ -38099,17 +37841,17 @@
                         object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
                     }
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
-                        object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
+                        object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
                     if (message.enumType != null && message.hasOwnProperty("enumType"))
-                        object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType;
+                        object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType;
                     if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding"))
-                        object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding;
+                        object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding;
                     if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation"))
-                        object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] === undefined ? message.utf8Validation : $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation;
+                        object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation;
                     if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding"))
-                        object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
+                        object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
                     if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
-                        object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                        object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
                     return object;
                 };
     
@@ -38474,12 +38216,6 @@
                         }
                     }
                     switch (object.minimumEdition) {
-                    default:
-                        if (typeof object.minimumEdition === "number") {
-                            message.minimumEdition = object.minimumEdition;
-                            break;
-                        }
-                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.minimumEdition = 0;
@@ -38526,12 +38262,6 @@
                         break;
                     }
                     switch (object.maximumEdition) {
-                    default:
-                        if (typeof object.maximumEdition === "number") {
-                            message.maximumEdition = object.maximumEdition;
-                            break;
-                        }
-                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.maximumEdition = 0;
@@ -38605,9 +38335,9 @@
                             object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options);
                     }
                     if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition"))
-                        object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] === undefined ? message.minimumEdition : $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition;
+                        object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition;
                     if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition"))
-                        object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] === undefined ? message.maximumEdition : $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition;
+                        object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition;
                     return object;
                 };
     
@@ -38821,12 +38551,6 @@
                             return object;
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
-                        default:
-                            if (typeof object.edition === "number") {
-                                message.edition = object.edition;
-                                break;
-                            }
-                            break;
                         case "EDITION_UNKNOWN":
                         case 0:
                             message.edition = 0;
@@ -38900,7 +38624,7 @@
                         if (message.features != null && message.hasOwnProperty("features"))
                             object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                         if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
                         return object;
                     };
     
@@ -40000,12 +39724,6 @@
                         if (object.end != null)
                             message.end = object.end | 0;
                         switch (object.semantic) {
-                        default:
-                            if (typeof object.semantic === "number") {
-                                message.semantic = object.semantic;
-                                break;
-                            }
-                            break;
                         case "NONE":
                         case 0:
                             message.semantic = 0;
@@ -40055,7 +39773,7 @@
                         if (message.end != null && message.hasOwnProperty("end"))
                             object.end = message.end;
                         if (message.semantic != null && message.hasOwnProperty("semantic"))
-                            object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] === undefined ? message.semantic : $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic;
+                            object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic;
                         return object;
                     };
     
@@ -41532,12 +41250,6 @@
                         return object;
                     var message = new $root.google.protobuf.Value();
                     switch (object.nullValue) {
-                    default:
-                        if (typeof object.nullValue === "number") {
-                            message.nullValue = object.nullValue;
-                            break;
-                        }
-                        break;
                     case "NULL_VALUE":
                     case 0:
                         message.nullValue = 0;
@@ -41576,7 +41288,7 @@
                         options = {};
                     var object = {};
                     if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
-                        object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
+                        object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
                         if (options.oneofs)
                             object.kind = "nullValue";
                     }
diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json
index e60b2d06bf0..392bd1b306d 100644
--- a/handwritten/nodejs-datastore/protos/protos.json
+++ b/handwritten/nodejs-datastore/protos/protos.json
@@ -1,7 +1,4 @@
 {
-  "options": {
-    "syntax": "proto3"
-  },
   "nested": {
     "google": {
       "nested": {
diff --git a/handwritten/nodejs-datastore/samples/concepts.js b/handwritten/nodejs-datastore/samples/concepts.js
index 6543142b927..78ebb544d48 100644
--- a/handwritten/nodejs-datastore/samples/concepts.js
+++ b/handwritten/nodejs-datastore/samples/concepts.js
@@ -491,7 +491,7 @@ class Metadata extends TestHelper {
           and([
             new PropertyFilter('__key__', '>=', startKey),
             new PropertyFilter('__key__', '<', endKey),
-          ])
+          ]),
         );
 
       const [entities] = await datastore.runQuery(query);
@@ -616,7 +616,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('done', '=', false),
           new PropertyFilter('priority', '>=', 4),
-        ])
+        ]),
       )
       .order('priority', {
         descending: true,
@@ -684,7 +684,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('done', '=', false),
           new PropertyFilter('priority', '=', 4),
-        ])
+        ]),
       );
     // [END datastore_composite_filter]
 
@@ -698,7 +698,7 @@ class Query extends TestHelper {
     const query = datastore
       .createQuery('Task')
       .filter(
-        new PropertyFilter('__key__', '>', datastore.key(['Task', 'someTask']))
+        new PropertyFilter('__key__', '>', datastore.key(['Task', 'someTask'])),
       );
     // [END datastore_key_filter]
 
@@ -814,7 +814,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('tag', '>', 'learn'),
           new PropertyFilter('tag', '<', 'math'),
-        ])
+        ]),
       );
     // [END datastore_array_value_inequality_range]
 
@@ -831,7 +831,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('tag', '=', 'fun'),
           new PropertyFilter('tag', '=', 'programming'),
-        ])
+        ]),
       );
     // [END datastore_array_value_equality]
 
@@ -848,7 +848,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')),
           new PropertyFilter('created', '<', new Date('2000-12-31T23:59:59z')),
-        ])
+        ]),
       );
     // [END datastore_inequality_range]
 
@@ -865,7 +865,7 @@ class Query extends TestHelper {
         and([
           new PropertyFilter('priority', '>', 3),
           new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')),
-        ])
+        ]),
       );
     // [END datastore_inequality_invalid]
 
@@ -884,7 +884,7 @@ class Query extends TestHelper {
           new PropertyFilter('done', '=', false),
           new PropertyFilter('created', '>', new Date('1990-01-01T00:00:00z')),
           new PropertyFilter('created', '<', new Date('2000-12-31T23:59:59z')),
-        ])
+        ]),
       );
     // [END datastore_equal_and_inequality_range]
 
@@ -1071,11 +1071,11 @@ class Transaction extends TestHelper {
       datastore = datastoreMock;
       assert.strictEqual(
         accounts[0].balance,
-        originalBalance - amountToTransfer
+        originalBalance - amountToTransfer,
       );
       assert.strictEqual(
         accounts[1].balance,
-        originalBalance + amountToTransfer
+        originalBalance + amountToTransfer,
       );
     } catch (err) {
       datastore = datastoreMock;
@@ -1201,7 +1201,7 @@ class Transaction extends TestHelper {
         // Restore `datastore` to the mock API.
         datastore = datastoreMock;
         return Promise.reject(err);
-      }
+      },
     );
   }
 }
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js
index db0090215b5..e47fb3a8067 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.allocate_ids.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js
index ffc8ef3c923..048d1ef5e3a 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.begin_transaction.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js
index 4d06569583b..6adbb99605f 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.commit.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js
index 6d15a904813..10605896735 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.lookup.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js
index 32bb99e2d3d..d6a5b855964 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.reserve_ids.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js
index ddf208875be..27757dcc828 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.rollback.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js
index fcc244c1845..b5c44b6ef74 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_aggregation_query.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js
index b4c6976b342..70237069d9c 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore.run_query.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js
index 36561b327c0..a54d726a8a7 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.create_index.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js
index 0c6d2384d45..8b74e8d5e4d 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.delete_index.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js
index 5c90205a63f..de3f899694b 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.export_entities.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js
index faa29110d3a..9c930af60b8 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.get_index.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js
index c277edc88d8..a17a03e9c2f 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.import_entities.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js
index bafca685620..624f6423148 100644
--- a/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js
+++ b/handwritten/nodejs-datastore/samples/generated/v1/datastore_admin.list_indexes.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 44055e1dfa3..863f02dc006 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -8,7 +8,7 @@
   ],
   "repository": "googleapis/nodejs-datastore",
   "engines": {
-    "node": ">=14.0.0"
+    "node": ">=18"
   },
   "scripts": {
     "test": "mocha --timeout=600000"
@@ -21,4 +21,4 @@
     "chai": "^4.2.0",
     "mocha": "^8.0.0"
   }
-}
+}
\ No newline at end of file
diff --git a/handwritten/nodejs-datastore/samples/queryFilterOr.js b/handwritten/nodejs-datastore/samples/queryFilterOr.js
index 80913cd9c8a..deb911d7773 100644
--- a/handwritten/nodejs-datastore/samples/queryFilterOr.js
+++ b/handwritten/nodejs-datastore/samples/queryFilterOr.js
@@ -37,7 +37,7 @@ async function main() {
         or([
           new PropertyFilter('description', '=', 'Buy milk'),
           new PropertyFilter('description', '=', 'Feed cats'),
-        ])
+        ]),
       );
 
     const [entities] = await datastore.runQuery(query);
diff --git a/handwritten/nodejs-datastore/samples/tasks.js b/handwritten/nodejs-datastore/samples/tasks.js
index e31c829587d..eca5d3be2cb 100644
--- a/handwritten/nodejs-datastore/samples/tasks.js
+++ b/handwritten/nodejs-datastore/samples/tasks.js
@@ -162,23 +162,23 @@ require(`yargs`) // eslint-disable-line
     'new ',
     'Adds a task with a description .',
     {},
-    opts => addTask(opts.description)
+    opts => addTask(opts.description),
   )
   .command('done ', 'Marks the specified task as done.', {}, opts =>
-    markDone(opts.taskId)
+    markDone(opts.taskId),
   )
   .command('merge ', 'Marks the specified task as done.', {}, opts =>
-    merge(opts.taskId, opts.description)
+    merge(opts.taskId, opts.description),
   )
   .command('list', 'Lists all tasks ordered by creation time.', {}, listTasks)
   .command('delete ', 'Deletes a task.', {}, opts =>
-    deleteTask(opts.taskId)
+    deleteTask(opts.taskId),
   )
   .example('node $0 new "Buy milk"', 'Adds a task with description "Buy milk".')
   .example('node $0 done 12345', 'Marks task 12345 as Done.')
   .example(
     'node $0 merge 12345',
-    'update task 12345 with description "Buy food".'
+    'update task 12345 with description "Buy food".',
   )
   .example('node $0 list', 'Lists all tasks ordered by creation time')
   .example('node $0 delete 12345', 'Deletes task 12345.')
diff --git a/handwritten/nodejs-datastore/samples/test/import-export.test.js b/handwritten/nodejs-datastore/samples/test/import-export.test.js
index 2a0bc3d5d42..7471da3e9cd 100644
--- a/handwritten/nodejs-datastore/samples/test/import-export.test.js
+++ b/handwritten/nodejs-datastore/samples/test/import-export.test.js
@@ -40,7 +40,7 @@ describe('import/export entities', async () => {
     assert.include(stdout, 'Export file created:');
   });
 
-  it('should import entities', () => {
+  it.skip('should import entities', () => {
     execSync(`node ./import.js ${EXPORTED_FILE}`);
   });
 });
diff --git a/handwritten/nodejs-datastore/src/aggregate.ts b/handwritten/nodejs-datastore/src/aggregate.ts
index d36172e4d6e..3c07aeee3c1 100644
--- a/handwritten/nodejs-datastore/src/aggregate.ts
+++ b/handwritten/nodejs-datastore/src/aggregate.ts
@@ -113,7 +113,7 @@ class AggregateQuery {
    */
   run(
     optionsOrCallback?: RunQueryOptions | RequestCallback,
-    cb?: RequestCallback
+    cb?: RequestCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
@@ -233,7 +233,7 @@ abstract class PropertyAggregateField extends AggregateField {
     return Object.assign(
       {operator: this.operator},
       this.alias_ ? {alias: this.alias_} : null,
-      {[this.operator]: aggregation}
+      {[this.operator]: aggregation},
     );
   }
 }
diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts
index c12e4ee9c9e..61ba83dd535 100644
--- a/handwritten/nodejs-datastore/src/entity.ts
+++ b/handwritten/nodejs-datastore/src/entity.ts
@@ -18,7 +18,7 @@ import * as extend from 'extend';
 import * as is from 'is';
 import {Query, QueryProto, IntegerTypeCastOptions} from './query';
 import {PathType} from '.';
-import {protobuf as Protobuf} from 'google-gax';
+import * as Protobuf from 'protobufjs';
 import * as path from 'path';
 import {google} from '../protos/protos';
 import {and, PropertyFilter} from './filter';
@@ -136,7 +136,7 @@ export namespace entity {
     private _entityPropertyName: string | undefined;
     constructor(
       value: number | string | ValueProto,
-      typeCastOptions?: IntegerTypeCastOptions
+      typeCastOptions?: IntegerTypeCastOptions,
     ) {
       super(typeof value === 'object' ? value.integerValue : value);
       this._entityPropertyName =
@@ -158,7 +158,7 @@ export namespace entity {
         this.typeCastFunction = typeCastOptions.integerTypeCastFunction;
         if (typeof typeCastOptions.integerTypeCastFunction !== 'function') {
           throw new Error(
-            'integerTypeCastFunction is not a function or was not provided.'
+            'integerTypeCastFunction is not a function or was not provided.',
           );
         }
 
@@ -440,7 +440,7 @@ export namespace entity {
 
       if (this.parent) {
         serializedKey.path = this.parent.serialized.path.concat(
-          serializedKey.path
+          serializedKey.path,
         );
       }
 
@@ -479,7 +479,7 @@ export namespace entity {
           '{\n' +
           '  integerTypeCastFunction: provide \n' +
           '  properties: optionally specify property name(s) to be custom casted\n' +
-          '}\n'
+          '}\n',
       );
     }
     return num;
@@ -527,7 +527,7 @@ export namespace entity {
    */
   export function decodeValueProto(
     valueProto: ValueProto,
-    wrapNumbers?: boolean | IntegerTypeCastOptions
+    wrapNumbers?: boolean | IntegerTypeCastOptions,
   ) {
     const valueType = valueProto.valueType!;
     const value = valueProto[valueType];
@@ -536,7 +536,7 @@ export namespace entity {
       case 'arrayValue': {
         // eslint-disable-next-line @typescript-eslint/no-explicit-any
         return value.values.map((val: any) =>
-          entity.decodeValueProto(val, wrapNumbers)
+          entity.decodeValueProto(val, wrapNumbers),
         );
       }
 
@@ -617,7 +617,7 @@ export namespace entity {
               "the value for '" +
               property +
               "' property is outside of bounds of a JavaScript Number.\n" +
-              "Use 'Datastore.int()' to preserve accuracy during the upload."
+              "Use 'Datastore.int()' to preserve accuracy during the upload.",
           );
         }
         value = new entity.Int(value);
@@ -730,7 +730,7 @@ export namespace entity {
   // eslint-disable-next-line @typescript-eslint/no-explicit-any
   export function entityFromEntityProto(
     entityProto: EntityProto,
-    wrapNumbers?: boolean | IntegerTypeCastOptions
+    wrapNumbers?: boolean | IntegerTypeCastOptions,
   ) {
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     const entityObject: any = {};
@@ -789,7 +789,7 @@ export namespace entity {
           return encoded;
         },
         // eslint-disable-next-line @typescript-eslint/no-explicit-any
-        {} as any
+        {} as any,
       ),
     };
 
@@ -808,7 +808,7 @@ export namespace entity {
    */
   export function addExcludeFromIndexes(
     excludeFromIndexes: string[] | undefined,
-    entityProto: EntityProto
+    entityProto: EntityProto,
   ): EntityProto {
     if (excludeFromIndexes && excludeFromIndexes.length > 0) {
       excludeFromIndexes.forEach((excludePath: string) => {
@@ -889,14 +889,14 @@ export namespace entity {
             // (including entity values at their roots):
             excludePathFromEntity(
               value,
-              remainderPath // === ''
+              remainderPath, // === ''
             );
           } else {
             // Path traversal continues at value.entityValue,
             // if it is an entity, or must end at value.
             excludePathFromEntity(
               value.entityValue || value,
-              remainderPath // !== ''
+              remainderPath, // !== ''
             );
           }
         });
@@ -977,7 +977,7 @@ export namespace entity {
    */
   export function formatArray(
     results: ResponseResult[],
-    wrapNumbers?: boolean | IntegerTypeCastOptions
+    wrapNumbers?: boolean | IntegerTypeCastOptions,
   ) {
     return results.map(result => {
       const ent = entity.entityFromEntityProto(result.entity!, wrapNumbers);
@@ -998,7 +998,7 @@ export namespace entity {
   export function findLargeProperties_(
     entities: Entities,
     path: string,
-    properties: string[] = []
+    properties: string[] = [],
   ) {
     const MAX_DATASTORE_VALUE_LENGTH = 1500;
     if (Array.isArray(entities)) {
@@ -1011,7 +1011,7 @@ export namespace entity {
         findLargeProperties_(
           entities[key],
           path.concat(`${path ? '.' : ''}${key}`),
-          properties
+          properties,
         );
       }
     } else if (
@@ -1259,7 +1259,7 @@ export namespace entity {
     if (query.filters.length > 0 || query.entityFilters.length > 0) {
       // Convert all legacy filters into new property filter objects
       const filters = query.filters.map(
-        filter => new PropertyFilter(filter.name, filter.op, filter.val)
+        filter => new PropertyFilter(filter.name, filter.op, filter.val),
       );
       const entityFilters = query.entityFilters;
       const allFilters = entityFilters.concat(filters);
@@ -1299,7 +1299,7 @@ export namespace entity {
     loadProtos_() {
       const root = new Protobuf.Root();
       const loadedRoot = root.loadSync(
-        path.join(__dirname, '..', 'protos', 'app_engine_key.proto')
+        path.join(__dirname, '..', 'protos', 'app_engine_key.proto'),
       );
       loadedRoot.resolveAll();
       return loadedRoot.nested;
@@ -1321,7 +1321,7 @@ export namespace entity {
     legacyEncode(
       projectId: string,
       key: entity.Key,
-      locationPrefix?: string
+      locationPrefix?: string,
     ): string {
       const elements: {}[] = [];
       let currentKey = key;
diff --git a/handwritten/nodejs-datastore/src/filter.ts b/handwritten/nodejs-datastore/src/filter.ts
index d062fb2e325..f59ba2c6e69 100644
--- a/handwritten/nodejs-datastore/src/filter.ts
+++ b/handwritten/nodejs-datastore/src/filter.ts
@@ -100,7 +100,7 @@ export class PropertyFilter
   constructor(
     public name: T,
     public op: Operator,
-    public val: AllowedFilterValueType
+    public val: AllowedFilterValueType,
   ) {
     super();
   }
diff --git a/handwritten/nodejs-datastore/src/index-class.ts b/handwritten/nodejs-datastore/src/index-class.ts
index 64decbed444..49027c9907d 100644
--- a/handwritten/nodejs-datastore/src/index-class.ts
+++ b/handwritten/nodejs-datastore/src/index-class.ts
@@ -22,7 +22,7 @@ export interface GenericIndexCallback {
   (
     err?: ServiceError | null,
     index?: Index | null,
-    apiResponse?: T | null
+    apiResponse?: T | null,
   ): void;
 }
 
@@ -31,7 +31,7 @@ export type GetIndexResponse = [Index, IIndex];
 
 export type IndexGetMetadataCallback = (
   err?: ServiceError | null,
-  metadata?: IIndex | null
+  metadata?: IIndex | null,
 ) => void;
 export type IndexGetMetadataResponse = [IIndex];
 
@@ -51,7 +51,7 @@ export type GetIndexesCallback = (
   err?: ServiceError | null,
   indexes?: Index[],
   nextQuery?: GetIndexesOptions,
-  apiResponse?: google.datastore.admin.v1.IListIndexesResponse
+  apiResponse?: google.datastore.admin.v1.IListIndexesResponse,
 ) => void;
 
 export type IIndex = google.datastore.admin.v1.IIndex;
@@ -93,7 +93,7 @@ export class Index {
   get(gaxOptions: CallOptions, callback: GetIndexCallback): void;
   get(
     gaxOptionsOrCallback?: CallOptions | GetIndexCallback,
-    cb?: GetIndexCallback
+    cb?: GetIndexCallback,
   ): void | Promise {
     const gaxOpts =
       typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {};
@@ -118,11 +118,11 @@ export class Index {
   getMetadata(callback: IndexGetMetadataCallback): void;
   getMetadata(
     gaxOptions: CallOptions,
-    callback: IndexGetMetadataCallback
+    callback: IndexGetMetadataCallback,
   ): void;
   getMetadata(
     gaxOptionsOrCallback?: CallOptions | IndexGetMetadataCallback,
-    cb?: IndexGetMetadataCallback
+    cb?: IndexGetMetadataCallback,
   ): void | Promise {
     const gaxOpts =
       typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {};
@@ -143,7 +143,7 @@ export class Index {
           this.metadata = resp;
         }
         callback(err as ServiceError, resp);
-      }
+      },
     );
   }
 
diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts
index 20cad99c463..43ea58ad858 100644
--- a/handwritten/nodejs-datastore/src/index.ts
+++ b/handwritten/nodejs-datastore/src/index.ts
@@ -96,7 +96,7 @@ export interface LongRunningCallback {
   (
     err: ServiceError | null,
     operation?: Operation,
-    apiResponse?: google.longrunning.IOperation
+    apiResponse?: google.longrunning.IOperation,
   ): void;
 }
 export type LongRunningResponse = [Operation, google.longrunning.IOperation];
@@ -496,7 +496,7 @@ class Datastore extends DatastoreRequest {
       new Set([
         ...gapic.v1.DatastoreClient.scopes,
         ...gapic.v1.DatastoreAdminClient.scopes,
-      ])
+      ]),
     );
 
     this.options = Object.assign(
@@ -507,7 +507,7 @@ class Datastore extends DatastoreRequest {
         servicePath: this.baseUrl_,
         port: typeof this.port_ === 'number' ? this.port_ : 443,
       },
-      options
+      options,
     );
     const isUsingLocalhost =
       this.baseUrl_ &&
@@ -552,7 +552,7 @@ class Datastore extends DatastoreRequest {
   export(config: ExportEntitiesConfig, callback: LongRunningCallback): void;
   export(
     config: ExportEntitiesConfig,
-    callback?: LongRunningCallback
+    callback?: LongRunningCallback,
   ): void | Promise {
     const reqOpts: ExportEntitiesConfig = {
       entityFilter: {},
@@ -600,7 +600,7 @@ class Datastore extends DatastoreRequest {
         gaxOpts: config.gaxOptions,
       },
       // eslint-disable-next-line @typescript-eslint/no-explicit-any
-      callback as any
+      callback as any,
     );
   }
 
@@ -622,7 +622,7 @@ class Datastore extends DatastoreRequest {
   getIndexes(callback: GetIndexesCallback): void;
   getIndexes(
     optionsOrCallback?: GetIndexesOptions | GetIndexesCallback,
-    cb?: GetIndexesCallback
+    cb?: GetIndexesCallback,
   ): void | Promise {
     let options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
@@ -674,7 +674,7 @@ class Datastore extends DatastoreRequest {
         const apiResp: google.datastore.admin.v1.IListIndexesResponse = resp[2];
 
         callback(err as ServiceError, indexes, nextQuery, apiResp);
-      }
+      },
     );
   }
 
@@ -702,7 +702,7 @@ class Datastore extends DatastoreRequest {
           next(null, indexInstance);
         },
       }),
-      () => {}
+      () => {},
     );
   }
 
@@ -740,7 +740,7 @@ class Datastore extends DatastoreRequest {
   import(config: ImportEntitiesConfig, callback: LongRunningCallback): void;
   import(
     config: ImportEntitiesConfig,
-    callback?: LongRunningCallback
+    callback?: LongRunningCallback,
   ): void | Promise {
     const reqOpts: ImportEntitiesConfig = {
       entityFilter: {},
@@ -788,7 +788,7 @@ class Datastore extends DatastoreRequest {
         gaxOpts: config.gaxOptions,
       },
       // eslint-disable-next-line @typescript-eslint/no-explicit-any
-      callback as any
+      callback as any,
     );
   }
 
@@ -820,7 +820,7 @@ class Datastore extends DatastoreRequest {
   insert(entities: Entities, callback: InsertCallback): void;
   insert(
     entities: Entities,
-    callback?: InsertCallback
+    callback?: InsertCallback,
   ): void | Promise {
     entities = arrify(entities)
       .map(DatastoreRequest.prepareEntityObject_)
@@ -1071,13 +1071,13 @@ class Datastore extends DatastoreRequest {
   save(
     entities: Entities,
     gaxOptions: CallOptions,
-    callback: SaveCallback
+    callback: SaveCallback,
   ): void;
   save(entities: Entities, callback: SaveCallback): void;
   save(
     entities: Entities,
     gaxOptionsOrCallback?: CallOptions | SaveCallback,
-    cb?: SaveCallback
+    cb?: SaveCallback,
   ): void | Promise {
     entities = arrify(entities) as SaveEntity[];
     const gaxOptions =
@@ -1106,7 +1106,7 @@ class Datastore extends DatastoreRequest {
             method = entityObject.method;
           } else {
             throw new Error(
-              'Method ' + entityObject.method + ' not recognized.'
+              'Method ' + entityObject.method + ' not recognized.',
             );
           }
         }
@@ -1130,7 +1130,7 @@ class Datastore extends DatastoreRequest {
 
     function onCommit(
       err?: Error | null,
-      resp?: google.datastore.v1.ICommitResponse
+      resp?: google.datastore.v1.ICommitResponse,
     ) {
       if (err || !resp) {
         callback(err, resp);
@@ -1163,7 +1163,7 @@ class Datastore extends DatastoreRequest {
         reqOpts,
         gaxOpts: gaxOptions,
       },
-      onCommit
+      onCommit,
     );
   }
 
@@ -1185,7 +1185,7 @@ class Datastore extends DatastoreRequest {
   update(entities: Entities, callback: UpdateCallback): void;
   update(
     entities: Entities,
-    callback?: UpdateCallback
+    callback?: UpdateCallback,
   ): void | Promise {
     entities = arrify(entities)
       .map(DatastoreRequest.prepareEntityObject_)
@@ -1215,7 +1215,7 @@ class Datastore extends DatastoreRequest {
   upsert(entities: Entities, callback: UpsertCallback): void;
   upsert(
     entities: Entities,
-    callback?: UpsertCallback
+    callback?: UpsertCallback,
   ): void | Promise {
     entities = arrify(entities)
       .map(DatastoreRequest.prepareEntityObject_)
@@ -1509,7 +1509,7 @@ class Datastore extends DatastoreRequest {
   createQuery(namespace: string, kind: string[]): Query;
   createQuery(
     namespaceOrKind?: string | string[],
-    kind?: string | string[]
+    kind?: string | string[],
   ): Query {
     let namespace = namespaceOrKind as string;
     if (!kind) {
@@ -1688,17 +1688,17 @@ class Datastore extends DatastoreRequest {
   keyToLegacyUrlSafe(key: entity.Key, locationPrefix?: string): Promise;
   keyToLegacyUrlSafe(
     key: entity.Key,
-    callback: KeyToLegacyUrlSafeCallback
+    callback: KeyToLegacyUrlSafeCallback,
   ): void;
   keyToLegacyUrlSafe(
     key: entity.Key,
     locationPrefix: string,
-    callback: KeyToLegacyUrlSafeCallback
+    callback: KeyToLegacyUrlSafeCallback,
   ): void;
   keyToLegacyUrlSafe(
     key: entity.Key,
     locationPrefixOrCallback?: string | KeyToLegacyUrlSafeCallback,
-    callback?: KeyToLegacyUrlSafeCallback
+    callback?: KeyToLegacyUrlSafeCallback,
   ): Promise | void {
     const locationPrefix =
       typeof locationPrefixOrCallback === 'string'
diff --git a/handwritten/nodejs-datastore/src/query.ts b/handwritten/nodejs-datastore/src/query.ts
index 557ae12a71a..86ff6ff45fc 100644
--- a/handwritten/nodejs-datastore/src/query.ts
+++ b/handwritten/nodejs-datastore/src/query.ts
@@ -91,12 +91,12 @@ class Query {
   constructor(
     scope?: Datastore | Transaction,
     namespace?: string | null,
-    kinds?: string[]
+    kinds?: string[],
   );
   constructor(
     scope?: Datastore | Transaction,
     namespaceOrKinds?: string | string[] | null,
-    kinds?: string[]
+    kinds?: string[],
   ) {
     let namespace = namespaceOrKinds as string | null;
     if (!kinds) {
@@ -212,22 +212,22 @@ class Query {
   filter(filter: EntityFilter): Query;
   filter(
     property: T,
-    value: AllowedFilterValueType
+    value: AllowedFilterValueType,
   ): Query;
   filter(
     property: T,
     operator: Operator,
-    value: AllowedFilterValueType
+    value: AllowedFilterValueType,
   ): Query;
   filter(
     propertyOrFilter: T | EntityFilter,
     operatorOrValue?: Operator | AllowedFilterValueType,
-    value?: AllowedFilterValueType
+    value?: AllowedFilterValueType,
   ): Query {
     if (arguments.length > 1) {
       gaxInstance.warn(
         'filter',
-        'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter'
+        'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter',
       );
     }
     switch (arguments.length) {
@@ -524,7 +524,7 @@ class Query {
   run(callback: RunQueryCallback): void;
   run(
     optionsOrCallback?: RunQueryOptions | RunQueryCallback,
-    cb?: RunQueryCallback
+    cb?: RunQueryCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts
index de04b63614c..132f9011c30 100644
--- a/handwritten/nodejs-datastore/src/request.ts
+++ b/handwritten/nodejs-datastore/src/request.ts
@@ -92,7 +92,7 @@ function decodeStruct(structValue: google.protobuf.IStruct): JSONValue {
 function getInfoFromStats(
   resp:
     | protos.google.datastore.v1.IRunQueryResponse
-    | protos.google.datastore.v1.IRunAggregationQueryResponse
+    | protos.google.datastore.v1.IRunAggregationQueryResponse,
 ): RunQueryInfo {
   // Decode struct values stored in planSummary and executionStats
   const explainMetrics: ExplainMetrics = {};
@@ -105,7 +105,7 @@ function getInfoFromStats(
     Object.assign(explainMetrics, {
       planSummary: {
         indexesUsed: resp.explainMetrics.planSummary.indexesUsed.map(
-          (index: google.protobuf.IStruct) => decodeStruct(index)
+          (index: google.protobuf.IStruct) => decodeStruct(index),
         ),
       },
     });
@@ -329,17 +329,17 @@ class DatastoreRequest {
    */
   allocateIds(
     key: entity.Key,
-    options: AllocateIdsOptions | number
+    options: AllocateIdsOptions | number,
   ): Promise;
   allocateIds(
     key: entity.Key,
     options: AllocateIdsOptions | number,
-    callback: AllocateIdsCallback
+    callback: AllocateIdsCallback,
   ): void;
   allocateIds(
     key: entity.Key,
     options: AllocateIdsOptions | number,
-    callback?: AllocateIdsCallback
+    callback?: AllocateIdsCallback,
   ): void | Promise {
     if (entity.isKeyComplete(key)) {
       throw new Error('An incomplete key should be provided.');
@@ -362,7 +362,7 @@ class DatastoreRequest {
         }
         const keys = arrify(resp!.keys!).map(entity.keyFromKeyProto);
         callback!(null, keys, resp!);
-      }
+      },
     );
   }
 
@@ -404,7 +404,7 @@ class DatastoreRequest {
    */
   createReadStream(
     keys: Entities,
-    options: CreateReadStreamOptions = {}
+    options: CreateReadStreamOptions = {},
   ): Transform {
     keys = arrify(keys).map(entity.keyToKeyProto);
     if (keys.length === 0) {
@@ -435,7 +435,7 @@ class DatastoreRequest {
           try {
             entities = entity.formatArray(
               resp!.found! as ResponseResult[],
-              options.wrapNumbers
+              options.wrapNumbers,
             );
           } catch (err) {
             stream.destroy(err);
@@ -445,19 +445,23 @@ class DatastoreRequest {
             .map(entity.keyFromKeyProto)
             .map(entity.keyToKeyProto);
 
-          split(entities, stream).then(streamEnded => {
-            if (streamEnded) {
-              return;
-            }
-
-            if (nextKeys.length > 0) {
-              makeRequest(nextKeys);
-              return;
-            }
-
-            stream.push(null);
-          });
-        }
+          split(entities, stream)
+            .then(streamEnded => {
+              if (streamEnded) {
+                return;
+              }
+
+              if (nextKeys.length > 0) {
+                makeRequest(nextKeys);
+                return;
+              }
+
+              stream.push(null);
+            })
+            .catch(err => {
+              throw err;
+            });
+        },
       );
     };
 
@@ -523,12 +527,12 @@ class DatastoreRequest {
   delete(
     keys: Entities,
     gaxOptions: CallOptions,
-    callback: DeleteCallback
+    callback: DeleteCallback,
   ): void;
   delete(
     keys: entity.Key | entity.Key[],
     gaxOptionsOrCallback?: CallOptions | DeleteCallback,
-    cb?: DeleteCallback
+    cb?: DeleteCallback,
   ): void | Promise {
     const gaxOptions =
       typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {};
@@ -556,7 +560,7 @@ class DatastoreRequest {
         reqOpts,
         gaxOpts: gaxOptions,
       },
-      callback
+      callback,
     );
   }
 
@@ -655,18 +659,18 @@ class DatastoreRequest {
    */
   get(
     keys: entity.Key | entity.Key[],
-    options?: CreateReadStreamOptions
+    options?: CreateReadStreamOptions,
   ): Promise;
   get(keys: entity.Key | entity.Key[], callback: GetCallback): void;
   get(
     keys: entity.Key | entity.Key[],
     options: CreateReadStreamOptions,
-    callback: GetCallback
+    callback: GetCallback,
   ): void;
   get(
     keys: entity.Key | entity.Key[],
     optionsOrCallback?: CreateReadStreamOptions | GetCallback,
-    cb?: GetCallback
+    cb?: GetCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' && optionsOrCallback
@@ -682,7 +686,7 @@ class DatastoreRequest {
           concat((results: Entity[]) => {
             const isSingleLookup = !Array.isArray(keys);
             callback(null, isSingleLookup ? results[0] : results);
-          })
+          }),
         );
     } catch (err: any) {
       callback(err);
@@ -722,21 +726,21 @@ class DatastoreRequest {
    **/
   runAggregationQuery(
     query: AggregateQuery,
-    options?: RunQueryOptions
+    options?: RunQueryOptions,
   ): Promise;
   runAggregationQuery(
     query: AggregateQuery,
     options: RunQueryOptions,
-    callback: RunAggregationQueryCallback
+    callback: RunAggregationQueryCallback,
   ): void;
   runAggregationQuery(
     query: AggregateQuery,
-    callback: RunAggregationQueryCallback
+    callback: RunAggregationQueryCallback,
   ): void;
   runAggregationQuery(
     query: AggregateQuery,
     optionsOrCallback?: RunQueryOptions | RunAggregationQueryCallback,
-    cb?: RequestCallback
+    cb?: RequestCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
@@ -790,7 +794,7 @@ class DatastoreRequest {
           const results = res.batch.aggregationResults;
           const finalResults = results
             .map(
-              (aggregationResult: any) => aggregationResult.aggregateProperties
+              (aggregationResult: any) => aggregationResult.aggregateProperties,
             )
             .map((aggregateProperties: any) =>
               Object.fromEntries(
@@ -798,15 +802,15 @@ class DatastoreRequest {
                   Object.keys(aggregateProperties).map(key => [
                     key,
                     entity.decodeValueProto(aggregateProperties[key]),
-                  ])
-                )
-              )
+                  ]),
+                ),
+              ),
             );
           callback(err, finalResults, info);
         } else {
           callback(err, [], info);
         }
-      }
+      },
     );
   }
 
@@ -913,13 +917,13 @@ class DatastoreRequest {
   runQuery(
     query: Query,
     options: RunQueryOptions,
-    callback: RunQueryCallback
+    callback: RunQueryCallback,
   ): void;
   runQuery(query: Query, callback: RunQueryCallback): void;
   runQuery(
     query: Query,
     optionsOrCallback?: RunQueryOptions | RunQueryCallback,
-    cb?: RunQueryCallback
+    cb?: RunQueryCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
@@ -937,7 +941,7 @@ class DatastoreRequest {
         .pipe(
           concat((results: Entity[]) => {
             callback(null, results, info);
-          })
+          }),
         );
     } catch (err: any) {
       callback(err);
@@ -1005,7 +1009,7 @@ class DatastoreRequest {
           reqOpts,
           gaxOpts: options.gaxOptions,
         },
-        onResultSet
+        onResultSet,
       );
     };
 
@@ -1037,7 +1041,7 @@ class DatastoreRequest {
         try {
           entities = entity.formatArray(
             resp.batch.entityResults,
-            options.wrapNumbers
+            options.wrapNumbers,
           );
         } catch (err) {
           stream.destroy(err);
@@ -1046,29 +1050,35 @@ class DatastoreRequest {
       }
 
       // Emit each result right away, then get the rest if necessary.
-      split(entities, stream).then(streamEnded => {
-        if (streamEnded) {
-          return;
-        }
+      split(entities, stream)
+        .then(streamEnded => {
+          if (streamEnded) {
+            return;
+          }
 
-        if (resp.batch.moreResults !== 'NOT_FINISHED') {
-          stream.emit('info', info);
-          stream.push(null);
-          return;
-        }
+          if (resp.batch.moreResults !== 'NOT_FINISHED') {
+            stream.emit('info', info);
+            stream.push(null);
+            return;
+          }
 
-        // The query is "NOT_FINISHED". Get the rest of the results.
-        const offset = query.offsetVal === -1 ? 0 : query.offsetVal;
+          // The query is "NOT_FINISHED". Get the rest of the results.
+          const offset = query.offsetVal === -1 ? 0 : query.offsetVal;
 
-        query.start(info.endCursor!).offset(offset - resp.batch.skippedResults);
+          query
+            .start(info.endCursor!)
+            .offset(offset - resp.batch.skippedResults);
 
-        const limit = query.limitVal;
-        if (limit && limit > -1) {
-          query.limit(limit - resp.batch.entityResults.length);
-        }
+          const limit = query.limitVal;
+          if (limit && limit > -1) {
+            query.limit(limit - resp.batch.entityResults.length);
+          }
 
-        makeRequest(query);
-      });
+          makeRequest(query);
+        })
+        .catch(err => {
+          throw err;
+        });
     };
 
     const stream = streamEvents(new Transform({objectMode: true}));
@@ -1084,7 +1094,7 @@ class DatastoreRequest {
    * @param {RunQueryStreamOptions} [options] The RunQueryStream options configuration
    */
   private getRequestOptions(
-    options: RunQueryStreamOptions
+    options: RunQueryStreamOptions,
   ): SharedQueryOptions {
     const sharedQueryOpts = {} as SharedQueryOptions;
     if (isTransaction(this)) {
@@ -1094,7 +1104,7 @@ class DatastoreRequest {
         }
         sharedQueryOpts.readOptions.newTransaction = getTransactionRequest(
           this,
-          {}
+          {},
         );
         sharedQueryOpts.readOptions.consistencyType = 'newTransaction';
       }
@@ -1127,7 +1137,7 @@ class DatastoreRequest {
    */
   private getQueryOptions(
     query: Query,
-    options: RunQueryStreamOptions = {}
+    options: RunQueryStreamOptions = {},
   ): SharedQueryOptions {
     const sharedQueryOpts = this.getRequestOptions(options);
     if (options.explainOptions) {
@@ -1168,7 +1178,7 @@ class DatastoreRequest {
   merge(entities: Entities, callback: SaveCallback): void;
   merge(
     entities: Entities,
-    callback?: SaveCallback
+    callback?: SaveCallback,
   ): void | Promise {
     const transaction = this.datastore.transaction();
     transaction.run(async (err: any) => {
@@ -1192,7 +1202,7 @@ class DatastoreRequest {
             obj.method = 'upsert';
             obj.data = Object.assign({}, data, obj.data);
             transaction.save(obj);
-          })
+          }),
         );
 
         const [response] = await transaction.commit();
@@ -1267,7 +1277,7 @@ class DatastoreRequest {
       if (!datastore.clients_.has(clientName)) {
         datastore.clients_.set(
           clientName,
-          new gapic.v1[clientName](datastore.options)
+          new gapic.v1[clientName](datastore.options),
         );
       }
       const gaxClient = datastore.clients_.get(clientName);
@@ -1363,7 +1373,7 @@ function isTransaction(request: DatastoreRequest): request is Transaction {
  */
 function throwOnTransactionErrors(
   request: DatastoreRequest,
-  options: SharedQueryOptions
+  options: SharedQueryOptions,
 ) {
   const isTransaction = request.id ? true : false;
   if (
@@ -1388,7 +1398,7 @@ function throwOnTransactionErrors(
  */
 export function getTransactionRequest(
   transaction: Transaction,
-  options: RunOptions
+  options: RunOptions,
 ): TransactionRequestOptions {
   // If transactionOptions are provide then they will be used.
   // Otherwise, options passed into this function are used and when absent
@@ -1422,7 +1432,7 @@ export interface AllocateIdsCallback {
   (
     a: Error | null,
     b: entity.Key[] | null,
-    c: google.datastore.v1.IAllocateIdsResponse
+    c: google.datastore.v1.IAllocateIdsResponse,
   ): void;
 }
 export interface AllocateIdsOptions {
@@ -1451,7 +1461,7 @@ export interface RequestCallback {
   (
     a?: Error | null,
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
-    b?: any
+    b?: any,
   ): void;
 }
 export interface RunAggregationQueryCallback {
@@ -1459,7 +1469,7 @@ export interface RunAggregationQueryCallback {
     a?: Error | null,
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     b?: any,
-    c?: RunQueryInfo
+    c?: RunQueryInfo,
   ): void;
 }
 export interface RequestConfig {
diff --git a/handwritten/nodejs-datastore/src/transaction.ts b/handwritten/nodejs-datastore/src/transaction.ts
index 57a0a3a65b4..2525b0090ba 100644
--- a/handwritten/nodejs-datastore/src/transaction.ts
+++ b/handwritten/nodejs-datastore/src/transaction.ts
@@ -171,7 +171,7 @@ class Transaction extends DatastoreRequest {
   commit(gaxOptions: CallOptions, callback: CommitCallback): void;
   commit(
     gaxOptionsOrCallback?: CallOptions | CommitCallback,
-    cb?: CommitCallback
+    cb?: CommitCallback,
   ): void | Promise {
     const callback =
       typeof gaxOptionsOrCallback === 'function'
@@ -189,9 +189,9 @@ class Transaction extends DatastoreRequest {
     this.#withBeginTransaction(
       gaxOptions,
       () => {
-        this.#runCommit(gaxOptions, callback);
+        void this.#runCommit(gaxOptions, callback);
       },
-      callback
+      callback,
     );
   }
 
@@ -266,12 +266,12 @@ class Transaction extends DatastoreRequest {
   createQuery(namespace: string, kind: string[]): Query;
   createQuery(
     namespaceOrKind?: string | string[],
-    kind?: string | string[]
+    kind?: string | string[],
   ): Query {
     return this.datastore.createQuery.call(
       this,
       namespaceOrKind as string,
-      kind as string[]
+      kind as string[],
     );
   }
 
@@ -344,18 +344,18 @@ class Transaction extends DatastoreRequest {
    */
   get(
     keys: entity.Key | entity.Key[],
-    options?: CreateReadStreamOptions
+    options?: CreateReadStreamOptions,
   ): Promise;
   get(keys: entity.Key | entity.Key[], callback: GetCallback): void;
   get(
     keys: entity.Key | entity.Key[],
     options: CreateReadStreamOptions,
-    callback: GetCallback
+    callback: GetCallback,
   ): void;
   get(
     keys: entity.Key | entity.Key[],
     optionsOrCallback?: CreateReadStreamOptions | GetCallback,
-    cb?: GetCallback
+    cb?: GetCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' && optionsOrCallback
@@ -432,7 +432,7 @@ class Transaction extends DatastoreRequest {
   rollback(gaxOptions: CallOptions, callback: RollbackCallback): void;
   rollback(
     gaxOptionsOrCallback?: CallOptions | RollbackCallback,
-    cb?: RollbackCallback
+    cb?: RollbackCallback,
   ): void | Promise {
     const gaxOptions =
       typeof gaxOptionsOrCallback === 'object' ? gaxOptionsOrCallback : {};
@@ -457,7 +457,7 @@ class Transaction extends DatastoreRequest {
         this.skipCommit = true;
         this.state = TransactionState.EXPIRED;
         callback(err || null, resp);
-      }
+      },
     );
   }
 
@@ -518,19 +518,19 @@ class Transaction extends DatastoreRequest {
   run(options: RunOptions, callback: RunCallback): void;
   run(
     optionsOrCallback?: RunOptions | RunCallback,
-    cb?: RunCallback
+    cb?: RunCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' ? optionsOrCallback : {};
     const callback =
       typeof optionsOrCallback === 'function' ? optionsOrCallback : cb!;
-    this.#mutex.runExclusive(async () => {
+    void this.#mutex.runExclusive(async () => {
       if (this.state === TransactionState.NOT_STARTED) {
         const runResults = await this.#beginTransactionAsync(options);
         this.#processBeginResults(runResults, callback);
       } else {
         process.emitWarning(
-          'run has already been called and should not be called again.'
+          'run has already been called and should not be called again.',
         );
         callback(null, this, {transaction: this.id});
       }
@@ -548,7 +548,7 @@ class Transaction extends DatastoreRequest {
    */
   #runCommit(
     gaxOptions: CallOptions,
-    callback: CommitCallback
+    callback: CommitCallback,
   ): void | Promise {
     if (this.skipCommit) {
       setImmediate(callback);
@@ -600,7 +600,7 @@ class Transaction extends DatastoreRequest {
           acc.push(entityObject);
         } else {
           lastEntityObject.args = lastEntityObject.args.concat(
-            entityObject.args
+            entityObject.args,
           );
         }
 
@@ -616,7 +616,7 @@ class Transaction extends DatastoreRequest {
           const method = modifiedEntity.method;
           const args = modifiedEntity.args.reverse();
           Datastore.prototype[method].call(this, args, () => {});
-        }
+        },
       );
 
     // Take the `req` array built previously, and merge them into one request to
@@ -626,7 +626,7 @@ class Transaction extends DatastoreRequest {
         .map((x: {mutations: google.datastore.v1.Mutation}) => x.mutations)
         .reduce(
           (a: {concat: (arg0: Entity) => void}, b: Entity) => a.concat(b),
-          []
+          [],
         ),
     };
 
@@ -656,10 +656,10 @@ class Transaction extends DatastoreRequest {
         this.requestCallbacks_.forEach(
           (cb: (arg0: null, arg1: Entity) => void) => {
             cb(null, resp);
-          }
+          },
         );
         callback(null, resp);
-      }
+      },
     );
   }
 
@@ -674,7 +674,7 @@ class Transaction extends DatastoreRequest {
    **/
   #processBeginResults(
     runResults: BeginAsyncResponse,
-    callback: RunCallback
+    callback: RunCallback,
   ): void {
     const err = runResults.err;
     const resp = runResults.resp;
@@ -696,7 +696,7 @@ class Transaction extends DatastoreRequest {
    *
    **/
   async #beginTransactionAsync(
-    options: RunOptions
+    options: RunOptions,
   ): Promise {
     return new Promise((resolve: (value: BeginAsyncResponse) => void) => {
       const reqOpts = {
@@ -715,7 +715,7 @@ class Transaction extends DatastoreRequest {
             err,
             resp,
           });
-        }
+        },
       );
     });
   }
@@ -734,18 +734,18 @@ class Transaction extends DatastoreRequest {
    **/
   runAggregationQuery(
     query: AggregateQuery,
-    options?: RunQueryOptions
+    options?: RunQueryOptions,
   ): Promise;
   runAggregationQuery(
     query: AggregateQuery,
     options: RunQueryOptions,
-    callback: RequestCallback
+    callback: RequestCallback,
   ): void;
   runAggregationQuery(query: AggregateQuery, callback: RequestCallback): void;
   runAggregationQuery(
     query: AggregateQuery,
     optionsOrCallback?: RunQueryOptions | RequestCallback,
-    cb?: RequestCallback
+    cb?: RequestCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' && optionsOrCallback
@@ -774,13 +774,13 @@ class Transaction extends DatastoreRequest {
   runQuery(
     query: Query,
     options: RunQueryOptions,
-    callback: RunQueryCallback
+    callback: RunQueryCallback,
   ): void;
   runQuery(query: Query, callback: RunQueryCallback): void;
   runQuery(
     query: Query,
     optionsOrCallback?: RunQueryOptions | RunQueryCallback,
-    cb?: RunQueryCallback
+    cb?: RunQueryCallback,
   ): void | Promise {
     const options =
       typeof optionsOrCallback === 'object' && optionsOrCallback
@@ -1008,7 +1008,7 @@ class Transaction extends DatastoreRequest {
   #withBeginTransaction(
     gaxOptions: CallOptions | undefined,
     fn: () => void,
-    callback: (...args: [Error | null, ...T] | [Error | null]) => void
+    callback: (...args: [Error | null, ...T] | [Error | null]) => void,
   ): void {
     (async () => {
       if (this.state === TransactionState.NOT_STARTED) {
@@ -1035,7 +1035,9 @@ class Transaction extends DatastoreRequest {
         }
       }
       return fn();
-    })();
+    })().catch(err => {
+      throw err;
+    });
   }
 
   /*
@@ -1060,7 +1062,9 @@ class Transaction extends DatastoreRequest {
       } else {
         fn();
       }
-    })();
+    })().catch(err => {
+      throw err;
+    });
   }
 }
 
@@ -1077,7 +1081,7 @@ export interface RunCallback {
   (
     error: Error | null,
     transaction: Transaction | null,
-    response?: google.datastore.v1.IBeginTransactionResponse
+    response?: google.datastore.v1.IBeginTransactionResponse,
   ): void;
 }
 export interface RollbackCallback {
diff --git a/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts b/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
index a4bbe80bd19..a334d8b47ba 100644
--- a/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
+++ b/handwritten/nodejs-datastore/src/utils/entity/buildEntityProto.ts
@@ -48,7 +48,7 @@ export function buildEntityProto(entityObject: Entity) {
 
         return acc;
       },
-      {}
+      {},
     );
     // This code adds excludeFromIndexes in the right places
     addExcludeFromIndexes(entityObject.excludeFromIndexes, entityProto);
diff --git a/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts b/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
index bca29fa5b35..3f3787f9e42 100644
--- a/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
+++ b/handwritten/nodejs-datastore/src/utils/entity/extendExcludeFromIndexes.ts
@@ -37,15 +37,15 @@ export function extendExcludeFromIndexes(entityObject: Entity) {
           entityObject.excludeFromIndexes = entity.findLargeProperties_(
             data.value,
             data.name.toString(),
-            entityObject.excludeFromIndexes
+            entityObject.excludeFromIndexes,
           );
-        }
+        },
       );
     } else {
       entityObject.excludeFromIndexes = entity.findLargeProperties_(
         entityObject.data,
         '',
-        entityObject.excludeFromIndexes
+        entityObject.excludeFromIndexes,
       );
     }
   }
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts
index 66b3108155d..1156724c081 100644
--- a/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts
+++ b/handwritten/nodejs-datastore/src/v1/datastore_admin_client.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -31,6 +31,7 @@ import type {
 import {Transform} from 'stream';
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
+import {loggingUtils as logging} from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -101,6 +102,8 @@ export class DatastoreAdminClient {
   private _defaults: {[method: string]: gax.CallSettings};
   private _universeDomain: string;
   private _servicePath: string;
+  private _log = logging.log('datastore-admin');
+
   auth: gax.GoogleAuth;
   descriptors: Descriptors = {
     page: {},
@@ -135,7 +138,7 @@ export class DatastoreAdminClient {
    *     Developer's Console, e.g. 'grape-spaceship-123'. We will also check
    *     the environment variable GCLOUD_PROJECT for your project ID. If your
    *     app is running in an environment which supports
-   *     {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials},
+   *     {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials},
    *     your project ID will be detected automatically.
    * @param {string} [options.apiEndpoint] - The domain name of the
    *     API remote host.
@@ -154,7 +157,7 @@ export class DatastoreAdminClient {
    */
   constructor(
     opts?: ClientOptions,
-    gaxInstance?: typeof gax | typeof gax.fallback
+    gaxInstance?: typeof gax | typeof gax.fallback,
   ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof DatastoreAdminClient;
@@ -164,7 +167,7 @@ export class DatastoreAdminClient {
       opts?.universe_domain !== opts?.universeDomain
     ) {
       throw new Error(
-        'Please set either universe_domain or universeDomain, but not both.'
+        'Please set either universe_domain or universeDomain, but not both.',
       );
     }
     const universeDomainEnvVar =
@@ -250,7 +253,7 @@ export class DatastoreAdminClient {
       listIndexes: new this._gaxModule.PageDescriptor(
         'pageToken',
         'nextPageToken',
-        'indexes'
+        'indexes',
       ),
     };
 
@@ -287,50 +290,50 @@ export class DatastoreAdminClient {
       .lro(lroOptions)
       .operationsClient(opts);
     const exportEntitiesResponse = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.ExportEntitiesResponse'
+      '.google.datastore.admin.v1.ExportEntitiesResponse',
     ) as gax.protobuf.Type;
     const exportEntitiesMetadata = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.ExportEntitiesMetadata'
+      '.google.datastore.admin.v1.ExportEntitiesMetadata',
     ) as gax.protobuf.Type;
     const importEntitiesResponse = protoFilesRoot.lookup(
-      '.google.protobuf.Empty'
+      '.google.protobuf.Empty',
     ) as gax.protobuf.Type;
     const importEntitiesMetadata = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.ImportEntitiesMetadata'
+      '.google.datastore.admin.v1.ImportEntitiesMetadata',
     ) as gax.protobuf.Type;
     const createIndexResponse = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.Index'
+      '.google.datastore.admin.v1.Index',
     ) as gax.protobuf.Type;
     const createIndexMetadata = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.IndexOperationMetadata'
+      '.google.datastore.admin.v1.IndexOperationMetadata',
     ) as gax.protobuf.Type;
     const deleteIndexResponse = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.Index'
+      '.google.datastore.admin.v1.Index',
     ) as gax.protobuf.Type;
     const deleteIndexMetadata = protoFilesRoot.lookup(
-      '.google.datastore.admin.v1.IndexOperationMetadata'
+      '.google.datastore.admin.v1.IndexOperationMetadata',
     ) as gax.protobuf.Type;
 
     this.descriptors.longrunning = {
       exportEntities: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         exportEntitiesResponse.decode.bind(exportEntitiesResponse),
-        exportEntitiesMetadata.decode.bind(exportEntitiesMetadata)
+        exportEntitiesMetadata.decode.bind(exportEntitiesMetadata),
       ),
       importEntities: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         importEntitiesResponse.decode.bind(importEntitiesResponse),
-        importEntitiesMetadata.decode.bind(importEntitiesMetadata)
+        importEntitiesMetadata.decode.bind(importEntitiesMetadata),
       ),
       createIndex: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         createIndexResponse.decode.bind(createIndexResponse),
-        createIndexMetadata.decode.bind(createIndexMetadata)
+        createIndexMetadata.decode.bind(createIndexMetadata),
       ),
       deleteIndex: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         deleteIndexResponse.decode.bind(deleteIndexResponse),
-        deleteIndexMetadata.decode.bind(deleteIndexMetadata)
+        deleteIndexMetadata.decode.bind(deleteIndexMetadata),
       ),
     };
 
@@ -339,7 +342,7 @@ export class DatastoreAdminClient {
       'google.datastore.admin.v1.DatastoreAdmin',
       gapicConfig as gax.ClientConfig,
       opts.clientConfig || {},
-      {'x-goog-api-client': clientHeader.join(' ')}
+      {'x-goog-api-client': clientHeader.join(' ')},
     );
 
     // Set up a dictionary of "inner API calls"; the core implementation
@@ -373,12 +376,12 @@ export class DatastoreAdminClient {
     this.datastoreAdminStub = this._gaxGrpc.createStub(
       this._opts.fallback
         ? (this._protos as protobuf.Root).lookupService(
-            'google.datastore.admin.v1.DatastoreAdmin'
+            'google.datastore.admin.v1.DatastoreAdmin',
           )
         : // eslint-disable-next-line @typescript-eslint/no-explicit-any
           (this._protos as any).google.datastore.admin.v1.DatastoreAdmin,
       this._opts,
-      this._providedCustomServicePath
+      this._providedCustomServicePath,
     ) as Promise<{[method: string]: Function}>;
 
     // Iterate over each of the methods that the service provides
@@ -403,7 +406,7 @@ export class DatastoreAdminClient {
           },
         (err: Error | null | undefined) => () => {
           throw err;
-        }
+        },
       );
 
       const descriptor =
@@ -414,7 +417,7 @@ export class DatastoreAdminClient {
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -435,7 +438,7 @@ export class DatastoreAdminClient {
     ) {
       process.emitWarning(
         'Static servicePath is deprecated, please use the instance method instead.',
-        'DeprecationWarning'
+        'DeprecationWarning',
       );
     }
     return 'datastore.googleapis.com';
@@ -453,7 +456,7 @@ export class DatastoreAdminClient {
     ) {
       process.emitWarning(
         'Static apiEndpoint is deprecated, please use the instance method instead.',
-        'DeprecationWarning'
+        'DeprecationWarning',
       );
     }
     return 'datastore.googleapis.com';
@@ -498,7 +501,7 @@ export class DatastoreAdminClient {
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
   getProjectId(
-    callback?: Callback
+    callback?: Callback,
   ): Promise | void {
     if (callback) {
       this.auth.getProjectId(callback);
@@ -530,7 +533,7 @@ export class DatastoreAdminClient {
    */
   getIndex(
     request?: protos.google.datastore.admin.v1.IGetIndexRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.admin.v1.IIndex,
@@ -545,7 +548,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IIndex,
       protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   getIndex(
     request: protos.google.datastore.admin.v1.IGetIndexRequest,
@@ -553,7 +556,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IIndex,
       protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   getIndex(
     request?: protos.google.datastore.admin.v1.IGetIndexRequest,
@@ -568,7 +571,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IIndex,
       protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.admin.v1.IIndex,
@@ -592,8 +595,34 @@ export class DatastoreAdminClient {
         project_id: request.projectId ?? '',
         index_id: request.indexId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.getIndex(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('getIndex request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.admin.v1.IIndex,
+          protos.google.datastore.admin.v1.IGetIndexRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('getIndex response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .getIndex(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.admin.v1.IIndex,
+          protos.google.datastore.admin.v1.IGetIndexRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('getIndex response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
 
   /**
@@ -646,7 +675,7 @@ export class DatastoreAdminClient {
    */
   exportEntities(
     request?: protos.google.datastore.admin.v1.IExportEntitiesRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       LROperation<
@@ -667,7 +696,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   exportEntities(
     request: protos.google.datastore.admin.v1.IExportEntitiesRequest,
@@ -678,7 +707,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   exportEntities(
     request?: protos.google.datastore.admin.v1.IExportEntitiesRequest,
@@ -699,7 +728,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       LROperation<
@@ -725,8 +754,40 @@ export class DatastoreAdminClient {
       this._gaxModule.routingHeader.fromParams({
         project_id: request.projectId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.exportEntities(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.datastore.admin.v1.IExportEntitiesResponse,
+            protos.google.datastore.admin.v1.IExportEntitiesMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, rawResponse, _) => {
+          this._log.info('exportEntities response %j', rawResponse);
+          callback!(error, response, rawResponse, _); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('exportEntities request %j', request);
+    return this.innerApiCalls
+      .exportEntities(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.datastore.admin.v1.IExportEntitiesResponse,
+            protos.google.datastore.admin.v1.IExportEntitiesMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('exportEntities response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
   /**
    * Check the status of the long running operation returned by `exportEntities()`.
@@ -740,22 +801,23 @@ export class DatastoreAdminClient {
    * region_tag:datastore_v1_generated_DatastoreAdmin_ExportEntities_async
    */
   async checkExportEntitiesProgress(
-    name: string
+    name: string,
   ): Promise<
     LROperation<
       protos.google.datastore.admin.v1.ExportEntitiesResponse,
       protos.google.datastore.admin.v1.ExportEntitiesMetadata
     >
   > {
+    this._log.info('exportEntities long-running');
     const request =
       new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
-        {name}
+        {name},
       );
     const [operation] = await this.operationsClient.getOperation(request);
     const decodeOperation = new this._gaxModule.Operation(
       operation,
       this.descriptors.longrunning.exportEntities,
-      this._gaxModule.createDefaultBackoffSettings()
+      this._gaxModule.createDefaultBackoffSettings(),
     );
     return decodeOperation as LROperation<
       protos.google.datastore.admin.v1.ExportEntitiesResponse,
@@ -808,7 +870,7 @@ export class DatastoreAdminClient {
    */
   importEntities(
     request?: protos.google.datastore.admin.v1.IImportEntitiesRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       LROperation<
@@ -829,7 +891,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   importEntities(
     request: protos.google.datastore.admin.v1.IImportEntitiesRequest,
@@ -840,7 +902,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   importEntities(
     request?: protos.google.datastore.admin.v1.IImportEntitiesRequest,
@@ -861,7 +923,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       LROperation<
@@ -887,8 +949,40 @@ export class DatastoreAdminClient {
       this._gaxModule.routingHeader.fromParams({
         project_id: request.projectId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.importEntities(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.protobuf.IEmpty,
+            protos.google.datastore.admin.v1.IImportEntitiesMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, rawResponse, _) => {
+          this._log.info('importEntities response %j', rawResponse);
+          callback!(error, response, rawResponse, _); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('importEntities request %j', request);
+    return this.innerApiCalls
+      .importEntities(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.protobuf.IEmpty,
+            protos.google.datastore.admin.v1.IImportEntitiesMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('importEntities response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
   /**
    * Check the status of the long running operation returned by `importEntities()`.
@@ -902,22 +996,23 @@ export class DatastoreAdminClient {
    * region_tag:datastore_v1_generated_DatastoreAdmin_ImportEntities_async
    */
   async checkImportEntitiesProgress(
-    name: string
+    name: string,
   ): Promise<
     LROperation<
       protos.google.protobuf.Empty,
       protos.google.datastore.admin.v1.ImportEntitiesMetadata
     >
   > {
+    this._log.info('importEntities long-running');
     const request =
       new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
-        {name}
+        {name},
       );
     const [operation] = await this.operationsClient.getOperation(request);
     const decodeOperation = new this._gaxModule.Operation(
       operation,
       this.descriptors.longrunning.importEntities,
-      this._gaxModule.createDefaultBackoffSettings()
+      this._gaxModule.createDefaultBackoffSettings(),
     );
     return decodeOperation as LROperation<
       protos.google.protobuf.Empty,
@@ -960,7 +1055,7 @@ export class DatastoreAdminClient {
    */
   createIndex(
     request?: protos.google.datastore.admin.v1.ICreateIndexRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       LROperation<
@@ -981,7 +1076,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   createIndex(
     request: protos.google.datastore.admin.v1.ICreateIndexRequest,
@@ -992,7 +1087,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   createIndex(
     request?: protos.google.datastore.admin.v1.ICreateIndexRequest,
@@ -1013,7 +1108,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       LROperation<
@@ -1039,8 +1134,40 @@ export class DatastoreAdminClient {
       this._gaxModule.routingHeader.fromParams({
         project_id: request.projectId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.createIndex(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.datastore.admin.v1.IIndex,
+            protos.google.datastore.admin.v1.IIndexOperationMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, rawResponse, _) => {
+          this._log.info('createIndex response %j', rawResponse);
+          callback!(error, response, rawResponse, _); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('createIndex request %j', request);
+    return this.innerApiCalls
+      .createIndex(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.datastore.admin.v1.IIndex,
+            protos.google.datastore.admin.v1.IIndexOperationMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('createIndex response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
   /**
    * Check the status of the long running operation returned by `createIndex()`.
@@ -1054,22 +1181,23 @@ export class DatastoreAdminClient {
    * region_tag:datastore_v1_generated_DatastoreAdmin_CreateIndex_async
    */
   async checkCreateIndexProgress(
-    name: string
+    name: string,
   ): Promise<
     LROperation<
       protos.google.datastore.admin.v1.Index,
       protos.google.datastore.admin.v1.IndexOperationMetadata
     >
   > {
+    this._log.info('createIndex long-running');
     const request =
       new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
-        {name}
+        {name},
       );
     const [operation] = await this.operationsClient.getOperation(request);
     const decodeOperation = new this._gaxModule.Operation(
       operation,
       this.descriptors.longrunning.createIndex,
-      this._gaxModule.createDefaultBackoffSettings()
+      this._gaxModule.createDefaultBackoffSettings(),
     );
     return decodeOperation as LROperation<
       protos.google.datastore.admin.v1.Index,
@@ -1108,7 +1236,7 @@ export class DatastoreAdminClient {
    */
   deleteIndex(
     request?: protos.google.datastore.admin.v1.IDeleteIndexRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       LROperation<
@@ -1129,7 +1257,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   deleteIndex(
     request: protos.google.datastore.admin.v1.IDeleteIndexRequest,
@@ -1140,7 +1268,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   deleteIndex(
     request?: protos.google.datastore.admin.v1.IDeleteIndexRequest,
@@ -1161,7 +1289,7 @@ export class DatastoreAdminClient {
       >,
       protos.google.longrunning.IOperation | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       LROperation<
@@ -1188,8 +1316,40 @@ export class DatastoreAdminClient {
         project_id: request.projectId ?? '',
         index_id: request.indexId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.deleteIndex(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.datastore.admin.v1.IIndex,
+            protos.google.datastore.admin.v1.IIndexOperationMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, rawResponse, _) => {
+          this._log.info('deleteIndex response %j', rawResponse);
+          callback!(error, response, rawResponse, _); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('deleteIndex request %j', request);
+    return this.innerApiCalls
+      .deleteIndex(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.datastore.admin.v1.IIndex,
+            protos.google.datastore.admin.v1.IIndexOperationMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteIndex response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
   /**
    * Check the status of the long running operation returned by `deleteIndex()`.
@@ -1203,22 +1363,23 @@ export class DatastoreAdminClient {
    * region_tag:datastore_v1_generated_DatastoreAdmin_DeleteIndex_async
    */
   async checkDeleteIndexProgress(
-    name: string
+    name: string,
   ): Promise<
     LROperation<
       protos.google.datastore.admin.v1.Index,
       protos.google.datastore.admin.v1.IndexOperationMetadata
     >
   > {
+    this._log.info('deleteIndex long-running');
     const request =
       new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
-        {name}
+        {name},
       );
     const [operation] = await this.operationsClient.getOperation(request);
     const decodeOperation = new this._gaxModule.Operation(
       operation,
       this.descriptors.longrunning.deleteIndex,
-      this._gaxModule.createDefaultBackoffSettings()
+      this._gaxModule.createDefaultBackoffSettings(),
     );
     return decodeOperation as LROperation<
       protos.google.datastore.admin.v1.Index,
@@ -1254,7 +1415,7 @@ export class DatastoreAdminClient {
    */
   listIndexes(
     request?: protos.google.datastore.admin.v1.IListIndexesRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.admin.v1.IIndex[],
@@ -1269,7 +1430,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IListIndexesRequest,
       protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined,
       protos.google.datastore.admin.v1.IIndex
-    >
+    >,
   ): void;
   listIndexes(
     request: protos.google.datastore.admin.v1.IListIndexesRequest,
@@ -1277,7 +1438,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IListIndexesRequest,
       protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined,
       protos.google.datastore.admin.v1.IIndex
-    >
+    >,
   ): void;
   listIndexes(
     request?: protos.google.datastore.admin.v1.IListIndexesRequest,
@@ -1294,7 +1455,7 @@ export class DatastoreAdminClient {
       protos.google.datastore.admin.v1.IListIndexesRequest,
       protos.google.datastore.admin.v1.IListIndexesResponse | null | undefined,
       protos.google.datastore.admin.v1.IIndex
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.admin.v1.IIndex[],
@@ -1317,12 +1478,40 @@ export class DatastoreAdminClient {
       this._gaxModule.routingHeader.fromParams({
         project_id: request.projectId ?? '',
       });
-    this.initialize();
-    return this.innerApiCalls.listIndexes(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.datastore.admin.v1.IListIndexesRequest,
+          | protos.google.datastore.admin.v1.IListIndexesResponse
+          | null
+          | undefined,
+          protos.google.datastore.admin.v1.IIndex
+        >
+      | undefined = callback
+      ? (error, values, nextPageRequest, rawResponse) => {
+          this._log.info('listIndexes values %j', values);
+          callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('listIndexes request %j', request);
+    return this.innerApiCalls
+      .listIndexes(request, options, wrappedCallback)
+      ?.then(
+        ([response, input, output]: [
+          protos.google.datastore.admin.v1.IIndex[],
+          protos.google.datastore.admin.v1.IListIndexesRequest | null,
+          protos.google.datastore.admin.v1.IListIndexesResponse,
+        ]) => {
+          this._log.info('listIndexes values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
   /**
-   * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
+   * Equivalent to `listIndexes`, but returns a NodeJS Stream object.
    * @param {Object} request
    *   The request object that will be sent.
    * @param {string} request.projectId
@@ -1346,7 +1535,7 @@ export class DatastoreAdminClient {
    */
   listIndexesStream(
     request?: protos.google.datastore.admin.v1.IListIndexesRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Transform {
     request = request || {};
     options = options || {};
@@ -1358,11 +1547,14 @@ export class DatastoreAdminClient {
       });
     const defaultCallSettings = this._defaults['listIndexes'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize();
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('listIndexes stream %j', request);
     return this.descriptors.page.listIndexes.createStream(
       this.innerApiCalls.listIndexes as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
@@ -1394,7 +1586,7 @@ export class DatastoreAdminClient {
    */
   listIndexesAsync(
     request?: protos.google.datastore.admin.v1.IListIndexesRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable {
     request = request || {};
     options = options || {};
@@ -1406,11 +1598,14 @@ export class DatastoreAdminClient {
       });
     const defaultCallSettings = this._defaults['listIndexes'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize();
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('listIndexes iterate %j', request);
     return this.descriptors.page.listIndexes.asyncIterate(
       this.innerApiCalls['listIndexes'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable;
   }
   /**
@@ -1445,7 +1640,7 @@ export class DatastoreAdminClient {
    */
   getOperation(
     request: protos.google.longrunning.GetOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
           protos.google.longrunning.Operation,
@@ -1456,8 +1651,22 @@ export class DatastoreAdminClient {
       protos.google.longrunning.Operation,
       protos.google.longrunning.GetOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise<[protos.google.longrunning.Operation]> {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.getOperation(request, options, callback);
   }
   /**
@@ -1492,8 +1701,15 @@ export class DatastoreAdminClient {
    */
   listOperationsAsync(
     request: protos.google.longrunning.ListOperationsRequest,
-    options?: gax.CallOptions
-  ): AsyncIterable {
+    options?: gax.CallOptions,
+  ): AsyncIterable {
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.listOperationsAsync(request, options);
   }
   /**
@@ -1529,19 +1745,33 @@ export class DatastoreAdminClient {
    */
   cancelOperation(
     request: protos.google.longrunning.CancelOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
-          protos.google.protobuf.Empty,
           protos.google.longrunning.CancelOperationRequest,
+          protos.google.protobuf.Empty,
           {} | undefined | null
         >,
     callback?: Callback<
       protos.google.longrunning.CancelOperationRequest,
       protos.google.protobuf.Empty,
       {} | undefined | null
-    >
+    >,
   ): Promise {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.cancelOperation(request, options, callback);
   }
 
@@ -1572,7 +1802,7 @@ export class DatastoreAdminClient {
    */
   deleteOperation(
     request: protos.google.longrunning.DeleteOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
           protos.google.protobuf.Empty,
@@ -1583,8 +1813,22 @@ export class DatastoreAdminClient {
       protos.google.protobuf.Empty,
       protos.google.longrunning.DeleteOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.deleteOperation(request, options, callback);
   }
 
@@ -1597,6 +1841,7 @@ export class DatastoreAdminClient {
   close(): Promise {
     if (this.datastoreAdminStub && !this._terminated) {
       return this.datastoreAdminStub.then(stub => {
+        this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
         this.operationsClient.close();
diff --git a/handwritten/nodejs-datastore/src/v1/datastore_client.ts b/handwritten/nodejs-datastore/src/v1/datastore_client.ts
index 58e07a3c65e..1b1158315ea 100644
--- a/handwritten/nodejs-datastore/src/v1/datastore_client.ts
+++ b/handwritten/nodejs-datastore/src/v1/datastore_client.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -28,6 +28,7 @@ import type {
 
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
+import {loggingUtils as logging} from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -58,6 +59,8 @@ export class DatastoreClient {
   private _defaults: {[method: string]: gax.CallSettings};
   private _universeDomain: string;
   private _servicePath: string;
+  private _log = logging.log('datastore');
+
   auth: gax.GoogleAuth;
   descriptors: Descriptors = {
     page: {},
@@ -92,7 +95,7 @@ export class DatastoreClient {
    *     Developer's Console, e.g. 'grape-spaceship-123'. We will also check
    *     the environment variable GCLOUD_PROJECT for your project ID. If your
    *     app is running in an environment which supports
-   *     {@link https://developers.google.com/identity/protocols/application-default-credentials Application Default Credentials},
+   *     {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials},
    *     your project ID will be detected automatically.
    * @param {string} [options.apiEndpoint] - The domain name of the
    *     API remote host.
@@ -111,7 +114,7 @@ export class DatastoreClient {
    */
   constructor(
     opts?: ClientOptions,
-    gaxInstance?: typeof gax | typeof gax.fallback
+    gaxInstance?: typeof gax | typeof gax.fallback,
   ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof DatastoreClient;
@@ -121,7 +124,7 @@ export class DatastoreClient {
       opts?.universe_domain !== opts?.universeDomain
     ) {
       throw new Error(
-        'Please set either universe_domain or universeDomain, but not both.'
+        'Please set either universe_domain or universeDomain, but not both.',
       );
     }
     const universeDomainEnvVar =
@@ -240,7 +243,7 @@ export class DatastoreClient {
       'google.datastore.v1.Datastore',
       gapicConfig as gax.ClientConfig,
       opts.clientConfig || {},
-      {'x-goog-api-client': clientHeader.join(' ')}
+      {'x-goog-api-client': clientHeader.join(' ')},
     );
 
     // Set up a dictionary of "inner API calls"; the core implementation
@@ -274,12 +277,12 @@ export class DatastoreClient {
     this.datastoreStub = this._gaxGrpc.createStub(
       this._opts.fallback
         ? (this._protos as protobuf.Root).lookupService(
-            'google.datastore.v1.Datastore'
+            'google.datastore.v1.Datastore',
           )
         : // eslint-disable-next-line @typescript-eslint/no-explicit-any
           (this._protos as any).google.datastore.v1.Datastore,
       this._opts,
-      this._providedCustomServicePath
+      this._providedCustomServicePath,
     ) as Promise<{[method: string]: Function}>;
 
     // Iterate over each of the methods that the service provides
@@ -306,7 +309,7 @@ export class DatastoreClient {
           },
         (err: Error | null | undefined) => () => {
           throw err;
-        }
+        },
       );
 
       const descriptor = undefined;
@@ -314,7 +317,7 @@ export class DatastoreClient {
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -335,7 +338,7 @@ export class DatastoreClient {
     ) {
       process.emitWarning(
         'Static servicePath is deprecated, please use the instance method instead.',
-        'DeprecationWarning'
+        'DeprecationWarning',
       );
     }
     return 'datastore.googleapis.com';
@@ -353,7 +356,7 @@ export class DatastoreClient {
     ) {
       process.emitWarning(
         'Static apiEndpoint is deprecated, please use the instance method instead.',
-        'DeprecationWarning'
+        'DeprecationWarning',
       );
     }
     return 'datastore.googleapis.com';
@@ -398,7 +401,7 @@ export class DatastoreClient {
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
   getProjectId(
-    callback?: Callback
+    callback?: Callback,
   ): Promise | void {
     if (callback) {
       this.auth.getProjectId(callback);
@@ -444,7 +447,7 @@ export class DatastoreClient {
    */
   lookup(
     request?: protos.google.datastore.v1.ILookupRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.ILookupResponse,
@@ -459,7 +462,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ILookupResponse,
       protos.google.datastore.v1.ILookupRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   lookup(
     request: protos.google.datastore.v1.ILookupRequest,
@@ -467,7 +470,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ILookupResponse,
       protos.google.datastore.v1.ILookupRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   lookup(
     request?: protos.google.datastore.v1.ILookupRequest,
@@ -482,7 +485,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ILookupResponse,
       protos.google.datastore.v1.ILookupRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.ILookupResponse,
@@ -524,8 +527,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.lookup(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('lookup request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.ILookupResponse,
+          protos.google.datastore.v1.ILookupRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('lookup response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .lookup(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.ILookupResponse,
+          protos.google.datastore.v1.ILookupRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('lookup response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Queries for entities.
@@ -570,7 +599,7 @@ export class DatastoreClient {
    */
   runQuery(
     request?: protos.google.datastore.v1.IRunQueryRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IRunQueryResponse,
@@ -585,7 +614,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunQueryResponse,
       protos.google.datastore.v1.IRunQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   runQuery(
     request: protos.google.datastore.v1.IRunQueryRequest,
@@ -593,7 +622,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunQueryResponse,
       protos.google.datastore.v1.IRunQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   runQuery(
     request?: protos.google.datastore.v1.IRunQueryRequest,
@@ -608,7 +637,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunQueryResponse,
       protos.google.datastore.v1.IRunQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IRunQueryResponse,
@@ -650,8 +679,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.runQuery(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('runQuery request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IRunQueryResponse,
+          protos.google.datastore.v1.IRunQueryRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('runQuery response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .runQuery(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IRunQueryResponse,
+          protos.google.datastore.v1.IRunQueryRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('runQuery response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Runs an aggregation query.
@@ -690,7 +745,7 @@ export class DatastoreClient {
    */
   runAggregationQuery(
     request?: protos.google.datastore.v1.IRunAggregationQueryRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IRunAggregationQueryResponse,
@@ -705,7 +760,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunAggregationQueryResponse,
       protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   runAggregationQuery(
     request: protos.google.datastore.v1.IRunAggregationQueryRequest,
@@ -713,7 +768,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunAggregationQueryResponse,
       protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   runAggregationQuery(
     request?: protos.google.datastore.v1.IRunAggregationQueryRequest,
@@ -730,7 +785,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRunAggregationQueryResponse,
       protos.google.datastore.v1.IRunAggregationQueryRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IRunAggregationQueryResponse,
@@ -772,8 +827,36 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.runAggregationQuery(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('runAggregationQuery request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IRunAggregationQueryResponse,
+          | protos.google.datastore.v1.IRunAggregationQueryRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('runAggregationQuery response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .runAggregationQuery(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IRunAggregationQueryResponse,
+          protos.google.datastore.v1.IRunAggregationQueryRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('runAggregationQuery response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Begins a new transaction.
@@ -800,7 +883,7 @@ export class DatastoreClient {
    */
   beginTransaction(
     request?: protos.google.datastore.v1.IBeginTransactionRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IBeginTransactionResponse,
@@ -815,7 +898,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IBeginTransactionResponse,
       protos.google.datastore.v1.IBeginTransactionRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   beginTransaction(
     request: protos.google.datastore.v1.IBeginTransactionRequest,
@@ -823,7 +906,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IBeginTransactionResponse,
       protos.google.datastore.v1.IBeginTransactionRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   beginTransaction(
     request?: protos.google.datastore.v1.IBeginTransactionRequest,
@@ -840,7 +923,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IBeginTransactionResponse,
       protos.google.datastore.v1.IBeginTransactionRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IBeginTransactionResponse,
@@ -882,8 +965,36 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.beginTransaction(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('beginTransaction request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IBeginTransactionResponse,
+          | protos.google.datastore.v1.IBeginTransactionRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('beginTransaction response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .beginTransaction(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IBeginTransactionResponse,
+          protos.google.datastore.v1.IBeginTransactionRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('beginTransaction response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Commits a transaction, optionally creating, deleting or modifying some
@@ -934,7 +1045,7 @@ export class DatastoreClient {
    */
   commit(
     request?: protos.google.datastore.v1.ICommitRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.ICommitResponse,
@@ -949,7 +1060,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ICommitResponse,
       protos.google.datastore.v1.ICommitRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   commit(
     request: protos.google.datastore.v1.ICommitRequest,
@@ -957,7 +1068,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ICommitResponse,
       protos.google.datastore.v1.ICommitRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   commit(
     request?: protos.google.datastore.v1.ICommitRequest,
@@ -972,7 +1083,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.ICommitResponse,
       protos.google.datastore.v1.ICommitRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.ICommitResponse,
@@ -1014,8 +1125,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.commit(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('commit request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.ICommitResponse,
+          protos.google.datastore.v1.ICommitRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('commit response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .commit(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.ICommitResponse,
+          protos.google.datastore.v1.ICommitRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('commit response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Rolls back a transaction.
@@ -1043,7 +1180,7 @@ export class DatastoreClient {
    */
   rollback(
     request?: protos.google.datastore.v1.IRollbackRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IRollbackResponse,
@@ -1058,7 +1195,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRollbackResponse,
       protos.google.datastore.v1.IRollbackRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   rollback(
     request: protos.google.datastore.v1.IRollbackRequest,
@@ -1066,7 +1203,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRollbackResponse,
       protos.google.datastore.v1.IRollbackRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   rollback(
     request?: protos.google.datastore.v1.IRollbackRequest,
@@ -1081,7 +1218,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IRollbackResponse,
       protos.google.datastore.v1.IRollbackRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IRollbackResponse,
@@ -1123,8 +1260,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.rollback(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('rollback request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IRollbackResponse,
+          protos.google.datastore.v1.IRollbackRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('rollback response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .rollback(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IRollbackResponse,
+          protos.google.datastore.v1.IRollbackRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('rollback response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Allocates IDs for the given keys, which is useful for referencing an entity
@@ -1153,7 +1316,7 @@ export class DatastoreClient {
    */
   allocateIds(
     request?: protos.google.datastore.v1.IAllocateIdsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IAllocateIdsResponse,
@@ -1168,7 +1331,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IAllocateIdsResponse,
       protos.google.datastore.v1.IAllocateIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   allocateIds(
     request: protos.google.datastore.v1.IAllocateIdsRequest,
@@ -1176,7 +1339,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IAllocateIdsResponse,
       protos.google.datastore.v1.IAllocateIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   allocateIds(
     request?: protos.google.datastore.v1.IAllocateIdsRequest,
@@ -1191,7 +1354,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IAllocateIdsResponse,
       protos.google.datastore.v1.IAllocateIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IAllocateIdsResponse,
@@ -1233,8 +1396,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.allocateIds(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('allocateIds request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IAllocateIdsResponse,
+          protos.google.datastore.v1.IAllocateIdsRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('allocateIds response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .allocateIds(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IAllocateIdsResponse,
+          protos.google.datastore.v1.IAllocateIdsRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('allocateIds response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
   /**
    * Prevents the supplied keys' IDs from being auto-allocated by Cloud
@@ -1263,7 +1452,7 @@ export class DatastoreClient {
    */
   reserveIds(
     request?: protos.google.datastore.v1.IReserveIdsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): Promise<
     [
       protos.google.datastore.v1.IReserveIdsResponse,
@@ -1278,7 +1467,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IReserveIdsResponse,
       protos.google.datastore.v1.IReserveIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   reserveIds(
     request: protos.google.datastore.v1.IReserveIdsRequest,
@@ -1286,7 +1475,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IReserveIdsResponse,
       protos.google.datastore.v1.IReserveIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): void;
   reserveIds(
     request?: protos.google.datastore.v1.IReserveIdsRequest,
@@ -1301,7 +1490,7 @@ export class DatastoreClient {
       protos.google.datastore.v1.IReserveIdsResponse,
       protos.google.datastore.v1.IReserveIdsRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.IReserveIdsResponse,
@@ -1343,8 +1532,34 @@ export class DatastoreClient {
     }
     options.otherArgs.headers['x-goog-request-params'] =
       this._gaxModule.routingHeader.fromParams(routingParameter);
-    this.initialize();
-    return this.innerApiCalls.reserveIds(request, options, callback);
+    this.initialize().catch(err => {
+      throw err;
+    });
+    this._log.info('reserveIds request %j', request);
+    const wrappedCallback:
+      | Callback<
+          protos.google.datastore.v1.IReserveIdsResponse,
+          protos.google.datastore.v1.IReserveIdsRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('reserveIds response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls
+      .reserveIds(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.datastore.v1.IReserveIdsResponse,
+          protos.google.datastore.v1.IReserveIdsRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('reserveIds response %j', response);
+          return [response, options, rawResponse];
+        },
+      );
   }
 
   /**
@@ -1379,7 +1594,7 @@ export class DatastoreClient {
    */
   getOperation(
     request: protos.google.longrunning.GetOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
           protos.google.longrunning.Operation,
@@ -1390,8 +1605,22 @@ export class DatastoreClient {
       protos.google.longrunning.Operation,
       protos.google.longrunning.GetOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise<[protos.google.longrunning.Operation]> {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.getOperation(request, options, callback);
   }
   /**
@@ -1426,8 +1655,15 @@ export class DatastoreClient {
    */
   listOperationsAsync(
     request: protos.google.longrunning.ListOperationsRequest,
-    options?: gax.CallOptions
-  ): AsyncIterable {
+    options?: gax.CallOptions,
+  ): AsyncIterable {
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.listOperationsAsync(request, options);
   }
   /**
@@ -1463,19 +1699,33 @@ export class DatastoreClient {
    */
   cancelOperation(
     request: protos.google.longrunning.CancelOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
-          protos.google.protobuf.Empty,
           protos.google.longrunning.CancelOperationRequest,
+          protos.google.protobuf.Empty,
           {} | undefined | null
         >,
     callback?: Callback<
       protos.google.longrunning.CancelOperationRequest,
       protos.google.protobuf.Empty,
       {} | undefined | null
-    >
+    >,
   ): Promise {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.cancelOperation(request, options, callback);
   }
 
@@ -1506,7 +1756,7 @@ export class DatastoreClient {
    */
   deleteOperation(
     request: protos.google.longrunning.DeleteOperationRequest,
-    options?:
+    optionsOrCallback?:
       | gax.CallOptions
       | Callback<
           protos.google.protobuf.Empty,
@@ -1517,8 +1767,22 @@ export class DatastoreClient {
       protos.google.protobuf.Empty,
       protos.google.longrunning.DeleteOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise {
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.deleteOperation(request, options, callback);
   }
 
@@ -1531,6 +1795,7 @@ export class DatastoreClient {
   close(): Promise {
     if (this.datastoreStub && !this._terminated) {
       return this.datastoreStub.then(stub => {
+        this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
         this.operationsClient.close();
diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts
index c8eeecebb64..8b32fa92fc6 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.ts
+++ b/handwritten/nodejs-datastore/system-test/datastore.ts
@@ -57,7 +57,7 @@ async.each(
       };
 
       const {indexes: DECLARED_INDEXES} = yaml.load(
-        readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8')
+        readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8'),
       ) as {indexes: google.datastore.admin.v1.IIndex[]};
 
       // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after
@@ -471,10 +471,10 @@ async.each(
                   key: secondaryDatastore.key(['Post', keyName]),
                   data: postData,
                 };
-              }
+              },
             );
             await Promise.all(
-              secondaryData.map(async datum => secondaryDatastore.save(datum))
+              secondaryData.map(async datum => secondaryDatastore.save(datum)),
             );
             // Next, ensure that the default database has the right records
             const query = defaultDatastore
@@ -485,7 +485,7 @@ async.each(
             assert.strictEqual(defaultDatastoreResults.length, 1);
             assert.strictEqual(
               defaultDatastoreResults[0].author,
-              defaultAuthor
+              defaultAuthor,
             );
             // Next, ensure that the other database has the right records
             await Promise.all(
@@ -496,12 +496,12 @@ async.each(
                 const [results] = await secondaryDatastore.runQuery(query);
                 assert.strictEqual(results.length, 1);
                 assert.strictEqual(results[0].author, datum.data.author);
-              })
+              }),
             );
             // Cleanup
             await defaultDatastore.delete(defaultPostKey);
             await Promise.all(
-              secondaryData.map(datum => secondaryDatastore.delete(datum.key))
+              secondaryData.map(datum => secondaryDatastore.delete(datum.key)),
             );
           });
         });
@@ -556,7 +556,7 @@ async.each(
           const data = {
             buf: Buffer.from(
               '010100000000000000000059400000000000006940',
-              'hex'
+              'hex',
             ),
           };
           await datastore.save({key: postKey, data});
@@ -656,7 +656,7 @@ async.each(
               key: postKey,
               method: 'insert',
               data: post,
-            })
+            }),
           );
           const [entity] = await datastore.get(postKey);
           delete entity[datastore.KEY];
@@ -671,7 +671,7 @@ async.each(
               key: postKey,
               method: 'update',
               data: post,
-            })
+            }),
           );
         });
 
@@ -720,7 +720,7 @@ async.each(
                   assert.strictEqual(numEntitiesEmitted, 2);
                   datastore.delete([key1, key2], done);
                 });
-            }
+            },
           );
         });
 
@@ -1100,7 +1100,7 @@ async.each(
                 and([
                   new PropertyFilter('family', '=', 'Stark'),
                   new PropertyFilter('appearances', '>=', 20),
-                ])
+                ]),
               );
             const [entities] = await datastore.runQuery(q);
             assert.strictEqual(entities!.length, 6);
@@ -1120,7 +1120,7 @@ async.each(
                 or([
                   new PropertyFilter('family', '=', 'Stark'),
                   new PropertyFilter('appearances', '>=', 20),
-                ])
+                ]),
               );
             const [entities] = await datastore.runQuery(q);
             assert.strictEqual(entities!.length, 8);
@@ -1212,7 +1212,7 @@ async.each(
             });
           }
           function checkAggregationQueryExecutionStats(
-            executionStats?: ExecutionStats
+            executionStats?: ExecutionStats,
           ) {
             // This function ensures the execution stats returned from the server are correct.
             // First fix stats values that will be different every time a query profiling
@@ -1262,7 +1262,7 @@ async.each(
                 assert(!info.explainMetrics);
                 assert.deepStrictEqual(
                   entities.sort(compare).map(entity => entity.name),
-                  [...characters].sort(compare).map(entity => entity.name)
+                  [...characters].sort(compare).map(entity => entity.name),
                 );
                 await transaction.commit();
               });
@@ -1284,7 +1284,7 @@ async.each(
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunQueryPlan
+                  expectedRunQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1306,7 +1306,7 @@ async.each(
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunQueryPlan
+                  expectedRunQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1325,13 +1325,13 @@ async.each(
                 }
                 assert.deepStrictEqual(
                   entities.sort(compare).map(entity => entity.name),
-                  [...characters].sort(compare).map(entity => entity.name)
+                  [...characters].sort(compare).map(entity => entity.name),
                 );
                 assert(info.explainMetrics);
                 checkQueryExecutionStats(info.explainMetrics.executionStats);
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunQueryPlan
+                  expectedRunQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1359,7 +1359,7 @@ async.each(
                 try {
                   [entities, info] = await transaction.runAggregationQuery(
                     aggregate,
-                    {}
+                    {},
                   );
                 } catch (e) {
                   await transaction.rollback();
@@ -1377,7 +1377,7 @@ async.each(
                     aggregate,
                     {
                       explainOptions: {},
-                    }
+                    },
                   );
                 } catch (e) {
                   await transaction.rollback();
@@ -1387,7 +1387,7 @@ async.each(
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunAggregationQueryPlan
+                  expectedRunAggregationQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1401,7 +1401,7 @@ async.each(
                       explainOptions: {
                         analyze: false,
                       },
-                    }
+                    },
                   );
                 } catch (e) {
                   await transaction.rollback();
@@ -1411,7 +1411,7 @@ async.each(
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunAggregationQueryPlan
+                  expectedRunAggregationQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1423,7 +1423,7 @@ async.each(
                     aggregate,
                     {
                       explainOptions: {analyze: true},
-                    }
+                    },
                   );
                 } catch (e) {
                   await transaction.rollback();
@@ -1432,11 +1432,11 @@ async.each(
                 assert(info.explainMetrics);
                 assert.deepStrictEqual(entities, expectedAggregationResults);
                 checkAggregationQueryExecutionStats(
-                  info.explainMetrics.executionStats
+                  info.explainMetrics.executionStats,
                 );
                 assert.deepStrictEqual(
                   info.explainMetrics.planSummary,
-                  expectedRunAggregationQueryPlan
+                  expectedRunAggregationQueryPlan,
                 );
                 await transaction.commit();
               });
@@ -1449,7 +1449,7 @@ async.each(
               assert(!info.explainMetrics);
               assert.deepStrictEqual(
                 entities.sort(compare).map(entity => entity.name),
-                [...characters].sort(compare).map(entity => entity.name)
+                [...characters].sort(compare).map(entity => entity.name),
               );
             });
             it('should run a query with explain options and no analyze option specified', async () => {
@@ -1461,7 +1461,7 @@ async.each(
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
             it('should run a query with explain options and analyze set to false', async () => {
@@ -1473,7 +1473,7 @@ async.each(
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
             it('should run a query with explain options and analyze set to true', async () => {
@@ -1482,13 +1482,13 @@ async.each(
               });
               assert.deepStrictEqual(
                 entities.sort(compare).map(entity => entity.name),
-                [...characters].sort(compare).map(entity => entity.name)
+                [...characters].sort(compare).map(entity => entity.name),
               );
               assert(info.explainMetrics);
               checkQueryExecutionStats(info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
           });
@@ -1499,7 +1499,7 @@ async.each(
               assert(!info.explainMetrics);
               assert.deepStrictEqual(
                 entities.sort(compare).map(entity => entity.name),
-                [...characters].sort(compare).map(entity => entity.name)
+                [...characters].sort(compare).map(entity => entity.name),
               );
             });
             it('should run a query with explain options and no value set for analyze', async () => {
@@ -1509,7 +1509,7 @@ async.each(
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
             it('should run a query with explain options and analyze set to false', async () => {
@@ -1521,7 +1521,7 @@ async.each(
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
             it('should run a query with explain options and analyze set to true', async () => {
@@ -1530,14 +1530,14 @@ async.each(
               });
               assert.deepStrictEqual(
                 entities.sort(compare).map(entity => entity.name),
-                [...characters].sort(compare).map(entity => entity.name)
+                [...characters].sort(compare).map(entity => entity.name),
               );
               assert(info.explainMetrics);
               checkQueryExecutionStats(info.explainMetrics.executionStats);
               assert(info.explainMetrics.planSummary);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunQueryPlan
+                expectedRunQueryPlan,
               );
             });
           });
@@ -1561,7 +1561,7 @@ async.each(
                     entities
                       .sort(compare)
                       .map((entity: Entity) => entity?.name),
-                    [...characters].sort(compare).map(entity => entity.name)
+                    [...characters].sort(compare).map(entity => entity.name),
                   );
                   assert(!savedInfo.explainMetrics);
                   resolve();
@@ -1589,7 +1589,7 @@ async.each(
                   assert(!savedInfo.explainMetrics.executionStats);
                   assert.deepStrictEqual(
                     savedInfo.explainMetrics.planSummary,
-                    expectedRunQueryPlan
+                    expectedRunQueryPlan,
                   );
                   resolve();
                 });
@@ -1618,7 +1618,7 @@ async.each(
                   assert(!savedInfo.explainMetrics.executionStats);
                   assert.deepStrictEqual(
                     savedInfo.explainMetrics.planSummary,
-                    expectedRunQueryPlan
+                    expectedRunQueryPlan,
                   );
                   resolve();
                 });
@@ -1644,15 +1644,15 @@ async.each(
                     entities
                       .sort(compare)
                       .map((entity: Entity) => entity?.name),
-                    [...characters].sort(compare).map(entity => entity.name)
+                    [...characters].sort(compare).map(entity => entity.name),
                   );
                   assert(savedInfo.explainMetrics);
                   checkQueryExecutionStats(
-                    savedInfo.explainMetrics.executionStats
+                    savedInfo.explainMetrics.executionStats,
                   );
                   assert.deepStrictEqual(
                     savedInfo.explainMetrics.planSummary,
-                    expectedRunQueryPlan
+                    expectedRunQueryPlan,
                   );
                   resolve();
                 });
@@ -1680,14 +1680,14 @@ async.each(
                 aggregate,
                 {
                   explainOptions: {},
-                }
+                },
               );
               assert.deepStrictEqual(entities, []);
               assert(info.explainMetrics);
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
             it('should run an aggregation query with explain options specified and analyze set to false', async () => {
@@ -1695,14 +1695,14 @@ async.each(
                 aggregate,
                 {
                   explainOptions: {analyze: false},
-                }
+                },
               );
               assert.deepStrictEqual(entities, []);
               assert(info.explainMetrics);
               assert(!info.explainMetrics.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
             it('should run an aggregation query with explain options and analyze set to true', async () => {
@@ -1710,16 +1710,16 @@ async.each(
                 aggregate,
                 {
                   explainOptions: {analyze: true},
-                }
+                },
               );
               assert.deepStrictEqual(entities, expectedAggregationResults);
               assert(info.explainMetrics);
               checkAggregationQueryExecutionStats(
-                info.explainMetrics.executionStats
+                info.explainMetrics.executionStats,
               );
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
           });
@@ -1747,7 +1747,7 @@ async.each(
               assert(!info.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
             it('should run an aggregation query with explain options and analyze set to false', async () => {
@@ -1761,7 +1761,7 @@ async.each(
               assert(!info.executionStats);
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
             it('should run an aggregation query with explain options specified and analyze set to true', async () => {
@@ -1771,11 +1771,11 @@ async.each(
               assert.deepStrictEqual(entities, expectedAggregationResults);
               assert(info.explainMetrics);
               checkAggregationQueryExecutionStats(
-                info.explainMetrics.executionStats
+                info.explainMetrics.executionStats,
               );
               assert.deepStrictEqual(
                 info.explainMetrics.planSummary,
-                expectedRunAggregationQueryPlan
+                expectedRunAggregationQueryPlan,
               );
             });
           });
@@ -1870,7 +1870,7 @@ async.each(
             } catch (err: any) {
               assert.strictEqual(
                 err.message,
-                '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__'
+                '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__',
               );
             }
           });
@@ -1937,7 +1937,7 @@ async.each(
             const aggregate = datastore
               .createAggregationQuery(q)
               .addAggregation(
-                AggregateField.average('appearances').alias('avg1')
+                AggregateField.average('appearances').alias('avg1'),
               );
             const [results] = await datastore.runAggregationQuery(aggregate);
             assert.deepStrictEqual(results, [{avg1: 28.166666666666668}]);
@@ -1947,7 +1947,7 @@ async.each(
             const aggregate = datastore
               .createAggregationQuery(q)
               .addAggregation(
-                AggregateField.average('appearances').alias('avg1')
+                AggregateField.average('appearances').alias('avg1'),
               );
             const [results] = await datastore.runAggregationQuery(aggregate);
             assert.deepStrictEqual(results, [{avg1: 23.375}]);
@@ -2004,7 +2004,7 @@ async.each(
             } catch (err: any) {
               assert.strictEqual(
                 err.message,
-                '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__'
+                '3 INVALID_ARGUMENT: Aggregations are not supported for the property: __key__',
               );
             }
           });
@@ -2170,7 +2170,7 @@ async.each(
             } catch (err: any) {
               assert.strictEqual(
                 err.message,
-                '3 INVALID_ARGUMENT: The maximum number of aggregations allowed in an aggregation query is 5. Received: 6'
+                '3 INVALID_ARGUMENT: The maximum number of aggregations allowed in an aggregation query is 5. Received: 6',
               );
             }
           });
@@ -2187,14 +2187,14 @@ async.each(
               .createQuery('Character')
               .filter('status', null)
               .filters.pop()?.val,
-            null
+            null,
           );
           assert.strictEqual(
             datastore
               .createQuery('Character')
               .filter('status', '=', null)
               .filters.pop()?.val,
-            null
+            null,
           );
         });
         it('should filter by key', async () => {
@@ -2605,7 +2605,7 @@ async.each(
                   });
                 });
               });
-            }
+            },
           );
         });
         describe('comparing times with and without transaction.run', async () => {
@@ -2779,7 +2779,7 @@ async.each(
             await datastore.delete(key);
           });
           async function doRunAggregationQueryPutCommit(
-            transaction: Transaction
+            transaction: Transaction,
           ) {
             const query = transaction.createQuery('Company');
             const aggregateQuery = transaction
@@ -2813,7 +2813,7 @@ async.each(
             await datastore.delete(key);
           });
           async function doPutRunAggregationQueryCommit(
-            transaction: Transaction
+            transaction: Transaction,
           ) {
             transaction.save({key, data: obj});
             const query = transaction.createQuery('Company');
@@ -2990,7 +2990,7 @@ async.each(
             const [results] = await datastore.runQuery(query);
             assert.deepStrictEqual(
               results.map(result => result.rating),
-              [100, 100]
+              [100, 100],
             );
           });
           it('should aggregate query within a count transaction', async () => {
@@ -3139,7 +3139,7 @@ async.each(
           const [indexes] = await datastore.getIndexes();
           assert.ok(
             indexes.length >= DECLARED_INDEXES.length,
-            'has at least the number of indexes per system-test/data/index.yaml'
+            'has at least the number of indexes per system-test/data/index.yaml',
           );
 
           // Comparing index.yaml and the actual defined index in Datastore requires
@@ -3150,11 +3150,11 @@ async.each(
           assert.ok(firstIndex, 'first index is readable');
           assert.ok(
             firstIndex.metadata!.properties,
-            'has properties collection'
+            'has properties collection',
           );
           assert.ok(
             firstIndex.metadata!.properties.length,
-            'with properties inside'
+            'with properties inside',
           );
           assert.ok(firstIndex.metadata!.ancestor, 'has the ancestor property');
         });
@@ -3183,7 +3183,7 @@ async.each(
           assert.deepStrictEqual(
             metadata,
             firstIndex.metadata,
-            'asked index is the same as received index'
+            'asked index is the same as received index',
           );
         });
       });
@@ -3203,7 +3203,7 @@ async.each(
           const ms = Math.pow(2, retries) * 500 + Math.random() * 1000;
           return new Promise(done => {
             console.info(
-              `retrying "${test.test?.title}" after attempt ${currentAttempt} in ${ms}ms`
+              `retrying "${test.test?.title}" after attempt ${currentAttempt} in ${ms}ms`,
             );
             setTimeout(done, ms);
           });
@@ -3233,7 +3233,7 @@ async.each(
             // Throw an error on every retry except the last one
             if (currentAttempt <= numberOfRetries) {
               throw Error(
-                'This is not the last retry so throw an error to force the test to run again'
+                'This is not the last retry so throw an error to force the test to run again',
               );
             }
             // Check that the attempt number and the number of times console.info is called is correct.
@@ -3249,7 +3249,7 @@ async.each(
         it('should export, then import entities', async function () {
           setupForDelay();
           this.retries(3);
-          delay(this);
+          await delay(this);
           const [exportOperation] = await datastore.export({bucket});
           await exportOperation.promise();
 
@@ -3267,7 +3267,7 @@ async.each(
             (
               importOperation.metadata as google.datastore.admin.v1.IImportEntitiesMetadata
             ).inputUrl,
-            `gs://${exportedFile.bucket.name}/${exportedFile.name}`
+            `gs://${exportedFile.bucket.name}/${exportedFile.name}`,
           );
 
           await importOperation.cancel();
@@ -3296,5 +3296,5 @@ async.each(
         });
       });
     });
-  }
+  },
 );
diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js
index 603621a3e71..d9da9fb4527 100644
--- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js
+++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.js
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts
index d30f4026844..c0c27e781f1 100644
--- a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts
+++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/index.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts
index 83b83f332c3..5257a7ba101 100644
--- a/handwritten/nodejs-datastore/system-test/install.ts
+++ b/handwritten/nodejs-datastore/system-test/install.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ describe('📦 pack-n-play test', () => {
       sample: {
         description: 'TypeScript user can use the type definitions',
         ts: readFileSync(
-          './system-test/fixtures/sample/src/index.ts'
+          './system-test/fixtures/sample/src/index.ts',
         ).toString(),
       },
     };
@@ -42,7 +42,7 @@ describe('📦 pack-n-play test', () => {
       sample: {
         description: 'JavaScript user can use the library',
         ts: readFileSync(
-          './system-test/fixtures/sample/src/index.js'
+          './system-test/fixtures/sample/src/index.js',
         ).toString(),
       },
     };
diff --git a/handwritten/nodejs-datastore/test/entity.ts b/handwritten/nodejs-datastore/test/entity.ts
index 88b4c1d1063..2d406057335 100644
--- a/handwritten/nodejs-datastore/test/entity.ts
+++ b/handwritten/nodejs-datastore/test/entity.ts
@@ -40,7 +40,7 @@ export function outOfBoundsError(opts: {
       '{\n' +
       '  integerTypeCastFunction: provide \n' +
       '  properties: optionally specify property name(s) to be custom casted\n' +
-      '}\n'
+      '}\n',
   );
 }
 
@@ -127,7 +127,7 @@ describe('entity', () => {
         it('should throw if integerTypeCastOptions is provided but integerTypeCastFunction is not', () => {
           assert.throws(
             () => new testEntity.Int(valueProto, {}).valueOf(),
-            /integerTypeCastFunction is not a function or was not provided\./
+            /integerTypeCastFunction is not a function or was not provided\./,
           );
         });
 
@@ -163,7 +163,7 @@ describe('entity', () => {
             () => {
               new testEntity.Int(largeIntegerValue).valueOf();
             },
-            outOfBoundsError({integerValue: largeIntegerValue})
+            outOfBoundsError({integerValue: largeIntegerValue}),
           );
 
           // should throw when string is passed
@@ -171,7 +171,7 @@ describe('entity', () => {
             () => {
               new testEntity.Int(smallIntegerValue.toString()).valueOf();
             },
-            outOfBoundsError({integerValue: smallIntegerValue})
+            outOfBoundsError({integerValue: smallIntegerValue}),
           );
         });
 
@@ -187,7 +187,7 @@ describe('entity', () => {
             () => {
               new testEntity.Int(valueProto);
             },
-            new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`)
+            new RegExp(`Integer value ${largeIntegerValue} is out of bounds.`),
           );
         });
       });
@@ -199,7 +199,7 @@ describe('entity', () => {
               new testEntity.Int(valueProto, {
                 integerTypeCastFunction: {},
               }).valueOf(),
-            /integerTypeCastFunction is not a function or was not provided\./
+            /integerTypeCastFunction is not a function or was not provided\./,
           );
         });
 
@@ -459,7 +459,7 @@ describe('entity', () => {
 
         assert.deepStrictEqual(
           testEntity.decodeValueProto(valueProto),
-          expectedValue
+          expectedValue,
         );
       });
 
@@ -467,7 +467,7 @@ describe('entity', () => {
         const decodeValueProto = testEntity.decodeValueProto;
         testEntity.decodeValueProto = (
           valueProto: {},
-          wrapNumbers?: boolean | {}
+          wrapNumbers?: boolean | {},
         ) => {
           assert.strictEqual(wrapNumbers, undefined);
 
@@ -486,7 +486,7 @@ describe('entity', () => {
         let run = false;
         testEntity.decodeValueProto = (
           valueProto: {},
-          wrapNumbers?: boolean | {}
+          wrapNumbers?: boolean | {},
         ) => {
           if (!run) {
             run = true;
@@ -500,14 +500,14 @@ describe('entity', () => {
 
         assert.deepStrictEqual(
           testEntity.decodeValueProto(valueProto, wrapNumbersBoolean),
-          expectedValue
+          expectedValue,
         );
 
         // reset the run flag.
         run = false;
         assert.deepStrictEqual(
           testEntity.decodeValueProto(valueProto, wrapNumbersObject),
-          expectedValue
+          expectedValue,
         );
       });
     });
@@ -528,7 +528,7 @@ describe('entity', () => {
 
         assert.strictEqual(
           testEntity.decodeValueProto(valueProto),
-          expectedValue
+          expectedValue,
         );
       });
 
@@ -542,7 +542,7 @@ describe('entity', () => {
 
         testEntity.entityFromEntityProto = (
           entityProto: {},
-          wrapNumbers?: boolean | {}
+          wrapNumbers?: boolean | {},
         ) => {
           assert.strictEqual(wrapNumbers, undefined);
           assert.strictEqual(entityProto, expectedValue);
@@ -551,7 +551,7 @@ describe('entity', () => {
 
         assert.strictEqual(
           testEntity.decodeValueProto(valueProto),
-          expectedValue
+          expectedValue,
         );
       });
 
@@ -567,7 +567,7 @@ describe('entity', () => {
 
         testEntity.entityFromEntityProto = (
           entityProto: {},
-          wrapNumbers?: boolean | {}
+          wrapNumbers?: boolean | {},
         ) => {
           // verify that `wrapNumbers`param is passed (boolean or object)
           assert.ok(wrapNumbers);
@@ -577,12 +577,12 @@ describe('entity', () => {
 
         assert.strictEqual(
           testEntity.decodeValueProto(valueProto, wrapNumbersBoolean),
-          expectedValue
+          expectedValue,
         );
 
         assert.strictEqual(
           testEntity.decodeValueProto(valueProto, wrapNumbersObject),
-          expectedValue
+          expectedValue,
         );
       });
     });
@@ -597,7 +597,7 @@ describe('entity', () => {
         it('should not wrap ints by default', () => {
           assert.strictEqual(
             typeof testEntity.decodeValueProto(valueProto),
-            'number'
+            'number',
           );
         });
 
@@ -653,7 +653,7 @@ describe('entity', () => {
 
           assert.strictEqual(
             testEntity.decodeValueProto(valueProto, wrapNumbers),
-            takeFirstTen(Number.MAX_SAFE_INTEGER)
+            takeFirstTen(Number.MAX_SAFE_INTEGER),
           );
           assert.strictEqual(takeFirstTen.called, true);
         });
@@ -671,9 +671,9 @@ describe('entity', () => {
                 .valueOf(),
             (err: Error) => {
               return new RegExp(
-                `integerTypeCastFunction threw an error:\n\n  - ${errorMessage}`
+                `integerTypeCastFunction threw an error:\n\n  - ${errorMessage}`,
               ).test(err.message);
-            }
+            },
           );
         });
       });
@@ -689,7 +689,7 @@ describe('entity', () => {
 
       assert.deepStrictEqual(
         testEntity.decodeValueProto(valueProto),
-        expectedValue
+        expectedValue,
       );
     });
 
@@ -715,7 +715,7 @@ describe('entity', () => {
 
       assert.strictEqual(
         testEntity.decodeValueProto(valueProto),
-        expectedValue
+        expectedValue,
       );
     });
 
@@ -734,7 +734,7 @@ describe('entity', () => {
 
       assert.strictEqual(
         testEntity.decodeValueProto(valueProto),
-        expectedValue
+        expectedValue,
       );
     });
 
@@ -756,7 +756,7 @@ describe('entity', () => {
 
       assert.deepStrictEqual(
         testEntity.decodeValueProto(valueProto),
-        expectedValue
+        expectedValue,
       );
     });
 
@@ -770,7 +770,7 @@ describe('entity', () => {
 
       assert.strictEqual(
         testEntity.decodeValueProto(valueProto),
-        expectedValue
+        expectedValue,
       );
     });
   });
@@ -1035,7 +1035,7 @@ describe('entity', () => {
 
       assert.deepStrictEqual(
         testEntity.entityFromEntityProto(entityProto),
-        expectedEntity
+        expectedEntity,
       );
     });
 
@@ -1106,14 +1106,14 @@ describe('entity', () => {
 
       assert.deepStrictEqual(
         testEntity.entityToEntityProto(entityObject),
-        expectedEntityProto
+        expectedEntityProto,
       );
     });
 
     it('should respect excludeFromIndexes', () => {
       assert.deepStrictEqual(
         testEntity.entityToEntityProto(entityObject),
-        expectedEntityProto
+        expectedEntityProto,
       );
     });
 
@@ -1155,7 +1155,7 @@ describe('entity', () => {
 
       assert.deepStrictEqual(
         testEntity.entityToEntityProto(entityObject),
-        expectedEntityProto
+        expectedEntityProto,
       );
     });
   });
@@ -1355,7 +1355,7 @@ describe('entity', () => {
         assert.strictEqual((e as Error).name, 'InvalidKey');
         assert.strictEqual(
           (e as Error).message,
-          'Ancestor keys require an id or name.'
+          'Ancestor keys require an id or name.',
         );
         done();
       }
@@ -1439,7 +1439,7 @@ describe('entity', () => {
         assert.strictEqual((e as Error).name, 'InvalidKey');
         assert.strictEqual(
           (e as Error).message,
-          'A key should contain at least a kind.'
+          'A key should contain at least a kind.',
         );
         done();
       }
@@ -1457,7 +1457,7 @@ describe('entity', () => {
         assert.strictEqual((e as Error).name, 'InvalidKey');
         assert.strictEqual(
           (e as Error).message,
-          'Ancestor keys require an id or name.'
+          'Ancestor keys require an id or name.',
         );
         done();
       }
@@ -1618,12 +1618,12 @@ describe('entity', () => {
         .filter(
           new PropertyFilter('__key__', 'IN', [
             new entity.Key({path: ['Kind1', 'key1']}),
-          ])
+          ]),
         );
 
       assert.deepStrictEqual(
         testEntity.queryToQueryProto(query),
-        keyWithInQuery
+        keyWithInQuery,
       );
     });
 
@@ -1661,7 +1661,7 @@ describe('entity', () => {
           and([
             new PropertyFilter('name', '=', 'John'),
             new PropertyFilter('__key__', 'HAS_ANCESTOR', ancestorKey),
-          ])
+          ]),
         )
         .start('start')
         .end('end')
@@ -1705,7 +1705,7 @@ describe('entity', () => {
 
         assert.strictEqual(
           urlSafeKey.convertToBase64_(buffer),
-          'SGVsbG8gV29ybGQ'
+          'SGVsbG8gV29ybGQ',
         );
       });
     });
@@ -1714,7 +1714,7 @@ describe('entity', () => {
       it('should convert encoded url safe key to buffer', () => {
         assert.deepStrictEqual(
           urlSafeKey.convertToBuffer_('aGVsbG8gd29ybGQgZnJvbSBkYXRhc3RvcmU'),
-          Buffer.from('hello world from datastore')
+          Buffer.from('hello world from datastore'),
         );
       });
     });
@@ -1732,7 +1732,7 @@ describe('entity', () => {
           'ahFzfmdyYXNzLWNsdW1wLTQ3OXIVCxIEVGFzayILc2FtcGxldGFzazEMogECTlM';
         assert.strictEqual(
           urlSafeKey.legacyEncode(PROJECT_ID, key, LOCATION_PREFIX),
-          encodedKey
+          encodedKey,
         );
       });
 
@@ -1747,7 +1747,7 @@ describe('entity', () => {
           'ag9ncmFzcy1jbHVtcC00NzlyFQsSBFRhc2siC3NhbXBsZXRhc2sxDA';
         assert.strictEqual(
           urlSafeKey.legacyEncode(PROJECT_ID, key),
-          encodedKey
+          encodedKey,
         );
       });
 
@@ -1761,7 +1761,7 @@ describe('entity', () => {
         const encodedKey = 'ag9ncmFzcy1jbHVtcC00NzlyEQsSBFRhc2sYgICA3NWunAoM';
         assert.strictEqual(
           urlSafeKey.legacyEncode(PROJECT_ID, key),
-          encodedKey
+          encodedKey,
         );
       });
 
@@ -1775,7 +1775,7 @@ describe('entity', () => {
         const encodedKey = 'ag9ncmFzcy1jbHVtcC00NzlyEQsSBFRhc2sYgICA3NWunAoM';
         assert.strictEqual(
           urlSafeKey.legacyEncode(PROJECT_ID, key),
-          encodedKey
+          encodedKey,
         );
       });
 
@@ -1788,7 +1788,7 @@ describe('entity', () => {
           'ahFzfmdyYXNzLWNsdW1wLTQ3OXIqCxIEVGFzayILc2FtcGxldGFzazEMCxIEVGFzayILc2FtcGxldGFzazIM';
         assert.strictEqual(
           urlSafeKey.legacyEncode(PROJECT_ID, key, LOCATION_PREFIX),
-          encodedKey
+          encodedKey,
         );
       });
     });
diff --git a/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts b/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
index 3f646bc0f7f..2d2c868df98 100644
--- a/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
+++ b/handwritten/nodejs-datastore/test/entity/buildEntityProto.ts
@@ -81,9 +81,9 @@ describe('buildEntityProto', () => {
         }
         assert.deepStrictEqual(
           buildEntityProto(test.entityObject),
-          test.expectedProto
+          test.expectedProto,
         );
       });
-    }
+    },
   );
 });
diff --git a/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts b/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
index 9526c1ee91f..56ce082316c 100644
--- a/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
+++ b/handwritten/nodejs-datastore/test/entity/excludeIndexesAndBuildProto.ts
@@ -44,13 +44,13 @@ describe('excludeIndexesAndBuildProto', () => {
         if (entityProtoSubset.stringValue === longString) {
           if (entityProtoSubset.excludeFromIndexes !== true) {
             assert.fail(
-              `The entity proto at ${path} should excludeFromIndexes`
+              `The entity proto at ${path} should excludeFromIndexes`,
             );
           }
         } else {
           if (entityProtoSubset.excludeFromIndexes === true) {
             assert.fail(
-              `The entity proto at ${path} should not excludeFromIndexes`
+              `The entity proto at ${path} should not excludeFromIndexes`,
             );
           }
         }
@@ -82,7 +82,7 @@ describe('excludeIndexesAndBuildProto', () => {
             },
           },
         },
-        ''
+        '',
       );
     });
     it('should not throw an assertion error for long strings in the top level', () => {
@@ -99,7 +99,7 @@ describe('excludeIndexesAndBuildProto', () => {
             },
           },
         },
-        ''
+        '',
       );
     });
     it('should throw an assertion error for a missing excludeFromIndexes: true', () => {
@@ -116,13 +116,13 @@ describe('excludeIndexesAndBuildProto', () => {
               },
             },
           },
-          ''
+          '',
         );
         assert.fail('checkEntityProto should have failed');
       } catch (e) {
         assert.strictEqual(
           (e as ServiceError).message,
-          'The entity proto at .properties.name should excludeFromIndexes'
+          'The entity proto at .properties.name should excludeFromIndexes',
         );
       }
     });
@@ -141,13 +141,13 @@ describe('excludeIndexesAndBuildProto', () => {
               },
             },
           },
-          ''
+          '',
         );
         assert.fail('checkEntityProto should have failed');
       } catch (e) {
         assert.strictEqual(
           (e as ServiceError).message,
-          'The entity proto at .properties.name should not excludeFromIndexes'
+          'The entity proto at .properties.name should not excludeFromIndexes',
         );
       }
     });
@@ -181,13 +181,13 @@ describe('excludeIndexesAndBuildProto', () => {
               },
             },
           },
-          ''
+          '',
         );
         assert.fail('checkEntityProto should have failed');
       } catch (e) {
         assert.strictEqual(
           (e as ServiceError).message,
-          'The entity proto at .properties.name.arrayValue.values.[1].entityValue.properties.metadata should not excludeFromIndexes'
+          'The entity proto at .properties.name.arrayValue.values.[1].entityValue.properties.metadata should not excludeFromIndexes',
         );
       }
     });
@@ -262,7 +262,7 @@ describe('excludeIndexesAndBuildProto', () => {
    */
   function getGeneratedTestComponents(
     baseElement: {},
-    baseTestName: string
+    baseTestName: string,
   ): GeneratedTestCase[] {
     const maxDepth = 5;
     const generatedTestCasesByDepth: GeneratedTestCase[][] = [
@@ -315,7 +315,7 @@ describe('excludeIndexesAndBuildProto', () => {
         value: longString,
         otherProperty: longString,
       },
-      'with long string properties and path '
+      'with long string properties and path ',
     ),
     getGeneratedTestComponents(
       {
@@ -323,7 +323,7 @@ describe('excludeIndexesAndBuildProto', () => {
         value: 'short value',
         otherProperty: longString,
       },
-      'with long name property and path '
+      'with long name property and path ',
     ),
   ]
     .flat()
@@ -375,6 +375,6 @@ describe('excludeIndexesAndBuildProto', () => {
         const entityProto = buildEntityProto(entityObject);
         checkEntityProto(entityProto, '');
       });
-    }
+    },
   );
 });
diff --git a/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts b/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
index 77c7f3d809a..936dbaa4854 100644
--- a/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
+++ b/handwritten/nodejs-datastore/test/entity/extendExcludeFromIndexes.ts
@@ -165,9 +165,9 @@ describe('extendExcludeFromIndexes', () => {
         extendExcludeFromIndexes(entityObject);
         assert.deepStrictEqual(
           entityObject.excludeFromIndexes,
-          test.expectedOutput
+          test.expectedOutput,
         );
       });
-    }
+    },
   );
 });
diff --git a/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts b/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
index ed99df75e3c..028955baf64 100644
--- a/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
+++ b/handwritten/nodejs-datastore/test/entity/findLargeProperties_.ts
@@ -160,6 +160,6 @@ describe('findLargeProperties_', () => {
         const output = findLargeProperties_(test.entities, '', []);
         assert.deepStrictEqual(output, test.expectedOutput);
       });
-    }
+    },
   );
 });
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts b/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts
index d0be6c43788..de5230ae3b1 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/client-initialization-testing.ts
@@ -59,7 +59,7 @@ class FakeDatastoreClient extends DatastoreClient {
       protos.google.datastore.v1.ILookupResponse,
       protos.google.datastore.v1.ILookupRequest | null | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<
     [
       protos.google.datastore.v1.ILookupResponse,
@@ -97,7 +97,7 @@ describe('Client Initialization Testing', () => {
     function compareRequest(
       request: DatastoreRequest,
       expectedFallback: Fallback,
-      done: mocha.Done
+      done: mocha.Done,
     ) {
       try {
         const client = request.datastore.clients_.get(clientName);
@@ -138,7 +138,7 @@ describe('Client Initialization Testing', () => {
             // The CI environment can't fetch project id so the function that
             // fetches the project id needs to be mocked out.
             request.datastore.auth.getProjectId = (
-              callback: (err: any, projectId: string) => void
+              callback: (err: any, projectId: string) => void,
             ) => {
               callback(null, 'some-project-id');
             };
@@ -149,7 +149,7 @@ describe('Client Initialization Testing', () => {
               {client: clientName, method: 'lookup'},
               () => {
                 compareRequest(request, testParameters.expectedFallback, done);
-              }
+              },
             );
           });
           it('should set the rest parameter in the data client when calling request_', done => {
@@ -159,7 +159,7 @@ describe('Client Initialization Testing', () => {
             });
           });
         });
-      }
+      },
     );
   });
 });
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
index 7967762301c..3ef17096be5 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/commit.ts
@@ -531,7 +531,7 @@ describe('Commit', () => {
            * strings replaced.
            */
           function replaceLongStrings(
-            input?: google.datastore.v1.IMutation[] | null
+            input?: google.datastore.v1.IMutation[] | null,
           ) {
             const stringifiedInput = JSON.stringify(input);
             const replacedInput = stringifiedInput
@@ -553,8 +553,8 @@ describe('Commit', () => {
                 options: CallOptions,
                 callback: (
                   err?: unknown,
-                  res?: protos.google.datastore.v1.ICommitResponse
-                ) => void
+                  res?: protos.google.datastore.v1.ICommitResponse,
+                ) => void,
               ) => {
                 try {
                   const actual = replaceLongStrings(request.mutations);
@@ -578,7 +578,7 @@ describe('Commit', () => {
             excludeLargeProperties: test.excludeLargeProperties,
           });
         });
-      }
+      },
     );
   });
 });
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts b/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts
index 226859e6c54..507c795ee9f 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/error-mocks.ts
@@ -56,7 +56,7 @@ export function getCallbackExpectingError(done: mocha.Done, message: string) {
 export function errorOnGapicCall(
   datastore: Datastore,
   clientName: string,
-  done: mocha.Done
+  done: mocha.Done,
 ) {
   const dataClient = datastore.clients_.get(clientName);
   if (dataClient) {
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts b/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts
index 59c743ee521..bba7952e2eb 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/handwritten-errors.ts
@@ -60,7 +60,7 @@ describe('HandwrittenLayerErrors', () => {
             transaction.runQuery(
               query,
               testParameters.options,
-              getCallbackExpectingError(done, testParameters.expectedError)
+              getCallbackExpectingError(done, testParameters.expectedError),
             );
           });
           it('should error when runQueryStream is used', done => {
@@ -85,7 +85,7 @@ describe('HandwrittenLayerErrors', () => {
             transaction.runAggregationQuery(
               aggregate,
               testParameters.options,
-              getCallbackExpectingError(done, testParameters.expectedError)
+              getCallbackExpectingError(done, testParameters.expectedError),
             );
           });
           it('should error when get is used', done => {
@@ -95,7 +95,7 @@ describe('HandwrittenLayerErrors', () => {
             transaction.get(
               keys,
               testParameters.options,
-              getCallbackExpectingError(done, testParameters.expectedError)
+              getCallbackExpectingError(done, testParameters.expectedError),
             );
           });
           it('should error when createReadStream is used', done => {
@@ -111,7 +111,7 @@ describe('HandwrittenLayerErrors', () => {
             }
           });
         });
-      }
+      },
     );
   });
 });
diff --git a/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts
index d54d8649fb4..1710d2a6354 100644
--- a/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts
+++ b/handwritten/nodejs-datastore/test/gapic-mocks/runQuery.ts
@@ -25,7 +25,7 @@ describe('Run Query', () => {
   // This function is used for doing assertion checks.
   // The idea is to check that the right request gets passed to the commit function in the Gapic layer.
   function setRunQueryComparison(
-    compareFn: (request: protos.google.datastore.v1.IRunQueryRequest) => void
+    compareFn: (request: protos.google.datastore.v1.IRunQueryRequest) => void,
   ) {
     const dataClient = datastore.clients_.get(clientName);
     if (dataClient) {
@@ -34,8 +34,8 @@ describe('Run Query', () => {
         options: any,
         callback: (
           err?: unknown,
-          res?: protos.google.datastore.v1.IRunQueryResponse
-        ) => void
+          res?: protos.google.datastore.v1.IRunQueryResponse,
+        ) => void,
       ) => {
         try {
           compareFn(request);
@@ -72,7 +72,7 @@ describe('Run Query', () => {
           },
           projectId: 'project-id',
         });
-      }
+      },
     );
     const transaction = datastore.transaction();
     const query = datastore.createQuery('Task');
diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts
index eb73aadb9ee..33169355de8 100644
--- a/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts
+++ b/handwritten/nodejs-datastore/test/gapic_datastore_admin_v1.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -30,7 +30,7 @@ import {protobuf, LROperation, operationsProtos} from 'google-gax';
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
 const root = protobuf.Root.fromJSON(
-  require('../protos/protos.json')
+  require('../protos/protos.json'),
 ).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -47,7 +47,7 @@ function generateSampleMessage(instance: T) {
     instance.constructor as typeof protobuf.Message
   ).toObject(instance as protobuf.Message, {defaults: true});
   return (instance.constructor as typeof protobuf.Message).fromObject(
-    filledObject
+    filledObject,
   ) as T;
 }
 
@@ -59,7 +59,7 @@ function stubSimpleCall(response?: ResponseType, error?: Error) {
 
 function stubSimpleCallWithCallback(
   response?: ResponseType,
-  error?: Error
+  error?: Error,
 ) {
   return error
     ? sinon.stub().callsArgWith(2, error)
@@ -69,7 +69,7 @@ function stubSimpleCallWithCallback(
 function stubLongRunningCall(
   response?: ResponseType,
   callError?: Error,
-  lroError?: Error
+  lroError?: Error,
 ) {
   const innerStub = lroError
     ? sinon.stub().rejects(lroError)
@@ -85,7 +85,7 @@ function stubLongRunningCall(
 function stubLongRunningCallWithCallback(
   response?: ResponseType,
   callError?: Error,
-  lroError?: Error
+  lroError?: Error,
 ) {
   const innerStub = lroError
     ? sinon.stub().rejects(lroError)
@@ -100,7 +100,7 @@ function stubLongRunningCallWithCallback(
 
 function stubPageStreamingCall(
   responses?: ResponseType[],
-  error?: Error
+  error?: Error,
 ) {
   const pagingStub = sinon.stub();
   if (responses) {
@@ -138,7 +138,7 @@ function stubPageStreamingCall(
 
 function stubAsyncIterationCall(
   responses?: ResponseType[],
-  error?: Error
+  error?: Error,
 ) {
   let counter = 0;
   const asyncIterable = {
@@ -284,7 +284,9 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      client.initialize().catch((err: any) => {
+        throw err;
+      });
       assert(client.datastoreAdminStub);
       client.close().then(() => {
         done();
@@ -343,23 +345,23 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.GetIndexRequest()
+        new protos.google.datastore.admin.v1.GetIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.admin.v1.Index()
+        new protos.google.datastore.admin.v1.Index(),
       );
       client.innerApiCalls.getIndex = stubSimpleCall(expectedResponse);
       const [response] = await client.getIndex(request);
@@ -379,23 +381,23 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.GetIndexRequest()
+        new protos.google.datastore.admin.v1.GetIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.admin.v1.Index()
+        new protos.google.datastore.admin.v1.Index(),
       );
       client.innerApiCalls.getIndex =
         stubSimpleCallWithCallback(expectedResponse);
@@ -404,14 +406,14 @@ describe('v1.DatastoreAdminClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.admin.v1.IIndex | null
+            result?: protos.google.datastore.admin.v1.IIndex | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -431,21 +433,21 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.GetIndexRequest()
+        new protos.google.datastore.admin.v1.GetIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.getIndex = stubSimpleCall(undefined, expectedError);
       await assert.rejects(client.getIndex(request), expectedError);
@@ -464,18 +466,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.GetIndexRequest()
+        new protos.google.datastore.admin.v1.GetIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.GetIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
       const expectedError = new Error('The client has already been closed.');
@@ -490,18 +492,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ExportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ExportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ExportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.exportEntities =
         stubLongRunningCall(expectedResponse);
@@ -523,18 +525,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ExportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ExportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ExportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.exportEntities =
         stubLongRunningCallWithCallback(expectedResponse);
@@ -546,14 +548,14 @@ describe('v1.DatastoreAdminClient', () => {
             result?: LROperation<
               protos.google.datastore.admin.v1.IExportEntitiesResponse,
               protos.google.datastore.admin.v1.IExportEntitiesMetadata
-            > | null
+            > | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const operation = (await promise) as LROperation<
@@ -577,20 +579,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ExportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ExportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ExportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.exportEntities = stubLongRunningCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.exportEntities(request), expectedError);
       const actualRequest = (
@@ -608,21 +610,21 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ExportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ExportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ExportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.exportEntities = stubLongRunningCall(
         undefined,
         undefined,
-        expectedError
+        expectedError,
       );
       const [operation] = await client.exportEntities(request);
       await assert.rejects(operation.promise(), expectedError);
@@ -641,9 +643,9 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       expectedResponse.name = 'test';
       expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
@@ -651,7 +653,7 @@ describe('v1.DatastoreAdminClient', () => {
 
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const decodedOperation = await client.checkExportEntitiesProgress(
-        expectedResponse.name
+        expectedResponse.name,
       );
       assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
       assert(decodedOperation.metadata);
@@ -663,16 +665,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedError = new Error('expected');
 
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(
         client.checkExportEntitiesProgress(''),
-        expectedError
+        expectedError,
       );
       assert((client.operationsClient.getOperation as SinonStub).getCall(0));
     });
@@ -684,18 +686,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ImportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ImportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ImportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.importEntities =
         stubLongRunningCall(expectedResponse);
@@ -717,18 +719,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ImportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ImportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ImportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.importEntities =
         stubLongRunningCallWithCallback(expectedResponse);
@@ -740,14 +742,14 @@ describe('v1.DatastoreAdminClient', () => {
             result?: LROperation<
               protos.google.protobuf.IEmpty,
               protos.google.datastore.admin.v1.IImportEntitiesMetadata
-            > | null
+            > | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const operation = (await promise) as LROperation<
@@ -771,20 +773,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ImportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ImportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ImportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.importEntities = stubLongRunningCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.importEntities(request), expectedError);
       const actualRequest = (
@@ -802,21 +804,21 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ImportEntitiesRequest()
+        new protos.google.datastore.admin.v1.ImportEntitiesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ImportEntitiesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.importEntities = stubLongRunningCall(
         undefined,
         undefined,
-        expectedError
+        expectedError,
       );
       const [operation] = await client.importEntities(request);
       await assert.rejects(operation.promise(), expectedError);
@@ -835,9 +837,9 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       expectedResponse.name = 'test';
       expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
@@ -845,7 +847,7 @@ describe('v1.DatastoreAdminClient', () => {
 
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const decodedOperation = await client.checkImportEntitiesProgress(
-        expectedResponse.name
+        expectedResponse.name,
       );
       assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
       assert(decodedOperation.metadata);
@@ -857,16 +859,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedError = new Error('expected');
 
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(
         client.checkImportEntitiesProgress(''),
-        expectedError
+        expectedError,
       );
       assert((client.operationsClient.getOperation as SinonStub).getCall(0));
     });
@@ -878,18 +880,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.CreateIndexRequest()
+        new protos.google.datastore.admin.v1.CreateIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.CreateIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.createIndex = stubLongRunningCall(expectedResponse);
       const [operation] = await client.createIndex(request);
@@ -910,18 +912,18 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.CreateIndexRequest()
+        new protos.google.datastore.admin.v1.CreateIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.CreateIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.createIndex =
         stubLongRunningCallWithCallback(expectedResponse);
@@ -933,14 +935,14 @@ describe('v1.DatastoreAdminClient', () => {
             result?: LROperation<
               protos.google.datastore.admin.v1.IIndex,
               protos.google.datastore.admin.v1.IIndexOperationMetadata
-            > | null
+            > | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const operation = (await promise) as LROperation<
@@ -964,20 +966,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.CreateIndexRequest()
+        new protos.google.datastore.admin.v1.CreateIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.CreateIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.createIndex = stubLongRunningCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.createIndex(request), expectedError);
       const actualRequest = (
@@ -995,21 +997,21 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.CreateIndexRequest()
+        new protos.google.datastore.admin.v1.CreateIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.CreateIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.createIndex = stubLongRunningCall(
         undefined,
         undefined,
-        expectedError
+        expectedError,
       );
       const [operation] = await client.createIndex(request);
       await assert.rejects(operation.promise(), expectedError);
@@ -1028,9 +1030,9 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       expectedResponse.name = 'test';
       expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
@@ -1038,7 +1040,7 @@ describe('v1.DatastoreAdminClient', () => {
 
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const decodedOperation = await client.checkCreateIndexProgress(
-        expectedResponse.name
+        expectedResponse.name,
       );
       assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
       assert(decodedOperation.metadata);
@@ -1050,12 +1052,12 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedError = new Error('expected');
 
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.checkCreateIndexProgress(''), expectedError);
       assert((client.operationsClient.getOperation as SinonStub).getCall(0));
@@ -1068,23 +1070,23 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.DeleteIndexRequest()
+        new protos.google.datastore.admin.v1.DeleteIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.deleteIndex = stubLongRunningCall(expectedResponse);
       const [operation] = await client.deleteIndex(request);
@@ -1105,23 +1107,23 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.DeleteIndexRequest()
+        new protos.google.datastore.admin.v1.DeleteIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedResponse = generateSampleMessage(
-        new protos.google.longrunning.Operation()
+        new protos.google.longrunning.Operation(),
       );
       client.innerApiCalls.deleteIndex =
         stubLongRunningCallWithCallback(expectedResponse);
@@ -1133,14 +1135,14 @@ describe('v1.DatastoreAdminClient', () => {
             result?: LROperation<
               protos.google.datastore.admin.v1.IIndex,
               protos.google.datastore.admin.v1.IIndexOperationMetadata
-            > | null
+            > | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const operation = (await promise) as LROperation<
@@ -1164,25 +1166,25 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.DeleteIndexRequest()
+        new protos.google.datastore.admin.v1.DeleteIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.deleteIndex = stubLongRunningCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.deleteIndex(request), expectedError);
       const actualRequest = (
@@ -1200,26 +1202,26 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.DeleteIndexRequest()
+        new protos.google.datastore.admin.v1.DeleteIndexRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
       const defaultValue2 = getTypeDefaultValue(
         '.google.datastore.admin.v1.DeleteIndexRequest',
-        ['indexId']
+        ['indexId'],
       );
       request.indexId = defaultValue2;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}&index_id=${defaultValue2}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}&index_id=${defaultValue2 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.deleteIndex = stubLongRunningCall(
         undefined,
         undefined,
-        expectedError
+        expectedError,
       );
       const [operation] = await client.deleteIndex(request);
       await assert.rejects(operation.promise(), expectedError);
@@ -1238,9 +1240,9 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       expectedResponse.name = 'test';
       expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
@@ -1248,7 +1250,7 @@ describe('v1.DatastoreAdminClient', () => {
 
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const decodedOperation = await client.checkDeleteIndexProgress(
-        expectedResponse.name
+        expectedResponse.name,
       );
       assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
       assert(decodedOperation.metadata);
@@ -1260,12 +1262,12 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const expectedError = new Error('expected');
 
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.checkDeleteIndexProgress(''), expectedError);
       assert((client.operationsClient.getOperation as SinonStub).getCall(0));
@@ -1278,16 +1280,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = [
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
@@ -1311,16 +1313,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = [
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
@@ -1333,14 +1335,14 @@ describe('v1.DatastoreAdminClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.admin.v1.IIndex[] | null
+            result?: protos.google.datastore.admin.v1.IIndex[] | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1360,20 +1362,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.innerApiCalls.listIndexes = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.listIndexes(request), expectedError);
       const actualRequest = (
@@ -1391,16 +1393,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = [
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
@@ -1415,7 +1417,7 @@ describe('v1.DatastoreAdminClient', () => {
           'data',
           (response: protos.google.datastore.admin.v1.Index) => {
             responses.push(response);
-          }
+          },
         );
         stream.on('end', () => {
           resolve(responses);
@@ -1429,14 +1431,14 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.descriptors.page.listIndexes.createStream as SinonStub)
           .getCall(0)
-          .calledWith(client.innerApiCalls.listIndexes, request)
+          .calledWith(client.innerApiCalls.listIndexes, request),
       );
       assert(
         (client.descriptors.page.listIndexes.createStream as SinonStub)
           .getCall(0)
           .args[2].otherArgs.headers[
             'x-goog-request-params'
-          ].includes(expectedHeaderRequestParams)
+          ].includes(expectedHeaderRequestParams),
       );
     });
 
@@ -1445,20 +1447,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.descriptors.page.listIndexes.createStream = stubPageStreamingCall(
         undefined,
-        expectedError
+        expectedError,
       );
       const stream = client.listIndexesStream(request);
       const promise = new Promise((resolve, reject) => {
@@ -1467,7 +1469,7 @@ describe('v1.DatastoreAdminClient', () => {
           'data',
           (response: protos.google.datastore.admin.v1.Index) => {
             responses.push(response);
-          }
+          },
         );
         stream.on('end', () => {
           resolve(responses);
@@ -1480,14 +1482,14 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.descriptors.page.listIndexes.createStream as SinonStub)
           .getCall(0)
-          .calledWith(client.innerApiCalls.listIndexes, request)
+          .calledWith(client.innerApiCalls.listIndexes, request),
       );
       assert(
         (client.descriptors.page.listIndexes.createStream as SinonStub)
           .getCall(0)
           .args[2].otherArgs.headers[
             'x-goog-request-params'
-          ].includes(expectedHeaderRequestParams)
+          ].includes(expectedHeaderRequestParams),
       );
     });
 
@@ -1496,16 +1498,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedResponse = [
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
         generateSampleMessage(new protos.google.datastore.admin.v1.Index()),
@@ -1521,16 +1523,16 @@ describe('v1.DatastoreAdminClient', () => {
       assert.deepStrictEqual(responses, expectedResponse);
       assert.deepStrictEqual(
         (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall(
-          0
+          0,
         ).args[1],
-        request
+        request,
       );
       assert(
         (client.descriptors.page.listIndexes.asyncIterate as SinonStub)
           .getCall(0)
           .args[2].otherArgs.headers[
             'x-goog-request-params'
-          ].includes(expectedHeaderRequestParams)
+          ].includes(expectedHeaderRequestParams),
       );
     });
 
@@ -1539,20 +1541,20 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.admin.v1.ListIndexesRequest()
+        new protos.google.datastore.admin.v1.ListIndexesRequest(),
       );
       const defaultValue1 = getTypeDefaultValue(
         '.google.datastore.admin.v1.ListIndexesRequest',
-        ['projectId']
+        ['projectId'],
       );
       request.projectId = defaultValue1;
-      const expectedHeaderRequestParams = `project_id=${defaultValue1}`;
+      const expectedHeaderRequestParams = `project_id=${defaultValue1 ?? ''}`;
       const expectedError = new Error('expected');
       client.descriptors.page.listIndexes.asyncIterate = stubAsyncIterationCall(
         undefined,
-        expectedError
+        expectedError,
       );
       const iterable = client.listIndexesAsync(request);
       await assert.rejects(async () => {
@@ -1563,16 +1565,16 @@ describe('v1.DatastoreAdminClient', () => {
       });
       assert.deepStrictEqual(
         (client.descriptors.page.listIndexes.asyncIterate as SinonStub).getCall(
-          0
+          0,
         ).args[1],
-        request
+        request,
       );
       assert(
         (client.descriptors.page.listIndexes.asyncIterate as SinonStub)
           .getCall(0)
           .args[2].otherArgs.headers[
             'x-goog-request-params'
-          ].includes(expectedHeaderRequestParams)
+          ].includes(expectedHeaderRequestParams),
       );
     });
   });
@@ -1582,12 +1584,12 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const response = await client.getOperation(request);
@@ -1595,7 +1597,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.getOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes getOperation without error using callback', async () => {
@@ -1604,10 +1606,10 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       client.operationsClient.getOperation = sinon
         .stub()
@@ -1618,14 +1620,14 @@ describe('v1.DatastoreAdminClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: operationsProtos.google.longrunning.Operation | null
+            result?: operationsProtos.google.longrunning.Operation | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1638,12 +1640,12 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.getOperation(request);
@@ -1651,7 +1653,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.getOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1661,12 +1663,12 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.cancelOperation =
         stubSimpleCall(expectedResponse);
@@ -1675,7 +1677,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.cancelOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes cancelOperation without error using callback', async () => {
@@ -1684,10 +1686,10 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.cancelOperation = sinon
         .stub()
@@ -1698,14 +1700,14 @@ describe('v1.DatastoreAdminClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: protos.google.protobuf.Empty | null
+            result?: protos.google.protobuf.Empty | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1718,12 +1720,12 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.cancelOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.cancelOperation(request);
@@ -1731,7 +1733,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.cancelOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1741,12 +1743,12 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.deleteOperation =
         stubSimpleCall(expectedResponse);
@@ -1755,7 +1757,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.deleteOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes deleteOperation without error using callback', async () => {
@@ -1764,10 +1766,10 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.deleteOperation = sinon
         .stub()
@@ -1778,14 +1780,14 @@ describe('v1.DatastoreAdminClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: protos.google.protobuf.Empty | null
+            result?: protos.google.protobuf.Empty | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1798,12 +1800,12 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.deleteOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.deleteOperation(request);
@@ -1811,7 +1813,7 @@ describe('v1.DatastoreAdminClient', () => {
       assert(
         (client.operationsClient.deleteOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1822,23 +1824,22 @@ describe('v1.DatastoreAdminClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.ListOperationsRequest()
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
       );
       const expectedResponse = [
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
       ];
       client.operationsClient.descriptor.listOperations.asyncIterate =
         stubAsyncIterationCall(expectedResponse);
-      const responses: operationsProtos.google.longrunning.ListOperationsResponse[] =
-        [];
+      const responses: operationsProtos.google.longrunning.IOperation[] = [];
       const iterable = client.operationsClient.listOperationsAsync(request);
       for await (const resource of iterable) {
         responses.push(resource!);
@@ -1849,7 +1850,7 @@ describe('v1.DatastoreAdminClient', () => {
           client.operationsClient.descriptor.listOperations
             .asyncIterate as SinonStub
         ).getCall(0).args[1],
-        request
+        request,
       );
     });
     it('uses async iteration with listOperations with error', async () => {
@@ -1857,17 +1858,16 @@ describe('v1.DatastoreAdminClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.ListOperationsRequest()
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.descriptor.listOperations.asyncIterate =
         stubAsyncIterationCall(undefined, expectedError);
       const iterable = client.operationsClient.listOperationsAsync(request);
       await assert.rejects(async () => {
-        const responses: operationsProtos.google.longrunning.ListOperationsResponse[] =
-          [];
+        const responses: operationsProtos.google.longrunning.IOperation[] = [];
         for await (const resource of iterable) {
           responses.push(resource!);
         }
@@ -1877,7 +1877,7 @@ describe('v1.DatastoreAdminClient', () => {
           client.operationsClient.descriptor.listOperations
             .asyncIterate as SinonStub
         ).getCall(0).args[1],
-        request
+        request,
       );
     });
   });
diff --git a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts
index 7a23ec7d9fe..23c97b88c0e 100644
--- a/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts
+++ b/handwritten/nodejs-datastore/test/gapic_datastore_v1.ts
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ import {protobuf, operationsProtos} from 'google-gax';
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
 const root = protobuf.Root.fromJSON(
-  require('../protos/protos.json')
+  require('../protos/protos.json'),
 ).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -45,7 +45,7 @@ function generateSampleMessage(instance: T) {
     instance.constructor as typeof protobuf.Message
   ).toObject(instance as protobuf.Message, {defaults: true});
   return (instance.constructor as typeof protobuf.Message).fromObject(
-    filledObject
+    filledObject,
   ) as T;
 }
 
@@ -57,7 +57,7 @@ function stubSimpleCall(response?: ResponseType, error?: Error) {
 
 function stubSimpleCallWithCallback(
   response?: ResponseType,
-  error?: Error
+  error?: Error,
 ) {
   return error
     ? sinon.stub().callsArgWith(2, error)
@@ -66,7 +66,7 @@ function stubSimpleCallWithCallback(
 
 function stubAsyncIterationCall(
   responses?: ResponseType[],
-  error?: Error
+  error?: Error,
 ) {
   let counter = 0;
   const asyncIterable = {
@@ -210,7 +210,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      client.initialize().catch((err: any) => {
+        throw err;
+      });
       assert(client.datastoreStub);
       client.close().then(() => {
         done();
@@ -269,21 +271,21 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.LookupRequest()
+        new protos.google.datastore.v1.LookupRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.LookupResponse()
+        new protos.google.datastore.v1.LookupResponse(),
       );
       client.innerApiCalls.lookup = stubSimpleCall(expectedResponse);
       const [response] = await client.lookup(request);
       assert.deepStrictEqual(response, expectedResponse);
       const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -297,15 +299,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.LookupRequest()
+        new protos.google.datastore.v1.LookupRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.LookupResponse()
+        new protos.google.datastore.v1.LookupResponse(),
       );
       client.innerApiCalls.lookup =
         stubSimpleCallWithCallback(expectedResponse);
@@ -314,20 +316,20 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.ILookupResponse | null
+            result?: protos.google.datastore.v1.ILookupResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
       assert.deepStrictEqual(response, expectedResponse);
       const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -341,9 +343,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.LookupRequest()
+        new protos.google.datastore.v1.LookupRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -352,7 +354,7 @@ describe('v1.DatastoreClient', () => {
       client.innerApiCalls.lookup = stubSimpleCall(undefined, expectedError);
       await assert.rejects(client.lookup(request), expectedError);
       const actualRequest = (client.innerApiCalls.lookup as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -366,9 +368,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.LookupRequest()
+        new protos.google.datastore.v1.LookupRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -384,15 +386,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryRequest()
+        new protos.google.datastore.v1.RunQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryResponse()
+        new protos.google.datastore.v1.RunQueryResponse(),
       );
       client.innerApiCalls.runQuery = stubSimpleCall(expectedResponse);
       const [response] = await client.runQuery(request);
@@ -412,15 +414,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryRequest()
+        new protos.google.datastore.v1.RunQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryResponse()
+        new protos.google.datastore.v1.RunQueryResponse(),
       );
       client.innerApiCalls.runQuery =
         stubSimpleCallWithCallback(expectedResponse);
@@ -429,14 +431,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IRunQueryResponse | null
+            result?: protos.google.datastore.v1.IRunQueryResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -456,9 +458,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryRequest()
+        new protos.google.datastore.v1.RunQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -481,9 +483,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunQueryRequest()
+        new protos.google.datastore.v1.RunQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -499,15 +501,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryRequest()
+        new protos.google.datastore.v1.RunAggregationQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryResponse()
+        new protos.google.datastore.v1.RunAggregationQueryResponse(),
       );
       client.innerApiCalls.runAggregationQuery =
         stubSimpleCall(expectedResponse);
@@ -528,15 +530,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryRequest()
+        new protos.google.datastore.v1.RunAggregationQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryResponse()
+        new protos.google.datastore.v1.RunAggregationQueryResponse(),
       );
       client.innerApiCalls.runAggregationQuery =
         stubSimpleCallWithCallback(expectedResponse);
@@ -545,14 +547,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IRunAggregationQueryResponse | null
+            result?: protos.google.datastore.v1.IRunAggregationQueryResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -572,9 +574,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryRequest()
+        new protos.google.datastore.v1.RunAggregationQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -582,7 +584,7 @@ describe('v1.DatastoreClient', () => {
       const expectedError = new Error('expected');
       client.innerApiCalls.runAggregationQuery = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.runAggregationQuery(request), expectedError);
       const actualRequest = (
@@ -600,9 +602,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RunAggregationQueryRequest()
+        new protos.google.datastore.v1.RunAggregationQueryRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -618,15 +620,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionRequest()
+        new protos.google.datastore.v1.BeginTransactionRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionResponse()
+        new protos.google.datastore.v1.BeginTransactionResponse(),
       );
       client.innerApiCalls.beginTransaction = stubSimpleCall(expectedResponse);
       const [response] = await client.beginTransaction(request);
@@ -646,15 +648,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionRequest()
+        new protos.google.datastore.v1.BeginTransactionRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionResponse()
+        new protos.google.datastore.v1.BeginTransactionResponse(),
       );
       client.innerApiCalls.beginTransaction =
         stubSimpleCallWithCallback(expectedResponse);
@@ -663,14 +665,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IBeginTransactionResponse | null
+            result?: protos.google.datastore.v1.IBeginTransactionResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -690,9 +692,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionRequest()
+        new protos.google.datastore.v1.BeginTransactionRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -700,7 +702,7 @@ describe('v1.DatastoreClient', () => {
       const expectedError = new Error('expected');
       client.innerApiCalls.beginTransaction = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.beginTransaction(request), expectedError);
       const actualRequest = (
@@ -718,9 +720,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.BeginTransactionRequest()
+        new protos.google.datastore.v1.BeginTransactionRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -736,21 +738,21 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.CommitRequest()
+        new protos.google.datastore.v1.CommitRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.CommitResponse()
+        new protos.google.datastore.v1.CommitResponse(),
       );
       client.innerApiCalls.commit = stubSimpleCall(expectedResponse);
       const [response] = await client.commit(request);
       assert.deepStrictEqual(response, expectedResponse);
       const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -764,15 +766,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.CommitRequest()
+        new protos.google.datastore.v1.CommitRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.CommitResponse()
+        new protos.google.datastore.v1.CommitResponse(),
       );
       client.innerApiCalls.commit =
         stubSimpleCallWithCallback(expectedResponse);
@@ -781,20 +783,20 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.ICommitResponse | null
+            result?: protos.google.datastore.v1.ICommitResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
       assert.deepStrictEqual(response, expectedResponse);
       const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -808,9 +810,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.CommitRequest()
+        new protos.google.datastore.v1.CommitRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -819,7 +821,7 @@ describe('v1.DatastoreClient', () => {
       client.innerApiCalls.commit = stubSimpleCall(undefined, expectedError);
       await assert.rejects(client.commit(request), expectedError);
       const actualRequest = (client.innerApiCalls.commit as SinonStub).getCall(
-        0
+        0,
       ).args[0];
       assert.deepStrictEqual(actualRequest, request);
       const actualHeaderRequestParams = (
@@ -833,9 +835,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.CommitRequest()
+        new protos.google.datastore.v1.CommitRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -851,15 +853,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackRequest()
+        new protos.google.datastore.v1.RollbackRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackResponse()
+        new protos.google.datastore.v1.RollbackResponse(),
       );
       client.innerApiCalls.rollback = stubSimpleCall(expectedResponse);
       const [response] = await client.rollback(request);
@@ -879,15 +881,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackRequest()
+        new protos.google.datastore.v1.RollbackRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackResponse()
+        new protos.google.datastore.v1.RollbackResponse(),
       );
       client.innerApiCalls.rollback =
         stubSimpleCallWithCallback(expectedResponse);
@@ -896,14 +898,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IRollbackResponse | null
+            result?: protos.google.datastore.v1.IRollbackResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -923,9 +925,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackRequest()
+        new protos.google.datastore.v1.RollbackRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -948,9 +950,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.RollbackRequest()
+        new protos.google.datastore.v1.RollbackRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -966,15 +968,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsRequest()
+        new protos.google.datastore.v1.AllocateIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsResponse()
+        new protos.google.datastore.v1.AllocateIdsResponse(),
       );
       client.innerApiCalls.allocateIds = stubSimpleCall(expectedResponse);
       const [response] = await client.allocateIds(request);
@@ -994,15 +996,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsRequest()
+        new protos.google.datastore.v1.AllocateIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsResponse()
+        new protos.google.datastore.v1.AllocateIdsResponse(),
       );
       client.innerApiCalls.allocateIds =
         stubSimpleCallWithCallback(expectedResponse);
@@ -1011,14 +1013,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IAllocateIdsResponse | null
+            result?: protos.google.datastore.v1.IAllocateIdsResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1038,9 +1040,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsRequest()
+        new protos.google.datastore.v1.AllocateIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -1048,7 +1050,7 @@ describe('v1.DatastoreClient', () => {
       const expectedError = new Error('expected');
       client.innerApiCalls.allocateIds = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.allocateIds(request), expectedError);
       const actualRequest = (
@@ -1066,9 +1068,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.AllocateIdsRequest()
+        new protos.google.datastore.v1.AllocateIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -1084,15 +1086,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsRequest()
+        new protos.google.datastore.v1.ReserveIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsResponse()
+        new protos.google.datastore.v1.ReserveIdsResponse(),
       );
       client.innerApiCalls.reserveIds = stubSimpleCall(expectedResponse);
       const [response] = await client.reserveIds(request);
@@ -1112,15 +1114,15 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsRequest()
+        new protos.google.datastore.v1.ReserveIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
       const expectedHeaderRequestParams = 'database_id=value';
       const expectedResponse = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsResponse()
+        new protos.google.datastore.v1.ReserveIdsResponse(),
       );
       client.innerApiCalls.reserveIds =
         stubSimpleCallWithCallback(expectedResponse);
@@ -1129,14 +1131,14 @@ describe('v1.DatastoreClient', () => {
           request,
           (
             err?: Error | null,
-            result?: protos.google.datastore.v1.IReserveIdsResponse | null
+            result?: protos.google.datastore.v1.IReserveIdsResponse | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1156,9 +1158,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsRequest()
+        new protos.google.datastore.v1.ReserveIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -1166,7 +1168,7 @@ describe('v1.DatastoreClient', () => {
       const expectedError = new Error('expected');
       client.innerApiCalls.reserveIds = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(client.reserveIds(request), expectedError);
       const actualRequest = (
@@ -1184,9 +1186,9 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new protos.google.datastore.v1.ReserveIdsRequest()
+        new protos.google.datastore.v1.ReserveIdsRequest(),
       );
       // path template is empty
       request.databaseId = 'value';
@@ -1201,12 +1203,12 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
       const response = await client.getOperation(request);
@@ -1214,7 +1216,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.getOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes getOperation without error using callback', async () => {
@@ -1223,10 +1225,10 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new operationsProtos.google.longrunning.Operation()
+        new operationsProtos.google.longrunning.Operation(),
       );
       client.operationsClient.getOperation = sinon
         .stub()
@@ -1237,14 +1239,14 @@ describe('v1.DatastoreClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: operationsProtos.google.longrunning.Operation | null
+            result?: operationsProtos.google.longrunning.Operation | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1257,12 +1259,12 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.GetOperationRequest()
+        new operationsProtos.google.longrunning.GetOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.getOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.getOperation(request);
@@ -1270,7 +1272,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.getOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1280,12 +1282,12 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.cancelOperation =
         stubSimpleCall(expectedResponse);
@@ -1294,7 +1296,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.cancelOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes cancelOperation without error using callback', async () => {
@@ -1303,10 +1305,10 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.cancelOperation = sinon
         .stub()
@@ -1317,14 +1319,14 @@ describe('v1.DatastoreClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: protos.google.protobuf.Empty | null
+            result?: protos.google.protobuf.Empty | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1337,12 +1339,12 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.CancelOperationRequest()
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.cancelOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.cancelOperation(request);
@@ -1350,7 +1352,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.cancelOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1360,12 +1362,12 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.deleteOperation =
         stubSimpleCall(expectedResponse);
@@ -1374,7 +1376,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.deleteOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
     it('invokes deleteOperation without error using callback', async () => {
@@ -1383,10 +1385,10 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedResponse = generateSampleMessage(
-        new protos.google.protobuf.Empty()
+        new protos.google.protobuf.Empty(),
       );
       client.operationsClient.deleteOperation = sinon
         .stub()
@@ -1397,14 +1399,14 @@ describe('v1.DatastoreClient', () => {
           undefined,
           (
             err?: Error | null,
-            result?: protos.google.protobuf.Empty | null
+            result?: protos.google.protobuf.Empty | null,
           ) => {
             if (err) {
               reject(err);
             } else {
               resolve(result);
             }
-          }
+          },
         );
       });
       const response = await promise;
@@ -1417,12 +1419,12 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.DeleteOperationRequest()
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.deleteOperation = stubSimpleCall(
         undefined,
-        expectedError
+        expectedError,
       );
       await assert.rejects(async () => {
         await client.deleteOperation(request);
@@ -1430,7 +1432,7 @@ describe('v1.DatastoreClient', () => {
       assert(
         (client.operationsClient.deleteOperation as SinonStub)
           .getCall(0)
-          .calledWith(request)
+          .calledWith(request),
       );
     });
   });
@@ -1441,23 +1443,22 @@ describe('v1.DatastoreClient', () => {
         projectId: 'bogus',
       });
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.ListOperationsRequest()
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
       );
       const expectedResponse = [
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
         generateSampleMessage(
-          new operationsProtos.google.longrunning.ListOperationsResponse()
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
         ),
       ];
       client.operationsClient.descriptor.listOperations.asyncIterate =
         stubAsyncIterationCall(expectedResponse);
-      const responses: operationsProtos.google.longrunning.ListOperationsResponse[] =
-        [];
+      const responses: operationsProtos.google.longrunning.IOperation[] = [];
       const iterable = client.operationsClient.listOperationsAsync(request);
       for await (const resource of iterable) {
         responses.push(resource!);
@@ -1468,7 +1469,7 @@ describe('v1.DatastoreClient', () => {
           client.operationsClient.descriptor.listOperations
             .asyncIterate as SinonStub
         ).getCall(0).args[1],
-        request
+        request,
       );
     });
     it('uses async iteration with listOperations with error', async () => {
@@ -1476,17 +1477,16 @@ describe('v1.DatastoreClient', () => {
         credentials: {client_email: 'bogus', private_key: 'bogus'},
         projectId: 'bogus',
       });
-      client.initialize();
+      await client.initialize();
       const request = generateSampleMessage(
-        new operationsProtos.google.longrunning.ListOperationsRequest()
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
       );
       const expectedError = new Error('expected');
       client.operationsClient.descriptor.listOperations.asyncIterate =
         stubAsyncIterationCall(undefined, expectedError);
       const iterable = client.operationsClient.listOperationsAsync(request);
       await assert.rejects(async () => {
-        const responses: operationsProtos.google.longrunning.ListOperationsResponse[] =
-          [];
+        const responses: operationsProtos.google.longrunning.IOperation[] = [];
         for await (const resource of iterable) {
           responses.push(resource!);
         }
@@ -1496,7 +1496,7 @@ describe('v1.DatastoreClient', () => {
           client.operationsClient.descriptor.listOperations
             .asyncIterate as SinonStub
         ).getCall(0).args[1],
-        request
+        request,
       );
     });
   });
diff --git a/handwritten/nodejs-datastore/test/index.ts b/handwritten/nodejs-datastore/test/index.ts
index abd9c487fc3..a0074bd7f40 100644
--- a/handwritten/nodejs-datastore/test/index.ts
+++ b/handwritten/nodejs-datastore/test/index.ts
@@ -188,7 +188,7 @@ async.each(
           '../src/utils/entity/buildEntityProto.js',
           {
             '../../entity.js': {entity: fakeEntity},
-          }
+          },
         );
         Datastore = proxyquire('../src', {
           './entity.js': {entity: fakeEntity},
@@ -266,7 +266,7 @@ async.each(
         it('should set the default base URL', () => {
           assert.strictEqual(
             datastore.defaultBaseUrl_,
-            'datastore.googleapis.com'
+            'datastore.googleapis.com',
           );
         });
 
@@ -306,8 +306,8 @@ async.each(
                 port: 443,
                 projectId: undefined,
               },
-              options
-            )
+              options,
+            ),
           );
         });
 
@@ -374,7 +374,7 @@ async.each(
                 });
                 assert.strictEqual(
                   datastore.options.sslCreds,
-                  fakeInsecureCreds
+                  fakeInsecureCreds,
                 );
               });
             });
@@ -428,7 +428,7 @@ async.each(
                 });
                 assert.strictEqual(
                   datastore.options.sslCreds,
-                  fakeInsecureCreds
+                  fakeInsecureCreds,
                 );
               });
             });
@@ -456,7 +456,7 @@ async.each(
                 });
                 assert.strictEqual(
                   datastore.options.sslCreds,
-                  fakeInsecureCreds
+                  fakeInsecureCreds,
                 );
               });
             });
@@ -623,14 +623,14 @@ async.each(
         it('should expose a MORE_RESULTS_AFTER_CURSOR helper', () => {
           assert.strictEqual(
             Datastore.MORE_RESULTS_AFTER_CURSOR,
-            'MORE_RESULTS_AFTER_CURSOR'
+            'MORE_RESULTS_AFTER_CURSOR',
           );
         });
 
         it('should also be on the prototype', () => {
           assert.strictEqual(
             datastore.MORE_RESULTS_AFTER_CURSOR,
-            Datastore.MORE_RESULTS_AFTER_CURSOR
+            Datastore.MORE_RESULTS_AFTER_CURSOR,
           );
         });
       });
@@ -639,14 +639,14 @@ async.each(
         it('should expose a MORE_RESULTS_AFTER_LIMIT helper', () => {
           assert.strictEqual(
             Datastore.MORE_RESULTS_AFTER_LIMIT,
-            'MORE_RESULTS_AFTER_LIMIT'
+            'MORE_RESULTS_AFTER_LIMIT',
           );
         });
 
         it('should also be on the prototype', () => {
           assert.strictEqual(
             datastore.MORE_RESULTS_AFTER_LIMIT,
-            Datastore.MORE_RESULTS_AFTER_LIMIT
+            Datastore.MORE_RESULTS_AFTER_LIMIT,
           );
         });
       });
@@ -659,7 +659,7 @@ async.each(
         it('should also be on the prototype', () => {
           assert.strictEqual(
             datastore.NO_MORE_RESULTS,
-            Datastore.NO_MORE_RESULTS
+            Datastore.NO_MORE_RESULTS,
           );
         });
       });
@@ -704,7 +704,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.strictEqual(
               config.reqOpts.outputUrlPrefix,
-              `gs://${bucket}`
+              `gs://${bucket}`,
             );
             done();
           };
@@ -731,7 +731,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.strictEqual(
               config.reqOpts.outputUrlPrefix,
-              `gs://${bucket.name}`
+              `gs://${bucket.name}`,
             );
             done();
           };
@@ -752,7 +752,7 @@ async.each(
                 bucket: 'bucket',
                 outputUrlPrefix: 'output-url-prefix',
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `bucket` and `outputUrlPrefix` were provided\./);
         });
@@ -778,7 +778,7 @@ async.each(
                 kinds: ['kind1', 'kind2'],
                 entityFilter: {},
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `entityFilter` and `kinds` were provided\./);
         });
@@ -791,7 +791,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.deepStrictEqual(
               config.reqOpts.entityFilter.namespaceIds,
-              namespaces
+              namespaces,
             );
             done();
           };
@@ -807,7 +807,7 @@ async.each(
                 namespaces: ['ns1', 'ns2'],
                 entityFilter: {},
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `entityFilter` and `namespaces` were provided\./);
         });
@@ -906,11 +906,11 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.strictEqual(
               config.reqOpts.pageSize,
-              options.gaxOptions.pageSize
+              options.gaxOptions.pageSize,
             );
             assert.strictEqual(
               config.reqOpts.pageToken,
-              options.gaxOptions.pageToken
+              options.gaxOptions.pageToken,
             );
             done();
           };
@@ -981,7 +981,7 @@ async.each(
           // eslint-disable-next-line @typescript-eslint/no-explicit-any
           datastore.request_ = (config: any) => {
             assert(
-              Object.keys(options.gaxOptions).every(k => !config.reqOpts[k])
+              Object.keys(options.gaxOptions).every(k => !config.reqOpts[k]),
             );
             done();
           };
@@ -998,7 +998,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.strictEqual(
               config.gaxOpts.autoPaginate,
-              options.autoPaginate
+              options.autoPaginate,
             );
             done();
           };
@@ -1039,7 +1039,7 @@ async.each(
               assert.strictEqual(nextQuery, null);
               assert.strictEqual(apiResp, apiResponse);
               done();
-            }
+            },
           );
         });
 
@@ -1082,7 +1082,7 @@ async.each(
               assert.ifError(err);
               assert.deepStrictEqual(_nextQuery, nextQuery);
               done();
-            }
+            },
           );
         });
       });
@@ -1158,7 +1158,7 @@ async.each(
                 file: 'file',
                 inputUrl: 'gs://file',
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `file` and `inputUrl` were provided\./);
         });
@@ -1194,7 +1194,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.strictEqual(
               config.reqOpts.inputUrl,
-              `gs://${file.bucket.name}/${file.name}`
+              `gs://${file.bucket.name}/${file.name}`,
             );
             done();
           };
@@ -1229,7 +1229,7 @@ async.each(
                 kinds: ['kind1', 'kind2'],
                 entityFilter: {},
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `entityFilter` and `kinds` were provided\./);
         });
@@ -1242,7 +1242,7 @@ async.each(
           datastore.request_ = (config: any) => {
             assert.deepStrictEqual(
               config.reqOpts.entityFilter.namespaceIds,
-              namespaces
+              namespaces,
             );
             done();
           };
@@ -1258,7 +1258,7 @@ async.each(
                 namespaces: ['ns1', 'ns2'],
                 entityFilter: {},
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Both `entityFilter` and `namespaces` were provided\./);
         });
@@ -1476,7 +1476,7 @@ async.each(
               {key, data: {k: 'v'}},
               {key, data: {k: 'v'}},
             ],
-            done
+            done,
           );
         });
 
@@ -1508,7 +1508,7 @@ async.each(
           datastore.request_ = (config: RequestConfig, callback: Function) => {
             assert.deepStrictEqual(
               config.reqOpts!.mutations![0].upsert!.properties,
-              expectedProperties
+              expectedProperties,
             );
             callback();
           };
@@ -1540,7 +1540,7 @@ async.each(
               data: {},
             },
             gaxOptions,
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -1561,12 +1561,12 @@ async.each(
               },
               () => {
                 done('Should not reach callback');
-              }
+              },
             );
           } catch (err: unknown) {
             assert.strictEqual(
               (err as {message: string}).message,
-              'Unsupported field value, undefined, was provided.'
+              'Unsupported field value, undefined, was provided.',
             );
             done();
             return;
@@ -1591,14 +1591,14 @@ async.each(
               },
               () => {
                 done('Should not reach callback');
-              }
+              },
             );
           } catch (err: unknown) {
             assert(
               [
                 "Cannot read properties of null (reading 'toString')", // Later Node versions
                 "Cannot read property 'toString' of null", // Node 14
-              ].includes((err as {message: string}).message)
+              ].includes((err as {message: string}).message),
             );
             done();
             return;
@@ -1655,7 +1655,7 @@ async.each(
               {key, method: 'update', data: {k2: 'v2'}},
               {key, method: 'upsert', data: {k3: 'v3'}},
             ],
-            done
+            done,
           );
         });
 
@@ -1669,7 +1669,7 @@ async.each(
                   k: 'v',
                 },
               },
-              assert.ifError
+              assert.ifError,
             );
           }, /Method auto_insert_id not recognized/);
         });
@@ -1712,7 +1712,7 @@ async.each(
               assert.ifError(err);
               assert.strictEqual(mockCommitResponse, apiResponse);
               done();
-            }
+            },
           );
         });
 
@@ -1736,7 +1736,7 @@ async.each(
                 },
               ],
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -1763,7 +1763,7 @@ async.each(
                 },
               ],
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -1837,7 +1837,7 @@ async.each(
               data,
               excludeFromIndexes: ['.*'],
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -1919,7 +1919,7 @@ async.each(
                 'metadata.longStringArray[].*',
               ],
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -1946,7 +1946,7 @@ async.each(
                 },
               ],
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -2009,12 +2009,12 @@ async.each(
             assert.strictEqual(
               (config.reqOpts!.mutations![0].upsert! as Entity)
                 .excludeLargeProperties,
-              true
+              true,
             );
             assert.deepStrictEqual(
               (config.reqOpts!.mutations![0].upsert! as Entity)
                 .excludeFromIndexes,
-              excludeFromIndexes
+              excludeFromIndexes,
             );
             done();
           };
@@ -2025,7 +2025,7 @@ async.each(
               data,
               excludeLargeProperties: true,
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -2046,7 +2046,7 @@ async.each(
             assert.deepStrictEqual(
               config.reqOpts!.mutations![0].upsert!.properties!.name
                 .excludeFromIndexes,
-              true
+              true,
             );
             done();
           };
@@ -2057,7 +2057,7 @@ async.each(
               data,
               excludeLargeProperties: true,
             },
-            assert.ifError
+            assert.ifError,
           );
         });
 
@@ -2109,7 +2109,7 @@ async.each(
               assert.strictEqual(keyProtos[1], response.mutationResults[1].key);
 
               done();
-            }
+            },
           );
         });
 
@@ -2129,7 +2129,7 @@ async.each(
 
             assert.strictEqual(
               typeof datastore.requestCallbacks_[0],
-              'function'
+              'function',
             );
             assert.strictEqual(typeof datastore.requests_[0], 'object');
           });
@@ -2349,7 +2349,7 @@ async.each(
             (err: Error | null | undefined, urlSafeKey: string) => {
               assert.ifError(err);
               assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey);
-            }
+            },
           );
         });
 
@@ -2370,7 +2370,7 @@ async.each(
             (err: Error | null | undefined, urlSafeKey: string) => {
               assert.ifError(err);
               assert.strictEqual(urlSafeKey, base64EndocdedUrlSafeKey);
-            }
+            },
           );
         });
 
@@ -2385,7 +2385,7 @@ async.each(
             (err: Error | null | undefined, urlSafeKey: string) => {
               assert.strictEqual(err, error);
               assert.strictEqual(urlSafeKey, undefined);
-            }
+            },
           );
         });
       });
@@ -2495,7 +2495,7 @@ async.each(
                   // Mock out the request function to compare config passed into it.
                   datastore.request_ = (
                     config: RequestConfig,
-                    callback: RequestCallback
+                    callback: RequestCallback,
                   ) => {
                     try {
                       assert.deepStrictEqual(config, expectedConfig);
@@ -2510,13 +2510,13 @@ async.each(
                   const key = datastore.key(['Post', 'Post1']);
                   const entities = Object.assign(
                     {key},
-                    onSaveTest.entitiesWithoutKey
+                    onSaveTest.entitiesWithoutKey,
                   );
                   const results = await datastore.save(entities);
                   assert.deepStrictEqual(results, ['some-data']);
                 }
               });
-            }
+            },
           );
         });
       });
@@ -2529,7 +2529,7 @@ async.each(
           });
           assert.strictEqual(
             otherDatastore.getDatabaseId(),
-            SECOND_DATABASE_ID
+            SECOND_DATABASE_ID,
           );
         });
       });
@@ -2661,13 +2661,13 @@ async.each(
                 // Mock out the request function to compare config passed into it.
                 datastore.request_ = (
                   config: RequestConfig,
-                  callback: RequestCallback
+                  callback: RequestCallback,
                 ) => {
                   assert.deepStrictEqual(config.client, 'DatastoreClient');
                   assert.deepStrictEqual(config.method, 'runQuery');
                   assert.deepStrictEqual(
                     config.reqOpts?.explainOptions,
-                    modeOptions.expectedExplainOptions
+                    modeOptions.expectedExplainOptions,
                   );
                   callback(
                     null,
@@ -2678,8 +2678,8 @@ async.each(
                           moreResults: 'NO_MORE_RESULTS',
                         },
                       },
-                      modeOptions.explainMetrics
-                    )
+                      modeOptions.explainMetrics,
+                    ),
                   );
                 };
                 const ancestor = datastore.key(['Book', 'GoT']);
@@ -2688,28 +2688,28 @@ async.each(
                   .hasAncestor(ancestor);
                 const [entities, info] = await datastore.runQuery(
                   q,
-                  modeOptions.options
+                  modeOptions.options,
                 );
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(
                   info,
                   Object.assign(
                     {moreResults: 'NO_MORE_RESULTS'},
-                    modeOptions.expectedInfo
-                  )
+                    modeOptions.expectedInfo,
+                  ),
                 );
               });
               it('should provide correct request/response data for runAggregationQuery', async () => {
                 // Mock out the request function to compare config passed into it.
                 datastore.request_ = (
                   config: RequestConfig,
-                  callback: RequestCallback
+                  callback: RequestCallback,
                 ) => {
                   assert.deepStrictEqual(config.client, 'DatastoreClient');
                   assert.deepStrictEqual(config.method, 'runAggregationQuery');
                   assert.deepStrictEqual(
                     config.reqOpts?.explainOptions,
-                    modeOptions.expectedExplainOptions
+                    modeOptions.expectedExplainOptions,
                   );
                   callback(
                     null,
@@ -2720,8 +2720,8 @@ async.each(
                           moreResults: 'NO_MORE_RESULTS',
                         },
                       },
-                      modeOptions.explainMetrics
-                    )
+                      modeOptions.explainMetrics,
+                    ),
                   );
                 };
                 const ancestor = datastore.key(['Book', 'GoT']);
@@ -2733,15 +2733,15 @@ async.each(
                   .addAggregation(AggregateField.sum('appearances'));
                 const [entities, info] = await datastore.runAggregationQuery(
                   aggregate,
-                  modeOptions.options
+                  modeOptions.options,
                 );
                 assert.deepStrictEqual(entities, []);
                 assert.deepStrictEqual(info, modeOptions.expectedInfo);
               });
             });
-          }
+          },
         );
       });
     });
-  }
+  },
 );
diff --git a/handwritten/nodejs-datastore/test/query.ts b/handwritten/nodejs-datastore/test/query.ts
index a6d32f6967a..7238a443342 100644
--- a/handwritten/nodejs-datastore/test/query.ts
+++ b/handwritten/nodejs-datastore/test/query.ts
@@ -86,7 +86,7 @@ describe('Query', () => {
             {
               alias: 'alias1',
               count: {},
-            }
+            },
           );
         });
         it('should produce the right proto with a sum aggregation', () => {
@@ -100,7 +100,7 @@ describe('Query', () => {
                   name: 'property1',
                 },
               },
-            }
+            },
           );
         });
         it('should produce the right proto with an average aggregation', () => {
@@ -114,7 +114,7 @@ describe('Query', () => {
                 },
               },
               operator: 'avg',
-            }
+            },
           );
         });
       });
@@ -126,21 +126,21 @@ describe('Query', () => {
 
         function compareAggregations(
           aggregateQuery: AggregateQuery,
-          aggregateFields: AggregateField[]
+          aggregateFields: AggregateField[],
         ) {
           const addAggregationsAggregate = generateAggregateQuery();
           addAggregationsAggregate.addAggregations(aggregateFields);
           const addAggregationAggregate = generateAggregateQuery();
           aggregateFields.forEach(aggregateField =>
-            addAggregationAggregate.addAggregation(aggregateField)
+            addAggregationAggregate.addAggregation(aggregateField),
           );
           assert.deepStrictEqual(
             aggregateQuery.aggregations,
-            addAggregationsAggregate.aggregations
+            addAggregationsAggregate.aggregations,
           );
           assert.deepStrictEqual(
             aggregateQuery.aggregations,
-            addAggregationAggregate.aggregations
+            addAggregationAggregate.aggregations,
           );
           assert.deepStrictEqual(aggregateQuery.aggregations, aggregateFields);
         }
@@ -149,8 +149,8 @@ describe('Query', () => {
             compareAggregations(
               generateAggregateQuery().count('total1').count('total2'),
               ['total1', 'total2'].map(alias =>
-                AggregateField.count().alias(alias)
-              )
+                AggregateField.count().alias(alias),
+              ),
             );
           });
           it('should compare equivalent sum aggregation queries', () => {
@@ -161,7 +161,7 @@ describe('Query', () => {
               [
                 AggregateField.sum('property1').alias('alias1'),
                 AggregateField.sum('property2').alias('alias2'),
-              ]
+              ],
             );
           });
           it('should compare equivalent average aggregation queries', () => {
@@ -172,7 +172,7 @@ describe('Query', () => {
               [
                 AggregateField.average('property1').alias('alias1'),
                 AggregateField.average('property2').alias('alias2'),
-              ]
+              ],
             );
           });
         });
@@ -180,13 +180,16 @@ describe('Query', () => {
           it('should compare equivalent count aggregation queries', () => {
             compareAggregations(
               generateAggregateQuery().count().count(),
-              ['total1', 'total2'].map(() => AggregateField.count())
+              ['total1', 'total2'].map(() => AggregateField.count()),
             );
           });
           it('should compare equivalent sum aggregation queries', () => {
             compareAggregations(
               generateAggregateQuery().sum('property1').sum('property2'),
-              [AggregateField.sum('property1'), AggregateField.sum('property2')]
+              [
+                AggregateField.sum('property1'),
+                AggregateField.sum('property2'),
+              ],
             );
           });
           it('should compare equivalent average aggregation queries', () => {
@@ -197,7 +200,7 @@ describe('Query', () => {
               [
                 AggregateField.average('property1'),
                 AggregateField.average('property2'),
-              ]
+              ],
             );
           });
         });
@@ -210,7 +213,7 @@ describe('Query', () => {
       const onWarning = (warning: {message: unknown}) => {
         assert.strictEqual(
           warning.message,
-          'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter'
+          'Providing Filter objects like Composite Filter or Property Filter is recommended when using .filter',
         );
         process.removeListener('warning', onWarning);
         done();
@@ -294,7 +297,7 @@ describe('Query', () => {
       const query = new Query(['kind1']).filter(
         'count',
         '       <        ',
-        123
+        123,
       );
 
       assert.strictEqual(query.filters[0].op, '<');
@@ -331,7 +334,7 @@ describe('Query', () => {
     it('should support filter with Filter', () => {
       const now = new Date();
       const query = new Query(['kind1']).filter(
-        new PropertyFilter('date', '<=', now)
+        new PropertyFilter('date', '<=', now),
       );
       const filter = query.entityFilters[0];
 
@@ -345,7 +348,7 @@ describe('Query', () => {
         or([
           new PropertyFilter('date', '<=', now),
           new PropertyFilter('name', '=', 'Stephen'),
-        ])
+        ]),
       );
       const filter = query.entityFilters[0];
       assert.strictEqual(filter.op, 'OR');
@@ -362,11 +365,11 @@ describe('Query', () => {
     it('should accept null as value', () => {
       assert.strictEqual(
         new Query(['kind1']).filter('status', null).filters.pop()?.val,
-        null
+        null,
       );
       assert.strictEqual(
         new Query(['kind1']).filter('status', '=', null).filters.pop()?.val,
-        null
+        null,
       );
     });
   });
@@ -603,14 +606,14 @@ describe('Query', () => {
       dataClient['commit'] = (
         request: any,
         options: any,
-        callback: (err?: unknown) => void
+        callback: (err?: unknown) => void,
       ) => {
         try {
           assert.strictEqual(request.databaseId, SECOND_DATABASE_ID);
           assert.strictEqual(request.projectId, projectId);
           assert.strictEqual(
             options.headers['google-cloud-resource-prefix'],
-            `projects/${projectId}`
+            `projects/${projectId}`,
           );
         } catch (e) {
           callback(e);
diff --git a/handwritten/nodejs-datastore/test/request.ts b/handwritten/nodejs-datastore/test/request.ts
index 600421c16ab..48f582381a1 100644
--- a/handwritten/nodejs-datastore/test/request.ts
+++ b/handwritten/nodejs-datastore/test/request.ts
@@ -113,7 +113,7 @@ describe('Request', () => {
       assert.notStrictEqual(preparedEntityObject.data.nested, obj.data.nested);
       assert.deepStrictEqual(
         preparedEntityObject,
-        expectedPreparedEntityObject
+        expectedPreparedEntityObject,
       );
     });
 
@@ -123,7 +123,7 @@ describe('Request', () => {
       const entityObject: any = {data: true};
       entityObject[entity.KEY_SYMBOL] = key;
       const preparedEntityObject = Request.prepareEntityObject_(
-        entityObject
+        entityObject,
       ) as Any;
       assert.strictEqual(preparedEntityObject.key, key);
       assert.strictEqual(preparedEntityObject.data.data, entityObject.data);
@@ -218,7 +218,7 @@ describe('Request', () => {
             assert.strictEqual(keys, null);
             assert.strictEqual(resp, API_RESPONSE);
             done();
-          }
+          },
         );
       });
     });
@@ -251,7 +251,7 @@ describe('Request', () => {
             assert.deepStrictEqual(keys, [key]);
             assert.strictEqual(resp, API_RESPONSE);
             done();
-          }
+          },
         );
       });
     });
@@ -284,7 +284,7 @@ describe('Request', () => {
         assert.strictEqual(config.method, 'lookup');
         assert.deepStrictEqual(
           config.reqOpts!.keys[0],
-          entity.keyToKeyProto(key)
+          entity.keyToKeyProto(key),
         );
         done();
       };
@@ -390,7 +390,7 @@ describe('Request', () => {
           .on('error', (err: Error) => {
             assert.deepStrictEqual(
               err,
-              outOfBoundsError({integerValue: largeInt, propertyName})
+              outOfBoundsError({integerValue: largeInt, propertyName}),
             );
             setImmediate(() => {
               assert.strictEqual(stream.destroyed, true);
@@ -637,7 +637,7 @@ describe('Request', () => {
           assert.ifError(err);
           assert.deepStrictEqual(resp, apiResponse);
           done();
-        }
+        },
       );
     });
 
@@ -786,7 +786,7 @@ describe('Request', () => {
               request.createReadStream.getCall(0).args[1];
             assert.strictEqual(
               typeof createReadStreamOptions.wrapNumbers,
-              'boolean'
+              'boolean',
             );
             done();
           });
@@ -808,14 +808,14 @@ describe('Request', () => {
                 request.createReadStream.getCall(0).args[1];
               assert.strictEqual(
                 createReadStreamOptions.wrapNumbers,
-                integerTypeCastOptions
+                integerTypeCastOptions,
               );
               assert.deepStrictEqual(
                 createReadStreamOptions.wrapNumbers,
-                integerTypeCastOptions
+                integerTypeCastOptions,
               );
               done();
-            }
+            },
           );
         });
       });
@@ -876,7 +876,7 @@ describe('Request', () => {
         assert.strictEqual(config.reqOpts!.query, queryProto);
         assert.strictEqual(
           config.reqOpts!.partitionId!.namespaceId,
-          query.namespace
+          query.namespace,
         );
         assert.strictEqual(config.gaxOpts, undefined);
 
@@ -988,7 +988,7 @@ describe('Request', () => {
           .on('error', (err: Error) => {
             assert.deepStrictEqual(
               err,
-              outOfBoundsError({integerValue: largeInt, propertyName})
+              outOfBoundsError({integerValue: largeInt, propertyName}),
             );
             setImmediate(() => {
               assert.strictEqual(stream.destroyed, true);
@@ -1122,7 +1122,7 @@ describe('Request', () => {
         sandbox.stub(entity, 'formatArray').callsFake(array => {
           assert.strictEqual(
             array,
-            entityResultsPerApiCall[timesRequestCalled]
+            entityResultsPerApiCall[timesRequestCalled],
           );
           return entityResultsPerApiCall[timesRequestCalled];
         });
@@ -1151,7 +1151,7 @@ describe('Request', () => {
         FakeQuery.prototype.start = function (endCursor) {
           assert.strictEqual(
             endCursor,
-            apiResponse.batch.endCursor.toString('base64')
+            apiResponse.batch.endCursor.toString('base64'),
           );
           startCalled = true;
           return this;
@@ -1168,7 +1168,7 @@ describe('Request', () => {
           if (timesRequestCalled === 1) {
             assert.strictEqual(
               limit_,
-              entityResultsPerApiCall[1].length - query.limitVal
+              entityResultsPerApiCall[1].length - query.limitVal,
             );
           } else {
             // Should restore the original limit.
@@ -1340,7 +1340,7 @@ describe('Request', () => {
             assert.strictEqual(spy.args[0], query);
             assert.strictEqual(spy.args[1], options);
             done();
-          }
+          },
         );
       });
 
@@ -1380,14 +1380,14 @@ describe('Request', () => {
               const runQueryOptions = request.runQueryStream.getCall(0).args[1];
               assert.strictEqual(
                 runQueryOptions.wrapNumbers,
-                integerTypeCastOptions
+                integerTypeCastOptions,
               );
               assert.deepStrictEqual(
                 runQueryOptions.wrapNumbers,
-                integerTypeCastOptions
+                integerTypeCastOptions,
               );
               done();
-            }
+            },
           );
         });
       });
@@ -1494,7 +1494,7 @@ describe('Request', () => {
       transaction.save = (modifiedData: PrepareEntityObjectResponse) => {
         assert.deepStrictEqual(
           modifiedData.data,
-          Object.assign({}, entityObject, updatedEntityObject)
+          Object.assign({}, entityObject, updatedEntityObject),
         );
       };
 
@@ -1517,7 +1517,7 @@ describe('Request', () => {
         transaction.modifiedEntities_.forEach((entity, index) => {
           assert.deepStrictEqual(
             entity.args[0].data,
-            Object.assign({}, entityObject, updatedEntityObject[index])
+            Object.assign({}, entityObject, updatedEntityObject[index]),
           );
         });
         return [{}] as CommitResponse;
@@ -1528,7 +1528,7 @@ describe('Request', () => {
           {key, data: updatedEntityObject[0]},
           {key, data: updatedEntityObject[1]},
         ],
-        done
+        done,
       );
     });
 
@@ -1725,7 +1725,7 @@ describe('Request', () => {
           (err: Error, requestFn: Function) => {
             assert.ifError(err);
             requestFn();
-          }
+          },
         );
       });
     });
@@ -1755,7 +1755,7 @@ describe('Request', () => {
           (err: Error, requestFn: Function) => {
             assert.ifError(err);
             requestFn();
-          }
+          },
         );
       });
 
@@ -1776,7 +1776,7 @@ describe('Request', () => {
           (err: Error, requestFn: Function) => {
             assert.ifError(err);
             requestFn();
-          }
+          },
         );
       });
 
@@ -1790,7 +1790,7 @@ describe('Request', () => {
           lookup(reqOpts: RequestOptions) {
             assert.strictEqual(
               reqOpts.readOptions!.transaction,
-              TRANSACTION_ID
+              TRANSACTION_ID,
             );
             done();
           },
@@ -1801,7 +1801,7 @@ describe('Request', () => {
           (err: Error, requestFn: Function) => {
             assert.ifError(err);
             requestFn();
-          }
+          },
         );
       });
 
@@ -1815,7 +1815,7 @@ describe('Request', () => {
           runQuery(reqOpts: RequestOptions) {
             assert.strictEqual(
               reqOpts.readOptions!.transaction,
-              TRANSACTION_ID
+              TRANSACTION_ID,
             );
             done();
           },
@@ -1826,7 +1826,7 @@ describe('Request', () => {
           (err: Error, requestFn: Function) => {
             assert.ifError(err);
             requestFn();
-          }
+          },
         );
       });
 
diff --git a/handwritten/nodejs-datastore/test/transaction.ts b/handwritten/nodejs-datastore/test/transaction.ts
index 4d4a1ebdf25..4da7bdb1710 100644
--- a/handwritten/nodejs-datastore/test/transaction.ts
+++ b/handwritten/nodejs-datastore/test/transaction.ts
@@ -197,12 +197,12 @@ async.each(
           // This is useful for tests that need to know when the mocked function is called.
           callBackSignaler: (
             callbackReached: GapicFunctionName,
-            request?: RequestType
+            request?: RequestType,
           ) => void = () => {};
 
           constructor(
             err: Error | null = null,
-            resp: google.datastore.v1.IBeginTransactionResponse = testRunResp
+            resp: google.datastore.v1.IBeginTransactionResponse = testRunResp,
           ) {
             const namespace = 'run-without-mock';
             const projectId = 'project-id';
@@ -223,7 +223,7 @@ async.each(
             // Datastore Gapic clients haven't been initialized yet, so we initialize them here.
             datastore.clients_.set(
               dataClientName,
-              new gapic.v1[dataClientName](options)
+              new gapic.v1[dataClientName](options),
             );
             const dataClient = datastore.clients_.get(dataClientName);
             // Mock begin transaction
@@ -241,13 +241,13 @@ async.each(
                   | null
                   | undefined,
                   {} | null | undefined
-                >
+                >,
               ) => {
                 // Calls a user provided function that will receive this string
                 // Usually used to track when this code was reached relative to other code
                 this.callBackSignaler(
                   GapicFunctionName.BEGIN_TRANSACTION,
-                  request
+                  request,
                 );
                 callback(err, resp);
               };
@@ -262,7 +262,7 @@ async.each(
           mockGapicFunction(
             functionName: GapicFunctionName,
             response: ResponseType,
-            error: Error | null
+            error: Error | null,
           ) {
             const dataClient = this.dataClient;
             // Check here that function hasn't been mocked out already
@@ -286,7 +286,7 @@ async.each(
                   ResponseType,
                   RequestType | null | undefined,
                   {} | null | undefined
-                >
+                >,
               ) => {
                 this.callBackSignaler(functionName, request);
                 callback(error, response);
@@ -327,7 +327,7 @@ async.each(
           beforeEach(async () => {
             transactionWrapper = new MockedTransactionWrapper(
               new Error(testErrorMessage),
-              undefined
+              undefined,
             );
           });
           it('should send back the error when awaiting a promise', async () => {
@@ -341,7 +341,7 @@ async.each(
           it('should send back the error when using a callback', done => {
             const commitCallback: CommitCallback = (
               error: Error | null | undefined,
-              response?: google.datastore.v1.ICommitResponse
+              response?: google.datastore.v1.ICommitResponse,
             ) => {
               try {
                 assert(error);
@@ -382,7 +382,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.COMMIT,
                 testCommitResp,
-                new Error(testErrorMessage)
+                new Error(testErrorMessage),
               );
             });
 
@@ -398,7 +398,7 @@ async.each(
             it('should send back the error when using a callback', done => {
               const commitCallback: CommitCallback = (
                 error: Error | null | undefined,
-                response?: google.datastore.v1.ICommitResponse
+                response?: google.datastore.v1.ICommitResponse,
               ) => {
                 try {
                   assert(error);
@@ -419,7 +419,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.COMMIT,
                 testCommitResp,
-                null
+                null,
               );
             });
             it('should send back the response when awaiting a promise', async () => {
@@ -431,7 +431,7 @@ async.each(
             it('should send back the response when using a callback', done => {
               const commitCallback: CommitCallback = (
                 error: Error | null | undefined,
-                response?: google.datastore.v1.ICommitResponse
+                response?: google.datastore.v1.ICommitResponse,
               ) => {
                 try {
                   assert.strictEqual(error, null);
@@ -489,7 +489,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_AGGREGATION_QUERY,
                 runAggregationQueryResp,
-                new Error(testErrorMessage)
+                new Error(testErrorMessage),
               );
             });
 
@@ -505,7 +505,7 @@ async.each(
             it('should send back the error when using a callback', done => {
               const runAggregateQueryCallback: RequestCallback = (
                 error: Error | null | undefined,
-                response?: unknown
+                response?: unknown,
               ) => {
                 try {
                   assert(error);
@@ -519,7 +519,7 @@ async.each(
               transaction.run(() => {
                 transaction.runAggregationQuery(
                   aggregate,
-                  runAggregateQueryCallback
+                  runAggregateQueryCallback,
                 );
               });
             });
@@ -529,7 +529,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_AGGREGATION_QUERY,
                 runAggregationQueryResp,
-                null
+                null,
               );
             });
             it('should send back the response when awaiting a promise', async () => {
@@ -539,13 +539,13 @@ async.each(
               const [runAggregateQueryResults] = allResults;
               assert.deepStrictEqual(
                 runAggregateQueryResults,
-                runAggregationQueryUserResp
+                runAggregationQueryUserResp,
               );
             });
             it('should send back the response when using a callback', done => {
               const runAggregateQueryCallback: CommitCallback = (
                 error: Error | null | undefined,
-                response?: unknown
+                response?: unknown,
               ) => {
                 try {
                   assert.strictEqual(error, null);
@@ -558,7 +558,7 @@ async.each(
               transaction.run(() => {
                 transaction.runAggregationQuery(
                   aggregate,
-                  runAggregateQueryCallback
+                  runAggregateQueryCallback,
                 );
               });
             });
@@ -594,7 +594,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_QUERY,
                 runQueryResp,
-                new Error(testErrorMessage)
+                new Error(testErrorMessage),
               );
             });
 
@@ -611,7 +611,7 @@ async.each(
               const callback: RunQueryCallback = (
                 error: Error | null | undefined,
                 entities?: Entity[],
-                info?: RunQueryInfo
+                info?: RunQueryInfo,
               ) => {
                 try {
                   assert(error);
@@ -633,7 +633,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_QUERY,
                 runQueryResp,
-                null
+                null,
               );
             });
             it('should send back the response when awaiting a promise', async () => {
@@ -646,7 +646,7 @@ async.each(
               const callback: RunQueryCallback = (
                 error: Error | null | undefined,
                 entities?: Entity[],
-                info?: RunQueryInfo
+                info?: RunQueryInfo,
               ) => {
                 try {
                   assert.strictEqual(error, null);
@@ -711,7 +711,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.LOOKUP,
                 getResp,
-                new Error(testErrorMessage)
+                new Error(testErrorMessage),
               );
             });
 
@@ -727,7 +727,7 @@ async.each(
             it('should send back the error when using a callback', done => {
               const callback: GetCallback = (
                 err?: Error | null,
-                entity?: Entities
+                entity?: Entities,
               ) => {
                 try {
                   assert(err);
@@ -748,7 +748,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.LOOKUP,
                 getResp,
-                null
+                null,
               );
             });
             it('should send back the response when awaiting a promise', async () => {
@@ -760,7 +760,7 @@ async.each(
             it('should send back the response when using a callback', done => {
               const callback: GetCallback = (
                 err?: Error | null,
-                entity?: Entities
+                entity?: Entities,
               ) => {
                 try {
                   const result = entity[transactionWrapper.datastore.KEY];
@@ -938,12 +938,12 @@ async.each(
                 try {
                   assert.deepStrictEqual(
                     this.eventOrder,
-                    this.expectedEventOrder
+                    this.expectedEventOrder,
                   );
                   if (this.expectedRequests) {
                     assert.deepStrictEqual(
                       this.requests,
-                      this.expectedRequests
+                      this.expectedRequests,
                     );
                   }
                   this.#done();
@@ -960,14 +960,14 @@ async.each(
               expectedRequests?: {
                 call: GapicFunctionName;
                 request?: RequestType;
-              }[]
+              }[],
             ) {
               this.expectedEventOrder = expectedOrder;
               this.expectedRequests = expectedRequests;
               this.#done = done;
               transactionWrapper.callBackSignaler = (
                 call: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   this.requests.push({call, request});
@@ -1003,7 +1003,7 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.COMMIT,
                 testCommitResp,
-                null
+                null,
               );
             });
 
@@ -1017,7 +1017,7 @@ async.each(
                   UserCodeEvent.RUN_CALLBACK,
                   GapicFunctionName.COMMIT,
                   UserCodeEvent.COMMIT_CALLBACK,
-                ]
+                ],
               );
               transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK));
               transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK));
@@ -1032,7 +1032,7 @@ async.each(
                   GapicFunctionName.BEGIN_TRANSACTION,
                   GapicFunctionName.COMMIT,
                   UserCodeEvent.COMMIT_CALLBACK,
-                ]
+                ],
               );
               transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK));
               tester.push(UserCodeEvent.CUSTOM_EVENT)();
@@ -1046,7 +1046,7 @@ async.each(
                   GapicFunctionName.BEGIN_TRANSACTION,
                   UserCodeEvent.RUN_CALLBACK,
                   UserCodeEvent.RUN_CALLBACK,
-                ]
+                ],
               );
               transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK));
               transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK));
@@ -1062,7 +1062,7 @@ async.each(
                   UserCodeEvent.RUN_CALLBACK,
                   GapicFunctionName.COMMIT,
                   UserCodeEvent.COMMIT_CALLBACK,
-                ]
+                ],
               );
               transaction.commit(tester.push(UserCodeEvent.COMMIT_CALLBACK));
               transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK));
@@ -1076,22 +1076,22 @@ async.each(
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.COMMIT,
                 testCommitResp,
-                null
+                null,
               );
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.LOOKUP,
                 testLookupResp,
-                null
+                null,
               );
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_QUERY,
                 testRunQueryResp,
-                null
+                null,
               );
               transactionWrapper.mockGapicFunction(
                 GapicFunctionName.RUN_AGGREGATION_QUERY,
                 testRunAggregationQueryResp,
-                null
+                null,
               );
             });
             const beginTransactionRequest = {
@@ -1181,7 +1181,7 @@ async.each(
                     GapicFunctionName.COMMIT,
                     UserCodeEvent.COMMIT_CALLBACK,
                   ],
-                  expectedRequests
+                  expectedRequests,
                 );
                 transaction.save({
                   key,
@@ -1199,7 +1199,7 @@ async.each(
                     GapicFunctionName.COMMIT,
                     UserCodeEvent.COMMIT_CALLBACK,
                   ],
-                  expectedRequests
+                  expectedRequests,
                 );
                 transaction.save({
                   key,
@@ -1241,7 +1241,7 @@ async.each(
                     UserCodeEvent.GET_CALLBACK,
                     UserCodeEvent.GET_CALLBACK,
                   ],
-                  expectedRequests
+                  expectedRequests,
                 );
                 transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK));
                 transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK));
@@ -1283,7 +1283,7 @@ async.each(
                     UserCodeEvent.GET_CALLBACK,
                     UserCodeEvent.GET_CALLBACK,
                   ],
-                  expectedRequests
+                  expectedRequests,
                 );
                 transaction.run(tester.push(UserCodeEvent.RUN_CALLBACK));
                 transaction.get(key, tester.push(UserCodeEvent.GET_CALLBACK));
@@ -1385,22 +1385,22 @@ async.each(
             transactionWrapper.mockGapicFunction(
               GapicFunctionName.RUN_AGGREGATION_QUERY,
               runAggregationQueryResp,
-              null
+              null,
             );
             transactionWrapper.mockGapicFunction(
               GapicFunctionName.LOOKUP,
               getResp,
-              null
+              null,
             );
             transactionWrapper.mockGapicFunction(
               GapicFunctionName.RUN_QUERY,
               runQueryResp,
-              null
+              null,
             );
             transactionWrapper.mockGapicFunction(
               GapicFunctionName.COMMIT,
               testCommitResp,
-              null
+              null,
             );
           });
           describe('lookup, lookup, put, commit', () => {
@@ -1410,13 +1410,13 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
                     case GapicFunctionName.BEGIN_TRANSACTION:
                       throw Error(
-                        'BeginTransaction should not have been called'
+                        'BeginTransaction should not have been called',
                       );
                     case GapicFunctionName.LOOKUP: {
                       const lookupRequest =
@@ -1444,25 +1444,25 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       done();
                       break;
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.get(key);
@@ -1480,7 +1480,7 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -1504,11 +1504,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -1516,14 +1516,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.run();
@@ -1543,13 +1543,13 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
                     case GapicFunctionName.BEGIN_TRANSACTION:
                       throw Error(
-                        'BeginTransaction should not have been called'
+                        'BeginTransaction should not have been called',
                       );
                     case GapicFunctionName.LOOKUP: {
                       const lookupRequest =
@@ -1573,25 +1573,25 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       done();
                       break;
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   const query =
@@ -1611,7 +1611,7 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -1643,11 +1643,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -1655,14 +1655,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.run();
@@ -1684,13 +1684,13 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
                     case GapicFunctionName.BEGIN_TRANSACTION:
                       throw Error(
-                        'BeginTransaction should not have been called'
+                        'BeginTransaction should not have been called',
                       );
                     case GapicFunctionName.LOOKUP: {
                       const lookupRequest =
@@ -1708,7 +1708,7 @@ async.each(
                         {
                           newTransaction: {},
                           consistencyType: 'newTransaction',
-                        }
+                        },
                       );
                       break;
                     }
@@ -1717,25 +1717,25 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       done();
                       break;
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   const query =
@@ -1758,7 +1758,7 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -1784,7 +1784,7 @@ async.each(
                         runAggregationQueryRequest.readOptions,
                         {
                           transaction: testRunResp.transaction,
-                        }
+                        },
                       );
                       break;
                     }
@@ -1793,11 +1793,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -1805,14 +1805,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.run();
@@ -1837,13 +1837,13 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
                     case GapicFunctionName.BEGIN_TRANSACTION:
                       throw Error(
-                        'BeginTransaction should not have been called'
+                        'BeginTransaction should not have been called',
                       );
                     case GapicFunctionName.LOOKUP: {
                       const lookupRequest =
@@ -1859,25 +1859,25 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       done();
                       break;
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   transaction.save({key, data: ''});
@@ -1895,7 +1895,7 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -1919,11 +1919,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -1931,14 +1931,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.run();
@@ -1959,7 +1959,7 @@ async.each(
               // It ensures the data that reaches the gapic layer is correct.
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -1975,11 +1975,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -1987,14 +1987,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   transaction.save({key, data: ''});
@@ -2010,7 +2010,7 @@ async.each(
               let beginCount = 0;
               transactionWrapper.callBackSignaler = (
                 callbackReached: GapicFunctionName,
-                request?: RequestType
+                request?: RequestType,
               ) => {
                 try {
                   switch (callbackReached) {
@@ -2034,11 +2034,11 @@ async.each(
                         request as protos.google.datastore.v1.ICommitRequest;
                       assert.deepStrictEqual(
                         commitRequest.mode,
-                        'TRANSACTIONAL'
+                        'TRANSACTIONAL',
                       );
                       assert.deepStrictEqual(
                         commitRequest.transaction,
-                        testRunResp.transaction
+                        testRunResp.transaction,
                       );
                       assert.strictEqual(beginCount, 1);
                       done();
@@ -2046,14 +2046,14 @@ async.each(
                     }
                     default:
                       throw Error(
-                        'A gapic function was called that should not have been called'
+                        'A gapic function was called that should not have been called',
                       );
                   }
                 } catch (err: any) {
                   done(err);
                 }
               };
-              (async () => {
+              void (async () => {
                 try {
                   transaction = transactionWrapper.transaction;
                   await transaction.run();
@@ -2097,7 +2097,7 @@ async.each(
           // Datastore Gapic clients haven't been initialized yet, so we initialize them here.
           datastore.clients_.set(
             dataClientName,
-            new gapic.v1[dataClientName](options)
+            new gapic.v1[dataClientName](options),
           );
           dataClient = datastore.clients_.get(dataClientName);
           if (dataClient && dataClient.beginTransaction) {
@@ -2124,7 +2124,7 @@ async.each(
                 | null
                 | undefined,
                 {} | null | undefined
-              >
+              >,
             ) => {
               callback(err, testRunResp);
             };
@@ -2150,7 +2150,7 @@ async.each(
             const runCallback: RunCallback = (
               error: Error | null,
               transaction: Transaction | null,
-              response?: google.datastore.v1.IBeginTransactionResponse
+              response?: google.datastore.v1.IBeginTransactionResponse,
             ) => {
               try {
                 assert(error);
@@ -2180,7 +2180,7 @@ async.each(
             const runCallback: RunCallback = (
               error: Error | null,
               transaction: Transaction | null,
-              response?: google.datastore.v1.IBeginTransactionResponse
+              response?: google.datastore.v1.IBeginTransactionResponse,
             ) => {
               try {
                 assert.strictEqual(error, null);
@@ -2208,7 +2208,7 @@ async.each(
               done();
             });
           };
-          transaction.run();
+          void transaction.run();
         });
 
         afterEach(() => {
@@ -2222,7 +2222,7 @@ async.each(
             assert.deepStrictEqual(config.gaxOpts, {});
             done();
           };
-          transaction.commit();
+          void transaction.commit();
         });
 
         it('should accept gaxOptions', done => {
@@ -2233,7 +2233,7 @@ async.each(
             done();
           };
 
-          transaction.commit(gaxOptions);
+          void transaction.commit(gaxOptions);
         });
 
         it('should skip the commit', done => {
@@ -2311,7 +2311,7 @@ async.each(
 
           transaction.request_ = () => {};
 
-          transaction.commit();
+          void transaction.commit();
 
           assert.strictEqual(deleteStub.calledOnce, true);
           assert.strictEqual(saveStub.calledOnce, true);
@@ -2339,7 +2339,7 @@ async.each(
 
           transaction.request_ = () => {};
 
-          transaction.commit();
+          void transaction.commit();
           assert.strictEqual(deleteSpy.notCalled, true);
           assert.strictEqual(saveStub.calledOnce, true);
         });
@@ -2357,7 +2357,7 @@ async.each(
 
           transaction.request_ = () => {};
 
-          transaction.commit();
+          void transaction.commit();
         });
 
         it('should send the built request object', done => {
@@ -2377,7 +2377,7 @@ async.each(
             done();
           };
 
-          transaction.commit();
+          void transaction.commit();
         });
 
         it('should execute the queued callbacks', () => {
@@ -2397,7 +2397,7 @@ async.each(
             cb();
           };
 
-          transaction.commit();
+          void transaction.commit();
 
           assert(cb1Called);
           assert(cb2Called);
@@ -2496,7 +2496,7 @@ async.each(
           // the rollback function to reach request_.
           transaction.request_ = (
             config: RequestConfig,
-            callback: RequestCallback
+            callback: RequestCallback,
           ) => {
             callback(null, {transaction: Buffer.from(TRANSACTION_ID)});
           };
@@ -2512,7 +2512,7 @@ async.each(
             assert.deepStrictEqual(config.gaxOpts, {});
             done();
           };
-          transaction.rollback();
+          void transaction.rollback();
         });
 
         it('should allow setting gaxOptions', done => {
@@ -2523,7 +2523,7 @@ async.each(
             done();
           };
 
-          transaction.rollback(gaxOptions);
+          void transaction.rollback(gaxOptions);
         });
 
         it('should pass error to callback', done => {
@@ -2591,7 +2591,7 @@ async.each(
             done();
           };
 
-          transaction.run({gaxOptions});
+          void transaction.run({gaxOptions});
         });
 
         describe('options.readOnly', () => {
@@ -2603,7 +2603,7 @@ async.each(
             transaction.request_ = (config: Any) => {
               assert.deepStrictEqual(
                 config.reqOpts.transactionOptions.readOnly,
-                {}
+                {},
               );
               done();
             };
@@ -2617,7 +2617,7 @@ async.each(
             transaction.request_ = config => {
               assert.deepStrictEqual(
                 config.reqOpts!.transactionOptions!.readOnly,
-                {}
+                {},
               );
               done();
             };
@@ -2637,7 +2637,7 @@ async.each(
                 config.reqOpts!.transactionOptions!.readWrite,
                 {
                   previousTransaction: options.transactionId,
-                }
+                },
               );
               done();
             };
@@ -2653,7 +2653,7 @@ async.each(
                 config.reqOpts!.transactionOptions!.readWrite,
                 {
                   previousTransaction: transaction.id,
-                }
+                },
               );
               done();
             };
@@ -2749,7 +2749,7 @@ async.each(
           transaction.save(entities);
           assert.strictEqual(
             transaction.modifiedEntities_.length,
-            entities.length
+            entities.length,
           );
           transaction.modifiedEntities_.forEach((queuedEntity: Entity) => {
             assert.strictEqual(queuedEntity.method, 'save');
@@ -2855,7 +2855,7 @@ async.each(
         });
       });
     });
-  }
+  },
 );
 
 describe('getTransactionRequest', () => {
diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json
index c78f1c884ef..a4b71611d51 100644
--- a/handwritten/nodejs-datastore/tsconfig.json
+++ b/handwritten/nodejs-datastore/tsconfig.json
@@ -14,6 +14,10 @@
     "src/**/*.ts",
     "test/*.ts",
     "test/**/*.ts",
-    "system-test/*.ts"
+    "system-test/*.ts",
+    "mock-server/datastore-server.ts",
+    "src/v1/datastore_client_config.json",
+    "protos/protos.json",
+    "src/v1/datastore_admin_client_config.json"
   ]
 }

From 98d8227b32fd0f53cf02bdf50c0c150b12fd73da Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Fri, 2 May 2025 16:20:51 -0400
Subject: [PATCH 807/820] fix: More error visibility in nodejs-datastore
 (#1389)

* Upgrade the google-gax version

* fix: More error visibility in nodejs-datastore
---
 handwritten/nodejs-datastore/package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 38d4996c31a..2ac5db88462 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -46,7 +46,7 @@
     "async-mutex": "^0.5.0",
     "concat-stream": "^2.0.0",
     "extend": "^3.0.2",
-    "google-gax": "^5.0.1-rc.0",
+    "google-gax": "^5.0.2-rc.1",
     "is": "^3.3.0",
     "protobufjs": "7.0.0",
     "split-array-stream": "^2.0.0",

From 4a419e3c991316d6b408e369349877d71d9e0633 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
 <55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 8 May 2025 09:25:52 -0400
Subject: [PATCH 808/820] chore(main): release 10.0.0 (#1362)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
 handwritten/nodejs-datastore/CHANGELOG.md      | 18 ++++++++++++++++++
 handwritten/nodejs-datastore/package.json      |  2 +-
 .../nodejs-datastore/samples/package.json      |  2 +-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md
index 8f782983fa2..37b5c286b48 100644
--- a/handwritten/nodejs-datastore/CHANGELOG.md
+++ b/handwritten/nodejs-datastore/CHANGELOG.md
@@ -4,6 +4,24 @@
 
 [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions
 
+## [10.0.0](https://github.com/googleapis/nodejs-datastore/compare/v9.2.1...v10.0.0) (2025-05-02)
+
+
+### ⚠ BREAKING CHANGES
+
+* migrate to Node 18 ([#1384](https://github.com/googleapis/nodejs-datastore/issues/1384))
+
+### Bug Fixes
+
+* **doc:** Fix param descriptions for filters ([#1346](https://github.com/googleapis/nodejs-datastore/issues/1346)) ([a18c169](https://github.com/googleapis/nodejs-datastore/commit/a18c169e3b67e4e46f8b6bb9eb7cb250a88e40b7))
+* More error visibility in nodejs-datastore ([#1389](https://github.com/googleapis/nodejs-datastore/issues/1389)) ([55934da](https://github.com/googleapis/nodejs-datastore/commit/55934da4c3b9436e8ccf6a0935d416f00a8e1e17))
+* Not check sub-property existence for `null` values ([#1330](https://github.com/googleapis/nodejs-datastore/issues/1330)) ([5c0ddbc](https://github.com/googleapis/nodejs-datastore/commit/5c0ddbca91c41e056443eb0b60449f3cdddd6e69))
+
+
+### Miscellaneous Chores
+
+* Migrate to Node 18 ([#1384](https://github.com/googleapis/nodejs-datastore/issues/1384)) ([43c3472](https://github.com/googleapis/nodejs-datastore/commit/43c34720095bf03c13394bab7cd3facdb2ffc985))
+
 ## [9.2.1](https://github.com/googleapis/nodejs-datastore/compare/v9.2.0...v9.2.1) (2024-11-06)
 
 
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 2ac5db88462..5fe5f78a8e6 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "9.2.1",
+  "version": "10.0.0",
   "description": "Cloud Datastore Client Library for Node.js",
   "keywords": [
     "google apis client",
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 863f02dc006..741516d825a 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -14,7 +14,7 @@
     "test": "mocha --timeout=600000"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^9.2.1",
+    "@google-cloud/datastore": "^10.0.0",
     "sinon": "^18.0.0"
   },
   "devDependencies": {

From 4e0bd366f75822fc855a86188df8fad1124345f8 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Thu, 8 May 2025 10:10:03 -0400
Subject: [PATCH 809/820] fix: Fix the compiler error blocking the release
 (#1391)

* cast as any

* fix: Fix the compiler error blocking the release
---
 handwritten/nodejs-datastore/src/request.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/handwritten/nodejs-datastore/src/request.ts b/handwritten/nodejs-datastore/src/request.ts
index 132f9011c30..dee2a09b2ce 100644
--- a/handwritten/nodejs-datastore/src/request.ts
+++ b/handwritten/nodejs-datastore/src/request.ts
@@ -69,6 +69,7 @@ import * as protos from '../protos/protos';
 import {serializer} from 'google-gax';
 import * as gax from 'google-gax';
 import {SaveDataValue} from './interfaces/save';
+
 type JSONValue =
   | string
   | number
@@ -84,7 +85,7 @@ const Struct = root.lookupType('Struct');
 
 // This function decodes Struct proto values
 function decodeStruct(structValue: google.protobuf.IStruct): JSONValue {
-  return serializer.toProto3JSON(Struct.fromObject(structValue));
+  return serializer.toProto3JSON(Struct.fromObject(structValue) as any);
 }
 
 // This function gets a RunQueryInfo object that contains explain metrics that

From 345a191e6b33ddedb38d2613a7abf485c5cb87d0 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
 <55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 8 May 2025 11:47:04 -0400
Subject: [PATCH 810/820] chore(main): release 10.0.1 (#1392)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
 handwritten/nodejs-datastore/CHANGELOG.md         | 7 +++++++
 handwritten/nodejs-datastore/package.json         | 2 +-
 handwritten/nodejs-datastore/samples/package.json | 2 +-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/handwritten/nodejs-datastore/CHANGELOG.md b/handwritten/nodejs-datastore/CHANGELOG.md
index 37b5c286b48..39d47243685 100644
--- a/handwritten/nodejs-datastore/CHANGELOG.md
+++ b/handwritten/nodejs-datastore/CHANGELOG.md
@@ -4,6 +4,13 @@
 
 [1]: https://www.npmjs.com/package/@google-cloud/datastore?activeTab=versions
 
+## [10.0.1](https://github.com/googleapis/nodejs-datastore/compare/v10.0.0...v10.0.1) (2025-05-08)
+
+
+### Bug Fixes
+
+* Fix the compiler error blocking the release ([#1391](https://github.com/googleapis/nodejs-datastore/issues/1391)) ([ec91e14](https://github.com/googleapis/nodejs-datastore/commit/ec91e143254dbd8edaa262a5537199ecae4fd1f2))
+
 ## [10.0.0](https://github.com/googleapis/nodejs-datastore/compare/v9.2.1...v10.0.0) (2025-05-02)
 
 
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 5fe5f78a8e6..7cceec83d2c 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@google-cloud/datastore",
-  "version": "10.0.0",
+  "version": "10.0.1",
   "description": "Cloud Datastore Client Library for Node.js",
   "keywords": [
     "google apis client",
diff --git a/handwritten/nodejs-datastore/samples/package.json b/handwritten/nodejs-datastore/samples/package.json
index 741516d825a..f4033a80799 100644
--- a/handwritten/nodejs-datastore/samples/package.json
+++ b/handwritten/nodejs-datastore/samples/package.json
@@ -14,7 +14,7 @@
     "test": "mocha --timeout=600000"
   },
   "dependencies": {
-    "@google-cloud/datastore": "^10.0.0",
+    "@google-cloud/datastore": "^10.0.1",
     "sinon": "^18.0.0"
   },
   "devDependencies": {

From ec00e0cc4ae94dd2846f2448a9167eefce85f52d Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Mon, 15 Sep 2025 15:58:22 -0400
Subject: [PATCH 811/820] test: upgrade protobuf version (#1413)

**Description:**

There is an incompatibility with the current protobufjs version and it is blocking the CI pipeline. https://togithub.com/googleapis/nodejs-datastore/actions/runs/17623790707/job/50075476485?pr=1405 for more details

**Impact:**

Unblocks the CI pipeline
---
 handwritten/nodejs-datastore/package.json     |    2 +-
 .../nodejs-datastore/protos/protos.d.ts       |  522 +++-
 handwritten/nodejs-datastore/protos/protos.js | 2539 +++++++++++++++--
 .../nodejs-datastore/protos/protos.json       |  218 +-
 4 files changed, 2961 insertions(+), 320 deletions(-)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 7cceec83d2c..7816f9851e8 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -48,7 +48,7 @@
     "extend": "^3.0.2",
     "google-gax": "^5.0.2-rc.1",
     "is": "^3.3.0",
-    "protobufjs": "7.0.0",
+    "protobufjs": "7.4.0",
     "split-array-stream": "^2.0.0",
     "stream-events": "^1.0.5"
   },
diff --git a/handwritten/nodejs-datastore/protos/protos.d.ts b/handwritten/nodejs-datastore/protos/protos.d.ts
index 07328fe2a70..33ec9fcd7a0 100644
--- a/handwritten/nodejs-datastore/protos/protos.d.ts
+++ b/handwritten/nodejs-datastore/protos/protos.d.ts
@@ -9247,6 +9247,9 @@ export namespace google {
 
             /** CommonLanguageSettings destinations */
             destinations?: (google.api.ClientLibraryDestination[]|null);
+
+            /** CommonLanguageSettings selectiveGapicGeneration */
+            selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
         }
 
         /** Represents a CommonLanguageSettings. */
@@ -9264,6 +9267,9 @@ export namespace google {
             /** CommonLanguageSettings destinations. */
             public destinations: google.api.ClientLibraryDestination[];
 
+            /** CommonLanguageSettings selectiveGapicGeneration. */
+            public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
+
             /**
              * Creates a new CommonLanguageSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -9964,6 +9970,9 @@ export namespace google {
 
             /** PythonSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** PythonSettings experimentalFeatures */
+            experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
         }
 
         /** Represents a PythonSettings. */
@@ -9978,6 +9987,9 @@ export namespace google {
             /** PythonSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** PythonSettings experimentalFeatures. */
+            public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
+
             /**
              * Creates a new PythonSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -10056,6 +10068,118 @@ export namespace google {
             public static getTypeUrl(typeUrlPrefix?: string): string;
         }
 
+        namespace PythonSettings {
+
+            /** Properties of an ExperimentalFeatures. */
+            interface IExperimentalFeatures {
+
+                /** ExperimentalFeatures restAsyncIoEnabled */
+                restAsyncIoEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled */
+                protobufPythonicTypesEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures unversionedPackageDisabled */
+                unversionedPackageDisabled?: (boolean|null);
+            }
+
+            /** Represents an ExperimentalFeatures. */
+            class ExperimentalFeatures implements IExperimentalFeatures {
+
+                /**
+                 * Constructs a new ExperimentalFeatures.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);
+
+                /** ExperimentalFeatures restAsyncIoEnabled. */
+                public restAsyncIoEnabled: boolean;
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled. */
+                public protobufPythonicTypesEnabled: boolean;
+
+                /** ExperimentalFeatures unversionedPackageDisabled. */
+                public unversionedPackageDisabled: boolean;
+
+                /**
+                 * Creates a new ExperimentalFeatures instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ExperimentalFeatures instance
+                 */
+                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Verifies an ExperimentalFeatures message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ExperimentalFeatures
+                 */
+                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                 * @param message ExperimentalFeatures
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ExperimentalFeatures to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ExperimentalFeatures
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
         /** Properties of a NodeSettings. */
         interface INodeSettings {
 
@@ -10382,6 +10506,9 @@ export namespace google {
 
             /** GoSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** GoSettings renamedServices */
+            renamedServices?: ({ [k: string]: string }|null);
         }
 
         /** Represents a GoSettings. */
@@ -10396,6 +10523,9 @@ export namespace google {
             /** GoSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** GoSettings renamedServices. */
+            public renamedServices: { [k: string]: string };
+
             /**
              * Creates a new GoSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -10720,6 +10850,109 @@ export namespace google {
             PACKAGE_MANAGER = 20
         }
 
+        /** Properties of a SelectiveGapicGeneration. */
+        interface ISelectiveGapicGeneration {
+
+            /** SelectiveGapicGeneration methods */
+            methods?: (string[]|null);
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal */
+            generateOmittedAsInternal?: (boolean|null);
+        }
+
+        /** Represents a SelectiveGapicGeneration. */
+        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {
+
+            /**
+             * Constructs a new SelectiveGapicGeneration.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ISelectiveGapicGeneration);
+
+            /** SelectiveGapicGeneration methods. */
+            public methods: string[];
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal. */
+            public generateOmittedAsInternal: boolean;
+
+            /**
+             * Creates a new SelectiveGapicGeneration instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns SelectiveGapicGeneration instance
+             */
+            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Verifies a SelectiveGapicGeneration message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns SelectiveGapicGeneration
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+             * @param message SelectiveGapicGeneration
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this SelectiveGapicGeneration to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for SelectiveGapicGeneration
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
         /** LaunchStage enum. */
         enum LaunchStage {
             LAUNCH_STAGE_UNSPECIFIED = 0,
@@ -11049,6 +11282,7 @@ export namespace google {
         /** Edition enum. */
         enum Edition {
             EDITION_UNKNOWN = 0,
+            EDITION_LEGACY = 900,
             EDITION_PROTO2 = 998,
             EDITION_PROTO3 = 999,
             EDITION_2023 = 1000,
@@ -11079,6 +11313,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency */
             weakDependency?: (number[]|null);
 
+            /** FileDescriptorProto optionDependency */
+            optionDependency?: (string[]|null);
+
             /** FileDescriptorProto messageType */
             messageType?: (google.protobuf.IDescriptorProto[]|null);
 
@@ -11128,6 +11365,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency. */
             public weakDependency: number[];
 
+            /** FileDescriptorProto optionDependency. */
+            public optionDependency: string[];
+
             /** FileDescriptorProto messageType. */
             public messageType: google.protobuf.IDescriptorProto[];
 
@@ -11262,6 +11502,9 @@ export namespace google {
 
             /** DescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** DescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents a DescriptorProto. */
@@ -11303,6 +11546,9 @@ export namespace google {
             /** DescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** DescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new DescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -12150,6 +12396,9 @@ export namespace google {
 
             /** EnumDescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** EnumDescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents an EnumDescriptorProto. */
@@ -12176,6 +12425,9 @@ export namespace google {
             /** EnumDescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** EnumDescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new EnumDescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -13104,6 +13356,9 @@ export namespace google {
             /** FieldOptions features */
             features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
 
@@ -13156,6 +13411,9 @@ export namespace google {
             /** FieldOptions features. */
             public features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -13376,6 +13634,121 @@ export namespace google {
                  */
                 public static getTypeUrl(typeUrlPrefix?: string): string;
             }
+
+            /** Properties of a FeatureSupport. */
+            interface IFeatureSupport {
+
+                /** FeatureSupport editionIntroduced */
+                editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport editionDeprecated */
+                editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport deprecationWarning */
+                deprecationWarning?: (string|null);
+
+                /** FeatureSupport editionRemoved */
+                editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+            }
+
+            /** Represents a FeatureSupport. */
+            class FeatureSupport implements IFeatureSupport {
+
+                /**
+                 * Constructs a new FeatureSupport.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);
+
+                /** FeatureSupport editionIntroduced. */
+                public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport editionDeprecated. */
+                public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport deprecationWarning. */
+                public deprecationWarning: string;
+
+                /** FeatureSupport editionRemoved. */
+                public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /**
+                 * Creates a new FeatureSupport instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns FeatureSupport instance
+                 */
+                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Verifies a FeatureSupport message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns FeatureSupport
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                 * @param message FeatureSupport
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this FeatureSupport to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for FeatureSupport
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
         }
 
         /** Properties of an OneofOptions. */
@@ -13614,6 +13987,9 @@ export namespace google {
             /** EnumValueOptions debugRedact */
             debugRedact?: (boolean|null);
 
+            /** EnumValueOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
         }
@@ -13636,6 +14012,9 @@ export namespace google {
             /** EnumValueOptions debugRedact. */
             public debugRedact: boolean;
 
+            /** EnumValueOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -14231,6 +14610,12 @@ export namespace google {
 
             /** FeatureSet jsonFormat */
             jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+
+            /** FeatureSet enforceNamingStyle */
+            enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);
+
+            /** FeatureSet defaultSymbolVisibility */
+            defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
         }
 
         /** Represents a FeatureSet. */
@@ -14260,6 +14645,12 @@ export namespace google {
             /** FeatureSet jsonFormat. */
             public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
 
+            /** FeatureSet enforceNamingStyle. */
+            public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);
+
+            /** FeatureSet defaultSymbolVisibility. */
+            public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);
+
             /**
              * Creates a new FeatureSet instance using the specified properties.
              * @param [properties] Properties to set
@@ -14382,6 +14773,116 @@ export namespace google {
                 ALLOW = 1,
                 LEGACY_BEST_EFFORT = 2
             }
+
+            /** EnforceNamingStyle enum. */
+            enum EnforceNamingStyle {
+                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
+                STYLE2024 = 1,
+                STYLE_LEGACY = 2
+            }
+
+            /** Properties of a VisibilityFeature. */
+            interface IVisibilityFeature {
+            }
+
+            /** Represents a VisibilityFeature. */
+            class VisibilityFeature implements IVisibilityFeature {
+
+                /**
+                 * Constructs a new VisibilityFeature.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);
+
+                /**
+                 * Creates a new VisibilityFeature instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns VisibilityFeature instance
+                 */
+                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Verifies a VisibilityFeature message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns VisibilityFeature
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                 * @param message VisibilityFeature
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this VisibilityFeature to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for VisibilityFeature
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            namespace VisibilityFeature {
+
+                /** DefaultSymbolVisibility enum. */
+                enum DefaultSymbolVisibility {
+                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
+                    EXPORT_ALL = 1,
+                    EXPORT_TOP_LEVEL = 2,
+                    LOCAL_ALL = 3,
+                    STRICT = 4
+                }
+            }
         }
 
         /** Properties of a FeatureSetDefaults. */
@@ -14501,8 +15002,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition */
                 edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
 
-                /** FeatureSetEditionDefault features */
-                features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures */
+                overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures */
+                fixedFeatures?: (google.protobuf.IFeatureSet|null);
             }
 
             /** Represents a FeatureSetEditionDefault. */
@@ -14517,8 +15021,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition. */
                 public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
 
-                /** FeatureSetEditionDefault features. */
-                public features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures. */
+                public overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures. */
+                public fixedFeatures?: (google.protobuf.IFeatureSet|null);
 
                 /**
                  * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -15051,6 +15558,13 @@ export namespace google {
             }
         }
 
+        /** SymbolVisibility enum. */
+        enum SymbolVisibility {
+            VISIBILITY_UNSET = 0,
+            VISIBILITY_LOCAL = 1,
+            VISIBILITY_EXPORT = 2
+        }
+
         /** Properties of a Duration. */
         interface IDuration {
 
diff --git a/handwritten/nodejs-datastore/protos/protos.js b/handwritten/nodejs-datastore/protos/protos.js
index c8d954e04cf..c1e6ff69d1f 100644
--- a/handwritten/nodejs-datastore/protos/protos.js
+++ b/handwritten/nodejs-datastore/protos/protos.js
@@ -580,6 +580,12 @@
                                 message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
                             }
                             switch (object.operationType) {
+                            default:
+                                if (typeof object.operationType === "number") {
+                                    message.operationType = object.operationType;
+                                    break;
+                                }
+                                break;
                             case "OPERATION_TYPE_UNSPECIFIED":
                             case 0:
                                 message.operationType = 0;
@@ -609,6 +615,12 @@
                                     message.labels[keys[i]] = String(object.labels[keys[i]]);
                             }
                             switch (object.state) {
+                            default:
+                                if (typeof object.state === "number") {
+                                    message.state = object.state;
+                                    break;
+                                }
+                                break;
                             case "STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -671,7 +683,7 @@
                             if (message.endTime != null && message.hasOwnProperty("endTime"))
                                 object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);
                             if (message.operationType != null && message.hasOwnProperty("operationType"))
-                                object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType;
+                                object.operationType = options.enums === String ? $root.google.datastore.admin.v1.OperationType[message.operationType] === undefined ? message.operationType : $root.google.datastore.admin.v1.OperationType[message.operationType] : message.operationType;
                             var keys2;
                             if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                 object.labels = {};
@@ -679,7 +691,7 @@
                                     object.labels[keys2[j]] = message.labels[keys2[j]];
                             }
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.CommonMetadata.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.CommonMetadata.State[message.state] : message.state;
                             return object;
                         };
     
@@ -4368,6 +4380,12 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.DatastoreFirestoreMigrationMetadata();
                             switch (object.migrationState) {
+                            default:
+                                if (typeof object.migrationState === "number") {
+                                    message.migrationState = object.migrationState;
+                                    break;
+                                }
+                                break;
                             case "MIGRATION_STATE_UNSPECIFIED":
                             case 0:
                                 message.migrationState = 0;
@@ -4386,6 +4404,12 @@
                                 break;
                             }
                             switch (object.migrationStep) {
+                            default:
+                                if (typeof object.migrationStep === "number") {
+                                    message.migrationStep = object.migrationStep;
+                                    break;
+                                }
+                                break;
                             case "MIGRATION_STEP_UNSPECIFIED":
                             case 0:
                                 message.migrationStep = 0;
@@ -4440,9 +4464,9 @@
                                 object.migrationStep = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0;
                             }
                             if (message.migrationState != null && message.hasOwnProperty("migrationState"))
-                                object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState;
+                                object.migrationState = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.migrationState] === undefined ? message.migrationState : $root.google.datastore.admin.v1.MigrationState[message.migrationState] : message.migrationState;
                             if (message.migrationStep != null && message.hasOwnProperty("migrationStep"))
-                                object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep;
+                                object.migrationStep = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] === undefined ? message.migrationStep : $root.google.datastore.admin.v1.MigrationStep[message.migrationStep] : message.migrationStep;
                             return object;
                         };
     
@@ -4765,6 +4789,12 @@
                             if (object.kind != null)
                                 message.kind = String(object.kind);
                             switch (object.ancestor) {
+                            default:
+                                if (typeof object.ancestor === "number") {
+                                    message.ancestor = object.ancestor;
+                                    break;
+                                }
+                                break;
                             case "ANCESTOR_MODE_UNSPECIFIED":
                             case 0:
                                 message.ancestor = 0;
@@ -4789,6 +4819,12 @@
                                 }
                             }
                             switch (object.state) {
+                            default:
+                                if (typeof object.state === "number") {
+                                    message.state = object.state;
+                                    break;
+                                }
+                                break;
                             case "STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -4842,14 +4878,14 @@
                             if (message.kind != null && message.hasOwnProperty("kind"))
                                 object.kind = message.kind;
                             if (message.ancestor != null && message.hasOwnProperty("ancestor"))
-                                object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor;
+                                object.ancestor = options.enums === String ? $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] === undefined ? message.ancestor : $root.google.datastore.admin.v1.Index.AncestorMode[message.ancestor] : message.ancestor;
                             if (message.properties && message.properties.length) {
                                 object.properties = [];
                                 for (var j = 0; j < message.properties.length; ++j)
                                     object.properties[j] = $root.google.datastore.admin.v1.Index.IndexedProperty.toObject(message.properties[j], options);
                             }
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.Index.State[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.Index.State[message.state] : message.state;
                             return object;
                         };
     
@@ -5087,6 +5123,12 @@
                                 if (object.name != null)
                                     message.name = String(object.name);
                                 switch (object.direction) {
+                                default:
+                                    if (typeof object.direction === "number") {
+                                        message.direction = object.direction;
+                                        break;
+                                    }
+                                    break;
                                 case "DIRECTION_UNSPECIFIED":
                                 case 0:
                                     message.direction = 0;
@@ -5123,7 +5165,7 @@
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     object.name = message.name;
                                 if (message.direction != null && message.hasOwnProperty("direction"))
-                                    object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction;
+                                    object.direction = options.enums === String ? $root.google.datastore.admin.v1.Index.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.admin.v1.Index.Direction[message.direction] : message.direction;
                                 return object;
                             };
     
@@ -5336,6 +5378,12 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.MigrationStateEvent();
                             switch (object.state) {
+                            default:
+                                if (typeof object.state === "number") {
+                                    message.state = object.state;
+                                    break;
+                                }
+                                break;
                             case "MIGRATION_STATE_UNSPECIFIED":
                             case 0:
                                 message.state = 0;
@@ -5372,7 +5420,7 @@
                             if (options.defaults)
                                 object.state = options.enums === String ? "MIGRATION_STATE_UNSPECIFIED" : 0;
                             if (message.state != null && message.hasOwnProperty("state"))
-                                object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] : message.state;
+                                object.state = options.enums === String ? $root.google.datastore.admin.v1.MigrationState[message.state] === undefined ? message.state : $root.google.datastore.admin.v1.MigrationState[message.state] : message.state;
                             return object;
                         };
     
@@ -5629,6 +5677,12 @@
                                 return object;
                             var message = new $root.google.datastore.admin.v1.MigrationProgressEvent();
                             switch (object.step) {
+                            default:
+                                if (typeof object.step === "number") {
+                                    message.step = object.step;
+                                    break;
+                                }
+                                break;
                             case "MIGRATION_STEP_UNSPECIFIED":
                             case 0:
                                 message.step = 0;
@@ -5691,7 +5745,7 @@
                             if (options.defaults)
                                 object.step = options.enums === String ? "MIGRATION_STEP_UNSPECIFIED" : 0;
                             if (message.step != null && message.hasOwnProperty("step"))
-                                object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step;
+                                object.step = options.enums === String ? $root.google.datastore.admin.v1.MigrationStep[message.step] === undefined ? message.step : $root.google.datastore.admin.v1.MigrationStep[message.step] : message.step;
                             if (message.prepareStepDetails != null && message.hasOwnProperty("prepareStepDetails")) {
                                 object.prepareStepDetails = $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails.toObject(message.prepareStepDetails, options);
                                 if (options.oneofs)
@@ -5906,232 +5960,244 @@
                                     return object;
                                 var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails();
                                 switch (object.concurrencyMode) {
-                                case "CONCURRENCY_MODE_UNSPECIFIED":
-                                case 0:
-                                    message.concurrencyMode = 0;
-                                    break;
-                                case "PESSIMISTIC":
-                                case 1:
-                                    message.concurrencyMode = 1;
-                                    break;
-                                case "OPTIMISTIC":
-                                case 2:
-                                    message.concurrencyMode = 2;
-                                    break;
-                                case "OPTIMISTIC_WITH_ENTITY_GROUPS":
-                                case 3:
-                                    message.concurrencyMode = 3;
-                                    break;
-                                }
-                                return message;
-                            };
-    
-                            /**
-                             * Creates a plain object from a PrepareStepDetails message. Also converts values to other types if specified.
-                             * @function toObject
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
-                             * @static
-                             * @param {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} message PrepareStepDetails
-                             * @param {$protobuf.IConversionOptions} [options] Conversion options
-                             * @returns {Object.} Plain object
-                             */
-                            PrepareStepDetails.toObject = function toObject(message, options) {
-                                if (!options)
-                                    options = {};
-                                var object = {};
-                                if (options.defaults)
-                                    object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0;
-                                if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
-                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
-                                return object;
-                            };
-    
-                            /**
-                             * Converts this PrepareStepDetails to JSON.
-                             * @function toJSON
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
-                             * @instance
-                             * @returns {Object.} JSON object
-                             */
-                            PrepareStepDetails.prototype.toJSON = function toJSON() {
-                                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
-                            };
-    
-                            /**
-                             * Gets the default type url for PrepareStepDetails
-                             * @function getTypeUrl
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
-                             * @static
-                             * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
-                             * @returns {string} The default type url
-                             */
-                            PrepareStepDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
-                                if (typeUrlPrefix === undefined) {
-                                    typeUrlPrefix = "type.googleapis.com";
-                                }
-                                return typeUrlPrefix + "/google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails";
-                            };
-    
-                            return PrepareStepDetails;
-                        })();
-    
-                        MigrationProgressEvent.RedirectWritesStepDetails = (function() {
-    
-                            /**
-                             * Properties of a RedirectWritesStepDetails.
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent
-                             * @interface IRedirectWritesStepDetails
-                             * @property {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null} [concurrencyMode] RedirectWritesStepDetails concurrencyMode
-                             */
-    
-                            /**
-                             * Constructs a new RedirectWritesStepDetails.
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent
-                             * @classdesc Represents a RedirectWritesStepDetails.
-                             * @implements IRedirectWritesStepDetails
-                             * @constructor
-                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set
-                             */
-                            function RedirectWritesStepDetails(properties) {
-                                if (properties)
-                                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
-                                            this[keys[i]] = properties[keys[i]];
-                            }
-    
-                            /**
-                             * RedirectWritesStepDetails concurrencyMode.
-                             * @member {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode} concurrencyMode
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @instance
-                             */
-                            RedirectWritesStepDetails.prototype.concurrencyMode = 0;
-    
-                            /**
-                             * Creates a new RedirectWritesStepDetails instance using the specified properties.
-                             * @function create
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set
-                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails instance
-                             */
-                            RedirectWritesStepDetails.create = function create(properties) {
-                                return new RedirectWritesStepDetails(properties);
-                            };
-    
-                            /**
-                             * Encodes the specified RedirectWritesStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages.
-                             * @function encode
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode
-                             * @param {$protobuf.Writer} [writer] Writer to encode to
-                             * @returns {$protobuf.Writer} Writer
-                             */
-                            RedirectWritesStepDetails.encode = function encode(message, writer) {
-                                if (!writer)
-                                    writer = $Writer.create();
-                                if (message.concurrencyMode != null && Object.hasOwnProperty.call(message, "concurrencyMode"))
-                                    writer.uint32(/* id 1, wireType 0 =*/8).int32(message.concurrencyMode);
-                                return writer;
-                            };
-    
-                            /**
-                             * Encodes the specified RedirectWritesStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages.
-                             * @function encodeDelimited
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode
-                             * @param {$protobuf.Writer} [writer] Writer to encode to
-                             * @returns {$protobuf.Writer} Writer
-                             */
-                            RedirectWritesStepDetails.encodeDelimited = function encodeDelimited(message, writer) {
-                                return this.encode(message, writer).ldelim();
-                            };
-    
-                            /**
-                             * Decodes a RedirectWritesStepDetails message from the specified reader or buffer.
-                             * @function decode
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
-                             * @param {number} [length] Message length if known beforehand
-                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
-                             * @throws {Error} If the payload is not a reader or valid buffer
-                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
-                             */
-                            RedirectWritesStepDetails.decode = function decode(reader, length) {
-                                if (!(reader instanceof $Reader))
-                                    reader = $Reader.create(reader);
-                                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails();
-                                while (reader.pos < end) {
-                                    var tag = reader.uint32();
-                                    switch (tag >>> 3) {
-                                    case 1: {
-                                            message.concurrencyMode = reader.int32();
-                                            break;
-                                        }
-                                    default:
-                                        reader.skipType(tag & 7);
-                                        break;
-                                    }
-                                }
-                                return message;
-                            };
-    
-                            /**
-                             * Decodes a RedirectWritesStepDetails message from the specified reader or buffer, length delimited.
-                             * @function decodeDelimited
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
-                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
-                             * @throws {Error} If the payload is not a reader or valid buffer
-                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
-                             */
-                            RedirectWritesStepDetails.decodeDelimited = function decodeDelimited(reader) {
-                                if (!(reader instanceof $Reader))
-                                    reader = new $Reader(reader);
-                                return this.decode(reader, reader.uint32());
-                            };
-    
-                            /**
-                             * Verifies a RedirectWritesStepDetails message.
-                             * @function verify
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {Object.} message Plain object to verify
-                             * @returns {string|null} `null` if valid, otherwise the reason why it is not
-                             */
-                            RedirectWritesStepDetails.verify = function verify(message) {
-                                if (typeof message !== "object" || message === null)
-                                    return "object expected";
-                                if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
-                                    switch (message.concurrencyMode) {
-                                    default:
-                                        return "concurrencyMode: enum value expected";
-                                    case 0:
-                                    case 1:
-                                    case 2:
-                                    case 3:
+                                default:
+                                    if (typeof object.concurrencyMode === "number") {
+                                        message.concurrencyMode = object.concurrencyMode;
                                         break;
                                     }
-                                return null;
-                            };
-    
-                            /**
-                             * Creates a RedirectWritesStepDetails message from a plain object. Also converts values to their respective internal types.
-                             * @function fromObject
-                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
-                             * @static
-                             * @param {Object.} object Plain object
-                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
-                             */
-                            RedirectWritesStepDetails.fromObject = function fromObject(object) {
-                                if (object instanceof $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails)
-                                    return object;
-                                var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails();
-                                switch (object.concurrencyMode) {
+                                    break;
+                                case "CONCURRENCY_MODE_UNSPECIFIED":
+                                case 0:
+                                    message.concurrencyMode = 0;
+                                    break;
+                                case "PESSIMISTIC":
+                                case 1:
+                                    message.concurrencyMode = 1;
+                                    break;
+                                case "OPTIMISTIC":
+                                case 2:
+                                    message.concurrencyMode = 2;
+                                    break;
+                                case "OPTIMISTIC_WITH_ENTITY_GROUPS":
+                                case 3:
+                                    message.concurrencyMode = 3;
+                                    break;
+                                }
+                                return message;
+                            };
+    
+                            /**
+                             * Creates a plain object from a PrepareStepDetails message. Also converts values to other types if specified.
+                             * @function toObject
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
+                             * @static
+                             * @param {google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails} message PrepareStepDetails
+                             * @param {$protobuf.IConversionOptions} [options] Conversion options
+                             * @returns {Object.} Plain object
+                             */
+                            PrepareStepDetails.toObject = function toObject(message, options) {
+                                if (!options)
+                                    options = {};
+                                var object = {};
+                                if (options.defaults)
+                                    object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0;
+                                if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
+                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
+                                return object;
+                            };
+    
+                            /**
+                             * Converts this PrepareStepDetails to JSON.
+                             * @function toJSON
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
+                             * @instance
+                             * @returns {Object.} JSON object
+                             */
+                            PrepareStepDetails.prototype.toJSON = function toJSON() {
+                                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                            };
+    
+                            /**
+                             * Gets the default type url for PrepareStepDetails
+                             * @function getTypeUrl
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails
+                             * @static
+                             * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                             * @returns {string} The default type url
+                             */
+                            PrepareStepDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                                if (typeUrlPrefix === undefined) {
+                                    typeUrlPrefix = "type.googleapis.com";
+                                }
+                                return typeUrlPrefix + "/google.datastore.admin.v1.MigrationProgressEvent.PrepareStepDetails";
+                            };
+    
+                            return PrepareStepDetails;
+                        })();
+    
+                        MigrationProgressEvent.RedirectWritesStepDetails = (function() {
+    
+                            /**
+                             * Properties of a RedirectWritesStepDetails.
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent
+                             * @interface IRedirectWritesStepDetails
+                             * @property {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode|null} [concurrencyMode] RedirectWritesStepDetails concurrencyMode
+                             */
+    
+                            /**
+                             * Constructs a new RedirectWritesStepDetails.
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent
+                             * @classdesc Represents a RedirectWritesStepDetails.
+                             * @implements IRedirectWritesStepDetails
+                             * @constructor
+                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set
+                             */
+                            function RedirectWritesStepDetails(properties) {
+                                if (properties)
+                                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                        if (properties[keys[i]] != null)
+                                            this[keys[i]] = properties[keys[i]];
+                            }
+    
+                            /**
+                             * RedirectWritesStepDetails concurrencyMode.
+                             * @member {google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode} concurrencyMode
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @instance
+                             */
+                            RedirectWritesStepDetails.prototype.concurrencyMode = 0;
+    
+                            /**
+                             * Creates a new RedirectWritesStepDetails instance using the specified properties.
+                             * @function create
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails=} [properties] Properties to set
+                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails instance
+                             */
+                            RedirectWritesStepDetails.create = function create(properties) {
+                                return new RedirectWritesStepDetails(properties);
+                            };
+    
+                            /**
+                             * Encodes the specified RedirectWritesStepDetails message. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages.
+                             * @function encode
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode
+                             * @param {$protobuf.Writer} [writer] Writer to encode to
+                             * @returns {$protobuf.Writer} Writer
+                             */
+                            RedirectWritesStepDetails.encode = function encode(message, writer) {
+                                if (!writer)
+                                    writer = $Writer.create();
+                                if (message.concurrencyMode != null && Object.hasOwnProperty.call(message, "concurrencyMode"))
+                                    writer.uint32(/* id 1, wireType 0 =*/8).int32(message.concurrencyMode);
+                                return writer;
+                            };
+    
+                            /**
+                             * Encodes the specified RedirectWritesStepDetails message, length delimited. Does not implicitly {@link google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails.verify|verify} messages.
+                             * @function encodeDelimited
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {google.datastore.admin.v1.MigrationProgressEvent.IRedirectWritesStepDetails} message RedirectWritesStepDetails message or plain object to encode
+                             * @param {$protobuf.Writer} [writer] Writer to encode to
+                             * @returns {$protobuf.Writer} Writer
+                             */
+                            RedirectWritesStepDetails.encodeDelimited = function encodeDelimited(message, writer) {
+                                return this.encode(message, writer).ldelim();
+                            };
+    
+                            /**
+                             * Decodes a RedirectWritesStepDetails message from the specified reader or buffer.
+                             * @function decode
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                             * @param {number} [length] Message length if known beforehand
+                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
+                             * @throws {Error} If the payload is not a reader or valid buffer
+                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                             */
+                            RedirectWritesStepDetails.decode = function decode(reader, length) {
+                                if (!(reader instanceof $Reader))
+                                    reader = $Reader.create(reader);
+                                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails();
+                                while (reader.pos < end) {
+                                    var tag = reader.uint32();
+                                    switch (tag >>> 3) {
+                                    case 1: {
+                                            message.concurrencyMode = reader.int32();
+                                            break;
+                                        }
+                                    default:
+                                        reader.skipType(tag & 7);
+                                        break;
+                                    }
+                                }
+                                return message;
+                            };
+    
+                            /**
+                             * Decodes a RedirectWritesStepDetails message from the specified reader or buffer, length delimited.
+                             * @function decodeDelimited
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
+                             * @throws {Error} If the payload is not a reader or valid buffer
+                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                             */
+                            RedirectWritesStepDetails.decodeDelimited = function decodeDelimited(reader) {
+                                if (!(reader instanceof $Reader))
+                                    reader = new $Reader(reader);
+                                return this.decode(reader, reader.uint32());
+                            };
+    
+                            /**
+                             * Verifies a RedirectWritesStepDetails message.
+                             * @function verify
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {Object.} message Plain object to verify
+                             * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                             */
+                            RedirectWritesStepDetails.verify = function verify(message) {
+                                if (typeof message !== "object" || message === null)
+                                    return "object expected";
+                                if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
+                                    switch (message.concurrencyMode) {
+                                    default:
+                                        return "concurrencyMode: enum value expected";
+                                    case 0:
+                                    case 1:
+                                    case 2:
+                                    case 3:
+                                        break;
+                                    }
+                                return null;
+                            };
+    
+                            /**
+                             * Creates a RedirectWritesStepDetails message from a plain object. Also converts values to their respective internal types.
+                             * @function fromObject
+                             * @memberof google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails
+                             * @static
+                             * @param {Object.} object Plain object
+                             * @returns {google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails} RedirectWritesStepDetails
+                             */
+                            RedirectWritesStepDetails.fromObject = function fromObject(object) {
+                                if (object instanceof $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails)
+                                    return object;
+                                var message = new $root.google.datastore.admin.v1.MigrationProgressEvent.RedirectWritesStepDetails();
+                                switch (object.concurrencyMode) {
+                                default:
+                                    if (typeof object.concurrencyMode === "number") {
+                                        message.concurrencyMode = object.concurrencyMode;
+                                        break;
+                                    }
+                                    break;
                                 case "CONCURRENCY_MODE_UNSPECIFIED":
                                 case 0:
                                     message.concurrencyMode = 0;
@@ -6168,7 +6234,7 @@
                                 if (options.defaults)
                                     object.concurrencyMode = options.enums === String ? "CONCURRENCY_MODE_UNSPECIFIED" : 0;
                                 if (message.concurrencyMode != null && message.hasOwnProperty("concurrencyMode"))
-                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
+                                    object.concurrencyMode = options.enums === String ? $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] === undefined ? message.concurrencyMode : $root.google.datastore.admin.v1.MigrationProgressEvent.ConcurrencyMode[message.concurrencyMode] : message.concurrencyMode;
                                 return object;
                             };
     
@@ -6724,6 +6790,12 @@
                             }
                         }
                         switch (object.moreResults) {
+                        default:
+                            if (typeof object.moreResults === "number") {
+                                message.moreResults = object.moreResults;
+                                break;
+                            }
+                            break;
                         case "MORE_RESULTS_TYPE_UNSPECIFIED":
                         case 0:
                             message.moreResults = 0;
@@ -6778,7 +6850,7 @@
                                 object.aggregationResults[j] = $root.google.datastore.v1.AggregationResult.toObject(message.aggregationResults[j], options);
                         }
                         if (message.moreResults != null && message.hasOwnProperty("moreResults"))
-                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
+                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
                         if (message.readTime != null && message.hasOwnProperty("readTime"))
                             object.readTime = $root.google.protobuf.Timestamp.toObject(message.readTime, options);
                         return object;
@@ -8266,6 +8338,12 @@
                             return object;
                         var message = new $root.google.datastore.v1.Value();
                         switch (object.nullValue) {
+                        default:
+                            if (typeof object.nullValue === "number") {
+                                message.nullValue = object.nullValue;
+                                break;
+                            }
+                            break;
                         case "NULL_VALUE":
                         case 0:
                             message.nullValue = 0;
@@ -8384,7 +8462,7 @@
                                 object.valueType = "timestampValue";
                         }
                         if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
-                            object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
+                            object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
                             if (options.oneofs)
                                 object.valueType = "nullValue";
                         }
@@ -11602,6 +11680,12 @@
                             message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property);
                         }
                         switch (object.direction) {
+                        default:
+                            if (typeof object.direction === "number") {
+                                message.direction = object.direction;
+                                break;
+                            }
+                            break;
                         case "DIRECTION_UNSPECIFIED":
                         case 0:
                             message.direction = 0;
@@ -11638,7 +11722,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options);
                         if (message.direction != null && message.hasOwnProperty("direction"))
-                            object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction;
+                            object.direction = options.enums === String ? $root.google.datastore.v1.PropertyOrder.Direction[message.direction] === undefined ? message.direction : $root.google.datastore.v1.PropertyOrder.Direction[message.direction] : message.direction;
                         return object;
                     };
     
@@ -12133,6 +12217,12 @@
                             return object;
                         var message = new $root.google.datastore.v1.CompositeFilter();
                         switch (object.op) {
+                        default:
+                            if (typeof object.op === "number") {
+                                message.op = object.op;
+                                break;
+                            }
+                            break;
                         case "OPERATOR_UNSPECIFIED":
                         case 0:
                             message.op = 0;
@@ -12177,7 +12267,7 @@
                         if (options.defaults)
                             object.op = options.enums === String ? "OPERATOR_UNSPECIFIED" : 0;
                         if (message.op != null && message.hasOwnProperty("op"))
-                            object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op;
+                            object.op = options.enums === String ? $root.google.datastore.v1.CompositeFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.CompositeFilter.Operator[message.op] : message.op;
                         if (message.filters && message.filters.length) {
                             object.filters = [];
                             for (var j = 0; j < message.filters.length; ++j)
@@ -12439,6 +12529,12 @@
                             message.property = $root.google.datastore.v1.PropertyReference.fromObject(object.property);
                         }
                         switch (object.op) {
+                        default:
+                            if (typeof object.op === "number") {
+                                message.op = object.op;
+                                break;
+                            }
+                            break;
                         case "OPERATOR_UNSPECIFIED":
                         case 0:
                             message.op = 0;
@@ -12509,7 +12605,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = $root.google.datastore.v1.PropertyReference.toObject(message.property, options);
                         if (message.op != null && message.hasOwnProperty("op"))
-                            object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op;
+                            object.op = options.enums === String ? $root.google.datastore.v1.PropertyFilter.Operator[message.op] === undefined ? message.op : $root.google.datastore.v1.PropertyFilter.Operator[message.op] : message.op;
                         if (message.value != null && message.hasOwnProperty("value"))
                             object.value = $root.google.datastore.v1.Value.toObject(message.value, options);
                         return object;
@@ -12839,6 +12935,12 @@
                             message.queryVector = $root.google.datastore.v1.Value.fromObject(object.queryVector);
                         }
                         switch (object.distanceMeasure) {
+                        default:
+                            if (typeof object.distanceMeasure === "number") {
+                                message.distanceMeasure = object.distanceMeasure;
+                                break;
+                            }
+                            break;
                         case "DISTANCE_MEASURE_UNSPECIFIED":
                         case 0:
                             message.distanceMeasure = 0;
@@ -12897,7 +12999,7 @@
                         if (message.queryVector != null && message.hasOwnProperty("queryVector"))
                             object.queryVector = $root.google.datastore.v1.Value.toObject(message.queryVector, options);
                         if (message.distanceMeasure != null && message.hasOwnProperty("distanceMeasure"))
-                            object.distanceMeasure = options.enums === String ? $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] : message.distanceMeasure;
+                            object.distanceMeasure = options.enums === String ? $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] === undefined ? message.distanceMeasure : $root.google.datastore.v1.FindNearest.DistanceMeasure[message.distanceMeasure] : message.distanceMeasure;
                         if (message.limit != null && message.hasOwnProperty("limit"))
                             object.limit = $root.google.protobuf.Int32Value.toObject(message.limit, options);
                         if (message.distanceResultProperty != null && message.hasOwnProperty("distanceResultProperty"))
@@ -13861,6 +13963,12 @@
                             else if (object.skippedCursor.length >= 0)
                                 message.skippedCursor = object.skippedCursor;
                         switch (object.entityResultType) {
+                        default:
+                            if (typeof object.entityResultType === "number") {
+                                message.entityResultType = object.entityResultType;
+                                break;
+                            }
+                            break;
                         case "RESULT_TYPE_UNSPECIFIED":
                         case 0:
                             message.entityResultType = 0;
@@ -13894,6 +14002,12 @@
                             else if (object.endCursor.length >= 0)
                                 message.endCursor = object.endCursor;
                         switch (object.moreResults) {
+                        default:
+                            if (typeof object.moreResults === "number") {
+                                message.moreResults = object.moreResults;
+                                break;
+                            }
+                            break;
                         case "MORE_RESULTS_TYPE_UNSPECIFIED":
                         case 0:
                             message.moreResults = 0;
@@ -13973,7 +14087,7 @@
                             object.readTime = null;
                         }
                         if (message.entityResultType != null && message.hasOwnProperty("entityResultType"))
-                            object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType;
+                            object.entityResultType = options.enums === String ? $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] === undefined ? message.entityResultType : $root.google.datastore.v1.EntityResult.ResultType[message.entityResultType] : message.entityResultType;
                         if (message.entityResults && message.entityResults.length) {
                             object.entityResults = [];
                             for (var j = 0; j < message.entityResults.length; ++j)
@@ -13984,7 +14098,7 @@
                         if (message.endCursor != null && message.hasOwnProperty("endCursor"))
                             object.endCursor = options.bytes === String ? $util.base64.encode(message.endCursor, 0, message.endCursor.length) : options.bytes === Array ? Array.prototype.slice.call(message.endCursor) : message.endCursor;
                         if (message.moreResults != null && message.hasOwnProperty("moreResults"))
-                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
+                            object.moreResults = options.enums === String ? $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] === undefined ? message.moreResults : $root.google.datastore.v1.QueryResultBatch.MoreResultsType[message.moreResults] : message.moreResults;
                         if (message.skippedResults != null && message.hasOwnProperty("skippedResults"))
                             object.skippedResults = message.skippedResults;
                         if (message.snapshotVersion != null && message.hasOwnProperty("snapshotVersion"))
@@ -17643,6 +17757,12 @@
                         if (object.databaseId != null)
                             message.databaseId = String(object.databaseId);
                         switch (object.mode) {
+                        default:
+                            if (typeof object.mode === "number") {
+                                message.mode = object.mode;
+                                break;
+                            }
+                            break;
                         case "MODE_UNSPECIFIED":
                         case 0:
                             message.mode = 0;
@@ -17705,7 +17825,7 @@
                                 object.transactionSelector = "transaction";
                         }
                         if (message.mode != null && message.hasOwnProperty("mode"))
-                            object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode;
+                            object.mode = options.enums === String ? $root.google.datastore.v1.CommitRequest.Mode[message.mode] === undefined ? message.mode : $root.google.datastore.v1.CommitRequest.Mode[message.mode] : message.mode;
                         if (message.mutations && message.mutations.length) {
                             object.mutations = [];
                             for (var j = 0; j < message.mutations.length; ++j)
@@ -19395,6 +19515,12 @@
                             message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
                         }
                         switch (object.conflictResolutionStrategy) {
+                        default:
+                            if (typeof object.conflictResolutionStrategy === "number") {
+                                message.conflictResolutionStrategy = object.conflictResolutionStrategy;
+                                break;
+                            }
+                            break;
                         case "STRATEGY_UNSPECIFIED":
                         case 0:
                             message.conflictResolutionStrategy = 0;
@@ -19476,7 +19602,7 @@
                         if (message.propertyMask != null && message.hasOwnProperty("propertyMask"))
                             object.propertyMask = $root.google.datastore.v1.PropertyMask.toObject(message.propertyMask, options);
                         if (message.conflictResolutionStrategy != null && message.hasOwnProperty("conflictResolutionStrategy"))
-                            object.conflictResolutionStrategy = options.enums === String ? $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] : message.conflictResolutionStrategy;
+                            object.conflictResolutionStrategy = options.enums === String ? $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] === undefined ? message.conflictResolutionStrategy : $root.google.datastore.v1.Mutation.ConflictResolutionStrategy[message.conflictResolutionStrategy] : message.conflictResolutionStrategy;
                         if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
                             object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options);
                             if (options.oneofs)
@@ -19852,6 +19978,12 @@
                         if (object.property != null)
                             message.property = String(object.property);
                         switch (object.setToServerValue) {
+                        default:
+                            if (typeof object.setToServerValue === "number") {
+                                message.setToServerValue = object.setToServerValue;
+                                break;
+                            }
+                            break;
                         case "SERVER_VALUE_UNSPECIFIED":
                         case 0:
                             message.setToServerValue = 0;
@@ -19907,7 +20039,7 @@
                         if (message.property != null && message.hasOwnProperty("property"))
                             object.property = message.property;
                         if (message.setToServerValue != null && message.hasOwnProperty("setToServerValue")) {
-                            object.setToServerValue = options.enums === String ? $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] : message.setToServerValue;
+                            object.setToServerValue = options.enums === String ? $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] === undefined ? message.setToServerValue : $root.google.datastore.v1.PropertyTransform.ServerValue[message.setToServerValue] : message.setToServerValue;
                             if (options.oneofs)
                                 object.transformType = "setToServerValue";
                         }
@@ -20816,6 +20948,12 @@
                             return object;
                         var message = new $root.google.datastore.v1.ReadOptions();
                         switch (object.readConsistency) {
+                        default:
+                            if (typeof object.readConsistency === "number") {
+                                message.readConsistency = object.readConsistency;
+                                break;
+                            }
+                            break;
                         case "READ_CONSISTENCY_UNSPECIFIED":
                         case 0:
                             message.readConsistency = 0;
@@ -20861,7 +20999,7 @@
                             options = {};
                         var object = {};
                         if (message.readConsistency != null && message.hasOwnProperty("readConsistency")) {
-                            object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency;
+                            object.readConsistency = options.enums === String ? $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] === undefined ? message.readConsistency : $root.google.datastore.v1.ReadOptions.ReadConsistency[message.readConsistency] : message.readConsistency;
                             if (options.oneofs)
                                 object.consistencyType = "readConsistency";
                         }
@@ -23571,6 +23709,7 @@
                  * @interface ICommonLanguageSettings
                  * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri
                  * @property {Array.|null} [destinations] CommonLanguageSettings destinations
+                 * @property {google.api.ISelectiveGapicGeneration|null} [selectiveGapicGeneration] CommonLanguageSettings selectiveGapicGeneration
                  */
     
                 /**
@@ -23605,6 +23744,14 @@
                  */
                 CommonLanguageSettings.prototype.destinations = $util.emptyArray;
     
+                /**
+                 * CommonLanguageSettings selectiveGapicGeneration.
+                 * @member {google.api.ISelectiveGapicGeneration|null|undefined} selectiveGapicGeneration
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.selectiveGapicGeneration = null;
+    
                 /**
                  * Creates a new CommonLanguageSettings instance using the specified properties.
                  * @function create
@@ -23637,6 +23784,8 @@
                             writer.int32(message.destinations[i]);
                         writer.ldelim();
                     }
+                    if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration"))
+                        $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                     return writer;
                 };
     
@@ -23686,6 +23835,10 @@
                                     message.destinations.push(reader.int32());
                                 break;
                             }
+                        case 3: {
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32());
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -23737,6 +23890,11 @@
                                 break;
                             }
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration);
+                        if (error)
+                            return "selectiveGapicGeneration." + error;
+                    }
                     return null;
                 };
     
@@ -23761,6 +23919,10 @@
                         for (var i = 0; i < object.destinations.length; ++i)
                             switch (object.destinations[i]) {
                             default:
+                                if (typeof object.destinations[i] === "number") {
+                                    message.destinations[i] = object.destinations[i];
+                                    break;
+                                }
                             case "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":
                             case 0:
                                 message.destinations[i] = 0;
@@ -23775,6 +23937,11 @@
                                 break;
                             }
                     }
+                    if (object.selectiveGapicGeneration != null) {
+                        if (typeof object.selectiveGapicGeneration !== "object")
+                            throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration);
+                    }
                     return message;
                 };
     
@@ -23793,15 +23960,19 @@
                     var object = {};
                     if (options.arrays || options.defaults)
                         object.destinations = [];
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.referenceDocsUri = "";
+                        object.selectiveGapicGeneration = null;
+                    }
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         object.referenceDocsUri = message.referenceDocsUri;
                     if (message.destinations && message.destinations.length) {
                         object.destinations = [];
                         for (var j = 0; j < message.destinations.length; ++j)
-                            object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
+                            object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration"))
+                        object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options);
                     return object;
                 };
     
@@ -24193,6 +24364,12 @@
                     if (object.version != null)
                         message.version = String(object.version);
                     switch (object.launchStage) {
+                    default:
+                        if (typeof object.launchStage === "number") {
+                            message.launchStage = object.launchStage;
+                            break;
+                        }
+                        break;
                     case "LAUNCH_STAGE_UNSPECIFIED":
                     case 0:
                         message.launchStage = 0;
@@ -24300,7 +24477,7 @@
                     if (message.version != null && message.hasOwnProperty("version"))
                         object.version = message.version;
                     if (message.launchStage != null && message.hasOwnProperty("launchStage"))
-                        object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] : message.launchStage;
+                        object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] === undefined ? message.launchStage : $root.google.api.LaunchStage[message.launchStage] : message.launchStage;
                     if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums"))
                         object.restNumericEnums = message.restNumericEnums;
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings"))
@@ -24747,6 +24924,12 @@
                     if (object.docTagPrefix != null)
                         message.docTagPrefix = String(object.docTagPrefix);
                     switch (object.organization) {
+                    default:
+                        if (typeof object.organization === "number") {
+                            message.organization = object.organization;
+                            break;
+                        }
+                        break;
                     case "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":
                     case 0:
                         message.organization = 0;
@@ -24846,7 +25029,7 @@
                     if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix"))
                         object.docTagPrefix = message.docTagPrefix;
                     if (message.organization != null && message.hasOwnProperty("organization"))
-                        object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] : message.organization;
+                        object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] === undefined ? message.organization : $root.google.api.ClientLibraryOrganization[message.organization] : message.organization;
                     if (message.librarySettings && message.librarySettings.length) {
                         object.librarySettings = [];
                         for (var j = 0; j < message.librarySettings.length; ++j)
@@ -25602,6 +25785,7 @@
                  * @memberof google.api
                  * @interface IPythonSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common
+                 * @property {google.api.PythonSettings.IExperimentalFeatures|null} [experimentalFeatures] PythonSettings experimentalFeatures
                  */
     
                 /**
@@ -25627,6 +25811,14 @@
                  */
                 PythonSettings.prototype.common = null;
     
+                /**
+                 * PythonSettings experimentalFeatures.
+                 * @member {google.api.PythonSettings.IExperimentalFeatures|null|undefined} experimentalFeatures
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 */
+                PythonSettings.prototype.experimentalFeatures = null;
+    
                 /**
                  * Creates a new PythonSettings instance using the specified properties.
                  * @function create
@@ -25653,6 +25845,8 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures"))
+                        $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     return writer;
                 };
     
@@ -25691,6 +25885,10 @@
                                 message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
                                 break;
                             }
+                        case 2: {
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32());
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -25731,6 +25929,11 @@
                         if (error)
                             return "common." + error;
                     }
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures);
+                        if (error)
+                            return "experimentalFeatures." + error;
+                    }
                     return null;
                 };
     
@@ -25751,6 +25954,11 @@
                             throw TypeError(".google.api.PythonSettings.common: object expected");
                         message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
                     }
+                    if (object.experimentalFeatures != null) {
+                        if (typeof object.experimentalFeatures !== "object")
+                            throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures);
+                    }
                     return message;
                 };
     
@@ -25767,10 +25975,14 @@
                     if (!options)
                         options = {};
                     var object = {};
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.common = null;
+                        object.experimentalFeatures = null;
+                    }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures"))
+                        object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options);
                     return object;
                 };
     
@@ -25800,6 +26012,256 @@
                     return typeUrlPrefix + "/google.api.PythonSettings";
                 };
     
+                PythonSettings.ExperimentalFeatures = (function() {
+    
+                    /**
+                     * Properties of an ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @interface IExperimentalFeatures
+                     * @property {boolean|null} [restAsyncIoEnabled] ExperimentalFeatures restAsyncIoEnabled
+                     * @property {boolean|null} [protobufPythonicTypesEnabled] ExperimentalFeatures protobufPythonicTypesEnabled
+                     * @property {boolean|null} [unversionedPackageDisabled] ExperimentalFeatures unversionedPackageDisabled
+                     */
+    
+                    /**
+                     * Constructs a new ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @classdesc Represents an ExperimentalFeatures.
+                     * @implements IExperimentalFeatures
+                     * @constructor
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     */
+                    function ExperimentalFeatures(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ExperimentalFeatures restAsyncIoEnabled.
+                     * @member {boolean} restAsyncIoEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.restAsyncIoEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures protobufPythonicTypesEnabled.
+                     * @member {boolean} protobufPythonicTypesEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.protobufPythonicTypesEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures unversionedPackageDisabled.
+                     * @member {boolean} unversionedPackageDisabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.unversionedPackageDisabled = false;
+    
+                    /**
+                     * Creates a new ExperimentalFeatures instance using the specified properties.
+                     * @function create
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures instance
+                     */
+                    ExperimentalFeatures.create = function create(properties) {
+                        return new ExperimentalFeatures(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled);
+                        if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.protobufPythonicTypesEnabled);
+                        if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).bool(message.unversionedPackageDisabled);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decode = function decode(reader, length) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.restAsyncIoEnabled = reader.bool();
+                                    break;
+                                }
+                            case 2: {
+                                    message.protobufPythonicTypesEnabled = reader.bool();
+                                    break;
+                                }
+                            case 3: {
+                                    message.unversionedPackageDisabled = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an ExperimentalFeatures message.
+                     * @function verify
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ExperimentalFeatures.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            if (typeof message.restAsyncIoEnabled !== "boolean")
+                                return "restAsyncIoEnabled: boolean expected";
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            if (typeof message.protobufPythonicTypesEnabled !== "boolean")
+                                return "protobufPythonicTypesEnabled: boolean expected";
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            if (typeof message.unversionedPackageDisabled !== "boolean")
+                                return "unversionedPackageDisabled: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.} object Plain object
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     */
+                    ExperimentalFeatures.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
+                            return object;
+                        var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        if (object.restAsyncIoEnabled != null)
+                            message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
+                        if (object.protobufPythonicTypesEnabled != null)
+                            message.protobufPythonicTypesEnabled = Boolean(object.protobufPythonicTypesEnabled);
+                        if (object.unversionedPackageDisabled != null)
+                            message.unversionedPackageDisabled = Boolean(object.unversionedPackageDisabled);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.ExperimentalFeatures} message ExperimentalFeatures
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.} Plain object
+                     */
+                    ExperimentalFeatures.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.restAsyncIoEnabled = false;
+                            object.protobufPythonicTypesEnabled = false;
+                            object.unversionedPackageDisabled = false;
+                        }
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            object.restAsyncIoEnabled = message.restAsyncIoEnabled;
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled;
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            object.unversionedPackageDisabled = message.unversionedPackageDisabled;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ExperimentalFeatures to JSON.
+                     * @function toJSON
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     * @returns {Object.} JSON object
+                     */
+                    ExperimentalFeatures.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ExperimentalFeatures
+                     * @function getTypeUrl
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ExperimentalFeatures.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.api.PythonSettings.ExperimentalFeatures";
+                    };
+    
+                    return ExperimentalFeatures;
+                })();
+    
                 return PythonSettings;
             })();
     
@@ -26670,6 +27132,7 @@
                  * @memberof google.api
                  * @interface IGoSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common
+                 * @property {Object.|null} [renamedServices] GoSettings renamedServices
                  */
     
                 /**
@@ -26681,6 +27144,7 @@
                  * @param {google.api.IGoSettings=} [properties] Properties to set
                  */
                 function GoSettings(properties) {
+                    this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                             if (properties[keys[i]] != null)
@@ -26695,6 +27159,14 @@
                  */
                 GoSettings.prototype.common = null;
     
+                /**
+                 * GoSettings renamedServices.
+                 * @member {Object.} renamedServices
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 */
+                GoSettings.prototype.renamedServices = $util.emptyObject;
+    
                 /**
                  * Creates a new GoSettings instance using the specified properties.
                  * @function create
@@ -26721,6 +27193,9 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices"))
+                        for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim();
                     return writer;
                 };
     
@@ -26751,7 +27226,7 @@
                 GoSettings.decode = function decode(reader, length) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
-                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings();
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
                         switch (tag >>> 3) {
@@ -26759,6 +27234,29 @@
                                 message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
                                 break;
                             }
+                        case 2: {
+                                if (message.renamedServices === $util.emptyObject)
+                                    message.renamedServices = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7);
+                                        break;
+                                    }
+                                }
+                                message.renamedServices[key] = value;
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -26799,6 +27297,14 @@
                         if (error)
                             return "common." + error;
                     }
+                    if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) {
+                        if (!$util.isObject(message.renamedServices))
+                            return "renamedServices: object expected";
+                        var key = Object.keys(message.renamedServices);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedServices[key[i]]))
+                                return "renamedServices: string{k:string} expected";
+                    }
                     return null;
                 };
     
@@ -26819,6 +27325,13 @@
                             throw TypeError(".google.api.GoSettings.common: object expected");
                         message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
                     }
+                    if (object.renamedServices) {
+                        if (typeof object.renamedServices !== "object")
+                            throw TypeError(".google.api.GoSettings.renamedServices: object expected");
+                        message.renamedServices = {};
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                            message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                    }
                     return message;
                 };
     
@@ -26835,10 +27348,18 @@
                     if (!options)
                         options = {};
                     var object = {};
+                    if (options.objects || options.defaults)
+                        object.renamedServices = {};
                     if (options.defaults)
                         object.common = null;
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    var keys2;
+                    if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
+                        object.renamedServices = {};
+                        for (var j = 0; j < keys2.length; ++j)
+                            object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                    }
                     return object;
                 };
     
@@ -27473,6 +27994,249 @@
                 return values;
             })();
     
+            api.SelectiveGapicGeneration = (function() {
+    
+                /**
+                 * Properties of a SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @interface ISelectiveGapicGeneration
+                 * @property {Array.|null} [methods] SelectiveGapicGeneration methods
+                 * @property {boolean|null} [generateOmittedAsInternal] SelectiveGapicGeneration generateOmittedAsInternal
+                 */
+    
+                /**
+                 * Constructs a new SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @classdesc Represents a SelectiveGapicGeneration.
+                 * @implements ISelectiveGapicGeneration
+                 * @constructor
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 */
+                function SelectiveGapicGeneration(properties) {
+                    this.methods = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * SelectiveGapicGeneration methods.
+                 * @member {Array.} methods
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.methods = $util.emptyArray;
+    
+                /**
+                 * SelectiveGapicGeneration generateOmittedAsInternal.
+                 * @member {boolean} generateOmittedAsInternal
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.generateOmittedAsInternal = false;
+    
+                /**
+                 * Creates a new SelectiveGapicGeneration instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration instance
+                 */
+                SelectiveGapicGeneration.create = function create(properties) {
+                    return new SelectiveGapicGeneration(properties);
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.methods != null && message.methods.length)
+                        for (var i = 0; i < message.methods.length; ++i)
+                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]);
+                    if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.generateOmittedAsInternal);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decode = function decode(reader, length) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.methods && message.methods.length))
+                                    message.methods = [];
+                                message.methods.push(reader.string());
+                                break;
+                            }
+                        case 2: {
+                                message.generateOmittedAsInternal = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a SelectiveGapicGeneration message.
+                 * @function verify
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                SelectiveGapicGeneration.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.methods != null && message.hasOwnProperty("methods")) {
+                        if (!Array.isArray(message.methods))
+                            return "methods: array expected";
+                        for (var i = 0; i < message.methods.length; ++i)
+                            if (!$util.isString(message.methods[i]))
+                                return "methods: string[] expected";
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        if (typeof message.generateOmittedAsInternal !== "boolean")
+                            return "generateOmittedAsInternal: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.} object Plain object
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 */
+                SelectiveGapicGeneration.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.SelectiveGapicGeneration)
+                        return object;
+                    var message = new $root.google.api.SelectiveGapicGeneration();
+                    if (object.methods) {
+                        if (!Array.isArray(object.methods))
+                            throw TypeError(".google.api.SelectiveGapicGeneration.methods: array expected");
+                        message.methods = [];
+                        for (var i = 0; i < object.methods.length; ++i)
+                            message.methods[i] = String(object.methods[i]);
+                    }
+                    if (object.generateOmittedAsInternal != null)
+                        message.generateOmittedAsInternal = Boolean(object.generateOmittedAsInternal);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.SelectiveGapicGeneration} message SelectiveGapicGeneration
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.} Plain object
+                 */
+                SelectiveGapicGeneration.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.methods = [];
+                    if (options.defaults)
+                        object.generateOmittedAsInternal = false;
+                    if (message.methods && message.methods.length) {
+                        object.methods = [];
+                        for (var j = 0; j < message.methods.length; ++j)
+                            object.methods[j] = message.methods[j];
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        object.generateOmittedAsInternal = message.generateOmittedAsInternal;
+                    return object;
+                };
+    
+                /**
+                 * Converts this SelectiveGapicGeneration to JSON.
+                 * @function toJSON
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 * @returns {Object.} JSON object
+                 */
+                SelectiveGapicGeneration.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for SelectiveGapicGeneration
+                 * @function getTypeUrl
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                SelectiveGapicGeneration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.SelectiveGapicGeneration";
+                };
+    
+                return SelectiveGapicGeneration;
+            })();
+    
             /**
              * LaunchStage enum.
              * @name google.api.LaunchStage
@@ -28219,6 +28983,7 @@
              * @name google.protobuf.Edition
              * @enum {number}
              * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value
+             * @property {number} EDITION_LEGACY=900 EDITION_LEGACY value
              * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value
              * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value
              * @property {number} EDITION_2023=1000 EDITION_2023 value
@@ -28233,6 +28998,7 @@
             protobuf.Edition = (function() {
                 var valuesById = {}, values = Object.create(valuesById);
                 values[valuesById[0] = "EDITION_UNKNOWN"] = 0;
+                values[valuesById[900] = "EDITION_LEGACY"] = 900;
                 values[valuesById[998] = "EDITION_PROTO2"] = 998;
                 values[valuesById[999] = "EDITION_PROTO3"] = 999;
                 values[valuesById[1000] = "EDITION_2023"] = 1000;
@@ -28257,6 +29023,7 @@
                  * @property {Array.|null} [dependency] FileDescriptorProto dependency
                  * @property {Array.|null} [publicDependency] FileDescriptorProto publicDependency
                  * @property {Array.|null} [weakDependency] FileDescriptorProto weakDependency
+                 * @property {Array.|null} [optionDependency] FileDescriptorProto optionDependency
                  * @property {Array.|null} [messageType] FileDescriptorProto messageType
                  * @property {Array.|null} [enumType] FileDescriptorProto enumType
                  * @property {Array.|null} [service] FileDescriptorProto service
@@ -28279,6 +29046,7 @@
                     this.dependency = [];
                     this.publicDependency = [];
                     this.weakDependency = [];
+                    this.optionDependency = [];
                     this.messageType = [];
                     this.enumType = [];
                     this.service = [];
@@ -28329,6 +29097,14 @@
                  */
                 FileDescriptorProto.prototype.weakDependency = $util.emptyArray;
     
+                /**
+                 * FileDescriptorProto optionDependency.
+                 * @member {Array.} optionDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.optionDependency = $util.emptyArray;
+    
                 /**
                  * FileDescriptorProto messageType.
                  * @member {Array.} messageType
@@ -28450,6 +29226,9 @@
                         writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax);
                     if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                         writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition);
+                    if (message.optionDependency != null && message.optionDependency.length)
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            writer.uint32(/* id 15, wireType 2 =*/122).string(message.optionDependency[i]);
                     return writer;
                 };
     
@@ -28520,6 +29299,12 @@
                                     message.weakDependency.push(reader.int32());
                                 break;
                             }
+                        case 15: {
+                                if (!(message.optionDependency && message.optionDependency.length))
+                                    message.optionDependency = [];
+                                message.optionDependency.push(reader.string());
+                                break;
+                            }
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
@@ -28622,6 +29407,13 @@
                             if (!$util.isInteger(message.weakDependency[i]))
                                 return "weakDependency: integer[] expected";
                     }
+                    if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) {
+                        if (!Array.isArray(message.optionDependency))
+                            return "optionDependency: array expected";
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            if (!$util.isString(message.optionDependency[i]))
+                                return "optionDependency: string[] expected";
+                    }
                     if (message.messageType != null && message.hasOwnProperty("messageType")) {
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
@@ -28676,6 +29468,7 @@
                         default:
                             return "edition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -28728,6 +29521,13 @@
                         for (var i = 0; i < object.weakDependency.length; ++i)
                             message.weakDependency[i] = object.weakDependency[i] | 0;
                     }
+                    if (object.optionDependency) {
+                        if (!Array.isArray(object.optionDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.optionDependency: array expected");
+                        message.optionDependency = [];
+                        for (var i = 0; i < object.optionDependency.length; ++i)
+                            message.optionDependency[i] = String(object.optionDependency[i]);
+                    }
                     if (object.messageType) {
                         if (!Array.isArray(object.messageType))
                             throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected");
@@ -28781,10 +29581,20 @@
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
                     switch (object.edition) {
+                    default:
+                        if (typeof object.edition === "number") {
+                            message.edition = object.edition;
+                            break;
+                        }
+                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.edition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.edition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.edition = 998;
@@ -28850,6 +29660,7 @@
                         object.extension = [];
                         object.publicDependency = [];
                         object.weakDependency = [];
+                        object.optionDependency = [];
                     }
                     if (options.defaults) {
                         object.name = "";
@@ -28905,7 +29716,12 @@
                     if (message.syntax != null && message.hasOwnProperty("syntax"))
                         object.syntax = message.syntax;
                     if (message.edition != null && message.hasOwnProperty("edition"))
-                        object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
+                        object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                    if (message.optionDependency && message.optionDependency.length) {
+                        object.optionDependency = [];
+                        for (var j = 0; j < message.optionDependency.length; ++j)
+                            object.optionDependency[j] = message.optionDependency[j];
+                    }
                     return object;
                 };
     
@@ -28954,6 +29770,7 @@
                  * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
                  * @property {Array.|null} [reservedRange] DescriptorProto reservedRange
                  * @property {Array.|null} [reservedName] DescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] DescriptorProto visibility
                  */
     
                 /**
@@ -29059,6 +29876,14 @@
                  */
                 DescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * DescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new DescriptorProto instance using the specified properties.
                  * @function create
@@ -29111,6 +29936,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 11, wireType 0 =*/88).int32(message.visibility);
                     return writer;
                 };
     
@@ -29201,6 +30028,10 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 11: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -29314,6 +30145,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -29413,6 +30253,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -29442,6 +30302,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -29487,6 +30348,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -30261,6 +31124,12 @@
                     case 0:
                         message.verification = 0;
                         break;
+                    default:
+                        if (typeof object.verification === "number") {
+                            message.verification = object.verification;
+                            break;
+                        }
+                        break;
                     case "UNVERIFIED":
                     case 1:
                         message.verification = 1;
@@ -30296,7 +31165,7 @@
                             object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options);
                     }
                     if (message.verification != null && message.hasOwnProperty("verification"))
-                        object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification;
+                        object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] === undefined ? message.verification : $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification;
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
@@ -31009,6 +31878,12 @@
                     if (object.number != null)
                         message.number = object.number | 0;
                     switch (object.label) {
+                    default:
+                        if (typeof object.label === "number") {
+                            message.label = object.label;
+                            break;
+                        }
+                        break;
                     case "LABEL_OPTIONAL":
                     case 1:
                         message.label = 1;
@@ -31023,6 +31898,12 @@
                         break;
                     }
                     switch (object.type) {
+                    default:
+                        if (typeof object.type === "number") {
+                            message.type = object.type;
+                            break;
+                        }
+                        break;
                     case "TYPE_DOUBLE":
                     case 1:
                         message.type = 1;
@@ -31149,9 +32030,9 @@
                     if (message.number != null && message.hasOwnProperty("number"))
                         object.number = message.number;
                     if (message.label != null && message.hasOwnProperty("label"))
-                        object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label;
+                        object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] === undefined ? message.label : $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label;
                     if (message.type != null && message.hasOwnProperty("type"))
-                        object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type;
+                        object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] === undefined ? message.type : $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type;
                     if (message.typeName != null && message.hasOwnProperty("typeName"))
                         object.typeName = message.typeName;
                     if (message.defaultValue != null && message.hasOwnProperty("defaultValue"))
@@ -31501,6 +32382,7 @@
                  * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options
                  * @property {Array.|null} [reservedRange] EnumDescriptorProto reservedRange
                  * @property {Array.|null} [reservedName] EnumDescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] EnumDescriptorProto visibility
                  */
     
                 /**
@@ -31561,6 +32443,14 @@
                  */
                 EnumDescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * EnumDescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new EnumDescriptorProto instance using the specified properties.
                  * @function create
@@ -31598,6 +32488,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.visibility);
                     return writer;
                 };
     
@@ -31658,6 +32550,10 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 6: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -31726,6 +32622,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -31775,6 +32680,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -31799,6 +32724,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -31819,6 +32745,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -33472,6 +34400,12 @@
                     if (object.javaStringCheckUtf8 != null)
                         message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8);
                     switch (object.optimizeFor) {
+                    default:
+                        if (typeof object.optimizeFor === "number") {
+                            message.optimizeFor = object.optimizeFor;
+                            break;
+                        }
+                        break;
                     case "SPEED":
                     case 1:
                         message.optimizeFor = 1;
@@ -33571,7 +34505,7 @@
                     if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname"))
                         object.javaOuterClassname = message.javaOuterClassname;
                     if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor"))
-                        object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor;
+                        object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] === undefined ? message.optimizeFor : $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor;
                     if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles"))
                         object.javaMultipleFiles = message.javaMultipleFiles;
                     if (message.goPackage != null && message.hasOwnProperty("goPackage"))
@@ -34046,6 +34980,7 @@
                  * @property {Array.|null} [targets] FieldOptions targets
                  * @property {Array.|null} [editionDefaults] FieldOptions editionDefaults
                  * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] FieldOptions featureSupport
                  * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption
                  * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior
                  */
@@ -34165,6 +35100,14 @@
                  */
                 FieldOptions.prototype.features = null;
     
+                /**
+                 * FieldOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.featureSupport = null;
+    
                 /**
                  * FieldOptions uninterpretedOption.
                  * @member {Array.} uninterpretedOption
@@ -34231,6 +35174,8 @@
                             $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
                     if (message.features != null && Object.hasOwnProperty.call(message, "features"))
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -34328,6 +35273,10 @@
                                 message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
                                 break;
                             }
+                        case 22: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                break;
+                            }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
@@ -34459,6 +35408,11 @@
                         if (error)
                             return "features." + error;
                     }
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
@@ -34503,6 +35457,12 @@
                         return object;
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
+                    default:
+                        if (typeof object.ctype === "number") {
+                            message.ctype = object.ctype;
+                            break;
+                        }
+                        break;
                     case "STRING":
                     case 0:
                         message.ctype = 0;
@@ -34519,6 +35479,12 @@
                     if (object.packed != null)
                         message.packed = Boolean(object.packed);
                     switch (object.jstype) {
+                    default:
+                        if (typeof object.jstype === "number") {
+                            message.jstype = object.jstype;
+                            break;
+                        }
+                        break;
                     case "JS_NORMAL":
                     case 0:
                         message.jstype = 0;
@@ -34543,6 +35509,12 @@
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
                     switch (object.retention) {
+                    default:
+                        if (typeof object.retention === "number") {
+                            message.retention = object.retention;
+                            break;
+                        }
+                        break;
                     case "RETENTION_UNKNOWN":
                     case 0:
                         message.retention = 0;
@@ -34563,6 +35535,10 @@
                         for (var i = 0; i < object.targets.length; ++i)
                             switch (object.targets[i]) {
                             default:
+                                if (typeof object.targets[i] === "number") {
+                                    message.targets[i] = object.targets[i];
+                                    break;
+                                }
                             case "TARGET_TYPE_UNKNOWN":
                             case 0:
                                 message.targets[i] = 0;
@@ -34620,6 +35596,11 @@
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
                         message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
                     }
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                    }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
                             throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected");
@@ -34637,6 +35618,10 @@
                         for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i)
                             switch (object[".google.api.fieldBehavior"][i]) {
                             default:
+                                if (typeof object[".google.api.fieldBehavior"][i] === "number") {
+                                    message[".google.api.fieldBehavior"][i] = object[".google.api.fieldBehavior"][i];
+                                    break;
+                                }
                             case "FIELD_BEHAVIOR_UNSPECIFIED":
                             case 0:
                                 message[".google.api.fieldBehavior"][i] = 0;
@@ -34708,9 +35693,10 @@
                         object.debugRedact = false;
                         object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0;
                         object.features = null;
+                        object.featureSupport = null;
                     }
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
-                        object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype;
+                        object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype;
                     if (message.packed != null && message.hasOwnProperty("packed"))
                         object.packed = message.packed;
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
@@ -34718,7 +35704,7 @@
                     if (message.lazy != null && message.hasOwnProperty("lazy"))
                         object.lazy = message.lazy;
                     if (message.jstype != null && message.hasOwnProperty("jstype"))
-                        object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype;
+                        object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] === undefined ? message.jstype : $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype;
                     if (message.weak != null && message.hasOwnProperty("weak"))
                         object.weak = message.weak;
                     if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy"))
@@ -34726,11 +35712,11 @@
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
                     if (message.retention != null && message.hasOwnProperty("retention"))
-                        object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention;
+                        object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention;
                     if (message.targets && message.targets.length) {
                         object.targets = [];
                         for (var j = 0; j < message.targets.length; ++j)
-                            object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j];
+                            object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] === undefined ? message.targets[j] : $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j];
                     }
                     if (message.editionDefaults && message.editionDefaults.length) {
                         object.editionDefaults = [];
@@ -34739,6 +35725,8 @@
                     }
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -34747,7 +35735,7 @@
                     if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) {
                         object[".google.api.fieldBehavior"] = [];
                         for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j)
-                            object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j];
+                            object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] === undefined ? message[".google.api.fieldBehavior"][j] : $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j];
                     }
                     return object;
                 };
@@ -35007,6 +35995,7 @@
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -35038,10 +36027,20 @@
                             return object;
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
+                        default:
+                            if (typeof object.edition === "number") {
+                                message.edition = object.edition;
+                                break;
+                            }
+                            break;
                         case "EDITION_UNKNOWN":
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -35108,7 +36107,7 @@
                         if (message.value != null && message.hasOwnProperty("value"))
                             object.value = message.value;
                         if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
                         return object;
                     };
     
@@ -35141,6 +36140,486 @@
                     return EditionDefault;
                 })();
     
+                FieldOptions.FeatureSupport = (function() {
+    
+                    /**
+                     * Properties of a FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @interface IFeatureSupport
+                     * @property {google.protobuf.Edition|null} [editionIntroduced] FeatureSupport editionIntroduced
+                     * @property {google.protobuf.Edition|null} [editionDeprecated] FeatureSupport editionDeprecated
+                     * @property {string|null} [deprecationWarning] FeatureSupport deprecationWarning
+                     * @property {google.protobuf.Edition|null} [editionRemoved] FeatureSupport editionRemoved
+                     */
+    
+                    /**
+                     * Constructs a new FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @classdesc Represents a FeatureSupport.
+                     * @implements IFeatureSupport
+                     * @constructor
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     */
+                    function FeatureSupport(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * FeatureSupport editionIntroduced.
+                     * @member {google.protobuf.Edition} editionIntroduced
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionIntroduced = 0;
+    
+                    /**
+                     * FeatureSupport editionDeprecated.
+                     * @member {google.protobuf.Edition} editionDeprecated
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionDeprecated = 0;
+    
+                    /**
+                     * FeatureSupport deprecationWarning.
+                     * @member {string} deprecationWarning
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.deprecationWarning = "";
+    
+                    /**
+                     * FeatureSupport editionRemoved.
+                     * @member {google.protobuf.Edition} editionRemoved
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionRemoved = 0;
+    
+                    /**
+                     * Creates a new FeatureSupport instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport instance
+                     */
+                    FeatureSupport.create = function create(properties) {
+                        return new FeatureSupport(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced);
+                        if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editionDeprecated);
+                        if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.deprecationWarning);
+                        if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved"))
+                            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.editionRemoved);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decode = function decode(reader, length) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.editionIntroduced = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.editionDeprecated = reader.int32();
+                                    break;
+                                }
+                            case 3: {
+                                    message.deprecationWarning = reader.string();
+                                    break;
+                                }
+                            case 4: {
+                                    message.editionRemoved = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a FeatureSupport message.
+                     * @function verify
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    FeatureSupport.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            switch (message.editionIntroduced) {
+                            default:
+                                return "editionIntroduced: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            switch (message.editionDeprecated) {
+                            default:
+                                return "editionDeprecated: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            if (!$util.isString(message.deprecationWarning))
+                                return "deprecationWarning: string expected";
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            switch (message.editionRemoved) {
+                            default:
+                                return "editionRemoved: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.} object Plain object
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     */
+                    FeatureSupport.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
+                            return object;
+                        var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        switch (object.editionIntroduced) {
+                        default:
+                            if (typeof object.editionIntroduced === "number") {
+                                message.editionIntroduced = object.editionIntroduced;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionIntroduced = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionIntroduced = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionIntroduced = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionIntroduced = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionIntroduced = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionIntroduced = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionIntroduced = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionIntroduced = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionIntroduced = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionIntroduced = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionIntroduced = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionIntroduced = 2147483647;
+                            break;
+                        }
+                        switch (object.editionDeprecated) {
+                        default:
+                            if (typeof object.editionDeprecated === "number") {
+                                message.editionDeprecated = object.editionDeprecated;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionDeprecated = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionDeprecated = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionDeprecated = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionDeprecated = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionDeprecated = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionDeprecated = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionDeprecated = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionDeprecated = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionDeprecated = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionDeprecated = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionDeprecated = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionDeprecated = 2147483647;
+                            break;
+                        }
+                        if (object.deprecationWarning != null)
+                            message.deprecationWarning = String(object.deprecationWarning);
+                        switch (object.editionRemoved) {
+                        default:
+                            if (typeof object.editionRemoved === "number") {
+                                message.editionRemoved = object.editionRemoved;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionRemoved = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionRemoved = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionRemoved = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionRemoved = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionRemoved = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionRemoved = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionRemoved = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionRemoved = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionRemoved = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionRemoved = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionRemoved = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionRemoved = 2147483647;
+                            break;
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.FeatureSupport} message FeatureSupport
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.} Plain object
+                     */
+                    FeatureSupport.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionDeprecated = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.deprecationWarning = "";
+                            object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced;
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated;
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            object.deprecationWarning = message.deprecationWarning;
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this FeatureSupport to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     * @returns {Object.} JSON object
+                     */
+                    FeatureSupport.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for FeatureSupport
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    FeatureSupport.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.FeatureSupport";
+                    };
+    
+                    return FeatureSupport;
+                })();
+    
                 return FieldOptions;
             })();
     
@@ -35729,6 +37208,7 @@
                  * @property {boolean|null} [deprecated] EnumValueOptions deprecated
                  * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features
                  * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] EnumValueOptions featureSupport
                  * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption
                  */
     
@@ -35772,6 +37252,14 @@
                  */
                 EnumValueOptions.prototype.debugRedact = false;
     
+                /**
+                 * EnumValueOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.featureSupport = null;
+    
                 /**
                  * EnumValueOptions uninterpretedOption.
                  * @member {Array.} uninterpretedOption
@@ -35810,6 +37298,8 @@
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
                         writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact);
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -35859,6 +37349,10 @@
                                 message.debugRedact = reader.bool();
                                 break;
                             }
+                        case 4: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                break;
+                            }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
@@ -35911,6 +37405,11 @@
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
@@ -35944,6 +37443,11 @@
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                    }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
                             throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected");
@@ -35976,6 +37480,7 @@
                         object.deprecated = false;
                         object.features = null;
                         object.debugRedact = false;
+                        object.featureSupport = null;
                     }
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
@@ -35983,6 +37488,8 @@
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -36676,6 +38183,12 @@
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     switch (object.idempotencyLevel) {
+                    default:
+                        if (typeof object.idempotencyLevel === "number") {
+                            message.idempotencyLevel = object.idempotencyLevel;
+                            break;
+                        }
+                        break;
                     case "IDEMPOTENCY_UNKNOWN":
                     case 0:
                         message.idempotencyLevel = 0;
@@ -36757,7 +38270,7 @@
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
                     if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel"))
-                        object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel;
+                        object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel;
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
@@ -37464,6 +38977,8 @@
                  * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation
                  * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding
                  * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat
+                 * @property {google.protobuf.FeatureSet.EnforceNamingStyle|null} [enforceNamingStyle] FeatureSet enforceNamingStyle
+                 * @property {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null} [defaultSymbolVisibility] FeatureSet defaultSymbolVisibility
                  */
     
                 /**
@@ -37529,6 +39044,22 @@
                  */
                 FeatureSet.prototype.jsonFormat = 0;
     
+                /**
+                 * FeatureSet enforceNamingStyle.
+                 * @member {google.protobuf.FeatureSet.EnforceNamingStyle} enforceNamingStyle
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.enforceNamingStyle = 0;
+    
+                /**
+                 * FeatureSet defaultSymbolVisibility.
+                 * @member {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility} defaultSymbolVisibility
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.defaultSymbolVisibility = 0;
+    
                 /**
                  * Creates a new FeatureSet instance using the specified properties.
                  * @function create
@@ -37565,6 +39096,10 @@
                         writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding);
                     if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat"))
                         writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat);
+                    if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle"))
+                        writer.uint32(/* id 7, wireType 0 =*/56).int32(message.enforceNamingStyle);
+                    if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility"))
+                        writer.uint32(/* id 8, wireType 0 =*/64).int32(message.defaultSymbolVisibility);
                     return writer;
                 };
     
@@ -37623,6 +39158,14 @@
                                 message.jsonFormat = reader.int32();
                                 break;
                             }
+                        case 7: {
+                                message.enforceNamingStyle = reader.int32();
+                                break;
+                            }
+                        case 8: {
+                                message.defaultSymbolVisibility = reader.int32();
+                                break;
+                            }
                         default:
                             reader.skipType(tag & 7);
                             break;
@@ -37713,6 +39256,26 @@
                         case 2:
                             break;
                         }
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        switch (message.enforceNamingStyle) {
+                        default:
+                            return "enforceNamingStyle: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        switch (message.defaultSymbolVisibility) {
+                        default:
+                            return "defaultSymbolVisibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                            break;
+                        }
                     return null;
                 };
     
@@ -37729,6 +39292,12 @@
                         return object;
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
+                    default:
+                        if (typeof object.fieldPresence === "number") {
+                            message.fieldPresence = object.fieldPresence;
+                            break;
+                        }
+                        break;
                     case "FIELD_PRESENCE_UNKNOWN":
                     case 0:
                         message.fieldPresence = 0;
@@ -37747,6 +39316,12 @@
                         break;
                     }
                     switch (object.enumType) {
+                    default:
+                        if (typeof object.enumType === "number") {
+                            message.enumType = object.enumType;
+                            break;
+                        }
+                        break;
                     case "ENUM_TYPE_UNKNOWN":
                     case 0:
                         message.enumType = 0;
@@ -37761,6 +39336,12 @@
                         break;
                     }
                     switch (object.repeatedFieldEncoding) {
+                    default:
+                        if (typeof object.repeatedFieldEncoding === "number") {
+                            message.repeatedFieldEncoding = object.repeatedFieldEncoding;
+                            break;
+                        }
+                        break;
                     case "REPEATED_FIELD_ENCODING_UNKNOWN":
                     case 0:
                         message.repeatedFieldEncoding = 0;
@@ -37775,6 +39356,12 @@
                         break;
                     }
                     switch (object.utf8Validation) {
+                    default:
+                        if (typeof object.utf8Validation === "number") {
+                            message.utf8Validation = object.utf8Validation;
+                            break;
+                        }
+                        break;
                     case "UTF8_VALIDATION_UNKNOWN":
                     case 0:
                         message.utf8Validation = 0;
@@ -37789,6 +39376,12 @@
                         break;
                     }
                     switch (object.messageEncoding) {
+                    default:
+                        if (typeof object.messageEncoding === "number") {
+                            message.messageEncoding = object.messageEncoding;
+                            break;
+                        }
+                        break;
                     case "MESSAGE_ENCODING_UNKNOWN":
                     case 0:
                         message.messageEncoding = 0;
@@ -37803,6 +39396,12 @@
                         break;
                     }
                     switch (object.jsonFormat) {
+                    default:
+                        if (typeof object.jsonFormat === "number") {
+                            message.jsonFormat = object.jsonFormat;
+                            break;
+                        }
+                        break;
                     case "JSON_FORMAT_UNKNOWN":
                     case 0:
                         message.jsonFormat = 0;
@@ -37816,6 +39415,54 @@
                         message.jsonFormat = 2;
                         break;
                     }
+                    switch (object.enforceNamingStyle) {
+                    default:
+                        if (typeof object.enforceNamingStyle === "number") {
+                            message.enforceNamingStyle = object.enforceNamingStyle;
+                            break;
+                        }
+                        break;
+                    case "ENFORCE_NAMING_STYLE_UNKNOWN":
+                    case 0:
+                        message.enforceNamingStyle = 0;
+                        break;
+                    case "STYLE2024":
+                    case 1:
+                        message.enforceNamingStyle = 1;
+                        break;
+                    case "STYLE_LEGACY":
+                    case 2:
+                        message.enforceNamingStyle = 2;
+                        break;
+                    }
+                    switch (object.defaultSymbolVisibility) {
+                    default:
+                        if (typeof object.defaultSymbolVisibility === "number") {
+                            message.defaultSymbolVisibility = object.defaultSymbolVisibility;
+                            break;
+                        }
+                        break;
+                    case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN":
+                    case 0:
+                        message.defaultSymbolVisibility = 0;
+                        break;
+                    case "EXPORT_ALL":
+                    case 1:
+                        message.defaultSymbolVisibility = 1;
+                        break;
+                    case "EXPORT_TOP_LEVEL":
+                    case 2:
+                        message.defaultSymbolVisibility = 2;
+                        break;
+                    case "LOCAL_ALL":
+                    case 3:
+                        message.defaultSymbolVisibility = 3;
+                        break;
+                    case "STRICT":
+                    case 4:
+                        message.defaultSymbolVisibility = 4;
+                        break;
+                    }
                     return message;
                 };
     
@@ -37839,19 +39486,25 @@
                         object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0;
                         object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0;
                         object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
+                        object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0;
+                        object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0;
                     }
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
-                        object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
+                        object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
                     if (message.enumType != null && message.hasOwnProperty("enumType"))
-                        object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType;
+                        object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType;
                     if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding"))
-                        object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding;
+                        object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding;
                     if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation"))
-                        object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation;
+                        object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] === undefined ? message.utf8Validation : $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation;
                     if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding"))
-                        object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
+                        object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
                     if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
-                        object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                        object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle;
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility;
                     return object;
                 };
     
@@ -37979,6 +39632,217 @@
                     return values;
                 })();
     
+                /**
+                 * EnforceNamingStyle enum.
+                 * @name google.protobuf.FeatureSet.EnforceNamingStyle
+                 * @enum {number}
+                 * @property {number} ENFORCE_NAMING_STYLE_UNKNOWN=0 ENFORCE_NAMING_STYLE_UNKNOWN value
+                 * @property {number} STYLE2024=1 STYLE2024 value
+                 * @property {number} STYLE_LEGACY=2 STYLE_LEGACY value
+                 */
+                FeatureSet.EnforceNamingStyle = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "ENFORCE_NAMING_STYLE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "STYLE2024"] = 1;
+                    values[valuesById[2] = "STYLE_LEGACY"] = 2;
+                    return values;
+                })();
+    
+                FeatureSet.VisibilityFeature = (function() {
+    
+                    /**
+                     * Properties of a VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @interface IVisibilityFeature
+                     */
+    
+                    /**
+                     * Constructs a new VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @classdesc Represents a VisibilityFeature.
+                     * @implements IVisibilityFeature
+                     * @constructor
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     */
+                    function VisibilityFeature(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Creates a new VisibilityFeature instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature instance
+                     */
+                    VisibilityFeature.create = function create(properties) {
+                        return new VisibilityFeature(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decode = function decode(reader, length) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            switch (tag >>> 3) {
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a VisibilityFeature message.
+                     * @function verify
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    VisibilityFeature.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.} object Plain object
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     */
+                    VisibilityFeature.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
+                            return object;
+                        return new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                    };
+    
+                    /**
+                     * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.VisibilityFeature} message VisibilityFeature
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.} Plain object
+                     */
+                    VisibilityFeature.toObject = function toObject() {
+                        return {};
+                    };
+    
+                    /**
+                     * Converts this VisibilityFeature to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @instance
+                     * @returns {Object.} JSON object
+                     */
+                    VisibilityFeature.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for VisibilityFeature
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    VisibilityFeature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FeatureSet.VisibilityFeature";
+                    };
+    
+                    /**
+                     * DefaultSymbolVisibility enum.
+                     * @name google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+                     * @enum {number}
+                     * @property {number} DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0 DEFAULT_SYMBOL_VISIBILITY_UNKNOWN value
+                     * @property {number} EXPORT_ALL=1 EXPORT_ALL value
+                     * @property {number} EXPORT_TOP_LEVEL=2 EXPORT_TOP_LEVEL value
+                     * @property {number} LOCAL_ALL=3 LOCAL_ALL value
+                     * @property {number} STRICT=4 STRICT value
+                     */
+                    VisibilityFeature.DefaultSymbolVisibility = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0;
+                        values[valuesById[1] = "EXPORT_ALL"] = 1;
+                        values[valuesById[2] = "EXPORT_TOP_LEVEL"] = 2;
+                        values[valuesById[3] = "LOCAL_ALL"] = 3;
+                        values[valuesById[4] = "STRICT"] = 4;
+                        return values;
+                    })();
+    
+                    return VisibilityFeature;
+                })();
+    
                 return FeatureSet;
             })();
     
@@ -38161,6 +40025,7 @@
                         default:
                             return "minimumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -38178,6 +40043,7 @@
                         default:
                             return "maximumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -38216,10 +40082,20 @@
                         }
                     }
                     switch (object.minimumEdition) {
+                    default:
+                        if (typeof object.minimumEdition === "number") {
+                            message.minimumEdition = object.minimumEdition;
+                            break;
+                        }
+                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.minimumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.minimumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.minimumEdition = 998;
@@ -38262,10 +40138,20 @@
                         break;
                     }
                     switch (object.maximumEdition) {
+                    default:
+                        if (typeof object.maximumEdition === "number") {
+                            message.maximumEdition = object.maximumEdition;
+                            break;
+                        }
+                        break;
                     case "EDITION_UNKNOWN":
                     case 0:
                         message.maximumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.maximumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.maximumEdition = 998;
@@ -38335,9 +40221,9 @@
                             object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options);
                     }
                     if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition"))
-                        object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition;
+                        object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] === undefined ? message.minimumEdition : $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition;
                     if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition"))
-                        object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition;
+                        object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] === undefined ? message.maximumEdition : $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition;
                     return object;
                 };
     
@@ -38374,7 +40260,8 @@
                      * @memberof google.protobuf.FeatureSetDefaults
                      * @interface IFeatureSetEditionDefault
                      * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition
-                     * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features
+                     * @property {google.protobuf.IFeatureSet|null} [overridableFeatures] FeatureSetEditionDefault overridableFeatures
+                     * @property {google.protobuf.IFeatureSet|null} [fixedFeatures] FeatureSetEditionDefault fixedFeatures
                      */
     
                     /**
@@ -38401,12 +40288,20 @@
                     FeatureSetEditionDefault.prototype.edition = 0;
     
                     /**
-                     * FeatureSetEditionDefault features.
-                     * @member {google.protobuf.IFeatureSet|null|undefined} features
+                     * FeatureSetEditionDefault overridableFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} overridableFeatures
                      * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
                      * @instance
                      */
-                    FeatureSetEditionDefault.prototype.features = null;
+                    FeatureSetEditionDefault.prototype.overridableFeatures = null;
+    
+                    /**
+                     * FeatureSetEditionDefault fixedFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} fixedFeatures
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.fixedFeatures = null;
     
                     /**
                      * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -38432,10 +40327,12 @@
                     FeatureSetEditionDefault.encode = function encode(message, writer) {
                         if (!writer)
                             writer = $Writer.create();
-                        if (message.features != null && Object.hasOwnProperty.call(message, "features"))
-                            $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                         if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                             writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                        if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                         return writer;
                     };
     
@@ -38474,8 +40371,12 @@
                                     message.edition = reader.int32();
                                     break;
                                 }
-                            case 2: {
-                                    message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                            case 4: {
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            case 5: {
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
                                     break;
                                 }
                             default:
@@ -38518,6 +40419,7 @@
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -38530,10 +40432,15 @@
                             case 2147483647:
                                 break;
                             }
-                        if (message.features != null && message.hasOwnProperty("features")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures);
+                            if (error)
+                                return "overridableFeatures." + error;
+                        }
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures);
                             if (error)
-                                return "features." + error;
+                                return "fixedFeatures." + error;
                         }
                         return null;
                     };
@@ -38551,10 +40458,20 @@
                             return object;
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
+                        default:
+                            if (typeof object.edition === "number") {
+                                message.edition = object.edition;
+                                break;
+                            }
+                            break;
                         case "EDITION_UNKNOWN":
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -38596,10 +40513,15 @@
                             message.edition = 2147483647;
                             break;
                         }
-                        if (object.features != null) {
-                            if (typeof object.features !== "object")
-                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected");
-                            message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        if (object.overridableFeatures != null) {
+                            if (typeof object.overridableFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures);
+                        }
+                        if (object.fixedFeatures != null) {
+                            if (typeof object.fixedFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures);
                         }
                         return message;
                     };
@@ -38618,13 +40540,16 @@
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.features = null;
                             object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.overridableFeatures = null;
+                            object.fixedFeatures = null;
                         }
-                        if (message.features != null && message.hasOwnProperty("features"))
-                            object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                         if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] : message.edition;
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures"))
+                            object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options);
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures"))
+                            object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options);
                         return object;
                     };
     
@@ -39724,6 +41649,12 @@
                         if (object.end != null)
                             message.end = object.end | 0;
                         switch (object.semantic) {
+                        default:
+                            if (typeof object.semantic === "number") {
+                                message.semantic = object.semantic;
+                                break;
+                            }
+                            break;
                         case "NONE":
                         case 0:
                             message.semantic = 0;
@@ -39773,7 +41704,7 @@
                         if (message.end != null && message.hasOwnProperty("end"))
                             object.end = message.end;
                         if (message.semantic != null && message.hasOwnProperty("semantic"))
-                            object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic;
+                            object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] === undefined ? message.semantic : $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic;
                         return object;
                     };
     
@@ -39825,6 +41756,22 @@
                 return GeneratedCodeInfo;
             })();
     
+            /**
+             * SymbolVisibility enum.
+             * @name google.protobuf.SymbolVisibility
+             * @enum {number}
+             * @property {number} VISIBILITY_UNSET=0 VISIBILITY_UNSET value
+             * @property {number} VISIBILITY_LOCAL=1 VISIBILITY_LOCAL value
+             * @property {number} VISIBILITY_EXPORT=2 VISIBILITY_EXPORT value
+             */
+            protobuf.SymbolVisibility = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "VISIBILITY_UNSET"] = 0;
+                values[valuesById[1] = "VISIBILITY_LOCAL"] = 1;
+                values[valuesById[2] = "VISIBILITY_EXPORT"] = 2;
+                return values;
+            })();
+    
             protobuf.Duration = (function() {
     
                 /**
@@ -41250,6 +43197,12 @@
                         return object;
                     var message = new $root.google.protobuf.Value();
                     switch (object.nullValue) {
+                    default:
+                        if (typeof object.nullValue === "number") {
+                            message.nullValue = object.nullValue;
+                            break;
+                        }
+                        break;
                     case "NULL_VALUE":
                     case 0:
                         message.nullValue = 0;
@@ -41288,7 +43241,7 @@
                         options = {};
                     var object = {};
                     if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
-                        object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
+                        object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue;
                         if (options.oneofs)
                             object.kind = "nullValue";
                     }
diff --git a/handwritten/nodejs-datastore/protos/protos.json b/handwritten/nodejs-datastore/protos/protos.json
index 392bd1b306d..b35941f37fd 100644
--- a/handwritten/nodejs-datastore/protos/protos.json
+++ b/handwritten/nodejs-datastore/protos/protos.json
@@ -1,4 +1,7 @@
 {
+  "options": {
+    "syntax": "proto3"
+  },
   "nested": {
     "google": {
       "nested": {
@@ -2169,8 +2172,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "RoutingProto",
             "java_package": "com.google.api",
-            "objc_class_prefix": "GAPI",
-            "cc_enable_arenas": true
+            "objc_class_prefix": "GAPI"
           },
           "nested": {
             "http": {
@@ -2294,6 +2296,10 @@
                   "rule": "repeated",
                   "type": "ClientLibraryDestination",
                   "id": 2
+                },
+                "selectiveGapicGeneration": {
+                  "type": "SelectiveGapicGeneration",
+                  "id": 3
                 }
               }
             },
@@ -2434,6 +2440,28 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "experimentalFeatures": {
+                  "type": "ExperimentalFeatures",
+                  "id": 2
+                }
+              },
+              "nested": {
+                "ExperimentalFeatures": {
+                  "fields": {
+                    "restAsyncIoEnabled": {
+                      "type": "bool",
+                      "id": 1
+                    },
+                    "protobufPythonicTypesEnabled": {
+                      "type": "bool",
+                      "id": 2
+                    },
+                    "unversionedPackageDisabled": {
+                      "type": "bool",
+                      "id": 3
+                    }
+                  }
                 }
               }
             },
@@ -2491,6 +2519,11 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "renamedServices": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
                 }
               }
             },
@@ -2552,6 +2585,19 @@
                 "PACKAGE_MANAGER": 20
               }
             },
+            "SelectiveGapicGeneration": {
+              "fields": {
+                "methods": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 1
+                },
+                "generateOmittedAsInternal": {
+                  "type": "bool",
+                  "id": 2
+                }
+              }
+            },
             "LaunchStage": {
               "values": {
                 "LAUNCH_STAGE_UNSPECIFIED": 0,
@@ -2632,11 +2678,18 @@
                   "type": "FileDescriptorProto",
                   "id": 1
                 }
-              }
+              },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ]
             },
             "Edition": {
               "values": {
                 "EDITION_UNKNOWN": 0,
+                "EDITION_LEGACY": 900,
                 "EDITION_PROTO2": 998,
                 "EDITION_PROTO3": 999,
                 "EDITION_2023": 1000,
@@ -2680,6 +2733,11 @@
                     "packed": false
                   }
                 },
+                "optionDependency": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 15
+                },
                 "messageType": {
                   "rule": "repeated",
                   "type": "DescriptorProto",
@@ -2767,6 +2825,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 10
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 11
                 }
               },
               "nested": {
@@ -2988,6 +3050,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 5
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 6
                 }
               },
               "nested": {
@@ -3198,6 +3264,7 @@
                   42,
                   42
                 ],
+                "php_generic_services",
                 [
                   38,
                   38
@@ -3331,7 +3398,8 @@
                   "type": "bool",
                   "id": 10,
                   "options": {
-                    "default": false
+                    "default": false,
+                    "deprecated": true
                   }
                 },
                 "debugRedact": {
@@ -3362,6 +3430,10 @@
                   "type": "FeatureSet",
                   "id": 21
                 },
+                "featureSupport": {
+                  "type": "FeatureSupport",
+                  "id": 22
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -3431,6 +3503,26 @@
                       "id": 2
                     }
                   }
+                },
+                "FeatureSupport": {
+                  "fields": {
+                    "editionIntroduced": {
+                      "type": "Edition",
+                      "id": 1
+                    },
+                    "editionDeprecated": {
+                      "type": "Edition",
+                      "id": 2
+                    },
+                    "deprecationWarning": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "editionRemoved": {
+                      "type": "Edition",
+                      "id": 4
+                    }
+                  }
                 }
               }
             },
@@ -3516,6 +3608,10 @@
                     "default": false
                   }
                 },
+                "featureSupport": {
+                  "type": "FieldOptions.FeatureSupport",
+                  "id": 4
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -3654,6 +3750,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_2023",
                     "edition_defaults.value": "EXPLICIT"
                   }
@@ -3664,6 +3761,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "OPEN"
                   }
@@ -3674,6 +3772,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "PACKED"
                   }
@@ -3684,6 +3783,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "VERIFY"
                   }
@@ -3694,7 +3794,8 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
-                    "edition_defaults.edition": "EDITION_PROTO2",
+                    "feature_support.edition_introduced": "EDITION_2023",
+                    "edition_defaults.edition": "EDITION_LEGACY",
                     "edition_defaults.value": "LENGTH_PREFIXED"
                   }
                 },
@@ -3704,27 +3805,38 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "ALLOW"
                   }
+                },
+                "enforceNamingStyle": {
+                  "type": "EnforceNamingStyle",
+                  "id": 7,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_METHOD",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "STYLE2024"
+                  }
+                },
+                "defaultSymbolVisibility": {
+                  "type": "VisibilityFeature.DefaultSymbolVisibility",
+                  "id": 8,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "EXPORT_TOP_LEVEL"
+                  }
                 }
               },
               "extensions": [
                 [
                   1000,
-                  1000
-                ],
-                [
-                  1001,
-                  1001
-                ],
-                [
-                  1002,
-                  1002
-                ],
-                [
-                  9990,
-                  9990
+                  9994
                 ],
                 [
                   9995,
@@ -3769,7 +3881,13 @@
                     "UTF8_VALIDATION_UNKNOWN": 0,
                     "VERIFY": 2,
                     "NONE": 3
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ]
+                  ]
                 },
                 "MessageEncoding": {
                   "values": {
@@ -3784,6 +3902,33 @@
                     "ALLOW": 1,
                     "LEGACY_BEST_EFFORT": 2
                   }
+                },
+                "EnforceNamingStyle": {
+                  "values": {
+                    "ENFORCE_NAMING_STYLE_UNKNOWN": 0,
+                    "STYLE2024": 1,
+                    "STYLE_LEGACY": 2
+                  }
+                },
+                "VisibilityFeature": {
+                  "fields": {},
+                  "reserved": [
+                    [
+                      1,
+                      536870911
+                    ]
+                  ],
+                  "nested": {
+                    "DefaultSymbolVisibility": {
+                      "values": {
+                        "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0,
+                        "EXPORT_ALL": 1,
+                        "EXPORT_TOP_LEVEL": 2,
+                        "LOCAL_ALL": 3,
+                        "STRICT": 4
+                      }
+                    }
+                  }
                 }
               }
             },
@@ -3810,11 +3955,26 @@
                       "type": "Edition",
                       "id": 3
                     },
-                    "features": {
+                    "overridableFeatures": {
                       "type": "FeatureSet",
-                      "id": 2
+                      "id": 4
+                    },
+                    "fixedFeatures": {
+                      "type": "FeatureSet",
+                      "id": 5
                     }
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ],
+                    [
+                      2,
+                      2
+                    ],
+                    "features"
+                  ]
                 }
               }
             },
@@ -3826,6 +3986,12 @@
                   "id": 1
                 }
               },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ],
               "nested": {
                 "Location": {
                   "fields": {
@@ -3901,6 +4067,13 @@
                 }
               }
             },
+            "SymbolVisibility": {
+              "values": {
+                "VISIBILITY_UNSET": 0,
+                "VISIBILITY_LOCAL": 1,
+                "VISIBILITY_EXPORT": 2
+              }
+            },
             "Duration": {
               "fields": {
                 "seconds": {
@@ -4085,6 +4258,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "OperationsProto",
             "java_package": "com.google.longrunning",
+            "objc_class_prefix": "GLRUN",
             "php_namespace": "Google\\LongRunning"
           },
           "nested": {

From bb02fc398c44d21941675bbfcc9a74e5efce4163 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Mon, 15 Sep 2025 16:22:00 -0400
Subject: [PATCH 812/820] feat: Add datastore mode data transforms (#1369)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Work in progress property transforms

* Change entity back to any

* Add the new interfaces and middleware code

* Pull the build property transform into separate fn

* Add arrays to the build transform function

* Add a test for property transforms

* Correct test comments

* More modular build function

* Update the test to check for the final result

* Add the request spy

* Fix the bug making property always increment

* Fix the test based on the most recent source code

change

* Refactor code for the array transforms

* Add a guard in case the casted type doesn’t exist

* Remove only

* Add a header

* Remove TODO

* Remove TODO

* Parameterize the test

* Ran linter

* Run the linter

* Add a comment to buildPropertyTransforms

* Add comments for building the property transforms

* Add two more test cases

* Build the 3 test cases

* should process string inputs for max/min/increment

* Produce test cases for different situations

* Delete invalid test cases and run linter

* Correct the order of operations test

* Remove only
---
 handwritten/nodejs-datastore/src/entity.ts    |  22 +-
 handwritten/nodejs-datastore/src/index.ts     |  28 +-
 .../utils/entity/buildPropertyTransforms.ts   |  73 ++
 .../nodejs-datastore/system-test/datastore.ts | 942 +++++++++++++++---
 4 files changed, 948 insertions(+), 117 deletions(-)
 create mode 100644 handwritten/nodejs-datastore/src/utils/entity/buildPropertyTransforms.ts

diff --git a/handwritten/nodejs-datastore/src/entity.ts b/handwritten/nodejs-datastore/src/entity.ts
index 61ba83dd535..b5c376724e5 100644
--- a/handwritten/nodejs-datastore/src/entity.ts
+++ b/handwritten/nodejs-datastore/src/entity.ts
@@ -1452,8 +1452,28 @@ export interface EntityProto {
   excludeFromIndexes?: boolean;
 }
 
+/*
+ * This is the interface the user would provide transform operations in before
+ * they are converted to the google.datastore.v1.IPropertyTransform
+ * interface.
+ *
+ */
+export type PropertyTransform = {
+  property: string;
+  setToServerValue: boolean;
+  increment: any;
+  maximum: any;
+  minimum: any;
+  appendMissingElements: any[];
+  removeAllFromArray: any[];
+};
+
+interface EntityWithTransforms {
+  transforms?: PropertyTransform[];
+}
+
 // eslint-disable-next-line @typescript-eslint/no-explicit-any
-export type Entity = any;
+export type Entity = any & EntityWithTransforms;
 export type Entities = Entity | Entity[];
 
 interface KeyProtoPathElement extends google.datastore.v1.Key.IPathElement {
diff --git a/handwritten/nodejs-datastore/src/index.ts b/handwritten/nodejs-datastore/src/index.ts
index 43ea58ad858..64f0fb9e10d 100644
--- a/handwritten/nodejs-datastore/src/index.ts
+++ b/handwritten/nodejs-datastore/src/index.ts
@@ -37,9 +37,16 @@ import {
   ServiceError,
 } from 'google-gax';
 import * as is from 'is';
-import {Transform, pipeline} from 'stream';
+import {pipeline, Transform} from 'stream';
 
-import {entity, Entities, Entity, EntityProto, ValueProto} from './entity';
+import {
+  entity,
+  Entities,
+  Entity,
+  EntityProto,
+  ValueProto,
+  PropertyTransform,
+} from './entity';
 import {AggregateField} from './aggregate';
 import Key = entity.Key;
 export {Entity, Key, AggregateField};
@@ -70,6 +77,10 @@ import {AggregateQuery} from './aggregate';
 import {SaveEntity} from './interfaces/save';
 import {extendExcludeFromIndexes} from './utils/entity/extendExcludeFromIndexes';
 import {buildEntityProto} from './utils/entity/buildEntityProto';
+import IValue = google.datastore.v1.IValue;
+import IEntity = google.datastore.v1.IEntity;
+import ServerValue = google.datastore.v1.PropertyTransform.ServerValue;
+import {buildPropertyTransforms} from './utils/entity/buildPropertyTransforms';
 
 const {grpc} = new GrpcClient();
 
@@ -1098,7 +1109,8 @@ class Datastore extends DatastoreRequest {
     entities
       .map(DatastoreRequest.prepareEntityObject_)
       .forEach((entityObject: Entity, index: number) => {
-        const mutation: Mutation = {};
+        const mutation: google.datastore.v1.IMutation = {};
+
         let method = 'upsert';
 
         if (entityObject.method) {
@@ -1120,7 +1132,15 @@ class Datastore extends DatastoreRequest {
 
         entityProto.key = entity.keyToKeyProto(entityObject.key);
 
-        mutation[method] = entityProto;
+        mutation[method as 'upsert' | 'update' | 'insert' | 'delete'] =
+          entityProto as IEntity;
+
+        // We built the entityProto, now we should add the data transforms:
+        if (entityObject.transforms) {
+          mutation.propertyTransforms = buildPropertyTransforms(
+            entityObject.transforms,
+          );
+        }
         mutations.push(mutation);
       });
 
diff --git a/handwritten/nodejs-datastore/src/utils/entity/buildPropertyTransforms.ts b/handwritten/nodejs-datastore/src/utils/entity/buildPropertyTransforms.ts
new file mode 100644
index 00000000000..333d4bd5363
--- /dev/null
+++ b/handwritten/nodejs-datastore/src/utils/entity/buildPropertyTransforms.ts
@@ -0,0 +1,73 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import {entity, PropertyTransform} from '../../entity';
+import {google} from '../../../protos/protos';
+import IValue = google.datastore.v1.IValue;
+import ServerValue = google.datastore.v1.PropertyTransform.ServerValue;
+
+/**
+ * This method takes the user supplied transforms object and returns a list of
+ * corresponding transforms that are instead in the shape of the protos so that
+ * they can be included in the grpc request to the service directly.
+ *
+ * @param transforms The transforms supplied by the user that the user intends
+ * to apply.
+ */
+export function buildPropertyTransforms(transforms: PropertyTransform[]) {
+  const propertyTransforms: google.datastore.v1.IPropertyTransform[] = [];
+  transforms.forEach((transform: PropertyTransform) => {
+    const property = transform.property;
+    // If the user's transform has a setToServerValue property then ensure the
+    // propertyTransforms sent in the request have a setToServerValue transform.
+    if (transform.setToServerValue) {
+      propertyTransforms.push({
+        property,
+        setToServerValue: ServerValue.REQUEST_TIME,
+      });
+    }
+    // If the transform has an 'increment', 'maximum' or 'minimum' property then
+    // add the corresponding property transform to the propertyTransforms in the
+    // request.
+    ['increment', 'maximum', 'minimum'].forEach(type => {
+      const castedType = type as 'increment' | 'maximum' | 'minimum';
+      if (transform[castedType]) {
+        propertyTransforms.push({
+          property,
+          [castedType]: entity.encodeValue(
+            parseFloat(transform[castedType]),
+            property,
+          ) as IValue,
+        });
+      }
+    });
+    // If the transform has an 'appendMissingElements' or 'removeAllFromArray'
+    // property then add the corresponding property transform to the
+    // propertyTransforms in the request.
+    ['appendMissingElements', 'removeAllFromArray'].forEach(type => {
+      const castedType = type as 'appendMissingElements' | 'removeAllFromArray';
+      if (transform[castedType]) {
+        propertyTransforms.push({
+          property,
+          [castedType]: {
+            values: transform[castedType].map(element => {
+              return entity.encodeValue(element, property) as IValue;
+            }),
+          },
+        });
+      }
+    });
+  });
+  return propertyTransforms;
+}
diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts
index 8b32fa92fc6..904029d26fa 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.ts
+++ b/handwritten/nodejs-datastore/system-test/datastore.ts
@@ -11,7 +11,6 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-
 import * as assert from 'assert';
 import {readFileSync} from 'fs';
 import * as path from 'path';
@@ -26,11 +25,9 @@ import {Entities, entity, Entity} from '../src/entity';
 import {Query, RunQueryInfo, ExecutionStats} from '../src/query';
 import KEY_SYMBOL = entity.KEY_SYMBOL;
 import {transactionExpiredError} from '../src/request';
-
+const sinon = require('sinon');
 const async = require('async');
-
 const SECOND_DATABASE_ID = 'multidb-test';
-
 async.each(
   [
     {
@@ -55,14 +52,11 @@ async.each(
         testKinds.push(keyObject.kind);
         return keyObject;
       };
-
       const {indexes: DECLARED_INDEXES} = yaml.load(
         readFileSync(path.join(__dirname, 'data', 'index.yaml'), 'utf8'),
       ) as {indexes: google.datastore.admin.v1.IIndex[]};
-
       // TODO/DX ensure indexes before testing, and maybe? cleanup indexes after
       //  possible implications with kokoro project
-
       // Gets the read time of the latest save so that the test isn't flakey due to race condition.
       async function getReadTime(path: [{kind: string; name: string}]) {
         const projectId = await datastore.getProjectId();
@@ -82,7 +76,6 @@ async.each(
         }
         return parseInt(results[0].readTime.seconds) * 1000;
       }
-
       after(async () => {
         async function deleteEntities(kind: string) {
           const query = datastore.createQuery(kind).select('__key__');
@@ -94,17 +87,14 @@ async.each(
         }
         await Promise.all(testKinds.map(kind => deleteEntities(kind)));
       });
-
       it('should allocate IDs', async () => {
         const keys = await datastore.allocateIds(datastore.key('Kind'), 10);
         assert.ok(keys);
       });
-
       it('should get the project id', async () => {
         const projectId = await datastore.getProjectId();
         assert.notEqual(projectId, null);
       });
-
       describe('create, retrieve and delete', () => {
         const post = {
           title: 'How to make the perfect pizza in your grill',
@@ -119,7 +109,6 @@ async.each(
             views: 100,
           },
         };
-
         it('should excludeFromIndexes correctly', async () => {
           const longString = Buffer.alloc(1501, '.').toString();
           const postKey = datastore.key(['Post', 'post1']);
@@ -162,7 +151,6 @@ async.each(
               ],
             },
           };
-
           await datastore.save({
             key: postKey,
             data,
@@ -183,7 +171,6 @@ async.each(
           assert.deepStrictEqual(entity, data);
           await datastore.delete(postKey);
         });
-
         it('should remove index with using wildcard in excludeFromIndexes', async () => {
           const longString = Buffer.alloc(1501, '.').toString();
           const postKey = datastore.key(['Post', 'post3']);
@@ -226,7 +213,6 @@ async.each(
               ],
             },
           };
-
           const excludeFromIndexes = [
             'longString',
             'longStringArray[]',
@@ -234,7 +220,6 @@ async.each(
             'metadata.obj.*',
             'metadata.longStringArray[].*',
           ];
-
           await datastore.save({
             key: postKey,
             data,
@@ -246,7 +231,6 @@ async.each(
           assert.deepStrictEqual(entity, data);
           await datastore.delete(postKey);
         });
-
         it('should auto remove index with excludeLargeProperties enabled', async () => {
           const longString = Buffer.alloc(1501, '.').toString();
           const postKey = datastore.key(['Post', 'post2']);
@@ -289,7 +273,6 @@ async.each(
               ],
             },
           };
-
           await datastore.save({
             key: postKey,
             data,
@@ -301,7 +284,6 @@ async.each(
           assert.deepStrictEqual(entity, data);
           await datastore.delete(postKey);
         });
-
         it('should accurately save/get a large int value via Datastore.int()', async () => {
           const postKey = datastore.key('Team');
           const largeIntValueAsString = '9223372036854775807';
@@ -312,7 +294,6 @@ async.each(
           assert.throws(() => entity.points.valueOf());
           await datastore.delete(postKey);
         });
-
         it('should wrap specified properties via IntegerTypeCastOptions.properties', async () => {
           const postKey = datastore.key('Scores');
           const largeIntValueAsString = '9223372036854775807';
@@ -337,7 +318,6 @@ async.each(
           assert.strictEqual(entity.broncos, broncos);
           await datastore.delete(postKey);
         });
-
         it('should save/get/delete with a key name', async () => {
           const postKey = datastore.key(['Post', 'post1']);
           await datastore.save({key: postKey, data: post});
@@ -347,7 +327,6 @@ async.each(
           assert.deepStrictEqual(entity, post);
           await datastore.delete(postKey);
         });
-
         it('should save a nested name/value pair with name as a long string', async () => {
           const longString = Buffer.alloc(1501, '.').toString();
           const postKey = datastore.key(['Post', 'post1']);
@@ -378,7 +357,6 @@ async.each(
             excludeLargeProperties: true,
           });
         });
-
         describe('multi-db support for read and write operations', () => {
           const namespace = `${Date.now()}`;
           const keyHierarchy = ['Post', 'post1'];
@@ -505,7 +483,6 @@ async.each(
             );
           });
         });
-
         it('should save/get/delete from a snapshot', async () => {
           function sleep(ms: number) {
             return new Promise(resolve => setTimeout(resolve, ms));
@@ -541,7 +518,6 @@ async.each(
           assert.deepStrictEqual(entityNoOptions, post2);
           await datastore.delete(postKey);
         });
-
         it('should save/get/delete with a numeric key id', async () => {
           const postKey = datastore.key(['Post', 123456789]);
           await datastore.save({key: postKey, data: post});
@@ -550,7 +526,6 @@ async.each(
           assert.deepStrictEqual(entity, post);
           await datastore.delete(postKey);
         });
-
         it('should save/get/delete a buffer', async () => {
           const postKey = datastore.key(['Post']);
           const data = {
@@ -567,7 +542,6 @@ async.each(
           assert.deepStrictEqual(entity, data);
           await datastore.delete(datastore.key(['Post', assignedId as string]));
         });
-
         it('should save/get/delete an empty buffer', async () => {
           const postKey = datastore.key(['Post']);
           const data = {
@@ -581,20 +555,16 @@ async.each(
           assert.deepStrictEqual(entity, data);
           await datastore.delete(datastore.key(['Post', assignedId as string]));
         });
-
         it('should save/get/delete with a generated key id', async () => {
           const postKey = datastore.key('Post');
           await datastore.save({key: postKey, data: post});
-
           // The key's path should now be complete.
           assert(postKey.id);
-
           const [entity] = await datastore.get(postKey);
           delete entity[datastore.KEY];
           assert.deepStrictEqual(entity, post);
           await datastore.delete(postKey);
         });
-
         it('should save/get/update', async () => {
           const postKey = datastore.key('Post');
           await datastore.save({key: postKey, data: post});
@@ -606,7 +576,6 @@ async.each(
           assert.strictEqual(entity2.title, 'Updated');
           await datastore.delete(postKey);
         });
-
         it('should save/get/merge', async () => {
           const postKey = datastore.key(['Post', 1]);
           const originalData = {
@@ -629,7 +598,6 @@ async.each(
           assert.strictEqual(entity.status, originalData.data.status);
           await datastore.delete(postKey);
         });
-
         it('should save and get with a string ID', async () => {
           const longIdKey = datastore.key([
             'Post',
@@ -644,11 +612,9 @@ async.each(
           const [entity] = await datastore.get(longIdKey);
           assert.strictEqual(entity.test, true);
         });
-
         it('should fail explicitly set second insert on save', async () => {
           const postKey = datastore.key('Post');
           await datastore.save({key: postKey, data: post});
-
           // The key's path should now be complete.
           assert(postKey.id);
           await assert.rejects(
@@ -663,7 +629,6 @@ async.each(
           assert.deepStrictEqual(entity, post);
           await datastore.delete(postKey);
         });
-
         it('should fail explicitly set first update on save', async () => {
           const postKey = datastore.key('Post');
           await assert.rejects(
@@ -674,7 +639,6 @@ async.each(
             }),
           );
         });
-
         it('should save/get/delete multiple entities at once', async () => {
           const post2 = {
             title: 'How to make the perfect homemade pasta',
@@ -695,11 +659,9 @@ async.each(
           assert.strictEqual(entities.length, 2);
           await datastore.delete([key1, key2]);
         });
-
         it('should get multiple entities in a stream', done => {
           const key1 = datastore.key('Post');
           const key2 = datastore.key('Post');
-
           datastore.save(
             [
               {key: key1, data: post},
@@ -707,9 +669,7 @@ async.each(
             ],
             err => {
               assert.ifError(err);
-
               let numEntitiesEmitted = 0;
-
               datastore
                 .createReadStream([key1, key2])
                 .on('error', done)
@@ -723,7 +683,6 @@ async.each(
             },
           );
         });
-
         it('should save keys as a part of entity and query by key', async () => {
           const personKey = datastore.key(['People', 'US', 'Person', 'name']);
           await datastore.save({
@@ -742,7 +701,6 @@ async.each(
           assert.deepStrictEqual(results![0].linkedTo, personKey);
           await datastore.delete(personKey);
         });
-
         it('should save with an empty buffer', async () => {
           const key = datastore.key(['TEST']);
           const result = await datastore.save({
@@ -755,7 +713,6 @@ async.each(
           const mutationResult = result.pop()?.mutationResults?.pop();
           assert.strictEqual(mutationResult?.key?.path?.pop()?.kind, 'TEST');
         });
-
         describe('entity types', () => {
           it('should save and decode an int', async () => {
             const integerValue = 2015;
@@ -770,7 +727,6 @@ async.each(
             const [entity] = await datastore.get(key);
             assert.strictEqual(entity.year, integerValue);
           });
-
           it('should save and decode a double', async () => {
             const doubleValue = 99.99;
             const doubleType = Datastore.double(doubleValue);
@@ -784,7 +740,6 @@ async.each(
             const [entity] = await datastore.get(key);
             assert.strictEqual(entity.nines, doubleValue);
           });
-
           it('should save and decode a geo point', async () => {
             const geoPointValue = {
               latitude: 40.6894,
@@ -803,10 +758,8 @@ async.each(
           });
         });
       });
-
       describe('querying the datastore', () => {
         const ancestor = datastore.key(['Book', 'GoT']);
-
         const keys = [
           // Paths:
           ['Rickard'],
@@ -820,7 +773,6 @@ async.each(
         ].map(path => {
           return datastore.key(['Book', 'GoT', 'Character'].concat(path));
         });
-
         const characters = [
           {
             name: 'Rickard',
@@ -871,7 +823,6 @@ async.each(
             alive: true,
           },
         ];
-
         before(async () => {
           // This 'sleep' function is used to ensure that when data is saved to datastore,
           // the time on the server is far enough ahead to be sure to be later than timeBeforeDataCreation
@@ -897,11 +848,9 @@ async.each(
           await sleep(3000);
           await datastore.save(keysToSave);
         });
-
         after(async () => {
           await datastore.delete(keys);
         });
-
         it('should limit queries', async () => {
           const q = datastore
             .createQuery('Character')
@@ -916,7 +865,6 @@ async.each(
           const [secondEntities] = await datastore.runQuery(secondQ);
           assert.strictEqual(secondEntities!.length, 3);
         });
-
         it('should not go over a limit', async () => {
           const limit = 3;
           const q = datastore
@@ -926,7 +874,6 @@ async.each(
           const [results] = await datastore.runQuery(q);
           assert.strictEqual(results!.length, limit);
         });
-
         it('should run a query as a stream', done => {
           const q = datastore.createQuery('Character').hasAncestor(ancestor);
           let resultsReturned = 0;
@@ -939,7 +886,6 @@ async.each(
               done();
             });
         });
-
         it('should run a datastore query as a stream via query#runStream', done => {
           const q = datastore.createQuery('Character').hasAncestor(ancestor);
           let resultsReturned = 0;
@@ -951,7 +897,6 @@ async.each(
               done();
             });
         });
-
         it('should run a transaction query as a stream via query#runStream', done => {
           const transaction = datastore.transaction({readOnly: true});
           const q = transaction.createQuery('Character').hasAncestor(ancestor);
@@ -964,7 +909,6 @@ async.each(
               done();
             });
         });
-
         it('should not go over a limit with a stream', done => {
           const limit = 3;
           const q = datastore
@@ -981,7 +925,6 @@ async.each(
               done();
             });
         });
-
         it('should filter queries with simple indexes', async () => {
           const q = datastore
             .createQuery('Character')
@@ -990,7 +933,6 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 6);
         });
-
         it('should filter queries with NOT_EQUAL', async () => {
           const q = datastore
             .createQuery('Character')
@@ -999,7 +941,6 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 6);
         });
-
         it('should filter queries with IN', async () => {
           const q = datastore
             .createQuery('Character')
@@ -1008,7 +949,6 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 3);
         });
-
         it('should filter queries with __key__ and IN', async () => {
           const key1 = datastore.key(['Book', 'GoT', 'Character', 'Rickard']);
           const key2 = datastore.key([
@@ -1040,7 +980,6 @@ async.each(
           assert.deepStrictEqual(entities[1][KEY_SYMBOL], key3);
           assert.deepStrictEqual(entities[2][KEY_SYMBOL], key2);
         });
-
         it('should filter queries with NOT_IN', async () => {
           const q = datastore
             .createQuery('Character')
@@ -1049,7 +988,6 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 5);
         });
-
         it('should filter queries with defined indexes', async () => {
           const q = datastore
             .createQuery('Character')
@@ -1241,7 +1179,6 @@ async.each(
               },
             });
           }
-
           describe('when using transactions', () => {
             describe('when using the runQuery function with transactions', () => {
               let transaction: Transaction;
@@ -2180,7 +2117,6 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities.length, characters.length);
         });
-
         it('should construct filters by null status', async () => {
           assert.strictEqual(
             datastore
@@ -2206,24 +2142,20 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 1);
         });
-
         it('should order queries', async () => {
           const q = datastore
             .createQuery('Character')
             .hasAncestor(ancestor)
             .order('appearances');
-
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities![0].name, characters[0].name);
           assert.strictEqual(entities![7].name, characters[3].name);
         });
-
         it('should select projections', async () => {
           const q = datastore
             .createQuery('Character')
             .hasAncestor(ancestor)
             .select(['name', 'family']);
-
           const [entities] = await datastore.runQuery(q);
           delete entities[0][datastore.KEY];
           assert.deepStrictEqual(entities![0], {
@@ -2236,7 +2168,6 @@ async.each(
             family: 'Stark',
           });
         });
-
         it('should paginate with offset and limit', async () => {
           const q = datastore
             .createQuery('Character')
@@ -2244,7 +2175,6 @@ async.each(
             .offset(2)
             .limit(3)
             .order('appearances');
-
           const [entities, info] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, 3);
           assert.strictEqual(entities![0].name, 'Robb');
@@ -2259,7 +2189,6 @@ async.each(
           assert.strictEqual(secondEntities![0].name, 'Sansa');
           assert.strictEqual(secondEntities![2].name, 'Arya');
         });
-
         it('should resume from a start cursor', async () => {
           const q = datastore
             .createQuery('Character')
@@ -2278,7 +2207,6 @@ async.each(
           assert.strictEqual(secondEntities![0].name, 'Catelyn');
           assert.strictEqual(secondEntities![3].name, 'Arya');
         });
-
         it('should group queries', async () => {
           const q = datastore
             .createQuery('Character')
@@ -2287,12 +2215,10 @@ async.each(
           const [entities] = await datastore.runQuery(q);
           assert.strictEqual(entities!.length, characters.length - 1);
         });
-
         it('should query from the Query object', async () => {
           await datastore.createQuery('Character').run();
         });
       });
-
       describe('querying the datastore with an overflow data set', () => {
         const keys = [
           // Paths:
@@ -2769,7 +2695,6 @@ async.each(
             await doPutRunQueryCommit(transaction);
           });
         });
-
         describe('runAggregationQuery, put, commit', () => {
           const key = datastore.key(['Company', 'Google']);
           const obj = {
@@ -2862,7 +2787,6 @@ async.each(
           // Sleep for 10 seconds so that any future reads will be later than timeBeforeDataCreation.
           await sleep(10000);
         });
-
         it('should run in a transaction', async () => {
           const key = datastore.key(['Company', 'Google']);
           const obj = {
@@ -2877,21 +2801,17 @@ async.each(
           delete entity[datastore.KEY];
           assert.deepStrictEqual(entity, obj);
         });
-
         it('should commit all saves and deletes at the end', async () => {
           const deleteKey = datastore.key(['Company', 'Subway']);
           const key = datastore.key(['Company', 'Google']);
           const incompleteKey = datastore.key('Company');
-
           await datastore.save({
             key: deleteKey,
             data: {},
           });
           const transaction = datastore.transaction();
-
           await transaction.run();
           transaction.delete(deleteKey);
-
           transaction.save([
             {
               key,
@@ -2902,12 +2822,9 @@ async.each(
               data: {rating: 100},
             },
           ]);
-
           await transaction.commit();
-
           // Incomplete key should have been given an ID.
           assert.strictEqual(incompleteKey.path.length, 2);
-
           const [[deletedEntity], [fetchedEntity]] = await Promise.all([
             // Deletes the key that is in the deletion queue.
             datastore.get(deleteKey),
@@ -2917,7 +2834,6 @@ async.each(
           assert.strictEqual(typeof deletedEntity, 'undefined');
           assert.strictEqual(fetchedEntity.rating, 10);
         });
-
         it('should use the last modification to a key', async () => {
           const incompleteKey = datastore.key('Company');
           const key = datastore.key(['Company', 'Google']);
@@ -2939,15 +2855,12 @@ async.each(
           ]);
           transaction.delete(key);
           await transaction.commit();
-
           // Should not return a result.
           const [entity] = await datastore.get(key);
           assert.strictEqual(entity, undefined);
-
           // Incomplete key should have been given an id.
           assert.strictEqual(incompleteKey.path.length, 2);
         });
-
         it('should query within a transaction', async () => {
           const transaction = datastore.transaction();
           await transaction.run();
@@ -2962,7 +2875,6 @@ async.each(
           assert(entities!.length > 0);
           await transaction.commit();
         });
-
         it('should query within a transaction at a previous read time', async () => {
           const transaction = datastore.transaction();
           await transaction.run();
@@ -2981,7 +2893,6 @@ async.each(
           assert(entitiesBefore!.length < entitiesNow!.length);
           await transaction.commit();
         });
-
         describe('aggregate query within a transaction', async () => {
           it('should run a query and return the results', async () => {
             // Add a test here to verify what the data is at this time.
@@ -3108,20 +3019,17 @@ async.each(
             await transaction.commit();
           });
         });
-
         it('should read in a readOnly transaction', async () => {
           const transaction = datastore.transaction({readOnly: true});
           const key = datastore.key(['Company', 'Google']);
           await transaction.run();
           await transaction.get(key);
         });
-
         it('should read in a readOnly transaction without transaction.run', async () => {
           const transaction = datastore.transaction({readOnly: true});
           const key = datastore.key(['Company', 'Google']);
           await transaction.get(key);
         });
-
         it('should not write in a readOnly transaction', async () => {
           const transaction = datastore.transaction({readOnly: true});
           const key = datastore.key(['Company', 'Google']);
@@ -3131,7 +3039,6 @@ async.each(
           await assert.rejects(transaction.commit());
         });
       });
-
       describe('indexes', () => {
         // @TODO: Until the protos support creating indexes, these tests depend on
         // the remote state of declared indexes. Could be flaky!
@@ -3141,12 +3048,10 @@ async.each(
             indexes.length >= DECLARED_INDEXES.length,
             'has at least the number of indexes per system-test/data/index.yaml',
           );
-
           // Comparing index.yaml and the actual defined index in Datastore requires
           // assumptions to complete a shape transformation, so let's just see if
           // a returned index has the right shape and not inspect the values.
           const [firstIndex] = indexes;
-
           assert.ok(firstIndex, 'first index is readable');
           assert.ok(
             firstIndex.metadata!.properties,
@@ -3158,10 +3063,8 @@ async.each(
           );
           assert.ok(firstIndex.metadata!.ancestor, 'has the ancestor property');
         });
-
         it('should get all indexes as a stream', done => {
           const indexes: Index[] = [];
-
           datastore
             .getIndexesStream()
             .on('error', done)
@@ -3173,11 +3076,9 @@ async.each(
               done();
             });
         });
-
         it('should get a specific index', async () => {
           const [indexes] = await datastore.getIndexes();
           const [firstIndex] = indexes;
-
           const index = datastore.index(firstIndex.id);
           const [metadata] = await index.getMetadata();
           assert.deepStrictEqual(
@@ -3187,12 +3088,10 @@ async.each(
           );
         });
       });
-
       describe('importing and exporting entities', () => {
         const gcs = new Storage();
         const bucket = gcs.bucket('nodejs-datastore-system-tests');
         let currentAttempt = 0;
-
         const setupForDelay = () => {
           currentAttempt++;
         };
@@ -3208,17 +3107,14 @@ async.each(
             setTimeout(done, ms);
           });
         };
-
         describe('running tests against the delay function', () => {
           let consoleInfoFunction: (message: string) => void;
           let infoLogCount = 0;
-
           before(async () => {
             infoLogCount = 0;
             currentAttempt = 0;
             consoleInfoFunction = console.info;
           });
-
           it('should be sure that the delay function emits console info messages', async function () {
             // Override console.info to track the number of times it is called.
             console.info = (message: string) => {
@@ -3240,27 +3136,22 @@ async.each(
             assert.strictEqual(infoLogCount, numberOfRetries - 1);
             assert.strictEqual(currentAttempt, numberOfRetries + 1);
           });
-
           after(async () => {
             console.info = consoleInfoFunction;
           });
         });
-
         it('should export, then import entities', async function () {
           setupForDelay();
           this.retries(3);
           await delay(this);
           const [exportOperation] = await datastore.export({bucket});
           await exportOperation.promise();
-
           const [files] = await bucket.getFiles({maxResults: 1});
           const [exportedFile] = files;
           assert.ok(exportedFile.name.includes('overall_export_metadata'));
-
           const [importOperation] = await datastore.import({
             file: exportedFile,
           });
-
           // This is a >20 minute operation, so we're just going to make sure the
           // right type of operation was started.
           assert.strictEqual(
@@ -3269,11 +3160,9 @@ async.each(
             ).inputUrl,
             `gs://${exportedFile.bucket.name}/${exportedFile.name}`,
           );
-
           await importOperation.cancel();
         });
       });
-
       describe('using a custom endpoint', () => {
         it('should complete a request when using the default endpoint as a custom endpoint', async () => {
           const customDatastore = new Datastore({
@@ -3295,6 +3184,835 @@ async.each(
           assert.strictEqual(entity, undefined);
         });
       });
+      describe('Datastore mode data transforms', () => {
+        const key = datastore.key(['Post', 'post1']);
+        function getStandardTestCase() {
+          return {
+            name: 'should perform a basic data transform',
+            saveArg: {
+              key: key,
+              data: {
+                name: 'test',
+                p1: 3,
+                p2: 4,
+                p3: 5,
+                a1: [3, 4, 5],
+              },
+              transforms: [
+                {
+                  property: 'p1',
+                  setToServerValue: true,
+                },
+                {
+                  property: 'p2',
+                  increment: 4,
+                },
+                {
+                  property: 'p3',
+                  maximum: 9,
+                },
+                {
+                  property: 'p2',
+                  minimum: 6,
+                },
+                {
+                  property: 'a1',
+                  appendMissingElements: [5, 6],
+                },
+                {
+                  property: 'a1',
+                  removeAllFromArray: [3],
+                },
+              ],
+            },
+            saveResult: [
+              {
+                mutationResults: [
+                  {
+                    transformResults: [
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        valueType: 'timestampValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '8',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '9',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '6',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                    ],
+                    key: null,
+                    conflictDetected: false,
+                  },
+                ],
+                commitTime: null,
+              },
+            ],
+            serverValue: {
+              name: 'test',
+              a1: [4, 5, 6],
+              p2: 6,
+              p3: 9,
+            },
+            gapicRequest: {
+              client: 'DatastoreClient',
+              method: 'commit',
+              reqOpts: {
+                mutations: [
+                  {
+                    upsert: {
+                      key: {
+                        path: [
+                          {
+                            kind: 'Post',
+                            name: 'post1',
+                          },
+                        ],
+                        partitionId: {},
+                      },
+                      properties: {
+                        name: {
+                          stringValue: 'test',
+                        },
+                        p1: {
+                          integerValue: '3',
+                        },
+                        p2: {
+                          integerValue: '4',
+                        },
+                        p3: {
+                          integerValue: '5',
+                        },
+                        a1: {
+                          arrayValue: {
+                            values: [
+                              {
+                                integerValue: '3',
+                              },
+                              {
+                                integerValue: '4',
+                              },
+                              {
+                                integerValue: '5',
+                              },
+                            ],
+                          },
+                        },
+                      },
+                    },
+                    propertyTransforms: [
+                      {
+                        property: 'p1',
+                        setToServerValue: 1,
+                      },
+                      {
+                        property: 'p2',
+                        increment: {
+                          integerValue: '4',
+                        },
+                      },
+                      {
+                        property: 'p3',
+                        maximum: {
+                          integerValue: '9',
+                        },
+                      },
+                      {
+                        property: 'p2',
+                        minimum: {
+                          integerValue: '6',
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        appendMissingElements: {
+                          values: [
+                            {
+                              integerValue: '5',
+                            },
+                            {
+                              integerValue: '6',
+                            },
+                          ],
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        removeAllFromArray: {
+                          values: [
+                            {
+                              integerValue: '3',
+                            },
+                          ],
+                        },
+                      },
+                    ],
+                  },
+                ],
+              },
+              gaxOpts: {},
+            },
+          };
+        }
+        const standardTestCase = getStandardTestCase();
+        // Add test case 2: Setting the server value to false:
+        const standardTestCaseWithSetToServerFalse = getStandardTestCase();
+        standardTestCaseWithSetToServerFalse.name =
+          'should perform a transform with setToServerValue false';
+        standardTestCaseWithSetToServerFalse.saveArg.transforms.shift();
+        standardTestCaseWithSetToServerFalse.saveResult[0].mutationResults[0].transformResults.shift();
+        standardTestCaseWithSetToServerFalse.gapicRequest.reqOpts.mutations[0].propertyTransforms.shift();
+        // Add test case 3: User inputs string values for transforms
+        const standardTestCaseWithStringValues = getStandardTestCase();
+        standardTestCaseWithStringValues.name =
+          'should perform a transform with string values';
+        standardTestCaseWithStringValues.saveArg.transforms[1].increment =
+          '4' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[2].maximum =
+          '9' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[3].minimum =
+          '6' as any;
+        const setToServerValueBooleanTestCase = {
+          name: 'should perform a setToServerValue transform on a boolean property',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: false,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                setToServerValue: true,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      valueType: 'timestampValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        booleanValue: false,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      setToServerValue: 1,
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const incrementFloatTestCase = {
+          name: 'should perform an increment transform on a float property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 3.5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 1.2,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      doubleValue: 4.7,
+                      valueType: 'doubleValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 4.7,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        doubleValue: 3.5,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        doubleValue: 1.2,
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const appendMissingElementsComplexTestCase = {
+          name: 'should perform an appendMissingElements transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                appendMissingElements: [{a: 1, b: 'two'}, {c: 3}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{a: 1, b: 'two'}, {c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      appendMissingElements: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                          {
+                            entityValue: {
+                              properties: {
+                                c: {
+                                  integerValue: '3',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const removeAllFromArrayComplexTestCase = {
+          name: 'should perform a removeAllFromArray transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}, {c: 3}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                removeAllFromArray: [{a: 1, b: 'two'}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                            {
+                              entityValue: {
+                                properties: {
+                                  c: {
+                                    integerValue: '3',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      removeAllFromArray: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const orderOfOperationsTestCase = {
+          name: 'should respect the order of operations for transforms',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 5, // p1 is now 10
+              },
+              {
+                property: 'p1',
+                maximum: 8, // p1 is now 8
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 10,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        integerValue: '5',
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                    {
+                      property: 'p1',
+                      maximum: {
+                        integerValue: '8',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const nestedPropertyTransformTestCase = {
+          name: 'should perform a transform on a nested property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              nested: {
+                p1: 10,
+              },
+            },
+            transforms: [
+              {
+                property: 'nested.p1',
+                increment: 5,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '15',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            nested: {
+              p1: 15,
+            },
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      nested: {
+                        entityValue: {
+                          properties: {
+                            p1: {
+                              integerValue: '10',
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'nested.p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        // Test each of the test cases:
+        async.each(
+          [
+            standardTestCase,
+            standardTestCaseWithSetToServerFalse,
+            standardTestCaseWithStringValues,
+            setToServerValueBooleanTestCase,
+            incrementFloatTestCase,
+            appendMissingElementsComplexTestCase,
+            removeAllFromArrayComplexTestCase,
+            orderOfOperationsTestCase,
+            nestedPropertyTransformTestCase,
+          ],
+          async (testParameters: any) => {
+            it(testParameters.name, async () => {
+              const requestSpy = sinon.spy(datastore.request_);
+              datastore.request_ = requestSpy;
+              const result = await datastore.save(testParameters.saveArg);
+              // Clean the data from the server first before comparing:
+              result.forEach(serverResult => {
+                delete serverResult['indexUpdates'];
+                serverResult.mutationResults?.forEach(mutationResult => {
+                  delete mutationResult['updateTime'];
+                  delete mutationResult['createTime'];
+                  delete mutationResult['version'];
+                  mutationResult.transformResults?.forEach(transformResult => {
+                    delete transformResult['timestampValue'];
+                  });
+                });
+              });
+              // Now the data should have fixed values.
+              // Do a comparison against the expected result.
+              assert.deepStrictEqual(result, testParameters.saveResult);
+              // Now check the value that was actually saved to the server:
+              const [entity] = await datastore.get(key);
+              const parsedResult = JSON.parse(JSON.stringify(entity));
+              if (!testParameters.assertP1) {
+                delete parsedResult['p1']; // This is a timestamp so we can't consistently test this.
+              }
+              assert.deepStrictEqual(parsedResult, testParameters.serverValue);
+              if (
+                requestSpy.args[0][0].reqOpts.mutations[0].upsert.key
+                  .partitionId
+              ) {
+                delete requestSpy.args[0][0].reqOpts.mutations[0].upsert.key
+                  .partitionId['namespaceId'];
+              }
+              assert.deepStrictEqual(
+                requestSpy.args[0][0],
+                testParameters.gapicRequest,
+              );
+            });
+          },
+        );
+      });
     });
   },
 );

From 528a0576375b81a1675b41afa2dcabc4cede67a3 Mon Sep 17 00:00:00 2001
From: danieljbruce 
Date: Mon, 15 Sep 2025 16:34:29 -0400
Subject: [PATCH 813/820] test: Ensure datastore transforms are working for
 transactions (#1412)

## Description

This PR is a follow-up to the PR https://togithub.com/googleapis/nodejs-datastore/pull/1369 which adds datastore transforms support when the user does datastore.save. It turns out that for saves with transactions no further source code changes are required because transactions call the save method so this PR simply adds some tests for transactions that save with transforms.

## Impact

Ensures datastore transforms work with transactions

## Testing

Added tests where datastore transforms work with transactions.
---
 .../nodejs-datastore/system-test/datastore.ts | 1646 +++++++++++++++++
 .../system-test/transaction-spy.ts            |   42 +
 2 files changed, 1688 insertions(+)
 create mode 100644 handwritten/nodejs-datastore/system-test/transaction-spy.ts

diff --git a/handwritten/nodejs-datastore/system-test/datastore.ts b/handwritten/nodejs-datastore/system-test/datastore.ts
index 904029d26fa..db9ceb5a05e 100644
--- a/handwritten/nodejs-datastore/system-test/datastore.ts
+++ b/handwritten/nodejs-datastore/system-test/datastore.ts
@@ -25,6 +25,8 @@ import {Entities, entity, Entity} from '../src/entity';
 import {Query, RunQueryInfo, ExecutionStats} from '../src/query';
 import KEY_SYMBOL = entity.KEY_SYMBOL;
 import {transactionExpiredError} from '../src/request';
+const testRequests = require('./transaction-spy').testRequests;
+import {MockedDatastore} from './transaction-spy';
 const sinon = require('sinon');
 const async = require('async');
 const SECOND_DATABASE_ID = 'multidb-test';
@@ -4013,6 +4015,1650 @@ async.each(
           },
         );
       });
+      describe('Datastore mode data transforms in transactions', () => {
+        const mockedDatastore = new MockedDatastore();
+        const key = mockedDatastore.key(['Post', 'post1']);
+        function getStandardTestCase() {
+          return {
+            name: 'should perform a basic data transform',
+            saveArg: {
+              key: key,
+              data: {
+                name: 'test',
+                p1: 3,
+                p2: 4,
+                p3: 5,
+                a1: [3, 4, 5],
+              },
+              transforms: [
+                {
+                  property: 'p1',
+                  setToServerValue: true,
+                },
+                {
+                  property: 'p2',
+                  increment: 4,
+                },
+                {
+                  property: 'p3',
+                  maximum: 9,
+                },
+                {
+                  property: 'p2',
+                  minimum: 6,
+                },
+                {
+                  property: 'a1',
+                  appendMissingElements: [5, 6],
+                },
+                {
+                  property: 'a1',
+                  removeAllFromArray: [3],
+                },
+              ],
+            },
+            saveResult: [
+              {
+                mutationResults: [
+                  {
+                    transformResults: [
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        valueType: 'timestampValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '8',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '9',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '6',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                    ],
+                    key: null,
+                    conflictDetected: false,
+                  },
+                ],
+                commitTime: null,
+              },
+            ],
+            serverValue: {
+              name: 'test',
+              a1: [4, 5, 6],
+              p2: 6,
+              p3: 9,
+            },
+            gapicRequest: {
+              client: 'DatastoreClient',
+              method: 'commit',
+              reqOpts: {
+                mutations: [
+                  {
+                    upsert: {
+                      key: {
+                        path: [
+                          {
+                            kind: 'Post',
+                            name: 'post1',
+                          },
+                        ],
+                      },
+                      properties: {
+                        name: {
+                          stringValue: 'test',
+                        },
+                        p1: {
+                          integerValue: '3',
+                        },
+                        p2: {
+                          integerValue: '4',
+                        },
+                        p3: {
+                          integerValue: '5',
+                        },
+                        a1: {
+                          arrayValue: {
+                            values: [
+                              {
+                                integerValue: '3',
+                              },
+                              {
+                                integerValue: '4',
+                              },
+                              {
+                                integerValue: '5',
+                              },
+                            ],
+                          },
+                        },
+                      },
+                    },
+                    propertyTransforms: [
+                      {
+                        property: 'p1',
+                        setToServerValue: 1,
+                      },
+                      {
+                        property: 'p2',
+                        increment: {
+                          integerValue: '4',
+                        },
+                      },
+                      {
+                        property: 'p3',
+                        maximum: {
+                          integerValue: '9',
+                        },
+                      },
+                      {
+                        property: 'p2',
+                        minimum: {
+                          integerValue: '6',
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        appendMissingElements: {
+                          values: [
+                            {
+                              integerValue: '5',
+                            },
+                            {
+                              integerValue: '6',
+                            },
+                          ],
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        removeAllFromArray: {
+                          values: [
+                            {
+                              integerValue: '3',
+                            },
+                          ],
+                        },
+                      },
+                    ],
+                  },
+                ],
+              },
+              gaxOpts: {},
+            },
+          };
+        }
+        const standardTestCase = getStandardTestCase();
+        // Add test case 2: Setting the server value to false:
+        const standardTestCaseWithSetToServerFalse = getStandardTestCase();
+        standardTestCaseWithSetToServerFalse.name =
+          'should perform a transform with setToServerValue false';
+        standardTestCaseWithSetToServerFalse.saveArg.transforms.shift();
+        standardTestCaseWithSetToServerFalse.saveResult[0].mutationResults[0].transformResults.shift();
+        standardTestCaseWithSetToServerFalse.gapicRequest.reqOpts.mutations[0].propertyTransforms.shift();
+        // Add test case 3: User inputs string values for transforms
+        const standardTestCaseWithStringValues = getStandardTestCase();
+        standardTestCaseWithStringValues.name =
+          'should perform a transform with string values';
+        standardTestCaseWithStringValues.saveArg.transforms[1].increment =
+          '4' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[2].maximum =
+          '9' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[3].minimum =
+          '6' as any;
+        const setToServerValueBooleanTestCase = {
+          name: 'should perform a setToServerValue transform on a boolean property',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: false,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                setToServerValue: true,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      valueType: 'timestampValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        booleanValue: false,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      setToServerValue: 1,
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const incrementFloatTestCase = {
+          name: 'should perform an increment transform on a float property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 3.5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 1.2,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      doubleValue: 4.7,
+                      valueType: 'doubleValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 4.7,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        doubleValue: 3.5,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        doubleValue: 1.2,
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const appendMissingElementsComplexTestCase = {
+          name: 'should perform an appendMissingElements transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                appendMissingElements: [{a: 1, b: 'two'}, {c: 3}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{a: 1, b: 'two'}, {c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      appendMissingElements: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                          {
+                            entityValue: {
+                              properties: {
+                                c: {
+                                  integerValue: '3',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const removeAllFromArrayComplexTestCase = {
+          name: 'should perform a removeAllFromArray transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}, {c: 3}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                removeAllFromArray: [{a: 1, b: 'two'}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                            {
+                              entityValue: {
+                                properties: {
+                                  c: {
+                                    integerValue: '3',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      removeAllFromArray: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const orderOfOperationsTestCase = {
+          name: 'should respect the order of operations for transforms',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 5, // p1 is now 10
+              },
+              {
+                property: 'p1',
+                maximum: 8, // p1 is now 8
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 10,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        integerValue: '5',
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                    {
+                      property: 'p1',
+                      maximum: {
+                        integerValue: '8',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const nestedPropertyTransformTestCase = {
+          name: 'should perform a transform on a nested property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              nested: {
+                p1: 10,
+              },
+            },
+            transforms: [
+              {
+                property: 'nested.p1',
+                increment: 5,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '15',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            nested: {
+              p1: 15,
+            },
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      nested: {
+                        entityValue: {
+                          properties: {
+                            p1: {
+                              integerValue: '10',
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'nested.p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        // Test each of the test cases:
+        async.each(
+          [
+            standardTestCase,
+            standardTestCaseWithSetToServerFalse,
+            standardTestCaseWithStringValues,
+            setToServerValueBooleanTestCase,
+            incrementFloatTestCase,
+            appendMissingElementsComplexTestCase,
+            removeAllFromArrayComplexTestCase,
+            orderOfOperationsTestCase,
+            nestedPropertyTransformTestCase,
+          ],
+          async (testParameters: any) => {
+            it(testParameters.name, async () => {
+              testRequests.splice(0, testRequests.length);
+              const transaction = mockedDatastore.transaction();
+              await transaction.run();
+              transaction.save(testParameters.saveArg);
+              await transaction.commit();
+              // Now check the value that was actually saved to the server:
+              testRequests.shift(); // Remove the BeginTransaction request.
+              const [entity] = await mockedDatastore.get(key);
+              const parsedResult = JSON.parse(JSON.stringify(entity));
+              if (!testParameters.assertP1) {
+                delete parsedResult['p1']; // This is a timestamp so we can't consistently test this.
+              }
+              assert.deepStrictEqual(parsedResult, testParameters.serverValue);
+              assert(testRequests);
+              assert(testRequests[0]);
+              if (
+                testRequests[0] &&
+                testRequests[0].reqOpts?.mutations &&
+                testRequests[0].reqOpts?.mutations[0] &&
+                testRequests[0].reqOpts?.mutations[0].upsert?.key?.partitionId
+              ) {
+                delete testRequests[0].reqOpts.mutations[0].upsert.key
+                  .partitionId['namespaceId'];
+              }
+              assert.deepStrictEqual(
+                testRequests[0],
+                testParameters.gapicRequest,
+              );
+            });
+          },
+        );
+      });
+      describe('Datastore mode data transforms', () => {
+        const key = datastore.key(['Post', 'post1']);
+        function getStandardTestCase() {
+          return {
+            name: 'should perform a basic data transform',
+            saveArg: {
+              key: key,
+              data: {
+                name: 'test',
+                p1: 3,
+                p2: 4,
+                p3: 5,
+                a1: [3, 4, 5],
+              },
+              transforms: [
+                {
+                  property: 'p1',
+                  setToServerValue: true,
+                },
+                {
+                  property: 'p2',
+                  increment: 4,
+                },
+                {
+                  property: 'p3',
+                  maximum: 9,
+                },
+                {
+                  property: 'p2',
+                  minimum: 6,
+                },
+                {
+                  property: 'a1',
+                  appendMissingElements: [5, 6],
+                },
+                {
+                  property: 'a1',
+                  removeAllFromArray: [3],
+                },
+              ],
+            },
+            saveResult: [
+              {
+                mutationResults: [
+                  {
+                    transformResults: [
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        valueType: 'timestampValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '8',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '9',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        integerValue: '6',
+                        valueType: 'integerValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                      {
+                        meaning: 0,
+                        excludeFromIndexes: false,
+                        nullValue: 'NULL_VALUE',
+                        valueType: 'nullValue',
+                      },
+                    ],
+                    key: null,
+                    conflictDetected: false,
+                  },
+                ],
+                commitTime: null,
+              },
+            ],
+            serverValue: {
+              name: 'test',
+              a1: [4, 5, 6],
+              p2: 6,
+              p3: 9,
+            },
+            gapicRequest: {
+              client: 'DatastoreClient',
+              method: 'commit',
+              reqOpts: {
+                mutations: [
+                  {
+                    upsert: {
+                      key: {
+                        path: [
+                          {
+                            kind: 'Post',
+                            name: 'post1',
+                          },
+                        ],
+                        partitionId: {},
+                      },
+                      properties: {
+                        name: {
+                          stringValue: 'test',
+                        },
+                        p1: {
+                          integerValue: '3',
+                        },
+                        p2: {
+                          integerValue: '4',
+                        },
+                        p3: {
+                          integerValue: '5',
+                        },
+                        a1: {
+                          arrayValue: {
+                            values: [
+                              {
+                                integerValue: '3',
+                              },
+                              {
+                                integerValue: '4',
+                              },
+                              {
+                                integerValue: '5',
+                              },
+                            ],
+                          },
+                        },
+                      },
+                    },
+                    propertyTransforms: [
+                      {
+                        property: 'p1',
+                        setToServerValue: 1,
+                      },
+                      {
+                        property: 'p2',
+                        increment: {
+                          integerValue: '4',
+                        },
+                      },
+                      {
+                        property: 'p3',
+                        maximum: {
+                          integerValue: '9',
+                        },
+                      },
+                      {
+                        property: 'p2',
+                        minimum: {
+                          integerValue: '6',
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        appendMissingElements: {
+                          values: [
+                            {
+                              integerValue: '5',
+                            },
+                            {
+                              integerValue: '6',
+                            },
+                          ],
+                        },
+                      },
+                      {
+                        property: 'a1',
+                        removeAllFromArray: {
+                          values: [
+                            {
+                              integerValue: '3',
+                            },
+                          ],
+                        },
+                      },
+                    ],
+                  },
+                ],
+              },
+              gaxOpts: {},
+            },
+          };
+        }
+        const standardTestCase = getStandardTestCase();
+        // Add test case 2: Setting the server value to false:
+        const standardTestCaseWithSetToServerFalse = getStandardTestCase();
+        standardTestCaseWithSetToServerFalse.name =
+          'should perform a transform with setToServerValue false';
+        standardTestCaseWithSetToServerFalse.saveArg.transforms.shift();
+        standardTestCaseWithSetToServerFalse.saveResult[0].mutationResults[0].transformResults.shift();
+        standardTestCaseWithSetToServerFalse.gapicRequest.reqOpts.mutations[0].propertyTransforms.shift();
+        // Add test case 3: User inputs string values for transforms
+        const standardTestCaseWithStringValues = getStandardTestCase();
+        standardTestCaseWithStringValues.name =
+          'should perform a transform with string values';
+        standardTestCaseWithStringValues.saveArg.transforms[1].increment =
+          '4' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[2].maximum =
+          '9' as any;
+        standardTestCaseWithStringValues.saveArg.transforms[3].minimum =
+          '6' as any;
+        const setToServerValueBooleanTestCase = {
+          name: 'should perform a setToServerValue transform on a boolean property',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: false,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                setToServerValue: true,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      valueType: 'timestampValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        booleanValue: false,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      setToServerValue: 1,
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const incrementFloatTestCase = {
+          name: 'should perform an increment transform on a float property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 3.5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 1.2,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      doubleValue: 4.7,
+                      valueType: 'doubleValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 4.7,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        doubleValue: 3.5,
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        doubleValue: 1.2,
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const appendMissingElementsComplexTestCase = {
+          name: 'should perform an appendMissingElements transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                appendMissingElements: [{a: 1, b: 'two'}, {c: 3}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{a: 1, b: 'two'}, {c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      appendMissingElements: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                          {
+                            entityValue: {
+                              properties: {
+                                c: {
+                                  integerValue: '3',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const removeAllFromArrayComplexTestCase = {
+          name: 'should perform a removeAllFromArray transform with complex objects',
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              a1: [{a: 1, b: 'two'}, {c: 3}],
+            },
+            transforms: [
+              {
+                property: 'a1',
+                removeAllFromArray: [{a: 1, b: 'two'}],
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      nullValue: 'NULL_VALUE',
+                      valueType: 'nullValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            a1: [{c: 3}],
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      a1: {
+                        arrayValue: {
+                          values: [
+                            {
+                              entityValue: {
+                                properties: {
+                                  a: {
+                                    integerValue: '1',
+                                  },
+                                  b: {
+                                    stringValue: 'two',
+                                  },
+                                },
+                              },
+                            },
+                            {
+                              entityValue: {
+                                properties: {
+                                  c: {
+                                    integerValue: '3',
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'a1',
+                      removeAllFromArray: {
+                        values: [
+                          {
+                            entityValue: {
+                              properties: {
+                                a: {
+                                  integerValue: '1',
+                                },
+                                b: {
+                                  stringValue: 'two',
+                                },
+                              },
+                            },
+                          },
+                        ],
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const orderOfOperationsTestCase = {
+          name: 'should respect the order of operations for transforms',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              p1: 5,
+            },
+            transforms: [
+              {
+                property: 'p1',
+                increment: 5, // p1 is now 10
+              },
+              {
+                property: 'p1',
+                maximum: 8, // p1 is now 8
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '10',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            p1: 10,
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      p1: {
+                        integerValue: '5',
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                    {
+                      property: 'p1',
+                      maximum: {
+                        integerValue: '8',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        const nestedPropertyTransformTestCase = {
+          name: 'should perform a transform on a nested property',
+          assertP1: true,
+          saveArg: {
+            key: key,
+            data: {
+              name: 'test',
+              nested: {
+                p1: 10,
+              },
+            },
+            transforms: [
+              {
+                property: 'nested.p1',
+                increment: 5,
+              },
+            ],
+          },
+          saveResult: [
+            {
+              mutationResults: [
+                {
+                  transformResults: [
+                    {
+                      meaning: 0,
+                      excludeFromIndexes: false,
+                      integerValue: '15',
+                      valueType: 'integerValue',
+                    },
+                  ],
+                  key: null,
+                  conflictDetected: false,
+                },
+              ],
+              commitTime: null,
+            },
+          ],
+          serverValue: {
+            name: 'test',
+            nested: {
+              p1: 15,
+            },
+          },
+          gapicRequest: {
+            client: 'DatastoreClient',
+            method: 'commit',
+            reqOpts: {
+              mutations: [
+                {
+                  upsert: {
+                    key: {
+                      path: [
+                        {
+                          kind: 'Post',
+                          name: 'post1',
+                        },
+                      ],
+                      partitionId: {},
+                    },
+                    properties: {
+                      name: {
+                        stringValue: 'test',
+                      },
+                      nested: {
+                        entityValue: {
+                          properties: {
+                            p1: {
+                              integerValue: '10',
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                  propertyTransforms: [
+                    {
+                      property: 'nested.p1',
+                      increment: {
+                        integerValue: '5',
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+            gaxOpts: {},
+          },
+        };
+        // Test each of the test cases:
+        async.each(
+          [
+            standardTestCase,
+            standardTestCaseWithSetToServerFalse,
+            standardTestCaseWithStringValues,
+            setToServerValueBooleanTestCase,
+            incrementFloatTestCase,
+            appendMissingElementsComplexTestCase,
+            removeAllFromArrayComplexTestCase,
+            orderOfOperationsTestCase,
+            nestedPropertyTransformTestCase,
+          ],
+          async (testParameters: any) => {
+            it(testParameters.name, async () => {
+              const requestSpy = sinon.spy(datastore.request_);
+              datastore.request_ = requestSpy;
+              const result = await datastore.save(testParameters.saveArg);
+              // Clean the data from the server first before comparing:
+              result.forEach(serverResult => {
+                delete serverResult['indexUpdates'];
+                serverResult.mutationResults?.forEach(mutationResult => {
+                  delete mutationResult['updateTime'];
+                  delete mutationResult['createTime'];
+                  delete mutationResult['version'];
+                  mutationResult.transformResults?.forEach(transformResult => {
+                    delete transformResult['timestampValue'];
+                  });
+                });
+              });
+              // Now the data should have fixed values.
+              // Do a comparison against the expected result.
+              assert.deepStrictEqual(result, testParameters.saveResult);
+              // Now check the value that was actually saved to the server:
+              const [entity] = await datastore.get(key);
+              const parsedResult = JSON.parse(JSON.stringify(entity));
+              if (!testParameters.assertP1) {
+                delete parsedResult['p1']; // This is a timestamp so we can't consistently test this.
+              }
+              assert.deepStrictEqual(parsedResult, testParameters.serverValue);
+              if (
+                requestSpy.args[0][0].reqOpts.mutations[0].upsert.key
+                  .partitionId
+              ) {
+                delete requestSpy.args[0][0].reqOpts.mutations[0].upsert.key
+                  .partitionId['namespaceId'];
+              }
+              assert.deepStrictEqual(
+                requestSpy.args[0][0],
+                testParameters.gapicRequest,
+              );
+            });
+          },
+        );
+      });
     });
   },
 );
diff --git a/handwritten/nodejs-datastore/system-test/transaction-spy.ts b/handwritten/nodejs-datastore/system-test/transaction-spy.ts
new file mode 100644
index 00000000000..23ea7a69524
--- /dev/null
+++ b/handwritten/nodejs-datastore/system-test/transaction-spy.ts
@@ -0,0 +1,42 @@
+// Copyright 2025 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import * as proxyquire from 'proxyquire';
+import {DatastoreRequest} from '../src';
+import {RequestCallback, RequestConfig} from '../src/request';
+
+const testRequests: RequestConfig[] = [];
+
+class RequestsMock extends DatastoreRequest {
+  request_(config: RequestConfig, callback: RequestCallback): void {
+    testRequests.push(config);
+    super.request_(config, callback);
+  }
+}
+
+// Mock Transaction class
+const MockTransaction = proxyquire('../src/transaction', {
+  './request': {
+    DatastoreRequest: RequestsMock,
+  },
+}).Transaction;
+
+// Use proxyquire to mock the Datastore class
+const MockedDatastore = proxyquire('../src', {
+  './transaction': {
+    Transaction: MockTransaction,
+  },
+}).Datastore;
+
+export {MockedDatastore, MockTransaction, testRequests};

From ff5945cc90e767446367e572d438d526307604e4 Mon Sep 17 00:00:00 2001
From: miguel 
Date: Wed, 28 Jan 2026 21:59:23 +0000
Subject: [PATCH 814/820] build: add release-please config, fix owlbot-config

---
 .release-please-manifest.json                         | 11 ++++++-----
 .../nodejs-datastore/{.github => }/.OwlBot.yaml       | 10 ++++------
 handwritten/nodejs-datastore/.repo-metadata.json      |  2 +-
 handwritten/nodejs-datastore/owlbot.py                |  2 +-
 handwritten/nodejs-datastore/package.json             |  9 +++++++--
 release-please-config.json                            |  7 ++++---
 6 files changed, 23 insertions(+), 18 deletions(-)
 rename handwritten/nodejs-datastore/{.github => }/.OwlBot.yaml (73%)

diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index dbc9e2fa5a3..9e618998a6c 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,4 +1,5 @@
 {
+  "handwritten/nodejs-datastore": "10.0.1",
   "packages/gapic-node-processing": "0.1.6",
   "packages/google-ads-admanager": "0.5.0",
   "packages/google-ads-datamanager": "0.1.0",
@@ -23,6 +24,7 @@
   "packages/google-cloud-apigeeconnect": "4.2.1",
   "packages/google-cloud-apigeeregistry": "2.2.1",
   "packages/google-cloud-apihub": "0.5.1",
+  "packages/google-cloud-apiregistry": "0.1.0",
   "packages/google-cloud-apphub": "0.6.1",
   "packages/google-cloud-asset": "6.3.1",
   "packages/google-cloud-assuredworkloads": "5.1.1",
@@ -92,6 +94,7 @@
   "packages/google-cloud-gkeconnect-gateway": "5.2.1",
   "packages/google-cloud-gkehub": "6.3.1",
   "packages/google-cloud-gkemulticloud": "2.3.0",
+  "packages/google-cloud-gkerecommender": "0.1.0",
   "packages/google-cloud-gsuiteaddons": "2.2.1",
   "packages/google-cloud-hypercomputecluster": "0.1.0",
   "packages/google-cloud-iap": "4.3.1",
@@ -145,11 +148,11 @@
   "packages/google-cloud-saasplatform-saasservicemgmt": "0.1.1",
   "packages/google-cloud-scheduler": "5.3.1",
   "packages/google-cloud-secretmanager": "6.1.1",
+  "packages/google-cloud-securesourcemanager": "0.8.1",
   "packages/google-cloud-security-privateca": "7.0.1",
   "packages/google-cloud-security-publicca": "2.2.1",
   "packages/google-cloud-securitycenter": "9.2.1",
   "packages/google-cloud-securitycentermanagement": "0.7.1",
-  "packages/google-cloud-securesourcemanager": "0.8.1",
   "packages/google-cloud-servicedirectory": "6.1.1",
   "packages/google-cloud-servicehealth": "0.7.1",
   "packages/google-cloud-shell": "4.1.1",
@@ -216,7 +219,5 @@
   "packages/google-storagetransfer": "4.2.1",
   "packages/google-streetview-publish": "0.4.1",
   "packages/grafeas": "6.1.1",
-  "packages/typeless-sample-bot": "3.1.1",
-  "packages/google-cloud-apiregistry": "0.1.0",
-  "packages/google-cloud-gkerecommender": "0.1.0"
-}
\ No newline at end of file
+  "packages/typeless-sample-bot": "3.1.1"
+}
diff --git a/handwritten/nodejs-datastore/.github/.OwlBot.yaml b/handwritten/nodejs-datastore/.OwlBot.yaml
similarity index 73%
rename from handwritten/nodejs-datastore/.github/.OwlBot.yaml
rename to handwritten/nodejs-datastore/.OwlBot.yaml
index 903589314b8..56f8c18e7f9 100644
--- a/handwritten/nodejs-datastore/.github/.OwlBot.yaml
+++ b/handwritten/nodejs-datastore/.OwlBot.yaml
@@ -11,18 +11,16 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-docker:
-  image: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest
 
 
 deep-remove-regex:
   - /owl-bot-staging
 
 deep-copy-regex:
-  - source: /google/datastore/(v.*)/.*-nodejs/(.*)
-    dest: /owl-bot-staging/$1/$2
-  - source: /google/datastore/(admin/v.*)/.*-nodejs/(.*)
-    dest: /owl-bot-staging/$1/$2
+  - source: /google/datastore/(v.*)/.*-nodejs
+    dest: /owl-bot-staging/nodejs-datastore/$1
+  - source: /google/datastore/(admin/v.*)/.*-nodejs
+    dest: /owl-bot-staging/nodejs-datastore/$1
 
 begin-after-commit-hash: fb91803ccef5d7c695139b22788b309e2197856b
 
diff --git a/handwritten/nodejs-datastore/.repo-metadata.json b/handwritten/nodejs-datastore/.repo-metadata.json
index 8fa3d3064b3..553e9a71187 100644
--- a/handwritten/nodejs-datastore/.repo-metadata.json
+++ b/handwritten/nodejs-datastore/.repo-metadata.json
@@ -6,7 +6,7 @@
   "issue_tracker": "https://issuetracker.google.com/savedsearches/559768",
   "release_level": "stable",
   "language": "nodejs",
-  "repo": "googleapis/nodejs-datastore",
+  "repo": "googleapis/google-cloud-node",
   "distribution_name": "@google-cloud/datastore",
   "api_id": "datastore.googleapis.com",
   "codeowner_team": "@googleapis/cloud-native-db-dpes @googleapis/api-datastore-sdk",
diff --git a/handwritten/nodejs-datastore/owlbot.py b/handwritten/nodejs-datastore/owlbot.py
index 7c40df9c30e..a6af6e71f31 100644
--- a/handwritten/nodejs-datastore/owlbot.py
+++ b/handwritten/nodejs-datastore/owlbot.py
@@ -14,7 +14,7 @@
 
 import synthtool as s
 import synthtool.gcp as gcp
-import synthtool.languages.node as node
+import synthtool.languages.node_mono_repo as node
 import logging
 from pathlib import Path
 from synthtool import _tracked_paths
diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 7816f9851e8..5593600dab9 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -14,7 +14,11 @@
     "google datastore",
     "datastore"
   ],
-  "repository": "googleapis/nodejs-datastore",
+  "repository": {
+    "type": "git",
+    "directory": "handwritten/nodejs-datastore",
+    "url": "https://github.com/googleapis/google-cloud-node.git"
+  },
   "license": "Apache-2.0",
   "author": "Google LLC.",
   "main": "build/src/index.js",
@@ -82,5 +86,6 @@
   },
   "engines": {
     "node": ">=18"
-  }
+  },
+  "homepage": "https://github.com/googleapis/google-cloud-node/tree/main/handwritten/nodejs-datastore"
 }
diff --git a/release-please-config.json b/release-please-config.json
index 9c211610789..e74a7a91f9a 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -1,6 +1,8 @@
 {
+  "bump-minor-pre-major": true,
   "initial-version": "0.1.0",
   "packages": {
+    "handwritten/nodejs-datastore": {},
     "packages/gapic-node-processing": {},
     "packages/google-ads-admanager": {},
     "packages/google-ads-datamanager": {},
@@ -149,11 +151,11 @@
     "packages/google-cloud-saasplatform-saasservicemgmt": {},
     "packages/google-cloud-scheduler": {},
     "packages/google-cloud-secretmanager": {},
+    "packages/google-cloud-securesourcemanager": {},
     "packages/google-cloud-security-privateca": {},
     "packages/google-cloud-security-publicca": {},
     "packages/google-cloud-securitycenter": {},
     "packages/google-cloud-securitycentermanagement": {},
-    "packages/google-cloud-securesourcemanager": {},
     "packages/google-cloud-servicedirectory": {},
     "packages/google-cloud-servicehealth": {},
     "packages/google-cloud-shell": {},
@@ -227,6 +229,5 @@
       "type": "sentence-case"
     }
   ],
-  "bump-minor-pre-major": true,
   "release-type": "node"
-}
\ No newline at end of file
+}

From c1045408cbca2fbabcaca0f56ec1aa6d26b96fd5 Mon Sep 17 00:00:00 2001
From: Owl Bot 
Date: Wed, 28 Jan 2026 22:25:08 +0000
Subject: [PATCH 815/820] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot?=
 =?UTF-8?q?=20post-processor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---
 release-please-config.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/release-please-config.json b/release-please-config.json
index e74a7a91f9a..fbd4fff0b52 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -230,4 +230,4 @@
     }
   ],
   "release-type": "node"
-}
+}
\ No newline at end of file

From 1b94a497f627acf83c4bbc00015dcf94a8778b5c Mon Sep 17 00:00:00 2001
From: miguel 
Date: Wed, 28 Jan 2026 23:25:09 +0000
Subject: [PATCH 816/820] chore: add long missing dependency

---
 handwritten/nodejs-datastore/package.json | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/handwritten/nodejs-datastore/package.json b/handwritten/nodejs-datastore/package.json
index 5593600dab9..982900ba920 100644
--- a/handwritten/nodejs-datastore/package.json
+++ b/handwritten/nodejs-datastore/package.json
@@ -52,6 +52,7 @@
     "extend": "^3.0.2",
     "google-gax": "^5.0.2-rc.1",
     "is": "^3.3.0",
+    "long": "^4.0.0",
     "protobufjs": "7.4.0",
     "split-array-stream": "^2.0.0",
     "stream-events": "^1.0.5"
@@ -63,6 +64,7 @@
     "@types/js-yaml": "^4.0.9",
     "@types/mocha": "^10.0.10",
     "@types/node": "^22.15.3",
+    "@types/long": "^4.0.0",
     "@types/proxyquire": "^1.3.31",
     "@types/sinon": "^17.0.4",
     "async": "^3.2.6",

From bb900876f4fbb7362d71b0c4589327df46dc44e1 Mon Sep 17 00:00:00 2001
From: miguel 
Date: Wed, 28 Jan 2026 23:54:03 +0000
Subject: [PATCH 817/820] build: add type long in tsconfig

---
 handwritten/nodejs-datastore/tsconfig.json | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/handwritten/nodejs-datastore/tsconfig.json b/handwritten/nodejs-datastore/tsconfig.json
index a4b71611d51..894ecb34c02 100644
--- a/handwritten/nodejs-datastore/tsconfig.json
+++ b/handwritten/nodejs-datastore/tsconfig.json
@@ -3,6 +3,9 @@
   "compilerOptions": {
     "rootDir": ".",
     "outDir": "build",
+    "types": [
+      "long"
+    ],
     "resolveJsonModule": true,
     "lib": [
       "es2018",

From 246b3ac39f5b0da9fb59b0c4ab9f402f6ea78e7d Mon Sep 17 00:00:00 2001
From: miguel 
Date: Thu, 29 Jan 2026 00:37:18 +0000
Subject: [PATCH 818/820] build: add types long in install test

---
 handwritten/nodejs-datastore/system-test/install.ts | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts
index 5257a7ba101..3bdcb0c6f70 100644
--- a/handwritten/nodejs-datastore/system-test/install.ts
+++ b/handwritten/nodejs-datastore/system-test/install.ts
@@ -25,6 +25,9 @@ describe('📦 pack-n-play test', () => {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
+      additionalNpmDependencies: [
+        '@types/long@4.0.0',
+      ],
       sample: {
         description: 'TypeScript user can use the type definitions',
         ts: readFileSync(

From 39661db2c0ed03b4982438cb5baeaa5b191a3f20 Mon Sep 17 00:00:00 2001
From: miguel 
Date: Thu, 29 Jan 2026 01:03:04 +0000
Subject: [PATCH 819/820] build: add long type in system test

---
 .../nodejs-datastore/system-test/fixtures/sample/src/long.d.ts | 1 +
 handwritten/nodejs-datastore/system-test/install.ts            | 3 ---
 2 files changed, 1 insertion(+), 3 deletions(-)
 create mode 100644 handwritten/nodejs-datastore/system-test/fixtures/sample/src/long.d.ts

diff --git a/handwritten/nodejs-datastore/system-test/fixtures/sample/src/long.d.ts b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/long.d.ts
new file mode 100644
index 00000000000..c9aa59ed400
--- /dev/null
+++ b/handwritten/nodejs-datastore/system-test/fixtures/sample/src/long.d.ts
@@ -0,0 +1 @@
+declare module 'long';
diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts
index 3bdcb0c6f70..5257a7ba101 100644
--- a/handwritten/nodejs-datastore/system-test/install.ts
+++ b/handwritten/nodejs-datastore/system-test/install.ts
@@ -25,9 +25,6 @@ describe('📦 pack-n-play test', () => {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
-      additionalNpmDependencies: [
-        '@types/long@4.0.0',
-      ],
       sample: {
         description: 'TypeScript user can use the type definitions',
         ts: readFileSync(

From 575a5e11c2dd6ad3822e12ad836ed67d9f3bd242 Mon Sep 17 00:00:00 2001
From: miguel 
Date: Thu, 29 Jan 2026 04:02:33 +0000
Subject: [PATCH 820/820] build: add types/long in install test

---
 handwritten/nodejs-datastore/system-test/install.ts | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/handwritten/nodejs-datastore/system-test/install.ts b/handwritten/nodejs-datastore/system-test/install.ts
index 5257a7ba101..96de8bb3e3f 100644
--- a/handwritten/nodejs-datastore/system-test/install.ts
+++ b/handwritten/nodejs-datastore/system-test/install.ts
@@ -30,6 +30,9 @@ describe('📦 pack-n-play test', () => {
         ts: readFileSync(
           './system-test/fixtures/sample/src/index.ts',
         ).toString(),
+        dependencies: [
+          '@types/long@^4.0.0',
+        ],
       },
     };
     await packNTest(options);